sellmate-design-system-react 0.1.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 (311) hide show
  1. package/README.md +65 -0
  2. package/dist/components/ActionModal/ActionModal.cjs +3085 -0
  3. package/dist/components/ActionModal/ActionModal.cjs.map +1 -0
  4. package/dist/components/ActionModal/ActionModal.d.ts +24 -0
  5. package/dist/components/ActionModal/ActionModal.js +3062 -0
  6. package/dist/components/ActionModal/ActionModal.js.map +1 -0
  7. package/dist/components/ActionModal/index.d.ts +1 -0
  8. package/dist/components/Badge/Badge.cjs +39 -0
  9. package/dist/components/Badge/Badge.cjs.map +1 -0
  10. package/dist/components/Badge/Badge.d.ts +12 -0
  11. package/dist/components/Badge/Badge.js +36 -0
  12. package/dist/components/Badge/Badge.js.map +1 -0
  13. package/dist/components/Badge/index.d.ts +1 -0
  14. package/dist/components/BarcodeInput/BarcodeInput.cjs +3183 -0
  15. package/dist/components/BarcodeInput/BarcodeInput.cjs.map +1 -0
  16. package/dist/components/BarcodeInput/BarcodeInput.d.ts +45 -0
  17. package/dist/components/BarcodeInput/BarcodeInput.js +3160 -0
  18. package/dist/components/BarcodeInput/BarcodeInput.js.map +1 -0
  19. package/dist/components/BarcodeInput/index.d.ts +1 -0
  20. package/dist/components/Button/Button.cjs +2796 -0
  21. package/dist/components/Button/Button.cjs.map +1 -0
  22. package/dist/components/Button/Button.d.ts +21 -0
  23. package/dist/components/Button/Button.js +2794 -0
  24. package/dist/components/Button/Button.js.map +1 -0
  25. package/dist/components/Button/button.config.d.ts +33 -0
  26. package/dist/components/Button/index.d.ts +2 -0
  27. package/dist/components/Calendar/Calendar.cjs +3055 -0
  28. package/dist/components/Calendar/Calendar.cjs.map +1 -0
  29. package/dist/components/Calendar/Calendar.d.ts +27 -0
  30. package/dist/components/Calendar/Calendar.js +3033 -0
  31. package/dist/components/Calendar/Calendar.js.map +1 -0
  32. package/dist/components/Calendar/index.d.ts +1 -0
  33. package/dist/components/Callout/Callout.cjs +2701 -0
  34. package/dist/components/Callout/Callout.cjs.map +1 -0
  35. package/dist/components/Callout/Callout.d.ts +20 -0
  36. package/dist/components/Callout/Callout.js +2699 -0
  37. package/dist/components/Callout/Callout.js.map +1 -0
  38. package/dist/components/Callout/index.d.ts +1 -0
  39. package/dist/components/Card/Card.cjs +26 -0
  40. package/dist/components/Card/Card.cjs.map +1 -0
  41. package/dist/components/Card/Card.d.ts +7 -0
  42. package/dist/components/Card/Card.js +24 -0
  43. package/dist/components/Card/Card.js.map +1 -0
  44. package/dist/components/Card/index.d.ts +1 -0
  45. package/dist/components/Checkbox/Checkbox.cjs +2729 -0
  46. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  47. package/dist/components/Checkbox/Checkbox.d.ts +23 -0
  48. package/dist/components/Checkbox/Checkbox.js +2707 -0
  49. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  50. package/dist/components/Checkbox/index.d.ts +1 -0
  51. package/dist/components/Chip/Chip.cjs +2958 -0
  52. package/dist/components/Chip/Chip.cjs.map +1 -0
  53. package/dist/components/Chip/Chip.d.ts +39 -0
  54. package/dist/components/Chip/Chip.js +2936 -0
  55. package/dist/components/Chip/Chip.js.map +1 -0
  56. package/dist/components/Chip/index.d.ts +1 -0
  57. package/dist/components/ChipInput/ChipInput.cjs +3558 -0
  58. package/dist/components/ChipInput/ChipInput.cjs.map +1 -0
  59. package/dist/components/ChipInput/ChipInput.d.ts +51 -0
  60. package/dist/components/ChipInput/ChipInput.js +3535 -0
  61. package/dist/components/ChipInput/ChipInput.js.map +1 -0
  62. package/dist/components/ChipInput/index.d.ts +1 -0
  63. package/dist/components/CircleProgress/CircleProgress.cjs +102 -0
  64. package/dist/components/CircleProgress/CircleProgress.cjs.map +1 -0
  65. package/dist/components/CircleProgress/CircleProgress.d.ts +16 -0
  66. package/dist/components/CircleProgress/CircleProgress.js +100 -0
  67. package/dist/components/CircleProgress/CircleProgress.js.map +1 -0
  68. package/dist/components/CircleProgress/index.d.ts +1 -0
  69. package/dist/components/ConfirmModal/ConfirmModal.cjs +3145 -0
  70. package/dist/components/ConfirmModal/ConfirmModal.cjs.map +1 -0
  71. package/dist/components/ConfirmModal/ConfirmModal.d.ts +41 -0
  72. package/dist/components/ConfirmModal/ConfirmModal.js +3122 -0
  73. package/dist/components/ConfirmModal/ConfirmModal.js.map +1 -0
  74. package/dist/components/ConfirmModal/index.d.ts +1 -0
  75. package/dist/components/DatePicker/DatePicker.cjs +3409 -0
  76. package/dist/components/DatePicker/DatePicker.cjs.map +1 -0
  77. package/dist/components/DatePicker/DatePicker.d.ts +40 -0
  78. package/dist/components/DatePicker/DatePicker.js +3386 -0
  79. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  80. package/dist/components/DatePicker/index.d.ts +1 -0
  81. package/dist/components/DateRangePicker/DateRangePicker.cjs +3367 -0
  82. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -0
  83. package/dist/components/DateRangePicker/DateRangePicker.d.ts +41 -0
  84. package/dist/components/DateRangePicker/DateRangePicker.js +3344 -0
  85. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -0
  86. package/dist/components/DateRangePicker/index.d.ts +1 -0
  87. package/dist/components/Divider/Divider.cjs +31 -0
  88. package/dist/components/Divider/Divider.cjs.map +1 -0
  89. package/dist/components/Divider/Divider.d.ts +7 -0
  90. package/dist/components/Divider/Divider.js +29 -0
  91. package/dist/components/Divider/Divider.js.map +1 -0
  92. package/dist/components/Divider/index.d.ts +1 -0
  93. package/dist/components/DropdownButton/DropdownButton.cjs +2884 -0
  94. package/dist/components/DropdownButton/DropdownButton.cjs.map +1 -0
  95. package/dist/components/DropdownButton/DropdownButton.d.ts +43 -0
  96. package/dist/components/DropdownButton/DropdownButton.js +2862 -0
  97. package/dist/components/DropdownButton/DropdownButton.js.map +1 -0
  98. package/dist/components/DropdownButton/index.d.ts +1 -0
  99. package/dist/components/Field/Field.cjs +2895 -0
  100. package/dist/components/Field/Field.cjs.map +1 -0
  101. package/dist/components/Field/Field.d.ts +64 -0
  102. package/dist/components/Field/Field.js +2872 -0
  103. package/dist/components/Field/Field.js.map +1 -0
  104. package/dist/components/Field/index.d.ts +1 -0
  105. package/dist/components/FilePicker/FilePicker.cjs +3385 -0
  106. package/dist/components/FilePicker/FilePicker.cjs.map +1 -0
  107. package/dist/components/FilePicker/FilePicker.d.ts +49 -0
  108. package/dist/components/FilePicker/FilePicker.js +3362 -0
  109. package/dist/components/FilePicker/FilePicker.js.map +1 -0
  110. package/dist/components/FilePicker/index.d.ts +1 -0
  111. package/dist/components/GhostButton/GhostButton.cjs +2804 -0
  112. package/dist/components/GhostButton/GhostButton.cjs.map +1 -0
  113. package/dist/components/GhostButton/GhostButton.d.ts +27 -0
  114. package/dist/components/GhostButton/GhostButton.js +2782 -0
  115. package/dist/components/GhostButton/GhostButton.js.map +1 -0
  116. package/dist/components/GhostButton/index.d.ts +1 -0
  117. package/dist/components/Guide/Guide.cjs +2884 -0
  118. package/dist/components/Guide/Guide.cjs.map +1 -0
  119. package/dist/components/Guide/Guide.d.ts +20 -0
  120. package/dist/components/Guide/Guide.js +2861 -0
  121. package/dist/components/Guide/Guide.js.map +1 -0
  122. package/dist/components/Guide/index.d.ts +1 -0
  123. package/dist/components/Icon/Icon.cjs +2638 -0
  124. package/dist/components/Icon/Icon.cjs.map +1 -0
  125. package/dist/components/Icon/Icon.d.ts +21 -0
  126. package/dist/components/Icon/Icon.js +2636 -0
  127. package/dist/components/Icon/Icon.js.map +1 -0
  128. package/dist/components/Icon/icons.gen.cjs +2615 -0
  129. package/dist/components/Icon/icons.gen.cjs.map +1 -0
  130. package/dist/components/Icon/icons.gen.d.ts +96 -0
  131. package/dist/components/Icon/icons.gen.js +2613 -0
  132. package/dist/components/Icon/icons.gen.js.map +1 -0
  133. package/dist/components/Icon/index.d.ts +2 -0
  134. package/dist/components/Input/Input.cjs +3044 -0
  135. package/dist/components/Input/Input.cjs.map +1 -0
  136. package/dist/components/Input/Input.d.ts +52 -0
  137. package/dist/components/Input/Input.js +3021 -0
  138. package/dist/components/Input/Input.js.map +1 -0
  139. package/dist/components/Input/index.d.ts +1 -0
  140. package/dist/components/KeyValueTable/KeyValueTable.cjs +5339 -0
  141. package/dist/components/KeyValueTable/KeyValueTable.cjs.map +1 -0
  142. package/dist/components/KeyValueTable/KeyValueTable.d.ts +40 -0
  143. package/dist/components/KeyValueTable/KeyValueTable.js +5314 -0
  144. package/dist/components/KeyValueTable/KeyValueTable.js.map +1 -0
  145. package/dist/components/KeyValueTable/index.d.ts +1 -0
  146. package/dist/components/LinearProgress/LinearProgress.cjs +70 -0
  147. package/dist/components/LinearProgress/LinearProgress.cjs.map +1 -0
  148. package/dist/components/LinearProgress/LinearProgress.d.ts +16 -0
  149. package/dist/components/LinearProgress/LinearProgress.js +68 -0
  150. package/dist/components/LinearProgress/LinearProgress.js.map +1 -0
  151. package/dist/components/LinearProgress/index.d.ts +1 -0
  152. package/dist/components/LoadingContainer/LoadingContainer.cjs +126 -0
  153. package/dist/components/LoadingContainer/LoadingContainer.cjs.map +1 -0
  154. package/dist/components/LoadingContainer/LoadingContainer.d.ts +16 -0
  155. package/dist/components/LoadingContainer/LoadingContainer.js +124 -0
  156. package/dist/components/LoadingContainer/LoadingContainer.js.map +1 -0
  157. package/dist/components/LoadingContainer/index.d.ts +2 -0
  158. package/dist/components/LoadingContainer/loading.cjs +164 -0
  159. package/dist/components/LoadingContainer/loading.cjs.map +1 -0
  160. package/dist/components/LoadingContainer/loading.d.ts +10 -0
  161. package/dist/components/LoadingContainer/loading.js +161 -0
  162. package/dist/components/LoadingContainer/loading.js.map +1 -0
  163. package/dist/components/LoadingModal/LoadingModal.cjs +3178 -0
  164. package/dist/components/LoadingModal/LoadingModal.cjs.map +1 -0
  165. package/dist/components/LoadingModal/LoadingModal.d.ts +23 -0
  166. package/dist/components/LoadingModal/LoadingModal.js +3155 -0
  167. package/dist/components/LoadingModal/LoadingModal.js.map +1 -0
  168. package/dist/components/LoadingModal/index.d.ts +1 -0
  169. package/dist/components/ModalContainer/ModalContainer.cjs +2875 -0
  170. package/dist/components/ModalContainer/ModalContainer.cjs.map +1 -0
  171. package/dist/components/ModalContainer/ModalContainer.d.ts +27 -0
  172. package/dist/components/ModalContainer/ModalContainer.js +2852 -0
  173. package/dist/components/ModalContainer/ModalContainer.js.map +1 -0
  174. package/dist/components/ModalContainer/index.d.ts +1 -0
  175. package/dist/components/NumberInput/NumberInput.cjs +3136 -0
  176. package/dist/components/NumberInput/NumberInput.cjs.map +1 -0
  177. package/dist/components/NumberInput/NumberInput.d.ts +63 -0
  178. package/dist/components/NumberInput/NumberInput.js +3113 -0
  179. package/dist/components/NumberInput/NumberInput.js.map +1 -0
  180. package/dist/components/NumberInput/index.d.ts +1 -0
  181. package/dist/components/Pagination/Pagination.cjs +2721 -0
  182. package/dist/components/Pagination/Pagination.cjs.map +1 -0
  183. package/dist/components/Pagination/Pagination.d.ts +15 -0
  184. package/dist/components/Pagination/Pagination.js +2719 -0
  185. package/dist/components/Pagination/Pagination.js.map +1 -0
  186. package/dist/components/Pagination/index.d.ts +1 -0
  187. package/dist/components/Popover/Popover.cjs +2973 -0
  188. package/dist/components/Popover/Popover.cjs.map +1 -0
  189. package/dist/components/Popover/Popover.d.ts +48 -0
  190. package/dist/components/Popover/Popover.js +2951 -0
  191. package/dist/components/Popover/Popover.js.map +1 -0
  192. package/dist/components/Popover/index.d.ts +1 -0
  193. package/dist/components/Popup/Popup.cjs +2859 -0
  194. package/dist/components/Popup/Popup.cjs.map +1 -0
  195. package/dist/components/Popup/Popup.d.ts +31 -0
  196. package/dist/components/Popup/Popup.js +2857 -0
  197. package/dist/components/Popup/Popup.js.map +1 -0
  198. package/dist/components/Popup/index.d.ts +1 -0
  199. package/dist/components/Radio/Radio.cjs +104 -0
  200. package/dist/components/Radio/Radio.cjs.map +1 -0
  201. package/dist/components/Radio/Radio.d.ts +21 -0
  202. package/dist/components/Radio/Radio.js +102 -0
  203. package/dist/components/Radio/Radio.js.map +1 -0
  204. package/dist/components/Radio/RadioGroup.cjs +139 -0
  205. package/dist/components/Radio/RadioGroup.cjs.map +1 -0
  206. package/dist/components/Radio/RadioGroup.d.ts +26 -0
  207. package/dist/components/Radio/RadioGroup.js +137 -0
  208. package/dist/components/Radio/RadioGroup.js.map +1 -0
  209. package/dist/components/Radio/index.d.ts +2 -0
  210. package/dist/components/RadioButton/RadioButton.cjs +67 -0
  211. package/dist/components/RadioButton/RadioButton.cjs.map +1 -0
  212. package/dist/components/RadioButton/RadioButton.d.ts +28 -0
  213. package/dist/components/RadioButton/RadioButton.js +65 -0
  214. package/dist/components/RadioButton/RadioButton.js.map +1 -0
  215. package/dist/components/RadioButton/index.d.ts +1 -0
  216. package/dist/components/Select/Select.cjs +3274 -0
  217. package/dist/components/Select/Select.cjs.map +1 -0
  218. package/dist/components/Select/Select.d.ts +71 -0
  219. package/dist/components/Select/Select.js +3250 -0
  220. package/dist/components/Select/Select.js.map +1 -0
  221. package/dist/components/Select/index.d.ts +1 -0
  222. package/dist/components/Select/select.config.d.ts +24 -0
  223. package/dist/components/Switch/Switch.cjs +91 -0
  224. package/dist/components/Switch/Switch.cjs.map +1 -0
  225. package/dist/components/Switch/Switch.d.ts +15 -0
  226. package/dist/components/Switch/Switch.js +69 -0
  227. package/dist/components/Switch/Switch.js.map +1 -0
  228. package/dist/components/Switch/index.d.ts +1 -0
  229. package/dist/components/Table/Table.cjs +4021 -0
  230. package/dist/components/Table/Table.cjs.map +1 -0
  231. package/dist/components/Table/Table.d.ts +117 -0
  232. package/dist/components/Table/Table.js +3996 -0
  233. package/dist/components/Table/Table.js.map +1 -0
  234. package/dist/components/Table/index.d.ts +1 -0
  235. package/dist/components/Tabs/Tabs.cjs +2849 -0
  236. package/dist/components/Tabs/Tabs.cjs.map +1 -0
  237. package/dist/components/Tabs/Tabs.d.ts +24 -0
  238. package/dist/components/Tabs/Tabs.js +2847 -0
  239. package/dist/components/Tabs/Tabs.js.map +1 -0
  240. package/dist/components/Tabs/index.d.ts +2 -0
  241. package/dist/components/Tabs/tabs.config.d.ts +37 -0
  242. package/dist/components/Tag/Tag.cjs +2716 -0
  243. package/dist/components/Tag/Tag.cjs.map +1 -0
  244. package/dist/components/Tag/Tag.d.ts +23 -0
  245. package/dist/components/Tag/Tag.js +2714 -0
  246. package/dist/components/Tag/Tag.js.map +1 -0
  247. package/dist/components/Tag/index.d.ts +2 -0
  248. package/dist/components/Tag/tag.config.d.ts +17 -0
  249. package/dist/components/TextLink/TextLink.cjs +2717 -0
  250. package/dist/components/TextLink/TextLink.cjs.map +1 -0
  251. package/dist/components/TextLink/TextLink.d.ts +27 -0
  252. package/dist/components/TextLink/TextLink.js +2715 -0
  253. package/dist/components/TextLink/TextLink.js.map +1 -0
  254. package/dist/components/TextLink/index.d.ts +1 -0
  255. package/dist/components/Textarea/Textarea.cjs +2999 -0
  256. package/dist/components/Textarea/Textarea.cjs.map +1 -0
  257. package/dist/components/Textarea/Textarea.d.ts +49 -0
  258. package/dist/components/Textarea/Textarea.js +2976 -0
  259. package/dist/components/Textarea/Textarea.js.map +1 -0
  260. package/dist/components/Textarea/index.d.ts +1 -0
  261. package/dist/components/Toast/Toast.cjs +3050 -0
  262. package/dist/components/Toast/Toast.cjs.map +1 -0
  263. package/dist/components/Toast/Toast.d.ts +27 -0
  264. package/dist/components/Toast/Toast.js +3028 -0
  265. package/dist/components/Toast/Toast.js.map +1 -0
  266. package/dist/components/Toast/ToastContainer.cjs +3285 -0
  267. package/dist/components/Toast/ToastContainer.cjs.map +1 -0
  268. package/dist/components/Toast/ToastContainer.d.ts +28 -0
  269. package/dist/components/Toast/ToastContainer.js +3263 -0
  270. package/dist/components/Toast/ToastContainer.js.map +1 -0
  271. package/dist/components/Toast/index.d.ts +2 -0
  272. package/dist/components/Toggle/Toggle.cjs +45 -0
  273. package/dist/components/Toggle/Toggle.cjs.map +1 -0
  274. package/dist/components/Toggle/Toggle.d.ts +18 -0
  275. package/dist/components/Toggle/Toggle.js +43 -0
  276. package/dist/components/Toggle/Toggle.js.map +1 -0
  277. package/dist/components/Toggle/index.d.ts +1 -0
  278. package/dist/components/Tooltip/Tooltip.cjs +2753 -0
  279. package/dist/components/Tooltip/Tooltip.cjs.map +1 -0
  280. package/dist/components/Tooltip/Tooltip.d.ts +44 -0
  281. package/dist/components/Tooltip/Tooltip.js +2730 -0
  282. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  283. package/dist/components/Tooltip/index.d.ts +1 -0
  284. package/dist/index.cjs +8101 -0
  285. package/dist/index.cjs.map +1 -0
  286. package/dist/index.d.ts +44 -0
  287. package/dist/index.js +8019 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/lib/cn.cjs +13 -0
  290. package/dist/lib/cn.cjs.map +1 -0
  291. package/dist/lib/cn.d.ts +6 -0
  292. package/dist/lib/cn.js +11 -0
  293. package/dist/lib/cn.js.map +1 -0
  294. package/dist/lib/date.cjs +44 -0
  295. package/dist/lib/date.cjs.map +1 -0
  296. package/dist/lib/date.d.ts +15 -0
  297. package/dist/lib/date.js +38 -0
  298. package/dist/lib/date.js.map +1 -0
  299. package/dist/lib/form.cjs +15 -0
  300. package/dist/lib/form.cjs.map +1 -0
  301. package/dist/lib/form.d.ts +4 -0
  302. package/dist/lib/form.js +13 -0
  303. package/dist/lib/form.js.map +1 -0
  304. package/dist/lib/sanitize-inline-html.cjs +66 -0
  305. package/dist/lib/sanitize-inline-html.cjs.map +1 -0
  306. package/dist/lib/sanitize-inline-html.d.ts +1 -0
  307. package/dist/lib/sanitize-inline-html.js +64 -0
  308. package/dist/lib/sanitize-inline-html.js.map +1 -0
  309. package/dist/styles.css +3384 -0
  310. package/dist/theme.css +1483 -0
  311. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ export { KeyValueTable, type KeyValueTableProps, type KeyValueField, type KeyValueFieldType, type KeyValueChangeDetail, } from './KeyValueTable';
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var clsx = require('clsx');
5
+ var tailwindMerge = require('tailwind-merge');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ // src/components/LinearProgress/LinearProgress.tsx
9
+ function cn(...inputs) {
10
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
11
+ }
12
+ var FILL_COLOR = {
13
+ primary: "var(--cmp-progress-active-color)",
14
+ error: "var(--cmp-progress-error-color)",
15
+ complete: "var(--cmp-progress-success-color)"
16
+ };
17
+ var clamp = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
18
+ var LinearProgress = react.forwardRef(
19
+ function LinearProgress2({ value = 0, type = "primary", indeterminate = false, label, className, style }, ref) {
20
+ const v = clamp(value);
21
+ const fill = FILL_COLOR[type];
22
+ const valueColor = v === 0 ? "var(--sys-color-fg-tertiary, #888888)" : fill;
23
+ const valueText = `${Math.round(v)}%`;
24
+ return /* @__PURE__ */ jsxRuntime.jsxs(
25
+ "div",
26
+ {
27
+ ref,
28
+ className: cn("inline-flex w-full flex-col gap-[12px]", className),
29
+ style,
30
+ children: [
31
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[20px] w-full overflow-hidden rounded-full bg-[var(--cmp-progress-color-track)]", children: [
32
+ /* @__PURE__ */ jsxRuntime.jsx(
33
+ "div",
34
+ {
35
+ className: cn(
36
+ "absolute inset-y-0 left-0 h-full rounded-[inherit]",
37
+ indeterminate ? "w-full origin-left animate-linear-indeterminate" : "transition-[width] duration-[400ms] ease-linear"
38
+ ),
39
+ style: { background: fill, width: indeterminate ? void 0 : `${v}%` }
40
+ }
41
+ ),
42
+ !indeterminate && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
43
+ /* @__PURE__ */ jsxRuntime.jsx(
44
+ "span",
45
+ {
46
+ className: "pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px]",
47
+ style: { color: valueColor },
48
+ children: valueText
49
+ }
50
+ ),
51
+ /* @__PURE__ */ jsxRuntime.jsx(
52
+ "span",
53
+ {
54
+ className: "pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px] text-[color:var(--cmp-progress-bar-text)]",
55
+ style: { clipPath: `inset(0 ${100 - v}% 0 0)` },
56
+ children: valueText
57
+ }
58
+ )
59
+ ] })
60
+ ] }),
61
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
62
+ ]
63
+ }
64
+ );
65
+ }
66
+ );
67
+
68
+ exports.LinearProgress = LinearProgress;
69
+ //# sourceMappingURL=LinearProgress.cjs.map
70
+ //# sourceMappingURL=LinearProgress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/LinearProgress/LinearProgress.tsx"],"names":["twMerge","clsx","forwardRef","LinearProgress","jsxs","jsx","Fragment"],"mappings":";;;;;;;;AAOO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACJA,IAAM,UAAA,GAAiD;AAAA,EACrD,OAAA,EAAS,kCAAA;AAAA,EACT,KAAA,EAAO,iCAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAeA,IAAM,KAAA,GAAQ,CAAC,CAAA,KAAe,MAAA,CAAO,SAAS,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAC,CAAA,GAAI,CAAA;AAG5E,IAAM,cAAA,GAAiBC,gBAAA;AAAA,EAC5B,SAASC,eAAAA,CACP,EAAE,KAAA,GAAQ,CAAA,EAAG,IAAA,GAAO,SAAA,EAAW,aAAA,GAAgB,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,KAAA,IACxE,GAAA,EACA;AACA,IAAA,MAAM,CAAA,GAAI,MAAM,KAAK,CAAA;AACrB,IAAA,MAAM,IAAA,GAAO,WAAW,IAAI,CAAA;AAC5B,IAAA,MAAM,UAAA,GAAa,CAAA,KAAM,CAAA,GAAI,uCAAA,GAA0C,IAAA;AACvE,IAAA,MAAM,SAAA,GAAY,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA;AAElC,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,QACjE,KAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4FAAA,EACb,QAAA,EAAA;AAAA,4BAAAC,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,oDAAA;AAAA,kBACA,gBACI,iDAAA,GACA;AAAA,iBACN;AAAA,gBACA,KAAA,EAAO,EAAE,UAAA,EAAY,IAAA,EAAM,OAAO,aAAA,GAAgB,MAAA,GAAY,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;AAAI;AAAA,aACxE;AAAA,YACC,CAAC,iCACAD,eAAA,CAAAE,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAD,cAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,8HAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAW;AAAA,kBAE1B,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,8BACAA,cAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wKAAA;AAAA,kBACV,OAAO,EAAE,QAAA,EAAU,CAAA,QAAA,EAAW,GAAA,GAAM,CAAC,CAAA,MAAA,CAAA,EAAS;AAAA,kBAE7C,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EACF;AAAA,WAAA,EAEJ,CAAA;AAAA,UACC,KAAA,oBACCA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mGACb,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF","file":"LinearProgress.cjs","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * className 병합 유틸.\n * clsx로 조건부 클래스를 합치고, tailwind-merge로 Tailwind 클래스 충돌을 해소한다.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type LinearProgressType = 'primary' | 'error' | 'complete';\n\nconst FILL_COLOR: Record<LinearProgressType, string> = {\n primary: 'var(--cmp-progress-active-color)',\n error: 'var(--cmp-progress-error-color)',\n complete: 'var(--cmp-progress-success-color)',\n};\n\nexport interface LinearProgressProps {\n /** 진행률 (0–100) */\n value?: number;\n /** 색상 타입 */\n type?: LinearProgressType;\n /** 진행률 없이 무한 애니메이션 */\n indeterminate?: boolean;\n /** 하단 레이블 */\n label?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nconst clamp = (v: number) => (Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0);\n\n/** LinearProgress — sd-linear-progress 포팅. */\nexport const LinearProgress = forwardRef<HTMLDivElement, LinearProgressProps>(\n function LinearProgress(\n { value = 0, type = 'primary', indeterminate = false, label, className, style },\n ref,\n ) {\n const v = clamp(value);\n const fill = FILL_COLOR[type];\n const valueColor = v === 0 ? 'var(--sys-color-fg-tertiary, #888888)' : fill;\n const valueText = `${Math.round(v)}%`;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex w-full flex-col gap-[12px]', className)}\n style={style}\n >\n <div className=\"relative h-[20px] w-full overflow-hidden rounded-full bg-[var(--cmp-progress-color-track)]\">\n <div\n className={cn(\n 'absolute inset-y-0 left-0 h-full rounded-[inherit]',\n indeterminate\n ? 'w-full origin-left animate-linear-indeterminate'\n : 'transition-[width] duration-[400ms] ease-linear',\n )}\n style={{ background: fill, width: indeterminate ? undefined : `${v}%` }}\n />\n {!indeterminate && (\n <>\n <span\n className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px]\"\n style={{ color: valueColor }}\n >\n {valueText}\n </span>\n <span\n className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px] text-[color:var(--cmp-progress-bar-text)]\"\n style={{ clipPath: `inset(0 ${100 - v}% 0 0)` }}\n >\n {valueText}\n </span>\n </>\n )}\n </div>\n {label && (\n <span className=\"text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\n"]}
@@ -0,0 +1,16 @@
1
+ import { type CSSProperties } from 'react';
2
+ export type LinearProgressType = 'primary' | 'error' | 'complete';
3
+ export interface LinearProgressProps {
4
+ /** 진행률 (0–100) */
5
+ value?: number;
6
+ /** 색상 타입 */
7
+ type?: LinearProgressType;
8
+ /** 진행률 없이 무한 애니메이션 */
9
+ indeterminate?: boolean;
10
+ /** 하단 레이블 */
11
+ label?: string;
12
+ className?: string;
13
+ style?: CSSProperties;
14
+ }
15
+ /** LinearProgress — sd-linear-progress 포팅. */
16
+ export declare const LinearProgress: import("react").ForwardRefExoticComponent<LinearProgressProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,68 @@
1
+ import { forwardRef } from 'react';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
+
6
+ // src/components/LinearProgress/LinearProgress.tsx
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ var FILL_COLOR = {
11
+ primary: "var(--cmp-progress-active-color)",
12
+ error: "var(--cmp-progress-error-color)",
13
+ complete: "var(--cmp-progress-success-color)"
14
+ };
15
+ var clamp = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
16
+ var LinearProgress = forwardRef(
17
+ function LinearProgress2({ value = 0, type = "primary", indeterminate = false, label, className, style }, ref) {
18
+ const v = clamp(value);
19
+ const fill = FILL_COLOR[type];
20
+ const valueColor = v === 0 ? "var(--sys-color-fg-tertiary, #888888)" : fill;
21
+ const valueText = `${Math.round(v)}%`;
22
+ return /* @__PURE__ */ jsxs(
23
+ "div",
24
+ {
25
+ ref,
26
+ className: cn("inline-flex w-full flex-col gap-[12px]", className),
27
+ style,
28
+ children: [
29
+ /* @__PURE__ */ jsxs("div", { className: "relative h-[20px] w-full overflow-hidden rounded-full bg-[var(--cmp-progress-color-track)]", children: [
30
+ /* @__PURE__ */ jsx(
31
+ "div",
32
+ {
33
+ className: cn(
34
+ "absolute inset-y-0 left-0 h-full rounded-[inherit]",
35
+ indeterminate ? "w-full origin-left animate-linear-indeterminate" : "transition-[width] duration-[400ms] ease-linear"
36
+ ),
37
+ style: { background: fill, width: indeterminate ? void 0 : `${v}%` }
38
+ }
39
+ ),
40
+ !indeterminate && /* @__PURE__ */ jsxs(Fragment, { children: [
41
+ /* @__PURE__ */ jsx(
42
+ "span",
43
+ {
44
+ className: "pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px]",
45
+ style: { color: valueColor },
46
+ children: valueText
47
+ }
48
+ ),
49
+ /* @__PURE__ */ jsx(
50
+ "span",
51
+ {
52
+ className: "pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px] text-[color:var(--cmp-progress-bar-text)]",
53
+ style: { clipPath: `inset(0 ${100 - v}% 0 0)` },
54
+ children: valueText
55
+ }
56
+ )
57
+ ] })
58
+ ] }),
59
+ label && /* @__PURE__ */ jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
60
+ ]
61
+ }
62
+ );
63
+ }
64
+ );
65
+
66
+ export { LinearProgress };
67
+ //# sourceMappingURL=LinearProgress.js.map
68
+ //# sourceMappingURL=LinearProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/LinearProgress/LinearProgress.tsx"],"names":["LinearProgress"],"mappings":";;;;;;AAOO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACJA,IAAM,UAAA,GAAiD;AAAA,EACrD,OAAA,EAAS,kCAAA;AAAA,EACT,KAAA,EAAO,iCAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAA;AAeA,IAAM,KAAA,GAAQ,CAAC,CAAA,KAAe,MAAA,CAAO,SAAS,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAC,CAAA,GAAI,CAAA;AAG5E,IAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,SAASA,eAAAA,CACP,EAAE,KAAA,GAAQ,CAAA,EAAG,IAAA,GAAO,SAAA,EAAW,aAAA,GAAgB,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,KAAA,IACxE,GAAA,EACA;AACA,IAAA,MAAM,CAAA,GAAI,MAAM,KAAK,CAAA;AACrB,IAAA,MAAM,IAAA,GAAO,WAAW,IAAI,CAAA;AAC5B,IAAA,MAAM,UAAA,GAAa,CAAA,KAAM,CAAA,GAAI,uCAAA,GAA0C,IAAA;AACvE,IAAA,MAAM,SAAA,GAAY,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA;AAElC,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,QACjE,KAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4FAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,oDAAA;AAAA,kBACA,gBACI,iDAAA,GACA;AAAA,iBACN;AAAA,gBACA,KAAA,EAAO,EAAE,UAAA,EAAY,IAAA,EAAM,OAAO,aAAA,GAAgB,MAAA,GAAY,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;AAAI;AAAA,aACxE;AAAA,YACC,CAAC,iCACA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,8HAAA;AAAA,kBACV,KAAA,EAAO,EAAE,KAAA,EAAO,UAAA,EAAW;AAAA,kBAE1B,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,8BACA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wKAAA;AAAA,kBACV,OAAO,EAAE,QAAA,EAAU,CAAA,QAAA,EAAW,GAAA,GAAM,CAAC,CAAA,MAAA,CAAA,EAAS;AAAA,kBAE7C,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EACF;AAAA,WAAA,EAEJ,CAAA;AAAA,UACC,KAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mGACb,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF","file":"LinearProgress.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * className 병합 유틸.\n * clsx로 조건부 클래스를 합치고, tailwind-merge로 Tailwind 클래스 충돌을 해소한다.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type LinearProgressType = 'primary' | 'error' | 'complete';\n\nconst FILL_COLOR: Record<LinearProgressType, string> = {\n primary: 'var(--cmp-progress-active-color)',\n error: 'var(--cmp-progress-error-color)',\n complete: 'var(--cmp-progress-success-color)',\n};\n\nexport interface LinearProgressProps {\n /** 진행률 (0–100) */\n value?: number;\n /** 색상 타입 */\n type?: LinearProgressType;\n /** 진행률 없이 무한 애니메이션 */\n indeterminate?: boolean;\n /** 하단 레이블 */\n label?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nconst clamp = (v: number) => (Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0);\n\n/** LinearProgress — sd-linear-progress 포팅. */\nexport const LinearProgress = forwardRef<HTMLDivElement, LinearProgressProps>(\n function LinearProgress(\n { value = 0, type = 'primary', indeterminate = false, label, className, style },\n ref,\n ) {\n const v = clamp(value);\n const fill = FILL_COLOR[type];\n const valueColor = v === 0 ? 'var(--sys-color-fg-tertiary, #888888)' : fill;\n const valueText = `${Math.round(v)}%`;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex w-full flex-col gap-[12px]', className)}\n style={style}\n >\n <div className=\"relative h-[20px] w-full overflow-hidden rounded-full bg-[var(--cmp-progress-color-track)]\">\n <div\n className={cn(\n 'absolute inset-y-0 left-0 h-full rounded-[inherit]',\n indeterminate\n ? 'w-full origin-left animate-linear-indeterminate'\n : 'transition-[width] duration-[400ms] ease-linear',\n )}\n style={{ background: fill, width: indeterminate ? undefined : `${v}%` }}\n />\n {!indeterminate && (\n <>\n <span\n className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px]\"\n style={{ color: valueColor }}\n >\n {valueText}\n </span>\n <span\n className=\"pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 select-none text-center text-[12px] font-bold leading-[20px] text-[color:var(--cmp-progress-bar-text)]\"\n style={{ clipPath: `inset(0 ${100 - v}% 0 0)` }}\n >\n {valueText}\n </span>\n </>\n )}\n </div>\n {label && (\n <span className=\"text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\n"]}
@@ -0,0 +1 @@
1
+ export { LinearProgress, type LinearProgressProps, type LinearProgressType, } from './LinearProgress';
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var clsx = require('clsx');
5
+ var tailwindMerge = require('tailwind-merge');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ // src/components/LoadingContainer/LoadingContainer.tsx
9
+ function cn(...inputs) {
10
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
11
+ }
12
+ var VIEWBOX = 80;
13
+ var RADIUS = 34;
14
+ var STROKE = 12;
15
+ var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
16
+ var COLOR_MAP = {
17
+ primary: { arc: "var(--cmp-spinner-color-arc)", track: "var(--cmp-spinner-color-track)" },
18
+ inverse: { arc: "var(--color-white)", track: "transparent" },
19
+ error: { arc: "var(--color-red-75)", track: "var(--cmp-spinner-color-track)" },
20
+ complete: { arc: "#01BB4B", track: "var(--cmp-spinner-color-track)" }
21
+ };
22
+ var clamp = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
23
+ var CircleProgress = react.forwardRef(
24
+ function CircleProgress2({ value = 0, type = "primary", indeterminate = false, label, className, style }, ref) {
25
+ const v = clamp(value);
26
+ const colors = COLOR_MAP[type];
27
+ const c = VIEWBOX / 2;
28
+ const percentColor = v === 0 ? "var(--sys-color-fg-tertiary, #888888)" : colors.arc;
29
+ const filled = v / 100 * CIRCUMFERENCE;
30
+ return /* @__PURE__ */ jsxRuntime.jsxs(
31
+ "div",
32
+ {
33
+ ref,
34
+ className: cn("inline-flex flex-col items-center gap-[8px]", className),
35
+ style,
36
+ children: [
37
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative h-[80px] w-[80px]", children: [
38
+ /* @__PURE__ */ jsxRuntime.jsxs(
39
+ "svg",
40
+ {
41
+ viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`,
42
+ xmlns: "http://www.w3.org/2000/svg",
43
+ className: cn(
44
+ "h-[80px] w-[80px]",
45
+ indeterminate && "origin-center animate-circle-spin"
46
+ ),
47
+ children: [
48
+ /* @__PURE__ */ jsxRuntime.jsx(
49
+ "circle",
50
+ {
51
+ cx: c,
52
+ cy: c,
53
+ r: RADIUS,
54
+ fill: "none",
55
+ strokeWidth: STROKE,
56
+ style: { stroke: colors.track }
57
+ }
58
+ ),
59
+ /* @__PURE__ */ jsxRuntime.jsx(
60
+ "circle",
61
+ {
62
+ cx: c,
63
+ cy: c,
64
+ r: RADIUS,
65
+ fill: "none",
66
+ strokeWidth: STROKE,
67
+ strokeLinecap: "round",
68
+ className: cn(
69
+ "origin-center",
70
+ indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
71
+ ),
72
+ style: {
73
+ stroke: colors.arc,
74
+ ...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
75
+ }
76
+ }
77
+ )
78
+ ]
79
+ }
80
+ ),
81
+ !indeterminate && /* @__PURE__ */ jsxRuntime.jsxs(
82
+ "span",
83
+ {
84
+ className: "absolute inset-0 flex items-center justify-center text-[16px] font-bold leading-[26px]",
85
+ style: { color: percentColor },
86
+ children: [
87
+ Math.round(v),
88
+ "%"
89
+ ]
90
+ }
91
+ )
92
+ ] }),
93
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
94
+ ]
95
+ }
96
+ );
97
+ }
98
+ );
99
+ var LoadingContainer = react.forwardRef(
100
+ function LoadingContainer2({ open = false, message, zIndex = 999, className, style }, ref) {
101
+ return /* @__PURE__ */ jsxRuntime.jsxs(
102
+ "div",
103
+ {
104
+ ref,
105
+ "aria-hidden": !open,
106
+ className: cn(
107
+ "fixed inset-0 flex items-center justify-center transition-opacity duration-200",
108
+ open ? "pointer-events-auto visible opacity-100" : "pointer-events-none invisible opacity-0",
109
+ className
110
+ ),
111
+ style: { zIndex, ...style },
112
+ children: [
113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/40" }),
114
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col items-center gap-[16px]", children: [
115
+ /* @__PURE__ */ jsxRuntime.jsx(CircleProgress, { indeterminate: true, type: "inverse" }),
116
+ message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "m-0 max-w-[400px] break-keep text-center text-[14px] font-medium leading-[22px] text-[color:var(--color-white)]", children: message })
117
+ ] })
118
+ ]
119
+ }
120
+ );
121
+ }
122
+ );
123
+
124
+ exports.LoadingContainer = LoadingContainer;
125
+ //# sourceMappingURL=LoadingContainer.cjs.map
126
+ //# sourceMappingURL=LoadingContainer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/CircleProgress/CircleProgress.tsx","../../../src/components/LoadingContainer/LoadingContainer.tsx"],"names":["twMerge","clsx","forwardRef","CircleProgress","jsxs","jsx","LoadingContainer"],"mappings":"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","file":"LoadingContainer.cjs","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * className 병합 유틸.\n * clsx로 조건부 클래스를 합치고, tailwind-merge로 Tailwind 클래스 충돌을 해소한다.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type CircleProgressType = 'primary' | 'inverse' | 'error' | 'complete';\n\nconst VIEWBOX = 80;\nconst RADIUS = 34;\nconst STROKE = 12;\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS;\n\nconst COLOR_MAP: Record<CircleProgressType, { arc: string; track: string }> = {\n primary: { arc: 'var(--cmp-spinner-color-arc)', track: 'var(--cmp-spinner-color-track)' },\n inverse: { arc: 'var(--color-white)', track: 'transparent' },\n error: { arc: 'var(--color-red-75)', track: 'var(--cmp-spinner-color-track)' },\n complete: { arc: '#01BB4B', track: 'var(--cmp-spinner-color-track)' },\n};\n\nexport interface CircleProgressProps {\n /** 진행률 (0–100) */\n value?: number;\n /** 색상 테마 */\n type?: CircleProgressType;\n /** 불확정(스피너) 모드 — value 무시 */\n indeterminate?: boolean;\n /** 하단 레이블 */\n label?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nconst clamp = (v: number) => (Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0);\n\n/** CircleProgress — sd-circle-progress 포팅. determinate=진행률 arc, indeterminate=스피너. */\nexport const CircleProgress = forwardRef<HTMLDivElement, CircleProgressProps>(\n function CircleProgress(\n { value = 0, type = 'primary', indeterminate = false, label, className, style },\n ref,\n ) {\n const v = clamp(value);\n const colors = COLOR_MAP[type];\n const c = VIEWBOX / 2;\n const percentColor = v === 0 ? 'var(--sys-color-fg-tertiary, #888888)' : colors.arc;\n const filled = (v / 100) * CIRCUMFERENCE;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex flex-col items-center gap-[8px]', className)}\n style={style}\n >\n <div className=\"relative h-[80px] w-[80px]\">\n <svg\n viewBox={`0 0 ${VIEWBOX} ${VIEWBOX}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n 'h-[80px] w-[80px]',\n indeterminate && 'origin-center animate-circle-spin',\n )}\n >\n <circle\n cx={c}\n cy={c}\n r={RADIUS}\n fill=\"none\"\n strokeWidth={STROKE}\n style={{ stroke: colors.track }}\n />\n <circle\n cx={c}\n cy={c}\n r={RADIUS}\n fill=\"none\"\n strokeWidth={STROKE}\n strokeLinecap=\"round\"\n className={cn(\n 'origin-center',\n indeterminate\n ? 'animate-circle-arc'\n : '-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear',\n )}\n style={{\n stroke: colors.arc,\n ...(indeterminate\n ? {}\n : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }),\n }}\n />\n </svg>\n {!indeterminate && (\n <span\n className=\"absolute inset-0 flex items-center justify-center text-[16px] font-bold leading-[26px]\"\n style={{ color: percentColor }}\n >\n {Math.round(v)}%\n </span>\n )}\n </div>\n {label && (\n <span className=\"text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\nimport { CircleProgress } from '../CircleProgress';\n\nexport interface LoadingContainerProps {\n /** 오버레이 표시 여부 (Stencil의 show()/hide() 명령형 API → 제어 prop으로 대체) */\n open?: boolean;\n /** 스피너 하단 메시지 */\n message?: string;\n /** z-index (기본 999) */\n zIndex?: number;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * LoadingContainer — sd-loading-container 포팅.\n * 전체 화면 딤 오버레이 + inverse 스피너. React에서는 `open` 제어 prop 사용.\n */\nexport const LoadingContainer = forwardRef<HTMLDivElement, LoadingContainerProps>(\n function LoadingContainer({ open = false, message, zIndex = 999, className, style }, ref) {\n return (\n <div\n ref={ref}\n aria-hidden={!open}\n className={cn(\n 'fixed inset-0 flex items-center justify-center transition-opacity duration-200',\n open\n ? 'pointer-events-auto visible opacity-100'\n : 'pointer-events-none invisible opacity-0',\n className,\n )}\n style={{ zIndex, ...style }}\n >\n <div className=\"absolute inset-0 bg-black/40\" />\n <div className=\"relative flex flex-col items-center gap-[16px]\">\n <CircleProgress indeterminate type=\"inverse\" />\n {message && (\n <p className=\"m-0 max-w-[400px] break-keep text-center text-[14px] font-medium leading-[22px] text-[color:var(--color-white)]\">\n {message}\n </p>\n )}\n </div>\n </div>\n );\n },\n);\n"]}
@@ -0,0 +1,16 @@
1
+ import { type CSSProperties } from 'react';
2
+ export interface LoadingContainerProps {
3
+ /** 오버레이 표시 여부 (Stencil의 show()/hide() 명령형 API → 제어 prop으로 대체) */
4
+ open?: boolean;
5
+ /** 스피너 하단 메시지 */
6
+ message?: string;
7
+ /** z-index (기본 999) */
8
+ zIndex?: number;
9
+ className?: string;
10
+ style?: CSSProperties;
11
+ }
12
+ /**
13
+ * LoadingContainer — sd-loading-container 포팅.
14
+ * 전체 화면 딤 오버레이 + inverse 스피너. React에서는 `open` 제어 prop 사용.
15
+ */
16
+ export declare const LoadingContainer: import("react").ForwardRefExoticComponent<LoadingContainerProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,124 @@
1
+ import { forwardRef } from 'react';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ // src/components/LoadingContainer/LoadingContainer.tsx
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ var VIEWBOX = 80;
11
+ var RADIUS = 34;
12
+ var STROKE = 12;
13
+ var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
14
+ var COLOR_MAP = {
15
+ primary: { arc: "var(--cmp-spinner-color-arc)", track: "var(--cmp-spinner-color-track)" },
16
+ inverse: { arc: "var(--color-white)", track: "transparent" },
17
+ error: { arc: "var(--color-red-75)", track: "var(--cmp-spinner-color-track)" },
18
+ complete: { arc: "#01BB4B", track: "var(--cmp-spinner-color-track)" }
19
+ };
20
+ var clamp = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
21
+ var CircleProgress = forwardRef(
22
+ function CircleProgress2({ value = 0, type = "primary", indeterminate = false, label, className, style }, ref) {
23
+ const v = clamp(value);
24
+ const colors = COLOR_MAP[type];
25
+ const c = VIEWBOX / 2;
26
+ const percentColor = v === 0 ? "var(--sys-color-fg-tertiary, #888888)" : colors.arc;
27
+ const filled = v / 100 * CIRCUMFERENCE;
28
+ return /* @__PURE__ */ jsxs(
29
+ "div",
30
+ {
31
+ ref,
32
+ className: cn("inline-flex flex-col items-center gap-[8px]", className),
33
+ style,
34
+ children: [
35
+ /* @__PURE__ */ jsxs("div", { className: "relative h-[80px] w-[80px]", children: [
36
+ /* @__PURE__ */ jsxs(
37
+ "svg",
38
+ {
39
+ viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`,
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ className: cn(
42
+ "h-[80px] w-[80px]",
43
+ indeterminate && "origin-center animate-circle-spin"
44
+ ),
45
+ children: [
46
+ /* @__PURE__ */ jsx(
47
+ "circle",
48
+ {
49
+ cx: c,
50
+ cy: c,
51
+ r: RADIUS,
52
+ fill: "none",
53
+ strokeWidth: STROKE,
54
+ style: { stroke: colors.track }
55
+ }
56
+ ),
57
+ /* @__PURE__ */ jsx(
58
+ "circle",
59
+ {
60
+ cx: c,
61
+ cy: c,
62
+ r: RADIUS,
63
+ fill: "none",
64
+ strokeWidth: STROKE,
65
+ strokeLinecap: "round",
66
+ className: cn(
67
+ "origin-center",
68
+ indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
69
+ ),
70
+ style: {
71
+ stroke: colors.arc,
72
+ ...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
73
+ }
74
+ }
75
+ )
76
+ ]
77
+ }
78
+ ),
79
+ !indeterminate && /* @__PURE__ */ jsxs(
80
+ "span",
81
+ {
82
+ className: "absolute inset-0 flex items-center justify-center text-[16px] font-bold leading-[26px]",
83
+ style: { color: percentColor },
84
+ children: [
85
+ Math.round(v),
86
+ "%"
87
+ ]
88
+ }
89
+ )
90
+ ] }),
91
+ label && /* @__PURE__ */ jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
92
+ ]
93
+ }
94
+ );
95
+ }
96
+ );
97
+ var LoadingContainer = forwardRef(
98
+ function LoadingContainer2({ open = false, message, zIndex = 999, className, style }, ref) {
99
+ return /* @__PURE__ */ jsxs(
100
+ "div",
101
+ {
102
+ ref,
103
+ "aria-hidden": !open,
104
+ className: cn(
105
+ "fixed inset-0 flex items-center justify-center transition-opacity duration-200",
106
+ open ? "pointer-events-auto visible opacity-100" : "pointer-events-none invisible opacity-0",
107
+ className
108
+ ),
109
+ style: { zIndex, ...style },
110
+ children: [
111
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/40" }),
112
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center gap-[16px]", children: [
113
+ /* @__PURE__ */ jsx(CircleProgress, { indeterminate: true, type: "inverse" }),
114
+ message && /* @__PURE__ */ jsx("p", { className: "m-0 max-w-[400px] break-keep text-center text-[14px] font-medium leading-[22px] text-[color:var(--color-white)]", children: message })
115
+ ] })
116
+ ]
117
+ }
118
+ );
119
+ }
120
+ );
121
+
122
+ export { LoadingContainer };
123
+ //# sourceMappingURL=LoadingContainer.js.map
124
+ //# sourceMappingURL=LoadingContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/CircleProgress/CircleProgress.tsx","../../../src/components/LoadingContainer/LoadingContainer.tsx"],"names":["CircleProgress","forwardRef","LoadingContainer","jsxs","jsx"],"mappings":"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","file":"LoadingContainer.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * className 병합 유틸.\n * clsx로 조건부 클래스를 합치고, tailwind-merge로 Tailwind 클래스 충돌을 해소한다.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type CircleProgressType = 'primary' | 'inverse' | 'error' | 'complete';\n\nconst VIEWBOX = 80;\nconst RADIUS = 34;\nconst STROKE = 12;\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS;\n\nconst COLOR_MAP: Record<CircleProgressType, { arc: string; track: string }> = {\n primary: { arc: 'var(--cmp-spinner-color-arc)', track: 'var(--cmp-spinner-color-track)' },\n inverse: { arc: 'var(--color-white)', track: 'transparent' },\n error: { arc: 'var(--color-red-75)', track: 'var(--cmp-spinner-color-track)' },\n complete: { arc: '#01BB4B', track: 'var(--cmp-spinner-color-track)' },\n};\n\nexport interface CircleProgressProps {\n /** 진행률 (0–100) */\n value?: number;\n /** 색상 테마 */\n type?: CircleProgressType;\n /** 불확정(스피너) 모드 — value 무시 */\n indeterminate?: boolean;\n /** 하단 레이블 */\n label?: string;\n className?: string;\n style?: CSSProperties;\n}\n\nconst clamp = (v: number) => (Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0);\n\n/** CircleProgress — sd-circle-progress 포팅. determinate=진행률 arc, indeterminate=스피너. */\nexport const CircleProgress = forwardRef<HTMLDivElement, CircleProgressProps>(\n function CircleProgress(\n { value = 0, type = 'primary', indeterminate = false, label, className, style },\n ref,\n ) {\n const v = clamp(value);\n const colors = COLOR_MAP[type];\n const c = VIEWBOX / 2;\n const percentColor = v === 0 ? 'var(--sys-color-fg-tertiary, #888888)' : colors.arc;\n const filled = (v / 100) * CIRCUMFERENCE;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex flex-col items-center gap-[8px]', className)}\n style={style}\n >\n <div className=\"relative h-[80px] w-[80px]\">\n <svg\n viewBox={`0 0 ${VIEWBOX} ${VIEWBOX}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(\n 'h-[80px] w-[80px]',\n indeterminate && 'origin-center animate-circle-spin',\n )}\n >\n <circle\n cx={c}\n cy={c}\n r={RADIUS}\n fill=\"none\"\n strokeWidth={STROKE}\n style={{ stroke: colors.track }}\n />\n <circle\n cx={c}\n cy={c}\n r={RADIUS}\n fill=\"none\"\n strokeWidth={STROKE}\n strokeLinecap=\"round\"\n className={cn(\n 'origin-center',\n indeterminate\n ? 'animate-circle-arc'\n : '-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear',\n )}\n style={{\n stroke: colors.arc,\n ...(indeterminate\n ? {}\n : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }),\n }}\n />\n </svg>\n {!indeterminate && (\n <span\n className=\"absolute inset-0 flex items-center justify-center text-[16px] font-bold leading-[26px]\"\n style={{ color: percentColor }}\n >\n {Math.round(v)}%\n </span>\n )}\n </div>\n {label && (\n <span className=\"text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]\">\n {label}\n </span>\n )}\n </div>\n );\n },\n);\n","import { forwardRef, type CSSProperties } from 'react';\nimport { cn } from '../../lib/cn';\nimport { CircleProgress } from '../CircleProgress';\n\nexport interface LoadingContainerProps {\n /** 오버레이 표시 여부 (Stencil의 show()/hide() 명령형 API → 제어 prop으로 대체) */\n open?: boolean;\n /** 스피너 하단 메시지 */\n message?: string;\n /** z-index (기본 999) */\n zIndex?: number;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * LoadingContainer — sd-loading-container 포팅.\n * 전체 화면 딤 오버레이 + inverse 스피너. React에서는 `open` 제어 prop 사용.\n */\nexport const LoadingContainer = forwardRef<HTMLDivElement, LoadingContainerProps>(\n function LoadingContainer({ open = false, message, zIndex = 999, className, style }, ref) {\n return (\n <div\n ref={ref}\n aria-hidden={!open}\n className={cn(\n 'fixed inset-0 flex items-center justify-center transition-opacity duration-200',\n open\n ? 'pointer-events-auto visible opacity-100'\n : 'pointer-events-none invisible opacity-0',\n className,\n )}\n style={{ zIndex, ...style }}\n >\n <div className=\"absolute inset-0 bg-black/40\" />\n <div className=\"relative flex flex-col items-center gap-[16px]\">\n <CircleProgress indeterminate type=\"inverse\" />\n {message && (\n <p className=\"m-0 max-w-[400px] break-keep text-center text-[14px] font-medium leading-[22px] text-[color:var(--color-white)]\">\n {message}\n </p>\n )}\n </div>\n </div>\n );\n },\n);\n"]}
@@ -0,0 +1,2 @@
1
+ export { LoadingContainer, type LoadingContainerProps } from './LoadingContainer';
2
+ export { loading, LoadingViewport } from './loading';