Pass 2 W2: components/campaign em subpastas por dominio

106 arquivos flat -> 15 dominios (actionPlan, advisor, auth, dashboard, demand, invite, leadership, map, municipality, organization, stateDeputy, supporter, votePledge, shared, shell) via git mv; imports absolutos reescritos em 98 arquivos; excecao de lint do campaign-logo e paths dos specs de contrato (campaignInviteUi, campaignComponents) atualizados. Sem mudanca de conteudo nos componentes.
This commit is contained in:
Francisco Ignácio Fontoura Solla 2026-07-25 14:52:17 -03:00
parent cf6ae6c47c
commit c706c62098
160 changed files with 257 additions and 257 deletions

View file

@ -20,7 +20,7 @@ const frameworkComponentFiles = [
// These predate the naming convention. Keep them linted by Next's rules while
// requiring new component files to use PascalCase.
const legacyComponentFilenameIgnores = [
'src/components/campaign/campaign-logo.tsx',
'src/components/campaign/shell/campaign-logo.tsx',
'src/components/socialIcons.tsx',
'src/components/socialLinks.tsx',
'src/components/ui/breadcrumb.tsx',

View file

@ -5,11 +5,11 @@ import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { setSupporterVoteIntentionFormAction } from '@/app/(campaign)/campanha/(app)/apoiadores/[id]/formActions'
import { CampaignScopeBadge } from '@/components/campaign/CampaignScopeBadge'
import { ConsentText } from '@/components/campaign/ConsentText'
import { RemoveSupporterDataButton } from '@/components/campaign/RemoveSupporterDataButton'
import { SupporterShareKit } from '@/components/campaign/SupporterShareKit'
import { VoteIntentionControl } from '@/components/campaign/VoteIntentionControl'
import { CampaignScopeBadge } from '@/components/campaign/shared/CampaignScopeBadge'
import { ConsentText } from '@/components/campaign/shared/ConsentText'
import { RemoveSupporterDataButton } from '@/components/campaign/supporter/RemoveSupporterDataButton'
import { SupporterShareKit } from '@/components/campaign/supporter/SupporterShareKit'
import { VoteIntentionControl } from '@/components/campaign/supporter/VoteIntentionControl'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'

View file

@ -1,8 +1,8 @@
import Link from 'next/link'
import { redirect } from 'next/navigation'
import { CampaignScopeBadge } from '@/components/campaign/CampaignScopeBadge'
import { SupporterImportWizard } from '@/components/campaign/SupporterImportWizard'
import { CampaignScopeBadge } from '@/components/campaign/shared/CampaignScopeBadge'
import { SupporterImportWizard } from '@/components/campaign/supporter/SupporterImportWizard'
import { Button } from '@/components/ui/button'
import { getCampaignUser } from '@/utilities/campaignAuth'
import { isCampaignCoordinator } from '@/utilities/campaignAccess'

View file

@ -1,4 +1,4 @@
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { Skeleton } from '@/components/ui/skeleton'
/** List-shaped skeleton for /apoiadores and its detail routes. */

View file

@ -4,8 +4,8 @@ import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { createSupporterFormAction } from '@/app/(campaign)/campanha/(app)/apoiadores/novo/formActions'
import { CampaignScopeBadge } from '@/components/campaign/CampaignScopeBadge'
import { SupporterForm } from '@/components/campaign/SupporterForm'
import { CampaignScopeBadge } from '@/components/campaign/shared/CampaignScopeBadge'
import { SupporterForm } from '@/components/campaign/supporter/SupporterForm'
import { Button } from '@/components/ui/button'
import { campaignRoleLabels } from '@/utilities/campaignUserProfile'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -1,20 +1,20 @@
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
} from '@/components/campaign/shared/CampaignListPending'
import config from '@payload-config'
import { FileUpIcon, PlusIcon, SearchXIcon } from 'lucide-react'
import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignScopeBadge } from '@/components/campaign/CampaignScopeBadge'
import { SupporterFilters } from '@/components/campaign/SupporterFilters'
import { SupporterList } from '@/components/campaign/SupporterList'
import { SupporterListOverview } from '@/components/campaign/SupporterListOverview'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignScopeBadge } from '@/components/campaign/shared/CampaignScopeBadge'
import { SupporterFilters } from '@/components/campaign/supporter/SupporterFilters'
import { SupporterList } from '@/components/campaign/supporter/SupporterList'
import { SupporterListOverview } from '@/components/campaign/supporter/SupporterListOverview'
import { Button } from '@/components/ui/button'
import { isCampaignCoordinator, isCampaignUnrestricted } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,9 +4,9 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { AdvisorDebouncedTextCell } from '@/components/campaign/AdvisorDebouncedTextCell'
import { AdvisorPasswordResetButton } from '@/components/campaign/AdvisorPasswordResetButton'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { AdvisorDebouncedTextCell } from '@/components/campaign/advisor/AdvisorDebouncedTextCell'
import { AdvisorPasswordResetButton } from '@/components/campaign/advisor/AdvisorPasswordResetButton'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { isPlanilhaPlaceholderEmail } from '@/lib/schemas/advisor'

View file

