@plastic-js/tsumiki 0.1.22 → 0.1.24

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 (199) hide show
  1. package/README.md +838 -65
  2. package/dist/components/Accordion.js +93 -4
  3. package/dist/components/Avatar.js +96 -4
  4. package/dist/components/BottomSheet.js +131 -0
  5. package/dist/components/Button.js +194 -0
  6. package/dist/components/CardNumberInput.js +28 -44
  7. package/dist/components/Carousel.js +71 -5
  8. package/dist/components/Checkbox.js +178 -4
  9. package/dist/components/Clipboard.js +135 -5
  10. package/dist/components/CloseButton.js +97 -0
  11. package/dist/components/Collapsible.js +22 -4
  12. package/dist/components/ColorPicker.js +327 -4
  13. package/dist/components/Combobox.js +86 -13
  14. package/dist/components/ConfirmDialog.js +174 -19
  15. package/dist/components/DateInput.js +437 -5
  16. package/dist/components/{DatePickerMobile/wheel.js → DateWheel.js} +1 -3
  17. package/dist/components/Dialog.js +214 -110
  18. package/dist/components/Drawer.js +169 -4
  19. package/dist/components/Field.js +121 -5
  20. package/dist/components/Fieldset.js +64 -5
  21. package/dist/components/FileUpload.js +181 -4
  22. package/dist/components/FocusTrap.js +0 -2
  23. package/dist/components/Icon.js +32 -17
  24. package/dist/components/Input.js +211 -0
  25. package/dist/components/Listbox.js +47 -4
  26. package/dist/components/Menu.js +99 -4
  27. package/dist/components/MoneyInput.js +33 -85
  28. package/dist/components/NumberInput.js +117 -4
  29. package/dist/components/Pagination.js +91 -5
  30. package/dist/components/Popover.js +123 -4
  31. package/dist/components/Portal.js +0 -2
  32. package/dist/components/Presence.js +0 -2
  33. package/dist/components/Progress.js +107 -4
  34. package/dist/components/RadioGroup.js +104 -4
  35. package/dist/components/RatingGroup.js +75 -4
  36. package/dist/components/SearchInput.js +60 -55
  37. package/dist/components/Select.js +428 -5
  38. package/dist/components/SelectPc.js +239 -0
  39. package/dist/components/SignaturePad.js +77 -4
  40. package/dist/components/Skeleton.js +2 -4
  41. package/dist/components/Slider.js +112 -4
  42. package/dist/components/Spinner.js +41 -0
  43. package/dist/components/Splitter.js +51 -4
  44. package/dist/components/Steps.js +259 -4
  45. package/dist/components/SwipeReveal.js +2 -4
  46. package/dist/components/Switch.js +147 -4
  47. package/dist/components/Tabs.js +80 -4
  48. package/dist/components/TagsInput.js +128 -4
  49. package/dist/components/Toast.js +174 -4
  50. package/dist/components/Toggle.js +39 -4
  51. package/dist/components/ToggleGroup.js +103 -4
  52. package/dist/components/Tour.js +63 -4
  53. package/dist/components/TreeView.js +113 -4
  54. package/dist/index.js +44 -45
  55. package/dist/tsumiki.css +1 -0
  56. package/docs/api.md +670 -0
  57. package/docs/component-api-pattern.md +362 -0
  58. package/package.json +16 -6
  59. package/src/styles/color.css +112 -0
  60. package/src/styles/index.css +1 -0
  61. package/src/styles/radius.css +27 -0
  62. package/src/styles/reset.css +111 -0
  63. package/src/styles/shadow.css +5 -0
  64. package/src/styles/sizing.css +59 -0
  65. package/src/styles/spacing.css +9 -0
  66. package/src/styles/theme.css +38 -0
  67. package/src/styles/tokens.css +22 -0
  68. package/src/styles/transition.css +5 -0
  69. package/src/styles/typography.css +8 -0
  70. package/dist/components/Accordion.js.map +0 -1
  71. package/dist/components/Avatar.js.map +0 -1
  72. package/dist/components/CardNumberInput.js.map +0 -1
  73. package/dist/components/Carousel.js.map +0 -1
  74. package/dist/components/Checkbox.js.map +0 -1
  75. package/dist/components/Clipboard.js.map +0 -1
  76. package/dist/components/Collapsible.js.map +0 -1
  77. package/dist/components/ColorPicker.js.map +0 -1
  78. package/dist/components/Combobox.js.map +0 -1
  79. package/dist/components/ConfirmDialog.js.map +0 -1
  80. package/dist/components/DateInput.js.map +0 -1
  81. package/dist/components/DatePicker.js +0 -7
  82. package/dist/components/DatePicker.js.map +0 -1
  83. package/dist/components/DatePickerMobile/index.js +0 -479
  84. package/dist/components/DatePickerMobile/index.js.map +0 -1
  85. package/dist/components/DatePickerMobile/wheel.js.map +0 -1
  86. package/dist/components/Dialog.js.map +0 -1
  87. package/dist/components/Drawer.js.map +0 -1
  88. package/dist/components/Field.js.map +0 -1
  89. package/dist/components/Fieldset.js.map +0 -1
  90. package/dist/components/FileUpload.js.map +0 -1
  91. package/dist/components/FilterableSelect.js +0 -210
  92. package/dist/components/FilterableSelect.js.map +0 -1
  93. package/dist/components/FilterableSelectMobile.js +0 -167
  94. package/dist/components/FilterableSelectMobile.js.map +0 -1
  95. package/dist/components/FocusTrap.js.map +0 -1
  96. package/dist/components/HoverCard.js +0 -7
  97. package/dist/components/HoverCard.js.map +0 -1
  98. package/dist/components/Icon.js.map +0 -1
  99. package/dist/components/Listbox.js.map +0 -1
  100. package/dist/components/Menu.js.map +0 -1
  101. package/dist/components/MoneyInput.js.map +0 -1
  102. package/dist/components/NumberInput.js.map +0 -1
  103. package/dist/components/Pagination.js.map +0 -1
  104. package/dist/components/Popover.js.map +0 -1
  105. package/dist/components/Portal.js.map +0 -1
  106. package/dist/components/Presence.js.map +0 -1
  107. package/dist/components/Progress.js.map +0 -1
  108. package/dist/components/RadioGroup.js.map +0 -1
  109. package/dist/components/RatingGroup.js.map +0 -1
  110. package/dist/components/SearchInput.js.map +0 -1
  111. package/dist/components/Select.js.map +0 -1
  112. package/dist/components/SelectMobile/anatomy.js +0 -10
  113. package/dist/components/SelectMobile/anatomy.js.map +0 -1
  114. package/dist/components/SelectMobile/index.js +0 -310
  115. package/dist/components/SelectMobile/index.js.map +0 -1
  116. package/dist/components/SignaturePad.js.map +0 -1
  117. package/dist/components/Skeleton.js.map +0 -1
  118. package/dist/components/Slider.js.map +0 -1
  119. package/dist/components/Splitter.js.map +0 -1
  120. package/dist/components/Steps.js.map +0 -1
  121. package/dist/components/SwipeReveal.js.map +0 -1
  122. package/dist/components/Switch.js.map +0 -1
  123. package/dist/components/Tabs.js.map +0 -1
  124. package/dist/components/TagsInput.js.map +0 -1
  125. package/dist/components/Toast.js.map +0 -1
  126. package/dist/components/Toggle.js.map +0 -1
  127. package/dist/components/ToggleGroup.js.map +0 -1
  128. package/dist/components/Tooltip.js +0 -7
  129. package/dist/components/Tooltip.js.map +0 -1
  130. package/dist/components/Tour.js.map +0 -1
  131. package/dist/components/TreeView.js.map +0 -1
  132. package/dist/node_modules/framesync/dist/es/create-render-step.js +0 -54
  133. package/dist/node_modules/framesync/dist/es/create-render-step.js.map +0 -1
  134. package/dist/node_modules/framesync/dist/es/index.js +0 -61
  135. package/dist/node_modules/framesync/dist/es/index.js.map +0 -1
  136. package/dist/node_modules/framesync/dist/es/on-next-frame.js +0 -8
  137. package/dist/node_modules/framesync/dist/es/on-next-frame.js.map +0 -1
  138. package/dist/node_modules/hey-listen/dist/hey-listen.es.js +0 -15
  139. package/dist/node_modules/hey-listen/dist/hey-listen.es.js.map +0 -1
  140. package/dist/node_modules/popmotion/dist/es/animations/generators/decay.js +0 -24
  141. package/dist/node_modules/popmotion/dist/es/animations/generators/decay.js.map +0 -1
  142. package/dist/node_modules/popmotion/dist/es/animations/generators/keyframes.js +0 -40
  143. package/dist/node_modules/popmotion/dist/es/animations/generators/keyframes.js.map +0 -1
  144. package/dist/node_modules/popmotion/dist/es/animations/generators/spring.js +0 -96
  145. package/dist/node_modules/popmotion/dist/es/animations/generators/spring.js.map +0 -1
  146. package/dist/node_modules/popmotion/dist/es/animations/index.js +0 -94
  147. package/dist/node_modules/popmotion/dist/es/animations/index.js.map +0 -1
  148. package/dist/node_modules/popmotion/dist/es/animations/inertia.js +0 -74
  149. package/dist/node_modules/popmotion/dist/es/animations/inertia.js.map +0 -1
  150. package/dist/node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.js +0 -21
  151. package/dist/node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.js.map +0 -1
  152. package/dist/node_modules/popmotion/dist/es/animations/utils/elapsed.js +0 -14
  153. package/dist/node_modules/popmotion/dist/es/animations/utils/elapsed.js.map +0 -1
  154. package/dist/node_modules/popmotion/dist/es/animations/utils/find-spring.js +0 -68
  155. package/dist/node_modules/popmotion/dist/es/animations/utils/find-spring.js.map +0 -1
  156. package/dist/node_modules/popmotion/dist/es/easing/index.js +0 -28
  157. package/dist/node_modules/popmotion/dist/es/easing/index.js.map +0 -1
  158. package/dist/node_modules/popmotion/dist/es/easing/utils.js +0 -13
  159. package/dist/node_modules/popmotion/dist/es/easing/utils.js.map +0 -1
  160. package/dist/node_modules/popmotion/dist/es/utils/clamp.js +0 -6
  161. package/dist/node_modules/popmotion/dist/es/utils/clamp.js.map +0 -1
  162. package/dist/node_modules/popmotion/dist/es/utils/hsla-to-rgba.js +0 -35
  163. package/dist/node_modules/popmotion/dist/es/utils/hsla-to-rgba.js.map +0 -1
  164. package/dist/node_modules/popmotion/dist/es/utils/inc.js +0 -6
  165. package/dist/node_modules/popmotion/dist/es/utils/inc.js.map +0 -1
  166. package/dist/node_modules/popmotion/dist/es/utils/interpolate.js +0 -69
  167. package/dist/node_modules/popmotion/dist/es/utils/interpolate.js.map +0 -1
  168. package/dist/node_modules/popmotion/dist/es/utils/mix-color.js +0 -45
  169. package/dist/node_modules/popmotion/dist/es/utils/mix-color.js.map +0 -1
  170. package/dist/node_modules/popmotion/dist/es/utils/mix-complex.js +0 -61
  171. package/dist/node_modules/popmotion/dist/es/utils/mix-complex.js.map +0 -1
  172. package/dist/node_modules/popmotion/dist/es/utils/mix.js +0 -6
  173. package/dist/node_modules/popmotion/dist/es/utils/mix.js.map +0 -1
  174. package/dist/node_modules/popmotion/dist/es/utils/pipe.js +0 -7
  175. package/dist/node_modules/popmotion/dist/es/utils/pipe.js.map +0 -1
  176. package/dist/node_modules/popmotion/dist/es/utils/progress.js +0 -9
  177. package/dist/node_modules/popmotion/dist/es/utils/progress.js.map +0 -1
  178. package/dist/node_modules/popmotion/dist/es/utils/velocity-per-second.js +0 -8
  179. package/dist/node_modules/popmotion/dist/es/utils/velocity-per-second.js.map +0 -1
  180. package/dist/node_modules/popmotion/node_modules/tslib/tslib.es6.js +0 -13
  181. package/dist/node_modules/popmotion/node_modules/tslib/tslib.es6.js.map +0 -1
  182. package/dist/node_modules/style-value-types/dist/es/color/hex.js +0 -39
  183. package/dist/node_modules/style-value-types/dist/es/color/hex.js.map +0 -1
  184. package/dist/node_modules/style-value-types/dist/es/color/hsla.js +0 -16
  185. package/dist/node_modules/style-value-types/dist/es/color/hsla.js.map +0 -1
  186. package/dist/node_modules/style-value-types/dist/es/color/index.js +0 -20
  187. package/dist/node_modules/style-value-types/dist/es/color/index.js.map +0 -1
  188. package/dist/node_modules/style-value-types/dist/es/color/rgba.js +0 -15
  189. package/dist/node_modules/style-value-types/dist/es/color/rgba.js.map +0 -1
  190. package/dist/node_modules/style-value-types/dist/es/color/utils.js +0 -19
  191. package/dist/node_modules/style-value-types/dist/es/color/utils.js.map +0 -1
  192. package/dist/node_modules/style-value-types/dist/es/complex/index.js +0 -58
  193. package/dist/node_modules/style-value-types/dist/es/complex/index.js.map +0 -1
  194. package/dist/node_modules/style-value-types/dist/es/numbers/index.js +0 -13
  195. package/dist/node_modules/style-value-types/dist/es/numbers/index.js.map +0 -1
  196. package/dist/node_modules/style-value-types/dist/es/numbers/units.js +0 -16
  197. package/dist/node_modules/style-value-types/dist/es/numbers/units.js.map +0 -1
  198. package/dist/node_modules/style-value-types/dist/es/utils.js +0 -13
  199. package/dist/node_modules/style-value-types/dist/es/utils.js.map +0 -1
