@pylerai/design-system 1.2.4 → 2.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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +183 -307
  3. package/dist/components/ui/badge.d.ts +2 -1
  4. package/dist/components/ui/badge.js +49 -0
  5. package/dist/components/ui/body.js +52 -0
  6. package/dist/components/ui/button.d.ts +2 -1
  7. package/dist/components/ui/button.js +172 -0
  8. package/dist/components/ui/calendar.js +275 -0
  9. package/dist/components/ui/checkbox.d.ts +7 -0
  10. package/dist/components/ui/checkbox.js +45 -0
  11. package/dist/components/ui/chip.d.ts +4 -3
  12. package/dist/components/ui/chip.js +66 -0
  13. package/dist/components/ui/dropdown.d.ts +8 -2
  14. package/dist/components/ui/dropdown.js +256 -0
  15. package/dist/components/ui/headline.js +50 -0
  16. package/dist/components/ui/input.d.ts +3 -2
  17. package/dist/components/ui/input.js +129 -0
  18. package/dist/components/ui/label.js +43 -0
  19. package/dist/components/ui/loading-bar.d.ts +2 -1
  20. package/dist/components/ui/loading-bar.js +64 -0
  21. package/dist/components/ui/modal.d.ts +3 -2
  22. package/dist/components/ui/modal.js +170 -0
  23. package/dist/components/ui/pagination.js +106 -0
  24. package/dist/components/ui/radio.d.ts +7 -0
  25. package/dist/components/ui/radio.js +42 -0
  26. package/dist/components/ui/search-field.d.ts +3 -2
  27. package/dist/components/ui/search-field.js +98 -0
  28. package/dist/components/ui/table.js +206 -0
  29. package/dist/components/ui/tabs.js +149 -0
  30. package/dist/components/ui/tag.d.ts +2 -1
  31. package/dist/components/ui/tag.js +31 -0
  32. package/dist/components/ui/tips.d.ts +2 -1
  33. package/dist/components/ui/tips.js +25 -0
  34. package/dist/components/ui/toast.js +70 -0
  35. package/dist/components/ui/toggle.d.ts +1 -2
  36. package/dist/components/ui/toggle.js +41 -0
  37. package/dist/components/ui/use-modal.js +94 -0
  38. package/dist/fonts/PretendardJPVariable.subset.0.woff2 +0 -0
  39. package/dist/fonts/PretendardJPVariable.subset.1.woff2 +0 -0
  40. package/dist/fonts/PretendardJPVariable.subset.10.woff2 +0 -0
  41. package/dist/fonts/PretendardJPVariable.subset.100.woff2 +0 -0
  42. package/dist/fonts/PretendardJPVariable.subset.101.woff2 +0 -0
  43. package/dist/fonts/PretendardJPVariable.subset.102.woff2 +0 -0
  44. package/dist/fonts/PretendardJPVariable.subset.103.woff2 +0 -0
  45. package/dist/fonts/PretendardJPVariable.subset.104.woff2 +0 -0
  46. package/dist/fonts/PretendardJPVariable.subset.105.woff2 +0 -0
  47. package/dist/fonts/PretendardJPVariable.subset.106.woff2 +0 -0
  48. package/dist/fonts/PretendardJPVariable.subset.107.woff2 +0 -0
  49. package/dist/fonts/PretendardJPVariable.subset.108.woff2 +0 -0
  50. package/dist/fonts/PretendardJPVariable.subset.109.woff2 +0 -0
  51. package/dist/fonts/PretendardJPVariable.subset.11.woff2 +0 -0
  52. package/dist/fonts/PretendardJPVariable.subset.110.woff2 +0 -0
  53. package/dist/fonts/PretendardJPVariable.subset.111.woff2 +0 -0
  54. package/dist/fonts/PretendardJPVariable.subset.112.woff2 +0 -0
  55. package/dist/fonts/PretendardJPVariable.subset.113.woff2 +0 -0
  56. package/dist/fonts/PretendardJPVariable.subset.114.woff2 +0 -0
  57. package/dist/fonts/PretendardJPVariable.subset.115.woff2 +0 -0
  58. package/dist/fonts/PretendardJPVariable.subset.116.woff2 +0 -0
  59. package/dist/fonts/PretendardJPVariable.subset.117.woff2 +0 -0
  60. package/dist/fonts/PretendardJPVariable.subset.118.woff2 +0 -0
  61. package/dist/fonts/PretendardJPVariable.subset.12.woff2 +0 -0
  62. package/dist/fonts/PretendardJPVariable.subset.13.woff2 +0 -0
  63. package/dist/fonts/PretendardJPVariable.subset.14.woff2 +0 -0
  64. package/dist/fonts/PretendardJPVariable.subset.15.woff2 +0 -0
  65. package/dist/fonts/PretendardJPVariable.subset.16.woff2 +0 -0
  66. package/dist/fonts/PretendardJPVariable.subset.17.woff2 +0 -0
  67. package/dist/fonts/PretendardJPVariable.subset.18.woff2 +0 -0
  68. package/dist/fonts/PretendardJPVariable.subset.19.woff2 +0 -0
  69. package/dist/fonts/PretendardJPVariable.subset.2.woff2 +0 -0
  70. package/dist/fonts/PretendardJPVariable.subset.20.woff2 +0 -0
  71. package/dist/fonts/PretendardJPVariable.subset.21.woff2 +0 -0
  72. package/dist/fonts/PretendardJPVariable.subset.22.woff2 +0 -0
  73. package/dist/fonts/PretendardJPVariable.subset.23.woff2 +0 -0
  74. package/dist/fonts/PretendardJPVariable.subset.24.woff2 +0 -0
  75. package/dist/fonts/PretendardJPVariable.subset.25.woff2 +0 -0
  76. package/dist/fonts/PretendardJPVariable.subset.26.woff2 +0 -0
  77. package/dist/fonts/PretendardJPVariable.subset.27.woff2 +0 -0
  78. package/dist/fonts/PretendardJPVariable.subset.28.woff2 +0 -0
  79. package/dist/fonts/PretendardJPVariable.subset.29.woff2 +0 -0
  80. package/dist/fonts/PretendardJPVariable.subset.3.woff2 +0 -0
  81. package/dist/fonts/PretendardJPVariable.subset.30.woff2 +0 -0
  82. package/dist/fonts/PretendardJPVariable.subset.31.woff2 +0 -0
  83. package/dist/fonts/PretendardJPVariable.subset.32.woff2 +0 -0
  84. package/dist/fonts/PretendardJPVariable.subset.33.woff2 +0 -0
  85. package/dist/fonts/PretendardJPVariable.subset.34.woff2 +0 -0
  86. package/dist/fonts/PretendardJPVariable.subset.35.woff2 +0 -0
  87. package/dist/fonts/PretendardJPVariable.subset.36.woff2 +0 -0
  88. package/dist/fonts/PretendardJPVariable.subset.37.woff2 +0 -0
  89. package/dist/fonts/PretendardJPVariable.subset.38.woff2 +0 -0
  90. package/dist/fonts/PretendardJPVariable.subset.39.woff2 +0 -0
  91. package/dist/fonts/PretendardJPVariable.subset.4.woff2 +0 -0
  92. package/dist/fonts/PretendardJPVariable.subset.40.woff2 +0 -0
  93. package/dist/fonts/PretendardJPVariable.subset.41.woff2 +0 -0
  94. package/dist/fonts/PretendardJPVariable.subset.42.woff2 +0 -0
  95. package/dist/fonts/PretendardJPVariable.subset.43.woff2 +0 -0
  96. package/dist/fonts/PretendardJPVariable.subset.44.woff2 +0 -0
  97. package/dist/fonts/PretendardJPVariable.subset.45.woff2 +0 -0
  98. package/dist/fonts/PretendardJPVariable.subset.46.woff2 +0 -0
  99. package/dist/fonts/PretendardJPVariable.subset.47.woff2 +0 -0
  100. package/dist/fonts/PretendardJPVariable.subset.48.woff2 +0 -0
  101. package/dist/fonts/PretendardJPVariable.subset.49.woff2 +0 -0
  102. package/dist/fonts/PretendardJPVariable.subset.5.woff2 +0 -0
  103. package/dist/fonts/PretendardJPVariable.subset.50.woff2 +0 -0
  104. package/dist/fonts/PretendardJPVariable.subset.51.woff2 +0 -0
  105. package/dist/fonts/PretendardJPVariable.subset.52.woff2 +0 -0
  106. package/dist/fonts/PretendardJPVariable.subset.53.woff2 +0 -0
  107. package/dist/fonts/PretendardJPVariable.subset.54.woff2 +0 -0
  108. package/dist/fonts/PretendardJPVariable.subset.55.woff2 +0 -0
  109. package/dist/fonts/PretendardJPVariable.subset.56.woff2 +0 -0
  110. package/dist/fonts/PretendardJPVariable.subset.57.woff2 +0 -0
  111. package/dist/fonts/PretendardJPVariable.subset.58.woff2 +0 -0
  112. package/dist/fonts/PretendardJPVariable.subset.59.woff2 +0 -0
  113. package/dist/fonts/PretendardJPVariable.subset.6.woff2 +0 -0
  114. package/dist/fonts/PretendardJPVariable.subset.60.woff2 +0 -0
  115. package/dist/fonts/PretendardJPVariable.subset.61.woff2 +0 -0
  116. package/dist/fonts/PretendardJPVariable.subset.62.woff2 +0 -0
  117. package/dist/fonts/PretendardJPVariable.subset.63.woff2 +0 -0
  118. package/dist/fonts/PretendardJPVariable.subset.64.woff2 +0 -0
  119. package/dist/fonts/PretendardJPVariable.subset.65.woff2 +0 -0
  120. package/dist/fonts/PretendardJPVariable.subset.66.woff2 +0 -0
  121. package/dist/fonts/PretendardJPVariable.subset.67.woff2 +0 -0
  122. package/dist/fonts/PretendardJPVariable.subset.68.woff2 +0 -0
  123. package/dist/fonts/PretendardJPVariable.subset.69.woff2 +0 -0
  124. package/dist/fonts/PretendardJPVariable.subset.7.woff2 +0 -0
  125. package/dist/fonts/PretendardJPVariable.subset.70.woff2 +0 -0
  126. package/dist/fonts/PretendardJPVariable.subset.71.woff2 +0 -0
  127. package/dist/fonts/PretendardJPVariable.subset.72.woff2 +0 -0
  128. package/dist/fonts/PretendardJPVariable.subset.73.woff2 +0 -0
  129. package/dist/fonts/PretendardJPVariable.subset.74.woff2 +0 -0
  130. package/dist/fonts/PretendardJPVariable.subset.75.woff2 +0 -0
  131. package/dist/fonts/PretendardJPVariable.subset.76.woff2 +0 -0
  132. package/dist/fonts/PretendardJPVariable.subset.77.woff2 +0 -0
  133. package/dist/fonts/PretendardJPVariable.subset.78.woff2 +0 -0
  134. package/dist/fonts/PretendardJPVariable.subset.79.woff2 +0 -0
  135. package/dist/fonts/PretendardJPVariable.subset.8.woff2 +0 -0
  136. package/dist/fonts/PretendardJPVariable.subset.80.woff2 +0 -0
  137. package/dist/fonts/PretendardJPVariable.subset.81.woff2 +0 -0
  138. package/dist/fonts/PretendardJPVariable.subset.82.woff2 +0 -0
  139. package/dist/fonts/PretendardJPVariable.subset.83.woff2 +0 -0
  140. package/dist/fonts/PretendardJPVariable.subset.84.woff2 +0 -0
  141. package/dist/fonts/PretendardJPVariable.subset.85.woff2 +0 -0
  142. package/dist/fonts/PretendardJPVariable.subset.86.woff2 +0 -0
  143. package/dist/fonts/PretendardJPVariable.subset.87.woff2 +0 -0
  144. package/dist/fonts/PretendardJPVariable.subset.88.woff2 +0 -0
  145. package/dist/fonts/PretendardJPVariable.subset.89.woff2 +0 -0
  146. package/dist/fonts/PretendardJPVariable.subset.9.woff2 +0 -0
  147. package/dist/fonts/PretendardJPVariable.subset.90.woff2 +0 -0
  148. package/dist/fonts/PretendardJPVariable.subset.91.woff2 +0 -0
  149. package/dist/fonts/PretendardJPVariable.subset.92.woff2 +0 -0
  150. package/dist/fonts/PretendardJPVariable.subset.93.woff2 +0 -0
  151. package/dist/fonts/PretendardJPVariable.subset.94.woff2 +0 -0
  152. package/dist/fonts/PretendardJPVariable.subset.95.woff2 +0 -0
  153. package/dist/fonts/PretendardJPVariable.subset.96.woff2 +0 -0
  154. package/dist/fonts/PretendardJPVariable.subset.97.woff2 +0 -0
  155. package/dist/fonts/PretendardJPVariable.subset.98.woff2 +0 -0
  156. package/dist/fonts/PretendardJPVariable.subset.99.woff2 +0 -0
  157. package/dist/fonts/PretendardVariable.subset.0.woff2 +0 -0
  158. package/dist/fonts/PretendardVariable.subset.1.woff2 +0 -0
  159. package/dist/fonts/PretendardVariable.subset.10.woff2 +0 -0
  160. package/dist/fonts/PretendardVariable.subset.11.woff2 +0 -0
  161. package/dist/fonts/PretendardVariable.subset.12.woff2 +0 -0
  162. package/dist/fonts/PretendardVariable.subset.13.woff2 +0 -0
  163. package/dist/fonts/PretendardVariable.subset.14.woff2 +0 -0
  164. package/dist/fonts/PretendardVariable.subset.15.woff2 +0 -0
  165. package/dist/fonts/PretendardVariable.subset.16.woff2 +0 -0
  166. package/dist/fonts/PretendardVariable.subset.17.woff2 +0 -0
  167. package/dist/fonts/PretendardVariable.subset.18.woff2 +0 -0
  168. package/dist/fonts/PretendardVariable.subset.19.woff2 +0 -0
  169. package/dist/fonts/PretendardVariable.subset.2.woff2 +0 -0
  170. package/dist/fonts/PretendardVariable.subset.20.woff2 +0 -0
  171. package/dist/fonts/PretendardVariable.subset.21.woff2 +0 -0
  172. package/dist/fonts/PretendardVariable.subset.22.woff2 +0 -0
  173. package/dist/fonts/PretendardVariable.subset.23.woff2 +0 -0
  174. package/dist/fonts/PretendardVariable.subset.24.woff2 +0 -0
  175. package/dist/fonts/PretendardVariable.subset.25.woff2 +0 -0
  176. package/dist/fonts/PretendardVariable.subset.26.woff2 +0 -0
  177. package/dist/fonts/PretendardVariable.subset.27.woff2 +0 -0
  178. package/dist/fonts/PretendardVariable.subset.28.woff2 +0 -0
  179. package/dist/fonts/PretendardVariable.subset.29.woff2 +0 -0
  180. package/dist/fonts/PretendardVariable.subset.3.woff2 +0 -0
  181. package/dist/fonts/PretendardVariable.subset.30.woff2 +0 -0
  182. package/dist/fonts/PretendardVariable.subset.31.woff2 +0 -0
  183. package/dist/fonts/PretendardVariable.subset.32.woff2 +0 -0
  184. package/dist/fonts/PretendardVariable.subset.33.woff2 +0 -0
  185. package/dist/fonts/PretendardVariable.subset.34.woff2 +0 -0
  186. package/dist/fonts/PretendardVariable.subset.35.woff2 +0 -0
  187. package/dist/fonts/PretendardVariable.subset.36.woff2 +0 -0
  188. package/dist/fonts/PretendardVariable.subset.37.woff2 +0 -0
  189. package/dist/fonts/PretendardVariable.subset.38.woff2 +0 -0
  190. package/dist/fonts/PretendardVariable.subset.39.woff2 +0 -0
  191. package/dist/fonts/PretendardVariable.subset.4.woff2 +0 -0
  192. package/dist/fonts/PretendardVariable.subset.40.woff2 +0 -0
  193. package/dist/fonts/PretendardVariable.subset.41.woff2 +0 -0
  194. package/dist/fonts/PretendardVariable.subset.42.woff2 +0 -0
  195. package/dist/fonts/PretendardVariable.subset.43.woff2 +0 -0
  196. package/dist/fonts/PretendardVariable.subset.44.woff2 +0 -0
  197. package/dist/fonts/PretendardVariable.subset.45.woff2 +0 -0
  198. package/dist/fonts/PretendardVariable.subset.46.woff2 +0 -0
  199. package/dist/fonts/PretendardVariable.subset.47.woff2 +0 -0
  200. package/dist/fonts/PretendardVariable.subset.48.woff2 +0 -0
  201. package/dist/fonts/PretendardVariable.subset.49.woff2 +0 -0
  202. package/dist/fonts/PretendardVariable.subset.5.woff2 +0 -0
  203. package/dist/fonts/PretendardVariable.subset.50.woff2 +0 -0
  204. package/dist/fonts/PretendardVariable.subset.51.woff2 +0 -0
  205. package/dist/fonts/PretendardVariable.subset.52.woff2 +0 -0
  206. package/dist/fonts/PretendardVariable.subset.53.woff2 +0 -0
  207. package/dist/fonts/PretendardVariable.subset.54.woff2 +0 -0
  208. package/dist/fonts/PretendardVariable.subset.55.woff2 +0 -0
  209. package/dist/fonts/PretendardVariable.subset.56.woff2 +0 -0
  210. package/dist/fonts/PretendardVariable.subset.57.woff2 +0 -0
  211. package/dist/fonts/PretendardVariable.subset.58.woff2 +0 -0
  212. package/dist/fonts/PretendardVariable.subset.59.woff2 +0 -0
  213. package/dist/fonts/PretendardVariable.subset.6.woff2 +0 -0
  214. package/dist/fonts/PretendardVariable.subset.60.woff2 +0 -0
  215. package/dist/fonts/PretendardVariable.subset.61.woff2 +0 -0
  216. package/dist/fonts/PretendardVariable.subset.62.woff2 +0 -0
  217. package/dist/fonts/PretendardVariable.subset.63.woff2 +0 -0
  218. package/dist/fonts/PretendardVariable.subset.64.woff2 +0 -0
  219. package/dist/fonts/PretendardVariable.subset.65.woff2 +0 -0
  220. package/dist/fonts/PretendardVariable.subset.66.woff2 +0 -0
  221. package/dist/fonts/PretendardVariable.subset.67.woff2 +0 -0
  222. package/dist/fonts/PretendardVariable.subset.68.woff2 +0 -0
  223. package/dist/fonts/PretendardVariable.subset.69.woff2 +0 -0
  224. package/dist/fonts/PretendardVariable.subset.7.woff2 +0 -0
  225. package/dist/fonts/PretendardVariable.subset.70.woff2 +0 -0
  226. package/dist/fonts/PretendardVariable.subset.71.woff2 +0 -0
  227. package/dist/fonts/PretendardVariable.subset.72.woff2 +0 -0
  228. package/dist/fonts/PretendardVariable.subset.73.woff2 +0 -0
  229. package/dist/fonts/PretendardVariable.subset.74.woff2 +0 -0
  230. package/dist/fonts/PretendardVariable.subset.75.woff2 +0 -0
  231. package/dist/fonts/PretendardVariable.subset.76.woff2 +0 -0
  232. package/dist/fonts/PretendardVariable.subset.77.woff2 +0 -0
  233. package/dist/fonts/PretendardVariable.subset.78.woff2 +0 -0
  234. package/dist/fonts/PretendardVariable.subset.79.woff2 +0 -0
  235. package/dist/fonts/PretendardVariable.subset.8.woff2 +0 -0
  236. package/dist/fonts/PretendardVariable.subset.80.woff2 +0 -0
  237. package/dist/fonts/PretendardVariable.subset.81.woff2 +0 -0
  238. package/dist/fonts/PretendardVariable.subset.82.woff2 +0 -0
  239. package/dist/fonts/PretendardVariable.subset.83.woff2 +0 -0
  240. package/dist/fonts/PretendardVariable.subset.84.woff2 +0 -0
  241. package/dist/fonts/PretendardVariable.subset.85.woff2 +0 -0
  242. package/dist/fonts/PretendardVariable.subset.86.woff2 +0 -0
  243. package/dist/fonts/PretendardVariable.subset.87.woff2 +0 -0
  244. package/dist/fonts/PretendardVariable.subset.88.woff2 +0 -0
  245. package/dist/fonts/PretendardVariable.subset.89.woff2 +0 -0
  246. package/dist/fonts/PretendardVariable.subset.9.woff2 +0 -0
  247. package/dist/fonts/PretendardVariable.subset.90.woff2 +0 -0
  248. package/dist/fonts/PretendardVariable.subset.91.woff2 +0 -0
  249. package/dist/fonts.css +2018 -0
  250. package/dist/index.d.ts +1 -0
  251. package/dist/index.js +75 -5779
  252. package/dist/lib/icons.js +225 -0
  253. package/dist/lib/size.d.ts +8 -0
  254. package/dist/lib/use-dialog-a11y.d.ts +2 -0
  255. package/dist/lib/use-dialog-a11y.js +50 -0
  256. package/dist/lib/utils.js +16 -0
  257. package/dist/style.css +1 -1
  258. package/dist/tokens/pyler-light.js +134 -0
  259. package/dist/tokens/typography.js +84 -0
  260. package/package.json +22 -5
  261. package/pyler-tailwind-colors.cjs +4 -0
  262. package/dist/index.css.d.ts +0 -0
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ import { jsxs as x, jsx as o } from "react/jsx-runtime";
3
+ import { XIcon as b } from "../../lib/icons.js";
4
+ import { cn as n } from "../../lib/utils.js";
5
+ import * as f from "react";
6
+ const h = f.forwardRef(
7
+ ({ size: l = "md", selected: i = !1, disabled: e = !1, onRemove: a, onClick: r, children: p, className: d }, c) => {
8
+ const s = l === "md", t = !!a, u = r ? "button" : "span";
9
+ return /* @__PURE__ */ x(
10
+ "div",
11
+ {
12
+ ref: c,
13
+ className: n(
14
+ "inline-flex items-center border rounded-[4px] bg-ds-background-default select-none transition-colors",
15
+ // 좌우 여백은 컨테이너가 아니라 본문(클릭 대상)이 갖는다.
16
+ // 컨테이너에 두면 여백 영역이 클릭되지 않는 죽은 공간이 된다.
17
+ s ? t ? "h-8 pr-1" : "h-8" : t ? "h-[26px] pr-0.5" : "h-[26px]",
18
+ s ? "text-body-3-r" : "text-body-4-r",
19
+ e ? "border-ds-line-normal text-ds-text-disabled cursor-not-allowed" : i ? "border-ds-primary-blue-normal text-ds-text-strong cursor-pointer" : "border-ds-line-normal text-ds-text-strong cursor-pointer hover:border-ds-line-strong",
20
+ d
21
+ ),
22
+ children: [
23
+ /* @__PURE__ */ o(
24
+ u,
25
+ {
26
+ ...r ? {
27
+ type: "button",
28
+ disabled: e,
29
+ "aria-pressed": i,
30
+ onClick: r
31
+ } : {},
32
+ className: n(
33
+ "inline-flex h-full items-center whitespace-nowrap bg-transparent",
34
+ // 컨테이너에서 옮겨온 여백 — 칩 전체가 클릭 대상이 되도록 한다
35
+ s ? t ? "pl-2" : "px-2" : t ? "pl-1.5" : "px-1.5",
36
+ r && !e && "cursor-pointer",
37
+ r && "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ds-primary-blue-normal rounded-[3px]"
38
+ ),
39
+ children: p
40
+ }
41
+ ),
42
+ t && /* @__PURE__ */ o(
43
+ "button",
44
+ {
45
+ type: "button",
46
+ "aria-label": "제거",
47
+ disabled: e,
48
+ onClick: (m) => {
49
+ m.stopPropagation(), a();
50
+ },
51
+ className: n(
52
+ "inline-flex items-center justify-center shrink-0",
53
+ e ? "text-ds-text-disabled cursor-not-allowed" : "text-ds-text-strong"
54
+ ),
55
+ children: /* @__PURE__ */ o(b, { className: "size-5" })
56
+ }
57
+ )
58
+ ]
59
+ }
60
+ );
61
+ }
62
+ );
63
+ h.displayName = "Chip";
64
+ export {
65
+ h as Chip
66
+ };
@@ -1,3 +1,4 @@
1
+ import { DsSize } from '../../lib/size';
1
2
  import * as React from "react";
