@dashforge/tw 0.1.0-beta → 0.2.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 (185) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/dist/index.d.ts +1 -82
  3. package/dist/index.esm.js +1563 -2
  4. package/dist/src/components/AspectRatio/AspectRatio.d.ts +36 -0
  5. package/dist/src/components/AspectRatio/AspectRatio.d.ts.map +1 -0
  6. package/dist/src/components/AspectRatio/aspectRatio.types.d.ts +50 -0
  7. package/dist/src/components/AspectRatio/aspectRatio.types.d.ts.map +1 -0
  8. package/dist/src/components/Box/Box.d.ts +36 -0
  9. package/dist/src/components/Box/Box.d.ts.map +1 -0
  10. package/dist/src/components/Box/box.types.d.ts +54 -0
  11. package/dist/src/components/Box/box.types.d.ts.map +1 -0
  12. package/dist/src/components/Box/box.variants.d.ts +402 -0
  13. package/dist/src/components/Box/box.variants.d.ts.map +1 -0
  14. package/dist/src/components/Container/Container.d.ts +35 -0
  15. package/dist/src/components/Container/Container.d.ts.map +1 -0
  16. package/dist/src/components/Container/container.types.d.ts +41 -0
  17. package/dist/src/components/Container/container.types.d.ts.map +1 -0
  18. package/dist/src/components/Container/container.variants.d.ts +93 -0
  19. package/dist/src/components/Container/container.variants.d.ts.map +1 -0
  20. package/dist/src/components/Divider/Divider.d.ts +50 -0
  21. package/dist/src/components/Divider/Divider.d.ts.map +1 -0
  22. package/dist/src/components/Divider/divider.types.d.ts +47 -0
  23. package/dist/src/components/Divider/divider.types.d.ts.map +1 -0
  24. package/dist/src/components/Divider/divider.variants.d.ts +129 -0
  25. package/dist/src/components/Divider/divider.variants.d.ts.map +1 -0
  26. package/dist/src/components/Grid/Grid.d.ts +32 -0
  27. package/dist/src/components/Grid/Grid.d.ts.map +1 -0
  28. package/dist/src/components/Grid/grid.types.d.ts +103 -0
  29. package/dist/src/components/Grid/grid.types.d.ts.map +1 -0
  30. package/dist/src/components/Grid/grid.variants.d.ts +453 -0
  31. package/dist/src/components/Grid/grid.variants.d.ts.map +1 -0
  32. package/dist/src/components/Stack/Stack.d.ts +24 -0
  33. package/dist/src/components/Stack/Stack.d.ts.map +1 -0
  34. package/dist/src/components/Stack/stack.types.d.ts +61 -0
  35. package/dist/src/components/Stack/stack.types.d.ts.map +1 -0
  36. package/dist/src/components/Stack/stack.variants.d.ts +163 -0
  37. package/dist/src/components/Stack/stack.variants.d.ts.map +1 -0
  38. package/dist/src/components/Typography/Typography.d.ts +42 -0
  39. package/dist/src/components/Typography/Typography.d.ts.map +1 -0
  40. package/dist/src/components/Typography/typography.types.d.ts +61 -0
  41. package/dist/src/components/Typography/typography.types.d.ts.map +1 -0
  42. package/dist/src/components/Typography/typography.variants.d.ts +167 -0
  43. package/dist/src/components/Typography/typography.variants.d.ts.map +1 -0
  44. package/dist/src/components/VisuallyHidden/VisuallyHidden.d.ts +42 -0
  45. package/dist/src/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  46. package/dist/src/components/VisuallyHidden/visuallyHidden.types.d.ts +42 -0
  47. package/dist/src/components/VisuallyHidden/visuallyHidden.types.d.ts.map +1 -0
  48. package/dist/src/index.d.ts +22 -0
  49. package/dist/src/index.d.ts.map +1 -1
  50. package/package.json +3 -3
  51. package/src/components/AspectRatio/AspectRatio.test.tsx +173 -0
  52. package/src/components/AspectRatio/AspectRatio.tsx +73 -0
  53. package/src/components/AspectRatio/aspectRatio.types.ts +54 -0
  54. package/src/components/Box/Box.test.tsx +349 -0
  55. package/src/components/Box/Box.tsx +83 -0
  56. package/src/components/Box/box.types.ts +61 -0
  57. package/src/components/Box/box.variants.ts +211 -0
  58. package/src/components/Container/Container.test.tsx +209 -0
  59. package/src/components/Container/Container.tsx +74 -0
  60. package/src/components/Container/container.types.ts +45 -0
  61. package/src/components/Container/container.variants.ts +81 -0
  62. package/src/components/Divider/Divider.test.tsx +241 -0
  63. package/src/components/Divider/Divider.tsx +140 -0
  64. package/src/components/Divider/divider.types.ts +52 -0
  65. package/src/components/Divider/divider.variants.ts +115 -0
  66. package/src/components/Grid/Grid.test.tsx +321 -0
  67. package/src/components/Grid/Grid.tsx +148 -0
  68. package/src/components/Grid/grid.types.ts +112 -0
  69. package/src/components/Grid/grid.variants.ts +133 -0
  70. package/src/components/Stack/Stack.test.tsx +309 -0
  71. package/src/components/Stack/Stack.tsx +115 -0
  72. package/src/components/Stack/stack.types.ts +68 -0
  73. package/src/components/Stack/stack.variants.ts +80 -0
  74. package/src/components/Typography/Typography.test.tsx +230 -0
  75. package/src/components/Typography/Typography.tsx +112 -0
  76. package/src/components/Typography/typography.types.ts +65 -0
  77. package/src/components/Typography/typography.variants.ts +113 -0
  78. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +86 -0
  79. package/src/components/VisuallyHidden/VisuallyHidden.tsx +59 -0
  80. package/src/components/VisuallyHidden/visuallyHidden.types.ts +45 -0
  81. package/src/index.ts +49 -0
  82. package/dist/components/AppShell/AppShell.d.ts +0 -32
  83. package/dist/components/AppShell/AppShell.d.ts.map +0 -1
  84. package/dist/components/AppShell/appShell.types.d.ts +0 -62
  85. package/dist/components/AppShell/appShell.types.d.ts.map +0 -1
  86. package/dist/components/AppShell/appShell.variants.d.ts +0 -65
  87. package/dist/components/AppShell/appShell.variants.d.ts.map +0 -1
  88. package/dist/components/Autocomplete/Autocomplete.d.ts +0 -32
  89. package/dist/components/Autocomplete/Autocomplete.d.ts.map +0 -1
  90. package/dist/components/Autocomplete/autocomplete.types.d.ts +0 -214
  91. package/dist/components/Autocomplete/autocomplete.types.d.ts.map +0 -1
  92. package/dist/components/Autocomplete/autocomplete.variants.d.ts +0 -214
  93. package/dist/components/Autocomplete/autocomplete.variants.d.ts.map +0 -1
  94. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -23
  95. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +0 -1
  96. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts +0 -98
  97. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts.map +0 -1
  98. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts +0 -85
  99. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +0 -1
  100. package/dist/components/Button/Button.d.ts +0 -44
  101. package/dist/components/Button/Button.d.ts.map +0 -1
  102. package/dist/components/Button/button.types.d.ts +0 -66
  103. package/dist/components/Button/button.types.d.ts.map +0 -1
  104. package/dist/components/Button/button.variants.d.ts +0 -104
  105. package/dist/components/Button/button.variants.d.ts.map +0 -1
  106. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  107. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  108. package/dist/components/Checkbox/checkbox.types.d.ts +0 -86
  109. package/dist/components/Checkbox/checkbox.types.d.ts.map +0 -1
  110. package/dist/components/Checkbox/checkbox.variants.d.ts +0 -109
  111. package/dist/components/Checkbox/checkbox.variants.d.ts.map +0 -1
  112. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +0 -38
  113. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +0 -1
  114. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts +0 -80
  115. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts.map +0 -1
  116. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts +0 -90
  117. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts.map +0 -1
  118. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -49
  119. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  120. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts +0 -95
  121. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts.map +0 -1
  122. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts +0 -165
  123. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts.map +0 -1
  124. package/dist/components/LeftNav/LeftNav.d.ts +0 -34
  125. package/dist/components/LeftNav/LeftNav.d.ts.map +0 -1
  126. package/dist/components/LeftNav/leftNav.types.d.ts +0 -136
  127. package/dist/components/LeftNav/leftNav.types.d.ts.map +0 -1
  128. package/dist/components/LeftNav/leftNav.variants.d.ts +0 -143
  129. package/dist/components/LeftNav/leftNav.variants.d.ts.map +0 -1
  130. package/dist/components/NumberField/NumberField.d.ts +0 -18
  131. package/dist/components/NumberField/NumberField.d.ts.map +0 -1
  132. package/dist/components/NumberField/numberField.types.d.ts +0 -79
  133. package/dist/components/NumberField/numberField.types.d.ts.map +0 -1
  134. package/dist/components/NumberField/numberField.variants.d.ts +0 -169
  135. package/dist/components/NumberField/numberField.variants.d.ts.map +0 -1
  136. package/dist/components/OTPField/OTPField.d.ts +0 -25
  137. package/dist/components/OTPField/OTPField.d.ts.map +0 -1
  138. package/dist/components/OTPField/otpField.types.d.ts +0 -74
  139. package/dist/components/OTPField/otpField.types.d.ts.map +0 -1
  140. package/dist/components/OTPField/otpField.variants.d.ts +0 -105
  141. package/dist/components/OTPField/otpField.variants.d.ts.map +0 -1
  142. package/dist/components/RadioGroup/RadioGroup.d.ts +0 -35
  143. package/dist/components/RadioGroup/RadioGroup.d.ts.map +0 -1
  144. package/dist/components/RadioGroup/radioGroup.types.d.ts +0 -103
  145. package/dist/components/RadioGroup/radioGroup.types.d.ts.map +0 -1
  146. package/dist/components/RadioGroup/radioGroup.variants.d.ts +0 -166
  147. package/dist/components/RadioGroup/radioGroup.variants.d.ts.map +0 -1
  148. package/dist/components/Snackbar/Snackbar.d.ts +0 -37
  149. package/dist/components/Snackbar/Snackbar.d.ts.map +0 -1
  150. package/dist/components/Snackbar/snackbar.types.d.ts +0 -86
  151. package/dist/components/Snackbar/snackbar.types.d.ts.map +0 -1
  152. package/dist/components/Snackbar/snackbar.variants.d.ts +0 -153
  153. package/dist/components/Snackbar/snackbar.variants.d.ts.map +0 -1
  154. package/dist/components/Switch/Switch.d.ts +0 -15
  155. package/dist/components/Switch/Switch.d.ts.map +0 -1
  156. package/dist/components/Switch/switch.types.d.ts +0 -47
  157. package/dist/components/Switch/switch.types.d.ts.map +0 -1
  158. package/dist/components/Switch/switch.variants.d.ts +0 -105
  159. package/dist/components/Switch/switch.variants.d.ts.map +0 -1
  160. package/dist/components/TextField/TextField.d.ts +0 -25
  161. package/dist/components/TextField/TextField.d.ts.map +0 -1
  162. package/dist/components/TextField/textField.types.d.ts +0 -72
  163. package/dist/components/TextField/textField.types.d.ts.map +0 -1
  164. package/dist/components/TextField/textField.variants.d.ts +0 -160
  165. package/dist/components/TextField/textField.variants.d.ts.map +0 -1
  166. package/dist/components/Textarea/Textarea.d.ts +0 -16
  167. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  168. package/dist/components/Textarea/textarea.types.d.ts +0 -63
  169. package/dist/components/Textarea/textarea.types.d.ts.map +0 -1
  170. package/dist/components/Textarea/textarea.variants.d.ts +0 -197
  171. package/dist/components/Textarea/textarea.variants.d.ts.map +0 -1
  172. package/dist/components/TopBar/TopBar.d.ts +0 -33
  173. package/dist/components/TopBar/TopBar.d.ts.map +0 -1
  174. package/dist/components/TopBar/topBar.types.d.ts +0 -49
  175. package/dist/components/TopBar/topBar.types.d.ts.map +0 -1
  176. package/dist/components/TopBar/topBar.variants.d.ts +0 -79
  177. package/dist/components/TopBar/topBar.variants.d.ts.map +0 -1
  178. package/dist/components/_shared/resolveValidationState.d.ts +0 -42
  179. package/dist/components/_shared/resolveValidationState.d.ts.map +0 -1
  180. package/dist/hooks/useAccessState.d.ts +0 -37
  181. package/dist/hooks/useAccessState.d.ts.map +0 -1
  182. package/dist/index.d.ts.map +0 -1
  183. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  184. package/dist/utils/cn.d.ts +0 -26
  185. package/dist/utils/cn.d.ts.map +0 -1
