@dashforge/tw 0.2.1-beta → 0.4.0-beta

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.
Files changed (86) hide show
  1. package/CHANGELOG.md +257 -0
  2. package/CONSUMER-VALIDATION.md +130 -0
  3. package/PARITY.md +483 -0
  4. package/PERFORMANCE.md +169 -0
  5. package/dist/index.esm.js +801 -42
  6. package/dist/src/components/Accordion/Accordion.d.ts +21 -0
  7. package/dist/src/components/Accordion/Accordion.d.ts.map +1 -0
  8. package/dist/src/components/Accordion/accordion.types.d.ts +74 -0
  9. package/dist/src/components/Accordion/accordion.types.d.ts.map +1 -0
  10. package/dist/src/components/Accordion/accordion.variants.d.ts +58 -0
  11. package/dist/src/components/Accordion/accordion.variants.d.ts.map +1 -0
  12. package/dist/src/components/AppShell/AppShell.d.ts +14 -0
  13. package/dist/src/components/AppShell/AppShell.d.ts.map +1 -1
  14. package/dist/src/components/AppShell/appShell.variants.d.ts.map +1 -1
  15. package/dist/src/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  16. package/dist/src/components/Autocomplete/autocomplete.variants.d.ts.map +1 -1
  17. package/dist/src/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +1 -1
  18. package/dist/src/components/Checkbox/Checkbox.d.ts.map +1 -1
  19. package/dist/src/components/Dialog/Dialog.d.ts +17 -0
  20. package/dist/src/components/Dialog/Dialog.d.ts.map +1 -0
  21. package/dist/src/components/Dialog/dialog.types.d.ts +75 -0
  22. package/dist/src/components/Dialog/dialog.types.d.ts.map +1 -0
  23. package/dist/src/components/Dialog/dialog.variants.d.ts +80 -0
  24. package/dist/src/components/Dialog/dialog.variants.d.ts.map +1 -0
  25. package/dist/src/components/LeftNav/leftNav.variants.d.ts.map +1 -1
  26. package/dist/src/components/Popover/Popover.d.ts +15 -0
  27. package/dist/src/components/Popover/Popover.d.ts.map +1 -0
  28. package/dist/src/components/Popover/popover.types.d.ts +45 -0
  29. package/dist/src/components/Popover/popover.types.d.ts.map +1 -0
  30. package/dist/src/components/Popover/popover.variants.d.ts +34 -0
  31. package/dist/src/components/Popover/popover.variants.d.ts.map +1 -0
  32. package/dist/src/components/Snackbar/snackbar.variants.d.ts.map +1 -1
  33. package/dist/src/components/Switch/switch.variants.d.ts.map +1 -1
  34. package/dist/src/components/Tabs/Tabs.d.ts +15 -0
  35. package/dist/src/components/Tabs/Tabs.d.ts.map +1 -0
  36. package/dist/src/components/Tabs/tabs.types.d.ts +55 -0
  37. package/dist/src/components/Tabs/tabs.types.d.ts.map +1 -0
  38. package/dist/src/components/Tabs/tabs.variants.d.ts +82 -0
  39. package/dist/src/components/Tabs/tabs.variants.d.ts.map +1 -0
  40. package/dist/src/components/TextField/TextField.d.ts.map +1 -1
  41. package/dist/src/components/TextField/textField.types.d.ts +29 -3
  42. package/dist/src/components/TextField/textField.types.d.ts.map +1 -1
  43. package/dist/src/components/TextField/textField.variants.d.ts +6 -0
  44. package/dist/src/components/TextField/textField.variants.d.ts.map +1 -1
  45. package/dist/src/components/Tooltip/Tooltip.d.ts +29 -0
  46. package/dist/src/components/Tooltip/Tooltip.d.ts.map +1 -0
  47. package/dist/src/components/Tooltip/tooltip.types.d.ts +47 -0
  48. package/dist/src/components/Tooltip/tooltip.types.d.ts.map +1 -0
  49. package/dist/src/components/Tooltip/tooltip.variants.d.ts +34 -0
  50. package/dist/src/components/Tooltip/tooltip.variants.d.ts.map +1 -0
  51. package/dist/src/index.d.ts +16 -1
  52. package/dist/src/index.d.ts.map +1 -1
  53. package/package.json +6 -1
  54. package/src/components/Accordion/Accordion.test.tsx +95 -0
  55. package/src/components/Accordion/Accordion.tsx +97 -0
  56. package/src/components/Accordion/accordion.types.ts +66 -0
  57. package/src/components/Accordion/accordion.variants.ts +30 -0
  58. package/src/components/AppShell/AppShell.tsx +126 -1
  59. package/src/components/AppShell/appShell.variants.ts +8 -2
  60. package/src/components/Autocomplete/Autocomplete.tsx +77 -4
  61. package/src/components/Autocomplete/autocomplete.variants.ts +6 -0
  62. package/src/components/Breadcrumbs/breadcrumbs.variants.ts +5 -0
  63. package/src/components/Checkbox/Checkbox.tsx +43 -9
  64. package/src/components/Dialog/Dialog.test.tsx +96 -0
  65. package/src/components/Dialog/Dialog.tsx +93 -0
  66. package/src/components/Dialog/dialog.types.ts +62 -0
  67. package/src/components/Dialog/dialog.variants.ts +62 -0
  68. package/src/components/LeftNav/leftNav.variants.ts +12 -1
  69. package/src/components/Popover/Popover.test.tsx +72 -0
  70. package/src/components/Popover/Popover.tsx +55 -0
  71. package/src/components/Popover/popover.types.ts +42 -0
  72. package/src/components/Popover/popover.variants.ts +18 -0
  73. package/src/components/Snackbar/snackbar.variants.ts +4 -2
  74. package/src/components/Switch/switch.variants.ts +6 -1
  75. package/src/components/Tabs/Tabs.test.tsx +74 -0
  76. package/src/components/Tabs/Tabs.tsx +66 -0
  77. package/src/components/Tabs/tabs.types.ts +49 -0
  78. package/src/components/Tabs/tabs.variants.ts +58 -0
  79. package/src/components/TextField/TextField.tsx +29 -0
  80. package/src/components/TextField/textField.types.ts +23 -3
  81. package/src/components/TextField/textField.variants.ts +18 -0
  82. package/src/components/Tooltip/Tooltip.test.tsx +73 -0
  83. package/src/components/Tooltip/Tooltip.tsx +70 -0
  84. package/src/components/Tooltip/tooltip.types.ts +44 -0
  85. package/src/components/Tooltip/tooltip.variants.ts +18 -0
  86. package/src/index.ts +40 -1