@ -5,11 +5,11 @@ import { getPayload } from 'payload'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/CampaignSearchForm'
import { AdvisorsTable } from '@/components/campaign/AdvisorsTable'
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/shared/CampaignSearchForm'
import { AdvisorsTable } from '@/components/campaign/advisor/AdvisorsTable'
import {
advisorListHrefForPage,
loadAdvisorListPageData,

View file

@ -1,7 +1,7 @@
import type { Metadata } from 'next'
import { redirect } from 'next/navigation'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import {
CAMPAIGN_CONCEPT_CATEGORIES,
campaignConceptsByCategory,

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { DemandWorkflowCard } from '@/components/campaign/DemandWorkflowCard'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { DemandWorkflowCard } from '@/components/campaign/demand/DemandWorkflowCard'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import {

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { DemandForm } from '@/components/campaign/DemandForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { DemandForm } from '@/components/campaign/demand/DemandForm'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,19 +4,19 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignFilterChips } from '@/components/campaign/CampaignFilterChips'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignFilterChips } from '@/components/campaign/shared/CampaignFilterChips'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import {
CampaignTable,
CampaignTableHead,
type CampaignTableColumn,
} from '@/components/campaign/CampaignTable'
} from '@/components/campaign/shared/CampaignTable'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import {

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { StateDeputyForm } from '@/components/campaign/StateDeputyForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { StateDeputyForm } from '@/components/campaign/stateDeputy/StateDeputyForm'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'

View file

@ -2,8 +2,8 @@ import { ArrowLeftIcon } from 'lucide-react'
import Link from 'next/link'
import { redirect } from 'next/navigation'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { StateDeputyForm } from '@/components/campaign/StateDeputyForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { StateDeputyForm } from '@/components/campaign/stateDeputy/StateDeputyForm'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,19 +4,19 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/CampaignSearchForm'
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/shared/CampaignSearchForm'
import {
CampaignTable,
CampaignTableHead,
type CampaignTableColumn,
} from '@/components/campaign/CampaignTable'
} from '@/components/campaign/shared/CampaignTable'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -1,9 +1,9 @@
import { redirect } from 'next/navigation'
import React from 'react'
import { CampaignBottomNav } from '@/components/campaign/CampaignBottomNav'
import { CampaignSidebar } from '@/components/campaign/CampaignSidebar'
import { InstallPwaToast } from '@/components/campaign/InstallPwaToast'
import { CampaignBottomNav } from '@/components/campaign/shell/CampaignBottomNav'
import { CampaignSidebar } from '@/components/campaign/shell/CampaignSidebar'
import { InstallPwaToast } from '@/components/campaign/shell/InstallPwaToast'
import { SidebarInset, SidebarProvider, SidebarTrigger } from '@/components/ui/Sidebar'
import { Toaster } from '@/components/ui/Toaster'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,11 +4,11 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { LeadershipInternalForm } from '@/components/campaign/LeadershipInternalForm'
import { LeadershipInviteButtons } from '@/components/campaign/LeadershipInviteButtons'
import { StateDeputyChips } from '@/components/campaign/StateDeputyChips'
import { SupportStatusBadge } from '@/components/campaign/SupportStatusBadge'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { LeadershipInternalForm } from '@/components/campaign/leadership/LeadershipInternalForm'
import { LeadershipInviteButtons } from '@/components/campaign/invite/LeadershipInviteButtons'
import { StateDeputyChips } from '@/components/campaign/stateDeputy/StateDeputyChips'
import { SupportStatusBadge } from '@/components/campaign/leadership/SupportStatusBadge'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { LeadershipForm } from '@/components/campaign/LeadershipForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { LeadershipForm } from '@/components/campaign/leadership/LeadershipForm'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,20 +4,20 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/CampaignSearchForm'
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/shared/CampaignSearchForm'
import {
CampaignTable,
CampaignTableHead,
type CampaignTableColumn,
} from '@/components/campaign/CampaignTable'
import { SupportStatusBadge } from '@/components/campaign/SupportStatusBadge'
} from '@/components/campaign/shared/CampaignTable'
import { SupportStatusBadge } from '@/components/campaign/leadership/SupportStatusBadge'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'

View file

@ -1,4 +1,4 @@
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { Skeleton } from '@/components/ui/skeleton'
export default function CampaignDashboardLoading() {

View file

@ -4,9 +4,9 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { MunicipalityAdvisorsForm } from '@/components/campaign/MunicipalityAdvisorsForm'
import { MunicipalityStrategyForm } from '@/components/campaign/MunicipalityStrategyForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { MunicipalityAdvisorsForm } from '@/components/campaign/municipality/MunicipalityAdvisorsForm'
import { MunicipalityStrategyForm } from '@/components/campaign/municipality/MunicipalityStrategyForm'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,21 +4,21 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListPagination } from '@/components/campaign/CampaignListPagination'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CandidateComparePicker } from '@/components/campaign/CandidateComparePicker'
import { MunicipalityBaselineCard } from '@/components/campaign/MunicipalityBaselineCard'
import { MunicipalityCandidateComparisonTable } from '@/components/campaign/MunicipalityCandidateComparisonTable'
import { MunicipalityDossier } from '@/components/campaign/MunicipalityDossier'
import { MunicipalityGoalAccountCard } from '@/components/campaign/MunicipalityGoalAccountCard'
import { MunicipalityLeadershipsPanel } from '@/components/campaign/MunicipalityLeadershipsPanel'
import { MunicipalityPledgesPanel } from '@/components/campaign/MunicipalityPledgesPanel'
import { MunicipalityStrategyCard } from '@/components/campaign/MunicipalityStrategyCard'
import { MunicipalityTabNav } from '@/components/campaign/MunicipalityTabNav'
import { MunicipalityUpdateFeed } from '@/components/campaign/MunicipalityUpdateFeed'
import { MunicipalityUpdateForm } from '@/components/campaign/MunicipalityUpdateForm'
import { MunicipalityZoneNeighborhoodsCard } from '@/components/campaign/MunicipalityZoneNeighborhoodsCard'
import { RecentVisitTracker } from '@/components/campaign/RecentVisitTracker'
import { CampaignListPagination } from '@/components/campaign/shared/CampaignListPagination'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CandidateComparePicker } from '@/components/campaign/map/CandidateComparePicker'
import { MunicipalityBaselineCard } from '@/components/campaign/municipality/MunicipalityBaselineCard'
import { MunicipalityCandidateComparisonTable } from '@/components/campaign/municipality/MunicipalityCandidateComparisonTable'
import { MunicipalityDossier } from '@/components/campaign/municipality/MunicipalityDossier'
import { MunicipalityGoalAccountCard } from '@/components/campaign/municipality/MunicipalityGoalAccountCard'
import { MunicipalityLeadershipsPanel } from '@/components/campaign/municipality/MunicipalityLeadershipsPanel'
import { MunicipalityPledgesPanel } from '@/components/campaign/municipality/MunicipalityPledgesPanel'
import { MunicipalityStrategyCard } from '@/components/campaign/municipality/MunicipalityStrategyCard'
import { MunicipalityTabNav } from '@/components/campaign/municipality/MunicipalityTabNav'
import { MunicipalityUpdateFeed } from '@/components/campaign/municipality/MunicipalityUpdateFeed'
import { MunicipalityUpdateForm } from '@/components/campaign/municipality/MunicipalityUpdateForm'
import { MunicipalityZoneNeighborhoodsCard } from '@/components/campaign/municipality/MunicipalityZoneNeighborhoodsCard'
import { RecentVisitTracker } from '@/components/campaign/dashboard/RecentVisitTracker'
import { Badge } from '@/components/ui/Badge'
import { isCampaignLeader } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -1,4 +1,4 @@
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { Skeleton } from '@/components/ui/skeleton'
/** List-shaped skeleton for /municipios and its detail routes. */

