@fuf-stack/uniform 1.0.2 → 1.0.4

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 (144) hide show
  1. package/dist/CheckboxGroup/index.cjs +7 -7
  2. package/dist/CheckboxGroup/index.d.cts +2 -2
  3. package/dist/CheckboxGroup/index.d.ts +2 -2
  4. package/dist/CheckboxGroup/index.js +6 -6
  5. package/dist/{CheckboxGroup-D45rOACY.d.cts → CheckboxGroup-B1g42iP0.d.cts} +2 -2
  6. package/dist/{CheckboxGroup-D45rOACY.d.ts → CheckboxGroup-B1g42iP0.d.ts} +2 -2
  7. package/dist/FieldArray/index.cjs +7 -7
  8. package/dist/FieldArray/index.d.cts +2 -2
  9. package/dist/FieldArray/index.d.ts +2 -2
  10. package/dist/FieldArray/index.js +6 -6
  11. package/dist/{FieldArray-DAzf9zE2.d.cts → FieldArray-DVQka7Bh.d.cts} +2 -2
  12. package/dist/{FieldArray-DAzf9zE2.d.ts → FieldArray-DVQka7Bh.d.ts} +2 -2
  13. package/dist/Form/index.cjs +5 -5
  14. package/dist/Form/index.d.cts +3 -3
  15. package/dist/Form/index.d.ts +3 -3
  16. package/dist/Form/index.js +4 -4
  17. package/dist/{Form-DX5NTR-H.d.ts → Form-C_11i6PA.d.ts} +1 -1
  18. package/dist/{Form-D0grgL6G.d.cts → Form-Cu0lWRDN.d.cts} +1 -1
  19. package/dist/{FormContext-ldCpxKnY.d.cts → FormContext-LRho0tno.d.cts} +2 -2
  20. package/dist/{FormContext-ldCpxKnY.d.ts → FormContext-LRho0tno.d.ts} +2 -2
  21. package/dist/Input/index.cjs +7 -7
  22. package/dist/Input/index.js +6 -6
  23. package/dist/RadioBoxes/index.cjs +7 -7
  24. package/dist/RadioBoxes/index.js +6 -6
  25. package/dist/RadioGroup/index.cjs +7 -7
  26. package/dist/RadioGroup/index.js +6 -6
  27. package/dist/RadioTabs/index.cjs +7 -7
  28. package/dist/RadioTabs/index.js +6 -6
  29. package/dist/Select/index.cjs +7 -7
  30. package/dist/Select/index.d.cts +2 -2
  31. package/dist/Select/index.d.ts +2 -2
  32. package/dist/Select/index.js +6 -6
  33. package/dist/{Select-CY5fJfiS.d.cts → Select-CTRWinmO.d.cts} +2 -2
  34. package/dist/{Select-CY5fJfiS.d.ts → Select-CTRWinmO.d.ts} +2 -2
  35. package/dist/SubmitButton/index.cjs +5 -5
  36. package/dist/SubmitButton/index.js +4 -4
  37. package/dist/Switch/index.cjs +7 -7
  38. package/dist/Switch/index.js +6 -6
  39. package/dist/TextArea/index.cjs +7 -7
  40. package/dist/TextArea/index.js +6 -6
  41. package/dist/{chunk-WHW6WMII.js → chunk-2Q3ZW3QG.js} +66 -55
  42. package/dist/chunk-2Q3ZW3QG.js.map +1 -0
  43. package/dist/{chunk-XKXPFVWS.js → chunk-6G6MFO44.js} +15 -13
  44. package/dist/chunk-6G6MFO44.js.map +1 -0
  45. package/dist/{chunk-U5WBLGZV.js → chunk-6IU7IYYB.js} +4 -2
  46. package/dist/{chunk-U5WBLGZV.js.map → chunk-6IU7IYYB.js.map} +1 -1
  47. package/dist/{chunk-S3FGQTPN.js → chunk-C5E3263F.js} +32 -33
  48. package/dist/chunk-C5E3263F.js.map +1 -0
  49. package/dist/{chunk-XKX22KIM.cjs → chunk-CNSA2WD5.cjs} +4 -4
  50. package/dist/{chunk-XKX22KIM.cjs.map → chunk-CNSA2WD5.cjs.map} +1 -1
  51. package/dist/{chunk-UTFZRBBS.js → chunk-CQWA2DFV.js} +7 -5
  52. package/dist/chunk-CQWA2DFV.js.map +1 -0
  53. package/dist/{chunk-PTOFJKSN.js → chunk-CVZSGNBJ.js} +11 -11
  54. package/dist/{chunk-PTOFJKSN.js.map → chunk-CVZSGNBJ.js.map} +1 -1
  55. package/dist/{chunk-K2IHP7JJ.cjs → chunk-EO7TACW2.cjs} +68 -45
  56. package/dist/chunk-EO7TACW2.cjs.map +1 -0
  57. package/dist/{chunk-E2ZEMRKR.cjs → chunk-EP5CSMUM.cjs} +19 -19
  58. package/dist/{chunk-E2ZEMRKR.cjs.map → chunk-EP5CSMUM.cjs.map} +1 -1
  59. package/dist/{chunk-K7QILQPE.js → chunk-F7IIJ7TU.js} +31 -23
  60. package/dist/chunk-F7IIJ7TU.js.map +1 -0
  61. package/dist/{chunk-OWWUTKGY.cjs → chunk-FLK6OPFY.cjs} +4 -2
  62. package/dist/chunk-FLK6OPFY.cjs.map +1 -0
  63. package/dist/{chunk-SNXHPF7L.js → chunk-GZKDPAUC.js} +7 -12
  64. package/dist/{chunk-SNXHPF7L.js.map → chunk-GZKDPAUC.js.map} +1 -1
  65. package/dist/{chunk-UHMJOD2X.js → chunk-I3IICXIN.js} +61 -38
  66. package/dist/chunk-I3IICXIN.js.map +1 -0
  67. package/dist/{chunk-XSNA554N.cjs → chunk-KC26PALY.cjs} +12 -12
  68. package/dist/{chunk-XSNA554N.cjs.map → chunk-KC26PALY.cjs.map} +1 -1
  69. package/dist/chunk-KQN55PEW.js +76 -0
  70. package/dist/chunk-KQN55PEW.js.map +1 -0
  71. package/dist/{chunk-H7EXCZKM.cjs → chunk-MAABMY3P.cjs} +71 -60
  72. package/dist/chunk-MAABMY3P.cjs.map +1 -0
  73. package/dist/{chunk-NPRL7X5E.cjs → chunk-N7BZIGW7.cjs} +26 -24
  74. package/dist/chunk-N7BZIGW7.cjs.map +1 -0
  75. package/dist/{chunk-MAJ7IXH4.cjs → chunk-NSYD7L53.cjs} +10 -15
  76. package/dist/chunk-NSYD7L53.cjs.map +1 -0
  77. package/dist/{chunk-BQGN3JTU.js → chunk-NTDKZW4E.js} +4 -4
  78. package/dist/{chunk-BQGN3JTU.js.map → chunk-NTDKZW4E.js.map} +1 -1
  79. package/dist/{chunk-3QCNVEUD.cjs → chunk-O3H3KD5H.cjs} +18 -18
  80. package/dist/chunk-O3H3KD5H.cjs.map +1 -0
  81. package/dist/{chunk-PA2DQCBY.cjs → chunk-OE5BOGGX.cjs} +4 -4
  82. package/dist/{chunk-PA2DQCBY.cjs.map → chunk-OE5BOGGX.cjs.map} +1 -1
  83. package/dist/{chunk-UIBHEN65.js → chunk-OEPBQXUN.js} +16 -16
  84. package/dist/{chunk-UIBHEN65.js.map → chunk-OEPBQXUN.js.map} +1 -1
  85. package/dist/{chunk-LLO7FMR7.js → chunk-PMJXI3V6.js} +15 -15
  86. package/dist/chunk-PMJXI3V6.js.map +1 -0
  87. package/dist/{chunk-YPWUPZOU.js → chunk-RZRWTZV3.js} +9 -9
  88. package/dist/{chunk-YPWUPZOU.js.map → chunk-RZRWTZV3.js.map} +1 -1
  89. package/dist/{chunk-TKQYWIHG.js → chunk-SCFEHH2U.js} +3 -3
  90. package/dist/{chunk-TKQYWIHG.js.map → chunk-SCFEHH2U.js.map} +1 -1
  91. package/dist/{chunk-VTTU37OB.cjs → chunk-UQFNR2ZI.cjs} +34 -35
  92. package/dist/chunk-UQFNR2ZI.cjs.map +1 -0
  93. package/dist/{chunk-LJ2KHIIN.cjs → chunk-V64TRQMV.cjs} +33 -25
  94. package/dist/chunk-V64TRQMV.cjs.map +1 -0
  95. package/dist/{chunk-BLS46GFN.js → chunk-VIJSEE2I.js} +23 -21
  96. package/dist/chunk-VIJSEE2I.js.map +1 -0
  97. package/dist/{chunk-GWJLFB26.cjs → chunk-X4O53MIJ.cjs} +19 -17
  98. package/dist/chunk-X4O53MIJ.cjs.map +1 -0
  99. package/dist/{chunk-LBOF5M7T.cjs → chunk-XHWBXZO5.cjs} +14 -14
  100. package/dist/chunk-XHWBXZO5.cjs.map +1 -0
  101. package/dist/{chunk-GNYQC5IJ.cjs → chunk-Y3AB4GV6.cjs} +7 -5
  102. package/dist/chunk-Y3AB4GV6.cjs.map +1 -0
  103. package/dist/chunk-YGNY6CKU.cjs +76 -0
  104. package/dist/chunk-YGNY6CKU.cjs.map +1 -0
  105. package/dist/helpers/index.cjs +2 -2
  106. package/dist/helpers/index.js +1 -1
  107. package/dist/hooks/index.cjs +4 -4
  108. package/dist/hooks/index.d.cts +3 -3
  109. package/dist/hooks/index.d.ts +3 -3
  110. package/dist/hooks/index.js +3 -3
  111. package/dist/hooks/useInputValueDebounce/index.cjs +2 -2
  112. package/dist/hooks/useInputValueDebounce/index.js +1 -1
  113. package/dist/index.cjs +17 -17
  114. package/dist/index.d.cts +5 -5
  115. package/dist/index.d.ts +5 -5
  116. package/dist/index.js +16 -16
  117. package/dist/partials/FieldCopyTestIdButton/index.cjs +2 -2
  118. package/dist/partials/FieldCopyTestIdButton/index.js +1 -1
  119. package/dist/partials/FieldValidationError/index.cjs +2 -2
  120. package/dist/partials/FieldValidationError/index.js +1 -1
  121. package/package.json +4 -4
  122. package/dist/chunk-3QCNVEUD.cjs.map +0 -1
  123. package/dist/chunk-57WY5GAE.js +0 -66
  124. package/dist/chunk-57WY5GAE.js.map +0 -1
  125. package/dist/chunk-BLS46GFN.js.map +0 -1
  126. package/dist/chunk-GNYQC5IJ.cjs.map +0 -1
  127. package/dist/chunk-GWJLFB26.cjs.map +0 -1
  128. package/dist/chunk-H7EXCZKM.cjs.map +0 -1
  129. package/dist/chunk-K2IHP7JJ.cjs.map +0 -1
  130. package/dist/chunk-K7QILQPE.js.map +0 -1
  131. package/dist/chunk-L4YPB7MU.cjs +0 -66
  132. package/dist/chunk-L4YPB7MU.cjs.map +0 -1
  133. package/dist/chunk-LBOF5M7T.cjs.map +0 -1
  134. package/dist/chunk-LJ2KHIIN.cjs.map +0 -1
  135. package/dist/chunk-LLO7FMR7.js.map +0 -1
  136. package/dist/chunk-MAJ7IXH4.cjs.map +0 -1
  137. package/dist/chunk-NPRL7X5E.cjs.map +0 -1
  138. package/dist/chunk-OWWUTKGY.cjs.map +0 -1
  139. package/dist/chunk-S3FGQTPN.js.map +0 -1
  140. package/dist/chunk-UHMJOD2X.js.map +0 -1
  141. package/dist/chunk-UTFZRBBS.js.map +0 -1
  142. package/dist/chunk-VTTU37OB.cjs.map +0 -1
  143. package/dist/chunk-WHW6WMII.js.map +0 -1
  144. package/dist/chunk-XKXPFVWS.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  FieldCopyTestIdButton_default
