@burdenoff/microfe-export 2026.623.2 → 2026.624.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,23 +39,23 @@ var y = class extends t {
39
39
  className: "flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6",
40
40
  children: [
41
41
  /* @__PURE__ */ d("div", {
42
- className: "p-3 rounded-full bg-destructive/10",
43
- children: /* @__PURE__ */ d(i, { className: "size-8 text-destructive" })
42
+ className: "p-3 rounded-full bg-status-error-bg/10",
43
+ children: /* @__PURE__ */ d(i, { className: "size-8 text-status-error-text" })
44
44
  }),
45
45
  /* @__PURE__ */ f("div", {
46
46
  className: "space-y-2",
47
47
  children: [/* @__PURE__ */ d("h3", {
48
- className: "text-lg font-semibold text-foreground",
48
+ className: "text-lg font-semibold text-text-primary",
49
49
  children: "Failed to load page"
50
50
  }), /* @__PURE__ */ d("p", {
51
- className: "text-sm text-muted-foreground max-w-md",
51
+ className: "text-sm text-text-secondary max-w-md",
52
52
  children: this.state.error?.message || "The page chunk could not be loaded. This may be due to a network issue."
53
53
  })]
54
54
  }),
55
55
  /* @__PURE__ */ f("button", {
56
56
  type: "button",
57
57
  onClick: this.handleRetry,
58
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
58
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90 transition-colors",
59
59
  children: [/* @__PURE__ */ d(o, { className: "size-4" }), "Try Again"]
60
60
  })
61
61
  ]
@@ -66,9 +66,9 @@ function b() {
66
66
  return /* @__PURE__ */ f("div", {
67
67
  className: "flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6",
68
68
  children: [/* @__PURE__ */ d("div", {
69
- className: "p-3 rounded-full bg-muted",
69
+ className: "p-3 rounded-full bg-bg-sunken",
70
70
  children: /* @__PURE__ */ d("svg", {
71
- className: "size-8 text-muted-foreground",
71
+ className: "size-8 text-text-secondary",
72
72
  fill: "none",
73
73
  viewBox: "0 0 24 24",
74
74
  stroke: "currentColor",
@@ -82,10 +82,10 @@ function b() {
82
82
  }), /* @__PURE__ */ f("div", {
83
83
  className: "space-y-2",
84
84
  children: [/* @__PURE__ */ d("h3", {
85
- className: "text-lg font-semibold text-foreground",
85
+ className: "text-lg font-semibold text-text-primary",
86
86
  children: "Data Export Unavailable"
87
87
  }), /* @__PURE__ */ d("p", {
88
- className: "text-sm text-muted-foreground max-w-md",
88
+ className: "text-sm text-text-secondary max-w-md",
89
89
  children: "The Data Export feature is currently disabled for this workspace. Contact your administrator to enable it."
90
90
  })]
91
91
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"ExportRoutes.js","names":[],"sources":["../../src/export/ExportRoutes.tsx"],"sourcesContent":["import {\n lazy,\n Suspense,\n Component,\n type ReactNode,\n type ErrorInfo,\n} from \"react\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { Loader2, AlertTriangle, RefreshCw } from \"lucide-react\";\nimport { FeatureGate } from \"@burdenoff/fe-libs/shared/feature-flags\";\n\n// Eager loaded - primary landing page\nimport { ExportLandingPage } from \"./pages/ExportLandingPage\";\n\n// Lazy loaded pages\nconst CreateExportPage = lazy(() =>\n import(\"./pages/CreateExportPage\").then((m) => ({\n default: m.CreateExportPage,\n })),\n);\nconst ExportHistoryPage = lazy(() =>\n import(\"./pages/ExportHistoryPage\").then((m) => ({\n default: m.ExportHistoryPage,\n })),\n);\nconst ExportDetailPage = lazy(() =>\n import(\"./pages/ExportDetailPage\").then((m) => ({\n default: m.ExportDetailPage,\n })),\n);\nconst ExportTemplatesPage = lazy(() =>\n import(\"./pages/ExportTemplatesPage\").then((m) => ({\n default: m.ExportTemplatesPage,\n })),\n);\nconst TemplateDetailPage = lazy(() =>\n import(\"./pages/TemplateDetailPage\").then((m) => ({\n default: m.TemplateDetailPage,\n })),\n);\n\n/**\n * Loading fallback for lazy-loaded pages\n */\nfunction PageLoader() {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Loader2 className=\"size-8 animate-spin text-primary\" />\n </div>\n );\n}\n\n/**\n * Error boundary for lazy-loaded page chunks.\n * Catches chunk-load failures and renders a retry UI instead of an infinite spinner.\n */\nclass LazyErrorBoundary extends Component<\n { children: ReactNode },\n { hasError: boolean; error: Error | null }\n> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(\"[Export] Lazy page load failed:\", error, errorInfo);\n }\n\n handleRetry = () => {\n this.setState({ hasError: false, error: null });\n };\n\n render() {\n if (this.state.hasError) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6\">\n <div className=\"p-3 rounded-full bg-destructive/10\">\n <AlertTriangle className=\"size-8 text-destructive\" />\n </div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold text-foreground\">\n Failed to load page\n </h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n {this.state.error?.message ||\n \"The page chunk could not be loaded. This may be due to a network issue.\"}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={this.handleRetry}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors\"\n >\n <RefreshCw className=\"size-4\" />\n Try Again\n </button>\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Fallback shown when the Export feature flag is OFF.\n */\nfunction ExportDisabledFallback() {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6\">\n <div className=\"p-3 rounded-full bg-muted\">\n <svg\n className=\"size-8 text-muted-foreground\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3\"\n />\n </svg>\n </div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold text-foreground\">\n Data Export Unavailable\n </h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n The Data Export feature is currently disabled for this workspace.\n Contact your administrator to enable it.\n </p>\n </div>\n </div>\n );\n}\n\n/**\n * Internal router for the Export microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * Routes (relative to basePath, e.g., /export):\n * - / → Export dashboard page\n * - /new → Create new export job\n * - /history → Export history list\n * - /:jobId → Export job detail page\n * - /templates → Export templates list\n * - /templates/:templateId → Template detail page\n */\nexport function ExportRoutes() {\n return (\n <LazyErrorBoundary>\n <FeatureGate\n flag=\"workspaces.export\"\n defaultValue={true}\n fallback={<ExportDisabledFallback />}\n >\n <Suspense fallback={<PageLoader />}>\n <Routes>\n {/* Tabbed landing - default route (eager loaded) */}\n <Route index element={<ExportLandingPage />} />\n\n {/* Create new export (lazy loaded) */}\n <Route path=\"new\" element={<CreateExportPage />} />\n\n {/* Export history (lazy loaded) */}\n <Route path=\"history\" element={<ExportHistoryPage />} />\n\n {/* Export job detail (lazy loaded) */}\n <Route path=\":jobId\" element={<ExportDetailPage />} />\n\n {/* Templates (lazy loaded) */}\n <Route path=\"templates\" element={<ExportTemplatesPage />} />\n <Route\n path=\"templates/:templateId\"\n element={<TemplateDetailPage />}\n />\n\n {/* Catch-all route - redirect to dashboard */}\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n </FeatureGate>\n </LazyErrorBoundary>\n );\n}\n"],"mappings":";;;;;;;AAeA,IAAM,IAAmB,QACvB,OAAO,+BAA4B,MAAM,OAAO,EAC9C,SAAS,EAAE,kBACZ,EAAE,CACJ,EACK,IAAoB,QACxB,OAAO,gCAA6B,MAAM,OAAO,EAC/C,SAAS,EAAE,mBACZ,EAAE,CACJ,EACK,IAAmB,QACvB,OAAO,+BAA4B,MAAM,OAAO,EAC9C,SAAS,EAAE,kBACZ,EAAE,CACJ,EACK,IAAsB,QAC1B,OAAO,kCAA+B,MAAM,OAAO,EACjD,SAAS,EAAE,qBACZ,EAAE,CACJ,EACK,IAAqB,QACzB,OAAO,iCAA8B,MAAM,OAAO,EAChD,SAAS,EAAE,oBACZ,EAAE,CACJ;AAKD,SAAS,IAAa;AACpB,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD,EAAS,WAAU,oCAAqC,CAAA;EACpD,CAAA;;AAQV,IAAM,IAAN,cAAgC,EAG9B;CACA,YAAY,GAAgC;AAE1C,EADA,MAAM,EAAM,EACZ,KAAK,QAAQ;GAAE,UAAU;GAAO,OAAO;GAAM;;CAG/C,OAAO,yBAAyB,GAAc;AAC5C,SAAO;GAAE,UAAU;GAAM;GAAO;;CAGlC,kBAAkB,GAAc,GAAsB;AACpD,UAAQ,MAAM,mCAAmC,GAAO,EAAU;;CAGpE,oBAAoB;AAClB,OAAK,SAAS;GAAE,UAAU;GAAO,OAAO;GAAM,CAAC;;CAGjD,SAAS;AA4BP,SA3BI,KAAK,MAAM,WAEX,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD,EAAe,WAAU,2BAA4B,CAAA;KACjD,CAAA;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,WAAU;gBAAwC;MAEjD,CAAA,EACL,kBAAC,KAAD;MAAG,WAAU;gBACV,KAAK,MAAM,OAAO,WACjB;MACA,CAAA,CACA;;IACN,kBAAC,UAAD;KACE,MAAK;KACL,SAAS,KAAK;KACd,WAAU;eAHZ,CAKE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAAA,YAEzB;;IACL;OAIH,KAAK,MAAM;;;AAOtB,SAAS,IAAyB;AAChC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IACE,WAAU;IACV,MAAK;IACL,SAAQ;IACR,QAAO;IACP,aAAa;cAEb,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,GAAE;KACF,CAAA;IACE,CAAA;GACF,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAAwC;IAEjD,CAAA,EACL,kBAAC,KAAD;IAAG,WAAU;cAAyC;IAGlD,CAAA,CACA;KACF;;;AAgBV,SAAgB,IAAe;AAC7B,QACE,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EACE,MAAK;EACL,cAAc;EACd,UAAU,kBAAC,GAAD,EAA0B,CAAA;YAEpC,kBAAC,GAAD;GAAU,UAAU,kBAAC,GAAD,EAAc,CAAA;aAChC,kBAAC,GAAD,EAAA,UAAA;IAEE,kBAAC,GAAD;KAAO,OAAA;KAAM,SAAS,kBAAC,GAAD,EAAqB,CAAA;KAAI,CAAA;IAG/C,kBAAC,GAAD;KAAO,MAAK;KAAM,SAAS,kBAAC,GAAD,EAAoB,CAAA;KAAI,CAAA;IAGnD,kBAAC,GAAD;KAAO,MAAK;KAAU,SAAS,kBAAC,GAAD,EAAqB,CAAA;KAAI,CAAA;IAGxD,kBAAC,GAAD;KAAO,MAAK;KAAS,SAAS,kBAAC,GAAD,EAAoB,CAAA;KAAI,CAAA;IAGtD,kBAAC,GAAD;KAAO,MAAK;KAAY,SAAS,kBAAC,GAAD,EAAuB,CAAA;KAAI,CAAA;IAC5D,kBAAC,GAAD;KACE,MAAK;KACL,SAAS,kBAAC,GAAD,EAAsB,CAAA;KAC/B,CAAA;IAGF,kBAAC,GAAD;KAAO,MAAK;KAAI,SAAS,kBAAC,GAAD;MAAU,IAAG;MAAG,SAAA;MAAU,CAAA;KAAI,CAAA;IAChD,EAAA,CAAA;GACA,CAAA;EACC,CAAA,EACI,CAAA"}
1
+ {"version":3,"file":"ExportRoutes.js","names":[],"sources":["../../src/export/ExportRoutes.tsx"],"sourcesContent":["import {\n lazy,\n Suspense,\n Component,\n type ReactNode,\n type ErrorInfo,\n} from \"react\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { Loader2, AlertTriangle, RefreshCw } from \"lucide-react\";\nimport { FeatureGate } from \"@burdenoff/fe-libs/shared/feature-flags\";\n\n// Eager loaded - primary landing page\nimport { ExportLandingPage } from \"./pages/ExportLandingPage\";\n\n// Lazy loaded pages\nconst CreateExportPage = lazy(() =>\n import(\"./pages/CreateExportPage\").then((m) => ({\n default: m.CreateExportPage,\n })),\n);\nconst ExportHistoryPage = lazy(() =>\n import(\"./pages/ExportHistoryPage\").then((m) => ({\n default: m.ExportHistoryPage,\n })),\n);\nconst ExportDetailPage = lazy(() =>\n import(\"./pages/ExportDetailPage\").then((m) => ({\n default: m.ExportDetailPage,\n })),\n);\nconst ExportTemplatesPage = lazy(() =>\n import(\"./pages/ExportTemplatesPage\").then((m) => ({\n default: m.ExportTemplatesPage,\n })),\n);\nconst TemplateDetailPage = lazy(() =>\n import(\"./pages/TemplateDetailPage\").then((m) => ({\n default: m.TemplateDetailPage,\n })),\n);\n\n/**\n * Loading fallback for lazy-loaded pages\n */\nfunction PageLoader() {\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <Loader2 className=\"size-8 animate-spin text-primary\" />\n </div>\n );\n}\n\n/**\n * Error boundary for lazy-loaded page chunks.\n * Catches chunk-load failures and renders a retry UI instead of an infinite spinner.\n */\nclass LazyErrorBoundary extends Component<\n { children: ReactNode },\n { hasError: boolean; error: Error | null }\n> {\n constructor(props: { children: ReactNode }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(\"[Export] Lazy page load failed:\", error, errorInfo);\n }\n\n handleRetry = () => {\n this.setState({ hasError: false, error: null });\n };\n\n render() {\n if (this.state.hasError) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6\">\n <div className=\"p-3 rounded-full bg-status-error-bg/10\">\n <AlertTriangle className=\"size-8 text-status-error-text\" />\n </div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold text-text-primary\">\n Failed to load page\n </h3>\n <p className=\"text-sm text-text-secondary max-w-md\">\n {this.state.error?.message ||\n \"The page chunk could not be loaded. This may be due to a network issue.\"}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={this.handleRetry}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <RefreshCw className=\"size-4\" />\n Try Again\n </button>\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Fallback shown when the Export feature flag is OFF.\n */\nfunction ExportDisabledFallback() {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[400px] gap-4 text-center p-6\">\n <div className=\"p-3 rounded-full bg-bg-sunken\">\n <svg\n className=\"size-8 text-text-secondary\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={1.5}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3\"\n />\n </svg>\n </div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-semibold text-text-primary\">\n Data Export Unavailable\n </h3>\n <p className=\"text-sm text-text-secondary max-w-md\">\n The Data Export feature is currently disabled for this workspace.\n Contact your administrator to enable it.\n </p>\n </div>\n </div>\n );\n}\n\n/**\n * Internal router for the Export microfrontend.\n * This component handles routing within the microfrontend using React Router v7.\n *\n * Routes (relative to basePath, e.g., /export):\n * - / → Export dashboard page\n * - /new → Create new export job\n * - /history → Export history list\n * - /:jobId → Export job detail page\n * - /templates → Export templates list\n * - /templates/:templateId → Template detail page\n */\nexport function ExportRoutes() {\n return (\n <LazyErrorBoundary>\n <FeatureGate\n flag=\"workspaces.export\"\n defaultValue={true}\n fallback={<ExportDisabledFallback />}\n >\n <Suspense fallback={<PageLoader />}>\n <Routes>\n {/* Tabbed landing - default route (eager loaded) */}\n <Route index element={<ExportLandingPage />} />\n\n {/* Create new export (lazy loaded) */}\n <Route path=\"new\" element={<CreateExportPage />} />\n\n {/* Export history (lazy loaded) */}\n <Route path=\"history\" element={<ExportHistoryPage />} />\n\n {/* Export job detail (lazy loaded) */}\n <Route path=\":jobId\" element={<ExportDetailPage />} />\n\n {/* Templates (lazy loaded) */}\n <Route path=\"templates\" element={<ExportTemplatesPage />} />\n <Route\n path=\"templates/:templateId\"\n element={<TemplateDetailPage />}\n />\n\n {/* Catch-all route - redirect to dashboard */}\n <Route path=\"*\" element={<Navigate to=\"\" replace />} />\n </Routes>\n </Suspense>\n </FeatureGate>\n </LazyErrorBoundary>\n );\n}\n"],"mappings":"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"}
@@ -13,16 +13,16 @@ function i({ progress: i, className: a, showLabel: o = !0, size: s = "md" }) {
13
13
  children: [o && /* @__PURE__ */ n("div", {
14
14
  className: "flex items-center justify-between mb-1",
15
15
  children: [/* @__PURE__ */ t("span", {
16
- className: "text-xs font-medium text-muted-foreground",
16
+ className: "text-xs font-medium text-text-secondary",
17
17
  children: "Progress"
18
18
  }), /* @__PURE__ */ n("span", {
19
- className: "text-xs font-semibold text-foreground",
19
+ className: "text-xs font-semibold text-text-primary",
20
20
  children: [Math.round(c), "%"]
21
21
  })]
22
22
  }), /* @__PURE__ */ t("div", {
23
- className: e("w-full bg-muted rounded-full overflow-hidden", r[s]),
23
+ className: e("w-full bg-bg-sunken rounded-full overflow-hidden", r[s]),
24
24
  children: /* @__PURE__ */ t("div", {
25
- className: e("h-full rounded-full transition-all duration-500 ease-out", c === 100 ? "bg-status-success-bg" : "bg-primary bg-gradient-to-r from-primary to-primary/80"),
25
+ className: e("h-full rounded-full transition-all duration-500 ease-out", c === 100 ? "bg-status-success-bg" : "bg-action-primary-bg bg-gradient-to-r from-primary to-primary/80"),
26
26
  style: { width: `${c}%` }
27
27
  })
28
28
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"ExportProgressBar.js","names":[],"sources":["../../../src/export/components/ExportProgressBar.tsx"],"sourcesContent":["import { cn } from \"../utils/cn\";\n\ninterface ExportProgressBarProps {\n progress: number;\n className?: string;\n showLabel?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\n/**\n * ExportProgressBar - Shows export progress percentage\n */\nexport function ExportProgressBar({\n progress,\n className,\n showLabel = true,\n size = \"md\",\n}: ExportProgressBarProps) {\n const clampedProgress = Math.min(100, Math.max(0, progress));\n\n return (\n <div className={cn(\"w-full\", className)}>\n {showLabel && (\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Progress\n </span>\n <span className=\"text-xs font-semibold text-foreground\">\n {Math.round(clampedProgress)}%\n </span>\n </div>\n )}\n <div\n className={cn(\n \"w-full bg-muted rounded-full overflow-hidden\",\n sizeClasses[size],\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-500 ease-out\",\n clampedProgress === 100\n ? \"bg-status-success-bg\"\n : \"bg-primary bg-gradient-to-r from-primary to-primary/80\",\n )}\n style={{ width: `${clampedProgress}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;AASA,IAAM,IAAc;CAClB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAKD,SAAgB,EAAkB,EAChC,aACA,cACA,eAAY,IACZ,UAAO,QACkB;CACzB,IAAM,IAAkB,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,EAAS,CAAC;AAE5D,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;YAAvC,CACG,KACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAA4C;IAErD,CAAA,EACP,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACG,KAAK,MAAM,EAAgB,EAAC,IACxB;MACH;MAER,kBAAC,OAAD;GACE,WAAW,EACT,gDACA,EAAY,GACb;aAED,kBAAC,OAAD;IACE,WAAW,EACT,4DACA,MAAoB,MAChB,yBACA,yDACL;IACD,OAAO,EAAE,OAAO,GAAG,EAAgB,IAAI;IACvC,CAAA;GACE,CAAA,CACF"}
1
+ {"version":3,"file":"ExportProgressBar.js","names":[],"sources":["../../../src/export/components/ExportProgressBar.tsx"],"sourcesContent":["import { cn } from \"../utils/cn\";\n\ninterface ExportProgressBarProps {\n progress: number;\n className?: string;\n showLabel?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst sizeClasses = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\n/**\n * ExportProgressBar - Shows export progress percentage\n */\nexport function ExportProgressBar({\n progress,\n className,\n showLabel = true,\n size = \"md\",\n}: ExportProgressBarProps) {\n const clampedProgress = Math.min(100, Math.max(0, progress));\n\n return (\n <div className={cn(\"w-full\", className)}>\n {showLabel && (\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"text-xs font-medium text-text-secondary\">\n Progress\n </span>\n <span className=\"text-xs font-semibold text-text-primary\">\n {Math.round(clampedProgress)}%\n </span>\n </div>\n )}\n <div\n className={cn(\n \"w-full bg-bg-sunken rounded-full overflow-hidden\",\n sizeClasses[size],\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-500 ease-out\",\n clampedProgress === 100\n ? \"bg-status-success-bg\"\n : \"bg-action-primary-bg bg-gradient-to-r from-primary to-primary/80\",\n )}\n style={{ width: `${clampedProgress}%` }}\n />\n </div>\n </div>\n );\n}\n"],"mappings":";;;AASA,IAAM,IAAc;CAClB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAKD,SAAgB,EAAkB,EAChC,aACA,cACA,eAAY,IACZ,UAAO,QACkB;CACzB,IAAM,IAAkB,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,EAAS,CAAC;AAE5D,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;YAAvC,CACG,KACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAA0C;IAEnD,CAAA,EACP,kBAAC,QAAD;IAAM,WAAU;cAAhB,CACG,KAAK,MAAM,EAAgB,EAAC,IACxB;MACH;MAER,kBAAC,OAAD;GACE,WAAW,EACT,oDACA,EAAY,GACb;aAED,kBAAC,OAAD;IACE,WAAW,EACT,4DACA,MAAoB,MAChB,yBACA,mEACL;IACD,OAAO,EAAE,OAAO,GAAG,EAAgB,IAAI;IACvC,CAAA;GACE,CAAA,CACF"}
@@ -25,14 +25,14 @@ function a({ children: r, title: a, subtitle: o, icon: s, headerActions: c, head
25
25
  children: [(a || s) && /* @__PURE__ */ n("div", {
26
26
  className: "flex items-center gap-3",
27
27
  children: [s && /* @__PURE__ */ t("div", {
28
- className: "flex-shrink-0 p-2.5 rounded-xl bg-primary/10 text-primary",
28
+ className: "flex-shrink-0 p-2.5 rounded-xl bg-action-primary-bg/10 text-primary",
29
29
  children: s
30
30
  }), a && /* @__PURE__ */ t("h1", {
31
- className: "text-2xl sm:text-3xl font-bold tracking-tight text-foreground",
31
+ className: "text-2xl sm:text-3xl font-bold tracking-tight text-text-primary",
32
32
  children: a
33
33
  })]
34
34
  }), o && /* @__PURE__ */ t("p", {
35
- className: "text-sm sm:text-base text-muted-foreground max-w-2xl",
35
+ className: "text-sm sm:text-base text-text-secondary max-w-2xl",
36
36
  children: o
37
37
  })]
38
38
  }), c && /* @__PURE__ */ t("div", {
@@ -57,10 +57,10 @@ function o({ children: r, title: i, description: a, actions: o, className: s, ..
57
57
  children: [(i || o) && /* @__PURE__ */ n("div", {
58
58
  className: "flex items-center justify-between",
59
59
  children: [/* @__PURE__ */ n("div", { children: [i && /* @__PURE__ */ t("h2", {
60
- className: "text-lg font-semibold text-foreground",
60
+ className: "text-lg font-semibold text-text-primary",
61
61
  children: i
62
62
  }), a && /* @__PURE__ */ t("p", {
63
- className: "text-sm text-muted-foreground",
63
+ className: "text-sm text-text-secondary",
64
64
  children: a
65
65
  })] }), o && /* @__PURE__ */ t("div", {
66
66
  className: "flex items-center gap-2",
@@ -1 +1 @@
1
- {"version":3,"file":"PageLayout.js","names":[],"sources":["../../../src/export/components/PageLayout.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { EmptyState as CanonicalEmptyState } from \"@burdenoff/fe-libs/ui\";\nimport { cn } from \"../utils/cn\";\n\ninterface PageLayoutProps {\n children: ReactNode;\n /** Page title */\n title?: string;\n /** Page subtitle/description */\n subtitle?: string;\n /** Icon component to display next to title */\n icon?: ReactNode;\n /** Actions to display in header (buttons, etc.) */\n headerActions?: ReactNode;\n /** Additional header content below title */\n headerContent?: ReactNode;\n /** Maximum width of content: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' */\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"full\";\n /** Whether to show the header section */\n showHeader?: boolean;\n /** Additional CSS classes for the container */\n className?: string;\n /** Additional CSS classes for the content area */\n contentClassName?: string;\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-screen-sm\", // 640px\n md: \"max-w-screen-md\", // 768px\n lg: \"max-w-screen-lg\", // 1024px\n xl: \"max-w-screen-xl\", // 1280px\n \"2xl\": \"max-w-screen-2xl\", // 1536px\n \"3xl\": \"max-w-[1600px]\",\n full: \"max-w-full\",\n};\n\n/**\n * PageLayout - A consistent page wrapper with responsive design\n *\n * Features:\n * - Proper max-width constraints\n * - Responsive padding\n * - Animated entrance\n * - Consistent header styling\n */\nexport function PageLayout({\n children,\n title,\n subtitle,\n icon,\n headerActions,\n headerContent,\n maxWidth = \"xl\",\n showHeader = true,\n className,\n contentClassName,\n}: PageLayoutProps) {\n return (\n <div\n className={cn(\n // Base styles - full width container with padding\n \"min-h-full w-full\",\n // Responsive horizontal padding\n \"px-4 sm:px-6 lg:px-8 xl:px-12\",\n // Responsive vertical padding\n \"py-6 sm:py-8 lg:py-10\",\n // Entrance animation\n \"animate-in fade-in-0 slide-in-from-bottom-4 duration-500\",\n className,\n )}\n >\n {/* Max-width constrained content container */}\n <div\n className={cn(\n \"mx-auto w-full\",\n maxWidthClasses[maxWidth],\n contentClassName,\n )}\n >\n {/* Page Header */}\n {showHeader && (title || headerActions) && (\n <header className=\"mb-6 sm:mb-8\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n {/* Title Section */}\n <div className=\"space-y-1\">\n {(title || icon) && (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"flex-shrink-0 p-2.5 rounded-xl bg-primary/10 text-primary\">\n {icon}\n </div>\n )}\n {title && (\n <h1 className=\"text-2xl sm:text-3xl font-bold tracking-tight text-foreground\">\n {title}\n </h1>\n )}\n </div>\n )}\n {subtitle && (\n <p className=\"text-sm sm:text-base text-muted-foreground max-w-2xl\">\n {subtitle}\n </p>\n )}\n </div>\n\n {/* Header Actions */}\n {headerActions && (\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {headerActions}\n </div>\n )}\n </div>\n\n {/* Additional Header Content */}\n {headerContent && <div className=\"mt-4\">{headerContent}</div>}\n </header>\n )}\n\n {/* Page content — must not use a <main> landmark here because the\n host shell (AppShellLayout) already renders one; nesting <main>\n elements is invalid HTML and an a11y violation. */}\n <div className=\"space-y-6\">{children}</div>\n </div>\n </div>\n );\n}\n\n/**\n * PageSection - A section within a page with consistent spacing\n */\nexport function PageSection({\n children,\n title,\n description,\n actions,\n className,\n ...rest\n}: {\n children: ReactNode;\n title?: string;\n description?: string;\n actions?: ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLElement>) {\n return (\n <section className={cn(\"space-y-4\", className)} {...rest}>\n {(title || actions) && (\n <div className=\"flex items-center justify-between\">\n <div>\n {title && (\n <h2 className=\"text-lg font-semibold text-foreground\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n )}\n {children}\n </section>\n );\n}\n\n/**\n * Local wrapper around the canonical `EmptyState` from `@burdenoff/fe-libs/ui`.\n * Keeps the existing microfe-export call sites stable while routing all\n * empty-state rendering through the shared primitive.\n */\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n}: {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={className}>\n <CanonicalEmptyState\n icon={icon}\n title={title}\n description={description}\n action={action}\n />\n </div>\n );\n}\n"],"mappings":";;;;AA0BA,IAAM,IAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,OAAO;CACP,MAAM;CACP;AAWD,SAAgB,EAAW,EACzB,aACA,UACA,aACA,SACA,kBACA,kBACA,cAAW,MACX,gBAAa,IACb,cACA,uBACkB;AAClB,QACE,kBAAC,OAAD;EACE,WAAW,EAET,qBAEA,iCAEA,yBAEA,4DACA,EACD;YAGD,kBAAC,OAAD;GACE,WAAW,EACT,kBACA,EAAgB,IAChB,EACD;aALH,CAQG,MAAe,KAAS,MACvB,kBAAC,UAAD;IAAQ,WAAU;cAAlB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CAEE,kBAAC,OAAD;MAAK,WAAU;gBAAf,EACI,KAAS,MACT,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,KACC,kBAAC,OAAD;QAAK,WAAU;kBACZ;QACG,CAAA,EAEP,KACC,kBAAC,MAAD;QAAI,WAAU;kBACX;QACE,CAAA,CAEH;UAEP,KACC,kBAAC,KAAD;OAAG,WAAU;iBACV;OACC,CAAA,CAEF;SAGL,KACC,kBAAC,OAAD;MAAK,WAAU;gBACZ;MACG,CAAA,CAEJ;QAGL,KAAiB,kBAAC,OAAD;KAAK,WAAU;eAAQ;KAAoB,CAAA,CACtD;OAMX,kBAAC,OAAD;IAAK,WAAU;IAAa;IAAe,CAAA,CACvC;;EACF,CAAA;;AAOV,SAAgB,EAAY,EAC1B,aACA,UACA,gBACA,YACA,cACA,GAAG,KAOkC;AACrC,QACE,kBAAC,WAAD;EAAS,WAAW,EAAG,aAAa,EAAU;EAAE,GAAI;YAApD,EACI,KAAS,MACT,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACG,KACC,kBAAC,MAAD;IAAI,WAAU;cAAyC;IAAW,CAAA,EAEnE,KACC,kBAAC,KAAD;IAAG,WAAU;cAAiC;IAAgB,CAAA,CAE5D,EAAA,CAAA,EACL,KAAW,kBAAC,OAAD;IAAK,WAAU;cAA2B;IAAc,CAAA,CAChE;MAEP,EACO;;;AASd,SAAgB,EAAW,EACzB,SACA,UACA,gBACA,WACA,gBAOC;AACD,QACE,kBAAC,OAAD;EAAgB;YACd,kBAAC,GAAD;GACQ;GACC;GACM;GACL;GACR,CAAA;EACE,CAAA"}
1
+ {"version":3,"file":"PageLayout.js","names":[],"sources":["../../../src/export/components/PageLayout.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { EmptyState as CanonicalEmptyState } from \"@burdenoff/fe-libs/ui\";\nimport { cn } from \"../utils/cn\";\n\ninterface PageLayoutProps {\n children: ReactNode;\n /** Page title */\n title?: string;\n /** Page subtitle/description */\n subtitle?: string;\n /** Icon component to display next to title */\n icon?: ReactNode;\n /** Actions to display in header (buttons, etc.) */\n headerActions?: ReactNode;\n /** Additional header content below title */\n headerContent?: ReactNode;\n /** Maximum width of content: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' */\n maxWidth?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"full\";\n /** Whether to show the header section */\n showHeader?: boolean;\n /** Additional CSS classes for the container */\n className?: string;\n /** Additional CSS classes for the content area */\n contentClassName?: string;\n}\n\nconst maxWidthClasses = {\n sm: \"max-w-screen-sm\", // 640px\n md: \"max-w-screen-md\", // 768px\n lg: \"max-w-screen-lg\", // 1024px\n xl: \"max-w-screen-xl\", // 1280px\n \"2xl\": \"max-w-screen-2xl\", // 1536px\n \"3xl\": \"max-w-[1600px]\",\n full: \"max-w-full\",\n};\n\n/**\n * PageLayout - A consistent page wrapper with responsive design\n *\n * Features:\n * - Proper max-width constraints\n * - Responsive padding\n * - Animated entrance\n * - Consistent header styling\n */\nexport function PageLayout({\n children,\n title,\n subtitle,\n icon,\n headerActions,\n headerContent,\n maxWidth = \"xl\",\n showHeader = true,\n className,\n contentClassName,\n}: PageLayoutProps) {\n return (\n <div\n className={cn(\n // Base styles - full width container with padding\n \"min-h-full w-full\",\n // Responsive horizontal padding\n \"px-4 sm:px-6 lg:px-8 xl:px-12\",\n // Responsive vertical padding\n \"py-6 sm:py-8 lg:py-10\",\n // Entrance animation\n \"animate-in fade-in-0 slide-in-from-bottom-4 duration-500\",\n className,\n )}\n >\n {/* Max-width constrained content container */}\n <div\n className={cn(\n \"mx-auto w-full\",\n maxWidthClasses[maxWidth],\n contentClassName,\n )}\n >\n {/* Page Header */}\n {showHeader && (title || headerActions) && (\n <header className=\"mb-6 sm:mb-8\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n {/* Title Section */}\n <div className=\"space-y-1\">\n {(title || icon) && (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"flex-shrink-0 p-2.5 rounded-xl bg-action-primary-bg/10 text-primary\">\n {icon}\n </div>\n )}\n {title && (\n <h1 className=\"text-2xl sm:text-3xl font-bold tracking-tight text-text-primary\">\n {title}\n </h1>\n )}\n </div>\n )}\n {subtitle && (\n <p className=\"text-sm sm:text-base text-text-secondary max-w-2xl\">\n {subtitle}\n </p>\n )}\n </div>\n\n {/* Header Actions */}\n {headerActions && (\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {headerActions}\n </div>\n )}\n </div>\n\n {/* Additional Header Content */}\n {headerContent && <div className=\"mt-4\">{headerContent}</div>}\n </header>\n )}\n\n {/* Page content — must not use a <main> landmark here because the\n host shell (AppShellLayout) already renders one; nesting <main>\n elements is invalid HTML and an a11y violation. */}\n <div className=\"space-y-6\">{children}</div>\n </div>\n </div>\n );\n}\n\n/**\n * PageSection - A section within a page with consistent spacing\n */\nexport function PageSection({\n children,\n title,\n description,\n actions,\n className,\n ...rest\n}: {\n children: ReactNode;\n title?: string;\n description?: string;\n actions?: ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLElement>) {\n return (\n <section className={cn(\"space-y-4\", className)} {...rest}>\n {(title || actions) && (\n <div className=\"flex items-center justify-between\">\n <div>\n {title && (\n <h2 className=\"text-lg font-semibold text-text-primary\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-text-secondary\">{description}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n )}\n {children}\n </section>\n );\n}\n\n/**\n * Local wrapper around the canonical `EmptyState` from `@burdenoff/fe-libs/ui`.\n * Keeps the existing microfe-export call sites stable while routing all\n * empty-state rendering through the shared primitive.\n */\nexport function EmptyState({\n icon,\n title,\n description,\n action,\n className,\n}: {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={className}>\n <CanonicalEmptyState\n icon={icon}\n title={title}\n description={description}\n action={action}\n />\n </div>\n );\n}\n"],"mappings":";;;;AA0BA,IAAM,IAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,OAAO;CACP,MAAM;CACP;AAWD,SAAgB,EAAW,EACzB,aACA,UACA,aACA,SACA,kBACA,kBACA,cAAW,MACX,gBAAa,IACb,cACA,uBACkB;AAClB,QACE,kBAAC,OAAD;EACE,WAAW,EAET,qBAEA,iCAEA,yBAEA,4DACA,EACD;YAGD,kBAAC,OAAD;GACE,WAAW,EACT,kBACA,EAAgB,IAChB,EACD;aALH,CAQG,MAAe,KAAS,MACvB,kBAAC,UAAD;IAAQ,WAAU;cAAlB,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CAEE,kBAAC,OAAD;MAAK,WAAU;gBAAf,EACI,KAAS,MACT,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,KACC,kBAAC,OAAD;QAAK,WAAU;kBACZ;QACG,CAAA,EAEP,KACC,kBAAC,MAAD;QAAI,WAAU;kBACX;QACE,CAAA,CAEH;UAEP,KACC,kBAAC,KAAD;OAAG,WAAU;iBACV;OACC,CAAA,CAEF;SAGL,KACC,kBAAC,OAAD;MAAK,WAAU;gBACZ;MACG,CAAA,CAEJ;QAGL,KAAiB,kBAAC,OAAD;KAAK,WAAU;eAAQ;KAAoB,CAAA,CACtD;OAMX,kBAAC,OAAD;IAAK,WAAU;IAAa;IAAe,CAAA,CACvC;;EACF,CAAA;;AAOV,SAAgB,EAAY,EAC1B,aACA,UACA,gBACA,YACA,cACA,GAAG,KAOkC;AACrC,QACE,kBAAC,WAAD;EAAS,WAAW,EAAG,aAAa,EAAU;EAAE,GAAI;YAApD,EACI,KAAS,MACT,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACG,KACC,kBAAC,MAAD;IAAI,WAAU;cAA2C;IAAW,CAAA,EAErE,KACC,kBAAC,KAAD;IAAG,WAAU;cAA+B;IAAgB,CAAA,CAE1D,EAAA,CAAA,EACL,KAAW,kBAAC,OAAD;IAAK,WAAU;cAA2B;IAAc,CAAA,CAChE;MAEP,EACO;;;AASd,SAAgB,EAAW,EACzB,SACA,UACA,gBACA,WACA,gBAOC;AACD,QACE,kBAAC,OAAD;EAAgB;YACd,kBAAC,GAAD;GACQ;GACC;GACM;GACL;GACR,CAAA;EACE,CAAA"}
@@ -134,7 +134,7 @@ function T() {
134
134
  disabled: t,
135
135
  "aria-disabled": t,
136
136
  title: t ? y("export.create.select.unavailableHint", "Export for this product isn't available yet") : void 0,
137
- className: i("text-left border-2 rounded-xl p-4 transition-all duration-200", t ? "border-border/30 opacity-50 cursor-not-allowed" : n ? "border-primary bg-primary/5 shadow-md" : "border-border/50 hover:border-primary/30 hover:shadow-sm"),
137
+ className: i("text-left border-2 rounded-xl p-4 transition-all duration-200", t ? "border-border-subtle/30 opacity-50 cursor-not-allowed" : n ? "border-primary bg-action-primary-bg/5 shadow-md" : "border-border-subtle/50 hover:border-primary/30 hover:shadow-sm"),
138
138
  children: [
139
139
  /* @__PURE__ */ S("div", {
140
140
  className: "flex items-center justify-between mb-2 gap-2",
@@ -142,7 +142,7 @@ function T() {
142
142
  className: "font-semibold",
143
143
  children: Y[e.entityType]?.label ?? e.displayName
144
144
  }), t ? /* @__PURE__ */ x("span", {
145
- className: "shrink-0 text-xs font-medium px-2 py-0.5 rounded-full bg-muted text-muted-foreground",
145
+ className: "shrink-0 text-xs font-medium px-2 py-0.5 rounded-full bg-bg-sunken text-text-secondary",
146
146
  children: y("export.create.select.unavailable", "Unavailable")
147
147
  }) : n && /* @__PURE__ */ x(f, {
148
148
  size: 18,
@@ -150,11 +150,11 @@ function T() {
150
150
  })]
151
151
  }),
152
152
  /* @__PURE__ */ x("p", {
153
- className: "text-sm text-muted-foreground",
153
+ className: "text-sm text-text-secondary",
154
154
  children: Y[e.entityType]?.description ?? e.description
155
155
  }),
156
156
  e.estimatedSize && /* @__PURE__ */ S("p", {
157
- className: "text-xs text-muted-foreground mt-2",
157
+ className: "text-xs text-text-secondary mt-2",
158
158
  children: ["~", e.estimatedSize]
159
159
  })
160
160
  ]
@@ -164,19 +164,19 @@ function T() {
164
164
  showHeader: !1,
165
165
  children: [
166
166
  /* @__PURE__ */ x("div", {
167
- className: "relative overflow-hidden rounded-xl bg-gradient-to-br from-primary/5 via-primary/3 to-background border border-border/50 p-6 shadow-sm",
167
+ className: "relative overflow-hidden rounded-xl bg-gradient-to-br from-primary/5 via-primary/3 to-background border border-border-subtle/50 p-6 shadow-sm",
168
168
  children: /* @__PURE__ */ S("div", {
169
169
  className: "relative z-10 flex items-center gap-4",
170
170
  children: [/* @__PURE__ */ x("button", {
171
171
  type: "button",
172
172
  onClick: () => m?.(d),
173
- className: "p-2.5 hover:bg-accent rounded-lg transition-all duration-200 hover:scale-110",
173
+ className: "p-2.5 hover:bg-accent rounded-lg transition-all duration-200",
174
174
  "aria-label": y("export.create.actions.backToDashboard", "Back to export dashboard"),
175
175
  children: /* @__PURE__ */ x(l, { size: 20 })
176
176
  }), /* @__PURE__ */ S("div", {
177
177
  className: "flex items-center gap-3",
178
178
  children: [/* @__PURE__ */ x("div", {
179
- className: "p-2.5 rounded-lg bg-primary/10 backdrop-blur-sm",
179
+ className: "p-2.5 rounded-lg bg-action-primary-bg/10 backdrop-blur-sm",
180
180
  children: /* @__PURE__ */ x(p, {
181
181
  size: 24,
182
182
  className: "text-primary"
@@ -198,11 +198,11 @@ function T() {
198
198
  className: "flex items-center gap-2",
199
199
  children: [t > 0 && /* @__PURE__ */ x(u, {
200
200
  size: 18,
201
- className: "text-muted-foreground"
201
+ className: "text-text-secondary"
202
202
  }), /* @__PURE__ */ S("div", {
203
- className: i("flex items-center gap-2 px-4 py-2.5 rounded-lg text-sm font-medium border-2 transition-all duration-200", A === e ? "bg-primary text-primary-foreground border-primary shadow-md scale-105" : "bg-muted/50 text-muted-foreground border-border/50"),
203
+ className: i("flex items-center gap-2 px-4 py-2.5 rounded-lg text-sm font-medium border-2 transition-all duration-200", A === e ? "bg-action-primary-bg text-action-primary-text border-primary shadow-md scale-105" : "bg-bg-sunken/50 text-text-secondary border-border-subtle/50"),
204
204
  children: [/* @__PURE__ */ x("div", {
205
- className: "flex items-center justify-center size-6 rounded-full bg-background/20 font-bold",
205
+ className: "flex items-center justify-center size-6 rounded-full bg-bg-surface/20 font-bold",
206
206
  children: t + 1
207
207
  }), /* @__PURE__ */ x("span", {
208
208
  className: "hidden sm:inline capitalize",
@@ -223,11 +223,11 @@ function T() {
223
223
  children: y("export.create.select.title", "Select data to export")
224
224
  }),
225
225
  /* @__PURE__ */ x("p", {
226
- className: "text-sm text-muted-foreground",
226
+ className: "text-sm text-text-secondary",
227
227
  children: y("export.create.select.description", "Choose which entity types to include in your export.")
228
228
  }),
229
229
  X.length === 0 ? /* @__PURE__ */ x("div", {
230
- className: "border-2 border-border rounded-xl bg-muted/30 p-6 text-sm text-muted-foreground",
230
+ className: "border-2 border-border-subtle rounded-xl bg-bg-sunken/30 p-6 text-sm text-text-secondary",
231
231
  children: y("export.create.select.empty", "No exportable entity types are configured for this workspace yet.")
232
232
  }) : /* @__PURE__ */ S("div", {
233
233
  className: "space-y-6",
@@ -241,7 +241,7 @@ function T() {
241
241
  children: [
242
242
  /* @__PURE__ */ x("div", { className: "h-px flex-1 bg-border/60" }),
243
243
  /* @__PURE__ */ x("span", {
244
- className: "text-xs font-medium uppercase tracking-wide text-muted-foreground",
244
+ className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
245
245
  children: y("export.create.select.unavailableSection", "Not available yet")
246
246
  }),
247
247
  /* @__PURE__ */ x("div", { className: "h-px flex-1 bg-border/60" })
@@ -257,7 +257,7 @@ function T() {
257
257
  A === "options" && /* @__PURE__ */ x("div", {
258
258
  className: "space-y-6",
259
259
  children: /* @__PURE__ */ S("div", {
260
- className: "border-2 border-border/50 rounded-xl p-6 space-y-5",
260
+ className: "border-2 border-border-subtle/50 rounded-xl p-6 space-y-5",
261
261
  children: [
262
262
  /* @__PURE__ */ x("h2", {
263
263
  className: "text-lg font-bold",
@@ -274,7 +274,7 @@ function T() {
274
274
  type: "button",
275
275
  onClick: () => !n && z(e),
276
276
  disabled: n,
277
- className: i("text-left border-2 rounded-xl p-4 transition-all duration-200", R === e ? "border-primary bg-primary/5 shadow-md" : n ? "border-border/30 opacity-50 cursor-not-allowed" : "border-border/50 hover:border-primary/30 hover:shadow-sm"),
277
+ className: i("text-left border-2 rounded-xl p-4 transition-all duration-200", R === e ? "border-primary bg-action-primary-bg/5 shadow-md" : n ? "border-border-subtle/30 opacity-50 cursor-not-allowed" : "border-border-subtle/50 hover:border-primary/30 hover:shadow-sm"),
278
278
  title: n ? e === "WORKSPACE_ADMIN" ? "Workspace admin access required" : "Organization admin access required" : void 0,
279
279
  children: [
280
280
  /* @__PURE__ */ S("div", {
@@ -282,7 +282,7 @@ function T() {
282
282
  children: [
283
283
  /* @__PURE__ */ x(t, {
284
284
  size: 18,
285
- className: R === e ? "text-primary" : n ? "text-muted-foreground/50" : "text-muted-foreground"
285
+ className: R === e ? "text-primary" : n ? "text-text-secondary/50" : "text-text-secondary"
286
286
  }),
287
287
  R === e && /* @__PURE__ */ x(f, {
288
288
  size: 16,
@@ -290,7 +290,7 @@ function T() {
290
290
  }),
291
291
  n && /* @__PURE__ */ x(_, {
292
292
  size: 14,
293
- className: "text-muted-foreground/50"
293
+ className: "text-text-secondary/50"
294
294
  })
295
295
  ]
296
296
  }),
@@ -299,7 +299,7 @@ function T() {
299
299
  children: J(e)
300
300
  }),
301
301
  /* @__PURE__ */ x("p", {
302
- className: "text-xs text-muted-foreground mt-1",
302
+ className: "text-xs text-text-secondary mt-1",
303
303
  children: he(e)
304
304
  })
305
305
  ]
@@ -323,7 +323,7 @@ function T() {
323
323
  "aria-label": y("export.create.options.name", "Export Name"),
324
324
  value: P,
325
325
  onChange: (e) => F(e.target.value),
326
- className: "w-full px-4 py-2.5 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all duration-200",
326
+ className: "w-full px-4 py-2.5 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all duration-200",
327
327
  placeholder: y("export.create.options.namePlaceholder", "e.g., Monthly User Export")
328
328
  })] }),
329
329
  /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
@@ -336,10 +336,10 @@ function T() {
336
336
  return /* @__PURE__ */ S("button", {
337
337
  type: "button",
338
338
  onClick: () => L(e),
339
- className: i("flex items-center gap-3 border-2 rounded-lg p-3 transition-all duration-200", I === e ? "border-primary bg-primary/5" : "border-border/50 hover:border-primary/30"),
339
+ className: i("flex items-center gap-3 border-2 rounded-lg p-3 transition-all duration-200", I === e ? "border-primary bg-action-primary-bg/5" : "border-border-subtle/50 hover:border-primary/30"),
340
340
  children: [/* @__PURE__ */ x(t, {
341
341
  size: 18,
342
- className: I === e ? "text-primary" : "text-muted-foreground"
342
+ className: I === e ? "text-primary" : "text-text-secondary"
343
343
  }), /* @__PURE__ */ x("span", {
344
344
  className: "font-medium text-sm",
345
345
  children: a(e)
@@ -355,7 +355,7 @@ function T() {
355
355
  /* @__PURE__ */ x("div", {
356
356
  className: "flex gap-3",
357
357
  children: /* @__PURE__ */ S("div", {
358
- className: i("flex items-center gap-2 border-2 rounded-lg px-4 py-2 border-primary bg-primary/5"),
358
+ className: i("flex items-center gap-2 border-2 rounded-lg px-4 py-2 border-primary bg-action-primary-bg/5"),
359
359
  children: [/* @__PURE__ */ x(ie, {
360
360
  size: 16,
361
361
  className: "text-primary"
@@ -366,7 +366,7 @@ function T() {
366
366
  })
367
367
  }),
368
368
  /* @__PURE__ */ x("p", {
369
- className: "text-xs text-muted-foreground mt-1.5",
369
+ className: "text-xs text-text-secondary mt-1.5",
370
370
  children: y("export.create.options.archiveDescription", "Exports are packaged as ZIP archives.")
371
371
  })
372
372
  ] }),
@@ -380,7 +380,7 @@ function T() {
380
380
  y("export.create.options.dateRange", "Date Range"),
381
381
  " ",
382
382
  /* @__PURE__ */ x("span", {
383
- className: "font-normal text-muted-foreground",
383
+ className: "font-normal text-text-secondary",
384
384
  children: y("export.create.shared.optional", "(optional)")
385
385
  })
386
386
  ]
@@ -390,7 +390,7 @@ function T() {
390
390
  className: "grid grid-cols-1 sm:grid-cols-2 gap-3",
391
391
  children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
392
392
  htmlFor: "dateFrom",
393
- className: "block text-xs text-muted-foreground mb-1",
393
+ className: "block text-xs text-text-secondary mb-1",
394
394
  children: y("export.create.options.dateFrom", "From")
395
395
  }), /* @__PURE__ */ x("input", {
396
396
  type: "date",
@@ -398,10 +398,10 @@ function T() {
398
398
  "aria-label": y("export.create.options.dateFrom", "From"),
399
399
  value: H,
400
400
  onChange: (e) => U(e.target.value),
401
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm"
401
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm"
402
402
  })] }), /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("label", {
403
403
  htmlFor: "dateTo",
404
- className: "block text-xs text-muted-foreground mb-1",
404
+ className: "block text-xs text-text-secondary mb-1",
405
405
  children: y("export.create.options.dateTo", "To")
406
406
  }), /* @__PURE__ */ x("input", {
407
407
  type: "date",
@@ -410,11 +410,11 @@ function T() {
410
410
  value: W,
411
411
  min: H,
412
412
  onChange: (e) => ue(e.target.value),
413
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm"
413
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary text-sm"
414
414
  })] })]
415
415
  }),
416
416
  /* @__PURE__ */ x("p", {
417
- className: "text-xs text-muted-foreground mt-1.5",
417
+ className: "text-xs text-text-secondary mt-1.5",
418
418
  children: y("export.create.options.dateRangeDescription", "Leave blank to export all data regardless of date.")
419
419
  })
420
420
  ] }),
@@ -424,14 +424,14 @@ function T() {
424
424
  y("export.create.options.basedOnTemplate", "Based on Template"),
425
425
  " ",
426
426
  /* @__PURE__ */ x("span", {
427
- className: "font-normal text-muted-foreground",
427
+ className: "font-normal text-text-secondary",
428
428
  children: y("export.create.shared.optional", "(optional)")
429
429
  })
430
430
  ]
431
431
  }), D.length > 0 ? /* @__PURE__ */ S("select", {
432
432
  value: B ?? "",
433
433
  onChange: (e) => V(e.target.value || void 0),
434
- className: "w-full px-3 py-2 border-2 border-border rounded-lg bg-background focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
434
+ className: "w-full px-3 py-2 border-2 border-border-subtle rounded-lg bg-bg-surface focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary",
435
435
  children: [/* @__PURE__ */ x("option", {
436
436
  value: "",
437
437
  children: y("export.create.options.noTemplate", "No template")
@@ -440,7 +440,7 @@ function T() {
440
440
  children: e.name
441
441
  }, e.id))]
442
442
  }) : /* @__PURE__ */ S("p", {
443
- className: "text-sm text-muted-foreground",
443
+ className: "text-sm text-text-secondary",
444
444
  children: [
445
445
  y("export.create.options.noTemplates", "No templates yet."),
446
446
  " ",
@@ -460,7 +460,7 @@ function T() {
460
460
  A === "review" && /* @__PURE__ */ x("div", {
461
461
  className: "space-y-6",
462
462
  children: /* @__PURE__ */ S("div", {
463
- className: "border-2 border-primary/50 rounded-xl bg-primary/5 p-6 space-y-4",
463
+ className: "border-2 border-primary/50 rounded-xl bg-action-primary-bg/5 p-6 space-y-4",
464
464
  children: [/* @__PURE__ */ S("h2", {
465
465
  className: "text-lg font-bold flex items-center gap-2",
466
466
  children: [/* @__PURE__ */ x(f, {
@@ -501,7 +501,7 @@ function T() {
501
501
  ].map(({ label: e, value: t }) => /* @__PURE__ */ S("div", {
502
502
  className: "flex flex-col sm:flex-row sm:justify-between gap-1",
503
503
  children: [/* @__PURE__ */ x("dt", {
504
- className: "text-muted-foreground",
504
+ className: "text-text-secondary",
505
505
  children: e
506
506
  }), /* @__PURE__ */ x("dd", {
507
507
  className: "font-semibold sm:text-right break-words",
@@ -516,13 +516,13 @@ function T() {
516
516
  children: [/* @__PURE__ */ x("button", {
517
517
  type: "button",
518
518
  onClick: de,
519
- className: "px-6 py-3 border-2 border-border/50 rounded-lg hover:bg-accent hover:border-primary/30 transition-all duration-200 font-medium",
519
+ className: "px-6 py-3 border-2 border-border-subtle/50 rounded-lg hover:bg-accent hover:border-primary/30 transition-all duration-200 font-medium",
520
520
  children: A === "entities" ? y("export.create.actions.cancel", "Cancel") : y("export.create.actions.back", "Back")
521
521
  }), A === "review" ? /* @__PURE__ */ S("button", {
522
522
  type: "button",
523
523
  onClick: pe,
524
524
  disabled: E,
525
- className: "flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-primary text-primary-foreground rounded-lg hover:bg-primary/90 transition-all duration-200 hover:scale-105 font-bold shadow-lg disabled:opacity-50 disabled:cursor-not-allowed",
525
+ className: "flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-all duration-200 font-bold shadow-lg disabled:opacity-50 disabled:cursor-not-allowed",
526
526
  children: [E ? /* @__PURE__ */ x(g, {
527
527
  size: 18,
528
528
  className: "animate-spin"
@@ -530,7 +530,7 @@ function T() {
530
530
  }) : /* @__PURE__ */ S("button", {
531
531
  type: "button",
532
532
  onClick: fe,
533
- className: "flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-primary text-primary-foreground rounded-lg hover:bg-primary/90 transition-all duration-200 hover:scale-105 font-bold shadow-lg",
533
+ className: "flex-1 inline-flex items-center justify-center gap-2 px-6 py-3 bg-action-primary-bg text-action-primary-text rounded-lg hover:bg-action-primary-bg/90 transition-all duration-200 font-bold shadow-lg",
534
534
  children: [y("export.create.actions.next", "Next"), /* @__PURE__ */ x(u, { size: 18 })]
535
535
  })]
536
536
  })