@axenstudio/axen-form 0.1.10 → 0.1.12

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 (88) 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/SelectField/SelectField.cjs +6 -1
  42. package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
  43. package/dist/fields/SelectField/SelectField.js +6 -1
  44. package/dist/fields/SliderField/SliderField.module.css.cjs +15 -3
  45. package/dist/fields/SliderField/SliderField.module.css.js +15 -3
  46. package/dist/fields/SwitchField/SwitchField.module.css.cjs +12 -0
  47. package/dist/fields/SwitchField/SwitchField.module.css.js +12 -0
  48. package/dist/fields/TimeField/TimeField.cjs +60 -5
  49. package/dist/fields/TimeField/TimeField.d.ts +2 -1
  50. package/dist/fields/TimeField/TimeField.d.ts.map +1 -1
  51. package/dist/fields/TimeField/TimeField.js +60 -5
  52. package/dist/fields/TimeField/TimePicker.cjs +182 -0
  53. package/dist/fields/TimeField/TimePicker.d.ts +11 -0
  54. package/dist/fields/TimeField/TimePicker.d.ts.map +1 -0
  55. package/dist/fields/TimeField/TimePicker.js +182 -0
  56. package/dist/fields/TimeField/TimePicker.module.css.cjs +50 -0
  57. package/dist/fields/TimeField/TimePicker.module.css.js +50 -0
  58. package/dist/fields/defaultPlaceholders.cjs +1 -0
  59. package/dist/fields/defaultPlaceholders.d.ts.map +1 -1
  60. package/dist/fields/defaultPlaceholders.js +1 -0
  61. package/dist/fields/fieldBase.module.css.cjs +373 -18
  62. package/dist/fields/fieldBase.module.css.js +373 -18
  63. package/dist/fields/icons.cjs +2 -0
  64. package/dist/fields/icons.d.ts +4 -0
  65. package/dist/fields/icons.d.ts.map +1 -1
  66. package/dist/fields/icons.js +2 -0
  67. package/dist/index.cjs +230 -3
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +230 -3
  71. package/dist/layout/Box/Box.module.css.cjs +12 -0
  72. package/dist/layout/Box/Box.module.css.js +12 -0
  73. package/dist/layout/Divider/Divider.module.css.cjs +12 -0
  74. package/dist/layout/Divider/Divider.module.css.js +12 -0
  75. package/dist/layout/Grid/Grid.module.css.cjs +12 -0
  76. package/dist/layout/Grid/Grid.module.css.js +12 -0
  77. package/dist/layout/Stack/Stack.module.css.cjs +12 -0
  78. package/dist/layout/Stack/Stack.module.css.js +12 -0
  79. package/dist/react/AxenForm.cjs +228 -3
  80. package/dist/react/AxenForm.js +228 -3
  81. package/dist/react/fieldGroup.module.css.cjs +12 -0
  82. package/dist/react/fieldGroup.module.css.js +12 -0
  83. package/dist/react/gridCell.module.css.cjs +12 -0
  84. package/dist/react/gridCell.module.css.js +12 -0
  85. package/dist/types.d.ts +1 -0
  86. package/dist/types.d.ts.map +1 -1
  87. package/package.json +4 -9
  88. package/dist/axen-form.css +0 -1057
@@ -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";
@@ -37,7 +37,12 @@ function SelectField({
37
37
  onChange,
38
38
  onBlur,
39
39
  disabled: disabled || readOnly,
40
- className: fieldUtils.cx(fieldBase_module.default.input, fieldBase_module.default.select, error && fieldBase_module.default.inputError),
40
+ className: fieldUtils.cx(
41
+ fieldBase_module.default.input,
42
+ fieldBase_module.default.select,
43
+ error && fieldBase_module.default.inputError,
44
+ !value && fieldBase_module.default.selectPlaceholder
45
+ ),
41
46
  children: [
42
47
  placeholder && /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: placeholder }),
43
48
  options == null ? void 0 : options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
@@ -1 +1 @@
1
- {"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../../src/fields/SelectField/SelectField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CA6C/B"}
1
+ {"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../../src/fields/SelectField/SelectField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CAkD/B"}
@@ -35,7 +35,12 @@ function SelectField({
35
35
  onChange,
36
36
  onBlur,
37
37
  disabled: disabled || readOnly,
38
- className: cx(styles.input, styles.select, error && styles.inputError),
38
+ className: cx(
39
+ styles.input,
40
+ styles.select,
41
+ error && styles.inputError,
42
+ !value && styles.selectPlaceholder
43
+ ),
39
44
  children: [
40
45
  placeholder && /* @__PURE__ */ jsx("option", { value: "", disabled: true, children: placeholder }),
41
46
  options == null ? void 0 : options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, disabled: opt.disabled, children: opt.label }, opt.value))
@@ -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,