3
- } from "./chunk-BQGN3JTU.js";
3
+ } from "./chunk-NTDKZW4E.js";
4
4
  import {
5
5
  FieldValidationError_default
6
- } from "./chunk-UTFZRBBS.js";
6
+ } from "./chunk-CQWA2DFV.js";
7
7
  import {
8
8
  useController,
9
9
  useFormContext
10
- } from "./chunk-WHW6WMII.js";
10
+ } from "./chunk-2Q3ZW3QG.js";
11
11
  import {
12
12
  __spreadProps,
13
13
  __spreadValues
@@ -127,7 +127,7 @@ var Select = ({
127
127
  "data-testid": `${testId}_wrapper`,
128
128
  "data-required": required,
129
129
  children: [
130
- showLabel && /* @__PURE__ */ jsxs(
130
+ showLabel ? /* @__PURE__ */ jsxs(
131
131
  "label",
132
132
  {
133
133
  className: classNames.label,
@@ -136,16 +136,38 @@ var Select = ({
136
136
  id: getLabelProps().id,
137
137
  children: [
138
138
  label,
139
- showTestIdCopyButton && /* @__PURE__ */ jsx(FieldCopyTestIdButton_default, { testId })
139
+ showTestIdCopyButton ? /* @__PURE__ */ jsx(FieldCopyTestIdButton_default, { testId }) : null
140
140
  ]
141
141
  }
142
- ),
142
+ ) : null,
143
143
  /* @__PURE__ */ jsx(
144
144
  ReactSelect,
145
145
  {
146
+ menuShouldBlockScroll: true,
147
+ unstyled: true,
146
148
  "aria-errormessage": "",
147
- "aria-labelledby": (_a = getTriggerProps()["aria-labelledby"]) == null ? void 0 : _a.split(" ")[1],
148
149
  "aria-invalid": invalid,
150
+ components: {
151
+ Input: InputComponent,
152
+ Option: OptionComponent,
153
+ DropdownIndicator: DropdownIndicatorComponent,
154
+ Control: ControlComponent
155
+ },
156
+ "aria-labelledby": (_a = getTriggerProps()["aria-labelledby"]) == null ? void 0 : _a.split(" ")[1],
157
+ "data-testid": testId,
158
+ filterOption,
159
+ formatOptionLabel: renderOptionLabel,
160
+ inputValue,
161
+ instanceId: name,
162
+ isClearable: clearable,
163
+ isDisabled: disabled,
164
+ isLoading: loading,
165
+ name,
166
+ isMulti: multiSelect,
167
+ menuPosition: "fixed",
168
+ onInputChange,
169
+ options,
170
+ placeholder,
149
171
  classNames: {
150
172
  control: () => cn(classNames.control, {
151
173
  [classNames.control_focused]: isFocused && !invalid
@@ -176,26 +198,6 @@ var Select = ({
176
198
  singleValue: () => cn(classNames.singleValue, `${getValueProps().className}`),
177
199
  valueContainer: () => classNames.valueContainer
178
200
  },
179
- components: {
180
- Input: InputComponent,
181
- Option: OptionComponent,
182
- DropdownIndicator: DropdownIndicatorComponent,
183
- Control: ControlComponent
184
- },
185
- "data-testid": testId,
186
- filterOption,
187
- formatOptionLabel: renderOptionLabel,
188
- inputValue,
189
- instanceId: name,
190
- isClearable: clearable,
191
- isDisabled: disabled,
192
- isLoading: loading,
193
- isMulti: multiSelect,
194
- name,
195
- menuPosition: "fixed",
196
- menuShouldBlockScroll: true,
197
- options,
198
- placeholder,
199
201
  onBlur: (_e) => {
200
202
  setIsFocused(false);
201
203
  return onBlur();
@@ -212,14 +214,11 @@ var Select = ({
212
214
  onFocus: (_e) => {
213
215
  setIsFocused(true);
214
216
  },
215
- onInputChange,
216
217
  ref,
217
- value: options.find((option) => option.value === value),
218
- unstyled: true
218
+ value: options.find((option) => option.value === value)
219
219
  }
220
220
  ),
221
- error && // eslint-disable-next-line react/jsx-props-no-spreading
222
- /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, getHelperWrapperProps()), { children: /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, getErrorMessageProps()), { children: /* @__PURE__ */ jsx(FieldValidationError_default, { error, testId }) })) }))
221
+ error ? /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, getHelperWrapperProps()), { children: /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({}, getErrorMessageProps()), { children: /* @__PURE__ */ jsx(FieldValidationError_default, { error, testId }) })) })) : null
223
222
  ]
224
223
  })
