@axenstudio/axen-form 0.1.9 → 0.1.11

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 (101) hide show
  1. package/README.md +783 -270
  2. package/dist/core/dateUtils.cjs +7 -3
  3. package/dist/core/dateUtils.d.ts +1 -1
  4. package/dist/core/dateUtils.d.ts.map +1 -1
  5. package/dist/core/dateUtils.js +7 -3
  6. package/dist/core/validation.cjs +4 -1
  7. package/dist/core/validation.d.ts.map +1 -1
  8. package/dist/core/validation.js +4 -1
  9. package/dist/fields/AutocompleteField/AutocompleteField.cjs +32 -32
  10. package/dist/fields/AutocompleteField/AutocompleteField.js +32 -32
  11. package/dist/fields/AutocompleteField/AutocompleteField.module.css.cjs +34 -13
  12. package/dist/fields/AutocompleteField/AutocompleteField.module.css.js +34 -13
  13. package/dist/fields/AutocompleteMultiField/AutocompleteMultiField.cjs +90 -88
  14. package/dist/fields/AutocompleteMultiField/AutocompleteMultiField.d.ts.map +1 -1
  15. package/dist/fields/AutocompleteMultiField/AutocompleteMultiField.js +90 -88
  16. package/dist/fields/AutocompletePredictField/AutocompletePredictField.cjs +81 -64
  17. package/dist/fields/AutocompletePredictField/AutocompletePredictField.d.ts.map +1 -1
  18. package/dist/fields/AutocompletePredictField/AutocompletePredictField.js +81 -64
  19. package/dist/fields/CheckboxField/CheckboxField.module.css.cjs +12 -0
  20. package/dist/fields/CheckboxField/CheckboxField.module.css.js +12 -0
  21. package/dist/fields/ColorField/ColorField.module.css.cjs +12 -0
  22. package/dist/fields/ColorField/ColorField.module.css.js +12 -0
  23. package/dist/fields/DateField/DateField.cjs +56 -4
  24. package/dist/fields/DateField/DateField.d.ts +1 -1
  25. package/dist/fields/DateField/DateField.d.ts.map +1 -1
  26. package/dist/fields/DateField/DateField.js +56 -4
  27. package/dist/fields/DateField/DatePicker.cjs +194 -0
  28. package/dist/fields/DateField/DatePicker.d.ts +11 -0
  29. package/dist/fields/DateField/DatePicker.d.ts.map +1 -0
  30. package/dist/fields/DateField/DatePicker.js +194 -0
  31. package/dist/fields/DateField/DatePicker.module.css.cjs +62 -0
  32. package/dist/fields/DateField/DatePicker.module.css.js +62 -0
  33. package/dist/fields/DateTimeField/DateTimeField.cjs +126 -8
  34. package/dist/fields/DateTimeField/DateTimeField.d.ts +2 -1
  35. package/dist/fields/DateTimeField/DateTimeField.d.ts.map +1 -1
  36. package/dist/fields/DateTimeField/DateTimeField.js +126 -8
  37. package/dist/fields/PasswordField/PasswordField.module.css.cjs +12 -0
  38. package/dist/fields/PasswordField/PasswordField.module.css.js +12 -0
  39. package/dist/fields/RadioField/RadioField.module.css.cjs +12 -0
  40. package/dist/fields/RadioField/RadioField.module.css.js +12 -0
  41. package/dist/fields/SliderField/SliderField.module.css.cjs +15 -3
  42. package/dist/fields/SliderField/SliderField.module.css.js +15 -3
  43. package/dist/fields/SwitchField/SwitchField.module.css.cjs +12 -0
  44. package/dist/fields/SwitchField/SwitchField.module.css.js +12 -0
  45. package/dist/fields/TimeField/TimeField.cjs +60 -5
  46. package/dist/fields/TimeField/TimeField.d.ts +2 -1
  47. package/dist/fields/TimeField/TimeField.d.ts.map +1 -1
  48. package/dist/fields/TimeField/TimeField.js +60 -5
  49. package/dist/fields/TimeField/TimePicker.cjs +182 -0
  50. package/dist/fields/TimeField/TimePicker.d.ts +11 -0
  51. package/dist/fields/TimeField/TimePicker.d.ts.map +1 -0
  52. package/dist/fields/TimeField/TimePicker.js +182 -0
  53. package/dist/fields/TimeField/TimePicker.module.css.cjs +50 -0
  54. package/dist/fields/TimeField/TimePicker.module.css.js +50 -0
  55. package/dist/fields/defaultPlaceholders.cjs +1 -0
  56. package/dist/fields/defaultPlaceholders.d.ts.map +1 -1
  57. package/dist/fields/defaultPlaceholders.js +1 -0
  58. package/dist/fields/fieldBase.module.css.cjs +366 -18
  59. package/dist/fields/fieldBase.module.css.js +366 -18
  60. package/dist/fields/icons.cjs +2 -0
  61. package/dist/fields/icons.d.ts +4 -0
  62. package/dist/fields/icons.d.ts.map +1 -1
  63. package/dist/fields/icons.js +2 -0
  64. package/dist/index.cjs +230 -3
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +230 -3
  68. package/dist/layout/Box/Box.module.css.cjs +12 -0
  69. package/dist/layout/Box/Box.module.css.js +12 -0
  70. package/dist/layout/Divider/Divider.module.css.cjs +12 -0
  71. package/dist/layout/Divider/Divider.module.css.js +12 -0
  72. package/dist/layout/Grid/Grid.module.css.cjs +12 -0
  73. package/dist/layout/Grid/Grid.module.css.js +12 -0
  74. package/dist/layout/Stack/Stack.module.css.cjs +12 -0
  75. package/dist/layout/Stack/Stack.module.css.js +12 -0
  76. package/dist/react/AxenForm.cjs +228 -3
  77. package/dist/react/AxenForm.js +228 -3
  78. package/dist/react/fieldGroup.module.css.cjs +12 -0
  79. package/dist/react/fieldGroup.module.css.js +12 -0
  80. package/dist/react/gridCell.module.css.cjs +12 -0
  81. package/dist/react/gridCell.module.css.js +12 -0
  82. package/dist/types.d.ts +1 -0
  83. package/dist/types.d.ts.map +1 -1
  84. package/package.json +4 -9
  85. package/dist/fields/AutocompleteField/AutocompleteField.module.css +0 -168
  86. package/dist/fields/CheckboxField/CheckboxField.module.css +0 -29
  87. package/dist/fields/ColorField/ColorField.module.css +0 -33
  88. package/dist/fields/PasswordField/PasswordField.module.css +0 -41
  89. package/dist/fields/RadioField/RadioField.module.css +0 -34
  90. package/dist/fields/SliderField/SliderField.module.css +0 -76
  91. package/dist/fields/SwitchField/SwitchField.module.css +0 -79
  92. package/dist/fields/fieldBase.module.css +0 -244
  93. package/dist/layout/Box/Box.module.css +0 -3
  94. package/dist/layout/Divider/Divider.module.css +0 -25
  95. package/dist/layout/Grid/Grid.module.css +0 -43
  96. package/dist/layout/Stack/Stack.module.css +0 -3
  97. package/dist/react/fieldGroup.module.css +0 -22
  98. package/dist/react/gridCell.module.css +0 -38
  99. package/dist/tokens/reset.css +0 -68
  100. package/dist/tokens/themes.css +0 -31
  101. package/dist/tokens/tokens.css +0 -120
