@fayz-ai/ui 0.8.3 → 0.8.5
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.
- package/dist/ChartWidgetInner-GDE5PBTR.js +46 -0
- package/dist/ChartWidgetInner-GDE5PBTR.js.map +1 -0
- package/dist/{chunk-BVF2KPTT.js → chunk-G6OKZ7WL.js} +30 -3
- package/dist/chunk-G6OKZ7WL.js.map +1 -0
- package/dist/{chunk-ID2HQK2Q.js → chunk-KV3MHB6N.js} +116 -213
- package/dist/chunk-KV3MHB6N.js.map +1 -0
- package/dist/{chunk-A7O7KGNL.js → chunk-OUPJDGKE.js} +27 -43
- package/dist/chunk-OUPJDGKE.js.map +1 -0
- package/dist/chunk-PVIB724L.js +161 -0
- package/dist/chunk-PVIB724L.js.map +1 -0
- package/dist/{chunk-O5F4LLSL.js → chunk-VDAYIQX4.js} +208 -8
- package/dist/chunk-VDAYIQX4.js.map +1 -0
- package/dist/{chunk-2GDQUARM.js → chunk-YLQGUJAQ.js} +24 -42
- package/dist/chunk-YLQGUJAQ.js.map +1 -0
- package/dist/dashboard/ChartWidget.d.ts.map +1 -1
- package/dist/dashboard/ChartWidgetInner.d.ts +11 -0
- package/dist/dashboard/ChartWidgetInner.d.ts.map +1 -0
- package/dist/dashboard/OnboardingWidget.d.ts.map +1 -1
- package/dist/dashboard/index.js +3 -2
- package/dist/icons.d.ts +8 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +3 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/layout/Sidebar.d.ts +5 -2
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/index.js +2 -1
- package/dist/preset.cjs +201 -11
- package/dist/preset.cjs.map +1 -1
- package/dist/preset.js +201 -1
- package/dist/preset.js.map +1 -1
- package/dist/primitives/date-picker.d.ts +7 -1
- package/dist/primitives/date-picker.d.ts.map +1 -1
- package/dist/primitives/index.js +2 -2
- package/dist/primitives/search-select.d.ts +3 -1
- package/dist/primitives/search-select.d.ts.map +1 -1
- package/dist/tailwind.cjs +199 -2
- package/dist/tailwind.cjs.map +1 -1
- package/dist/tailwind.js +198 -1
- package/dist/tailwind.js.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -2
- package/package.json +24 -22
- package/src/dashboard/ChartWidget.tsx +8 -65
- package/src/dashboard/ChartWidgetInner.tsx +83 -0
- package/src/dashboard/OnboardingWidget.tsx +32 -1
- package/src/dashboard/icon.ts +2 -2
- package/src/icons.ts +66 -0
- package/src/index.ts +4 -0
- package/src/layout/Sidebar.tsx +70 -136
- package/src/primitives/date-picker.tsx +30 -4
- package/src/primitives/search-select.tsx +12 -4
- package/src/theme/index.ts +9 -6
- package/dist/chunk-2GDQUARM.js.map +0 -1
- package/dist/chunk-2P7T6QQK.cjs +0 -206
- package/dist/chunk-2P7T6QQK.cjs.map +0 -1
- package/dist/chunk-A7O7KGNL.js.map +0 -1
- package/dist/chunk-BVF2KPTT.js.map +0 -1
- package/dist/chunk-H6OULCHF.cjs +0 -81
- package/dist/chunk-H6OULCHF.cjs.map +0 -1
- package/dist/chunk-ID2HQK2Q.js.map +0 -1
- package/dist/chunk-IWBXYV4U.js +0 -203
- package/dist/chunk-IWBXYV4U.js.map +0 -1
- package/dist/chunk-MI6FOB4O.cjs +0 -351
- package/dist/chunk-MI6FOB4O.cjs.map +0 -1
- package/dist/chunk-O5F4LLSL.js.map +0 -1
- package/dist/chunk-OW73RZOU.cjs +0 -313
- package/dist/chunk-OW73RZOU.cjs.map +0 -1
- package/dist/chunk-SVVKUMSL.cjs +0 -1733
- package/dist/chunk-SVVKUMSL.cjs.map +0 -1
- package/dist/chunk-TDGSY5W6.cjs +0 -474
- package/dist/chunk-TDGSY5W6.cjs.map +0 -1
- package/dist/chunk-WF3STNDX.cjs +0 -682
- package/dist/chunk-WF3STNDX.cjs.map +0 -1
- package/dist/chunk-XIRJGVDK.cjs +0 -1826
- package/dist/chunk-XIRJGVDK.cjs.map +0 -1
- package/dist/dashboard/index.cjs +0 -106
- package/dist/dashboard/index.cjs.map +0 -1
- package/dist/index.cjs +0 -650
- package/dist/index.cjs.map +0 -1
- package/dist/layout/index.cjs +0 -98
- package/dist/layout/index.cjs.map +0 -1
- package/dist/primitives/index.cjs +0 -363
- package/dist/primitives/index.cjs.map +0 -1
- package/dist/theme/index.cjs +0 -41
- package/dist/theme/index.cjs.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ResponsiveContainer, PieChart, Tooltip, Pie, Cell, Legend, BarChart, CartesianGrid, XAxis, YAxis, Bar, AreaChart, Area, LineChart, Line } from 'recharts';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/dashboard/ChartWidgetInner.tsx
|
|
5
|
+
var PALETTE = [
|
|
6
|
+
"hsl(var(--info))",
|
|
7
|
+
"hsl(var(--magic))",
|
|
8
|
+
"hsl(var(--success))",
|
|
9
|
+
"hsl(var(--warning))",
|
|
10
|
+
"hsl(var(--destructive))"
|
|
11
|
+
];
|
|
12
|
+
var AXIS = "hsl(var(--muted-foreground))";
|
|
13
|
+
var GRID = "hsl(var(--border))";
|
|
14
|
+
function ChartWidgetInner({ type, data, series, categoryKey, height }) {
|
|
15
|
+
const color = (i, explicit) => explicit ?? PALETTE[i % PALETTE.length];
|
|
16
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: type === "pie" ? /* @__PURE__ */ jsxs(PieChart, { children: [
|
|
17
|
+
/* @__PURE__ */ jsx(Tooltip, {}),
|
|
18
|
+
/* @__PURE__ */ jsx(Pie, { data, dataKey: series[0]?.dataKey ?? "value", nameKey: categoryKey, innerRadius: 50, outerRadius: 80, paddingAngle: 2, children: data.map((_, i) => /* @__PURE__ */ jsx(Cell, { fill: color(i, series[0]?.color) }, i)) }),
|
|
19
|
+
/* @__PURE__ */ jsx(Legend, {})
|
|
20
|
+
] }) : type === "bar" ? /* @__PURE__ */ jsxs(BarChart, { data, children: [
|
|
21
|
+
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: GRID, vertical: false }),
|
|
22
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: categoryKey, stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false }),
|
|
23
|
+
/* @__PURE__ */ jsx(YAxis, { stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false, width: 36 }),
|
|
24
|
+
/* @__PURE__ */ jsx(Tooltip, { cursor: { fill: GRID, opacity: 0.3 } }),
|
|
25
|
+
series.length > 1 && /* @__PURE__ */ jsx(Legend, {}),
|
|
26
|
+
series.map((s, i) => /* @__PURE__ */ jsx(Bar, { dataKey: s.dataKey, name: s.label ?? s.dataKey, fill: color(i, s.color), radius: [4, 4, 0, 0] }, s.dataKey))
|
|
27
|
+
] }) : type === "area" ? /* @__PURE__ */ jsxs(AreaChart, { data, children: [
|
|
28
|
+
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: GRID, vertical: false }),
|
|
29
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: categoryKey, stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false }),
|
|
30
|
+
/* @__PURE__ */ jsx(YAxis, { stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false, width: 36 }),
|
|
31
|
+
/* @__PURE__ */ jsx(Tooltip, {}),
|
|
32
|
+
series.length > 1 && /* @__PURE__ */ jsx(Legend, {}),
|
|
33
|
+
series.map((s, i) => /* @__PURE__ */ jsx(Area, { dataKey: s.dataKey, name: s.label ?? s.dataKey, stroke: color(i, s.color), fill: color(i, s.color), fillOpacity: 0.15 }, s.dataKey))
|
|
34
|
+
] }) : /* @__PURE__ */ jsxs(LineChart, { data, children: [
|
|
35
|
+
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: GRID, vertical: false }),
|
|
36
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: categoryKey, stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false }),
|
|
37
|
+
/* @__PURE__ */ jsx(YAxis, { stroke: AXIS, fontSize: 12, tickLine: false, axisLine: false, width: 36 }),
|
|
38
|
+
/* @__PURE__ */ jsx(Tooltip, {}),
|
|
39
|
+
series.length > 1 && /* @__PURE__ */ jsx(Legend, {}),
|
|
40
|
+
series.map((s, i) => /* @__PURE__ */ jsx(Line, { dataKey: s.dataKey, name: s.label ?? s.dataKey, stroke: color(i, s.color), strokeWidth: 2, dot: false }, s.dataKey))
|
|
41
|
+
] }) });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { ChartWidgetInner as default };
|
|
45
|
+
//# sourceMappingURL=ChartWidgetInner-GDE5PBTR.js.map
|
|
46
|
+
//# sourceMappingURL=ChartWidgetInner-GDE5PBTR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dashboard/ChartWidgetInner.tsx"],"names":[],"mappings":"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","file":"ChartWidgetInner-GDE5PBTR.js","sourcesContent":["import * as React from 'react'\nimport {\n ResponsiveContainer,\n LineChart, Line,\n BarChart, Bar,\n AreaChart, Area,\n PieChart, Pie, Cell,\n XAxis, YAxis, CartesianGrid, Tooltip, Legend,\n} from 'recharts'\nimport type { ChartSeries, ChartType } from './types'\n\n/** Theme-driven palette (HSL triplet CSS vars defined in styles.css). */\nconst PALETTE = [\n 'hsl(var(--info))',\n 'hsl(var(--magic))',\n 'hsl(var(--success))',\n 'hsl(var(--warning))',\n 'hsl(var(--destructive))',\n]\nconst AXIS = 'hsl(var(--muted-foreground))'\nconst GRID = 'hsl(var(--border))'\n\nexport interface ChartWidgetInnerProps {\n type: ChartType\n data: Array<Record<string, string | number>>\n series: ChartSeries[]\n categoryKey: string\n height: number\n}\n\n// recharts-backed chart body. Default export + own module so ChartWidget can\n// React.lazy it — recharts (~400 KB min) then lives in an async chunk instead\n// of every consumer's entry bundle.\nexport default function ChartWidgetInner({ type, data, series, categoryKey, height }: ChartWidgetInnerProps) {\n const color = (i: number, explicit?: string) => explicit ?? PALETTE[i % PALETTE.length]\n\n return (\n <ResponsiveContainer width=\"100%\" height={height}>\n {type === 'pie' ? (\n <PieChart>\n <Tooltip />\n <Pie data={data} dataKey={series[0]?.dataKey ?? 'value'} nameKey={categoryKey} innerRadius={50} outerRadius={80} paddingAngle={2}>\n {data.map((_, i) => <Cell key={i} fill={color(i, series[0]?.color)} />)}\n </Pie>\n <Legend />\n </PieChart>\n ) : type === 'bar' ? (\n <BarChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip cursor={{ fill: GRID, opacity: 0.3 }} />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Bar key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} fill={color(i, s.color)} radius={[4, 4, 0, 0]} />\n ))}\n </BarChart>\n ) : type === 'area' ? (\n <AreaChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Area key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} stroke={color(i, s.color)} fill={color(i, s.color)} fillOpacity={0.15} />\n ))}\n </AreaChart>\n ) : (\n <LineChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" stroke={GRID} vertical={false} />\n <XAxis dataKey={categoryKey} stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} />\n <YAxis stroke={AXIS} fontSize={12} tickLine={false} axisLine={false} width={36} />\n <Tooltip />\n {series.length > 1 && <Legend />}\n {series.map((s, i) => (\n <Line key={s.dataKey} dataKey={s.dataKey} name={s.label ?? s.dataKey} stroke={color(i, s.color)} strokeWidth={2} dot={false} />\n ))}\n </LineChart>\n )}\n </ResponsiveContainer>\n )\n}\n"]}
|
|
@@ -255,6 +255,33 @@ function DataTable({
|
|
|
255
255
|
)) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: columns.length, className: "h-24 text-center text-muted-foreground", children: emptyMessage }) }) })
|
|
256
256
|
] }) }) });
|
|
257
257
|
}
|
|
258
|
+
function Skeleton({
|
|
259
|
+
className,
|
|
260
|
+
...props
|
|
261
|
+
}) {
|
|
262
|
+
return /* @__PURE__ */ jsx(
|
|
263
|
+
"div",
|
|
264
|
+
{
|
|
265
|
+
className: cn("animate-pulse rounded-md bg-muted", className),
|
|
266
|
+
...props
|
|
267
|
+
}
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
function TableSkeleton({ columns = 4, rows = 2 }) {
|
|
271
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-lg border overflow-hidden", children: [
|
|
272
|
+
/* @__PURE__ */ jsx("div", { className: "border-b bg-muted/30 flex gap-4 px-4 py-2.5", children: Array.from({ length: columns }).map((_, i) => /* @__PURE__ */ jsx(Skeleton, { className: "h-3 flex-1 rounded bg-muted-foreground/10" }, i)) }),
|
|
273
|
+
/* @__PURE__ */ jsx("div", { className: "divide-y", children: Array.from({ length: rows }).map((_, r) => /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4 px-4 py-3.5", children: Array.from({ length: columns }).map((_2, c) => /* @__PURE__ */ jsx(
|
|
274
|
+
Skeleton,
|
|
275
|
+
{
|
|
276
|
+
className: cn(
|
|
277
|
+
"h-3 rounded",
|
|
278
|
+
c === 0 ? "flex-[2]" : "flex-1"
|
|
279
|
+
)
|
|
280
|
+
},
|
|
281
|
+
c
|
|
282
|
+
)) }, r)) })
|
|
283
|
+
] });
|
|
284
|
+
}
|
|
258
285
|
var SIZE = {
|
|
259
286
|
sm: { container: "h-[26px]", segment: "px-2.5 text-xs" },
|
|
260
287
|
md: { container: "h-[30px]", segment: "px-3 text-sm" }
|
|
@@ -301,6 +328,6 @@ function SegmentedControl({
|
|
|
301
328
|
);
|
|
302
329
|
}
|
|
303
330
|
|
|
304
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DataTable, Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, SegmentedControl };
|
|
305
|
-
//# sourceMappingURL=chunk-
|
|
306
|
-
//# sourceMappingURL=chunk-
|
|
331
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, DataTable, Dropdown, DropdownCheckboxItem, DropdownContent, DropdownGroup, DropdownItem, DropdownLabel, DropdownPortal, DropdownRadioGroup, DropdownRadioItem, DropdownSeparator, DropdownShortcut, DropdownSub, DropdownSubContent, DropdownSubTrigger, DropdownTrigger, SegmentedControl, Skeleton, TableSkeleton };
|
|
332
|
+
//# sourceMappingURL=chunk-G6OKZ7WL.js.map
|
|
333
|
+
//# sourceMappingURL=chunk-G6OKZ7WL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/card.tsx","../src/primitives/dropdown.tsx","../src/primitives/data-table.tsx","../src/primitives/skeleton.tsx","../src/primitives/segmented-control.tsx"],"names":["React","jsx","React3","jsxs","_"],"mappings":"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","file":"chunk-G6OKZ7WL.js","sourcesContent":["import * as React from 'react'\n\nimport { cn } from '../utils/cn'\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'fayz-glass-surface rounded-card border bg-card text-card-foreground shadow-sm',\n className\n )}\n {...props}\n />\n))\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col space-y-1 p-4', className)}\n {...props}\n />\n))\nCardHeader.displayName = 'CardHeader'\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n 'text-sm font-semibold leading-tight tracking-tight',\n className\n )}\n {...props}\n />\n))\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-xs text-muted-foreground', className)}\n {...props}\n />\n))\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-4 pt-0', className)} {...props} />\n))\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center p-4 pt-0', className)}\n {...props}\n />\n))\nCardFooter.displayName = 'CardFooter'\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\n\nconst Dropdown = DropdownMenuPrimitive.Root\n\nconst DropdownTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownGroup = DropdownMenuPrimitive.Group\n\nconst DropdownPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownSub = DropdownMenuPrimitive.Sub\n\nconst DropdownRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-default select-none items-center rounded-button px-2 py-1.5 text-sm outline-none focus:bg-muted data-[state=open]:bg-muted',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'fayz-glass-surface z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n))\nDropdownSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'fayz-glass-surface z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-button px-2 py-1.5 text-sm outline-none transition-colors focus:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-button py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-button py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\n {...props}\n />\n))\nDropdownSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest opacity-60', className)}\n {...props}\n />\n )\n}\nDropdownShortcut.displayName = 'DropdownShortcut'\n\nexport {\n Dropdown,\n DropdownTrigger,\n DropdownContent,\n DropdownItem,\n DropdownCheckboxItem,\n DropdownRadioItem,\n DropdownLabel,\n DropdownSeparator,\n DropdownShortcut,\n DropdownGroup,\n DropdownPortal,\n DropdownSub,\n DropdownSubContent,\n DropdownSubTrigger,\n DropdownRadioGroup,\n}\n","import * as React from 'react'\nimport {\n type ColumnDef,\n type SortingState,\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table'\nimport { ArrowUpDown, ArrowUp, ArrowDown } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n loading?: boolean\n skeletonRows?: number\n emptyMessage?: string\n onRowClick?: (row: TData) => void\n /** Visual variant: 'card' (white bg, card wrapper — default) or 'flat' (transparent bg) */\n variant?: 'card' | 'flat'\n /** Compact mode: smaller padding and font size */\n compact?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n loading = false,\n skeletonRows = 3,\n emptyMessage = 'No results.',\n onRowClick,\n variant = 'card',\n compact = false,\n}: DataTableProps<TData, TValue>) {\n const isCard = variant === 'card'\n // Rounded box and scroll container must be SEPARATE elements: a scroll\n // container paints its content over its own border-radius, which squared\n // the corners the moment a row background met them.\n const wrapperCls = isCard\n ? 'overflow-hidden rounded-lg border bg-card shadow-sm'\n : 'overflow-hidden rounded-lg border'\n const headerCls = isCard ? 'border-b bg-muted/50' : 'border-b bg-muted/30'\n const thCls = compact ? 'px-3 py-1.5 text-left text-[11px] font-medium text-muted-foreground' : 'px-4 py-2.5 text-left font-medium text-muted-foreground'\n const tdCls = compact ? 'px-3 py-1.5 align-middle text-xs' : 'px-4 py-3 align-middle'\n const tableCls = compact ? 'w-full text-xs min-w-max' : 'w-full text-sm min-w-max'\n const rowHoverCls = isCard ? 'hover:bg-muted/30' : 'hover:bg-muted/20'\n const [sorting, setSorting] = React.useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onSortingChange: setSorting,\n state: { sorting },\n })\n\n if (loading) {\n return (\n <div className={wrapperCls}>\n <div className=\"overflow-x-auto\">\n <table className={tableCls}>\n <thead>\n <tr className={headerCls}>\n {columns.map((_, i) => (\n <th key={i} className={thCls}>\n <div className=\"h-3.5 w-20 animate-pulse rounded bg-muted\" />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: skeletonRows }).map((_, i) => (\n <tr key={i} className=\"border-b last:border-0\">\n {columns.map((_, j) => (\n <td key={j} className={tdCls}>\n <div className=\"h-3.5 w-full animate-pulse rounded bg-muted\" />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )\n }\n\n return (\n <div className={wrapperCls}>\n <div className=\"overflow-x-auto\">\n <table className={tableCls}>\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id} className={headerCls}>\n {headerGroup.headers.map((header) => {\n const sorted = header.column.getIsSorted()\n return (\n <th\n key={header.id}\n className={thCls}\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n className=\"flex items-center gap-1 hover:text-foreground transition-colors\"\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sorted === 'asc' ? (\n <ArrowUp className=\"h-3 w-3\" />\n ) : sorted === 'desc' ? (\n <ArrowDown className=\"h-3 w-3\" />\n ) : (\n <ArrowUpDown className=\"h-3 w-3 opacity-40\" />\n )}\n </button>\n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n </th>\n )\n })}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n className={cn(\n `border-b last:border-0 transition-colors ${rowHoverCls}`,\n onRowClick && 'cursor-pointer'\n )}\n onClick={() => onRowClick?.(row.original)}\n >\n {row.getVisibleCells().map((cell) => (\n <td key={cell.id} className={tdCls}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n {emptyMessage}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n )\n}\n\nexport { DataTable, type DataTableProps }\n","import { cn } from '../utils/cn'\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn('animate-pulse rounded-md bg-muted', className)}\n {...props}\n />\n )\n}\n\n/**\n * Skeleton loader that mimics a table with rows and columns.\n * Drop-in replacement for \"Loading...\" text in list views.\n */\nfunction TableSkeleton({ columns = 4, rows = 2 }: { columns?: number; rows?: number }) {\n return (\n <div className=\"rounded-lg border overflow-hidden\">\n <div className=\"border-b bg-muted/30 flex gap-4 px-4 py-2.5\">\n {Array.from({ length: columns }).map((_, i) => (\n <Skeleton key={i} className=\"h-3 flex-1 rounded bg-muted-foreground/10\" />\n ))}\n </div>\n <div className=\"divide-y\">\n {Array.from({ length: rows }).map((_, r) => (\n <div key={r} className=\"flex items-center gap-4 px-4 py-3.5\">\n {Array.from({ length: columns }).map((_, c) => (\n <Skeleton\n key={c}\n className={cn(\n 'h-3 rounded',\n c === 0 ? 'flex-[2]' : 'flex-1',\n )}\n />\n ))}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport { Skeleton, TableSkeleton }\n","import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport interface SegmentedOption<T extends string = string> {\n value: T\n label: React.ReactNode\n}\n\nexport interface SegmentedControlProps<T extends string = string> {\n /** Options as plain values (label = value) or `{ value, label }` objects. */\n options: ReadonlyArray<T | SegmentedOption<T>>\n value: T\n onChange: (value: T) => void\n /** Matches the equivalent Button heights: sm = 26px, md = 30px. */\n size?: 'sm' | 'md'\n className?: string\n 'aria-label'?: string\n}\n\nconst SIZE: Record<'sm' | 'md', { container: string; segment: string }> = {\n sm: { container: 'h-[26px]', segment: 'px-2.5 text-xs' },\n md: { container: 'h-[30px]', segment: 'px-3 text-sm' },\n}\n\n/**\n * Canonical segmented (pill) control — same chrome as Button (rounded-button\n * radius, hairline border + shadow-button bevel on a card surface). Use this for\n * any 7d/30d/90d-style toggle so every surface stays visually consistent instead\n * of hand-rolling a styled toggle group.\n */\nexport function SegmentedControl<T extends string = string>({\n options, value, onChange, size = 'sm', className, ...rest\n}: SegmentedControlProps<T>) {\n const items = options.map((o) => (typeof o === 'string' ? { value: o, label: o } : o)) as SegmentedOption<T>[]\n return (\n <div\n role=\"tablist\"\n aria-label={rest['aria-label']}\n className={cn(\n 'inline-flex items-center rounded-button border border-border bg-card p-0.5 shadow-button',\n SIZE[size].container,\n className,\n )}\n >\n {items.map((item) => {\n const active = item.value === value\n return (\n <button\n key={item.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onChange(item.value)}\n className={cn(\n 'flex h-full items-center rounded-button font-semibold transition-colors',\n SIZE[size].segment,\n active ? 'bg-foreground text-background' : 'text-muted-foreground hover:bg-muted/60',\n )}\n >\n {item.label}\n </button>\n )\n })}\n </div>\n )\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useCrossModuleBack, useBackHandler, Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetBody, SaveBarProvider, SaveBar } from './chunk-75EFDLST.js';
|
|
2
2
|
import { cn, Button } from './chunk-YRVE4FOD.js';
|
|
3
|
+
import { ICON_MAP } from './chunk-PVIB724L.js';
|
|
3
4
|
import * as React3 from 'react';
|
|
4
|
-
import {
|
|
5
|
+
import { PanelLeftClose, PanelLeft, Search, Bell, Menu, Crown, ChevronRight, ChevronLeft, PanelRightOpen, PanelRightClose, PanelRight, Repeat, GraduationCap, Newspaper, Clapperboard, Zap, Star, UserCheck, Inbox, Clock3, Ban, Map, ListPlus, CalendarX, CalendarCheck2, Mic, UsersRound, Disc3, ListMusic, Eye, Music, Layers, Banknote, BadgeDollarSign, CalendarDays, Radio, PartyPopper, FileCheck2, Box, Boxes, TreePalm, UserX, UserPlus, ArrowDownRight, ArrowUpRight, Ruler, Warehouse, Wallet, Sparkles, AlertTriangle, Clock, CircleDollarSign, TrendingUp, Receipt, Landmark, TableProperties, SlidersHorizontal, Plug, ArrowLeftRight, ArrowUpCircle, ArrowDownCircle, Wheat, Egg, Apple, LeafyGreen, LayoutTemplate, Heart, PawPrint, Cat, Dog, FolderOpen, ListChecks, List, Shield, Plus, Filter, ChevronDown, Building2, Contact, Handshake, MapPin, UtensilsCrossed, Camera, Tags, Tag, Percent, BookOpenCheck, Globe, MessageCircle, BookOpen, UserCog, Briefcase, ClipboardCheck, ClipboardList, Wrench, Target, ShoppingBag, ShoppingCart, Megaphone, DollarSign, Mail, FileText, BarChart3, Activity, Package, CalendarClock, Calendar, CreditCard, Settings, Users, Home, ExternalLink, PiggyBank, LogOut } from 'lucide-react';
|
|
5
6
|
import * as Tooltip from '@radix-ui/react-tooltip';
|
|
6
7
|
import { create } from 'zustand';
|
|
7
8
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
@@ -19,100 +20,6 @@ var useLayoutStore = create((set) => ({
|
|
|
19
20
|
toggleMobileDrawer: () => set((state) => ({ mobileDrawerOpen: !state.mobileDrawerOpen })),
|
|
20
21
|
setCommandPaletteOpen: (open) => set({ commandPaletteOpen: open })
|
|
21
22
|
}));
|
|
22
|
-
var ICON_MAP = {
|
|
23
|
-
Home,
|
|
24
|
-
Users,
|
|
25
|
-
Settings,
|
|
26
|
-
CreditCard,
|
|
27
|
-
Bell,
|
|
28
|
-
Calendar,
|
|
29
|
-
CalendarClock,
|
|
30
|
-
Package,
|
|
31
|
-
Activity,
|
|
32
|
-
BarChart3,
|
|
33
|
-
FileText,
|
|
34
|
-
Mail,
|
|
35
|
-
DollarSign,
|
|
36
|
-
Megaphone,
|
|
37
|
-
ShoppingCart,
|
|
38
|
-
Target,
|
|
39
|
-
Wrench,
|
|
40
|
-
Receipt,
|
|
41
|
-
ShoppingBag,
|
|
42
|
-
ClipboardList,
|
|
43
|
-
ListChecks,
|
|
44
|
-
Briefcase,
|
|
45
|
-
UserCog,
|
|
46
|
-
BookOpen,
|
|
47
|
-
BookOpenCheck,
|
|
48
|
-
MessageCircle,
|
|
49
|
-
Globe,
|
|
50
|
-
Percent,
|
|
51
|
-
Tag,
|
|
52
|
-
Tags,
|
|
53
|
-
Camera,
|
|
54
|
-
UtensilsCrossed,
|
|
55
|
-
MapPin,
|
|
56
|
-
Map,
|
|
57
|
-
Handshake,
|
|
58
|
-
Contact,
|
|
59
|
-
Building2,
|
|
60
|
-
Filter,
|
|
61
|
-
Plus,
|
|
62
|
-
List,
|
|
63
|
-
ListPlus,
|
|
64
|
-
Search,
|
|
65
|
-
Shield,
|
|
66
|
-
Ban,
|
|
67
|
-
Clock,
|
|
68
|
-
Dog,
|
|
69
|
-
Cat,
|
|
70
|
-
PawPrint,
|
|
71
|
-
Heart,
|
|
72
|
-
FolderOpen,
|
|
73
|
-
LayoutTemplate,
|
|
74
|
-
LeafyGreen,
|
|
75
|
-
Apple,
|
|
76
|
-
Egg,
|
|
77
|
-
Wheat,
|
|
78
|
-
PartyPopper,
|
|
79
|
-
Radio,
|
|
80
|
-
CalendarDays,
|
|
81
|
-
CalendarCheck2,
|
|
82
|
-
CalendarX,
|
|
83
|
-
BadgeDollarSign,
|
|
84
|
-
Banknote,
|
|
85
|
-
Landmark,
|
|
86
|
-
CircleDollarSign,
|
|
87
|
-
Layers,
|
|
88
|
-
Music,
|
|
89
|
-
Eye,
|
|
90
|
-
ListMusic,
|
|
91
|
-
Disc3,
|
|
92
|
-
UsersRound,
|
|
93
|
-
Mic,
|
|
94
|
-
Zap,
|
|
95
|
-
Award,
|
|
96
|
-
LayoutDashboard,
|
|
97
|
-
MessageSquare,
|
|
98
|
-
Inbox,
|
|
99
|
-
Star,
|
|
100
|
-
TrendingUp,
|
|
101
|
-
UserCheck,
|
|
102
|
-
UserPlus,
|
|
103
|
-
UserX,
|
|
104
|
-
Workflow,
|
|
105
|
-
Boxes,
|
|
106
|
-
Clock3,
|
|
107
|
-
FileCheck2,
|
|
108
|
-
GraduationCap,
|
|
109
|
-
Repeat,
|
|
110
|
-
User,
|
|
111
|
-
Palette,
|
|
112
|
-
ShieldCheck,
|
|
113
|
-
SlidersHorizontal,
|
|
114
|
-
Puzzle
|
|
115
|
-
};
|
|
116
23
|
var RAIL_PUSH_MS = 260;
|
|
117
24
|
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React3.useLayoutEffect : React3.useEffect;
|
|
118
25
|
function getIcon(name) {
|
|
@@ -125,26 +32,23 @@ function NavItem({
|
|
|
125
32
|
onNavigate
|
|
126
33
|
}) {
|
|
127
34
|
const Icon = getIcon(item.icon);
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground",
|
|
135
|
-
isActive ? "bg-sidebar-accent font-semibold text-sidebar-accent-foreground shadow-sm" : "text-sidebar-foreground/80",
|
|
136
|
-
collapsed && "justify-center px-2"
|
|
137
|
-
),
|
|
138
|
-
children: [
|
|
139
|
-
/* @__PURE__ */ jsx(Icon, { className: "h-4 w-4 shrink-0" }),
|
|
140
|
-
!collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
141
|
-
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-left", children: item.label }),
|
|
142
|
-
item.premium && /* @__PURE__ */ jsx(Crown, { className: "ml-auto h-3.5 w-3.5 shrink-0 text-amber-500", "aria-hidden": true }),
|
|
143
|
-
item.badge !== void 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto rounded-full bg-primary px-2 py-0.5 text-xs font-semibold text-primary-foreground", children: item.badge })
|
|
144
|
-
] })
|
|
145
|
-
]
|
|
146
|
-
}
|
|
35
|
+
const isExternal = !!item.href;
|
|
36
|
+
const className = cn(
|
|
37
|
+
"flex w-full items-center gap-3 rounded-md px-2.5 py-1.5 text-[13px] font-medium transition-colors",
|
|
38
|
+
"hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground",
|
|
39
|
+
isActive ? "bg-sidebar-accent font-semibold text-sidebar-accent-foreground shadow-sm" : "text-sidebar-foreground/80",
|
|
40
|
+
collapsed && "justify-center px-2"
|
|
147
41
|
);
|
|
42
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
43
|
+
/* @__PURE__ */ jsx(Icon, { className: "h-4 w-4 shrink-0" }),
|
|
44
|
+
!collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-left", children: item.label }),
|
|
46
|
+
isExternal && /* @__PURE__ */ jsx(ExternalLink, { className: "ml-auto h-3.5 w-3.5 shrink-0 opacity-50", "aria-hidden": true }),
|
|
47
|
+
item.premium && /* @__PURE__ */ jsx(Crown, { className: cn("h-3.5 w-3.5 shrink-0 text-amber-500", !isExternal && "ml-auto"), "aria-hidden": true }),
|
|
48
|
+
item.badge !== void 0 && /* @__PURE__ */ jsx("span", { className: cn("rounded-full bg-primary px-2 py-0.5 text-xs font-semibold text-primary-foreground", !isExternal && !item.premium && "ml-auto"), children: item.badge })
|
|
49
|
+
] })
|
|
50
|
+
] });
|
|
51
|
+
const content = isExternal ? /* @__PURE__ */ jsx("a", { href: item.href, target: "_blank", rel: "noopener noreferrer", className, children: inner }) : /* @__PURE__ */ jsx("button", { onClick: () => onNavigate(item.route), className, children: inner });
|
|
148
52
|
if (collapsed) {
|
|
149
53
|
return /* @__PURE__ */ jsxs(Tooltip.Root, { delayDuration: 0, children: [
|
|
150
54
|
/* @__PURE__ */ jsx(Tooltip.Trigger, { asChild: true, children: content }),
|
|
@@ -237,21 +141,18 @@ function NavGroup({
|
|
|
237
141
|
open && /* @__PURE__ */ jsx("div", { className: "ml-4 mt-0.5 space-y-0.5 border-l border-sidebar-border/50 pl-3", children: item.children?.map((child) => {
|
|
238
142
|
const ChildIcon = getIcon(child.icon);
|
|
239
143
|
const isActive = child.route === activeRoute;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
className: cn(
|
|
245
|
-
"flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm transition-colors",
|
|
246
|
-
isActive ? "font-medium text-sidebar-accent-foreground" : "text-sidebar-muted hover:text-sidebar-accent-foreground"
|
|
247
|
-
),
|
|
248
|
-
children: [
|
|
249
|
-
/* @__PURE__ */ jsx(ChildIcon, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
250
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: child.label })
|
|
251
|
-
]
|
|
252
|
-
},
|
|
253
|
-
child.id
|
|
144
|
+
const childExternal = !!child.href;
|
|
145
|
+
const childClass = cn(
|
|
146
|
+
"flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm transition-colors",
|
|
147
|
+
isActive ? "font-medium text-sidebar-accent-foreground" : "text-sidebar-muted hover:text-sidebar-accent-foreground"
|
|
254
148
|
);
|
|
149
|
+
const childInner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
150
|
+
/* @__PURE__ */ jsx(ChildIcon, { className: "h-3.5 w-3.5 shrink-0" }),
|
|
151
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-left", children: child.label }),
|
|
152
|
+
childExternal && /* @__PURE__ */ jsx(ExternalLink, { className: "h-3 w-3 shrink-0 opacity-50", "aria-hidden": true }),
|
|
153
|
+
child.premium && /* @__PURE__ */ jsx(Crown, { className: "h-3 w-3 shrink-0 text-amber-500", "aria-hidden": true })
|
|
154
|
+
] });
|
|
155
|
+
return childExternal ? /* @__PURE__ */ jsx("a", { href: child.href, target: "_blank", rel: "noopener noreferrer", className: childClass, children: childInner }, child.id) : /* @__PURE__ */ jsx("button", { onClick: () => onNavigate(child.route), className: childClass, children: childInner }, child.id);
|
|
255
156
|
}) })
|
|
256
157
|
] });
|
|
257
158
|
}
|
|
@@ -295,7 +196,7 @@ function Sidebar({
|
|
|
295
196
|
item.id
|
|
296
197
|
);
|
|
297
198
|
const navBody = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
298
|
-
topContent && /* @__PURE__ */ jsx("div", { className: "mb-4 space-y-2", children: topContent }),
|
|
199
|
+
topContent && /* @__PURE__ */ jsx("div", { className: "mb-4 space-y-2", children: React3.isValidElement(topContent) ? React3.cloneElement(topContent, { collapsed }) : topContent }),
|
|
299
200
|
mainItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
300
201
|
sectionHeading(sectionLabels?.main),
|
|
301
202
|
mainItems.map(renderItem)
|
|
@@ -372,7 +273,9 @@ function Sidebar({
|
|
|
372
273
|
{
|
|
373
274
|
className: cn(
|
|
374
275
|
"relative flex-1 p-2",
|
|
375
|
-
|
|
276
|
+
// scrollbar-none: the rail still scrolls, but without the native
|
|
277
|
+
// scrollbar gutter eating into the nav items.
|
|
278
|
+
outgoing ? "overflow-hidden" : "overflow-y-auto scrollbar-none"
|
|
376
279
|
),
|
|
377
280
|
children: [
|
|
378
281
|
outgoing && /* @__PURE__ */ jsx(
|
|
@@ -535,68 +438,68 @@ function TopbarUserMenu({
|
|
|
535
438
|
}
|
|
536
439
|
var ICON_MAP2 = {
|
|
537
440
|
Home: Home,
|
|
538
|
-
Users
|
|
441
|
+
Users,
|
|
539
442
|
Settings: Settings,
|
|
540
|
-
CreditCard
|
|
443
|
+
CreditCard,
|
|
541
444
|
Bell: Bell,
|
|
542
|
-
Calendar
|
|
543
|
-
CalendarClock
|
|
544
|
-
Package
|
|
545
|
-
Activity
|
|
546
|
-
BarChart3
|
|
547
|
-
FileText
|
|
548
|
-
Mail
|
|
549
|
-
DollarSign
|
|
550
|
-
Megaphone
|
|
551
|
-
ShoppingCart
|
|
552
|
-
ShoppingBag
|
|
553
|
-
Target
|
|
554
|
-
Wrench
|
|
555
|
-
ClipboardList
|
|
445
|
+
Calendar,
|
|
446
|
+
CalendarClock,
|
|
447
|
+
Package,
|
|
448
|
+
Activity,
|
|
449
|
+
BarChart3,
|
|
450
|
+
FileText,
|
|
451
|
+
Mail,
|
|
452
|
+
DollarSign,
|
|
453
|
+
Megaphone,
|
|
454
|
+
ShoppingCart,
|
|
455
|
+
ShoppingBag,
|
|
456
|
+
Target,
|
|
457
|
+
Wrench,
|
|
458
|
+
ClipboardList,
|
|
556
459
|
ClipboardCheck,
|
|
557
|
-
Briefcase
|
|
558
|
-
UserCog
|
|
559
|
-
BookOpen
|
|
560
|
-
MessageCircle
|
|
561
|
-
Globe
|
|
562
|
-
BookOpenCheck
|
|
563
|
-
Percent
|
|
564
|
-
Tag
|
|
565
|
-
Tags
|
|
566
|
-
Camera
|
|
567
|
-
UtensilsCrossed
|
|
460
|
+
Briefcase,
|
|
461
|
+
UserCog,
|
|
462
|
+
BookOpen,
|
|
463
|
+
MessageCircle,
|
|
464
|
+
Globe,
|
|
465
|
+
BookOpenCheck,
|
|
466
|
+
Percent,
|
|
467
|
+
Tag,
|
|
468
|
+
Tags,
|
|
469
|
+
Camera,
|
|
470
|
+
UtensilsCrossed,
|
|
568
471
|
Search: Search,
|
|
569
|
-
MapPin
|
|
570
|
-
Handshake
|
|
571
|
-
Contact
|
|
572
|
-
Building2
|
|
472
|
+
MapPin,
|
|
473
|
+
Handshake,
|
|
474
|
+
Contact,
|
|
475
|
+
Building2,
|
|
573
476
|
ChevronDown: ChevronDown,
|
|
574
|
-
Filter
|
|
575
|
-
Plus
|
|
576
|
-
Shield
|
|
577
|
-
List
|
|
578
|
-
ListChecks
|
|
579
|
-
FolderOpen
|
|
580
|
-
Dog
|
|
581
|
-
Cat
|
|
582
|
-
PawPrint
|
|
583
|
-
Heart
|
|
584
|
-
LayoutTemplate
|
|
585
|
-
LeafyGreen
|
|
586
|
-
Apple
|
|
587
|
-
Egg
|
|
588
|
-
Wheat
|
|
477
|
+
Filter,
|
|
478
|
+
Plus,
|
|
479
|
+
Shield,
|
|
480
|
+
List,
|
|
481
|
+
ListChecks,
|
|
482
|
+
FolderOpen,
|
|
483
|
+
Dog,
|
|
484
|
+
Cat,
|
|
485
|
+
PawPrint,
|
|
486
|
+
Heart,
|
|
487
|
+
LayoutTemplate,
|
|
488
|
+
LeafyGreen,
|
|
489
|
+
Apple,
|
|
490
|
+
Egg,
|
|
491
|
+
Wheat,
|
|
589
492
|
ArrowDownCircle,
|
|
590
493
|
ArrowUpCircle,
|
|
591
494
|
ArrowLeftRight,
|
|
592
495
|
Plug,
|
|
593
|
-
SlidersHorizontal
|
|
496
|
+
SlidersHorizontal,
|
|
594
497
|
TableProperties,
|
|
595
|
-
Landmark
|
|
596
|
-
Receipt
|
|
597
|
-
TrendingUp
|
|
598
|
-
CircleDollarSign
|
|
599
|
-
Clock
|
|
498
|
+
Landmark,
|
|
499
|
+
Receipt,
|
|
500
|
+
TrendingUp,
|
|
501
|
+
CircleDollarSign,
|
|
502
|
+
Clock,
|
|
600
503
|
AlertTriangle,
|
|
601
504
|
Sparkles,
|
|
602
505
|
Wallet,
|
|
@@ -604,38 +507,38 @@ var ICON_MAP2 = {
|
|
|
604
507
|
Ruler,
|
|
605
508
|
ArrowUpRight,
|
|
606
509
|
ArrowDownRight,
|
|
607
|
-
UserPlus
|
|
608
|
-
UserX
|
|
510
|
+
UserPlus,
|
|
511
|
+
UserX,
|
|
609
512
|
TreePalm,
|
|
610
|
-
Boxes
|
|
513
|
+
Boxes,
|
|
611
514
|
Box,
|
|
612
|
-
FileCheck2
|
|
613
|
-
PartyPopper
|
|
614
|
-
Radio
|
|
615
|
-
CalendarDays
|
|
616
|
-
BadgeDollarSign
|
|
617
|
-
Banknote
|
|
618
|
-
Layers
|
|
619
|
-
Music
|
|
620
|
-
Eye
|
|
621
|
-
ListMusic
|
|
622
|
-
Disc3
|
|
623
|
-
UsersRound
|
|
624
|
-
Mic
|
|
625
|
-
CalendarCheck2
|
|
626
|
-
CalendarX
|
|
627
|
-
ListPlus
|
|
628
|
-
Map
|
|
629
|
-
Ban
|
|
630
|
-
Clock3
|
|
631
|
-
Inbox
|
|
632
|
-
UserCheck
|
|
633
|
-
Star
|
|
634
|
-
Zap
|
|
515
|
+
FileCheck2,
|
|
516
|
+
PartyPopper,
|
|
517
|
+
Radio,
|
|
518
|
+
CalendarDays,
|
|
519
|
+
BadgeDollarSign,
|
|
520
|
+
Banknote,
|
|
521
|
+
Layers,
|
|
522
|
+
Music,
|
|
523
|
+
Eye,
|
|
524
|
+
ListMusic,
|
|
525
|
+
Disc3,
|
|
526
|
+
UsersRound,
|
|
527
|
+
Mic,
|
|
528
|
+
CalendarCheck2,
|
|
529
|
+
CalendarX,
|
|
530
|
+
ListPlus,
|
|
531
|
+
Map,
|
|
532
|
+
Ban,
|
|
533
|
+
Clock3,
|
|
534
|
+
Inbox,
|
|
535
|
+
UserCheck,
|
|
536
|
+
Star,
|
|
537
|
+
Zap,
|
|
635
538
|
Clapperboard,
|
|
636
539
|
Newspaper,
|
|
637
|
-
GraduationCap
|
|
638
|
-
Repeat
|
|
540
|
+
GraduationCap,
|
|
541
|
+
Repeat
|
|
639
542
|
};
|
|
640
543
|
function getIcon2(name) {
|
|
641
544
|
return ICON_MAP2[name] ?? Home;
|
|
@@ -1779,6 +1682,6 @@ function ContentSplitTrigger({ label, iconOnly, className }) {
|
|
|
1779
1682
|
);
|
|
1780
1683
|
}
|
|
1781
1684
|
|
|
1782
|
-
export { AppShell, BackStyleProvider, ContentSplit, ContentSplitTrigger,
|
|
1783
|
-
//# sourceMappingURL=chunk-
|
|
1784
|
-
//# sourceMappingURL=chunk-
|
|
1685
|
+
export { AppShell, BackStyleProvider, ContentSplit, ContentSplitTrigger, ModuleLayoutProvider, ModulePage, NavTransitionProvider, PageHeaderActions, PageTransition, Sidebar, SubpageHeader, Topbar, useBackStyle, useLayoutStore, useModuleHeaderActionsSlot, useModuleHeaderSlot, useModuleLayout, useNavTransition };
|
|
1686
|
+
//# sourceMappingURL=chunk-KV3MHB6N.js.map
|
|
1687
|
+
//# sourceMappingURL=chunk-KV3MHB6N.js.map
|