225
224
  );
@@ -233,4 +232,4 @@ export {
233
232
  Select_default,
234
233
  Select_default2
235
234
  };
236
- //# sourceMappingURL=chunk-S3FGQTPN.js.map
235
+ //# sourceMappingURL=chunk-C5E3263F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Select/Select.tsx","../src/Select/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { Props } from 'react-select';\n\nimport { useState } from 'react';\nimport ReactSelect, { components } from 'react-select';\n\nimport { useSelect } from '@heroui/select';\n\nimport { cn, 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 selectVariants = tv({\n slots: {\n base: 'group leading-normal',\n clearIndicator:\n 'text-foreground-500 hover:bg-default-200 hover:text-foreground-800 rounded-md p-1 hover:cursor-pointer',\n control:\n 'border-default-200 bg-content1 transition-background hover:border-default-400 group-data-[invalid=true]:border-danger group-data-[invalid=true]:hover:border-danger rounded-lg border-2 duration-150! motion-reduce:transition-none',\n control_focused: 'border-focus',\n crossIcon: '',\n downChevron: '',\n dropdownIndicator:\n 'text-foreground-500 hover:bg-default-200 rounded-md p-1 hover:cursor-pointer hover:text-black',\n group: '',\n groupHeading: 'text-foreground-500 mt-2 mb-1 ml-3 text-sm',\n indicatorsContainer: 'gap-1 p-1',\n indicatorSeparator: 'bg-default-300',\n input: 'py-0.5 pl-1',\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-small group-data-[invalid=true]:!text-danger group-data-[required=true]:after:text-danger pointer-events-auto relative bottom-1.5 ml-1 subpixel-antialiased group-data-[required=true]:after:ml-0.5 group-data-[required=true]:after:content-[\"*\"]',\n loadingIndicator: '',\n loadingMessage: 'text-foreground-500 rounded-sm p-2',\n menu: 'border-default-200 bg-content1 mt-2 rounded-xl border p-1 shadow-lg',\n menuList: '',\n // ensure menu has same z-index as modal so it is visible when rendered in modal\n // see: https://github.com/heroui-inc/heroui/blob/main/packages/core/theme/src/components/modal.ts (see z-50)\n menuPortal: 'z-50!',\n multiValue: 'bg-default-100 items-center gap-1.5 rounded py-0.5 pr-1 pl-2',\n multiValueContainer: '',\n multiValueLabel: 'py-0.5 leading-6',\n multiValueRemove:\n 'text-default-500 hover:border-default-300 hover:text-default-800 rounded hover:cursor-pointer',\n noOptionsMessage: 'text-foreground-500 rounded-sm p-2',\n option_focused: 'bg-default-100 active:bg-default-200',\n option_selected: 'bg-default-300',\n option: 'rounded px-3 py-2 hover:cursor-pointer',\n placeholder: 'text-foreground-500 ml-1 py-0.5 pl-1 text-sm',\n selectContainer: '',\n singleValue: 'ml-1! leading-7!',\n valueContainer: 'gap-1 p-1',\n },\n});\n\ninterface SelectOption {\n /** option label */\n label?: React.ReactNode;\n /** option value */\n value: string;\n}\n\ntype VariantProps = TVProps<typeof selectVariants>;\ntype ClassName = TVClassName<typeof selectVariants>;\n\nexport interface SelectProps extends VariantProps {\n /** CSS class name */\n className?: ClassName; // string;\n /** Determine if the */\n clearable?: boolean;\n /** Set the select to disabled state. */\n disabled?: boolean;\n /** Filter Select Options */\n filterOption?:\n | undefined\n | ((option?: SelectOption, inputValue?: string) => boolean);\n /** Format the label of the option */\n renderOptionLabel?: undefined | Props['formatOptionLabel'];\n /** The value of the search input */\n inputValue?: string;\n /** Label that should be associated with the select. */\n label?: React.ReactNode;\n /** Set the select to a loading state. */\n loading?: boolean;\n /** switch between single and multi select mode. */\n multiSelect?: boolean;\n /** The name for the Select component, used by react-hook-form */\n name: string;\n /** Placeholder that is displayed when nothing is selected */\n placeholder?: string;\n /** The options for the Select component */\n options: SelectOption[];\n /** Handle change events on the input */\n onInputChange?: Props['onInputChange'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\nconst InputComponent: typeof components.Input = (props) => {\n // @ts-expect-error data-testid is not a default prop\n // eslint-disable-next-line react/destructuring-assignment\n const testId = `${props.selectProps['data-testid']}`;\n\n return <components.Input data-testid={testId} {...props} />;\n};\n\nconst ControlComponent: typeof components.Control = (props) => {\n // @ts-expect-error data-testid is not a default prop\n // eslint-disable-next-line react/destructuring-assignment\n const testId = `${props.selectProps['data-testid']}_select`;\n return (\n <div data-testid={testId}>\n {}\n <components.Control {...props} />\n </div>\n );\n};\n\nconst OptionComponent: typeof components.Option = (props) => {\n // @ts-expect-error data-testid is not a default prop\n // eslint-disable-next-line react/destructuring-assignment\n const testId = `${props.selectProps['data-testid']}_select_option_${slugify(props?.data?.testId ?? props?.data?.value, { replaceDots: true })}`;\n return (\n <div data-testid={testId}>\n {}\n <components.Option {...props} />\n </div>\n );\n};\n\nconst DropdownIndicatorComponent: typeof components.DropdownIndicator = (\n props,\n) => {\n // @ts-expect-error data-testid is not a default prop\n\n const testId = props?.selectProps['data-testid'] as string;\n return (\n <div data-testid={`${testId}_select_dropdown`}>\n {}\n <components.DropdownIndicator {...props} />\n </div>\n );\n};\n\n/** Select component based on [HeroUI Select](https://www.heroui.com//docs/components/select) and [React-Select](https://react-select.com/home) */\nconst Select = ({\n className = undefined,\n clearable = true,\n disabled = false,\n filterOption = undefined,\n renderOptionLabel = undefined,\n inputValue = undefined,\n label: _label = undefined,\n loading = false,\n multiSelect = false,\n name,\n onInputChange = undefined,\n options,\n placeholder = undefined,\n testId: _testId = undefined,\n}: SelectProps) => {\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 { onChange, value, ref, onBlur } = field;\n\n const [isFocused, setIsFocused] = useState(false);\n\n const variants = selectVariants();\n const classNames = variantsToClassNames(variants, className, 'base');\n\n const {\n getBaseProps,\n getErrorMessageProps,\n getHelperWrapperProps,\n getLabelProps,\n getTriggerProps,\n getValueProps,\n label,\n } = useSelect({\n children: [],\n classNames,\n errorMessage: JSON.stringify(error),\n isDisabled: disabled,\n isInvalid: invalid,\n isLoading: loading,\n isRequired: required,\n label: _label,\n labelPlacement: 'outside',\n placeholder: ' ',\n });\n\n const showTestIdCopyButton = debugMode === 'debug-testids';\n const showLabel = label || showTestIdCopyButton;\n\n return (\n <div\n {...getBaseProps()}\n className={cn(classNames.base)}\n data-testid={`${testId}_wrapper`}\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-required={required}\n >\n {showLabel ? (\n <label\n className={classNames.label}\n data-slot=\"label\"\n htmlFor={`react-select-${name}-input`}\n id={getLabelProps().id}\n >\n {label}\n {showTestIdCopyButton ? (\n <FieldCopyTestIdButton testId={testId} />\n ) : null}\n </label>\n ) : null}\n <ReactSelect\n menuShouldBlockScroll\n unstyled\n aria-errormessage=\"\"\n aria-invalid={invalid}\n components={{\n Input: InputComponent,\n Option: OptionComponent,\n DropdownIndicator: DropdownIndicatorComponent,\n Control: ControlComponent,\n }}\n // Does not affect the testId of the select, but is needed to pass it to sub-components\n aria-labelledby={getTriggerProps()['aria-labelledby']?.split(' ')[1]}\n data-testid={testId}\n filterOption={filterOption}\n formatOptionLabel={renderOptionLabel}\n inputValue={inputValue}\n instanceId={name}\n isClearable={clearable}\n isDisabled={disabled}\n isLoading={loading}\n name={name}\n // set menuPosition to fixed so that menu can be rendered\n // inside Card / Modal components, menuShouldBlockScroll\n // prevents container scroll when menu is open\n isMulti={multiSelect}\n menuPosition=\"fixed\"\n onInputChange={onInputChange}\n options={options}\n placeholder={placeholder}\n classNames={{\n control: () =>\n cn(classNames.control, {\n [classNames.control_focused]: isFocused && !invalid,\n }),\n clearIndicator: () => classNames.clearIndicator,\n dropdownIndicator: () => classNames.dropdownIndicator,\n groupHeading: () => classNames.groupHeading,\n indicatorsContainer: () => classNames.indicatorsContainer,\n indicatorSeparator: () => classNames.indicatorSeparator,\n loadingIndicator: () => classNames.loadingIndicator,\n loadingMessage: () => classNames.loadingMessage,\n input: () => classNames.input,\n menu: () => classNames.menu,\n menuList: () => classNames.menuList,\n menuPortal: () => classNames.menuPortal,\n multiValue: () => classNames.multiValue,\n multiValueLabel: () =>\n cn(classNames.multiValueLabel, `${getValueProps().className}`),\n multiValueRemove: () => classNames.multiValueRemove,\n noOptionsMessage: () => classNames.noOptionsMessage,\n option: ({\n isFocused: optionIsFocused,\n isSelected: optionIsSelected,\n }) =>\n cn(classNames.option, {\n [classNames.option_focused]: optionIsFocused,\n [classNames.option_selected]: optionIsSelected,\n }),\n placeholder: () => classNames.placeholder,\n singleValue: () =>\n cn(classNames.singleValue, `${getValueProps().className}`),\n valueContainer: () => classNames.valueContainer,\n }}\n onBlur={(_e) => {\n setIsFocused(false);\n return onBlur();\n }}\n onChange={(option) => {\n if (multiSelect) {\n onChange(\n (option as SelectOption[])?.map((_option) => _option.value),\n );\n } else {\n onChange((option as SelectOption)?.value);\n }\n }}\n onFocus={(_e) => {\n setIsFocused(true);\n }}\n ref={ref}\n // set complete option as value by current field value\n value={options.find((option) => option.value === value)}\n />\n {error ? (\n <div {...getHelperWrapperProps()}>\n {}\n <div {...getErrorMessageProps()}>\n <FieldValidationError error={error} testId={testId} />\n </div>\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default Select;\n","import Select from './Select';\n\nexport type { SelectProps } from './Select';\n\nexport { Select };\n\nexport default Select;\n"],"mappings":"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","names":["Select_default"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkH7EXCZKMcjs = require('./chunk-H7EXCZKM.cjs');
3
+ var _chunkMAABMY3Pcjs = require('./chunk-MAABMY3P.cjs');
4
4
 
