@mastra/playground-ui 52.0.0 → 53.0.0-alpha.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.
- package/dist/{command-C2XK36se.cjs → command-CUev1UxH.cjs} +2 -2
- package/dist/{command-C2XK36se.cjs.map → command-CUev1UxH.cjs.map} +1 -1
- package/dist/{command-ehL7-lrV.js → command-DWFd0d4c.js} +2 -2
- package/dist/{command-ehL7-lrV.js.map → command-DWFd0d4c.js.map} +1 -1
- package/dist/components/Breadcrumb.cjs.js +1 -1
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +1 -1
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +2 -2
- package/dist/components/CommandPalette.es.js +2 -2
- package/dist/components/Composer.cjs.js +1 -1
- package/dist/components/Composer.es.js +1 -1
- package/dist/components/DataList.cjs.js +4 -4
- package/dist/components/DataList.es.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.cjs.js +12 -23
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +12 -23
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainSidebar.cjs.js +1 -1
- package/dist/components/MainSidebar.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/components/ThemeToggle.cjs.js +36 -10
- package/dist/components/ThemeToggle.cjs.js.map +1 -1
- package/dist/components/ThemeToggle.es.js +36 -10
- package/dist/components/ThemeToggle.es.js.map +1 -1
- package/dist/components/ThreadRail.cjs.js +1 -1
- package/dist/components/ThreadRail.es.js +1 -1
- package/dist/components/ai/task-list.cjs.js +1 -1
- package/dist/components/ai/task-list.es.js +1 -1
- package/dist/{data-list-CB-W-syo.cjs → data-list-B5Wicaoc.cjs} +7 -9
- package/dist/data-list-B5Wicaoc.cjs.map +1 -0
- package/dist/{data-list-DX6y3EFQ.js → data-list-BUK_v9ax.js} +7 -9
- package/dist/data-list-BUK_v9ax.js.map +1 -0
- package/dist/data-list-skeleton-BZR_Hkvj.cjs +38 -0
- package/dist/data-list-skeleton-BZR_Hkvj.cjs.map +1 -0
- package/dist/data-list-skeleton-BoaQlbOY.js +36 -0
- package/dist/data-list-skeleton-BoaQlbOY.js.map +1 -0
- package/dist/{data-list-top-cell-B4H5BBGd.cjs → data-list-top-cell-CIs1L8gy.cjs} +81 -99
- package/dist/data-list-top-cell-CIs1L8gy.cjs.map +1 -0
- package/dist/{data-list-top-cell-CDYczhpP.js → data-list-top-cell-D4-Hbz2H.js} +82 -99
- package/dist/data-list-top-cell-D4-Hbz2H.js.map +1 -0
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +3 -3
- package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/metrics-utils.cjs.js +1 -2
- package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-utils.es.js +1 -2
- package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +4 -4
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +4 -4
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/hooks/use-debounced-value.cjs.js +17 -0
- package/dist/hooks/use-debounced-value.cjs.js.map +1 -0
- package/dist/hooks/use-debounced-value.d.ts +2 -0
- package/dist/hooks/use-debounced-value.es.js +13 -0
- package/dist/hooks/use-debounced-value.es.js.map +1 -0
- package/dist/{horizontal-bars-CV2XRu4w.cjs → horizontal-bars-CE1O-Y6G.cjs} +2 -2
- package/dist/{horizontal-bars-CV2XRu4w.cjs.map → horizontal-bars-CE1O-Y6G.cjs.map} +1 -1
- package/dist/{horizontal-bars-3vH3FLj3.js → horizontal-bars-DZ5J4TKv.js} +2 -2
- package/dist/{horizontal-bars-3vH3FLj3.js.map → horizontal-bars-DZ5J4TKv.js.map} +1 -1
- package/dist/{logs-data-list-CTnwPG40.cjs → logs-data-list-PExVAYf3.cjs} +2 -2
- package/dist/{logs-data-list-CTnwPG40.cjs.map → logs-data-list-PExVAYf3.cjs.map} +1 -1
- package/dist/{logs-data-list-btJapa0s.js → logs-data-list-VCTqogr3.js} +2 -2
- package/dist/{logs-data-list-btJapa0s.js.map → logs-data-list-VCTqogr3.js.map} +1 -1
- package/dist/{no-data-page-layout-CkhD1Xwb.js → no-data-page-layout-BB6l1JBu.js} +2 -2
- package/dist/no-data-page-layout-BB6l1JBu.js.map +1 -0
- package/dist/{no-data-page-layout-CBJ50ULk.cjs → no-data-page-layout-DxgToazD.cjs} +2 -2
- package/dist/no-data-page-layout-DxgToazD.cjs.map +1 -0
- package/dist/{scroll-area-D_-TyC0c.cjs → scroll-area-B1vdOFuC.cjs} +5 -5
- package/dist/{scroll-area-D_-TyC0c.cjs.map → scroll-area-B1vdOFuC.cjs.map} +1 -1
- package/dist/{scroll-area-DVSQTnjk.js → scroll-area-BiHnOfzg.js} +5 -5
- package/dist/{scroll-area-DVSQTnjk.js.map → scroll-area-BiHnOfzg.js.map} +1 -1
- package/dist/src/domains/metrics/components/metrics-utils.d.ts +0 -1
- package/dist/src/ds/components/Card/Card.d.ts +2 -2
- package/dist/src/ds/components/DataList/data-list-root.d.ts +10 -17
- package/dist/src/ds/components/DataList/data-list-skeleton.d.ts +7 -2
- package/dist/src/ds/components/DataList/data-list.d.ts +1 -1
- package/dist/src/ds/components/DataList/data-list.stories.d.ts +15 -41
- package/dist/src/ds/components/DataList/shared.d.ts +19 -24
- package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-read-only-list.d.ts +1 -1
- package/dist/src/ds/components/LogsDataList/logs-data-list.stories.d.ts +0 -1
- package/dist/src/ds/components/ThemeToggle/theme-toggle.d.ts +25 -1
- package/dist/src/ds/components/ThemeToggle/theme-toggle.stories.d.ts +3 -0
- package/dist/src/hooks/use-debounced-value.d.ts +1 -0
- package/dist/style.css +113 -130
- package/dist/{traces-data-list-BeSOHzvZ.js → traces-data-list-BnK1mfZp.js} +3 -3
- package/dist/{traces-data-list-BeSOHzvZ.js.map → traces-data-list-BnK1mfZp.js.map} +1 -1
- package/dist/{traces-data-list-DwwFFIeq.cjs → traces-data-list-MX4shJfG.cjs} +3 -3
- package/dist/{traces-data-list-DwwFFIeq.cjs.map → traces-data-list-MX4shJfG.cjs.map} +1 -1
- package/package.json +7 -7
- package/dist/data-list-CB-W-syo.cjs.map +0 -1
- package/dist/data-list-DX6y3EFQ.js.map +0 -1
- package/dist/data-list-skeleton-C2R2CO9G.js +0 -34
- package/dist/data-list-skeleton-C2R2CO9G.js.map +0 -1
- package/dist/data-list-skeleton-hTX1b2Au.cjs +0 -36
- package/dist/data-list-skeleton-hTX1b2Au.cjs.map +0 -1
- package/dist/data-list-top-cell-B4H5BBGd.cjs.map +0 -1
- package/dist/data-list-top-cell-CDYczhpP.js.map +0 -1
- package/dist/no-data-page-layout-CBJ50ULk.cjs.map +0 -1
- package/dist/no-data-page-layout-CkhD1Xwb.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { N as NoDataPageLayout, P as PageLayout } from '../no-data-page-layout-
|
|
1
|
+
export { N as NoDataPageLayout, P as PageLayout } from '../no-data-page-layout-BB6l1JBu.js';
|
|
2
2
|
export { P as PageHeadingContext, u as usePageHeading } from '../page-heading-context-D3yjYoJE.js';
|
|
3
3
|
//# sourceMappingURL=PageLayout.es.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { S as ScrollArea, a as ScrollBar } from '../scroll-area-
|
|
1
|
+
export { S as ScrollArea, a as ScrollBar } from '../scroll-area-BiHnOfzg.js';
|
|
2
2
|
//# sourceMappingURL=ScrollArea.es.js.map
|
|
@@ -15,12 +15,34 @@ const DEFAULT_OPTIONS = [
|
|
|
15
15
|
{ value: "light", label: "Light", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, {}) },
|
|
16
16
|
{ value: "dark", label: "Dark", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, {}) }
|
|
17
17
|
];
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const SIZE_CONFIG = {
|
|
19
|
+
md: {
|
|
20
|
+
itemGap: 2,
|
|
21
|
+
itemWidth: 28,
|
|
22
|
+
root: "gap-0.5 p-0.5",
|
|
23
|
+
indicator: "inset-y-0.5 left-0.5",
|
|
24
|
+
item: "h-6 [&_svg]:size-3.5"
|
|
25
|
+
},
|
|
26
|
+
xs: {
|
|
27
|
+
itemGap: 1,
|
|
28
|
+
itemWidth: 20,
|
|
29
|
+
root: "gap-px p-px",
|
|
30
|
+
indicator: "inset-y-px left-px",
|
|
31
|
+
item: "h-4 [&_svg]:h-icon-sm [&_svg]:w-icon-sm"
|
|
32
|
+
},
|
|
33
|
+
sm: {
|
|
34
|
+
itemGap: 1,
|
|
35
|
+
itemWidth: 24,
|
|
36
|
+
root: "gap-px p-px",
|
|
37
|
+
indicator: "inset-y-px left-px",
|
|
38
|
+
item: "h-5 [&_svg]:h-icon-sm [&_svg]:w-icon-sm"
|
|
39
|
+
}
|
|
40
|
+
};
|
|
20
41
|
const ThemeToggle = ({
|
|
21
42
|
value,
|
|
22
43
|
onChange,
|
|
23
44
|
options = DEFAULT_OPTIONS,
|
|
45
|
+
size = "md",
|
|
24
46
|
className,
|
|
25
47
|
"aria-label": ariaLabel = "Theme",
|
|
26
48
|
...rest
|
|
@@ -37,7 +59,8 @@ const ThemeToggle = ({
|
|
|
37
59
|
0,
|
|
38
60
|
options.findIndex((option) => option.value === effectiveCurrent)
|
|
39
61
|
);
|
|
40
|
-
const
|
|
62
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
63
|
+
const indicatorOffset = activeIndex * (sizeConfig.itemWidth + sizeConfig.itemGap);
|
|
41
64
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42
65
|
radioGroup.RadioGroup,
|
|
43
66
|
{
|
|
@@ -46,7 +69,8 @@ const ThemeToggle = ({
|
|
|
46
69
|
onValueChange: handleChange,
|
|
47
70
|
"aria-label": ariaLabel,
|
|
48
71
|
className: utils_cn.cn(
|
|
49
|
-
"relative inline-flex w-fit items-center
|
|
72
|
+
"relative inline-flex w-fit items-center rounded-full border border-border1 bg-surface3",
|
|
73
|
+
sizeConfig.root,
|
|
50
74
|
className
|
|
51
75
|
),
|
|
52
76
|
children: [
|
|
@@ -55,10 +79,11 @@ const ThemeToggle = ({
|
|
|
55
79
|
{
|
|
56
80
|
"aria-hidden": "true",
|
|
57
81
|
className: utils_cn.cn(
|
|
58
|
-
"pointer-events-none absolute
|
|
59
|
-
primitives_transitions.transitions.transform
|
|
82
|
+
"pointer-events-none absolute rounded-full bg-surface5 motion-reduce:transition-none",
|
|
83
|
+
primitives_transitions.transitions.transform,
|
|
84
|
+
sizeConfig.indicator
|
|
60
85
|
),
|
|
61
|
-
style: { width:
|
|
86
|
+
style: { width: sizeConfig.itemWidth, transform: `translateX(${indicatorOffset}px)` }
|
|
62
87
|
}
|
|
63
88
|
),
|
|
64
89
|
options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -66,11 +91,12 @@ const ThemeToggle = ({
|
|
|
66
91
|
{
|
|
67
92
|
value: option.value,
|
|
68
93
|
"aria-label": option.label,
|
|
69
|
-
style: { width:
|
|
94
|
+
style: { width: sizeConfig.itemWidth },
|
|
70
95
|
className: utils_cn.cn(
|
|
71
|
-
"relative inline-flex
|
|
96
|
+
"relative inline-flex cursor-pointer items-center justify-center rounded-full",
|
|
72
97
|
// Base UI exposes `data-checked` instead of Radix's `data-state="checked"`.
|
|
73
|
-
"text-icon3 hover:text-icon6 data-[checked]:text-icon6
|
|
98
|
+
"text-icon3 hover:text-icon6 data-[checked]:text-icon6",
|
|
99
|
+
sizeConfig.item,
|
|
74
100
|
"focus-visible:outline-hidden",
|
|
75
101
|
"active:scale-90 motion-reduce:transition-none",
|
|
76
102
|
primitives_transitions.transitions.colors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.cjs.js","sources":["../../src/ds/components/ThemeToggle/theme-toggle.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Monitor, Moon, Sun } from 'lucide-react';\n\nimport { useTheme } from '../ThemeProvider';\nimport type { Theme } from '../ThemeProvider/theme-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface ThemeToggleOption {\n value: Theme;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_OPTIONS: ReadonlyArray<ThemeToggleOption> = [\n { value: 'system', label: 'System', icon: <Monitor /> },\n { value: 'light', label: 'Light', icon: <Sun /> },\n { value: 'dark', label: 'Dark', icon: <Moon /> },\n];\n\nconst
|
|
1
|
+
{"version":3,"file":"ThemeToggle.cjs.js","sources":["../../src/ds/components/ThemeToggle/theme-toggle.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Monitor, Moon, Sun } from 'lucide-react';\n\nimport { useTheme } from '../ThemeProvider';\nimport type { Theme } from '../ThemeProvider/theme-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface ThemeToggleOption {\n value: Theme;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_OPTIONS: ReadonlyArray<ThemeToggleOption> = [\n { value: 'system', label: 'System', icon: <Monitor /> },\n { value: 'light', label: 'Light', icon: <Sun /> },\n { value: 'dark', label: 'Dark', icon: <Moon /> },\n];\n\nconst SIZE_CONFIG = {\n md: {\n itemGap: 2,\n itemWidth: 28,\n root: 'gap-0.5 p-0.5',\n indicator: 'inset-y-0.5 left-0.5',\n item: 'h-6 [&_svg]:size-3.5',\n },\n xs: {\n itemGap: 1,\n itemWidth: 20,\n root: 'gap-px p-px',\n indicator: 'inset-y-px left-px',\n item: 'h-4 [&_svg]:h-icon-sm [&_svg]:w-icon-sm',\n },\n sm: {\n itemGap: 1,\n itemWidth: 24,\n root: 'gap-px p-px',\n indicator: 'inset-y-px left-px',\n item: 'h-5 [&_svg]:h-icon-sm [&_svg]:w-icon-sm',\n },\n} as const;\n\ntype RadioRootProps = Omit<\n RadioGroupPrimitive.Props,\n 'value' | 'onChange' | 'onValueChange' | 'defaultValue' | 'className'\n> & {\n className?: string;\n};\n\ntype ControlledProps = { value: Theme; onChange: (next: Theme) => void };\ntype UncontrolledProps = { value?: undefined; onChange?: undefined };\n\nexport type ThemeToggleProps = RadioRootProps & {\n options?: ReadonlyArray<ThemeToggleOption>;\n size?: keyof typeof SIZE_CONFIG;\n} & (ControlledProps | UncontrolledProps);\n\nexport const ThemeToggle = ({\n value,\n onChange,\n options = DEFAULT_OPTIONS,\n size = 'md',\n className,\n 'aria-label': ariaLabel = 'Theme',\n ...rest\n}: ThemeToggleProps) => {\n const { theme, setTheme } = useTheme();\n const current = value ?? theme;\n const commit = onChange ?? setTheme;\n const effectiveCurrent = options.some(option => option.value === current) ? current : (options[0]?.value ?? 'system');\n\n const handleChange = (next: unknown) => {\n const match = options.find(opt => opt.value === next);\n if (match) commit(match.value);\n };\n\n const activeIndex = Math.max(\n 0,\n options.findIndex(option => option.value === effectiveCurrent),\n );\n const sizeConfig = SIZE_CONFIG[size];\n const indicatorOffset = activeIndex * (sizeConfig.itemWidth + sizeConfig.itemGap);\n\n return (\n <RadioGroupPrimitive\n {...rest}\n value={effectiveCurrent}\n onValueChange={handleChange}\n aria-label={ariaLabel}\n className={cn(\n 'relative inline-flex w-fit items-center rounded-full border border-border1 bg-surface3',\n sizeConfig.root,\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute rounded-full bg-surface5 motion-reduce:transition-none',\n transitions.transform,\n sizeConfig.indicator,\n )}\n style={{ width: sizeConfig.itemWidth, transform: `translateX(${indicatorOffset}px)` }}\n />\n {options.map(option => (\n <RadioPrimitive.Root\n key={option.value}\n value={option.value}\n aria-label={option.label}\n style={{ width: sizeConfig.itemWidth }}\n className={cn(\n 'relative inline-flex cursor-pointer items-center justify-center rounded-full',\n // Base UI exposes `data-checked` instead of Radix's `data-state=\"checked\"`.\n 'text-icon3 hover:text-icon6 data-[checked]:text-icon6',\n sizeConfig.item,\n 'focus-visible:outline-hidden',\n 'active:scale-90 motion-reduce:transition-none',\n transitions.colors,\n transitions.transform,\n )}\n >\n <span aria-hidden=\"true\" className=\"pointer-events-none inline-flex items-center justify-center\">\n {option.icon}\n </span>\n </RadioPrimitive.Root>\n ))}\n </RadioGroupPrimitive>\n );\n};\n"],"names":["jsx","Monitor","Sun","Moon","useTheme","jsxs","RadioGroupPrimitive","cn","transitions","RadioPrimitive"],"mappings":"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"}
|
|
@@ -11,12 +11,34 @@ const DEFAULT_OPTIONS = [
|
|
|
11
11
|
{ value: "light", label: "Light", icon: /* @__PURE__ */ jsx(Sun, {}) },
|
|
12
12
|
{ value: "dark", label: "Dark", icon: /* @__PURE__ */ jsx(Moon, {}) }
|
|
13
13
|
];
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const SIZE_CONFIG = {
|
|
15
|
+
md: {
|
|
16
|
+
itemGap: 2,
|
|
17
|
+
itemWidth: 28,
|
|
18
|
+
root: "gap-0.5 p-0.5",
|
|
19
|
+
indicator: "inset-y-0.5 left-0.5",
|
|
20
|
+
item: "h-6 [&_svg]:size-3.5"
|
|
21
|
+
},
|
|
22
|
+
xs: {
|
|
23
|
+
itemGap: 1,
|
|
24
|
+
itemWidth: 20,
|
|
25
|
+
root: "gap-px p-px",
|
|
26
|
+
indicator: "inset-y-px left-px",
|
|
27
|
+
item: "h-4 [&_svg]:h-icon-sm [&_svg]:w-icon-sm"
|
|
28
|
+
},
|
|
29
|
+
sm: {
|
|
30
|
+
itemGap: 1,
|
|
31
|
+
itemWidth: 24,
|
|
32
|
+
root: "gap-px p-px",
|
|
33
|
+
indicator: "inset-y-px left-px",
|
|
34
|
+
item: "h-5 [&_svg]:h-icon-sm [&_svg]:w-icon-sm"
|
|
35
|
+
}
|
|
36
|
+
};
|
|
16
37
|
const ThemeToggle = ({
|
|
17
38
|
value,
|
|
18
39
|
onChange,
|
|
19
40
|
options = DEFAULT_OPTIONS,
|
|
41
|
+
size = "md",
|
|
20
42
|
className,
|
|
21
43
|
"aria-label": ariaLabel = "Theme",
|
|
22
44
|
...rest
|
|
@@ -33,7 +55,8 @@ const ThemeToggle = ({
|
|
|
33
55
|
0,
|
|
34
56
|
options.findIndex((option) => option.value === effectiveCurrent)
|
|
35
57
|
);
|
|
36
|
-
const
|
|
58
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
59
|
+
const indicatorOffset = activeIndex * (sizeConfig.itemWidth + sizeConfig.itemGap);
|
|
37
60
|
return /* @__PURE__ */ jsxs(
|
|
38
61
|
RadioGroup,
|
|
39
62
|
{
|
|
@@ -42,7 +65,8 @@ const ThemeToggle = ({
|
|
|
42
65
|
onValueChange: handleChange,
|
|
43
66
|
"aria-label": ariaLabel,
|
|
44
67
|
className: cn(
|
|
45
|
-
"relative inline-flex w-fit items-center
|
|
68
|
+
"relative inline-flex w-fit items-center rounded-full border border-border1 bg-surface3",
|
|
69
|
+
sizeConfig.root,
|
|
46
70
|
className
|
|
47
71
|
),
|
|
48
72
|
children: [
|
|
@@ -51,10 +75,11 @@ const ThemeToggle = ({
|
|
|
51
75
|
{
|
|
52
76
|
"aria-hidden": "true",
|
|
53
77
|
className: cn(
|
|
54
|
-
"pointer-events-none absolute
|
|
55
|
-
transitions.transform
|
|
78
|
+
"pointer-events-none absolute rounded-full bg-surface5 motion-reduce:transition-none",
|
|
79
|
+
transitions.transform,
|
|
80
|
+
sizeConfig.indicator
|
|
56
81
|
),
|
|
57
|
-
style: { width:
|
|
82
|
+
style: { width: sizeConfig.itemWidth, transform: `translateX(${indicatorOffset}px)` }
|
|
58
83
|
}
|
|
59
84
|
),
|
|
60
85
|
options.map((option) => /* @__PURE__ */ jsx(
|
|
@@ -62,11 +87,12 @@ const ThemeToggle = ({
|
|
|
62
87
|
{
|
|
63
88
|
value: option.value,
|
|
64
89
|
"aria-label": option.label,
|
|
65
|
-
style: { width:
|
|
90
|
+
style: { width: sizeConfig.itemWidth },
|
|
66
91
|
className: cn(
|
|
67
|
-
"relative inline-flex
|
|
92
|
+
"relative inline-flex cursor-pointer items-center justify-center rounded-full",
|
|
68
93
|
// Base UI exposes `data-checked` instead of Radix's `data-state="checked"`.
|
|
69
|
-
"text-icon3 hover:text-icon6 data-[checked]:text-icon6
|
|
94
|
+
"text-icon3 hover:text-icon6 data-[checked]:text-icon6",
|
|
95
|
+
sizeConfig.item,
|
|
70
96
|
"focus-visible:outline-hidden",
|
|
71
97
|
"active:scale-90 motion-reduce:transition-none",
|
|
72
98
|
transitions.colors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.es.js","sources":["../../src/ds/components/ThemeToggle/theme-toggle.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Monitor, Moon, Sun } from 'lucide-react';\n\nimport { useTheme } from '../ThemeProvider';\nimport type { Theme } from '../ThemeProvider/theme-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface ThemeToggleOption {\n value: Theme;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_OPTIONS: ReadonlyArray<ThemeToggleOption> = [\n { value: 'system', label: 'System', icon: <Monitor /> },\n { value: 'light', label: 'Light', icon: <Sun /> },\n { value: 'dark', label: 'Dark', icon: <Moon /> },\n];\n\nconst
|
|
1
|
+
{"version":3,"file":"ThemeToggle.es.js","sources":["../../src/ds/components/ThemeToggle/theme-toggle.tsx"],"sourcesContent":["import { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport { Monitor, Moon, Sun } from 'lucide-react';\n\nimport { useTheme } from '../ThemeProvider';\nimport type { Theme } from '../ThemeProvider/theme-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface ThemeToggleOption {\n value: Theme;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_OPTIONS: ReadonlyArray<ThemeToggleOption> = [\n { value: 'system', label: 'System', icon: <Monitor /> },\n { value: 'light', label: 'Light', icon: <Sun /> },\n { value: 'dark', label: 'Dark', icon: <Moon /> },\n];\n\nconst SIZE_CONFIG = {\n md: {\n itemGap: 2,\n itemWidth: 28,\n root: 'gap-0.5 p-0.5',\n indicator: 'inset-y-0.5 left-0.5',\n item: 'h-6 [&_svg]:size-3.5',\n },\n xs: {\n itemGap: 1,\n itemWidth: 20,\n root: 'gap-px p-px',\n indicator: 'inset-y-px left-px',\n item: 'h-4 [&_svg]:h-icon-sm [&_svg]:w-icon-sm',\n },\n sm: {\n itemGap: 1,\n itemWidth: 24,\n root: 'gap-px p-px',\n indicator: 'inset-y-px left-px',\n item: 'h-5 [&_svg]:h-icon-sm [&_svg]:w-icon-sm',\n },\n} as const;\n\ntype RadioRootProps = Omit<\n RadioGroupPrimitive.Props,\n 'value' | 'onChange' | 'onValueChange' | 'defaultValue' | 'className'\n> & {\n className?: string;\n};\n\ntype ControlledProps = { value: Theme; onChange: (next: Theme) => void };\ntype UncontrolledProps = { value?: undefined; onChange?: undefined };\n\nexport type ThemeToggleProps = RadioRootProps & {\n options?: ReadonlyArray<ThemeToggleOption>;\n size?: keyof typeof SIZE_CONFIG;\n} & (ControlledProps | UncontrolledProps);\n\nexport const ThemeToggle = ({\n value,\n onChange,\n options = DEFAULT_OPTIONS,\n size = 'md',\n className,\n 'aria-label': ariaLabel = 'Theme',\n ...rest\n}: ThemeToggleProps) => {\n const { theme, setTheme } = useTheme();\n const current = value ?? theme;\n const commit = onChange ?? setTheme;\n const effectiveCurrent = options.some(option => option.value === current) ? current : (options[0]?.value ?? 'system');\n\n const handleChange = (next: unknown) => {\n const match = options.find(opt => opt.value === next);\n if (match) commit(match.value);\n };\n\n const activeIndex = Math.max(\n 0,\n options.findIndex(option => option.value === effectiveCurrent),\n );\n const sizeConfig = SIZE_CONFIG[size];\n const indicatorOffset = activeIndex * (sizeConfig.itemWidth + sizeConfig.itemGap);\n\n return (\n <RadioGroupPrimitive\n {...rest}\n value={effectiveCurrent}\n onValueChange={handleChange}\n aria-label={ariaLabel}\n className={cn(\n 'relative inline-flex w-fit items-center rounded-full border border-border1 bg-surface3',\n sizeConfig.root,\n className,\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute rounded-full bg-surface5 motion-reduce:transition-none',\n transitions.transform,\n sizeConfig.indicator,\n )}\n style={{ width: sizeConfig.itemWidth, transform: `translateX(${indicatorOffset}px)` }}\n />\n {options.map(option => (\n <RadioPrimitive.Root\n key={option.value}\n value={option.value}\n aria-label={option.label}\n style={{ width: sizeConfig.itemWidth }}\n className={cn(\n 'relative inline-flex cursor-pointer items-center justify-center rounded-full',\n // Base UI exposes `data-checked` instead of Radix's `data-state=\"checked\"`.\n 'text-icon3 hover:text-icon6 data-[checked]:text-icon6',\n sizeConfig.item,\n 'focus-visible:outline-hidden',\n 'active:scale-90 motion-reduce:transition-none',\n transitions.colors,\n transitions.transform,\n )}\n >\n <span aria-hidden=\"true\" className=\"pointer-events-none inline-flex items-center justify-center\">\n {option.icon}\n </span>\n </RadioPrimitive.Root>\n ))}\n </RadioGroupPrimitive>\n );\n};\n"],"names":["RadioGroupPrimitive","RadioPrimitive"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const messageScrollerHooks = require('../message-scroller-hooks-BxAf8k0Y.cjs');
|
|
9
|
-
const scrollArea = require('../scroll-area-
|
|
9
|
+
const scrollArea = require('../scroll-area-B1vdOFuC.cjs');
|
|
10
10
|
const hooks_useMeasuredAutoHeight = require('../hooks/use-measured-auto-height.cjs.js');
|
|
11
11
|
const utils_cn = require('../cn-DCPcv4xv.cjs');
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { FileText } from 'lucide-react';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { c as useOptionalMessageScroller, e as useOptionalMessageScrollerVisibility } from '../message-scroller-hooks-BEeE1WE6.js';
|
|
5
|
-
import { S as ScrollArea } from '../scroll-area-
|
|
5
|
+
import { S as ScrollArea } from '../scroll-area-BiHnOfzg.js';
|
|
6
6
|
import { useMeasuredAutoHeight } from '../hooks/use-measured-auto-height.es.js';
|
|
7
7
|
import { c as cn } from '../cn-B4oPhFx9.js';
|
|
8
8
|
|
|
@@ -6,7 +6,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const collapsible = require('../../collapsible-CLPRijls.cjs');
|
|
9
|
-
const scrollArea = require('../../scroll-area-
|
|
9
|
+
const scrollArea = require('../../scroll-area-B1vdOFuC.cjs');
|
|
10
10
|
const tooltip = require('../../tooltip-DIi_oOxO.cjs');
|
|
11
11
|
const utils_cn = require('../../cn-DCPcv4xv.cjs');
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { ChevronRight, ListChecks, Circle, Loader2, CheckCircle2 } from 'lucide-react';
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { C as Collapsible, a as CollapsibleContent, b as CollapsibleTrigger } from '../../collapsible-igib7hFh.js';
|
|
5
|
-
import { S as ScrollArea } from '../../scroll-area-
|
|
5
|
+
import { S as ScrollArea } from '../../scroll-area-BiHnOfzg.js';
|
|
6
6
|
import { b as TooltipProvider, T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../../tooltip-Bi0pDO5P.js';
|
|
7
7
|
import { c as cn } from '../../cn-B4oPhFx9.js';
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const dataListTopCell = require('./data-list-top-cell-
|
|
3
|
+
const dataListTopCell = require('./data-list-top-cell-CIs1L8gy.cjs');
|
|
4
4
|
const jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
const lucideReact = require('lucide-react');
|
|
6
6
|
const Button = require('./Button-D10WB4vc.cjs');
|
|
@@ -37,14 +37,12 @@ const DataListRowStatic = React.forwardRef(
|
|
|
37
37
|
{
|
|
38
38
|
ref,
|
|
39
39
|
className: utils_cn.cn(
|
|
40
|
-
isWrapped ? "grid grid-cols-subgrid gap-8
|
|
41
|
-
// `!` so the selection fill wins over borderless table root styling
|
|
42
|
-
// (higher-specificity descendant rules); same color in `default`.
|
|
43
|
-
featured && "bg-surface-row-featured!",
|
|
44
|
-
dataListTopCell.dataListRowVariants({ variant }),
|
|
40
|
+
isWrapped ? "grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200" : dataListTopCell.dataListRowStaticStyles,
|
|
45
41
|
className
|
|
46
42
|
),
|
|
47
43
|
style: resolvedStyle,
|
|
44
|
+
"data-featured": featured || void 0,
|
|
45
|
+
"data-variant": variant ?? "default",
|
|
48
46
|
...rest,
|
|
49
47
|
children
|
|
50
48
|
}
|
|
@@ -60,8 +58,8 @@ const DataListSubheader = React.forwardRef(
|
|
|
60
58
|
{
|
|
61
59
|
ref,
|
|
62
60
|
className: utils_cn.cn(
|
|
63
|
-
"relative isolate col-span-full
|
|
64
|
-
"
|
|
61
|
+
"data-list-subheader relative isolate col-span-full px-5 py-3 text-ui-md font-medium text-neutral4",
|
|
62
|
+
"bg-(--data-list-background)",
|
|
65
63
|
className
|
|
66
64
|
),
|
|
67
65
|
...rest,
|
|
@@ -130,4 +128,4 @@ const DataList = Object.assign(dataListTopCell.DataListRoot, {
|
|
|
130
128
|
exports.DataList = DataList;
|
|
131
129
|
exports.DataListSubHeading = DataListSubHeading;
|
|
132
130
|
exports.DataListSubheader = DataListSubheader;
|
|
133
|
-
//# sourceMappingURL=data-list-
|
|
131
|
+
//# sourceMappingURL=data-list-B5Wicaoc.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-list-B5Wicaoc.cjs","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"text-ui-md text-neutral3 col-span-full flex items-center justify-center gap-8 py-4\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(\n isWrapped ? 'grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200' : dataListRowStaticStyles,\n className,\n )}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-5 py-3 text-ui-md font-medium text-neutral4',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-ui-sm font-normal text-neutral2', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-8 px-5 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":["jsxs","jsx","Button","ArrowLeftIcon","ArrowRightIcon","forwardRef","useDataListRowWrapperContext","cn","dataListRowStaticStyles","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListCell","DataListActionsCell","DataListTextCell","DataListNameCell","DataListDescriptionCell","DataListIdCell","DataListRowHeaderCell","DataListNumberCell","DataListDateCell","DataListTimeCell","DataListSelectCell","DataListTopSelectCell","DataListNoMatch","DataListSpacer","DataListNextPageLoading"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as useDataListRowWrapperContext, r as
|
|
1
|
+
import { u as useDataListRowWrapperContext, r as dataListRowStaticStyles, D as DataListRoot, f as DataListNextPageLoading, j as DataListSpacer, i as DataListNoMatch, s as DataListTopSelectCell, t as DataListSelectCell, g as DataListTimeCell, h as DataListDateCell, v as DataListNumberCell, w as DataListRowHeaderCell, q as DataListIdCell, x as DataListDescriptionCell, y as DataListNameCell, e as DataListTextCell, z as DataListActionsCell, c as DataListCell, k as DataListRowLink, l as DataListRowButton, m as DataListRowWrapper, n as DataListTopCellSmart, o as DataListTopCellWithTooltip, b as DataListTopCell, a as DataListTop } from './data-list-top-cell-D4-Hbz2H.js';
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';
|
|
4
4
|
import { B as Button } from './Button-BsfLQEC6.js';
|
|
@@ -35,14 +35,12 @@ const DataListRowStatic = forwardRef(
|
|
|
35
35
|
{
|
|
36
36
|
ref,
|
|
37
37
|
className: cn(
|
|
38
|
-
isWrapped ? "grid grid-cols-subgrid gap-8
|
|
39
|
-
// `!` so the selection fill wins over borderless table root styling
|
|
40
|
-
// (higher-specificity descendant rules); same color in `default`.
|
|
41
|
-
featured && "bg-surface-row-featured!",
|
|
42
|
-
dataListRowVariants({ variant }),
|
|
38
|
+
isWrapped ? "grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200" : dataListRowStaticStyles,
|
|
43
39
|
className
|
|
44
40
|
),
|
|
45
41
|
style: resolvedStyle,
|
|
42
|
+
"data-featured": featured || void 0,
|
|
43
|
+
"data-variant": variant ?? "default",
|
|
46
44
|
...rest,
|
|
47
45
|
children
|
|
48
46
|
}
|
|
@@ -58,8 +56,8 @@ const DataListSubheader = forwardRef(
|
|
|
58
56
|
{
|
|
59
57
|
ref,
|
|
60
58
|
className: cn(
|
|
61
|
-
"relative isolate col-span-full
|
|
62
|
-
"
|
|
59
|
+
"data-list-subheader relative isolate col-span-full px-5 py-3 text-ui-md font-medium text-neutral4",
|
|
60
|
+
"bg-(--data-list-background)",
|
|
63
61
|
className
|
|
64
62
|
),
|
|
65
63
|
...rest,
|
|
@@ -126,4 +124,4 @@ const DataList = Object.assign(DataListRoot, {
|
|
|
126
124
|
});
|
|
127
125
|
|
|
128
126
|
export { DataList as D, DataListSubHeading as a, DataListSubheader as b };
|
|
129
|
-
//# sourceMappingURL=data-list-
|
|
127
|
+
//# sourceMappingURL=data-list-BUK_v9ax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-list-BUK_v9ax.js","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"text-ui-md text-neutral3 col-span-full flex items-center justify-center gap-8 py-4\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(\n isWrapped ? 'grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200' : dataListRowStaticStyles,\n className,\n )}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-5 py-3 text-ui-md font-medium text-neutral4',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-ui-sm font-normal text-neutral2', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-8 px-5 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":[],"mappings":";;;;;;;AAUO,SAAS,mBAAmB,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,YAAW,EAA4B;AAC5G,EAAA,MAAM,cAAA,GAAkB,OAAO,WAAA,KAAgB,QAAA,IAAY,cAAc,CAAA,IAAM,OAAA;AAE/E,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EACb,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACC,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,GAAc,WAAA,GAAc,IAAI,GAAA,EAAI;AAAA,KAAA,EAC/C,CAAA;AAAA,IACC,cAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA;AAAA,MAAA,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAA,GAAc,CAAA,oBAChD,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,SAAS,UAAA,EACzD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,QAAE;AAAA,OAAA,EAEnB,CAAA;AAAA,MAED,OAAA,oBACC,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,UAAA,EAAY,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,4BAEpE,cAAA,EAAA,EAAe;AAAA,OAAA,EAClB;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;;ACvBO,MAAM,iBAAA,GAAoB,UAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACrF,IAAA,MAAM,YAAY,4BAAA,EAA6B;AAC/C,IAAA,MAAM,iBAAA,GAAoB,QAAA,KAAa,MAAA,IAAa,MAAA,KAAW,MAAA;AAC/D,IAAA,MAAM,aAAA,GAAgB,iBAAA,GAAoB,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAA,EAAG,QAAA,IAAY,CAAC,CAAA,GAAA,EAAM,MAAA,IAAU,EAAE,IAAG,GAAI,KAAA;AAC3G,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,YAAY,kEAAA,GAAqE,uBAAA;AAAA,UACjF;AAAA,SACF;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACP,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,gBAAc,OAAA,IAAW,SAAA;AAAA,QACxB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;AC9BzB,MAAM,iBAAA,GAAoB,UAAA;AAAA,EAC/B,CAAC,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,KAAQ;AACzC,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,mGAAA;AAAA,UACA,6BAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;;AChBzB,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA4B;AACnF,EAAA,2BAAQ,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,sCAAA,EAAwC,SAAS,GAAI,QAAA,EAAS,CAAA;AAC3F;;ACeO,MAAM,gBAAA,GAAmB,UAAA;AAAA,EAC9B,CAAC,EAAE,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,UAAU,KAAA,EAAO,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AACrE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,iFAAA;AAAA,UACA,CAAC,QAAA,IAAY,eAAA;AAAA,UACb,SAAA,IAAa,OAAA;AAAA,UACb;AAAA,SACF;AAAA,QACA,KAAA,EAAO,WAAW,EAAE,GAAG,OAAO,UAAA,EAAY,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAA,EAAQ,GAAI,KAAA;AAAA,QAChE,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;ACVxB,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,GAAA,EAAK,WAAA;AAAA,EACL,QAAA,EAAU,gBAAA;AAAA,EACV,OAAA,EAAS,eAAA;AAAA,EACT,kBAAA,EAAoB,0BAAA;AAAA,EACpB,YAAA,EAAc,oBAAA;AAAA,EACd,UAAA,EAAY,kBAAA;AAAA,EACZ,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,IAAA,EAAM,YAAA;AAAA,EACN,WAAA,EAAa,mBAAA;AAAA,EACb,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,eAAA,EAAiB,uBAAA;AAAA,EACjB,MAAA,EAAQ,cAAA;AAAA,EACR,aAAA,EAAe,qBAAA;AAAA,EACf,UAAA,EAAY,kBAAA;AAAA,EACZ,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,aAAA,EAAe,qBAAA;AAAA,EACf,OAAA,EAAS,eAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,UAAA,EAAY,kBAAA;AAAA,EACZ,MAAA,EAAQ,cAAA;AAAA,EACR,eAAA,EAAiB,uBAAA;AAAA,EACjB,UAAA,EAAY;AACd,CAAC;;;;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const dataListTopCell = require('./data-list-top-cell-CIs1L8gy.cjs');
|
|
5
|
+
const utils_cn = require('./cn-DCPcv4xv.cjs');
|
|
6
|
+
|
|
7
|
+
const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
|
|
8
|
+
const headerWidths = ["3rem", "5rem", "4rem", "3.5rem", "4.5rem", "3rem"];
|
|
9
|
+
function SkeletonBar({ width, className }) {
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
className: utils_cn.cn("h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none", className),
|
|
14
|
+
style: { width }
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function DataListSkeleton({
|
|
19
|
+
columns = "auto 1fr auto auto",
|
|
20
|
+
numberOfRows = 3,
|
|
21
|
+
fit,
|
|
22
|
+
variant
|
|
23
|
+
}) {
|
|
24
|
+
const columnParts = columns.trim().split(/\s+/);
|
|
25
|
+
const columnCount = columnParts.length;
|
|
26
|
+
const skeletonColumns = columnParts.map((col) => col === "auto" ? "minmax(6rem, auto)" : col).join(" ");
|
|
27
|
+
const getPseudoRandomWidth = (rowIdx, colIdx) => {
|
|
28
|
+
const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;
|
|
29
|
+
return widths[index] ?? widths[0];
|
|
30
|
+
};
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(dataListTopCell.DataListRoot, { columns: skeletonColumns, fit, variant, children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListTop, { children: Array.from({ length: columnCount }).map((_, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListTopCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SkeletonBar, { width: headerWidths[colIdx % headerWidths.length] ?? headerWidths[0], className: "h-3" }) }, colIdx)) }),
|
|
33
|
+
Array.from({ length: numberOfRows }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("grid grid-cols-subgrid gap-8 px-5", ...dataListTopCell.dataListRowOuterStyles), children: Array.from({ length: columnCount }).map((_2, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(dataListTopCell.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SkeletonBar, { width: getPseudoRandomWidth(rowIdx, colIdx) }) }, colIdx)) }, rowIdx))
|
|
34
|
+
] });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exports.DataListSkeleton = DataListSkeleton;
|
|
38
|
+
//# sourceMappingURL=data-list-skeleton-BZR_Hkvj.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-list-skeleton-BZR_Hkvj.cjs","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = columns.trim().split(/\\s+/);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-8 px-5', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["jsx","cn","jsxs","DataListRoot","DataListTop","DataListTopCell","dataListRowOuterStyles","_","DataListCell"],"mappings":";;;;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACEC,eAAA,CAACC,4BAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAAH,cAAA,CAACI,2BAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,oCAC1CC,+BAAA,EAAA,EACC,QAAA,kBAAAL,cAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5CA,cAAA,CAAC,KAAA,EAAA,EAAiB,WAAWC,WAAA,CAAG,mCAAA,EAAqC,GAAGK,sCAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACC,IAAG,MAAA,qBAC3CP,cAAA,CAACQ,gCACC,QAAA,kBAAAR,cAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { D as DataListRoot, a as DataListTop, b as DataListTopCell, c as DataListCell, d as dataListRowOuterStyles } from './data-list-top-cell-D4-Hbz2H.js';
|
|
3
|
+
import { c as cn } from './cn-B4oPhFx9.js';
|
|
4
|
+
|
|
5
|
+
const widths = ["75%", "50%", "65%", "90%", "60%", "80%"];
|
|
6
|
+
const headerWidths = ["3rem", "5rem", "4rem", "3.5rem", "4.5rem", "3rem"];
|
|
7
|
+
function SkeletonBar({ width, className }) {
|
|
8
|
+
return /* @__PURE__ */ jsx(
|
|
9
|
+
"div",
|
|
10
|
+
{
|
|
11
|
+
className: cn("h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none", className),
|
|
12
|
+
style: { width }
|
|
13
|
+
}
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function DataListSkeleton({
|
|
17
|
+
columns = "auto 1fr auto auto",
|
|
18
|
+
numberOfRows = 3,
|
|
19
|
+
fit,
|
|
20
|
+
variant
|
|
21
|
+
}) {
|
|
22
|
+
const columnParts = columns.trim().split(/\s+/);
|
|
23
|
+
const columnCount = columnParts.length;
|
|
24
|
+
const skeletonColumns = columnParts.map((col) => col === "auto" ? "minmax(6rem, auto)" : col).join(" ");
|
|
25
|
+
const getPseudoRandomWidth = (rowIdx, colIdx) => {
|
|
26
|
+
const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;
|
|
27
|
+
return widths[index] ?? widths[0];
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ jsxs(DataListRoot, { columns: skeletonColumns, fit, variant, children: [
|
|
30
|
+
/* @__PURE__ */ jsx(DataListTop, { children: Array.from({ length: columnCount }).map((_, colIdx) => /* @__PURE__ */ jsx(DataListTopCell, { children: /* @__PURE__ */ jsx(SkeletonBar, { width: headerWidths[colIdx % headerWidths.length] ?? headerWidths[0], className: "h-3" }) }, colIdx)) }),
|
|
31
|
+
Array.from({ length: numberOfRows }).map((_, rowIdx) => /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-subgrid gap-8 px-5", ...dataListRowOuterStyles), children: Array.from({ length: columnCount }).map((_2, colIdx) => /* @__PURE__ */ jsx(DataListCell, { children: /* @__PURE__ */ jsx(SkeletonBar, { width: getPseudoRandomWidth(rowIdx, colIdx) }) }, colIdx)) }, rowIdx))
|
|
32
|
+
] });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { DataListSkeleton as D };
|
|
36
|
+
//# sourceMappingURL=data-list-skeleton-BoaQlbOY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-list-skeleton-BoaQlbOY.js","sources":["../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\nimport type { DataListFit, DataListVariant } from './data-list-root';\nimport { DataListTop } from './data-list-top';\nimport { DataListTopCell } from './data-list-top-cell';\nimport { dataListRowOuterStyles } from './shared';\nimport { cn } from '@/lib/utils';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'] as const;\nconst headerWidths = ['3rem', '5rem', '4rem', '3.5rem', '4.5rem', '3rem'] as const;\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n fit?: DataListFit;\n variant?: DataListVariant;\n};\n\nfunction SkeletonBar({ width, className }: { width: string; className?: string }) {\n return (\n <div\n className={cn('h-4 animate-pulse rounded-lg bg-(--data-list-background) text-transparent select-none', className)}\n style={{ width }}\n />\n );\n}\n\n/**\n * Loading placeholder mirroring the real list: same root, a sticky header\n * band with one placeholder label per column, then rows of placeholder cells.\n */\nexport function DataListSkeleton({\n columns = 'auto 1fr auto auto',\n numberOfRows = 3,\n fit,\n variant,\n}: DataListSkeletonProps) {\n const columnParts = columns.trim().split(/\\s+/);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index] ?? widths[0];\n };\n\n return (\n <DataListRoot columns={skeletonColumns} fit={fit} variant={variant}>\n <DataListTop>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListTopCell key={colIdx}>\n <SkeletonBar width={headerWidths[colIdx % headerWidths.length] ?? headerWidths[0]} className=\"h-3\" />\n </DataListTopCell>\n ))}\n </DataListTop>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div key={rowIdx} className={cn('grid grid-cols-subgrid gap-8 px-5', ...dataListRowOuterStyles)}>\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <SkeletonBar width={getPseudoRandomWidth(rowIdx, colIdx)} />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["_"],"mappings":";;;;AAQA,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AACxD,MAAM,eAAe,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,QAAA,EAAU,UAAU,MAAM,CAAA;AASxE,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,SAAA,EAAU,EAA0C;AAChF,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,uFAAA,EAAyF,SAAS,CAAA;AAAA,MAChH,KAAA,EAAO,EAAE,KAAA;AAAM;AAAA,GACjB;AAEJ;AAMO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,oBAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,GAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA;AAC9C,EAAA,MAAM,cAAc,WAAA,CAAY,MAAA;AAChC,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,GAAA,CAAI,CAAA,GAAA,KAAQ,GAAA,KAAQ,SAAS,oBAAA,GAAuB,GAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAEtG,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,MAAA,GAAS,MAAA,GAAS,WAAA,GAAc,gBAAgB,MAAA,CAAO,MAAA;AACtE,IAAA,OAAO,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAS,eAAA,EAAiB,KAAU,OAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,yBAC1C,eAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAO,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,IAAK,YAAA,CAAa,CAAC,CAAA,EAAG,SAAA,EAAU,KAAA,EAAM,CAAA,EAAA,EAD/E,MAEtB,CACD,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,cAAc,CAAA,CAAE,IAAI,CAAC,CAAA,EAAG,2BAC5C,GAAA,CAAC,KAAA,EAAA,EAAiB,WAAW,EAAA,CAAG,mCAAA,EAAqC,GAAG,sBAAsB,CAAA,EAC3F,gBAAM,IAAA,CAAK,EAAE,QAAQ,WAAA,EAAa,EAAE,GAAA,CAAI,CAACA,IAAG,MAAA,qBAC3C,GAAA,CAAC,gBACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAO,oBAAA,CAAqB,MAAA,EAAQ,MAAM,CAAA,EAAG,CAAA,EAAA,EADzC,MAEnB,CACD,CAAA,EAAA,EALO,MAMV,CACD;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"}
|