@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,330 @@
1
+ import { insert, jsx, mergeProps, template } from "@plastic-js/plastic/jsx-runtime";
2
+ import { css } from "@emotion/css";
1
3
  import { ColorPicker } from "@plastic-js/ark";
4
+ import { mergeProps as mergeProps$2, splitProps } from "@plastic-js/plastic";
2
5
  //#region src/components/ColorPicker.jsx
3
- var ColorPicker_default = ColorPicker;
6
+ var _tmpl = template("<div style=\"display:flex;align-items:center;gap:8px\"><!><!></div>");
7
+ var rootClass = css({
8
+ display: "flex",
9
+ flexDirection: "column",
10
+ gap: "var(--tsu-spacing-sm)",
11
+ width: "100%",
12
+ fontFamily: "inherit"
13
+ });
14
+ var sizeClasses = {
15
+ xs: css({
16
+ "--_cp-trigger-size": "var(--tsu-comp-secondary-height-xs)",
17
+ "--_cp-font-size": "var(--tsu-comp-font-size-xs)"
18
+ }),
19
+ sm: css({
20
+ "--_cp-trigger-size": "var(--tsu-comp-secondary-height-sm)",
21
+ "--_cp-font-size": "var(--tsu-comp-font-size-sm)"
22
+ }),
23
+ md: css({
24
+ "--_cp-trigger-size": "var(--tsu-comp-secondary-height-md)",
25
+ "--_cp-font-size": "var(--tsu-comp-font-size-md)"
26
+ }),
27
+ lg: css({
28
+ "--_cp-trigger-size": "var(--tsu-comp-secondary-height-lg)",
29
+ "--_cp-font-size": "var(--tsu-comp-font-size-lg)"
30
+ }),
31
+ xl: css({
32
+ "--_cp-trigger-size": "var(--tsu-comp-secondary-height-xl)",
33
+ "--_cp-font-size": "var(--tsu-comp-font-size-xl)"
34
+ })
35
+ };
36
+ var labelClass = css({
37
+ fontSize: "13px",
38
+ fontWeight: 600,
39
+ color: "var(--tsu-fg)"
40
+ });
41
+ var controlClass = css({
42
+ display: "flex",
43
+ alignItems: "center",
44
+ gap: "8px"
45
+ });
46
+ var triggerClass = css({
47
+ width: "var(--_cp-trigger-size, var(--tsu-comp-secondary-height-md))",
48
+ height: "var(--_cp-trigger-size, var(--tsu-comp-secondary-height-md))",
49
+ padding: "3px",
50
+ border: "1px solid var(--tsu-neutral-7)",
51
+ borderRadius: "var(--tsu-radius-l1-md)",
52
+ cursor: "pointer",
53
+ background: "transparent",
54
+ overflow: "hidden"
55
+ });
56
+ var valueSwatchClass = css({
57
+ width: "100%",
58
+ height: "100%",
59
+ borderRadius: "calc(var(--tsu-radius-l1-md) - 2px)"
60
+ });
61
+ var valueTextClass = css({
62
+ fontSize: "var(--_cp-font-size, var(--tsu-comp-font-size-md))",
63
+ fontWeight: 500,
64
+ color: "var(--tsu-fg)",
65
+ fontVariantNumeric: "tabular-nums"
66
+ });
67
+ var contentClass = css({
68
+ backgroundColor: "var(--tsu-bg)",
69
+ border: "1px solid var(--tsu-neutral-6)",
70
+ borderRadius: "var(--tsu-radius-l2-xl)",
71
+ boxShadow: "var(--tsu-shadow-lg)",
72
+ padding: "16px",
73
+ display: "flex",
74
+ flexDirection: "column",
75
+ gap: "12px",
76
+ width: "240px"
77
+ });
78
+ var areaClass = css({
79
+ position: "relative",
80
+ height: "140px",
81
+ borderRadius: "var(--tsu-radius-l1-md)",
82
+ overflow: "hidden"
83
+ });
84
+ var areaThumbClass = css({
85
+ width: "14px",
86
+ height: "14px",
87
+ borderRadius: "50%",
88
+ border: "2px solid #fff",
89
+ boxShadow: "0 1px 4px rgba(0,0,0,0.4)"
90
+ });
91
+ var sliderClass = css({
92
+ flex: 1,
93
+ position: "relative",
94
+ display: "flex",
95
+ alignItems: "center",
96
+ height: "16px"
97
+ });
98
+ var sliderTrackClass = css({
99
+ width: "100%",
100
+ height: "8px",
101
+ borderRadius: "999px",
102
+ overflow: "hidden"
103
+ });
104
+ var sliderThumbClass = css({
105
+ top: "50%",
106
+ transform: "translate(-50%, -50%)",
107
+ width: "16px",
108
+ height: "16px",
109
+ borderRadius: "50%",
110
+ border: "2px solid #fff",
111
+ boxShadow: "0 1px 4px rgba(0,0,0,0.35)",
112
+ cursor: "grab",
113
+ background: "transparent",
114
+ "&[data-dragging]": { cursor: "grabbing" }
115
+ });
116
+ var channelInputClass = css({
117
+ width: "52px",
118
+ fontSize: "12px",
119
+ fontFamily: "inherit",
120
+ fontVariantNumeric: "tabular-nums",
121
+ textAlign: "center",
122
+ border: "1px solid var(--tsu-neutral-7)",
123
+ borderRadius: "var(--tsu-radius-l1-sm)",
124
+ padding: "4px 6px",
125
+ background: "transparent",
126
+ color: "var(--tsu-fg)",
127
+ outline: "none"
128
+ });
129
+ var eyeDropperClass = css({
130
+ fontSize: "12px",
131
+ padding: "6px 10px",
132
+ border: "1px solid var(--tsu-neutral-7)",
133
+ borderRadius: "var(--tsu-radius-l1-md)",
134
+ cursor: "pointer",
135
+ background: "transparent",
136
+ color: "var(--tsu-neutral-11)",
137
+ fontFamily: "inherit"
138
+ });
139
+ var _Root = (props = {}) => {
140
+ const [local, rest] = splitProps(mergeProps$2({ size: "md" }, props), [
141
+ "size",
142
+ "className",
143
+ "children"
144
+ ]);
145
+ return jsx(ColorPicker.Root, mergeProps(rest, {
146
+ get className() {
147
+ return [
148
+ rootClass,
149
+ sizeClasses[local.size],
150
+ local.className
151
+ ].filter(Boolean).join(" ");
152
+ },
153
+ children: () => local.children
154
+ }));
155
+ };
156
+ var Label = (props = {}) => {
157
+ const [local, rest] = splitProps(props, ["className"]);
158
+ return jsx(ColorPicker.Label, mergeProps(rest, { get className() {
159
+ return [labelClass, local.className].filter(Boolean).join(" ");
160
+ } }));
161
+ };
162
+ var Control = (props = {}) => {
163
+ const [local, rest] = splitProps(props, ["className"]);
164
+ return jsx(ColorPicker.Control, mergeProps(rest, { get className() {
165
+ return [controlClass, local.className].filter(Boolean).join(" ");
166
+ } }));
167
+ };
168
+ var Trigger = (props = {}) => {
169
+ const [local, rest] = splitProps(props, ["className"]);
170
+ return jsx(ColorPicker.Trigger, mergeProps(rest, { get className() {
171
+ return [triggerClass, local.className].filter(Boolean).join(" ");
172
+ } }));
173
+ };
174
+ var Positioner = (props = {}) => {
175
+ const [local, rest] = splitProps(props, ["className", "children"]);
176
+ return jsx(ColorPicker.Positioner, mergeProps(rest, {
177
+ get className() {
178
+ return local.className;
179
+ },
180
+ children: () => local.children
181
+ }));
182
+ };
183
+ var Content = (props = {}) => {
184
+ const [local, rest] = splitProps(props, ["className"]);
185
+ return jsx(ColorPicker.Content, mergeProps(rest, { get className() {
186
+ return [contentClass, local.className].filter(Boolean).join(" ");
187
+ } }));
188
+ };
189
+ var ValueSwatch = (props = {}) => {
190
+ const [local, rest] = splitProps(props, ["className"]);
191
+ return jsx(ColorPicker.ValueSwatch, mergeProps(rest, { get className() {
192
+ return [valueSwatchClass, local.className].filter(Boolean).join(" ");
193
+ } }));
194
+ };
195
+ var ValueText = (props = {}) => {
196
+ const [local, rest] = splitProps(props, ["className"]);
197
+ return jsx(ColorPicker.ValueText, mergeProps(rest, { get className() {
198
+ return [valueTextClass, local.className].filter(Boolean).join(" ");
199
+ } }));
200
+ };
201
+ var Area = (props = {}) => {
202
+ const [local, rest] = splitProps(props, ["className"]);
203
+ return jsx(ColorPicker.Area, mergeProps(rest, { get className() {
204
+ return [areaClass, local.className].filter(Boolean).join(" ");
205
+ } }));
206
+ };
207
+ var AreaThumb = (props = {}) => {
208
+ const [local, rest] = splitProps(props, ["className"]);
209
+ return jsx(ColorPicker.AreaThumb, mergeProps(rest, { get className() {
210
+ return [areaThumbClass, local.className].filter(Boolean).join(" ");
211
+ } }));
212
+ };
213
+ var ChannelSlider = (props = {}) => {
214
+ const [local, rest] = splitProps(props, ["className"]);
215
+ return jsx(ColorPicker.ChannelSlider, mergeProps(rest, { get className() {
216
+ return [sliderClass, local.className].filter(Boolean).join(" ");
217
+ } }));
218
+ };
219
+ var ChannelSliderTrack = (props = {}) => {
220
+ const [local, rest] = splitProps(props, ["className"]);
221
+ return jsx(ColorPicker.ChannelSliderTrack, mergeProps(rest, { get className() {
222
+ return [sliderTrackClass, local.className].filter(Boolean).join(" ");
223
+ } }));
224
+ };
225
+ var ChannelSliderThumb = (props = {}) => {
226
+ const [local, rest] = splitProps(props, ["className"]);
227
+ return jsx(ColorPicker.ChannelSliderThumb, mergeProps(rest, { get className() {
228
+ return [sliderThumbClass, local.className].filter(Boolean).join(" ");
229
+ } }));
230
+ };
231
+ var ChannelInput = (props = {}) => {
232
+ const [local, rest] = splitProps(props, ["className"]);
233
+ return jsx(ColorPicker.ChannelInput, mergeProps(rest, { get className() {
234
+ return [channelInputClass, local.className].filter(Boolean).join(" ");
235
+ } }));
236
+ };
237
+ var EyeDropperTrigger = (props = {}) => {
238
+ const [local, rest] = splitProps(props, ["className"]);
239
+ return jsx(ColorPicker.EyeDropperTrigger, mergeProps(rest, { get className() {
240
+ return [eyeDropperClass, local.className].filter(Boolean).join(" ");
241
+ } }));
242
+ };
243
+ var ColorPicker$1 = (props) => {
244
+ const [local, rootProps] = splitProps(props, [
245
+ "label",
246
+ "showAlpha",
247
+ "eyedropper",
248
+ "hiddenInput",
249
+ "onChange",
250
+ "size",
251
+ "className",
252
+ "children"
253
+ ]);
254
+ const handleChange = (details) => {
255
+ local.onChange?.(details.valueAsString);
256
+ rootProps.onValueChange?.(details);
257
+ };
258
+ const hasHandler = local.onChange || rootProps.onValueChange;
259
+ return jsx(_Root, mergeProps(rootProps, {
260
+ get size() {
261
+ return local.size;
262
+ },
263
+ get className() {
264
+ return local.className;
265
+ },
266
+ get onValueChange() {
267
+ return hasHandler ? handleChange : rootProps.onValueChange;
268
+ },
269
+ children: [
270
+ () => local.label && jsx(Label, mergeProps({ children: () => local.label })),
271
+ jsx(Control, mergeProps({ children: [jsx(Trigger, mergeProps({ children: jsx(ValueSwatch, {}) })), jsx(ValueText, {})] })),
272
+ jsx(Positioner, mergeProps({ children: jsx(Content, mergeProps({ children: [
273
+ jsx(Area, mergeProps({ children: [jsx(ColorPicker.AreaBackground, mergeProps({ style: {
274
+ inset: 0,
275
+ position: "absolute"
276
+ } })), jsx(AreaThumb, {})] })),
277
+ () => {
278
+ const _el0 = _tmpl.cloneNode(true);
279
+ const _el1 = _el0.firstChild;
280
+ const _el2 = _el0.firstChild.nextSibling;
281
+ insert(_el0, () => jsx(ChannelSlider, mergeProps({
282
+ channel: "hue",
283
+ children: [jsx(ChannelSliderTrack, {}), jsx(ChannelSliderThumb, {})]
284
+ })), _el1);
285
+ insert(_el0, () => jsx(ChannelInput, mergeProps({ channel: "hex" })), _el2);
286
+ return _el0;
287
+ },
288
+ () => local.showAlpha && (() => {
289
+ const _el0 = _tmpl.cloneNode(true);
290
+ const _el1 = _el0.firstChild;
291
+ const _el2 = _el0.firstChild.nextSibling;
292
+ insert(_el0, () => jsx(ChannelSlider, mergeProps({
293
+ channel: "alpha",
294
+ children: [
295
+ jsx(ChannelSliderTrack, {}),
296
+ jsx(ColorPicker.TransparencyGrid, {}),
297
+ jsx(ChannelSliderThumb, {})
298
+ ]
299
+ })), _el1);
300
+ insert(_el0, () => jsx(ChannelInput, mergeProps({ channel: "alpha" })), _el2);
301
+ return _el0;
302
+ }),
303
+ () => local.eyedropper && jsx(EyeDropperTrigger, mergeProps({ children: "Pick from screen" })),
304
+ () => local.hiddenInput && jsx(ColorPicker.HiddenInput, {})
305
+ ] })) }))
306
+ ]
307
+ }));
308
+ };
309
+ ColorPicker$1.origin = {
310
+ Root: ColorPicker.Root,
311
+ Label: ColorPicker.Label,
312
+ Control: ColorPicker.Control,
313
+ Trigger: ColorPicker.Trigger,
314
+ Positioner: ColorPicker.Positioner,
315
+ Content: ColorPicker.Content,
316
+ ValueSwatch: ColorPicker.ValueSwatch,
317
+ ValueText: ColorPicker.ValueText,
318
+ Area: ColorPicker.Area,
319
+ AreaBackground: ColorPicker.AreaBackground,
320
+ AreaThumb: ColorPicker.AreaThumb,
321
+ ChannelSlider: ColorPicker.ChannelSlider,
322
+ ChannelSliderTrack: ColorPicker.ChannelSliderTrack,
323
+ ChannelSliderThumb: ColorPicker.ChannelSliderThumb,
324
+ ChannelInput: ColorPicker.ChannelInput,
325
+ TransparencyGrid: ColorPicker.TransparencyGrid,
326
+ EyeDropperTrigger: ColorPicker.EyeDropperTrigger,
327
+ HiddenInput: ColorPicker.HiddenInput
328
+ };
4
329
  //#endregion