5
5
  // src/SubmitButton/SubmitButton.tsx
6
6
  var _pixelutils = require('@fuf-stack/pixel-utils');
@@ -17,17 +17,17 @@ var SubmitButton = ({
17
17
  const {
18
18
  formState: { isSubmitting },
19
19
  triggerSubmit
20
- } = _chunkH7EXCZKMcjs.useFormContext.call(void 0, );
20
+ } = _chunkMAABMY3Pcjs.useFormContext.call(void 0, );
21
21
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22
22
  _pixels.Button,
23
23
  {
24
24
  className: _pixelutils.cn.call(void 0, className),
25
25
  color,
26
- testId: _pixelutils.slugify.call(void 0, testId, { replaceDots: true }),
27
26
  disabled: isSubmitting,
28
27
  loading: loading || isSubmitting,
29
28
  onClick: triggerSubmit,
30
29
  size,
30
+ testId: _pixelutils.slugify.call(void 0, testId, { replaceDots: true }),
31
31
  type: "submit",
32
32
  children
33
33
  }
@@ -42,4 +42,4 @@ var SubmitButton_default2 = SubmitButton_default;
42
42
 
43
43
 
44
44
  exports.SubmitButton_default = SubmitButton_default; exports.SubmitButton_default2 = SubmitButton_default2;
45
- //# sourceMappingURL=chunk-XKX22KIM.cjs.map
45
+ //# sourceMappingURL=chunk-CNSA2WD5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-XKX22KIM.cjs","../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACDA,oDAA4B;AAC5B,2CAAuB;AAoCnB,+CAAA;AAdJ,IAAM,aAAA,EAAe,CAAC;AAAA,EACpB,SAAA,EAAW,QAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,KAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA,EAAA,GAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,aAAa,CAAA;AAAA,IAC1B;AAAA,EACF,EAAA,EAAI,8CAAA,CAAe;AAEnB,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,KAAA;AAAA,MACA,MAAA,EAAQ,iCAAA,MAAQ,EAAQ,EAAE,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,MAC7C,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,QAAA,GAAW,YAAA;AAAA,MAIpB,OAAA,EAAS,aAAA;AAAA,MACT,IAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,qBAAA,EAAQ,YAAA;ADtBf;AACA;AE/BA,IAAOA,sBAAAA,EAAQ,oBAAA;AFiCf;AACA;AACE;AACA;AACF,2GAAC","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-XKX22KIM.cjs","sourcesContent":[null,"import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the button */\n color?: ButtonProps['color'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n testId={slugify(testId, { replaceDots: true })}\n disabled={isSubmitting}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-CNSA2WD5.cjs","../src/SubmitButton/SubmitButton.tsx","../src/SubmitButton/index.ts"],"names":["SubmitButton_default"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACDA,oDAA4B;AAC5B,2CAAuB;AAoCnB,+CAAA;AAdJ,IAAM,aAAA,EAAe,CAAC;AAAA,EACpB,SAAA,EAAW,QAAA;AAAA,EACX,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,KAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA,EAAA,GAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,EAAE,aAAa,CAAA;AAAA,IAC1B;AAAA,EACF,EAAA,EAAI,8CAAA,CAAe;AAEnB,EAAA,uBACE,6BAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,4BAAA,SAAY,CAAA;AAAA,MACvB,KAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,QAAA,GAAW,YAAA;AAAA,MAIpB,OAAA,EAAS,aAAA;AAAA,MACT,IAAA;AAAA,MACA,MAAA,EAAQ,iCAAA,MAAQ,EAAQ,EAAE,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,MAC7C,IAAA,EAAK,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAO,qBAAA,EAAQ,YAAA;ADtBf;AACA;AE/BA,IAAOA,sBAAAA,EAAQ,oBAAA;AFiCf;AACA;AACE;AACA;AACF,2GAAC","file":"/home/runner/work/pixels/pixels/packages/uniform/dist/chunk-CNSA2WD5.cjs","sourcesContent":[null,"import type { ButtonProps } from '@fuf-stack/pixels';\nimport type { ReactNode } from 'react';\n\nimport { cn, slugify } from '@fuf-stack/pixel-utils';\nimport { Button } from '@fuf-stack/pixels';\n\nimport { useFormContext } from '../hooks';\n\nexport interface SubmitButtonProps {\n /** child components */\n children?: ReactNode;\n /** CSS class name */\n className?: string;\n /** color of the button */\n color?: ButtonProps['color'];\n /** If set loading animation is shown */\n loading?: boolean;\n /** size of the button */\n size?: ButtonProps['size'];\n /** HTML data-testid attribute used in e2e tests */\n testId?: string;\n}\n\n/**\n * From SubmitButton\n */\nconst SubmitButton = ({\n children = 'Submit',\n className = undefined,\n color = 'success',\n loading = false,\n size = 'md',\n testId = 'form_submit_button',\n}: SubmitButtonProps) => {\n const {\n formState: { isSubmitting },\n triggerSubmit,\n } = useFormContext();\n\n return (\n <Button\n className={cn(className)}\n color={color}\n disabled={isSubmitting}\n loading={loading || isSubmitting}\n // @ts-expect-error we use form context triggerSubmit\n // here so that submit button also works in special\n // scenarios (e.g. when used in modal)\n onClick={triggerSubmit}\n size={size}\n testId={slugify(testId, { replaceDots: true })}\n type=\"submit\"\n >\n {children}\n </Button>\n );\n};\n\nexport default SubmitButton;\n","import SubmitButton from './SubmitButton';\n\nexport type { SubmitButtonProps } from './SubmitButton';\n\nexport { SubmitButton };\n\nexport default SubmitButton;\n"]}
@@ -16,10 +16,12 @@ var FieldValidationError = ({
16
16
  "aria-label": `Validation errors of field ${testId}`,
17
17
  className,
18
18
  "data-testid": slugify(`${testId}_error`),
19
- children: errors.map(({ message }, i) => (
20
- // eslint-disable-next-line react/no-array-index-key
21
- /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("div", { children: message }) }, `error_${i}`)
22
- ))
19
+ children: errors.map(({ message }, i) => {
20
+ return (
21
+ // eslint-disable-next-line react/no-array-index-key
22
+ /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("div", { children: message }) }, `error_${i}`)
23
+ );
24
+ })
23
25
  }
