@dashforge/tw 0.1.0-beta → 0.2.1-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 (195) hide show
  1. package/A11Y.md +130 -0
  2. package/CHANGELOG.md +231 -0
  3. package/dist/index.d.ts +1 -82
  4. package/dist/index.esm.js +1608 -11
  5. package/dist/src/components/AspectRatio/AspectRatio.d.ts +36 -0
  6. package/dist/src/components/AspectRatio/AspectRatio.d.ts.map +1 -0
  7. package/dist/src/components/AspectRatio/aspectRatio.types.d.ts +50 -0
  8. package/dist/src/components/AspectRatio/aspectRatio.types.d.ts.map +1 -0
  9. package/dist/src/components/Box/Box.d.ts +36 -0
  10. package/dist/src/components/Box/Box.d.ts.map +1 -0
  11. package/dist/src/components/Box/box.types.d.ts +54 -0
  12. package/dist/src/components/Box/box.types.d.ts.map +1 -0
  13. package/dist/src/components/Box/box.variants.d.ts +402 -0
  14. package/dist/src/components/Box/box.variants.d.ts.map +1 -0
  15. package/dist/src/components/Button/Button.d.ts.map +1 -1
  16. package/dist/src/components/Checkbox/Checkbox.d.ts.map +1 -1
  17. package/dist/src/components/Container/Container.d.ts +35 -0
  18. package/dist/src/components/Container/Container.d.ts.map +1 -0
  19. package/dist/src/components/Container/container.types.d.ts +41 -0
  20. package/dist/src/components/Container/container.types.d.ts.map +1 -0
  21. package/dist/src/components/Container/container.variants.d.ts +93 -0
  22. package/dist/src/components/Container/container.variants.d.ts.map +1 -0
  23. package/dist/src/components/Divider/Divider.d.ts +50 -0
  24. package/dist/src/components/Divider/Divider.d.ts.map +1 -0
  25. package/dist/src/components/Divider/divider.types.d.ts +47 -0
  26. package/dist/src/components/Divider/divider.types.d.ts.map +1 -0
  27. package/dist/src/components/Divider/divider.variants.d.ts +129 -0
  28. package/dist/src/components/Divider/divider.variants.d.ts.map +1 -0
  29. package/dist/src/components/Grid/Grid.d.ts +32 -0
  30. package/dist/src/components/Grid/Grid.d.ts.map +1 -0
  31. package/dist/src/components/Grid/grid.types.d.ts +103 -0
  32. package/dist/src/components/Grid/grid.types.d.ts.map +1 -0
  33. package/dist/src/components/Grid/grid.variants.d.ts +453 -0
  34. package/dist/src/components/Grid/grid.variants.d.ts.map +1 -0
  35. package/dist/src/components/NumberField/NumberField.d.ts.map +1 -1
  36. package/dist/src/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  37. package/dist/src/components/Stack/Stack.d.ts +24 -0
  38. package/dist/src/components/Stack/Stack.d.ts.map +1 -0
  39. package/dist/src/components/Stack/stack.types.d.ts +61 -0
  40. package/dist/src/components/Stack/stack.types.d.ts.map +1 -0
  41. package/dist/src/components/Stack/stack.variants.d.ts +163 -0
  42. package/dist/src/components/Stack/stack.variants.d.ts.map +1 -0
  43. package/dist/src/components/Typography/Typography.d.ts +42 -0
  44. package/dist/src/components/Typography/Typography.d.ts.map +1 -0
  45. package/dist/src/components/Typography/typography.types.d.ts +61 -0
  46. package/dist/src/components/Typography/typography.types.d.ts.map +1 -0
  47. package/dist/src/components/Typography/typography.variants.d.ts +167 -0
  48. package/dist/src/components/Typography/typography.variants.d.ts.map +1 -0
  49. package/dist/src/components/VisuallyHidden/VisuallyHidden.d.ts +42 -0
  50. package/dist/src/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  51. package/dist/src/components/VisuallyHidden/visuallyHidden.types.d.ts +42 -0
  52. package/dist/src/components/VisuallyHidden/visuallyHidden.types.d.ts.map +1 -0
  53. package/dist/src/index.d.ts +23 -1
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/package.json +3 -3
  56. package/src/components/AspectRatio/AspectRatio.test.tsx +173 -0
  57. package/src/components/AspectRatio/AspectRatio.tsx +73 -0
  58. package/src/components/AspectRatio/aspectRatio.types.ts +54 -0
  59. package/src/components/Box/Box.test.tsx +349 -0
  60. package/src/components/Box/Box.tsx +83 -0
  61. package/src/components/Box/box.types.ts +61 -0
  62. package/src/components/Box/box.variants.ts +211 -0
  63. package/src/components/Button/Button.tsx +11 -0
  64. package/src/components/Checkbox/Checkbox.tsx +26 -2
  65. package/src/components/Container/Container.test.tsx +209 -0
  66. package/src/components/Container/Container.tsx +74 -0
  67. package/src/components/Container/container.types.ts +45 -0
  68. package/src/components/Container/container.variants.ts +81 -0
  69. package/src/components/Divider/Divider.test.tsx +241 -0
  70. package/src/components/Divider/Divider.tsx +140 -0
  71. package/src/components/Divider/divider.types.ts +52 -0
  72. package/src/components/Divider/divider.variants.ts +115 -0
  73. package/src/components/Grid/Grid.test.tsx +321 -0
  74. package/src/components/Grid/Grid.tsx +148 -0
  75. package/src/components/Grid/grid.types.ts +112 -0
  76. package/src/components/Grid/grid.variants.ts +133 -0
  77. package/src/components/NumberField/NumberField.tsx +30 -2
  78. package/src/components/RadioGroup/RadioGroup.tsx +23 -1
  79. package/src/components/Stack/Stack.test.tsx +309 -0
  80. package/src/components/Stack/Stack.tsx +115 -0
  81. package/src/components/Stack/stack.types.ts +68 -0
  82. package/src/components/Stack/stack.variants.ts +80 -0
  83. package/src/components/Typography/Typography.test.tsx +230 -0
  84. package/src/components/Typography/Typography.tsx +112 -0
  85. package/src/components/Typography/typography.types.ts +65 -0
  86. package/src/components/Typography/typography.variants.ts +113 -0
  87. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +86 -0
  88. package/src/components/VisuallyHidden/VisuallyHidden.tsx +59 -0
  89. package/src/components/VisuallyHidden/visuallyHidden.types.ts +45 -0
  90. package/src/index.ts +50 -1
  91. package/LICENSE +0 -21
  92. package/dist/components/AppShell/AppShell.d.ts +0 -32
  93. package/dist/components/AppShell/AppShell.d.ts.map +0 -1
  94. package/dist/components/AppShell/appShell.types.d.ts +0 -62
  95. package/dist/components/AppShell/appShell.types.d.ts.map +0 -1
  96. package/dist/components/AppShell/appShell.variants.d.ts +0 -65
  97. package/dist/components/AppShell/appShell.variants.d.ts.map +0 -1
  98. package/dist/components/Autocomplete/Autocomplete.d.ts +0 -32
  99. package/dist/components/Autocomplete/Autocomplete.d.ts.map +0 -1
  100. package/dist/components/Autocomplete/autocomplete.types.d.ts +0 -214
  101. package/dist/components/Autocomplete/autocomplete.types.d.ts.map +0 -1
  102. package/dist/components/Autocomplete/autocomplete.variants.d.ts +0 -214
  103. package/dist/components/Autocomplete/autocomplete.variants.d.ts.map +0 -1
  104. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -23
  105. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +0 -1
  106. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts +0 -98
  107. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts.map +0 -1
  108. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts +0 -85
  109. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +0 -1
  110. package/dist/components/Button/Button.d.ts +0 -44
  111. package/dist/components/Button/Button.d.ts.map +0 -1
  112. package/dist/components/Button/button.types.d.ts +0 -66
  113. package/dist/components/Button/button.types.d.ts.map +0 -1
  114. package/dist/components/Button/button.variants.d.ts +0 -104
  115. package/dist/components/Button/button.variants.d.ts.map +0 -1
  116. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  117. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  118. package/dist/components/Checkbox/checkbox.types.d.ts +0 -86
  119. package/dist/components/Checkbox/checkbox.types.d.ts.map +0 -1
  120. package/dist/components/Checkbox/checkbox.variants.d.ts +0 -109
  121. package/dist/components/Checkbox/checkbox.variants.d.ts.map +0 -1
  122. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +0 -38
  123. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +0 -1
  124. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts +0 -80
  125. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts.map +0 -1
  126. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts +0 -90
  127. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts.map +0 -1
  128. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -49
  129. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  130. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts +0 -95
  131. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts.map +0 -1
  132. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts +0 -165
  133. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts.map +0 -1
  134. package/dist/components/LeftNav/LeftNav.d.ts +0 -34
  135. package/dist/components/LeftNav/LeftNav.d.ts.map +0 -1
  136. package/dist/components/LeftNav/leftNav.types.d.ts +0 -136
  137. package/dist/components/LeftNav/leftNav.types.d.ts.map +0 -1
  138. package/dist/components/LeftNav/leftNav.variants.d.ts +0 -143
  139. package/dist/components/LeftNav/leftNav.variants.d.ts.map +0 -1
  140. package/dist/components/NumberField/NumberField.d.ts +0 -18
  141. package/dist/components/NumberField/NumberField.d.ts.map +0 -1
  142. package/dist/components/NumberField/numberField.types.d.ts +0 -79
  143. package/dist/components/NumberField/numberField.types.d.ts.map +0 -1
  144. package/dist/components/NumberField/numberField.variants.d.ts +0 -169
  145. package/dist/components/NumberField/numberField.variants.d.ts.map +0 -1
  146. package/dist/components/OTPField/OTPField.d.ts +0 -25
  147. package/dist/components/OTPField/OTPField.d.ts.map +0 -1
  148. package/dist/components/OTPField/otpField.types.d.ts +0 -74
  149. package/dist/components/OTPField/otpField.types.d.ts.map +0 -1
  150. package/dist/components/OTPField/otpField.variants.d.ts +0 -105
  151. package/dist/components/OTPField/otpField.variants.d.ts.map +0 -1
  152. package/dist/components/RadioGroup/RadioGroup.d.ts +0 -35
  153. package/dist/components/RadioGroup/RadioGroup.d.ts.map +0 -1
  154. package/dist/components/RadioGroup/radioGroup.types.d.ts +0 -103
  155. package/dist/components/RadioGroup/radioGroup.types.d.ts.map +0 -1
  156. package/dist/components/RadioGroup/radioGroup.variants.d.ts +0 -166
  157. package/dist/components/RadioGroup/radioGroup.variants.d.ts.map +0 -1
  158. package/dist/components/Snackbar/Snackbar.d.ts +0 -37
  159. package/dist/components/Snackbar/Snackbar.d.ts.map +0 -1
  160. package/dist/components/Snackbar/snackbar.types.d.ts +0 -86
  161. package/dist/components/Snackbar/snackbar.types.d.ts.map +0 -1
  162. package/dist/components/Snackbar/snackbar.variants.d.ts +0 -153
  163. package/dist/components/Snackbar/snackbar.variants.d.ts.map +0 -1
  164. package/dist/components/Switch/Switch.d.ts +0 -15
  165. package/dist/components/Switch/Switch.d.ts.map +0 -1
  166. package/dist/components/Switch/switch.types.d.ts +0 -47
  167. package/dist/components/Switch/switch.types.d.ts.map +0 -1
  168. package/dist/components/Switch/switch.variants.d.ts +0 -105
  169. package/dist/components/Switch/switch.variants.d.ts.map +0 -1
  170. package/dist/components/TextField/TextField.d.ts +0 -25
  171. package/dist/components/TextField/TextField.d.ts.map +0 -1
  172. package/dist/components/TextField/textField.types.d.ts +0 -72
  173. package/dist/components/TextField/textField.types.d.ts.map +0 -1
  174. package/dist/components/TextField/textField.variants.d.ts +0 -160
  175. package/dist/components/TextField/textField.variants.d.ts.map +0 -1
  176. package/dist/components/Textarea/Textarea.d.ts +0 -16
  177. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  178. package/dist/components/Textarea/textarea.types.d.ts +0 -63
  179. package/dist/components/Textarea/textarea.types.d.ts.map +0 -1
  180. package/dist/components/Textarea/textarea.variants.d.ts +0 -197
  181. package/dist/components/Textarea/textarea.variants.d.ts.map +0 -1
  182. package/dist/components/TopBar/TopBar.d.ts +0 -33
  183. package/dist/components/TopBar/TopBar.d.ts.map +0 -1
  184. package/dist/components/TopBar/topBar.types.d.ts +0 -49
  185. package/dist/components/TopBar/topBar.types.d.ts.map +0 -1
  186. package/dist/components/TopBar/topBar.variants.d.ts +0 -79
  187. package/dist/components/TopBar/topBar.variants.d.ts.map +0 -1
  188. package/dist/components/_shared/resolveValidationState.d.ts +0 -42
  189. package/dist/components/_shared/resolveValidationState.d.ts.map +0 -1
  190. package/dist/hooks/useAccessState.d.ts +0 -37
  191. package/dist/hooks/useAccessState.d.ts.map +0 -1
  192. package/dist/index.d.ts.map +0 -1
  193. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  194. package/dist/utils/cn.d.ts +0 -26
  195. package/dist/utils/cn.d.ts.map +0 -1
