@eifi1/ui-kit 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/dist/chart.d.ts +10 -8
  2. package/dist/components/account-chips.d.ts +10 -3
  3. package/dist/components/account-chips.js +5 -2
  4. package/dist/components/account-chips.js.map +1 -1
  5. package/dist/components/account-settings.d.ts +33 -2
  6. package/dist/components/account-settings.js +43 -21
  7. package/dist/components/account-settings.js.map +1 -1
  8. package/dist/components/amount-input.d.ts +27 -8
  9. package/dist/components/amount-input.js +15 -28
  10. package/dist/components/amount-input.js.map +1 -1
  11. package/dist/components/autocomplete.d.ts +8 -0
  12. package/dist/components/autocomplete.js +9 -4
  13. package/dist/components/autocomplete.js.map +1 -1
  14. package/dist/components/button-group.d.ts +10 -8
  15. package/dist/components/calculator.d.ts +10 -8
  16. package/dist/components/checkbox-group.d.ts +104 -0
  17. package/dist/components/checkbox-group.js +111 -0
  18. package/dist/components/checkbox-group.js.map +1 -0
  19. package/dist/components/checkbox.d.ts +19 -0
  20. package/dist/components/checkbox.js +30 -7
  21. package/dist/components/checkbox.js.map +1 -1
  22. package/dist/components/chip.d.ts +18 -0
  23. package/dist/components/chip.js +47 -10
  24. package/dist/components/chip.js.map +1 -1
  25. package/dist/components/combobox.d.ts +13 -2
  26. package/dist/components/combobox.js +17 -8
  27. package/dist/components/combobox.js.map +1 -1
  28. package/dist/components/confirm-dialog.d.ts +66 -161
  29. package/dist/components/copy-button.d.ts +10 -8
  30. package/dist/components/country-select.d.ts +124 -0
  31. package/dist/components/country-select.js +237 -0
  32. package/dist/components/country-select.js.map +1 -0
  33. package/dist/components/currency-select.d.ts +17 -1
  34. package/dist/components/currency-select.js +56 -23
  35. package/dist/components/currency-select.js.map +1 -1
  36. package/dist/components/danger-confirm.d.ts +66 -166
  37. package/dist/components/danger-confirm.js +133 -49
  38. package/dist/components/danger-confirm.js.map +1 -1
  39. package/dist/components/data-table-cells.d.ts +1 -2
  40. package/dist/components/data-table-filter-popover.d.ts +1 -2
  41. package/dist/components/data-table-filters.d.ts +1 -2
  42. package/dist/components/data-table-labels.d.ts +4 -97
  43. package/dist/components/data-table-labels.js +9 -1
  44. package/dist/components/data-table-labels.js.map +1 -1
  45. package/dist/components/data-table-pagination.d.ts +3 -1
  46. package/dist/components/data-table.d.ts +1 -2
  47. package/dist/components/data-table.js +98 -3
  48. package/dist/components/data-table.js.map +1 -1
  49. package/dist/components/date-picker.d.ts +25 -5
  50. package/dist/components/date-picker.js +110 -59
  51. package/dist/components/date-picker.js.map +1 -1
  52. package/dist/components/entity-combobox.d.ts +8 -1
  53. package/dist/components/entity-combobox.js +9 -4
  54. package/dist/components/entity-combobox.js.map +1 -1
  55. package/dist/components/facing-pair.d.ts +10 -8
  56. package/dist/components/field-anatomy.d.ts +95 -0
  57. package/dist/components/field-anatomy.js +84 -0
  58. package/dist/components/field-anatomy.js.map +1 -0
  59. package/dist/components/field-parts.d.ts +114 -0
  60. package/dist/components/field-parts.js +72 -0
  61. package/dist/components/field-parts.js.map +1 -0
  62. package/dist/components/file-button.d.ts +10 -8
  63. package/dist/components/file-button.js +13 -3
  64. package/dist/components/file-button.js.map +1 -1
  65. package/dist/components/file-dropzone.d.ts +32 -9
  66. package/dist/components/file-dropzone.js +57 -34
  67. package/dist/components/file-dropzone.js.map +1 -1
  68. package/dist/components/form-actions.d.ts +10 -8
  69. package/dist/components/form-actions.js +61 -3
  70. package/dist/components/form-actions.js.map +1 -1
  71. package/dist/components/iban-input.d.ts +66 -0
  72. package/dist/components/iban-input.js +125 -0
  73. package/dist/components/iban-input.js.map +1 -0
  74. package/dist/components/icon-picker.d.ts +12 -2
  75. package/dist/components/icon-picker.js +9 -2
  76. package/dist/components/icon-picker.js.map +1 -1
  77. package/dist/components/inline-edit-field.d.ts +167 -0
  78. package/dist/components/inline-edit-field.js +293 -0
  79. package/dist/components/inline-edit-field.js.map +1 -0
  80. package/dist/components/language-select.d.ts +127 -0
  81. package/dist/components/language-select.js +18 -0
  82. package/dist/components/language-select.js.map +1 -0
  83. package/dist/components/line-items.d.ts +25 -3
  84. package/dist/components/line-items.js +55 -46
  85. package/dist/components/line-items.js.map +1 -1
  86. package/dist/components/list.d.ts +25 -0
  87. package/dist/components/list.js +16 -5
  88. package/dist/components/list.js.map +1 -1
  89. package/dist/components/money-field.d.ts +20 -8
  90. package/dist/components/money-field.js.map +1 -1
  91. package/dist/components/month-picker.d.ts +52 -4
  92. package/dist/components/month-picker.js +290 -86
  93. package/dist/components/month-picker.js.map +1 -1
  94. package/dist/components/multi-select.d.ts +8 -1
  95. package/dist/components/multi-select.js +9 -4
  96. package/dist/components/multi-select.js.map +1 -1
  97. package/dist/components/number-field.d.ts +25 -13
  98. package/dist/components/number-field.js +6 -20
  99. package/dist/components/number-field.js.map +1 -1
  100. package/dist/components/number-input.d.ts +70 -13
  101. package/dist/components/number-input.js +90 -38
  102. package/dist/components/number-input.js.map +1 -1
  103. package/dist/components/numpad-sheet.d.ts +10 -8
  104. package/dist/components/one-time-code-input.d.ts +100 -0
  105. package/dist/components/one-time-code-input.js +137 -0
  106. package/dist/components/one-time-code-input.js.map +1 -0
  107. package/dist/components/phone-input.d.ts +66 -0
  108. package/dist/components/phone-input.js +171 -0
  109. package/dist/components/phone-input.js.map +1 -0
  110. package/dist/components/series-chart.d.ts +10 -8
  111. package/dist/components/settings-fields.d.ts +10 -8
  112. package/dist/components/share-card.d.ts +8 -6
  113. package/dist/components/sign-chip.d.ts +66 -0
  114. package/dist/components/sign-chip.js +39 -0
  115. package/dist/components/sign-chip.js.map +1 -0
  116. package/dist/components/swatch-picker.d.ts +27 -2
  117. package/dist/components/swatch-picker.js +73 -31
  118. package/dist/components/swatch-picker.js.map +1 -1
  119. package/dist/components/switch.d.ts +19 -0
  120. package/dist/components/switch.js +24 -6
  121. package/dist/components/switch.js.map +1 -1
  122. package/dist/components/text-link.d.ts +10 -8
  123. package/dist/components/tile-radio.d.ts +68 -13
  124. package/dist/components/tile-radio.js +3 -3
  125. package/dist/components/tile-radio.js.map +1 -1
  126. package/dist/components/time-input.d.ts +15 -9
  127. package/dist/components/time-input.js.map +1 -1
  128. package/dist/components/toggle-group.d.ts +47 -1
  129. package/dist/components/toggle-group.js +110 -69
  130. package/dist/components/toggle-group.js.map +1 -1
  131. package/dist/components/ui.d.ts +10 -8
  132. package/dist/components/ui.js +280 -78
  133. package/dist/components/ui.js.map +1 -1
  134. package/dist/components/use-table-state.d.ts +1 -2
  135. package/dist/{data-table-3mi2R3so.d.ts → data-table-labels-B7OdnM0S.d.ts} +140 -3
  136. package/dist/data-table.d.ts +1 -2
  137. package/dist/data-table.js +2 -1
  138. package/dist/data-table.js.map +1 -1
  139. package/dist/feedback/feedback-attachment.d.ts +1 -1
  140. package/dist/feedback/feedback-attachment.js +210 -3
  141. package/dist/feedback/feedback-attachment.js.map +1 -1
  142. package/dist/feedback/feedback-dialog.d.ts +1 -1
  143. package/dist/feedback/feedback-dialog.js.map +1 -1
  144. package/dist/feedback/feedback-inbox.d.ts +1 -1
  145. package/dist/feedback/feedback-thread.d.ts +37 -3
  146. package/dist/feedback/feedback-thread.js +38 -9
  147. package/dist/feedback/feedback-thread.js.map +1 -1
  148. package/dist/{feedback-attachment-WFiXJ8We.d.ts → feedback-attachment-NhUm7Zga.d.ts} +70 -5
  149. package/dist/feedback.d.ts +2 -2
  150. package/dist/hooks/use-file-drop.d.ts +10 -8
  151. package/dist/i18n/defaults.d.ts +10 -8
  152. package/dist/i18n/defaults.js +17 -2
  153. package/dist/i18n/defaults.js.map +1 -1
  154. package/dist/i18n/german.d.ts +10 -8
  155. package/dist/i18n/german.js +50 -5
  156. package/dist/i18n/german.js.map +1 -1
  157. package/dist/i18n/kit-labels.d.ts +10 -8
  158. package/dist/i18n/kit-labels.js +8 -2
  159. package/dist/i18n/kit-labels.js.map +1 -1
  160. package/dist/i18n/languages.d.ts +10 -8
  161. package/dist/i18n/locales/de-CH.d.ts +10 -8
  162. package/dist/i18n/locales/en.d.ts +10 -8
  163. package/dist/i18n/locales/en.js +9 -0
  164. package/dist/i18n/locales/en.js.map +1 -1
  165. package/dist/i18n/locales/es.d.ts +10 -8
  166. package/dist/i18n/locales/es.js +48 -5
  167. package/dist/i18n/locales/es.js.map +1 -1
  168. package/dist/i18n/locales/fr.d.ts +10 -8
  169. package/dist/i18n/locales/fr.js +48 -5
  170. package/dist/i18n/locales/fr.js.map +1 -1
  171. package/dist/i18n/locales/hu.d.ts +10 -8
  172. package/dist/i18n/locales/hu.js +49 -5
  173. package/dist/i18n/locales/hu.js.map +1 -1
  174. package/dist/i18n/locales/it.d.ts +10 -8
  175. package/dist/i18n/locales/it.js +49 -5
  176. package/dist/i18n/locales/it.js.map +1 -1
  177. package/dist/i18n/locales/zh.d.ts +10 -8
  178. package/dist/i18n/locales/zh.js +48 -5
  179. package/dist/i18n/locales/zh.js.map +1 -1
  180. package/dist/i18n/review.d.ts +10 -8
  181. package/dist/i18n/review.js +8 -1
  182. package/dist/i18n/review.js.map +1 -1
  183. package/dist/index.d.ts +17 -10
  184. package/dist/index.js +57 -2
  185. package/dist/index.js.map +1 -1
  186. package/dist/{kit-labels-D1J2_jyD.d.ts → kit-labels-R8mIAc9N.d.ts} +811 -8
  187. package/dist/lib/countries.d.ts +43 -0
  188. package/dist/lib/countries.js +39 -0
  189. package/dist/lib/countries.js.map +1 -0
  190. package/dist/lib/decimal-marks.d.ts +46 -0
  191. package/dist/lib/decimal-marks.js +40 -0
  192. package/dist/lib/decimal-marks.js.map +1 -0
  193. package/dist/lib/iban.d.ts +98 -0
  194. package/dist/lib/iban.js +154 -0
  195. package/dist/lib/iban.js.map +1 -0
  196. package/dist/lib/isin.d.ts +30 -0
  197. package/dist/lib/isin.js +36 -0
  198. package/dist/lib/isin.js.map +1 -0
  199. package/dist/lib/phone.d.ts +69 -0
  200. package/dist/lib/phone.js +121 -0
  201. package/dist/lib/phone.js.map +1 -0
  202. package/dist/rhf/fields.d.ts +148 -11
  203. package/dist/rhf/fields.js +332 -3
  204. package/dist/rhf/fields.js.map +1 -1
  205. package/dist/rhf/form.d.ts +10 -8
  206. package/dist/rhf.d.ts +13 -9
  207. package/dist/rhf.js.map +1 -1
  208. package/dist/shell/app-shell.d.ts +10 -8
  209. package/dist/shell/top-bar-brand.d.ts +10 -8
  210. package/dist/shell.d.ts +10 -8
  211. package/dist/tour/tour.js +20 -24
  212. package/dist/tour/tour.js.map +1 -1
  213. package/dist/wizard/stepper-nav.d.ts +10 -8
  214. package/dist/wizard.d.ts +10 -8
  215. package/package.json +1 -1
  216. package/src/components/account-chips.tsx +17 -3
  217. package/src/components/account-settings.tsx +92 -26
  218. package/src/components/amount-input.tsx +49 -56
  219. package/src/components/autocomplete.tsx +133 -110
  220. package/src/components/checkbox-group.tsx +229 -0
  221. package/src/components/checkbox.tsx +72 -8
  222. package/src/components/chip.tsx +80 -10
  223. package/src/components/combobox.tsx +292 -253
  224. package/src/components/country-select.tsx +443 -0
  225. package/src/components/currency-select.tsx +109 -33
  226. package/src/components/danger-confirm.tsx +345 -77
  227. package/src/components/data-table-labels.ts +16 -1
  228. package/src/components/data-table.tsx +175 -6
  229. package/src/components/date-picker.tsx +173 -62
  230. package/src/components/entity-combobox.tsx +107 -87
  231. package/src/components/field-anatomy.tsx +190 -0
  232. package/src/components/field-parts.tsx +184 -0
  233. package/src/components/file-button.tsx +36 -3
  234. package/src/components/file-dropzone.tsx +106 -38
  235. package/src/components/form-actions.tsx +115 -2
  236. package/src/components/iban-input.tsx +231 -0
  237. package/src/components/icon-picker.tsx +26 -4
  238. package/src/components/inline-edit-field.tsx +533 -0
  239. package/src/components/language-select.tsx +78 -0
  240. package/src/components/line-items.tsx +35 -2
  241. package/src/components/list.tsx +55 -6
  242. package/src/components/money-field.tsx +10 -0
  243. package/src/components/month-picker.tsx +399 -63
  244. package/src/components/multi-select.tsx +80 -58
  245. package/src/components/number-field.tsx +28 -46
  246. package/src/components/number-input.tsx +210 -43
  247. package/src/components/one-time-code-input.tsx +288 -0
  248. package/src/components/phone-input.tsx +299 -0
  249. package/src/components/sign-chip.tsx +103 -0
  250. package/src/components/swatch-picker.tsx +118 -30
  251. package/src/components/switch.tsx +58 -7
  252. package/src/components/tile-radio.tsx +71 -16
  253. package/src/components/time-input.tsx +8 -1
  254. package/src/components/toggle-group.tsx +206 -73
  255. package/src/components/ui.tsx +472 -105
  256. package/src/data-table.ts +2 -1
  257. package/src/feedback/feedback-attachment.tsx +313 -9
  258. package/src/feedback/feedback-dialog.tsx +2 -0
  259. package/src/feedback/feedback-thread.tsx +66 -5
  260. package/src/i18n/defaults.ts +16 -1
  261. package/src/i18n/german.ts +47 -0
  262. package/src/i18n/kit-labels.tsx +78 -2
  263. package/src/i18n/locales/en.ts +10 -0
  264. package/src/i18n/locales/es.ts +46 -0
  265. package/src/i18n/locales/fr.ts +45 -0
  266. package/src/i18n/locales/hu.ts +46 -0
  267. package/src/i18n/locales/it.ts +47 -0
  268. package/src/i18n/locales/zh.ts +44 -0
  269. package/src/i18n/review.ts +7 -0
  270. package/src/index.ts +53 -3
  271. package/src/lib/countries.ts +91 -0
  272. package/src/lib/decimal-marks.ts +99 -0
  273. package/src/lib/iban.ts +171 -0
  274. package/src/lib/isin.ts +62 -0
  275. package/src/lib/phone.ts +211 -0
  276. package/src/rhf/fields.tsx +606 -9
  277. package/src/rhf.ts +2 -1
  278. package/src/tour/tour.tsx +66 -28