24
26
  );
25
27
  };
@@ -32,4 +34,4 @@ export {
32
34
  FieldValidationError_default,
33
35
  FieldValidationError_default2
34
36
  };
35
- //# sourceMappingURL=chunk-UTFZRBBS.js.map
37
+ //# sourceMappingURL=chunk-CQWA2DFV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/partials/FieldValidationError/FieldValidationError.tsx","../src/partials/FieldValidationError/index.ts"],"sourcesContent":["import type { FieldError } from 'react-hook-form';\n\nimport { slugify } from '@fuf-stack/pixel-utils';\n\nexport interface FieldValidationErrorProps {\n /** CSS class name */\n className?: string;\n /** Field errors */\n error: FieldError | FieldError[];\n /** HTML data-testid attribute used in e2e tests */\n testId: string;\n}\n\n/**\n * Renders a validation error of a field\n */\nconst FieldValidationError = ({\n className = undefined,\n error,\n testId,\n}: FieldValidationErrorProps) => {\n // render nothing when no errors\n if (!error || (Array.isArray(error) && !error.length)) {\n return null;\n }\n\n // get errors as array\n const errors: FieldError[] = Array.isArray(error) ? error : [error];\n\n return (\n <ul\n aria-label={`Validation errors of field ${testId}`}\n className={className}\n data-testid={slugify(`${testId}_error`)}\n >\n {errors.map(({ message }, i) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <li key={`error_${i}`}>\n <div>{message}</div>\n </li>\n );\n })}\n </ul>\n );\n};\n\nexport default FieldValidationError;\n","import FieldValidationError from './FieldValidationError';\n\nexport type { FieldValidationErrorProps } from './FieldValidationError';\n\nexport { FieldValidationError };\n\nexport default FieldValidationError;\n"],"mappings":";AAEA,SAAS,eAAe;AAqCZ;AAvBZ,IAAM,uBAAuB,CAAC;AAAA,EAC5B,YAAY;AAAA,EACZ;AAAA,EACA;AACF,MAAiC;AAE/B,MAAI,CAAC,SAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAS;AACrD,WAAO;AAAA,EACT;AAGA,QAAM,SAAuB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAElE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,8BAA8B,MAAM;AAAA,MAChD;AAAA,MACA,eAAa,QAAQ,GAAG,MAAM,QAAQ;AAAA,MAErC,iBAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM;AAC9B;AAAA;AAAA,UAEE,oBAAC,QACC,8BAAC,SAAK,mBAAQ,KADP,SAAS,CAAC,EAEnB;AAAA;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,+BAAQ;;;ACzCf,IAAOA,gCAAQ;","names":["FieldValidationError_default"]}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  FieldCopyTestIdButton_default
3
- } from "./chunk-BQGN3JTU.js";
3
+ } from "./chunk-NTDKZW4E.js";
4
4
  import {
5
5
  FieldValidationError_default
6
- } from "./chunk-UTFZRBBS.js";
6
+ } from "./chunk-CQWA2DFV.js";
7
7
  import {
8
8
  useController,
9
9
  useFormContext
10
- } from "./chunk-WHW6WMII.js";
10
+ } from "./chunk-2Q3ZW3QG.js";
11
11
  import {
12
12
  __objRest,
13
13
  __spreadProps,
@@ -56,8 +56,8 @@ var RadioBox = (_a) => {
56
56
  __spreadProps(__spreadValues({}, getLabelWrapperProps()), {
57
57
  className: cn(getLabelWrapperProps().className, "grow"),
58
58
  children: [
59
- children && /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({}, getLabelProps()), { children })),
60
- description && /* @__PURE__ */ jsx("span", { className: "text-small text-foreground opacity-70", children: description })
59
+ children ? /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({}, getLabelProps()), { children })) : null,
60
+ description ? /* @__PURE__ */ jsx("span", { className: "text-small text-foreground opacity-70", children: description }) : null
61
61
  ]
