@panneau/fields 5.0.0-alpha.6 → 5.0.0-alpha.8

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 (127) hide show
  1. package/dist/boolean/BooleanField.d.ts +1 -1
  2. package/dist/boolean/BooleanField.js +78 -17
  3. package/dist/boolean/BooleanField.js.map +1 -1
  4. package/dist/boolean/index.d.ts +1 -1
  5. package/dist/color/ColorField.d.ts +2 -2
  6. package/dist/color/ColorField.js.map +1 -1
  7. package/dist/color/index.d.ts +1 -1
  8. package/dist/date/DateField.d.ts +1 -1
  9. package/dist/date/DateField.js.map +1 -1
  10. package/dist/date/index.d.ts +1 -1
  11. package/dist/datetime/DateTimeField.d.ts +1 -1
  12. package/dist/datetime/DateTimeField.js +107 -20
  13. package/dist/datetime/DateTimeField.js.map +1 -1
  14. package/dist/datetime/index.d.ts +1 -1
  15. package/dist/duration/DurationField.d.ts +1 -1
  16. package/dist/duration/DurationField.js +126 -41
  17. package/dist/duration/DurationField.js.map +1 -1
  18. package/dist/duration/index.d.ts +1 -1
  19. package/dist/email/EmailField.d.ts +2 -2
  20. package/dist/email/EmailField.js.map +1 -1
  21. package/dist/email/index.d.ts +1 -1
  22. package/dist/embed/EmbedField.d.ts +2 -2
  23. package/dist/embed/EmbedField.js +185 -69
  24. package/dist/embed/EmbedField.js.map +1 -1
  25. package/dist/embed/index.d.ts +2 -2
  26. package/dist/file/FileField.d.ts +2 -2
  27. package/dist/file/FileField.d.ts.map +1 -1
  28. package/dist/file/FileField.js +167 -77
  29. package/dist/file/FileField.js.map +1 -1
  30. package/dist/file/index.d.ts +2 -2
  31. package/dist/group/GroupField.d.ts +1 -1
  32. package/dist/group/GroupField.js.map +1 -1
  33. package/dist/group/index.d.ts +1 -1
  34. package/dist/index.d.ts +18 -18
  35. package/dist/json/JsonField.d.ts +1 -1
  36. package/dist/json/JsonField.js +104 -22
  37. package/dist/json/JsonField.js.map +1 -1
  38. package/dist/json/index.d.ts +1 -1
  39. package/dist/locales/index.js.map +1 -1
  40. package/dist/localized/LocalizedField.d.ts +1 -1
  41. package/dist/localized/LocalizedField.js.map +1 -1
  42. package/dist/localized/index.d.ts +1 -1
  43. package/dist/location/LocationField.d.ts +3 -3
  44. package/dist/location/LocationField.d.ts.map +1 -1
  45. package/dist/location/LocationField.js +351 -138
  46. package/dist/location/LocationField.js.map +1 -1
  47. package/dist/location/LocationMap.d.ts +1 -1
  48. package/dist/location/LocationMap.d.ts.map +1 -1
  49. package/dist/location/LocationMap.js +155 -65
  50. package/dist/location/LocationMap.js.map +1 -1
  51. package/dist/location/index.d.ts +4 -4
  52. package/dist/location/leafletCss.js.map +1 -1
  53. package/dist/location/nominatim.d.ts +1 -1
  54. package/dist/location/nominatim.js.map +1 -1
  55. package/dist/missing/MissingField.d.ts +4 -3
  56. package/dist/missing/MissingField.d.ts.map +1 -1
  57. package/dist/missing/MissingField.js +3 -2
  58. package/dist/missing/MissingField.js.map +1 -1
  59. package/dist/number/NumberField.d.ts +1 -1
  60. package/dist/number/NumberField.js.map +1 -1
  61. package/dist/number/index.d.ts +1 -1
  62. package/dist/range/RangeField.d.ts +1 -1
  63. package/dist/range/RangeField.js +82 -11
  64. package/dist/range/RangeField.js.map +1 -1
  65. package/dist/range/index.d.ts +1 -1
  66. package/dist/relation/RelationField.d.ts +2 -2
  67. package/dist/relation/RelationField.js +485 -145
  68. package/dist/relation/RelationField.js.map +1 -1
  69. package/dist/relation/index.d.ts +2 -2
  70. package/dist/repeater/RepeaterField.d.ts +1 -1
  71. package/dist/repeater/RepeaterField.js +118 -34
  72. package/dist/repeater/RepeaterField.js.map +1 -1
  73. package/dist/repeater/index.d.ts +1 -1
  74. package/dist/select/SelectField.d.ts +1 -1
  75. package/dist/select/SelectField.js.map +1 -1
  76. package/dist/select/index.d.ts +1 -1
  77. package/dist/shared/DefinitionField.d.ts +1 -1
  78. package/dist/shared/DefinitionField.js.map +1 -1
  79. package/dist/shared/builtIn.d.ts +1 -1
  80. package/dist/shared/builtIn.js.map +1 -1
  81. package/dist/shared/check.js.map +1 -1
  82. package/dist/shared/context.d.ts +6 -6
  83. package/dist/shared/context.js.map +1 -1
  84. package/dist/shared/cx.js.map +1 -1
  85. package/dist/shared/dates.js.map +1 -1
  86. package/dist/shared/embed.js.map +1 -1
  87. package/dist/shared/entry.d.ts +1 -1
  88. package/dist/shared/entry.js.map +1 -1
  89. package/dist/shared/relation.js.map +1 -1
  90. package/dist/slug/SlugField.d.ts +2 -2
  91. package/dist/slug/SlugField.d.ts.map +1 -1
  92. package/dist/slug/SlugField.js +184 -36
  93. package/dist/slug/SlugField.js.map +1 -1
  94. package/dist/slug/index.d.ts +1 -1
  95. package/dist/tags/TagsField.d.ts +1 -1
  96. package/dist/tags/TagsField.js.map +1 -1
  97. package/dist/tags/index.d.ts +1 -1
  98. package/dist/tel/TelField.d.ts +2 -2
  99. package/dist/tel/TelField.js.map +1 -1
  100. package/dist/tel/index.d.ts +1 -1
  101. package/dist/text/TextField.d.ts +1 -1
  102. package/dist/text/TextField.js.map +1 -1
  103. package/dist/text/index.d.ts +1 -1
  104. package/dist/textarea/TextAreaField.d.ts +1 -1
  105. package/dist/textarea/TextAreaField.js.map +1 -1
  106. package/dist/textarea/index.d.ts +1 -1
  107. package/dist/time/TimeField.d.ts +1 -1
  108. package/dist/time/TimeField.js +64 -10
  109. package/dist/time/TimeField.js.map +1 -1
  110. package/dist/time/index.d.ts +1 -1
  111. package/dist/upload/FilePicker.js +107 -24
  112. package/dist/upload/FilePicker.js.map +1 -1
  113. package/dist/upload/UploadList.d.ts +1 -1
  114. package/dist/upload/UploadList.js.map +1 -1
  115. package/dist/upload/files.js.map +1 -1
  116. package/dist/upload/useRejectionMessage.d.ts +1 -1
  117. package/dist/upload/useRejectionMessage.js.map +1 -1
  118. package/dist/upload/useUploads.d.ts +1 -1
  119. package/dist/upload/useUploads.js.map +1 -1
  120. package/dist/uppy/index.d.ts +2 -2
  121. package/dist/uppy/uploader.d.ts +1 -1
  122. package/dist/uppy/uploader.js.map +1 -1
  123. package/dist/url/UrlField.d.ts +2 -2
  124. package/dist/url/UrlField.js +69 -14
  125. package/dist/url/UrlField.js.map +1 -1
  126. package/dist/url/index.d.ts +1 -1
  127. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- import type { FieldEntryProps, FieldProps } from '../shared/types';
