@spothero/ui 25.5.1 → 25.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/components/Accordion/styles/index.d.ts +13 -89
  2. package/dist/components/Alert/Alert.d.ts +33 -0
  3. package/dist/components/Badge/Badge.d.ts +1 -0
  4. package/dist/components/Badge/styles/index.d.ts +11 -75
  5. package/dist/components/Button/Button.d.ts +27 -0
  6. package/dist/components/Button/Button.styles.d.ts +174 -553
  7. package/dist/components/Button/index.d.ts +2 -0
  8. package/dist/components/Checkbox/Checkbox.d.ts +10 -0
  9. package/dist/components/Checkbox/index.d.ts +1 -0
  10. package/dist/components/Checkbox/styles/index.d.ts +4 -200
  11. package/dist/components/Divider/Divider.styles.d.ts +5 -31
  12. package/dist/components/Drawer/Drawer.d.ts +10 -0
  13. package/dist/components/Drawer/index.d.ts +2 -0
  14. package/dist/components/Drawer/styles/index.d.ts +4 -149
  15. package/dist/components/Grid/Grid.d.ts +10 -0
  16. package/dist/components/Grid/Grid.styles.d.ts +10 -0
  17. package/dist/components/Grid/GridItem.d.ts +8 -0
  18. package/dist/components/Grid/GridItem.styles.d.ts +3 -3
  19. package/dist/components/Heading/Heading.d.ts +9 -0
  20. package/dist/components/Heading/Heading.styles.d.ts +12 -65
  21. package/dist/components/Image/Image.d.ts +21 -0
  22. package/dist/components/Input/Input.d.ts +12 -0
  23. package/dist/components/Input/index.d.ts +1 -0
  24. package/dist/components/Input/styles/index.d.ts +3 -217
  25. package/dist/components/Link/Link.d.ts +1 -0
  26. package/dist/components/Link/Link.styles.d.ts +11 -84
  27. package/dist/components/List/List.d.ts +25 -0
  28. package/dist/components/List/index.d.ts +2 -0
  29. package/dist/components/List/styles/index.d.ts +4 -32
  30. package/dist/components/List/styles/item.styles.d.ts +3 -3
  31. package/dist/components/Loader/Loader.d.ts +13 -0
  32. package/dist/components/Progress/Progress.d.ts +8 -0
  33. package/dist/components/Progress/Progress.styles.d.ts +4 -75
  34. package/dist/components/Radio/Radio.d.ts +9 -0
  35. package/dist/components/Radio/RadioGroup.d.ts +14 -0
  36. package/dist/components/Radio/index.d.ts +2 -0
  37. package/dist/components/Radio/styles/index.d.ts +43 -277
  38. package/dist/components/RefreshedInput/Button/styles/index.d.ts +1 -263
  39. package/dist/components/RefreshedInput/Input/styles/index.d.ts +2 -254
  40. package/dist/components/RefreshedInput/Select/styles/index.d.ts +2 -71
  41. package/dist/components/Select/Select.d.ts +11 -0
  42. package/dist/components/Select/index.d.ts +1 -0
  43. package/dist/components/Select/styles/index.d.ts +28 -218
  44. package/dist/components/Skeleton/Skeleton.styles.d.ts +4 -26
  45. package/dist/components/Skeleton/index.d.ts +1 -0
  46. package/dist/components/Switch/Switch.d.ts +21 -0
  47. package/dist/components/Switch/index.d.ts +1 -0
  48. package/dist/components/Switch/styles/index.d.ts +4 -116
  49. package/dist/components/Table/Table.styles.d.ts +1 -4
  50. package/dist/components/Text/Text.d.ts +11 -0
  51. package/dist/components/Text/Text.styles.d.ts +29 -30
  52. package/dist/components/Text/combineAsWithVariant.d.ts +101 -0
  53. package/dist/components/Text/options.d.ts +2 -0
  54. package/dist/components/Textarea/Textarea.d.ts +12 -0
  55. package/dist/components/Textarea/index.d.ts +1 -0
  56. package/dist/components/Textarea/styles/index.d.ts +3 -0
  57. package/dist/index.cjs.js +3277 -3480
  58. package/dist/index.cjs.js.map +1 -1
  59. package/dist/index.d.ts +366 -58
  60. package/dist/index.esm.js +3272 -3478
  61. package/dist/index.esm.js.map +1 -1
  62. package/dist/theme/base/animation.d.ts +217 -0
  63. package/dist/theme/base/colors.d.ts +29 -13
  64. package/dist/theme/base/index.d.ts +1 -0
  65. package/dist/theme/base/notifications.d.ts +3 -3
  66. package/dist/types/forwardRefComponent.d.ts +2 -0
  67. package/package.json +17 -14