62
62
  })
63
63
  )
@@ -114,23 +114,23 @@ var RadioBoxes = ({
114
114
  HeroRadioGroup,
115
115
  {
116
116
  classNames,
117
+ ref,
117
118
  "data-invalid": invalid,
118
119
  "data-required": required,
119
120
  "data-testid": testId,
120
121
  defaultValue: getValues()[name],
121
- errorMessage: error && /* @__PURE__ */ jsx2(FieldValidationError_default, { error, testId }),
122
122
  isDisabled,
123
123
  isInvalid: invalid,
124
124
  isRequired: required,
125
+ name,
126
+ onBlur,
127
+ orientation: inline ? "horizontal" : "vertical",
128
+ errorMessage: error && /* @__PURE__ */ jsx2(FieldValidationError_default, { error, testId }),
125
129
  label: showLabel && // eslint-disable-next-line jsx-a11y/label-has-associated-control
126
130
  /* @__PURE__ */ jsxs2("label", { children: [
127
131
  label,
128
132
  showTestIdCopyButton && /* @__PURE__ */ jsx2(FieldCopyTestIdButton_default, { testId })
129
133
  ] }),
130
- name,
131
- orientation: inline ? "horizontal" : "vertical",
132
- onBlur,
133
- ref,
134
134
  children: options.map((option) => {
135
135
  if ("value" in option) {
136
136
  const optionTestId = slugify(
@@ -166,4 +166,4 @@ export {
166
166
  RadioBoxes_default,
167
167
  RadioBoxes_default2
168
168
  };
169
- //# sourceMappingURL=chunk-PTOFJKSN.js.map
169
+ //# sourceMappingURL=chunk-CVZSGNBJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/RadioBoxes/RadioBoxes.tsx","../src/RadioBoxes/RadioBox.tsx","../src/RadioBoxes/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } 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';\nimport { RadioBox } from './RadioBox';\n\nexport const radioBoxesVariants = 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-foreground group-data-[invalid=true]:text-danger text-sm subpixel-antialiased',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioBoxesVariants>;\ntype ClassName = TVClassName<typeof radioBoxesVariants>;\n\nexport interface RadioBoxesOption {\n /** Description of the value. Works with variant radioBox. */\n description?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: 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 RadioBoxesProps 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: RadioBoxesOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioBoxes component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioBoxes = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n}: RadioBoxesProps): 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 = radioBoxesVariants();\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 <RadioBox\n classNames={itemClassNames}\n data-testid={optionTestId}\n description={option.description}\n icon={option.icon}\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 </RadioBox>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioBoxes;\n","import type { RadioProps as HeroRadioProps } from '@heroui/radio';\nimport type { ReactNode } from 'react';\n\nimport { useRadio } from '@heroui/radio';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\ninterface RadioProps extends HeroRadioProps {\n /** icon for the option */\n icon?: ReactNode;\n}\n\nexport const RadioBox = ({ icon = undefined, ...props }: RadioProps) => {\n const {\n children,\n Component,\n description,\n getBaseProps,\n getControlProps,\n getInputProps,\n getLabelProps,\n getLabelWrapperProps,\n getWrapperProps,\n isDisabled,\n } = useRadio(props);\n\n return (\n <Component\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...getBaseProps()}\n className={cn(\n 'group border-default hover:bg-content2 data-[selected=true]:border-focus inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 p-4',\n {\n // disabled styles\n 'opacity-disabled pointer-events-none': isDisabled,\n },\n )}\n >\n <VisuallyHidden>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <input {...getInputProps()} />\n </VisuallyHidden>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <span {...getWrapperProps()}>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <span {...getControlProps()} />\n </span>\n {icon}\n <div\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...getLabelWrapperProps()}\n className={cn(getLabelWrapperProps().className, 'grow')}\n >\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n {children && <span {...getLabelProps()}>{children}</span>}\n {description && (\n <span className=\"text-small text-foreground opacity-70\">\n {description}\n </span>\n )}\n </div>\n </Component>\n );\n};\n\nexport default RadioBox;\n","import RadioBoxes from './RadioBoxes';\n\nexport type { RadioBoxesProps } from './RadioBoxes';\n\nexport { RadioBoxes };\n\nexport default RadioBoxes;\n"],"mappings":"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","names":["jsx","jsxs","RadioBoxes_default"]}
1
+ {"version":3,"sources":["../src/RadioBoxes/RadioBoxes.tsx","../src/RadioBoxes/RadioBox.tsx","../src/RadioBoxes/index.ts"],"sourcesContent":["import type { TVClassName, TVProps } from '@fuf-stack/pixel-utils';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport { RadioGroup as HeroRadioGroup } 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';\nimport { RadioBox } from './RadioBox';\n\nexport const radioBoxesVariants = 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-foreground group-data-[invalid=true]:text-danger text-sm subpixel-antialiased',\n wrapper: '',\n },\n});\n\ntype VariantProps = TVProps<typeof radioBoxesVariants>;\ntype ClassName = TVClassName<typeof radioBoxesVariants>;\n\nexport interface RadioBoxesOption {\n /** Description of the value. Works with variant radioBox. */\n description?: ReactNode;\n /** disables the option */\n disabled?: boolean;\n /** option label */\n label?: 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 RadioBoxesProps 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: RadioBoxesOption[];\n /** Id to grab element in internal tests. */\n testId?: string;\n}\n\n/**\n * RadioBoxes component based on [HeroUI RadioGroup](https://www.heroui.com//docs/components/radio-group)\n */\nconst RadioBoxes = ({\n className = undefined,\n disabled = false,\n inline = false,\n label = undefined,\n name,\n options,\n testId: _testId = undefined,\n}: RadioBoxesProps): 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 = radioBoxesVariants();\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 ref={ref}\n data-invalid={invalid}\n data-required={required}\n data-testid={testId}\n defaultValue={getValues()[name]}\n isDisabled={isDisabled}\n isInvalid={invalid}\n isRequired={required}\n name={name}\n onBlur={onBlur}\n orientation={inline ? 'horizontal' : 'vertical'}\n errorMessage={\n error && <FieldValidationError error={error} testId={testId} />\n }\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 >\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 <RadioBox\n key={option.value}\n classNames={itemClassNames}\n data-testid={optionTestId}\n description={option.description}\n icon={option.icon}\n isDisabled={isDisabled || option.disabled}\n onChange={onChange}\n value={option.value}\n >\n {option.label ? option.label : option.value}\n </RadioBox>\n );\n }\n return null;\n })}\n </HeroRadioGroup>\n );\n};\n\nexport default RadioBoxes;\n","import type { RadioProps as HeroRadioProps } from '@heroui/radio';\nimport type { ReactNode } from 'react';\n\nimport { useRadio } from '@heroui/radio';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\n\nimport { cn } from '@fuf-stack/pixel-utils';\n\ninterface RadioProps extends HeroRadioProps {\n /** icon for the option */\n icon?: ReactNode;\n}\n\nexport const RadioBox = ({ icon = undefined, ...props }: RadioProps) => {\n const {\n children,\n Component,\n description,\n getBaseProps,\n getControlProps,\n getInputProps,\n getLabelProps,\n getLabelWrapperProps,\n getWrapperProps,\n isDisabled,\n } = useRadio(props);\n\n return (\n <Component\n {...getBaseProps()}\n className={cn(\n 'group border-default hover:bg-content2 data-[selected=true]:border-focus inline-flex flex-auto cursor-pointer items-center justify-between gap-4 rounded-lg border-2 p-4',\n {\n // disabled styles\n 'opacity-disabled pointer-events-none': isDisabled,\n },\n )}\n >\n <VisuallyHidden>\n {}\n <input {...getInputProps()} />\n </VisuallyHidden>\n {}\n <span {...getWrapperProps()}>\n {}\n <span {...getControlProps()} />\n </span>\n {icon}\n <div\n {...getLabelWrapperProps()}\n className={cn(getLabelWrapperProps().className, 'grow')}\n >\n {}\n {children ? <span {...getLabelProps()}>{children}</span> : null}\n {description ? (\n <span className=\"text-small text-foreground opacity-70\">\n {description}\n </span>\n ) : null}\n </div>\n </Component>\n );\n};\n\nexport default RadioBox;\n","import RadioBoxes from './RadioBoxes';\n\nexport type { RadioBoxesProps } from './RadioBoxes';\n\nexport { RadioBoxes };\n\nexport default RadioBoxes;\n"],"mappings":"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","names":["jsx","jsxs","RadioBoxes_default"]}
@@ -3,18 +3,19 @@
3
3
  var _chunkTTD3KL6Ecjs = require('./chunk-TTD3KL6E.cjs');
4
4
 
5
5
 
6
- var _chunkPA2DQCBYcjs = require('./chunk-PA2DQCBY.cjs');
6
+ var _chunkOE5BOGGXcjs = require('./chunk-OE5BOGGX.cjs');
7
7
 
8
8
 
9
- var _chunkGNYQC5IJcjs = require('./chunk-GNYQC5IJ.cjs');
9
+ var _chunkY3AB4GV6cjs = require('./chunk-Y3AB4GV6.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
- var _chunkH7EXCZKMcjs = require('./chunk-H7EXCZKM.cjs');
14
+ var _chunkMAABMY3Pcjs = require('./chunk-MAABMY3P.cjs');
15
15
 
16
16
 
17
- var _chunkL4YPB7MUcjs = require('./chunk-L4YPB7MU.cjs');
17
+ var _chunkYGNY6CKUcjs = require('./chunk-YGNY6CKU.cjs');
18
+
18
19
 
19
20
 
20
21
 
@@ -118,9 +119,9 @@ var FieldArrayElement = ({
118
119
  testId = void 0
119
120
  }) => {
120
121
  var _a;
121
- const { getFieldState } = _chunkH7EXCZKMcjs.useFormContext.call(void 0, );
122
+ const { getFieldState } = _chunkMAABMY3Pcjs.useFormContext.call(void 0, );
122
123
  const { error, invalid } = getFieldState(arrayFieldName, void 0);
123
- const { getHelperWrapperProps, getErrorMessageProps } = _chunkH7EXCZKMcjs.useInput.call(void 0, {
124
+ const { getHelperWrapperProps, getErrorMessageProps } = _chunkMAABMY3Pcjs.useInput.call(void 0, {
124
125
  classNames: { helperWrapper: "block" },
125
126
  errorMessage: JSON.stringify(error),
126
127
  isInvalid: invalid,
@@ -136,18 +137,18 @@ var FieldArrayElement = ({
136
137
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
137
138
  "li",
138
139
  {
139
- className: _pixelutils.cn.call(void 0, className.listItem),
140
140
  ref: setNodeRef,
141
+ className: _pixelutils.cn.call(void 0, className.listItem),
141
142
  style: sortingStyle,
142
143
  children: [
143
- sortable && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
144
+ sortable ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
144
145
  SortDragHandle_default,
145
146
  {
146
147
  className: className.sortDragHandle,
147
148
  id,
148
149
  testId: `${testId}_sort_drag_handle`
149
150
  }
150
- ),
151
+ ) : null,
151
152
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
152
153
  "div",
153
154
  {
@@ -160,23 +161,27 @@ var FieldArrayElement = ({
160
161
  ElementRemoveButton_default,
161
162
  {
162
163
  className: className.removeButton,
163
- onClick: () => methods.remove(),
164
- testId: `${testId}_remove_button`
164
+ testId: `${testId}_remove_button`,
165
+ onClick: () => {
166
+ methods.remove();
167
+ }
165
168
  }
166
169
  ),
167
- insertAfter && index !== fields.length - 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
170
+ insertAfter && index !== fields.length - 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
168
171
  ElementInsertAfterButton_default,
169
172
  {
170
173
  className: className.insertAfterButton,
171
- onClick: () => methods.insert(),
172
- testId: `${testId}_insert_after_button`
174
+ testId: `${testId}_insert_after_button`,
175
+ onClick: () => {
176
+ methods.insert();
177
+ }
173
178
  }
174
- )
179
+ ) : null
175
180
  ]
176
181
  }
177
182
  ),
178
- error && typeof error[index] !== "undefined" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
179
- _chunkGNYQC5IJcjs.FieldValidationError_default,
183
+ typeof (error == null ? void 0 : error[index]) !== "undefined" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
184
+ _chunkY3AB4GV6cjs.FieldValidationError_default,
180
185
  {
181
186
  error: (_a = error[Number(index)]) == null ? void 0 : _a._errors,
182
187
  testId
@@ -220,8 +225,12 @@ var SortContext = ({
220
225
  const handleDragEnd = (event) => {
221
226
  const { active, over } = event;
222
227
  if (active.id !== (over == null ? void 0 : over.id)) {
223
- const oldIndex = fields.findIndex((field) => field.id === active.id);
224
- const newIndex = fields.findIndex((field) => field.id === (over == null ? void 0 : over.id));
228
+ const oldIndex = fields.findIndex((field) => {
229
+ return field.id === active.id;
230
+ });
231
+ const newIndex = fields.findIndex((field) => {
232
+ return field.id === (over == null ? void 0 : over.id);
233
+ });
225
234
  move(oldIndex, newIndex);
226
235
  }
227
236
  };
@@ -235,8 +244,10 @@ var SortContext = ({
235
244
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
236
245
  _sortable.SortableContext,
237
246
  {
238
- items: fields.map((field) => field.id),
239
247
  strategy: _sortable.verticalListSortingStrategy,
248
+ items: fields.map((field) => {
249
+ return field.id;
250
+ }),
240
251
  children
241
252
  }
242
253
  )
@@ -282,13 +293,13 @@ var FieldArray = ({
282
293
  getFieldState,
283
294
  trigger
284
295
  // watch
285
- } = _chunkH7EXCZKMcjs.useFormContext.call(void 0, );
286
- const { fields, append, remove, insert, move } = _chunkH7EXCZKMcjs.useFieldArray.call(void 0, {
296
+ } = _chunkMAABMY3Pcjs.useFormContext.call(void 0, );
297
+ const { fields, append, remove, insert, move } = _chunkMAABMY3Pcjs.useFieldArray.call(void 0, {
287
298
  control,
288
299
  name
289
300
  });
290
301
  const { error, testId, invalid, required } = getFieldState(name, _testId);
291
- const { label, getLabelProps, getHelperWrapperProps, getErrorMessageProps } = _chunkH7EXCZKMcjs.useInput.call(void 0, {
302
+ const { label, getLabelProps, getHelperWrapperProps, getErrorMessageProps } = _chunkMAABMY3Pcjs.useInput.call(void 0, {
292
303
  isInvalid: invalid,
293
304
  isRequired: required,
294
305
  errorMessage: JSON.stringify(error),
@@ -297,51 +308,61 @@ var FieldArray = ({
297
308
  placeholder: " ",
298
309
  classNames: { helperWrapper: "block" }
299
310
  });
300
- const elementInitialValue = _chunkL4YPB7MUcjs.toNullishString.call(void 0, _elementInitialValue);
311
+ const elementInitialValue = _chunkYGNY6CKUcjs.toNullishString.call(void 0, _elementInitialValue);
301
312
  if (lastElementNotRemovable && fields.length === 0) {
302
313
  append(elementInitialValue);
303
314
  }
304
315
  const showTestIdCopyButton = debugMode === "debug-testids";
305
316
  const showLabel = label || showTestIdCopyButton;
306
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortContext_default, { sortable, move, fields, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
317
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortContext_default, { fields, move, sortable, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
307
318
  "ul",
308
319
  {
309
320
  className: className.list,
310
321
  "data-testid": testId,
311
- onBlur: () => trigger(`${name}`),
322
+ onBlur: () => _chunk555JRYCScjs.__async.call(void 0, null, null, function* () {
323
+ return trigger(name);
324
+ }),
312
325
  children: [
313
- showLabel && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
314
- label && // eslint-disable-next-line jsx-a11y/label-has-associated-control
315
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
316
- "label",
317
- _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getLabelProps()), {
318
- className: _pixelutils.cn.call(void 0, (_a = getLabelProps()) == null ? void 0 : _a.className, className.label),
319
- children: label
320
- })
321
- ),
322
- showTestIdCopyButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPA2DQCBYcjs.FieldCopyTestIdButton_default, { testId })
323
- ] }),
326
+ showLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
327
+ label ? (
328
+ // eslint-disable-next-line jsx-a11y/label-has-associated-control
329
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
330
+ "label",
331
+ _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getLabelProps()), {
332
+ className: _pixelutils.cn.call(void 0, (_a = getLabelProps()) == null ? void 0 : _a.className, className.label),
333
+ children: label
334
+ })
335
+ )
336
+ ) : null,
337
+ showTestIdCopyButton ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOE5BOGGXcjs.FieldCopyTestIdButton_default, { testId }) : null
338
+ ] }) : null,
324
339
  fields.map((field, index) => {
325
340
  const elementName = `${name}.${index}`;
326
341
  const elementTestId = `${testId}_${index}`;
327
342
  const elementMethods = {
328
- append: () => append(elementInitialValue),
343
+ append: () => {
344
+ append(elementInitialValue);
345
+ },
329
346
  duplicate: () => {
330
347
  const values = getValues(name);
331
348
  insert(index + 1, values[index]);
332
349
  },
333
- insert: () => insert(index + 1, elementInitialValue),
334
- remove: () => remove(index)
350
+ insert: () => {
351
+ insert(index + 1, elementInitialValue);
352
+ },
353
+ remove: () => {
354
+ remove(index);
355
+ }
335
356
  };
336
357
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
337
358
  FieldArrayElement_default,
338
359
  {
339
360
  arrayFieldName: name,
340
361
  className,
362
+ duplicate,
341
363
  fields,
342
364
  id: field.id,
343
365
  index,
344
- duplicate,
345
366
  insertAfter,
346
367
  lastNotDeletable: lastElementNotRemovable,
347
368
  methods: elementMethods,
@@ -361,15 +382,17 @@ var FieldArray = ({
361
382
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
362
383
  _pixels.Button,
363
384
  {
364
- className: className.appendButton,
365
385
  disableAnimation: true,
366
- onClick: () => append(elementInitialValue),
386
+ className: className.appendButton,
367
387
  size: "sm",
368
388
  testId: `${testId}_append_button`,
389
+ onClick: () => {
390
+ append(elementInitialValue);
391
+ },
369
392
  children: appendButtonText
370
393
  }
371
394
  ),
372
- (error == null ? void 0 : error._errors) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGNYQC5IJcjs.FieldValidationError_default, { error: error == null ? void 0 : error._errors, testId }) })) }))
395
+ (error == null ? void 0 : error._errors) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getHelperWrapperProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", _chunk555JRYCScjs.__spreadProps.call(void 0, _chunk555JRYCScjs.__spreadValues.call(void 0, {}, getErrorMessageProps()), { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3AB4GV6cjs.FieldValidationError_default, { error: error == null ? void 0 : error._errors, testId }) })) })) : null
373
396
  ]
374
397
  }
375
398
  ) });
@@ -383,4 +406,4 @@ var FieldArray_default2 = FieldArray_default;
383
406
 
384
407
 
385
408
  exports.FieldArray_default = FieldArray_default; exports.FieldArray_default2 = FieldArray_default2;
386
- //# sourceMappingURL=chunk-K2IHP7JJ.cjs.map
409
+ //# sourceMappingURL=chunk-EO7TACW2.cjs.map