2
3
  export type DropdownOption = {
3
4
  label: string;
@@ -24,8 +25,8 @@ export interface DropdownProps {
24
25
  showLabel?: boolean;
25
26
  /** 필수 입력 표시(*) */
26
27
  require?: boolean;
27
- /** 크기. 기본값: "large" */
28
- size?: "large" | "medium" | "small";
28
+ /** 크기. 기본값: "lg" */
29
+ size?: Extract<DsSize, "lg" | "md" | "sm">;
29
30
  disabled?: boolean;
30
31
  readOnly?: boolean;
31
32
  /** 에러 메시지. 표시 시 필드에 빨간 테두리 적용 */
@@ -47,6 +48,11 @@ export interface DropdownProps {
47
48
  /** 외부 컨테이너 className */
48
49
  wrapperClassName?: string;
49
50
  className?: string;
51
+ /**
52
+ * 라벨을 표시하지 않을 때(`showLabel={false}` 또는 `label` 미지정) 접근 가능한
53
+ * 이름을 지정한다. 라벨이 있으면 그쪽이 우선한다.
54
+ */
55
+ "aria-label"?: string;
50
56
  }
51
57
  declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;
52
58
  export { Dropdown };
@@ -0,0 +1,256 @@
1
+ "use client";
2
+ import { jsxs as u, jsx as r } from "react/jsx-runtime";
3
+ import { DropdownArrowIcon as _, SelectCheckIcon as C, CheckboxCheckedIcon as V, CheckboxUncheckedIcon as ee, RadioCheckedIcon as te, RadioUncheckedIcon as re } from "../../lib/icons.js";
4
+ import { cn as m } from "../../lib/utils.js";
5
+ import * as a from "react";
6
+ import { Button as q } from "./button.js";
7
+ const k = {
8
+ lg: {
9
+ trigger: "h-11 pl-3 pr-2 gap-1.5",
10
+ option: "h-11 pl-3 pr-2",
11
+ text: "text-body-2-r"
12
+ },
13
+ md: {
14
+ trigger: "h-9 pl-3 pr-2 gap-1.5",
15
+ option: "h-9 pl-3 pr-2",
16
+ text: "text-body-3-r"
17
+ },
18
+ sm: {
19
+ trigger: "h-8 pl-3 pr-2 gap-1.5",
20
+ option: "h-8 pl-3 pr-2",
21
+ text: "text-body-3-r"
22
+ }
23
+ }, se = a.forwardRef(
24
+ ({
25
+ type: o = "default",
26
+ options: d,
27
+ value: A,
28
+ onValueChange: w,
29
+ values: n,
30
+ onValuesChange: N,
31
+ placeholder: L = "선택해주세요",
32
+ label: g,
33
+ showLabel: v = !0,
34
+ require: M,
35
+ size: h = "lg",
36
+ disabled: x,
37
+ readOnly: y,
38
+ error: b,
39
+ hint: I,
40
+ leftIcon: O,
41
+ showButtons: z,
42
+ cancelLabel: B = "취소",
43
+ confirmLabel: H = "확인",
44
+ onCancel: R,
45
+ onConfirm: S,
46
+ wrapperClassName: F,
47
+ className: G,
48
+ "aria-label": J
49
+ }, P) => {
50
+ const [s, i] = a.useState(!1), [c, D] = a.useState(-1), E = a.useRef(null), U = a.useRef(null), K = a.useRef(null), f = a.useId(), j = (e) => `${f}-option-${e}`;
51
+ a.useEffect(() => {
52
+ const e = (t) => {
53
+ E.current && !E.current.contains(t.target) && i(!1);
54
+ };
55
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
56
+ }, []), a.useEffect(() => {
57
+ s || D(-1);
58
+ }, [s]), a.useEffect(() => {
59
+ var e, t;
60
+ !s || c < 0 || (t = (e = U.current) == null ? void 0 : e.querySelector(`#${CSS.escape(j(c))}`)) == null || t.scrollIntoView({ block: "nearest" });
61
+ }, [s, c]);
62
+ const Q = (e) => o === "checkbox" ? (n == null ? void 0 : n.includes(e)) ?? !1 : e === A, $ = d.find((e) => e.value === A), W = () => o === "checkbox" ? !n || n.length === 0 ? L : d.filter((t) => n.includes(t.value)).map((t) => t.label).join(", ") : $ ? $.label : L, X = () => {
63
+ x || y || i((e) => !e);
64
+ }, T = (e) => {
65
+ if (o === "checkbox") {
66
+ const t = n ?? [], l = t.includes(e) ? t.filter((p) => p !== e) : [...t, e];
67
+ N == null || N(l);
68
+ } else
69
+ w == null || w(e), i(!1);
70
+ }, Y = o === "checkbox" ? ((n == null ? void 0 : n.length) ?? 0) > 0 : !!$, Z = (e) => {
71
+ var l;
72
+ if (x || y) return;
73
+ const t = (p) => {
74
+ e.preventDefault(), s || i(!0), D(p);
75
+ };
76
+ switch (e.key) {
77
+ case "ArrowDown":
78
+ return t(s ? Math.min(c + 1, d.length - 1) : 0);
79
+ case "ArrowUp":
80
+ return t(s ? Math.max(c - 1, 0) : d.length - 1);
81
+ case "Home":
82
+ return s ? t(0) : void 0;
83
+ case "End":
84
+ return s ? t(d.length - 1) : void 0;
85
+ case "Enter":
86
+ case " ":
87
+ e.preventDefault(), s ? c >= 0 && T(d[c].value) : i(!0);
88
+ return;
89
+ case "Escape":
90
+ s && (e.preventDefault(), i(!1), (l = K.current) == null || l.focus());
91
+ return;
92
+ case "Tab":
93
+ i(!1);
94
+ return;
95
+ default:
96
+ return;
97
+ }
98
+ };
99
+ return /* @__PURE__ */ u("div", { ref: P, className: m("flex flex-col gap-2", F), children: [
100
+ v && g && /* @__PURE__ */ u("div", { className: "flex items-start gap-0.5 whitespace-nowrap", children: [
101
+ /* @__PURE__ */ r("span", { id: `${f}-label`, className: "text-body-2-r text-ds-text-strong", children: g }),
102
+ M && /* @__PURE__ */ r("span", { "aria-hidden": "true", className: "text-body-2-r text-ds-primary-red-normal", children: "*" })
103
+ ] }),
104
+ /* @__PURE__ */ u("div", { ref: E, className: "relative", children: [
105
+ /* @__PURE__ */ u(
106
+ "button",
107
+ {
108
+ ref: K,
109
+ type: "button",
110
+ role: "combobox",
111
+ "aria-expanded": s,
112
+ "aria-haspopup": "listbox",
113
+ "aria-controls": s ? f : void 0,
114
+ "aria-activedescendant": s && c >= 0 ? j(c) : void 0,
115
+ "aria-labelledby": v && g ? `${f}-label` : void 0,
116
+ "aria-label": v && g ? void 0 : J,
117
+ "aria-invalid": b ? !0 : void 0,
118
+ "aria-describedby": b || I ? `${f}-description` : void 0,
119
+ "aria-required": M || void 0,
120
+ disabled: x,
121
+ onClick: X,
122
+ onKeyDown: Z,
123
+ className: m(
124
+ "flex items-center w-full rounded-lg border transition-colors",
125
+ x ? "bg-ds-surface-strong border-ds-line-normal cursor-not-allowed" : y ? "bg-ds-surface-normal border-ds-line-normal cursor-default" : b ? "bg-ds-background-default border-ds-primary-red-normal hover:bg-ds-surface-normal" : s ? "bg-ds-background-default border-ds-primary-blue-normal" : "bg-ds-background-default border-ds-line-normal hover:bg-ds-surface-normal hover:border-ds-line-strong",
126
+ k[h].trigger,
127
+ G
128
+ ),
129
+ children: [
130
+ O && /* @__PURE__ */ r("span", { className: "shrink-0 flex items-center justify-center text-ds-icon-normal", children: O }),
131
+ /* @__PURE__ */ r(
132
+ "span",
133
+ {
134
+ className: m(
135
+ "flex-1 min-w-0 text-left truncate font-sans",
136
+ k[h].text,
137
+ Y ? "text-ds-text-strong" : x ? "text-ds-text-disabled" : "text-ds-text-normal"
138
+ ),
139
+ children: W()
140
+ }
141
+ ),
142
+ /* @__PURE__ */ r(
143
+ "span",
144
+ {
145
+ className: m(
146
+ "shrink-0 flex items-center justify-center transition-transform",
147
+ s && "rotate-180",
148
+ x ? "text-ds-text-disabled" : "text-ds-text-normal"
149
+ ),
150
+ children: /* @__PURE__ */ r(_, {})
151
+ }
152
+ )
153
+ ]
154
+ }
155
+ ),
156
+ s && /* @__PURE__ */ u(
157
+ "ul",
158
+ {
159
+ ref: U,
160
+ id: f,
161
+ role: "listbox",
162
+ "aria-multiselectable": o === "checkbox" ? !0 : void 0,
163
+ className: "absolute top-full left-0 z-50 mt-1 min-w-full w-max max-w-sm bg-ds-background-default border border-ds-line-normal rounded-lg p-1 shadow-ds-default",
164
+ children: [
165
+ d.map((e, t) => {
166
+ const l = Q(e.value), p = t === c;
167
+ return (
168
+ // 키보드 조작은 aria-activedescendant 패턴에 따라 combobox 트리거의
169
+ // onKeyDown이 전담한다(옵션은 포커스를 받지 않는 것이 WAI-ARIA 권고).
170
+ // 이 규칙은 그 패턴을 인식하지 못하므로 해당 줄만 해제한다.
171
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events
172
+ /* @__PURE__ */ u(
173
+ "li",
174
+ {
175
+ id: j(t),
176
+ role: "option",
177
+ "aria-selected": l,
178
+ onClick: () => T(e.value),
179
+ onMouseEnter: () => D(t),
180
+ className: m(
181
+ "flex items-center rounded-lg cursor-pointer gap-1.5 transition-colors",
182
+ k[h].option,
183
+ l ? "bg-ds-surface-normal" : "bg-ds-background-default hover:bg-ds-surface-normal",
184
+ // 키보드 이동 위치 표시 (마우스 hover와 구분되도록 링으로)
185
+ p && "ring-1 ring-inset ring-ds-primary-blue-normal"
186
+ ),
187
+ children: [
188
+ /* @__PURE__ */ r(
189
+ "span",
190
+ {
191
+ className: m(
192
+ "flex-1 min-w-0 truncate font-sans",
193
+ k[h].text,
194
+ "text-ds-text-strong"
195
+ ),
196
+ children: e.label
197
+ }
198
+ ),
199
+ o === "default" && l && /* @__PURE__ */ r("span", { className: "shrink-0 flex items-center justify-center text-ds-text-strong", children: /* @__PURE__ */ r(C, {}) }),
200
+ o === "checkbox" && /* @__PURE__ */ r("span", { className: "shrink-0 flex items-center justify-center", children: l ? /* @__PURE__ */ r(V, {}) : /* @__PURE__ */ r(ee, {}) }),
201
+ o === "radio" && /* @__PURE__ */ r("span", { className: "shrink-0 flex items-center justify-center", children: l ? /* @__PURE__ */ r(te, {}) : /* @__PURE__ */ r(re, {}) })
202
+ ]
203
+ },
204
+ e.value
205
+ )
206
+ );
207
+ }),
208
+ z && /* @__PURE__ */ u("li", { className: "flex gap-2 pt-1", children: [
209
+ /* @__PURE__ */ r(
210
+ q,
211
+ {
212
+ variant: "outlined",
213
+ size: "lg",
214
+ className: "flex-1",
215
+ onClick: () => {
216
+ R == null || R(), i(!1);
217
+ },
218
+ children: B
219
+ }
220
+ ),
221
+ /* @__PURE__ */ r(
222
+ q,
223
+ {
224
+ variant: "filled",
225
+ color: "blue",
226
+ size: "lg",
227
+ className: "flex-1",
228
+ onClick: () => {
229
+ S == null || S(), i(!1);
230
+ },
231
+ children: H
232
+ }
233
+ )
234
+ ] })
235
+ ]
236
+ }
237
+ )
238
+ ] }),
239
+ (b || I) && /* @__PURE__ */ r(
240
+ "p",
241
+ {
242
+ id: `${f}-description`,
243
+ className: m(
244
+ "text-body-4-r",
245
+ b ? "text-ds-primary-red-normal" : "text-ds-text-normal"
246
+ ),
247
+ children: b ?? I
248
+ }
249
+ )
250
+ ] });
251
+ }
252
+ );
253
+ se.displayName = "Dropdown";
254
+ export {
255
+ se as Dropdown
256
+ };
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ import { cn as m } from "../../lib/utils.js";
4
+ import { Slot as l } from "@radix-ui/react-slot";
5
+ import { cva as p } from "class-variance-authority";
6
+ import * as c from "react";
7
+ const f = p(
8
+ "text-foreground",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ "title-1-sb": "text-title-1-sb",
13
+ "title-1-m": "text-title-1-m",
14
+ "title-2-sb": "text-title-2-sb"
15
+ },
16
+ as: {
17
+ h1: "",
18
+ h2: "",
19
+ h3: "",
20
+ h4: "",
21
+ h5: "",
22
+ h6: "",
23
+ div: "",
24
+ span: "",
25
+ p: ""
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ variant: "title-1-sb",
30
+ as: "h1"
31
+ }
32
+ }
33
+ ), h = c.forwardRef(
34
+ ({ className: e, variant: a, as: i, asChild: o, ...r }, s) => {
35
+ const t = i || "h1";
36
+ return /* @__PURE__ */ n(
37
+ o ? l : t,
38
+ {
39
+ className: m(f({ variant: a, as: t, className: e })),
40
+ ref: s,
41
+ ...r
42
+ }
43
+ );
44
+ }
45
+ );
46
+ h.displayName = "Headline";
47
+ export {
48
+ h as Headline,
49
+ f as headlineVariants
50
+ };
@@ -1,3 +1,4 @@
1
+ import { DsSize } from '../../lib/size';
1
2
  import * as React from "react";
