diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-models/changes/[changeId]/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-models/changes/[changeId]/page.tsx index 0c1708dc..7237ee58 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-models/changes/[changeId]/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-models/changes/[changeId]/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { ArrowLeft, Bot, GitBranch } from "lucide-react"; +import { ArrowLeft, Bot, GitBranch } from "@/components/lucide-icons"; type ProviderConfig = { id: string; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-prompts/changes/[changeId]/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-prompts/changes/[changeId]/page.tsx index 5112aff4..5ee1ae26 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-prompts/changes/[changeId]/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/ai-prompts/changes/[changeId]/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { ArrowLeft, FileText, GitBranch } from "lucide-react"; +import { ArrowLeft, FileText, GitBranch } from "@/components/lucide-icons"; type PromptTemplate = { id: string; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/audit/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/audit/page.tsx index 61b2eef4..9feda0c4 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/audit/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/audit/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import type { LucideIcon } from "lucide-react"; -import { FileClock, Fingerprint, ListFilter, ShieldCheck } from "lucide-react"; +import type { LucideIcon } from "@/components/lucide-icons"; +import { FileClock, Fingerprint, ListFilter, ShieldCheck } from "@/components/lucide-icons"; import { getGlobalAuditEvents, type GlobalAuditEventItem } from "@/services/contracts"; type PageProps = { diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/identity/conflicts/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/identity/conflicts/page.tsx index 6008c49a..d41ce3c7 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/identity/conflicts/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/identity/conflicts/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { AlertTriangle, ArrowLeft, CheckCircle2, Search, ShieldCheck } from "lucide-react"; +import { AlertTriangle, ArrowLeft, CheckCircle2, Search, ShieldCheck } from "@/components/lucide-icons"; import { getAccountConflict, getAccountConflicts, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-assets/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-assets/page.tsx index 9e1a9dd5..eafaa046 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-assets/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-assets/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import type { LucideIcon } from "lucide-react"; -import { BookMarked, Filter, Gavel, History, Layers3, Link2, Pencil, RotateCcw, Scale, Search, ShieldAlert, ShieldCheck, UploadCloud } from "lucide-react"; +import type { LucideIcon } from "@/components/lucide-icons"; +import { BookMarked, Filter, Gavel, History, Layers3, Link2, Pencil, RotateCcw, Scale, Search, ShieldAlert, ShieldCheck, UploadCloud } from "@/components/lucide-icons"; import { getReviewRuleDiff, getReviewRuleEditDraft, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-fulltext/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-fulltext/page.tsx index a1d63854..9f3ccdd6 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-fulltext/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/legal-fulltext/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import type { LucideIcon } from "lucide-react"; -import { BookOpenText, Database, FileText, Landmark, Scale, Search, ShieldCheck } from "lucide-react"; +import type { LucideIcon } from "@/components/lucide-icons"; +import { BookOpenText, Database, FileText, Landmark, Scale, Search, ShieldCheck } from "@/components/lucide-icons"; import { getLegalArticle, getLegalArticles, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/page.tsx index e8790e1b..266fe1ab 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import type { LucideIcon } from "lucide-react"; -import { Activity, AlertTriangle, Bot, BookMarked, BookOpen, BookOpenText, ClipboardList, FileText, Gauge, Scale, ServerCog, Settings, ShieldCheck, SlidersHorizontal, CheckSquare, UsersRound } from "lucide-react"; +import type { LucideIcon } from "@/components/lucide-icons"; +import { Activity, AlertTriangle, Bot, BookMarked, BookOpen, BookOpenText, ClipboardList, FileText, Gauge, Scale, ServerCog, Settings, ShieldCheck, SlidersHorizontal, CheckSquare, UsersRound } from "@/components/lucide-icons"; import { canAccessAdminCapability, getRoleLabel, hasPlatformCapability, normalizeUserRole, type AdminCapability, type PlatformCapability } from "@/lib/access-control"; import { getContractWebSession } from "@/lib/contract-session"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/pilot-operations/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/pilot-operations/page.tsx index e2bce5d2..0d1fec76 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/pilot-operations/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/pilot-operations/page.tsx @@ -1,4 +1,4 @@ -import { Activity, BellRing, Building2, CheckCircle2, Clock3, FileWarning, Route, ShieldAlert, UsersRound } from "lucide-react"; +import { Activity, BellRing, Building2, CheckCircle2, Clock3, FileWarning, Route, ShieldAlert, UsersRound } from "@/components/lucide-icons"; import Link from "next/link"; import { getPilotOnCallSchedule, getPilotOperationPolicy, getPilotOperationScanRuns, getPilotOperationsDashboard, getPilotOperationsInsights, getReliableEvidenceAuditClientChanges, getReliableEvidenceAuditClients, getReliableEvidenceKeyChangeRequests, getReliableEvidenceProbeRuns, getReliableEvidenceSigningKeys, getReliableEvidenceTransparencyAnchors, getReliableEvidenceTransparencyCheckpoint, getReliableEvidenceTransparencyEvents } from "@/services/pilot-operations"; import { diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/product-analytics/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/product-analytics/page.tsx index 7b136435..a0b3d710 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/product-analytics/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/product-analytics/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { Activity, ArrowRight, Clock3, FlaskConical, Gauge, Target, UsersRound } from "lucide-react"; +import { Activity, ArrowRight, Clock3, FlaskConical, Gauge, Target, UsersRound } from "@/components/lucide-icons"; import { getAcquisitionFunnelSummary, getDraftFunnelSummary, getDraftingStageTimingSummary } from "@/services/product-analytics"; import { DraftingStageTimingPanel } from "./drafting-stage-timing-panel"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/review-results/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/review-results/page.tsx index 9eebac67..92a9030c 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/review-results/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/review-results/page.tsx @@ -1,8 +1,8 @@ import Link from "next/link"; import { ReviewEvidenceSummary, ReviewFindingBasis } from "@/components/review-evidence-summary"; import { RiskCard, type RiskCardTagTone } from "@yuqei/design-system"; -import type { LucideIcon } from "lucide-react"; -import { FileSearch, ShieldAlert, Quote, ListChecks } from "lucide-react"; +import type { LucideIcon } from "@/components/lucide-icons"; +import { FileSearch, ShieldAlert, Quote, ListChecks } from "@/components/lucide-icons"; import { getContractDetail, getContracts, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/admin/security/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/admin/security/page.tsx index 2ff9226b..f7deaa67 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/admin/security/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/admin/security/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { AlertTriangle, DatabaseZap, Download, Route, ShieldCheck, UserSearch } from "lucide-react"; +import { AlertTriangle, DatabaseZap, Download, Route, ShieldCheck, UserSearch } from "@/components/lucide-icons"; import { getDataEgressLedger, getSecurityAccessEvents, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/contracts/[id]/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/contracts/[id]/page.tsx index a6d9d2dd..6ef06cf2 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/contracts/[id]/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/contracts/[id]/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; import { ReviewEvidenceSummary, ReviewFindingBasis } from "@/components/review-evidence-summary"; -import { UploadCloud } from "lucide-react"; +import { UploadCloud } from "@/components/lucide-icons"; import { getArchiveEvidence, getContractDetail, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/contracts/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/contracts/page.tsx index c9c69417..62d9b09e 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/contracts/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/contracts/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { ChevronLeft, ChevronRight, FileSignature, Search } from "lucide-react"; +import { ChevronLeft, ChevronRight, FileSignature, Search } from "@/components/lucide-icons"; import { getContractPage } from "@/services/contracts"; import { PageSizeSelect } from "./page-size-select"; import { RecordDownloadButton } from "./record-download-button"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/dashboard/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/dashboard/page.tsx index e586d6fb..3bff6171 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/dashboard/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/dashboard/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { FileText, Clock, CheckCircle, XCircle, AlertTriangle, TrendingUp } from "lucide-react"; +import { FileText, Clock, CheckCircle, XCircle, AlertTriangle, TrendingUp } from "@/components/lucide-icons"; import { getContractsDashboard, type ContractDashboard } from "@/services/contracts"; const text = { diff --git a/yuqei-contract-platform/apps/contract-web/src/app/files/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/files/page.tsx index df11ddf0..89ab436e 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/files/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/files/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { Filter } from "lucide-react"; +import { Filter } from "@/components/lucide-icons"; import { getContractFiles, getContracts } from "@/services/contracts"; import { FileRepositoryTable } from "./file-repository-table"; import { UploadContractFileForm } from "./upload-contract-file-form"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/legal-documents/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/legal-documents/page.tsx index 9665020e..2433cf9e 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/legal-documents/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/legal-documents/page.tsx @@ -6,8 +6,8 @@ import { ScrollText, Search, WandSparkles -} from "lucide-react"; -import type { LucideIcon } from "lucide-react"; +} from "@/components/lucide-icons"; +import type { LucideIcon } from "@/components/lucide-icons"; import { getContractTemplateTree, type ContractTemplateItem, diff --git a/yuqei-contract-platform/apps/contract-web/src/app/notifications/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/notifications/page.tsx index e2c1c43b..1e5d7f5f 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/notifications/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/notifications/page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { Bell, Check, CheckCircle, XCircle, AlertTriangle, Clock, FileText } from "lucide-react"; +import { Bell, Check, CheckCircle, XCircle, AlertTriangle, Clock, FileText } from "@/components/lucide-icons"; import { getNotifications, type Notification, type NotificationType } from "@/services/contracts"; const text = { diff --git a/yuqei-contract-platform/apps/contract-web/src/app/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/page.tsx index e7ebb8e6..5c5fa8c3 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/page.tsx @@ -10,7 +10,7 @@ import { ShieldCheck, Sparkles, UsersRound, -} from "lucide-react"; +} from "@/components/lucide-icons"; import { getContractWebSession } from "@/lib/contract-session"; import { industrySolutions } from "@/lib/industry-solutions"; import { TrackedCta } from "@/components/tracked-cta"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/search/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/search/page.tsx index cfbe30e3..28b521cd 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/search/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/search/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; import type { ReactNode } from "react"; -import { Search } from "lucide-react"; +import { Search } from "@/components/lucide-icons"; import { getUnifiedSearchResults, type UnifiedSearchResult, type SearchResultType } from "@/services/contracts"; type PageProps = { diff --git a/yuqei-contract-platform/apps/contract-web/src/app/solutions/[slug]/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/solutions/[slug]/page.tsx index 87089b48..d9ae9b2e 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/solutions/[slug]/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/solutions/[slug]/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; import { notFound } from "next/navigation"; -import { ArrowLeft, ArrowRight, Check, FileSignature, Headphones, ShieldCheck } from "lucide-react"; +import { ArrowLeft, ArrowRight, Check, FileSignature, Headphones, ShieldCheck } from "@/components/lucide-icons"; import { getContractWebSession } from "@/lib/contract-session"; import { getIndustrySolution, industrySolutions } from "@/lib/industry-solutions"; diff --git a/yuqei-contract-platform/apps/contract-web/src/app/templates/page.tsx b/yuqei-contract-platform/apps/contract-web/src/app/templates/page.tsx index b1bafc6a..f2de94ed 100644 --- a/yuqei-contract-platform/apps/contract-web/src/app/templates/page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/app/templates/page.tsx @@ -1,6 +1,6 @@ import Link from "next/link"; -import { FileText, History, Layers3, Pencil, RotateCcw, Scale, Search, ShieldCheck, UploadCloud, WandSparkles } from "lucide-react"; -import type { LucideIcon } from "lucide-react"; +import { FileText, History, Layers3, Pencil, RotateCcw, Scale, Search, ShieldCheck, UploadCloud, WandSparkles } from "@/components/lucide-icons"; +import type { LucideIcon } from "@/components/lucide-icons"; import { getContractTemplateHistory, getContractTemplateDiff, diff --git a/yuqei-contract-platform/apps/contract-web/src/components/lucide-icons.tsx b/yuqei-contract-platform/apps/contract-web/src/components/lucide-icons.tsx new file mode 100644 index 00000000..1515195c --- /dev/null +++ b/yuqei-contract-platform/apps/contract-web/src/components/lucide-icons.tsx @@ -0,0 +1,74 @@ +"use client"; + +// lucide-react 1.x uses React context internally. Re-export the icons that are +// rendered by server pages through a client boundary so RSC never evaluates +// that context on the server. +export { + Activity, + AlertTriangle, + ArrowLeft, + ArrowRight, + Bell, + BellRing, + BookMarked, + BookOpen, + BookOpenText, + Bot, + Building2, + Check, + CheckCircle, + CheckCircle2, + CheckSquare, + ChevronLeft, + ChevronRight, + ClipboardList, + Clock, + Clock3, + Database, + DatabaseZap, + Download, + FileCheck2, + FileClock, + FilePlus2, + FileSearch, + FileSignature, + FileText, + FileWarning, + Filter, + Fingerprint, + FlaskConical, + Gauge, + Gavel, + GitBranch, + Headphones, + History, + Landmark, + Layers3, + LibraryBig, + Link2, + ListChecks, + ListFilter, + LockKeyhole, + Pencil, + Quote, + RotateCcw, + Route, + Scale, + ScrollText, + Search, + ServerCog, + Settings, + ShieldAlert, + ShieldCheck, + SlidersHorizontal, + Sparkles, + Target, + TrendingUp, + UploadCloud, + UserSearch, + UsersRound, + WandSparkles, + XCircle, +} from "lucide-react"; + +export type { LucideIcon } from "lucide-react"; diff --git a/yuqei-contract-platform/apps/contract-web/src/features/workspace/workspace-page.tsx b/yuqei-contract-platform/apps/contract-web/src/features/workspace/workspace-page.tsx index dff7cbbd..d4300af4 100644 --- a/yuqei-contract-platform/apps/contract-web/src/features/workspace/workspace-page.tsx +++ b/yuqei-contract-platform/apps/contract-web/src/features/workspace/workspace-page.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { FilePlus2, FileSearch, Gavel, Search, ShieldCheck, UploadCloud } from "lucide-react"; +import { FilePlus2, FileSearch, Gavel, Search, ShieldCheck, UploadCloud } from "@/components/lucide-icons"; import { MemberHero } from "@yuqei/design-system"; import { getWorkspaceTasks, type WorkspaceTask } from "@/services/contracts"; import { OnboardingGuide } from "@/components/onboarding-guide";