@@ -1,169 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- /**
3
- * Tailwind-variants recipe for `<NumberField>`.
4
- *
5
- * Same 7-slot taxonomy as `<TextField>` for visual/override parity, plus
6
- * a dedicated `stepper` slot for the optional +/- increment buttons.
7
- */
8
- export declare const numberFieldVariants: import("tailwind-variants").TVReturnType<{
9
- size: {
10
- sm: {
11
- inputWrapper: string;
12
- input: string;
13
- stepperButton: string;
14
- };
15
- md: {
16
- inputWrapper: string;
17
- input: string;
18
- stepperButton: string;
19
- };
20
- lg: {
21
- inputWrapper: string;
22
- input: string;
23
- stepperButton: string;
24
- };
25
- };
26
- layout: {
27
- stacked: {
28
- root: string;
29
- };
30
- inline: {
31
- root: string;
32
- label: string;
33
- };
34
- };
35
- error: {
36
- true: {
37
- inputWrapper: string;
38
- };
39
- };
40
- fullWidth: {
41
- true: {
42
- root: string;
43
- inputWrapper: string;
44
- };
45
- };
46
- disabled: {
47
- true: {
48
- inputWrapper: string;
49
- };
50
- };
51
- }, {
52
- root: string;
53
- label: string;
54
- requiredMark: string;
55
- inputWrapper: string[];
56
- input: string[];
57
- stepper: string[];
58
- stepperButton: string[];
59
- helperText: string;
60
- errorText: string;
61
- }, undefined, {
62
- size: {
63
- sm: {
64
- inputWrapper: string;
65
- input: string;
66
- stepperButton: string;
67
- };
68
- md: {
69
- inputWrapper: string;
70
- input: string;
71
- stepperButton: string;
72
- };
73
- lg: {
74
- inputWrapper: string;
75
- input: string;
76
- stepperButton: string;
77
- };
78
- };
79
- layout: {
80
- stacked: {
81
- root: string;
82
- };
83
- inline: {
84
- root: string;
85
- label: string;
86
- };
87
- };
88
- error: {
89
- true: {
90
- inputWrapper: string;
91
- };
92
- };
93
- fullWidth: {
94
- true: {
95
- root: string;
96
- inputWrapper: string;
97
- };
98
- };
99
- disabled: {
100
- true: {
101
- inputWrapper: string;
102
- };
103
- };
104
- }, {
105
- root: string;
106
- label: string;
107
- requiredMark: string;
108
- inputWrapper: string[];
109
- input: string[];
110
- stepper: string[];
111
- stepperButton: string[];
112
- helperText: string;
113
- errorText: string;
114
- }, import("tailwind-variants").TVReturnType<{
115
- size: {
116
- sm: {
117
- inputWrapper: string;
118
- input: string;
119
- stepperButton: string;
120
- };
121
- md: {
122
- inputWrapper: string;
123
- input: string;
124
- stepperButton: string;
125
- };
126
- lg: {
127
- inputWrapper: string;
128
- input: string;
129
- stepperButton: string;
130
- };
131
- };
132
- layout: {
133
- stacked: {
134
- root: string;
135
- };
136
- inline: {
137
- root: string;
138
- label: string;
139
- };
140
- };
141
- error: {
142
- true: {
143
- inputWrapper: string;
144
- };
145
- };
146
- fullWidth: {
147
- true: {
148
- root: string;
149
- inputWrapper: string;
150
- };
151
- };
152
- disabled: {
153
- true: {
154
- inputWrapper: string;
155
- };
156
- };
157
- }, {
158
- root: string;
159
- label: string;
160
- requiredMark: string;
161
- inputWrapper: string[];
162
- input: string[];
163
- stepper: string[];
164
- stepperButton: string[];
165
- helperText: string;
166
- errorText: string;
167
- }, undefined, unknown, unknown, undefined>>;
168
- export type NumberFieldVariants = VariantProps<typeof numberFieldVariants>;
169
- //# sourceMappingURL=numberField.variants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"numberField.variants.d.ts","sourceRoot":"","sources":["../../../src/components/NumberField/numberField.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAmF9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1,25 +0,0 @@
1
- import type { OTPFieldProps } from './otpField.types.js';
2
- /**
3
- * Dashforge TW OTPField — segmented input for one-time codes.
4
- *
5
- * Renders N visible "slot" cells over a hidden text input that absorbs
6
- * all keystrokes. The visible cells are read-only display surfaces; only
7
- * the hidden input takes focus. This pattern works correctly with
8
- * password managers + autofill (the hidden input has
9
- * `autoComplete="one-time-code"`).
10
- *
11
- * Bridge contract: the joined string (length ≤ `length`) is what gets
12
- * written to the bridge. Use `<DashForm rules={{ minLength: length }} />`
13
- * to require a complete code.
14
- *
15
- * Out of scope for F4-B (deferred to a follow-up sprint):
16
- * - Per-slot click to jump caret
17
- * - Arrow-key navigation between slots
18
- * - Right-to-left input direction
19
- *
20
- * **A11y**: the hidden `<input>` exposes
21
- * `inputMode="numeric" | "text"` per mode + `autoComplete="one-time-code"`
22
- * so iOS Safari + Android Chrome trigger SMS autofill correctly.
23
- */
24
- export declare function OTPField(props: OTPFieldProps): import("react/jsx-runtime").JSX.Element | null;
25
- //# sourceMappingURL=OTPField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OTPField.d.ts","sourceRoot":"","sources":["../../../src/components/OTPField/OTPField.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,kDA2M5C"}
@@ -1,74 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { Engine } from '@dashforge/ui-core';
3
- import type { AccessRequirement } from '@dashforge/rbac';
4
- import type { OTPFieldVariants } from './otpField.variants.js';
5
- export type OTPFieldMode = 'numeric' | 'alphanumeric';
6
- export interface OTPFieldSlotProps {
7
- root?: {
8
- className?: string;
9
- };
10
- label?: {
11
- className?: string;
12
- };
13
- requiredMark?: {
14
- className?: string;
15
- };
16
- slotsRow?: {
17
- className?: string;
18
- };
19
- slot?: {
20
- className?: string;
21
- };
22
- slotChar?: {
23
- className?: string;
24
- };
25
- hiddenInput?: {
26
- className?: string;
27
- };
28
- helperText?: {
29
- className?: string;
30
- };
31
- errorText?: {
32
- className?: string;
33
- };
34
- }
35
- /**
36
- * Props for `<OTPField>`.
37
- *
38
- * Storage contract: bridge value is a single string (e.g. `"123456"`).
39
- * The user types characters that the component sanitises per `mode`:
40
- * - `'numeric'` → `[0-9]`
41
- * - `'alphanumeric'` → `[A-Za-z0-9]`
42
- * Anything else is dropped. Paste content is sanitised the same way and
43
- * fills slots sequentially.
44
- */
45
- export interface OTPFieldProps extends OTPFieldVariants {
46
- name: string;
47
- rules?: unknown;
48
- label?: ReactNode;
49
- helperText?: ReactNode;
50
- required?: boolean;
51
- error?: boolean;
52
- disabled?: boolean;
53
- /** Engine predicate — field not rendered when it returns `false`. */
54
- visibleWhen?: (engine: Engine) => boolean;
55
- /** RBAC access requirement (combines with explicit `disabled`). */
56
- access?: AccessRequirement;
57
- /** Root className shortcut. */
58
- sx?: string;
59
- /** Per-slot className overrides. */
60
- slotProps?: OTPFieldSlotProps;
61
- /** Number of slots (default 6 — the SMS code convention). */
62
- length?: number;
63
- /** Character set allowed. Default `'numeric'`. */
64
- mode?: OTPFieldMode;
65
- /** Controlled value (form mode reads from the bridge if omitted). */
66
- value?: string;
67
- /** Default value (uncontrolled, standalone mode only). */
68
- defaultValue?: string;
69
- /** Fires every time the joined value changes (sanitised, ≤ length). */
70
- onChange?: (value: string) => void;
71
- /** Fires when the user has filled all slots. */
72
- onComplete?: (value: string) => void;
73
- }
74
- //# sourceMappingURL=otpField.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otpField.types.d.ts","sourceRoot":"","sources":["../../../src/components/OTPField/otpField.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,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,MAAM,YAAY,GAAG,SAAS,GAAG,cAAc,CAAC;AAEtD,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,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,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;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,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,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,gDAAgD;IAChD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC"}
@@ -1,105 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- /**
3
- * Tailwind-variants recipe for `<OTPField>`.
4
- *
5
- * Slots:
6
- * - `root` — outer wrapper (label + slots row + helper/error)
7
- * - `label` — group-level label
8
- * - `requiredMark` — red `*` for required fields
9
- * - `slotsRow` — flex row holding the visible slot boxes
10
- * - `slot` — single slot cell (visual representation of a char)
11
- * - `slotChar` — the character displayed inside a slot
12
- * - `hiddenInput` — the actual <input> absorbing keystrokes (visually
13
- * hidden but focusable + reads as a single
14
- * one-line text input to AT)
15
- * - `helperText` — descriptive line below
16
- * - `errorText` — semantic counterpart of helperText for error mode
17
- *
18
- * Variants:
19
- * - `size` : sm / md / lg — drives slot box dimensions + text size
20
- * - `error` : bool — swaps slot border + helperText color to danger tones
21
- */
22
- export declare const otpFieldVariants: import("tailwind-variants").TVReturnType<{
23
- size: {
24
- sm: {
25
- slot: string;
26
- };
27
- md: {
28
- slot: string;
29
- };
30
- lg: {
31
- slot: string;
32
- };
33
- };
34
- error: {
35
- true: {
36
- slot: string;
37
- };
38
- };
39
- }, {
40
- root: string;
41
- label: string;
42
- requiredMark: string;
43
- slotsRow: string;
44
- slot: string[];
45
- slotChar: string;
46
- hiddenInput: string[];
47
- helperText: string;
48
- errorText: string;
49
- }, undefined, {
50
- size: {
51
- sm: {
52
- slot: string;
53
- };
54
- md: {
55
- slot: string;
56
- };
57
- lg: {
58
- slot: string;
59
- };
60
- };
61
- error: {
62
- true: {
63
- slot: string;
64
- };
65
- };
66
- }, {
67
- root: string;
68
- label: string;
69
- requiredMark: string;
70
- slotsRow: string;
71
- slot: string[];
72
- slotChar: string;
73
- hiddenInput: string[];
74
- helperText: string;
75
- errorText: string;
76
- }, import("tailwind-variants").TVReturnType<{
77
- size: {
78
- sm: {
79
- slot: string;
80
- };
81
- md: {
82
- slot: string;
83
- };
84
- lg: {
85
- slot: string;
86
- };
87
- };
88
- error: {
89
- true: {
90
- slot: string;
91
- };
92
- };
93
- }, {
94
- root: string;
95
- label: string;
96
- requiredMark: string;
97
- slotsRow: string;
98
- slot: string[];
99
- slotChar: string;
100
- hiddenInput: string[];
101
- helperText: string;
102
- errorText: string;
103
- }, undefined, unknown, unknown, undefined>>;
104
- export type OTPFieldVariants = VariantProps<typeof otpFieldVariants>;
105
- //# sourceMappingURL=otpField.variants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"otpField.variants.d.ts","sourceRoot":"","sources":["../../../src/components/OTPField/otpField.variants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA+C3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1,35 +0,0 @@
1
- import type { RadioGroupProps } from './radioGroup.types.js';
2
- /**
3
- * Dashforge TW RadioGroup — bridge-integrated single-choice group.
4
- *
5
- * Renders through Radix `RadioGroup.Root` + `Item` + `Indicator`, styled
6
- * with the `radioGroupVariants` TV recipe. Behaviour at the bridge level
7
- * is a 1:1 port of `@dashforge/ui/RadioGroup` (MUI):
8
- *
9
- * - Inside `DashFormProvider`: registers with the bridge, reads
10
- * `useDashFieldMeta` for the selected value (reactive snapshot),
11
- * writes through `bridge.setValue` on change, fires
12
- * `registration.onChange` / `onBlur` for RHF.
13
- * - Outside: behaves as a plain Radix RadioGroup (controlled by `value`
14
- * + `onValueChange`, or uncontrolled via `defaultValue`).
15
- * - `visibleWhen` predicates the engine state.
16
- * - `useAccessState(access)` resolves group-level RBAC; per-option RBAC
17
- * is resolved by calling `useAccessState` for every entry of the
18
- * `options` array (Rules of Hooks: stable as long as `options.length`
19
- * is stable, which is the documented contract — mutating the array
20
- * between renders breaks).
21
- * - Group-level RBAC has precedence over option-level (hide-the-group
22
- * wins even if some options would be visible).
23
- * - Error gating: bridge error shows only after `touched` or after the
24
- * form has been submitted at least once (Form Closure v1).
25
- * - StrictMode-safe unregister-on-unmount, mirrors Checkbox/Switch.
26
- *
27
- * **A11y**:
28
- * - The group root is a `<div role="radiogroup">` (Radix default).
29
- * - A `<label id="...">` is associated with the group via `aria-labelledby`.
30
- * - The helper/error text is linked via `aria-describedby`.
31
- * - Each option is a Radix `<RadioGroup.Item>` (`<button role="radio">`)
32
- * keyboard-accessible by default (arrow keys move selection).
33
- */
34
- export declare function RadioGroup(props: RadioGroupProps): import("react/jsx-runtime").JSX.Element | null;
35
- //# sourceMappingURL=RadioGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kDAyNhD"}
@@ -1,103 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { Engine } from '@dashforge/ui-core';
3
- import type { AccessRequirement } from '@dashforge/rbac';
4
- import type { RadioGroupVariants } from './radioGroup.variants.js';
5
- /**
6
- * A single selectable option in a `<RadioGroup>`.
7
- */
8
- export interface RadioGroupOption {
9
- /** The string value persisted on the form for this option. */
10
- value: string;
11
- /** Display label (string or any React node — e.g. with an icon). */
12
- label: ReactNode;
13
- /** Per-option explicit disable. ORed with group-level disable + RBAC. */
14
- disabled?: boolean;
15
- /**
16
- * RBAC access requirement for this specific option:
17
- * - `onUnauthorized: 'hide'` → option not rendered (unless it's the currently selected value, kept disabled to expose the choice)
18
- * - `onUnauthorized: 'disable'` → option visible but not selectable
19
- * - `onUnauthorized: 'readonly'` → falls back to disabled (radios have no true readonly semantics)
20
- *
21
- * Group-level access has **precedence** over option-level access — if the
22
- * whole group is hidden/disabled, that wins for all options regardless of
23
- * their own access.
24
- */
25
- access?: AccessRequirement;
26
- }
27
- /**
28
- * Optional className override for each slot. Use to extend specific parts
29
- * of the recipe without losing the default classes. Override semantics
30
- * follow the `tailwind-merge` last-wins rule.
31
- */
32
- export interface RadioGroupSlotProps {
33
- root?: {
34
- className?: string;
35
- };
36
- label?: {
37
- className?: string;
38
- };
39
- requiredMark?: {
40
- className?: string;
41
- };
42
- optionList?: {
43
- className?: string;
44
- };
45
- option?: {
46
- className?: string;
47
- };
48
- control?: {
49
- className?: string;
50
- };
51
- indicator?: {
52
- className?: string;
53
- };
54
- optionLabel?: {
55
- className?: string;
56
- };
57
- helperText?: {
58
- className?: string;
59
- };
60
- errorText?: {
61
- className?: string;
62
- };
63
- }
64
- /**
65
- * Props for `<RadioGroup>`.
66
- *
67
- * Mirrors the MUI-side `@dashforge/ui/RadioGroup` at the bridge level —
68
- * same `name` / `rules` / `visibleWhen` / `access` semantics, same
69
- * Form Closure v1 error gating, same option-level RBAC.
70
- */
71
- export interface RadioGroupProps extends RadioGroupVariants {
72
- /** Field name registered with the bridge. */
73
- name: string;
74
- /** Array of selectable options. Order is render order. */
75
- options: RadioGroupOption[];
76
- /** Group-level label (rendered above the option list). */
77
- label?: ReactNode;
78
- /** React Hook Form validation rules — forwarded to `bridge.register`. */
79
- rules?: unknown;
80
- /** Helper text shown below the option list when not in error state. */
81
- helperText?: ReactNode;
82
- /** Marks the group as required (renders red `*` after the label). */
83
- required?: boolean;
84
- /** Explicit error override (otherwise resolved from bridge). */
85
- error?: boolean;
86
- /** Explicit disable override (ORed with RBAC). */
87
- disabled?: boolean;
88
- /** Engine predicate — group not rendered when it returns `false`. */
89
- visibleWhen?: (engine: Engine) => boolean;
90
- /** Group-level RBAC requirement (precedes option-level access). */
91
- access?: AccessRequirement;
92
- /** Root className shortcut (`cn`'d with the variant root class). */
93
- sx?: string;
94
- /** Per-slot className overrides. */
95
- slotProps?: RadioGroupSlotProps;
96
- /** Controlled value (for standalone mode without a form bridge). */
97
- value?: string;
98
- /** Default value for uncontrolled mode (no-op in form mode — bridge wins). */
99
- defaultValue?: string;
100
- /** Change handler (called *after* bridge update in form mode). */
101
- onValueChange?: (value: string) => void;
102
- }
103
- //# sourceMappingURL=radioGroup.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"radioGroup.types.d.ts","sourceRoot":"","sources":["../../../src/components/RadioGroup/radioGroup.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,KAAK,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,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,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,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;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,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,mBAAmB,CAAC;IAChC,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC"}