@fuf-stack/uniform 0.19.3 → 0.20.1

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 (111) hide show
  1. package/dist/CheckboxGroup/index.cjs +3 -3
  2. package/dist/CheckboxGroup/index.d.cts +4 -3
  3. package/dist/CheckboxGroup/index.d.ts +4 -3
  4. package/dist/CheckboxGroup/index.js +2 -2
  5. package/dist/CheckboxGroup-B_1mu8Xo.d.cts +280 -0
  6. package/dist/CheckboxGroup-B_1mu8Xo.d.ts +280 -0
  7. package/dist/FieldArray/index.cjs +4 -3
  8. package/dist/FieldArray/index.cjs.map +1 -1
  9. package/dist/FieldArray/index.js +3 -2
  10. package/dist/Form/index.cjs +3 -3
  11. package/dist/Form/index.js +2 -2
  12. package/dist/Grid/index.cjs +2 -2
  13. package/dist/Grid/index.js +1 -1
  14. package/dist/Input/index.cjs +3 -3
  15. package/dist/Input/index.js +2 -2
  16. package/dist/RadioBoxes/index.cjs +3 -3
  17. package/dist/RadioBoxes/index.d.cts +2 -2
  18. package/dist/RadioBoxes/index.d.ts +2 -2
  19. package/dist/RadioBoxes/index.js +2 -2
  20. package/dist/RadioGroup/index.cjs +3 -3
  21. package/dist/RadioGroup/index.d.cts +2 -2
  22. package/dist/RadioGroup/index.d.ts +2 -2
  23. package/dist/RadioGroup/index.js +2 -2
  24. package/dist/RadioTabs/index.cjs +3 -3
  25. package/dist/RadioTabs/index.js +2 -2
  26. package/dist/Select/index.cjs +3 -3
  27. package/dist/Select/index.js +2 -2
  28. package/dist/SubmitButton/index.cjs +3 -3
  29. package/dist/SubmitButton/index.js +2 -2
  30. package/dist/Switch/index.cjs +3 -3
  31. package/dist/Switch/index.js +2 -2
  32. package/dist/TextArea/index.cjs +3 -3
  33. package/dist/TextArea/index.js +2 -2
  34. package/dist/{chunk-BPZ3U5RV.js → chunk-6G5UDAYH.js} +2 -2
  35. package/dist/{chunk-FA74PMQ3.js → chunk-7GNNET4A.js} +2 -2
  36. package/dist/{chunk-43R3EVIW.js → chunk-AQHJJ6WW.js} +2 -2
  37. package/dist/{chunk-PDCEKC3G.js → chunk-B62HKKMS.js} +2 -2
  38. package/dist/{chunk-PDCEKC3G.js.map → chunk-B62HKKMS.js.map} +1 -1
  39. package/dist/{chunk-FJTWQ6UG.js → chunk-C4WU74Y4.js} +3 -3
  40. package/dist/chunk-C4WU74Y4.js.map +1 -0
  41. package/dist/{chunk-3ISETOB3.cjs → chunk-CVCXMVCJ.cjs} +13 -10
  42. package/dist/chunk-CVCXMVCJ.cjs.map +1 -0
  43. package/dist/{chunk-EHTJ2BYB.cjs → chunk-DIVINFK2.cjs} +5 -5
  44. package/dist/{chunk-EHTJ2BYB.cjs.map → chunk-DIVINFK2.cjs.map} +1 -1
  45. package/dist/{chunk-Q5KXDJU7.cjs → chunk-EBMEIX2P.cjs} +4 -4
  46. package/dist/chunk-EBMEIX2P.cjs.map +1 -0
  47. package/dist/{chunk-F4VYFBYC.cjs → chunk-GDNP6OU3.cjs} +2 -2
  48. package/dist/chunk-GDNP6OU3.cjs.map +1 -0
  49. package/dist/{chunk-RKZQKPRJ.cjs → chunk-H5JXWAGH.cjs} +5 -5
  50. package/dist/{chunk-RKZQKPRJ.cjs.map → chunk-H5JXWAGH.cjs.map} +1 -1
  51. package/dist/{chunk-BC6ZP7TF.js → chunk-H7JL3BPU.js} +57 -27
  52. package/dist/chunk-H7JL3BPU.js.map +1 -0
  53. package/dist/{chunk-LBFJL6IA.js → chunk-HGEOXAH4.js} +7 -5
  54. package/dist/chunk-HGEOXAH4.js.map +1 -0
  55. package/dist/{chunk-M7CZ526K.js → chunk-K4E35FS6.js} +3 -3
  56. package/dist/chunk-K4E35FS6.js.map +1 -0
  57. package/dist/{chunk-3PAVDSMW.js → chunk-KJYR5Q6G.js} +2 -2
  58. package/dist/{chunk-5R7ZPSN2.js → chunk-NXTFRKYX.js} +2 -2
  59. package/dist/{chunk-5R7ZPSN2.js.map → chunk-NXTFRKYX.js.map} +1 -1
  60. package/dist/{chunk-CUDJVXZX.cjs → chunk-O46U5DHL.cjs} +9 -7
  61. package/dist/chunk-O46U5DHL.cjs.map +1 -0
  62. package/dist/{chunk-YLJC74CQ.cjs → chunk-PHK5PELP.cjs} +9 -7
  63. package/dist/chunk-PHK5PELP.cjs.map +1 -0
  64. package/dist/{chunk-4WVYRJCV.js → chunk-PSWYP5SU.js} +6 -4
  65. package/dist/chunk-PSWYP5SU.js.map +1 -0
  66. package/dist/{chunk-JWYMBKE6.cjs → chunk-PT2XYC26.cjs} +4 -4
  67. package/dist/{chunk-JWYMBKE6.cjs.map → chunk-PT2XYC26.cjs.map} +1 -1
  68. package/dist/{chunk-IYR5A3CV.cjs → chunk-R4ICWOU4.cjs} +4 -4
  69. package/dist/{chunk-IYR5A3CV.cjs.map → chunk-R4ICWOU4.cjs.map} +1 -1
  70. package/dist/{chunk-LX775YU7.js → chunk-TKE5V4IU.js} +8 -5
  71. package/dist/chunk-TKE5V4IU.js.map +1 -0
  72. package/dist/{chunk-6GN255GP.cjs → chunk-TTD3KL6E.cjs} +2 -2
  73. package/dist/{chunk-6GN255GP.cjs.map → chunk-TTD3KL6E.cjs.map} +1 -1
  74. package/dist/{chunk-BDJHUA55.cjs → chunk-UKZDZ7B3.cjs} +4 -4
  75. package/dist/{chunk-BDJHUA55.cjs.map → chunk-UKZDZ7B3.cjs.map} +1 -1
  76. package/dist/{chunk-Y33HTDL6.cjs → chunk-UN7777T3.cjs} +8 -6
  77. package/dist/chunk-UN7777T3.cjs.map +1 -0
  78. package/dist/{chunk-YLTKVPHE.cjs → chunk-UYLC4JOU.cjs} +57 -27
  79. package/dist/chunk-UYLC4JOU.cjs.map +1 -0
  80. package/dist/{chunk-YNX7IORC.js → chunk-XGRFOK3R.js} +7 -5
  81. package/dist/{chunk-YNX7IORC.js.map → chunk-XGRFOK3R.js.map} +1 -1
  82. package/dist/hooks/index.cjs +2 -2
  83. package/dist/hooks/index.js +1 -1
  84. package/dist/index.cjs +14 -14
  85. package/dist/index.d.cts +4 -4
  86. package/dist/index.d.ts +4 -4
  87. package/dist/index.js +13 -13
  88. package/package.json +6 -6
  89. package/dist/CheckboxGroup-Dh0YW4KV.d.cts +0 -132
  90. package/dist/CheckboxGroup-Dh0YW4KV.d.ts +0 -132
  91. package/dist/chunk-3ISETOB3.cjs.map +0 -1
  92. package/dist/chunk-4WVYRJCV.js.map +0 -1
  93. package/dist/chunk-BC6ZP7TF.js.map +0 -1
  94. package/dist/chunk-CUDJVXZX.cjs.map +0 -1
  95. package/dist/chunk-F4VYFBYC.cjs.map +0 -1
  96. package/dist/chunk-FJTWQ6UG.js.map +0 -1
  97. package/dist/chunk-LBFJL6IA.js.map +0 -1
  98. package/dist/chunk-LX775YU7.js.map +0 -1
  99. package/dist/chunk-M7CZ526K.js.map +0 -1
  100. package/dist/chunk-Q5KXDJU7.cjs.map +0 -1
  101. package/dist/chunk-Y33HTDL6.cjs.map +0 -1
  102. package/dist/chunk-YLJC74CQ.cjs.map +0 -1
  103. package/dist/chunk-YLTKVPHE.cjs.map +0 -1
  104. package/dist/{RadioBoxes-C61IRDCU.d.cts → RadioBoxes-BmJBBZVd.d.cts} +15 -15
  105. package/dist/{RadioBoxes-C61IRDCU.d.ts → RadioBoxes-BmJBBZVd.d.ts} +15 -15
  106. package/dist/{RadioGroup-C7I27oav.d.cts → RadioGroup-BJijfixt.d.cts} +15 -15
  107. package/dist/{RadioGroup-C7I27oav.d.ts → RadioGroup-BJijfixt.d.ts} +15 -15
  108. /package/dist/{chunk-BPZ3U5RV.js.map → chunk-6G5UDAYH.js.map} +0 -0
  109. /package/dist/{chunk-FA74PMQ3.js.map → chunk-7GNNET4A.js.map} +0 -0
  110. /package/dist/{chunk-43R3EVIW.js.map → chunk-AQHJJ6WW.js.map} +0 -0
  111. /package/dist/{chunk-3PAVDSMW.js.map → chunk-KJYR5Q6G.js.map} +0 -0