@@ -0,0 +1,62 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("/* ═══════════════════════════════════════════════\n axen-form Date Picker\n Custom calendar dropdown for DateField\n Styled to match TimePicker popup\n ═══════════════════════════════════════════════ */\n\n._overlay_1cdkj_7 {\n position: fixed;\n inset: 0;\n z-index: calc(var(--axen-z-dropdown, 100) - 1);\n}\n\n._picker_1cdkj_13 {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: var(--axen-z-dropdown, 100);\n margin-top: var(--axen-space-xs, 0.25rem);\n background: var(--axen-color-bg, #ffffff);\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n border-radius: var(--axen-border-radius, 8px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: var(--axen-space-sm, 0.5rem);\n min-width: 280px;\n user-select: none;\n}\n\n/* ── Header: nav arrows + month/year ─────────── */\n._header_1cdkj_29 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: var(--axen-space-sm, 0.5rem);\n}\n\n._navBtn_1cdkj_36 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--axen-border-radius-sm, 4px);\n background: transparent;\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-lg, 1.125rem);\n cursor: pointer;\n padding: 0;\n}\n\n._navBtn_1cdkj_36:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n}\n\n._navBtn_1cdkj_36:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}\n\n._headerTitle_1cdkj_60 {\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-weight: var(--axen-font-weight-medium, 500);\n color: var(--axen-color-text, #1a1a1a);\n}\n\n/* ── Weekday headers ─────────────────────────── */\n._weekdays_1cdkj_67 {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0;\n padding-bottom: var(--axen-space-xs, 0.25rem);\n}\n\n._weekday_1cdkj_67 {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 28px;\n font-size: var(--axen-font-size-xs, 0.75rem);\n font-weight: var(--axen-font-weight-medium, 500);\n color: var(--axen-color-text-secondary, #666666);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n/* ── Calendar grid ───────────────────────────── */\n._grid_1cdkj_87 {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 2px;\n}\n\n/* ── Day cell ────────────────────────────────── */\n._day_1cdkj_94 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: var(--axen-border-radius-sm, 4px);\n background: transparent;\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-family: var(--axen-font-family);\n cursor: pointer;\n transition: background-color var(--axen-transition-fast, 150ms ease);\n padding: 0;\n margin: 0 auto;\n}\n\n._day_1cdkj_94:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n}\n\n._day_1cdkj_94:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}\n\n._dayOutside_1cdkj_121 {\n color: var(--axen-color-text-disabled, #9e9e9e);\n}\n\n._dayToday_1cdkj_125 {\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n}\n\n._daySelected_1cdkj_129 {\n background-color: var(--axen-color-primary, #1976d2);\n color: #ffffff;\n font-weight: var(--axen-font-weight-medium, 500);\n}\n\n._daySelected_1cdkj_129:hover {\n background-color: var(--axen-color-primary-hover, #1565c0);\n}\n\n._dayWeekend_1cdkj_139 {\n color: var(--axen-color-error, #d32f2f);\n}\n\n._dayWeekend_1cdkj_139._dayOutside_1cdkj_121 {\n color: rgba(211, 47, 47, 0.4);\n}\n\n._dayWeekend_1cdkj_139._daySelected_1cdkj_129 {\n color: #ffffff;\n}\n\n/* ── Footer actions ──────────────────────────── */\n._footer_1cdkj_152 {\n display: flex;\n justify-content: space-between;\n gap: var(--axen-space-sm, 0.5rem);\n padding-top: var(--axen-space-sm, 0.5rem);\n margin-top: var(--axen-space-sm, 0.5rem);\n border-top: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n}\n\n._footerBtn_1cdkj_161 {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 36px;\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n border-radius: var(--axen-border-radius-sm, 4px);\n background: var(--axen-color-bg, #ffffff);\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-family: var(--axen-font-family);\n cursor: pointer;\n transition:\n background-color var(--axen-transition-fast, 150ms ease),\n border-color var(--axen-transition-fast, 150ms ease);\n padding: 0 var(--axen-space-sm, 0.5rem);\n}\n\n._footerBtn_1cdkj_161:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n border-color: var(--axen-color-border-hover, #888888);\n}\n\n._footerBtn_1cdkj_161:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
13
+ "use strict";
14
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
15
+ const overlay = "_overlay_1cdkj_7";
16
+ const picker = "_picker_1cdkj_13";
17
+ const header = "_header_1cdkj_29";
18
+ const navBtn = "_navBtn_1cdkj_36";
19
+ const headerTitle = "_headerTitle_1cdkj_60";
20
+ const weekdays = "_weekdays_1cdkj_67";
21
+ const weekday = "_weekday_1cdkj_67";
22
+ const grid = "_grid_1cdkj_87";
23
+ const day = "_day_1cdkj_94";
24
+ const dayOutside = "_dayOutside_1cdkj_121";
25
+ const dayToday = "_dayToday_1cdkj_125";
26
+ const daySelected = "_daySelected_1cdkj_129";
27
+ const dayWeekend = "_dayWeekend_1cdkj_139";
28
+ const footer = "_footer_1cdkj_152";
29
+ const footerBtn = "_footerBtn_1cdkj_161";
30
+ const s = {
31
+ overlay,
32
+ picker,
33
+ header,
34
+ navBtn,
35
+ headerTitle,
36
+ weekdays,
37
+ weekday,
38
+ grid,
39
+ day,
40
+ dayOutside,
41
+ dayToday,
42
+ daySelected,
43
+ dayWeekend,
44
+ footer,
45
+ footerBtn
46
+ };
47
+ exports.day = day;
48
+ exports.dayOutside = dayOutside;
49
+ exports.daySelected = daySelected;
50
+ exports.dayToday = dayToday;
51
+ exports.dayWeekend = dayWeekend;
52
+ exports.default = s;
53
+ exports.footer = footer;
54
+ exports.footerBtn = footerBtn;
55
+ exports.grid = grid;
56
+ exports.header = header;
57
+ exports.headerTitle = headerTitle;
58
+ exports.navBtn = navBtn;
59
+ exports.overlay = overlay;
60
+ exports.picker = picker;
61
+ exports.weekday = weekday;
62
+ exports.weekdays = weekdays;
@@ -0,0 +1,62 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("/* ═══════════════════════════════════════════════\n axen-form Date Picker\n Custom calendar dropdown for DateField\n Styled to match TimePicker popup\n ═══════════════════════════════════════════════ */\n\n._overlay_1cdkj_7 {\n position: fixed;\n inset: 0;\n z-index: calc(var(--axen-z-dropdown, 100) - 1);\n}\n\n._picker_1cdkj_13 {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: var(--axen-z-dropdown, 100);\n margin-top: var(--axen-space-xs, 0.25rem);\n background: var(--axen-color-bg, #ffffff);\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n border-radius: var(--axen-border-radius, 8px);\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n padding: var(--axen-space-sm, 0.5rem);\n min-width: 280px;\n user-select: none;\n}\n\n/* ── Header: nav arrows + month/year ─────────── */\n._header_1cdkj_29 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: var(--axen-space-sm, 0.5rem);\n}\n\n._navBtn_1cdkj_36 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n border-radius: var(--axen-border-radius-sm, 4px);\n background: transparent;\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-lg, 1.125rem);\n cursor: pointer;\n padding: 0;\n}\n\n._navBtn_1cdkj_36:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n}\n\n._navBtn_1cdkj_36:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}\n\n._headerTitle_1cdkj_60 {\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-weight: var(--axen-font-weight-medium, 500);\n color: var(--axen-color-text, #1a1a1a);\n}\n\n/* ── Weekday headers ─────────────────────────── */\n._weekdays_1cdkj_67 {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 0;\n padding-bottom: var(--axen-space-xs, 0.25rem);\n}\n\n._weekday_1cdkj_67 {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 28px;\n font-size: var(--axen-font-size-xs, 0.75rem);\n font-weight: var(--axen-font-weight-medium, 500);\n color: var(--axen-color-text-secondary, #666666);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n/* ── Calendar grid ───────────────────────────── */\n._grid_1cdkj_87 {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n gap: 2px;\n}\n\n/* ── Day cell ────────────────────────────────── */\n._day_1cdkj_94 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: var(--axen-border-radius-sm, 4px);\n background: transparent;\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-family: var(--axen-font-family);\n cursor: pointer;\n transition: background-color var(--axen-transition-fast, 150ms ease);\n padding: 0;\n margin: 0 auto;\n}\n\n._day_1cdkj_94:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n}\n\n._day_1cdkj_94:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}\n\n._dayOutside_1cdkj_121 {\n color: var(--axen-color-text-disabled, #9e9e9e);\n}\n\n._dayToday_1cdkj_125 {\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n}\n\n._daySelected_1cdkj_129 {\n background-color: var(--axen-color-primary, #1976d2);\n color: #ffffff;\n font-weight: var(--axen-font-weight-medium, 500);\n}\n\n._daySelected_1cdkj_129:hover {\n background-color: var(--axen-color-primary-hover, #1565c0);\n}\n\n._dayWeekend_1cdkj_139 {\n color: var(--axen-color-error, #d32f2f);\n}\n\n._dayWeekend_1cdkj_139._dayOutside_1cdkj_121 {\n color: rgba(211, 47, 47, 0.4);\n}\n\n._dayWeekend_1cdkj_139._daySelected_1cdkj_129 {\n color: #ffffff;\n}\n\n/* ── Footer actions ──────────────────────────── */\n._footer_1cdkj_152 {\n display: flex;\n justify-content: space-between;\n gap: var(--axen-space-sm, 0.5rem);\n padding-top: var(--axen-space-sm, 0.5rem);\n margin-top: var(--axen-space-sm, 0.5rem);\n border-top: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n}\n\n._footerBtn_1cdkj_161 {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 36px;\n border: var(--axen-border-width, 1px) solid var(--axen-color-border, #d0d5dd);\n border-radius: var(--axen-border-radius-sm, 4px);\n background: var(--axen-color-bg, #ffffff);\n color: var(--axen-color-text, #1a1a1a);\n font-size: var(--axen-font-size-sm, 0.875rem);\n font-family: var(--axen-font-family);\n cursor: pointer;\n transition:\n background-color var(--axen-transition-fast, 150ms ease),\n border-color var(--axen-transition-fast, 150ms ease);\n padding: 0 var(--axen-space-sm, 0.5rem);\n}\n\n._footerBtn_1cdkj_161:hover {\n background-color: var(--axen-color-bg-hover, #fafafa);\n border-color: var(--axen-color-border-hover, #888888);\n}\n\n._footerBtn_1cdkj_161:focus-visible {\n outline: var(--axen-focus-ring-width, 2px) solid var(--axen-focus-ring-color);\n outline-offset: -2px;\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
13
+ const overlay = "_overlay_1cdkj_7";
14
+ const picker = "_picker_1cdkj_13";
15
+ const header = "_header_1cdkj_29";
16
+ const navBtn = "_navBtn_1cdkj_36";
17
+ const headerTitle = "_headerTitle_1cdkj_60";
18
+ const weekdays = "_weekdays_1cdkj_67";
19
+ const weekday = "_weekday_1cdkj_67";
20
+ const grid = "_grid_1cdkj_87";
21
+ const day = "_day_1cdkj_94";
22
+ const dayOutside = "_dayOutside_1cdkj_121";
23
+ const dayToday = "_dayToday_1cdkj_125";
24
+ const daySelected = "_daySelected_1cdkj_129";
25
+ const dayWeekend = "_dayWeekend_1cdkj_139";
26
+ const footer = "_footer_1cdkj_152";
27
+ const footerBtn = "_footerBtn_1cdkj_161";
28
+ const s = {
29
+ overlay,
30
+ picker,
31
+ header,
32
+ navBtn,
33
+ headerTitle,
34
+ weekdays,
35
+ weekday,
36
+ grid,
37
+ day,
38
+ dayOutside,
39
+ dayToday,
40
+ daySelected,
41
+ dayWeekend,
42
+ footer,
43
+ footerBtn
44
+ };
45
+ export {
46
+ day,
47
+ dayOutside,
48
+ daySelected,
49
+ dayToday,
50
+ dayWeekend,
51
+ s as default,
52
+ footer,
53
+ footerBtn,
54
+ grid,
55
+ header,
56
+ headerTitle,
57
+ navBtn,
58
+ overlay,
59
+ picker,
60
+ weekday,
61
+ weekdays
62
+ };
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
4
5
  const dateUtils = require("../../core/dateUtils.cjs");
6
+ const DatePicker = require("../DateField/DatePicker.cjs");
5
7
  const fieldBase_module = require("../fieldBase.module.css.cjs");
6
8
  const fieldUtils = require("../fieldUtils.cjs");
9
+ const icons = require("../icons.cjs");
7
10
  const iconUtils = require("../iconUtils.cjs");
11
+ const TimePicker = require("../TimeField/TimePicker.cjs");
8
12
  function DateTimeField({
9
13
  name,
10
14
  value,
@@ -21,16 +25,80 @@ function DateTimeField({
21
25
  max,
22
26
  locale,
23
27
  ampm,
24
- icon
28
+ icon,
29
+ form,
30
+ showSeconds
25
31
  }) {
32
+ const [isDateOpen, setIsDateOpen] = react.useState(false);
33
+ const [isTimeOpen, setIsTimeOpen] = react.useState(false);
34
+ const wrapperRef = react.useRef(null);
26
35
  const aria = fieldUtils.ariaProps(name, { error, helperText, required, label });
27
36
  const resolvedLocale = locale ?? dateUtils.getDefaultLocale();
28
37
  const resolvedIcon = iconUtils.resolveFieldIcon(icon, "datetime");
38
+ const resolvedShowSeconds = showSeconds === true;
29
39
  const dtValue = typeof value === "string" ? value : "";
30
40
  const displayText = dtValue ? dateUtils.formatDateTimeLocale(dtValue, resolvedLocale, ampm) : "";
31
41
  const handleChange = (e) => {
32
42
  onChange(e);
33
43
  };
44
+ const openDatePicker = react.useCallback(() => {
45
+ if (!disabled && !readOnly) {
46
+ setIsTimeOpen(false);
47
+ setIsDateOpen(true);
48
+ }
49
+ }, [disabled, readOnly]);
50
+ const openTimePicker = react.useCallback(() => {
51
+ if (!disabled && !readOnly) {
52
+ setIsDateOpen(false);
53
+ setIsTimeOpen(true);
54
+ }
55
+ }, [disabled, readOnly]);
56
+ const handleDateApply = react.useCallback(
57
+ (isoDate) => {
58
+ const timePart = dtValue.includes("T") ? dtValue.split("T")[1] ?? "" : "";
59
+ if (isoDate === "") {
60
+ form.setFieldValue(name, "");
61
+ } else {
62
+ const newValue = timePart ? `${isoDate}T${timePart}` : `${isoDate}T00:00`;
63
+ form.setFieldValue(name, newValue);
64
+ }
65
+ setIsDateOpen(false);
66
+ },
67
+ [form, name, dtValue]
68
+ );
69
+ const handleTimeApply = react.useCallback(
70
+ (isoTime) => {
71
+ const datePart = dtValue.includes("T") ? dtValue.split("T")[0] : "";
72
+ const fallbackDate = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
73
+ const newValue = `${datePart || fallbackDate}T${isoTime}`;
74
+ form.setFieldValue(name, newValue);
75
+ setIsTimeOpen(false);
76
+ },
77
+ [form, name, dtValue]
78
+ );
79
+ const handleDateClose = react.useCallback(() => {
80
+ setIsDateOpen(false);
81
+ }, []);
82
+ const handleTimeClose = react.useCallback(() => {
83
+ setIsTimeOpen(false);
84
+ }, []);
85
+ const handleBlur = react.useCallback(
86
+ (e) => {
87
+ setTimeout(() => {
88
+ var _a;
89
+ if (!((_a = wrapperRef.current) == null ? void 0 : _a.contains(document.activeElement))) {
90
+ setIsDateOpen(false);
91
+ setIsTimeOpen(false);
92
+ onBlur(e);
93
+ }
94
+ }, 150);
95
+ },
96
+ [onBlur]
97
+ );
98
+ const currentDate = dtValue.includes("T") ? dtValue.split("T")[0] ?? "" : "";
99
+ const currentTime = dtValue.includes("T") ? dtValue.split("T")[1] ?? "" : "";
100
+ const minDate = (min == null ? void 0 : min.includes("T")) ? min.split("T")[0] : min;
101
+ const maxDate = (max == null ? void 0 : max.includes("T")) ? max.split("T")[0] : max;
34
102
  const inputEl = /* @__PURE__ */ jsxRuntime.jsx(
35
103
  "input",
36
104
  {
@@ -39,17 +107,22 @@ function DateTimeField({
39
107
  name,
40
108
  value: dtValue,
41
109
  onChange: handleChange,
42
- onBlur,
110
+ onBlur: handleBlur,
43
111
  placeholder,
44
112
  disabled,
45
113
  readOnly,
46
114
  min,
47
115
  max,
48
116
  lang: resolvedLocale,
49
- className: fieldUtils.cx(fieldBase_module.default.input, resolvedIcon && fieldBase_module.default.inputWithIcon, error && fieldBase_module.default.inputError)
117
+ className: fieldUtils.cx(
118
+ fieldBase_module.default.input,
119
+ resolvedIcon && fieldBase_module.default.inputWithIcon,
120
+ fieldBase_module.default.inputWithPicker,
121
+ error && fieldBase_module.default.inputError
122
+ )
50
123
  }
51
124
  );
52
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: fieldBase_module.default.wrapper, children: [
125
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: fieldBase_module.default.wrapper, ref: wrapperRef, style: { position: "relative" }, children: [
53
126
  label && /* @__PURE__ */ jsxRuntime.jsx(
54
127
  "label",
55
128
  {
@@ -59,10 +132,55 @@ function DateTimeField({
59
132
  children: label
60
133
  }
61
134
  ),
62
- resolvedIcon ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: fieldBase_module.default.inputIconWrapper, children: [
63
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: fieldBase_module.default.fieldIcon, children: resolvedIcon }),
64
- inputEl
65
- ] }) : inputEl,
135
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: fieldBase_module.default.inputIconWrapper, children: [
136
+ resolvedIcon && /* @__PURE__ */ jsxRuntime.jsx(
137
+ "button",
138
+ {
139
+ type: "button",
140
+ className: fieldBase_module.default.fieldIconClickable,
141
+ onClick: openDatePicker,
142
+ disabled: disabled || readOnly,
143
+ "aria-label": "Open date picker",
144
+ tabIndex: -1,
145
+ children: resolvedIcon
146
+ }
147
+ ),
148
+ inputEl,
149
+ /* @__PURE__ */ jsxRuntime.jsx(
150
+ "button",
151
+ {
152
+ type: "button",
153
+ className: fieldBase_module.default.pickerTrigger,
154
+ onClick: openTimePicker,
155
+ disabled: disabled || readOnly,
156
+ "aria-label": "Open time picker",
157
+ tabIndex: -1,
158
+ children: icons.ClockIcon
159
+ }
160
+ )
161
+ ] }),
162
+ isDateOpen && /* @__PURE__ */ jsxRuntime.jsx(
163
+ DatePicker.DatePicker,
164
+ {
165
+ value: currentDate,
166
+ min: minDate,
167
+ max: maxDate,
168
+ pickerId: `${name}-datepicker`,
169
+ onApply: handleDateApply,
170
+ onClose: handleDateClose
171
+ }
172
+ ),
173
+ isTimeOpen && /* @__PURE__ */ jsxRuntime.jsx(
174
+ TimePicker.TimePicker,
175
+ {
176
+ value: currentTime,
177
+ showSeconds: resolvedShowSeconds,
178
+ ampm: ampm === true,
179
+ pickerId: `${name}-timepicker`,
180
+ onApply: handleTimeApply,
181
+ onClose: handleTimeClose
182
+ }
183
+ ),
66
184
  displayText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: fieldBase_module.default.helperText, "aria-hidden": "true", children: displayText }),
67
185
  helperText && /* @__PURE__ */ jsxRuntime.jsx(
68
186
  "span",
@@ -1,8 +1,9 @@
1
1
  import { FieldComponentProps } from '../../types';
2
- export declare function DateTimeField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, min, max, locale, ampm, icon, }: Readonly<FieldComponentProps & {
2
+ export declare function DateTimeField({ name, value, onChange, onBlur, error, helperText, label, placeholder, disabled, readOnly, required, min, max, locale, ampm, icon, form, showSeconds, }: Readonly<FieldComponentProps & {
3
3
  min?: string;
4
4
  max?: string;
5
5
  locale?: string;
6
6
  ampm?: boolean;
7
+ showSeconds?: boolean;
7
8
  }>): import("react/jsx-runtime").JSX.Element;
8
9
  //# sourceMappingURL=DateTimeField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeField.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTimeField/DateTimeField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,GAAG,EACH,MAAM,EACN,IAAI,EACJ,IAAI,GACL,EAAE,QAAQ,CACT,mBAAmB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CACtF,2CAiEA"}
1
+ {"version":3,"file":"DateTimeField.d.ts","sourceRoot":"","sources":["../../../src/fields/DateTimeField/DateTimeField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAQvD,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,GAAG,EACH,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,WAAW,GACZ,EAAE,QAAQ,CACT,mBAAmB,GAAG;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CACF,2CAyLA"}
@@ -1,8 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useCallback } from "react";
2
3
  import { formatDateTimeLocale, getDefaultLocale } from "../../core/dateUtils.js";
4
+ import { DatePicker } from "../DateField/DatePicker.js";
3
5
  import styles from "../fieldBase.module.css.js";
4
6
  import { ariaProps, cx, labelId, helperId } from "../fieldUtils.js";
7
+ import { ClockIcon } from "../icons.js";
5
8
  import { resolveFieldIcon } from "../iconUtils.js";
9
+ import { TimePicker } from "../TimeField/TimePicker.js";
6
10
  function DateTimeField({
7
11
  name,
8
12
  value,
@@ -19,16 +23,80 @@ function DateTimeField({
19
23
  max,
20
24
  locale,
21
25
  ampm,
22
- icon
26
+ icon,
27
+ form,
28
+ showSeconds
23
29
  }) {
30
+ const [isDateOpen, setIsDateOpen] = useState(false);
31
+ const [isTimeOpen, setIsTimeOpen] = useState(false);
32
+ const wrapperRef = useRef(null);
24
33
  const aria = ariaProps(name, { error, helperText, required, label });
25
34
  const resolvedLocale = locale ?? getDefaultLocale();
26
35
  const resolvedIcon = resolveFieldIcon(icon, "datetime");
36
+ const resolvedShowSeconds = showSeconds === true;
27
37
  const dtValue = typeof value === "string" ? value : "";
28
38
  const displayText = dtValue ? formatDateTimeLocale(dtValue, resolvedLocale, ampm) : "";
29
39
  const handleChange = (e) => {
30
40
  onChange(e);
31
41
  };
42
+ const openDatePicker = useCallback(() => {
43
+ if (!disabled && !readOnly) {
44
+ setIsTimeOpen(false);
45
+ setIsDateOpen(true);
46
+ }
47
+ }, [disabled, readOnly]);
48
+ const openTimePicker = useCallback(() => {
49
+ if (!disabled && !readOnly) {
50
+ setIsDateOpen(false);
51
+ setIsTimeOpen(true);
52
+ }
53
+ }, [disabled, readOnly]);
54
+ const handleDateApply = useCallback(
55
+ (isoDate) => {
56
+ const timePart = dtValue.includes("T") ? dtValue.split("T")[1] ?? "" : "";
57
+ if (isoDate === "") {
58
+ form.setFieldValue(name, "");
59
+ } else {
60
+ const newValue = timePart ? `${isoDate}T${timePart}` : `${isoDate}T00:00`;
61
+ form.setFieldValue(name, newValue);
62
+ }
63
+ setIsDateOpen(false);
64
+ },
65
+ [form, name, dtValue]
66
+ );
67
+ const handleTimeApply = useCallback(
68
+ (isoTime) => {
69
+ const datePart = dtValue.includes("T") ? dtValue.split("T")[0] : "";
70
+ const fallbackDate = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
71
+ const newValue = `${datePart || fallbackDate}T${isoTime}`;
72
+ form.setFieldValue(name, newValue);
73
+ setIsTimeOpen(false);
74
+ },
75
+ [form, name, dtValue]
76
+ );
77
+ const handleDateClose = useCallback(() => {
78
+ setIsDateOpen(false);
79
+ }, []);
80
+ const handleTimeClose = useCallback(() => {
81
+ setIsTimeOpen(false);
82
+ }, []);
83
+ const handleBlur = useCallback(
84
+ (e) => {
85
+ setTimeout(() => {
86
+ var _a;
87
+ if (!((_a = wrapperRef.current) == null ? void 0 : _a.contains(document.activeElement))) {
88
+ setIsDateOpen(false);
89
+ setIsTimeOpen(false);
90
+ onBlur(e);
91
+ }
92
+ }, 150);
93
+ },
94
+ [onBlur]
95
+ );
96
+ const currentDate = dtValue.includes("T") ? dtValue.split("T")[0] ?? "" : "";
97
+ const currentTime = dtValue.includes("T") ? dtValue.split("T")[1] ?? "" : "";
98
+ const minDate = (min == null ? void 0 : min.includes("T")) ? min.split("T")[0] : min;
99
+ const maxDate = (max == null ? void 0 : max.includes("T")) ? max.split("T")[0] : max;
32
100
  const inputEl = /* @__PURE__ */ jsx(
33
101
  "input",
34
102
  {
@@ -37,17 +105,22 @@ function DateTimeField({
37
105
  name,
38
106
  value: dtValue,
39
107
  onChange: handleChange,
40
- onBlur,
108
+ onBlur: handleBlur,
41
109
  placeholder,
42
110
  disabled,
43
111
  readOnly,
44
112
  min,
45
113
  max,
46
114
  lang: resolvedLocale,
47
- className: cx(styles.input, resolvedIcon && styles.inputWithIcon, error && styles.inputError)
115
+ className: cx(
116
+ styles.input,
117
+ resolvedIcon && styles.inputWithIcon,
118
+ styles.inputWithPicker,
119
+ error && styles.inputError
120
+ )
48
121
  }
49
122
  );
50
- return /* @__PURE__ */ jsxs("div", { className: styles.wrapper, children: [
123
+ return /* @__PURE__ */ jsxs("div", { className: styles.wrapper, ref: wrapperRef, style: { position: "relative" }, children: [
51
124
  label && /* @__PURE__ */ jsx(
52
125
  "label",
53
126
  {
@@ -57,10 +130,55 @@ function DateTimeField({
57
130
  children: label
58
131
  }
59
132
  ),
60
- resolvedIcon ? /* @__PURE__ */ jsxs("div", { className: styles.inputIconWrapper, children: [
61
- /* @__PURE__ */ jsx("span", { className: styles.fieldIcon, children: resolvedIcon }),
62
- inputEl
63
- ] }) : inputEl,
133
+ /* @__PURE__ */ jsxs("div", { className: styles.inputIconWrapper, children: [
134
+ resolvedIcon && /* @__PURE__ */ jsx(
135
+ "button",
136
+ {
137
+ type: "button",
138
+ className: styles.fieldIconClickable,
139
+ onClick: openDatePicker,
140
+ disabled: disabled || readOnly,
141
+ "aria-label": "Open date picker",
142
+ tabIndex: -1,
143
+ children: resolvedIcon
144
+ }
145
+ ),
146
+ inputEl,
147
+ /* @__PURE__ */ jsx(
148
+ "button",
149
+ {
150
+ type: "button",
151
+ className: styles.pickerTrigger,
152
+ onClick: openTimePicker,
153
+ disabled: disabled || readOnly,
154
+ "aria-label": "Open time picker",
155
+ tabIndex: -1,
156
+ children: ClockIcon
157
+ }
158
+ )
159
+ ] }),
160
+ isDateOpen && /* @__PURE__ */ jsx(
161
+ DatePicker,
162
+ {
163
+ value: currentDate,
164
+ min: minDate,
165
+ max: maxDate,
166
+ pickerId: `${name}-datepicker`,
167
+ onApply: handleDateApply,
168
+ onClose: handleDateClose
169
+ }
170
+ ),
171
+ isTimeOpen && /* @__PURE__ */ jsx(
172
+ TimePicker,
173
+ {
174
+ value: currentTime,
175
+ showSeconds: resolvedShowSeconds,
176
+ ampm: ampm === true,
177
+ pickerId: `${name}-timepicker`,
178
+ onApply: handleTimeApply,
179
+ onClose: handleTimeClose
180
+ }
181
+ ),
64
182
  displayText && /* @__PURE__ */ jsx("span", { className: styles.helperText, "aria-hidden": "true", children: displayText }),
65
183
  helperText && /* @__PURE__ */ jsx(
66
184
  "span",
@@ -1,3 +1,15 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._inputWrap_1nxa7_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._passwordInput_1nxa7_7 {\n padding-right: 2.5rem;\n}\n\n._toggle_1nxa7_11 {\n position: absolute;\n right: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--axen-color-text-secondary);\n font-size: var(--axen-font-size-lg);\n border-radius: var(--axen-border-radius-sm);\n transition: color var(--axen-transition-fast);\n}\n\n._toggle_1nxa7_11:hover:not(:disabled) {\n color: var(--axen-color-text);\n}\n\n._toggle_1nxa7_11:focus-visible {\n outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);\n outline-offset: var(--axen-focus-ring-offset);\n}\n\n._toggle_1nxa7_11:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  "use strict";
2
14
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
15
  const inputWrap = "_inputWrap_1nxa7_1";
@@ -1,3 +1,15 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._inputWrap_1nxa7_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._passwordInput_1nxa7_7 {\n padding-right: 2.5rem;\n}\n\n._toggle_1nxa7_11 {\n position: absolute;\n right: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--axen-color-text-secondary);\n font-size: var(--axen-font-size-lg);\n border-radius: var(--axen-border-radius-sm);\n transition: color var(--axen-transition-fast);\n}\n\n._toggle_1nxa7_11:hover:not(:disabled) {\n color: var(--axen-color-text);\n}\n\n._toggle_1nxa7_11:focus-visible {\n outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);\n outline-offset: var(--axen-focus-ring-offset);\n}\n\n._toggle_1nxa7_11:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  const inputWrap = "_inputWrap_1nxa7_1";
2
14
  const passwordInput = "_passwordInput_1nxa7_7";
3
15
  const toggle = "_toggle_1nxa7_11";
@@ -1,3 +1,15 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._radioGroup_1nz5i_1 {\n display: flex;\n flex-direction: column;\n gap: var(--axen-space-xs);\n}\n\n._radioLabel_1nz5i_7 {\n cursor: pointer;\n}\n\n._radio_1nz5i_1 {\n width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n accent-color: var(--axen-color-primary);\n}\n\n._radio_1nz5i_1:focus-visible {\n outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);\n outline-offset: var(--axen-focus-ring-offset);\n}\n\n._radio_1nz5i_1:disabled {\n cursor: not-allowed;\n}\n\n/* Mobile: larger touch target */\n@media (max-width: 599px) {\n ._radio_1nz5i_1 {\n width: 24px;\n height: 24px;\n }\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  "use strict";
2
14
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
15
  const radioGroup = "_radioGroup_1nz5i_1";
@@ -1,3 +1,15 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._radioGroup_1nz5i_1 {\n display: flex;\n flex-direction: column;\n gap: var(--axen-space-xs);\n}\n\n._radioLabel_1nz5i_7 {\n cursor: pointer;\n}\n\n._radio_1nz5i_1 {\n width: 20px;\n height: 20px;\n margin: 0;\n cursor: pointer;\n accent-color: var(--axen-color-primary);\n}\n\n._radio_1nz5i_1:focus-visible {\n outline: var(--axen-focus-ring-width) solid var(--axen-focus-ring-color);\n outline-offset: var(--axen-focus-ring-offset);\n}\n\n._radio_1nz5i_1:disabled {\n cursor: not-allowed;\n}\n\n/* Mobile: larger touch target */\n@media (max-width: 599px) {\n ._radio_1nz5i_1 {\n width: 24px;\n height: 24px;\n }\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  const radioGroup = "_radioGroup_1nz5i_1";
2
14
  const radioLabel = "_radioLabel_1nz5i_7";
3
15
  const radio = "_radio_1nz5i_1";
@@ -1,8 +1,20 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._sliderWrap_1x3d4_1 {\n display: flex;\n align-items: center;\n gap: var(--axen-space-md);\n min-height: var(--axen-field-min-height);\n}\n\n._slider_1x3d4_1 {\n flex: 1;\n min-width: 0;\n width: 100%;\n height: 6px;\n appearance: none;\n background: var(--axen-color-border);\n border-radius: var(--axen-border-radius-pill);\n outline: none;\n cursor: pointer;\n transition: background var(--axen-transition-fast);\n}\n\n._slider_1x3d4_1::-webkit-slider-thumb {\n appearance: none;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--axen-color-primary);\n border: 2px solid var(--axen-color-bg);\n box-shadow: var(--axen-shadow-sm);\n cursor: pointer;\n transition:\n background var(--axen-transition-fast),\n transform var(--axen-transition-fast);\n}\n\n._slider_1x3d4_1::-webkit-slider-thumb:hover {\n background: var(--axen-color-primary-hover);\n transform: scale(1.15);\n}\n\n._slider_1x3d4_1:focus-visible::-webkit-slider-thumb {\n box-shadow: var(--axen-shadow-focus);\n}\n\n._slider_1x3d4_1::-moz-range-thumb {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--axen-color-primary);\n border: 2px solid var(--axen-color-bg);\n box-shadow: var(--axen-shadow-sm);\n cursor: pointer;\n}\n\n._slider_1x3d4_1:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._output_1x3d4_59 {\n min-width: 2.5em;\n text-align: center;\n font-size: var(--axen-font-size-sm);\n font-weight: var(--axen-font-weight-medium);\n color: var(--axen-color-text);\n}\n\n/* Touch target for mobile */\n@media (max-width: 599px) {\n ._slider_1x3d4_1::-webkit-slider-thumb {\n width: 28px;\n height: 28px;\n }\n\n ._slider_1x3d4_1::-moz-range-thumb {\n width: 28px;\n height: 28px;\n }\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  "use strict";
2
14
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const sliderWrap = "_sliderWrap_84w8t_1";
4
- const slider = "_slider_84w8t_1";
5
- const output = "_output_84w8t_57";
15
+ const sliderWrap = "_sliderWrap_1x3d4_1";
16
+ const slider = "_slider_1x3d4_1";
17
+ const output = "_output_1x3d4_59";
6
18
  const localStyles = {
7
19
  sliderWrap,
8
20
  slider,
@@ -1,6 +1,18 @@
1
- const sliderWrap = "_sliderWrap_84w8t_1";
2
- const slider = "_slider_84w8t_1";
3
- const output = "_output_84w8t_57";
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._sliderWrap_1x3d4_1 {\n display: flex;\n align-items: center;\n gap: var(--axen-space-md);\n min-height: var(--axen-field-min-height);\n}\n\n._slider_1x3d4_1 {\n flex: 1;\n min-width: 0;\n width: 100%;\n height: 6px;\n appearance: none;\n background: var(--axen-color-border);\n border-radius: var(--axen-border-radius-pill);\n outline: none;\n cursor: pointer;\n transition: background var(--axen-transition-fast);\n}\n\n._slider_1x3d4_1::-webkit-slider-thumb {\n appearance: none;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--axen-color-primary);\n border: 2px solid var(--axen-color-bg);\n box-shadow: var(--axen-shadow-sm);\n cursor: pointer;\n transition:\n background var(--axen-transition-fast),\n transform var(--axen-transition-fast);\n}\n\n._slider_1x3d4_1::-webkit-slider-thumb:hover {\n background: var(--axen-color-primary-hover);\n transform: scale(1.15);\n}\n\n._slider_1x3d4_1:focus-visible::-webkit-slider-thumb {\n box-shadow: var(--axen-shadow-focus);\n}\n\n._slider_1x3d4_1::-moz-range-thumb {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: var(--axen-color-primary);\n border: 2px solid var(--axen-color-bg);\n box-shadow: var(--axen-shadow-sm);\n cursor: pointer;\n}\n\n._slider_1x3d4_1:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._output_1x3d4_59 {\n min-width: 2.5em;\n text-align: center;\n font-size: var(--axen-font-size-sm);\n font-weight: var(--axen-font-weight-medium);\n color: var(--axen-color-text);\n}\n\n/* Touch target for mobile */\n@media (max-width: 599px) {\n ._slider_1x3d4_1::-webkit-slider-thumb {\n width: 28px;\n height: 28px;\n }\n\n ._slider_1x3d4_1::-moz-range-thumb {\n width: 28px;\n height: 28px;\n }\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
13
+ const sliderWrap = "_sliderWrap_1x3d4_1";
14
+ const slider = "_slider_1x3d4_1";
15
+ const output = "_output_1x3d4_59";
4
16
  const localStyles = {
5
17
  sliderWrap,
6
18
  slider,
@@ -1,3 +1,15 @@
1
+ (function() {
2
+ "use strict";
3
+ try {
4
+ if (typeof document != "undefined") {
5
+ var elementStyle = document.createElement("style");
6
+ elementStyle.appendChild(document.createTextNode("._switchLabel_1itxk_1 {\n cursor: pointer;\n}\n\n._switchTrack_1itxk_5 {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 44px;\n height: 24px;\n background-color: var(--axen-color-border);\n border-radius: var(--axen-border-radius-pill);\n transition: background-color var(--axen-transition-fast);\n flex-shrink: 0;\n}\n\n._switchInput_1itxk_17 {\n position: absolute;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n opacity: 0;\n cursor: pointer;\n}\n\n._switchInput_1itxk_17:checked + ._switchThumb_1itxk_27 {\n transform: translateX(20px);\n}\n\n._switchInput_1itxk_17:checked ~ ._switchThumb_1itxk_27 {\n transform: translateX(20px);\n}\n\n._switchTrack_1itxk_5:has(._switchInput_1itxk_17:checked) {\n background-color: var(--axen-color-primary);\n}\n\n._switchInput_1itxk_17:focus-visible ~ ._switchThumb_1itxk_27 {\n box-shadow: var(--axen-shadow-focus);\n}\n\n._switchInput_1itxk_17:disabled {\n cursor: not-allowed;\n}\n\n._switchTrack_1itxk_5:has(._switchInput_1itxk_17:disabled) {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._switchThumb_1itxk_27 {\n position: absolute;\n left: 2px;\n width: 20px;\n height: 20px;\n background-color: var(--axen-color-bg);\n border-radius: 50%;\n box-shadow: var(--axen-shadow-sm);\n transition: transform var(--axen-transition-fast);\n pointer-events: none;\n}\n\n/* Mobile: larger touch target */\n@media (max-width: 599px) {\n ._switchTrack_1itxk_5 {\n width: 52px;\n height: 28px;\n }\n\n ._switchThumb_1itxk_27 {\n width: 24px;\n height: 24px;\n }\n\n ._switchInput_1itxk_17:checked ~ ._switchThumb_1itxk_27 {\n transform: translateX(24px);\n }\n}"));
7
+ document.head.appendChild(elementStyle);
8
+ }
9
+ } catch (e) {
10
+ console.error("vite-plugin-css-injected-by-js", e);
11
+ }
12
+ })();
1
13
  "use strict";
2
14
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
15
  const switchLabel = "_switchLabel_1itxk_1";