@x-plat/design-system 0.8.3 → 0.10.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 +4 -0
- package/dist/components/AutoResizeTextArea/index.d.ts +4 -0
- package/dist/components/AutoResizeTextArea/index.js +140 -4
- package/dist/components/Badge/index.cjs +5 -1
- package/dist/components/Badge/index.css +1 -0
- package/dist/components/Badge/index.d.cts +1 -0
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.js +5 -1
- package/dist/components/Box/index.d.cts +3 -0
- package/dist/components/Box/index.d.ts +3 -0
- package/dist/components/Chart/index.cjs +7 -6
- package/dist/components/Chart/index.d.cts +12 -1
- package/dist/components/Chart/index.d.ts +12 -1
- package/dist/components/Chart/index.js +7 -6
- package/dist/components/ChatInput/index.cjs +150 -9
- package/dist/components/ChatInput/index.css +38 -0
- package/dist/components/ChatInput/index.d.cts +9 -0
- package/dist/components/ChatInput/index.d.ts +9 -0
- package/dist/components/ChatInput/index.js +151 -10
- package/dist/components/CheckBox/index.cjs +137 -6
- package/dist/components/CheckBox/index.css +40 -0
- package/dist/components/CheckBox/index.d.cts +13 -2
- package/dist/components/CheckBox/index.d.ts +13 -2
- package/dist/components/CheckBox/index.js +137 -6
- package/dist/components/Chip/index.d.cts +2 -0
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/DatePicker/index.cjs +76 -62
- package/dist/components/DatePicker/index.css +38 -31
- package/dist/components/DatePicker/index.js +42 -28
- package/dist/components/Drawer/index.d.cts +1 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- 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 +9 -0
- package/dist/components/FileUpload/index.d.ts +9 -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 +6 -0
- package/dist/components/ImageSelector/index.d.ts +6 -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 +7 -8
- package/dist/components/Input/index.d.ts +7 -8
- package/dist/components/Input/index.js +36 -23
- package/dist/components/NotificationBadge/index.cjs +5 -1
- package/dist/components/NotificationBadge/index.css +1 -0
- package/dist/components/NotificationBadge/index.d.cts +6 -2
- package/dist/components/NotificationBadge/index.d.ts +6 -2
- package/dist/components/NotificationBadge/index.js +5 -1
- package/dist/components/Pagination/index.cjs +6 -2
- package/dist/components/Pagination/index.css +1 -0
- package/dist/components/Pagination/index.d.cts +13 -2
- package/dist/components/Pagination/index.d.ts +13 -2
- package/dist/components/Pagination/index.js +6 -2
- package/dist/components/Progress/index.cjs +6 -2
- package/dist/components/Progress/index.css +1 -0
- package/dist/components/Progress/index.d.cts +11 -2
- package/dist/components/Progress/index.d.ts +11 -2
- package/dist/components/Progress/index.js +6 -2
- package/dist/components/Radio/index.cjs +158 -10
- package/dist/components/Radio/index.css +40 -0
- package/dist/components/Radio/index.d.cts +14 -2
- package/dist/components/Radio/index.d.ts +14 -2
- package/dist/components/Radio/index.js +158 -10
- package/dist/components/Select/index.cjs +139 -13
- package/dist/components/Select/index.css +38 -0
- package/dist/components/Select/index.d.cts +8 -1
- package/dist/components/Select/index.d.ts +8 -1
- package/dist/components/Select/index.js +139 -13
- package/dist/components/Skeleton/index.d.cts +3 -0
- package/dist/components/Skeleton/index.d.ts +3 -0
- package/dist/components/Spinner/index.cjs +6 -2
- package/dist/components/Spinner/index.css +1 -0
- package/dist/components/Spinner/index.d.cts +8 -2
- package/dist/components/Spinner/index.d.ts +8 -2
- package/dist/components/Spinner/index.js +6 -2
- package/dist/components/Steps/index.cjs +6 -2
- package/dist/components/Steps/index.css +11 -0
- package/dist/components/Steps/index.d.cts +9 -2
- package/dist/components/Steps/index.d.ts +9 -2
- package/dist/components/Steps/index.js +6 -2
- package/dist/components/Switch/index.cjs +146 -6
- package/dist/components/Switch/index.css +40 -0
- package/dist/components/Switch/index.d.cts +13 -2
- package/dist/components/Switch/index.d.ts +13 -2
- package/dist/components/Switch/index.js +146 -6
- package/dist/components/Tab/index.cjs +4 -3
- package/dist/components/Tab/index.d.cts +12 -1
- package/dist/components/Tab/index.d.ts +12 -1
- package/dist/components/Tab/index.js +4 -3
- package/dist/components/Tag/index.cjs +5 -3
- package/dist/components/Tag/index.d.cts +12 -2
- package/dist/components/Tag/index.d.ts +12 -2
- package/dist/components/Tag/index.js +5 -3
- package/dist/components/TextArea/index.cjs +138 -2
- package/dist/components/TextArea/index.css +38 -0
- package/dist/components/TextArea/index.d.cts +6 -0
- package/dist/components/TextArea/index.d.ts +6 -0
- package/dist/components/TextArea/index.js +138 -2
- package/dist/components/Tooltip/index.cjs +4 -2
- package/dist/components/Tooltip/index.d.cts +11 -1
- package/dist/components/Tooltip/index.d.ts +11 -1
- package/dist/components/Tooltip/index.js +4 -2
- package/dist/components/index.cjs +479 -408
- package/dist/components/index.css +59 -31
- package/dist/components/index.d.cts +3 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +262 -194
- package/dist/index.cjs +484 -413
- package/dist/index.css +59 -31
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +264 -196
- package/dist/status-g_KP3qT6.d.cts +8 -0
- package/dist/status-g_KP3qT6.d.ts +8 -0
- package/dist/validation-Dqo1zqhT.d.cts +13 -0
- package/dist/validation-Dqo1zqhT.d.ts +13 -0
- package/guidelines/AGENT_PROMPT.md +15 -0
- package/guidelines/components/card.md +3 -3
- package/guidelines/components/feedback.md +1 -1
- package/guidelines/components/form.md +26 -0
- package/guidelines/components/navigation.md +16 -15
- package/guidelines/components/overlay.md +43 -4
- package/package.json +1 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/components/FieldMessage/index.ts
|
|
21
|
+
var FieldMessage_exports = {};
|
|
22
|
+
__export(FieldMessage_exports, {
|
|
23
|
+
Field: () => Field,
|
|
24
|
+
FieldMessage: () => FieldMessage_default,
|
|
25
|
+
hasError: () => hasError
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(FieldMessage_exports);
|
|
28
|
+
|
|
29
|
+
// src/tokens/svg/status/ErrorIcon.tsx
|
|
30
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
31
|
+
var ErrorIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
32
|
+
"svg",
|
|
33
|
+
{
|
|
34
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
35
|
+
width: "1em",
|
|
36
|
+
height: "1em",
|
|
37
|
+
viewBox: "0 0 16 16",
|
|
38
|
+
fill: "none",
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
41
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
42
|
+
"path",
|
|
43
|
+
{
|
|
44
|
+
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",
|
|
45
|
+
fill: "currentColor"
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
"path",
|
|
50
|
+
{
|
|
51
|
+
fillRule: "evenodd",
|
|
52
|
+
clipRule: "evenodd",
|
|
53
|
+
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",
|
|
54
|
+
fill: "currentColor"
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
] }),
|
|
58
|
+
/* @__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" }) }) })
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
var ErrorIcon_default = ErrorIcon;
|
|
63
|
+
|
|
64
|
+
// src/tokens/svg/status/InfoIcon.tsx
|
|
65
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
66
|
+
var InfoIcon = () => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
67
|
+
"svg",
|
|
68
|
+
{
|
|
69
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
70
|
+
width: "1em",
|
|
71
|
+
height: "1em",
|
|
72
|
+
viewBox: "0 0 16 16",
|
|
73
|
+
fill: "none",
|
|
74
|
+
children: [
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
77
|
+
"path",
|
|
78
|
+
{
|
|
79
|
+
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",
|
|
80
|
+
fill: "currentColor"
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
84
|
+
"path",
|
|
85
|
+
{
|
|
86
|
+
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",
|
|
87
|
+
fill: "currentColor"
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
91
|
+
"path",
|
|
92
|
+
{
|
|
93
|
+
fillRule: "evenodd",
|
|
94
|
+
clipRule: "evenodd",
|
|
95
|
+
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",
|
|
96
|
+
fill: "currentColor"
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
] }),
|
|
100
|
+
/* @__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" }) }) })
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
);
|
|
104
|
+
var InfoIcon_default = InfoIcon;
|
|
105
|
+
|
|
106
|
+
// src/tokens/svg/status/SuccessIcon.tsx
|
|
107
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
108
|
+
var SuccessIcon = () => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
109
|
+
"svg",
|
|
110
|
+
{
|
|
111
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
112
|
+
width: "1em",
|
|
113
|
+
height: "1em",
|
|
114
|
+
viewBox: "0 0 16 16",
|
|
115
|
+
fill: "none",
|
|
116
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
117
|
+
"path",
|
|
118
|
+
{
|
|
119
|
+
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",
|
|
120
|
+
fill: "currentColor"
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
var SuccessIcon_default = SuccessIcon;
|
|
126
|
+
|
|
127
|
+
// ../../node_modules/clsx/dist/clsx.mjs
|
|
128
|
+
function r(e) {
|
|
129
|
+
var t, f, n = "";
|
|
130
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
131
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
132
|
+
var o = e.length;
|
|
133
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
134
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
135
|
+
return n;
|
|
136
|
+
}
|
|
137
|
+
function clsx() {
|
|
138
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
139
|
+
return n;
|
|
140
|
+
}
|
|
141
|
+
var clsx_default = clsx;
|
|
142
|
+
|
|
143
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
144
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
145
|
+
var ICON = {
|
|
146
|
+
default: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(InfoIcon_default, {}),
|
|
147
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SuccessIcon_default, {}),
|
|
148
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(InfoIcon_default, {}),
|
|
149
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ErrorIcon_default, {})
|
|
150
|
+
};
|
|
151
|
+
var FieldMessage = (props) => {
|
|
152
|
+
const { validations } = props;
|
|
153
|
+
if (!validations || validations.length === 0) return null;
|
|
154
|
+
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)(
|
|
155
|
+
"div",
|
|
156
|
+
{
|
|
157
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "icon", children: ICON[v.status] }),
|
|
160
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: v.message })
|
|
161
|
+
]
|
|
162
|
+
},
|
|
163
|
+
`${v.message}_${idx}`
|
|
164
|
+
)) });
|
|
165
|
+
};
|
|
166
|
+
FieldMessage.displayName = "FieldMessage";
|
|
167
|
+
var FieldMessage_default = FieldMessage;
|
|
168
|
+
var Field = (props) => {
|
|
169
|
+
const { validations, children } = props;
|
|
170
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
|
|
171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "lib-xplat-field", children: [
|
|
172
|
+
children,
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FieldMessage, { validations })
|
|
174
|
+
] });
|
|
175
|
+
};
|
|
176
|
+
Field.displayName = "Field";
|
|
177
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
178
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
179
|
+
0 && (module.exports = {
|
|
180
|
+
Field,
|
|
181
|
+
FieldMessage,
|
|
182
|
+
hasError
|
|
183
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.cjs';
|
|
4
|
+
|
|
5
|
+
interface FieldMessageProps {
|
|
6
|
+
/** 표시할 검증 메시지 목록. 비어 있거나 없으면 아무것도 그리지 않는다 */
|
|
7
|
+
validations?: Validation[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 폼 컨트롤 아래에 붙는 검증 메시지.
|
|
11
|
+
*
|
|
12
|
+
* 폼 컴포넌트들이 각자 렌더하지 않고 이걸 공유한다. 아이콘·색·간격이
|
|
13
|
+
* 한 곳에 모여 있어야 DS 전체에서 같은 모양이 나온다.
|
|
14
|
+
*/
|
|
15
|
+
declare const FieldMessage: {
|
|
16
|
+
(props: FieldMessageProps): react_jsx_runtime.JSX.Element | null;
|
|
17
|
+
displayName: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 컨트롤과 검증 메시지를 묶는 래퍼.
|
|
22
|
+
*
|
|
23
|
+
* **validations 가 없으면 래퍼를 만들지 않고 children 을 그대로 통과시킨다.**
|
|
24
|
+
* 기존 사용처의 DOM 구조와 레이아웃이 바뀌지 않도록 하기 위해서다.
|
|
25
|
+
* (폼 컨트롤들의 루트가 label·div·textarea 로 제각각이라 무조건 감싸면 깨진다.)
|
|
26
|
+
*/
|
|
27
|
+
declare const Field: {
|
|
28
|
+
(props: {
|
|
29
|
+
validations?: Validation[];
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
}): react_jsx_runtime.JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
/** validations 중 하나라도 error 면 true. aria-invalid 판정에 쓴다 */
|
|
35
|
+
declare const hasError: (validations?: Validation[]) => boolean;
|
|
36
|
+
|
|
37
|
+
export { Field, FieldMessage, hasError };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { V as Validation } from '../../validation-Dqo1zqhT.js';
|
|
4
|
+
|
|
5
|
+
interface FieldMessageProps {
|
|
6
|
+
/** 표시할 검증 메시지 목록. 비어 있거나 없으면 아무것도 그리지 않는다 */
|
|
7
|
+
validations?: Validation[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 폼 컨트롤 아래에 붙는 검증 메시지.
|
|
11
|
+
*
|
|
12
|
+
* 폼 컴포넌트들이 각자 렌더하지 않고 이걸 공유한다. 아이콘·색·간격이
|
|
13
|
+
* 한 곳에 모여 있어야 DS 전체에서 같은 모양이 나온다.
|
|
14
|
+
*/
|
|
15
|
+
declare const FieldMessage: {
|
|
16
|
+
(props: FieldMessageProps): react_jsx_runtime.JSX.Element | null;
|
|
17
|
+
displayName: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 컨트롤과 검증 메시지를 묶는 래퍼.
|
|
22
|
+
*
|
|
23
|
+
* **validations 가 없으면 래퍼를 만들지 않고 children 을 그대로 통과시킨다.**
|
|
24
|
+
* 기존 사용처의 DOM 구조와 레이아웃이 바뀌지 않도록 하기 위해서다.
|
|
25
|
+
* (폼 컨트롤들의 루트가 label·div·textarea 로 제각각이라 무조건 감싸면 깨진다.)
|
|
26
|
+
*/
|
|
27
|
+
declare const Field: {
|
|
28
|
+
(props: {
|
|
29
|
+
validations?: Validation[];
|
|
30
|
+
children: React.ReactNode;
|
|
31
|
+
}): react_jsx_runtime.JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
/** validations 중 하나라도 error 면 true. aria-invalid 판정에 쓴다 */
|
|
35
|
+
declare const hasError: (validations?: Validation[]) => boolean;
|
|
36
|
+
|
|
37
|
+
export { Field, FieldMessage, hasError };
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// src/tokens/svg/status/ErrorIcon.tsx
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
var ErrorIcon = () => /* @__PURE__ */ jsxs(
|
|
4
|
+
"svg",
|
|
5
|
+
{
|
|
6
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
7
|
+
width: "1em",
|
|
8
|
+
height: "1em",
|
|
9
|
+
viewBox: "0 0 16 16",
|
|
10
|
+
fill: "none",
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ jsxs("g", { clipPath: "url(#clip0_1196_9603)", children: [
|
|
13
|
+
/* @__PURE__ */ jsx(
|
|
14
|
+
"path",
|
|
15
|
+
{
|
|
16
|
+
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",
|
|
17
|
+
fill: "currentColor"
|
|
18
|
+
}
|
|
19
|
+
),
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
"path",
|
|
22
|
+
{
|
|
23
|
+
fillRule: "evenodd",
|
|
24
|
+
clipRule: "evenodd",
|
|
25
|
+
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",
|
|
26
|
+
fill: "currentColor"
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "clip0_1196_9603", children: /* @__PURE__ */ jsx("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
var ErrorIcon_default = ErrorIcon;
|
|
35
|
+
|
|
36
|
+
// src/tokens/svg/status/InfoIcon.tsx
|
|
37
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
38
|
+
var InfoIcon = () => /* @__PURE__ */ jsxs2(
|
|
39
|
+
"svg",
|
|
40
|
+
{
|
|
41
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
42
|
+
width: "1em",
|
|
43
|
+
height: "1em",
|
|
44
|
+
viewBox: "0 0 16 16",
|
|
45
|
+
fill: "none",
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ jsxs2("g", { clipPath: "url(#clip0_1188_11261)", children: [
|
|
48
|
+
/* @__PURE__ */ jsx2(
|
|
49
|
+
"path",
|
|
50
|
+
{
|
|
51
|
+
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",
|
|
52
|
+
fill: "currentColor"
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
/* @__PURE__ */ jsx2(
|
|
56
|
+
"path",
|
|
57
|
+
{
|
|
58
|
+
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",
|
|
59
|
+
fill: "currentColor"
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsx2(
|
|
63
|
+
"path",
|
|
64
|
+
{
|
|
65
|
+
fillRule: "evenodd",
|
|
66
|
+
clipRule: "evenodd",
|
|
67
|
+
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",
|
|
68
|
+
fill: "currentColor"
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsx2("defs", { children: /* @__PURE__ */ jsx2("clipPath", { id: "clip0_1188_11261", children: /* @__PURE__ */ jsx2("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
var InfoIcon_default = InfoIcon;
|
|
77
|
+
|
|
78
|
+
// src/tokens/svg/status/SuccessIcon.tsx
|
|
79
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
80
|
+
var SuccessIcon = () => /* @__PURE__ */ jsx3(
|
|
81
|
+
"svg",
|
|
82
|
+
{
|
|
83
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
84
|
+
width: "1em",
|
|
85
|
+
height: "1em",
|
|
86
|
+
viewBox: "0 0 16 16",
|
|
87
|
+
fill: "none",
|
|
88
|
+
children: /* @__PURE__ */ jsx3(
|
|
89
|
+
"path",
|
|
90
|
+
{
|
|
91
|
+
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",
|
|
92
|
+
fill: "currentColor"
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
var SuccessIcon_default = SuccessIcon;
|
|
98
|
+
|
|
99
|
+
// ../../node_modules/clsx/dist/clsx.mjs
|
|
100
|
+
function r(e) {
|
|
101
|
+
var t, f, n = "";
|
|
102
|
+
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
103
|
+
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
104
|
+
var o = e.length;
|
|
105
|
+
for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
106
|
+
} else for (f in e) e[f] && (n && (n += " "), n += f);
|
|
107
|
+
return n;
|
|
108
|
+
}
|
|
109
|
+
function clsx() {
|
|
110
|
+
for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
111
|
+
return n;
|
|
112
|
+
}
|
|
113
|
+
var clsx_default = clsx;
|
|
114
|
+
|
|
115
|
+
// src/components/FieldMessage/FieldMessage.tsx
|
|
116
|
+
import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
117
|
+
var ICON = {
|
|
118
|
+
default: /* @__PURE__ */ jsx4(InfoIcon_default, {}),
|
|
119
|
+
success: /* @__PURE__ */ jsx4(SuccessIcon_default, {}),
|
|
120
|
+
warning: /* @__PURE__ */ jsx4(InfoIcon_default, {}),
|
|
121
|
+
error: /* @__PURE__ */ jsx4(ErrorIcon_default, {})
|
|
122
|
+
};
|
|
123
|
+
var FieldMessage = (props) => {
|
|
124
|
+
const { validations } = props;
|
|
125
|
+
if (!validations || validations.length === 0) return null;
|
|
126
|
+
return /* @__PURE__ */ jsx4("div", { className: "lib-xplat-field-message-wrap", children: validations.map((v, idx) => /* @__PURE__ */ jsxs3(
|
|
127
|
+
"div",
|
|
128
|
+
{
|
|
129
|
+
className: clsx_default("lib-xplat-field-message", v.status),
|
|
130
|
+
children: [
|
|
131
|
+
/* @__PURE__ */ jsx4("div", { className: "icon", children: ICON[v.status] }),
|
|
132
|
+
/* @__PURE__ */ jsx4("span", { children: v.message })
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
`${v.message}_${idx}`
|
|
136
|
+
)) });
|
|
137
|
+
};
|
|
138
|
+
FieldMessage.displayName = "FieldMessage";
|
|
139
|
+
var FieldMessage_default = FieldMessage;
|
|
140
|
+
var Field = (props) => {
|
|
141
|
+
const { validations, children } = props;
|
|
142
|
+
if (!validations || validations.length === 0) return /* @__PURE__ */ jsx4(Fragment, { children });
|
|
143
|
+
return /* @__PURE__ */ jsxs3("div", { className: "lib-xplat-field", children: [
|
|
144
|
+
children,
|
|
145
|
+
/* @__PURE__ */ jsx4(FieldMessage, { validations })
|
|
146
|
+
] });
|
|
147
|
+
};
|
|
148
|
+
Field.displayName = "Field";
|
|
149
|
+
var hasError = (validations) => !!validations?.some((v) => v.status === "error");
|
|
150
|
+
export {
|
|
151
|
+
Field,
|
|
152
|
+
FieldMessage_default as FieldMessage,
|
|
153
|
+
hasError
|
|
154
|
+
};
|
|
@@ -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;
|