2
3
  export interface InputFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
3
4
  /** 라벨 텍스트 */
@@ -14,8 +15,8 @@ export interface InputFieldProps extends Omit<React.InputHTMLAttributes<HTMLInpu
14
15
  error?: string;
15
16
  /** 우측 아이콘. type="password"이면 기본 비밀번호 토글 아이콘 */
16
17
  rightIcon?: React.ReactNode;
17
- /** 크기. 기본값: "large" */
18
- size?: "large" | "medium" | "small";
18
+ /** 크기. 기본값: "lg" */
19
+ size?: Extract<DsSize, "lg" | "md" | "sm">;
19
20
  /** 외부 컨테이너 className */
20
21
  wrapperClassName?: string;
21
22
  }
@@ -0,0 +1,129 @@
1
+ "use client";
2
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
3
+ import { EyeOnIcon as E, EyeOffIcon as P } from "../../lib/icons.js";
4
+ import { cn as r } from "../../lib/utils.js";
5
+ import * as o from "react";
6
+ const I = {
7
+ lg: {
8
+ container: "h-11 px-3 gap-1.5",
9
+ text: "text-body-2-r"
10
+ },
11
+ md: {
12
+ container: "h-9 px-3 py-2 gap-1.5",
13
+ text: "text-body-3-r"
14
+ },
15
+ sm: {
16
+ container: "h-8 px-3 py-1.5 gap-1.5",
17
+ text: "text-body-3-r"
18
+ }
19
+ }, V = o.forwardRef(
20
+ ({
21
+ label: d,
22
+ showLabel: c = !0,
23
+ require: l,
24
+ message: n,
25
+ hint: s,
26
+ error: t,
27
+ rightIcon: x,
28
+ size: a = "lg",
29
+ wrapperClassName: F,
30
+ className: j,
31
+ disabled: b,
32
+ readOnly: f,
33
+ type: u,
34
+ ...h
35
+ }, k) => {
36
+ const [m, R] = o.useState(!1), g = u === "password", T = g ? m ? "text" : "password" : u, p = o.useId(), y = h.id ?? p, N = `${p}-message`, v = `${p}-description`, B = [n ? N : null, t || s ? v : null].filter(Boolean).join(" ") || void 0, w = x ?? (g ? /* @__PURE__ */ e(
37
+ "button",
38
+ {
39
+ type: "button",
40
+ onClick: () => R((C) => !C),
41
+ className: "flex items-center justify-center text-ds-text-normal",
42
+ tabIndex: -1,
43
+ "aria-label": m ? "비밀번호 숨기기" : "비밀번호 보기",
44
+ children: m ? /* @__PURE__ */ e(E, {}) : /* @__PURE__ */ e(P, {})
45
+ }
46
+ ) : null);
47
+ return /* @__PURE__ */ i("div", { className: r("flex flex-col gap-2", F), children: [
48
+ c && d && /* @__PURE__ */ i("div", { className: "flex items-start gap-0.5 whitespace-nowrap", children: [
49
+ /* @__PURE__ */ e("label", { htmlFor: y, className: "text-body-2-r text-ds-text-strong", children: d }),
50
+ l && /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "text-body-2-r text-ds-primary-red-normal", children: "*" })
51
+ ] }),
52
+ n && /* @__PURE__ */ e("p", { id: N, className: "text-body-4-r text-ds-text-strong", children: n }),
53
+ /* @__PURE__ */ i(
54
+ "div",
55
+ {
56
+ className: r(
57
+ "flex items-center overflow-hidden bg-ds-background-default border rounded-lg transition-colors",
58
+ t ? "border-ds-primary-red-normal" : "border-ds-line-normal hover:border-ds-line-strong focus-within:border-ds-primary-blue-normal",
59
+ (b || f) && "bg-ds-surface-normal",
60
+ I[a].container
61
+ ),
62
+ children: [
63
+ /* @__PURE__ */ e(
64
+ "input",
65
+ {
66
+ ref: k,
67
+ id: y,
68
+ type: T,
69
+ "aria-invalid": t ? !0 : void 0,
70
+ "aria-describedby": B,
71
+ "aria-required": l || void 0,
72
+ className: r(
73
+ "flex-1 min-w-0 bg-transparent outline-none font-sans",
74
+ "text-ds-text-strong placeholder:text-ds-text-normal",
75
+ "disabled:text-ds-text-disabled",
76
+ I[a].text,
77
+ j
78
+ ),
79
+ disabled: b,
80
+ readOnly: f,
81
+ ...h
82
+ }
83
+ ),
84
+ w && /* @__PURE__ */ e("span", { className: "shrink-0 text-ds-text-normal flex items-center", children: w })
85
+ ]
86
+ }
87
+ ),
88
+ (t || s) && /* @__PURE__ */ e(
89
+ "p",
90
+ {
91
+ id: v,
92
+ className: r(
93
+ "text-body-4-r",
94
+ t ? "text-ds-primary-red-normal" : "text-ds-text-normal"
95
+ ),
96
+ children: t ?? s
97
+ }
98
+ )
99
+ ] });
100
+ }
101
+ );
102
+ V.displayName = "InputField";
103
+ const $ = o.forwardRef(
104
+ ({ label: d, showLabel: c = !0, wrapperClassName: l, className: n, ...s }, t) => {
105
+ const x = o.useId(), a = s.id ?? x;
106
+ return /* @__PURE__ */ i("div", { className: r("flex flex-col gap-2", l), children: [
107
+ c && d && /* @__PURE__ */ e("label", { htmlFor: a, className: "text-body-2-r text-ds-text-strong", children: d }),
108
+ /* @__PURE__ */ e("div", { className: "overflow-hidden border border-ds-line-normal bg-ds-background-default rounded-lg p-3 hover:border-ds-line-strong focus-within:border-ds-primary-blue-normal transition-colors", children: /* @__PURE__ */ e(
109
+ "textarea",
110
+ {
111
+ ref: t,
112
+ id: a,
113
+ className: r(
114
+ "w-full min-h-[114px] resize-none bg-transparent outline-none font-sans",
115
+ "text-body-3-r text-ds-text-strong placeholder:text-ds-text-normal",
116
+ "disabled:text-ds-text-disabled",
117
+ n
118
+ ),
119
+ ...s
120
+ }
121
+ ) })
122
+ ] });
123
+ }
124
+ );
125
+ $.displayName = "TextField";
126
+ export {
127
+ V as InputField,
128
+ $ as TextField
129
+ };
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsx as s } from "react/jsx-runtime";
3
+ import { cn as i } from "../../lib/utils.js";
4
+ import { Slot as m } from "@radix-ui/react-slot";
5
+ import { cva as p } from "class-variance-authority";
6
+ import * as b from "react";
7
+ const c = p(
8
+ "text-foreground leading-tight",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ "label-1-r": "text-label-1-r"
13
+ },
14
+ as: {
15
+ label: "",
16
+ span: "",
17
+ div: "",
18
+ p: ""
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ variant: "label-1-r",
23
+ as: "label"
24
+ }
25
+ }
26
+ ), f = b.forwardRef(
27
+ ({ className: t, variant: r, as: e, asChild: o, ...l }, n) => {
28
+ const a = e || "label";
29
+ return /* @__PURE__ */ s(
30
+ o ? m : a,
31
+ {
32
+ className: i(c({ variant: r, as: a, className: t })),
33
+ ref: n,
34
+ ...l
35
+ }
36
+ );
37
+ }
38
+ );
39
+ f.displayName = "Label";
40
+ export {
41
+ f as Label,
42
+ c as labelVariants
43
+ };
@@ -1,6 +1,7 @@
1
+ import { DsSize } from '../../lib/size';
1
2
  import * as React from "react";