1
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
2
  export interface BooleanFieldProps extends Omit<FieldProps<boolean>, 'labelClassName'> {
3
3
  /** `checkbox` (default) for a choice saved with the form, `switch` for an on and off setting. */
4
4
  widget?: 'checkbox' | 'switch';
@@ -4,23 +4,84 @@ import { Checkbox, Switch } from "@panneau/ui";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/boolean/BooleanField.tsx
6
6
  /** A yes or no value, as a checkbox or a switch with its label. An empty value is `false`. */
7
- function BooleanField({ value, onChange, label, widget = "checkbox", disabled, readOnly, required, controlClassName, ...props }) {
8
- const shared = {
9
- ...props,
10
- isSelected: value === true,
11
- onChange: (next) => onChange?.(next),
12
- isDisabled: disabled,
13
- isReadOnly: readOnly,
14
- isRequired: required,
15
- children: label
16
- };
17
- return widget === "switch" ? /* @__PURE__ */ jsx(Switch, {
18
- ...shared,
19
- switchClassName: controlClassName
20
- }) : /* @__PURE__ */ jsx(Checkbox, {
21
- ...shared,
22
- checkboxClassName: controlClassName
23
- });
7
+ function BooleanField(t0) {
8
+ const $ = c(24);
9
+ let controlClassName;
10
+ let disabled;
11
+ let label;
12
+ let onChange;
13
+ let props;
14
+ let readOnly;
15
+ let required;
16
+ let t1;
17
+ let value;
18
+ if ($[0] !== t0) {
19
+ ({value, onChange, label, widget: t1, disabled, readOnly, required, controlClassName, ...props} = t0);
20
+ $[0] = t0;
21
+ $[1] = controlClassName;
22
+ $[2] = disabled;
23
+ $[3] = label;
24
+ $[4] = onChange;
25
+ $[5] = props;
26
+ $[6] = readOnly;
27
+ $[7] = required;
28
+ $[8] = t1;
29
+ $[9] = value;
30
+ } else {
31
+ controlClassName = $[1];
32
+ disabled = $[2];
33
+ label = $[3];
34
+ onChange = $[4];
35
+ props = $[5];
36
+ readOnly = $[6];
37
+ required = $[7];
38
+ t1 = $[8];
39
+ value = $[9];
40
+ }
41
+ const widget = t1 === void 0 ? "checkbox" : t1;
42
+ const t2 = value === true;
43
+ let t3;
44
+ if ($[10] !== onChange) {
45
+ t3 = (next) => onChange?.(next);
46
+ $[10] = onChange;
47
+ $[11] = t3;
48
+ } else t3 = $[11];
49
+ let t4;
50
+ if ($[12] !== disabled || $[13] !== label || $[14] !== props || $[15] !== readOnly || $[16] !== required || $[17] !== t2 || $[18] !== t3) {
51
+ t4 = {
52
+ ...props,
53
+ isSelected: t2,
54
+ onChange: t3,
55
+ isDisabled: disabled,
56
+ isReadOnly: readOnly,
57
+ isRequired: required,
58
+ children: label
59
+ };
60
+ $[12] = disabled;
61
+ $[13] = label;
62
+ $[14] = props;
63
+ $[15] = readOnly;
64
+ $[16] = required;
65
+ $[17] = t2;
66
+ $[18] = t3;
67
+ $[19] = t4;
68
+ } else t4 = $[19];
69
+ const shared = t4;
70
+ let t5;
71
+ if ($[20] !== controlClassName || $[21] !== shared || $[22] !== widget) {
72
+ t5 = widget === "switch" ? /* @__PURE__ */ jsx(Switch, {
73
+ ...shared,
74
+ switchClassName: controlClassName
75
+ }) : /* @__PURE__ */ jsx(Checkbox, {
76
+ ...shared,
77
+ checkboxClassName: controlClassName
78
+ });
79
+ $[20] = controlClassName;
80
+ $[21] = shared;
81
+ $[22] = widget;
82
+ $[23] = t5;
83
+ } else t5 = $[23];
84
+ return t5;
24
85
  }
25
86
  /** The `boolean` type: setting `widget` (`checkbox` or `switch`). */
26
87
  function BooleanFieldEntry(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanField.js","names":["_c"],"sources":["../../src/boolean/BooleanField.tsx"],"sourcesContent":["import { Checkbox, Switch } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface BooleanFieldProps extends Omit<FieldProps<boolean>, 'labelClassName'> {\n /** `checkbox` (default) for a choice saved with the form, `switch` for an on and off setting. */\n widget?: 'checkbox' | 'switch';\n controlClassName?: string;\n}\n\n/** A yes or no value, as a checkbox or a switch with its label. An empty value is `false`. */\nexport function BooleanField({\n value,\n onChange,\n label,\n widget = 'checkbox',\n disabled,\n readOnly,\n required,\n controlClassName,\n ...props\n}: BooleanFieldProps) {\n const shared = {\n ...props,\n isSelected: value === true,\n onChange: (next: boolean) => onChange?.(next),\n isDisabled: disabled,\n isReadOnly: readOnly,\n isRequired: required,\n children: label,\n };\n return widget === 'switch' ? (\n <Switch {...shared} switchClassName={controlClassName} />\n ) : (\n <Checkbox {...shared} checkboxClassName={controlClassName} />\n );\n}\n\n/** The `boolean` type: setting `widget` (`checkbox` or `switch`). */\nexport function BooleanFieldEntry(props: FieldEntryProps) {\n const widget = getSetting(props.field, 'widget', isString);\n return (\n <BooleanField\n {...getFieldProps(props)}\n value={props.value === true}\n onChange={props.onChange}\n {...(widget === 'switch' || widget === 'checkbox' ? { widget } : {})}\n />\n );\n}\n"],"mappings":";;;;;;AAYA,SAAgB,aAAa,EACzB,OACA,UACA,OACA,SAAS,YACT,UACA,UACA,UACA,kBACA,GAAG,SACe;CAClB,MAAM,SAAS;EACX,GAAG;EACH,YAAY,UAAU;EACtB,WAAW,SAAkB,WAAW,IAAI;EAC5C,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,UAAU;CACd;CACA,OAAO,WAAW,WACd,oBAAC,QAAD;EAAQ,GAAI;EAAQ,iBAAiB;CAAiB,CAAA,IAEtD,oBAAC,UAAD;EAAU,GAAI;EAAQ,mBAAmB;CAAiB,CAAA;AAElE;;AAGA,SAAO,kBAAA,OAAA;CAAA,MAAA,IAAAA,EAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,OAAA;EACY,KAAA,WAAW,MAAK,OAAQ,UAAU,QAAQ;EAAC,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAA1D,MAAA,SAAe;CAA4C,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EAG/C,KAAA,cAAc,KAAK;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CACjB,MAAA,KAAA,MAAK,UAAW;CAAI,IAAA;CAAA,IAAA,EAAA,OAAA,QAAA;EAEtB,KAAA,WAAW,YAAY,WAAW,aAAlC,EAAA,OAA6D,IAA7D,CAA6D;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,YAAA,EAAA,OAAA,MAAA,EAAA,OAAA,MAAA,EAAA,OAAA,IAAA;EAJvE,KAAA,oBAAC,cAAD;GAAa,GACL;GACG,OAAA;GACG,UAAA,MAAK;GAAS,GACnB;EAA8D,CAAA;EACrE,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OALF;AAKE"}
1
+ {"version":3,"file":"BooleanField.js","names":["Checkbox","Switch","getFieldProps","getSetting","isString","FieldEntryProps","FieldProps","BooleanFieldProps","Omit","widget","controlClassName","BooleanField","t0","$","_c","disabled","label","onChange","props","readOnly","required","t1","value","undefined","t2","t3","next","t4","isSelected","isDisabled","isReadOnly","isRequired","children","shared","t5","BooleanFieldEntry","field","_c"],"sources":["../../src/boolean/BooleanField.tsx"],"sourcesContent":["import { Checkbox, Switch } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface BooleanFieldProps extends Omit<FieldProps<boolean>, 'labelClassName'> {\n /** `checkbox` (default) for a choice saved with the form, `switch` for an on and off setting. */\n widget?: 'checkbox' | 'switch';\n controlClassName?: string;\n}\n\n/** A yes or no value, as a checkbox or a switch with its label. An empty value is `false`. */\nexport function BooleanField({\n value,\n onChange,\n label,\n widget = 'checkbox',\n disabled,\n readOnly,\n required,\n controlClassName,\n ...props\n}: BooleanFieldProps) {\n const shared = {\n ...props,\n isSelected: value === true,\n onChange: (next: boolean) => onChange?.(next),\n isDisabled: disabled,\n isReadOnly: readOnly,\n isRequired: required,\n children: label,\n };\n return widget === 'switch' ? (\n <Switch {...shared} switchClassName={controlClassName} />\n ) : (\n <Checkbox {...shared} checkboxClassName={controlClassName} />\n );\n}\n\n/** The `boolean` type: setting `widget` (`checkbox` or `switch`). */\nexport function BooleanFieldEntry(props: FieldEntryProps) {\n const widget = getSetting(props.field, 'widget', isString);\n return (\n <BooleanField\n {...getFieldProps(props)}\n value={props.value === true}\n onChange={props.onChange}\n {...(widget === 'switch' || widget === 'checkbox' ? { widget } : {})}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { BooleanField, BooleanFieldEntry, type BooleanFieldProps } from './BooleanField';
1
+ export { BooleanField, BooleanFieldEntry, type BooleanFieldProps } from './BooleanField.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- import type { FieldEntryProps } from '../shared/types';
2
- import { type TextFieldProps } from '../text/TextField';
1
+ import type { FieldEntryProps } from '../shared/types.js';
2
+ import { type TextFieldProps } from '../text/TextField.js';
3
3
  export type ColorFieldProps = Omit<TextFieldProps, 'type' | 'prefix' | 'maxLength'>;
4
4
  /**
5
5
  * Normalizes a hexadecimal color: `#` prefix, lowercase, and 3 digits expanded to 6. Returns the
@@ -1 +1 @@
1
- {"version":3,"file":"ColorField.js","names":["value","onChange","disabled","readOnly","_c","styles"],"sources":["../../src/color/ColorField.tsx"],"sourcesContent":["import { usePanneauIntl } from '@panneau/ui';\n\nimport { cx } from '../shared/cx';\nimport { getFieldProps, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\nimport styles from './ColorField.module.css';\n\nexport type ColorFieldProps = Omit<TextFieldProps, 'type' | 'prefix' | 'maxLength'>;\n\n/**\n * Normalizes a hexadecimal color: `#` prefix, lowercase, and 3 digits expanded to 6. Returns the\n * text as is when it isn't a hexadecimal color.\n */\nexport function normalizeColor(value: string): string {\n const trimmed = value.trim().toLowerCase();\n const digits = trimmed.replace(/^#/, '');\n if (/^[0-9a-f]{3}$/.test(digits)) {\n return `#${[...digits].map((digit) => digit + digit).join('')}`;\n }\n if (/^[0-9a-f]{6}$/.test(digits) || /^[0-9a-f]{8}$/.test(digits)) {\n return `#${digits}`;\n }\n return trimmed;\n}\n\n/**\n * A color as a hexadecimal value (`#1d4ed8`): typed, or picked with the browser's color picker.\n * The value is normalized on blur.\n */\nexport function ColorField({\n value,\n onChange,\n onBlur,\n disabled,\n readOnly,\n inputClassName,\n ...props\n}: ColorFieldProps) {\n const intl = usePanneauIntl();\n const valid = value !== null && value !== undefined && /^#[0-9a-f]{6}$/i.test(value);\n return (\n <TextField\n autoComplete=\"off\"\n {...props}\n value={value}\n onChange={onChange}\n disabled={disabled}\n readOnly={readOnly}\n inputClassName={cx(styles.input, inputClassName)}\n onBlur={() => {\n if (value !== null && value !== undefined) {\n const next = normalizeColor(value);\n if (next !== value) {\n onChange?.(next === '' ? null : next);\n }\n }\n onBlur?.();\n }}\n prefix={\n <span\n className={styles.swatch}\n style={{ backgroundColor: valid ? value : 'transparent' }}\n >\n <input\n type=\"color\"\n className={styles.picker}\n value={valid ? value.toLowerCase() : '#000000'}\n onChange={(event) => onChange?.(event.target.value)}\n disabled={disabled === true || readOnly === true}\n aria-label={intl.formatMessage(messages.pickColor)}\n />\n </span>\n }\n />\n );\n}\n\n/** The `color` type. */\nexport function ColorFieldEntry(props: FieldEntryProps) {\n return (\n <ColorField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColorField.js","names":["usePanneauIntl","cx","getFieldProps","isString","messages","FieldEntryProps","TextField","TextFieldProps","styles","ColorFieldProps","Omit","normalizeColor","value","trimmed","trim","toLowerCase","digits","replace","test","map","digit","join","ColorField","t0","$","_c","disabled","inputClassName","onBlur","onChange","props","readOnly","intl","t1","undefined","valid","t2","input","t3","next","t4","t5","backgroundColor","t6","t7","event","target","t8","t9","formatMessage","pickColor","t10","picker","t11","swatch","t12","ColorFieldEntry","_c","styles"],"sources":["../../src/color/ColorField.tsx"],"sourcesContent":["import { usePanneauIntl } from '@panneau/ui';\n\nimport { cx } from '../shared/cx';\nimport { getFieldProps, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\nimport styles from './ColorField.module.css';\n\nexport type ColorFieldProps = Omit<TextFieldProps, 'type' | 'prefix' | 'maxLength'>;\n\n/**\n * Normalizes a hexadecimal color: `#` prefix, lowercase, and 3 digits expanded to 6. Returns the\n * text as is when it isn't a hexadecimal color.\n */\nexport function normalizeColor(value: string): string {\n const trimmed = value.trim().toLowerCase();\n const digits = trimmed.replace(/^#/, '');\n if (/^[0-9a-f]{3}$/.test(digits)) {\n return `#${[...digits].map((digit) => digit + digit).join('')}`;\n }\n if (/^[0-9a-f]{6}$/.test(digits) || /^[0-9a-f]{8}$/.test(digits)) {\n return `#${digits}`;\n }\n return trimmed;\n}\n\n/**\n * A color as a hexadecimal value (`#1d4ed8`): typed, or picked with the browser's color picker.\n * The value is normalized on blur.\n */\nexport function ColorField({\n value,\n onChange,\n onBlur,\n disabled,\n readOnly,\n inputClassName,\n ...props\n}: ColorFieldProps) {\n const intl = usePanneauIntl();\n const valid = value !== null && value !== undefined && /^#[0-9a-f]{6}$/i.test(value);\n return (\n <TextField\n autoComplete=\"off\"\n {...props}\n value={value}\n onChange={onChange}\n disabled={disabled}\n readOnly={readOnly}\n inputClassName={cx(styles.input, inputClassName)}\n onBlur={() => {\n if (value !== null && value !== undefined) {\n const next = normalizeColor(value);\n if (next !== value) {\n onChange?.(next === '' ? null : next);\n }\n }\n onBlur?.();\n }}\n prefix={\n <span\n className={styles.swatch}\n style={{ backgroundColor: valid ? value : 'transparent' }}\n >\n <input\n type=\"color\"\n className={styles.picker}\n value={valid ? value.toLowerCase() : '#000000'}\n onChange={(event) => onChange?.(event.target.value)}\n disabled={disabled === true || readOnly === true}\n aria-label={intl.formatMessage(messages.pickColor)}\n />\n </span>\n }\n />\n );\n}\n\n/** The `color` type. */\nexport function ColorFieldEntry(props: FieldEntryProps) {\n return (\n <ColorField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { ColorField, ColorFieldEntry, type ColorFieldProps, normalizeColor } from './ColorField';
1
+ export { ColorField, ColorFieldEntry, type ColorFieldProps, normalizeColor } from './ColorField.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { FieldEntryProps, FieldProps } from '../shared/types';
1
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
2
  export interface DateFieldProps extends FieldProps<string> {
3
3
  /** Earliest date (`2026-01-01`). */
4
4
  min?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DateField.js","names":["disabled","readOnly","required","_c"],"sources":["../../src/date/DateField.tsx"],"sourcesContent":["import { DatePicker } from '@panneau/ui';\n\nimport { toCalendarDate } from '../shared/dates';\nimport { getFieldProps, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface DateFieldProps extends FieldProps<string> {\n /** Earliest date (`2026-01-01`). */\n min?: string;\n /** Latest date. */\n max?: string;\n controlClassName?: string;\n}\n\n/**\n * A date as an ISO string (`2026-10-15`), typed in the order of the locale or picked in a\n * calendar.\n */\nexport function DateField({\n value,\n onChange,\n min,\n max,\n disabled,\n readOnly,\n required,\n ...props\n}: DateFieldProps) {\n const minValue = toCalendarDate(min);\n const maxValue = toCalendarDate(max);\n return (\n <DatePicker\n {...props}\n granularity=\"day\"\n value={toCalendarDate(value)}\n onChange={(date) => onChange?.(date === null ? null : date.toString().slice(0, 10))}\n {...(minValue !== null ? { minValue } : {})}\n {...(maxValue !== null ? { maxValue } : {})}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `date` type. */\nexport function DateFieldEntry(props: FieldEntryProps) {\n return (\n <DateField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DateField.js","names":["DatePicker","toCalendarDate","getFieldProps","isString","FieldEntryProps","FieldProps","DateFieldProps","min","max","controlClassName","DateField","t0","$","_c","disabled","onChange","props","readOnly","required","value","t1","minValue","t2","maxValue","t3","t4","date","toString","slice","t5","t6","t7","DateFieldEntry","_c"],"sources":["../../src/date/DateField.tsx"],"sourcesContent":["import { DatePicker } from '@panneau/ui';\n\nimport { toCalendarDate } from '../shared/dates';\nimport { getFieldProps, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface DateFieldProps extends FieldProps<string> {\n /** Earliest date (`2026-01-01`). */\n min?: string;\n /** Latest date. */\n max?: string;\n controlClassName?: string;\n}\n\n/**\n * A date as an ISO string (`2026-10-15`), typed in the order of the locale or picked in a\n * calendar.\n */\nexport function DateField({\n value,\n onChange,\n min,\n max,\n disabled,\n readOnly,\n required,\n ...props\n}: DateFieldProps) {\n const minValue = toCalendarDate(min);\n const maxValue = toCalendarDate(max);\n return (\n <DatePicker\n {...props}\n granularity=\"day\"\n value={toCalendarDate(value)}\n onChange={(date) => onChange?.(date === null ? null : date.toString().slice(0, 10))}\n {...(minValue !== null ? { minValue } : {})}\n {...(maxValue !== null ? { maxValue } : {})}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `date` type. */\nexport function DateFieldEntry(props: FieldEntryProps) {\n return (\n <DateField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { DateField, DateFieldEntry, type DateFieldProps } from './DateField';
1
+ export { DateField, DateFieldEntry, type DateFieldProps } from './DateField.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { FieldEntryProps, FieldProps } from '../shared/types';
1
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
2
  export interface DateTimeFieldProps extends FieldProps<string> {
3
3
  /**
4
4
  * Time zone the date and time are shown and typed in, for values with an offset. Defaults to
@@ -10,28 +10,115 @@ import { getLocalTimeZone, now } from "@internationalized/date";
10
10
  * the time zone of the browser and written back in UTC. Values without one
11
11
  * (`2026-10-15T09:30:00`) are kept without one.
12
12
  */
13
- function DateTimeField({ value, onChange, timeZone = getLocalTimeZone(), withSeconds = false, disabled, readOnly, required, ...props }) {
14
- const current = toDateTime(value, timeZone);
15
- return /* @__PURE__ */ jsx(DatePicker, {
16
- ...props,
17
- granularity: withSeconds ? "second" : "minute",
18
- hideTimeZone: true,
19
- value: current,
20
- onChange: (next) => {
21
- if (next === null) {
22
- onChange?.(null);
23
- return;
24
- }
25
- if ("hour" in next) onChange?.(fromDateTime(next));
26
- },
27
- placeholderValue: current ?? now(timeZone).set({
13
+ function DateTimeField(t0) {
14
+ const $ = c(34);
15
+ let disabled;
16
+ let onChange;
17
+ let props;
18
+ let readOnly;
19
+ let required;
20
+ let t1;
21
+ let t2;
22
+ let value;
23
+ if ($[0] !== t0) {
24
+ ({value, onChange, timeZone: t1, withSeconds: t2, disabled, readOnly, required, ...props} = t0);
25
+ $[0] = t0;
26
+ $[1] = disabled;
27
+ $[2] = onChange;
28
+ $[3] = props;
29
+ $[4] = readOnly;
30
+ $[5] = required;
31
+ $[6] = t1;
32
+ $[7] = t2;
33
+ $[8] = value;
34
+ } else {
35
+ disabled = $[1];
36
+ onChange = $[2];
37
+ props = $[3];
38
+ readOnly = $[4];
39
+ required = $[5];
40
+ t1 = $[6];
41
+ t2 = $[7];
42
+ value = $[8];
43
+ }
44
+ let T0;
45
+ let t3;
46
+ let t4;
47
+ let t5;
48
+ let t6;
49
+ let t7;
50
+ let t8;
51
+ if ($[9] !== onChange || $[10] !== props || $[11] !== t1 || $[12] !== t2 || $[13] !== value) {
52
+ const timeZone = t1 === void 0 ? getLocalTimeZone() : t1;
53
+ const withSeconds = t2 === void 0 ? false : t2;
54
+ const current = toDateTime(value, timeZone);
55
+ T0 = DatePicker;
56
+ t3 = props;
57
+ t4 = withSeconds ? "second" : "minute";
58
+ t5 = true;
59
+ t6 = current;
60
+ if ($[21] !== onChange) {
61
+ t7 = (next) => {
62
+ if (next === null) {
63
+ onChange?.(null);
64
+ return;
65
+ }
66
+ if ("hour" in next) onChange?.(fromDateTime(next));
67
+ };
68
+ $[21] = onChange;
69
+ $[22] = t7;
70
+ } else t7 = $[22];
71
+ t8 = current ?? now(timeZone).set({
28
72
  second: 0,
29
73
  millisecond: 0
30
- }),
31
- isDisabled: disabled,
32
- isReadOnly: readOnly,
33
- isRequired: required
34
- });
74
+ });
75
+ $[9] = onChange;
76
+ $[10] = props;
77
+ $[11] = t1;
78
+ $[12] = t2;
79
+ $[13] = value;
80
+ $[14] = T0;
81
+ $[15] = t3;
82
+ $[16] = t4;
83
+ $[17] = t5;
84
+ $[18] = t6;
85
+ $[19] = t7;
86
+ $[20] = t8;
87
+ } else {
88
+ T0 = $[14];
89
+ t3 = $[15];
90
+ t4 = $[16];
91
+ t5 = $[17];
92
+ t6 = $[18];
93
+ t7 = $[19];
94
+ t8 = $[20];
95
+ }
96
+ let t9;
97
+ if ($[23] !== T0 || $[24] !== disabled || $[25] !== readOnly || $[26] !== required || $[27] !== t3 || $[28] !== t4 || $[29] !== t5 || $[30] !== t6 || $[31] !== t7 || $[32] !== t8) {
98
+ t9 = /* @__PURE__ */ jsx(T0, {
99
+ ...t3,
100
+ granularity: t4,
101
+ hideTimeZone: t5,
102
+ value: t6,
103
+ onChange: t7,
104
+ placeholderValue: t8,
105
+ isDisabled: disabled,
106
+ isReadOnly: readOnly,
107
+ isRequired: required
108
+ });
109
+ $[23] = T0;
110
+ $[24] = disabled;
111
+ $[25] = readOnly;
112
+ $[26] = required;
113
+ $[27] = t3;
114
+ $[28] = t4;
115
+ $[29] = t5;
116
+ $[30] = t6;
117
+ $[31] = t7;
118
+ $[32] = t8;
119
+ $[33] = t9;
120
+ } else t9 = $[33];
121
+ return t9;
35
122
  }
36
123
  /** The `datetime` type: setting `timeZone`. */
37
124
  function DateTimeFieldEntry(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeField.js","names":["_c"],"sources":["../../src/datetime/DateTimeField.tsx"],"sourcesContent":["import { getLocalTimeZone, now } from '@internationalized/date';\n\nimport { DatePicker } from '@panneau/ui';\n\nimport { fromDateTime, toDateTime } from '../shared/dates';\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface DateTimeFieldProps extends FieldProps<string> {\n /**\n * Time zone the date and time are shown and typed in, for values with an offset. Defaults to\n * the browser's.\n */\n timeZone?: string;\n /** Shows seconds. */\n withSeconds?: boolean;\n /** Defaults to the locale's. */\n hourCycle?: 12 | 24;\n controlClassName?: string;\n}\n\n/**\n * A date and a time as an ISO string. Values with an offset (`2026-10-15T13:30:00Z`) are shown in\n * the time zone of the browser and written back in UTC. Values without one\n * (`2026-10-15T09:30:00`) are kept without one.\n */\nexport function DateTimeField({\n value,\n onChange,\n timeZone = getLocalTimeZone(),\n withSeconds = false,\n disabled,\n readOnly,\n required,\n ...props\n}: DateTimeFieldProps) {\n const current = toDateTime(value, timeZone);\n return (\n <DatePicker\n {...props}\n granularity={withSeconds ? 'second' : 'minute'}\n hideTimeZone\n value={current}\n onChange={(next) => {\n if (next === null) {\n onChange?.(null);\n return;\n }\n if ('hour' in next) {\n onChange?.(fromDateTime(next));\n }\n }}\n // Typed from empty, a value is in the field's time zone, and written in UTC.\n placeholderValue={current ?? now(timeZone).set({ second: 0, millisecond: 0 })}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `datetime` type: setting `timeZone`. */\nexport function DateTimeFieldEntry(props: FieldEntryProps) {\n const timeZone = getSetting(props.field, 'timeZone', isString);\n return (\n <DateTimeField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(timeZone !== undefined ? { timeZone } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,SAAgB,cAAc,EAC1B,OACA,UACA,WAAW,iBAAiB,GAC5B,cAAc,OACd,UACA,UACA,UACA,GAAG,SACgB;CACnB,MAAM,UAAU,WAAW,OAAO,QAAQ;CAC1C,OACI,oBAAC,YAAD;EACI,GAAI;EACJ,aAAa,cAAc,WAAW;EACtC,cAAA;EACA,OAAO;EACP,WAAW,SAAS;GAChB,IAAI,SAAS,MAAM;IACf,WAAW,IAAI;IACf;GACJ;GACA,IAAI,UAAU,MACV,WAAW,aAAa,IAAI,CAAC;EAErC;EAEA,kBAAkB,WAAW,IAAI,QAAQ,CAAC,CAAC,IAAI;GAAE,QAAQ;GAAG,aAAa;EAAE,CAAC;EAC5E,YAAY;EACZ,YAAY;EACZ,YAAY;CAAS,CAAA;AAGjC;;AAGA,SAAO,mBAAA,OAAA;CAAA,MAAA,IAAAA,EAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,OAAA;EACc,KAAA,WAAW,MAAK,OAAQ,YAAY,QAAQ;EAAC,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAA9D,MAAA,WAAiB;CAA8C,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EAGnD,KAAA,cAAc,KAAK;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CACjB,MAAA,KAAA,SAAS,MAAK,KAA2B,IAAjB,MAAK,QAA7B;CAA0C,IAAA;CAAA,IAAA,EAAA,OAAA,UAAA;EAE5C,KAAA,aAAa,KAAA,IAAb,EAAA,SAAyC,IAAzC,CAAyC;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,YAAA,EAAA,OAAA,MAAA,EAAA,OAAA,MAAA,EAAA,OAAA,IAAA;EAJnD,KAAA,oBAAC,eAAD;GAAc,GACN;GACG,OAAA;GACG,UAAA,MAAK;GAAS,GACnB;EAA0C,CAAA;EACjD,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OALF;AAKE"}
1
+ {"version":3,"file":"DateTimeField.js","names":["getLocalTimeZone","now","DatePicker","fromDateTime","toDateTime","getFieldProps","getSetting","isString","FieldEntryProps","FieldProps","DateTimeFieldProps","timeZone","withSeconds","hourCycle","controlClassName","DateTimeField","t0","$","_c","disabled","onChange","props","readOnly","required","t1","t2","value","T0","t3","t4","t5","t6","t7","t8","undefined","current","next","set","second","millisecond","t9","DateTimeFieldEntry","field","_c"],"sources":["../../src/datetime/DateTimeField.tsx"],"sourcesContent":["import { getLocalTimeZone, now } from '@internationalized/date';\n\nimport { DatePicker } from '@panneau/ui';\n\nimport { fromDateTime, toDateTime } from '../shared/dates';\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface DateTimeFieldProps extends FieldProps<string> {\n /**\n * Time zone the date and time are shown and typed in, for values with an offset. Defaults to\n * the browser's.\n */\n timeZone?: string;\n /** Shows seconds. */\n withSeconds?: boolean;\n /** Defaults to the locale's. */\n hourCycle?: 12 | 24;\n controlClassName?: string;\n}\n\n/**\n * A date and a time as an ISO string. Values with an offset (`2026-10-15T13:30:00Z`) are shown in\n * the time zone of the browser and written back in UTC. Values without one\n * (`2026-10-15T09:30:00`) are kept without one.\n */\nexport function DateTimeField({\n value,\n onChange,\n timeZone = getLocalTimeZone(),\n withSeconds = false,\n disabled,\n readOnly,\n required,\n ...props\n}: DateTimeFieldProps) {\n const current = toDateTime(value, timeZone);\n return (\n <DatePicker\n {...props}\n granularity={withSeconds ? 'second' : 'minute'}\n hideTimeZone\n value={current}\n onChange={(next) => {\n if (next === null) {\n onChange?.(null);\n return;\n }\n if ('hour' in next) {\n onChange?.(fromDateTime(next));\n }\n }}\n // Typed from empty, a value is in the field's time zone, and written in UTC.\n placeholderValue={current ?? now(timeZone).set({ second: 0, millisecond: 0 })}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `datetime` type: setting `timeZone`. */\nexport function DateTimeFieldEntry(props: FieldEntryProps) {\n const timeZone = getSetting(props.field, 'timeZone', isString);\n return (\n <DateTimeField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(timeZone !== undefined ? { timeZone } : {})}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { DateTimeField, DateTimeFieldEntry, type DateTimeFieldProps } from './DateTimeField';
1
+ export { DateTimeField, DateTimeFieldEntry, type DateTimeFieldProps } from './DateTimeField.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { FieldEntryProps, FieldProps } from '../shared/types';
1
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
2
  export interface DurationFieldProps extends FieldProps<number> {
3
3
  /** `seconds` (the default) shows hours, minutes and seconds; `minutes` hides the seconds. */
4
4
  precision?: 'seconds' | 'minutes';
@@ -31,51 +31,136 @@ function formatDuration(seconds, { precision = "seconds" } = {}) {
31
31
  * A duration, in seconds, typed in hours, minutes and seconds. It is `null` while every part is
32
32
  * empty.
33
33
  */
34
- function DurationField({ value, onChange, onBlur, precision = "seconds", label, description, errors, disabled, readOnly, required, name, className }) {
34
+ function DurationField(t0) {
35
+ const $ = c(38);
36
+ const { value, onChange, onBlur, precision: t1, label, description, errors, disabled, readOnly, required, name, className } = t0;
37
+ const precision = t1 === void 0 ? "seconds" : t1;
35
38
  const intl = usePanneauIntl();
36
- const parts = value !== null && value !== void 0 ? splitDuration(value) : null;
37
- const change = (part, next) => {
38
- const updated = {
39
- ...parts ?? {
40
- hours: 0,
41
- minutes: 0,
42
- seconds: 0
43
- },
44
- [part]: next ?? 0
39
+ let T0;
40
+ let t10;
41
+ let t11;
42
+ let t2;
43
+ let t3;
44
+ let t4;
45
+ let t5;
46
+ let t6;
47
+ let t7;
48
+ let t8;
49
+ let t9;
50
+ if ($[0] !== className || $[1] !== description || $[2] !== disabled || $[3] !== errors || $[4] !== intl || $[5] !== label || $[6] !== name || $[7] !== onBlur || $[8] !== onChange || $[9] !== precision || $[10] !== readOnly || $[11] !== required || $[12] !== value) {
51
+ const parts = value !== null && value !== void 0 ? splitDuration(value) : null;
52
+ const change = (part, next) => {
53
+ const updated = {
54
+ ...parts ?? {
55
+ hours: 0,
56
+ minutes: 0,
57
+ seconds: 0
58
+ },
59
+ [part]: next ?? 0
60
+ };
61
+ const total = updated.hours * 3600 + updated.minutes * 60 + updated.seconds;
62
+ onChange?.(total === 0 && next === null ? null : total);
45
63
  };
46
- const total = updated.hours * 3600 + updated.minutes * 60 + updated.seconds;
47
- onChange?.(total === 0 && next === null ? null : total);
48
- };
49
- const input = (part_0) => /* @__PURE__ */ jsx(NumberInput, {
50
- "aria-label": intl.formatMessage(messages[part_0]),
51
- value: parts?.[part_0] ?? null,
52
- onChange: (next_0) => change(part_0, next_0),
53
- onBlur: () => onBlur?.(),
54
- minValue: 0,
55
- ...part_0 !== "hours" ? { maxValue: 59 } : {},
56
- formatOptions: { maximumFractionDigits: 0 },
57
- suffix: intl.formatMessage(messages[`${part_0}Unit`]),
58
- isDisabled: disabled,
59
- isReadOnly: readOnly,
60
- ...name !== void 0 ? { name: `${name}[${part_0}]` } : {},
61
- className: DurationField_module_default.part
62
- });
63
- return /* @__PURE__ */ jsx(Fieldset, {
64
- legend: label,
65
- description,
66
- errors,
67
- isRequired: required,
68
- isDisabled: disabled,
69
- className,
70
- children: /* @__PURE__ */ jsxs("div", {
71
- className: DurationField_module_default.parts,
64
+ const input = (part_0) => /* @__PURE__ */ jsx(NumberInput, {
65
+ "aria-label": intl.formatMessage(messages[part_0]),
66
+ value: parts?.[part_0] ?? null,
67
+ onChange: (next_0) => change(part_0, next_0),
68
+ onBlur: () => onBlur?.(),
69
+ minValue: 0,
70
+ ...part_0 !== "hours" ? { maxValue: 59 } : {},
71
+ formatOptions: { maximumFractionDigits: 0 },
72
+ suffix: intl.formatMessage(messages[`${part_0}Unit`]),
73
+ isDisabled: disabled,
74
+ isReadOnly: readOnly,
75
+ ...name !== void 0 ? { name: `${name}[${part_0}]` } : {},
76
+ className: DurationField_module_default.part
77
+ });
78
+ T0 = Fieldset;
79
+ t6 = label;
80
+ t7 = description;
81
+ t8 = errors;
82
+ t9 = required;
83
+ t10 = disabled;
84
+ t11 = className;
85
+ t2 = DurationField_module_default.parts;
86
+ t3 = input("hours");
87
+ t4 = input("minutes");
88
+ t5 = precision === "seconds" ? input("seconds") : null;
89
+ $[0] = className;
90
+ $[1] = description;
91
+ $[2] = disabled;
92
+ $[3] = errors;
93
+ $[4] = intl;
94
+ $[5] = label;
95
+ $[6] = name;
96
+ $[7] = onBlur;
97
+ $[8] = onChange;
98
+ $[9] = precision;
99
+ $[10] = readOnly;
100
+ $[11] = required;
101
+ $[12] = value;
102
+ $[13] = T0;
103
+ $[14] = t10;
104
+ $[15] = t11;
105
+ $[16] = t2;
106
+ $[17] = t3;
107
+ $[18] = t4;
108
+ $[19] = t5;
109
+ $[20] = t6;
110
+ $[21] = t7;
111
+ $[22] = t8;
112
+ $[23] = t9;
113
+ } else {
114
+ T0 = $[13];
115
+ t10 = $[14];
116
+ t11 = $[15];
117
+ t2 = $[16];
118
+ t3 = $[17];
119
+ t4 = $[18];
120
+ t5 = $[19];
121
+ t6 = $[20];
122
+ t7 = $[21];
123
+ t8 = $[22];
124
+ t9 = $[23];
125
+ }
126
+ let t12;
127
+ if ($[24] !== t2 || $[25] !== t3 || $[26] !== t4 || $[27] !== t5) {
128
+ t12 = /* @__PURE__ */ jsxs("div", {
129
+ className: t2,
72
130
  children: [
73
- input("hours"),
74
- input("minutes"),
75
- precision === "seconds" ? input("seconds") : null
131
+ t3,
132
+ t4,
133
+ t5
76
134
  ]
77
- })
78
- });
135
+ });
136
+ $[24] = t2;
137
+ $[25] = t3;
138
+ $[26] = t4;
139
+ $[27] = t5;
140
+ $[28] = t12;
141
+ } else t12 = $[28];
142
+ let t13;
143
+ if ($[29] !== T0 || $[30] !== t10 || $[31] !== t11 || $[32] !== t12 || $[33] !== t6 || $[34] !== t7 || $[35] !== t8 || $[36] !== t9) {
144
+ t13 = /* @__PURE__ */ jsx(T0, {
145
+ legend: t6,
146
+ description: t7,
147
+ errors: t8,
148
+ isRequired: t9,
149
+ isDisabled: t10,
150
+ className: t11,
151
+ children: t12
152
+ });
153
+ $[29] = T0;
154
+ $[30] = t10;
155
+ $[31] = t11;
156
+ $[32] = t12;
157
+ $[33] = t6;
158
+ $[34] = t7;
159
+ $[35] = t8;
160
+ $[36] = t9;
161
+ $[37] = t13;
162
+ } else t13 = $[37];
163
+ return t13;
79
164
  }
80
165
  /** The `duration` type: a number of seconds, with setting `precision` (`seconds` or `minutes`). */
81
166
  function DurationFieldEntry(props) {