@x-plat/design-system 0.8.3 → 0.9.0
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/AutoResizeTextArea/index.cjs +140 -4
- package/dist/components/AutoResizeTextArea/index.css +38 -0
- package/dist/components/AutoResizeTextArea/index.d.cts +3 -0
- package/dist/components/AutoResizeTextArea/index.d.ts +3 -0
- package/dist/components/AutoResizeTextArea/index.js +140 -4
- package/dist/components/ChatInput/index.cjs +150 -9
- package/dist/components/ChatInput/index.css +38 -0
- package/dist/components/ChatInput/index.d.cts +3 -0
- package/dist/components/ChatInput/index.d.ts +3 -0
- package/dist/components/ChatInput/index.js +151 -10
- package/dist/components/CheckBox/index.cjs +132 -5
- package/dist/components/CheckBox/index.css +38 -0
- package/dist/components/CheckBox/index.d.cts +3 -0
- package/dist/components/CheckBox/index.d.ts +3 -0
- package/dist/components/CheckBox/index.js +132 -5
- package/dist/components/DatePicker/index.cjs +72 -59
- package/dist/components/DatePicker/index.css +38 -31
- package/dist/components/DatePicker/index.js +38 -25
- package/dist/components/FieldMessage/index.cjs +183 -0
- package/dist/components/FieldMessage/index.css +37 -0
- package/dist/components/FieldMessage/index.d.cts +37 -0
- package/dist/components/FieldMessage/index.d.ts +37 -0
- package/dist/components/FieldMessage/index.js +154 -0
- package/dist/components/FileUpload/index.cjs +135 -8
- package/dist/components/FileUpload/index.css +38 -0
- package/dist/components/FileUpload/index.d.cts +3 -0
- package/dist/components/FileUpload/index.d.ts +3 -0
- package/dist/components/FileUpload/index.js +135 -8
- package/dist/components/ImageSelector/index.cjs +153 -11
- package/dist/components/ImageSelector/index.css +38 -0
- package/dist/components/ImageSelector/index.d.cts +3 -0
- package/dist/components/ImageSelector/index.d.ts +3 -0
- package/dist/components/ImageSelector/index.js +153 -11
- package/dist/components/Input/index.cjs +38 -25
- package/dist/components/Input/index.css +38 -31
- package/dist/components/Input/index.d.cts +3 -8
- package/dist/components/Input/index.d.ts +3 -8
- package/dist/components/Input/index.js +36 -23
- package/dist/components/Radio/index.cjs +152 -8
- package/dist/components/Radio/index.css +38 -0
- package/dist/components/Radio/index.d.cts +3 -0
- package/dist/components/Radio/index.d.ts +3 -0
- package/dist/components/Radio/index.js +152 -8
- package/dist/components/Select/index.cjs +139 -13
- package/dist/components/Select/index.css +38 -0
- package/dist/components/Select/index.d.cts +3 -0
- package/dist/components/Select/index.d.ts +3 -0
- package/dist/components/Select/index.js +139 -13
- package/dist/components/Switch/index.cjs +140 -4
- package/dist/components/Switch/index.css +38 -0
- package/dist/components/Switch/index.d.cts +3 -0
- package/dist/components/Switch/index.d.ts +3 -0
- package/dist/components/Switch/index.js +140 -4
- package/dist/components/TextArea/index.cjs +138 -2
- package/dist/components/TextArea/index.css +38 -0
- package/dist/components/TextArea/index.d.cts +3 -0
- package/dist/components/TextArea/index.d.ts +3 -0
- package/dist/components/TextArea/index.js +138 -2
- package/dist/components/index.cjs +439 -385
- package/dist/components/index.css +38 -31
- package/dist/components/index.d.cts +2 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +222 -171
- package/dist/index.cjs +444 -390
- package/dist/index.css +38 -31
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +224 -173
- package/dist/validation-Dqo1zqhT.d.cts +13 -0
- package/dist/validation-Dqo1zqhT.d.ts +13 -0
- package/guidelines/components/form.md +26 -0
- package/package.json +1 -1
|
@@ -875,12 +875,83 @@ import { jsx as jsx253 } from "react/jsx-runtime";
|
|
|
875
875
|
|
|
876
876
|
// src/tokens/svg/status/ErrorIcon.tsx
|
|
877
877
|
import { jsx as jsx254, jsxs as jsxs160 } from "react/jsx-runtime";
|
|
878
|
+
var ErrorIcon = () => /* @__PURE__ */ jsxs160(
|
|
879
|
+
"svg",
|
|
880
|
+
{
|
|
881
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
882
|
+
width: "1em",
|
|
883
|
+
height: "1em",
|
|
884
|
+
viewBox: "0 0 16 16",
|
|
885
|
+
fill: "none",
|
|
886
|
+
children: [
|
|
887
|
+
/* @__PURE__ */ jsxs160("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
888
|
+
/* @__PURE__ */ jsx254(
|
|
889
|
+
"path",
|
|
890
|
+
{
|
|
891
|
+
d: "M9.57588 5.57559C9.81019 5.34127 10.19 5.34127 10.4243 5.57559C10.6586 5.8099 10.6586 6.18971 10.4243 6.42402L8.84854 7.9998L10.4243 9.57559C10.6586 9.8099 10.6586 10.1897 10.4243 10.424C10.19 10.6583 9.81019 10.6583 9.57588 10.424L8.0001 8.84824L6.42432 10.424C6.19 10.6583 5.81019 10.6583 5.57588 10.424C5.34156 10.1897 5.34156 9.8099 5.57588 9.57559L7.15166 7.9998L5.57588 6.42402C5.34156 6.18971 5.34156 5.8099 5.57588 5.57559C5.81019 5.34127 6.19 5.34127 6.42432 5.57559L8.0001 7.15137L9.57588 5.57559Z",
|
|
892
|
+
fill: "currentColor"
|
|
893
|
+
}
|
|
894
|
+
),
|
|
895
|
+
/* @__PURE__ */ jsx254(
|
|
896
|
+
"path",
|
|
897
|
+
{
|
|
898
|
+
fillRule: "evenodd",
|
|
899
|
+
clipRule: "evenodd",
|
|
900
|
+
d: "M8.0001 0.733398C12.0131 0.73361 15.2671 3.98679 15.2673 7.9998C15.2672 12.0129 12.0131 15.2668 8.0001 15.267C3.98701 15.2669 0.733016 12.0129 0.73291 7.9998C0.733051 3.98674 3.98704 0.733539 8.0001 0.733398ZM8.0001 1.9334C4.64978 1.93354 1.93383 4.64948 1.93369 7.9998C1.9338 11.3502 4.64975 14.0669 8.0001 14.067C11.3504 14.0668 14.0672 11.3501 14.0673 7.9998C14.0671 4.64953 11.3504 1.93361 8.0001 1.9334Z",
|
|
901
|
+
fill: "currentColor"
|
|
902
|
+
}
|
|
903
|
+
)
|
|
904
|
+
] }),
|
|
905
|
+
/* @__PURE__ */ jsx254("defs", { children: /* @__PURE__ */ jsx254("clipPath", { id: "clip0_1196_9603", children: /* @__PURE__ */ jsx254("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
906
|
+
]
|
|
907
|
+
}
|
|
908
|
+
);
|
|
909
|
+
var ErrorIcon_default = ErrorIcon;
|
|
878
910
|
|
|
879
911
|
// src/tokens/svg/status/HelpCircleIcon.tsx
|
|
880
912
|
import { jsx as jsx255, jsxs as jsxs161 } from "react/jsx-runtime";
|
|
881
913
|
|
|
882
914
|
// src/tokens/svg/status/InfoIcon.tsx
|
|
883
915
|
import { jsx as jsx256, jsxs as jsxs162 } from "react/jsx-runtime";
|
|
916
|
+
var InfoIcon = () => /* @__PURE__ */ jsxs162(
|
|
917
|
+
"svg",
|
|
918
|
+
{
|
|
919
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
920
|
+
width: "1em",
|
|
921
|
+
height: "1em",
|
|
922
|
+
viewBox: "0 0 16 16",
|
|
923
|
+
fill: "none",
|
|
924
|
+
children: [
|
|
925
|
+
/* @__PURE__ */ jsxs162("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
926
|
+
/* @__PURE__ */ jsx256(
|
|
927
|
+
"path",
|
|
928
|
+
{
|
|
929
|
+
d: "M8.00156 7.39999C8.33293 7.39999 8.60156 7.66862 8.60156 7.99999V10.6664C8.60156 10.9978 8.33293 11.2664 8.00156 11.2664C7.67019 11.2664 7.40156 10.9978 7.40156 10.6664V7.99999C7.40156 7.66862 7.67019 7.39999 8.00156 7.39999Z",
|
|
930
|
+
fill: "currentColor"
|
|
931
|
+
}
|
|
932
|
+
),
|
|
933
|
+
/* @__PURE__ */ jsx256(
|
|
934
|
+
"path",
|
|
935
|
+
{
|
|
936
|
+
d: "M8.00859 4.73358C8.3398 4.73378 8.60859 5.00233 8.60859 5.33358C8.60849 5.66474 8.33973 5.93338 8.00859 5.93358H8.00156C7.67026 5.93358 7.40167 5.66486 7.40156 5.33358C7.40156 5.00221 7.67019 4.73358 8.00156 4.73358H8.00859Z",
|
|
937
|
+
fill: "currentColor"
|
|
938
|
+
}
|
|
939
|
+
),
|
|
940
|
+
/* @__PURE__ */ jsx256(
|
|
941
|
+
"path",
|
|
942
|
+
{
|
|
943
|
+
fillRule: "evenodd",
|
|
944
|
+
clipRule: "evenodd",
|
|
945
|
+
d: "M8.00156 0.733582C12.0146 0.733793 15.2686 3.98697 15.2688 7.99999C15.2686 12.013 12.0146 15.267 8.00156 15.2672C3.98848 15.267 0.734481 12.0131 0.734375 7.99999C0.734516 3.98693 3.9885 0.733722 8.00156 0.733582ZM8.00156 1.93358C4.65124 1.93372 1.9353 4.64967 1.93516 7.99999C1.93526 11.3503 4.65122 14.067 8.00156 14.0672C11.3518 14.067 14.0686 11.3503 14.0688 7.99999C14.0686 4.64971 11.3518 1.93379 8.00156 1.93358Z",
|
|
946
|
+
fill: "currentColor"
|
|
947
|
+
}
|
|
948
|
+
)
|
|
949
|
+
] }),
|
|
950
|
+
/* @__PURE__ */ jsx256("defs", { children: /* @__PURE__ */ jsx256("clipPath", { id: "clip0_1188_11261", children: /* @__PURE__ */ jsx256("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
951
|
+
]
|
|
952
|
+
}
|
|
953
|
+
);
|
|
954
|
+
var InfoIcon_default = InfoIcon;
|
|
884
955
|
|
|
885
956
|
// src/tokens/svg/status/LoaderIcon.tsx
|
|
886
957
|
import { jsx as jsx257, jsxs as jsxs163 } from "react/jsx-runtime";
|
|
@@ -905,6 +976,24 @@ import { jsx as jsx263, jsxs as jsxs167 } from "react/jsx-runtime";
|
|
|
905
976
|
|
|
906
977
|
// src/tokens/svg/status/SuccessIcon.tsx
|
|
907
978
|
import { jsx as jsx264 } from "react/jsx-runtime";
|
|
979
|
+
var SuccessIcon = () => /* @__PURE__ */ jsx264(
|
|
980
|
+
"svg",
|
|
981
|
+
{
|
|
982
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
983
|
+
width: "1em",
|
|
984
|
+
height: "1em",
|
|
985
|
+
viewBox: "0 0 16 16",
|
|
986
|
+
fill: "none",
|
|
987
|
+
children: /* @__PURE__ */ jsx264(
|
|
988
|
+
"path",
|
|
989
|
+
{
|
|
990
|
+
d: "M12.9084 3.57597C13.1426 3.34172 13.5225 3.34185 13.7568 3.57597C13.9911 3.81028 13.9911 4.19009 13.7568 4.4244L6.424 11.758C6.31157 11.8703 6.15869 11.9337 5.99978 11.9338C5.8409 11.9337 5.68798 11.8703 5.57556 11.758L2.24197 8.4244C2.00782 8.19018 2.00795 7.81028 2.24197 7.57597C2.47626 7.34167 2.85609 7.34172 3.09041 7.57597L5.999 10.4846L12.9084 3.57597Z",
|
|
991
|
+
fill: "currentColor"
|
|
992
|
+
}
|
|
993
|
+
)
|
|
994
|
+
}
|
|
995
|
+
);
|
|
996
|
+
var SuccessIcon_default = SuccessIcon;
|
|
908
997
|
|
|
909
998
|
// src/tokens/svg/status/XCircleIcon.tsx
|
|
910
999
|
import { jsx as jsx265, jsxs as jsxs168 } from "react/jsx-runtime";
|
|
@@ -1012,6 +1101,41 @@ function clsx() {
|
|
|
1012
1101
|
}
|
|
1013
1102
|
var clsx_default = clsx;
|
|
1014
1103
|
|
|
1104
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
1105
|
+
import { Fragment, jsx as jsx295, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
1106
|
+
var ICON = {
|
|
1107
|
+
default: /* @__PURE__ */ jsx295(InfoIcon_default, {}),
|
|
1108
|
+
success: /* @__PURE__ */ jsx295(SuccessIcon_default, {}),
|
|
1109
|
+
warning: /* @__PURE__ */ jsx295(InfoIcon_default, {}),
|
|
1110
|
+
error: /* @__PURE__ */ jsx295(ErrorIcon_default, {})
|
|
1111
|
+
};
|
|
1112
|
+
var FieldMessage = (props) => {
|
|
1113
|
+
const { validations } = props;
|
|
1114
|
+
if (!validations || validations.length === 0) return null;
|
|
1115
|
+
return /* @__PURE__ */ jsx295("div", { className: "lib-xplat-field-message-wrap", children: validations.map((v, idx) => /* @__PURE__ */ jsxs189(
|
|
1116
|
+
"div",
|
|
1117
|
+
{
|
|
1118
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
1119
|
+
children: [
|
|
1120
|
+
/* @__PURE__ */ jsx295("div", { className: "icon", children: ICON[v.status] }),
|
|
1121
|
+
/* @__PURE__ */ jsx295("span", { children: v.message })
|
|
1122
|
+
]
|
|
1123
|
+
},
|
|
1124
|
+
`${v.message}_${idx}`
|
|
1125
|
+
)) });
|
|
1126
|
+
};
|
|
1127
|
+
FieldMessage.displayName = "FieldMessage";
|
|
1128
|
+
var Field = (props) => {
|
|
1129
|
+
const { validations, children } = props;
|
|
1130
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ jsx295(Fragment, { children });
|
|
1131
|
+
return /* @__PURE__ */ jsxs189("div", { className: "lib-xplat-field", children: [
|
|
1132
|
+
children,
|
|
1133
|
+
/* @__PURE__ */ jsx295(FieldMessage, { validations })
|
|
1134
|
+
] });
|
|
1135
|
+
};
|
|
1136
|
+
Field.displayName = "Field";
|
|
1137
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
1138
|
+
|
|
1015
1139
|
// src/components/Select/context.ts
|
|
1016
1140
|
import React3 from "react";
|
|
1017
1141
|
var SelectContext = React3.createContext(null);
|
|
@@ -1019,7 +1143,7 @@ var context_default = SelectContext;
|
|
|
1019
1143
|
|
|
1020
1144
|
// src/components/Select/SelectItem.tsx
|
|
1021
1145
|
import React4 from "react";
|
|
1022
|
-
import { jsx as
|
|
1146
|
+
import { jsx as jsx296 } from "react/jsx-runtime";
|
|
1023
1147
|
var SelectItem = (props) => {
|
|
1024
1148
|
const { children, value, onClick, disabled = false } = props;
|
|
1025
1149
|
const ctx = React4.useContext(context_default);
|
|
@@ -1032,7 +1156,7 @@ var SelectItem = (props) => {
|
|
|
1032
1156
|
onClick?.();
|
|
1033
1157
|
};
|
|
1034
1158
|
const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
|
|
1035
|
-
return /* @__PURE__ */
|
|
1159
|
+
return /* @__PURE__ */ jsx296(
|
|
1036
1160
|
"div",
|
|
1037
1161
|
{
|
|
1038
1162
|
className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
|
|
@@ -1053,7 +1177,7 @@ SelectItem.displayName = "Select.Item";
|
|
|
1053
1177
|
var SelectItem_default = SelectItem;
|
|
1054
1178
|
|
|
1055
1179
|
// src/components/Select/Select.tsx
|
|
1056
|
-
import { jsx as
|
|
1180
|
+
import { jsx as jsx297, jsxs as jsxs190 } from "react/jsx-runtime";
|
|
1057
1181
|
var ANIMATION_DURATION_MS = 200;
|
|
1058
1182
|
var SelectRoot = (props) => {
|
|
1059
1183
|
const {
|
|
@@ -1063,6 +1187,7 @@ var SelectRoot = (props) => {
|
|
|
1063
1187
|
children,
|
|
1064
1188
|
disabled = false,
|
|
1065
1189
|
error = false,
|
|
1190
|
+
validations,
|
|
1066
1191
|
size = "md"
|
|
1067
1192
|
} = props;
|
|
1068
1193
|
const itemChildren = React5.Children.toArray(children).filter(
|
|
@@ -1133,32 +1258,32 @@ var SelectRoot = (props) => {
|
|
|
1133
1258
|
if (disabled) return;
|
|
1134
1259
|
toggle();
|
|
1135
1260
|
};
|
|
1136
|
-
|
|
1261
|
+
const control = /* @__PURE__ */ jsx297(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs190(
|
|
1137
1262
|
"div",
|
|
1138
1263
|
{
|
|
1139
1264
|
className: clsx_default(
|
|
1140
1265
|
"lib-xplat-select",
|
|
1141
1266
|
size,
|
|
1142
1267
|
disabled && "disabled",
|
|
1143
|
-
error && "error",
|
|
1268
|
+
(error || hasError(validations)) && "error",
|
|
1144
1269
|
mounted && "is-open"
|
|
1145
1270
|
),
|
|
1146
1271
|
children: [
|
|
1147
|
-
/* @__PURE__ */
|
|
1272
|
+
/* @__PURE__ */ jsxs190(
|
|
1148
1273
|
"div",
|
|
1149
1274
|
{
|
|
1150
1275
|
ref: triggerRef,
|
|
1151
1276
|
className: clsx_default(
|
|
1152
1277
|
"select-trigger",
|
|
1153
1278
|
disabled && "disabled",
|
|
1154
|
-
error && "error"
|
|
1279
|
+
(error || hasError(validations)) && "error"
|
|
1155
1280
|
),
|
|
1156
1281
|
onClick: handleTriggerClick,
|
|
1157
1282
|
role: "combobox",
|
|
1158
1283
|
"aria-expanded": isOpen,
|
|
1159
1284
|
"aria-haspopup": "listbox",
|
|
1160
1285
|
"aria-disabled": disabled,
|
|
1161
|
-
"aria-invalid": error,
|
|
1286
|
+
"aria-invalid": error || hasError(validations) || void 0,
|
|
1162
1287
|
tabIndex: disabled ? -1 : 0,
|
|
1163
1288
|
onKeyDown: (e) => {
|
|
1164
1289
|
if (disabled) return;
|
|
@@ -1168,7 +1293,7 @@ var SelectRoot = (props) => {
|
|
|
1168
1293
|
}
|
|
1169
1294
|
},
|
|
1170
1295
|
children: [
|
|
1171
|
-
/* @__PURE__ */
|
|
1296
|
+
/* @__PURE__ */ jsx297(
|
|
1172
1297
|
"span",
|
|
1173
1298
|
{
|
|
1174
1299
|
className: clsx_default(
|
|
@@ -1178,30 +1303,31 @@ var SelectRoot = (props) => {
|
|
|
1178
1303
|
children: selectedLabel ?? placeholder
|
|
1179
1304
|
}
|
|
1180
1305
|
),
|
|
1181
|
-
/* @__PURE__ */
|
|
1306
|
+
/* @__PURE__ */ jsx297(
|
|
1182
1307
|
"span",
|
|
1183
1308
|
{
|
|
1184
1309
|
className: clsx_default("select-trigger-icon", isOpen && "open"),
|
|
1185
1310
|
"aria-hidden": true,
|
|
1186
|
-
children: /* @__PURE__ */
|
|
1311
|
+
children: /* @__PURE__ */ jsx297(ChevronDownIcon_default, {})
|
|
1187
1312
|
}
|
|
1188
1313
|
)
|
|
1189
1314
|
]
|
|
1190
1315
|
}
|
|
1191
1316
|
),
|
|
1192
|
-
mounted && /* @__PURE__ */
|
|
1317
|
+
mounted && /* @__PURE__ */ jsx297(Portal_default, { children: /* @__PURE__ */ jsx297(
|
|
1193
1318
|
"div",
|
|
1194
1319
|
{
|
|
1195
1320
|
className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
|
|
1196
1321
|
ref: contentRef,
|
|
1197
1322
|
style: { ...position.position, width: triggerRef.current?.offsetWidth },
|
|
1198
1323
|
role: "listbox",
|
|
1199
|
-
children: /* @__PURE__ */
|
|
1324
|
+
children: /* @__PURE__ */ jsx297(context_default.Provider, { value: ctxValue, children: itemChildren })
|
|
1200
1325
|
}
|
|
1201
1326
|
) })
|
|
1202
1327
|
]
|
|
1203
1328
|
}
|
|
1204
1329
|
) });
|
|
1330
|
+
return /* @__PURE__ */ jsx297(Field, { validations, children: control });
|
|
1205
1331
|
};
|
|
1206
1332
|
SelectRoot.displayName = "Select";
|
|
1207
1333
|
var Select = Object.assign(SelectRoot, {
|
|
@@ -53,8 +53,141 @@ function clsx() {
|
|
|
53
53
|
}
|
|
54
54
|
var clsx_default = clsx;
|
|
55
55
|
|
|
56
|
-
// src/
|
|
56
|
+
// src/tokens/svg/status/ErrorIcon.tsx
|
|
57
57
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
58
|
+
var ErrorIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
59
|
+
"svg",
|
|
60
|
+
{
|
|
61
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
62
|
+
width: "1em",
|
|
63
|
+
height: "1em",
|
|
64
|
+
viewBox: "0 0 16 16",
|
|
65
|
+
fill: "none",
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
69
|
+
"path",
|
|
70
|
+
{
|
|
71
|
+
d: "M9.57588 5.57559C9.81019 5.34127 10.19 5.34127 10.4243 5.57559C10.6586 5.8099 10.6586 6.18971 10.4243 6.42402L8.84854 7.9998L10.4243 9.57559C10.6586 9.8099 10.6586 10.1897 10.4243 10.424C10.19 10.6583 9.81019 10.6583 9.57588 10.424L8.0001 8.84824L6.42432 10.424C6.19 10.6583 5.81019 10.6583 5.57588 10.424C5.34156 10.1897 5.34156 9.8099 5.57588 9.57559L7.15166 7.9998L5.57588 6.42402C5.34156 6.18971 5.34156 5.8099 5.57588 5.57559C5.81019 5.34127 6.19 5.34127 6.42432 5.57559L8.0001 7.15137L9.57588 5.57559Z",
|
|
72
|
+
fill: "currentColor"
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
+
"path",
|
|
77
|
+
{
|
|
78
|
+
fillRule: "evenodd",
|
|
79
|
+
clipRule: "evenodd",
|
|
80
|
+
d: "M8.0001 0.733398C12.0131 0.73361 15.2671 3.98679 15.2673 7.9998C15.2672 12.0129 12.0131 15.2668 8.0001 15.267C3.98701 15.2669 0.733016 12.0129 0.73291 7.9998C0.733051 3.98674 3.98704 0.733539 8.0001 0.733398ZM8.0001 1.9334C4.64978 1.93354 1.93383 4.64948 1.93369 7.9998C1.9338 11.3502 4.64975 14.0669 8.0001 14.067C11.3504 14.0668 14.0672 11.3501 14.0673 7.9998C14.0671 4.64953 11.3504 1.93361 8.0001 1.9334Z",
|
|
81
|
+
fill: "currentColor"
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
] }),
|
|
85
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("clipPath", { id: "clip0_1196_9603", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
var ErrorIcon_default = ErrorIcon;
|
|
90
|
+
|
|
91
|
+
// src/tokens/svg/status/InfoIcon.tsx
|
|
92
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
93
|
+
var InfoIcon = () => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
94
|
+
"svg",
|
|
95
|
+
{
|
|
96
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
97
|
+
width: "1em",
|
|
98
|
+
height: "1em",
|
|
99
|
+
viewBox: "0 0 16 16",
|
|
100
|
+
fill: "none",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
103
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
104
|
+
"path",
|
|
105
|
+
{
|
|
106
|
+
d: "M8.00156 7.39999C8.33293 7.39999 8.60156 7.66862 8.60156 7.99999V10.6664C8.60156 10.9978 8.33293 11.2664 8.00156 11.2664C7.67019 11.2664 7.40156 10.9978 7.40156 10.6664V7.99999C7.40156 7.66862 7.67019 7.39999 8.00156 7.39999Z",
|
|
107
|
+
fill: "currentColor"
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
111
|
+
"path",
|
|
112
|
+
{
|
|
113
|
+
d: "M8.00859 4.73358C8.3398 4.73378 8.60859 5.00233 8.60859 5.33358C8.60849 5.66474 8.33973 5.93338 8.00859 5.93358H8.00156C7.67026 5.93358 7.40167 5.66486 7.40156 5.33358C7.40156 5.00221 7.67019 4.73358 8.00156 4.73358H8.00859Z",
|
|
114
|
+
fill: "currentColor"
|
|
115
|
+
}
|
|
116
|
+
),
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
118
|
+
"path",
|
|
119
|
+
{
|
|
120
|
+
fillRule: "evenodd",
|
|
121
|
+
clipRule: "evenodd",
|
|
122
|
+
d: "M8.00156 0.733582C12.0146 0.733793 15.2686 3.98697 15.2688 7.99999C15.2686 12.013 12.0146 15.267 8.00156 15.2672C3.98848 15.267 0.734481 12.0131 0.734375 7.99999C0.734516 3.98693 3.9885 0.733722 8.00156 0.733582ZM8.00156 1.93358C4.65124 1.93372 1.9353 4.64967 1.93516 7.99999C1.93526 11.3503 4.65122 14.067 8.00156 14.0672C11.3518 14.067 14.0686 11.3503 14.0688 7.99999C14.0686 4.64971 11.3518 1.93379 8.00156 1.93358Z",
|
|
123
|
+
fill: "currentColor"
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
] }),
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("clipPath", { id: "clip0_1188_11261", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
var InfoIcon_default = InfoIcon;
|
|
132
|
+
|
|
133
|
+
// src/tokens/svg/status/SuccessIcon.tsx
|
|
134
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
135
|
+
var SuccessIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
136
|
+
"svg",
|
|
137
|
+
{
|
|
138
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
139
|
+
width: "1em",
|
|
140
|
+
height: "1em",
|
|
141
|
+
viewBox: "0 0 16 16",
|
|
142
|
+
fill: "none",
|
|
143
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
144
|
+
"path",
|
|
145
|
+
{
|
|
146
|
+
d: "M12.9084 3.57597C13.1426 3.34172 13.5225 3.34185 13.7568 3.57597C13.9911 3.81028 13.9911 4.19009 13.7568 4.4244L6.424 11.758C6.31157 11.8703 6.15869 11.9337 5.99978 11.9338C5.8409 11.9337 5.68798 11.8703 5.57556 11.758L2.24197 8.4244C2.00782 8.19018 2.00795 7.81028 2.24197 7.57597C2.47626 7.34167 2.85609 7.34172 3.09041 7.57597L5.999 10.4846L12.9084 3.57597Z",
|
|
147
|
+
fill: "currentColor"
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
var SuccessIcon_default = SuccessIcon;
|
|
153
|
+
|
|
154
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
155
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
156
|
+
var ICON = {
|
|
157
|
+
default: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(InfoIcon_default, {}),
|
|
158
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SuccessIcon_default, {}),
|
|
159
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(InfoIcon_default, {}),
|
|
160
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ErrorIcon_default, {})
|
|
161
|
+
};
|
|
162
|
+
var FieldMessage = (props) => {
|
|
163
|
+
const { validations } = props;
|
|
164
|
+
if (!validations || validations.length === 0) return null;
|
|
165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "lib-xplat-field-message-wrap", children: validations.map((v, idx) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
166
|
+
"div",
|
|
167
|
+
{
|
|
168
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
169
|
+
children: [
|
|
170
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "icon", children: ICON[v.status] }),
|
|
171
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: v.message })
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
`${v.message}_${idx}`
|
|
175
|
+
)) });
|
|
176
|
+
};
|
|
177
|
+
FieldMessage.displayName = "FieldMessage";
|
|
178
|
+
var Field = (props) => {
|
|
179
|
+
const { validations, children } = props;
|
|
180
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
|
|
181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lib-xplat-field", children: [
|
|
182
|
+
children,
|
|
183
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FieldMessage, { validations })
|
|
184
|
+
] });
|
|
185
|
+
};
|
|
186
|
+
Field.displayName = "Field";
|
|
187
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
188
|
+
|
|
189
|
+
// src/components/Switch/Switch.tsx
|
|
190
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
58
191
|
var KNOB_TRANSITION_MS = 250;
|
|
59
192
|
var Switch = (props) => {
|
|
60
193
|
const {
|
|
@@ -62,7 +195,8 @@ var Switch = (props) => {
|
|
|
62
195
|
size = "md",
|
|
63
196
|
type = "brand",
|
|
64
197
|
disabled,
|
|
65
|
-
onChange
|
|
198
|
+
onChange,
|
|
199
|
+
validations
|
|
66
200
|
} = props;
|
|
67
201
|
const [isAnimating, setIsAnimating] = import_react.default.useState(false);
|
|
68
202
|
const timeoutRef = import_react.default.useRef(null);
|
|
@@ -81,7 +215,7 @@ var Switch = (props) => {
|
|
|
81
215
|
timeoutRef.current = null;
|
|
82
216
|
}, KNOB_TRANSITION_MS);
|
|
83
217
|
};
|
|
84
|
-
|
|
218
|
+
const control = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
85
219
|
"div",
|
|
86
220
|
{
|
|
87
221
|
className: clsx_default(
|
|
@@ -93,10 +227,12 @@ var Switch = (props) => {
|
|
|
93
227
|
isAnimating && "animating"
|
|
94
228
|
),
|
|
95
229
|
onClick: handleClick,
|
|
230
|
+
"aria-invalid": hasError(validations) || void 0,
|
|
96
231
|
"aria-disabled": disabled || isAnimating,
|
|
97
|
-
children: /* @__PURE__ */ (0,
|
|
232
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
|
|
98
233
|
}
|
|
99
234
|
);
|
|
235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Field, { validations, children: control });
|
|
100
236
|
};
|
|
101
237
|
Switch.displayName = "Switch";
|
|
102
238
|
var Switch_default = Switch;
|
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
/* src/components/FieldMessage/fieldMessage.scss */
|
|
2
|
+
.lib-xplat-field {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--spacing-space-2);
|
|
6
|
+
}
|
|
7
|
+
.lib-xplat-field-message-wrap {
|
|
8
|
+
display: flex;
|
|
9
|
+
gap: var(--spacing-space-2);
|
|
10
|
+
margin-left: var(--spacing-space-1);
|
|
11
|
+
}
|
|
12
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message {
|
|
13
|
+
display: flex;
|
|
14
|
+
gap: var(--spacing-space-1);
|
|
15
|
+
font-family: var(--semantic-typo-caption-2-r-font);
|
|
16
|
+
font-size: var(--semantic-typo-caption-2-r-size);
|
|
17
|
+
line-height: var(--semantic-typo-caption-2-r-lh);
|
|
18
|
+
font-weight: var(--semantic-typo-caption-2-r-weight);
|
|
19
|
+
letter-spacing: var(--semantic-typo-caption-2-r-ls);
|
|
20
|
+
align-items: center;
|
|
21
|
+
user-select: none;
|
|
22
|
+
}
|
|
23
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message.default {
|
|
24
|
+
color: var(--semantic-icon-secondary);
|
|
25
|
+
}
|
|
26
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message.success {
|
|
27
|
+
color: var(--semantic-text-success);
|
|
28
|
+
}
|
|
29
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message.warning {
|
|
30
|
+
color: var(--semantic-text-warning);
|
|
31
|
+
}
|
|
32
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message.error {
|
|
33
|
+
color: var(--semantic-text-error);
|
|
34
|
+
}
|
|
35
|
+
.lib-xplat-field-message-wrap > .lib-xplat-field-message > .icon {
|
|
36
|
+
font-size: var(--semantic-typo-label-2-m-size);
|
|
37
|
+
}
|
|
38
|
+
|
|
1
39
|
/* src/components/Switch/switch.scss */
|
|
2
40
|
.lib-xplat-switch {
|
|
3
41
|
position: relative;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.cjs';
|
|
2
3
|
|
|
3
4
|
type SwitchSize = "sm" | "md" | "lg";
|
|
4
5
|
type SwitchType = "brand" | "success" | "error" | "warning" | "info";
|
|
5
6
|
interface SwitchProps {
|
|
6
7
|
value: boolean;
|
|
8
|
+
/** 컨트롤 아래에 표시할 검증 메시지. DS 폼 컴포넌트 공통 */
|
|
9
|
+
validations?: Validation[];
|
|
7
10
|
size?: SwitchSize;
|
|
8
11
|
type?: SwitchType;
|
|
9
12
|
disabled?: boolean;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.js';
|
|
2
3
|
|
|
3
4
|
type SwitchSize = "sm" | "md" | "lg";
|
|
4
5
|
type SwitchType = "brand" | "success" | "error" | "warning" | "info";
|
|
5
6
|
interface SwitchProps {
|
|
6
7
|
value: boolean;
|
|
8
|
+
/** 컨트롤 아래에 표시할 검증 메시지. DS 폼 컴포넌트 공통 */
|
|
9
|
+
validations?: Validation[];
|
|
7
10
|
size?: SwitchSize;
|
|
8
11
|
type?: SwitchType;
|
|
9
12
|
disabled?: boolean;
|