package/dist/index.d.ts CHANGED
@@ -12,7 +12,89 @@ import {
12
12
  } from '@chakra-ui/react';
13
13
 
14
14
  // Re-export commonly used Chakra types for consumers
15
- export type {BoxProps, FlexProps, ContainerProps, DividerProps, SpinnerProps} from '@chakra-ui/react';
15
+ export type {
16
+ BoxProps,
17
+ FlexProps,
18
+ ContainerProps,
19
+ DividerProps,
20
+ SpinnerProps,
21
+ } from '@chakra-ui/react';
22
+
23
+ export const ANIMATION_TOKENS: {
24
+ readonly DURATION: {
25
+ readonly SHORT_1: 0.07;
26
+ readonly SHORT_2: 0.11;
27
+ readonly MEDIUM_1: 0.15;
28
+ readonly MEDIUM_2: 0.24;
29
+ readonly SLOW_1: 0.4;
30
+ readonly SLOW_2: 0.7;
31
+ };
32
+ readonly DURATION_MS: {
33
+ readonly SHORT_1: 70;
34
+ readonly SHORT_2: 110;
35
+ readonly MEDIUM_1: 150;
36
+ readonly MEDIUM_2: 240;
37
+ readonly SLOW_1: 400;
38
+ readonly SLOW_2: 700;
39
+ };
40
+ readonly DURATION_DESCRIPTIONS: {
41
+ readonly SHORT_1: 'Micro-interactions such as buttons and toggles';
42
+ readonly SHORT_2: 'Micro-interactions such as fade';
43
+ readonly MEDIUM_1: 'Micro-interactions, small expansion, short distance movements';
44
+ readonly MEDIUM_2: 'Expansion, system communication, toast';
45
+ readonly SLOW_1: 'Large expansion, important system notifications';
46
+ readonly SLOW_2: 'Background dimming and full-screen animations';
47
+ };
48
+ readonly EASING: {
49
+ readonly SNAPPY: readonly [0.16, 1, 0.3, 1];
50
+ readonly CALM: readonly [0.4, 0, 0.2, 1];
51
+ readonly LINEAR: readonly [0, 0, 1, 1];
52
+ };
53
+ readonly EASING_CSS: {
54
+ readonly SNAPPY: 'cubic-bezier(0.16, 1, 0.3, 1)';
55
+ readonly CALM: 'cubic-bezier(0.4, 0, 0.2, 1)';
56
+ readonly LINEAR: 'linear';
57
+ };
58
+ readonly EASING_DESCRIPTIONS: {
59
+ readonly SNAPPY: 'Quick start, smooth finish. Good for UI interactions.';
60
+ readonly CALM: 'Standard easing. Good for general transitions.';
61
+ readonly LINEAR: 'Constant speed. Good for progress indicators.';
62
+ };
63
+ readonly TRANSITION: {
64
+ readonly MICRO: {
65
+ readonly duration: 0.07;
66
+ readonly ease: readonly [0.16, 1, 0.3, 1];
67
+ };
68
+ readonly FADE: {
69
+ readonly duration: 0.11;
70
+ readonly ease: readonly [0.16, 1, 0.3, 1];
71
+ };
72
+ readonly SMALL: {
73
+ readonly duration: 0.15;
74
+ readonly ease: readonly [0.16, 1, 0.3, 1];
75
+ };
76
+ readonly MEDIUM: {
77
+ readonly duration: 0.24;
78
+ readonly ease: readonly [0.16, 1, 0.3, 1];
79
+ };
80
+ readonly LARGE: {
81
+ readonly duration: 0.4;
82
+ readonly ease: readonly [0.4, 0, 0.2, 1];
83
+ };
84
+ readonly FULL_SCREEN: {
85
+ readonly duration: 0.7;
86
+ readonly ease: readonly [0.4, 0, 0.2, 1];
87
+ };
88
+ };
89
+ readonly TRANSITION_DESCRIPTIONS: {
90
+ readonly MICRO: 'Quick micro-interaction (buttons, toggles)';
91
+ readonly FADE: 'Small fade transitions';
92
+ readonly SMALL: 'Small expansion or short movements';
93
+ readonly MEDIUM: 'Medium expansion, toasts, system communication';
94
+ readonly LARGE: 'Large expansion, important notifications';
95
+ readonly FULL_SCREEN: 'Full-screen animations, background dimming';
96
+ };
97
+ };
16
98
 
