@x-plat/design-system 0.1.4 → 0.1.5
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/dist/components/Select/index.cjs +17 -7
- package/dist/components/Select/index.d.cts +2 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.js +17 -7
- package/dist/components/Switch/index.cjs +2 -0
- package/dist/components/Switch/index.css +34 -8
- package/dist/components/Switch/index.d.cts +2 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/index.cjs +19 -7
- package/dist/components/index.css +34 -8
- package/dist/components/index.js +19 -7
- package/dist/index.cjs +19 -7
- package/dist/index.css +34 -8
- package/dist/index.js +19 -7
- package/package.json +1 -1
|
@@ -1062,6 +1062,7 @@ var ANIMATION_DURATION_MS = 200;
|
|
|
1062
1062
|
var SelectRoot = (props) => {
|
|
1063
1063
|
const {
|
|
1064
1064
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
1065
|
+
value: valueProp,
|
|
1065
1066
|
onChange,
|
|
1066
1067
|
children,
|
|
1067
1068
|
disabled = false,
|
|
@@ -1070,8 +1071,15 @@ var SelectRoot = (props) => {
|
|
|
1070
1071
|
const itemChildren = import_react5.default.Children.toArray(children).filter(
|
|
1071
1072
|
(child) => import_react5.default.isValidElement(child) && child.type === SelectItem_default
|
|
1072
1073
|
);
|
|
1074
|
+
const isControlled = valueProp !== void 0;
|
|
1073
1075
|
const [isOpen, setOpen] = import_react5.default.useState(false);
|
|
1074
|
-
const [
|
|
1076
|
+
const [uncontrolledLabel, setUncontrolledLabel] = import_react5.default.useState(null);
|
|
1077
|
+
const controlledLabel = import_react5.default.useMemo(() => {
|
|
1078
|
+
if (!isControlled) return null;
|
|
1079
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
1080
|
+
return match ? match.props.children : null;
|
|
1081
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
1082
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
1075
1083
|
const triggerRef = import_react5.default.useRef(null);
|
|
1076
1084
|
const contentRef = import_react5.default.useRef(null);
|
|
1077
1085
|
const [mounted, setMounted] = import_react5.default.useState(false);
|
|
@@ -1095,13 +1103,15 @@ var SelectRoot = (props) => {
|
|
|
1095
1103
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
1096
1104
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
1097
1105
|
const setSelected = import_react5.default.useCallback(
|
|
1098
|
-
(label,
|
|
1099
|
-
|
|
1100
|
-
|
|
1106
|
+
(label, itemValue) => {
|
|
1107
|
+
if (!isControlled) {
|
|
1108
|
+
setUncontrolledLabel(label);
|
|
1109
|
+
}
|
|
1110
|
+
onChange?.(itemValue, label);
|
|
1101
1111
|
},
|
|
1102
|
-
[onChange]
|
|
1112
|
+
[isControlled, onChange]
|
|
1103
1113
|
);
|
|
1104
|
-
const
|
|
1114
|
+
const ctxValue = import_react5.default.useMemo(
|
|
1105
1115
|
() => ({
|
|
1106
1116
|
isOpen,
|
|
1107
1117
|
mounted,
|
|
@@ -1122,7 +1132,7 @@ var SelectRoot = (props) => {
|
|
|
1122
1132
|
if (disabled) return;
|
|
1123
1133
|
toggle();
|
|
1124
1134
|
};
|
|
1125
|
-
return /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(context_default.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime296.jsxs)(
|
|
1135
|
+
return /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime296.jsxs)(
|
|
1126
1136
|
"div",
|
|
1127
1137
|
{
|
|
1128
1138
|
className: clsx_default(
|
|
@@ -22,6 +22,8 @@ type SelectChangeHandler = (value: string | number | undefined, label: React.Rea
|
|
|
22
22
|
interface SelectProps {
|
|
23
23
|
/** 선택 전 표시할 문구 */
|
|
24
24
|
placeholder?: string;
|
|
25
|
+
/** 현재 선택된 값 (controlled) */
|
|
26
|
+
value?: string | number;
|
|
25
27
|
/** 값이 바뀔 때 호출 */
|
|
26
28
|
onChange?: SelectChangeHandler;
|
|
27
29
|
/** Select.Item 만 허용 */
|
|
@@ -22,6 +22,8 @@ type SelectChangeHandler = (value: string | number | undefined, label: React.Rea
|
|
|
22
22
|
interface SelectProps {
|
|
23
23
|
/** 선택 전 표시할 문구 */
|
|
24
24
|
placeholder?: string;
|
|
25
|
+
/** 현재 선택된 값 (controlled) */
|
|
26
|
+
value?: string | number;
|
|
25
27
|
/** 값이 바뀔 때 호출 */
|
|
26
28
|
onChange?: SelectChangeHandler;
|
|
27
29
|
/** Select.Item 만 허용 */
|
|
@@ -1025,6 +1025,7 @@ var ANIMATION_DURATION_MS = 200;
|
|
|
1025
1025
|
var SelectRoot = (props) => {
|
|
1026
1026
|
const {
|
|
1027
1027
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
1028
|
+
value: valueProp,
|
|
1028
1029
|
onChange,
|
|
1029
1030
|
children,
|
|
1030
1031
|
disabled = false,
|
|
@@ -1033,8 +1034,15 @@ var SelectRoot = (props) => {
|
|
|
1033
1034
|
const itemChildren = React5.Children.toArray(children).filter(
|
|
1034
1035
|
(child) => React5.isValidElement(child) && child.type === SelectItem_default
|
|
1035
1036
|
);
|
|
1037
|
+
const isControlled = valueProp !== void 0;
|
|
1036
1038
|
const [isOpen, setOpen] = React5.useState(false);
|
|
1037
|
-
const [
|
|
1039
|
+
const [uncontrolledLabel, setUncontrolledLabel] = React5.useState(null);
|
|
1040
|
+
const controlledLabel = React5.useMemo(() => {
|
|
1041
|
+
if (!isControlled) return null;
|
|
1042
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
1043
|
+
return match ? match.props.children : null;
|
|
1044
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
1045
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
1038
1046
|
const triggerRef = React5.useRef(null);
|
|
1039
1047
|
const contentRef = React5.useRef(null);
|
|
1040
1048
|
const [mounted, setMounted] = React5.useState(false);
|
|
@@ -1058,13 +1066,15 @@ var SelectRoot = (props) => {
|
|
|
1058
1066
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
1059
1067
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
1060
1068
|
const setSelected = React5.useCallback(
|
|
1061
|
-
(label,
|
|
1062
|
-
|
|
1063
|
-
|
|
1069
|
+
(label, itemValue) => {
|
|
1070
|
+
if (!isControlled) {
|
|
1071
|
+
setUncontrolledLabel(label);
|
|
1072
|
+
}
|
|
1073
|
+
onChange?.(itemValue, label);
|
|
1064
1074
|
},
|
|
1065
|
-
[onChange]
|
|
1075
|
+
[isControlled, onChange]
|
|
1066
1076
|
);
|
|
1067
|
-
const
|
|
1077
|
+
const ctxValue = React5.useMemo(
|
|
1068
1078
|
() => ({
|
|
1069
1079
|
isOpen,
|
|
1070
1080
|
mounted,
|
|
@@ -1085,7 +1095,7 @@ var SelectRoot = (props) => {
|
|
|
1085
1095
|
if (disabled) return;
|
|
1086
1096
|
toggle();
|
|
1087
1097
|
};
|
|
1088
|
-
return /* @__PURE__ */ jsx296(context_default.Provider, { value, children: /* @__PURE__ */ jsxs189(
|
|
1098
|
+
return /* @__PURE__ */ jsx296(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs189(
|
|
1089
1099
|
"div",
|
|
1090
1100
|
{
|
|
1091
1101
|
className: clsx_default(
|
|
@@ -186,6 +186,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
186
186
|
var Switch = (props) => {
|
|
187
187
|
const {
|
|
188
188
|
value,
|
|
189
|
+
size = "md",
|
|
189
190
|
disabled,
|
|
190
191
|
onChange,
|
|
191
192
|
colorNamespace = "xplat",
|
|
@@ -220,6 +221,7 @@ var Switch = (props) => {
|
|
|
220
221
|
{
|
|
221
222
|
className: clsx_default(
|
|
222
223
|
"lib-xplat-switch",
|
|
224
|
+
size,
|
|
223
225
|
value ? "checked" : void 0,
|
|
224
226
|
disabled && "disabled",
|
|
225
227
|
isAnimating && "animating",
|
|
@@ -1,15 +1,46 @@
|
|
|
1
1
|
/* src/components/Switch/switch.scss */
|
|
2
2
|
.lib-xplat-switch {
|
|
3
3
|
position: relative;
|
|
4
|
-
|
|
5
|
-
height: 2rem;
|
|
6
|
-
border-radius: 1rem;
|
|
4
|
+
border-radius: 9999px;
|
|
7
5
|
cursor: pointer;
|
|
8
6
|
transition: background-color 0.2s, border-color 0.2s;
|
|
9
7
|
border: 1px solid transparent;
|
|
10
8
|
background-color: #D4D4D4;
|
|
11
9
|
border-color: #D4D4D4;
|
|
12
10
|
}
|
|
11
|
+
.lib-xplat-switch.sm {
|
|
12
|
+
width: 2rem;
|
|
13
|
+
height: 1.125rem;
|
|
14
|
+
}
|
|
15
|
+
.lib-xplat-switch.sm > .knob {
|
|
16
|
+
width: 0.875rem;
|
|
17
|
+
height: 0.875rem;
|
|
18
|
+
}
|
|
19
|
+
.lib-xplat-switch.sm > .knob.checked {
|
|
20
|
+
transform: translateY(-50%) translateX(0.875rem);
|
|
21
|
+
}
|
|
22
|
+
.lib-xplat-switch.md {
|
|
23
|
+
width: 3rem;
|
|
24
|
+
height: 1.625rem;
|
|
25
|
+
}
|
|
26
|
+
.lib-xplat-switch.md > .knob {
|
|
27
|
+
width: 1.375rem;
|
|
28
|
+
height: 1.375rem;
|
|
29
|
+
}
|
|
30
|
+
.lib-xplat-switch.md > .knob.checked {
|
|
31
|
+
transform: translateY(-50%) translateX(1.375rem);
|
|
32
|
+
}
|
|
33
|
+
.lib-xplat-switch.lg {
|
|
34
|
+
width: 3.5rem;
|
|
35
|
+
height: 1.875rem;
|
|
36
|
+
}
|
|
37
|
+
.lib-xplat-switch.lg > .knob {
|
|
38
|
+
width: 1.625rem;
|
|
39
|
+
height: 1.625rem;
|
|
40
|
+
}
|
|
41
|
+
.lib-xplat-switch.lg > .knob.checked {
|
|
42
|
+
transform: translateY(-50%) translateX(1.625rem);
|
|
43
|
+
}
|
|
13
44
|
.lib-xplat-switch.disabled {
|
|
14
45
|
opacity: 0.5;
|
|
15
46
|
cursor: not-allowed;
|
|
@@ -767,14 +798,9 @@
|
|
|
767
798
|
position: absolute;
|
|
768
799
|
top: 50%;
|
|
769
800
|
left: 0;
|
|
770
|
-
width: 1.75rem;
|
|
771
|
-
height: 1.75rem;
|
|
772
801
|
background-color: #FFFFFF;
|
|
773
802
|
border-radius: 9999px;
|
|
774
803
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
775
804
|
transform: translateY(-50%);
|
|
776
805
|
transition: transform 0.25s;
|
|
777
806
|
}
|
|
778
|
-
.lib-xplat-switch > .knob.checked {
|
|
779
|
-
transform: translateY(-50%) translateX(2rem);
|
|
780
|
-
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { C as ColorNamespace, a as ColorName, d as ColorProps } from '../../colors-BG91q_uV.cjs';
|
|
3
3
|
|
|
4
|
+
type SwitchSize = "sm" | "md" | "lg";
|
|
4
5
|
interface SwitchProps<N extends ColorNamespace, C extends ColorName<N> = ColorName<N>> extends ColorProps<N, C> {
|
|
5
6
|
value: boolean;
|
|
7
|
+
size?: SwitchSize;
|
|
6
8
|
disabled?: boolean;
|
|
7
9
|
className?: string;
|
|
8
10
|
onChange?: (value: boolean) => void;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { C as ColorNamespace, a as ColorName, d as ColorProps } from '../../colors-BG91q_uV.js';
|
|
3
3
|
|
|
4
|
+
type SwitchSize = "sm" | "md" | "lg";
|
|
4
5
|
interface SwitchProps<N extends ColorNamespace, C extends ColorName<N> = ColorName<N>> extends ColorProps<N, C> {
|
|
5
6
|
value: boolean;
|
|
7
|
+
size?: SwitchSize;
|
|
6
8
|
disabled?: boolean;
|
|
7
9
|
className?: string;
|
|
8
10
|
onChange?: (value: boolean) => void;
|
|
@@ -150,6 +150,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
150
150
|
var Switch = (props) => {
|
|
151
151
|
const {
|
|
152
152
|
value,
|
|
153
|
+
size = "md",
|
|
153
154
|
disabled,
|
|
154
155
|
onChange,
|
|
155
156
|
colorNamespace = "xplat",
|
|
@@ -184,6 +185,7 @@ var Switch = (props) => {
|
|
|
184
185
|
{
|
|
185
186
|
className: clsx_default(
|
|
186
187
|
"lib-xplat-switch",
|
|
188
|
+
size,
|
|
187
189
|
value ? "checked" : void 0,
|
|
188
190
|
disabled && "disabled",
|
|
189
191
|
isAnimating && "animating",
|
|
@@ -2766,6 +2766,7 @@ var ANIMATION_DURATION_MS3 = 200;
|
|
|
2766
2766
|
var SelectRoot = (props) => {
|
|
2767
2767
|
const {
|
|
2768
2768
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
2769
|
+
value: valueProp,
|
|
2769
2770
|
onChange,
|
|
2770
2771
|
children,
|
|
2771
2772
|
disabled = false,
|
|
@@ -2774,8 +2775,15 @@ var SelectRoot = (props) => {
|
|
|
2774
2775
|
const itemChildren = import_react17.default.Children.toArray(children).filter(
|
|
2775
2776
|
(child) => import_react17.default.isValidElement(child) && child.type === SelectItem_default
|
|
2776
2777
|
);
|
|
2778
|
+
const isControlled = valueProp !== void 0;
|
|
2777
2779
|
const [isOpen, setOpen] = import_react17.default.useState(false);
|
|
2778
|
-
const [
|
|
2780
|
+
const [uncontrolledLabel, setUncontrolledLabel] = import_react17.default.useState(null);
|
|
2781
|
+
const controlledLabel = import_react17.default.useMemo(() => {
|
|
2782
|
+
if (!isControlled) return null;
|
|
2783
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
2784
|
+
return match ? match.props.children : null;
|
|
2785
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
2786
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
2779
2787
|
const triggerRef = import_react17.default.useRef(null);
|
|
2780
2788
|
const contentRef = import_react17.default.useRef(null);
|
|
2781
2789
|
const [mounted, setMounted] = import_react17.default.useState(false);
|
|
@@ -2799,13 +2807,15 @@ var SelectRoot = (props) => {
|
|
|
2799
2807
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
2800
2808
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
2801
2809
|
const setSelected = import_react17.default.useCallback(
|
|
2802
|
-
(label,
|
|
2803
|
-
|
|
2804
|
-
|
|
2810
|
+
(label, itemValue) => {
|
|
2811
|
+
if (!isControlled) {
|
|
2812
|
+
setUncontrolledLabel(label);
|
|
2813
|
+
}
|
|
2814
|
+
onChange?.(itemValue, label);
|
|
2805
2815
|
},
|
|
2806
|
-
[onChange]
|
|
2816
|
+
[isControlled, onChange]
|
|
2807
2817
|
);
|
|
2808
|
-
const
|
|
2818
|
+
const ctxValue = import_react17.default.useMemo(
|
|
2809
2819
|
() => ({
|
|
2810
2820
|
isOpen,
|
|
2811
2821
|
mounted,
|
|
@@ -2826,7 +2836,7 @@ var SelectRoot = (props) => {
|
|
|
2826
2836
|
if (disabled) return;
|
|
2827
2837
|
toggle();
|
|
2828
2838
|
};
|
|
2829
|
-
return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(context_default.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)(
|
|
2839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)(
|
|
2830
2840
|
"div",
|
|
2831
2841
|
{
|
|
2832
2842
|
className: clsx_default(
|
|
@@ -3460,6 +3470,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
3460
3470
|
var Switch = (props) => {
|
|
3461
3471
|
const {
|
|
3462
3472
|
value,
|
|
3473
|
+
size = "md",
|
|
3463
3474
|
disabled,
|
|
3464
3475
|
onChange,
|
|
3465
3476
|
colorNamespace = "xplat",
|
|
@@ -3494,6 +3505,7 @@ var Switch = (props) => {
|
|
|
3494
3505
|
{
|
|
3495
3506
|
className: clsx_default(
|
|
3496
3507
|
"lib-xplat-switch",
|
|
3508
|
+
size,
|
|
3497
3509
|
value ? "checked" : void 0,
|
|
3498
3510
|
disabled && "disabled",
|
|
3499
3511
|
isAnimating && "animating",
|
|
@@ -7267,15 +7267,46 @@
|
|
|
7267
7267
|
/* src/components/Switch/switch.scss */
|
|
7268
7268
|
.lib-xplat-switch {
|
|
7269
7269
|
position: relative;
|
|
7270
|
-
|
|
7271
|
-
height: 2rem;
|
|
7272
|
-
border-radius: 1rem;
|
|
7270
|
+
border-radius: 9999px;
|
|
7273
7271
|
cursor: pointer;
|
|
7274
7272
|
transition: background-color 0.2s, border-color 0.2s;
|
|
7275
7273
|
border: 1px solid transparent;
|
|
7276
7274
|
background-color: #D4D4D4;
|
|
7277
7275
|
border-color: #D4D4D4;
|
|
7278
7276
|
}
|
|
7277
|
+
.lib-xplat-switch.sm {
|
|
7278
|
+
width: 2rem;
|
|
7279
|
+
height: 1.125rem;
|
|
7280
|
+
}
|
|
7281
|
+
.lib-xplat-switch.sm > .knob {
|
|
7282
|
+
width: 0.875rem;
|
|
7283
|
+
height: 0.875rem;
|
|
7284
|
+
}
|
|
7285
|
+
.lib-xplat-switch.sm > .knob.checked {
|
|
7286
|
+
transform: translateY(-50%) translateX(0.875rem);
|
|
7287
|
+
}
|
|
7288
|
+
.lib-xplat-switch.md {
|
|
7289
|
+
width: 3rem;
|
|
7290
|
+
height: 1.625rem;
|
|
7291
|
+
}
|
|
7292
|
+
.lib-xplat-switch.md > .knob {
|
|
7293
|
+
width: 1.375rem;
|
|
7294
|
+
height: 1.375rem;
|
|
7295
|
+
}
|
|
7296
|
+
.lib-xplat-switch.md > .knob.checked {
|
|
7297
|
+
transform: translateY(-50%) translateX(1.375rem);
|
|
7298
|
+
}
|
|
7299
|
+
.lib-xplat-switch.lg {
|
|
7300
|
+
width: 3.5rem;
|
|
7301
|
+
height: 1.875rem;
|
|
7302
|
+
}
|
|
7303
|
+
.lib-xplat-switch.lg > .knob {
|
|
7304
|
+
width: 1.625rem;
|
|
7305
|
+
height: 1.625rem;
|
|
7306
|
+
}
|
|
7307
|
+
.lib-xplat-switch.lg > .knob.checked {
|
|
7308
|
+
transform: translateY(-50%) translateX(1.625rem);
|
|
7309
|
+
}
|
|
7279
7310
|
.lib-xplat-switch.disabled {
|
|
7280
7311
|
opacity: 0.5;
|
|
7281
7312
|
cursor: not-allowed;
|
|
@@ -8033,17 +8064,12 @@
|
|
|
8033
8064
|
position: absolute;
|
|
8034
8065
|
top: 50%;
|
|
8035
8066
|
left: 0;
|
|
8036
|
-
width: 1.75rem;
|
|
8037
|
-
height: 1.75rem;
|
|
8038
8067
|
background-color: #FFFFFF;
|
|
8039
8068
|
border-radius: 9999px;
|
|
8040
8069
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
8041
8070
|
transform: translateY(-50%);
|
|
8042
8071
|
transition: transform 0.25s;
|
|
8043
8072
|
}
|
|
8044
|
-
.lib-xplat-switch > .knob.checked {
|
|
8045
|
-
transform: translateY(-50%) translateX(2rem);
|
|
8046
|
-
}
|
|
8047
8073
|
|
|
8048
8074
|
/* src/components/Tab/tab.scss */
|
|
8049
8075
|
.lib-xplat-tab {
|
package/dist/components/index.js
CHANGED
|
@@ -2695,6 +2695,7 @@ var ANIMATION_DURATION_MS3 = 200;
|
|
|
2695
2695
|
var SelectRoot = (props) => {
|
|
2696
2696
|
const {
|
|
2697
2697
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
2698
|
+
value: valueProp,
|
|
2698
2699
|
onChange,
|
|
2699
2700
|
children,
|
|
2700
2701
|
disabled = false,
|
|
@@ -2703,8 +2704,15 @@ var SelectRoot = (props) => {
|
|
|
2703
2704
|
const itemChildren = React16.Children.toArray(children).filter(
|
|
2704
2705
|
(child) => React16.isValidElement(child) && child.type === SelectItem_default
|
|
2705
2706
|
);
|
|
2707
|
+
const isControlled = valueProp !== void 0;
|
|
2706
2708
|
const [isOpen, setOpen] = React16.useState(false);
|
|
2707
|
-
const [
|
|
2709
|
+
const [uncontrolledLabel, setUncontrolledLabel] = React16.useState(null);
|
|
2710
|
+
const controlledLabel = React16.useMemo(() => {
|
|
2711
|
+
if (!isControlled) return null;
|
|
2712
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
2713
|
+
return match ? match.props.children : null;
|
|
2714
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
2715
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
2708
2716
|
const triggerRef = React16.useRef(null);
|
|
2709
2717
|
const contentRef = React16.useRef(null);
|
|
2710
2718
|
const [mounted, setMounted] = React16.useState(false);
|
|
@@ -2728,13 +2736,15 @@ var SelectRoot = (props) => {
|
|
|
2728
2736
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
2729
2737
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
2730
2738
|
const setSelected = React16.useCallback(
|
|
2731
|
-
(label,
|
|
2732
|
-
|
|
2733
|
-
|
|
2739
|
+
(label, itemValue) => {
|
|
2740
|
+
if (!isControlled) {
|
|
2741
|
+
setUncontrolledLabel(label);
|
|
2742
|
+
}
|
|
2743
|
+
onChange?.(itemValue, label);
|
|
2734
2744
|
},
|
|
2735
|
-
[onChange]
|
|
2745
|
+
[isControlled, onChange]
|
|
2736
2746
|
);
|
|
2737
|
-
const
|
|
2747
|
+
const ctxValue = React16.useMemo(
|
|
2738
2748
|
() => ({
|
|
2739
2749
|
isOpen,
|
|
2740
2750
|
mounted,
|
|
@@ -2755,7 +2765,7 @@ var SelectRoot = (props) => {
|
|
|
2755
2765
|
if (disabled) return;
|
|
2756
2766
|
toggle();
|
|
2757
2767
|
};
|
|
2758
|
-
return /* @__PURE__ */ jsx319(context_default.Provider, { value, children: /* @__PURE__ */ jsxs203(
|
|
2768
|
+
return /* @__PURE__ */ jsx319(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs203(
|
|
2759
2769
|
"div",
|
|
2760
2770
|
{
|
|
2761
2771
|
className: clsx_default(
|
|
@@ -3389,6 +3399,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
3389
3399
|
var Switch = (props) => {
|
|
3390
3400
|
const {
|
|
3391
3401
|
value,
|
|
3402
|
+
size = "md",
|
|
3392
3403
|
disabled,
|
|
3393
3404
|
onChange,
|
|
3394
3405
|
colorNamespace = "xplat",
|
|
@@ -3423,6 +3434,7 @@ var Switch = (props) => {
|
|
|
3423
3434
|
{
|
|
3424
3435
|
className: clsx_default(
|
|
3425
3436
|
"lib-xplat-switch",
|
|
3437
|
+
size,
|
|
3426
3438
|
value ? "checked" : void 0,
|
|
3427
3439
|
disabled && "disabled",
|
|
3428
3440
|
isAnimating && "animating",
|
package/dist/index.cjs
CHANGED
|
@@ -7304,6 +7304,7 @@ var ANIMATION_DURATION_MS3 = 200;
|
|
|
7304
7304
|
var SelectRoot = (props) => {
|
|
7305
7305
|
const {
|
|
7306
7306
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
7307
|
+
value: valueProp,
|
|
7307
7308
|
onChange,
|
|
7308
7309
|
children,
|
|
7309
7310
|
disabled = false,
|
|
@@ -7312,8 +7313,15 @@ var SelectRoot = (props) => {
|
|
|
7312
7313
|
const itemChildren = import_react17.default.Children.toArray(children).filter(
|
|
7313
7314
|
(child) => import_react17.default.isValidElement(child) && child.type === SelectItem_default
|
|
7314
7315
|
);
|
|
7316
|
+
const isControlled = valueProp !== void 0;
|
|
7315
7317
|
const [isOpen, setOpen] = import_react17.default.useState(false);
|
|
7316
|
-
const [
|
|
7318
|
+
const [uncontrolledLabel, setUncontrolledLabel] = import_react17.default.useState(null);
|
|
7319
|
+
const controlledLabel = import_react17.default.useMemo(() => {
|
|
7320
|
+
if (!isControlled) return null;
|
|
7321
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
7322
|
+
return match ? match.props.children : null;
|
|
7323
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
7324
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
7317
7325
|
const triggerRef = import_react17.default.useRef(null);
|
|
7318
7326
|
const contentRef = import_react17.default.useRef(null);
|
|
7319
7327
|
const [mounted, setMounted] = import_react17.default.useState(false);
|
|
@@ -7337,13 +7345,15 @@ var SelectRoot = (props) => {
|
|
|
7337
7345
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
7338
7346
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
7339
7347
|
const setSelected = import_react17.default.useCallback(
|
|
7340
|
-
(label,
|
|
7341
|
-
|
|
7342
|
-
|
|
7348
|
+
(label, itemValue) => {
|
|
7349
|
+
if (!isControlled) {
|
|
7350
|
+
setUncontrolledLabel(label);
|
|
7351
|
+
}
|
|
7352
|
+
onChange?.(itemValue, label);
|
|
7343
7353
|
},
|
|
7344
|
-
[onChange]
|
|
7354
|
+
[isControlled, onChange]
|
|
7345
7355
|
);
|
|
7346
|
-
const
|
|
7356
|
+
const ctxValue = import_react17.default.useMemo(
|
|
7347
7357
|
() => ({
|
|
7348
7358
|
isOpen,
|
|
7349
7359
|
mounted,
|
|
@@ -7364,7 +7374,7 @@ var SelectRoot = (props) => {
|
|
|
7364
7374
|
if (disabled) return;
|
|
7365
7375
|
toggle();
|
|
7366
7376
|
};
|
|
7367
|
-
return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(context_default.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)(
|
|
7377
|
+
return /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)(
|
|
7368
7378
|
"div",
|
|
7369
7379
|
{
|
|
7370
7380
|
className: clsx_default(
|
|
@@ -7998,6 +8008,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
7998
8008
|
var Switch = (props) => {
|
|
7999
8009
|
const {
|
|
8000
8010
|
value,
|
|
8011
|
+
size = "md",
|
|
8001
8012
|
disabled,
|
|
8002
8013
|
onChange,
|
|
8003
8014
|
colorNamespace = "xplat",
|
|
@@ -8032,6 +8043,7 @@ var Switch = (props) => {
|
|
|
8032
8043
|
{
|
|
8033
8044
|
className: clsx_default(
|
|
8034
8045
|
"lib-xplat-switch",
|
|
8046
|
+
size,
|
|
8035
8047
|
value ? "checked" : void 0,
|
|
8036
8048
|
disabled && "disabled",
|
|
8037
8049
|
isAnimating && "animating",
|
package/dist/index.css
CHANGED
|
@@ -7269,15 +7269,46 @@
|
|
|
7269
7269
|
/* src/components/Switch/switch.scss */
|
|
7270
7270
|
.lib-xplat-switch {
|
|
7271
7271
|
position: relative;
|
|
7272
|
-
|
|
7273
|
-
height: 2rem;
|
|
7274
|
-
border-radius: 1rem;
|
|
7272
|
+
border-radius: 9999px;
|
|
7275
7273
|
cursor: pointer;
|
|
7276
7274
|
transition: background-color 0.2s, border-color 0.2s;
|
|
7277
7275
|
border: 1px solid transparent;
|
|
7278
7276
|
background-color: #D4D4D4;
|
|
7279
7277
|
border-color: #D4D4D4;
|
|
7280
7278
|
}
|
|
7279
|
+
.lib-xplat-switch.sm {
|
|
7280
|
+
width: 2rem;
|
|
7281
|
+
height: 1.125rem;
|
|
7282
|
+
}
|
|
7283
|
+
.lib-xplat-switch.sm > .knob {
|
|
7284
|
+
width: 0.875rem;
|
|
7285
|
+
height: 0.875rem;
|
|
7286
|
+
}
|
|
7287
|
+
.lib-xplat-switch.sm > .knob.checked {
|
|
7288
|
+
transform: translateY(-50%) translateX(0.875rem);
|
|
7289
|
+
}
|
|
7290
|
+
.lib-xplat-switch.md {
|
|
7291
|
+
width: 3rem;
|
|
7292
|
+
height: 1.625rem;
|
|
7293
|
+
}
|
|
7294
|
+
.lib-xplat-switch.md > .knob {
|
|
7295
|
+
width: 1.375rem;
|
|
7296
|
+
height: 1.375rem;
|
|
7297
|
+
}
|
|
7298
|
+
.lib-xplat-switch.md > .knob.checked {
|
|
7299
|
+
transform: translateY(-50%) translateX(1.375rem);
|
|
7300
|
+
}
|
|
7301
|
+
.lib-xplat-switch.lg {
|
|
7302
|
+
width: 3.5rem;
|
|
7303
|
+
height: 1.875rem;
|
|
7304
|
+
}
|
|
7305
|
+
.lib-xplat-switch.lg > .knob {
|
|
7306
|
+
width: 1.625rem;
|
|
7307
|
+
height: 1.625rem;
|
|
7308
|
+
}
|
|
7309
|
+
.lib-xplat-switch.lg > .knob.checked {
|
|
7310
|
+
transform: translateY(-50%) translateX(1.625rem);
|
|
7311
|
+
}
|
|
7281
7312
|
.lib-xplat-switch.disabled {
|
|
7282
7313
|
opacity: 0.5;
|
|
7283
7314
|
cursor: not-allowed;
|
|
@@ -8035,17 +8066,12 @@
|
|
|
8035
8066
|
position: absolute;
|
|
8036
8067
|
top: 50%;
|
|
8037
8068
|
left: 0;
|
|
8038
|
-
width: 1.75rem;
|
|
8039
|
-
height: 1.75rem;
|
|
8040
8069
|
background-color: #FFFFFF;
|
|
8041
8070
|
border-radius: 9999px;
|
|
8042
8071
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
8043
8072
|
transform: translateY(-50%);
|
|
8044
8073
|
transition: transform 0.25s;
|
|
8045
8074
|
}
|
|
8046
|
-
.lib-xplat-switch > .knob.checked {
|
|
8047
|
-
transform: translateY(-50%) translateX(2rem);
|
|
8048
|
-
}
|
|
8049
8075
|
|
|
8050
8076
|
/* src/components/Tab/tab.scss */
|
|
8051
8077
|
.lib-xplat-tab {
|
package/dist/index.js
CHANGED
|
@@ -6926,6 +6926,7 @@ var ANIMATION_DURATION_MS3 = 200;
|
|
|
6926
6926
|
var SelectRoot = (props) => {
|
|
6927
6927
|
const {
|
|
6928
6928
|
placeholder = "\uC120\uD0DD\uD558\uC138\uC694",
|
|
6929
|
+
value: valueProp,
|
|
6929
6930
|
onChange,
|
|
6930
6931
|
children,
|
|
6931
6932
|
disabled = false,
|
|
@@ -6934,8 +6935,15 @@ var SelectRoot = (props) => {
|
|
|
6934
6935
|
const itemChildren = React16.Children.toArray(children).filter(
|
|
6935
6936
|
(child) => React16.isValidElement(child) && child.type === SelectItem_default
|
|
6936
6937
|
);
|
|
6938
|
+
const isControlled = valueProp !== void 0;
|
|
6937
6939
|
const [isOpen, setOpen] = React16.useState(false);
|
|
6938
|
-
const [
|
|
6940
|
+
const [uncontrolledLabel, setUncontrolledLabel] = React16.useState(null);
|
|
6941
|
+
const controlledLabel = React16.useMemo(() => {
|
|
6942
|
+
if (!isControlled) return null;
|
|
6943
|
+
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
6944
|
+
return match ? match.props.children : null;
|
|
6945
|
+
}, [isControlled, valueProp, itemChildren]);
|
|
6946
|
+
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
6939
6947
|
const triggerRef = React16.useRef(null);
|
|
6940
6948
|
const contentRef = React16.useRef(null);
|
|
6941
6949
|
const [mounted, setMounted] = React16.useState(false);
|
|
@@ -6959,13 +6967,15 @@ var SelectRoot = (props) => {
|
|
|
6959
6967
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
6960
6968
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
6961
6969
|
const setSelected = React16.useCallback(
|
|
6962
|
-
(label,
|
|
6963
|
-
|
|
6964
|
-
|
|
6970
|
+
(label, itemValue) => {
|
|
6971
|
+
if (!isControlled) {
|
|
6972
|
+
setUncontrolledLabel(label);
|
|
6973
|
+
}
|
|
6974
|
+
onChange?.(itemValue, label);
|
|
6965
6975
|
},
|
|
6966
|
-
[onChange]
|
|
6976
|
+
[isControlled, onChange]
|
|
6967
6977
|
);
|
|
6968
|
-
const
|
|
6978
|
+
const ctxValue = React16.useMemo(
|
|
6969
6979
|
() => ({
|
|
6970
6980
|
isOpen,
|
|
6971
6981
|
mounted,
|
|
@@ -6986,7 +6996,7 @@ var SelectRoot = (props) => {
|
|
|
6986
6996
|
if (disabled) return;
|
|
6987
6997
|
toggle();
|
|
6988
6998
|
};
|
|
6989
|
-
return /* @__PURE__ */ jsx319(context_default.Provider, { value, children: /* @__PURE__ */ jsxs203(
|
|
6999
|
+
return /* @__PURE__ */ jsx319(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs203(
|
|
6990
7000
|
"div",
|
|
6991
7001
|
{
|
|
6992
7002
|
className: clsx_default(
|
|
@@ -7620,6 +7630,7 @@ var KNOB_TRANSITION_MS = 250;
|
|
|
7620
7630
|
var Switch = (props) => {
|
|
7621
7631
|
const {
|
|
7622
7632
|
value,
|
|
7633
|
+
size = "md",
|
|
7623
7634
|
disabled,
|
|
7624
7635
|
onChange,
|
|
7625
7636
|
colorNamespace = "xplat",
|
|
@@ -7654,6 +7665,7 @@ var Switch = (props) => {
|
|
|
7654
7665
|
{
|
|
7655
7666
|
className: clsx_default(
|
|
7656
7667
|
"lib-xplat-switch",
|
|
7668
|
+
size,
|
|
7657
7669
|
value ? "checked" : void 0,
|
|
7658
7670
|
disabled && "disabled",
|
|
7659
7671
|
isAnimating && "animating",
|