View file

@ -1,19 +1,19 @@
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
} from '@/components/campaign/shared/CampaignListPending'
import config from '@payload-config'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignScopeBadge } from '@/components/campaign/CampaignScopeBadge'
import { MunicipalityEstimateScenarioProvider } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { MunicipalityFilters } from '@/components/campaign/MunicipalityFilters'
import { MunicipalityList } from '@/components/campaign/MunicipalityList'
import { MunicipalityListOverview } from '@/components/campaign/MunicipalityListOverview'
import { RecentVisitTracker } from '@/components/campaign/RecentVisitTracker'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignScopeBadge } from '@/components/campaign/shared/CampaignScopeBadge'
import { MunicipalityEstimateScenarioProvider } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import { MunicipalityFilters } from '@/components/campaign/municipality/MunicipalityFilters'
import { MunicipalityList } from '@/components/campaign/municipality/MunicipalityList'
import { MunicipalityListOverview } from '@/components/campaign/municipality/MunicipalityListOverview'
import { RecentVisitTracker } from '@/components/campaign/dashboard/RecentVisitTracker'
import {
isCampaignCoordinator,
isCampaignLeader,

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { notFound, redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { OrganizationForm } from '@/components/campaign/OrganizationForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { OrganizationForm } from '@/components/campaign/organization/OrganizationForm'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { actionPlanStatusLabels, actionPlanStatuses } from '@/lib/schemas/actionPlan'

View file

@ -4,8 +4,8 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { OrganizationForm } from '@/components/campaign/OrganizationForm'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { OrganizationForm } from '@/components/campaign/organization/OrganizationForm'
import { Button } from '@/components/ui/button'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -4,19 +4,19 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/CampaignSearchForm'
} from '@/components/campaign/shared/CampaignListPending'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { CampaignSearchForm } from '@/components/campaign/shared/CampaignSearchForm'
import {
CampaignTable,
CampaignTableHead,
type CampaignTableColumn,
} from '@/components/campaign/CampaignTable'
} from '@/components/campaign/shared/CampaignTable'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { organizationKindLabels } from '@/lib/schemas/organization'

View file

