@polastack/design-system 0.1.5 → 0.1.7

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.
@@ -0,0 +1,86 @@
1
+ // src/tokens/colors.ts
2
+ var colors = {
3
+ primary: {
4
+ 50: "#f0fdfb",
5
+ 100: "#cdfbf0",
6
+ 200: "#9bf7e2",
7
+ 300: "#61ebd0",
8
+ 400: "#2fd4ba",
9
+ 500: "#1BA491",
10
+ 600: "#138575",
11
+ 700: "#146b5f",
12
+ 800: "#15564e",
13
+ 900: "#134841",
14
+ 950: "#042c28"
15
+ },
16
+ neutral: {
17
+ 50: "#fafafa",
18
+ 100: "#f4f4f5",
19
+ 200: "#e4e4e7",
20
+ 300: "#d4d4d8",
21
+ 400: "#a1a1aa",
22
+ 500: "#71717a",
23
+ 600: "#52525b",
24
+ 700: "#3f3f46",
25
+ 800: "#27272a",
26
+ 900: "#18181b",
27
+ 950: "#09090b"
28
+ },
29
+ success: {
30
+ 50: "#f0fdf4",
31
+ 100: "#dcfce7",
32
+ 200: "#bbf7d0",
33
+ 300: "#86efac",
34
+ 400: "#4ade80",
35
+ 500: "#22c55e",
36
+ 600: "#16a34a",
37
+ 700: "#15803d",
38
+ 800: "#166534",
39
+ 900: "#14532d",
40
+ 950: "#052e16"
41
+ },
42
+ warning: {
43
+ 50: "#fffbeb",
44
+ 100: "#fef3c7",
45
+ 200: "#fde68a",
46
+ 300: "#fcd34d",
47
+ 400: "#fbbf24",
48
+ 500: "#f59e0b",
49
+ 600: "#d97706",
50
+ 700: "#b45309",
51
+ 800: "#92400e",
52
+ 900: "#78350f",
53
+ 950: "#451a03"
54
+ },
55
+ error: {
56
+ 50: "#fef2f2",
57
+ 100: "#fee2e2",
58
+ 200: "#fecaca",
59
+ 300: "#fca5a5",
60
+ 400: "#f87171",
61
+ 500: "#ef4444",
62
+ 600: "#dc2626",
63
+ 700: "#b91c1c",
64
+ 800: "#991b1b",
65
+ 900: "#7f1d1d",
66
+ 950: "#450a0a"
67
+ },
68
+ info: {
69
+ 50: "#eff6ff",
70
+ 100: "#dbeafe",
71
+ 200: "#bfdbfe",
72
+ 300: "#93c5fd",
73
+ 400: "#60a5fa",
74
+ 500: "#3b82f6",
75
+ 600: "#2563eb",
76
+ 700: "#1d4ed8",
77
+ 800: "#1e40af",
78
+ 900: "#1e3a8a",
79
+ 950: "#172554"
80
+ }
81
+ };
82
+
83
+ export {
84
+ colors
85
+ };
86
+ //# sourceMappingURL=chunk-Q6XRSLLQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/colors.ts"],"sourcesContent":["/**\n * カラートークン定数\n * CSS変数(globals.css @theme)と同期。プログラム的アクセス用。\n * スタイリングにはTailwindユーティリティクラス(bg-primary-500等)を推奨。\n */\n\nexport const colors = {\n primary: {\n 50: '#f0fdfb',\n 100: '#cdfbf0',\n 200: '#9bf7e2',\n 300: '#61ebd0',\n 400: '#2fd4ba',\n 500: '#1BA491',\n 600: '#138575',\n 700: '#146b5f',\n 800: '#15564e',\n 900: '#134841',\n 950: '#042c28',\n },\n neutral: {\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b',\n },\n success: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 200: '#bbf7d0',\n 300: '#86efac',\n 400: '#4ade80',\n 500: '#22c55e',\n 600: '#16a34a',\n 700: '#15803d',\n 800: '#166534',\n 900: '#14532d',\n 950: '#052e16',\n },\n warning: {\n 50: '#fffbeb',\n 100: '#fef3c7',\n 200: '#fde68a',\n 300: '#fcd34d',\n 400: '#fbbf24',\n 500: '#f59e0b',\n 600: '#d97706',\n 700: '#b45309',\n 800: '#92400e',\n 900: '#78350f',\n 950: '#451a03',\n },\n error: {\n 50: '#fef2f2',\n 100: '#fee2e2',\n 200: '#fecaca',\n 300: '#fca5a5',\n 400: '#f87171',\n 500: '#ef4444',\n 600: '#dc2626',\n 700: '#b91c1c',\n 800: '#991b1b',\n 900: '#7f1d1d',\n 950: '#450a0a',\n },\n info: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n} as const;\n\nexport type ColorScale = keyof typeof colors;\nexport type ColorShade = keyof (typeof colors)['primary'];\n"],"mappings":";AAMO,IAAM,SAAS;AAAA,EACpB,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACF;","names":[]}
package/dist/index.d.ts CHANGED
@@ -661,4 +661,69 @@ interface PullToRefreshProps extends React.HTMLAttributes<HTMLDivElement> {
661
661
  }