@@ -1,7 +1,439 @@
1
- import { DateInput } from "@plastic-js/ark";
1
+ import Icon from "./Icon.js";
2
+ import { expandCircular, makeWheel } from "./DateWheel.js";
3
+ import { Fragment, insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
4
+ import { css } from "@emotion/css";
5
+ import { createEffect, createSignal, splitProps } from "@plastic-js/plastic";
2
6
  //#region src/components/DateInput.jsx
3
- var DateInput_default = DateInput;
7
+ var _tmpl4 = template("<div></div>");
8
+ var _tmpl3 = template("<div><div role=\"presentation\" aria-hidden=\"true\"></div><div role=\"dialog\" aria-label=\"Date picker\"><div><button type=\"button\">Cancel</button><span>Select Date</span><button type=\"button\">Done</button></div><div><div><div><span>Year</span><div><div></div><div></div></div></div><div><span>Month</span><div><div></div><div></div></div></div><div><span>Day</span><div><div></div><div></div></div></div></div></div></div></div>");
9
+ var _tmpl2 = template("<span></span>");
10
+ var _tmpl = template("<button type=\"button\"><!><span></span></button>");
11
+ var MONTH_NAMES_SHORT = [
12
+ "Jan",
13
+ "Feb",
14
+ "Mar",
15
+ "Apr",
16
+ "May",
17
+ "Jun",
18
+ "Jul",
19
+ "Aug",
20
+ "Sep",
21
+ "Oct",
22
+ "Nov",
23
+ "Dec"
24
+ ];
25
+ var daysInMonth = (year, month) => new Date(year, month + 1, 0).getDate();
26
+ var YEARS = Array.from({ length: 200 }, (_, i) => 1900 + i);
27
+ var MONTHS = Array.from({ length: 12 }, (_, i) => i);
28
+ var getDays = (year, month) => {
29
+ const count = daysInMonth(year, month);
30
+ return Array.from({ length: count }, (_, i) => i + 1);
31
+ };
32
+ var toDate = (year, month, day) => new Date(year, month, day);
33
+ var formatDateLabel = (date) => {
34
+ if (!date) return "";
35
+ return `${MONTH_NAMES_SHORT[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`;
36
+ };
37
+ var parseDate = (v) => {
38
+ if (!v) return null;
39
+ if (v instanceof Date) return isNaN(v.getTime()) ? null : v;
40
+ if (typeof v === "string") {
41
+ const d = /* @__PURE__ */ new Date(v + "T00:00:00");
42
+ return isNaN(d.getTime()) ? null : d;
43
+ }
44
+ return null;
45
+ };
46
+ var calendarSvg = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"/><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"/><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"/></svg>";
47
+ var triggerWrapperClass = css({
48
+ position: "relative",
49
+ width: "100%",
50
+ background: "none",
51
+ border: "none",
52
+ padding: 0,
53
+ font: "inherit",
54
+ cursor: "pointer",
55
+ color: "inherit",
56
+ outline: "none",
57
+ borderRadius: "10px",
58
+ WebkitTapHighlightColor: "transparent",
59
+ "&:focus-visible": { boxShadow: "0 0 0 2px var(--tsu-accent-9)" },
60
+ "&:disabled, &[aria-disabled=\"true\"]": {
61
+ opacity: .4,
62
+ cursor: "not-allowed",
63
+ boxShadow: "none"
64
+ }
65
+ });
66
+ var triggerDisabledClass = css({
67
+ opacity: .4,
68
+ cursor: "not-allowed"
69
+ });
70
+ var triggerClass = css({
71
+ width: "100%",
72
+ height: "var(--tsu-comp-height-md)",
73
+ padding: "0 36px 0 var(--tsu-comp-padding-x-md)",
74
+ background: "var(--tsu-bg)",
75
+ border: "1px solid var(--tsu-accent-8)",
76
+ borderRadius: "var(--tsu-radius-l1-md)",
77
+ color: "var(--tsu-fg)",
78
+ fontSize: "var(--tsu-comp-font-size-md)",
79
+ fontFamily: "inherit",
80
+ outline: "none",
81
+ boxSizing: "border-box",
82
+ display: "flex",
83
+ alignItems: "center",
84
+ cursor: "pointer",
85
+ transition: "border-color var(--tsu-transition-fast), background-color var(--tsu-transition-fast)",
86
+ "&:hover:not(:disabled)": { borderColor: "var(--tsu-focus-border)" }
87
+ });
88
+ var triggerPlaceholderClass = css({ color: "var(--tsu-neutral-11)" });
89
+ var triggerValueClass = css({ color: "var(--tsu-fg)" });
90
+ var calendarIconClass = css({
91
+ position: "absolute",
92
+ right: "10px",
93
+ top: "50%",
94
+ transform: "translateY(-50%)",
95
+ width: "18px",
96
+ height: "18px",
97
+ color: "var(--tsu-neutral-11)",
98
+ pointerEvents: "none"
99
+ });
100
+ var overlayClass = css({
101
+ position: "fixed",
102
+ inset: 0,
103
+ zIndex: 1e3,
104
+ display: "flex",
105
+ flexDirection: "column",
106
+ justifyContent: "flex-end",
107
+ pointerEvents: "none"
108
+ });
109
+ var backdropClass = css({
110
+ position: "absolute",
111
+ inset: 0,
112
+ background: "rgba(0,0,0,0.5)",
113
+ opacity: 0,
114
+ transition: "opacity 240ms ease"
115
+ });
116
+ var sheetClass = css({
117
+ position: "relative",
118
+ width: "100%",
119
+ display: "flex",
120
+ flexDirection: "column",
121
+ background: "var(--tsu-bg)",
122
+ borderTop: "1px solid var(--tsu-neutral-7)",
123
+ borderRadius: "18px 18px 0 0",
124
+ boxShadow: "0 -8px 32px rgba(0,0,0,0.4)",
125
+ paddingBottom: "env(safe-area-inset-bottom, 0px)",
126
+ transform: "translateY(100%)",
127
+ transition: "transform 280ms cubic-bezier(0.32, 0.72, 0, 1)"
128
+ });
129
+ var openClass = css({
130
+ pointerEvents: "auto",
131
+ [`& .${backdropClass}`]: { opacity: 1 },
132
+ [`& .${sheetClass}`]: { transform: "translateY(0)" }
133
+ });
134
+ var toolbarClass = css({
135
+ display: "flex",
136
+ justifyContent: "space-between",
137
+ alignItems: "center",
138
+ padding: "12px 16px",
139
+ borderBottom: "1px solid var(--tsu-neutral-7)",
140
+ flexShrink: 0
141
+ });
142
+ var toolbarBtnClass = css({
143
+ background: "none",
144
+ border: "none",
145
+ padding: "6px 0",
146
+ color: "var(--tsu-accent-9)",
147
+ fontSize: "16px",
148
+ fontFamily: "inherit",
149
+ cursor: "pointer",
150
+ WebkitTapHighlightColor: "transparent"
151
+ });
152
+ var toolbarTitleClass = css({
153
+ fontSize: "15px",
154
+ fontWeight: 600,
155
+ color: "var(--tsu-fg)"
156
+ });
157
+ var wheelAreaClass = css({
158
+ display: "flex",
159
+ justifyContent: "center",
160
+ alignItems: "stretch",
161
+ padding: "12px 0 20px",
162
+ position: "relative"
163
+ });
164
+ var columnWrapperClass = css({
165
+ display: "flex",
166
+ flexDirection: "column",
167
+ alignItems: "center",
168
+ overflow: "hidden",
169
+ position: "relative"
170
+ });
171
+ var columnLabelClass = css({
172
+ fontSize: "11px",
173
+ color: "var(--tsu-neutral-11)",
174
+ textTransform: "uppercase",
175
+ letterSpacing: "0.5px",
176
+ marginBottom: "6px",
177
+ fontWeight: 500
178
+ });
179
+ var columnViewportClass = css({
180
+ width: "100%",
181
+ height: `180px`,
182
+ overflow: "hidden",
183
+ position: "relative",
184
+ touchAction: "none",
185
+ "&::before, &::after": {
186
+ content: "\"\"",
187
+ position: "absolute",
188
+ left: 0,
189
+ right: 0,
190
+ height: `72px`,
191
+ pointerEvents: "none",
192
+ zIndex: 2
193
+ },
194
+ "&::before": {
195
+ top: 0,
196
+ background: "linear-gradient(to bottom, var(--tsu-bg) 0%, transparent 100%)"
197
+ },
198
+ "&::after": {
199
+ bottom: 0,
200
+ background: "linear-gradient(to top, var(--tsu-bg) 0%, transparent 100%)"
201
+ }
202
+ });
203
+ var columnListClass = css({ willChange: "transform" });
204
+ var highlightBarClass = css({
205
+ position: "absolute",
206
+ top: `72px`,
207
+ left: "10%",
208
+ right: "10%",
209
+ height: `36px`,
210
+ borderRadius: "8px",
211
+ background: "rgba(255,255,255,0.06)",
212
+ pointerEvents: "none",
213
+ zIndex: 1
214
+ });
215
+ var itemBaseClass = css({
216
+ height: `36px`,
217
+ display: "flex",
218
+ alignItems: "center",
219
+ justifyContent: "center",
220
+ fontSize: "20px",
221
+ color: "var(--tsu-neutral-11)",
222
+ userSelect: "none",
223
+ whiteSpace: "nowrap",
224
+ overflow: "hidden",
225
+ textOverflow: "ellipsis",
226
+ padding: "0 4px",
227
+ boxSizing: "border-box"
228
+ });
229
+ var selectedItemClass = css({
230
+ color: "var(--tsu-fg)",
231
+ fontWeight: 600,
232
+ fontSize: "22px"
233
+ });
234
+ var mountWheel = (el, wheel) => {
235
+ if (el._wheel && el._wheel !== wheel) el._wheel.destroy();
236
+ el._wheel = wheel;
237
+ wheel.mount(el);
238
+ };
239
+ var DateInput = (props = {}) => {
240
+ const [local] = splitProps(props, [
241
+ "value",
242
+ "onValueChange",
243
+ "placeholder",
244
+ "disabled",
245
+ "className"
246
+ ]);
247
+ const open = createSignal(false);
248
+ const resolveValue = () => {
249
+ return parseDate(typeof local.value === "function" ? local.value() : local.value);
250
+ };
251
+ const isDisabled = () => {
252
+ return !!(typeof local.disabled === "function" ? local.disabled() : local.disabled);
253
+ };
254
+ const tempYear = createSignal(2e3);
255
+ const tempMonth = createSignal(0);
256
+ const tempDay = createSignal(1);
257
+ const selectedValue = createSignal(null);
258
+ createEffect(() => {
259
+ if (!open()) return;
260
+ const onKey = (e) => {
261
+ if (e.key === "Escape") cancel();
262
+ };
263
+ document.addEventListener("keydown", onKey);
264
+ return () => {
265
+ document.removeEventListener("keydown", onKey);
266
+ };
267
+ });
268
+ const closeSheet = () => {
269
+ document.body.style.overflow = "";
270
+ open(false);
271
+ };
272
+ const openSheet = () => {
273
+ if (isDisabled()) return;
274
+ const d = resolveValue() || selectedValue() || /* @__PURE__ */ new Date();
275
+ tempYear(d.getFullYear());
276
+ tempMonth(d.getMonth());
277
+ tempDay(Math.min(d.getDate(), daysInMonth(d.getFullYear(), d.getMonth())));
278
+ document.body.style.overflow = "hidden";
279
+ open(true);
280
+ };
281
+ const confirm = () => {
282
+ const date = toDate(tempYear(), tempMonth(), tempDay());
283
+ selectedValue(date);
284
+ local.onValueChange?.(date);
285
+ closeSheet();
286
+ };
287
+ const cancel = () => {
288
+ closeSheet();
289
+ };
290
+ const dayItems = () => getDays(tempYear(), tempMonth());
291
+ return jsx(Fragment, { children: [() => {
292
+ const _el0 = _tmpl.cloneNode(true);
293
+ const _el1 = _el0.firstChild;
294
+ const _el2 = _el0.firstChild.nextSibling;
295
+ insert(_el0, () => {
296
+ const displayDate = resolveValue() || selectedValue();
297
+ return () => {
298
+ const _el0 = _tmpl2.cloneNode(true);
299
+ insert(_el0, () => displayDate ? formatDateLabel(displayDate) : local.placeholder || "Select date");
300
+ setProp(_el0, "className", () => `${triggerClass} ${displayDate ? triggerValueClass : triggerPlaceholderClass}`);
301
+ return _el0;
302
+ };
303
+ }, _el1);
304
+ insert(_el2, () => jsx(Icon, mergeProps({
305
+ svg: calendarSvg,
306
+ size: 18,
307
+ strokeWidth: 1.5
308
+ })));
309
+ setProp(_el2, "className", () => calendarIconClass);
310
+ setProp(_el0, "className", () => `${triggerWrapperClass} ${isDisabled() ? triggerDisabledClass : ""} ${local.className || ""}`);
311
+ setProp(_el0, "onClick", () => openSheet);
312
+ setProp(_el0, "aria-disabled", () => isDisabled());
313
+ return _el0;
314
+ }, () => {
315
+ if (!open()) return null;
316
+ const y = tempYear();
317
+ const m = tempMonth();
318
+ const days = dayItems();
319
+ const selDay = tempDay();
320
+ const yearWheel = makeWheel(YEARS, YEARS.indexOf(y), false);
321
+ const [monthItems, monthStartIdx] = expandCircular(MONTHS, m);
322
+ const monthWheel = makeWheel(monthItems, monthStartIdx, true);
323
+ const [dayItemsArr, dayStartIdx] = expandCircular(days, selDay - 1);
324
+ const dayWheel = makeWheel(dayItemsArr, dayStartIdx, true);
325
+ return () => {
326
+ const _el0 = _tmpl3.cloneNode(true);
327
+ const _el1 = _el0.firstChild;
328
+ const _el2 = _el0.firstChild.nextSibling;
329
+ const _el3 = _el2.firstChild;
330
+ const _el4 = _el3.firstChild;
331
+ const _el5 = _el3.firstChild.nextSibling;
332
+ const _el6 = _el3.firstChild.nextSibling.nextSibling;
333
+ const _el7 = _el2.firstChild.nextSibling;
334
+ const _el8 = _el7.firstChild;
335
+ const _el9 = _el8.firstChild;
336
+ const _el10 = _el9.firstChild;
337
+ const _el11 = _el9.firstChild.nextSibling;
338
+ const _el12 = _el11.firstChild;
339
+ const _el13 = _el11.firstChild.nextSibling;
340
+ const _el14 = _el8.firstChild.nextSibling;
341
+ const _el15 = _el14.firstChild;
342
+ const _el16 = _el14.firstChild.nextSibling;
343
+ const _el17 = _el16.firstChild;
344
+ const _el18 = _el16.firstChild.nextSibling;
345
+ const _el19 = _el8.firstChild.nextSibling.nextSibling;
346
+ const _el20 = _el19.firstChild;
347
+ const _el21 = _el19.firstChild.nextSibling;
348
+ const _el22 = _el21.firstChild;
349
+ const _el23 = _el21.firstChild.nextSibling;
350
+ setProp(_el1, "className", () => backdropClass);
351
+ setProp(_el1, "onClick", () => cancel);
352
+ setProp(_el4, "className", () => toolbarBtnClass);
353
+ setProp(_el4, "onClick", () => cancel);
354
+ setProp(_el5, "className", () => toolbarTitleClass);
355
+ setProp(_el6, "className", () => toolbarBtnClass);
356
+ setProp(_el6, "onClick", () => confirm);
357
+ setProp(_el3, "className", () => toolbarClass);
358
+ setProp(_el10, "className", () => columnLabelClass);
359
+ setProp(_el12, "className", () => highlightBarClass);
360
+ insert(_el13, () => YEARS.map((item, i) => () => {
361
+ const _el0 = _tmpl4.cloneNode(true);
362
+ insert(_el0, () => String(item));
363
+ setProp(_el0, "className", () => `${itemBaseClass} ${i === YEARS.indexOf(y) ? selectedItemClass : ""}`);
364
+ setProp(_el0, "key", () => i);
365
+ return _el0;
366
+ }));
367
+ setProp(_el13, "ref", (el) => {
368
+ if (el) mountWheel(el, yearWheel);
369
+ });
370
+ setProp(_el13, "className", () => columnListClass);
371
+ setProp(_el13, "onPointerDown", (e) => yearWheel.handlePointerDown(e));
372
+ setProp(_el13, "onPointerMove", (e) => yearWheel.handlePointerMove(e, e.currentTarget));
373
+ setProp(_el13, "onPointerUp", (e) => yearWheel.handlePointerUp(e, e.currentTarget, (idx) => {
374
+ const newYear = YEARS[idx];
375
+ tempYear(newYear);
376
+ const maxDay = daysInMonth(newYear, tempMonth());
377
+ if (tempDay() > maxDay) tempDay(maxDay);
378
+ }));
379
+ setProp(_el13, "onPointerCancel", (e) => yearWheel.handlePointerCancel(e, e.currentTarget));
380
+ setProp(_el11, "className", () => columnViewportClass);
381
+ setProp(_el9, "className", () => columnWrapperClass);
382
+ setProp(_el9, "style", () => ({ flex: 5 }));
383
+ setProp(_el15, "className", () => columnLabelClass);
384
+ setProp(_el17, "className", () => highlightBarClass);
385
+ insert(_el18, () => monthItems.map((item, i) => () => {
386
+ const _el0 = _tmpl4.cloneNode(true);
387
+ insert(_el0, () => MONTH_NAMES_SHORT[item]);
388
+ setProp(_el0, "className", () => `${itemBaseClass} ${i === monthStartIdx ? selectedItemClass : ""}`);
389
+ setProp(_el0, "key", () => i);
390
+ return _el0;
391
+ }));
392
+ setProp(_el18, "ref", (el) => {
393
+ if (el) mountWheel(el, monthWheel);
394
+ });
395
+ setProp(_el18, "className", () => columnListClass);
396
+ setProp(_el18, "onPointerDown", (e) => monthWheel.handlePointerDown(e));
397
+ setProp(_el18, "onPointerMove", (e) => monthWheel.handlePointerMove(e, e.currentTarget));
398
+ setProp(_el18, "onPointerUp", (e) => monthWheel.handlePointerUp(e, e.currentTarget, (idx) => {
399
+ tempMonth(idx);
400
+ const maxDay = daysInMonth(tempYear(), idx);
401
+ if (tempDay() > maxDay) tempDay(maxDay);
402
+ }));
403
+ setProp(_el18, "onPointerCancel", (e) => monthWheel.handlePointerCancel(e, e.currentTarget));
404
+ setProp(_el16, "className", () => columnViewportClass);
405
+ setProp(_el14, "className", () => columnWrapperClass);
406
+ setProp(_el14, "style", () => ({ flex: 6 }));
407
+ setProp(_el20, "className", () => columnLabelClass);
408
+ setProp(_el22, "className", () => highlightBarClass);
409
+ insert(_el23, () => dayItemsArr.map((item, i) => () => {
410
+ const _el0 = _tmpl4.cloneNode(true);
411
+ insert(_el0, () => String(item));
412
+ setProp(_el0, "className", () => `${itemBaseClass} ${i === dayStartIdx ? selectedItemClass : ""}`);
413
+ setProp(_el0, "key", () => i);
414
+ return _el0;
415
+ }));
416
+ setProp(_el23, "ref", (el) => {
417
+ if (el) mountWheel(el, dayWheel);
418
+ });
419
+ setProp(_el23, "className", () => columnListClass);
420
+ setProp(_el23, "onPointerDown", (e) => dayWheel.handlePointerDown(e));
421
+ setProp(_el23, "onPointerMove", (e) => dayWheel.handlePointerMove(e, e.currentTarget));
422
+ setProp(_el23, "onPointerUp", (e) => dayWheel.handlePointerUp(e, e.currentTarget, (idx) => tempDay(idx + 1)));
423
+ setProp(_el23, "onPointerCancel", (e) => dayWheel.handlePointerCancel(e, e.currentTarget));
424
+ setProp(_el21, "className", () => columnViewportClass);
425
+ setProp(_el19, "className", () => columnWrapperClass);
426
+ setProp(_el19, "style", () => ({ flex: 6 }));
427
+ setProp(_el8, "style", () => ({
428
+ display: "flex",
429
+ width: "100%"
430
+ }));
431
+ setProp(_el7, "className", () => wheelAreaClass);
432
+ setProp(_el2, "className", () => sheetClass);
433
+ setProp(_el0, "className", () => `${overlayClass} ${openClass}`);
434
+ return _el0;
435
+ };
436
+ }] });
437
+ };
4
438
  //#endregion
5
- export { DateInput_default as default };
6
-
7
- //# sourceMappingURL=DateInput.js.map
439
+ export { DateInput as default };
@@ -1,4 +1,4 @@
1
- import { inertia } from "../../node_modules/popmotion/dist/es/animations/inertia.js";
1
+ import { inertia } from "popmotion";
2
2
  function expandCircular(items, index) {
3
3
  const len = items.length;
4
4
  if (len === 0) return [items, index];
@@ -111,5 +111,3 @@ function makeWheel(displayItems, displayIndex, circular) {
111
111
  }
112
112
  //#endregion
113
113
  export { expandCircular, makeWheel };
114
-
115
- //# sourceMappingURL=wheel.js.map