@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
|
@@ -825,12 +825,83 @@ var import_jsx_runtime253 = require("react/jsx-runtime");
|
|
|
825
825
|
|
|
826
826
|
// src/tokens/svg/status/ErrorIcon.tsx
|
|
827
827
|
var import_jsx_runtime254 = require("react/jsx-runtime");
|
|
828
|
+
var ErrorIcon = () => /* @__PURE__ */ (0, import_jsx_runtime254.jsxs)(
|
|
829
|
+
"svg",
|
|
830
|
+
{
|
|
831
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
832
|
+
width: "1em",
|
|
833
|
+
height: "1em",
|
|
834
|
+
viewBox: "0 0 16 16",
|
|
835
|
+
fill: "none",
|
|
836
|
+
children: [
|
|
837
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsxs)("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
838
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
|
|
839
|
+
"path",
|
|
840
|
+
{
|
|
841
|
+
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",
|
|
842
|
+
fill: "currentColor"
|
|
843
|
+
}
|
|
844
|
+
),
|
|
845
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsx)(
|
|
846
|
+
"path",
|
|
847
|
+
{
|
|
848
|
+
fillRule: "evenodd",
|
|
849
|
+
clipRule: "evenodd",
|
|
850
|
+
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",
|
|
851
|
+
fill: "currentColor"
|
|
852
|
+
}
|
|
853
|
+
)
|
|
854
|
+
] }),
|
|
855
|
+
/* @__PURE__ */ (0, import_jsx_runtime254.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)("clipPath", { id: "clip0_1196_9603", children: /* @__PURE__ */ (0, import_jsx_runtime254.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
856
|
+
]
|
|
857
|
+
}
|
|
858
|
+
);
|
|
859
|
+
var ErrorIcon_default = ErrorIcon;
|
|
828
860
|
|
|
829
861
|
// src/tokens/svg/status/HelpCircleIcon.tsx
|
|
830
862
|
var import_jsx_runtime255 = require("react/jsx-runtime");
|
|
831
863
|
|
|
832
864
|
// src/tokens/svg/status/InfoIcon.tsx
|
|
833
865
|
var import_jsx_runtime256 = require("react/jsx-runtime");
|
|
866
|
+
var InfoIcon = () => /* @__PURE__ */ (0, import_jsx_runtime256.jsxs)(
|
|
867
|
+
"svg",
|
|
868
|
+
{
|
|
869
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
870
|
+
width: "1em",
|
|
871
|
+
height: "1em",
|
|
872
|
+
viewBox: "0 0 16 16",
|
|
873
|
+
fill: "none",
|
|
874
|
+
children: [
|
|
875
|
+
/* @__PURE__ */ (0, import_jsx_runtime256.jsxs)("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
876
|
+
/* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
|
|
877
|
+
"path",
|
|
878
|
+
{
|
|
879
|
+
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",
|
|
880
|
+
fill: "currentColor"
|
|
881
|
+
}
|
|
882
|
+
),
|
|
883
|
+
/* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
|
|
884
|
+
"path",
|
|
885
|
+
{
|
|
886
|
+
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",
|
|
887
|
+
fill: "currentColor"
|
|
888
|
+
}
|
|
889
|
+
),
|
|
890
|
+
/* @__PURE__ */ (0, import_jsx_runtime256.jsx)(
|
|
891
|
+
"path",
|
|
892
|
+
{
|
|
893
|
+
fillRule: "evenodd",
|
|
894
|
+
clipRule: "evenodd",
|
|
895
|
+
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",
|
|
896
|
+
fill: "currentColor"
|
|
897
|
+
}
|
|
898
|
+
)
|
|
899
|
+
] }),
|
|
900
|
+
/* @__PURE__ */ (0, import_jsx_runtime256.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime256.jsx)("clipPath", { id: "clip0_1188_11261", children: /* @__PURE__ */ (0, import_jsx_runtime256.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
901
|
+
]
|
|
902
|
+
}
|
|
903
|
+
);
|
|
904
|
+
var InfoIcon_default = InfoIcon;
|
|
834
905
|
|
|
835
906
|
// src/tokens/svg/status/LoaderIcon.tsx
|
|
836
907
|
var import_jsx_runtime257 = require("react/jsx-runtime");
|
|
@@ -855,6 +926,24 @@ var import_jsx_runtime263 = require("react/jsx-runtime");
|
|
|
855
926
|
|
|
856
927
|
// src/tokens/svg/status/SuccessIcon.tsx
|
|
857
928
|
var import_jsx_runtime264 = require("react/jsx-runtime");
|
|
929
|
+
var SuccessIcon = () => /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
|
|
930
|
+
"svg",
|
|
931
|
+
{
|
|
932
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
933
|
+
width: "1em",
|
|
934
|
+
height: "1em",
|
|
935
|
+
viewBox: "0 0 16 16",
|
|
936
|
+
fill: "none",
|
|
937
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(
|
|
938
|
+
"path",
|
|
939
|
+
{
|
|
940
|
+
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",
|
|
941
|
+
fill: "currentColor"
|
|
942
|
+
}
|
|
943
|
+
)
|
|
944
|
+
}
|
|
945
|
+
);
|
|
946
|
+
var SuccessIcon_default = SuccessIcon;
|
|
858
947
|
|
|
859
948
|
// src/tokens/svg/status/XCircleIcon.tsx
|
|
860
949
|
var import_jsx_runtime265 = require("react/jsx-runtime");
|
|
@@ -962,8 +1051,43 @@ function clsx() {
|
|
|
962
1051
|
}
|
|
963
1052
|
var clsx_default = clsx;
|
|
964
1053
|
|
|
965
|
-
// src/components/
|
|
1054
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
966
1055
|
var import_jsx_runtime295 = require("react/jsx-runtime");
|
|
1056
|
+
var ICON = {
|
|
1057
|
+
default: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(InfoIcon_default, {}),
|
|
1058
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(SuccessIcon_default, {}),
|
|
1059
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(InfoIcon_default, {}),
|
|
1060
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(ErrorIcon_default, {})
|
|
1061
|
+
};
|
|
1062
|
+
var FieldMessage = (props) => {
|
|
1063
|
+
const { validations } = props;
|
|
1064
|
+
if (!validations || validations.length === 0) return null;
|
|
1065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "lib-xplat-field-message-wrap", children: validations.map((v, idx) => /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)(
|
|
1066
|
+
"div",
|
|
1067
|
+
{
|
|
1068
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
1069
|
+
children: [
|
|
1070
|
+
/* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "icon", children: ICON[v.status] }),
|
|
1071
|
+
/* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { children: v.message })
|
|
1072
|
+
]
|
|
1073
|
+
},
|
|
1074
|
+
`${v.message}_${idx}`
|
|
1075
|
+
)) });
|
|
1076
|
+
};
|
|
1077
|
+
FieldMessage.displayName = "FieldMessage";
|
|
1078
|
+
var Field = (props) => {
|
|
1079
|
+
const { validations, children } = props;
|
|
1080
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(import_jsx_runtime295.Fragment, { children });
|
|
1081
|
+
return /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)("div", { className: "lib-xplat-field", children: [
|
|
1082
|
+
children,
|
|
1083
|
+
/* @__PURE__ */ (0, import_jsx_runtime295.jsx)(FieldMessage, { validations })
|
|
1084
|
+
] });
|
|
1085
|
+
};
|
|
1086
|
+
Field.displayName = "Field";
|
|
1087
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
1088
|
+
|
|
1089
|
+
// src/components/FileUpload/FileUpload.tsx
|
|
1090
|
+
var import_jsx_runtime296 = require("react/jsx-runtime");
|
|
967
1091
|
var FileUpload = (props) => {
|
|
968
1092
|
const {
|
|
969
1093
|
accept,
|
|
@@ -971,7 +1095,8 @@ var FileUpload = (props) => {
|
|
|
971
1095
|
maxSize,
|
|
972
1096
|
onChange,
|
|
973
1097
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
974
|
-
description
|
|
1098
|
+
description,
|
|
1099
|
+
validations
|
|
975
1100
|
} = props;
|
|
976
1101
|
const [isDragOver, setIsDragOver] = import_react.default.useState(false);
|
|
977
1102
|
const inputRef = import_react.default.useRef(null);
|
|
@@ -1004,7 +1129,7 @@ var FileUpload = (props) => {
|
|
|
1004
1129
|
handleFiles(e.target.files);
|
|
1005
1130
|
}
|
|
1006
1131
|
};
|
|
1007
|
-
|
|
1132
|
+
const control = /* @__PURE__ */ (0, import_jsx_runtime296.jsxs)(
|
|
1008
1133
|
"div",
|
|
1009
1134
|
{
|
|
1010
1135
|
className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
|
|
@@ -1013,22 +1138,24 @@ var FileUpload = (props) => {
|
|
|
1013
1138
|
onDragLeave: handleDragLeave,
|
|
1014
1139
|
onClick: () => inputRef.current?.click(),
|
|
1015
1140
|
children: [
|
|
1016
|
-
/* @__PURE__ */ (0,
|
|
1141
|
+
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)(
|
|
1017
1142
|
"input",
|
|
1018
1143
|
{
|
|
1019
1144
|
ref: inputRef,
|
|
1020
1145
|
type: "file",
|
|
1021
1146
|
accept,
|
|
1022
1147
|
multiple,
|
|
1023
|
-
onChange: handleChange
|
|
1148
|
+
onChange: handleChange,
|
|
1149
|
+
"aria-invalid": hasError(validations) || void 0
|
|
1024
1150
|
}
|
|
1025
1151
|
),
|
|
1026
|
-
/* @__PURE__ */ (0,
|
|
1027
|
-
/* @__PURE__ */ (0,
|
|
1028
|
-
description && /* @__PURE__ */ (0,
|
|
1152
|
+
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(UploadIcon_default, {}) }),
|
|
1153
|
+
/* @__PURE__ */ (0, import_jsx_runtime296.jsx)("p", { className: "upload-label", children: label }),
|
|
1154
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime296.jsx)("p", { className: "upload-description", children: description })
|
|
1029
1155
|
]
|
|
1030
1156
|
}
|
|
1031
1157
|
);
|
|
1158
|
+
return /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(Field, { validations, children: control });
|
|
1032
1159
|
};
|
|
1033
1160
|
FileUpload.displayName = "FileUpload";
|
|
1034
1161
|
var FileUpload_default = FileUpload;
|
|
@@ -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/FileUpload/fileupload.scss */
|
|
2
40
|
.lib-xplat-file-upload {
|
|
3
41
|
contain: content;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.cjs';
|
|
2
3
|
|
|
3
4
|
interface FileUploadProps {
|
|
4
5
|
accept?: string;
|
|
5
6
|
multiple?: boolean;
|
|
7
|
+
/** 컨트롤 아래에 표시할 검증 메시지. DS 폼 컴포넌트 공통 */
|
|
8
|
+
validations?: Validation[];
|
|
6
9
|
maxSize?: number;
|
|
7
10
|
onChange?: (files: File[]) => void;
|
|
8
11
|
label?: string;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.js';
|
|
2
3
|
|
|
3
4
|
interface FileUploadProps {
|
|
4
5
|
accept?: string;
|
|
5
6
|
multiple?: boolean;
|
|
7
|
+
/** 컨트롤 아래에 표시할 검증 메시지. DS 폼 컴포넌트 공통 */
|
|
8
|
+
validations?: Validation[];
|
|
6
9
|
maxSize?: number;
|
|
7
10
|
onChange?: (files: File[]) => void;
|
|
8
11
|
label?: string;
|
|
@@ -789,12 +789,83 @@ import { jsx as jsx253 } from "react/jsx-runtime";
|
|
|
789
789
|
|
|
790
790
|
// src/tokens/svg/status/ErrorIcon.tsx
|
|
791
791
|
import { jsx as jsx254, jsxs as jsxs160 } from "react/jsx-runtime";
|
|
792
|
+
var ErrorIcon = () => /* @__PURE__ */ jsxs160(
|
|
793
|
+
"svg",
|
|
794
|
+
{
|
|
795
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
796
|
+
width: "1em",
|
|
797
|
+
height: "1em",
|
|
798
|
+
viewBox: "0 0 16 16",
|
|
799
|
+
fill: "none",
|
|
800
|
+
children: [
|
|
801
|
+
/* @__PURE__ */ jsxs160("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
802
|
+
/* @__PURE__ */ jsx254(
|
|
803
|
+
"path",
|
|
804
|
+
{
|
|
805
|
+
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",
|
|
806
|
+
fill: "currentColor"
|
|
807
|
+
}
|
|
808
|
+
),
|
|
809
|
+
/* @__PURE__ */ jsx254(
|
|
810
|
+
"path",
|
|
811
|
+
{
|
|
812
|
+
fillRule: "evenodd",
|
|
813
|
+
clipRule: "evenodd",
|
|
814
|
+
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",
|
|
815
|
+
fill: "currentColor"
|
|
816
|
+
}
|
|
817
|
+
)
|
|
818
|
+
] }),
|
|
819
|
+
/* @__PURE__ */ jsx254("defs", { children: /* @__PURE__ */ jsx254("clipPath", { id: "clip0_1196_9603", children: /* @__PURE__ */ jsx254("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
820
|
+
]
|
|
821
|
+
}
|
|
822
|
+
);
|
|
823
|
+
var ErrorIcon_default = ErrorIcon;
|
|
792
824
|
|
|
793
825
|
// src/tokens/svg/status/HelpCircleIcon.tsx
|
|
794
826
|
import { jsx as jsx255, jsxs as jsxs161 } from "react/jsx-runtime";
|
|
795
827
|
|
|
796
828
|
// src/tokens/svg/status/InfoIcon.tsx
|
|
797
829
|
import { jsx as jsx256, jsxs as jsxs162 } from "react/jsx-runtime";
|
|
830
|
+
var InfoIcon = () => /* @__PURE__ */ jsxs162(
|
|
831
|
+
"svg",
|
|
832
|
+
{
|
|
833
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
834
|
+
width: "1em",
|
|
835
|
+
height: "1em",
|
|
836
|
+
viewBox: "0 0 16 16",
|
|
837
|
+
fill: "none",
|
|
838
|
+
children: [
|
|
839
|
+
/* @__PURE__ */ jsxs162("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
840
|
+
/* @__PURE__ */ jsx256(
|
|
841
|
+
"path",
|
|
842
|
+
{
|
|
843
|
+
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",
|
|
844
|
+
fill: "currentColor"
|
|
845
|
+
}
|
|
846
|
+
),
|
|
847
|
+
/* @__PURE__ */ jsx256(
|
|
848
|
+
"path",
|
|
849
|
+
{
|
|
850
|
+
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",
|
|
851
|
+
fill: "currentColor"
|
|
852
|
+
}
|
|
853
|
+
),
|
|
854
|
+
/* @__PURE__ */ jsx256(
|
|
855
|
+
"path",
|
|
856
|
+
{
|
|
857
|
+
fillRule: "evenodd",
|
|
858
|
+
clipRule: "evenodd",
|
|
859
|
+
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",
|
|
860
|
+
fill: "currentColor"
|
|
861
|
+
}
|
|
862
|
+
)
|
|
863
|
+
] }),
|
|
864
|
+
/* @__PURE__ */ jsx256("defs", { children: /* @__PURE__ */ jsx256("clipPath", { id: "clip0_1188_11261", children: /* @__PURE__ */ jsx256("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
865
|
+
]
|
|
866
|
+
}
|
|
867
|
+
);
|
|
868
|
+
var InfoIcon_default = InfoIcon;
|
|
798
869
|
|
|
799
870
|
// src/tokens/svg/status/LoaderIcon.tsx
|
|
800
871
|
import { jsx as jsx257, jsxs as jsxs163 } from "react/jsx-runtime";
|
|
@@ -819,6 +890,24 @@ import { jsx as jsx263, jsxs as jsxs167 } from "react/jsx-runtime";
|
|
|
819
890
|
|
|
820
891
|
// src/tokens/svg/status/SuccessIcon.tsx
|
|
821
892
|
import { jsx as jsx264 } from "react/jsx-runtime";
|
|
893
|
+
var SuccessIcon = () => /* @__PURE__ */ jsx264(
|
|
894
|
+
"svg",
|
|
895
|
+
{
|
|
896
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
897
|
+
width: "1em",
|
|
898
|
+
height: "1em",
|
|
899
|
+
viewBox: "0 0 16 16",
|
|
900
|
+
fill: "none",
|
|
901
|
+
children: /* @__PURE__ */ jsx264(
|
|
902
|
+
"path",
|
|
903
|
+
{
|
|
904
|
+
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",
|
|
905
|
+
fill: "currentColor"
|
|
906
|
+
}
|
|
907
|
+
)
|
|
908
|
+
}
|
|
909
|
+
);
|
|
910
|
+
var SuccessIcon_default = SuccessIcon;
|
|
822
911
|
|
|
823
912
|
// src/tokens/svg/status/XCircleIcon.tsx
|
|
824
913
|
import { jsx as jsx265, jsxs as jsxs168 } from "react/jsx-runtime";
|
|
@@ -926,8 +1015,43 @@ function clsx() {
|
|
|
926
1015
|
}
|
|
927
1016
|
var clsx_default = clsx;
|
|
928
1017
|
|
|
1018
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
1019
|
+
import { Fragment, jsx as jsx295, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
1020
|
+
var ICON = {
|
|
1021
|
+
default: /* @__PURE__ */ jsx295(InfoIcon_default, {}),
|
|
1022
|
+
success: /* @__PURE__ */ jsx295(SuccessIcon_default, {}),
|
|
1023
|
+
warning: /* @__PURE__ */ jsx295(InfoIcon_default, {}),
|
|
1024
|
+
error: /* @__PURE__ */ jsx295(ErrorIcon_default, {})
|
|
1025
|
+
};
|
|
1026
|
+
var FieldMessage = (props) => {
|
|
1027
|
+
const { validations } = props;
|
|
1028
|
+
if (!validations || validations.length === 0) return null;
|
|
1029
|
+
return /* @__PURE__ */ jsx295("div", { className: "lib-xplat-field-message-wrap", children: validations.map((v, idx) => /* @__PURE__ */ jsxs189(
|
|
1030
|
+
"div",
|
|
1031
|
+
{
|
|
1032
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
1033
|
+
children: [
|
|
1034
|
+
/* @__PURE__ */ jsx295("div", { className: "icon", children: ICON[v.status] }),
|
|
1035
|
+
/* @__PURE__ */ jsx295("span", { children: v.message })
|
|
1036
|
+
]
|
|
1037
|
+
},
|
|
1038
|
+
`${v.message}_${idx}`
|
|
1039
|
+
)) });
|
|
1040
|
+
};
|
|
1041
|
+
FieldMessage.displayName = "FieldMessage";
|
|
1042
|
+
var Field = (props) => {
|
|
1043
|
+
const { validations, children } = props;
|
|
1044
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ jsx295(Fragment, { children });
|
|
1045
|
+
return /* @__PURE__ */ jsxs189("div", { className: "lib-xplat-field", children: [
|
|
1046
|
+
children,
|
|
1047
|
+
/* @__PURE__ */ jsx295(FieldMessage, { validations })
|
|
1048
|
+
] });
|
|
1049
|
+
};
|
|
1050
|
+
Field.displayName = "Field";
|
|
1051
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
1052
|
+
|
|
929
1053
|
// src/components/FileUpload/FileUpload.tsx
|
|
930
|
-
import { jsx as
|
|
1054
|
+
import { jsx as jsx296, jsxs as jsxs190 } from "react/jsx-runtime";
|
|
931
1055
|
var FileUpload = (props) => {
|
|
932
1056
|
const {
|
|
933
1057
|
accept,
|
|
@@ -935,7 +1059,8 @@ var FileUpload = (props) => {
|
|
|
935
1059
|
maxSize,
|
|
936
1060
|
onChange,
|
|
937
1061
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
938
|
-
description
|
|
1062
|
+
description,
|
|
1063
|
+
validations
|
|
939
1064
|
} = props;
|
|
940
1065
|
const [isDragOver, setIsDragOver] = React.useState(false);
|
|
941
1066
|
const inputRef = React.useRef(null);
|
|
@@ -968,7 +1093,7 @@ var FileUpload = (props) => {
|
|
|
968
1093
|
handleFiles(e.target.files);
|
|
969
1094
|
}
|
|
970
1095
|
};
|
|
971
|
-
|
|
1096
|
+
const control = /* @__PURE__ */ jsxs190(
|
|
972
1097
|
"div",
|
|
973
1098
|
{
|
|
974
1099
|
className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
|
|
@@ -977,22 +1102,24 @@ var FileUpload = (props) => {
|
|
|
977
1102
|
onDragLeave: handleDragLeave,
|
|
978
1103
|
onClick: () => inputRef.current?.click(),
|
|
979
1104
|
children: [
|
|
980
|
-
/* @__PURE__ */
|
|
1105
|
+
/* @__PURE__ */ jsx296(
|
|
981
1106
|
"input",
|
|
982
1107
|
{
|
|
983
1108
|
ref: inputRef,
|
|
984
1109
|
type: "file",
|
|
985
1110
|
accept,
|
|
986
1111
|
multiple,
|
|
987
|
-
onChange: handleChange
|
|
1112
|
+
onChange: handleChange,
|
|
1113
|
+
"aria-invalid": hasError(validations) || void 0
|
|
988
1114
|
}
|
|
989
1115
|
),
|
|
990
|
-
/* @__PURE__ */
|
|
991
|
-
/* @__PURE__ */
|
|
992
|
-
description && /* @__PURE__ */
|
|
1116
|
+
/* @__PURE__ */ jsx296("div", { className: "upload-icon", children: /* @__PURE__ */ jsx296(UploadIcon_default, {}) }),
|
|
1117
|
+
/* @__PURE__ */ jsx296("p", { className: "upload-label", children: label }),
|
|
1118
|
+
description && /* @__PURE__ */ jsx296("p", { className: "upload-description", children: description })
|
|
993
1119
|
]
|
|
994
1120
|
}
|
|
995
1121
|
);
|
|
1122
|
+
return /* @__PURE__ */ jsx296(Field, { validations, children: control });
|
|
996
1123
|
};
|
|
997
1124
|
FileUpload.displayName = "FileUpload";
|
|
998
1125
|
var FileUpload_default = FileUpload;
|