@@ -0,0 +1,21 @@
1
+ import type { AccordionProps } from './accordion.types.js';
2
+ /**
3
+ * Dashforge TW `<Accordion>` — collapsible section list.
4
+ *
5
+ * Built on `@radix-ui/react-accordion`:
6
+ * - APG accordion pattern: `role="region"` on content, header
7
+ * button with `aria-expanded` and `aria-controls` linked to
8
+ * the panel.
9
+ * - Keyboard support: Space / Enter toggle, ArrowDown / ArrowUp
10
+ * move focus between triggers, Home / End to extremes.
11
+ * - Two modes:
12
+ * - `type="single"` — at most one section open at a time;
13
+ * `collapsible` allows clicking the open section to close it
14
+ * (default true).
15
+ * - `type="multiple"` — multiple sections open simultaneously.
16
+ *
17
+ * The trigger renders a chevron that flips 180° via CSS
18
+ * (`data-state=open` selector) — no React state, no JS animation.
19
+ */
20
+ export declare function Accordion(props: AccordionProps): import("react/jsx-runtime").JSX.Element;
21
+ //# sourceMappingURL=Accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/Accordion/Accordion.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAqE9C"}
@@ -0,0 +1,74 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface AccordionSlotProps {
3
+ root?: {
4
+ className?: string;
5
+ };
6
+ item?: {
7
+ className?: string;
8
+ };
9
+ header?: {
10
+ className?: string;
11
+ };
12
+ trigger?: {
13
+ className?: string;
14
+ };
15
+ content?: {
16
+ className?: string;
17
+ };
18
+ chevron?: {
19
+ className?: string;
20
+ };
21
+ }
22
+ /**
23
+ * Single accordion section — paired `{ value, header, content }`.
24
+ * The `value` is the canonical id (used in `value` / `defaultValue`
25
+ * to control which sections are expanded).
26
+ */
27
+ export interface AccordionItem {
28
+ value: string;
29
+ /** Trigger label (clickable to expand / collapse). */
30
+ header: ReactNode;
31
+ /** Section body, revealed when this item is expanded. */
32
+ content: ReactNode;
33
+ /** Per-item disabled flag. */
34
+ disabled?: boolean;
35
+ }
36
+ interface AccordionBaseProps {
37
+ items: AccordionItem[];
38
+ /** Root className shortcut. */
39
+ sx?: string;
40
+ /** Per-slot overrides. */
41
+ slotProps?: AccordionSlotProps;
42
+ }
43
+ /**
44
+ * Single-mode props — at most one section open at a time.
45
+ * `collapsible: true` (default) lets the user close the open
46
+ * section by clicking it again.
47
+ */
48
+ export interface AccordionSingleProps extends AccordionBaseProps {
49
+ type?: 'single';
50
+ value?: string;
51
+ defaultValue?: string;
52
+ onValueChange?: (value: string) => void;
53
+ /** @default true */
54
+ collapsible?: boolean;
55
+ }
56
+ /**
57
+ * Multiple-mode props — any number of sections open simultaneously.
58
+ */
59
+ export interface AccordionMultipleProps extends AccordionBaseProps {
60
+ type: 'multiple';
61
+ value?: string[];
62
+ defaultValue?: string[];
63
+ onValueChange?: (value: string[]) => void;
64
+ }
65
+ /**
66
+ * Props for `<Accordion>`.
67
+ *
68
+ * Built on `@radix-ui/react-accordion`. Discriminated by `type`:
69
+ * - `type="single"` (default) — `value` is `string`.
70
+ * - `type="multiple"` — `value` is `string[]`.
71
+ */
72
+ export type AccordionProps = AccordionSingleProps | AccordionMultipleProps;
73
+ export {};
74
+ //# sourceMappingURL=accordion.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Accordion/accordion.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,MAAM,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,OAAO,EAAE,SAAS,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,oBAAoB;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export declare const accordionVariants: import("tailwind-variants").TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import("tailwind-merge").ClassNameValue | {
5
+ content?: import("tailwind-merge").ClassNameValue;
6
+ root?: import("tailwind-merge").ClassNameValue;
7
+ trigger?: import("tailwind-merge").ClassNameValue;
8
+ item?: import("tailwind-merge").ClassNameValue;
9
+ header?: import("tailwind-merge").ClassNameValue;
10
+ chevron?: import("tailwind-merge").ClassNameValue;
11
+ };
12
+ };
13
+ } | {
14
+ [x: string]: {
15
+ [x: string]: import("tailwind-merge").ClassNameValue | {
16
+ content?: import("tailwind-merge").ClassNameValue;
17
+ root?: import("tailwind-merge").ClassNameValue;
18
+ trigger?: import("tailwind-merge").ClassNameValue;
19
+ item?: import("tailwind-merge").ClassNameValue;
20
+ header?: import("tailwind-merge").ClassNameValue;
21
+ chevron?: import("tailwind-merge").ClassNameValue;
22
+ };
23
+ };
24
+ } | {}, {
25
+ root: string;
26
+ item: string;
27
+ header: string;
28
+ trigger: string[];
29
+ content: string[];
30
+ chevron: string[];
31
+ }, undefined, {
32
+ [key: string]: {
33
+ [key: string]: import("tailwind-merge").ClassNameValue | {
34
+ content?: import("tailwind-merge").ClassNameValue;
35
+ root?: import("tailwind-merge").ClassNameValue;
36
+ trigger?: import("tailwind-merge").ClassNameValue;
37
+ item?: import("tailwind-merge").ClassNameValue;
38
+ header?: import("tailwind-merge").ClassNameValue;
39
+ chevron?: import("tailwind-merge").ClassNameValue;
40
+ };
41
+ };
42
+ } | {}, {
43
+ root: string;
44
+ item: string;
45
+ header: string;
46
+ trigger: string[];
47
+ content: string[];
48
+ chevron: string[];
49
+ }, import("tailwind-variants").TVReturnType<unknown, {
50
+ root: string;
51
+ item: string;
52
+ header: string;
53
+ trigger: string[];
54
+ content: string[];
55
+ chevron: string[];
56
+ }, undefined, unknown, unknown, undefined>>;
57
+ export type AccordionVariants = VariantProps<typeof accordionVariants>;
58
+ //# sourceMappingURL=accordion.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Accordion/accordion.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAyB5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -27,6 +27,20 @@ import type { AppShellProps } from './appShell.types.js';
27
27
  * - The mobile drawer + backdrop participate in the standard
