diff --git a/examples/nextjs-app/package.json b/examples/nextjs-app/package.json index a3f8aa2c..277cee3e 100644 --- a/examples/nextjs-app/package.json +++ b/examples/nextjs-app/package.json @@ -11,6 +11,7 @@ "dependencies": { "@hookform/resolvers": "^5.2.2", "@tailor-platform/app-shell": "workspace:*", + "lucide-react": "catalog:", "next": "16.2.6", "react": "catalog:", "react-dom": "catalog:", diff --git a/examples/nextjs-app/src/modules/custom-module.tsx b/examples/nextjs-app/src/modules/custom-module.tsx index a0223964..0e518b47 100644 --- a/examples/nextjs-app/src/modules/custom-module.tsx +++ b/examples/nextjs-app/src/modules/custom-module.tsx @@ -1,6 +1,6 @@ import { defineModule, Link, ResourceComponentProps } from "@tailor-platform/app-shell"; import { useT, labels } from "./i18n-labels"; -import { ZapIcon } from "./pages/metric-card-demo"; +import { Zap as ZapIcon } from "lucide-react"; import { actionPanelDemoResource } from "./pages/action-panel-demo"; import { metricCardDemoResource } from "./pages/metric-card-demo"; import { activityCardDemoResource } from "./pages/activity-card-demo"; diff --git a/examples/nextjs-app/src/modules/pages/action-panel-demo.tsx b/examples/nextjs-app/src/modules/pages/action-panel-demo.tsx index 42dd10ee..b19ca4c3 100644 --- a/examples/nextjs-app/src/modules/pages/action-panel-demo.tsx +++ b/examples/nextjs-app/src/modules/pages/action-panel-demo.tsx @@ -1,64 +1,9 @@ import { defineResource, ActionPanel, useNavigate, useToast } from "@tailor-platform/app-shell"; -import type { SVGProps } from "react"; - -export const ReceiptIcon = (props: SVGProps) => ( - - - - - -); - -export const FileTextIcon = (props: SVGProps) => ( - - - - - - - -); - -export const ExternalLinkIcon = (props: SVGProps) => ( - - - - - -); +import { + Receipt as ReceiptIcon, + FileText as FileTextIcon, + ExternalLink as ExternalLinkIcon, +} from "lucide-react"; const ActionPanelDemoPage = () => { const navigate = useNavigate(); @@ -85,7 +30,7 @@ const ActionPanelDemoPage = () => { { key: "create-invoice", label: "Create new sales invoice", - icon: , + icon: , onClick: () => { toast("Create invoice clicked"); }, @@ -93,7 +38,7 @@ const ActionPanelDemoPage = () => { { key: "delivery-note", label: "Create new delivery note", - icon: , + icon: , onClick: () => { toast("Create delivery note clicked"); }, @@ -101,7 +46,7 @@ const ActionPanelDemoPage = () => { { key: "view-po-demo", label: "View Purchase Order Demo", - icon: , + icon: , onClick: () => navigate("/custom-page/purchase-order-demo"), }, ]} diff --git a/examples/nextjs-app/src/modules/pages/activity-card-demo.tsx b/examples/nextjs-app/src/modules/pages/activity-card-demo.tsx index 8766f0ca..57530f9a 100644 --- a/examples/nextjs-app/src/modules/pages/activity-card-demo.tsx +++ b/examples/nextjs-app/src/modules/pages/activity-card-demo.tsx @@ -6,6 +6,7 @@ import { Button, Link, } from "@tailor-platform/app-shell"; +import { Check, X } from "lucide-react"; export const activityCardDemoActivities = [ { @@ -120,18 +121,7 @@ const ApprovedIcon = () => ( justifyContent: "center", }} > - - - + ); @@ -147,19 +137,7 @@ const RejectedIcon = () => ( justifyContent: "center", }} > - - - - + ); diff --git a/examples/nextjs-app/src/modules/pages/admin-only.tsx b/examples/nextjs-app/src/modules/pages/admin-only.tsx index 1e2dcc34..a9a4225b 100644 --- a/examples/nextjs-app/src/modules/pages/admin-only.tsx +++ b/examples/nextjs-app/src/modules/pages/admin-only.tsx @@ -1,5 +1,5 @@ import { defineResource, hidden, pass, type Guard } from "@tailor-platform/app-shell"; -import type { SVGProps } from "react"; +import { Shield as ShieldIcon } from "lucide-react"; /** * Guard that checks if the user has admin role. @@ -15,25 +15,6 @@ const adminOnlyGuard: Guard = ({ context }) => { return pass(); }; -const ShieldIcon = (props: SVGProps) => { - return ( - - - - ); -}; - export const adminOnlyResource = defineResource({ path: "admin-only", meta: { @@ -53,9 +34,8 @@ export const adminOnlyResource = defineResource({ }} > diff --git a/examples/nextjs-app/src/modules/pages/layout-demos.tsx b/examples/nextjs-app/src/modules/pages/layout-demos.tsx index ed84b70d..9005667d 100644 --- a/examples/nextjs-app/src/modules/pages/layout-demos.tsx +++ b/examples/nextjs-app/src/modules/pages/layout-demos.tsx @@ -10,7 +10,11 @@ import { import * as React from "react"; import { mockPurchaseOrder } from "./purchase-order-demo"; import { activityCardDemoActivities } from "./activity-card-demo"; -import { ReceiptIcon, FileTextIcon, ExternalLinkIcon } from "./action-panel-demo"; +import { + Receipt as ReceiptIcon, + FileText as FileTextIcon, + ExternalLink as ExternalLinkIcon, +} from "lucide-react"; /** * Placeholder component with subtle diagonal lines pattern for empty content areas diff --git a/examples/nextjs-app/src/modules/pages/metric-card-demo.tsx b/examples/nextjs-app/src/modules/pages/metric-card-demo.tsx index 7c972a78..8b9206ae 100644 --- a/examples/nextjs-app/src/modules/pages/metric-card-demo.tsx +++ b/examples/nextjs-app/src/modules/pages/metric-card-demo.tsx @@ -1,24 +1,5 @@ import { defineResource, Layout, MetricCard } from "@tailor-platform/app-shell"; -import type { SVGProps } from "react"; - -export const ZapIcon = (props: SVGProps) => { - return ( - - - - ); -}; +import { Zap as ZapIcon } from "lucide-react"; const MetricCardDemoPage = () => ( @@ -50,7 +31,7 @@ const MetricCardDemoPage = () => ( value="42" trend={{ direction: "neutral", value: "0%" }} description="this week" - icon={} + icon={} />
diff --git a/examples/nextjs-app/src/modules/pages/primitives-demo.tsx b/examples/nextjs-app/src/modules/pages/primitives-demo.tsx index 8cef8fe2..dff62ddf 100644 --- a/examples/nextjs-app/src/modules/pages/primitives-demo.tsx +++ b/examples/nextjs-app/src/modules/pages/primitives-demo.tsx @@ -12,63 +12,13 @@ import { Table, Tabs, } from "@tailor-platform/app-shell"; +import { + LayoutDashboard as LayoutDashboardIcon, + FolderKanban as FolderKanbanIcon, + Settings as SettingsIcon, +} from "lucide-react"; import * as React from "react"; -const LayoutDashboardIcon = () => ( - - - - - - -); - -const FolderKanbanIcon = () => ( - - - - - - -); - -const SettingsIcon = () => ( - - - - -); - export const primitiveComponentsDemoResource = defineResource({ path: "primitives-demo", meta: { @@ -467,13 +417,13 @@ export const primitiveComponentsDemoResource = defineResource({ - + - + - + Overview content diff --git a/examples/vite-app/package.json b/examples/vite-app/package.json index cbddfbea..ce6e5bf1 100644 --- a/examples/vite-app/package.json +++ b/examples/vite-app/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@tailor-platform/app-shell": "workspace:*", - "lucide-react": "^1.8.0", + "lucide-react": "catalog:", "react": "catalog:", "react-dom": "catalog:", "tailwindcss": "catalog:" diff --git a/packages/core/package.json b/packages/core/package.json index ebcddb37..91f23107 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -58,7 +58,7 @@ "encoding-japanese": "^2.2.0", "es-toolkit": "^1.45.1", "graphql": "^16.14.0", - "lucide-react": "^1.8.0", + "lucide-react": "catalog:", "papaparse": "^5.5.3", "react-hook-form": "^7.71.2", "react-router": "^7.14.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20a6d092..fd268202 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,9 @@ catalogs: '@vitejs/plugin-react': specifier: ^5.2.0 version: 5.2.0 + lucide-react: + specifier: ^1.8.0 + version: 1.8.0 oxfmt: specifier: ^0.47.0 version: 0.47.0 @@ -122,6 +125,9 @@ importers: '@tailor-platform/app-shell': specifier: workspace:* version: link:../../packages/core + lucide-react: + specifier: 'catalog:' + version: 1.8.0(react@19.2.6) next: specifier: 16.2.6 version: 16.2.6(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -169,7 +175,7 @@ importers: specifier: workspace:* version: link:../../packages/core lucide-react: - specifier: ^1.8.0 + specifier: 'catalog:' version: 1.8.0(react@19.2.6) react: specifier: 'catalog:' @@ -233,7 +239,7 @@ importers: specifier: ^16.14.0 version: 16.14.0 lucide-react: - specifier: ^1.8.0 + specifier: 'catalog:' version: 1.8.0(react@19.2.6) papaparse: specifier: ^5.5.3 @@ -6075,7 +6081,7 @@ snapshots: commander: 13.1.0 glob: 11.1.0 ink: 6.0.1(@types/react@19.2.13)(react@19.1.1) - ink-gradient: 3.0.0(ink@6.0.1(@types/react@19.2.13)(react@19.2.6)) + ink-gradient: 3.0.0(ink@6.0.1(@types/react@19.2.13)(react@19.1.1)) inquirer: 12.6.3(@types/node@25.9.1) neverthrow: 8.2.0 react: 19.1.1 @@ -8169,7 +8175,7 @@ snapshots: ini@1.3.8: {} - ink-gradient@3.0.0(ink@6.0.1(@types/react@19.2.13)(react@19.2.6)): + ink-gradient@3.0.0(ink@6.0.1(@types/react@19.2.13)(react@19.1.1)): dependencies: '@types/gradient-string': 1.1.6 gradient-string: 2.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7747deb3..212717d1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,6 +9,7 @@ catalog: "@types/react": ^19 "@types/react-dom": ^19 "@vitejs/plugin-react": ^5.2.0 + lucide-react: ^1.8.0 oxfmt: ^0.47.0 oxlint: ^1.64.0 react: ^19.2.6