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 { ChipInput, type ChipInputProps, type ChipInputSize } from './ChipInput';
@@ -0,0 +1,102 @@
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/CircleProgress/CircleProgress.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
+
100
+ exports.CircleProgress = CircleProgress;
101
+ //# sourceMappingURL=CircleProgress.cjs.map
102
+ //# sourceMappingURL=CircleProgress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/CircleProgress/CircleProgress.tsx"],"names":["twMerge","clsx","forwardRef","CircleProgress","jsxs","jsx"],"mappings":"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","file":"CircleProgress.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"]}
@@ -0,0 +1,16 @@
1
+ import { type CSSProperties } from 'react';
2
+ export type CircleProgressType = 'primary' | 'inverse' | 'error' | 'complete';
3
+ export interface CircleProgressProps {
4
+ /** 진행률 (0–100) */
5
+ value?: number;
6
+ /** 색상 테마 */
7
+ type?: CircleProgressType;
8
+ /** 불확정(스피너) 모드 — value 무시 */
9
+ indeterminate?: boolean;
10
+ /** 하단 레이블 */
11
+ label?: string;
12
+ className?: string;
13
+ style?: CSSProperties;
14
+ }
15
+ /** CircleProgress — sd-circle-progress 포팅. determinate=진행률 arc, indeterminate=스피너. */
16
+ export declare const CircleProgress: import("react").ForwardRefExoticComponent<CircleProgressProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,100 @@
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/CircleProgress/CircleProgress.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
+
98
+ export { CircleProgress };
99
+ //# sourceMappingURL=CircleProgress.js.map
100
+ //# sourceMappingURL=CircleProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/cn.ts","../../../src/components/CircleProgress/CircleProgress.tsx"],"names":["CircleProgress"],"mappings":";;;;;;AAOO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACJA,IAAM,OAAA,GAAU,EAAA;AAChB,IAAM,MAAA,GAAS,EAAA;AACf,IAAM,MAAA,GAAS,EAAA;AACf,IAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AAEpC,IAAM,SAAA,GAAwE;AAAA,EAC5E,OAAA,EAAS,EAAE,GAAA,EAAK,8BAAA,EAAgC,OAAO,gCAAA,EAAiC;AAAA,EACxF,OAAA,EAAS,EAAE,GAAA,EAAK,oBAAA,EAAsB,OAAO,aAAA,EAAc;AAAA,EAC3D,KAAA,EAAO,EAAE,GAAA,EAAK,qBAAA,EAAuB,OAAO,gCAAA,EAAiC;AAAA,EAC7E,QAAA,EAAU,EAAE,GAAA,EAAK,SAAA,EAAW,OAAO,gCAAA;AACrC,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,MAAA,GAAS,UAAU,IAAI,CAAA;AAC7B,IAAA,MAAM,IAAI,OAAA,GAAU,CAAA;AACpB,IAAA,MAAM,YAAA,GAAe,CAAA,KAAM,CAAA,GAAI,uCAAA,GAA0C,MAAA,CAAO,GAAA;AAChF,IAAA,MAAM,MAAA,GAAU,IAAI,GAAA,GAAO,aAAA;AAE3B,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,6CAAA,EAA+C,SAAS,CAAA;AAAA,QACtE,KAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA;AAAA,gBAClC,KAAA,EAAM,4BAAA;AAAA,gBACN,SAAA,EAAW,EAAA;AAAA,kBACT,mBAAA;AAAA,kBACA,aAAA,IAAiB;AAAA,iBACnB;AAAA,gBAEA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,EAAA,EAAI,CAAA;AAAA,sBACJ,EAAA,EAAI,CAAA;AAAA,sBACJ,CAAA,EAAG,MAAA;AAAA,sBACH,IAAA,EAAK,MAAA;AAAA,sBACL,WAAA,EAAa,MAAA;AAAA,sBACb,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,CAAO,KAAA;AAAM;AAAA,mBAChC;AAAA,kCACA,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,EAAA,EAAI,CAAA;AAAA,sBACJ,EAAA,EAAI,CAAA;AAAA,sBACJ,CAAA,EAAG,MAAA;AAAA,sBACH,IAAA,EAAK,MAAA;AAAA,sBACL,WAAA,EAAa,MAAA;AAAA,sBACb,aAAA,EAAc,OAAA;AAAA,sBACd,SAAA,EAAW,EAAA;AAAA,wBACT,eAAA;AAAA,wBACA,gBACI,oBAAA,GACA;AAAA,uBACN;AAAA,sBACA,KAAA,EAAO;AAAA,wBACL,QAAQ,MAAA,CAAO,GAAA;AAAA,wBACf,GAAI,aAAA,GACA,EAAC,GACD,EAAE,eAAA,EAAiB,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,gBAAA,EAAkB,CAAA;AAAE;AAC3E;AAAA;AACF;AAAA;AAAA,aACF;AAAA,YACC,CAAC,aAAA,oBACA,IAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,wFAAA;AAAA,gBACV,KAAA,EAAO,EAAE,KAAA,EAAO,YAAA,EAAa;AAAA,gBAE5B,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA;AACjB,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":"CircleProgress.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"]}
@@ -0,0 +1 @@
1
+ export { CircleProgress, type CircleProgressProps, type CircleProgressType, } from './CircleProgress';