2
3
  export interface LoadingBarProps {
3
- size?: "sm" | "md" | "lg" | "xl";
4
+ size?: Extract<DsSize, "sm" | "md" | "lg" | "xl">;
4
5
  label?: string;
5
6
  className?: string;
6
7
  }
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { jsxs as d, jsx as r } from "react/jsx-runtime";
3
+ import { cn as a } from "../../lib/utils.js";
4
+ import * as o from "react";
5
+ const l = {
6
+ xl: "size-[50px] rounded-[8px]",
7
+ lg: "size-[42px] rounded-[8px]",
8
+ md: "size-[38px] rounded-[8px]",
9
+ sm: "size-[34px] rounded-[4px]"
10
+ }, p = {
11
+ xl: "h-[50px] rounded-[8px] pl-[12px] pr-[18px]",
12
+ lg: "h-[42px] rounded-[8px] pl-[10px] pr-[14px]",
13
+ md: "h-[38px] rounded-[8px] pl-[8px] pr-[12px]"
14
+ };
15
+ function i({ size: e, className: n }) {
16
+ const t = a("animate-spin shrink-0", n);
17
+ return e === "sm" ? /* @__PURE__ */ d("svg", { className: t, width: "12", height: "12", viewBox: "0 0 10 10.0649", fill: "none", "aria-hidden": "true", children: [
18
+ /* @__PURE__ */ r("path", { opacity: "0.1", d: "M5 0C7.76132 0 9.99983 2.2403 10 5.00391C10 7.76766 7.76142 10.0088 5 10.0088C2.23858 10.0088 0 7.76766 0 5.00391C0.000166843 2.2403 2.23868 0 5 0ZM5 1.50098C3.06713 1.50098 1.5002 3.06946 1.5 5.00391C1.5 6.93853 3.06701 8.50683 5 8.50684C6.933 8.50684 8.5 6.93853 8.5 5.00391C8.4998 3.06945 6.93287 1.50098 5 1.50098Z", className: "fill-ds-text-strong" }),
19
+ /* @__PURE__ */ r("path", { d: "M8.00001 8.00681C6.75001 9.25786 5.00001 9.75829 3.00001 8.75744", className: "stroke-ds-primary-blue-normal", strokeWidth: "1.55", strokeLinecap: "round" })
20
+ ] }) : e === "xl" ? /* @__PURE__ */ d("svg", { className: t, width: "28", height: "28", viewBox: "0 0 23.333 23.7432", fill: "none", "aria-hidden": "true", children: [
21
+ /* @__PURE__ */ r("path", { opacity: "0.1", d: "M11.667 0C18.1102 0.000176413 23.333 5.22811 23.333 11.6768C23.3329 18.1253 18.1101 23.3524 11.667 23.3525C5.22376 23.3525 0.000138013 18.1254 0 11.6768C0 5.228 5.22367 0 11.667 0ZM11.667 3.50293C7.15667 3.50293 3.5 7.16263 3.5 11.6768C3.50005 16.1908 7.1567 19.8506 11.667 19.8506C16.1771 19.8504 19.833 16.1907 19.833 11.6768C19.833 7.16275 16.1772 3.50312 11.667 3.50293Z", className: "fill-ds-text-strong" }),
22
+ /* @__PURE__ */ r("path", { d: "M18.6666 18.6826C15.75 21.6017 11.6666 22.7694 6.99998 20.4341", className: "stroke-ds-primary-blue-normal", strokeWidth: "4.13333", strokeLinecap: "round" })
23
+ ] }) : /* @__PURE__ */ d("svg", { className: t, width: "20", height: "20", viewBox: "0 0 16.667 16.7749", fill: "none", "aria-hidden": "true", children: [
24
+ /* @__PURE__ */ r("path", { opacity: "0.1", d: "M8.33301 0C12.9354 0 16.667 3.73457 16.667 8.34082C16.6667 12.9469 12.9352 16.6807 8.33301 16.6807C3.73094 16.6805 0.000249233 12.9468 0 8.34082C0 3.73468 3.73078 0.0001759 8.33301 0ZM8.33301 2.50195C5.11149 2.50212 2.5 5.11655 2.5 8.34082C2.50019 11.5649 5.1116 14.1785 8.33301 14.1787C11.5546 14.1787 14.1668 11.565 14.167 8.34082C14.167 5.11644 11.5547 2.50195 8.33301 2.50195Z", className: "fill-ds-text-strong" }),
25
+ /* @__PURE__ */ r("path", { d: "M13.3333 13.3447C11.25 15.4298 8.33331 16.2638 4.99998 14.5957", className: "stroke-ds-primary-blue-normal", strokeWidth: "2.58333", strokeLinecap: "round" })
26
+ ] });
27
+ }
28
+ const x = o.forwardRef(
29
+ ({ size: e = "xl", label: n, className: t }, s) => !!n && e !== "sm" ? /* @__PURE__ */ d(
30
+ "div",
31
+ {
32
+ ref: s,
33
+ className: a(
34
+ "inline-flex items-center gap-[11px] border border-ds-line-normal bg-ds-background-default",
35
+ p[e],
36
+ t
37
+ ),
38
+ children: [
39
+ /* @__PURE__ */ r(i, { size: e }),
40
+ /* @__PURE__ */ r("span", { className: a(
41
+ "shrink-0 text-ds-text-strong whitespace-nowrap",
42
+ e === "xl" && "text-body-2-r",
43
+ e === "lg" && "text-body-3-r",
44
+ e === "md" && "text-body-4-r"
45
+ ), children: n })
46
+ ]
47
+ }
48
+ ) : /* @__PURE__ */ r(
49
+ "div",
50
+ {
51
+ ref: s,
52
+ className: a(
53
+ "inline-flex items-center justify-center border border-ds-line-normal bg-ds-background-default",
54
+ l[e],
55
+ t
56
+ ),
57
+ children: /* @__PURE__ */ r(i, { size: e })
58
+ }
59
+ )
60
+ );
61
+ x.displayName = "LoadingBar";
62
+ export {
63
+ x as LoadingBar
64
+ };