662
662
  declare const PullToRefresh: React.ForwardRefExoticComponent<PullToRefreshProps & React.RefAttributes<HTMLDivElement>>;
663
663
 
664
- export { ActiveFilters, type ActiveFiltersProps, AppShell, AppShellContent, AppShellFooter, AppShellHeader, type AppShellProps, AppShellSidebar, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, AvatarStatus, type AvatarStatusProps, type AvatarStatusType, BREAKPOINTS, Badge, type BadgeProps, BottomNavigation, BottomNavigationItem, type BottomNavigationItemProps, type BottomNavigationProps, type Breakpoint, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, type CheckboxProps, Combobox, type ComboboxOption, type ComboboxProps, CommandPalette, CommandPaletteEmpty, CommandPaletteGroup, type CommandPaletteGroupProps, CommandPaletteItem, type CommandPaletteItemProps, type CommandPaletteProps, CommandPaletteSeparator, CommandPaletteShortcut, DataTable, DataTableColumnHeader, DataTablePagination, type DataTableProps, DataTableToolbar, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, type DisplayMode, Drawer, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, type DrawerProps, DrawerProvider, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicFormField, type DynamicFormFieldProps, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, type EmptyStateProps, EmptyStateTitle, type FieldOption, type FieldType, FilterBar, FilterBarActions, FilterBarGroup, FilterChip, type FilterChipProps, FormActions, type FormActionsProps, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldProps, FormLabel, type FormLabelProps, FormLayout, type FormLayoutProps, FormMessage, type FormMessageProps, FormSection, type FormSectionProps, Input, type InputProps, InstallPrompt, type InstallPromptProps, Label, type LabelProps, NumberInput, type NumberInputProps, OfflineIndicator, type OfflineIndicatorProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PullToRefresh, type PullToRefreshProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResolvedTheme, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, type TabsListProps, TabsTrigger, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseThemeOptions, type UseThemeReturn, avatarVariants, badgeVariants, buttonVariants, cn, createContext, formLayoutVariants, getFieldComponent, inputVariants, spinnerVariants, switchVariants, textareaVariants, toast, toastVariants, useAppShell, useBreakpoint, useDisplayMode, useFormField, useInstallPrompt, useOnlineStatus, useTheme$1 as useTheme, useTheme as useThemeContext, useToast, useViewportHeight };
664
+ interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {
665
+ /** Metric label (e.g. "Total Revenue") */
666
+ label: string;
667
+ /** Formatted value (e.g. "¥1,234,567") */
668
+ value: string;
669
+ /** Trend text (e.g. "+12.5%", "-3") */
670
+ trend?: string;
671
+ /** Trend direction — controls color. Default: inferred from trend string. */
672
+ trendDirection?: 'up' | 'down' | 'neutral';
673
+ /** Optional icon rendered left of the value */
674
+ icon?: React.ReactNode;
675
+ }
676
+ declare const StatCard: React.ForwardRefExoticComponent<StatCardProps & React.RefAttributes<HTMLDivElement>>;
677
+
678
+ interface ChartContainerProps extends React.HTMLAttributes<HTMLDivElement> {
679
+ /** Chart title */
680
+ title: string;
681
+ /** Optional description below the title */
682
+ description?: string;
683
+ /** Actions rendered in the header (e.g. period selector, export button) */
684
+ actions?: React.ReactNode;
685
+ }
686
+ declare const ChartContainer: React.ForwardRefExoticComponent<ChartContainerProps & React.RefAttributes<HTMLDivElement>>;
687
+
688
+ /**
689
+ * Chart theme tokens for integrating charting libraries (Recharts, Chart.js, etc.)
690
+ * with the Polastack design system color palette.
691
+ *
692
+ * Usage with Recharts:
693
+ * <Bar fill={chartColors.series[0]} />
694
+ *
695
+ * Usage with Chart.js:
696
+ * datasets: [{ backgroundColor: chartColors.series }]
697
+ */
698
+ /** Ordered color series for chart data — distinct, accessible, brand-consistent. */
699
+ declare const chartColors: {
700
+ /** Primary data series palette (use in order for multi-series charts) */
701
+ readonly series: readonly ["#1BA491", "#3b82f6", "#f59e0b", "#ef4444", "#22c55e", "#61ebd0", "#93c5fd", "#fcd34d"];
702
+ /** Semantic colors for status-based charts */
703
+ readonly semantic: {
704
+ readonly positive: "#22c55e";
705
+ readonly negative: "#ef4444";
706
+ readonly neutral: "#a1a1aa";
707
+ readonly warning: "#f59e0b";
708
+ readonly info: "#3b82f6";
709
+ readonly primary: "#1BA491";
710
+ };
711
+ /** Light fills for area/background (light mode) */
712
+ readonly areaLight: readonly ["#cdfbf0", "#dbeafe", "#fef3c7", "#fee2e2", "#dcfce7"];
713
+ /** Dark fills for area/background (dark mode) */
714
+ readonly areaDark: readonly ["#134841", "#1e3a8a", "#78350f", "#7f1d1d", "#14532d"];
715
+ /** Grid and axis colors (use CSS variables for dark mode compatibility) */
716
+ readonly grid: {
717
+ readonly light: "#e4e4e7";
718
+ readonly dark: "#3f3f46";
719
+ };
720
+ /** Text colors for labels and legends */
721
+ readonly text: {
722
+ readonly light: "#71717a";
723
+ readonly dark: "#a1a1aa";
724
+ };
725
+ };
726
+ type ChartColorSeries = typeof chartColors.series;
727
+ type ChartSemanticColors = typeof chartColors.semantic;
728
+
729
+ export { ActiveFilters, type ActiveFiltersProps, AppShell, AppShellContent, AppShellFooter, AppShellHeader, type AppShellProps, AppShellSidebar, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarGroup, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, AvatarStatus, type AvatarStatusProps, type AvatarStatusType, BREAKPOINTS, Badge, type BadgeProps, BottomNavigation, BottomNavigationItem, type BottomNavigationItemProps, type BottomNavigationProps, type Breakpoint, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartColorSeries, ChartContainer, type ChartContainerProps, type ChartSemanticColors, Checkbox, type CheckboxProps, Combobox, type ComboboxOption, type ComboboxProps, CommandPalette, CommandPaletteEmpty, CommandPaletteGroup, type CommandPaletteGroupProps, CommandPaletteItem, type CommandPaletteItemProps, type CommandPaletteProps, CommandPaletteSeparator, CommandPaletteShortcut, DataTable, DataTableColumnHeader, DataTablePagination, type DataTableProps, DataTableToolbar, DatePicker, type DatePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogTitle, DialogTrigger, type DisplayMode, Drawer, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, type DrawerProps, DrawerProvider, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicFormField, type DynamicFormFieldProps, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, type EmptyStateProps, EmptyStateTitle, type FieldOption, type FieldType, FilterBar, FilterBarActions, FilterBarGroup, FilterChip, type FilterChipProps, FormActions, type FormActionsProps, FormControl, type FormControlProps, FormDescription, type FormDescriptionProps, FormField, type FormFieldProps, FormLabel, type FormLabelProps, FormLayout, type FormLayoutProps, FormMessage, type FormMessageProps, FormSection, type FormSectionProps, Input, type InputProps, InstallPrompt, type InstallPromptProps, Label, type LabelProps, NumberInput, type NumberInputProps, OfflineIndicator, type OfflineIndicatorProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PullToRefresh, type PullToRefreshProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResolvedTheme, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, type TabsListProps, TabsTrigger, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseThemeOptions, type UseThemeReturn, avatarVariants, badgeVariants, buttonVariants, chartColors, cn, createContext, formLayoutVariants, getFieldComponent, inputVariants, spinnerVariants, switchVariants, textareaVariants, toast, toastVariants, useAppShell, useBreakpoint, useDisplayMode, useFormField, useInstallPrompt, useOnlineStatus, useTheme$1 as useTheme, useTheme as useThemeContext, useToast, useViewportHeight };
package/dist/index.js CHANGED
@@ -1,3 +1,7 @@
1
+ import {
2
+ colors
3
+ } from "./chunk-Q6XRSLLQ.js";
4
+
1
5
  // src/lib/cn.ts
