@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.
Files changed (133) hide show
  1. package/dist/components/AutoResizeTextArea/index.cjs +140 -4
  2. package/dist/components/AutoResizeTextArea/index.css +38 -0
  3. package/dist/components/AutoResizeTextArea/index.d.cts +4 -0
  4. package/dist/components/AutoResizeTextArea/index.d.ts +4 -0
  5. package/dist/components/AutoResizeTextArea/index.js +140 -4
  6. package/dist/components/Badge/index.cjs +5 -1
  7. package/dist/components/Badge/index.css +1 -0
  8. package/dist/components/Badge/index.d.cts +1 -0
  9. package/dist/components/Badge/index.d.ts +1 -0
  10. package/dist/components/Badge/index.js +5 -1
  11. package/dist/components/Box/index.d.cts +3 -0
  12. package/dist/components/Box/index.d.ts +3 -0
  13. package/dist/components/Chart/index.cjs +7 -6
  14. package/dist/components/Chart/index.d.cts +12 -1
  15. package/dist/components/Chart/index.d.ts +12 -1
  16. package/dist/components/Chart/index.js +7 -6
  17. package/dist/components/ChatInput/index.cjs +150 -9
  18. package/dist/components/ChatInput/index.css +38 -0
  19. package/dist/components/ChatInput/index.d.cts +9 -0
  20. package/dist/components/ChatInput/index.d.ts +9 -0
  21. package/dist/components/ChatInput/index.js +151 -10
  22. package/dist/components/CheckBox/index.cjs +137 -6
  23. package/dist/components/CheckBox/index.css +40 -0
  24. package/dist/components/CheckBox/index.d.cts +13 -2
  25. package/dist/components/CheckBox/index.d.ts +13 -2
  26. package/dist/components/CheckBox/index.js +137 -6
  27. package/dist/components/Chip/index.d.cts +2 -0
  28. package/dist/components/Chip/index.d.ts +2 -0
  29. package/dist/components/DatePicker/index.cjs +76 -62
  30. package/dist/components/DatePicker/index.css +38 -31
  31. package/dist/components/DatePicker/index.js +42 -28
  32. package/dist/components/Drawer/index.d.cts +1 -0
  33. package/dist/components/Drawer/index.d.ts +1 -0
  34. package/dist/components/FieldMessage/index.cjs +183 -0
  35. package/dist/components/FieldMessage/index.css +37 -0
  36. package/dist/components/FieldMessage/index.d.cts +37 -0
  37. package/dist/components/FieldMessage/index.d.ts +37 -0
  38. package/dist/components/FieldMessage/index.js +154 -0
  39. package/dist/components/FileUpload/index.cjs +135 -8
  40. package/dist/components/FileUpload/index.css +38 -0
  41. package/dist/components/FileUpload/index.d.cts +9 -0
  42. package/dist/components/FileUpload/index.d.ts +9 -0
  43. package/dist/components/FileUpload/index.js +135 -8
  44. package/dist/components/ImageSelector/index.cjs +153 -11
  45. package/dist/components/ImageSelector/index.css +38 -0
  46. package/dist/components/ImageSelector/index.d.cts +6 -0
  47. package/dist/components/ImageSelector/index.d.ts +6 -0
  48. package/dist/components/ImageSelector/index.js +153 -11
  49. package/dist/components/Input/index.cjs +38 -25
  50. package/dist/components/Input/index.css +38 -31
  51. package/dist/components/Input/index.d.cts +7 -8
  52. package/dist/components/Input/index.d.ts +7 -8
  53. package/dist/components/Input/index.js +36 -23
  54. package/dist/components/NotificationBadge/index.cjs +5 -1
  55. package/dist/components/NotificationBadge/index.css +1 -0
  56. package/dist/components/NotificationBadge/index.d.cts +6 -2
  57. package/dist/components/NotificationBadge/index.d.ts +6 -2
  58. package/dist/components/NotificationBadge/index.js +5 -1
  59. package/dist/components/Pagination/index.cjs +6 -2
  60. package/dist/components/Pagination/index.css +1 -0
  61. package/dist/components/Pagination/index.d.cts +13 -2
  62. package/dist/components/Pagination/index.d.ts +13 -2
  63. package/dist/components/Pagination/index.js +6 -2
  64. package/dist/components/Progress/index.cjs +6 -2
  65. package/dist/components/Progress/index.css +1 -0
  66. package/dist/components/Progress/index.d.cts +11 -2
  67. package/dist/components/Progress/index.d.ts +11 -2
  68. package/dist/components/Progress/index.js +6 -2
  69. package/dist/components/Radio/index.cjs +158 -10
  70. package/dist/components/Radio/index.css +40 -0
  71. package/dist/components/Radio/index.d.cts +14 -2
  72. package/dist/components/Radio/index.d.ts +14 -2
  73. package/dist/components/Radio/index.js +158 -10
  74. package/dist/components/Select/index.cjs +139 -13
  75. package/dist/components/Select/index.css +38 -0
  76. package/dist/components/Select/index.d.cts +8 -1
  77. package/dist/components/Select/index.d.ts +8 -1
  78. package/dist/components/Select/index.js +139 -13
  79. package/dist/components/Skeleton/index.d.cts +3 -0
  80. package/dist/components/Skeleton/index.d.ts +3 -0
  81. package/dist/components/Spinner/index.cjs +6 -2
  82. package/dist/components/Spinner/index.css +1 -0
  83. package/dist/components/Spinner/index.d.cts +8 -2
  84. package/dist/components/Spinner/index.d.ts +8 -2
  85. package/dist/components/Spinner/index.js +6 -2
  86. package/dist/components/Steps/index.cjs +6 -2
  87. package/dist/components/Steps/index.css +11 -0
  88. package/dist/components/Steps/index.d.cts +9 -2
  89. package/dist/components/Steps/index.d.ts +9 -2
  90. package/dist/components/Steps/index.js +6 -2
  91. package/dist/components/Switch/index.cjs +146 -6
  92. package/dist/components/Switch/index.css +40 -0
  93. package/dist/components/Switch/index.d.cts +13 -2
  94. package/dist/components/Switch/index.d.ts +13 -2
  95. package/dist/components/Switch/index.js +146 -6
  96. package/dist/components/Tab/index.cjs +4 -3
  97. package/dist/components/Tab/index.d.cts +12 -1
  98. package/dist/components/Tab/index.d.ts +12 -1
  99. package/dist/components/Tab/index.js +4 -3
  100. package/dist/components/Tag/index.cjs +5 -3
  101. package/dist/components/Tag/index.d.cts +12 -2
  102. package/dist/components/Tag/index.d.ts +12 -2
  103. package/dist/components/Tag/index.js +5 -3
  104. package/dist/components/TextArea/index.cjs +138 -2
  105. package/dist/components/TextArea/index.css +38 -0
  106. package/dist/components/TextArea/index.d.cts +6 -0
  107. package/dist/components/TextArea/index.d.ts +6 -0
  108. package/dist/components/TextArea/index.js +138 -2
  109. package/dist/components/Tooltip/index.cjs +4 -2
  110. package/dist/components/Tooltip/index.d.cts +11 -1
  111. package/dist/components/Tooltip/index.d.ts +11 -1
  112. package/dist/components/Tooltip/index.js +4 -2
  113. package/dist/components/index.cjs +479 -408
  114. package/dist/components/index.css +59 -31
  115. package/dist/components/index.d.cts +3 -0
  116. package/dist/components/index.d.ts +3 -0
  117. package/dist/components/index.js +262 -194
  118. package/dist/index.cjs +484 -413
  119. package/dist/index.css +59 -31
  120. package/dist/index.d.cts +3 -0
  121. package/dist/index.d.ts +3 -0
  122. package/dist/index.js +264 -196
  123. package/dist/status-g_KP3qT6.d.cts +8 -0
  124. package/dist/status-g_KP3qT6.d.ts +8 -0
  125. package/dist/validation-Dqo1zqhT.d.cts +13 -0
  126. package/dist/validation-Dqo1zqhT.d.ts +13 -0
  127. package/guidelines/AGENT_PROMPT.md +15 -0
  128. package/guidelines/components/card.md +3 -3
  129. package/guidelines/components/feedback.md +1 -1
  130. package/guidelines/components/form.md +26 -0
  131. package/guidelines/components/navigation.md +16 -15
  132. package/guidelines/components/overlay.md +43 -4
  133. 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 jsx295 } from "react/jsx-runtime";
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__ */ jsx295(
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 jsx296, jsxs as jsxs189 } from "react/jsx-runtime";
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
- return /* @__PURE__ */ jsx296(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxs189(
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__ */ jsxs189(
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__ */ jsx296(
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__ */ jsx296(
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__ */ jsx296(ChevronDownIcon_default, {})
1311
+ children: /* @__PURE__ */ jsx297(ChevronDownIcon_default, {})
1187
1312
  }
1188
1313
  )
1189
1314
  ]
1190
1315
  }
1191
1316
  ),