@@ -1,105 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- /**
3
- * Tailwind-variants recipe for `<Switch>` with slots.
4
- *
5
- * Slots:
6
- * - `root` — outer flex wrapper (control + label)
7
- * - `control` — the visible track (Radix `Switch.Root`)
8
- * - `thumb` — the moving knob (Radix `Switch.Thumb`); animated
9
- * via translate-x on data-state="checked"
10
- * - `label` — text next to the control
11
- * - `helperText` / `errorText` — informational lines below
12
- */
13
- export declare const switchVariants: import("tailwind-variants").TVReturnType<{
14
- size: {
15
- sm: {
16
- control: string;
17
- thumb: string;
18
- label: string;
19
- };
20
- md: {
21
- control: string;
22
- thumb: string;
23
- label: string;
24
- };
25
- lg: {
26
- control: string;
27
- thumb: string;
28
- label: string;
29
- };
30
- };
31
- error: {
32
- true: {
33
- control: string;
34
- };
35
- };
36
- }, {
37
- root: string;
38
- control: string[];
39
- thumb: string[];
40
- label: string;
41
- helperText: string;
42
- errorText: string;
43
- }, undefined, {
44
- size: {
45
- sm: {
46
- control: string;
47
- thumb: string;
48
- label: string;
49
- };
50
- md: {
51
- control: string;
52
- thumb: string;
53
- label: string;
54
- };
55
- lg: {
56
- control: string;
57
- thumb: string;
58
- label: string;
59
- };
60
- };
61
- error: {
62
- true: {
63
- control: string;
64
- };
65
- };
66
- }, {
67
- root: string;
68
- control: string[];
69
- thumb: string[];
70
- label: string;
71
- helperText: string;
72
- errorText: string;
73
- }, import("tailwind-variants").TVReturnType<{
74
- size: {
75
- sm: {
76
- control: string;
77
- thumb: string;
78
- label: string;
79
- };
80
- md: {
81
- control: string;
82
- thumb: string;
83
- label: string;
84
- };
85
- lg: {
86
- control: string;
87
- thumb: string;
88
- label: string;
89
- };
90
- };
91
- error: {
92
- true: {
93
- control: string;
94
- };
95
- };
96
- }, {
97
- root: string;
98
- control: string[];
99
- thumb: string[];
100
- label: string;
101
- helperText: string;
102
- errorText: string;
103
- }, undefined, unknown, unknown, undefined>>;
104
- export type SwitchVariants = VariantProps<typeof switchVariants>;
105
- //# sourceMappingURL=switch.variants.d.ts.map
@@ -1 +0,0 @@
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,25 +0,0 @@
1
- import type { TextFieldProps } from './textField.types.js';
2
- /**
3
- * Dashforge TW TextField — bridge-integrated text input.
4
- *
5
- * Implementation mirrors `@dashforge/ui/TextField` (MUI) at the bridge
6
- * level — same `name` / `rules` / `visibleWhen` / `access` semantics,
7
- * same validation gating, same StrictMode-safe unregister pattern.
8
- * Renderer differences:
9
- *
10
- * - Native `<input>` element wrapped in a TV-styled
11
- * `<div role-less wrapper>` so the focus ring extends to the entire
12
- * field (consistent with shadcn-style inputs).
13
- * - Layout modes: `stacked` (default — label above) and `inline`
14
- * (label left of input). MUI's `floating` mode is deferred to a
15
- * follow-up sprint; consumers needing the visual can layer it via
16
- * `slotProps`.
17
- * - No Select-integration hook (Select lands in F4 as its own component).
18
- *
19
- * **A11y**:
20
- * - `aria-invalid` is set from the resolved validation state.
21
- * - `aria-describedby` links the input to the helper/error text node.
22
- * - Required fields get the native `required` attribute + a visual `*`.
23
- */
24
- export declare function TextField(props: TextFieldProps): import("react/jsx-runtime").JSX.Element | null;
25
- //# sourceMappingURL=TextField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/TextField.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,kDAuL9C"}
@@ -1,72 +0,0 @@
1
- import type { InputHTMLAttributes, ReactNode } from 'react';
2
- import type { AccessRequirement } from '@dashforge/rbac';
3
- import type { Engine } from '@dashforge/ui-core';
4
- import type { TextFieldVariants } from './textField.variants.js';
5
- /**
6
- * Per-slot overrides for `<TextField>`.
7
- *
8
- * Each slot accepts `{ className: string }` so the override path is
9
- * extensible (style / aria-* / data-* can be added without a breaking
10
- * change). Mirrors the MUI-side `slotProps` shape.
11
- */
12
- export interface TextFieldSlotProps {
13
- root?: {
14
- className?: string;
15
- };
16
- label?: {
17
- className?: string;
18
- };
19
- requiredMark?: {
20
- className?: string;
21
- };
22
- inputWrapper?: {
23
- className?: string;
24
- };
25
- input?: {
26
- className?: string;
27
- };
28
- helperText?: {
29
- className?: string;
30
- };
31
- errorText?: {
32
- className?: string;
33
- };
34
- }
35
- /**
36
- * Props for the Dashforge TW `<TextField>`.
37
- *
38
- * Extends the native `<input>` attributes (so `placeholder`, `type`,
39
- * `autoComplete`, `aria-*` etc. all flow through), narrowed in two
40
- * places:
41
- *
42
- * - `size` is omitted because HTML's legacy `size` attribute (number)
43
- * collides with our variant axis (`'sm' | 'md' | 'lg'`).
44
- * - `className` is omitted — use `sx` instead (the canonical override
45
- * path that wins over variant classes via `tailwind-merge`).
46
- *
47
- * Plus the variant axes and Dashforge form-bridge wiring (`name`,
48
- * `rules`, `visibleWhen`, `access`).
49
- */
50
- export interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'className'>, Pick<TextFieldVariants, 'size' | 'layout' | 'fullWidth'> {
51
- /** Bridge field name (required when used inside `DashFormProvider`). */
52
- name: string;
53
- /** Visible label. */
54
- label?: ReactNode;
55
- /** Forwarded to the bridge as RHF rules — opaque to this component. */
56
- rules?: unknown;
57
- /** Engine predicate. Component returns null when false. */
58
- visibleWhen?: (engine: Engine) => boolean;
59
- /** Helper line below the input. */
60
- helperText?: ReactNode;
61
- /** Explicit error semaphore. Overrides bridge auto-error. */
62
- error?: boolean;
63
- /** Render the asterisk + set the native `required` attribute. */
64
- required?: boolean;
65
- /** RBAC requirement. */
66
- access?: AccessRequirement;
67
- /** Root-level Tailwind override — wins over variant classes via `cn()`. */
68
- sx?: string;
69
- /** Per-slot overrides — see `TextFieldSlotProps`. */
70
- slotProps?: TextFieldSlotProps;
71
- }
72
- //# sourceMappingURL=textField.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textField.types.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/textField.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,EACvE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1D,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAE1C,mCAAmC;IACnC,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,wBAAwB;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B,2EAA2E;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,qDAAqD;IACrD,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC"}
@@ -1,160 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- /**
3
- * Tailwind-variants recipe for `<TextField>` with 7 slots.
4
- *
5
- * The MUI-side `TextField` supports three layout modes (floating /
6
- * stacked / inline) plus a Select-integration hook. The TW-side
7
- * port covers **stacked** + **inline** in F3 (label outside the
8
- * input wrapper) and ships a CSS-only floating label using
9
- * Tailwind's `peer` modifier.
10
- *
11
- * The Select integration (`__selectAvailableValues` etc.) is
12
- * deferred to F4 when the dedicated `<Select>` component arrives.
13
- */
14
- export declare const textFieldVariants: import("tailwind-variants").TVReturnType<{
15
- size: {
16
- sm: {
17
- inputWrapper: string;
18
- input: string;
19
- };
20
- md: {
21
- inputWrapper: string;
22
- input: string;
23
- };
24
- lg: {
25
- inputWrapper: string;
26
- input: string;
27
- };
28
- };
29
- layout: {
30
- stacked: {
31
- root: string;
32
- };
33
- inline: {
34
- root: string;
35
- label: string;
36
- };
37
- };
38
- error: {
39
- true: {
40
- inputWrapper: string;
41
- };
42
- };
43
- fullWidth: {
44
- true: {
45
- root: string;
46
- inputWrapper: string;
47
- };
48
- };
49
- disabled: {
50
- true: {
51
- inputWrapper: string;
52
- };
53
- };
54
- }, {
55
- root: string;
56
- label: string;
57
- requiredMark: string;
58
- inputWrapper: string[];
59
- input: string[];
60
- helperText: string;
61
- errorText: string;
62
- }, undefined, {
63
- size: {
64
- sm: {
65
- inputWrapper: string;
66
- input: string;
67
- };
68
- md: {
69
- inputWrapper: string;
70
- input: string;
71
- };
72
- lg: {
73
- inputWrapper: string;
74
- input: string;
75
- };
76
- };
77
- layout: {
78
- stacked: {
79
- root: string;
80
- };
81
- inline: {
82
- root: string;
83
- label: string;
84
- };
85
- };
86
- error: {
87
- true: {
88
- inputWrapper: string;
89
- };
90
- };
91
- fullWidth: {
92
- true: {
93
- root: string;
94
- inputWrapper: string;
95
- };
96
- };
97
- disabled: {
98
- true: {
99
- inputWrapper: string;
100
- };
101
- };
102
- }, {
103
- root: string;
104
- label: string;
105
- requiredMark: string;
106
- inputWrapper: string[];
107
- input: string[];
108
- helperText: string;
109
- errorText: string;
110
- }, import("tailwind-variants").TVReturnType<{
111
- size: {
112
- sm: {
113
- inputWrapper: string;
114
- input: string;
115
- };
116
- md: {
117
- inputWrapper: string;
118
- input: string;
119
- };
120
- lg: {
121
- inputWrapper: string;
122
- input: string;
123
- };
124
- };
125
- layout: {
126
- stacked: {
127
- root: string;
128
- };
129
- inline: {
130
- root: string;
131
- label: string;
132
- };
133
- };
134
- error: {
135
- true: {
136
- inputWrapper: string;
137
- };
138
- };
139
- fullWidth: {
140
- true: {
141
- root: string;
142
- inputWrapper: string;
143
- };
144
- };
145
- disabled: {
146
- true: {
147
- inputWrapper: string;
148
- };
149
- };
150
- }, {
151
- root: string;
152
- label: string;
153
- requiredMark: string;
154
- inputWrapper: string[];
155
- input: string[];
156
- helperText: string;
157
- errorText: string;
158
- }, undefined, unknown, unknown, undefined>>;
159
- export type TextFieldVariants = VariantProps<typeof textFieldVariants>;
160
- //# sourceMappingURL=textField.variants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textField.variants.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/textField.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAsE5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { TextareaProps } from './textarea.types.js';
2
- /**
3
- * Dashforge TW Textarea — bridge-integrated multi-line input.
4
- *
5
- * Sibling of `<TextField>` (same slot taxonomy, same bridge wiring) but
6
- * renders a `<textarea>` element instead of a single-line `<input>`.
7
- *
8
- * Defaults to `rows={3}` and `resize="vertical"` — both overridable via
9
- * variant prop or per-instance `rows` attribute.
10
- *
11
- * **A11y**: `aria-invalid` from the resolved validation state,
12
- * `aria-describedby` links to the helper/error text node, required
13
- * fields get the native `required` attribute + a visual `*`.
14
- */
15
- export declare function Textarea(props: TextareaProps): import("react/jsx-runtime").JSX.Element | null;
16
- //# sourceMappingURL=Textarea.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kDAsK5C"}
@@ -1,63 +0,0 @@
1
- import type { ChangeEventHandler, FocusEventHandler, ReactNode, TextareaHTMLAttributes } from 'react';
2
- import type { Engine } from '@dashforge/ui-core';
3
- import type { AccessRequirement } from '@dashforge/rbac';
4
- import type { TextareaVariants } from './textarea.variants.js';
5
- export interface TextareaSlotProps {
6
- root?: {
7
- className?: string;
8
- };
9
- label?: {
10
- className?: string;
11
- };
12
- requiredMark?: {
13
- className?: string;
14
- };
15
- inputWrapper?: {
16
- className?: string;
17
- };
18
- input?: {
19
- className?: string;
20
- };
21
- helperText?: {
22
- className?: string;
23
- };
24
- errorText?: {
25
- className?: string;
26
- };
27
- }
28
- /**
29
- * Props for `<Textarea>`.
30
- *
31
- * Mirrors `<TextField>` semantics (bridge integration, RBAC, gating)
32
- * but renders a multi-line `<textarea>` and exposes a `resize` variant
33
- * (default `'vertical'`). Inherits standard HTMLTextarea attributes
34
- * (`rows`, `cols`, `maxLength`, etc.) via `TextareaHTMLAttributes`.
35
- */
36
- export interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'name' | 'size' | 'onChange' | 'onBlur' | 'value' | 'defaultValue'>, TextareaVariants {
37
- name: string;
38
- rules?: unknown;
39
- label?: ReactNode;
40
- helperText?: ReactNode;
41
- required?: boolean;
42
- error?: boolean;
43
- disabled?: boolean;
44
- /** Engine predicate — textarea not rendered when it returns `false`. */
45
- visibleWhen?: (engine: Engine) => boolean;
46
- /** RBAC access requirement (combines with explicit `disabled`). */
47
- access?: AccessRequirement;
48
- /** Root className shortcut (`cn`'d with the variant root class). */
49
- sx?: string;
50
- /** Per-slot className overrides. */
51
- slotProps?: TextareaSlotProps;
52
- /** Controlled value (form mode reads from the bridge if omitted). */
53
- value?: string;
54
- /** Default value (uncontrolled, standalone mode only). */
55
- defaultValue?: string;
56
- /** User-supplied change handler — fires *after* bridge update. */
57
- onChange?: ChangeEventHandler<HTMLTextAreaElement>;
58
- /** User-supplied blur handler — fires *after* bridge `onBlur`. */
59
- onBlur?: FocusEventHandler<HTMLTextAreaElement>;
60
- /** Minimum visible row count for the textarea. Default: 3. */
61
- rows?: number;
62
- }
63
- //# sourceMappingURL=textarea.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.types.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/textarea.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACT,sBAAsB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,YAAY,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aACf,SAAQ,IAAI,CACR,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CACnE,EACD,gBAAgB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IACnD,kEAAkE;IAClE,MAAM,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAChD,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -1,197 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- /**
3
- * Tailwind-variants recipe for `<Textarea>` with 7 slots.
4
- *
5
- * Sibling of `<TextField>` but renders a multi-line `<textarea>` element
6
- * instead of a single-line `<input>`. Shares the same slot taxonomy +
7
- * variant axes so consumers can swap the two without rewriting overrides.
8
- */
9
- export declare const textareaVariants: import("tailwind-variants").TVReturnType<{
10
- size: {
11
- sm: {
12
- inputWrapper: string;
13
- input: string;
14
- };
15
- md: {
16
- inputWrapper: string;
17
- input: string;
18
- };
19
- lg: {
20
- inputWrapper: string;
21
- input: string;
22
- };
23
- };
24
- layout: {
25
- stacked: {
26
- root: string;
27
- };
28
- inline: {
29
- root: string;
30
- label: string;
31
- };
32
- };
33
- error: {
34
- true: {
35
- inputWrapper: string;
36
- };
37
- };
38
- fullWidth: {
39
- true: {
40
- root: string;
41
- inputWrapper: string;
42
- };
43
- };
44
- disabled: {
45
- true: {
46
- inputWrapper: string;
47
- };
48
- };
49
- resize: {
50
- none: {
51
- input: string;
52
- };
53
- vertical: {
54
- input: string;
55
- };
56
- horizontal: {
57
- input: string;
58
- };
59
- both: {
60
- input: string;
61
- };
62
- };
63
- }, {
64
- root: string;
65
- label: string;
66
- requiredMark: string;
67
- inputWrapper: string[];
68
- input: string[];
69
- helperText: string;
70
- errorText: string;
71
- }, undefined, {
72
- size: {
73
- sm: {
74
- inputWrapper: string;
75
- input: string;
76
- };
77
- md: {
78
- inputWrapper: string;
79
- input: string;
80
- };
81
- lg: {
82
- inputWrapper: string;
83
- input: string;
84
- };
85
- };
86
- layout: {
87
- stacked: {
88
- root: string;
89
- };
90
- inline: {
91
- root: string;
92
- label: string;
93
- };
94
- };
95
- error: {
96
- true: {
97
- inputWrapper: string;
98
- };
99
- };
100
- fullWidth: {
101
- true: {
102
- root: string;
103
- inputWrapper: string;
104
- };
105
- };
106
- disabled: {
107
- true: {
108
- inputWrapper: string;
109
- };
110
- };
111
- resize: {
112
- none: {
113
- input: string;
114
- };
115
- vertical: {
116
- input: string;
117
- };
118
- horizontal: {
119
- input: string;
120
- };
121
- both: {
122
- input: string;
123
- };
124
- };
125
- }, {
126
- root: string;
127
- label: string;
128
- requiredMark: string;
129
- inputWrapper: string[];
130
- input: string[];
131
- helperText: string;
132
- errorText: string;
133
- }, import("tailwind-variants").TVReturnType<{
134
- size: {
135
- sm: {
136
- inputWrapper: string;
137
- input: string;
138
- };
139
- md: {
140
- inputWrapper: string;
141
- input: string;
142
- };
143
- lg: {
144
- inputWrapper: string;
145
- input: string;
146
- };
147
- };
148
- layout: {
149
- stacked: {
150
- root: string;
151
- };
152
- inline: {
153
- root: string;
154
- label: string;
155
- };
156
- };
157
- error: {
158
- true: {
159
- inputWrapper: string;
160
- };
161
- };
162
- fullWidth: {
163
- true: {
164
- root: string;
165
- inputWrapper: string;
166
- };
167
- };
168
- disabled: {
169
- true: {
170
- inputWrapper: string;
171
- };
172
- };
173
- resize: {
174
- none: {
175
- input: string;
176
- };
177
- vertical: {
178
- input: string;
179
- };
180
- horizontal: {
181
- input: string;
182
- };
183
- both: {
184
- input: string;
185
- };
186
- };
187
- }, {
188
- root: string;
189
- label: string;
190
- requiredMark: string;
191
- inputWrapper: string[];
192
- input: string[];
193
- helperText: string;
194
- errorText: string;
195
- }, undefined, unknown, unknown, undefined>>;
196
- export type TextareaVariants = VariantProps<typeof textareaVariants>;
197
- //# sourceMappingURL=textarea.variants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.variants.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/textarea.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAyE3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}