17
99
  // ============================================================================
18
100
  // Phase 2a: Converted TypeScript Components
@@ -56,13 +138,41 @@ export {
56
138
  AccordionButton,
57
139
  } from '@chakra-ui/react';
58
140
 
59
- // ============================================================================
60
- // NOT YET CONVERTED - JavaScript Components (Basic type stubs)
61
- // These will be properly typed as they are converted in Phases 2b-4
62
- // ============================================================================
63
-
64
- // Button (Phase 3b - not yet converted)
65
- export const Button: React.ComponentType<any>;
141
+ // Button (Phase 3b) - Converted
142
+ export type ButtonVariant =
143
+ | 'primary'
144
+ | 'primaryOnDark'
145
+ | 'secondary'
146
+ | 'secondaryOnDark'
147
+ | 'tertiary'
148
+ | 'tertiaryOnDark'
149
+ | 'black'
150
+ | 'blackOnDark'
151
+ | 'destructive'
152
+ | 'destructiveOnDark';
153
+ export type ButtonProps = Omit<
154
+ React.ComponentProps<typeof import('@chakra-ui/react').Button>,
155
+ 'variant'
156
+ > & {
157
+ /** If `true`, the button will render as an anchor. */
158
+ asAnchor?: boolean;
159
+ /** If `true`, and an anchor button, target="_blank" and rel="noopener noreferrer" will be set on the anchor. */
160
+ isExternal?: boolean;
161
+ /** Supports the standard Chakra height prop plus fe-ui `md`/`lg` presets. */
162
+ height?:
163
+ | React.ComponentProps<
164
+ typeof import('@chakra-ui/react').Button
165
+ >['height']
166
+ | 'md'
167
+ | 'lg';
168
+ href?: string;
169
+ target?: string;
170
+ rel?: string;
171
+ variant?: ButtonVariant;
172
+ };
173
+ export const Button: React.ForwardRefExoticComponent<
174
+ ButtonProps & React.RefAttributes<HTMLElement>
175
+ >;
66
176
  export {ButtonGroup} from '@chakra-ui/react';
67
177
 
68
178
  // Table (Phase 4c - not yet converted)