1192
- mounted && /* @__PURE__ */ jsx296(Portal_default, { children: /* @__PURE__ */ jsx296(
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__ */ jsx296(context_default.Provider, { value: ctxValue, children: itemChildren })
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, {
@@ -3,8 +3,11 @@ import React from 'react';
3
3
  type SkeletonVariant = "text" | "circular" | "rectangular";
4
4
  type SizeToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
5
5
  interface SkeletonProps {
6
+ /** 자리표시자 모양 */
6
7
  variant?: SkeletonVariant;
8
+ /** 가로 크기 */
7
9
  width?: SizeToken;
10
+ /** 세로 크기 */
8
11
  height?: SizeToken;
9
12
  }
10
13
  declare const Skeleton: React.FC<SkeletonProps>;
@@ -3,8 +3,11 @@ import React from 'react';
3
3
  type SkeletonVariant = "text" | "circular" | "rectangular";
4
4
  type SizeToken = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
5
5
  interface SkeletonProps {
6
+ /** 자리표시자 모양 */
6
7
  variant?: SkeletonVariant;
8
+ /** 가로 크기 */
7
9
  width?: SizeToken;
10
+ /** 세로 크기 */
8
11
  height?: SizeToken;
9
12
  }
10
13
  declare const Skeleton: React.FC<SkeletonProps>;
@@ -24,6 +24,9 @@ __export(Spinner_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(Spinner_exports);
26
26
 
27
+ // src/tokens/interface/status.ts
28
+ var normalizeStatus = (value) => value === "brand" ? "primary" : value;
29
+
27
30
  // ../../node_modules/clsx/dist/clsx.mjs
28
31
  function r(e) {
29
32
  var t, f, n = "";
@@ -45,12 +48,13 @@ var import_jsx_runtime = require("react/jsx-runtime");
45
48
  var Spinner = (props) => {
46
49
  const {
47
50
  size = "md",
48
- type = "brand"
51
+ type = "primary"
49
52
  } = props;
53
+ const statusType = normalizeStatus(type);
50
54
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
51
55
  "div",
52
56
  {
53
- className: clsx_default("lib-xplat-spinner", size, type),
57
+ className: clsx_default("lib-xplat-spinner", size, statusType),
54
58
  role: "status",
55
59
  "aria-label": "\uB85C\uB529 \uC911",
56
60
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
@@ -33,6 +33,7 @@
33
33
  stroke-dasharray: 42;
34
34
  stroke-dashoffset: 28;
35
35
  }
36
+ .lib-xplat-spinner.primary .indicator,
36
37
  .lib-xplat-spinner.brand .indicator {
37
38
  stroke: var(--semantic-surface-brand-default);
38
39
  }
@@ -1,10 +1,16 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { L as LegacyStatusType } from '../../status-g_KP3qT6.cjs';
2
3
 
3
4
  type SpinnerSize = "sm" | "md" | "lg";
4
- type SpinnerType = "brand" | "success" | "error" | "warning" | "info";
5
+ /** Spinner 의 상태 색 */
6
+ type SpinnerType = "primary" | "success" | "error" | "warning" | "info";
7
+ /** 입력으로는 예전 이름 `brand` 도 받는다 (= `primary`) */
8
+ type SpinnerTypeInput = SpinnerType | LegacyStatusType;
5
9
  interface SpinnerProps {
10
+ /** 스피너 지름 */
6
11
  size?: SpinnerSize;
7
- type?: SpinnerType;
12
+ /** 스피너 색 */
13
+ type?: SpinnerTypeInput;
8
14
  }
9
15
  declare const Spinner: {
10
16
  (props: SpinnerProps): react_jsx_runtime.JSX.Element;
@@ -1,10 +1,16 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { L as LegacyStatusType } from '../../status-g_KP3qT6.js';
2
3
 
3
4
  type SpinnerSize = "sm" | "md" | "lg";
4
- type SpinnerType = "brand" | "success" | "error" | "warning" | "info";
5
+ /** Spinner 의 상태 색 */
6
+ type SpinnerType = "primary" | "success" | "error" | "warning" | "info";
7
+ /** 입력으로는 예전 이름 `brand` 도 받는다 (= `primary`) */
8
+ type SpinnerTypeInput = SpinnerType | LegacyStatusType;
5
9
  interface SpinnerProps {
10
+ /** 스피너 지름 */
6
11
  size?: SpinnerSize;
7
- type?: SpinnerType;
12
+ /** 스피너 색 */
13
+ type?: SpinnerTypeInput;
8
14
  }
9
15
  declare const Spinner: {
10
16
  (props: SpinnerProps): react_jsx_runtime.JSX.Element;
@@ -1,3 +1,6 @@
1
+ // src/tokens/interface/status.ts
2
+ var normalizeStatus = (value) => value === "brand" ? "primary" : value;
3
+
1
4
  // ../../node_modules/clsx/dist/clsx.mjs
2
5
  function r(e) {
3
6
  var t, f, n = "";
@@ -19,12 +22,13 @@ import { jsx, jsxs } from "react/jsx-runtime";
19
22
  var Spinner = (props) => {
20
23
  const {
21
24
  size = "md",
22
- type = "brand"
25
+ type = "primary"
23
26
  } = props;
27
+ const statusType = normalizeStatus(type);
24
28
  return /* @__PURE__ */ jsx(
25
29
  "div",
26
30
  {
27
- className: clsx_default("lib-xplat-spinner", size, type),
31
+ className: clsx_default("lib-xplat-spinner", size, statusType),
28
32
  role: "status",
29
33
  "aria-label": "\uB85C\uB529 \uC911",
30
34
  children: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
@@ -24,6 +24,9 @@ __export(Steps_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(Steps_exports);
26
26
 
27
+ // src/tokens/interface/status.ts
28
+ var normalizeStatus = (value) => value === "brand" ? "primary" : value;
29
+
27
30
  // src/tokens/svg/action/CopyIcon.tsx
28
31
  var import_jsx_runtime = require("react/jsx-runtime");
29
32
 
@@ -946,9 +949,10 @@ var Steps = (props) => {
946
949
  const {
947
950
  items,
948
951
  current,
949
- type = "brand"
952
+ type = "primary"
950
953
  } = props;
951
- return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
954
+ const statusType = normalizeStatus(type);
955
+ return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: clsx_default("lib-xplat-steps", statusType), children: items.map((item, index) => {
952
956
  const status = index < current ? "completed" : index === current ? "active" : "pending";
953
957
  return /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)("div", { className: clsx_default("step-item", status), children: [
954
958
  /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { children: index + 1 }) }),
@@ -63,6 +63,17 @@
63
63
  color: var(--semantic-text-tertiary);
64
64
  margin-top: 2px;
65
65
  }
66
+ .lib-xplat-steps.primary .step-item.completed .step-circle {
67
+ color: var(--semantic-text-inverse);
68
+ background-color: var(--semantic-surface-primary-default);
69
+ }
70
+ .lib-xplat-steps.primary .step-item.completed::after {
71
+ background-color: var(--semantic-surface-primary-default);
72
+ }
73
+ .lib-xplat-steps.primary .step-item.active .step-circle {
74
+ color: var(--semantic-text-inverse);
75
+ background-color: var(--semantic-surface-primary-default);
76
+ }
66
77
  .lib-xplat-steps.brand .step-item.completed .step-circle {
67
78
  color: var(--semantic-text-inverse);
68
79
  background-color: var(--semantic-surface-brand-default);
@@ -1,14 +1,21 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { L as LegacyStatusType } from '../../status-g_KP3qT6.cjs';
2
3
 
3
4
  interface StepItem {
4
5
  title: string;
5
6
  description?: string;
6
7
  }
7
- type StepsType = "brand" | "success" | "error" | "warning" | "info";
8
+ /** Steps 의 상태 색 */
9
+ type StepsType = "primary" | "success" | "error" | "warning" | "info";
10
+ /** 입력으로는 예전 이름 `brand` 도 받는다 (= `primary`) */
11
+ type StepsTypeInput = StepsType | LegacyStatusType;
8
12
  interface StepsProps {
13
+ /** 단계 목록. 순서대로 그려진다 */
9
14
  items: StepItem[];
15
+ /** 진행 중인 단계 인덱스 (0부터). 앞은 완료, 뒤는 대기로 표시된다 */
10
16
  current: number;
11
- type?: StepsType;
17
+ /** 완료·진행 단계의 색 */
18
+ type?: StepsTypeInput;
12
19
  }
13
20
  declare const Steps: {
14
21
  (props: StepsProps): react_jsx_runtime.JSX.Element;
@@ -1,14 +1,21 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { L as LegacyStatusType } from '../../status-g_KP3qT6.js';
2
3
 
3
4
  interface StepItem {
4
5
  title: string;
5
6
  description?: string;
6
7
  }
7
- type StepsType = "brand" | "success" | "error" | "warning" | "info";
8
+ /** Steps 의 상태 색 */
9
+ type StepsType = "primary" | "success" | "error" | "warning" | "info";
10
+ /** 입력으로는 예전 이름 `brand` 도 받는다 (= `primary`) */
11
+ type StepsTypeInput = StepsType | LegacyStatusType;
8
12
  interface StepsProps {
13
+ /** 단계 목록. 순서대로 그려진다 */
9
14
  items: StepItem[];
15
+ /** 진행 중인 단계 인덱스 (0부터). 앞은 완료, 뒤는 대기로 표시된다 */
10
16
  current: number;
11
- type?: StepsType;
17
+ /** 완료·진행 단계의 색 */
18
+ type?: StepsTypeInput;
12
19
  }
13
20
  declare const Steps: {
14
21
  (props: StepsProps): react_jsx_runtime.JSX.Element;
@@ -1,3 +1,6 @@
1
+ // src/tokens/interface/status.ts
2
+ var normalizeStatus = (value) => value === "brand" ? "primary" : value;
3
+
1
4
  // src/tokens/svg/action/CopyIcon.tsx
2
5
  import { jsx, jsxs } from "react/jsx-runtime";
3
6
 
@@ -920,9 +923,10 @@ var Steps = (props) => {
920
923
  const {
921
924
  items,
922
925
  current,
923
- type = "brand"
926
+ type = "primary"
924
927
  } = props;
925
- return /* @__PURE__ */ jsx295("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
928
+ const statusType = normalizeStatus(type);
929
+ return /* @__PURE__ */ jsx295("div", { className: clsx_default("lib-xplat-steps", statusType), children: items.map((item, index) => {
926
930
  const status = index < current ? "completed" : index === current ? "active" : "pending";
927
931
  return /* @__PURE__ */ jsxs189("div", { className: clsx_default("step-item", status), children: [
928
932
  /* @__PURE__ */ jsx295("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx295(CheckIcon_default, {}) : /* @__PURE__ */ jsx295("span", { children: index + 1 }) }),