@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.
- package/README.md +838 -65
- package/dist/components/Accordion.js +93 -4
- package/dist/components/Avatar.js +96 -4
- package/dist/components/BottomSheet.js +131 -0
- package/dist/components/Button.js +194 -0
- package/dist/components/CardNumberInput.js +28 -44
- package/dist/components/Carousel.js +71 -5
- package/dist/components/Checkbox.js +178 -4
- package/dist/components/Clipboard.js +135 -5
- package/dist/components/CloseButton.js +97 -0
- package/dist/components/Collapsible.js +22 -4
- package/dist/components/ColorPicker.js +327 -4
- package/dist/components/Combobox.js +86 -13
- package/dist/components/ConfirmDialog.js +174 -19
- package/dist/components/DateInput.js +437 -5
- package/dist/components/{DatePickerMobile/wheel.js → DateWheel.js} +1 -3
- package/dist/components/Dialog.js +214 -110
- package/dist/components/Drawer.js +169 -4
- package/dist/components/Field.js +121 -5
- package/dist/components/Fieldset.js +64 -5
- package/dist/components/FileUpload.js +181 -4
- package/dist/components/FocusTrap.js +0 -2
- package/dist/components/Icon.js +32 -17
- package/dist/components/Input.js +211 -0
- package/dist/components/Listbox.js +47 -4
- package/dist/components/Menu.js +99 -4
- package/dist/components/MoneyInput.js +33 -85
- package/dist/components/NumberInput.js +117 -4
- package/dist/components/Pagination.js +91 -5
- package/dist/components/Popover.js +123 -4
- package/dist/components/Portal.js +0 -2
- package/dist/components/Presence.js +0 -2
- package/dist/components/Progress.js +107 -4
- package/dist/components/RadioGroup.js +104 -4
- package/dist/components/RatingGroup.js +75 -4
- package/dist/components/SearchInput.js +60 -55
- package/dist/components/Select.js +428 -5
- package/dist/components/SelectPc.js +239 -0
- package/dist/components/SignaturePad.js +77 -4
- package/dist/components/Skeleton.js +2 -4
- package/dist/components/Slider.js +112 -4
- package/dist/components/Spinner.js +41 -0
- package/dist/components/Splitter.js +51 -4
- package/dist/components/Steps.js +259 -4
- package/dist/components/SwipeReveal.js +2 -4
- package/dist/components/Switch.js +147 -4
- package/dist/components/Tabs.js +80 -4
- package/dist/components/TagsInput.js +128 -4
- package/dist/components/Toast.js +174 -4
- package/dist/components/Toggle.js +39 -4
- package/dist/components/ToggleGroup.js +103 -4
- package/dist/components/Tour.js +63 -4
- package/dist/components/TreeView.js +113 -4
- package/dist/index.js +44 -45
- package/dist/tsumiki.css +1 -0
- package/docs/api.md +670 -0
- package/docs/component-api-pattern.md +362 -0
- package/package.json +16 -6
- package/src/styles/color.css +112 -0
- package/src/styles/index.css +1 -0
- package/src/styles/radius.css +27 -0
- package/src/styles/reset.css +111 -0
- package/src/styles/shadow.css +5 -0
- package/src/styles/sizing.css +59 -0
- package/src/styles/spacing.css +9 -0
- package/src/styles/theme.css +38 -0
- package/src/styles/tokens.css +22 -0
- package/src/styles/transition.css +5 -0
- package/src/styles/typography.css +8 -0
- package/dist/components/Accordion.js.map +0 -1
- package/dist/components/Avatar.js.map +0 -1
- package/dist/components/CardNumberInput.js.map +0 -1
- package/dist/components/Carousel.js.map +0 -1
- package/dist/components/Checkbox.js.map +0 -1
- package/dist/components/Clipboard.js.map +0 -1
- package/dist/components/Collapsible.js.map +0 -1
- package/dist/components/ColorPicker.js.map +0 -1
- package/dist/components/Combobox.js.map +0 -1
- package/dist/components/ConfirmDialog.js.map +0 -1
- package/dist/components/DateInput.js.map +0 -1
- package/dist/components/DatePicker.js +0 -7
- package/dist/components/DatePicker.js.map +0 -1
- package/dist/components/DatePickerMobile/index.js +0 -479
- package/dist/components/DatePickerMobile/index.js.map +0 -1
- package/dist/components/DatePickerMobile/wheel.js.map +0 -1
- package/dist/components/Dialog.js.map +0 -1
- package/dist/components/Drawer.js.map +0 -1
- package/dist/components/Field.js.map +0 -1
- package/dist/components/Fieldset.js.map +0 -1
- package/dist/components/FileUpload.js.map +0 -1
- package/dist/components/FilterableSelect.js +0 -210
- package/dist/components/FilterableSelect.js.map +0 -1
- package/dist/components/FilterableSelectMobile.js +0 -167
- package/dist/components/FilterableSelectMobile.js.map +0 -1
- package/dist/components/FocusTrap.js.map +0 -1
- package/dist/components/HoverCard.js +0 -7
- package/dist/components/HoverCard.js.map +0 -1
- package/dist/components/Icon.js.map +0 -1
- package/dist/components/Listbox.js.map +0 -1
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/MoneyInput.js.map +0 -1
- package/dist/components/NumberInput.js.map +0 -1
- package/dist/components/Pagination.js.map +0 -1
- package/dist/components/Popover.js.map +0 -1
- package/dist/components/Portal.js.map +0 -1
- package/dist/components/Presence.js.map +0 -1
- package/dist/components/Progress.js.map +0 -1
- package/dist/components/RadioGroup.js.map +0 -1
- package/dist/components/RatingGroup.js.map +0 -1
- package/dist/components/SearchInput.js.map +0 -1
- package/dist/components/Select.js.map +0 -1
- package/dist/components/SelectMobile/anatomy.js +0 -10
- package/dist/components/SelectMobile/anatomy.js.map +0 -1
- package/dist/components/SelectMobile/index.js +0 -310
- package/dist/components/SelectMobile/index.js.map +0 -1
- package/dist/components/SignaturePad.js.map +0 -1
- package/dist/components/Skeleton.js.map +0 -1
- package/dist/components/Slider.js.map +0 -1
- package/dist/components/Splitter.js.map +0 -1
- package/dist/components/Steps.js.map +0 -1
- package/dist/components/SwipeReveal.js.map +0 -1
- package/dist/components/Switch.js.map +0 -1
- package/dist/components/Tabs.js.map +0 -1
- package/dist/components/TagsInput.js.map +0 -1
- package/dist/components/Toast.js.map +0 -1
- package/dist/components/Toggle.js.map +0 -1
- package/dist/components/ToggleGroup.js.map +0 -1
- package/dist/components/Tooltip.js +0 -7
- package/dist/components/Tooltip.js.map +0 -1
- package/dist/components/Tour.js.map +0 -1
- package/dist/components/TreeView.js.map +0 -1
- package/dist/node_modules/framesync/dist/es/create-render-step.js +0 -54
- package/dist/node_modules/framesync/dist/es/create-render-step.js.map +0 -1
- package/dist/node_modules/framesync/dist/es/index.js +0 -61
- package/dist/node_modules/framesync/dist/es/index.js.map +0 -1
- package/dist/node_modules/framesync/dist/es/on-next-frame.js +0 -8
- package/dist/node_modules/framesync/dist/es/on-next-frame.js.map +0 -1
- package/dist/node_modules/hey-listen/dist/hey-listen.es.js +0 -15
- package/dist/node_modules/hey-listen/dist/hey-listen.es.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/generators/decay.js +0 -24
- package/dist/node_modules/popmotion/dist/es/animations/generators/decay.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/generators/keyframes.js +0 -40
- package/dist/node_modules/popmotion/dist/es/animations/generators/keyframes.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/generators/spring.js +0 -96
- package/dist/node_modules/popmotion/dist/es/animations/generators/spring.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/index.js +0 -94
- package/dist/node_modules/popmotion/dist/es/animations/index.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/inertia.js +0 -74
- package/dist/node_modules/popmotion/dist/es/animations/inertia.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.js +0 -21
- package/dist/node_modules/popmotion/dist/es/animations/utils/detect-animation-from-options.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/utils/elapsed.js +0 -14
- package/dist/node_modules/popmotion/dist/es/animations/utils/elapsed.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/animations/utils/find-spring.js +0 -68
- package/dist/node_modules/popmotion/dist/es/animations/utils/find-spring.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/easing/index.js +0 -28
- package/dist/node_modules/popmotion/dist/es/easing/index.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/easing/utils.js +0 -13
- package/dist/node_modules/popmotion/dist/es/easing/utils.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/clamp.js +0 -6
- package/dist/node_modules/popmotion/dist/es/utils/clamp.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/hsla-to-rgba.js +0 -35
- package/dist/node_modules/popmotion/dist/es/utils/hsla-to-rgba.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/inc.js +0 -6
- package/dist/node_modules/popmotion/dist/es/utils/inc.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/interpolate.js +0 -69
- package/dist/node_modules/popmotion/dist/es/utils/interpolate.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/mix-color.js +0 -45
- package/dist/node_modules/popmotion/dist/es/utils/mix-color.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/mix-complex.js +0 -61
- package/dist/node_modules/popmotion/dist/es/utils/mix-complex.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/mix.js +0 -6
- package/dist/node_modules/popmotion/dist/es/utils/mix.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/pipe.js +0 -7
- package/dist/node_modules/popmotion/dist/es/utils/pipe.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/progress.js +0 -9
- package/dist/node_modules/popmotion/dist/es/utils/progress.js.map +0 -1
- package/dist/node_modules/popmotion/dist/es/utils/velocity-per-second.js +0 -8
- package/dist/node_modules/popmotion/dist/es/utils/velocity-per-second.js.map +0 -1
- package/dist/node_modules/popmotion/node_modules/tslib/tslib.es6.js +0 -13
- package/dist/node_modules/popmotion/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/color/hex.js +0 -39
- package/dist/node_modules/style-value-types/dist/es/color/hex.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/color/hsla.js +0 -16
- package/dist/node_modules/style-value-types/dist/es/color/hsla.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/color/index.js +0 -20
- package/dist/node_modules/style-value-types/dist/es/color/index.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/color/rgba.js +0 -15
- package/dist/node_modules/style-value-types/dist/es/color/rgba.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/color/utils.js +0 -19
- package/dist/node_modules/style-value-types/dist/es/color/utils.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/complex/index.js +0 -58
- package/dist/node_modules/style-value-types/dist/es/complex/index.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/numbers/index.js +0 -13
- package/dist/node_modules/style-value-types/dist/es/numbers/index.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/numbers/units.js +0 -16
- package/dist/node_modules/style-value-types/dist/es/numbers/units.js.map +0 -1
- package/dist/node_modules/style-value-types/dist/es/utils.js +0 -13
- package/dist/node_modules/style-value-types/dist/es/utils.js.map +0 -1
|
@@ -1,7 +1,73 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CarouselAutoplayTrigger, CarouselControl, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselItemGroup, CarouselNextTrigger, CarouselPrevTrigger, CarouselProgressText, CarouselRoot, ark, mergeProps, useCarouselContext } from "@plastic-js/ark";
|
|
2
2
|
//#region src/components/Carousel.jsx
|
|
3
|
-
var
|
|
3
|
+
var slideBy = (btnEl, direction) => {
|
|
4
|
+
const root = btnEl.closest("[data-part=\"root\"]");
|
|
5
|
+
const group = root?.querySelector("[data-part=\"item-group\"]");
|
|
6
|
+
if (!group) return;
|
|
7
|
+
const pageWidth = group.offsetWidth;
|
|
8
|
+
const currentPage = Math.round(group.scrollLeft / pageWidth);
|
|
9
|
+
const totalSlides = root.querySelectorAll("[data-part=\"item\"]").length;
|
|
10
|
+
const nextPage = direction === "next" ? (currentPage + 1) % totalSlides : currentPage > 0 ? currentPage - 1 : totalSlides - 1;
|
|
11
|
+
group.scrollTo({
|
|
12
|
+
left: nextPage * pageWidth,
|
|
13
|
+
behavior: "smooth"
|
|
14
|
+
});
|
|
15
|
+
return nextPage;
|
|
16
|
+
};
|
|
17
|
+
var syncAfterScroll = (group, api, expectedPage) => {
|
|
18
|
+
const pageWidth = group.offsetWidth;
|
|
19
|
+
api.scrollTo(expectedPage, true);
|
|
20
|
+
requestAnimationFrame(() => {
|
|
21
|
+
requestAnimationFrame(() => {
|
|
22
|
+
group.scrollTo({
|
|
23
|
+
left: expectedPage * pageWidth,
|
|
24
|
+
behavior: "instant"
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
var CarouselPrevTrigger$1 = (props = {}) => {
|
|
30
|
+
const carouselApi = useCarouselContext();
|
|
31
|
+
const handleClick = (e) => {
|
|
32
|
+
e.stopPropagation();
|
|
33
|
+
const nextPage = slideBy(e.currentTarget, "prev");
|
|
34
|
+
if (nextPage == null) return;
|
|
35
|
+
const group = e.currentTarget.closest("[data-part=\"root\"]").querySelector("[data-part=\"item-group\"]");
|
|
36
|
+
const api = carouselApi();
|
|
37
|
+
setTimeout(() => syncAfterScroll(group, api, nextPage), 400);
|
|
38
|
+
};
|
|
39
|
+
return ark.button(mergeProps(() => carouselApi().getPrevTriggerProps(), {
|
|
40
|
+
...props,
|
|
41
|
+
onClick: handleClick
|
|
42
|
+
}));
|
|
43
|
+
};
|
|
44
|
+
var CarouselNextTrigger$1 = (props = {}) => {
|
|
45
|
+
const carouselApi = useCarouselContext();
|
|
46
|
+
const handleClick = (e) => {
|
|
47
|
+
e.stopPropagation();
|
|
48
|
+
const nextPage = slideBy(e.currentTarget, "next");
|
|
49
|
+
if (nextPage == null) return;
|
|
50
|
+
const group = e.currentTarget.closest("[data-part=\"root\"]").querySelector("[data-part=\"item-group\"]");
|
|
51
|
+
const api = carouselApi();
|
|
52
|
+
setTimeout(() => syncAfterScroll(group, api, nextPage), 400);
|
|
53
|
+
};
|
|
54
|
+
return ark.button(mergeProps(() => carouselApi().getNextTriggerProps(), {
|
|
55
|
+
...props,
|
|
56
|
+
onClick: handleClick
|
|
57
|
+
}));
|
|
58
|
+
};
|
|
59
|
+
CarouselRoot.origin = {
|
|
60
|
+
Root: CarouselRoot,
|
|
61
|
+
Control: CarouselControl,
|
|
62
|
+
ItemGroup: CarouselItemGroup,
|
|
63
|
+
Item: CarouselItem,
|
|
64
|
+
PrevTrigger: CarouselPrevTrigger,
|
|
65
|
+
NextTrigger: CarouselNextTrigger,
|
|
66
|
+
IndicatorGroup: CarouselIndicatorGroup,
|
|
67
|
+
Indicator: CarouselIndicator,
|
|
68
|
+
AutoplayTrigger: CarouselAutoplayTrigger,
|
|
69
|
+
ProgressText: CarouselProgressText
|
|
70
|
+
};
|
|
71
|
+
var Carousel_default = CarouselRoot;
|
|
4
72
|
//#endregion
|
|
5
|
-
export { Carousel_default as default };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=Carousel.js.map
|
|
73
|
+
export { CarouselAutoplayTrigger, CarouselControl, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselItemGroup, CarouselNextTrigger$1 as CarouselNextTrigger, CarouselPrevTrigger$1 as CarouselPrevTrigger, CarouselProgressText, Carousel_default as default };
|
|
@@ -1,7 +1,181 @@
|
|
|
1
|
+
import { jsx, mergeProps, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css } from "@emotion/css";
|
|
1
3
|
import { Checkbox } from "@plastic-js/ark";
|
|
4
|
+
import { mergeProps as mergeProps$2, splitProps } from "@plastic-js/plastic";
|
|
2
5
|
//#region src/components/Checkbox.jsx
|
|
3
|
-
var
|
|
6
|
+
var _tmpl = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\"></path></svg>");
|
|
7
|
+
var sizeClasses = {
|
|
8
|
+
xs: css({
|
|
9
|
+
"--_cb-size": "var(--tsu-comp-secondary-height-xs)",
|
|
10
|
+
"--_cb-radius": "var(--tsu-radius-l1-xs)",
|
|
11
|
+
"--_cb-gap": "var(--tsu-spacing-sm)",
|
|
12
|
+
"--_cb-min-height": "var(--tsu-comp-height-xs)",
|
|
13
|
+
"--_cb-font-size": "var(--tsu-comp-font-size-xs)",
|
|
14
|
+
"--_cb-line-height": "var(--tsu-comp-line-height-xs)",
|
|
15
|
+
"--_cb-icon-size": "10px"
|
|
16
|
+
}),
|
|
17
|
+
sm: css({
|
|
18
|
+
"--_cb-size": "var(--tsu-comp-secondary-height-sm)",
|
|
19
|
+
"--_cb-radius": "var(--tsu-radius-l1-sm)",
|
|
20
|
+
"--_cb-gap": "9px",
|
|
21
|
+
"--_cb-min-height": "var(--tsu-comp-height-sm)",
|
|
22
|
+
"--_cb-font-size": "var(--tsu-comp-font-size-sm)",
|
|
23
|
+
"--_cb-line-height": "var(--tsu-comp-line-height-sm)",
|
|
24
|
+
"--_cb-icon-size": "11px"
|
|
25
|
+
}),
|
|
26
|
+
md: css({
|
|
27
|
+
"--_cb-size": "var(--tsu-comp-secondary-height-md)",
|
|
28
|
+
"--_cb-radius": "var(--tsu-radius-l1-md)",
|
|
29
|
+
"--_cb-gap": "10px",
|
|
30
|
+
"--_cb-min-height": "var(--tsu-comp-height-md)",
|
|
31
|
+
"--_cb-font-size": "var(--tsu-comp-font-size-md)",
|
|
32
|
+
"--_cb-line-height": "var(--tsu-comp-line-height-md)",
|
|
33
|
+
"--_cb-icon-size": "12px"
|
|
34
|
+
}),
|
|
35
|
+
lg: css({
|
|
36
|
+
"--_cb-size": "var(--tsu-comp-secondary-height-lg)",
|
|
37
|
+
"--_cb-radius": "var(--tsu-radius-l1-lg)",
|
|
38
|
+
"--_cb-gap": "11px",
|
|
39
|
+
"--_cb-min-height": "var(--tsu-comp-height-lg)",
|
|
40
|
+
"--_cb-font-size": "var(--tsu-comp-font-size-lg)",
|
|
41
|
+
"--_cb-line-height": "var(--tsu-comp-line-height-lg)",
|
|
42
|
+
"--_cb-icon-size": "13px"
|
|
43
|
+
}),
|
|
44
|
+
xl: css({
|
|
45
|
+
"--_cb-size": "var(--tsu-comp-secondary-height-xl)",
|
|
46
|
+
"--_cb-radius": "var(--tsu-radius-l1-xl)",
|
|
47
|
+
"--_cb-gap": "var(--tsu-spacing-md)",
|
|
48
|
+
"--_cb-min-height": "var(--tsu-comp-height-xl)",
|
|
49
|
+
"--_cb-font-size": "var(--tsu-comp-font-size-xl)",
|
|
50
|
+
"--_cb-line-height": "var(--tsu-comp-line-height-xl)",
|
|
51
|
+
"--_cb-icon-size": "14px"
|
|
52
|
+
})
|
|
53
|
+
};
|
|
54
|
+
var rootClass = css({
|
|
55
|
+
display: "inline-flex",
|
|
56
|
+
alignItems: "center",
|
|
57
|
+
gap: "var(--_cb-gap, 10px)",
|
|
58
|
+
minHeight: "var(--_cb-min-height, var(--tsu-comp-height-md))",
|
|
59
|
+
cursor: "pointer",
|
|
60
|
+
fontFamily: "inherit",
|
|
61
|
+
userSelect: "none",
|
|
62
|
+
touchAction: "manipulation",
|
|
63
|
+
WebkitTapHighlightColor: "transparent",
|
|
64
|
+
scrollMargin: 0,
|
|
65
|
+
"&[data-disabled]": { cursor: "not-allowed" }
|
|
66
|
+
});
|
|
67
|
+
var controlClass = css({
|
|
68
|
+
width: "var(--_cb-size, var(--tsu-comp-secondary-height-md))",
|
|
69
|
+
height: "var(--_cb-size, var(--tsu-comp-secondary-height-md))",
|
|
70
|
+
display: "flex",
|
|
71
|
+
alignItems: "center",
|
|
72
|
+
justifyContent: "center",
|
|
73
|
+
flexShrink: 0,
|
|
74
|
+
borderRadius: "var(--_cb-radius, var(--tsu-radius-l1-md))",
|
|
75
|
+
border: "1px solid var(--tsu-accent-8)",
|
|
76
|
+
backgroundColor: "var(--tsu-bg)",
|
|
77
|
+
color: "transparent",
|
|
78
|
+
transition: "background-color var(--tsu-transition-fast), border-color var(--tsu-transition-fast), color var(--tsu-transition-fast), transform var(--tsu-transition-fast)",
|
|
79
|
+
"&[data-state=\"checked\"], &[data-state=\"indeterminate\"]": {
|
|
80
|
+
backgroundColor: "var(--tsu-accent-9)",
|
|
81
|
+
borderColor: "var(--tsu-accent-8)",
|
|
82
|
+
color: "var(--tsu-bg)"
|
|
83
|
+
},
|
|
84
|
+
"&[data-disabled]": {
|
|
85
|
+
backgroundColor: "var(--tsu-disabled-bg)",
|
|
86
|
+
borderColor: "var(--tsu-disabled-border)"
|
|
87
|
+
},
|
|
88
|
+
"&[data-disabled][data-state=\"checked\"], &[data-disabled][data-state=\"indeterminate\"]": {
|
|
89
|
+
backgroundColor: "var(--tsu-disabled-bg)",
|
|
90
|
+
borderColor: "var(--tsu-disabled-border)",
|
|
91
|
+
color: "var(--tsu-disabled-fg)"
|
|
92
|
+
},
|
|
93
|
+
"&:active:not([data-disabled])": { transform: "scale(0.88)" }
|
|
94
|
+
});
|
|
95
|
+
var errorClass = css({
|
|
96
|
+
borderColor: "var(--tsu-danger-9)",
|
|
97
|
+
"&[data-state=\"checked\"], &[data-state=\"indeterminate\"]": {
|
|
98
|
+
backgroundColor: "var(--tsu-danger-9)",
|
|
99
|
+
borderColor: "var(--tsu-danger-9)"
|
|
100
|
+
},
|
|
101
|
+
"&[data-disabled]": {
|
|
102
|
+
borderColor: "var(--tsu-danger-9)",
|
|
103
|
+
backgroundColor: "var(--tsu-bg)"
|
|
104
|
+
},
|
|
105
|
+
"&[data-disabled][data-state=\"checked\"], &[data-disabled][data-state=\"indeterminate\"]": {
|
|
106
|
+
backgroundColor: "var(--tsu-bg)",
|
|
107
|
+
borderColor: "var(--tsu-danger-9)",
|
|
108
|
+
color: "var(--tsu-danger-9)"
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
var indicatorClass = css({
|
|
112
|
+
display: "flex",
|
|
113
|
+
alignItems: "center",
|
|
114
|
+
justifyContent: "center",
|
|
115
|
+
fontSize: "var(--_cb-icon-size, 12px)",
|
|
116
|
+
color: "inherit",
|
|
117
|
+
"& svg": {
|
|
118
|
+
width: "1em",
|
|
119
|
+
height: "1em",
|
|
120
|
+
display: "block"
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
var labelClass = css({
|
|
124
|
+
fontSize: "var(--_cb-font-size, var(--tsu-comp-font-size-md))",
|
|
125
|
+
lineHeight: "var(--_cb-line-height, var(--tsu-comp-line-height-md))",
|
|
126
|
+
color: "var(--tsu-fg)",
|
|
127
|
+
"&[data-disabled]": { color: "var(--tsu-disabled-fg)" }
|
|
128
|
+
});
|
|
129
|
+
var errorLabelClass = css({ color: "var(--tsu-danger-11)" });
|
|
130
|
+
var roundedClass = css({ "--_cb-radius": "var(--tsu-radius-round)" });
|
|
131
|
+
var read = (v) => typeof v === "function" ? v() : v;
|
|
132
|
+
var Checkbox$1 = (props = {}) => {
|
|
133
|
+
const [local, rest] = splitProps(mergeProps$2({
|
|
134
|
+
size: "md",
|
|
135
|
+
rounded: true,
|
|
136
|
+
invalid: false
|
|
137
|
+
}, props), [
|
|
138
|
+
"size",
|
|
139
|
+
"rounded",
|
|
140
|
+
"invalid",
|
|
141
|
+
"className",
|
|
142
|
+
"children"
|
|
143
|
+
]);
|
|
144
|
+
const invalid = read(local.invalid);
|
|
145
|
+
return jsx(Checkbox.Root, mergeProps(rest, {
|
|
146
|
+
className: () => [
|
|
147
|
+
rootClass,
|
|
148
|
+
sizeClasses[read(local.size)],
|
|
149
|
+
read(local.rounded) && roundedClass,
|
|
150
|
+
local.className
|
|
151
|
+
].filter(Boolean).join(" "),
|
|
152
|
+
children: [
|
|
153
|
+
jsx(Checkbox.Control, mergeProps({
|
|
154
|
+
className: () => [controlClass, invalid && errorClass].filter(Boolean).join(" "),
|
|
155
|
+
children: jsx(Checkbox.Indicator, mergeProps({
|
|
156
|
+
className: indicatorClass,
|
|
157
|
+
children: _tmpl.cloneNode(true)
|
|
158
|
+
}))
|
|
159
|
+
})),
|
|
160
|
+
() => local.children && jsx(Checkbox.Label, mergeProps({
|
|
161
|
+
className: () => [
|
|
162
|
+
labelClass,
|
|
163
|
+
"check-label",
|
|
164
|
+
invalid && errorLabelClass
|
|
165
|
+
].filter(Boolean).join(" "),
|
|
166
|
+
children: () => local.children
|
|
167
|
+
})),
|
|
168
|
+
jsx(Checkbox.HiddenInput, {})
|
|
169
|
+
]
|
|
170
|
+
}));
|
|
171
|
+
};
|
|
172
|
+
Checkbox$1.origin = {
|
|
173
|
+
Root: Checkbox.Root,
|
|
174
|
+
Label: Checkbox.Label,
|
|
175
|
+
Control: Checkbox.Control,
|
|
176
|
+
Indicator: Checkbox.Indicator,
|
|
177
|
+
HiddenInput: Checkbox.HiddenInput,
|
|
178
|
+
Group: Checkbox.Group
|
|
179
|
+
};
|
|
4
180
|
//#endregion
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=Checkbox.js.map
|
|
181
|
+
export { Checkbox$1 as default };
|
|
@@ -1,7 +1,137 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { insert, jsx, mergeProps, setProp, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css, keyframes } from "@emotion/css";
|
|
3
|
+
import { createSignal, mergeProps as mergeProps$1, onCleanup, splitProps } from "@plastic-js/plastic";
|
|
2
4
|
//#region src/components/Clipboard.jsx
|
|
3
|
-
var
|
|
5
|
+
var _tmpl3 = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>");
|
|
6
|
+
var _tmpl2 = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6 9 17l-5-5\"></path></svg>");
|
|
7
|
+
var _tmpl = template("<span></span>");
|
|
8
|
+
var popAnim = keyframes({
|
|
9
|
+
"0%": {
|
|
10
|
+
transform: "scale(0.4)",
|
|
11
|
+
opacity: 0
|
|
12
|
+
},
|
|
13
|
+
"50%": { transform: "scale(1.15)" },
|
|
14
|
+
"100%": {
|
|
15
|
+
transform: "scale(1)",
|
|
16
|
+
opacity: 1
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var baseClass = css({
|
|
20
|
+
display: "inline-flex",
|
|
21
|
+
alignItems: "center",
|
|
22
|
+
justifyContent: "center",
|
|
23
|
+
gap: "6px",
|
|
24
|
+
border: "none",
|
|
25
|
+
borderRadius: "var(--_cb-radius, var(--tsu-radius-l1-md))",
|
|
26
|
+
fontFamily: "inherit",
|
|
27
|
+
cursor: "pointer",
|
|
28
|
+
outline: "none",
|
|
29
|
+
color: "var(--tsu-neutral-9)",
|
|
30
|
+
backgroundColor: "transparent",
|
|
31
|
+
userSelect: "none",
|
|
32
|
+
touchAction: "manipulation",
|
|
33
|
+
transition: "background-color var(--tsu-transition-fast), color var(--tsu-transition-fast)",
|
|
34
|
+
"&:focus-visible": {
|
|
35
|
+
color: "var(--tsu-fg)",
|
|
36
|
+
outline: "2px solid var(--tsu-focus-border)",
|
|
37
|
+
outlineOffset: "2px"
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
var sizeClasses = {
|
|
41
|
+
xs: css({
|
|
42
|
+
height: "28px",
|
|
43
|
+
minWidth: "28px",
|
|
44
|
+
padding: "0 6px",
|
|
45
|
+
fontSize: "14px",
|
|
46
|
+
"--_cb-radius": "var(--tsu-radius-l1-xs)"
|
|
47
|
+
}),
|
|
48
|
+
sm: css({
|
|
49
|
+
height: "var(--tsu-comp-height-xs)",
|
|
50
|
+
minWidth: "32px",
|
|
51
|
+
padding: "0 8px",
|
|
52
|
+
fontSize: "16px",
|
|
53
|
+
"--_cb-radius": "var(--tsu-radius-l1-sm)"
|
|
54
|
+
}),
|
|
55
|
+
md: css({
|
|
56
|
+
height: "var(--tsu-comp-height-sm)",
|
|
57
|
+
minWidth: "36px",
|
|
58
|
+
padding: "0 8px",
|
|
59
|
+
fontSize: "18px",
|
|
60
|
+
"--_cb-radius": "var(--tsu-radius-l1-md)"
|
|
61
|
+
}),
|
|
62
|
+
lg: css({
|
|
63
|
+
height: "var(--tsu-comp-height-md)",
|
|
64
|
+
minWidth: "40px",
|
|
65
|
+
padding: "0 10px",
|
|
66
|
+
fontSize: "20px",
|
|
67
|
+
"--_cb-radius": "var(--tsu-radius-l1-lg)"
|
|
68
|
+
}),
|
|
69
|
+
xl: css({
|
|
70
|
+
height: "var(--tsu-comp-height-lg)",
|
|
71
|
+
minWidth: "44px",
|
|
72
|
+
padding: "0 12px",
|
|
73
|
+
fontSize: "22px",
|
|
74
|
+
"--_cb-radius": "var(--tsu-radius-l1-xl)"
|
|
75
|
+
})
|
|
76
|
+
};
|
|
77
|
+
var copiedClass = css({ color: "var(--tsu-success-9)" });
|
|
78
|
+
var iconClass = css({
|
|
79
|
+
flexShrink: 0,
|
|
80
|
+
"& svg": {
|
|
81
|
+
width: "1em",
|
|
82
|
+
height: "1em",
|
|
83
|
+
display: "block"
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
var iconCopiedClass = css({ animation: `${popAnim} var(--tsu-transition-normal)` });
|
|
87
|
+
var Clipboard = (props = {}) => {
|
|
88
|
+
const [local, rest] = splitProps(mergeProps$1({
|
|
89
|
+
size: "md",
|
|
90
|
+
copiedDuration: 2e3
|
|
91
|
+
}, props), [
|
|
92
|
+
"value",
|
|
93
|
+
"size",
|
|
94
|
+
"className",
|
|
95
|
+
"copiedDuration",
|
|
96
|
+
"children"
|
|
97
|
+
]);
|
|
98
|
+
let timer = null;
|
|
99
|
+
const copied = createSignal(false);
|
|
100
|
+
const handleCopy = async () => {
|
|
101
|
+
try {
|
|
102
|
+
await navigator.clipboard.writeText(local.value);
|
|
103
|
+
} catch {
|
|
104
|
+
const ta = document.createElement("textarea");
|
|
105
|
+
ta.value = local.value;
|
|
106
|
+
ta.style.cssText = "position:fixed;opacity:0";
|
|
107
|
+
document.body.appendChild(ta);
|
|
108
|
+
ta.select();
|
|
109
|
+
document.execCommand("copy");
|
|
110
|
+
document.body.removeChild(ta);
|
|
111
|
+
}
|
|
112
|
+
copied(true);
|
|
113
|
+
clearTimeout(timer);
|
|
114
|
+
timer = setTimeout(() => copied(false), local.copiedDuration);
|
|
115
|
+
};
|
|
116
|
+
onCleanup(() => clearTimeout(timer));
|
|
117
|
+
return jsx("button", mergeProps(rest, {
|
|
118
|
+
type: "button",
|
|
119
|
+
onClick: handleCopy,
|
|
120
|
+
get className() {
|
|
121
|
+
return [
|
|
122
|
+
baseClass,
|
|
123
|
+
sizeClasses[local.size],
|
|
124
|
+
copied() && copiedClass,
|
|
125
|
+
local.className
|
|
126
|
+
].filter(Boolean).join(" ");
|
|
127
|
+
},
|
|
128
|
+
children: [() => {
|
|
129
|
+
const _el0 = _tmpl.cloneNode(true);
|
|
130
|
+
insert(_el0, () => copied() ? _tmpl2.cloneNode(true) : _tmpl3.cloneNode(true));
|
|
131
|
+
setProp(_el0, "className", () => [iconClass, copied() && iconCopiedClass].filter(Boolean).join(" "));
|
|
132
|
+
return _el0;
|
|
133
|
+
}, () => local.children]
|
|
134
|
+
}));
|
|
135
|
+
};
|
|
4
136
|
//#endregion
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=Clipboard.js.map
|
|
137
|
+
export { Clipboard as default };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsx, mergeProps, template } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css } from "@emotion/css";
|
|
3
|
+
import { mergeProps as mergeProps$1, splitProps } from "@plastic-js/plastic";
|
|
4
|
+
//#region src/components/CloseButton.jsx
|
|
5
|
+
var _tmpl = template("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 6 6 18M6 6l12 12\"></path></svg>");
|
|
6
|
+
function XIcon() {
|
|
7
|
+
return _tmpl.cloneNode(true);
|
|
8
|
+
}
|
|
9
|
+
var baseClass = css({
|
|
10
|
+
display: "inline-flex",
|
|
11
|
+
alignItems: "center",
|
|
12
|
+
justifyContent: "center",
|
|
13
|
+
padding: 0,
|
|
14
|
+
border: "none",
|
|
15
|
+
borderRadius: "50%",
|
|
16
|
+
background: "transparent",
|
|
17
|
+
color: "var(--tsu-neutral-11)",
|
|
18
|
+
cursor: "pointer",
|
|
19
|
+
fontFamily: "inherit",
|
|
20
|
+
touchAction: "manipulation",
|
|
21
|
+
transition: "background-color var(--tsu-transition-fast), color var(--tsu-transition-fast)",
|
|
22
|
+
"&:active:not([disabled])": {
|
|
23
|
+
color: "var(--tsu-fg)",
|
|
24
|
+
backgroundColor: "var(--tsu-accent-3)"
|
|
25
|
+
},
|
|
26
|
+
"&:focus-visible": {
|
|
27
|
+
color: "var(--tsu-fg)",
|
|
28
|
+
backgroundColor: "var(--tsu-accent-3)",
|
|
29
|
+
outline: "2px solid var(--tsu-focus-border)",
|
|
30
|
+
outlineOffset: "2px"
|
|
31
|
+
},
|
|
32
|
+
"&[disabled]": {
|
|
33
|
+
opacity: .4,
|
|
34
|
+
cursor: "not-allowed"
|
|
35
|
+
},
|
|
36
|
+
"& svg": {
|
|
37
|
+
display: "block",
|
|
38
|
+
flexShrink: 0
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
var sizeClasses = {
|
|
42
|
+
xs: css({
|
|
43
|
+
width: "20px",
|
|
44
|
+
height: "20px",
|
|
45
|
+
"& svg": {
|
|
46
|
+
width: "12px",
|
|
47
|
+
height: "12px"
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
sm: css({
|
|
51
|
+
width: "24px",
|
|
52
|
+
height: "24px",
|
|
53
|
+
"& svg": {
|
|
54
|
+
width: "14px",
|
|
55
|
+
height: "14px"
|
|
56
|
+
}
|
|
57
|
+
}),
|
|
58
|
+
md: css({
|
|
59
|
+
width: "32px",
|
|
60
|
+
height: "32px",
|
|
61
|
+
"& svg": {
|
|
62
|
+
width: "16px",
|
|
63
|
+
height: "16px"
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
lg: css({
|
|
67
|
+
width: "40px",
|
|
68
|
+
height: "40px",
|
|
69
|
+
"& svg": {
|
|
70
|
+
width: "18px",
|
|
71
|
+
height: "18px"
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
};
|
|
75
|
+
var CloseButton = (props = {}) => {
|
|
76
|
+
const [local, rest] = splitProps(mergeProps$1({
|
|
77
|
+
size: "md",
|
|
78
|
+
"aria-label": "Close"
|
|
79
|
+
}, props), [
|
|
80
|
+
"className",
|
|
81
|
+
"size",
|
|
82
|
+
"children"
|
|
83
|
+
]);
|
|
84
|
+
return jsx("button", mergeProps(rest, {
|
|
85
|
+
type: "button",
|
|
86
|
+
get className() {
|
|
87
|
+
return [
|
|
88
|
+
baseClass,
|
|
89
|
+
sizeClasses[typeof local.size === "function" ? local.size() : local.size],
|
|
90
|
+
local.className
|
|
91
|
+
].filter(Boolean).join(" ");
|
|
92
|
+
},
|
|
93
|
+
children: () => local.children || jsx(XIcon, {})
|
|
94
|
+
}));
|
|
95
|
+
};
|
|
96
|
+
//#endregion
|
|
97
|
+
export { CloseButton as default };
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import { jsx, mergeProps } from "@plastic-js/plastic/jsx-runtime";
|
|
2
|
+
import { css } from "@emotion/css";
|
|
1
3
|
import { Collapsible } from "@plastic-js/ark";
|
|
4
|
+
import { splitProps } from "@plastic-js/plastic";
|
|
2
5
|
//#region src/components/Collapsible.jsx
|
|
3
|
-
var
|
|
6
|
+
var rootClass = css({
|
|
7
|
+
display: "flex",
|
|
8
|
+
flexDirection: "column"
|
|
9
|
+
});
|
|
10
|
+
var Collapsible$1 = (props = {}) => {
|
|
11
|
+
const [local, rest] = splitProps(props, ["className", "children"]);
|
|
12
|
+
return jsx(Collapsible.Root, mergeProps(rest, {
|
|
13
|
+
get className() {
|
|
14
|
+
return [rootClass, local.className].filter(Boolean).join(" ");
|
|
15
|
+
},
|
|
16
|
+
children: () => local.children
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
Collapsible$1.origin = {
|
|
20
|
+
Root: Collapsible.Root,
|
|
21
|
+
Trigger: Collapsible.Trigger,
|
|
22
|
+
Content: Collapsible.Content
|
|
23
|
+
};
|
|
4
24
|
//#endregion
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=Collapsible.js.map
|
|
25
|
+
export { Collapsible$1 as default };
|