28
28
  * "click outside to close" pattern — `Escape` closes the drawer
29
29
  * too (added via global keydown).
30
+ * - **Focus trap** (WCAG 2.4.3) — when the mobile drawer opens:
31
+ * 1. The previously-focused element is captured.
32
+ * 2. Focus moves to the first focusable element inside the drawer.
33
+ * 3. Tab / Shift+Tab wrap inside the drawer (cycle from
34
+ * last → first and first → last) — Tab can never escape
35
+ * to the page underneath while the drawer is open.
36
+ * 4. On close, focus returns to the captured element (typically
37
+ * the hamburger toggle the user pressed to open the drawer).
38
+ * This pattern matches WAI-ARIA APG's modal dialog guidance even
39
+ * though the drawer isn't strictly a dialog — same focus
40
+ * management makes keyboard users' experience predictable.
41
+ * - **`role="dialog"` + `aria-modal="true"`** are applied to the
42
+ * drawer when open so screen readers announce it as a modal
43
+ * overlay rather than just an aside.
30
44
  */
31
45
  export declare function AppShell(props: AppShellProps): import("react/jsx-runtime").JSX.Element;
32
46
  //# sourceMappingURL=AppShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CA+E5C"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA0BzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAsK5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"appShell.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/appShell.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA8B3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"appShell.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/AppShell/appShell.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAoC3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAuCjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAG,kBAAkB,EACvD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,kDAu4BlC"}