@ -3,12 +3,12 @@ import { redirect } from 'next/navigation'
import { getPayload, type Payload } from 'payload'
import { Suspense } from 'react'
import { CampaignDashboard } from '@/components/campaign/CampaignDashboard'
import { LeaderContactsPanel } from '@/components/campaign/LeaderContactsPanel'
import { MunicipalityEstimateScenarioProvider } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { MunicipalityMapPanelDynamic } from '@/components/campaign/MunicipalityMapPanelDynamic'
import { TerritoryOverviewTable } from '@/components/campaign/TerritoryOverviewTable'
import { campaignPrioritySurfaceClassName } from '@/components/campaign/CampaignPageShell'
import { CampaignDashboard } from '@/components/campaign/dashboard/CampaignDashboard'
import { LeaderContactsPanel } from '@/components/campaign/leadership/LeaderContactsPanel'
import { MunicipalityEstimateScenarioProvider } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import { MunicipalityMapPanelDynamic } from '@/components/campaign/map/MunicipalityMapPanelDynamic'
import { TerritoryOverviewTable } from '@/components/campaign/municipality/TerritoryOverviewTable'
import { campaignPrioritySurfaceClassName } from '@/components/campaign/shell/CampaignPageShell'
import type { CampaignUser } from '@/payload-types'
import { isCampaignLeader, isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'

View file

@ -1,7 +1,7 @@
import type { Metadata } from 'next'
import { redirect } from 'next/navigation'
import { CampaignProfileSettings } from '@/components/campaign/CampaignProfileSettings'
import { CampaignProfileSettings } from '@/components/campaign/auth/CampaignProfileSettings'
import { getCampaignUser } from '@/utilities/campaignAuth'
import { campaignUserShellView } from '@/utilities/campaignUserProfile'

View file

@ -7,7 +7,7 @@ import {
searchActionPlanLeadershipOptionsAction,
} from '@/app/(campaign)/campanha/(app)/planos/contactSearchActions'
import { updateActionPlanFormAction } from '@/app/(campaign)/campanha/(app)/planos/formActions'
import { ActionPlanForm } from '@/components/campaign/ActionPlanForm'
import { ActionPlanForm } from '@/components/campaign/actionPlan/ActionPlanForm'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'
import {

View file

@ -7,13 +7,13 @@ import { getPayload } from 'payload'
import {
CancelActionPlanDialog,
MarkActionPlanRealizedDialog,
} from '@/components/campaign/ActionPlanLifecycleDialog'
import { ActionPlanResultForm } from '@/components/campaign/ActionPlanResultForm'
import { ActionPlanStatusBadge } from '@/components/campaign/ActionPlanStatusBadge'
import { ActionPlanTabNav } from '@/components/campaign/ActionPlanTabNav'
import { ActionPlanTaskChecklist } from '@/components/campaign/ActionPlanTaskChecklist'
import { ActionPlanUpdateFeed } from '@/components/campaign/ActionPlanUpdateFeed'
import { ActionPlanUpdateForm } from '@/components/campaign/ActionPlanUpdateForm'
} from '@/components/campaign/actionPlan/ActionPlanLifecycleDialog'
import { ActionPlanResultForm } from '@/components/campaign/actionPlan/ActionPlanResultForm'
import { ActionPlanStatusBadge } from '@/components/campaign/actionPlan/ActionPlanStatusBadge'
import { ActionPlanTabNav } from '@/components/campaign/actionPlan/ActionPlanTabNav'
import { ActionPlanTaskChecklist } from '@/components/campaign/actionPlan/ActionPlanTaskChecklist'
import { ActionPlanUpdateFeed } from '@/components/campaign/actionPlan/ActionPlanUpdateFeed'
import { ActionPlanUpdateForm } from '@/components/campaign/actionPlan/ActionPlanUpdateForm'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'

View file

@ -3,7 +3,7 @@
import config from '@payload-config'
import { getPayload } from 'payload'
import type { ContactComboboxOption } from '@/components/campaign/ContactCombobox'
import type { ContactComboboxOption } from '@/components/campaign/shared/ContactCombobox'
import {
isContactSearchQueryReady,
normalizeContactSearchQuery,

View file

@ -5,7 +5,7 @@ import { getPayload } from 'payload'
import { redirect } from 'next/navigation'
import { createActionPlan, updateActionPlan } from '@/app/(campaign)/campanha/actions/actionPlan'
import type { ActionPlanFormState } from '@/components/campaign/ActionPlanForm'
import type { ActionPlanFormState } from '@/components/campaign/actionPlan/ActionPlanForm'
import { optionalFormText } from '@/lib/formData'
import { getCampaignUser } from '@/utilities/campaignAuth'
import { mapCampaignFormActionError } from '@/utilities/campaignFormActionError'

View file

@ -7,7 +7,7 @@ import {
searchActionPlanLeadershipOptionsAction,
} from '@/app/(campaign)/campanha/(app)/planos/contactSearchActions'
import { createActionPlanFormAction } from '@/app/(campaign)/campanha/(app)/planos/formActions'
import { ActionPlanForm } from '@/components/campaign/ActionPlanForm'
import { ActionPlanForm } from '@/components/campaign/actionPlan/ActionPlanForm'
import { isCampaignStaff } from '@/utilities/campaignAccess'
import { getCampaignUser } from '@/utilities/campaignAuth'
import { loadOrganizationOptions, loadMunicipalityOptions } from '@/utilities/campaignRelationOptions'

View file

@ -1,18 +1,18 @@
import {
CampaignListPendingBoundary,
CampaignListResults,
} from '@/components/campaign/CampaignListPending'
} from '@/components/campaign/shared/CampaignListPending'
import config from '@payload-config'
import { PlusIcon, SearchXIcon } from 'lucide-react'
import Link from 'next/link'
import { redirect } from 'next/navigation'
import { getPayload } from 'payload'
import { ActionPlanFilters } from '@/components/campaign/ActionPlanFilters'
import { ActionPlanList } from '@/components/campaign/ActionPlanList'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { ActionPlanFilters } from '@/components/campaign/actionPlan/ActionPlanFilters'
import { ActionPlanList } from '@/components/campaign/actionPlan/ActionPlanList'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { CampaignListFooter } from '@/components/campaign/shared/CampaignListFooter'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { Button } from '@/components/ui/button'
import type { ActionPlan } from '@/payload-types'
import { loadActionPlanListPageData } from '@/utilities/actionPlanPageData'

View file

@ -7,9 +7,9 @@ import {
redeemCampaignInviteAutofillFormAction,
redeemCampaignInviteLoginFormAction,
} from '@/app/(campaign)/campanha/convite/[token]/formActions'
import { CampaignInviteForm } from '@/components/campaign/CampaignInviteForm'
import { ConsentText } from '@/components/campaign/ConsentText'
import { InvalidCampaignInvite } from '@/components/campaign/InvalidCampaignInvite'
import { CampaignInviteForm } from '@/components/campaign/invite/CampaignInviteForm'
import { ConsentText } from '@/components/campaign/shared/ConsentText'
import { InvalidCampaignInvite } from '@/components/campaign/invite/InvalidCampaignInvite'
import { getCampaignInvitePageData } from '@/utilities/campaignInvitePageData'
export const dynamic = 'force-dynamic'

View file

@ -3,8 +3,8 @@
import { useActionState } from 'react'
import { requestCampaignPasswordResetFormAction } from '@/app/(campaign)/campanha/actions/password'
import { CampaignAuthBackToLoginLink } from '@/components/campaign/CampaignAuthBackToLoginLink'
import { CampaignAuthCardHeader } from '@/components/campaign/CampaignAuthCardHeader'
import { CampaignAuthBackToLoginLink } from '@/components/campaign/auth/CampaignAuthBackToLoginLink'
import { CampaignAuthCardHeader } from '@/components/campaign/auth/CampaignAuthCardHeader'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field'

View file

@ -2,7 +2,7 @@ import type { Metadata } from 'next'
import { redirect } from 'next/navigation'
import { ForgotPasswordForm } from '@/app/(campaign)/campanha/esqueci-senha/ForgotPasswordForm'
import { CampaignAuthPageShell } from '@/components/campaign/CampaignAuthPageShell'
import { CampaignAuthPageShell } from '@/components/campaign/auth/CampaignAuthPageShell'
import { getCampaignUser } from '@/utilities/campaignAuth'
export const metadata: Metadata = {

View file

@ -4,7 +4,7 @@ import Link from 'next/link'
import { useActionState, useState } from 'react'
import { loginCampaignFormAction, type LoginResult } from '@/app/(campaign)/campanha/actions/auth'
import { CampaignAuthCardHeader } from '@/components/campaign/CampaignAuthCardHeader'
import { CampaignAuthCardHeader } from '@/components/campaign/auth/CampaignAuthCardHeader'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field'

View file

@ -1,7 +1,7 @@
import type { Metadata } from 'next'
import { redirect } from 'next/navigation'
import { CampaignAuthPageShell } from '@/components/campaign/CampaignAuthPageShell'
import { CampaignAuthPageShell } from '@/components/campaign/auth/CampaignAuthPageShell'
import { getCampaignUser } from '@/utilities/campaignAuth'
import { LoginForm } from './LoginForm'

View file

@ -3,8 +3,8 @@
import { useActionState } from 'react'
import { resetCampaignPasswordFormAction } from '@/app/(campaign)/campanha/actions/password'
import { CampaignAuthBackToLoginLink } from '@/components/campaign/CampaignAuthBackToLoginLink'
import { CampaignAuthCardHeader } from '@/components/campaign/CampaignAuthCardHeader'
import { CampaignAuthBackToLoginLink } from '@/components/campaign/auth/CampaignAuthBackToLoginLink'
import { CampaignAuthCardHeader } from '@/components/campaign/auth/CampaignAuthCardHeader'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field'

View file

@ -3,8 +3,8 @@ import Link from 'next/link'
import { redirect } from 'next/navigation'
import { ResetPasswordForm } from '@/app/(campaign)/campanha/redefinir-senha/ResetPasswordForm'
import { CampaignAuthCardHeader } from '@/components/campaign/CampaignAuthCardHeader'
import { CampaignAuthPageShell } from '@/components/campaign/CampaignAuthPageShell'
import { CampaignAuthCardHeader } from '@/components/campaign/auth/CampaignAuthCardHeader'
import { CampaignAuthPageShell } from '@/components/campaign/auth/CampaignAuthPageShell'
import { Button } from '@/components/ui/button'
import { Card, CardContent } from '@/components/ui/card'
import { CAMPAIGN_PASSWORD_RESET_TOKEN_MIN_LENGTH } from '@/lib/schemas/campaignPassword'

View file

@ -2,7 +2,7 @@ import type { Metadata, Viewport } from 'next'
import { Inter } from 'next/font/google'
import React from 'react'
import { RegisterServiceWorker } from '@/components/campaign/RegisterServiceWorker'
import { RegisterServiceWorker } from '@/components/campaign/shell/RegisterServiceWorker'
import { CAMPAIGN_PWA_MANIFEST_PATH, CAMPAIGN_PWA_THEME_COLOR } from '@/utilities/campaignPwa'
import '../(frontend)/styles.css'

View file

@ -1,7 +1,7 @@
import Link from 'next/link'
import { CalendarIcon, MapPinIcon, UserIcon } from 'lucide-react'
import { ActionPlanStatusBadge } from '@/components/campaign/ActionPlanStatusBadge'
import { ActionPlanStatusBadge } from '@/components/campaign/actionPlan/ActionPlanStatusBadge'
import { Badge } from '@/components/ui/Badge'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import { actionPlanKindLabels } from '@/lib/schemas/actionPlan'

View file

@ -1,12 +1,12 @@
'use client'
import { useCampaignListPending } from '@/components/campaign/CampaignListPending'
import { useCampaignListPending } from '@/components/campaign/shared/CampaignListPending'
import { useRef, useState, useTransition } from 'react'
import Link from 'next/link'
import { usePathname, useRouter } from 'next/navigation'
import { ChevronDownIcon, FilterIcon, XIcon } from 'lucide-react'
import type { RelationOption } from '@/components/campaign/RelationMultiSelect'
import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { Button } from '@/components/ui/button'
import { Field, FieldLabel } from '@/components/ui/field'
import { NativeSelect, NativeSelectOption } from '@/components/ui/native-select'

View file

@ -3,11 +3,11 @@
import { useActionState, useState } from 'react'
import Link from 'next/link'
import { AsyncSearchCombobox } from '@/components/campaign/AsyncSearchCombobox'
import { ActionPlanDemandFields } from '@/components/campaign/ActionPlanDemandFields'
import { ContactCombobox, type ContactComboboxOption } from '@/components/campaign/ContactCombobox'
import { ActionPlanTaskFields } from '@/components/campaign/ActionPlanTaskFields'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/RelationMultiSelect'
import { AsyncSearchCombobox } from '@/components/campaign/shared/AsyncSearchCombobox'
import { ActionPlanDemandFields } from '@/components/campaign/actionPlan/ActionPlanDemandFields'
import { ContactCombobox, type ContactComboboxOption } from '@/components/campaign/shared/ContactCombobox'
import { ActionPlanTaskFields } from '@/components/campaign/actionPlan/ActionPlanTaskFields'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/Alert'
import { Button } from '@/components/ui/button'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'

View file

@ -1,4 +1,4 @@
import { ActionPlanCard } from '@/components/campaign/ActionPlanCard'
import { ActionPlanCard } from '@/components/campaign/actionPlan/ActionPlanCard'
import type { ActionPlanListViewModel } from '@/utilities/actionPlanViewModels'
export const ActionPlanList = ({ plans }: { plans: ActionPlanListViewModel[] }) => (

View file

@ -3,7 +3,7 @@
import { useId, useState } from 'react'
import { PlusIcon, Trash2Icon } from 'lucide-react'
import { ContactCombobox, type ContactComboboxOption } from '@/components/campaign/ContactCombobox'
import { ContactCombobox, type ContactComboboxOption } from '@/components/campaign/shared/ContactCombobox'
import { Button } from '@/components/ui/button'
import { Field, FieldError, FieldLabel } from '@/components/ui/field'
import { Input } from '@/components/ui/input'

View file

@ -14,10 +14,10 @@ import { useRouter } from 'next/navigation'
import { useState, useTransition } from 'react'
import { toast } from 'sonner'
import { AdvisorDebouncedTextCell } from '@/components/campaign/AdvisorDebouncedTextCell'
import { AdvisorMunicipalityCell } from '@/components/campaign/AdvisorMunicipalityCell'
import { AdvisorPasswordResetButton } from '@/components/campaign/AdvisorPasswordResetButton'
import { CampaignListEmptyState } from '@/components/campaign/CampaignListEmptyState'
import { AdvisorDebouncedTextCell } from '@/components/campaign/advisor/AdvisorDebouncedTextCell'
import { AdvisorMunicipalityCell } from '@/components/campaign/advisor/AdvisorMunicipalityCell'
import { AdvisorPasswordResetButton } from '@/components/campaign/advisor/AdvisorPasswordResetButton'
import { CampaignListEmptyState } from '@/components/campaign/shared/CampaignListEmptyState'
import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
import { Spinner } from '@/components/ui/Spinner'

View file

@ -1,6 +1,6 @@
import type { ComponentProps, ReactNode } from 'react'
import { CampaignLogo } from '@/components/campaign/campaign-logo'
import { CampaignLogo } from '@/components/campaign/shell/campaign-logo'
import { cn } from '@/lib/utils'
type CampaignAuthPageShellProps = {

View file

@ -7,7 +7,7 @@ import {
removeCampaignAvatarFormAction,
updateCampaignAvatarFormAction,
} from '@/app/(campaign)/campanha/actions/profile'
import { CampaignUserAvatar } from '@/components/campaign/CampaignUserAvatar'
import { CampaignUserAvatar } from '@/components/campaign/shared/CampaignUserAvatar'
import { Button } from '@/components/ui/button'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field'

View file

@ -3,12 +3,12 @@ import Link from 'next/link'
import type { ReactNode } from 'react'
import { CampaignMetricStrip } from '@/components/campaign/CampaignMetricStrip'
import { CampaignMetricStrip } from '@/components/campaign/shared/CampaignMetricStrip'
import {
CampaignPageShell,
campaignPrioritySurfaceClassName,
} from '@/components/campaign/CampaignPageShell'
import { RecentlyVisitedCard } from '@/components/campaign/RecentlyVisitedCard'
} from '@/components/campaign/shell/CampaignPageShell'
import { RecentlyVisitedCard } from '@/components/campaign/dashboard/RecentlyVisitedCard'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import { formatElectionNumber } from '@/lib/electionInsights'

View file

@ -2,7 +2,7 @@
import { useActionState, useState } from 'react'
import type { RelationOption } from '@/components/campaign/RelationMultiSelect'
import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { Alert, AlertDescription } from '@/components/ui/Alert'
import { Button } from '@/components/ui/button'
import { Field, FieldDescription, FieldError, FieldLabel } from '@/components/ui/field'

View file

@ -8,8 +8,8 @@ import {
createLeaderSupporterFormAction,
type LeaderSupporterFormState,
} from '@/app/(campaign)/campanha/actions/leaderSupporter'
import type { RelationOption } from '@/components/campaign/RelationMultiSelect'
import { StrictCombobox } from '@/components/campaign/StrictCombobox'
import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { StrictCombobox } from '@/components/campaign/shared/StrictCombobox'
import { FormattedInput } from '@/components/FormattedInput'
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/Alert'
import { Button } from '@/components/ui/button'

View file

@ -1,8 +1,8 @@
import { PhoneIcon } from 'lucide-react'
import { CampaignPageShell } from '@/components/campaign/CampaignPageShell'
import { LeaderContactForm } from '@/components/campaign/LeaderContactForm'
import type { RelationOption } from '@/components/campaign/RelationMultiSelect'
import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell'
import { LeaderContactForm } from '@/components/campaign/leadership/LeaderContactForm'
import type { RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import {
Table,
TableBody,

View file

@ -2,7 +2,7 @@
import { useActionState } from 'react'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/RelationMultiSelect'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { Alert, AlertDescription } from '@/components/ui/Alert'
import { Button } from '@/components/ui/button'
import { Field, FieldError, FieldLabel } from '@/components/ui/field'

View file

@ -2,7 +2,7 @@
import { useActionState } from 'react'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/RelationMultiSelect'
import { RelationMultiSelect, type RelationOption } from '@/components/campaign/shared/RelationMultiSelect'
import { Alert, AlertDescription } from '@/components/ui/Alert'
import { Button } from '@/components/ui/button'
import { Field, FieldLabel } from '@/components/ui/field'

View file

@ -1,6 +1,6 @@
import Link from 'next/link'
import type { BahiaMapFeatureInfo } from '@/components/campaign/BahiaMap'
import type { BahiaMapFeatureInfo } from '@/components/campaign/map/BahiaMap'
import { Button } from '@/components/ui/button'
import { formatElectionNumber } from '@/lib/electionInsights'
import type { MunicipalityMapNavigation } from '@/utilities/municipalityMapNavigation'

View file

@ -4,14 +4,14 @@ import Link from 'next/link'
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
import { useCallback, useMemo, useRef, useState, useTransition } from 'react'
import { BahiaMap, type BahiaMapFeatureInfo } from '@/components/campaign/BahiaMap'
import { ChoroplethLegend } from '@/components/campaign/ChoroplethLegend'
import { MapFeatureReadout } from '@/components/campaign/MapFeatureReadout'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { BahiaMap, type BahiaMapFeatureInfo } from '@/components/campaign/map/BahiaMap'
import { ChoroplethLegend } from '@/components/campaign/map/ChoroplethLegend'
import { MapFeatureReadout } from '@/components/campaign/map/MapFeatureReadout'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import {
VOTE_ESTIMATE_SCENARIO_MAP_HINT,
VoteEstimateScenarioField,
} from '@/components/campaign/VoteEstimateScenarioField'
} from '@/components/campaign/votePledge/VoteEstimateScenarioField'
import { Field, FieldLabel } from '@/components/ui/field'
import { NativeSelect, NativeSelectOption } from '@/components/ui/native-select'
import { computeChoroplethMax } from '@/lib/bahiaMapStyle'

View file

@ -6,7 +6,7 @@ import type { FederalCandidateOption } from '@/utilities/electionCandidateOption
import type { MunicipalityMapBundle } from '@/utilities/municipalityMapContract'
const MunicipalityMapPanelLazy = dynamic(
() => import('@/components/campaign/MunicipalityMapPanel').then((module) => module.MunicipalityMapPanel),
() => import('@/components/campaign/map/MunicipalityMapPanel').then((module) => module.MunicipalityMapPanel),
{
ssr: false,
loading: () => (

View file

@ -1,4 +1,4 @@
import { MunicipalityHoverTooltip } from '@/components/campaign/MunicipalityHoverTooltip'
import { MunicipalityHoverTooltip } from '@/components/campaign/municipality/MunicipalityHoverTooltip'
import { computeVoteTrend, formatElectionNumber } from '@/lib/electionInsights'
import {
DEFAULT_VOTE_RANK_YEAR,

View file

@ -1,10 +1,10 @@
import Link from 'next/link'
import { ActionPlanStatusBadge } from '@/components/campaign/ActionPlanStatusBadge'
import { MunicipalityBaselineCard } from '@/components/campaign/MunicipalityBaselineCard'
import { MunicipalityStrategyCard } from '@/components/campaign/MunicipalityStrategyCard'
import { MunicipalityUpdateFeed } from '@/components/campaign/MunicipalityUpdateFeed'
import { SupportStatusBadge } from '@/components/campaign/SupportStatusBadge'
import { ActionPlanStatusBadge } from '@/components/campaign/actionPlan/ActionPlanStatusBadge'
import { MunicipalityBaselineCard } from '@/components/campaign/municipality/MunicipalityBaselineCard'
import { MunicipalityStrategyCard } from '@/components/campaign/municipality/MunicipalityStrategyCard'
import { MunicipalityUpdateFeed } from '@/components/campaign/municipality/MunicipalityUpdateFeed'
import { SupportStatusBadge } from '@/components/campaign/leadership/SupportStatusBadge'
import { Badge } from '@/components/ui/Badge'
import type { MunicipalityAgeBandKey } from '@/lib/bahiaMunicipalityDemographics'
import { formatElectionNumber } from '@/lib/electionInsights'

View file

@ -1,10 +1,10 @@
'use client'
import { useCampaignListPending } from '@/components/campaign/CampaignListPending'
import { useCampaignListPending } from '@/components/campaign/shared/CampaignListPending'
import { useRouter } from 'next/navigation'
import { useEffect, useRef, useState, useTransition } from 'react'
import { CampaignSearchInput } from '@/components/campaign/CampaignSearchInput'
import { CampaignSearchInput } from '@/components/campaign/shared/CampaignSearchInput'
import { Button } from '@/components/ui/button'
import { Field, FieldLabel } from '@/components/ui/field'
import { NativeSelect, NativeSelectOption } from '@/components/ui/native-select'

View file

@ -1,9 +1,9 @@
import Link from 'next/link'
import type { ReactNode } from 'react'
import { CampaignInfoHint } from '@/components/campaign/CampaignInfoHint'
import { MunicipalityHoverTooltip } from '@/components/campaign/MunicipalityHoverTooltip'
import { MunicipalityListExpectedVotesControl } from '@/components/campaign/MunicipalityListExpectedVotesControl'
import { CampaignInfoHint } from '@/components/campaign/shared/CampaignInfoHint'
import { MunicipalityHoverTooltip } from '@/components/campaign/municipality/MunicipalityHoverTooltip'
import { MunicipalityListExpectedVotesControl } from '@/components/campaign/municipality/MunicipalityListExpectedVotesControl'
import { Progress } from '@/components/ui/Progress'
import {
CAMPAIGN_CONCEPTS_PATH,

View file

@ -3,7 +3,7 @@
import { FunnelIcon, FunnelPlusIcon } from 'lucide-react'
import { useMemo, useOptimistic, useState, type ReactNode } from 'react'
import { CampaignTransitionAnchor } from '@/components/campaign/CampaignListPending'
import { CampaignTransitionAnchor } from '@/components/campaign/shared/CampaignListPending'
import { Checkbox } from '@/components/ui/Checkbox'
import { Input } from '@/components/ui/input'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/Popover'

View file

@ -1,8 +1,8 @@
import { PlusIcon } from 'lucide-react'
import Link from 'next/link'
import { DeclareVotesForm } from '@/components/campaign/DeclareVotesForm'
import { SupportStatusBadge } from '@/components/campaign/SupportStatusBadge'
import { DeclareVotesForm } from '@/components/campaign/votePledge/DeclareVotesForm'
import { SupportStatusBadge } from '@/components/campaign/leadership/SupportStatusBadge'
import { Badge } from '@/components/ui/Badge'
import { Button } from '@/components/ui/button'
import type { CampaignFormActionState } from '@/utilities/campaignFormActionError'

View file

@ -1,17 +1,17 @@
import { CircleAlertIcon, SearchXIcon } from 'lucide-react'
import Link from 'next/link'
import { CampaignTransitionAnchor } from '@/components/campaign/CampaignListPending'
import { CampaignTable, type CampaignTableColumn } from '@/components/campaign/CampaignTable'
import { CampaignTransitionAnchor } from '@/components/campaign/shared/CampaignListPending'
import { CampaignTable, type CampaignTableColumn } from '@/components/campaign/shared/CampaignTable'
import {
MissingAdvisorBadge,
MunicipalityAdvisorAvatarStack,
} from '@/components/campaign/MunicipalityAdvisorAvatarStack'
import { MunicipalityListAdvisorsControl } from '@/components/campaign/MunicipalityListAdvisorsControl'
import { MunicipalityListExpectedVotesControl } from '@/components/campaign/MunicipalityListExpectedVotesControl'
import { MunicipalityListGoalCoverageCell } from '@/components/campaign/MunicipalityListGoalCoverageCell'
import { MunicipalityListTrendControl } from '@/components/campaign/MunicipalityListTrendControl'
import { MunicipalitySortableHead } from '@/components/campaign/MunicipalitySortableHead'
} from '@/components/campaign/municipality/MunicipalityAdvisorAvatarStack'
import { MunicipalityListAdvisorsControl } from '@/components/campaign/municipality/MunicipalityListAdvisorsControl'
import { MunicipalityListExpectedVotesControl } from '@/components/campaign/municipality/MunicipalityListExpectedVotesControl'
import { MunicipalityListGoalCoverageCell } from '@/components/campaign/municipality/MunicipalityListGoalCoverageCell'
import { MunicipalityListTrendControl } from '@/components/campaign/municipality/MunicipalityListTrendControl'
import { MunicipalitySortableHead } from '@/components/campaign/municipality/MunicipalitySortableHead'
import { Badge } from '@/components/ui/Badge'
import { Button, buttonVariants } from '@/components/ui/button'
import {

View file

@ -9,7 +9,7 @@ import { Checkbox } from '@/components/ui/Checkbox'
import { Label } from '@/components/ui/label'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/Popover'
import { Spinner } from '@/components/ui/Spinner'
import { MunicipalityAdvisorAvatarStack } from '@/components/campaign/MunicipalityAdvisorAvatarStack'
import { MunicipalityAdvisorAvatarStack } from '@/components/campaign/municipality/MunicipalityAdvisorAvatarStack'
import type { CampaignFormActionState } from '@/utilities/campaignFormActionError'
import type { EligibleAdvisorOption, MunicipalityAdvisorSummary } from '@/utilities/municipalityViewModels'

View file

@ -3,9 +3,9 @@
import { useEffect, useRef, useState } from 'react'
import type { MunicipalityListExpectedVotesResponse } from '@/app/(campaign)/campanha/(app)/municipios/expected-votes/types'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { StaffMunicipalityVotesDisplay } from '@/components/campaign/StaffMunicipalityVotesDisplay'
import { VoteEstimateScenarioInputs } from '@/components/campaign/VoteEstimateScenarioInputs'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import { StaffMunicipalityVotesDisplay } from '@/components/campaign/votePledge/StaffMunicipalityVotesDisplay'
import { VoteEstimateScenarioInputs } from '@/components/campaign/votePledge/VoteEstimateScenarioInputs'
import { Alert, AlertDescription } from '@/components/ui/Alert'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/Popover'
import { Spinner } from '@/components/ui/Spinner'

View file

@ -1,6 +1,6 @@
'use client'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import {
formatGoalCoverageDeficitLabel,
formatGoalCoverageDeficitShortLabel,

View file

@ -3,15 +3,15 @@
import { CircleAlertIcon } from 'lucide-react'
import { useEffect, useRef, useState } from 'react'
import { CampaignTransitionAnchor } from '@/components/campaign/CampaignListPending'
import { CampaignMetricStrip } from '@/components/campaign/CampaignMetricStrip'
import { campaignPrioritySurfaceClassName } from '@/components/campaign/CampaignPageShell'
import { useMunicipalityEstimateScenario } from '@/components/campaign/MunicipalityEstimateScenarioContext'
import { CampaignTransitionAnchor } from '@/components/campaign/shared/CampaignListPending'
import { CampaignMetricStrip } from '@/components/campaign/shared/CampaignMetricStrip'
import { campaignPrioritySurfaceClassName } from '@/components/campaign/shell/CampaignPageShell'
import { useMunicipalityEstimateScenario } from '@/components/campaign/municipality/MunicipalityEstimateScenarioContext'
import {
VOTE_ESTIMATE_SCENARIO_OVERVIEW_HINT,
VoteEstimateScenarioField,
} from '@/components/campaign/VoteEstimateScenarioField'
import { VoteEstimateScenarioStrip } from '@/components/campaign/VoteEstimateScenarioStrip'
} from '@/components/campaign/votePledge/VoteEstimateScenarioField'
import { VoteEstimateScenarioStrip } from '@/components/campaign/votePledge/VoteEstimateScenarioStrip'
import { formatElectionNumber } from '@/lib/electionInsights'
import { cn } from '@/lib/utils'
import {

Some files were not shown because too many files have changed in this diff Show more