5
- export { ColorPicker_default as default };
6
-
7
- //# sourceMappingURL=ColorPicker.js.map
330
+ export { ColorPicker$1 as default };
@@ -1,19 +1,92 @@
1
- import { Combobox, useComboboxContext } from "@plastic-js/ark";
2
1
  import { jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
2
+ import { css } from "@emotion/css";
3
+ import { Combobox, useComboboxContext } from "@plastic-js/ark";
4
+ import { splitProps } from "@plastic-js/plastic";
3
5
  //#region src/components/Combobox.jsx
4
- var OriginalRoot = Combobox.Root;
5
- var Root = (props = {}) => jsx(OriginalRoot, mergeProps(props));
6
+ var inputClass = css({
7
+ width: "100%",
8
+ height: "var(--tsu-comp-height-md)",
9
+ padding: "0 var(--tsu-comp-padding-x-md)",
10
+ background: "var(--tsu-bg)",
11
+ border: "1px solid var(--tsu-accent-8)",
12
+ borderRadius: "var(--tsu-radius-l1-md)",
13
+ color: "var(--tsu-fg)",
14
+ fontSize: "var(--tsu-comp-font-size-md)",
15
+ fontFamily: "inherit",
16
+ outline: "none",
17
+ "&::placeholder": { color: "var(--tsu-neutral-11)" },
18
+ "&:focus": {
19
+ backgroundColor: "var(--tsu-focus-bg)",
20
+ borderColor: "var(--tsu-focus-border)"
21
+ }
22
+ });
23
+ var contentClass = css({
24
+ backgroundColor: "var(--tsu-bg)",
25
+ border: "1px solid var(--tsu-neutral-6)",
26
+ borderRadius: "var(--tsu-radius-l2-md)",
27
+ boxShadow: "var(--tsu-shadow-lg)",
28
+ zIndex: "var(--tsu-z-dropdown)",
29
+ overflow: "hidden",
30
+ maxHeight: "240px",
31
+ overflowY: "auto"
32
+ });
33
+ var itemClass = css({
34
+ display: "flex",
35
+ alignItems: "center",
36
+ padding: "8px var(--tsu-container-padding-md)",
37
+ fontSize: "var(--tsu-comp-font-size-md)",
38
+ cursor: "pointer",
39
+ color: "var(--tsu-fg)",
40
+ "&[data-highlighted]": {
41
+ backgroundColor: "var(--tsu-accent-3)",
42
+ color: "var(--tsu-accent-9)"
43
+ },
44
+ "&[data-disabled]": {
45
+ color: "var(--tsu-disabled-fg)",
46
+ pointerEvents: "none"
47
+ }
48
+ });
49
+ var ArkRoot = Combobox.Root;
50
+ var Root = (props = {}) => jsx(ArkRoot, mergeProps(props));
6
51
  var Input = (props = {}) => {
52
+ const [local, rest] = splitProps(props, ["className"]);
7
53
  const combobox = useComboboxContext();
8
- return jsx(Combobox.Input, mergeProps(props, { onInput: (event) => combobox().getInputProps().onChange?.(event) }));
54
+ return jsx(Combobox.Input, mergeProps(rest, {
55
+ get className() {
56
+ return [inputClass, local.className].filter(Boolean).join(" ");
57
+ },
58
+ onInput: (event) => combobox().getInputProps().onChange?.(event)
59
+ }));
60
+ };
61
+ Root.origin = {
62
+ Root: Combobox.Root,
63
+ Label: Combobox.Label,
64
+ Control: Combobox.Control,
65
+ Input: Combobox.Input,
66
+ Trigger: Combobox.Trigger,
67
+ Content: Combobox.Content,
68
+ Item: Combobox.Item,
69
+ ItemText: Combobox.ItemText,
70
+ ItemIndicator: Combobox.ItemIndicator,
71
+ ItemGroup: Combobox.ItemGroup,
72
+ ItemGroupLabel: Combobox.ItemGroupLabel,
73
+ ClearTrigger: Combobox.ClearTrigger,
74
+ Empty: Combobox.Empty
75
+ };
76
+ var ComboboxItem = (props = {}) => {
77
+ const [local, rest] = splitProps(props, ["className"]);
78
+ return jsx(Combobox.Item, mergeProps(rest, { get className() {
79
+ return [itemClass, local.className].filter(Boolean).join(" ");
80
+ } }));
81
+ };
82
+ var ComboboxContent = (props = {}) => {
83
+ const [local, rest] = splitProps(props, ["className", "children"]);
84
+ return jsx(Combobox.Content, mergeProps(rest, {
85
+ get className() {
86
+ return [contentClass, local.className].filter(Boolean).join(" ");
87
+ },
88
+ children: () => local.children
89
+ }));
9
90
  };
10
- var Combobox_default = Object.assign(Root, {
11
- ...Combobox,
12
- OriginalRoot,
13
- Root,
14
- Input
15
- });
16
91
  //#endregion
17
- export { Combobox_default as default };
18
-
19
- //# sourceMappingURL=Combobox.js.map
92
+ export { ComboboxContent, ComboboxItem, Input, Root as default };
@@ -1,36 +1,191 @@
1
- import Dialog_default from "./Dialog.js";
1
+ import Dialog from "./Dialog.js";
2
2
  import { insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
3
3
  import { css } from "@emotion/css";
4
+ import { createSignal, mergeProps as mergeProps$1, renderApp, splitProps } from "@plastic-js/plastic";
4
5
  //#region src/components/ConfirmDialog.jsx
5
6
  var _tmpl = template("<p></p>");
6
- var messageClass = css({
7
- fontSize: "15px",
7
+ var messageBodyClass = css({
8
+ fontSize: "var(--tsu-comp-font-size-lg)",
8
9
  lineHeight: 1.5,
9
- color: "var(--ink)",
10
+ color: "var(--tsu-fg)",
10
11
  textAlign: "center",
11
- padding: "8px 0"
12
+ padding: "var(--tsu-spacing-sm) 0"
12
13
  });
13
- var ConfirmDialog = ({ open, onOpenChange, onConfirm, loading, title, message, confirmText, cancelText }) => {
14
+ var DEFAULT_PROPS = {
15
+ mode: "modal",
16
+ confirmText: "Confirm",
17
+ cancelText: "Cancel",
18
+ danger: false,
19
+ loading: false,
20
+ title: "Confirm"
21
+ };
22
+ function ConfirmDialog(props) {
23
+ const [local] = splitProps(mergeProps$1(DEFAULT_PROPS, props), [
24
+ "mode",
25
+ "open",
26
+ "onOpenChange",
27
+ "onConfirm",
28
+ "onCancel",
29
+ "loading",
30
+ "title",
31
+ "message",
32
+ "confirmText",
33
+ "cancelText",
34
+ "danger"
35
+ ]);
14
36
  const handleConfirm = () => {
15
- onConfirm?.();
37
+ local.onConfirm?.();
16
38
  };
17
- return jsx(Dialog_default.Root, mergeProps({
18
- cancelText: cancelText ?? "Cancel",
19
- confirmText: confirmText ?? "Delete",
20
- loading,
39
+ return jsx(Dialog, mergeProps({
40
+ get mode() {
41
+ return local.mode;
42
+ },
43
+ get cancelText() {
44
+ return local.cancelText;
45
+ },
46
+ get confirmText() {
47
+ return local.confirmText;
48
+ },
49
+ get danger() {
50
+ return local.danger;
51
+ },
52
+ get loading() {
53
+ return local.loading;
54
+ },
21
55
  onConfirm: handleConfirm,
22
- onOpenChange,
23
- open,
24
- title: title ?? "Confirm",
56
+ get onCancel() {
57
+ return local.onCancel;
58
+ },
59
+ get onOpenChange() {
60
+ return local.onOpenChange;
61
+ },
62
+ get open() {
63
+ return local.open;
64
+ },
65
+ closeable: false,
66
+ showCancel: !!local.onCancel,
67
+ showConfirm: true,
68
+ get title() {
69
+ return local.title;
70
+ },
25
71
  children: () => {
26
72
  const _el0 = _tmpl.cloneNode(true);
27
- insert(_el0, () => message);
28
- setProp(_el0, "className", () => messageClass);
73
+ insert(_el0, () => local.message);
74
+ setProp(_el0, "className", () => messageBodyClass);
29
75
  return _el0;
30
76
  }
31
77
  }));
78
+ }
79
+ var container = document.createElement("div");
80
+ document.body.appendChild(container);
81
+ var _resolve = null;
82
+ var _reject = null;
83
+ var _setState = null;
84
+ var _initialized = false;
85
+ function ensureInit() {
86
+ if (_initialized) return;
87
+ _initialized = true;
88
+ const state = createSignal(null);
89
+ _setState = state;
90
+ const handleConfirm = () => {
91
+ _resolve?.();
92
+ state({
93
+ ...state(),
94
+ open: false
95
+ });
96
+ };
97
+ const handleCancel = () => {
98
+ const err = /* @__PURE__ */ new Error("Cancel");
99
+ err.code = "CANCEL";
100
+ _reject?.(err);
101
+ state({
102
+ ...state(),
103
+ open: false
104
+ });
105
+ };
106
+ const handleOpenChange = (open) => {
107
+ if (!open) {
108
+ _resolve = null;
109
+ _reject = null;
110
+ state(null);
111
+ }
112
+ };
113
+ renderApp(container, () => {
114
+ const s = state();
115
+ if (!s) return null;
116
+ return jsx(Dialog, mergeProps({
117
+ get mode() {
118
+ return s.mode || "modal";
119
+ },
120
+ get open() {
121
+ return s.open;
122
+ },
123
+ closeable: false,
124
+ get showCancel() {
125
+ return !s.noCancel;
126
+ },
127
+ showConfirm: true,
128
+ get confirmText() {
129
+ return s.confirmText || "Confirm";
130
+ },
131
+ get cancelText() {
132
+ return s.cancelText || "Cancel";
133
+ },
134
+ get danger() {
135
+ return s.danger || false;
136
+ },
137
+ get title() {
138
+ return s.title || "Confirm";
139
+ },
140
+ onConfirm: handleConfirm,
141
+ onCancel: handleCancel,
142
+ onOpenChange: handleOpenChange,
143
+ children: () => {
144
+ const _el0 = _tmpl.cloneNode(true);
145
+ insert(_el0, () => s.message);
146
+ setProp(_el0, "className", () => messageBodyClass);
147
+ return _el0;
148
+ }
149
+ }));
150
+ });
151
+ }
152
+ /**
153
+ * Open a confirmation dialog imperatively.
154
+ * Resolves on confirm, rejects with `{ code: 'CANCEL' }` on cancel.
155
+ *
156
+ * @example
157
+ * try {
158
+ * await confirm({
159
+ * title: 'Delete Item',
160
+ * message: 'This action cannot be undone.',
161
+ * confirmText: 'Delete',
162
+ * danger: true,
163
+ * })
164
+ * } catch (err) {
165
+ * if (err.code === 'CANCEL') { ... }
166
+ * }
167
+ *
168
+ * @param {{
169
+ * mode?: 'modal' | 'sheet',
170
+ * title?: string,
171
+ * message?: string,
172
+ * confirmText?: string,
173
+ * cancelText?: string,
174
+ * danger?: boolean,
175
+ * noCancel?: boolean
176
+ * }} options
177
+ * @returns {Promise<void>}
178
+ */
179
+ var confirm = (options = {}) => {
180
+ ensureInit();
181
+ return new Promise((resolve, reject) => {
182
+ _resolve = resolve;
183
+ _reject = reject;
184
+ _setState({
185
+ ...options,
186
+ open: true
187
+ });
188
+ });
32
189
  };
33
190
  //#endregion
34
- export { ConfirmDialog as default };
35
-
36
- //# sourceMappingURL=ConfirmDialog.js.map
191
+ export { confirm, ConfirmDialog as default };