@dashforge/tw 0.11.0-beta → 1.1.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.
Files changed (134) hide show
  1. package/CHANGELOG.md +234 -12
  2. package/COVERAGE.md +2 -2
  3. package/PARITY.md +7 -9
  4. package/PERFORMANCE.md +3 -4
  5. package/README.md +74 -15
  6. package/THEME-AUDIT.md +3 -4
  7. package/dashforge-tw-1.0.0.tgz +0 -0
  8. package/dist/index.esm.js +3127 -748
  9. package/dist/src/components/Alert/Alert.d.ts +65 -0
  10. package/dist/src/components/Alert/Alert.d.ts.map +1 -0
  11. package/dist/src/components/Alert/alert.types.d.ts +130 -0
  12. package/dist/src/components/Alert/alert.types.d.ts.map +1 -0
  13. package/dist/src/components/Alert/alert.variants.d.ts +85 -0
  14. package/dist/src/components/Alert/alert.variants.d.ts.map +1 -0
  15. package/dist/src/components/Avatar/Avatar.d.ts +48 -0
  16. package/dist/src/components/Avatar/Avatar.d.ts.map +1 -0
  17. package/dist/src/components/Avatar/avatar.types.d.ts +162 -0
  18. package/dist/src/components/Avatar/avatar.types.d.ts.map +1 -0
  19. package/dist/src/components/Avatar/avatar.variants.d.ts +208 -0
  20. package/dist/src/components/Avatar/avatar.variants.d.ts.map +1 -0
  21. package/dist/src/components/Badge/Badge.d.ts +63 -0
  22. package/dist/src/components/Badge/Badge.d.ts.map +1 -0
  23. package/dist/src/components/Badge/badge.types.d.ts +124 -0
  24. package/dist/src/components/Badge/badge.types.d.ts.map +1 -0
  25. package/dist/src/components/Badge/badge.variants.d.ts +262 -0
  26. package/dist/src/components/Badge/badge.variants.d.ts.map +1 -0
  27. package/dist/src/components/Box/Box.d.ts.map +1 -1
  28. package/dist/src/components/Box/box.types.d.ts +53 -0
  29. package/dist/src/components/Box/box.types.d.ts.map +1 -1
  30. package/dist/src/components/Button/Button.d.ts.map +1 -1
  31. package/dist/src/components/Button/button.types.d.ts +35 -0
  32. package/dist/src/components/Button/button.types.d.ts.map +1 -1
  33. package/dist/src/components/Card/Card.d.ts +107 -0
  34. package/dist/src/components/Card/Card.d.ts.map +1 -0
  35. package/dist/src/components/Card/card.types.d.ts +119 -0
  36. package/dist/src/components/Card/card.types.d.ts.map +1 -0
  37. package/dist/src/components/Chip/Chip.d.ts +67 -0
  38. package/dist/src/components/Chip/Chip.d.ts.map +1 -0
  39. package/dist/src/components/Chip/chip.types.d.ts +113 -0
  40. package/dist/src/components/Chip/chip.types.d.ts.map +1 -0
  41. package/dist/src/components/Chip/chip.variants.d.ts +155 -0
  42. package/dist/src/components/Chip/chip.variants.d.ts.map +1 -0
  43. package/dist/src/components/IconButton/IconButton.d.ts +57 -0
  44. package/dist/src/components/IconButton/IconButton.d.ts.map +1 -0
  45. package/dist/src/components/IconButton/iconButton.types.d.ts +96 -0
  46. package/dist/src/components/IconButton/iconButton.types.d.ts.map +1 -0
  47. package/dist/src/components/IconButton/iconButton.variants.d.ts +26 -0
  48. package/dist/src/components/IconButton/iconButton.variants.d.ts.map +1 -0
  49. package/dist/src/components/Menu/Menu.d.ts +118 -0
  50. package/dist/src/components/Menu/Menu.d.ts.map +1 -0
  51. package/dist/src/components/Menu/menu.types.d.ts +179 -0
  52. package/dist/src/components/Menu/menu.types.d.ts.map +1 -0
  53. package/dist/src/components/Menu/menu.variants.d.ts +129 -0
  54. package/dist/src/components/Menu/menu.variants.d.ts.map +1 -0
  55. package/dist/src/components/Snackbar/Snackbar.d.ts.map +1 -1
  56. package/dist/src/components/Snackbar/snackbar.types.d.ts +40 -3
  57. package/dist/src/components/Snackbar/snackbar.types.d.ts.map +1 -1
  58. package/dist/src/components/Snackbar/snackbar.variants.d.ts +12 -57
  59. package/dist/src/components/Snackbar/snackbar.variants.d.ts.map +1 -1
  60. package/dist/src/components/Spinner/Spinner.d.ts +44 -0
  61. package/dist/src/components/Spinner/Spinner.d.ts.map +1 -0
  62. package/dist/src/components/Spinner/spinner.types.d.ts +89 -0
  63. package/dist/src/components/Spinner/spinner.types.d.ts.map +1 -0
  64. package/dist/src/components/Spinner/spinner.variants.d.ts +111 -0
  65. package/dist/src/components/Spinner/spinner.variants.d.ts.map +1 -0
  66. package/dist/src/components/Table/cells/RenderChip.d.ts +15 -72
  67. package/dist/src/components/Table/cells/RenderChip.d.ts.map +1 -1
  68. package/dist/src/components/_shared/severity/index.d.ts +21 -0
  69. package/dist/src/components/_shared/severity/index.d.ts.map +1 -0
  70. package/dist/src/components/_shared/severity/severity.types.d.ts +48 -0
  71. package/dist/src/components/_shared/severity/severity.types.d.ts.map +1 -0
  72. package/dist/src/components/_shared/severity/severityIcons.d.ts +45 -0
  73. package/dist/src/components/_shared/severity/severityIcons.d.ts.map +1 -0
  74. package/dist/src/components/_shared/severity/severityVariants.d.ts +22 -0
  75. package/dist/src/components/_shared/severity/severityVariants.d.ts.map +1 -0
  76. package/dist/src/index.d.ts +27 -2
  77. package/dist/src/index.d.ts.map +1 -1
  78. package/package.json +8 -7
  79. package/src/components/Alert/Alert.test.tsx +302 -0
  80. package/src/components/Alert/Alert.tsx +186 -0
  81. package/src/components/Alert/alert.types.ts +144 -0
  82. package/src/components/Alert/alert.variants.ts +71 -0
  83. package/src/components/Autocomplete/autocomplete.variants.ts +1 -1
  84. package/src/components/Avatar/Avatar.test.tsx +287 -0
  85. package/src/components/Avatar/Avatar.tsx +304 -0
  86. package/src/components/Avatar/avatar.types.ts +205 -0
  87. package/src/components/Avatar/avatar.variants.ts +194 -0
  88. package/src/components/Badge/Badge.test.tsx +385 -0
  89. package/src/components/Badge/Badge.tsx +174 -0
  90. package/src/components/Badge/badge.types.ts +154 -0
  91. package/src/components/Badge/badge.variants.ts +161 -0
  92. package/src/components/Box/Box.test.tsx +21 -0
  93. package/src/components/Box/Box.tsx +32 -3
  94. package/src/components/Box/box.types.ts +55 -0
  95. package/src/components/Button/Button.test.tsx +21 -0
  96. package/src/components/Button/Button.tsx +28 -27
  97. package/src/components/Button/button.types.ts +36 -0
  98. package/src/components/Card/Card.test.tsx +291 -0
  99. package/src/components/Card/Card.tsx +241 -0
  100. package/src/components/Card/card.types.ts +132 -0
  101. package/src/components/Chip/Chip.test.tsx +316 -0
  102. package/src/components/Chip/Chip.tsx +224 -0
  103. package/src/components/Chip/chip.types.ts +128 -0
  104. package/src/components/Chip/chip.variants.ts +173 -0
  105. package/src/components/DataGrid/visibility/ColumnVisibilityMenu.tsx +1 -1
  106. package/src/components/IconButton/IconButton.test.tsx +367 -0
  107. package/src/components/IconButton/IconButton.tsx +159 -0
  108. package/src/components/IconButton/iconButton.types.ts +106 -0
  109. package/src/components/IconButton/iconButton.variants.ts +31 -0
  110. package/src/components/LeftNav/leftNav.variants.ts +2 -2
  111. package/src/components/Menu/Menu.test.tsx +408 -0
  112. package/src/components/Menu/Menu.tsx +335 -0
  113. package/src/components/Menu/menu.types.ts +221 -0
  114. package/src/components/Menu/menu.variants.ts +132 -0
  115. package/src/components/Pagination/pagination.variants.ts +1 -1
  116. package/src/components/Snackbar/Snackbar.tsx +46 -28
  117. package/src/components/Snackbar/snackbar.types.ts +47 -3
  118. package/src/components/Snackbar/snackbar.variants.ts +29 -22
  119. package/src/components/Spinner/Spinner.test.tsx +199 -0
  120. package/src/components/Spinner/Spinner.tsx +158 -0
  121. package/src/components/Spinner/spinner.types.ts +113 -0
  122. package/src/components/Spinner/spinner.variants.ts +83 -0
  123. package/src/components/Table/cells/RenderChip.tsx +24 -87
  124. package/src/components/Table/cells/RowActionsMenu.tsx +1 -1
  125. package/src/components/TextField/TextField.test.tsx +5 -1
  126. package/src/components/_shared/severity/index.ts +33 -0
  127. package/src/components/_shared/severity/severity.types.ts +50 -0
  128. package/src/components/_shared/severity/severityIcons.tsx +104 -0
  129. package/src/components/_shared/severity/severityVariants.test.ts +136 -0
  130. package/src/components/_shared/severity/severityVariants.ts +115 -0
  131. package/src/index.ts +163 -1
  132. package/vite.config.ts +8 -0
  133. package/vitest.config.mts +8 -1
  134. package/LICENSE +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"RenderChip.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/cells/RenderChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG1D;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAmEhB,CAAC;AAEH,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAOhD"}