2
6
  import { clsx } from "clsx";
3
7
  import { twMerge } from "tailwind-merge";
@@ -3672,6 +3676,142 @@ var PullToRefresh = React41.forwardRef(
3672
3676
  }
3673
3677
  );
3674
3678
  PullToRefresh.displayName = "PullToRefresh";
3679
+
3680
+ // src/components/stat-card/stat-card.tsx
3681
+ import * as React42 from "react";
3682
+ import { jsx as jsx44, jsxs as jsxs25 } from "react/jsx-runtime";
3683
+ function inferDirection(trend) {
3684
+ if (!trend) return "neutral";
3685
+ if (trend.startsWith("+")) return "up";
3686
+ if (trend.startsWith("-")) return "down";
3687
+ return "neutral";
3688
+ }
3689
+ var TREND_STYLES = {
3690
+ up: "text-success-600 dark:text-success-400",
3691
+ down: "text-error-600 dark:text-error-400",
3692
+ neutral: "text-[var(--color-on-surface-muted)]"
3693
+ };
3694
+ var TREND_ICONS = {
3695
+ up: "M7 17l5-5 5 5",
3696
+ down: "M7 7l5 5 5-5",
3697
+ neutral: ""
3698
+ };
3699
+ var StatCard = React42.forwardRef(
3700
+ ({ className, label, value, trend, trendDirection, icon, ...props }, ref) => {
3701
+ const direction = trendDirection ?? inferDirection(trend);
3702
+ return /* @__PURE__ */ jsxs25(
3703
+ "div",
3704
+ {
3705
+ ref,
3706
+ className: cn(
3707
+ "rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-5",
3708
+ className
3709
+ ),
3710
+ ...props,
3711
+ children: [
3712
+ /* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between", children: [
3713
+ /* @__PURE__ */ jsx44("p", { className: "text-xs font-medium text-[var(--color-on-surface-muted)] uppercase tracking-wider", children: label }),
3714
+ icon && /* @__PURE__ */ jsx44("span", { className: "text-[var(--color-on-surface-muted)]", children: icon })
3715
+ ] }),
3716
+ /* @__PURE__ */ jsxs25("div", { className: "flex items-baseline gap-2 mt-2", children: [
3717
+ /* @__PURE__ */ jsx44("span", { className: "text-2xl font-bold tabular-nums", children: value }),
3718
+ trend && /* @__PURE__ */ jsxs25("span", { className: cn("inline-flex items-center gap-0.5 text-xs font-medium", TREND_STYLES[direction]), children: [
3719
+ direction !== "neutral" && /* @__PURE__ */ jsx44("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx44("path", { d: TREND_ICONS[direction] }) }),
3720
+ trend
3721
+ ] })
3722
+ ] })
3723
+ ]
3724
+ }
3725
+ );
3726
+ }
3727
+ );
3728
+ StatCard.displayName = "StatCard";
3729
+
3730
+ // src/components/chart-container/chart-container.tsx
3731
+ import * as React43 from "react";
3732
+ import { jsx as jsx45, jsxs as jsxs26 } from "react/jsx-runtime";
3733
+ var ChartContainer = React43.forwardRef(
3734
+ ({ className, title, description, actions, children, ...props }, ref) => /* @__PURE__ */ jsxs26(
3735
+ "div",
3736
+ {
3737
+ ref,
3738
+ className: cn(
3739
+ "rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] shadow-sm",
3740
+ className
3741
+ ),
3742
+ ...props,
3743
+ children: [
3744
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-start justify-between gap-4 p-5 pb-0", children: [
3745
+ /* @__PURE__ */ jsxs26("div", { children: [
3746
+ /* @__PURE__ */ jsx45("h3", { className: "text-sm font-semibold leading-none tracking-tight", children: title }),
3747
+ description && /* @__PURE__ */ jsx45("p", { className: "mt-1 text-xs text-[var(--color-on-surface-muted)]", children: description })
3748
+ ] }),
3749
+ actions && /* @__PURE__ */ jsx45("div", { className: "flex items-center gap-2 shrink-0", children: actions })
3750
+ ] }),
3751
+ /* @__PURE__ */ jsx45("div", { className: "p-5", children })
3752
+ ]
3753
+ }
3754
+ )
3755
+ );
3756
+ ChartContainer.displayName = "ChartContainer";
3757
+
3758
+ // src/tokens/chart-theme.ts
3759
+ var chartColors = {
3760
+ /** Primary data series palette (use in order for multi-series charts) */
3761
+ series: [
3762
+ colors.primary[500],
3763
+ // #1BA491 teal
3764
+ colors.info[500],
3765
+ // #3b82f6 blue
3766
+ colors.warning[500],
3767
+ // #f59e0b amber
3768
+ colors.error[500],
3769
+ // #ef4444 red
3770
+ colors.success[500],
3771
+ // #22c55e green
3772
+ colors.primary[300],
3773
+ // #61ebd0 light teal
3774
+ colors.info[300],
3775
+ // #93c5fd light blue
3776
+ colors.warning[300]
3777
+ // #fcd34d light amber
3778
+ ],
3779
+ /** Semantic colors for status-based charts */
3780
+ semantic: {
3781
+ positive: colors.success[500],
3782
+ negative: colors.error[500],
3783
+ neutral: colors.neutral[400],
3784
+ warning: colors.warning[500],
3785
+ info: colors.info[500],
3786
+ primary: colors.primary[500]
3787
+ },
3788
+ /** Light fills for area/background (light mode) */
3789
+ areaLight: [
3790
+ colors.primary[100],
3791
+ colors.info[100],
3792
+ colors.warning[100],
3793
+ colors.error[100],
3794
+ colors.success[100]
3795
+ ],
3796
+ /** Dark fills for area/background (dark mode) */
3797
+ areaDark: [
3798
+ colors.primary[900],
3799
+ colors.info[900],
3800
+ colors.warning[900],
3801
+ colors.error[900],
3802
+ colors.success[900]
3803
+ ],
3804
+ /** Grid and axis colors (use CSS variables for dark mode compatibility) */
3805
+ grid: {
3806
+ light: colors.neutral[200],
3807
+ dark: colors.neutral[700]
3808
+ },
3809
+ /** Text colors for labels and legends */
3810
+ text: {
3811
+ light: colors.neutral[500],
3812
+ dark: colors.neutral[400]
3813
+ }
3814
+ };
3675
3815
  export {
3676
3816
  ActiveFilters,
3677
3817
  AppShell,
@@ -3695,6 +3835,7 @@ export {
3695
3835
  CardFooter,
3696
3836
  CardHeader,
3697
3837
  CardTitle,
3838
+ ChartContainer,
3698
3839
  Checkbox,
3699
3840
  Combobox,
3700
3841
  CommandPalette,
@@ -3782,6 +3923,7 @@ export {
3782
3923
  Separator,
3783
3924
  Skeleton,
3784
3925
  Spinner,
3926
+ StatCard,
3785
3927
  Switch,
3786
3928
  Table,
3787
3929
  TableBody,
@@ -3812,6 +3954,7 @@ export {
3812
3954
  avatarVariants,
3813
3955
  badgeVariants,
3814
3956
  buttonVariants,
3957
+ chartColors,
3815
3958
  cn,
3816
3959
  createContext2 as createContext,
3817
3960
  formLayoutVariants,