@craftzbay/ui 0.10.0 → 0.11.0
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/README.md +14 -8
- package/dist-lib/__tests__/helpers/color.d.ts +9 -0
- package/dist-lib/__tests__/helpers/theme.d.ts +18 -0
- package/dist-lib/components/ui/Accordion.js +18 -7
- package/dist-lib/components/ui/Accordion.js.map +1 -1
- package/dist-lib/components/ui/Alert.d.ts +16 -0
- package/dist-lib/components/ui/Alert.js +47 -34
- package/dist-lib/components/ui/Alert.js.map +1 -1
- package/dist-lib/components/ui/Avatar.d.ts +1 -1
- package/dist-lib/components/ui/Avatar.js +45 -47
- package/dist-lib/components/ui/Avatar.js.map +1 -1
- package/dist-lib/components/ui/Badge.d.ts +3 -1
- package/dist-lib/components/ui/Badge.js +24 -15
- package/dist-lib/components/ui/Badge.js.map +1 -1
- package/dist-lib/components/ui/Breadcrumbs.d.ts +2 -0
- package/dist-lib/components/ui/Breadcrumbs.js +46 -28
- package/dist-lib/components/ui/Breadcrumbs.js.map +1 -1
- package/dist-lib/components/ui/Button.d.ts +5 -3
- package/dist-lib/components/ui/Button.js +59 -45
- package/dist-lib/components/ui/Button.js.map +1 -1
- package/dist-lib/components/ui/Calendar.d.ts +1 -1
- package/dist-lib/components/ui/Calendar.js +87 -59
- package/dist-lib/components/ui/Calendar.js.map +1 -1
- package/dist-lib/components/ui/Card.d.ts +2 -0
- package/dist-lib/components/ui/Card.js +48 -67
- package/dist-lib/components/ui/Card.js.map +1 -1
- package/dist-lib/components/ui/Carousel.d.ts +6 -6
- package/dist-lib/components/ui/Carousel.js +133 -102
- package/dist-lib/components/ui/Carousel.js.map +1 -1
- package/dist-lib/components/ui/Chart.d.ts +49 -10
- package/dist-lib/components/ui/Chart.js +415 -181
- package/dist-lib/components/ui/Chart.js.map +1 -1
- package/dist-lib/components/ui/Checkbox.js +42 -28
- package/dist-lib/components/ui/Checkbox.js.map +1 -1
- package/dist-lib/components/ui/Combobox.d.ts +2 -0
- package/dist-lib/components/ui/Combobox.js +142 -111
- package/dist-lib/components/ui/Combobox.js.map +1 -1
- package/dist-lib/components/ui/CommandPalette.d.ts +6 -3
- package/dist-lib/components/ui/CommandPalette.js +92 -87
- package/dist-lib/components/ui/CommandPalette.js.map +1 -1
- package/dist-lib/components/ui/ContextMenu.d.ts +7 -2
- package/dist-lib/components/ui/ContextMenu.js +77 -62
- package/dist-lib/components/ui/ContextMenu.js.map +1 -1
- package/dist-lib/components/ui/DataGrid.d.ts +17 -4
- package/dist-lib/components/ui/DataGrid.js +65 -50
- package/dist-lib/components/ui/DataGrid.js.map +1 -1
- package/dist-lib/components/ui/DatePicker.js +118 -99
- package/dist-lib/components/ui/DatePicker.js.map +1 -1
- package/dist-lib/components/ui/DesignSystemProvider.d.ts +94 -40
- package/dist-lib/components/ui/DesignSystemProvider.js +111 -55
- package/dist-lib/components/ui/DesignSystemProvider.js.map +1 -1
- package/dist-lib/components/ui/Dialog.d.ts +18 -3
- package/dist-lib/components/ui/Dialog.js +105 -80
- package/dist-lib/components/ui/Dialog.js.map +1 -1
- package/dist-lib/components/ui/Drawer.d.ts +17 -2
- package/dist-lib/components/ui/Drawer.js +89 -55
- package/dist-lib/components/ui/Drawer.js.map +1 -1
- package/dist-lib/components/ui/DropdownMenu.js +14 -9
- package/dist-lib/components/ui/DropdownMenu.js.map +1 -1
- package/dist-lib/components/ui/EmptyState.d.ts +2 -0
- package/dist-lib/components/ui/EmptyState.js +30 -16
- package/dist-lib/components/ui/EmptyState.js.map +1 -1
- package/dist-lib/components/ui/ErrorState.d.ts +13 -2
- package/dist-lib/components/ui/ErrorState.js +44 -23
- package/dist-lib/components/ui/ErrorState.js.map +1 -1
- package/dist-lib/components/ui/FileUpload.js +59 -56
- package/dist-lib/components/ui/FileUpload.js.map +1 -1
- package/dist-lib/components/ui/Form.d.ts +15 -2
- package/dist-lib/components/ui/Form.js +97 -71
- package/dist-lib/components/ui/Form.js.map +1 -1
- package/dist-lib/components/ui/Icon.d.ts +1 -1
- package/dist-lib/components/ui/Icon.js +20 -14
- package/dist-lib/components/ui/Icon.js.map +1 -1
- package/dist-lib/components/ui/IconButton.d.ts +2 -2
- package/dist-lib/components/ui/IconButton.js +28 -20
- package/dist-lib/components/ui/IconButton.js.map +1 -1
- package/dist-lib/components/ui/Input.d.ts +3 -1
- package/dist-lib/components/ui/Input.js +92 -78
- package/dist-lib/components/ui/Input.js.map +1 -1
- package/dist-lib/components/ui/Kbd.js +1 -1
- package/dist-lib/components/ui/Kbd.js.map +1 -1
- package/dist-lib/components/ui/MultiSelect.js +121 -107
- package/dist-lib/components/ui/MultiSelect.js.map +1 -1
- package/dist-lib/components/ui/Pagination.js +67 -62
- package/dist-lib/components/ui/Pagination.js.map +1 -1
- package/dist-lib/components/ui/Popover.js +14 -14
- package/dist-lib/components/ui/Popover.js.map +1 -1
- package/dist-lib/components/ui/Progress.d.ts +3 -3
- package/dist-lib/components/ui/Progress.js +77 -72
- package/dist-lib/components/ui/Progress.js.map +1 -1
- package/dist-lib/components/ui/RadioGroup.d.ts +1 -1
- package/dist-lib/components/ui/RadioGroup.js +69 -52
- package/dist-lib/components/ui/RadioGroup.js.map +1 -1
- package/dist-lib/components/ui/RelativeTime.d.ts +19 -0
- package/dist-lib/components/ui/RelativeTime.js +31 -0
- package/dist-lib/components/ui/RelativeTime.js.map +1 -0
- package/dist-lib/components/ui/ScrollArea.d.ts +9 -1
- package/dist-lib/components/ui/ScrollArea.js +43 -27
- package/dist-lib/components/ui/ScrollArea.js.map +1 -1
- package/dist-lib/components/ui/Select.d.ts +6 -1
- package/dist-lib/components/ui/Select.js +79 -71
- package/dist-lib/components/ui/Select.js.map +1 -1
- package/dist-lib/components/ui/Separator.js +1 -1
- package/dist-lib/components/ui/Separator.js.map +1 -1
- package/dist-lib/components/ui/Sheet.d.ts +9 -0
- package/dist-lib/components/ui/Sheet.js +69 -46
- package/dist-lib/components/ui/Sheet.js.map +1 -1
- package/dist-lib/components/ui/Sidebar.d.ts +12 -9
- package/dist-lib/components/ui/Sidebar.js +152 -109
- package/dist-lib/components/ui/Sidebar.js.map +1 -1
- package/dist-lib/components/ui/Skeleton.d.ts +13 -2
- package/dist-lib/components/ui/Skeleton.js +15 -14
- package/dist-lib/components/ui/Skeleton.js.map +1 -1
- package/dist-lib/components/ui/Slider.js +41 -29
- package/dist-lib/components/ui/Slider.js.map +1 -1
- package/dist-lib/components/ui/Snackbar.js +23 -22
- package/dist-lib/components/ui/Snackbar.js.map +1 -1
- package/dist-lib/components/ui/Spinner.js +18 -6
- package/dist-lib/components/ui/Spinner.js.map +1 -1
- package/dist-lib/components/ui/Stepper.d.ts +6 -0
- package/dist-lib/components/ui/Stepper.js +71 -48
- package/dist-lib/components/ui/Stepper.js.map +1 -1
- package/dist-lib/components/ui/Switch.js +46 -43
- package/dist-lib/components/ui/Switch.js.map +1 -1
- package/dist-lib/components/ui/Table.d.ts +33 -5
- package/dist-lib/components/ui/Table.js +141 -119
- package/dist-lib/components/ui/Table.js.map +1 -1
- package/dist-lib/components/ui/Tabs.js +50 -48
- package/dist-lib/components/ui/Tabs.js.map +1 -1
- package/dist-lib/components/ui/TagInput.js +45 -45
- package/dist-lib/components/ui/TagInput.js.map +1 -1
- package/dist-lib/components/ui/Textarea.js +65 -54
- package/dist-lib/components/ui/Textarea.js.map +1 -1
- package/dist-lib/components/ui/Timeline.js +39 -35
- package/dist-lib/components/ui/Timeline.js.map +1 -1
- package/dist-lib/components/ui/Toast.js +44 -57
- package/dist-lib/components/ui/Toast.js.map +1 -1
- package/dist-lib/components/ui/Tooltip.d.ts +4 -1
- package/dist-lib/components/ui/Tooltip.js +24 -22
- package/dist-lib/components/ui/Tooltip.js.map +1 -1
- package/dist-lib/components/ui/TopNav.d.ts +7 -3
- package/dist-lib/components/ui/TopNav.js +35 -25
- package/dist-lib/components/ui/TopNav.js.map +1 -1
- package/dist-lib/components/ui/Tree.d.ts +15 -10
- package/dist-lib/components/ui/Tree.js +82 -79
- package/dist-lib/components/ui/Tree.js.map +1 -1
- package/dist-lib/hooks/use-debounce.d.ts +19 -0
- package/dist-lib/hooks/use-debounce.js +36 -0
- package/dist-lib/hooks/use-debounce.js.map +1 -0
- package/dist-lib/hooks/use-delayed-loading.d.ts +21 -0
- package/dist-lib/hooks/use-delayed-loading.js +20 -0
- package/dist-lib/hooks/use-delayed-loading.js.map +1 -0
- package/dist-lib/hooks/use-field-ids.d.ts +2 -1
- package/dist-lib/hooks/use-field-ids.js +9 -9
- package/dist-lib/hooks/use-field-ids.js.map +1 -1
- package/dist-lib/hooks/use-media-query.d.ts +3 -1
- package/dist-lib/hooks/use-media-query.js +16 -12
- package/dist-lib/hooks/use-media-query.js.map +1 -1
- package/dist-lib/hooks/use-modifier-key.d.ts +13 -0
- package/dist-lib/hooks/use-modifier-key.js +19 -0
- package/dist-lib/hooks/use-modifier-key.js.map +1 -0
- package/dist-lib/hooks/use-toast.d.ts +7 -2
- package/dist-lib/hooks/use-toast.js +61 -30
- package/dist-lib/hooks/use-toast.js.map +1 -1
- package/dist-lib/icons/index.d.ts +9 -0
- package/dist-lib/icons/index.js +148 -130
- package/dist-lib/icons/index.js.map +1 -1
- package/dist-lib/illustrations/index.d.ts +1 -0
- package/dist-lib/illustrations/index.js +15 -6
- package/dist-lib/illustrations/index.js.map +1 -1
- package/dist-lib/index.d.ts +6 -0
- package/dist-lib/index.js +280 -260
- package/dist-lib/index.js.map +1 -1
- package/dist-lib/lib/format.d.ts +65 -0
- package/dist-lib/lib/format.js +95 -0
- package/dist-lib/lib/format.js.map +1 -0
- package/dist-lib/lib/return-focus.d.ts +11 -0
- package/dist-lib/lib/return-focus.js +12 -0
- package/dist-lib/lib/return-focus.js.map +1 -0
- package/dist-lib/lib/strings.d.ts +62 -1
- package/dist-lib/lib/strings.js +75 -19
- package/dist-lib/lib/strings.js.map +1 -1
- package/dist-lib/lib/strings.mn.js +50 -5
- package/dist-lib/lib/strings.mn.js.map +1 -1
- package/dist-lib/styles.css +1 -1
- package/dist-lib/theme.css +141 -78
- package/package.json +10 -3
|
@@ -1,76 +1,99 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { forwardRef as
|
|
4
|
-
import { Check as
|
|
2
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef as b } from "react";
|
|
4
|
+
import { Check as h } from "../../icons/index.js";
|
|
5
5
|
import { cn as e } from "../../lib/utils.js";
|
|
6
|
-
import { useStrings as
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import { useStrings as N } from "../../hooks/use-strings.js";
|
|
7
|
+
const z = b(function({
|
|
8
|
+
steps: i,
|
|
9
|
+
current: a,
|
|
10
|
+
orientation: t = "horizontal",
|
|
11
|
+
stateLabels: p,
|
|
12
|
+
className: d,
|
|
13
|
+
"aria-label": f,
|
|
14
|
+
...x
|
|
15
|
+
}, u) {
|
|
16
|
+
const n = N(), g = p ?? {
|
|
17
|
+
complete: n.stepper.complete,
|
|
18
|
+
current: n.stepper.current,
|
|
19
|
+
upcoming: n.stepper.upcoming
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ s(
|
|
10
22
|
"ol",
|
|
11
23
|
{
|
|
12
|
-
ref:
|
|
13
|
-
"aria-label":
|
|
24
|
+
ref: u,
|
|
25
|
+
"aria-label": f ?? n.stepper.label,
|
|
14
26
|
className: e(
|
|
15
27
|
t === "horizontal" ? "flex w-full items-center" : "flex flex-col gap-6",
|
|
16
28
|
d
|
|
17
29
|
),
|
|
18
|
-
...
|
|
19
|
-
children:
|
|
20
|
-
const
|
|
21
|
-
return /* @__PURE__ */
|
|
30
|
+
...x,
|
|
31
|
+
children: i.map((o, r) => {
|
|
32
|
+
const l = r < a ? "complete" : r === a ? "current" : "upcoming", m = r === i.length - 1;
|
|
33
|
+
return /* @__PURE__ */ c(
|
|
22
34
|
"li",
|
|
23
35
|
{
|
|
24
|
-
"aria-current":
|
|
36
|
+
"aria-current": l === "current" ? "step" : void 0,
|
|
25
37
|
className: e(
|
|
26
38
|
t === "horizontal" ? "flex flex-1 items-center gap-3 last:flex-initial" : "flex items-start gap-3"
|
|
27
39
|
),
|
|
28
40
|
children: [
|
|
29
|
-
/* @__PURE__ */
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
/* @__PURE__ */ c(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: e(
|
|
45
|
+
t === "horizontal" ? "flex items-center gap-3" : "flex flex-col items-center"
|
|
46
|
+
),
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ s(
|
|
49
|
+
"span",
|
|
50
|
+
{
|
|
51
|
+
"aria-hidden": !0,
|
|
52
|
+
className: e(
|
|
53
|
+
"inline-flex size-7 items-center justify-center rounded-full text-xs font-semibold transition-colors",
|
|
54
|
+
l === "complete" && "bg-accent text-on-accent",
|
|
55
|
+
l === "current" && "bg-card border-accent text-accent border-2",
|
|
56
|
+
l === "upcoming" && "bg-background-muted text-foreground-subtle border-border border"
|
|
57
|
+
),
|
|
58
|
+
children: l === "complete" ? /* @__PURE__ */ s(h, { className: "size-4" }) : r + 1
|
|
59
|
+
}
|
|
39
60
|
),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
r < c ? "bg-accent" : "bg-border"
|
|
61
|
+
t === "vertical" && !m && /* @__PURE__ */ s(
|
|
62
|
+
"span",
|
|
63
|
+
{
|
|
64
|
+
className: e(
|
|
65
|
+
"mt-1 min-h-6 w-px flex-1",
|
|
66
|
+
r < a ? "bg-accent" : "bg-border"
|
|
67
|
+
)
|
|
68
|
+
}
|
|
49
69
|
)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
-
/* @__PURE__ */
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
/* @__PURE__ */ c("div", { className: e("flex flex-col", t === "horizontal" && "min-w-0"), children: [
|
|
74
|
+
/* @__PURE__ */ c(
|
|
55
75
|
"span",
|
|
56
76
|
{
|
|
57
77
|
className: e(
|
|
58
78
|
"text-sm font-medium",
|
|
59
|
-
|
|
79
|
+
l === "upcoming" ? "text-foreground-subtle" : "text-foreground"
|
|
60
80
|
),
|
|
61
|
-
children:
|
|
81
|
+
children: [
|
|
82
|
+
o.title,
|
|
83
|
+
/* @__PURE__ */ c("span", { className: "sr-only", children: [
|
|
84
|
+
", ",
|
|
85
|
+
g[l]
|
|
86
|
+
] })
|
|
87
|
+
]
|
|
62
88
|
}
|
|
63
89
|
),
|
|
64
|
-
t === "vertical" &&
|
|
90
|
+
t === "vertical" && o.description && /* @__PURE__ */ s("p", { className: "text-foreground-muted mt-0.5 text-xs", children: o.description })
|
|
65
91
|
] }),
|
|
66
|
-
t === "horizontal" && !m && /* @__PURE__ */
|
|
92
|
+
t === "horizontal" && !m && /* @__PURE__ */ s(
|
|
67
93
|
"span",
|
|
68
94
|
{
|
|
69
95
|
"aria-hidden": !0,
|
|
70
|
-
className: e(
|
|
71
|
-
"h-px flex-1 mx-2",
|
|
72
|
-
r < c ? "bg-accent" : "bg-border"
|
|
73
|
-
)
|
|
96
|
+
className: e("mx-2 h-px flex-1", r < a ? "bg-accent" : "bg-border")
|
|
74
97
|
}
|
|
75
98
|
)
|
|
76
99
|
]
|
|
@@ -81,8 +104,8 @@ const b = p(function({ steps: o, current: c, orientation: t = "horizontal", clas
|
|
|
81
104
|
}
|
|
82
105
|
);
|
|
83
106
|
});
|
|
84
|
-
|
|
107
|
+
z.displayName = "Stepper";
|
|
85
108
|
export {
|
|
86
|
-
|
|
109
|
+
z as Stepper
|
|
87
110
|
};
|
|
88
111
|
//# sourceMappingURL=Stepper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.js","sources":["../../../src/components/ui/Stepper.tsx"],"sourcesContent":["'use client';\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { Check } from '@/icons';\nimport { cn } from '@/lib/utils';\nimport { useStrings } from '@/hooks/use-strings';\n\nexport interface Step {\n /** Step heading. */\n title: ReactNode;\n /** Optional secondary description, only shown in vertical orientation. */\n description?: ReactNode;\n}\n\nexport interface StepperProps extends HTMLAttributes<HTMLOListElement> {\n /** Ordered list of steps. */\n steps: Step[];\n /** 0-indexed active step. Steps before it are marked complete. */\n current: number;\n /** Layout direction. */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Multi-step progress indicator. Use the horizontal variant in narrow flows\n * (top of an onboarding modal) and vertical for deeper context.\n *\n * @example Onboarding\n * <Stepper\n * current={step}\n * steps={[\n * { title: 'Workspace' },\n * { title: 'Invite team' },\n * { title: 'Connect data' },\n * { title: 'Done' },\n * ]}\n * />\n *\n * @do Keep titles 1–2 words. Save explanations for the page body.\n * @dont Use Stepper for free-form navigation. It implies a linear flow.\n */\nexport const Stepper = forwardRef<HTMLOListElement, StepperProps>(function Stepper(\n {
|
|
1
|
+
{"version":3,"file":"Stepper.js","sources":["../../../src/components/ui/Stepper.tsx"],"sourcesContent":["'use client';\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { Check } from '@/icons';\nimport { cn } from '@/lib/utils';\nimport { useStrings } from '@/hooks/use-strings';\n\nexport interface Step {\n /** Step heading. */\n title: ReactNode;\n /** Optional secondary description, only shown in vertical orientation. */\n description?: ReactNode;\n}\n\nexport interface StepperProps extends HTMLAttributes<HTMLOListElement> {\n /** Ordered list of steps. */\n steps: Step[];\n /** 0-indexed active step. Steps before it are marked complete. */\n current: number;\n /** Layout direction. */\n orientation?: 'horizontal' | 'vertical';\n /** sr-only state words announced after each title (i18n). */\n stateLabels?: { complete: string; current: string; upcoming: string };\n}\n\n/**\n * Multi-step progress indicator. Use the horizontal variant in narrow flows\n * (top of an onboarding modal) and vertical for deeper context.\n *\n * @example Onboarding\n * <Stepper\n * current={step}\n * steps={[\n * { title: 'Workspace' },\n * { title: 'Invite team' },\n * { title: 'Connect data' },\n * { title: 'Done' },\n * ]}\n * />\n *\n * @do Keep titles 1–2 words. Save explanations for the page body.\n * @dont Use Stepper for free-form navigation. It implies a linear flow.\n */\nexport const Stepper = forwardRef<HTMLOListElement, StepperProps>(function Stepper(\n {\n steps,\n current,\n orientation = 'horizontal',\n stateLabels: stateLabelsProp,\n className,\n 'aria-label': ariaLabel,\n ...props\n },\n ref,\n) {\n const strings = useStrings();\n const stateLabels = stateLabelsProp ?? {\n complete: strings.stepper.complete,\n current: strings.stepper.current,\n upcoming: strings.stepper.upcoming,\n };\n return (\n <ol\n ref={ref}\n aria-label={ariaLabel ?? strings.stepper.label}\n className={cn(\n orientation === 'horizontal' ? 'flex w-full items-center' : 'flex flex-col gap-6',\n className,\n )}\n {...props}\n >\n {steps.map((step, i) => {\n const state = i < current ? 'complete' : i === current ? 'current' : 'upcoming';\n const isLast = i === steps.length - 1;\n return (\n <li\n key={i}\n aria-current={state === 'current' ? 'step' : undefined}\n className={cn(\n orientation === 'horizontal'\n ? 'flex flex-1 items-center gap-3 last:flex-initial'\n : 'flex items-start gap-3',\n )}\n >\n <div\n className={cn(\n orientation === 'horizontal'\n ? 'flex items-center gap-3'\n : 'flex flex-col items-center',\n )}\n >\n <span\n aria-hidden\n className={cn(\n 'inline-flex size-7 items-center justify-center rounded-full text-xs font-semibold transition-colors',\n state === 'complete' && 'bg-accent text-on-accent',\n state === 'current' && 'bg-card border-accent text-accent border-2',\n state === 'upcoming' &&\n 'bg-background-muted text-foreground-subtle border-border border',\n )}\n >\n {state === 'complete' ? <Check className=\"size-4\" /> : i + 1}\n </span>\n {orientation === 'vertical' && !isLast && (\n <span\n className={cn(\n 'mt-1 min-h-6 w-px flex-1',\n i < current ? 'bg-accent' : 'bg-border',\n )}\n />\n )}\n </div>\n <div className={cn('flex flex-col', orientation === 'horizontal' && 'min-w-0')}>\n <span\n className={cn(\n 'text-sm font-medium',\n state === 'upcoming' ? 'text-foreground-subtle' : 'text-foreground',\n )}\n >\n {step.title}\n <span className=\"sr-only\">, {stateLabels[state]}</span>\n </span>\n {orientation === 'vertical' && step.description && (\n <p className=\"text-foreground-muted mt-0.5 text-xs\">{step.description}</p>\n )}\n </div>\n {orientation === 'horizontal' && !isLast && (\n <span\n aria-hidden\n className={cn('mx-2 h-px flex-1', i < current ? 'bg-accent' : 'bg-border')}\n />\n )}\n </li>\n );\n })}\n </ol>\n );\n});\nStepper.displayName = 'Stepper';\n"],"names":["Stepper","forwardRef","steps","current","orientation","stateLabelsProp","className","ariaLabel","props","ref","strings","useStrings","stateLabels","jsx","cn","step","i","state","isLast","jsxs","Check"],"mappings":";;;;;;AA2CO,MAAMA,IAAUC,EAA2C,SAChE;AAAA,EACE,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,aAAaC;AAAA,EACb,WAAAC;AAAA,EACA,cAAcC;AAAA,EACd,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAUC,EAAA,GACVC,IAAcP,KAAmB;AAAA,IACrC,UAAUK,EAAQ,QAAQ;AAAA,IAC1B,SAASA,EAAQ,QAAQ;AAAA,IACzB,UAAUA,EAAQ,QAAQ;AAAA,EAAA;AAE5B,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAJ;AAAA,MACA,cAAYF,KAAaG,EAAQ,QAAQ;AAAA,MACzC,WAAWI;AAAA,QACTV,MAAgB,eAAe,6BAA6B;AAAA,QAC5DE;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEH,UAAAN,EAAM,IAAI,CAACa,GAAMC,MAAM;AACtB,cAAMC,IAAQD,IAAIb,IAAU,aAAaa,MAAMb,IAAU,YAAY,YAC/De,IAASF,MAAMd,EAAM,SAAS;AACpC,eACE,gBAAAiB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,gBAAcF,MAAU,YAAY,SAAS;AAAA,YAC7C,WAAWH;AAAA,cACTV,MAAgB,eACZ,qDACA;AAAA,YAAA;AAAA,YAGN,UAAA;AAAA,cAAA,gBAAAe;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWL;AAAA,oBACTV,MAAgB,eACZ,4BACA;AAAA,kBAAA;AAAA,kBAGN,UAAA;AAAA,oBAAA,gBAAAS;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,eAAW;AAAA,wBACX,WAAWC;AAAA,0BACT;AAAA,0BACAG,MAAU,cAAc;AAAA,0BACxBA,MAAU,aAAa;AAAA,0BACvBA,MAAU,cACR;AAAA,wBAAA;AAAA,wBAGH,gBAAU,aAAa,gBAAAJ,EAACO,KAAM,WAAU,UAAS,IAAKJ,IAAI;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAE5DZ,MAAgB,cAAc,CAACc,KAC9B,gBAAAL;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWC;AAAA,0BACT;AAAA,0BACAE,IAAIb,IAAU,cAAc;AAAA,wBAAA;AAAA,sBAC9B;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGJ,gBAAAgB,EAAC,SAAI,WAAWL,EAAG,iBAAiBV,MAAgB,gBAAgB,SAAS,GAC3E,UAAA;AAAA,gBAAA,gBAAAe;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWL;AAAA,sBACT;AAAA,sBACAG,MAAU,aAAa,2BAA2B;AAAA,oBAAA;AAAA,oBAGnD,UAAA;AAAA,sBAAAF,EAAK;AAAA,sBACN,gBAAAI,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA;AAAA,wBAAA;AAAA,wBAAGP,EAAYK,CAAK;AAAA,sBAAA,EAAA,CAAE;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEjDb,MAAgB,cAAcW,EAAK,iCACjC,KAAA,EAAE,WAAU,wCAAwC,UAAAA,EAAK,YAAA,CAAY;AAAA,cAAA,GAE1E;AAAA,cACCX,MAAgB,gBAAgB,CAACc,KAChC,gBAAAL;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAW;AAAA,kBACX,WAAWC,EAAG,oBAAoBE,IAAIb,IAAU,cAAc,WAAW;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC3E;AAAA,UAAA;AAAA,UAtDGa;AAAA,QAAA;AAAA,MA0DX,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AACDhB,EAAQ,cAAc;"}
|
|
@@ -1,77 +1,80 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { forwardRef as
|
|
2
|
+
import { jsx as e, jsxs as l } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef as k, useId as y } from "react";
|
|
4
4
|
import * as f from "@radix-ui/react-switch";
|
|
5
|
-
import { cn as
|
|
6
|
-
const
|
|
7
|
-
sm:
|
|
8
|
-
md:
|
|
9
|
-
},
|
|
5
|
+
import { cn as t } from "../../lib/utils.js";
|
|
6
|
+
const N = {
|
|
7
|
+
sm: 'h-4 w-7 before:absolute before:-inset-x-1 before:-inset-y-1.5 before:content-[""]',
|
|
8
|
+
md: 'h-5 w-9 before:absolute before:-inset-x-1 before:-inset-y-1 before:content-[""]'
|
|
9
|
+
}, S = {
|
|
10
10
|
sm: "size-3 data-[state=checked]:translate-x-3",
|
|
11
11
|
md: "size-4 data-[state=checked]:translate-x-4"
|
|
12
|
-
},
|
|
12
|
+
}, I = k(
|
|
13
13
|
function({
|
|
14
|
-
className:
|
|
15
|
-
label:
|
|
16
|
-
description:
|
|
17
|
-
labelPosition:
|
|
18
|
-
size:
|
|
14
|
+
className: b,
|
|
15
|
+
label: a,
|
|
16
|
+
description: r,
|
|
17
|
+
labelPosition: s = "after",
|
|
18
|
+
size: i = "md",
|
|
19
19
|
hideLabel: u,
|
|
20
|
-
id:
|
|
21
|
-
disabled:
|
|
22
|
-
|
|
20
|
+
id: m,
|
|
21
|
+
disabled: n,
|
|
22
|
+
"aria-describedby": h,
|
|
23
|
+
...v
|
|
23
24
|
}, x) {
|
|
24
|
-
const g =
|
|
25
|
+
const g = y(), o = m ?? g, c = r ? `${o}-desc` : void 0, p = [c, h].filter(Boolean).join(" ") || void 0, w = /* @__PURE__ */ e(
|
|
25
26
|
f.Root,
|
|
26
27
|
{
|
|
27
28
|
ref: x,
|
|
28
|
-
id:
|
|
29
|
-
disabled:
|
|
30
|
-
"aria-describedby":
|
|
31
|
-
className:
|
|
32
|
-
"peer inline-flex shrink-0 items-center rounded-full border-2 border-transparent",
|
|
29
|
+
id: o,
|
|
30
|
+
disabled: n,
|
|
31
|
+
"aria-describedby": p,
|
|
32
|
+
className: t(
|
|
33
|
+
"peer relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent",
|
|
33
34
|
"transition-colors duration-[var(--duration-base)] ease-[var(--ease-out)]",
|
|
34
|
-
"
|
|
35
|
+
"focus-visible:ring-ring focus-visible:ring-offset-background outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
35
36
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
36
37
|
"data-[state=checked]:bg-accent data-[state=unchecked]:bg-switch-track-off",
|
|
37
|
-
|
|
38
|
+
"aria-invalid:ring-danger aria-invalid:ring-2",
|
|
39
|
+
N[i]
|
|
38
40
|
),
|
|
39
|
-
...
|
|
40
|
-
children: /* @__PURE__ */
|
|
41
|
+
...v,
|
|
42
|
+
children: /* @__PURE__ */ e(
|
|
41
43
|
f.Thumb,
|
|
42
44
|
{
|
|
43
|
-
className:
|
|
44
|
-
"pointer-events-none block rounded-full
|
|
45
|
+
className: t(
|
|
46
|
+
"bg-switch-thumb pointer-events-none block rounded-full shadow-sm",
|
|
45
47
|
"transition-transform duration-[var(--duration-base)] ease-[var(--ease-out)]",
|
|
46
48
|
"translate-x-0",
|
|
47
|
-
|
|
49
|
+
S[i]
|
|
48
50
|
)
|
|
49
51
|
}
|
|
50
52
|
)
|
|
51
53
|
}
|
|
52
|
-
), d =
|
|
53
|
-
/* @__PURE__ */
|
|
54
|
+
), d = a && /* @__PURE__ */ l("div", { className: "flex flex-col gap-0.5 select-none", children: [
|
|
55
|
+
/* @__PURE__ */ e(
|
|
54
56
|
"label",
|
|
55
57
|
{
|
|
56
|
-
htmlFor:
|
|
57
|
-
className:
|
|
58
|
-
"text-
|
|
59
|
-
|
|
58
|
+
htmlFor: o,
|
|
59
|
+
className: t(
|
|
60
|
+
"text-foreground text-sm",
|
|
61
|
+
n && "cursor-not-allowed opacity-50",
|
|
62
|
+
u && "sr-only"
|
|
60
63
|
),
|
|
61
|
-
children:
|
|
64
|
+
children: a
|
|
62
65
|
}
|
|
63
66
|
),
|
|
64
|
-
|
|
67
|
+
r && /* @__PURE__ */ e("p", { id: c, className: "text-foreground-subtle text-xs", children: r })
|
|
65
68
|
] });
|
|
66
|
-
return /* @__PURE__ */ l("div", { className:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
return /* @__PURE__ */ l("div", { className: t("inline-flex items-center gap-2.5", b), children: [
|
|
70
|
+
s === "before" && d,
|
|
71
|
+
w,
|
|
72
|
+
s === "after" && d
|
|
70
73
|
] });
|
|
71
74
|
}
|
|
72
75
|
);
|
|
73
|
-
|
|
76
|
+
I.displayName = "Switch";
|
|
74
77
|
export {
|
|
75
|
-
|
|
78
|
+
I as Switch
|
|
76
79
|
};
|
|
77
80
|
//# sourceMappingURL=Switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sources":["../../../src/components/ui/Switch.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n useId,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { cn } from '@/lib/utils';\n\nexport interface SwitchProps
|
|
1
|
+
{"version":3,"file":"Switch.js","sources":["../../../src/components/ui/Switch.tsx"],"sourcesContent":["'use client';\n\nimport {\n forwardRef,\n useId,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { cn } from '@/lib/utils';\n\nexport interface SwitchProps extends Omit<\n ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n 'asChild'\n> {\n /** Inline label rendered to the right. */\n label?: ReactNode;\n /** Secondary description rendered below the label. */\n description?: ReactNode;\n /** Position the label before the switch instead of after. */\n labelPosition?: 'before' | 'after';\n /** Visual size. */\n size?: 'sm' | 'md';\n /** Hide the label visually while keeping it accessible. */\n hideLabel?: boolean;\n}\n\n// Tracks are 28×16 (`sm`) / 36×20 (`md`) visually; the `before:` halo lifts\n// the hit area to ≥24px tall without changing the drawing (WCAG 2.5.8).\nconst trackSize = {\n sm: 'h-4 w-7 before:absolute before:-inset-x-1 before:-inset-y-1.5 before:content-[\"\"]',\n md: 'h-5 w-9 before:absolute before:-inset-x-1 before:-inset-y-1 before:content-[\"\"]',\n} as const;\nconst thumbSize = {\n sm: 'size-3 data-[state=checked]:translate-x-3',\n md: 'size-4 data-[state=checked]:translate-x-4',\n} as const;\n\n/**\n * Binary on/off toggle for instant-apply settings. Use Checkbox when the\n * choice is part of a form that needs explicit submission.\n *\n * @example Instant toggle\n * <Switch label=\"Email digest\" checked={on} onCheckedChange={setOn} />\n *\n * @example With description\n * <Switch label=\"Two-factor authentication\"\n * description=\"Required for admins on production accounts.\"\n * checked={tfa}\n * onCheckedChange={setTfa} />\n *\n * @do Use Switch when the change takes effect immediately. Pair with\n * a toast confirming the new state.\n * @dont Use Switch inside a form that requires submission — Checkbox\n * better matches that mental model.\n */\nexport const Switch = forwardRef<ElementRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n function Switch(\n {\n className,\n label,\n description,\n labelPosition = 'after',\n size = 'md',\n hideLabel,\n id,\n disabled,\n 'aria-describedby': ariaDescribedby,\n ...props\n },\n ref,\n ) {\n const autoId = useId();\n const fieldId = id ?? autoId;\n const descId = description ? `${fieldId}-desc` : undefined;\n const describedBy = [descId, ariaDescribedby].filter(Boolean).join(' ') || undefined;\n\n const control = (\n <SwitchPrimitive.Root\n ref={ref}\n id={fieldId}\n disabled={disabled}\n aria-describedby={describedBy}\n className={cn(\n 'peer relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent',\n 'transition-colors duration-[var(--duration-base)] ease-[var(--ease-out)]',\n 'focus-visible:ring-ring focus-visible:ring-offset-background outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-accent data-[state=unchecked]:bg-switch-track-off',\n 'aria-invalid:ring-danger aria-invalid:ring-2',\n trackSize[size],\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n 'bg-switch-thumb pointer-events-none block rounded-full shadow-sm',\n 'transition-transform duration-[var(--duration-base)] ease-[var(--ease-out)]',\n 'translate-x-0',\n thumbSize[size],\n )}\n />\n </SwitchPrimitive.Root>\n );\n\n const labelBlock = label && (\n <div className=\"flex flex-col gap-0.5 select-none\">\n <label\n htmlFor={fieldId}\n className={cn(\n 'text-foreground text-sm',\n disabled && 'cursor-not-allowed opacity-50',\n hideLabel && 'sr-only',\n )}\n >\n {label}\n </label>\n {description && (\n <p id={descId} className=\"text-foreground-subtle text-xs\">\n {description}\n </p>\n )}\n </div>\n );\n\n return (\n <div className={cn('inline-flex items-center gap-2.5', className)}>\n {labelPosition === 'before' && labelBlock}\n {control}\n {labelPosition === 'after' && labelBlock}\n </div>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"],"names":["trackSize","thumbSize","Switch","forwardRef","className","label","description","labelPosition","size","hideLabel","id","disabled","ariaDescribedby","props","ref","autoId","useId","fieldId","descId","describedBy","control","jsx","SwitchPrimitive","cn","labelBlock","jsxs"],"mappings":";;;;;AA8BA,MAAMA,IAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AACN,GACMC,IAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AACN,GAoBaC,IAASC;AAAA,EACpB,SACE;AAAA,IACE,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC,IAAgB;AAAA,IAChB,MAAAC,IAAO;AAAA,IACP,WAAAC;AAAA,IACA,IAAAC;AAAA,IACA,UAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,GAAGC;AAAA,EAAA,GAELC,GACA;AACA,UAAMC,IAASC,EAAA,GACTC,IAAUP,KAAMK,GAChBG,IAASZ,IAAc,GAAGW,CAAO,UAAU,QAC3CE,IAAc,CAACD,GAAQN,CAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK,QAErEQ,IACJ,gBAAAC;AAAA,MAACC,EAAgB;AAAA,MAAhB;AAAA,QACC,KAAAR;AAAA,QACA,IAAIG;AAAA,QACJ,UAAAN;AAAA,QACA,oBAAkBQ;AAAA,QAClB,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAvB,EAAUQ,CAAI;AAAA,QAAA;AAAA,QAEf,GAAGK;AAAA,QAEJ,UAAA,gBAAAQ;AAAA,UAACC,EAAgB;AAAA,UAAhB;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAtB,EAAUO,CAAI;AAAA,YAAA;AAAA,UAChB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAIEgB,IAAanB,KACjB,gBAAAoB,EAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAA,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASJ;AAAA,UACT,WAAWM;AAAA,YACT;AAAA,YACAZ,KAAY;AAAA,YACZF,KAAa;AAAA,UAAA;AAAA,UAGd,UAAAJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAEFC,KACC,gBAAAe,EAAC,KAAA,EAAE,IAAIH,GAAQ,WAAU,kCACtB,UAAAZ,EAAA,CACH;AAAA,IAAA,GAEJ;AAGF,6BACG,OAAA,EAAI,WAAWiB,EAAG,oCAAoCnB,CAAS,GAC7D,UAAA;AAAA,MAAAG,MAAkB,YAAYiB;AAAA,MAC9BJ;AAAA,MACAb,MAAkB,WAAWiB;AAAA,IAAA,GAChC;AAAA,EAEJ;AACF;AAEAtB,EAAO,cAAc;"}
|
|
@@ -1,12 +1,36 @@
|
|
|
1
|
-
import { HTMLAttributes, ThHTMLAttributes, TdHTMLAttributes } from 'react';
|
|
2
|
-
export
|
|
1
|
+
import { CSSProperties, HTMLAttributes, ThHTMLAttributes, TdHTMLAttributes } from 'react';
|
|
2
|
+
export interface TableProps extends HTMLAttributes<HTMLTableElement> {
|
|
3
|
+
/** Class for the scroll wrapper (border, radius, height). */
|
|
4
|
+
containerClassName?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Max height of the scroll wrapper. Required for the sticky header to
|
|
7
|
+
* work — `<thead>` sticks to the nearest scroll container, so a wrapper
|
|
8
|
+
* with no height cap never scrolls. e.g. `maxHeight="24rem"`.
|
|
9
|
+
*/
|
|
10
|
+
maxHeight?: CSSProperties['maxHeight'];
|
|
11
|
+
/**
|
|
12
|
+
* Accessible name of the scroll wrapper (it is a focusable `group` so
|
|
13
|
+
* keyboard users can scroll wide / capped tables). Defaults to
|
|
14
|
+
* `strings.table.scrollRegion`; pass the table's own title when you have one.
|
|
15
|
+
*/
|
|
16
|
+
scrollLabel?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const Table: import('react').ForwardRefExoticComponent<TableProps & import('react').RefAttributes<HTMLTableElement>>;
|
|
3
19
|
export declare const TableHeader: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import('react').RefAttributes<HTMLTableSectionElement>>;
|
|
4
20
|
export declare const TableBody: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import('react').RefAttributes<HTMLTableSectionElement>>;
|
|
5
21
|
export declare const TableFooter: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import('react').RefAttributes<HTMLTableSectionElement>>;
|
|
6
22
|
export declare const TableRow: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLTableRowElement> & {
|
|
23
|
+
/**
|
|
24
|
+
* Visual selected state (`data-state="selected"`). `aria-selected` is only
|
|
25
|
+
* valid on rows of an ARIA grid, so it is emitted only when the row
|
|
26
|
+
* carries `role="row"` (i.e. you opted into `role="grid"` on the table).
|
|
27
|
+
*/
|
|
7
28
|
selected?: boolean;
|
|
8
29
|
} & import('react').RefAttributes<HTMLTableRowElement>>;
|
|
9
|
-
export
|
|
30
|
+
export type TableCellAlign = 'left' | 'center' | 'right';
|
|
31
|
+
export interface TableHeadProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'> {
|
|
32
|
+
/** Horizontal alignment; `right` also applies tabular figures. */
|
|
33
|
+
align?: TableCellAlign;
|
|
10
34
|
/**
|
|
11
35
|
* Render the header label in small caps (`uppercase tracking-wide`).
|
|
12
36
|
* Off by default — mixed case reads better for long / Cyrillic labels.
|
|
@@ -15,9 +39,13 @@ export interface TableHeadProps extends ThHTMLAttributes<HTMLTableCellElement> {
|
|
|
15
39
|
uppercase?: boolean;
|
|
16
40
|
}
|
|
17
41
|
export declare const TableHead: import('react').ForwardRefExoticComponent<TableHeadProps & import('react').RefAttributes<HTMLTableCellElement>>;
|
|
18
|
-
export
|
|
42
|
+
export interface TableCellProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'> {
|
|
43
|
+
/** Horizontal alignment; `right` also applies tabular figures for numbers. */
|
|
44
|
+
align?: TableCellAlign;
|
|
45
|
+
}
|
|
46
|
+
export declare const TableCell: import('react').ForwardRefExoticComponent<TableCellProps & import('react').RefAttributes<HTMLTableCellElement>>;
|
|
19
47
|
export declare const TableCaption: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLTableCaptionElement> & import('react').RefAttributes<HTMLTableCaptionElement>>;
|
|
20
|
-
export interface TableSortHeaderProps extends
|
|
48
|
+
export interface TableSortHeaderProps extends TableHeadProps {
|
|
21
49
|
/** Stable column key used in `currentSort.key`. */
|
|
22
50
|
sortKey: string;
|
|
23
51
|
/** Currently sorted column + direction (or null). */
|