@avenue-ticketing/ui 0.11.0 → 0.12.0-beta.2
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 +47 -0
- package/dist/badge-types-B67wcd4m.d.ts +22 -0
- package/dist/react/app-store-buttons-outline.d.ts +17 -0
- package/dist/react/app-store-buttons-outline.js +582 -0
- package/dist/react/app-store-buttons-outline.js.map +1 -0
- package/dist/react/app-store-buttons.d.ts +20 -0
- package/dist/react/app-store-buttons.js +817 -0
- package/dist/react/app-store-buttons.js.map +1 -0
- package/dist/react/avatar-label-group.d.ts +14 -0
- package/dist/react/avatar-label-group.js +183 -0
- package/dist/react/avatar-label-group.js.map +1 -0
- package/dist/react/avatar-profile-photo.d.ts +9 -0
- package/dist/react/avatar-profile-photo.js +202 -0
- package/dist/react/avatar-profile-photo.js.map +1 -0
- package/dist/react/avatar.d.ts +66 -40
- package/dist/react/avatar.js +159 -149
- package/dist/react/avatar.js.map +1 -1
- package/dist/react/badge-groups.d.ts +25 -0
- package/dist/react/badge-groups.js +162 -0
- package/dist/react/badge-groups.js.map +1 -0
- package/dist/react/badge.d.ts +123 -59
- package/dist/react/badge.js +314 -86
- package/dist/react/badge.js.map +1 -1
- package/dist/react/button-group.d.ts +43 -0
- package/dist/react/button-group.js +108 -0
- package/dist/react/button-group.js.map +1 -0
- package/dist/react/button-utility.d.ts +47 -0
- package/dist/react/button-utility.js +158 -0
- package/dist/react/button-utility.js.map +1 -0
- package/dist/react/button.d.ts +112 -37
- package/dist/react/button.js +270 -55
- package/dist/react/button.js.map +1 -1
- package/dist/react/checkbox.d.ts +25 -8
- package/dist/react/checkbox.js +115 -110
- package/dist/react/checkbox.js.map +1 -1
- package/dist/react/close-button.d.ts +25 -0
- package/dist/react/close-button.js +54 -0
- package/dist/react/close-button.js.map +1 -0
- package/dist/react/combobox.d.ts +18 -0
- package/dist/react/combobox.js +574 -0
- package/dist/react/combobox.js.map +1 -0
- package/dist/react/dialog.d.ts +15 -15
- package/dist/react/dialog.js +43 -108
- package/dist/react/dialog.js.map +1 -1
- package/dist/react/dropdown-account-breadcrumb.d.ts +5 -0
- package/dist/react/dropdown-account-breadcrumb.js +481 -0
- package/dist/react/dropdown-account-breadcrumb.js.map +1 -0
- package/dist/react/dropdown-account-button.d.ts +5 -0
- package/dist/react/dropdown-account-button.js +938 -0
- package/dist/react/dropdown-account-button.js.map +1 -0
- package/dist/react/dropdown-account-card-md.d.ts +5 -0
- package/dist/react/dropdown-account-card-md.js +714 -0
- package/dist/react/dropdown-account-card-md.js.map +1 -0
- package/dist/react/dropdown-account-card-sm.d.ts +5 -0
- package/dist/react/dropdown-account-card-sm.js +692 -0
- package/dist/react/dropdown-account-card-sm.js.map +1 -0
- package/dist/react/dropdown-account-card-xs.d.ts +5 -0
- package/dist/react/dropdown-account-card-xs.js +672 -0
- package/dist/react/dropdown-account-card-xs.js.map +1 -0
- package/dist/react/dropdown-avatar.d.ts +5 -0
- package/dist/react/dropdown-avatar.js +955 -0
- package/dist/react/dropdown-avatar.js.map +1 -0
- package/dist/react/dropdown-button-advanced.d.ts +5 -0
- package/dist/react/dropdown-button-advanced.js +964 -0
- package/dist/react/dropdown-button-advanced.js.map +1 -0
- package/dist/react/dropdown-button-link.d.ts +5 -0
- package/dist/react/dropdown-button-link.js +666 -0
- package/dist/react/dropdown-button-link.js.map +1 -0
- package/dist/react/dropdown-button-simple.d.ts +5 -0
- package/dist/react/dropdown-button-simple.js +919 -0
- package/dist/react/dropdown-button-simple.js.map +1 -0
- package/dist/react/dropdown-icon-advanced.d.ts +5 -0
- package/dist/react/dropdown-icon-advanced.js +708 -0
- package/dist/react/dropdown-icon-advanced.js.map +1 -0
- package/dist/react/dropdown-icon-simple.d.ts +5 -0
- package/dist/react/dropdown-icon-simple.js +670 -0
- package/dist/react/dropdown-icon-simple.js.map +1 -0
- package/dist/react/dropdown-integration.d.ts +5 -0
- package/dist/react/dropdown-integration.js +1490 -0
- package/dist/react/dropdown-integration.js.map +1 -0
- package/dist/react/dropdown-search-advanced.d.ts +5 -0
- package/dist/react/dropdown-search-advanced.js +1163 -0
- package/dist/react/dropdown-search-advanced.js.map +1 -0
- package/dist/react/dropdown-search-simple.d.ts +5 -0
- package/dist/react/dropdown-search-simple.js +1125 -0
- package/dist/react/dropdown-search-simple.js.map +1 -0
- package/dist/react/dropdown.d.ts +35 -133
- package/dist/react/dropdown.js +536 -1318
- package/dist/react/dropdown.js.map +1 -1
- package/dist/react/file-upload-trigger.d.ts +34 -0
- package/dist/react/file-upload-trigger.js +39 -0
- package/dist/react/file-upload-trigger.js.map +1 -0
- package/dist/react/form.d.ts +10 -0
- package/dist/react/form.js +11 -0
- package/dist/react/form.js.map +1 -0
- package/dist/react/hint-text.d.ts +17 -0
- package/dist/react/hint-text.js +36 -0
- package/dist/react/hint-text.js.map +1 -0
- package/dist/react/hook-form.d.ts +35 -0
- package/dist/react/hook-form.js +50 -0
- package/dist/react/hook-form.js.map +1 -0
- package/dist/react/input-date.d.ts +43 -0
- package/dist/react/input-date.js +306 -0
- package/dist/react/input-date.js.map +1 -0
- package/dist/react/input-file.d.ts +45 -0
- package/dist/react/input-file.js +748 -0
- package/dist/react/input-file.js.map +1 -0
- package/dist/react/input-group.d.ts +37 -0
- package/dist/react/input-group.js +251 -0
- package/dist/react/input-group.js.map +1 -0
- package/dist/react/input-number.d.ts +32 -0
- package/dist/react/input-number.js +553 -0
- package/dist/react/input-number.js.map +1 -0
- package/dist/react/input-payment.d.ts +16 -0
- package/dist/react/input-payment.js +593 -0
- package/dist/react/input-payment.js.map +1 -0
- package/dist/react/input-tags-outer.d.ts +53 -0
- package/dist/react/input-tags-outer.js +607 -0
- package/dist/react/input-tags-outer.js.map +1 -0
- package/dist/react/input-tags.d.ts +53 -0
- package/dist/react/input-tags.js +565 -0
- package/dist/react/input-tags.js.map +1 -0
- package/dist/react/input.d.ts +71 -22
- package/dist/react/input.js +332 -45
- package/dist/react/input.js.map +1 -1
- package/dist/react/label.d.ts +18 -0
- package/dist/react/label.js +112 -0
- package/dist/react/label.js.map +1 -0
- package/dist/react/multi-select.d.ts +90 -0
- package/dist/react/multi-select.js +1237 -0
- package/dist/react/multi-select.js.map +1 -0
- package/dist/react/pin-input.d.ts +59 -0
- package/dist/react/pin-input.js +229 -0
- package/dist/react/pin-input.js.map +1 -0
- package/dist/react/popover.d.ts +14 -71
- package/dist/react/popover.js +171 -540
- package/dist/react/popover.js.map +1 -1
- package/dist/react/progress-circle.d.ts +9 -0
- package/dist/react/progress-circle.js +36 -0
- package/dist/react/progress-circle.js.map +1 -0
- package/dist/react/progress-circles.d.ts +14 -0
- package/dist/react/progress-circles.js +160 -0
- package/dist/react/progress-circles.js.map +1 -0
- package/dist/react/progress-indicators.d.ts +52 -0
- package/dist/react/progress-indicators.js +78 -0
- package/dist/react/progress-indicators.js.map +1 -0
- package/dist/react/radio-buttons.d.ts +35 -0
- package/dist/react/radio-buttons.js +117 -0
- package/dist/react/radio-buttons.js.map +1 -0
- package/dist/react/scroll-header.d.ts +6 -0
- package/dist/react/scroll-header.js +42 -61
- package/dist/react/scroll-header.js.map +1 -1
- package/dist/react/scroll-wheel.d.ts +4 -5
- package/dist/react/scroll-wheel.js +19 -15
- package/dist/react/scroll-wheel.js.map +1 -1
- package/dist/react/select-item.d.ts +14 -0
- package/dist/react/select-item.js +340 -0
- package/dist/react/select-item.js.map +1 -0
- package/dist/react/select-native.d.ts +17 -0
- package/dist/react/select-native.js +203 -0
- package/dist/react/select-native.js.map +1 -0
- package/dist/react/select.d.ts +19 -61
- package/dist/react/select.js +866 -908
- package/dist/react/select.js.map +1 -1
- package/dist/react/sheet.d.ts +19 -19
- package/dist/react/sheet.js +97 -219
- package/dist/react/sheet.js.map +1 -1
- package/dist/react/slider.d.ts +15 -0
- package/dist/react/slider.js +66 -0
- package/dist/react/slider.js.map +1 -0
- package/dist/react/social-button.d.ts +55 -0
- package/dist/react/social-button.js +263 -0
- package/dist/react/social-button.js.map +1 -0
- package/dist/react/social-logos.d.ts +20 -0
- package/dist/react/social-logos.js +131 -0
- package/dist/react/social-logos.js.map +1 -0
- package/dist/react/switch.d.ts +21 -36
- package/dist/react/switch.js +121 -109
- package/dist/react/switch.js.map +1 -1
- package/dist/react/tag-select.d.ts +47 -0
- package/dist/react/tag-select.js +1252 -0
- package/dist/react/tag-select.js.map +1 -0
- package/dist/react/tags.d.ts +30 -0
- package/dist/react/tags.js +228 -0
- package/dist/react/tags.js.map +1 -0
- package/dist/react/textarea.d.ts +40 -4
- package/dist/react/textarea.js +193 -27
- package/dist/react/textarea.js.map +1 -1
- package/dist/react/tooltip.d.ts +30 -43
- package/dist/react/tooltip.js +65 -521
- package/dist/react/tooltip.js.map +1 -1
- package/dist/select-mobile-sheet-CB2ptDTJ.d.ts +12 -0
- package/dist/select-shared-oJEeJxeB.d.ts +68 -0
- package/package.json +28 -21
- package/source.css +2 -13
- package/theme.css +883 -79
- package/dist/react/calendar.d.ts +0 -13
- package/dist/react/calendar.js +0 -4639
- package/dist/react/calendar.js.map +0 -1
- package/dist/react/card.d.ts +0 -11
- package/dist/react/card.js +0 -113
- package/dist/react/card.js.map +0 -1
- package/dist/react/datetime-picker.d.ts +0 -21
- package/dist/react/datetime-picker.js +0 -6142
- package/dist/react/datetime-picker.js.map +0 -1
- package/dist/react/pagination.d.ts +0 -28
- package/dist/react/pagination.js +0 -262
- package/dist/react/pagination.js.map +0 -1
- package/dist/react/table-pagination.d.ts +0 -15
- package/dist/react/table-pagination.js +0 -1247
- package/dist/react/table-pagination.js.map +0 -1
- package/dist/react/table-view/column-menu.d.ts +0 -15
- package/dist/react/table-view/column-menu.js +0 -1049
- package/dist/react/table-view/column-menu.js.map +0 -1
- package/dist/react/table-view/index.d.ts +0 -70
- package/dist/react/table-view/index.js +0 -2284
- package/dist/react/table-view/index.js.map +0 -1
- package/dist/react/table.d.ts +0 -86
- package/dist/react/table.js +0 -414
- package/dist/react/table.js.map +0 -1
- package/dist/react/tabs.d.ts +0 -34
- package/dist/react/tabs.js +0 -423
- package/dist/react/tabs.js.map +0 -1
- package/dist/react/time-picker.d.ts +0 -22
- package/dist/react/time-picker.js +0 -856
- package/dist/react/time-picker.js.map +0 -1
package/dist/react/checkbox.js
CHANGED
|
@@ -1,129 +1,134 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { useRef, useLayoutEffect } from 'react';
|
|
2
|
+
import { Checkbox as Checkbox$1 } from 'react-aria-components';
|
|
3
|
+
import { extendTailwindMerge } from 'tailwind-merge';
|
|
4
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
var twMerge = extendTailwindMerge({
|
|
7
|
+
extend: {
|
|
8
|
+
theme: {
|
|
9
|
+
text: ["display-xs", "display-sm", "display-md", "display-lg", "display-xl", "display-2xl"]
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var cx = twMerge;
|
|
10
14
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
11
15
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
12
|
-
function CheckboxAnimatedCheckMark() {
|
|
13
|
-
const
|
|
16
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
17
|
+
const pathRef = useRef(null);
|
|
14
18
|
useLayoutEffect(() => {
|
|
15
|
-
const
|
|
16
|
-
if (!
|
|
17
|
-
const len =
|
|
19
|
+
const path = pathRef.current;
|
|
20
|
+
if (!path || typeof path.getTotalLength !== "function") return;
|
|
21
|
+
const len = path.getTotalLength();
|
|
18
22
|
if (len <= 0) return;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (typeof
|
|
22
|
-
|
|
23
|
+
path.style.strokeDasharray = `${len}`;
|
|
24
|
+
path.style.strokeDashoffset = `${len}`;
|
|
25
|
+
if (typeof path.animate !== "function") {
|
|
26
|
+
path.style.strokeDashoffset = "0";
|
|
23
27
|
return;
|
|
24
28
|
}
|
|
25
|
-
const anim =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
fill: "forwards"
|
|
32
|
-
}
|
|
33
|
-
);
|
|
29
|
+
const anim = path.animate([{ strokeDashoffset: len }, { strokeDashoffset: 0 }], {
|
|
30
|
+
duration: CHECKBOX_TICK_DRAW_MS,
|
|
31
|
+
delay: CHECKBOX_TICK_DELAY_MS,
|
|
32
|
+
easing: "cubic-bezier(0.45, 0, 0.2, 1)",
|
|
33
|
+
fill: "forwards"
|
|
34
|
+
});
|
|
34
35
|
return () => anim.cancel();
|
|
35
36
|
}, []);
|
|
36
|
-
return /* @__PURE__ */ jsx(
|
|
37
|
-
"
|
|
37
|
+
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", width: pixelSize, height: pixelSize, viewBox: "0 0 14 14", fill: "none", className: cx("block", className), children: /* @__PURE__ */ jsx(
|
|
38
|
+
"path",
|
|
38
39
|
{
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
ref: lineRef,
|
|
46
|
-
points: "4 12 9 17 20 6",
|
|
47
|
-
fill: "none",
|
|
48
|
-
stroke: "currentColor",
|
|
49
|
-
strokeWidth: "3",
|
|
50
|
-
strokeLinecap: "round",
|
|
51
|
-
strokeLinejoin: "round"
|
|
52
|
-
}
|
|
53
|
-
)
|
|
40
|
+
ref: pathRef,
|
|
41
|
+
d: "M2.33325 7L5.24992 9.91667L11.6666 3.5",
|
|
42
|
+
stroke: "currentColor",
|
|
43
|
+
strokeWidth: "2",
|
|
44
|
+
strokeLinecap: "round",
|
|
45
|
+
strokeLinejoin: "round"
|
|
54
46
|
}
|
|
55
|
-
);
|
|
47
|
+
) });
|
|
56
48
|
}
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
"disabled:cursor-not-allowed",
|
|
86
|
-
className
|
|
87
|
-
),
|
|
88
|
-
onClick: (e) => {
|
|
89
|
-
onClick?.(e);
|
|
90
|
-
if (e.defaultPrevented) return;
|
|
91
|
-
if (disabled) return;
|
|
92
|
-
if (isControlled) {
|
|
93
|
-
onCheckedChange?.(!checked);
|
|
94
|
-
return;
|
|
49
|
+
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
50
|
+
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
51
|
+
const isChecked = isSelected || isIndeterminate;
|
|
52
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
53
|
+
return /* @__PURE__ */ jsxs(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: cx(
|
|
57
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
58
|
+
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
59
|
+
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
60
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
61
|
+
isDisabled && "cursor-not-allowed opacity-50",
|
|
62
|
+
isDisabled && !isChecked && "bg-tertiary",
|
|
63
|
+
isFocusVisible && !isDisabled && focusRingShadow,
|
|
64
|
+
className
|
|
65
|
+
),
|
|
66
|
+
children: [
|
|
67
|
+
isIndeterminate && /* @__PURE__ */ jsx(
|
|
68
|
+
"svg",
|
|
69
|
+
{
|
|
70
|
+
"aria-hidden": "true",
|
|
71
|
+
width: iconPixelSize,
|
|
72
|
+
height: iconPixelSize,
|
|
73
|
+
viewBox: "0 0 14 14",
|
|
74
|
+
fill: "none",
|
|
75
|
+
className: "pointer-events-none block text-fg-white",
|
|
76
|
+
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
95
77
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
78
|
+
),
|
|
79
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
};
|
|
84
|
+
CheckboxBase.displayName = "CheckboxBase";
|
|
85
|
+
var Checkbox = ({ label, hint, size = "sm", className, ...ariaCheckboxProps }) => {
|
|
86
|
+
const sizes = {
|
|
87
|
+
sm: {
|
|
88
|
+
root: "gap-2",
|
|
89
|
+
textWrapper: "",
|
|
90
|
+
label: "text-sm font-medium",
|
|
91
|
+
hint: "text-sm"
|
|
92
|
+
},
|
|
93
|
+
md: {
|
|
94
|
+
root: "gap-3",
|
|
95
|
+
textWrapper: "gap-0.5 break-words",
|
|
96
|
+
label: "text-md font-medium",
|
|
97
|
+
hint: "text-md"
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return /* @__PURE__ */ jsx(
|
|
101
|
+
Checkbox$1,
|
|
102
|
+
{
|
|
103
|
+
...ariaCheckboxProps,
|
|
104
|
+
className: (state) => cx(
|
|
105
|
+
"group relative flex items-start",
|
|
106
|
+
state.isDisabled && "cursor-not-allowed",
|
|
107
|
+
sizes[size].root,
|
|
108
|
+
typeof className === "function" ? className(state) : className
|
|
109
|
+
),
|
|
110
|
+
children: ({ isSelected, isIndeterminate, isDisabled, isFocusVisible }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
111
|
+
/* @__PURE__ */ jsx(
|
|
112
|
+
CheckboxBase,
|
|
105
113
|
{
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
children: indeterminate ? /* @__PURE__ */ jsx(
|
|
113
|
-
"span",
|
|
114
|
-
{
|
|
115
|
-
className: "size-2.5 shrink-0 rounded-[2px] border border-primary/20 bg-background",
|
|
116
|
-
"aria-hidden": true
|
|
117
|
-
}
|
|
118
|
-
) : checked ? /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, {}) : null
|
|
114
|
+
size,
|
|
115
|
+
isSelected,
|
|
116
|
+
isIndeterminate,
|
|
117
|
+
isDisabled,
|
|
118
|
+
isFocusVisible,
|
|
119
|
+
className: label || hint ? "mt-0.5" : ""
|
|
119
120
|
}
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
)
|
|
121
|
+
),
|
|
122
|
+
(label || hint) && /* @__PURE__ */ jsxs("div", { className: cx("inline-flex flex-col", sizes[size].textWrapper), children: [
|
|
123
|
+
label && /* @__PURE__ */ jsx("p", { className: cx("text-secondary select-none", sizes[size].label), children: label }),
|
|
124
|
+
hint && /* @__PURE__ */ jsx("span", { className: cx("text-tertiary", sizes[size].hint), onClick: (event) => event.stopPropagation(), children: hint })
|
|
125
|
+
] })
|
|
126
|
+
] })
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
};
|
|
125
130
|
Checkbox.displayName = "Checkbox";
|
|
126
131
|
|
|
127
|
-
export { Checkbox };
|
|
132
|
+
export { Checkbox, CheckboxBase };
|
|
128
133
|
//# sourceMappingURL=checkbox.js.map
|
|
129
134
|
//# sourceMappingURL=checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/utils.ts","../../src/react/checkbox.tsx"],"names":[],"mappings":"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","file":"checkbox.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useLayoutEffect, useRef, useState } from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nconst CHECKBOX_TICK_DELAY_MS = 60;\nconst CHECKBOX_TICK_DRAW_MS = 100;\n\nfunction CheckboxAnimatedCheckMark() {\n const lineRef = useRef<SVGPolylineElement>(null);\n\n useLayoutEffect(() => {\n const poly = lineRef.current;\n if (!poly || typeof poly.getTotalLength !== \"function\") return;\n const len = poly.getTotalLength();\n if (len <= 0) return;\n\n poly.style.strokeDasharray = `${len}`;\n poly.style.strokeDashoffset = `${len}`;\n\n if (typeof poly.animate !== \"function\") {\n poly.style.strokeDashoffset = \"0\";\n return;\n }\n\n const anim = poly.animate(\n [{ strokeDashoffset: len }, { strokeDashoffset: 0 }],\n {\n duration: CHECKBOX_TICK_DRAW_MS,\n delay: CHECKBOX_TICK_DELAY_MS,\n easing: \"cubic-bezier(0.45, 0, 0.2, 1)\",\n fill: \"forwards\",\n },\n );\n return () => anim.cancel();\n }, []);\n\n return (\n <svg\n className=\"size-4 shrink-0 overflow-visible\"\n viewBox=\"0 0 24 24\"\n aria-hidden\n >\n <polyline\n ref={lineRef}\n points=\"4 12 9 17 20 6\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport type CheckboxProps = Omit<\n React.ComponentProps<\"button\">,\n \"type\" | \"role\" | \"aria-checked\" | \"children\"\n> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n // tri-state: same frame as checked; center shows a visible “blank” (inner surface)\n indeterminate?: boolean;\n};\n\nconst Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n checked: checkedProp,\n defaultChecked = false,\n onCheckedChange,\n indeterminate = false,\n disabled = false,\n className,\n onClick,\n ...rest\n },\n ref,\n ) => {\n const isControlled = checkedProp !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] =\n useState(defaultChecked);\n const checked = isControlled ? checkedProp : uncontrolledChecked;\n const ariaChecked: boolean | \"mixed\" = indeterminate\n ? \"mixed\"\n : checked\n ? true\n : false;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"checkbox\"\n data-slot=\"checkbox\"\n data-state={\n indeterminate ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\"\n }\n disabled={disabled}\n aria-checked={ariaChecked}\n className={cn(\n \"ring-offset-background focus-visible:ring-primary/40 inline-flex shrink-0 items-center justify-center rounded-md border border-transparent p-0 outline-none select-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed\",\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n if (disabled) return;\n if (isControlled) {\n onCheckedChange?.(!checked);\n return;\n }\n setUncontrolledChecked((prev) => {\n const next = !prev;\n onCheckedChange?.(next);\n return next;\n });\n }}\n {...rest}\n >\n <span className=\"pointer-events-none\">\n <span\n aria-hidden\n className={cn(\n \"flex size-5 shrink-0 items-center justify-center rounded-[4px] border\",\n !disabled &&\n (indeterminate\n ? \"border-primary bg-primary text-background\"\n : checked\n ? \"border-primary bg-primary text-background\"\n : \"border-primary/20 bg-background\"),\n disabled &&\n (indeterminate\n ? \"border-transparent bg-primary/45 text-primary-foreground\"\n : checked\n ? \"border-transparent bg-primary/45 text-primary-foreground\"\n : \"border-primary/10 bg-muted/25\"),\n )}\n >\n {indeterminate ? (\n <span\n className=\"size-2.5 shrink-0 rounded-[2px] border border-primary/20 bg-background\"\n aria-hidden\n />\n ) : checked ? (\n <CheckboxAnimatedCheckMark />\n ) : null}\n </span>\n </span>\n </button>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../utils/cx.ts","../../../../components/base/checkbox/checkbox.tsx"],"names":["AriaCheckbox"],"mappings":"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","file":"checkbox.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","\"use client\";\n\nimport { useLayoutEffect, useRef, type ReactNode, type Ref } from \"react\";\nimport { Checkbox as AriaCheckbox, type CheckboxProps as AriaCheckboxProps } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\nconst CHECKBOX_TICK_DELAY_MS = 60;\nconst CHECKBOX_TICK_DRAW_MS = 100;\n\n/** Draw-on-check tick animation — remounts when checked so it replays each time. */\nfunction CheckboxAnimatedCheckMark({ pixelSize, className }: { pixelSize: number; className?: string }) {\n const pathRef = useRef<SVGPathElement>(null);\n\n useLayoutEffect(() => {\n const path = pathRef.current;\n if (!path || typeof path.getTotalLength !== \"function\") return;\n const len = path.getTotalLength();\n if (len <= 0) return;\n\n path.style.strokeDasharray = `${len}`;\n path.style.strokeDashoffset = `${len}`;\n\n if (typeof path.animate !== \"function\") {\n path.style.strokeDashoffset = \"0\";\n return;\n }\n\n const anim = path.animate([{ strokeDashoffset: len }, { strokeDashoffset: 0 }], {\n duration: CHECKBOX_TICK_DRAW_MS,\n delay: CHECKBOX_TICK_DELAY_MS,\n easing: \"cubic-bezier(0.45, 0, 0.2, 1)\",\n fill: \"forwards\",\n });\n return () => anim.cancel();\n }, []);\n\n return (\n <svg aria-hidden=\"true\" width={pixelSize} height={pixelSize} viewBox=\"0 0 14 14\" fill=\"none\" className={cx(\"block\", className)}>\n <path\n ref={pathRef}\n d=\"M2.33325 7L5.24992 9.91667L11.6666 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n/** Figma Focus rings/focus-ring — 2px surface gap + 4px brand ring (matches Button). */\nconst focusRingShadow =\n \"outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\nexport interface CheckboxBaseProps {\n size?: \"sm\" | \"md\";\n className?: string;\n isFocusVisible?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n isIndeterminate?: boolean;\n}\n\nexport const CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = \"sm\", isFocusVisible = false }: CheckboxBaseProps) => {\n const isChecked = isSelected || isIndeterminate;\n const iconPixelSize = size === \"sm\" ? 10 : 14;\n\n return (\n <div\n className={cx(\n \"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary\",\n size === \"sm\" ? \"size-4 rounded-xs\" : \"size-5 rounded-sm\",\n isChecked ? \"border-transparent bg-brand-solid\" : \"bg-primary\",\n !isChecked && !isDisabled && \"group-hover:bg-primary_hover\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n isDisabled && !isChecked && \"bg-tertiary\",\n isFocusVisible && !isDisabled && focusRingShadow,\n className,\n )}\n >\n {isIndeterminate && (\n <svg\n aria-hidden=\"true\"\n width={iconPixelSize}\n height={iconPixelSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n className=\"pointer-events-none block text-fg-white\"\n >\n <path d=\"M2.91675 7H11.0834\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n\n {isSelected && !isIndeterminate && (\n <CheckboxAnimatedCheckMark pixelSize={iconPixelSize} className=\"pointer-events-none text-fg-white\" />\n )}\n </div>\n );\n};\nCheckboxBase.displayName = \"CheckboxBase\";\n\ninterface CheckboxProps extends AriaCheckboxProps {\n ref?: Ref<HTMLLabelElement>;\n size?: \"sm\" | \"md\";\n label?: ReactNode;\n hint?: ReactNode;\n}\n\nexport const Checkbox = ({ label, hint, size = \"sm\", className, ...ariaCheckboxProps }: CheckboxProps) => {\n const sizes = {\n sm: {\n root: \"gap-2\",\n textWrapper: \"\",\n label: \"text-sm font-medium\",\n hint: \"text-sm\",\n },\n md: {\n root: \"gap-3\",\n textWrapper: \"gap-0.5 break-words\",\n label: \"text-md font-medium\",\n hint: \"text-md\",\n },\n };\n\n return (\n <AriaCheckbox\n {...ariaCheckboxProps}\n className={(state) =>\n cx(\n \"group relative flex items-start\",\n state.isDisabled && \"cursor-not-allowed\",\n sizes[size].root,\n typeof className === \"function\" ? className(state) : className,\n )\n }\n >\n {({ isSelected, isIndeterminate, isDisabled, isFocusVisible }) => (\n <>\n <CheckboxBase\n size={size}\n isSelected={isSelected}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled}\n isFocusVisible={isFocusVisible}\n className={label || hint ? \"mt-0.5\" : \"\"}\n />\n {(label || hint) && (\n <div className={cx(\"inline-flex flex-col\", sizes[size].textWrapper)}>\n {label && <p className={cx(\"text-secondary select-none\", sizes[size].label)}>{label}</p>}\n {hint && (\n <span className={cx(\"text-tertiary\", sizes[size].hint)} onClick={(event) => event.stopPropagation()}>\n {hint}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaCheckbox>\n );\n};\nCheckbox.displayName = \"Checkbox\";\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ButtonProps } from 'react-aria-components';
|
|
3
|
+
|
|
4
|
+
declare const sizes: {
|
|
5
|
+
sm: {
|
|
6
|
+
root: string;
|
|
7
|
+
icon: string;
|
|
8
|
+
};
|
|
9
|
+
md: {
|
|
10
|
+
root: string;
|
|
11
|
+
icon: string;
|
|
12
|
+
};
|
|
13
|
+
lg: {
|
|
14
|
+
root: string;
|
|
15
|
+
icon: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
interface CloseButtonProps extends ButtonProps {
|
|
19
|
+
theme?: "light" | "dark";
|
|
20
|
+
size?: keyof typeof sizes;
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
declare const CloseButton: ({ label, className, size, theme, ...otherProps }: CloseButtonProps) => react.JSX.Element;
|
|
24
|
+
|
|
25
|
+
export { CloseButton };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
2
|
+
import { Button } from 'react-aria-components';
|
|
3
|
+
import { extendTailwindMerge } from 'tailwind-merge';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var twMerge = extendTailwindMerge({
|
|
7
|
+
extend: {
|
|
8
|
+
theme: {
|
|
9
|
+
text: ["display-xs", "display-sm", "display-md", "display-lg", "display-xl", "display-2xl"]
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var cx = twMerge;
|
|
14
|
+
var focusShadowPlain = "focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
15
|
+
var sizes = {
|
|
16
|
+
sm: { root: "size-9", icon: "size-5" },
|
|
17
|
+
md: { root: "size-10", icon: "size-5" },
|
|
18
|
+
lg: { root: "size-11", icon: "size-6" }
|
|
19
|
+
};
|
|
20
|
+
var themes = {
|
|
21
|
+
light: [
|
|
22
|
+
"text-fg-quaternary",
|
|
23
|
+
"hover:bg-primary_hover hover:text-fg-quaternary_hover",
|
|
24
|
+
"focus-visible:bg-primary",
|
|
25
|
+
focusShadowPlain
|
|
26
|
+
].join(" "),
|
|
27
|
+
dark: [
|
|
28
|
+
"text-fg-white",
|
|
29
|
+
"[&_svg]:opacity-70",
|
|
30
|
+
"hover:bg-white/20 [&:hover_svg]:opacity-100",
|
|
31
|
+
"focus-visible:bg-white/20 [&:focus-visible_svg]:opacity-70",
|
|
32
|
+
focusShadowPlain
|
|
33
|
+
].join(" ")
|
|
34
|
+
};
|
|
35
|
+
var CloseButton = ({ label, className, size = "sm", theme = "light", ...otherProps }) => {
|
|
36
|
+
return /* @__PURE__ */ jsx(
|
|
37
|
+
Button,
|
|
38
|
+
{
|
|
39
|
+
...otherProps,
|
|
40
|
+
"aria-label": label || "Close",
|
|
41
|
+
className: (state) => cx(
|
|
42
|
+
"flex cursor-pointer items-center justify-center overflow-clip rounded-full p-2 transition duration-100 ease-linear focus:outline-hidden disabled:pointer-events-none disabled:opacity-50 pressed:scale-[0.985] pressed:duration-100 motion-reduce:pressed:scale-100",
|
|
43
|
+
sizes[size].root,
|
|
44
|
+
themes[theme],
|
|
45
|
+
typeof className === "function" ? className(state) : className
|
|
46
|
+
),
|
|
47
|
+
children: /* @__PURE__ */ jsx(XIcon, { "aria-hidden": "true", className: cx("shrink-0 transition-inherit-all", sizes[size].icon) })
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export { CloseButton };
|
|
53
|
+
//# sourceMappingURL=close-button.js.map
|
|
54
|
+
//# sourceMappingURL=close-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../utils/cx.ts","../../../../components/base/buttons/close-button.tsx"],"names":["AriaButton","CloseIcon"],"mappings":";;;;;AAEA,IAAM,UAAU,mBAAA,CAAoB;AAAA,EAChC,MAAA,EAAQ;AAAA,IACJ,KAAA,EAAO;AAAA,MACH,MAAM,CAAC,YAAA,EAAc,cAAc,YAAA,EAAc,YAAA,EAAc,cAAc,aAAa;AAAA;AAC9F;AAER,CAAC,CAAA;AAMM,IAAM,EAAA,GAAK,OAAA;ACDlB,IAAM,gBAAA,GACF,uIAAA;AAEJ,IAAM,KAAA,GAAQ;AAAA,EACV,EAAA,EAAI,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM,QAAA,EAAS;AAAA,EACrC,EAAA,EAAI,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,QAAA,EAAS;AAAA,EACtC,EAAA,EAAI,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,QAAA;AACjC,CAAA;AAEA,IAAM,MAAA,GAAS;AAAA,EACX,KAAA,EAAO;AAAA,IACH,oBAAA;AAAA,IACA,uDAAA;AAAA,IACA,0BAAA;AAAA,IACA;AAAA,GACJ,CAAE,KAAK,GAAG,CAAA;AAAA,EACV,IAAA,EAAM;AAAA,IACF,eAAA;AAAA,IACA,oBAAA;AAAA,IACA,6CAAA;AAAA,IACA,4DAAA;AAAA,IACA;AAAA,GACJ,CAAE,KAAK,GAAG;AACd,CAAA;AAQO,IAAM,WAAA,GAAc,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,GAAO,IAAA,EAAM,KAAA,GAAQ,OAAA,EAAS,GAAG,UAAA,EAAW,KAAwB;AAChH,EAAA,uBACI,GAAA;AAAA,IAACA,MAAA;AAAA,IAAA;AAAA,MACI,GAAG,UAAA;AAAA,MACJ,cAAY,KAAA,IAAS,OAAA;AAAA,MACrB,SAAA,EAAW,CAAC,KAAA,KACR,EAAA;AAAA,QACI,qQAAA;AAAA,QACA,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA;AAAA,QACZ,OAAO,KAAK,CAAA;AAAA,QACZ,OAAO,SAAA,KAAc,UAAA,GAAa,SAAA,CAAU,KAAK,CAAA,GAAI;AAAA,OACzD;AAAA,MAGJ,QAAA,kBAAA,GAAA,CAACC,KAAA,EAAA,EAAU,aAAA,EAAY,MAAA,EAAO,SAAA,EAAW,EAAA,CAAG,iCAAA,EAAmC,KAAA,CAAM,IAAI,CAAA,CAAE,IAAI,CAAA,EAAG;AAAA;AAAA,GACtG;AAER","file":"close-button.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","\"use client\";\n\nimport { XIcon as CloseIcon } from \"@phosphor-icons/react/dist/csr/X\";\nimport { Button as AriaButton, type ButtonProps as AriaButtonProps } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\n/**\n * Figma: Buttons/Button close X (2763:420129)\n *\n * Always fully circular (`rounded-full`).\n * Focus: spread-shadow ring (2px surface gap + 4px focus-ring), not outline.\n */\n\nconst focusShadowPlain =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\nconst sizes = {\n sm: { root: \"size-9\", icon: \"size-5\" },\n md: { root: \"size-10\", icon: \"size-5\" },\n lg: { root: \"size-11\", icon: \"size-6\" },\n};\n\nconst themes = {\n light: [\n \"text-fg-quaternary\",\n \"hover:bg-primary_hover hover:text-fg-quaternary_hover\",\n \"focus-visible:bg-primary\",\n focusShadowPlain,\n ].join(\" \"),\n dark: [\n \"text-fg-white\",\n \"[&_svg]:opacity-70\",\n \"hover:bg-white/20 [&:hover_svg]:opacity-100\",\n \"focus-visible:bg-white/20 [&:focus-visible_svg]:opacity-70\",\n focusShadowPlain,\n ].join(\" \"),\n};\n\ninterface CloseButtonProps extends AriaButtonProps {\n theme?: \"light\" | \"dark\";\n size?: keyof typeof sizes;\n label?: string;\n}\n\nexport const CloseButton = ({ label, className, size = \"sm\", theme = \"light\", ...otherProps }: CloseButtonProps) => {\n return (\n <AriaButton\n {...otherProps}\n aria-label={label || \"Close\"}\n className={(state) =>\n cx(\n \"flex cursor-pointer items-center justify-center overflow-clip rounded-full p-2 transition duration-100 ease-linear focus:outline-hidden disabled:pointer-events-none disabled:opacity-50 pressed:scale-[0.985] pressed:duration-100 motion-reduce:pressed:scale-100\",\n sizes[size].root,\n themes[theme],\n typeof className === \"function\" ? className(state) : className,\n )\n }\n >\n <CloseIcon aria-hidden=\"true\" className={cx(\"shrink-0 transition-inherit-all\", sizes[size].icon)} />\n </AriaButton>\n );\n};\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { RefAttributes, FC, ReactNode } from 'react';
|
|
3
|
+
import { ComboBoxProps as ComboBoxProps$1, ListBoxProps } from 'react-aria-components';
|
|
4
|
+
import { S as SelectItemType, C as CommonProps } from '../select-shared-oJEeJxeB.js';
|
|
5
|
+
import '../select-mobile-sheet-CB2ptDTJ.js';
|
|
6
|
+
|
|
7
|
+
interface ComboBoxProps extends Omit<ComboBoxProps$1<SelectItemType>, "children" | "items">, RefAttributes<HTMLDivElement>, CommonProps {
|
|
8
|
+
shortcut?: boolean;
|
|
9
|
+
items?: SelectItemType[];
|
|
10
|
+
popoverClassName?: string;
|
|
11
|
+
shortcutClassName?: string;
|
|
12
|
+
/** Leading icon component displayed before the input. */
|
|
13
|
+
icon?: FC | ReactNode;
|
|
14
|
+
children: ListBoxProps<SelectItemType>["children"];
|
|
15
|
+
}
|
|
16
|
+
declare const ComboBox: ({ placeholder, shortcut, size, children, items, shortcutClassName, icon, hideRequiredIndicator, mobileOptions, ...otherProps }: ComboBoxProps) => react.JSX.Element;
|
|
17
|
+
|
|
18
|
+
export { ComboBox };
|