@@ -7,7 +7,7 @@ var _chunkPA2DQCBYcjs = require('./chunk-PA2DQCBY.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkF4VYFBYCcjs = require('./chunk-F4VYFBYC.cjs');
10
+ var _chunkGDNP6OU3cjs = require('./chunk-GDNP6OU3.cjs');
11
11
 
12
12
  // src/Input/Input.tsx
13
13
  var _input = require('@heroui/input');
@@ -25,9 +25,9 @@ var Input = ({
25
25
  transformValue = void 0,
26
26
  type = void 0
27
27
  }) => {
28
- const { control, debugMode, getFieldState } = _chunkF4VYFBYCcjs.useFormContext.call(void 0, );
28
+ const { control, debugMode, getFieldState } = _chunkGDNP6OU3cjs.useFormContext.call(void 0, );
29
29
  const { error, invalid, required, testId } = getFieldState(name, _testId);
30
- const { field } = _chunkF4VYFBYCcjs.useController.call(void 0, {
30
+ const { field } = _chunkGDNP6OU3cjs.useController.call(void 0, {
31
31
  control,
32
32
  disabled,
33
33
  name
@@ -86,4 +86,4 @@ var Input_default2 = Input_default;
86
86
 
87
87
 
88
88
  exports.Input_default = Input_default; exports.Input_default2 = Input_default2;
89
- //# sourceMappingURL=chunk-BDJHUA55.cjs.map
89
+ //# sourceMappingURL=chunk-UKZDZ7B3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-BDJHUA55.cjs","../src/Input/Input.tsx","../src/Input/index.ts"],"names":["Input_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-BDJHUA55.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface InputProps {\n /** CSS class name */\n className?: string;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** form field placeholder */\n placeholder?: string;\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transformValue?: {\n /** transforms the formValue of the field to the display value of the field */\n displayValue: (value: string | number) => string | number;\n /** transforms the displayValue of the field to the form value of the field */\n formValue: (value: string) => string | number;\n };\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className = undefined,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n placeholder = ' ',\n startContent = undefined,\n testId: _testId = undefined,\n transformValue = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const { disabled: isDisabled, onChange, onBlur, value, ref } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n /**\n * Determines the display value for the input field:\n * 1. If transformValue.displayValue is provided, applies the transform to the current value\n * (useful for formatting like adding currency symbols, date formatting, etc.)\n * 2. Falls back to the raw value if no transform is provided\n * 3. Ensures a defined value by using empty string as fallback (prevents uncontrolled input warnings)\n *\n * Examples:\n * - With transform: value \"1000\" → displayValue \"$1,000\"\n * - Without transform: value \"1000\" → displayValue \"1000\"\n * - Undefined value: value undefined → displayValue \"\"\n */\n const displayValue = transformValue?.displayValue\n ? transformValue.displayValue(value ?? '')\n : (value ?? '');\n\n /**\n * Handles input value changes with special processing:\n * 1. For number inputs:\n * - Preserves empty string (prevents NaN in the form state)\n * - Converts non-empty values to numbers\n * Example: \"\" → \"\" (empty stays empty)\n * \"42\" → 42 (converts to number)\n *\n * 2. For text inputs with transformValue.formValue:\n * - Applies custom transform before updating form state\n * - Useful for converting display format to storage format\n * Example: \"$1,000\" → \"1000\" (strips formatting)\n *\n * 3. For regular text inputs:\n * - Passes through the raw input value\n * Example: \"hello\" → \"hello\" (no transformation)\n *\n * @param e The input change event\n */\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (type === 'number') {\n onChange(inputValue === '' ? '' : Number(inputValue));\n } else {\n onChange(\n transformValue?.formValue\n ? transformValue.formValue(inputValue)\n : inputValue,\n );\n }\n };\n\n return (\n <HeroInput\n className={cn(className)}\n classNames={{\n inputWrapper: 'group-data-[focus=true]:border-focus',\n }}\n data-testid={testId}\n endContent={endContent}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n <>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </>\n )\n }\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={handleChange}\n placeholder={placeholder}\n radius=\"sm\"\n ref={ref}\n startContent={startContent}\n type={type}\n // @ts-expect-error number is ok here\n value={displayValue}\n variant=\"bordered\"\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UKZDZ7B3.cjs","../src/Input/Input.tsx","../src/Input/index.ts"],"names":["Input_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UKZDZ7B3.cjs","sourcesContent":[null,"import type { ReactNode } from 'react';\n\nimport { Input as HeroInput } from '@heroui/input';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport interface InputProps {\n /** CSS class name */\n className?: string;\n /** input field is disabled */\n disabled?: boolean;\n /** added content to the end of the input Field. */\n endContent?: ReactNode;\n /** form field label (set to false to disable label) */\n label?: string | false;\n /** form field name */\n name: string;\n /** form field placeholder */\n placeholder?: string;\n /** content added to the start of the input field */\n startContent?: ReactNode;\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n /** allows disentangled display and form values for a field */\n transformValue?: {\n /** transforms the formValue of the field to the display value of the field */\n displayValue: (value: string | number) => string | number;\n /** transforms the displayValue of the field to the form value of the field */\n formValue: (value: string) => string | number;\n };\n /** input type */\n type?: 'number' | 'password';\n}\n\n/**\n * Input component based on [HeroUI Input](https://www.heroui.com//docs/components/input)\n */\nconst Input = ({\n className = undefined,\n disabled = false,\n endContent = undefined,\n label = undefined,\n name,\n placeholder = ' ',\n startContent = undefined,\n testId: _testId = undefined,\n transformValue = undefined,\n type = undefined,\n}: InputProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({\n control,\n disabled,\n name,\n });\n\n const { disabled: isDisabled, onChange, onBlur, value, ref } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n /**\n * Determines the display value for the input field:\n * 1. If transformValue.displayValue is provided, applies the transform to the current value\n * (useful for formatting like adding currency symbols, date formatting, etc.)\n * 2. Falls back to the raw value if no transform is provided\n * 3. Ensures a defined value by using empty string as fallback (prevents uncontrolled input warnings)\n *\n * Examples:\n * - With transform: value \"1000\" → displayValue \"$1,000\"\n * - Without transform: value \"1000\" → displayValue \"1000\"\n * - Undefined value: value undefined → displayValue \"\"\n */\n const displayValue = transformValue?.displayValue\n ? transformValue.displayValue(value ?? '')\n : (value ?? '');\n\n /**\n * Handles input value changes with special processing:\n * 1. For number inputs:\n * - Preserves empty string (prevents NaN in the form state)\n * - Converts non-empty values to numbers\n * Example: \"\" → \"\" (empty stays empty)\n * \"42\" → 42 (converts to number)\n *\n * 2. For text inputs with transformValue.formValue:\n * - Applies custom transform before updating form state\n * - Useful for converting display format to storage format\n * Example: \"$1,000\" → \"1000\" (strips formatting)\n *\n * 3. For regular text inputs:\n * - Passes through the raw input value\n * Example: \"hello\" → \"hello\" (no transformation)\n *\n * @param e The input change event\n */\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (type === 'number') {\n onChange(inputValue === '' ? '' : Number(inputValue));\n } else {\n onChange(\n transformValue?.formValue\n ? transformValue.formValue(inputValue)\n : inputValue,\n );\n }\n };\n\n return (\n <HeroInput\n className={cn(className)}\n classNames={{\n inputWrapper: 'group-data-[focus=true]:border-focus',\n }}\n data-testid={testId}\n endContent={endContent}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n <>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </>\n )\n }\n labelPlacement=\"outside\"\n name={name}\n onBlur={onBlur}\n onChange={handleChange}\n placeholder={placeholder}\n radius=\"sm\"\n ref={ref}\n startContent={startContent}\n type={type}\n // @ts-expect-error number is ok here\n value={displayValue}\n variant=\"bordered\"\n />\n );\n};\n\nexport default Input;\n","import Input from './Input';\n\nexport type { InputProps } from './Input';\n\nexport { Input };\n\nexport default Input;\n"]}
@@ -7,7 +7,7 @@ var _chunkPA2DQCBYcjs = require('./chunk-PA2DQCBY.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkF4VYFBYCcjs = require('./chunk-F4VYFBYC.cjs');
10
+ var _chunkGDNP6OU3cjs = require('./chunk-GDNP6OU3.cjs');
11
11
 
12
12
  // src/RadioTabs/RadioTabs.tsx
13
13
  var _radio = require('@heroui/radio');
@@ -37,9 +37,9 @@ var RadioTabs = ({
37
37
  testId: _testId = void 0,
38
38
  variant = void 0
39
39
  }) => {
40
- const { control, debugMode, getFieldState } = _chunkF4VYFBYCcjs.useFormContext.call(void 0, );
40
+ const { control, debugMode, getFieldState } = _chunkGDNP6OU3cjs.useFormContext.call(void 0, );
41
41
  const { error, invalid, required, testId } = getFieldState(name, _testId);
42
- const { field } = _chunkF4VYFBYCcjs.useController.call(void 0, { control, disabled, name });
42
+ const { field } = _chunkGDNP6OU3cjs.useController.call(void 0, { control, disabled, name });
43
43
  const { disabled: isDisabled, onBlur, onChange, ref, value } = field;
44
44
  const showTestIdCopyButton = debugMode === "debug-testids";
45
45
  const showLabel = label || showTestIdCopyButton;
@@ -48,9 +48,11 @@ var RadioTabs = ({
48
48
  const tabOptions = options.map((option) => ({
49
49
  content: option == null ? void 0 : option.content,
50
50
  disabled: option == null ? void 0 : option.disabled,
51
+ key: option.value,
51
52
  label: (option == null ? void 0 : option.label) || (option == null ? void 0 : option.value),
52
- testId: _pixelutils.slugify.call(void 0, `option_${(option == null ? void 0 : option.testId) || (option == null ? void 0 : option.value)}`),
53
- key: option.value
53
+ testId: _pixelutils.slugify.call(void 0, `option_${(option == null ? void 0 : option.testId) || (option == null ? void 0 : option.value)}`, {
54
+ replaceDots: true
55
+ })
54
56
  }));
55
57
  const disabledAllKeys = tabOptions == null ? void 0 : tabOptions.map(
56
58
  (option) => option.key
@@ -99,4 +101,4 @@ var RadioTabs_default2 = RadioTabs_default;
99
101
 
100
102
 
101
103
  exports.RadioTabs_default = RadioTabs_default; exports.RadioTabs_default2 = RadioTabs_default2;
102
- //# sourceMappingURL=chunk-Y33HTDL6.cjs.map
104
+ //# sourceMappingURL=chunk-UN7777T3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UN7777T3.cjs","../src/RadioTabs/RadioTabs.tsx","../src/RadioTabs/index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UN7777T3.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { TabsProps } from '@fuf-stack/pixels';\nimport type { TabProps } from '@fuf-stack/pixels/Tabs';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\nimport Tabs from '@fuf-stack/pixels/Tabs';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const radioTabsVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n label:\n 'text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger',\n wrapper: '',\n tabList: '',\n tab: '',\n tabContent: '',\n cursor: '',\n panel: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioTabsVariants>;\ntype ClassName = TVClassName<typeof radioTabsVariants>;\n\nexport interface RadioTabsOption {\n /** Optional content inside of the tab */\n content?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: React.ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioTabsProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioTabsOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n /** How the RadioTabs should look like. */\n variant?: TabsProps['variant'];\n}\n\n/**\n * RadioTabs component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n * and [HeroUI Tabs](https://www.heroui.com//docs/components/tabs)\n */\nconst RadioTabs = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n variant = undefined,\n}: RadioTabsProps): ReactElement => {\n const { control, debugMode, getFieldState } = useFormContext();\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({ control, disabled, name });\n const { disabled: isDisabled, onBlur, onChange, ref, value } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = radioTabsVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const tabOptions = options.map<TabProps>((option) => ({\n content: option?.content,\n disabled: option?.disabled,\n key: option.value,\n label: option?.label || option?.value,\n testId: slugify(`option_${option?.testId || option?.value}`, {\n replaceDots: true,\n }),\n }));\n\n const disabledAllKeys: string[] | undefined = tabOptions?.map(\n (option) => option.key as string,\n );\n\n return (\n <HeroRadioGroup\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n name={name}\n orientation={inline ? 'horizontal' : 'vertical'}\n onBlur={onBlur}\n ref={ref}\n >\n <Tabs\n disabledKeys={disabled ? disabledAllKeys : undefined}\n fullWidth={false}\n onSelectionChange={onChange}\n selectedKey={value}\n tabs={tabOptions as TabProps[]}\n testId={testId}\n variant={variant}\n />\n </HeroRadioGroup>\n );\n};\n\nexport default RadioTabs;\n","import RadioTabs from './RadioTabs';\n\nexport type { RadioTabsProps } from './RadioTabs';\n\nexport { RadioTabs };\n\nexport default RadioTabs;\n"]}
@@ -7,14 +7,18 @@ var _chunkPA2DQCBYcjs = require('./chunk-PA2DQCBY.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkF4VYFBYCcjs = require('./chunk-F4VYFBYC.cjs');
10
+ var _chunkGDNP6OU3cjs = require('./chunk-GDNP6OU3.cjs');
11
11
 
12
12
 
13
13
 
14
14
  var _chunk555JRYCScjs = require('./chunk-555JRYCS.cjs');
15
15
 
16
16
  // src/CheckboxGroup/CheckboxGroup.tsx
17
+
18
+
19
+
17
20
  var _checkbox = require('@heroui/checkbox');
21
+ var _theme = require('@heroui/theme');
18
22
  var _pixelutils = require('@fuf-stack/pixel-utils');
19
23
  var _jsxruntime = require('react/jsx-runtime');
20
24
  var checkboxGroupVariants = _pixelutils.tv.call(void 0, {
@@ -22,48 +26,67 @@ var checkboxGroupVariants = _pixelutils.tv.call(void 0, {
22
26
  base: "group",
23
27
  // Needs group for group-data condition
24
28
  errorMessage: "text-tiny",
25
- itemBase: "",
26
- itemIcon: "",
27
- itemLabel: "text-sm",
28
- itemWrapper: "",
29
29
  // see HeroUI styles for group-data condition,
30
30
  // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts
31
31
  label: "text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:!text-danger",
32
+ optionBase: "",
33
+ optionIcon: "",
34
+ optionLabel: "",
35
+ optionLabelSubline: "!text-small text-foreground-400",
36
+ optionWrapper: "",
32
37
  wrapper: ""
38
+ },
39
+ variants: {
40
+ // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/checkbox.ts
41
+ color: _chunk555JRYCScjs.__spreadValues.call(void 0, {
42
+ info: {
43
+ wrapper: "text-info-foreground after:bg-info after:text-info-foreground"
44
+ }
45
+ }, _theme.checkbox.variants.color),
46
+ lineThrough: {
47
+ true: {
48
+ optionLabel: [
49
+ ..._theme.checkbox.variants.lineThrough.true.label,
50
+ // fix stroke position when used with subline and enable animation
51
+ "relative before:transition-all before:duration-200"
52
+ ]
53
+ }
54
+ }
33
55
  }
34
56
  });
35
57
  var CheckboxGroup = ({
36
58
  className = void 0,
59
+ color = "primary",
37
60
  inline = false,
38
61
  label = void 0,
62
+ lineThrough = false,
39
63
  options,
40
64
  disabled = false,
41
65
  name,
42
66
  testId: _testId = void 0
43
67
  }) => {
44
- const { control, debugMode, getFieldState } = _chunkF4VYFBYCcjs.useFormContext.call(void 0, );
68
+ const { control, debugMode, getFieldState } = _chunkGDNP6OU3cjs.useFormContext.call(void 0, );
45
69
  const {
46
70
  error: _error,
47
71
  invalid,
48
72
  required,
49
73
  testId
50
74
  } = getFieldState(name, _testId);
51
- const { field } = _chunkF4VYFBYCcjs.useController.call(void 0, { control, name, disabled });
75
+ const { field } = _chunkGDNP6OU3cjs.useController.call(void 0, { control, name, disabled });
52
76
  const { onChange, value = [], ref, onBlur } = field;
53
77
  const showTestIdCopyButton = debugMode === "debug-testids";
54
78
  const showLabel = label || showTestIdCopyButton;
55
- const variants = checkboxGroupVariants();
79
+ const variants = checkboxGroupVariants({ lineThrough });
56
80
  const classNames = _pixelutils.variantsToClassNames.call(void 0, variants, className, "base");
57
- const itemClassName = {
58
- base: classNames.itemBase,
59
- wrapper: classNames.itemWrapper,
60
- icon: classNames.itemIcon,
61
- label: classNames.itemLabel
62
- };
63
- const itemGroupClassName = {
81
+ const heroCheckboxGroupClassNames = {
64
82
  base: classNames.base,
65
- wrapper: classNames.wrapper,
66
- label: classNames.label
83
+ label: classNames.label,
84
+ wrapper: classNames.wrapper
85
+ };
86
+ const heroCheckboxClassNames = {
87
+ base: classNames.optionBase,
88
+ icon: classNames.optionIcon,
89
+ wrapper: classNames.optionWrapper
67
90
  };
68
91
  const errorFlat = _error && Object.values(
69
92
  _error
@@ -79,7 +102,7 @@ var CheckboxGroup = ({
79
102
  };
80
103
  const singleCheckboxProps = {
81
104
  value: getCheckboxValue(value),
82
- onChange: (newValue) => onChange(newValue && newValue[0])
105
+ onChange: (newValue) => onChange(newValue == null ? void 0 : newValue[0])
83
106
  };
84
107
  const multipleCheckboxProps = {
85
108
  onChange,
@@ -89,11 +112,11 @@ var CheckboxGroup = ({
89
112
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
90
113
  _checkbox.CheckboxGroup,
91
114
  _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {
92
- name,
93
- classNames: itemGroupClassName,
94
- "data-testid": testId,
115
+ classNames: heroCheckboxGroupClassNames,
116
+ color: color === "info" ? "primary" : color,
95
117
  "data-invalid": invalid,
96
- errorMessage: errorFlat.length && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
118
+ "data-testid": testId,
119
+ errorMessage: errorFlat.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
97
120
  _chunkGNYQC5IJcjs.FieldValidationError_default,
98
121
  {
99
122
  className: classNames.errorMessage,
@@ -109,23 +132,30 @@ var CheckboxGroup = ({
109
132
  label,
110
133
  showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPA2DQCBYcjs.FieldCopyTestIdButton_default, { testId })
111
134
  ] }),
135
+ name,
112
136
  onBlur,
113
137
  orientation: inline ? "horizontal" : "vertical",
114
138
  ref
115
139
  }, checkboxGroupProps), {
116
140
  children: options == null ? void 0 : options.map((option) => {
117
141
  const optionTestId = _pixelutils.slugify.call(void 0,
118
- `${testId}_option_${(option == null ? void 0 : option.testId) || (option == null ? void 0 : option.value)}`
142
+ `${testId}_option_${(option == null ? void 0 : option.testId) || (option == null ? void 0 : option.value)}`,
143
+ { replaceDots: true }
119
144
  );
145
+ const labelContent = option.labelSubline ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-start", children: [
146
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: classNames.optionLabel, children: option.label }),
147
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${classNames.optionLabelSubline}`, children: option.labelSubline })
148
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: classNames.optionLabel, children: option.label });
120
149
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
121
150
  _checkbox.Checkbox,
122
151
  {
152
+ "aria-label": typeof option.label === "string" ? option.label : option.value,
153
+ classNames: heroCheckboxClassNames,
123
154
  "data-invalid": invalid,
124
- classNames: itemClassName,
155
+ "data-testid": optionTestId,
125
156
  isDisabled: disabled || option.disabled,
126
157
  value: option == null ? void 0 : option.value,
127
- "data-testid": optionTestId,
128
- children: option == null ? void 0 : option.label
158
+ children: labelContent
129
159
  },
130
160
  `index_${option.value}`
131
161
  );
@@ -142,4 +172,4 @@ var CheckboxGroup_default2 = CheckboxGroup_default;
142
172
 
143
173
 
144
174
  exports.CheckboxGroup_default = CheckboxGroup_default; exports.CheckboxGroup_default2 = CheckboxGroup_default2;
145
- //# sourceMappingURL=chunk-YLTKVPHE.cjs.map
175
+ //# sourceMappingURL=chunk-UYLC4JOU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UYLC4JOU.cjs","../src/CheckboxGroup/CheckboxGroup.tsx","../src/CheckboxGroup/index.ts"],"names":["CheckboxGroup_default"],"mappings":"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","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-UYLC4JOU.cjs","sourcesContent":[null,"import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactNode } from 'react';\nimport type { FieldError } from 'react-hook-form';\n\nimport {\n Checkbox as HeroCheckbox,\n CheckboxGroup as HeroCheckboxGroup,\n} from '@heroui/checkbox';\nimport { checkbox as heroCheckboxVariants } from '@heroui/theme';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const checkboxGroupVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n errorMessage: 'text-tiny',\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:!text-danger',\n optionBase: '',\n optionIcon: '',\n optionLabel: '',\n optionLabelSubline: '!text-small text-foreground-400',\n optionWrapper: '',\n wrapper: '',\n },\n variants: {\n // see: https://github.com/heroui-inc/heroui/blob/canary/packages/core/theme/src/components/checkbox.ts\n color: {\n info: {\n wrapper:\n 'text-info-foreground after:bg-info after:text-info-foreground',\n },\n ...heroCheckboxVariants.variants.color,\n } as const,\n lineThrough: {\n true: {\n optionLabel: [\n ...heroCheckboxVariants.variants.lineThrough.true.label,\n // fix stroke position when used with subline and enable animation\n 'relative before:transition-all before:duration-200',\n ],\n },\n },\n },\n});\n\ntype VariantProps = TVProps<typeof checkboxGroupVariants>;\ntype ClassName = TVClassName<typeof checkboxGroupVariants>;\n\nexport type CheckboxGroupOption = {\n /** option label */\n label?: ReactNode;\n /** subline displayed below the label */\n labelSubline?: ReactNode;\n /** option value */\n value: string;\n /** disables the option */\n disabled?: boolean;\n /** HTML data-testid attribute of the option */\n testId?: string;\n};\n\nexport interface CheckboxGroupProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Color scheme of the checkboxes */\n color?: VariantProps['color'];\n /** Sets all checkboxes disabled */\n disabled?: boolean;\n /** Orientation of the checkboxes */\n inline?: boolean;\n /** Label displayed above the checkboxes */\n label?: ReactNode;\n /** Whether the checkboxes label should be crossed out */\n lineThrough?: boolean;\n /** Name the Field is registered on the form */\n name: string;\n /** Checkboxes that should be displayed. */\n options: CheckboxGroupOption[];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * CheckboxGroup component based on [HeroUI CheckboxGroup](https://www.heroui.com//docs/components/checkbox-group)\n */\nconst CheckboxGroup = ({\n className = undefined,\n color = 'primary',\n inline = false,\n label = undefined,\n lineThrough = false,\n options,\n disabled = false,\n name,\n testId: _testId = undefined,\n}: CheckboxGroupProps) => {\n const { control, debugMode, getFieldState } = useFormContext();\n const {\n error: _error,\n invalid,\n required,\n testId,\n } = getFieldState(name, _testId);\n\n const { field } = useController({ control, name, disabled });\n const { onChange, value = [], ref, onBlur } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = checkboxGroupVariants({ lineThrough });\n const classNames = variantsToClassNames(variants, className, 'base');\n\n // map slots to HeroUI class names\n const heroCheckboxGroupClassNames = {\n base: classNames.base,\n label: classNames.label,\n wrapper: classNames.wrapper,\n };\n const heroCheckboxClassNames = {\n base: classNames.optionBase,\n icon: classNames.optionIcon,\n wrapper: classNames.optionWrapper,\n };\n\n // Convert React Hook Form's nested error object structure to a flat array\n // RHF errors can be nested like: checkboxField.0 (individual checkbox errors)\n // and checkboxField._error (global field errors) - this flattens all\n // error values into a single array for rendering with FieldValidationError\n const errorFlat: FieldError[] =\n (_error &&\n Object.values(\n _error as unknown as Record<string, FieldError[]>,\n ).flat()) ||\n [];\n\n /**\n * Handles the checkbox group value changes based on the number of options:\n * 1. For single checkbox (options.length === 1):\n * - Converts undefined/empty array to [] for consistent controlled behavior\n * - Extracts single value from array for onChange\n *\n * Example: undefined → []\n * [value] → value\n *\n * 2. For multiple checkboxes:\n * - Uses raw value array with fallback to empty array\n * - Passes through onChange directly\n *\n * Example: undefined → []\n * ['value1', 'value2'] → ['value1', 'value2']\n */\n const getCheckboxValue = (inputValue: unknown): string[] => {\n if (Array.isArray(inputValue)) {\n return inputValue;\n }\n if (inputValue) {\n return [inputValue as string];\n }\n return [];\n };\n\n const singleCheckboxProps = {\n value: getCheckboxValue(value),\n onChange: (newValue: string[]) => onChange(newValue?.[0]),\n };\n\n const multipleCheckboxProps = {\n onChange,\n value: getCheckboxValue(value),\n };\n\n const checkboxGroupProps =\n options.length === 1 ? singleCheckboxProps : multipleCheckboxProps;\n\n return (\n <HeroCheckboxGroup\n classNames={heroCheckboxGroupClassNames}\n color={color === 'info' ? 'primary' : color}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-testid={testId}\n errorMessage={\n errorFlat.length > 0 && (\n <FieldValidationError\n className={classNames.errorMessage}\n error={errorFlat}\n testId={testId}\n />\n )\n }\n isDisabled={disabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n ref={ref}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...checkboxGroupProps}\n >\n {options?.map((option) => {\n const optionTestId = slugify(\n `${testId}_option_${option?.testId || option?.value}`,\n { replaceDots: true },\n );\n\n const labelContent = option.labelSubline ? (\n <div className=\"flex flex-col items-start\">\n <span className={classNames.optionLabel}>{option.label}</span>\n <span className={`${classNames.optionLabelSubline}`}>\n {option.labelSubline}\n </span>\n </div>\n ) : (\n <span className={classNames.optionLabel}>{option.label}</span>\n );\n\n return (\n <HeroCheckbox\n aria-label={\n typeof option.label === 'string' ? option.label : option.value\n }\n classNames={heroCheckboxClassNames}\n data-invalid={invalid}\n data-testid={optionTestId}\n isDisabled={disabled || option.disabled}\n key={`index_${option.value}`}\n value={option?.value}\n >\n {labelContent}\n </HeroCheckbox>\n );\n })}\n </HeroCheckboxGroup>\n );\n};\n\nexport default CheckboxGroup;\n","import CheckboxGroup from './CheckboxGroup';\n\nexport type { CheckboxGroupProps, CheckboxGroupOption } from './CheckboxGroup';\n\nexport { CheckboxGroup };\n\nexport default CheckboxGroup;\n"]}
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  useController,
9
9
  useFormContext
10
- } from "./chunk-5R7ZPSN2.js";
10
+ } from "./chunk-NXTFRKYX.js";
11
11
 
12
12
  // src/RadioGroup/RadioGroup.tsx
13
13
  import { RadioGroup as HeroRadioGroup, Radio } from "@heroui/radio";
@@ -78,13 +78,15 @@ var RadioGroup = ({
78
78
  ref,
79
79
  children: options.map((option) => {
80
80
  if ("value" in option) {
81
+ const optionTestId = slugify(
82
+ `${testId}_option_${option.testId || option.value}`,
83
+ { replaceDots: true }
84
+ );
81
85
  return /* @__PURE__ */ jsx(
82
86
  Radio,
83
87
  {
84
88
  classNames: itemClassNames,
85
- "data-testid": slugify(
86
- `${testId}_option_${option.testId || option.value}`
87
- ),
89
+ "data-testid": optionTestId,
88
90
  isDisabled: isDisabled || option.disabled,
89
91
  onChange,
90
92
  value: option.value,
@@ -107,4 +109,4 @@ export {
107
109
  RadioGroup_default,
108
110
  RadioGroup_default2
109
111
  };
110
- //# sourceMappingURL=chunk-YNX7IORC.js.map
112
+ //# sourceMappingURL=chunk-XGRFOK3R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/RadioGroup/RadioGroup.tsx","../src/RadioGroup/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup, Radio } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const radioGroupVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n itemBase: '',\n itemControl: 'bg-focus group-data-[invalid=true]:bg-danger',\n itemDescription: '',\n itemLabel: 'text-sm',\n itemLabelWrapper: '',\n itemWrapper:\n 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid=\"true\"]):not(group-data-[selected=\"false\"])]:border-focus', // TODO: get rid of !.\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioGroupVariants>;\ntype ClassName = TVClassName<typeof radioGroupVariants>;\n\nexport interface RadioGroupOption {\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: React.ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioGroupProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioGroupOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioGroup component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioGroup = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n}: RadioGroupProps): ReactElement => {\n const { control, debugMode, getFieldState, getValues } = useFormContext();\n\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({ control, disabled, name });\n const { onChange, disabled: isDisabled, onBlur, ref } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = radioGroupVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const itemClassNames = {\n base: classNames.itemBase,\n control: classNames.itemControl,\n description: classNames.itemDescription,\n label: classNames.itemLabel,\n labelWrapper: classNames.itemLabelWrapper,\n wrapper: classNames.itemWrapper,\n };\n\n return (\n <HeroRadioGroup\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={getValues()[name]}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n name={name}\n orientation={inline ? 'horizontal' : 'vertical'}\n onBlur={onBlur}\n ref={ref}\n >\n {options.map((option) => {\n if ('value' in option) {\n return (\n <Radio\n classNames={itemClassNames}\n data-testid={slugify(\n `${testId}_option_${option.testId || option.value}`,\n )}\n isDisabled={isDisabled || option.disabled}\n key={option.value}\n onChange={onChange}\n value={option.value}\n >\n {option.label ? option.label : option.value}\n </Radio>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioGroup;\n","import RadioGroup from './RadioGroup';\n\nexport type { RadioGroupProps } from './RadioGroup';\n\nexport { RadioGroup };\n\nexport default RadioGroup;\n"],"mappings":";;;;;;;;;;;;AAGA,SAAS,cAAc,gBAAgB,aAAa;AAEpD,SAAS,SAAS,IAAI,4BAA4B;AAqGjC,cAQP,YARO;AA/FV,IAAM,qBAAqB,GAAG;AAAA,EACnC,OAAO;AAAA,IACL,MAAM;AAAA;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,aACE;AAAA;AAAA;AAAA;AAAA,IAGF,OACE;AAAA,IACF,SAAS;AAAA,EACX;AACF,CAAC;AAsCD,IAAM,aAAa,CAAC;AAAA,EAClB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,QAAQ,UAAU;AACpB,MAAqC;AACnC,QAAM,EAAE,SAAS,WAAW,eAAe,UAAU,IAAI,eAAe;AAExE,QAAM,EAAE,OAAO,SAAS,UAAU,OAAO,IAAI,cAAc,MAAM,OAAO;AAExE,QAAM,EAAE,MAAM,IAAI,cAAc,EAAE,SAAS,UAAU,KAAK,CAAC;AAC3D,QAAM,EAAE,UAAU,UAAU,YAAY,QAAQ,IAAI,IAAI;AAExD,QAAM,uBAAuB,cAAc;AAC3C,QAAM,YAAY,SAAS;AAE3B,QAAM,WAAW,mBAAmB;AACpC,QAAM,aAAa,qBAAqB,UAAU,WAAW,MAAM;AAEnE,QAAM,iBAAiB;AAAA,IACrB,MAAM,WAAW;AAAA,IACjB,SAAS,WAAW;AAAA,IACpB,aAAa,WAAW;AAAA,IACxB,OAAO,WAAW;AAAA,IAClB,cAAc,WAAW;AAAA,IACzB,SAAS,WAAW;AAAA,EACtB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAGA,gBAAc;AAAA,MACd,iBAAe;AAAA,MACf,eAAa;AAAA,MACb,cAAc,UAAU,EAAE,IAAI;AAAA,MAC9B,cACE,SAAS,oBAAC,gCAAqB,OAAc,QAAgB;AAAA,MAE/D;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OACE;AAAA,MAEE,qBAAC,WACE;AAAA;AAAA,QACA,wBAAwB,oBAAC,iCAAsB,QAAgB;AAAA,SAClE;AAAA,MAGJ;AAAA,MACA,aAAa,SAAS,eAAe;AAAA,MACrC;AAAA,MACA;AAAA,MAEC,kBAAQ,IAAI,CAAC,WAAW;AACvB,YAAI,WAAW,QAAQ;AACrB,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,YAAY;AAAA,cACZ,eAAa;AAAA,gBACX,GAAG,MAAM,WAAW,OAAO,UAAU,OAAO,KAAK;AAAA,cACnD;AAAA,cACA,YAAY,cAAc,OAAO;AAAA,cAEjC;AAAA,cACA,OAAO,OAAO;AAAA,cAEb,iBAAO,QAAQ,OAAO,QAAQ,OAAO;AAAA;AAAA,YAJjC,OAAO;AAAA,UAKd;AAAA,QAEJ;AACA,eAAO;AAAA,MACT,CAAC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,qBAAQ;;;AC9If,IAAOA,sBAAQ;","names":["RadioGroup_default"]}
1
+ {"version":3,"sources":["../src/RadioGroup/RadioGroup.tsx","../src/RadioGroup/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup, Radio } from '@heroui/radio';\n\nimport { slugify, tv, variantsToClassNames } from '@fuf-stack/pixel-utils';\n\nimport { useController, useFormContext } from '../hooks';\nimport { FieldCopyTestIdButton } from '../partials/FieldCopyTestIdButton';\nimport { FieldValidationError } from '../partials/FieldValidationError';\n\nexport const radioGroupVariants = tv({\n slots: {\n base: 'group', // Needs group for group-data condition\n itemBase: '',\n itemControl: 'bg-focus group-data-[invalid=true]:bg-danger',\n itemDescription: '',\n itemLabel: 'text-sm',\n itemLabelWrapper: '',\n itemWrapper:\n 'group-data-[invalid=true]:!border-danger [&:not(group-data-[invalid=\"true\"]):not(group-data-[selected=\"false\"])]:border-focus', // TODO: get rid of !.\n // see HeroUI styles for group-data condition,\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/select.ts\n label:\n 'text-sm text-foreground subpixel-antialiased group-data-[invalid=true]:text-danger',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioGroupVariants>;\ntype ClassName = TVClassName<typeof radioGroupVariants>;\n\nexport interface RadioGroupOption {\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: React.ReactNode;\n /** option icon */\n icon?: ReactNode;\n /** HTML data-testid attribute of the option */\n testId?: string;\n /** option value */\n value: string;\n}\n\nexport interface RadioGroupProps extends VariantProps {\n /** CSS class name */\n className?: ClassName;\n /** Determines if the Buttons are disabled or not. */\n disabled?: boolean;\n /** determines orientation of the Buttons. */\n inline?: boolean;\n /** Label displayed next to the RadioButton. */\n label?: ReactNode;\n /** Name the RadioButtons are registered at in HTML forms (react-hook-form). */\n name: string;\n /** Radio button configuration. */\n options: RadioGroupOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioGroup component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioGroup = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n}: RadioGroupProps): ReactElement => {\n const { control, debugMode, getFieldState, getValues } = useFormContext();\n\n const { error, invalid, required, testId } = getFieldState(name, _testId);\n\n const { field } = useController({ control, disabled, name });\n const { onChange, disabled: isDisabled, onBlur, ref } = field;\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n const variants = radioGroupVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const itemClassNames = {\n base: classNames.itemBase,\n control: classNames.itemControl,\n description: classNames.itemDescription,\n label: classNames.itemLabel,\n labelWrapper: classNames.itemLabelWrapper,\n wrapper: classNames.itemWrapper,\n };\n\n return (\n <HeroRadioGroup\n classNames={classNames}\n // see HeroUI styles for group-data condition (data-invalid),\n // e.g.: https://github.com/heroui-inc/heroui/blob/main/packages/components/select/src/use-select.ts\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={getValues()[name]}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n label={\n showLabel && (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n <label>\n {label}\n {showTestIdCopyButton && <FieldCopyTestIdButton testId={testId} />}\n </label>\n )\n }\n name={name}\n orientation={inline ? 'horizontal' : 'vertical'}\n onBlur={onBlur}\n ref={ref}\n >\n {options.map((option) => {\n if ('value' in option) {\n const optionTestId = slugify(\n `${testId}_option_${option.testId || option.value}`,\n { replaceDots: true },\n );\n return (\n <Radio\n classNames={itemClassNames}\n data-testid={optionTestId}\n isDisabled={isDisabled || option.disabled}\n key={option.value}\n onChange={onChange}\n value={option.value}\n >\n {option.label ? option.label : option.value}\n </Radio>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioGroup;\n","import RadioGroup from './RadioGroup';\n\nexport type { RadioGroupProps } from './RadioGroup';\n\nexport { RadioGroup };\n\nexport default RadioGroup;\n"],"mappings":";;;;;;;;;;;;AAGA,SAAS,cAAc,gBAAgB,aAAa;AAEpD,SAAS,SAAS,IAAI,4BAA4B;AAqGjC,cAQP,YARO;AA/FV,IAAM,qBAAqB,GAAG;AAAA,EACnC,OAAO;AAAA,IACL,MAAM;AAAA;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,aACE;AAAA;AAAA;AAAA;AAAA,IAGF,OACE;AAAA,IACF,SAAS;AAAA,EACX;AACF,CAAC;AAsCD,IAAM,aAAa,CAAC;AAAA,EAClB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,QAAQ,UAAU;AACpB,MAAqC;AACnC,QAAM,EAAE,SAAS,WAAW,eAAe,UAAU,IAAI,eAAe;AAExE,QAAM,EAAE,OAAO,SAAS,UAAU,OAAO,IAAI,cAAc,MAAM,OAAO;AAExE,QAAM,EAAE,MAAM,IAAI,cAAc,EAAE,SAAS,UAAU,KAAK,CAAC;AAC3D,QAAM,EAAE,UAAU,UAAU,YAAY,QAAQ,IAAI,IAAI;AAExD,QAAM,uBAAuB,cAAc;AAC3C,QAAM,YAAY,SAAS;AAE3B,QAAM,WAAW,mBAAmB;AACpC,QAAM,aAAa,qBAAqB,UAAU,WAAW,MAAM;AAEnE,QAAM,iBAAiB;AAAA,IACrB,MAAM,WAAW;AAAA,IACjB,SAAS,WAAW;AAAA,IACpB,aAAa,WAAW;AAAA,IACxB,OAAO,WAAW;AAAA,IAClB,cAAc,WAAW;AAAA,IACzB,SAAS,WAAW;AAAA,EACtB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MAGA,gBAAc;AAAA,MACd,iBAAe;AAAA,MACf,eAAa;AAAA,MACb,cAAc,UAAU,EAAE,IAAI;AAAA,MAC9B,cACE,SAAS,oBAAC,gCAAqB,OAAc,QAAgB;AAAA,MAE/D;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OACE;AAAA,MAEE,qBAAC,WACE;AAAA;AAAA,QACA,wBAAwB,oBAAC,iCAAsB,QAAgB;AAAA,SAClE;AAAA,MAGJ;AAAA,MACA,aAAa,SAAS,eAAe;AAAA,MACrC;AAAA,MACA;AAAA,MAEC,kBAAQ,IAAI,CAAC,WAAW;AACvB,YAAI,WAAW,QAAQ;AACrB,gBAAM,eAAe;AAAA,YACnB,GAAG,MAAM,WAAW,OAAO,UAAU,OAAO,KAAK;AAAA,YACjD,EAAE,aAAa,KAAK;AAAA,UACtB;AACA,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,YAAY;AAAA,cACZ,eAAa;AAAA,cACb,YAAY,cAAc,OAAO;AAAA,cAEjC;AAAA,cACA,OAAO,OAAO;AAAA,cAEb,iBAAO,QAAQ,OAAO,QAAQ,OAAO;AAAA;AAAA,YAJjC,OAAO;AAAA,UAKd;AAAA,QAEJ;AACA,eAAO;AAAA,MACT,CAAC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,qBAAQ;;;AChJf,IAAOA,sBAAQ;","names":["RadioGroup_default"]}
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkF4VYFBYCcjs = require('../chunk-F4VYFBYC.cjs');
8
+ var _chunkGDNP6OU3cjs = require('../chunk-GDNP6OU3.cjs');
9
9
  require('../chunk-CESGUF6F.cjs');
10
10
  require('../chunk-555JRYCS.cjs');
11
11
 
@@ -15,5 +15,5 @@ require('../chunk-555JRYCS.cjs');
15
15
 
16
16
 
17
17
 
18
- exports.checkFieldIsRequired = _chunkF4VYFBYCcjs.checkFieldIsRequired; exports.useClientValidation = _chunkF4VYFBYCcjs.useClientValidation; exports.useController = _chunkF4VYFBYCcjs.useController; exports.useFieldArray = _chunkF4VYFBYCcjs.useFieldArray; exports.useFormContext = _chunkF4VYFBYCcjs.useFormContext; exports.useInput = _chunkF4VYFBYCcjs.useInput;
18
+ exports.checkFieldIsRequired = _chunkGDNP6OU3cjs.checkFieldIsRequired; exports.useClientValidation = _chunkGDNP6OU3cjs.useClientValidation; exports.useController = _chunkGDNP6OU3cjs.useController; exports.useFieldArray = _chunkGDNP6OU3cjs.useFieldArray; exports.useFormContext = _chunkGDNP6OU3cjs.useFormContext; exports.useInput = _chunkGDNP6OU3cjs.useInput;
19
19
  //# sourceMappingURL=index.cjs.map
@@ -5,7 +5,7 @@ import {
5
5
  useFieldArray,
6
6
  useFormContext,
7
7
  useInput
8
- } from "../chunk-5R7ZPSN2.js";
8
+ } from "../chunk-NXTFRKYX.js";
9
9
  import "../chunk-UAV6PVB4.js";
10
10
  import "../chunk-K2V4ULA2.js";
11
11
  export {
package/dist/index.cjs CHANGED
@@ -1,39 +1,39 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkY33HTDL6cjs = require('./chunk-Y33HTDL6.cjs');
3
+ var _chunkUN7777T3cjs = require('./chunk-UN7777T3.cjs');
4
4
 
5
5
 
6
- var _chunkRKZQKPRJcjs = require('./chunk-RKZQKPRJ.cjs');
6
+ var _chunkH5JXWAGHcjs = require('./chunk-H5JXWAGH.cjs');
7
7
 
8
8
 
9
- var _chunkQ5KXDJU7cjs = require('./chunk-Q5KXDJU7.cjs');
9
+ var _chunkEBMEIX2Pcjs = require('./chunk-EBMEIX2P.cjs');
10
10
 
11
11
 
12
- var _chunkEHTJ2BYBcjs = require('./chunk-EHTJ2BYB.cjs');
12
+ var _chunkDIVINFK2cjs = require('./chunk-DIVINFK2.cjs');
13
13
 
14
14
 
15
- var _chunkJWYMBKE6cjs = require('./chunk-JWYMBKE6.cjs');
15
+ var _chunkPT2XYC26cjs = require('./chunk-PT2XYC26.cjs');
16
16
 
17
17
 
18
- var _chunkYLTKVPHEcjs = require('./chunk-YLTKVPHE.cjs');
18
+ var _chunkUYLC4JOUcjs = require('./chunk-UYLC4JOU.cjs');
19
19
 
20
20
 
21
- var _chunk3ISETOB3cjs = require('./chunk-3ISETOB3.cjs');
21
+ var _chunkCVCXMVCJcjs = require('./chunk-CVCXMVCJ.cjs');
22
22
 
23
23
 
24
- var _chunkIYR5A3CVcjs = require('./chunk-IYR5A3CV.cjs');
24
+ var _chunkR4ICWOU4cjs = require('./chunk-R4ICWOU4.cjs');
25
25
 
26
26
 
27
- var _chunk6GN255GPcjs = require('./chunk-6GN255GP.cjs');
27
+ var _chunkTTD3KL6Ecjs = require('./chunk-TTD3KL6E.cjs');
28
28
 
29
29
 
30
- var _chunkBDJHUA55cjs = require('./chunk-BDJHUA55.cjs');
30
+ var _chunkUKZDZ7B3cjs = require('./chunk-UKZDZ7B3.cjs');
31
31
 
32
32
 
33
- var _chunkYLJC74CQcjs = require('./chunk-YLJC74CQ.cjs');
33
+ var _chunkPHK5PELPcjs = require('./chunk-PHK5PELP.cjs');
34
34
 
35
35
 
36
- var _chunkCUDJVXZXcjs = require('./chunk-CUDJVXZX.cjs');
36
+ var _chunkO46U5DHLcjs = require('./chunk-O46U5DHL.cjs');
37
37
 
38
38
 
39
39
  var _chunkGNYQC5IJcjs = require('./chunk-GNYQC5IJ.cjs');
@@ -47,7 +47,7 @@ var _chunkPA2DQCBYcjs = require('./chunk-PA2DQCBY.cjs');
47
47
 
48
48
 
49
49
 
50
- var _chunkF4VYFBYCcjs = require('./chunk-F4VYFBYC.cjs');
50
+ var _chunkGDNP6OU3cjs = require('./chunk-GDNP6OU3.cjs');
51
51
 
52
52
 
53
53
 
@@ -80,5 +80,5 @@ require('./chunk-555JRYCS.cjs');
80
80
 
81
81
 
82
82
 
83
- exports.CheckboxGroup = _chunkYLTKVPHEcjs.CheckboxGroup_default; exports.FieldArray = _chunk3ISETOB3cjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkPA2DQCBYcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkGNYQC5IJcjs.FieldValidationError_default; exports.Form = _chunkIYR5A3CVcjs.Form_default; exports.Grid = _chunk6GN255GPcjs.Grid_default; exports.Input = _chunkBDJHUA55cjs.Input_default; exports.RadioBoxes = _chunkYLJC74CQcjs.RadioBoxes_default; exports.RadioGroup = _chunkCUDJVXZXcjs.RadioGroup_default; exports.RadioTabs = _chunkY33HTDL6cjs.RadioTabs_default; exports.Select = _chunkRKZQKPRJcjs.Select_default; exports.SubmitButton = _chunkQ5KXDJU7cjs.SubmitButton_default; exports.Switch = _chunkEHTJ2BYBcjs.Switch_default; exports.TextArea = _chunkJWYMBKE6cjs.TextArea_default; exports.checkFieldIsRequired = _chunkF4VYFBYCcjs.checkFieldIsRequired; exports.fromNullishString = _chunkCESGUF6Fcjs.fromNullishString; exports.toFormFormat = _chunkCESGUF6Fcjs.toFormFormat; exports.toNullishString = _chunkCESGUF6Fcjs.toNullishString; exports.toValidationFormat = _chunkCESGUF6Fcjs.toValidationFormat; exports.useClientValidation = _chunkF4VYFBYCcjs.useClientValidation; exports.useController = _chunkF4VYFBYCcjs.useController; exports.useFieldArray = _chunkF4VYFBYCcjs.useFieldArray; exports.useFormContext = _chunkF4VYFBYCcjs.useFormContext; exports.useInput = _chunkF4VYFBYCcjs.useInput;
83
+ exports.CheckboxGroup = _chunkUYLC4JOUcjs.CheckboxGroup_default; exports.FieldArray = _chunkCVCXMVCJcjs.FieldArray_default; exports.FieldCopyTestIdButton = _chunkPA2DQCBYcjs.FieldCopyTestIdButton_default; exports.FieldValidationError = _chunkGNYQC5IJcjs.FieldValidationError_default; exports.Form = _chunkR4ICWOU4cjs.Form_default; exports.Grid = _chunkTTD3KL6Ecjs.Grid_default; exports.Input = _chunkUKZDZ7B3cjs.Input_default; exports.RadioBoxes = _chunkPHK5PELPcjs.RadioBoxes_default; exports.RadioGroup = _chunkO46U5DHLcjs.RadioGroup_default; exports.RadioTabs = _chunkUN7777T3cjs.RadioTabs_default; exports.Select = _chunkH5JXWAGHcjs.Select_default; exports.SubmitButton = _chunkEBMEIX2Pcjs.SubmitButton_default; exports.Switch = _chunkDIVINFK2cjs.Switch_default; exports.TextArea = _chunkPT2XYC26cjs.TextArea_default; exports.checkFieldIsRequired = _chunkGDNP6OU3cjs.checkFieldIsRequired; exports.fromNullishString = _chunkCESGUF6Fcjs.fromNullishString; exports.toFormFormat = _chunkCESGUF6Fcjs.toFormFormat; exports.toNullishString = _chunkCESGUF6Fcjs.toNullishString; exports.toValidationFormat = _chunkCESGUF6Fcjs.toValidationFormat; exports.useClientValidation = _chunkGDNP6OU3cjs.useClientValidation; exports.useController = _chunkGDNP6OU3cjs.useController; exports.useFieldArray = _chunkGDNP6OU3cjs.useFieldArray; exports.useFormContext = _chunkGDNP6OU3cjs.useFormContext; exports.useInput = _chunkGDNP6OU3cjs.useInput;
84
84
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-Dh0YW4KV.cjs';
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-B_1mu8Xo.cjs';
2
2
  export { F as FieldArray, a as FieldArrayChildrenRenderFn, b as FieldArrayFeatures, c as FieldArrayProps } from './FieldArray-hqxjr18x.cjs';
3
3
  export { F as Form, a as FormProps } from './Form-D0grgL6G.cjs';
4
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.cjs';
@@ -9,16 +9,16 @@ export { useInput } from '@heroui/input';
9
9
  export { I as Input, a as InputProps } from './Input-B_wjhY9e.cjs';
10
10
  export { F as FieldCopyTestIdButton, a as FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton-_TDlmw0L.cjs';
11
11
  export { F as FieldValidationError, a as FieldValidationErrorProps } from './FieldValidationError-CU_xw0BL.cjs';
12
- export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-C61IRDCU.cjs';
13
- export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-C7I27oav.cjs';
12
+ export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-BmJBBZVd.cjs';
13
+ export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-BJijfixt.cjs';
14
14
  export { R as RadioTabs, a as RadioTabsProps } from './RadioTabs-CT8PT7ky.cjs';
15
15
  export { S as Select, a as SelectProps } from './Select-JRwrSDew.cjs';
16
16
  export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-C81VCkmx.cjs';
17
17
  export { S as Switch, a as SwitchProps } from './Switch-CLs964dL.cjs';
18
18
  export { T as TextArea, a as TextAreaProps } from './TextArea-DNpInDsW.cjs';
19
19
  import 'react/jsx-runtime';
20
- import 'tailwind-variants/dist/config.js';
21
20
  import 'tailwind-variants';
21
+ import 'tailwind-variants/dist/config.js';
22
22
  import '@fuf-stack/pixel-utils';
23
23
  import 'react';
24
24
  import '@fuf-stack/veto';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-Dh0YW4KV.js';
1
+ export { C as CheckboxGroup, b as CheckboxGroupOption, a as CheckboxGroupProps } from './CheckboxGroup-B_1mu8Xo.js';
2
2
  export { F as FieldArray, a as FieldArrayChildrenRenderFn, b as FieldArrayFeatures, c as FieldArrayProps } from './FieldArray-hqxjr18x.js';
3
3
  export { F as Form, a as FormProps } from './Form-DX5NTR-H.js';
4
4
  export { G as Grid, a as GridProps } from './Grid-DF3L9NF3.js';
@@ -9,16 +9,16 @@ export { useInput } from '@heroui/input';
9
9
  export { I as Input, a as InputProps } from './Input-B_wjhY9e.js';
10
10
  export { F as FieldCopyTestIdButton, a as FieldCopyTestIdButtonProps } from './FieldCopyTestIdButton-_TDlmw0L.js';
11
11
  export { F as FieldValidationError, a as FieldValidationErrorProps } from './FieldValidationError-CU_xw0BL.js';
12
- export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-C61IRDCU.js';
13
- export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-C7I27oav.js';
12
+ export { R as RadioBoxes, a as RadioBoxesProps } from './RadioBoxes-BmJBBZVd.js';
13
+ export { R as RadioGroup, a as RadioGroupProps } from './RadioGroup-BJijfixt.js';
14
14
  export { R as RadioTabs, a as RadioTabsProps } from './RadioTabs-CT8PT7ky.js';
15
15
  export { S as Select, a as SelectProps } from './Select-JRwrSDew.js';
16
16
  export { S as SubmitButton, a as SubmitButtonProps } from './SubmitButton-C81VCkmx.js';
17
17
  export { S as Switch, a as SwitchProps } from './Switch-CLs964dL.js';
18
18
  export { T as TextArea, a as TextAreaProps } from './TextArea-DNpInDsW.js';
19
19
  import 'react/jsx-runtime';
20
- import 'tailwind-variants/dist/config.js';
21
20
  import 'tailwind-variants';
21
+ import 'tailwind-variants/dist/config.js';
22
22
  import '@fuf-stack/pixel-utils';
23
23
  import 'react';
24
24
  import '@fuf-stack/veto';
package/dist/index.js CHANGED
@@ -1,39 +1,39 @@
1
1
  import {
2
2
  RadioTabs_default
3
- } from "./chunk-4WVYRJCV.js";
3
+ } from "./chunk-PSWYP5SU.js";
4
4
  import {
5
5
  Select_default
6
- } from "./chunk-FJTWQ6UG.js";
6
+ } from "./chunk-C4WU74Y4.js";
7
7
  import {
8
8
  SubmitButton_default
9
- } from "./chunk-M7CZ526K.js";
9
+ } from "./chunk-K4E35FS6.js";
10
10
  import {
11
11
  Switch_default
12
- } from "./chunk-3PAVDSMW.js";
12
+ } from "./chunk-KJYR5Q6G.js";
13
13
  import {
14
14
  TextArea_default
15
- } from "./chunk-43R3EVIW.js";
15
+ } from "./chunk-AQHJJ6WW.js";
16
16
  import {
17
17
  CheckboxGroup_default
18
- } from "./chunk-BC6ZP7TF.js";
18
+ } from "./chunk-H7JL3BPU.js";
19
19
  import {
20
20
  FieldArray_default
21
- } from "./chunk-LX775YU7.js";
21
+ } from "./chunk-TKE5V4IU.js";
22
22
  import {
23
23
  Form_default
24
- } from "./chunk-BPZ3U5RV.js";
24
+ } from "./chunk-6G5UDAYH.js";
25
25
  import {
26
26
  Grid_default
27
- } from "./chunk-PDCEKC3G.js";
27
+ } from "./chunk-B62HKKMS.js";
28
28
  import {
29
29
  Input_default
30
- } from "./chunk-FA74PMQ3.js";
30
+ } from "./chunk-7GNNET4A.js";
31
31
  import {
32
32
  RadioBoxes_default
33
- } from "./chunk-LBFJL6IA.js";
33
+ } from "./chunk-HGEOXAH4.js";
34
34
  import {
35
35
  RadioGroup_default
36
- } from "./chunk-YNX7IORC.js";
36
+ } from "./chunk-XGRFOK3R.js";
37
37
  import {
38
38
  FieldValidationError_default
39
39
  } from "./chunk-UTFZRBBS.js";
@@ -47,7 +47,7 @@ import {
47
47
  useFieldArray,
48
48
  useFormContext,
49
49
  useInput
50
- } from "./chunk-5R7ZPSN2.js";
50
+ } from "./chunk-NXTFRKYX.js";
51
51
  import {
52
52
  fromNullishString,
53
53
  toFormFormat,