1
+ {"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AA8FjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAG,kBAAkB,EACvD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,kDAy5BlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/autocomplete.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6G/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"autocomplete.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Autocomplete/autocomplete.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmH/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Breadcrumbs/breadcrumbs.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAgC9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"breadcrumbs.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Breadcrumbs/breadcrumbs.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAqC9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA2BzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kDA2L5C"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA0DzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kDA8L5C"}
@@ -0,0 +1,17 @@
1
+ import type { DialogProps } from './dialog.types.js';
2
+ /**
3
+ * Dashforge TW `<Dialog>` — declarative modal dialog.
4
+ *
5
+ * Built on `@radix-ui/react-dialog`:
6
+ * - APG dialog pattern out of the box (focus trap, restore focus on
7
+ * close, Esc-to-close, `aria-modal`, `aria-labelledby`).
8
+ * - Renders into a portal (no z-index hell).
9
+ * - Scroll lock on `<body>` while open.
10
+ *
11
+ * Use the imperative `useDialog()` (export from this same module) if
12
+ * you want a `confirm()`-style return value pattern (similar to
13
+ * `useConfirm()` from `ConfirmDialog`). Use `<Dialog>` when you want
14
+ * the control flow living in your component tree.
15
+ */
16
+ export declare function Dialog(props: DialogProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=Dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAyExC"}
@@ -0,0 +1,75 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { DialogVariants } from './dialog.variants.js';
3
+ /**
4
+ * Per-slot className overrides for `<Dialog>`. Mirrors the
5
+ * canonical TW slotProps shape: `{ slot?: { className?: string } }`.
6
+ */
7
+ export interface DialogSlotProps {
8
+ overlay?: {
9
+ className?: string;
10
+ };
11
+ content?: {
12
+ className?: string;
13
+ };
14
+ title?: {
15
+ className?: string;
16
+ };
17
+ description?: {
18
+ className?: string;
19
+ };
20
+ closeButton?: {
21
+ className?: string;
22
+ };
23
+ body?: {
24
+ className?: string;
25
+ };
26
+ actions?: {
27
+ className?: string;
28
+ };
29
+ }
30
+ /**
31
+ * Props for the declarative `<Dialog>` component.
32
+ *
33
+ * Built on `@radix-ui/react-dialog`. Use this when:
34
+ * - You want full control over the dialog's open state (controlled
35
+ * from a parent component).
36
+ * - You want to mount a custom-styled dialog body / trigger that
37
+ * composes with the rest of your component tree.
38
+ * - You don't need an imperative `confirm()`-style return value
39
+ * (use `useDialog()` or `useConfirm()` for those).
40
+ *
41
+ * Three size variants (`sm` / `md` / `lg`) with sensible defaults.
42
+ * Backdrop + content animations respect `prefers-reduced-motion`.
43
+ */
44
+ export interface DialogProps extends Pick<DialogVariants, 'size'> {
45
+ /** Controlled open state. */
46
+ open: boolean;
47
+ /** Called when the dialog requests to change open state. */
48
+ onOpenChange: (open: boolean) => void;
49
+ /** Dialog body — usually a `<DialogContent>` subtree. */
50
+ children: ReactNode;
51
+ /** Dialog title (screen-reader announced via `aria-labelledby`). */
52
+ title?: ReactNode;
53
+ /** Dialog description (announced via `aria-describedby`). */
54
+ description?: ReactNode;
55
+ /**
56
+ * Show the `×` close button in the top-right corner.
57
+ * @default true
58
+ */
59
+ showCloseButton?: boolean;
60
+ /**
61
+ * Disable closing on backdrop click.
62
+ * @default false
63
+ */
64
+ disableBackdropClose?: boolean;
65
+ /**
66
+ * Disable closing on Escape key.
67
+ * @default false
68
+ */
69
+ disableEscapeClose?: boolean;
70
+ /** Root className shortcut on the content element. */
71
+ sx?: string;
72
+ /** Per-slot overrides. */
73
+ slotProps?: DialogSlotProps;
74
+ }
75
+ //# sourceMappingURL=dialog.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/dialog.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IAC/D,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,4DAA4D;IAC5D,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,yDAAyD;IACzD,QAAQ,EAAE,SAAS,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B"}
@@ -0,0 +1,80 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ /**
3
+ * `<Dialog>` variant recipe.
4
+ *
5
+ * Slots:
6
+ * - `overlay` — backdrop (Radix's `DialogOverlay`)
7
+ * - `content` — the dialog box itself
8
+ * - `title` — heading at the top
9
+ * - `description` — secondary text under the title
10
+ * - `closeButton` — top-right `×` button
11
+ * - `body` — main scrollable area
12
+ * - `actions` — footer action bar
13
+ *
14
+ * Three sizes (`sm` / `md` / `lg`) drive the content max-width.
15
+ * Motion is gated by `prefers-reduced-motion` so the slide-in
16
+ * animation collapses to an instant appear on users that opt out.
17
+ */
18
+ export declare const dialogVariants: import("tailwind-variants").TVReturnType<{
19
+ size: {
20
+ sm: {
21
+ content: string;
22
+ };
23
+ md: {
24
+ content: string;
25
+ };
26
+ lg: {
27
+ content: string;
28
+ };
29
+ };
30
+ }, {
31
+ overlay: string[];
32
+ content: string[];
33
+ title: string;
34
+ description: string;
35
+ closeButton: string[];
36
+ body: string;
37
+ actions: string;
38
+ }, undefined, {
39
+ size: {
40
+ sm: {
41
+ content: string;
42
+ };
43
+ md: {
44
+ content: string;
45
+ };
46
+ lg: {
47
+ content: string;
48
+ };
49
+ };
50
+ }, {
51
+ overlay: string[];
52
+ content: string[];
53
+ title: string;
54
+ description: string;
55
+ closeButton: string[];
56
+ body: string;
57
+ actions: string;
58
+ }, import("tailwind-variants").TVReturnType<{
59
+ size: {
60
+ sm: {
61
+ content: string;
62
+ };
63
+ md: {
64
+ content: string;
65
+ };
66
+ lg: {
67
+ content: string;
68
+ };
69
+ };
70
+ }, {
71
+ overlay: string[];
72
+ content: string[];
73
+ title: string;
74
+ description: string;
75
+ closeButton: string[];
76
+ body: string;
77
+ actions: string;
78
+ }, undefined, unknown, unknown, undefined>>;
79
+ export type DialogVariants = VariantProps<typeof dialogVariants>;
80
+ //# sourceMappingURL=dialog.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Dialog/dialog.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAyCzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"leftNav.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/LeftNav/leftNav.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAwE1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"leftNav.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/LeftNav/leftNav.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmF1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { PopoverProps } from './popover.types.js';
2
+ /**
3
+ * Dashforge TW `<Popover>` — clickable floating content panel.
4
+ *
5
+ * Built on `@radix-ui/react-popover`:
6
+ * - Focus trap inside the popover (Tab cycles within).
7
+ * - Outside-click + Escape dismiss.
8
+ * - APG dialog-like semantics (`role="dialog"` on content).
9
+ * - Portal-rendered.
10
+ *
11
+ * Use `<Popover>` for menus / pickers / settings panels with
12
+ * interactive children. Use `<Tooltip>` for read-only hints.
13
+ */
14
+ export declare function Popover(props: PopoverProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=Popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../../src/components/Popover/Popover.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAqC1C"}
@@ -0,0 +1,45 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface PopoverSlotProps {
3
+ content?: {
4
+ className?: string;
5
+ };
6
+ arrow?: {
7
+ className?: string;
8
+ };
9
+ }
10
+ /**
11
+ * Props for `<Popover>`.
12
+ *
13
+ * Built on `@radix-ui/react-popover`. Use for richer floating UI
14
+ * than a tooltip — e.g. action menus, color pickers, settings
15
+ * panels.
16
+ *
17
+ * Differences vs `<Tooltip>`:
18
+ * - Popover is **clickable** and captures focus inside (focus trap).
19
+ * - Popover supports arbitrary interactive content (forms, buttons).
20
+ * - Popover dismisses on outside-click / Escape (Radix-managed).
21
+ * - No `role="tooltip"` — popovers are conceptually mini-dialogs.
22
+ */
23
+ export interface PopoverProps {
24
+ /** The trigger element (wrapped in Radix's `asChild` slot). */
25
+ children: ReactNode;
26
+ /** Popover body content. */
27
+ content: ReactNode;
28
+ /** Side of the trigger to render on. @default 'bottom' */
29
+ side?: 'top' | 'right' | 'bottom' | 'left';
30
+ /** Alignment along the perpendicular axis. @default 'center' */
31
+ align?: 'start' | 'center' | 'end';
32
+ /** Show an arrow indicator. @default false */
33
+ showArrow?: boolean;
34
+ /** Controlled open state. */
35
+ open?: boolean;
36
+ /** Called when open state changes. */
37
+ onOpenChange?: (open: boolean) => void;
38
+ /** Side offset in pixels. @default 8 */
39
+ sideOffset?: number;
40
+ /** Width of the popover content. CSS value. */
41
+ width?: string;
42
+ /** Per-slot overrides. */
43
+ slotProps?: PopoverSlotProps;
44
+ }
45
+ //# sourceMappingURL=popover.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Popover/popover.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,CAAC;IACpB,4BAA4B;IAC5B,OAAO,EAAE,SAAS,CAAC;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B"}
@@ -0,0 +1,34 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export declare const popoverVariants: import("tailwind-variants").TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import("tailwind-merge").ClassNameValue | {
5
+ content?: import("tailwind-merge").ClassNameValue;
6
+ arrow?: import("tailwind-merge").ClassNameValue;
7
+ };
8
+ };
9
+ } | {
10
+ [x: string]: {
11
+ [x: string]: import("tailwind-merge").ClassNameValue | {
12
+ content?: import("tailwind-merge").ClassNameValue;
13
+ arrow?: import("tailwind-merge").ClassNameValue;
14
+ };
15
+ };
16
+ } | {}, {
17
+ content: string[];
18
+ arrow: string;
19
+ }, undefined, {
20
+ [key: string]: {
21
+ [key: string]: import("tailwind-merge").ClassNameValue | {
22
+ content?: import("tailwind-merge").ClassNameValue;
23
+ arrow?: import("tailwind-merge").ClassNameValue;
24
+ };
25
+ };
26
+ } | {}, {
27
+ content: string[];
28
+ arrow: string;
29
+ }, import("tailwind-variants").TVReturnType<unknown, {
30
+ content: string[];
31
+ arrow: string;
32
+ }, undefined, unknown, unknown, undefined>>;
33
+ export type PopoverVariants = VariantProps<typeof popoverVariants>;
34
+ //# sourceMappingURL=popover.variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Popover/popover.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAa1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"snackbar.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Snackbar/snackbar.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAwD3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"snackbar.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Snackbar/snackbar.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA0D3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"switch.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Switch/switch.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAiDzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"switch.variants.d.ts","sourceRoot":"","sources":["../../../../src/components/Switch/switch.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAsDzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { TabsProps } from './tabs.types.js';
2
+ /**
3
+ * Dashforge TW `<Tabs>` — declarative tab navigation.
4
+ *
5
+ * Built on `@radix-ui/react-tabs`:
6
+ * - APG tabs pattern (arrow-key navigation, automatic activation,
7
+ * `role="tablist"` + `role="tab"` + `role="tabpanel"`).
8
+ * - Controlled / uncontrolled (`value` / `defaultValue`).
9
+ *
10
+ * Two variant axes:
11
+ * - `variant` — `underline` (default) | `pill`
12
+ * - `orientation` — `horizontal` (default) | `vertical`
13
+ */
14
+ export declare function Tabs(props: TabsProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CAgDpC"}
@@ -0,0 +1,55 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TabsVariants } from './tabs.variants.js';
3
+ export interface TabsSlotProps {
4
+ root?: {
5
+ className?: string;
6
+ };
7
+ list?: {
8
+ className?: string;
9
+ };
10
+ trigger?: {
11
+ className?: string;
12
+ };
13
+ content?: {
14
+ className?: string;
15
+ };
16
+ }
17
+ /**
18
+ * Single tab item — paired `{ value, label, content }`. The `value`
19
+ * is the canonical id (selected via the `value` / `defaultValue`
20
+ * props on the root); the `label` is the trigger button text, and
21
+ * `content` is what renders in the panel when this tab is active.
22
+ */
23
+ export interface TabItem {
24
+ value: string;
25
+ label: ReactNode;
26
+ /** Tab panel content. */
27
+ content: ReactNode;
28
+ /** Per-tab disabled flag. */
29
+ disabled?: boolean;
30
+ }
31
+ /**
32
+ * Props for `<Tabs>`.
33
+ *
34
+ * Built on `@radix-ui/react-tabs`. Two variant axes:
35
+ * - `variant` — `underline` (default) | `pill`
36
+ * - `orientation` — `horizontal` (default) | `vertical`
37
+ *
38
+ * Supports controlled (`value` + `onValueChange`) and uncontrolled
39
+ * (`defaultValue`) modes — the `value` prop wins when both are set.
40
+ */
41
+ export interface TabsProps extends TabsVariants {
42
+ /** Tab items array (declarative — alternative to passing children). */
43
+ items: TabItem[];
44
+ /** Controlled active value. */
45
+ value?: string;
46
+ /** Default active value (uncontrolled). Defaults to first item's value. */
47
+ defaultValue?: string;
48
+ /** Fires when the active tab changes. */
49
+ onValueChange?: (value: string) => void;
50
+ /** Root className shortcut. */
51
+ sx?: string;
52
+ /** Per-slot overrides. */
53
+ slotProps?: TabsSlotProps;
54
+ }
55
+ //# sourceMappingURL=tabs.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Tabs/tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,uEAAuE;IACvE,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B"}