1
+ {"version":3,"file":"RenderChip.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/cells/RenderChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IACnE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAWhD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `_shared/severity/` — foundation for every severity-aware
3
+ * component in `@dashforge/tw` (Alert, refactored Snackbar, future
4
+ * Banner / status indicators).
5
+ *
6
+ * Centralising:
7
+ * - the `Severity` and `SeverityVariant` taxonomies (mirror MUI;
8
+ * `danger` not `error` for token alignment)
9
+ * - the 3×4 token-driven color matrix (token-resolved, no hardcoded
10
+ * hex, no `dark:` variants on neutral)
11
+ * - the default per-severity inline SVG icons (`icon={false}` opt-out
12
+ * supported on consumer components)
13
+ * - the ARIA role helper (`alert` vs `status`)
14
+ *
15
+ * Consumers (Alert, Snackbar) import from this barrel — never reach
16
+ * into the individual files.
17
+ */
18
+ export type { Severity, SeverityClasses, SeverityVariant, } from './severity.types.js';
19
+ export { getSeverityClasses, getSeverityRole, } from './severityVariants.js';
20
+ export { SEVERITY_DEFAULT_ICON, getDefaultSeverityIcon, } from './severityIcons.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/_shared/severity/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,EACV,QAAQ,EACR,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Shared severity types — consumed by every component that surfaces
3
+ * a "semantic visual tone" (Alert, Snackbar, Banner, Badge, Chip when
4
+ * acting as a status indicator, …).
5
+ *
6
+ * **Naming choice**: we follow MUI's `severity` taxonomy
7
+ * (`info / success / warning / danger`) and `variant` taxonomy
8
+ * (`standard / filled / outlined`) so consumers porting from MUI keep
9
+ * their muscle memory. The single Dashforge-specific divergence is
10
+ * `danger` (not MUI's `error`) — chosen to match the `danger.*` token
11
+ * palette in `@dashforge/tw-tokens`. Semantically identical to MUI's
12
+ * `error`; documented in the migration guide.
13
+ *
14
+ * @module @dashforge/tw/_shared/severity
15
+ */
16
+ /**
17
+ * Visual severity — drives the color treatment of a component.
18
+ * `danger` instead of `error` for token-palette alignment.
19
+ */
20
+ export type Severity = 'info' | 'success' | 'warning' | 'danger';
21
+ /**
22
+ * Variant of the severity surface. Mirrors MUI's `Alert` variant axis
23
+ * 1:1 so the migration story is trivial.
24
+ *
25
+ * - `standard` (default) — tinted soft background with severity-toned
26
+ * text. The "all-purpose" reading. Most modern design systems call
27
+ * this "soft".
28
+ * - `filled` — solid severity background with light text. Strong
29
+ * visual weight, for high-priority callouts.
30
+ * - `outlined` — transparent background with severity border and
31
+ * severity-toned text. Minimal weight, for dense layouts.
32
+ */
33
+ export type SeverityVariant = 'standard' | 'filled' | 'outlined';
34
+ /**
35
+ * Per-slot Tailwind class strings emitted by the severity matrix for
36
+ * one (variant, severity) pair. Resolved through `dashforgePreset()`
37
+ * to CSS variables → patch-theme friendly.
38
+ */
39
+ export interface SeverityClasses {
40
+ /** `<root>` surface: background + text + border base. */
41
+ surface: string;
42
+ /** Border overrides (kept separate from `surface` so components can
43
+ * swap `border-2` etc. without losing the color). */
44
+ border: string;
45
+ /** Icon container color (uses `currentColor` on the inner SVG). */
46
+ icon: string;
47
+ }
48
+ //# sourceMappingURL=severity.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/_shared/severity/severity.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB;0DACsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,45 @@
1
+ import type { ComponentType, ReactNode, SVGProps } from 'react';
2
+ import type { Severity } from './severity.types.js';
3
+ /**
4
+ * Default severity icons — inline stroke SVG, no runtime icon dep.
5
+ *
6
+ * Convention copied from `Calendar` / `Autocomplete` (existing pattern
7
+ * in the lib): icons live INLINE inside the component module, never as
8
+ * imports from an external icon library. The "no icons in the library"
9
+ * principle means **no external icon package** (`lucide-react`,
10
+ * `phosphor-icons`, etc.) — small file-local SVG functions are
11
+ * allowed and already used.
12
+ *
13
+ * All icons:
14
+ * - 20×20 viewBox (5:1 ratio of intrinsic size to body text-sm)
15
+ * - `stroke="currentColor"` — colored via the parent's
16
+ * `text-<severity>-600` class through the severity matrix
17
+ * - `fill="none"` — outline style, matches Tabler / Heroicons /
18
+ * Phosphor-outline conventions, low visual weight
19
+ * - `aria-hidden="true"` — the message text carries the semantic;
20
+ * the icon is decorative reinforcement, not the announcement
21
+ */
22
+ type IconProps = SVGProps<SVGSVGElement>;
23
+ declare function InfoIcon(props: IconProps): import("react/jsx-runtime").JSX.Element;
24
+ declare function SuccessIcon(props: IconProps): import("react/jsx-runtime").JSX.Element;
25
+ declare function WarningIcon(props: IconProps): import("react/jsx-runtime").JSX.Element;
26
+ declare function DangerIcon(props: IconProps): import("react/jsx-runtime").JSX.Element;
27
+ /**
28
+ * Map of severity → default Icon component. Used by Alert (and
29
+ * eventually Snackbar / Banner / etc.) to render the per-severity
30
+ * default when the consumer doesn't pass a custom `icon` prop and
31
+ * doesn't opt-out with `icon={false}`.
32
+ */
33
+ export declare const SEVERITY_DEFAULT_ICON: Record<Severity, ComponentType<IconProps>>;
34
+ /**
35
+ * Convenience helper — render the default icon for a severity as a
36
+ * `ReactNode`, ready to inject into a JSX slot.
37
+ *
38
+ * @example
39
+ * <span className={severityClasses.icon}>
40
+ * {getDefaultSeverityIcon('warning')}
41
+ * </span>
42
+ */
43
+ export declare function getDefaultSeverityIcon(severity: Severity): ReactNode;
44
+ export { InfoIcon, SuccessIcon, WarningIcon, DangerIcon };
45
+ //# sourceMappingURL=severityIcons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severityIcons.d.ts","sourceRoot":"","sources":["../../../../../src/components/_shared/severity/severityIcons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,KAAK,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAczC,iBAAS,QAAQ,CAAC,KAAK,EAAE,SAAS,2CAOjC;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,2CAOpC;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,SAAS,2CAOpC;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,SAAS,2CAOnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAK5E,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAGpE;AAKD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Severity, SeverityClasses, SeverityVariant } from './severity.types.js';
2
+ /**
3
+ * Resolve the Tailwind classes for one (variant, severity) pair.
4
+ *
5
+ * @example
6
+ * const { surface, border, icon } = getSeverityClasses('standard', 'warning');
7
+ * // surface: 'bg-warning-50 text-warning-900'
8
+ * // border: 'border-warning-100'
9
+ * // icon: 'text-warning-600'
10
+ */
11
+ export declare function getSeverityClasses(variant: SeverityVariant, severity: Severity): SeverityClasses;
12
+ /**
13
+ * ARIA role for a severity. Follows the W3C WAI-ARIA spec:
14
+ * - `alert` for assertive states (warning / danger) — interrupts the
15
+ * screen-reader announcement queue.
16
+ * - `status` for polite states (info / success) — queued behind other
17
+ * announcements.
18
+ *
19
+ * Consumers can override via an explicit `role` prop.
20
+ */
21
+ export declare function getSeverityRole(severity: Severity): 'alert' | 'status';
22
+ //# sourceMappingURL=severityVariants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severityVariants.d.ts","sourceRoot":"","sources":["../../../../../src/components/_shared/severity/severityVariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAuFtF;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,GACjB,eAAe,CAEjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAEtE"}
@@ -81,8 +81,33 @@ export { ConfirmDialogProvider, useConfirm, } from './components/ConfirmDialog/C
81
81
  export type { ConfirmDialogProviderProps, ConfirmDialogSlotProps, ConfirmFn, ConfirmOptions, ConfirmSeverity, } from './components/ConfirmDialog/confirmDialog.types.js';
82
82
  export { confirmDialogVariants } from './components/ConfirmDialog/confirmDialog.variants.js';
83
83
  export { SnackbarProvider, useSnackbar, } from './components/Snackbar/Snackbar.js';
84
- export type { SnackbarProviderProps, SnackbarApi, SnackbarOptions, SnackbarRecord, SnackbarSeverity, SnackbarPosition, SnackbarSlotProps, } from './components/Snackbar/snackbar.types.js';
84
+ export type { SnackbarProviderProps, SnackbarApi, SnackbarOptions, SnackbarRecord, SnackbarSeverity, SnackbarVariant, SnackbarPosition, SnackbarSlotProps, } from './components/Snackbar/snackbar.types.js';
85
85
  export { snackbarVariants } from './components/Snackbar/snackbar.variants.js';
86
+ export { Alert, AlertTitle } from './components/Alert/Alert.js';
87
+ export type { AlertProps, AlertTitleProps, AlertSlotProps, } from './components/Alert/alert.types.js';
88
+ export { alertVariants } from './components/Alert/alert.variants.js';
89
+ export { IconButton } from './components/IconButton/IconButton.js';
90
+ export type { IconButtonProps } from './components/IconButton/iconButton.types.js';
91
+ export { ICON_BUTTON_BASE, ICON_BUTTON_SIZE_OVERRIDES, } from './components/IconButton/iconButton.variants.js';
92
+ export { Menu, MenuTrigger, MenuContent, MenuItem, MenuLabel, MenuSeparator, MenuSkeleton, } from './components/Menu/Menu.js';
93
+ export type { MenuProps, MenuTriggerProps, MenuContentProps, MenuItemProps, MenuLabelProps, MenuSeparatorProps, MenuSkeletonProps, MenuPlacement, MenuItemColor, } from './components/Menu/menu.types.js';
94
+ export { menuVariants } from './components/Menu/menu.variants.js';
95
+ export { Badge } from './components/Badge/Badge.js';
96
+ export type { BadgeProps, BadgeColor, BadgePlacement, BadgeOverlap, BadgeSlotProps, } from './components/Badge/badge.types.js';
97
+ export { badgeVariants } from './components/Badge/badge.variants.js';
98
+ export type { BadgeVariants } from './components/Badge/badge.variants.js';
99
+ export { Spinner } from './components/Spinner/Spinner.js';
100
+ export type { SpinnerProps, SpinnerSize, SpinnerColor, SpinnerThickness, } from './components/Spinner/spinner.types.js';
101
+ export { spinnerVariants, SPINNER_STROKE_WIDTH, SPINNER_TRACK_OPACITY, SPINNER_COLORS, } from './components/Spinner/spinner.variants.js';
102
+ export { Avatar, AvatarGroup } from './components/Avatar/Avatar.js';
103
+ export type { AvatarProps, AvatarGroupProps, AvatarSize, AvatarShape, AvatarColor, AvatarTone, } from './components/Avatar/avatar.types.js';
104
+ export { avatarVariants, AVATAR_SOFT_FALLBACK, AVATAR_TONE_FALLBACK, } from './components/Avatar/avatar.variants.js';
105
+ export { Card, CardContent, CardActionArea } from './components/Card/Card.js';
106
+ export type { CardProps, CardContentProps, CardActionAreaProps, } from './components/Card/card.types.js';
107
+ export { Chip } from './components/Chip/Chip.js';
108
+ export type { ChipProps } from './components/Chip/chip.types.js';
109
+ export { chipVariants } from './components/Chip/chip.variants.js';
110
+ export type { ChipVariants } from './components/Chip/chip.variants.js';
86
111
  export { Typography } from './components/Typography/Typography.js';
87
112
  export type { TypographyProps } from './components/Typography/typography.types.js';
88
113
  export { typographyVariants } from './components/Typography/typography.variants.js';
@@ -142,5 +167,5 @@ export type { VariantProps } from 'tailwind-variants';
142
167
  /**
143
168
  * Package version (synced with `package.json` at publish time).
144
169
  */
145
- export declare const VERSION = "0.10.0-beta";
170
+ export declare const VERSION = "1.1.0";
146
171
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashforge/tw",
3
- "version": "0.11.0-beta",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.esm.js",
@@ -19,6 +19,7 @@
19
19
  "@radix-ui/react-accordion": "^1.2.0",
20
20
  "@radix-ui/react-checkbox": "^1.1.0",
21
21
  "@radix-ui/react-dialog": "^1.1.0",
22
+ "@radix-ui/react-dropdown-menu": "^2.1.0",
22
23
  "@radix-ui/react-popover": "^1.1.0",
23
24
  "@radix-ui/react-radio-group": "^1.3.8",
24
25
  "@radix-ui/react-slot": "^1.1.0",
@@ -27,16 +28,16 @@
27
28
  "clsx": "^2.1.0",
28
29
  "tailwind-merge": "^3.0.0",
29
30
  "tailwind-variants": "^3.1.1",
30
- "@dashforge/ui-core": "0.2.3-beta",
31
- "@dashforge/forms": "0.2.3-beta",
32
- "@dashforge/rbac": "0.2.3-beta",
33
- "@dashforge/calendar-core": "0.2.0-beta"
31
+ "@dashforge/calendar-core": "1.0.0",
32
+ "@dashforge/ui-core": "1.0.0",
33
+ "@dashforge/forms": "1.0.0",
34
+ "@dashforge/rbac": "1.0.0"
34
35
  },
35
36
  "peerDependencies": {
36
37
  "react": "^18.0.0 || ^19.0.0",
37
38
  "tailwindcss": ">=3.4.1",
38
- "@dashforge/tw-theme": "0.2.0-beta",
39
- "@dashforge/tw-tokens": "0.2.0-beta"
39
+ "@dashforge/tw-theme": "1.0.0",
40
+ "@dashforge/tw-tokens": "1.0.0"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@vitejs/plugin-react": "*",
@@ -0,0 +1,302 @@
1
+ // @vitest-environment jsdom
2
+ import * as React from 'react';
3
+ import { describe, it, expect, vi, afterEach } from 'vitest';
4
+ import { render, screen, fireEvent, cleanup } from '@testing-library/react';
5
+ import { Alert, AlertTitle } from './Alert.js';
6
+
7
+ void React;
8
+ afterEach(() => cleanup());
9
+
10
+ /**
11
+ * `<Alert>` unit tests. Covers:
12
+ * - severity × variant matrix (12 combinations) — token classes
13
+ * actually emitted, role auto-derived, no `dark:` leaks
14
+ * - icon control (default per severity, custom override, false → none)
15
+ * - close button (onClose triggers, custom closeText label)
16
+ * - action slot (replaces close button when both set)
17
+ * - AlertTitle sub-component rendering
18
+ * - sx / className / slotProps overrides
19
+ * - bridge integration: visibleWhen + access return null when false
20
+ *
21
+ * NB: visibleWhen + access deep integration is covered by the
22
+ * underlying `useEngineVisibility` and `useAccessState` test suites;
23
+ * here we just verify Alert wires them correctly (return null when
24
+ * gated).
25
+ */
26
+
27
+ describe('<Alert>', () => {
28
+ describe('severity × variant matrix', () => {
29
+ const SEVERITIES = ['info', 'success', 'warning', 'danger'] as const;
30
+ const VARIANTS = ['standard', 'filled', 'outlined'] as const;
31
+
32
+ SEVERITIES.forEach((severity) => {
33
+ VARIANTS.forEach((variant) => {
34
+ it(`renders ${variant}/${severity} with token-driven utilities`, () => {
35
+ const { container } = render(
36
+ <Alert severity={severity} variant={variant}>
37
+ Body content
38
+ </Alert>
39
+ );
40
+ const root = container.firstChild as HTMLElement;
41
+ expect(root).toBeTruthy();
42
+ // Surface and border carry the severity name
43
+ const className = root.className;
44
+ expect(className).toContain(severity);
45
+ // No dark: variants — preset handles inversion via CSS vars
46
+ expect(className).not.toMatch(/\bdark:/);
47
+ // No hardcoded hex
48
+ expect(className).not.toMatch(/#[0-9a-fA-F]{3,8}/);
49
+ });
50
+ });
51
+ });
52
+
53
+ it('defaults to standard variant when omitted', () => {
54
+ const { container } = render(<Alert severity="info">x</Alert>);
55
+ const root = container.firstChild as HTMLElement;
56
+ // Standard variant emits bg-info-50 + text-info-900
57
+ expect(root.className).toContain('bg-info-50');
58
+ expect(root.className).toContain('text-info-900');
59
+ });
60
+ });
61
+
62
+ describe('ARIA role auto-derivation', () => {
63
+ it('uses role="alert" for warning', () => {
64
+ render(<Alert severity="warning">x</Alert>);
65
+ expect(screen.getByRole('alert')).toBeTruthy();
66
+ });
67
+
68
+ it('uses role="alert" for danger', () => {
69
+ render(<Alert severity="danger">x</Alert>);
70
+ expect(screen.getByRole('alert')).toBeTruthy();
71
+ });
72
+
73
+ it('uses role="status" for info', () => {
74
+ render(<Alert severity="info">x</Alert>);
75
+ expect(screen.getByRole('status')).toBeTruthy();
76
+ });
77
+
78
+ it('uses role="status" for success', () => {
79
+ render(<Alert severity="success">x</Alert>);
80
+ expect(screen.getByRole('status')).toBeTruthy();
81
+ });
82
+
83
+ it('allows explicit role override', () => {
84
+ render(
85
+ <Alert severity="danger" role="status">
86
+ downgraded to polite
87
+ </Alert>
88
+ );
89
+ // No "alert" role, only the overridden "status"
90
+ expect(screen.queryByRole('alert')).toBeFalsy();
91
+ expect(screen.getByRole('status')).toBeTruthy();
92
+ });
93
+ });
94
+
95
+ describe('icon prop — tristate behaviour', () => {
96
+ it('renders a default icon SVG when icon is omitted', () => {
97
+ const { container } = render(<Alert severity="warning">x</Alert>);
98
+ const svg = container.querySelector('svg');
99
+ expect(svg).toBeTruthy();
100
+ expect(svg?.getAttribute('aria-hidden')).toBe('true');
101
+ });
102
+
103
+ it('renders the consumer-provided icon when icon is a ReactNode', () => {
104
+ render(
105
+ <Alert severity="info" icon={<span data-testid="custom-icon">ᐅ</span>}>
106
+ x
107
+ </Alert>
108
+ );
109
+ expect(screen.getByTestId('custom-icon')).toBeTruthy();
110
+ });
111
+
112
+ it('renders no icon container when icon is false', () => {
113
+ const { container } = render(
114
+ <Alert severity="info" icon={false}>
115
+ x
116
+ </Alert>
117
+ );
118
+ // No SVG anywhere (the close button SVG only renders with onClose)
119
+ expect(container.querySelector('svg')).toBeNull();
120
+ });
121
+ });
122
+
123
+ describe('close button (onClose)', () => {
124
+ it('renders no close button when onClose is undefined', () => {
125
+ render(<Alert severity="info">x</Alert>);
126
+ expect(screen.queryByRole('button', { name: /close/i })).toBeNull();
127
+ });
128
+
129
+ it('renders a close button labelled "Close" by default when onClose is defined', () => {
130
+ const onClose = vi.fn();
131
+ render(
132
+ <Alert severity="warning" onClose={onClose}>
133
+ x
134
+ </Alert>
135
+ );
136
+ const btn = screen.getByRole('button', { name: /^close$/i });
137
+ expect(btn).toBeTruthy();
138
+ });
139
+
140
+ it('fires onClose on click', () => {
141
+ const onClose = vi.fn();
142
+ render(
143
+ <Alert severity="warning" onClose={onClose}>
144
+ x
145
+ </Alert>
146
+ );
147
+ fireEvent.click(screen.getByRole('button', { name: /close/i }));
148
+ expect(onClose).toHaveBeenCalledTimes(1);
149
+ });
150
+
151
+ it('respects custom closeText for the aria-label', () => {
152
+ const onClose = vi.fn();
153
+ render(
154
+ <Alert severity="warning" onClose={onClose} closeText="Dismiss alert">
155
+ x
156
+ </Alert>
157
+ );
158
+ expect(screen.getByRole('button', { name: /dismiss alert/i })).toBeTruthy();
159
+ });
160
+ });
161
+
162
+ describe('action slot', () => {
163
+ it('renders the action node when provided', () => {
164
+ render(
165
+ <Alert
166
+ severity="warning"
167
+ action={<button data-testid="renew-cta">Renew</button>}
168
+ >
169
+ Trial expires
170
+ </Alert>
171
+ );
172
+ expect(screen.getByTestId('renew-cta')).toBeTruthy();
173
+ });
174
+
175
+ it('action wins over onClose when both are provided (matches MUI)', () => {
176
+ const onClose = vi.fn();
177
+ render(
178
+ <Alert
179
+ severity="warning"
180
+ onClose={onClose}
181
+ action={<button data-testid="custom-action">Custom</button>}
182
+ >
183
+ x
184
+ </Alert>
185
+ );
186
+ // Custom action renders
187
+ expect(screen.getByTestId('custom-action')).toBeTruthy();
188
+ // No auto close button rendered alongside
189
+ expect(screen.queryByRole('button', { name: /^close$/i })).toBeNull();
190
+ });
191
+ });
192
+
193
+ describe('<AlertTitle>', () => {
194
+ it('renders title text', () => {
195
+ render(
196
+ <Alert severity="info">
197
+ <AlertTitle>Heads up</AlertTitle>
198
+ Body line below.
199
+ </Alert>
200
+ );
201
+ expect(screen.getByText('Heads up')).toBeTruthy();
202
+ expect(screen.getByText(/Body line below/i)).toBeTruthy();
203
+ });
204
+
205
+ it('AlertTitle accepts className override', () => {
206
+ const { container } = render(
207
+ <AlertTitle className="custom-title-class">Title</AlertTitle>
208
+ );
209
+ const node = container.firstChild as HTMLElement;
210
+ expect(node.className).toContain('custom-title-class');
211
+ });
212
+ });
213
+
214
+ describe('overrides — sx / className / slotProps', () => {
215
+ it('applies sx to the root', () => {
216
+ const { container } = render(
217
+ <Alert severity="info" sx="mt-8">
218
+ x
219
+ </Alert>
220
+ );
221
+ const root = container.firstChild as HTMLElement;
222
+ expect(root.className).toContain('mt-8');
223
+ });
224
+
225
+ it('appends className to the root', () => {
226
+ const { container } = render(
227
+ <Alert severity="info" className="my-custom-class">
228
+ x
229
+ </Alert>
230
+ );
231
+ const root = container.firstChild as HTMLElement;
232
+ expect(root.className).toContain('my-custom-class');
233
+ });
234
+
235
+ it('applies slotProps.root.className to the root', () => {
236
+ const { container } = render(
237
+ <Alert
238
+ severity="info"
239
+ slotProps={{ root: { className: 'slot-root-class' } }}
240
+ >
241
+ x
242
+ </Alert>
243
+ );
244
+ const root = container.firstChild as HTMLElement;
245
+ expect(root.className).toContain('slot-root-class');
246
+ });
247
+
248
+ it('applies slotProps.icon.className to the icon wrapper', () => {
249
+ const { container } = render(
250
+ <Alert
251
+ severity="warning"
252
+ slotProps={{ icon: { className: 'icon-custom' } }}
253
+ >
254
+ x
255
+ </Alert>
256
+ );
257
+ const iconSpan = container.querySelector('.icon-custom');
258
+ expect(iconSpan).toBeTruthy();
259
+ });
260
+
261
+ it('applies slotProps.closeButton.className to the close button', () => {
262
+ const onClose = vi.fn();
263
+ render(
264
+ <Alert
265
+ severity="warning"
266
+ onClose={onClose}
267
+ slotProps={{ closeButton: { className: 'close-custom' } }}
268
+ >
269
+ x
270
+ </Alert>
271
+ );
272
+ const btn = screen.getByRole('button', { name: /close/i });
273
+ expect(btn.className).toContain('close-custom');
274
+ });
275
+ });
276
+
277
+ describe('bridge integration — visibleWhen', () => {
278
+ it('renders when visibleWhen returns true (no DashForm context)', () => {
279
+ const { container } = render(
280
+ <Alert severity="info" visibleWhen={() => true}>
281
+ shown
282
+ </Alert>
283
+ );
284
+ expect(container.firstChild).toBeTruthy();
285
+ expect(screen.getByText('shown')).toBeTruthy();
286
+ });
287
+
288
+ it('returns null when visibleWhen returns false', () => {
289
+ const { container } = render(
290
+ <Alert severity="info" visibleWhen={() => false}>
291
+ hidden
292
+ </Alert>
293
+ );
294
+ expect(container.firstChild).toBeNull();
295
+ });
296
+
297
+ it('renders normally when visibleWhen is omitted', () => {
298
+ const { container } = render(<Alert severity="info">always</Alert>);
299
+ expect(container.firstChild).toBeTruthy();
300
+ });
301
+ });
302
+ });