@@ -81,14 +191,21 @@ export {
81
191
  // Modal (Phase 4b - not yet converted)
82
192
  export const Modal: React.ComponentType<any>;
83
193
  export const AlwaysMountedModal: React.ComponentType<any>;
84
- export {
85
- ModalBody,
86
- ModalFooter,
87
- ModalHeader,
88
- } from '@chakra-ui/react';
89
-
90
- // Drawer (Phase 3b - not yet converted)
91
- export const Drawer: React.ComponentType<any>;
194
+ export {ModalBody, ModalFooter, ModalHeader} from '@chakra-ui/react';
195
+
196
+ // Drawer (Phase 3b) - Converted
197
+ export type DrawerProps = Omit<
198
+ React.ComponentProps<typeof import('@chakra-ui/react').Drawer>,
199
+ 'children'
200
+ > & {
201
+ children: React.ReactNode;
202
+ header?: React.ReactNode;
203
+ drawerCloseButton?: React.ReactNode;
204
+ headerProps?: React.ComponentProps<
205
+ typeof import('@chakra-ui/react').DrawerHeader
206
+ >;
207
+ };
208
+ export const Drawer: React.ComponentType<DrawerProps>;
92
209
  export {
93
210
  DrawerBody,
94
211
  DrawerCloseButton,
@@ -99,57 +216,214 @@ export {
99
216
  DrawerOverlay,
100
217
  } from '@chakra-ui/react';
101
218
 
102
- // Skeleton (Phase 2b - not yet converted)
219
+ // ============================================================================
220
+ // Phase 2b: Converted TypeScript Components (Simple with styles)
221
+ // ============================================================================
222
+
223
+ // Badge (Phase 2b) - Converted (re-export with custom styles)
224
+ export const Badge: React.ForwardRefExoticComponent<
225
+ import('@chakra-ui/react').BadgeProps & React.RefAttributes<HTMLSpanElement>
226
+ >;
227
+
228
+ // Skeleton (Phase 2b) - Converted (re-exports from Chakra)
103
229
  export {Skeleton, SkeletonCircle, SkeletonText} from '@chakra-ui/react';
104
230
 
105
- // Alert (Phase 3b - not yet converted)
106
- export const Alert: React.ComponentType<any>;
231
+ // Grid (Phase 2b) - Converted
232
+ export type GridProps = React.ComponentProps<
233
+ typeof import('@chakra-ui/react').Grid
234
+ > & {
235
+ /** This will reduce the grid gap by half */
236
+ isCompact?: boolean;
237
+ };
238
+ export const Grid: React.ForwardRefExoticComponent<
239
+ GridProps & React.RefAttributes<HTMLDivElement>
240
+ >;
107
241
 
108
- // Tabs (Phase 4c - not yet converted)
109
- export const Tabs: React.ComponentType<any>;
110
- export {TabList, TabPanels, Tab, TabPanel} from '@chakra-ui/react';
242
+ // GridItem (Phase 2b) - Converted
243
+ export type GridItemProps = React.ComponentProps<
244
+ typeof import('@chakra-ui/react').GridItem
245
+ >;
246
+ export const GridItem: React.ForwardRefExoticComponent<
247
+ GridItemProps & React.RefAttributes<HTMLDivElement>
248
+ >;
111
249
 
112
- // Select (Phase 3a - not yet converted)
113
- export const Select: React.ComponentType<any>;
250
+ // Checkbox (Phase 2b) - Converted
251
+ export type CheckboxProps = Omit<
252
+ React.ComponentProps<typeof import('@chakra-ui/react').Checkbox>,
253
+ 'size'
254
+ > & {
255
+ /** Optional helper text displayed below the checkbox */
256
+ helperText?: string;
257
+ /** The size of the checkbox */
258
+ size?: 'sm' | 'md' | 'lg';
259
+ };
260
+ export const Checkbox: React.ForwardRefExoticComponent<
261
+ CheckboxProps & React.RefAttributes<HTMLInputElement>
262
+ >;
114
263
 
115
- // Switch (Phase 2b - not yet converted)
116
- export const Switch: React.ComponentType<any>;
264
+ // Switch (Phase 2b) - Converted
265
+ export type SwitchProps = React.ComponentProps<
266
+ typeof import('@chakra-ui/react').Switch
267
+ > & {
268
+ /** The label for the switch */
269
+ label?: string;
270
+ /** Optional helper text displayed below the switch */
271
+ helperText?: string;
272
+ /** Error message to display when invalid */
273
+ errorMessage?: string;
274
+ /** Whether the switch has an invalid state */
275
+ isInvalid?: boolean;
276
+ /** Whether the switch is disabled */
277
+ isDisabled?: boolean;
278
+ /** Whether the switch is required */
279
+ isRequired?: boolean;
280
+ /** Unique identifier for the switch */
281
+ id: string;
282
+ };
283
+ export const Switch: React.ForwardRefExoticComponent<
284
+ SwitchProps & React.RefAttributes<HTMLInputElement>
285
+ >;
117
286
 
118
- // Link (Phase 3a - not yet converted)
119
- export const Link: React.ComponentType<any>;
120
- export {Link as ChakraLink, LinkBox, LinkOverlay} from '@chakra-ui/react';
287
+ // Alert (Phase 3b) - Converted
288
+ export type AlertStatus = 'neutral' | 'success' | 'warning' | 'error';
289
+ export type AlertSize = 'sm' | 'md' | 'lg';
290
+ export type AlertProps = Omit<
291
+ React.ComponentProps<typeof import('@chakra-ui/react').Alert>,
292
+ 'status' | 'title'
293
+ > & {
294
+ status?: AlertStatus;
295
+ title?: React.ReactNode;
296
+ buttonProps?: Omit<ButtonProps, 'children' | 'variant'> | null;
297
+ buttonText?: string | null;
298
+ buttonVariant?: ButtonVariant;
299
+ showDismiss?: boolean;
300
+ onDismissClick?: React.MouseEventHandler<HTMLButtonElement> | null;
301
+ showIcon?: boolean;
302
+ description?: React.ReactNode;
303
+ size?: AlertSize;
304
+ icon?: React.ElementType | null;
305
+ };
306
+ export const Alert: React.ForwardRefExoticComponent<
307
+ AlertProps & React.RefAttributes<HTMLDivElement>
308
+ >;
121
309
 
122
- // Text (Phase 3a - not yet converted)
123
- export const Text: React.ComponentType<any>;
310
+ // Tabs (Phase 4c - not yet converted)
311
+ export const Tabs: React.ComponentType<any>;
312
+ export {TabList, TabPanels, Tab, TabPanel} from '@chakra-ui/react';
124
313
 
125
- // Grid (Phase 2b - not yet converted)
126
- export const Grid: React.ComponentType<any>;
127
- export const GridItem: React.ComponentType<any>;
314
+ // Select (Phase 3a) - Converted
315
+ export type SelectProps = import('@chakra-ui/react').SelectProps & {
316
+ id: string;
317
+ label?: string;
318
+ helperText?: string;
319
+ errorMessage?: string;
320
+ isOptional?: boolean;
321
+ };
322
+ export const Select: React.ForwardRefExoticComponent<
323
+ SelectProps & React.RefAttributes<HTMLSelectElement>
324
+ >;
325
+
326
+ // Link (Phase 3a) - Converted (re-export from Chakra with custom styles)
327
+ export {Link, Link as ChakraLink, LinkBox, LinkOverlay} from '@chakra-ui/react';
328
+
329
+ // Text (Phase 3a) - Converted
330
+ export type TextVariant = 'body' | 'body2' | 'caption';
331
+ export type TextProps = Omit<
332
+ import('@chakra-ui/react').TextProps,
333
+ 'as' | 'variant'
334
+ > & {
335
+ as?: React.ElementType;
336
+ variant?: TextVariant;
337
+ };
338
+ export const Text: React.ForwardRefExoticComponent<
339
+ TextProps & React.RefAttributes<HTMLParagraphElement>
340
+ >;
128
341
 
129
- // List (Phase 3b - not yet converted)
130
- export const List: React.ComponentType<any>;
342
+ // List (Phase 3b) - Converted
343
+ export type ListStylePosition =
344
+ | 'unset'
345
+ | 'revert'
346
+ | 'inside'
347
+ | 'outside'
348
+ | 'initial'
349
+ | 'inherit';
350
+ export type ListType = 'ordered' | 'unstyled' | 'unordered';
351
+ export type ListProps = Omit<
352
+ React.ComponentProps<typeof import('@chakra-ui/react').List>,
353
+ 'type'
354
+ > & {
355
+ stylePosition?: ListStylePosition;
356
+ type?: ListType;
357
+ };
358
+ export const List: React.ForwardRefExoticComponent<
359
+ ListProps & React.RefAttributes<HTMLUListElement | HTMLOListElement>
360
+ >;
131
361
  export {ListItem} from '@chakra-ui/react';
132
362
 
133
- // Heading (Phase 3a - not yet converted)
134
- export const Heading: React.ComponentType<any>;
363
+ // Heading (Phase 3a) - Converted
364
+ export type HeadingVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
365
+ export type HeadingProps = Omit<
366
+ import('@chakra-ui/react').HeadingProps,
367
+ 'as' | 'variant'
368
+ > & {
369
+ as?: HeadingVariant;
370
+ variant?: HeadingVariant;
371
+ };
372
+ export const Heading: React.ForwardRefExoticComponent<
373
+ HeadingProps & React.RefAttributes<HTMLHeadingElement>
374
+ >;
135
375
 
136
376
  // ThemeProvider (Phase 4a - not yet converted)
137
377
  export const ThemeProvider: React.ComponentType<any>;
138
378
 
139
- // Image (Phase 3b - not yet converted)
140
- export const Image: React.ComponentType<any>;
141
-
142
- // Loader (Phase 3b - not yet converted)
143
- export const Loader: React.ComponentType<any>;
144
-
145
- // Progress (Phase 3b - not yet converted)
146
- export const Progress: React.ComponentType<any>;
147
-
148
- // Checkbox (Phase 2b - not yet converted)
149
- export const Checkbox: React.ComponentType<any>;
379
+ // Image (Phase 3b) - Converted
380
+ export type ImageProps = React.ComponentProps<
381
+ typeof import('@chakra-ui/react').Image
382
+ > & {
383
+ isSSR?: boolean;
384
+ cloudinaryCloudName?: string;
385
+ cloudinaryImageId?: string;
386
+ cloudinaryTemplate?: string;
387
+ htmlWidth?: number;
388
+ htmlHeight?: number;
389
+ quality?: number;
390
+ lazyLoad?: boolean;
391
+ };
392
+ export const Image: React.ComponentType<ImageProps>;
393
+
394
+ // Loader (Phase 3b) - Converted
395
+ export type LoaderProps = React.ComponentProps<
396
+ typeof import('@chakra-ui/react').CircularProgress
397
+ > & {
398
+ isInfinite?: boolean;
399
+ loaderBackgroundColor?: string;
400
+ };
401
+ export const Loader: React.ComponentType<LoaderProps>;
402
+
403
+ // Progress (Phase 3b) - Converted
404
+ export type ProgressProps = React.ComponentProps<
405
+ typeof import('@chakra-ui/react').Progress
406
+ > & {
407
+ isRounded?: boolean;
408
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
409
+ variant?: 'solid' | 'outlined';
410
+ };
411
+ export const Progress: React.ForwardRefExoticComponent<
412
+ ProgressProps & React.RefAttributes<HTMLDivElement>
413
+ >;
150
414
 
151
- // Input (Phase 3a - not yet converted)
152
- export const Input: React.ComponentType<any>;
415
+ // Input (Phase 3a) - Converted
416
+ export type InputProps = import('@chakra-ui/react').InputProps & {
417
+ id: string;
418
+ label?: string;
419
+ helperText?: string;
420
+ errorMessage?: string;
421
+ isOptional?: boolean;
422
+ customRequiredText?: string;
423
+ };
424
+ export const Input: React.ForwardRefExoticComponent<
425
+ InputProps & React.RefAttributes<HTMLInputElement>
426
+ >;
153
427
 
154
428
  // RefreshedInput components (Phase 4d - not yet converted)
155
429
  export const RefreshedFormControl: React.ComponentType<any>;
@@ -161,8 +435,18 @@ export const RefreshedAutoSuggestSelect: React.ComponentType<any>;
161
435
  // SelectionCard (Phase 4c - not yet converted)
162
436
  export const SelectionCard: React.ComponentType<any>;
163
437
 
164
- // Textarea (Phase 3a - not yet converted)
165
- export const Textarea: React.ComponentType<any>;
438
+ // Textarea (Phase 3a) - Converted
439
+ export type TextareaProps = import('@chakra-ui/react').TextareaProps & {
440
+ id: string;
441
+ label?: string;
442
+ helperText?: string;
443
+ errorMessage?: string;
444
+ isOptional?: boolean;
445
+ customRequiredText?: string;
446
+ };
447
+ export const Textarea: React.ForwardRefExoticComponent<
448
+ TextareaProps & React.RefAttributes<HTMLTextAreaElement>
449
+ >;
166
450
 
167
451
  // Popover (Phase 4b - not yet converted)
168
452
  export const Popover: React.ComponentType<any>;
@@ -171,15 +455,39 @@ export const PopoverArrow: React.ComponentType<any>;
171
455
  export const PopoverTrigger: React.ComponentType<any>;
172
456
  export const PopoverContent: React.ComponentType<any>;
173
457
 
174
- // Radio (Phase 3a - not yet converted)
175
- export const Radio: React.ComponentType<any>;
176
- export const RadioGroup: React.ComponentType<any>;
458
+ // Radio (Phase 3a) - Converted
459
+ export type RadioProps = Omit<import('@chakra-ui/react').RadioProps, 'size'> & {
460
+ value: string;
461
+ helperText?: string;
462
+ size?: 'sm' | 'md' | 'lg';
463
+ };
464
+ export const Radio: React.ForwardRefExoticComponent<
465
+ RadioProps & React.RefAttributes<HTMLInputElement>
466
+ >;
467
+
468
+ // RadioGroup (Phase 3a) - Converted
469
+ export type RadioGroupProps = Omit<
470
+ import('@chakra-ui/react').RadioGroupProps,
471
+ 'onChange'
472
+ > & {
473
+ id: string;
474
+ label?: string;
475
+ errorMessage?: string;
476
+ isDisabled?: boolean;
477
+ isInvalid?: boolean;
478
+ isRequired?: boolean;
479
+ onChange?: (value: string) => void;
480
+ direction?: 'row' | 'column';
481
+ };
482
+ export const RadioGroup: React.ForwardRefExoticComponent<
483
+ RadioGroupProps & React.RefAttributes<HTMLDivElement>
484
+ >;
177
485
 
178
486
  // AutoSuggestSelect (Phase 4d - not yet converted)
179
487
  export const AutoSuggestSelect: React.ComponentType<any>;
180
488
 
181
- // Badge (Phase 2b - not yet converted)
182
- export const Badge: React.ComponentType<any>;
489
+ // FilterSelect (Phase 4d - not yet converted)
490
+ export const FilterSelect: React.ComponentType<any>;
183
491
 
184
492
  // ToggleButtonGroup (Phase 4c - not yet converted)
185
493
  export const ToggleButtonGroup: React.ComponentType<any>;