@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,50 @@
1
+ import { jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
2
+ import { css } from "@emotion/css";
1
3
  import { Listbox } from "@plastic-js/ark";
4
+ import { splitProps } from "@plastic-js/plastic";
2
5
  //#region src/components/Listbox.jsx
3
- var Listbox_default = Listbox;
6
+ css({
7
+ backgroundColor: "var(--tsu-bg)",
8
+ border: "1px solid var(--tsu-neutral-6)",
9
+ borderRadius: "var(--tsu-radius-l2-md)",
10
+ boxShadow: "var(--tsu-shadow-lg)",
11
+ zIndex: "var(--tsu-z-dropdown)",
12
+ overflow: "hidden",
13
+ padding: "var(--tsu-spacing-xs)",
14
+ outline: "none"
15
+ });
16
+ css({
17
+ display: "flex",
18
+ alignItems: "center",
19
+ padding: "8px var(--tsu-container-padding-sm)",
20
+ borderRadius: "var(--tsu-radius-l1-md)",
21
+ fontSize: "var(--tsu-comp-font-size-sm)",
22
+ color: "var(--tsu-fg)",
23
+ cursor: "pointer",
24
+ "&[data-highlighted]": {
25
+ backgroundColor: "var(--tsu-accent-3)",
26
+ color: "var(--tsu-accent-9)"
27
+ },
28
+ "&[data-disabled]": {
29
+ color: "var(--tsu-disabled-fg)",
30
+ pointerEvents: "none"
31
+ }
32
+ });
33
+ var Listbox$1 = (props = {}) => {
34
+ const [local, rest] = splitProps(props, ["className", "children"]);
35
+ return jsx(Listbox.Root, mergeProps(rest, {
36
+ get className() {
37
+ return [local.className].filter(Boolean).join(" ");
38
+ },
39
+ children: () => local.children
40
+ }));
41
+ };
42
+ Listbox$1.origin = {
43
+ Root: Listbox.Root,
44
+ Content: Listbox.Content,
45
+ Item: Listbox.Item,
46
+ ItemText: Listbox.ItemText,
47
+ Label: Listbox.Label
48
+ };
4
49
  //#endregion
5
- export { Listbox_default as default };
6
-
7
- //# sourceMappingURL=Listbox.js.map
50
+ export { Listbox$1 as default };
@@ -1,7 +1,102 @@
1
+ import Portal_default from "./Portal.js";
2
+ import { jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
3
+ import { css } from "@emotion/css";
1
4
  import { Menu } from "@plastic-js/ark";
5
+ import { splitProps } from "@plastic-js/plastic";
2
6
  //#region src/components/Menu.jsx
3
- var Menu_default = Menu;
7
+ var positionerClass = css({ zIndex: "var(--tsu-z-dropdown)" });
8
+ var contentClass = css({
9
+ backgroundColor: "var(--tsu-bg)",
10
+ border: "1px solid var(--tsu-neutral-6)",
11
+ borderRadius: "var(--tsu-radius-l2-md)",
12
+ boxShadow: "var(--tsu-shadow-lg)",
13
+ padding: "6px",
14
+ minWidth: "160px",
15
+ outline: "none",
16
+ display: "flex",
17
+ flexDirection: "column",
18
+ "&[hidden]": { display: "none" }
19
+ });
20
+ var itemClass = css({
21
+ display: "flex",
22
+ alignItems: "center",
23
+ padding: "8px 12px",
24
+ borderRadius: "var(--tsu-radius-l1-sm)",
25
+ fontSize: "var(--tsu-comp-font-size-md)",
26
+ color: "var(--tsu-fg)",
27
+ cursor: "pointer",
28
+ fontFamily: "inherit",
29
+ border: "none",
30
+ background: "none",
31
+ width: "100%",
32
+ textAlign: "left",
33
+ lineHeight: 1.4,
34
+ "&[data-highlighted]": {
35
+ backgroundColor: "var(--tsu-accent-3)",
36
+ color: "var(--tsu-accent-9)"
37
+ },
38
+ "&[data-disabled]": {
39
+ opacity: .4,
40
+ pointerEvents: "none"
41
+ }
42
+ });
43
+ var separatorClass = css({
44
+ height: "1px",
45
+ backgroundColor: "var(--tsu-neutral-6)",
46
+ margin: "4px 0"
47
+ });
48
+ var Menu$1 = (props = {}) => {
49
+ const [local, rest] = splitProps(props, ["className", "children"]);
50
+ return jsx(Menu.Root, mergeProps(rest, {
51
+ get className() {
52
+ return local.className;
53
+ },
54
+ children: () => local.children
55
+ }));
56
+ };
57
+ var MenuTrigger = (props = {}) => {
58
+ const [local, rest] = splitProps(props, ["className", "children"]);
59
+ return jsx(Menu.Trigger, mergeProps(rest, {
60
+ get className() {
61
+ return local.className;
62
+ },
63
+ children: () => local.children
64
+ }));
65
+ };
66
+ var MenuContent = (props = {}) => {
67
+ const [local, rest] = splitProps(props, ["className", "children"]);
68
+ return jsx(Portal_default, mergeProps({ children: jsx(Menu.Positioner, mergeProps({
69
+ className: positionerClass,
70
+ children: jsx(Menu.Content, mergeProps(rest, {
71
+ get className() {
72
+ return [contentClass, local.className].filter(Boolean).join(" ");
73
+ },
74
+ children: () => local.children
75
+ }))
76
+ })) }));
77
+ };
78
+ var MenuItem = (props = {}) => {
79
+ const [local, rest] = splitProps(props, ["className", "children"]);
80
+ return jsx(Menu.Item, mergeProps(rest, {
81
+ get className() {
82
+ return [itemClass, local.className].filter(Boolean).join(" ");
83
+ },
84
+ children: () => local.children
85
+ }));
86
+ };
87
+ var MenuSeparator = (props = {}) => {
88
+ const [local, rest] = splitProps(props, ["className"]);
89
+ return jsx(Menu.Separator, mergeProps(rest, { get className() {
90
+ return [separatorClass, local.className].filter(Boolean).join(" ");
91
+ } }));
92
+ };
93
+ Menu$1.origin = {
94
+ Root: Menu.Root,
95
+ Trigger: Menu.Trigger,
96
+ Positioner: Menu.Positioner,
97
+ Content: Menu.Content,
98
+ Item: Menu.Item,
99
+ Separator: Menu.Separator
100
+ };
4
101
  //#endregion
5
- export { Menu_default as default };
6
-
7
- //# sourceMappingURL=Menu.js.map
102
+ export { MenuContent, MenuItem, MenuSeparator, MenuTrigger, Menu$1 as default };
@@ -1,56 +1,15 @@
1
+ import Input from "./Input.js";
1
2
  import { insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
2
3
  import { css } from "@emotion/css";
3
4
  import { splitProps } from "@plastic-js/plastic";
4
5
  //#region src/components/MoneyInput.jsx
5
- var _tmpl2 = template("<span></span>");
6
- var _tmpl = template("<div><span></span><!><!></div>");
7
- var wrapperClass = css({
8
- display: "flex",
9
- alignItems: "center",
10
- width: "100%",
11
- boxSizing: "border-box",
12
- height: "44px",
13
- background: "var(--bg, rgba(0,0,0,0.2))",
14
- border: "1px solid var(--border)",
15
- borderRadius: "10px",
16
- padding: "0 14px",
17
- "&:focus-within": { borderColor: "var(--accent)" }
18
- });
19
- var errorClass = css({ borderColor: "var(--danger) !important" });
20
- var affixTextClass = css({
21
- color: "var(--muted)",
22
- fontSize: "14px",
23
- whiteSpace: "nowrap",
24
- userSelect: "none",
25
- marginRight: "2px"
26
- });
6
+ var _tmpl = template("<span></span>");
27
7
  var affixSuffixClass = css({
28
- color: "var(--ink)",
29
- fontSize: "14px",
8
+ color: "var(--tsu-fg)",
30
9
  fontWeight: 600,
31
- whiteSpace: "nowrap",
32
- userSelect: "none",
33
10
  paddingLeft: "10px",
34
11
  marginLeft: "4px",
35
- borderLeft: "1px solid var(--border)"
36
- });
37
- var affixSuffixDisabledClass = css({ opacity: .5 });
38
- var inputClass = css({
39
- flex: 1,
40
- minWidth: 0,
41
- height: "100%",
42
- background: "transparent",
43
- border: "none",
44
- color: "var(--ink)",
45
- fontSize: "15px",
46
- fontFamily: "inherit",
47
- outline: "none",
48
- "&::placeholder": { color: "var(--muted)" },
49
- "&:disabled": {
50
- opacity: .5,
51
- cursor: "not-allowed",
52
- WebkitTextFillColor: "var(--ink)"
53
- }
12
+ borderLeft: "1px solid var(--tsu-neutral-7)"
54
13
  });
55
14
  var read = (value) => {
56
15
  return typeof value === "function" ? value() : value;
@@ -59,16 +18,6 @@ var groupThousands = (digits) => {
59
18
  if (!digits) return "";
60
19
  return Number(digits).toLocaleString("en-US");
61
20
  };
62
- /**
63
- * Currency amount input. Keeps an integer digits-only string as its value and
64
- * renders it grouped by thousands with a currency prefix.
65
- *
66
- * @param value digits-only string, or an accessor returning one
67
- * @param onValueChange called with the next digits-only string on input
68
- * @param invalid boolean or accessor; toggles the error border
69
- * @param currency prefix symbol, defaults to ₱
70
- * @param affix optional suffix text (e.g. K, M), defaults to empty
71
- */
72
21
  var MoneyInput = (props) => {
73
22
  const [local, rest] = splitProps(props, [
74
23
  "value",
@@ -79,36 +28,35 @@ var MoneyInput = (props) => {
79
28
  "placeholder",
80
29
  "disabled"
81
30
  ]);
82
- return () => {
83
- const _el0 = _tmpl.cloneNode(true);
84
- const _el1 = _el0.firstChild;
85
- const _el2 = _el0.firstChild.nextSibling;
86
- const _el3 = _el0.firstChild.nextSibling.nextSibling;
87
- insert(_el1, () => local.currency ?? "₱");
88
- setProp(_el1, "className", () => affixTextClass);
89
- insert(_el0, () => jsx("input", mergeProps({
90
- className: inputClass,
91
- get disabled() {
92
- return local.disabled;
93
- },
94
- inputMode: "numeric",
95
- onInput: (e) => local.onValueChange?.(e.target.value.replace(/\D/g, "")),
96
- get placeholder() {
97
- return local.placeholder;
98
- },
99
- value: () => groupThousands(read(local.value))
100
- }, rest)), _el2);
101
- insert(_el0, () => read(local.affix) && (() => {
102
- const _el0 = _tmpl2.cloneNode(true);
103
- insert(_el0, () => read(local.affix));
104
- setProp(_el0, "className", () => `${affixSuffixClass} ${read(local.disabled) ? affixSuffixDisabledClass : ""}`);
105
- return _el0;
106
- }), _el3);
107
- setProp(_el0, "className", () => `${wrapperClass} ${read(local.invalid) ? errorClass : ""}`);
108
- return _el0;
109
- };
31
+ return jsx(Input, mergeProps({
32
+ size: "lg",
33
+ solid: true,
34
+ get invalid() {
35
+ return local.invalid;
36
+ },
37
+ get disabled() {
38
+ return local.disabled;
39
+ },
40
+ get placeholder() {
41
+ return local.placeholder;
42
+ },
43
+ get prefix() {
44
+ return local.currency ?? "";
45
+ },
46
+ suffix: () => {
47
+ const affix = read(local.affix);
48
+ if (!affix) return null;
49
+ return () => {
50
+ const _el0 = _tmpl.cloneNode(true);
51
+ insert(_el0, () => affix);
52
+ setProp(_el0, "className", () => affixSuffixClass);
53
+ return _el0;
54
+ };
55
+ },
56
+ value: () => groupThousands(read(local.value)),
57
+ onInput: (e) => local.onValueChange?.(e.target.value.replace(/\D/g, "")),
58
+ inputMode: "numeric"
59
+ }, rest));
110
60
  };
111
61
  //#endregion
112
62
  export { MoneyInput as default };
113
-
114
- //# sourceMappingURL=MoneyInput.js.map
@@ -1,7 +1,120 @@
1
+ import { jsx, mergeProps, template } from "@plastic-js/plastic/jsx-runtime";
2
+ import { css } from "@emotion/css";
1
3
  import { NumberInput } from "@plastic-js/ark";
4
+ import { mergeProps as mergeProps$2, splitProps } from "@plastic-js/plastic";
2
5
  //#region src/components/NumberInput.jsx
3
- var NumberInput_default = NumberInput;
6
+ var _tmpl2 = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" width=\"12\" height=\"12\"><path d=\"M12 5v14M5 12h14\"></path></svg>");
7
+ var _tmpl = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" width=\"12\" height=\"12\"><path d=\"M5 12h14\"></path></svg>");
8
+ var rootClass = css({
9
+ display: "inline-flex",
10
+ alignItems: "center",
11
+ border: "1px solid var(--tsu-accent-8)",
12
+ borderRadius: "var(--tsu-radius-l1-md)",
13
+ backgroundColor: "var(--tsu-bg)",
14
+ overflow: "hidden",
15
+ "&:focus-within": { borderColor: "var(--tsu-focus-border)" }
16
+ });
17
+ var disabledClass = css({
18
+ borderColor: "var(--tsu-disabled-border)",
19
+ "& *": { color: "var(--tsu-disabled-fg)" }
20
+ });
21
+ var sizeClasses = {
22
+ xs: css({
23
+ height: "var(--tsu-comp-height-xs)",
24
+ fontSize: "var(--tsu-comp-font-size-xs)"
25
+ }),
26
+ sm: css({
27
+ height: "var(--tsu-comp-height-sm)",
28
+ fontSize: "var(--tsu-comp-font-size-sm)"
29
+ }),
30
+ md: css({
31
+ height: "var(--tsu-comp-height-md)",
32
+ fontSize: "var(--tsu-comp-font-size-md)"
33
+ }),
34
+ lg: css({
35
+ height: "var(--tsu-comp-height-lg)",
36
+ fontSize: "var(--tsu-comp-font-size-lg)"
37
+ }),
38
+ xl: css({
39
+ height: "var(--tsu-comp-height-xl)",
40
+ fontSize: "var(--tsu-comp-font-size-xl)"
41
+ })
42
+ };
43
+ var inputClass = css({
44
+ width: "60px",
45
+ height: "100%",
46
+ border: "none",
47
+ background: "transparent",
48
+ color: "var(--tsu-fg)",
49
+ fontFamily: "inherit",
50
+ textAlign: "center",
51
+ outline: "none",
52
+ padding: 0,
53
+ "&:disabled": { color: "var(--tsu-disabled-fg)" }
54
+ });
55
+ var btnClass = css({
56
+ width: "28px",
57
+ height: "100%",
58
+ display: "flex",
59
+ alignItems: "center",
60
+ justifyContent: "center",
61
+ border: "none",
62
+ background: "transparent",
63
+ color: "var(--tsu-neutral-11)",
64
+ cursor: "pointer",
65
+ fontFamily: "inherit",
66
+ fontSize: "14px",
67
+ touchAction: "manipulation",
68
+ "&:active:not(:disabled)": { backgroundColor: "var(--tsu-accent-3)" },
69
+ "&:disabled": {
70
+ color: "var(--tsu-disabled-fg)",
71
+ cursor: "not-allowed"
72
+ }
73
+ });
74
+ var read = (v) => typeof v === "function" ? v() : v;
75
+ var NumberInput$1 = (props = {}) => {
76
+ const [local, rest] = splitProps(mergeProps$2({
77
+ size: "md",
78
+ disabled: false
79
+ }, props), [
80
+ "size",
81
+ "disabled",
82
+ "className",
83
+ "children"
84
+ ]);
85
+ return () => {
86
+ const size = read(local.size);
87
+ const disabled = read(local.disabled);
88
+ return jsx(NumberInput.Root, mergeProps(rest, {
89
+ disabled,
90
+ get className() {
91
+ return [
92
+ rootClass,
93
+ sizeClasses[size],
94
+ disabled && disabledClass,
95
+ local.className
96
+ ].filter(Boolean).join(" ");
97
+ },
98
+ children: [
99
+ jsx(NumberInput.DecrementTrigger, mergeProps({
100
+ className: btnClass,
101
+ children: _tmpl.cloneNode(true)
102
+ })),
103
+ jsx(NumberInput.Input, mergeProps({ className: inputClass })),
104
+ jsx(NumberInput.IncrementTrigger, mergeProps({
105
+ className: btnClass,
106
+ children: _tmpl2.cloneNode(true)
107
+ })),
108
+ () => local.children
109
+ ]
110
+ }));
111
+ };
112
+ };
113
+ NumberInput$1.origin = {
114
+ Root: NumberInput.Root,
115
+ DecrementTrigger: NumberInput.DecrementTrigger,
116
+ Input: NumberInput.Input,
117
+ IncrementTrigger: NumberInput.IncrementTrigger
118
+ };
4
119
  //#endregion
5
- export { NumberInput_default as default };
6
-
7
- //# sourceMappingURL=NumberInput.js.map
120
+ export { NumberInput$1 as default };
@@ -1,7 +1,93 @@
1
- import { Pagination } from "@plastic-js/ark";
1
+ import { Fragment, jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
2
+ import { css } from "@emotion/css";
3
+ import { Pagination, usePaginationContext } from "@plastic-js/ark";
4
+ import { splitProps } from "@plastic-js/plastic";
2
5
  //#region src/components/Pagination.jsx
3
- var Pagination_default = Pagination;
6
+ var rootClass = css({
7
+ display: "flex",
8
+ alignItems: "center",
9
+ gap: "var(--tsu-spacing-xs)",
10
+ overflowX: "auto"
11
+ });
12
+ var itemClass = css({
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "center",
16
+ minWidth: "var(--tsu-level-primary-md)",
17
+ height: "var(--tsu-level-primary-md)",
18
+ padding: "0 var(--tsu-spacing-sm)",
19
+ border: "1px solid var(--tsu-neutral-5)",
20
+ borderRadius: "var(--tsu-radius-l2-md)",
21
+ backgroundColor: "var(--tsu-bg)",
22
+ color: "var(--tsu-neutral-11)",
23
+ fontSize: "var(--tsu-font-size-sm)",
24
+ fontWeight: 500,
25
+ cursor: "pointer",
26
+ fontFamily: "inherit",
27
+ touchAction: "manipulation",
28
+ transition: "background-color var(--tsu-transition-fast), border-color var(--tsu-transition-fast)",
29
+ "&[data-selected]": {
30
+ backgroundColor: "var(--tsu-accent-9)",
31
+ borderColor: "var(--tsu-accent-8)",
32
+ color: "var(--tsu-bg)"
33
+ },
34
+ "&:disabled, &[data-disabled]": {
35
+ opacity: .5,
36
+ cursor: "not-allowed"
37
+ }
38
+ });
39
+ var ellipsisClass = css({
40
+ display: "flex",
41
+ alignItems: "center",
42
+ justifyContent: "center",
43
+ width: "var(--tsu-level-primary-md)",
44
+ color: "var(--tsu-neutral-9)",
45
+ fontSize: "var(--tsu-font-size-sm)",
46
+ userSelect: "none"
47
+ });
48
+ var Pages = () => {
49
+ const pagination = usePaginationContext();
50
+ return () => {
51
+ const api = pagination();
52
+ return jsx(Fragment, { children: () => api.pages.map((page, i) => page.type === "page" ? jsx(Pagination.Item, mergeProps({
53
+ key: i,
54
+ get value() {
55
+ return page.value;
56
+ },
57
+ className: itemClass,
58
+ children: () => page.value
59
+ })) : jsx(Pagination.Ellipsis, mergeProps({
60
+ key: i,
61
+ index: i,
62
+ className: ellipsisClass
63
+ }))) });
64
+ };
65
+ };
66
+ var Pagination$1 = (props = {}) => {
67
+ const [local, rest] = splitProps(props, [
68
+ "className",
69
+ "prevLabel",
70
+ "nextLabel",
71
+ "prevChildren",
72
+ "nextChildren"
73
+ ]);
74
+ return jsx(Pagination.Root, mergeProps(rest, {
75
+ get className() {
76
+ return [rootClass, local.className].filter(Boolean).join(" ");
77
+ },
78
+ children: [
79
+ jsx(Pagination.PrevTrigger, mergeProps({
80
+ className: itemClass,
81
+ children: () => local.prevChildren ?? local.prevLabel ?? "Prev"
82
+ })),
83
+ jsx(Pages, {}),
84
+ jsx(Pagination.NextTrigger, mergeProps({
85
+ className: itemClass,
86
+ children: () => local.nextChildren ?? local.nextLabel ?? "Next"
87
+ }))
88
+ ]
89
+ }));
90
+ };
91
+ Pagination$1.origin = { Root: Pagination.Root };
4
92
  //#endregion
5
- export { Pagination_default as default };
6
-
7
- //# sourceMappingURL=Pagination.js.map
93
+ export { Pagination$1 as default };
@@ -1,7 +1,126 @@
1
+ import Portal_default from "./Portal.js";
2
+ import { jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
3
+ import { css, keyframes } from "@emotion/css";
1
4
  import { Popover } from "@plastic-js/ark";
5
+ import { mergeProps as mergeProps$2, splitProps } from "@plastic-js/plastic";
2
6
  //#region src/components/Popover.jsx
3
- var Popover_default = Popover;
7
+ var popoverIn = keyframes({
8
+ from: {
9
+ opacity: 0,
10
+ transform: "scale(0.95)"
11
+ },
12
+ to: {
13
+ opacity: 1,
14
+ transform: "scale(1)"
15
+ }
16
+ });
17
+ var positionerClass = css({
18
+ zIndex: "var(--tsu-z-dropdown)",
19
+ maxWidth: "100dvw",
20
+ minWidth: "0 !important"
21
+ });
22
+ var contentClass = css({
23
+ padding: "var(--tsu-container-padding-sm)",
24
+ backgroundColor: "var(--tsu-bg)",
25
+ borderRadius: "var(--tsu-radius-l2-md)",
26
+ boxShadow: "var(--tsu-shadow-lg)",
27
+ border: "1px solid var(--tsu-neutral-6)",
28
+ outline: "none",
29
+ animation: `${popoverIn} var(--tsu-transition-fast)`
30
+ });
31
+ var arrowClass = css({
32
+ "--arrow-size": "8px",
33
+ "--arrow-background": "var(--tsu-bg)"
34
+ });
35
+ var closeTriggerClass = css({
36
+ display: "flex",
37
+ alignItems: "center",
38
+ justifyContent: "center",
39
+ position: "absolute",
40
+ top: "8px",
41
+ right: "8px",
42
+ width: "24px",
43
+ height: "24px",
44
+ padding: 0,
45
+ border: "none",
46
+ borderRadius: "var(--tsu-radius-l1-md)",
47
+ background: "transparent",
48
+ color: "var(--tsu-neutral-11)",
49
+ cursor: "pointer",
50
+ touchAction: "manipulation"
51
+ });
52
+ var titleClass = css({
53
+ margin: 0,
54
+ paddingRight: "24px",
55
+ fontSize: "var(--tsu-comp-font-size-md)",
56
+ fontWeight: 600,
57
+ color: "var(--tsu-fg)"
58
+ });
59
+ var descriptionClass = css({
60
+ margin: 0,
61
+ marginTop: "4px",
62
+ fontSize: "var(--tsu-comp-font-size-sm)",
63
+ color: "var(--tsu-neutral-11)",
64
+ lineHeight: 1.5
65
+ });
66
+ var Popover$1 = (props = {}) => {
67
+ const [local, rest] = splitProps(mergeProps$2({
68
+ lazyMount: true,
69
+ unmountOnExit: true,
70
+ closeable: false
71
+ }, props), [
72
+ "title",
73
+ "description",
74
+ "closeable",
75
+ "className",
76
+ "children"
77
+ ]);
78
+ const positioning = {
79
+ ...rest.positioning,
80
+ fitViewport: true
81
+ };
82
+ return jsx(Popover.Root, mergeProps(rest, {
83
+ positioning,
84
+ children: [jsx(Popover.Trigger, mergeProps({
85
+ asChild: true,
86
+ children: () => local.children
87
+ })), jsx(Portal_default, mergeProps({ children: jsx(Popover.Positioner, mergeProps({
88
+ className: positionerClass,
89
+ children: jsx(Popover.Content, mergeProps({
90
+ className: contentClass,
91
+ children: [
92
+ jsx(Popover.Arrow, mergeProps({
93
+ className: arrowClass,
94
+ children: jsx(Popover.ArrowTip, mergeProps({ className: arrowClass }))
95
+ })),
96
+ () => local.closeable && jsx(Popover.CloseTrigger, mergeProps({
97
+ className: closeTriggerClass,
98
+ "aria-label": "Close",
99
+ children: "×"
100
+ })),
101
+ () => local.title && jsx(Popover.Title, mergeProps({
102
+ className: titleClass,
103
+ children: () => local.title
104
+ })),
105
+ () => local.description && jsx(Popover.Description, mergeProps({
106
+ className: descriptionClass,
107
+ children: () => local.description
108
+ }))
109
+ ]
110
+ }))
111
+ })) }))]
112
+ }));
113
+ };
114
+ Popover$1.origin = {
115
+ Root: Popover.Root,
116
+ Trigger: Popover.Trigger,
117
+ Positioner: Popover.Positioner,
118
+ Content: Popover.Content,
119
+ Arrow: Popover.Arrow,
120
+ ArrowTip: Popover.ArrowTip,
121
+ CloseTrigger: Popover.CloseTrigger,
122
+ Title: Popover.Title,
123
+ Description: Popover.Description
124
+ };
4
125
  //#endregion
5
- export { Popover_default as default };
6
-
7
- //# sourceMappingURL=Popover.js.map
126
+ export { Popover$1 as default };
@@ -3,5 +3,3 @@ import { Portal } from "@plastic-js/ark";
3
3
  var Portal_default = Portal;
4
4
  //#endregion
5
5
  export { Portal_default as default };
6
-
7
- //# sourceMappingURL=Portal.js.map
@@ -3,5 +3,3 @@ import { Presence } from "@plastic-js/ark";
3
3
  var Presence_default = Presence;
4
4
  //#endregion
5
5
  export { Presence_default as default };
6
-
7
- //# sourceMappingURL=Presence.js.map