@@ -1,11 +1,23 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useLayoutEffect, useRef, useState } from "react";
4
+ import {
5
+ useController
6
+ } from "react-hook-form";
4
7
  import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField } from "./form.js";
5
8
  import { Input, Select, Textarea } from "../components/ui.js";
6
9
  import { NumberField } from "../components/number-field.js";
7
10
  import { AmountInput } from "../components/amount-input.js";
8
- import { DatePicker } from "../components/date-picker.js";
11
+ import {
12
+ DatePicker,
13
+ DateRangePicker
14
+ } from "../components/date-picker.js";
15
+ import { TimeInput } from "../components/time-input.js";
16
+ import { IbanInput } from "../components/iban-input.js";
17
+ import { PhoneInput } from "../components/phone-input.js";
18
+ import {
19
+ ToggleGroup
20
+ } from "../components/toggle-group.js";
9
21
  import { Checkbox } from "../components/checkbox.js";
10
22
  import { EntityCombobox } from "../components/entity-combobox.js";
11
23
  import { Combobox } from "../components/combobox.js";
@@ -394,6 +406,231 @@ function RhfDateField({
394
406
  }
395
407
  );
396
408
  }
409
+ function RhfDateRangePicker({
410
+ fromName,
411
+ toName,
412
+ control,
413
+ fromRules,
414
+ toRules,
415
+ label,
416
+ hint,
417
+ required,
418
+ disabled,
419
+ excludeWhenDisabled,
420
+ className,
421
+ inputClassName,
422
+ emptyValue = "",
423
+ ...pickerProps
424
+ }) {
425
+ const rhfDisabled = excludeWhenDisabled ? disabled : void 0;
426
+ const to = useController({
427
+ name: toName,
428
+ control,
429
+ rules: toRules,
430
+ disabled: rhfDisabled
431
+ });
432
+ return /* @__PURE__ */ jsx(
433
+ FormField,
434
+ {
435
+ control,
436
+ name: fromName,
437
+ rules: fromRules,
438
+ disabled: rhfDisabled,
439
+ render: ({ field, fieldState }) => /* @__PURE__ */ jsx(FormItem, { className, children: /* @__PURE__ */ jsx(
440
+ RangeBody,
441
+ {
442
+ from: field,
443
+ fromState: fieldState,
444
+ to: to.field,
445
+ toState: to.fieldState,
446
+ label,
447
+ hint,
448
+ required,
449
+ disabled: Boolean(disabled),
450
+ emptyValue,
451
+ inputClassName,
452
+ pickerProps
453
+ }
454
+ ) })
455
+ }
456
+ );
457
+ }
458
+ function RangeBody({
459
+ from,
460
+ fromState,
461
+ to,
462
+ toState,
463
+ label,
464
+ hint,
465
+ required,
466
+ disabled,
467
+ emptyValue,
468
+ inputClassName,
469
+ pickerProps
470
+ }) {
471
+ const { id, formItemId, formMessageId, describedBy } = useFormField();
472
+ useFocusHandle(from.ref, () => document.getElementById(formItemId));
473
+ useFocusHandle(to.ref, () => document.getElementById(formItemId));
474
+ const invalid = fromState.invalid || toState.invalid;
475
+ const messages = [fromState.error?.message, toState.error?.message].filter(
476
+ (m, i, all) => typeof m === "string" && m !== "" && all.indexOf(m) === i
477
+ );
478
+ const messageIds = messages.map((_, i) => `${formMessageId}-${i}`);
479
+ const fromValue = from.value;
480
+ const toValue = to.value;
481
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
482
+ hasContent(label) && // FormLabel colours from the START's error alone (its context is that field);
483
+ // the pair's state says it here.
484
+ /* @__PURE__ */ jsx(FormLabel, { id: `${id}-label`, required, "data-error": invalid || void 0, children: label }),
485
+ /* @__PURE__ */ jsx(
486
+ DateRangePicker,
487
+ {
488
+ ...pickerProps,
489
+ id: formItemId,
490
+ "aria-describedby": [pickerProps["aria-describedby"], describedBy, ...messageIds].filter(Boolean).join(" ") || void 0,
491
+ "aria-invalid": invalid || void 0,
492
+ "aria-required": required || void 0,
493
+ from: typeof fromValue === "string" ? fromValue : "",
494
+ to: typeof toValue === "string" ? toValue : "",
495
+ onChange: (f, t) => {
496
+ from.onChange(f === "" ? emptyValue : f);
497
+ to.onChange(t === "" ? emptyValue : t);
498
+ if (t !== "" || f === "") {
499
+ from.onBlur();
500
+ to.onBlur();
501
+ }
502
+ },
503
+ disabled: disabled || from.disabled || to.disabled,
504
+ invalid,
505
+ className: inputClassName ?? "w-full"
506
+ }
507
+ ),
508
+ hasContent(hint) && /* @__PURE__ */ jsx(FormDescription, { children: hint }),
509
+ messages.map((message, i) => (
510
+ // FormMessage's look and its rule: no `role="alert"` — read when focus reaches
511
+ // the trigger, which names these in its description.
512
+ /* @__PURE__ */ jsx(
513
+ "p",
514
+ {
515
+ id: messageIds[i],
516
+ "data-slot": "form-message",
517
+ className: "text-[11px] leading-tight text-[var(--danger)]",
518
+ children: message
519
+ },
520
+ message
521
+ )
522
+ ))
523
+ ] });
524
+ }
525
+ function RhfTimeInput({
526
+ name,
527
+ control,
528
+ rules,
529
+ label,
530
+ hint,
531
+ required,
532
+ disabled,
533
+ excludeWhenDisabled,
534
+ className,
535
+ emptyValue = "",
536
+ ...timeProps
537
+ }) {
538
+ return /* @__PURE__ */ jsx(
539
+ RhfField,
540
+ {
541
+ ...{ name, control, rules, label, hint, required, disabled, excludeWhenDisabled, className },
542
+ render: ({ field, invalid }) => {
543
+ const value = field.value;
544
+ return /* @__PURE__ */ jsx(
545
+ TimeInput,
546
+ {
547
+ "aria-required": required || void 0,
548
+ ...timeProps,
549
+ name: field.name,
550
+ ref: field.ref,
551
+ value: typeof value === "string" ? value : "",
552
+ onValueChange: (v) => field.onChange(v === "" ? emptyValue : v),
553
+ onBlur: field.onBlur,
554
+ disabled: field.disabled,
555
+ invalid
556
+ }
557
+ );
558
+ }
559
+ }
560
+ );
561
+ }
562
+ function RhfIbanInput({
563
+ name,
564
+ control,
565
+ rules,
566
+ label,
567
+ hint,
568
+ required,
569
+ disabled,
570
+ excludeWhenDisabled,
571
+ className,
572
+ ...ibanProps
573
+ }) {
574
+ return /* @__PURE__ */ jsx(
575
+ RhfField,
576
+ {
577
+ ...{ name, control, rules, label, hint, required, disabled, excludeWhenDisabled, className },
578
+ render: ({ field, invalid }) => {
579
+ const value = field.value;
580
+ return /* @__PURE__ */ jsx(
581
+ IbanInput,
582
+ {
583
+ "aria-required": required || void 0,
584
+ ...ibanProps,
585
+ name: field.name,
586
+ ref: field.ref,
587
+ value: typeof value === "string" ? value : "",
588
+ onValueChange: field.onChange,
589
+ onBlur: field.onBlur,
590
+ disabled: field.disabled,
591
+ invalid
592
+ }
593
+ );
594
+ }
595
+ }
596
+ );
597
+ }
598
+ function RhfPhoneInput({
599
+ name,
600
+ control,
601
+ rules,
602
+ label,
603
+ hint,
604
+ required,
605
+ disabled,
606
+ excludeWhenDisabled,
607
+ className,
608
+ ...phoneProps
609
+ }) {
610
+ return /* @__PURE__ */ jsx(
611
+ RhfField,
612
+ {
613
+ ...{ name, control, rules, label, hint, required, disabled, excludeWhenDisabled, className },
614
+ render: ({ field, invalid }) => {
615
+ const value = field.value;
616
+ return /* @__PURE__ */ jsx(
617
+ PhoneInput,
618
+ {
619
+ "aria-required": required || void 0,
620
+ ...phoneProps,
621
+ name: field.name,
622
+ ref: field.ref,
623
+ value: typeof value === "string" ? value : "",
624
+ onValueChange: field.onChange,
625
+ onBlur: field.onBlur,
626
+ disabled: field.disabled,
627
+ invalid
628
+ }
629
+ );
630
+ }
631
+ }
632
+ );
633
+ }
397
634
  function RhfSelect({
398
635
  name,
399
636
  control,
@@ -476,6 +713,93 @@ function RhfCheckbox({
476
713
  }
477
714
  );
478
715
  }
716
+ function RhfToggleGroup({
717
+ name,
718
+ control,
719
+ rules,
720
+ label,
721
+ hint,
722
+ required,
723
+ disabled,
724
+ excludeWhenDisabled,
725
+ className,
726
+ ...groupProps
727
+ }) {
728
+ const labelled = hasContent(label);
729
+ return /* @__PURE__ */ jsx(
730
+ RhfField,
731
+ {
732
+ ...{ name, control, rules, label, hint, required, disabled, excludeWhenDisabled, className },
733
+ asControl: false,
734
+ render: ({ field, invalid, id, labelId, describedBy }) => /* @__PURE__ */ jsx(
735
+ ToggleControl,
736
+ {
737
+ field,
738
+ invalid,
739
+ required,
740
+ id,
741
+ labelledBy: labelled ? labelId : void 0,
742
+ describedBy,
743
+ groupProps
744
+ }
745
+ )
746
+ }
747
+ );
748
+ }
749
+ function ToggleControl({
750
+ field,
751
+ invalid,
752
+ required,
753
+ id,
754
+ labelledBy,
755
+ describedBy,
756
+ groupProps
757
+ }) {
758
+ const { groupClassName, emptyValue, allowEmpty, semantics, caption, ...rest } = groupProps;
759
+ useFocusHandle(field.ref, () => {
760
+ const group = document.getElementById(id);
761
+ return group?.querySelector('button[tabindex="0"], button[aria-pressed="true"]') ?? group?.querySelector("button");
762
+ });
763
+ const onBlur = (e) => {
764
+ if (!e.currentTarget.contains(e.relatedTarget)) field.onBlur();
765
+ };
766
+ const raw = field.value;
767
+ const value = raw === null || raw === void 0 || raw === "" ? null : String(raw);
768
+ const common = {
769
+ ...rest,
770
+ id,
771
+ className: groupClassName,
772
+ "aria-labelledby": labelledBy,
773
+ "aria-describedby": describedBy,
774
+ "aria-invalid": invalid || void 0,
775
+ disabled: field.disabled,
776
+ onBlur
777
+ };
778
+ if (allowEmpty) {
779
+ return /* @__PURE__ */ jsx(
780
+ ToggleGroup,
781
+ {
782
+ ...common,
783
+ allowEmpty: true,
784
+ caption,
785
+ value,
786
+ onChange: (v) => field.onChange(v ?? emptyValue ?? null)
787
+ }
788
+ );
789
+ }
790
+ return /* @__PURE__ */ jsx(
791
+ ToggleGroup,
792
+ {
793
+ ...common,
794
+ allowEmpty: false,
795
+ semantics,
796
+ caption,
797
+ "aria-required": required && semantics !== "pressed" ? true : void 0,
798
+ value: value ?? "",
799
+ onChange: (v) => field.onChange(v)
800
+ }
801
+ );
802
+ }
479
803
  function EntityControl({
480
804
  field,
481
805
  invalid,
@@ -619,13 +943,18 @@ export {
619
943
  RhfCheckbox,
620
944
  RhfCombobox,
621
945
  RhfDateField,
946
+ RhfDateRangePicker,
622
947
  RhfField,
948
+ RhfIbanInput,
623
949
  RhfIntegerField,
624
950
  RhfMoneyField,
625
951
  RhfNumberField,
952
+ RhfPhoneInput,
626
953
  RhfSelect,
627
954
  RhfTextCombobox,
628
955
  RhfTextField,
629
- RhfTextarea
956
+ RhfTextarea,
957
+ RhfTimeInput,
958
+ RhfToggleGroup
630
959
  };
631
960
  //# sourceMappingURL=fields.js.map