@psnext/design-system 2.3.0 → 2.4.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 (488) hide show
  1. package/DESIGN.md +466 -4
  2. package/README.md +3 -3
  3. package/SKILL.md +83 -5
  4. package/bin/install-agent-skill.mjs +39 -7
  5. package/dist/Header.cjs +151 -20
  6. package/dist/Header.cjs.map +1 -1
  7. package/dist/Header.js +151 -20
  8. package/dist/Header.js.map +1 -1
  9. package/dist/Icon.cjs +40 -8
  10. package/dist/Icon.cjs.map +1 -1
  11. package/dist/Icon.js +40 -8
  12. package/dist/Icon.js.map +1 -1
  13. package/dist/MultiColumn.cjs +354 -0
  14. package/dist/MultiColumn.cjs.map +1 -0
  15. package/dist/MultiColumn.js +335 -0
  16. package/dist/MultiColumn.js.map +1 -0
  17. package/dist/Sidebar.cjs +4 -3
  18. package/dist/Sidebar.cjs.map +1 -1
  19. package/dist/Sidebar.js +4 -3
  20. package/dist/Sidebar.js.map +1 -1
  21. package/dist/index.cjs +5 -1
  22. package/dist/index.d.cts +5 -5
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/index.d.ts +5 -5
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -2
  27. package/dist/index10.d.cts +6 -6
  28. package/dist/index10.d.ts +6 -6
  29. package/dist/index11.d.cts +3 -3
  30. package/dist/index11.d.cts.map +1 -1
  31. package/dist/index11.d.ts +3 -3
  32. package/dist/index11.d.ts.map +1 -1
  33. package/dist/index12.d.cts +12 -12
  34. package/dist/index12.d.cts.map +1 -1
  35. package/dist/index12.d.ts +13 -13
  36. package/dist/index13.d.cts +6 -6
  37. package/dist/index13.d.cts.map +1 -1
  38. package/dist/index13.d.ts +6 -6
  39. package/dist/index13.d.ts.map +1 -1
  40. package/dist/index14.d.cts +5 -5
  41. package/dist/index14.d.ts +5 -5
  42. package/dist/index15.d.cts +3 -3
  43. package/dist/index15.d.cts.map +1 -1
  44. package/dist/index15.d.ts +3 -3
  45. package/dist/index15.d.ts.map +1 -1
  46. package/dist/index16.d.cts +2 -2
  47. package/dist/index16.d.cts.map +1 -1
  48. package/dist/index16.d.ts +2 -2
  49. package/dist/index16.d.ts.map +1 -1
  50. package/dist/index17.d.cts +4 -4
  51. package/dist/index17.d.cts.map +1 -1
  52. package/dist/index17.d.ts +4 -4
  53. package/dist/index18.d.cts +11 -11
  54. package/dist/index18.d.cts.map +1 -1
  55. package/dist/index18.d.ts +11 -11
  56. package/dist/index18.d.ts.map +1 -1
  57. package/dist/index19.d.cts +10 -10
  58. package/dist/index19.d.cts.map +1 -1
  59. package/dist/index19.d.ts +10 -10
  60. package/dist/index19.d.ts.map +1 -1
  61. package/dist/index2.d.cts +8 -8
  62. package/dist/index2.d.cts.map +1 -1
  63. package/dist/index2.d.ts +9 -9
  64. package/dist/index2.d.ts.map +1 -1
  65. package/dist/index20.d.cts +16 -16
  66. package/dist/index20.d.cts.map +1 -1
  67. package/dist/index20.d.ts +16 -16
  68. package/dist/index20.d.ts.map +1 -1
  69. package/dist/index21.d.cts +4 -4
  70. package/dist/index21.d.cts.map +1 -1
  71. package/dist/index21.d.ts +4 -4
  72. package/dist/index21.d.ts.map +1 -1
  73. package/dist/index22.d.cts +11 -11
  74. package/dist/index22.d.ts +11 -11
  75. package/dist/index23.d.cts +16 -16
  76. package/dist/index23.d.cts.map +1 -1
  77. package/dist/index23.d.ts +16 -16
  78. package/dist/index23.d.ts.map +1 -1
  79. package/dist/index24.d.cts +10 -10
  80. package/dist/index24.d.cts.map +1 -1
  81. package/dist/index24.d.ts +11 -11
  82. package/dist/index24.d.ts.map +1 -1
  83. package/dist/index25.d.cts +2 -2
  84. package/dist/index25.d.ts +2 -2
  85. package/dist/index25.d.ts.map +1 -1
  86. package/dist/index26.d.cts +13 -13
  87. package/dist/index26.d.cts.map +1 -1
  88. package/dist/index26.d.ts +14 -14
  89. package/dist/index26.d.ts.map +1 -1
  90. package/dist/index27.d.cts +7 -7
  91. package/dist/index27.d.cts.map +1 -1
  92. package/dist/index27.d.ts +7 -7
  93. package/dist/index27.d.ts.map +1 -1
  94. package/dist/index28.d.cts +6 -6
  95. package/dist/index28.d.cts.map +1 -1
  96. package/dist/index28.d.ts +5 -5
  97. package/dist/index28.d.ts.map +1 -1
  98. package/dist/index29.d.cts +4 -4
  99. package/dist/index29.d.ts +4 -4
  100. package/dist/index29.d.ts.map +1 -1
  101. package/dist/index3.d.cts +13 -13
  102. package/dist/index3.d.cts.map +1 -1
  103. package/dist/index3.d.ts +13 -13
  104. package/dist/index30.d.cts +41 -12
  105. package/dist/index30.d.cts.map +1 -1
  106. package/dist/index30.d.ts +42 -13
  107. package/dist/index30.d.ts.map +1 -1
  108. package/dist/index31.d.cts +5 -5
  109. package/dist/index31.d.cts.map +1 -1
  110. package/dist/index31.d.ts +6 -6
  111. package/dist/index31.d.ts.map +1 -1
  112. package/dist/index32.d.cts +5 -5
  113. package/dist/index32.d.cts.map +1 -1
  114. package/dist/index32.d.ts +6 -6
  115. package/dist/index33.d.cts +10 -10
  116. package/dist/index33.d.cts.map +1 -1
  117. package/dist/index33.d.ts +11 -11
  118. package/dist/index33.d.ts.map +1 -1
  119. package/dist/index34.d.cts +5 -5
  120. package/dist/index34.d.cts.map +1 -1
  121. package/dist/index34.d.ts +5 -5
  122. package/dist/index34.d.ts.map +1 -1
  123. package/dist/index35.d.cts +16 -16
  124. package/dist/index35.d.cts.map +1 -1
  125. package/dist/index35.d.ts +17 -17
  126. package/dist/index35.d.ts.map +1 -1
  127. package/dist/index36.d.cts +3 -3
  128. package/dist/index36.d.cts.map +1 -1
  129. package/dist/index36.d.ts +3 -3
  130. package/dist/index36.d.ts.map +1 -1
  131. package/dist/index37.d.cts +5 -5
  132. package/dist/index37.d.ts +3 -3
  133. package/dist/index38.d.cts +2 -2
  134. package/dist/index38.d.cts.map +1 -1
  135. package/dist/index38.d.ts +2 -2
  136. package/dist/index39.d.cts +17 -17
  137. package/dist/index39.d.cts.map +1 -1
  138. package/dist/index39.d.ts +17 -17
  139. package/dist/index39.d.ts.map +1 -1
  140. package/dist/index4.d.cts +2 -2
  141. package/dist/index4.d.ts +2 -2
  142. package/dist/index4.d.ts.map +1 -1
  143. package/dist/index40.d.cts +5 -5
  144. package/dist/index40.d.cts.map +1 -1
  145. package/dist/index40.d.ts +6 -6
  146. package/dist/index40.d.ts.map +1 -1
  147. package/dist/index41.d.cts +11 -11
  148. package/dist/index41.d.cts.map +1 -1
  149. package/dist/index41.d.ts +11 -11
  150. package/dist/index41.d.ts.map +1 -1
  151. package/dist/index42.d.cts +8 -8
  152. package/dist/index42.d.cts.map +1 -1
  153. package/dist/index42.d.ts +8 -8
  154. package/dist/index43.d.cts +9 -9
  155. package/dist/index43.d.cts.map +1 -1
  156. package/dist/index43.d.ts +9 -9
  157. package/dist/index43.d.ts.map +1 -1
  158. package/dist/index45.d.cts +8 -8
  159. package/dist/index45.d.cts.map +1 -1
  160. package/dist/index45.d.ts +8 -8
  161. package/dist/index45.d.ts.map +1 -1
  162. package/dist/index46.d.cts +2 -2
  163. package/dist/index46.d.cts.map +1 -1
  164. package/dist/index46.d.ts +2 -2
  165. package/dist/index46.d.ts.map +1 -1
  166. package/dist/index47.d.cts +4 -4
  167. package/dist/index47.d.cts.map +1 -1
  168. package/dist/index47.d.ts +4 -4
  169. package/dist/index47.d.ts.map +1 -1
  170. package/dist/index48.d.cts +4 -4
  171. package/dist/index48.d.cts.map +1 -1
  172. package/dist/index48.d.ts +4 -4
  173. package/dist/index48.d.ts.map +1 -1
  174. package/dist/index49.d.cts +3 -3
  175. package/dist/index49.d.ts +3 -3
  176. package/dist/index5.d.cts +7 -7
  177. package/dist/index5.d.ts +7 -7
  178. package/dist/index50.d.cts +11 -11
  179. package/dist/index50.d.cts.map +1 -1
  180. package/dist/index50.d.ts +11 -11
  181. package/dist/index50.d.ts.map +1 -1
  182. package/dist/index51.d.cts +9 -9
  183. package/dist/index51.d.cts.map +1 -1
  184. package/dist/index51.d.ts +9 -9
  185. package/dist/index51.d.ts.map +1 -1
  186. package/dist/index52.d.cts +5 -5
  187. package/dist/index52.d.ts +5 -5
  188. package/dist/index53.d.cts +27 -27
  189. package/dist/index53.d.cts.map +1 -1
  190. package/dist/index53.d.ts +28 -28
  191. package/dist/index53.d.ts.map +1 -1
  192. package/dist/index54.d.cts +5 -5
  193. package/dist/index54.d.ts +5 -5
  194. package/dist/index54.d.ts.map +1 -1
  195. package/dist/index55.d.cts +2 -2
  196. package/dist/index55.d.cts.map +1 -1
  197. package/dist/index55.d.ts +2 -2
  198. package/dist/index55.d.ts.map +1 -1
  199. package/dist/index56.d.cts +2 -2
  200. package/dist/index56.d.cts.map +1 -1
  201. package/dist/index56.d.ts +2 -2
  202. package/dist/index56.d.ts.map +1 -1
  203. package/dist/index57.d.cts +2 -2
  204. package/dist/index57.d.cts.map +1 -1
  205. package/dist/index57.d.ts +2 -2
  206. package/dist/index57.d.ts.map +1 -1
  207. package/dist/index58.d.cts +4 -4
  208. package/dist/index58.d.cts.map +1 -1
  209. package/dist/index58.d.ts +4 -4
  210. package/dist/index58.d.ts.map +1 -1
  211. package/dist/index59.d.cts +9 -9
  212. package/dist/index59.d.ts +9 -9
  213. package/dist/index59.d.ts.map +1 -1
  214. package/dist/index6.d.cts +5 -5
  215. package/dist/index6.d.cts.map +1 -1
  216. package/dist/index6.d.ts +6 -6
  217. package/dist/index60.d.cts +9 -9
  218. package/dist/index60.d.ts +9 -9
  219. package/dist/index60.d.ts.map +1 -1
  220. package/dist/index61.d.cts +8 -8
  221. package/dist/index61.d.cts.map +1 -1
  222. package/dist/index61.d.ts +7 -7
  223. package/dist/index61.d.ts.map +1 -1
  224. package/dist/index62.d.cts +4 -4
  225. package/dist/index62.d.cts.map +1 -1
  226. package/dist/index62.d.ts +5 -5
  227. package/dist/index63.d.cts +2 -2
  228. package/dist/index63.d.ts +2 -2
  229. package/dist/index64.d.cts +4 -4
  230. package/dist/index64.d.ts +7 -7
  231. package/dist/index64.d.ts.map +1 -1
  232. package/dist/index65.d.cts +3 -3
  233. package/dist/index65.d.ts +4 -4
  234. package/dist/index66.d.cts +4 -4
  235. package/dist/index66.d.ts +5 -5
  236. package/dist/index67.d.cts +83 -11
  237. package/dist/index67.d.cts.map +1 -1
  238. package/dist/index67.d.ts +83 -11
  239. package/dist/index67.d.ts.map +1 -1
  240. package/dist/index68.d.cts +12 -30
  241. package/dist/index68.d.cts.map +1 -1
  242. package/dist/index68.d.ts +12 -30
  243. package/dist/index68.d.ts.map +1 -1
  244. package/dist/index69.d.cts +28 -27
  245. package/dist/index69.d.cts.map +1 -1
  246. package/dist/index69.d.ts +29 -28
  247. package/dist/index69.d.ts.map +1 -1
  248. package/dist/index7.d.cts +8 -8
  249. package/dist/index7.d.cts.map +1 -1
  250. package/dist/index7.d.ts +8 -8
  251. package/dist/index7.d.ts.map +1 -1
  252. package/dist/index70.d.cts +33 -78
  253. package/dist/index70.d.cts.map +1 -1
  254. package/dist/index70.d.ts +33 -78
  255. package/dist/index70.d.ts.map +1 -1
  256. package/dist/index71.d.cts +77 -260
  257. package/dist/index71.d.cts.map +1 -1
  258. package/dist/index71.d.ts +77 -260
  259. package/dist/index71.d.ts.map +1 -1
  260. package/dist/index72.d.cts +278 -0
  261. package/dist/index72.d.cts.map +1 -0
  262. package/dist/index72.d.ts +278 -0
  263. package/dist/index72.d.ts.map +1 -0
  264. package/dist/index8.d.cts +4 -4
  265. package/dist/index8.d.cts.map +1 -1
  266. package/dist/index8.d.ts +5 -5
  267. package/dist/index9.d.cts +2 -2
  268. package/dist/index9.d.cts.map +1 -1
  269. package/dist/index9.d.ts +2 -2
  270. package/dist/index9.d.ts.map +1 -1
  271. package/dist/layouts/Container/index.cjs +2 -1
  272. package/dist/layouts/Container/index.cjs.map +1 -1
  273. package/dist/layouts/Container/index.js +1 -1
  274. package/dist/layouts/MultiColumn/index.cjs +5 -0
  275. package/dist/layouts/MultiColumn/index.d.cts +2 -0
  276. package/dist/layouts/MultiColumn/index.d.ts +2 -0
  277. package/dist/layouts/MultiColumn/index.js +2 -0
  278. package/dist/layouts/PageBackground/index.d.cts +1 -1
  279. package/dist/layouts/PageBackground/index.d.ts +1 -1
  280. package/dist/layouts/Stack/index.cjs +2 -1
  281. package/dist/layouts/Stack/index.cjs.map +1 -1
  282. package/dist/layouts/Stack/index.d.cts +1 -1
  283. package/dist/layouts/Stack/index.d.ts +1 -1
  284. package/dist/layouts/Stack/index.js +1 -1
  285. package/dist/layouts/TwoColumn/index.cjs +2 -1
  286. package/dist/layouts/TwoColumn/index.cjs.map +1 -1
  287. package/dist/layouts/TwoColumn/index.d.cts +1 -1
  288. package/dist/layouts/TwoColumn/index.d.ts +1 -1
  289. package/dist/layouts/TwoColumn/index.js +1 -1
  290. package/dist/layouts/index.cjs +4 -0
  291. package/dist/layouts/index.d.cts +5 -4
  292. package/dist/layouts/index.d.ts +5 -4
  293. package/dist/layouts/index.js +2 -1
  294. package/dist/patterns/DataTable/index.cjs +6 -2
  295. package/dist/patterns/DataTable/index.cjs.map +1 -1
  296. package/dist/patterns/DataTable/index.d.cts +3 -3
  297. package/dist/patterns/DataTable/index.d.cts.map +1 -1
  298. package/dist/patterns/DataTable/index.d.ts +3 -3
  299. package/dist/patterns/DataTable/index.d.ts.map +1 -1
  300. package/dist/patterns/DataTable/index.js +6 -2
  301. package/dist/patterns/DataTable/index.js.map +1 -1
  302. package/dist/patterns/Footer/index.d.cts +7 -7
  303. package/dist/patterns/Footer/index.d.cts.map +1 -1
  304. package/dist/patterns/Footer/index.d.ts +7 -7
  305. package/dist/patterns/Footer/index.d.ts.map +1 -1
  306. package/dist/patterns/Header/index.d.cts +1 -1
  307. package/dist/patterns/Header/index.d.ts +1 -1
  308. package/dist/patterns/MediaObject/index.cjs +1 -1
  309. package/dist/patterns/MediaObject/index.d.cts +11 -11
  310. package/dist/patterns/MediaObject/index.d.ts +12 -12
  311. package/dist/patterns/MediaObject/index.js +1 -1
  312. package/dist/patterns/NavRail/index.cjs +4 -2
  313. package/dist/patterns/NavRail/index.cjs.map +1 -1
  314. package/dist/patterns/NavRail/index.js +4 -2
  315. package/dist/patterns/NavRail/index.js.map +1 -1
  316. package/dist/patterns/SectionCard/index.d.cts +2 -2
  317. package/dist/patterns/SectionCard/index.d.ts +2 -2
  318. package/dist/patterns/SectionHeading/index.d.cts +2 -2
  319. package/dist/patterns/index.d.cts +1 -1
  320. package/dist/patterns/index.d.ts +1 -1
  321. package/dist/primitives/Accordion/index.cjs +6 -2
  322. package/dist/primitives/Accordion/index.cjs.map +1 -1
  323. package/dist/primitives/Accordion/index.js +6 -2
  324. package/dist/primitives/Accordion/index.js.map +1 -1
  325. package/dist/primitives/Alert/index.cjs +2 -1
  326. package/dist/primitives/Alert/index.cjs.map +1 -1
  327. package/dist/primitives/Alert/index.js +1 -1
  328. package/dist/primitives/AlertDialog/index.cjs +1 -1
  329. package/dist/primitives/AlertDialog/index.js +1 -1
  330. package/dist/primitives/AspectRatio/index.cjs +1 -1
  331. package/dist/primitives/AspectRatio/index.js +1 -1
  332. package/dist/primitives/Avatar/index.cjs +1 -1
  333. package/dist/primitives/Avatar/index.js +1 -1
  334. package/dist/primitives/Badge/index.cjs +3 -2
  335. package/dist/primitives/Badge/index.cjs.map +1 -1
  336. package/dist/primitives/Badge/index.js +2 -2
  337. package/dist/primitives/Breadcrumb/index.cjs +7 -3
  338. package/dist/primitives/Breadcrumb/index.cjs.map +1 -1
  339. package/dist/primitives/Breadcrumb/index.js +7 -3
  340. package/dist/primitives/Breadcrumb/index.js.map +1 -1
  341. package/dist/primitives/Button/index.cjs +3 -2
  342. package/dist/primitives/Button/index.cjs.map +1 -1
  343. package/dist/primitives/Button/index.js +2 -2
  344. package/dist/primitives/ButtonGroup/index.cjs +3 -2
  345. package/dist/primitives/ButtonGroup/index.cjs.map +1 -1
  346. package/dist/primitives/ButtonGroup/index.js +2 -2
  347. package/dist/primitives/Calendar/index.cjs +12 -11
  348. package/dist/primitives/Calendar/index.cjs.map +1 -1
  349. package/dist/primitives/Calendar/index.js +12 -11
  350. package/dist/primitives/Calendar/index.js.map +1 -1
  351. package/dist/primitives/Card/index.cjs +2 -1
  352. package/dist/primitives/Card/index.cjs.map +1 -1
  353. package/dist/primitives/Card/index.js +1 -1
  354. package/dist/primitives/Carousel/index.cjs +4 -3
  355. package/dist/primitives/Carousel/index.cjs.map +1 -1
  356. package/dist/primitives/Carousel/index.js +4 -3
  357. package/dist/primitives/Carousel/index.js.map +1 -1
  358. package/dist/primitives/Checkbox/index.cjs +9 -2
  359. package/dist/primitives/Checkbox/index.cjs.map +1 -1
  360. package/dist/primitives/Checkbox/index.js +9 -2
  361. package/dist/primitives/Checkbox/index.js.map +1 -1
  362. package/dist/primitives/CheckboxTree/index.cjs +6 -2
  363. package/dist/primitives/CheckboxTree/index.cjs.map +1 -1
  364. package/dist/primitives/CheckboxTree/index.js +6 -2
  365. package/dist/primitives/CheckboxTree/index.js.map +1 -1
  366. package/dist/primitives/Collapsible/index.cjs +1 -1
  367. package/dist/primitives/Collapsible/index.js +1 -1
  368. package/dist/primitives/Command/index.cjs +6 -2
  369. package/dist/primitives/Command/index.cjs.map +1 -1
  370. package/dist/primitives/Command/index.js +6 -2
  371. package/dist/primitives/Command/index.js.map +1 -1
  372. package/dist/primitives/ContextMenu/index.cjs +14 -4
  373. package/dist/primitives/ContextMenu/index.cjs.map +1 -1
  374. package/dist/primitives/ContextMenu/index.js +14 -4
  375. package/dist/primitives/ContextMenu/index.js.map +1 -1
  376. package/dist/primitives/Credits/index.cjs +8 -3
  377. package/dist/primitives/Credits/index.cjs.map +1 -1
  378. package/dist/primitives/Credits/index.js +7 -3
  379. package/dist/primitives/Credits/index.js.map +1 -1
  380. package/dist/primitives/Dialog/index.cjs +3 -2
  381. package/dist/primitives/Dialog/index.cjs.map +1 -1
  382. package/dist/primitives/Dialog/index.js +3 -2
  383. package/dist/primitives/Dialog/index.js.map +1 -1
  384. package/dist/primitives/DropdownMenu/index.cjs +14 -4
  385. package/dist/primitives/DropdownMenu/index.cjs.map +1 -1
  386. package/dist/primitives/DropdownMenu/index.js +14 -4
  387. package/dist/primitives/DropdownMenu/index.js.map +1 -1
  388. package/dist/primitives/Empty/index.cjs +1 -1
  389. package/dist/primitives/Empty/index.js +1 -1
  390. package/dist/primitives/Field/index.cjs +1 -1
  391. package/dist/primitives/Field/index.js +1 -1
  392. package/dist/primitives/Form/index.cjs +1 -1
  393. package/dist/primitives/Form/index.js +1 -1
  394. package/dist/primitives/Heading/index.cjs +2 -1
  395. package/dist/primitives/Heading/index.cjs.map +1 -1
  396. package/dist/primitives/Heading/index.js +1 -1
  397. package/dist/primitives/HoverCard/index.cjs +1 -1
  398. package/dist/primitives/HoverCard/index.js +1 -1
  399. package/dist/primitives/InfoBanner/index.cjs +6 -3
  400. package/dist/primitives/InfoBanner/index.cjs.map +1 -1
  401. package/dist/primitives/InfoBanner/index.js +5 -3
  402. package/dist/primitives/InfoBanner/index.js.map +1 -1
  403. package/dist/primitives/Input/index.cjs +2 -1
  404. package/dist/primitives/Input/index.cjs.map +1 -1
  405. package/dist/primitives/Input/index.js +1 -1
  406. package/dist/primitives/InputGroup/index.cjs +1 -1
  407. package/dist/primitives/InputGroup/index.js +1 -1
  408. package/dist/primitives/InputOtp/index.cjs +3 -2
  409. package/dist/primitives/InputOtp/index.cjs.map +1 -1
  410. package/dist/primitives/InputOtp/index.js +3 -2
  411. package/dist/primitives/InputOtp/index.js.map +1 -1
  412. package/dist/primitives/Item/index.cjs +2 -2
  413. package/dist/primitives/Item/index.js +2 -2
  414. package/dist/primitives/Label/index.cjs +1 -1
  415. package/dist/primitives/Label/index.js +1 -1
  416. package/dist/primitives/Link/index.cjs +3 -2
  417. package/dist/primitives/Link/index.cjs.map +1 -1
  418. package/dist/primitives/Link/index.js +2 -2
  419. package/dist/primitives/Menubar/index.cjs +14 -4
  420. package/dist/primitives/Menubar/index.cjs.map +1 -1
  421. package/dist/primitives/Menubar/index.js +14 -4
  422. package/dist/primitives/Menubar/index.js.map +1 -1
  423. package/dist/primitives/NativeSelect/index.cjs +6 -3
  424. package/dist/primitives/NativeSelect/index.cjs.map +1 -1
  425. package/dist/primitives/NativeSelect/index.js +5 -3
  426. package/dist/primitives/NativeSelect/index.js.map +1 -1
  427. package/dist/primitives/NavigationMenu/index.cjs +5 -3
  428. package/dist/primitives/NavigationMenu/index.cjs.map +1 -1
  429. package/dist/primitives/NavigationMenu/index.js +5 -3
  430. package/dist/primitives/NavigationMenu/index.js.map +1 -1
  431. package/dist/primitives/Pagination/index.cjs +6 -2
  432. package/dist/primitives/Pagination/index.cjs.map +1 -1
  433. package/dist/primitives/Pagination/index.js +6 -2
  434. package/dist/primitives/Pagination/index.js.map +1 -1
  435. package/dist/primitives/Popover/index.cjs +1 -1
  436. package/dist/primitives/Popover/index.js +1 -1
  437. package/dist/primitives/Progress/index.cjs +1 -1
  438. package/dist/primitives/Progress/index.js +1 -1
  439. package/dist/primitives/RadioGroup/index.cjs +6 -2
  440. package/dist/primitives/RadioGroup/index.cjs.map +1 -1
  441. package/dist/primitives/RadioGroup/index.js +6 -2
  442. package/dist/primitives/RadioGroup/index.js.map +1 -1
  443. package/dist/primitives/Resizable/index.cjs +6 -2
  444. package/dist/primitives/Resizable/index.cjs.map +1 -1
  445. package/dist/primitives/Resizable/index.js +6 -2
  446. package/dist/primitives/Resizable/index.js.map +1 -1
  447. package/dist/primitives/ScrollArea/index.cjs +1 -1
  448. package/dist/primitives/ScrollArea/index.js +1 -1
  449. package/dist/primitives/Select/index.cjs +18 -5
  450. package/dist/primitives/Select/index.cjs.map +1 -1
  451. package/dist/primitives/Select/index.js +18 -5
  452. package/dist/primitives/Select/index.js.map +1 -1
  453. package/dist/primitives/Separator/index.cjs +1 -1
  454. package/dist/primitives/Separator/index.js +1 -1
  455. package/dist/primitives/Sheet/index.cjs +6 -2
  456. package/dist/primitives/Sheet/index.cjs.map +1 -1
  457. package/dist/primitives/Sheet/index.js +6 -2
  458. package/dist/primitives/Sheet/index.js.map +1 -1
  459. package/dist/primitives/Slider/index.cjs +1 -1
  460. package/dist/primitives/Slider/index.js +1 -1
  461. package/dist/primitives/Sonner/index.cjs +22 -6
  462. package/dist/primitives/Sonner/index.cjs.map +1 -1
  463. package/dist/primitives/Sonner/index.js +22 -6
  464. package/dist/primitives/Sonner/index.js.map +1 -1
  465. package/dist/primitives/Spinner/index.cjs +4 -2
  466. package/dist/primitives/Spinner/index.cjs.map +1 -1
  467. package/dist/primitives/Spinner/index.js +4 -2
  468. package/dist/primitives/Spinner/index.js.map +1 -1
  469. package/dist/primitives/Switch/index.cjs +1 -1
  470. package/dist/primitives/Switch/index.js +1 -1
  471. package/dist/primitives/Tabs/index.cjs +2 -2
  472. package/dist/primitives/Tabs/index.js +2 -2
  473. package/dist/primitives/Text/index.cjs +2 -1
  474. package/dist/primitives/Text/index.cjs.map +1 -1
  475. package/dist/primitives/Text/index.js +1 -1
  476. package/dist/primitives/Textarea/index.cjs +2 -1
  477. package/dist/primitives/Textarea/index.cjs.map +1 -1
  478. package/dist/primitives/Textarea/index.js +1 -1
  479. package/dist/primitives/Toggle/index.cjs +3 -2
  480. package/dist/primitives/Toggle/index.cjs.map +1 -1
  481. package/dist/primitives/Toggle/index.js +2 -2
  482. package/dist/primitives/ToggleGroup/index.cjs +1 -1
  483. package/dist/primitives/ToggleGroup/index.js +1 -1
  484. package/dist/primitives/Tooltip/index.cjs +1 -1
  485. package/dist/primitives/Tooltip/index.js +1 -1
  486. package/dist/primitives/index.cjs +1 -1
  487. package/dist/primitives/index.js +1 -1
  488. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["RadioGroupPrimitive","cn","CircleIcon"],"sources":["../../../src/primitives/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { CircleIcon } from \"lucide-react\";\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of a set of mutually-exclusive radio options; lays them out vertically or horizontally. */\nfunction RadioGroup({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n /** Stack the items in a column (`vertical`) or wrap them in a row (`horizontal`). */\n orientation?: \"vertical\" | \"horizontal\";\n}) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"flex flex-row flex-wrap gap-4 items-center\" : \"grid gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A single selectable radio control; pair it with a label for accessible option text. */\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n // Dot color rides on currentColor: the checked dot is the inverted fill,\n // flipping to the danger color under aria-invalid (Figma radio spec).\n \"aspect-square size-4 shrink-0 rounded-full border border-secondary-border bg-input-bg text-primary-invert-bg transition-[color,box-shadow] outline-none focus-visible:ring-3 focus-visible:ring-focus data-[state=checked]:border-selected-border disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-danger-border aria-invalid:ring-focus-error aria-invalid:text-danger-txt\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\n/** A card-style radio option with a bordered surface, title, and description that highlights when checked. */\nfunction RichRadioItem({\n className,\n value,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof RadioGroupPrimitive.Item>, \"children\"> & {\n /** Value submitted when this option is selected. */\n value: string;\n /** Bold heading shown at the top of the card. */\n title?: React.ReactNode;\n /** Secondary muted text shown beneath the title. */\n description?: React.ReactNode;\n /** Place the radio control on the trailing edge instead of the leading edge. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const itemId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-radio-item\"\n htmlFor={itemId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-10 border border-primary-border bg-muted-bg p-3 text-primary-txt transition-colors has-[[data-state=checked]]:border-selected-border has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <RadioGroupItem\n data-slot=\"rich-radio-item-control\"\n id={itemId}\n value={value}\n className=\"mt-0.75\"\n {...props}\n />\n <span data-slot=\"rich-radio-item-content\" className=\"flex flex-col gap-1.5\">\n {title != null && (\n <span data-slot=\"rich-radio-item-title\" className=\"text-sm leading-5\">\n {title}\n </span>\n )}\n {description != null && (\n <span\n data-slot=\"rich-radio-item-description\"\n className=\"text-xs leading-4 text-muted-txt\"\n >\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { RadioGroup, RadioGroupItem, RichRadioItem };\n"],"mappings":";;;;;;;;AAQA,SAAS,WAAW,EAClB,WACA,cAAc,YACd,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,KAACA,SAAAA,WAAoB,MAArB;EACE,aAAU;EACV,oBAAkB;EACL;EACb,WAAWC,WAAAA,GACT,gBAAgB,eAAe,+CAA+C,cAC9E,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,WAAoB,MAArB;EACE,aAAU;EACV,WAAWC,WAAAA,GAGT,kYACA,SACF;EACA,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACD,SAAAA,WAAoB,WAArB;GACE,aAAU;GACV,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAACE,aAAAA,YAAD,EAAY,WAAU,iGAAkG,CAAA;EAC3F,CAAA;CACP,CAAA;AAE9B;;AAGA,SAAS,cAAc,EACrB,WACA,OACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAUF;CACD,MAAM,eAAA,GAAA,MAAA,OAAoB;CAC1B,MAAM,SAAS,MAAM;CACrB,OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAWD,WAAAA,GACT,oPACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;GACE,aAAU;GACV,IAAI;GACG;GACP,WAAU;GACV,GAAI;EACL,CAAA,GACD,iBAAA,GAAA,kBAAA,MAAC,QAAD;GAAM,aAAU;GAA0B,WAAU;aAApD,CACG,SAAS,QACR,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,aAAU;IAAwB,WAAU;cAC/C;GACG,CAAA,GAEP,eAAe,QACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;IACE,aAAU;IACV,WAAU;cAET;GACG,CAAA,CAEJ;IACD;;AAEX"}
1
+ {"version":3,"file":"index.cjs","names":["RadioGroupPrimitive","cn","Icon","CircleIcon"],"sources":["../../../src/primitives/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { CircleIcon } from \"lucide-react\";\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of a set of mutually-exclusive radio options; lays them out vertically or horizontally. */\nfunction RadioGroup({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n /** Stack the items in a column (`vertical`) or wrap them in a row (`horizontal`). */\n orientation?: \"vertical\" | \"horizontal\";\n}) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"flex flex-row flex-wrap gap-4 items-center\" : \"grid gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A single selectable radio control; pair it with a label for accessible option text. */\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n // Dot color rides on currentColor: the checked dot is the inverted fill,\n // flipping to the danger color under aria-invalid (Figma radio spec).\n \"aspect-square size-4 shrink-0 rounded-full border border-secondary-border bg-input-bg text-primary-invert-bg transition-[color,box-shadow] outline-none focus-visible:ring-3 focus-visible:ring-focus data-[state=checked]:border-selected-border disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-danger-border aria-invalid:ring-focus-error aria-invalid:text-danger-txt\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <Icon\n as={CircleIcon}\n className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current\"\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\n/** A card-style radio option with a bordered surface, title, and description that highlights when checked. */\nfunction RichRadioItem({\n className,\n value,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof RadioGroupPrimitive.Item>, \"children\"> & {\n /** Value submitted when this option is selected. */\n value: string;\n /** Bold heading shown at the top of the card. */\n title?: React.ReactNode;\n /** Secondary muted text shown beneath the title. */\n description?: React.ReactNode;\n /** Place the radio control on the trailing edge instead of the leading edge. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const itemId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-radio-item\"\n htmlFor={itemId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-10 border border-primary-border bg-muted-bg p-3 text-primary-txt transition-colors has-[[data-state=checked]]:border-selected-border has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <RadioGroupItem\n data-slot=\"rich-radio-item-control\"\n id={itemId}\n value={value}\n className=\"mt-0.75\"\n {...props}\n />\n <span data-slot=\"rich-radio-item-content\" className=\"flex flex-col gap-1.5\">\n {title != null && (\n <span data-slot=\"rich-radio-item-title\" className=\"text-sm leading-5\">\n {title}\n </span>\n )}\n {description != null && (\n <span\n data-slot=\"rich-radio-item-description\"\n className=\"text-xs leading-4 text-muted-txt\"\n >\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { RadioGroup, RadioGroupItem, RichRadioItem };\n"],"mappings":";;;;;;;;;AASA,SAAS,WAAW,EAClB,WACA,cAAc,YACd,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,KAACA,SAAAA,WAAoB,MAArB;EACE,aAAU;EACV,oBAAkB;EACL;EACb,WAAWC,WAAAA,GACT,gBAAgB,eAAe,+CAA+C,cAC9E,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,WAAoB,MAArB;EACE,aAAU;EACV,WAAWC,WAAAA,GAGT,kYACA,SACF;EACA,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAACD,SAAAA,WAAoB,WAArB;GACE,aAAU;GACV,WAAU;aAEV,iBAAA,GAAA,kBAAA,KAACE,aAAAA,MAAD;IACE,IAAIC,aAAAA;IACJ,WAAU;GACX,CAAA;EAC4B,CAAA;CACP,CAAA;AAE9B;;AAGA,SAAS,cAAc,EACrB,WACA,OACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAUF;CACD,MAAM,eAAA,GAAA,MAAA,OAAoB;CAC1B,MAAM,SAAS,MAAM;CACrB,OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAWF,WAAAA,GACT,oPACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;GACE,aAAU;GACV,IAAI;GACG;GACP,WAAU;GACV,GAAI;EACL,CAAA,GACD,iBAAA,GAAA,kBAAA,MAAC,QAAD;GAAM,aAAU;GAA0B,WAAU;aAApD,CACG,SAAS,QACR,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,aAAU;IAAwB,WAAU;cAC/C;GACG,CAAA,GAEP,eAAe,QACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;IACE,aAAU;IACV,WAAU;cAET;GACG,CAAA,CAEJ;IACD;;AAEX"}
@@ -1,8 +1,9 @@
1
1
  import { t as cn } from "../../cn.js";
2
+ import { t as Icon } from "../../Icon.js";
2
3
  import { useId } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
3
5
  import { CircleIcon } from "lucide-react";
4
6
  import { RadioGroup as RadioGroup$1 } from "radix-ui";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/primitives/RadioGroup/RadioGroup.tsx
7
8
  /** Root of a set of mutually-exclusive radio options; lays them out vertically or horizontally. */
8
9
  function RadioGroup({ className, orientation = "vertical", ...props }) {
@@ -23,7 +24,10 @@ function RadioGroupItem({ className, ...props }) {
23
24
  children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, {
24
25
  "data-slot": "radio-group-indicator",
25
26
  className: "relative flex items-center justify-center",
26
- children: /* @__PURE__ */ jsx(CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current" })
27
+ children: /* @__PURE__ */ jsx(Icon, {
28
+ as: CircleIcon,
29
+ className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current"
30
+ })
27
31
  })
28
32
  });
29
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["RadioGroupPrimitive"],"sources":["../../../src/primitives/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { CircleIcon } from \"lucide-react\";\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of a set of mutually-exclusive radio options; lays them out vertically or horizontally. */\nfunction RadioGroup({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n /** Stack the items in a column (`vertical`) or wrap them in a row (`horizontal`). */\n orientation?: \"vertical\" | \"horizontal\";\n}) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"flex flex-row flex-wrap gap-4 items-center\" : \"grid gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A single selectable radio control; pair it with a label for accessible option text. */\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n // Dot color rides on currentColor: the checked dot is the inverted fill,\n // flipping to the danger color under aria-invalid (Figma radio spec).\n \"aspect-square size-4 shrink-0 rounded-full border border-secondary-border bg-input-bg text-primary-invert-bg transition-[color,box-shadow] outline-none focus-visible:ring-3 focus-visible:ring-focus data-[state=checked]:border-selected-border disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-danger-border aria-invalid:ring-focus-error aria-invalid:text-danger-txt\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\n/** A card-style radio option with a bordered surface, title, and description that highlights when checked. */\nfunction RichRadioItem({\n className,\n value,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof RadioGroupPrimitive.Item>, \"children\"> & {\n /** Value submitted when this option is selected. */\n value: string;\n /** Bold heading shown at the top of the card. */\n title?: React.ReactNode;\n /** Secondary muted text shown beneath the title. */\n description?: React.ReactNode;\n /** Place the radio control on the trailing edge instead of the leading edge. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const itemId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-radio-item\"\n htmlFor={itemId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-10 border border-primary-border bg-muted-bg p-3 text-primary-txt transition-colors has-[[data-state=checked]]:border-selected-border has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <RadioGroupItem\n data-slot=\"rich-radio-item-control\"\n id={itemId}\n value={value}\n className=\"mt-0.75\"\n {...props}\n />\n <span data-slot=\"rich-radio-item-content\" className=\"flex flex-col gap-1.5\">\n {title != null && (\n <span data-slot=\"rich-radio-item-title\" className=\"text-sm leading-5\">\n {title}\n </span>\n )}\n {description != null && (\n <span\n data-slot=\"rich-radio-item-description\"\n className=\"text-xs leading-4 text-muted-txt\"\n >\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { RadioGroup, RadioGroupItem, RichRadioItem };\n"],"mappings":";;;;;;;AAQA,SAAS,WAAW,EAClB,WACA,cAAc,YACd,GAAG,SAIF;CACD,OACE,oBAACA,aAAoB,MAArB;EACE,aAAU;EACV,oBAAkB;EACL;EACb,WAAW,GACT,gBAAgB,eAAe,+CAA+C,cAC9E,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,oBAACA,aAAoB,MAArB;EACE,aAAU;EACV,WAAW,GAGT,kYACA,SACF;EACA,GAAI;YAEJ,oBAACA,aAAoB,WAArB;GACE,aAAU;GACV,WAAU;aAEV,oBAAC,YAAD,EAAY,WAAU,iGAAkG,CAAA;EAC3F,CAAA;CACP,CAAA;AAE9B;;AAGA,SAAS,cAAc,EACrB,WACA,OACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAUF;CACD,MAAM,cAAc,MAAM;CAC1B,MAAM,SAAS,MAAM;CACrB,OACE,qBAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAW,GACT,oPACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,oBAAC,gBAAD;GACE,aAAU;GACV,IAAI;GACG;GACP,WAAU;GACV,GAAI;EACL,CAAA,GACD,qBAAC,QAAD;GAAM,aAAU;GAA0B,WAAU;aAApD,CACG,SAAS,QACR,oBAAC,QAAD;IAAM,aAAU;IAAwB,WAAU;cAC/C;GACG,CAAA,GAEP,eAAe,QACd,oBAAC,QAAD;IACE,aAAU;IACV,WAAU;cAET;GACG,CAAA,CAEJ;IACD;;AAEX"}
1
+ {"version":3,"file":"index.js","names":["RadioGroupPrimitive"],"sources":["../../../src/primitives/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { CircleIcon } from \"lucide-react\";\nimport { RadioGroup as RadioGroupPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of a set of mutually-exclusive radio options; lays them out vertically or horizontally. */\nfunction RadioGroup({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & {\n /** Stack the items in a column (`vertical`) or wrap them in a row (`horizontal`). */\n orientation?: \"vertical\" | \"horizontal\";\n}) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n orientation === \"horizontal\" ? \"flex flex-row flex-wrap gap-4 items-center\" : \"grid gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A single selectable radio control; pair it with a label for accessible option text. */\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n // Dot color rides on currentColor: the checked dot is the inverted fill,\n // flipping to the danger color under aria-invalid (Figma radio spec).\n \"aspect-square size-4 shrink-0 rounded-full border border-secondary-border bg-input-bg text-primary-invert-bg transition-[color,box-shadow] outline-none focus-visible:ring-3 focus-visible:ring-focus data-[state=checked]:border-selected-border disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-danger-border aria-invalid:ring-focus-error aria-invalid:text-danger-txt\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <Icon\n as={CircleIcon}\n className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-current stroke-current\"\n />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\n/** A card-style radio option with a bordered surface, title, and description that highlights when checked. */\nfunction RichRadioItem({\n className,\n value,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof RadioGroupPrimitive.Item>, \"children\"> & {\n /** Value submitted when this option is selected. */\n value: string;\n /** Bold heading shown at the top of the card. */\n title?: React.ReactNode;\n /** Secondary muted text shown beneath the title. */\n description?: React.ReactNode;\n /** Place the radio control on the trailing edge instead of the leading edge. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const itemId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-radio-item\"\n htmlFor={itemId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-10 border border-primary-border bg-muted-bg p-3 text-primary-txt transition-colors has-[[data-state=checked]]:border-selected-border has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <RadioGroupItem\n data-slot=\"rich-radio-item-control\"\n id={itemId}\n value={value}\n className=\"mt-0.75\"\n {...props}\n />\n <span data-slot=\"rich-radio-item-content\" className=\"flex flex-col gap-1.5\">\n {title != null && (\n <span data-slot=\"rich-radio-item-title\" className=\"text-sm leading-5\">\n {title}\n </span>\n )}\n {description != null && (\n <span\n data-slot=\"rich-radio-item-description\"\n className=\"text-xs leading-4 text-muted-txt\"\n >\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { RadioGroup, RadioGroupItem, RichRadioItem };\n"],"mappings":";;;;;;;;AASA,SAAS,WAAW,EAClB,WACA,cAAc,YACd,GAAG,SAIF;CACD,OACE,oBAACA,aAAoB,MAArB;EACE,aAAU;EACV,oBAAkB;EACL;EACb,WAAW,GACT,gBAAgB,eAAe,+CAA+C,cAC9E,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,oBAACA,aAAoB,MAArB;EACE,aAAU;EACV,WAAW,GAGT,kYACA,SACF;EACA,GAAI;YAEJ,oBAACA,aAAoB,WAArB;GACE,aAAU;GACV,WAAU;aAEV,oBAAC,MAAD;IACE,IAAI;IACJ,WAAU;GACX,CAAA;EAC4B,CAAA;CACP,CAAA;AAE9B;;AAGA,SAAS,cAAc,EACrB,WACA,OACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAUF;CACD,MAAM,cAAc,MAAM;CAC1B,MAAM,SAAS,MAAM;CACrB,OACE,qBAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAW,GACT,oPACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,oBAAC,gBAAD;GACE,aAAU;GACV,IAAI;GACG;GACP,WAAU;GACV,GAAI;EACL,CAAA,GACD,qBAAC,QAAD;GAAM,aAAU;GAA0B,WAAU;aAApD,CACG,SAAS,QACR,oBAAC,QAAD;IAAM,aAAU;IAAwB,WAAU;cAC/C;GACG,CAAA,GAEP,eAAe,QACd,oBAAC,QAAD;IACE,aAAU;IACV,WAAU;cAET;GACG,CAAA,CAEJ;IACD;;AAEX"}
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk.cjs");
3
3
  const require_cn = require("../../cn.cjs");
4
- let lucide_react = require("lucide-react");
4
+ const require_Icon = require("../../Icon.cjs");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
+ let lucide_react = require("lucide-react");
6
7
  let react_resizable_panels = require("react-resizable-panels");
7
8
  react_resizable_panels = require_chunk.__toESM(react_resizable_panels);
8
9
  //#region src/primitives/Resizable/Resizable.tsx
@@ -29,7 +30,10 @@ function ResizableHandle({ withHandle, className, ...props }) {
29
30
  ...props,
30
31
  children: withHandle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
31
32
  className: "z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border",
32
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.GripVerticalIcon, { className: "size-2.5" })
33
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
34
+ as: lucide_react.GripVerticalIcon,
35
+ className: "size-2.5"
36
+ })
33
37
  })
34
38
  });
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ResizablePrimitive","cn","GripVerticalIcon"],"sources":["../../../src/primitives/Resizable/Resizable.tsx"],"sourcesContent":["import { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"@/utils\";\n\n/** Root container that lays out `ResizablePanel`s and `ResizableHandle`s and drives resize behaviour (set `orientation` to switch axis). */\nfunction ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\"flex h-full w-full aria-[orientation=vertical]:flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** A single resizable region within a `ResizablePanelGroup`; size it with `defaultSize`/`minSize`/`maxSize`. */\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\n/** Draggable divider between two panels; pass `withHandle` to render a visible grip affordance. */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n /** Renders a visible grip icon centred on the divider. */\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-primary-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-focus focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"mappings":";;;;;;;;;AAMA,SAAS,oBAAoB,EAAE,WAAW,GAAG,SAAwC;CACnF,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAmB,OAApB;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,GAAG,SAAwC;CACnE,OAAO,iBAAA,GAAA,kBAAA,KAACD,uBAAmB,OAApB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;;AAGA,SAAS,gBAAgB,EACvB,YACA,WACA,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAmB,WAApB;EACE,aAAU;EACV,WAAWC,WAAAA,GACT,slBACA,SACF;EACA,GAAI;YAEH,cACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,kBAAD,EAAkB,WAAU,WAAY,CAAA;EACrC,CAAA;CAEqB,CAAA;AAElC"}
1
+ {"version":3,"file":"index.cjs","names":["ResizablePrimitive","cn","Icon","GripVerticalIcon"],"sources":["../../../src/primitives/Resizable/Resizable.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"@/utils\";\n\n/** Root container that lays out `ResizablePanel`s and `ResizableHandle`s and drives resize behaviour (set `orientation` to switch axis). */\nfunction ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\"flex h-full w-full aria-[orientation=vertical]:flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** A single resizable region within a `ResizablePanelGroup`; size it with `defaultSize`/`minSize`/`maxSize`. */\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\n/** Draggable divider between two panels; pass `withHandle` to render a visible grip affordance. */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n /** Renders a visible grip icon centred on the divider. */\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-primary-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-focus focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border\">\n <Icon as={GripVerticalIcon} className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"mappings":";;;;;;;;;;AAOA,SAAS,oBAAoB,EAAE,WAAW,GAAG,SAAwC;CACnF,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAmB,OAApB;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,GAAG,SAAwC;CACnE,OAAO,iBAAA,GAAA,kBAAA,KAACD,uBAAmB,OAApB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;;AAGA,SAAS,gBAAgB,EACvB,YACA,WACA,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,KAACA,uBAAmB,WAApB;EACE,aAAU;EACV,WAAWC,WAAAA,GACT,slBACA,SACF;EACA,GAAI;YAEH,cACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD;IAAM,IAAIC,aAAAA;IAAkB,WAAU;GAAY,CAAA;EAC/C,CAAA;CAEqB,CAAA;AAElC"}
@@ -1,6 +1,7 @@
1
1
  import { t as cn } from "../../cn.js";
2
- import { GripVerticalIcon } from "lucide-react";
2
+ import { t as Icon } from "../../Icon.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
+ import { GripVerticalIcon } from "lucide-react";
4
5
  import * as ResizablePrimitive from "react-resizable-panels";
5
6
  //#region src/primitives/Resizable/Resizable.tsx
6
7
  /** Root container that lays out `ResizablePanel`s and `ResizableHandle`s and drives resize behaviour (set `orientation` to switch axis). */
@@ -26,7 +27,10 @@ function ResizableHandle({ withHandle, className, ...props }) {
26
27
  ...props,
27
28
  children: withHandle && /* @__PURE__ */ jsx("div", {
28
29
  className: "z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border",
29
- children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-2.5" })
30
+ children: /* @__PURE__ */ jsx(Icon, {
31
+ as: GripVerticalIcon,
32
+ className: "size-2.5"
33
+ })
30
34
  })
31
35
  });
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Resizable/Resizable.tsx"],"sourcesContent":["import { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"@/utils\";\n\n/** Root container that lays out `ResizablePanel`s and `ResizableHandle`s and drives resize behaviour (set `orientation` to switch axis). */\nfunction ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\"flex h-full w-full aria-[orientation=vertical]:flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** A single resizable region within a `ResizablePanelGroup`; size it with `defaultSize`/`minSize`/`maxSize`. */\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\n/** Draggable divider between two panels; pass `withHandle` to render a visible grip affordance. */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n /** Renders a visible grip icon centred on the divider. */\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-primary-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-focus focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"mappings":";;;;;;AAMA,SAAS,oBAAoB,EAAE,WAAW,GAAG,SAAwC;CACnF,OACE,oBAAC,mBAAmB,OAApB;EACE,aAAU;EACV,WAAW,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,GAAG,SAAwC;CACnE,OAAO,oBAAC,mBAAmB,OAApB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;;AAGA,SAAS,gBAAgB,EACvB,YACA,WACA,GAAG,SAIF;CACD,OACE,oBAAC,mBAAmB,WAApB;EACE,aAAU;EACV,WAAW,GACT,slBACA,SACF;EACA,GAAI;YAEH,cACC,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,kBAAD,EAAkB,WAAU,WAAY,CAAA;EACrC,CAAA;CAEqB,CAAA;AAElC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Resizable/Resizable.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { GripVerticalIcon } from \"lucide-react\";\nimport * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"@/utils\";\n\n/** Root container that lays out `ResizablePanel`s and `ResizableHandle`s and drives resize behaviour (set `orientation` to switch axis). */\nfunction ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps) {\n return (\n <ResizablePrimitive.Group\n data-slot=\"resizable-panel-group\"\n className={cn(\"flex h-full w-full aria-[orientation=vertical]:flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** A single resizable region within a `ResizablePanelGroup`; size it with `defaultSize`/`minSize`/`maxSize`. */\nfunction ResizablePanel({ ...props }: ResizablePrimitive.PanelProps) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\n/** Draggable divider between two panels; pass `withHandle` to render a visible grip affordance. */\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n /** Renders a visible grip icon centred on the divider. */\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"relative flex w-px items-center justify-center bg-primary-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-focus focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90\",\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-2 border bg-primary-border\">\n <Icon as={GripVerticalIcon} className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"mappings":";;;;;;;AAOA,SAAS,oBAAoB,EAAE,WAAW,GAAG,SAAwC;CACnF,OACE,oBAAC,mBAAmB,OAApB;EACE,aAAU;EACV,WAAW,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,GAAG,SAAwC;CACnE,OAAO,oBAAC,mBAAmB,OAApB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;;AAGA,SAAS,gBAAgB,EACvB,YACA,WACA,GAAG,SAIF;CACD,OACE,oBAAC,mBAAmB,WAApB;EACE,aAAU;EACV,WAAW,GACT,slBACA,SACF;EACA,GAAI;YAEH,cACC,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,MAAD;IAAM,IAAI;IAAkB,WAAU;GAAY,CAAA;EAC/C,CAAA;CAEqB,CAAA;AAElC"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_cn = require("../../cn.cjs");
3
- let radix_ui = require("radix-ui");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
+ let radix_ui = require("radix-ui");
5
5
  //#region src/primitives/ScrollArea/ScrollArea.tsx
6
6
  /** Custom-styled scroll container: a viewport with a slim, auto-hiding scrollbar. */
7
7
  function ScrollArea({ className, children, ...props }) {
@@ -1,6 +1,6 @@
1
1
  import { t as cn } from "../../cn.js";
2
- import { ScrollArea as ScrollArea$1 } from "radix-ui";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { ScrollArea as ScrollArea$1 } from "radix-ui";
4
4
  //#region src/primitives/ScrollArea/ScrollArea.tsx
5
5
  /** Custom-styled scroll container: a viewport with a slim, auto-hiding scrollbar. */
6
6
  function ScrollArea({ className, children, ...props }) {
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_cn = require("../../cn.cjs");
3
+ const require_Icon = require("../../Icon.cjs");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
3
5
  let lucide_react = require("lucide-react");
4
6
  let radix_ui = require("radix-ui");
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
7
  //#region src/primitives/Select/Select.tsx
7
8
  /** Root of the select. Holds the open/value state and wires the trigger to the content. */
8
9
  function Select({ ...props }) {
@@ -44,7 +45,10 @@ function SelectTrigger({ className, size = "default", width = "full", label, chi
44
45
  })]
45
46
  }) : children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Select.Icon, {
46
47
  asChild: true,
47
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, { className: "size-4" })
48
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
49
+ as: lucide_react.ChevronDownIcon,
50
+ className: "size-4"
51
+ })
48
52
  })]
49
53
  });
50
54
  }
@@ -81,7 +85,10 @@ function SelectItem({ className, children, ...props }) {
81
85
  ...props,
82
86
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
83
87
  className: "absolute right-2 flex size-3.5 items-center justify-center",
84
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Select.ItemIndicator, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckIcon, { className: "size-4" }) })
88
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Select.ItemIndicator, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
89
+ as: lucide_react.CheckIcon,
90
+ className: "size-4"
91
+ }) })
85
92
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Select.ItemText, { children })]
86
93
  });
87
94
  }
@@ -99,7 +106,10 @@ function SelectScrollUpButton({ className, ...props }) {
99
106
  "data-slot": "select-scroll-up-button",
100
107
  className: require_cn.cn("flex cursor-default items-center justify-center py-1", className),
101
108
  ...props,
102
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronUpIcon, { className: "size-4" })
109
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
110
+ as: lucide_react.ChevronUpIcon,
111
+ className: "size-4"
112
+ })
103
113
  });
104
114
  }
105
115
  /** Auto-shown scroll affordance at the bottom of a long, overflowing list. */
@@ -108,7 +118,10 @@ function SelectScrollDownButton({ className, ...props }) {
108
118
  "data-slot": "select-scroll-down-button",
109
119
  className: require_cn.cn("flex cursor-default items-center justify-center py-1", className),
110
120
  ...props,
111
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, { className: "size-4" })
121
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
122
+ as: lucide_react.ChevronDownIcon,
123
+ className: "size-4"
124
+ })
112
125
  });
113
126
  }
114
127
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["SelectPrimitive","cn","ChevronDownIcon","CheckIcon","ChevronUpIcon"],"sources":["../../../src/primitives/Select/Select.tsx"],"sourcesContent":["import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of the select. Holds the open/value state and wires the trigger to the content. */\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\n/** Groups related items under a shared `SelectLabel` for sectioned menus. */\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\n/** Renders the selected value (or the `placeholder`) inside the trigger. */\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\n/** The clickable control that opens the menu and shows the current value. */\nfunction SelectTrigger({\n className,\n size = \"default\",\n width = \"full\",\n label,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n /** Trigger height: `sm` (32px), `default` (36px), or `lg` (40px). */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Trigger width: `full` stretches to the container, `fit` hugs the value. */\n width?: \"full\" | \"fit\";\n /** Optional stacked label rendered above the value (2-line trigger). */\n label?: React.ReactNode;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-lines={label ? \"2\" : \"1\"}\n className={cn(\n \"border-primary-border data-[placeholder]:text-muted-txt text-primary-txt [&_svg:not([class*='text-'])]:text-muted-txt focus-visible:border-primary-invert-border focus-visible:ring-focus aria-invalid:ring-focus-error aria-invalid:border-danger-border flex items-center justify-between gap-2 rounded-12 border bg-input-bg pl-3 pr-2 py-2 text-sm leading-5 whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=sm]:h-8 data-[size=default]:h-9 data-[size=lg]:h-10 data-[lines=2]:h-auto data-[lines=2]:py-1.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n width === \"full\" ? \"w-full\" : \"w-fit\",\n className,\n )}\n {...props}\n >\n {label ? (\n <span className=\"flex min-w-0 flex-1 flex-col items-start gap-0.5 text-left\">\n <span className=\"text-xs leading-4 font-normal text-muted-txt\">{label}</span>\n <span className=\"flex w-full items-center gap-2 text-sm\">{children}</span>\n </span>\n ) : (\n children\n )}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\n/** The portalled popover that holds the list of items. */\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-glass-none-bg text-primary-txt border-primary-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-8 data-[side=left]:slide-in-from-right-8 data-[side=right]:slide-in-from-left-8 data-[side=top]:slide-in-from-bottom-8 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-12 border shadow-sm\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-2\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n/** A non-interactive heading for a `SelectGroup`. */\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-txt px-2 py-1.5 text-xs leading-4 font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** A selectable option; its `value` becomes the select's value when chosen. */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-ghost-hover-bg [&_svg:not([class*='text-'])]:text-muted-txt relative flex w-full min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-8 pl-2 text-sm leading-5 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n/** A thin divider rule between groups or items. */\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-primary-border pointer-events-none my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Auto-shown scroll affordance at the top of a long, overflowing list. */\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\n/** Auto-shown scroll affordance at the bottom of a long, overflowing list. */\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["SelectPrimitive","cn","Icon","ChevronDownIcon","CheckIcon","ChevronUpIcon"],"sources":["../../../src/primitives/Select/Select.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of the select. Holds the open/value state and wires the trigger to the content. */\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\n/** Groups related items under a shared `SelectLabel` for sectioned menus. */\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\n/** Renders the selected value (or the `placeholder`) inside the trigger. */\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\n/** The clickable control that opens the menu and shows the current value. */\nfunction SelectTrigger({\n className,\n size = \"default\",\n width = \"full\",\n label,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n /** Trigger height: `sm` (32px), `default` (36px), or `lg` (40px). */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Trigger width: `full` stretches to the container, `fit` hugs the value. */\n width?: \"full\" | \"fit\";\n /** Optional stacked label rendered above the value (2-line trigger). */\n label?: React.ReactNode;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-lines={label ? \"2\" : \"1\"}\n className={cn(\n \"border-primary-border data-[placeholder]:text-muted-txt text-primary-txt [&_svg:not([class*='text-'])]:text-muted-txt focus-visible:border-primary-invert-border focus-visible:ring-focus aria-invalid:ring-focus-error aria-invalid:border-danger-border flex items-center justify-between gap-2 rounded-12 border bg-input-bg pl-3 pr-2 py-2 text-sm leading-5 whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=sm]:h-8 data-[size=default]:h-9 data-[size=lg]:h-10 data-[lines=2]:h-auto data-[lines=2]:py-1.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n width === \"full\" ? \"w-full\" : \"w-fit\",\n className,\n )}\n {...props}\n >\n {label ? (\n <span className=\"flex min-w-0 flex-1 flex-col items-start gap-0.5 text-left\">\n <span className=\"text-xs leading-4 font-normal text-muted-txt\">{label}</span>\n <span className=\"flex w-full items-center gap-2 text-sm\">{children}</span>\n </span>\n ) : (\n children\n )}\n <SelectPrimitive.Icon asChild>\n <Icon as={ChevronDownIcon} className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\n/** The portalled popover that holds the list of items. */\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-glass-none-bg text-primary-txt border-primary-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-8 data-[side=left]:slide-in-from-right-8 data-[side=right]:slide-in-from-left-8 data-[side=top]:slide-in-from-bottom-8 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-12 border shadow-sm\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-2\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n/** A non-interactive heading for a `SelectGroup`. */\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-txt px-2 py-1.5 text-xs leading-4 font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** A selectable option; its `value` becomes the select's value when chosen. */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-ghost-hover-bg [&_svg:not([class*='text-'])]:text-muted-txt relative flex w-full min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-8 pl-2 text-sm leading-5 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Icon as={CheckIcon} className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n/** A thin divider rule between groups or items. */\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-primary-border pointer-events-none my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Auto-shown scroll affordance at the top of a long, overflowing list. */\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Icon as={ChevronUpIcon} className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\n/** Auto-shown scroll affordance at the bottom of a long, overflowing list. */\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Icon as={ChevronDownIcon} className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { t as cn } from "../../cn.js";
2
+ import { t as Icon } from "../../Icon.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
2
4
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
3
5
  import { Select as Select$1 } from "radix-ui";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/primitives/Select/Select.tsx
6
7
  /** Root of the select. Holds the open/value state and wires the trigger to the content. */
7
8
  function Select({ ...props }) {
@@ -43,7 +44,10 @@ function SelectTrigger({ className, size = "default", width = "full", label, chi
43
44
  })]
44
45
  }) : children, /* @__PURE__ */ jsx(Select$1.Icon, {
45
46
  asChild: true,
46
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
47
+ children: /* @__PURE__ */ jsx(Icon, {
48
+ as: ChevronDownIcon,
49
+ className: "size-4"
50
+ })
47
51
  })]
48
52
  });
49
53
  }
@@ -80,7 +84,10 @@ function SelectItem({ className, children, ...props }) {
80
84
  ...props,
81
85
  children: [/* @__PURE__ */ jsx("span", {
82
86
  className: "absolute right-2 flex size-3.5 items-center justify-center",
83
- children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
87
+ children: /* @__PURE__ */ jsx(Select$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Icon, {
88
+ as: CheckIcon,
89
+ className: "size-4"
90
+ }) })
84
91
  }), /* @__PURE__ */ jsx(Select$1.ItemText, { children })]
85
92
  });
86
93
  }
@@ -98,7 +105,10 @@ function SelectScrollUpButton({ className, ...props }) {
98
105
  "data-slot": "select-scroll-up-button",
99
106
  className: cn("flex cursor-default items-center justify-center py-1", className),
100
107
  ...props,
101
- children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
108
+ children: /* @__PURE__ */ jsx(Icon, {
109
+ as: ChevronUpIcon,
110
+ className: "size-4"
111
+ })
102
112
  });
103
113
  }
104
114
  /** Auto-shown scroll affordance at the bottom of a long, overflowing list. */
@@ -107,7 +117,10 @@ function SelectScrollDownButton({ className, ...props }) {
107
117
  "data-slot": "select-scroll-down-button",
108
118
  className: cn("flex cursor-default items-center justify-center py-1", className),
109
119
  ...props,
110
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
120
+ children: /* @__PURE__ */ jsx(Icon, {
121
+ as: ChevronDownIcon,
122
+ className: "size-4"
123
+ })
111
124
  });
112
125
  }
113
126
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SelectPrimitive"],"sources":["../../../src/primitives/Select/Select.tsx"],"sourcesContent":["import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of the select. Holds the open/value state and wires the trigger to the content. */\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\n/** Groups related items under a shared `SelectLabel` for sectioned menus. */\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\n/** Renders the selected value (or the `placeholder`) inside the trigger. */\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\n/** The clickable control that opens the menu and shows the current value. */\nfunction SelectTrigger({\n className,\n size = \"default\",\n width = \"full\",\n label,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n /** Trigger height: `sm` (32px), `default` (36px), or `lg` (40px). */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Trigger width: `full` stretches to the container, `fit` hugs the value. */\n width?: \"full\" | \"fit\";\n /** Optional stacked label rendered above the value (2-line trigger). */\n label?: React.ReactNode;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-lines={label ? \"2\" : \"1\"}\n className={cn(\n \"border-primary-border data-[placeholder]:text-muted-txt text-primary-txt [&_svg:not([class*='text-'])]:text-muted-txt focus-visible:border-primary-invert-border focus-visible:ring-focus aria-invalid:ring-focus-error aria-invalid:border-danger-border flex items-center justify-between gap-2 rounded-12 border bg-input-bg pl-3 pr-2 py-2 text-sm leading-5 whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=sm]:h-8 data-[size=default]:h-9 data-[size=lg]:h-10 data-[lines=2]:h-auto data-[lines=2]:py-1.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n width === \"full\" ? \"w-full\" : \"w-fit\",\n className,\n )}\n {...props}\n >\n {label ? (\n <span className=\"flex min-w-0 flex-1 flex-col items-start gap-0.5 text-left\">\n <span className=\"text-xs leading-4 font-normal text-muted-txt\">{label}</span>\n <span className=\"flex w-full items-center gap-2 text-sm\">{children}</span>\n </span>\n ) : (\n children\n )}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\n/** The portalled popover that holds the list of items. */\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-glass-none-bg text-primary-txt border-primary-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-8 data-[side=left]:slide-in-from-right-8 data-[side=right]:slide-in-from-left-8 data-[side=top]:slide-in-from-bottom-8 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-12 border shadow-sm\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-2\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n/** A non-interactive heading for a `SelectGroup`. */\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-txt px-2 py-1.5 text-xs leading-4 font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** A selectable option; its `value` becomes the select's value when chosen. */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-ghost-hover-bg [&_svg:not([class*='text-'])]:text-muted-txt relative flex w-full min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-8 pl-2 text-sm leading-5 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n/** A thin divider rule between groups or items. */\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-primary-border pointer-events-none my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Auto-shown scroll affordance at the top of a long, overflowing list. */\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\n/** Auto-shown scroll affordance at the bottom of a long, overflowing list. */\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;AAOA,SAAS,OAAO,EAAE,GAAG,SAA4D;CAC/E,OAAO,oBAACA,SAAgB,MAAjB;EAAsB,aAAU;EAAS,GAAI;CAAQ,CAAA;AAC9D;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,oBAACA,SAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,oBAACA,SAAgB,OAAjB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,cAAc,EACrB,WACA,OAAO,WACP,QAAQ,QACR,OACA,UACA,GAAG,SAQF;CACD,OACE,qBAACA,SAAgB,SAAjB;EACE,aAAU;EACV,aAAW;EACX,cAAY,QAAQ,MAAM;EAC1B,WAAW,GACT,ozBACA,UAAU,SAAS,WAAW,SAC9B,SACF;EACA,GAAI;YATN,CAWG,QACC,qBAAC,QAAD;GAAM,WAAU;aAAhB,CACE,oBAAC,QAAD;IAAM,WAAU;cAAgD;GAAY,CAAA,GAC5E,oBAAC,QAAD;IAAM,WAAU;IAA0C;GAAe,CAAA,CACrE;OAEN,UAEF,oBAACA,SAAgB,MAAjB;GAAsB,SAAA;aACpB,oBAAC,iBAAD,EAAiB,WAAU,SAAU,CAAA;EACjB,CAAA,CACC;;AAE7B;;AAGA,SAAS,cAAc,EACrB,WACA,UACA,WAAW,UACX,GAAG,SACoD;CACvD,OACE,oBAACA,SAAgB,QAAjB,EAAA,UACE,qBAACA,SAAgB,SAAjB;EACE,aAAU;EACV,WAAW,GACT,kkBACA,aAAa,YACX,mIACF,SACF;EACU;EACV,GAAI;YATN;GAWE,oBAAC,sBAAD,CAAuB,CAAA;GACvB,oBAACA,SAAgB,UAAjB;IACE,WAAW,GACT,OACA,aAAa,YACX,qGACJ;IAEC;GACuB,CAAA;GAC1B,oBAAC,wBAAD,CAAyB,CAAA;EACF;IACH,CAAA;AAE5B;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAA6D;CAChG,OACE,oBAACA,SAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,4DAA4D,SAAS;EACnF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SACiD;CACpD,OACE,qBAACA,SAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT,maACA,SACF;EACA,GAAI;YANN,CAQE,oBAAC,QAAD;GAAM,WAAU;aACd,oBAACA,SAAgB,eAAjB,EAAA,UACE,oBAAC,WAAD,EAAW,WAAU,SAAU,CAAA,EACF,CAAA;EAC3B,CAAA,GACN,oBAACA,SAAgB,UAAjB,EAA2B,SAAmC,CAAA,CAC1C;;AAE1B;;AAGA,SAAS,gBAAgB,EACvB,WACA,GAAG,SACsD;CACzD,OACE,oBAACA,SAAgB,WAAjB;EACE,aAAU;EACV,WAAW,GAAG,mDAAmD,SAAS;EAC1E,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC2D;CAC9D,OACE,oBAACA,SAAgB,gBAAjB;EACE,aAAU;EACV,WAAW,GAAG,wDAAwD,SAAS;EAC/E,GAAI;YAEJ,oBAAC,eAAD,EAAe,WAAU,SAAU,CAAA;CACL,CAAA;AAEpC;;AAGA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAACA,SAAgB,kBAAjB;EACE,aAAU;EACV,WAAW,GAAG,wDAAwD,SAAS;EAC/E,GAAI;YAEJ,oBAAC,iBAAD,EAAiB,WAAU,SAAU,CAAA;CACL,CAAA;AAEtC"}
1
+ {"version":3,"file":"index.js","names":["SelectPrimitive"],"sources":["../../../src/primitives/Select/Select.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root of the select. Holds the open/value state and wires the trigger to the content. */\nfunction Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\n/** Groups related items under a shared `SelectLabel` for sectioned menus. */\nfunction SelectGroup({ ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\n/** Renders the selected value (or the `placeholder`) inside the trigger. */\nfunction SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\n/** The clickable control that opens the menu and shows the current value. */\nfunction SelectTrigger({\n className,\n size = \"default\",\n width = \"full\",\n label,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n /** Trigger height: `sm` (32px), `default` (36px), or `lg` (40px). */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Trigger width: `full` stretches to the container, `fit` hugs the value. */\n width?: \"full\" | \"fit\";\n /** Optional stacked label rendered above the value (2-line trigger). */\n label?: React.ReactNode;\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-lines={label ? \"2\" : \"1\"}\n className={cn(\n \"border-primary-border data-[placeholder]:text-muted-txt text-primary-txt [&_svg:not([class*='text-'])]:text-muted-txt focus-visible:border-primary-invert-border focus-visible:ring-focus aria-invalid:ring-focus-error aria-invalid:border-danger-border flex items-center justify-between gap-2 rounded-12 border bg-input-bg pl-3 pr-2 py-2 text-sm leading-5 whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=sm]:h-8 data-[size=default]:h-9 data-[size=lg]:h-10 data-[lines=2]:h-auto data-[lines=2]:py-1.5 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n width === \"full\" ? \"w-full\" : \"w-fit\",\n className,\n )}\n {...props}\n >\n {label ? (\n <span className=\"flex min-w-0 flex-1 flex-col items-start gap-0.5 text-left\">\n <span className=\"text-xs leading-4 font-normal text-muted-txt\">{label}</span>\n <span className=\"flex w-full items-center gap-2 text-sm\">{children}</span>\n </span>\n ) : (\n children\n )}\n <SelectPrimitive.Icon asChild>\n <Icon as={ChevronDownIcon} className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\n/** The portalled popover that holds the list of items. */\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-glass-none-bg text-primary-txt border-primary-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-8 data-[side=left]:slide-in-from-right-8 data-[side=right]:slide-in-from-left-8 data-[side=top]:slide-in-from-bottom-8 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-12 border shadow-sm\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-2\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-2\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\n/** A non-interactive heading for a `SelectGroup`. */\nfunction SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-txt px-2 py-1.5 text-xs leading-4 font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** A selectable option; its `value` becomes the select's value when chosen. */\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-ghost-hover-bg [&_svg:not([class*='text-'])]:text-muted-txt relative flex w-full min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-8 pl-2 text-sm leading-5 outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Icon as={CheckIcon} className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\n/** A thin divider rule between groups or items. */\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-primary-border pointer-events-none my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\n/** Auto-shown scroll affordance at the top of a long, overflowing list. */\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Icon as={ChevronUpIcon} className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\n/** Auto-shown scroll affordance at the bottom of a long, overflowing list. */\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <Icon as={ChevronDownIcon} className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_cn = require("../../cn.cjs");
3
- let radix_ui = require("radix-ui");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
+ let radix_ui = require("radix-ui");
5
5
  //#region src/primitives/Separator/Separator.tsx
6
6
  const spacingClasses = {
7
7
  none: "",
@@ -1,6 +1,6 @@
1
1
  import { t as cn } from "../../cn.js";
2
- import { Separator as Separator$1 } from "radix-ui";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { Separator as Separator$1 } from "radix-ui";
4
4
  //#region src/primitives/Separator/Separator.tsx
5
5
  const spacingClasses = {
6
6
  none: "",
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_cn = require("../../cn.cjs");
3
+ const require_Icon = require("../../Icon.cjs");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
3
5
  let lucide_react = require("lucide-react");
4
6
  let radix_ui = require("radix-ui");
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
7
  //#region src/primitives/Sheet/Sheet.tsx
7
8
  /** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */
8
9
  function Sheet({ ...props }) {
@@ -55,7 +56,10 @@ function SheetContent({ className, children, side = "right", showCloseButton = t
55
56
  ...props,
56
57
  children: [children, showCloseButton && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Dialog.Close, {
57
58
  className: "absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none",
58
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.XIcon, { className: "size-4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
59
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
60
+ as: lucide_react.XIcon,
61
+ className: "size-4"
62
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
59
63
  className: "sr-only",
60
64
  children: "Close"
61
65
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["SheetPrimitive","cn","XIcon"],"sources":["../../../src/primitives/Sheet/Sheet.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\";\nimport { Dialog as SheetPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Element that opens the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Element that closes the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals the overlay and content out of the DOM tree to the document body. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Full-screen scrim rendered behind the sheet content. */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Predefined scrim styles for the sheet overlay. Pass via `overlay`. */\nconst sheetOverlayVariants = {\n default: \"bg-overlay-bg\",\n dark: \"bg-black/50\",\n glass: \"bg-glass-40-bg backdrop-blur-glass\",\n none: \"bg-transparent\",\n} as const;\n\n/** The sliding panel surface (portaled, with its overlay). Holds the header, body, and footer. */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n overlay = \"default\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Whether to render the built-in top-right close (X) button. */\n showCloseButton?: boolean;\n /** Scrim style behind the sheet (e.g. `glass` for drawer patterns). */\n overlay?: keyof typeof sheetOverlayVariants;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayVariants[overlay]} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n // Figma: bg/primary panel with shadow-lg only (no border binding);\n // radius-8 on the inward edge — the outer edge sits flush.\n \"bg-primary-bg data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 overflow-y-auto shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 rounded-l-8 sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 rounded-r-8 sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-8\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-8\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Top region of the sheet; typically holds the `SheetTitle` and `SheetDescription`. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-2 p-6\", className)} {...props} />\n );\n}\n\n/** Bottom region of the sheet, pinned to the base; typically holds action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n \"mt-auto flex flex-col-reverse gap-3 p-6 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title for the sheet, announced when it opens. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n // Figma: heading 4 (Outfit Regular 20/24). Bound to raw neutral/900 in\n // Figma — we use content/primary (flag #13).\n className={cn(\n \"font-heading text-[length:var(--heading-4-font-size)] leading-[var(--heading-4-line-height)] font-normal text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible supporting text for the sheet, linked to the dialog for screen readers. */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-txt text-sm leading-5\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;;AAOA,SAAS,MAAM,EAAE,GAAG,SAA2D;CAC7E,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;;AAGA,SAAS,aAAa,EAAE,GAAG,SAA8D;CACvF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;;AAGA,SAAS,WAAW,EAAE,GAAG,SAA4D;CACnF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,OAAhB;EAAsB,aAAU;EAAc,GAAI;CAAQ,CAAA;AACnE;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;CACtD,OACE,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,SAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GACT,8IACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,MAAM,uBAAuB;CAC3B,SAAS;CACT,MAAM;CACN,OAAO;CACP,MAAM;AACR;;AAGA,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,kBAAkB,MAClB,UAAU,WACV,GAAG,SAQF;CACD,OACE,iBAAA,GAAA,kBAAA,MAAC,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAc,WAAW,qBAAqB,SAAW,CAAA,GACzD,iBAAA,GAAA,kBAAA,MAACD,SAAAA,OAAe,SAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GAGT,8NACA,SAAS,WACP,uIACF,SAAS,UACP,oIACF,SAAS,SACP,+GACF,SAAS,YACP,wHACF,SACF;EACA,GAAI;YAhBN,CAkBG,UACA,mBACC,iBAAA,GAAA,kBAAA,MAACD,SAAAA,OAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,OAAD,EAAO,WAAU,SAAU,CAAA,GAC3B,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IAEF;GACb,EAAA,CAAA;AAEjB;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAe,WAAWD,WAAAA,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,sEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAA4D;CAC9F,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,OAAe,OAAhB;EACE,aAAU;EAGV,WAAWC,WAAAA,GACT,6HACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,OAAe,aAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["SheetPrimitive","cn","Icon","XIcon"],"sources":["../../../src/primitives/Sheet/Sheet.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { XIcon } from \"lucide-react\";\nimport { Dialog as SheetPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Element that opens the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Element that closes the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals the overlay and content out of the DOM tree to the document body. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Full-screen scrim rendered behind the sheet content. */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Predefined scrim styles for the sheet overlay. Pass via `overlay`. */\nconst sheetOverlayVariants = {\n default: \"bg-overlay-bg\",\n dark: \"bg-black/50\",\n glass: \"bg-glass-40-bg backdrop-blur-glass\",\n none: \"bg-transparent\",\n} as const;\n\n/** The sliding panel surface (portaled, with its overlay). Holds the header, body, and footer. */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n overlay = \"default\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Whether to render the built-in top-right close (X) button. */\n showCloseButton?: boolean;\n /** Scrim style behind the sheet (e.g. `glass` for drawer patterns). */\n overlay?: keyof typeof sheetOverlayVariants;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayVariants[overlay]} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n // Figma: bg/primary panel with shadow-lg only (no border binding);\n // radius-8 on the inward edge — the outer edge sits flush.\n \"bg-primary-bg data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 overflow-y-auto shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 rounded-l-8 sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 rounded-r-8 sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-8\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-8\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none\">\n <Icon as={XIcon} className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Top region of the sheet; typically holds the `SheetTitle` and `SheetDescription`. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-2 p-6\", className)} {...props} />\n );\n}\n\n/** Bottom region of the sheet, pinned to the base; typically holds action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n \"mt-auto flex flex-col-reverse gap-3 p-6 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title for the sheet, announced when it opens. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n // Figma: heading 4 (Outfit Regular 20/24). Bound to raw neutral/900 in\n // Figma — we use content/primary (flag #13).\n className={cn(\n \"font-heading text-[length:var(--heading-4-font-size)] leading-[var(--heading-4-line-height)] font-normal text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible supporting text for the sheet, linked to the dialog for screen readers. */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-txt text-sm leading-5\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,MAAM,EAAE,GAAG,SAA2D;CAC7E,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;;AAGA,SAAS,aAAa,EAAE,GAAG,SAA8D;CACvF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;;AAGA,SAAS,WAAW,EAAE,GAAG,SAA4D;CACnF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,OAAhB;EAAsB,aAAU;EAAc,GAAI;CAAQ,CAAA;AACnE;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;CACtD,OACE,iBAAA,GAAA,kBAAA,KAACA,SAAAA,OAAe,SAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GACT,8IACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,MAAM,uBAAuB;CAC3B,SAAS;CACT,MAAM;CACN,OAAO;CACP,MAAM;AACR;;AAGA,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,kBAAkB,MAClB,UAAU,WACV,GAAG,SAQF;CACD,OACE,iBAAA,GAAA,kBAAA,MAAC,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAc,WAAW,qBAAqB,SAAW,CAAA,GACzD,iBAAA,GAAA,kBAAA,MAACD,SAAAA,OAAe,SAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GAGT,8NACA,SAAS,WACP,uIACF,SAAS,UACP,oIACF,SAAS,SACP,+GACF,SAAS,YACP,wHACF,SACF;EACA,GAAI;YAhBN,CAkBG,UACA,mBACC,iBAAA,GAAA,kBAAA,MAACD,SAAAA,OAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,MAAD;IAAM,IAAIC,aAAAA;IAAO,WAAU;GAAU,CAAA,GACrC,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IAEF;GACb,EAAA,CAAA;AAEjB;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAe,WAAWF,WAAAA,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,sEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAA4D;CAC9F,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,OAAe,OAAhB;EACE,aAAU;EAGV,WAAWC,WAAAA,GACT,6HACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,iBAAA,GAAA,kBAAA,KAACD,SAAAA,OAAe,aAAhB;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL"}
@@ -1,7 +1,8 @@
1
1
  import { t as cn } from "../../cn.js";
2
+ import { t as Icon } from "../../Icon.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
2
4
  import { XIcon } from "lucide-react";
3
5
  import { Dialog } from "radix-ui";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/primitives/Sheet/Sheet.tsx
6
7
  /** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */
7
8
  function Sheet({ ...props }) {
@@ -54,7 +55,10 @@ function SheetContent({ className, children, side = "right", showCloseButton = t
54
55
  ...props,
55
56
  children: [children, showCloseButton && /* @__PURE__ */ jsxs(Dialog.Close, {
56
57
  className: "absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none",
57
- children: [/* @__PURE__ */ jsx(XIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
58
+ children: [/* @__PURE__ */ jsx(Icon, {
59
+ as: XIcon,
60
+ className: "size-4"
61
+ }), /* @__PURE__ */ jsx("span", {
58
62
  className: "sr-only",
59
63
  children: "Close"
60
64
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SheetPrimitive"],"sources":["../../../src/primitives/Sheet/Sheet.tsx"],"sourcesContent":["import { XIcon } from \"lucide-react\";\nimport { Dialog as SheetPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Element that opens the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Element that closes the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals the overlay and content out of the DOM tree to the document body. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Full-screen scrim rendered behind the sheet content. */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Predefined scrim styles for the sheet overlay. Pass via `overlay`. */\nconst sheetOverlayVariants = {\n default: \"bg-overlay-bg\",\n dark: \"bg-black/50\",\n glass: \"bg-glass-40-bg backdrop-blur-glass\",\n none: \"bg-transparent\",\n} as const;\n\n/** The sliding panel surface (portaled, with its overlay). Holds the header, body, and footer. */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n overlay = \"default\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Whether to render the built-in top-right close (X) button. */\n showCloseButton?: boolean;\n /** Scrim style behind the sheet (e.g. `glass` for drawer patterns). */\n overlay?: keyof typeof sheetOverlayVariants;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayVariants[overlay]} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n // Figma: bg/primary panel with shadow-lg only (no border binding);\n // radius-8 on the inward edge — the outer edge sits flush.\n \"bg-primary-bg data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 overflow-y-auto shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 rounded-l-8 sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 rounded-r-8 sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-8\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-8\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Top region of the sheet; typically holds the `SheetTitle` and `SheetDescription`. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-2 p-6\", className)} {...props} />\n );\n}\n\n/** Bottom region of the sheet, pinned to the base; typically holds action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n \"mt-auto flex flex-col-reverse gap-3 p-6 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title for the sheet, announced when it opens. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n // Figma: heading 4 (Outfit Regular 20/24). Bound to raw neutral/900 in\n // Figma — we use content/primary (flag #13).\n className={cn(\n \"font-heading text-[length:var(--heading-4-font-size)] leading-[var(--heading-4-line-height)] font-normal text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible supporting text for the sheet, linked to the dialog for screen readers. */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-txt text-sm leading-5\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;AAOA,SAAS,MAAM,EAAE,GAAG,SAA2D;CAC7E,OAAO,oBAACA,OAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;;AAGA,SAAS,aAAa,EAAE,GAAG,SAA8D;CACvF,OAAO,oBAACA,OAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;;AAGA,SAAS,WAAW,EAAE,GAAG,SAA4D;CACnF,OAAO,oBAACA,OAAe,OAAhB;EAAsB,aAAU;EAAc,GAAI;CAAQ,CAAA;AACnE;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,oBAACA,OAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;CACtD,OACE,oBAACA,OAAe,SAAhB;EACE,aAAU;EACV,WAAW,GACT,8IACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,MAAM,uBAAuB;CAC3B,SAAS;CACT,MAAM;CACN,OAAO;CACP,MAAM;AACR;;AAGA,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,kBAAkB,MAClB,UAAU,WACV,GAAG,SAQF;CACD,OACE,qBAAC,aAAD,EAAA,UAAA,CACE,oBAAC,cAAD,EAAc,WAAW,qBAAqB,SAAW,CAAA,GACzD,qBAACA,OAAe,SAAhB;EACE,aAAU;EACV,WAAW,GAGT,8NACA,SAAS,WACP,uIACF,SAAS,UACP,oIACF,SAAS,SACP,+GACF,SAAS,YACP,wHACF,SACF;EACA,GAAI;YAhBN,CAkBG,UACA,mBACC,qBAACA,OAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,oBAAC,OAAD,EAAO,WAAU,SAAU,CAAA,GAC3B,oBAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IAEF;GACb,EAAA,CAAA;AAEjB;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,sEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAA4D;CAC9F,OACE,oBAACA,OAAe,OAAhB;EACE,aAAU;EAGV,WAAW,GACT,6HACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,OAAe,aAAhB;EACE,aAAU;EACV,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":["SheetPrimitive"],"sources":["../../../src/primitives/Sheet/Sheet.tsx"],"sourcesContent":["import { Icon } from \"@/primitives/Icon\";\nimport { XIcon } from \"lucide-react\";\nimport { Dialog as SheetPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** Root provider for a slide-in panel (drawer). Wraps a `SheetTrigger` and `SheetContent`; controls open/closed state. */\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\n/** Element that opens the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\n/** Element that closes the sheet when activated. Use `asChild` to wrap your own button. */\nfunction SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\n/** Portals the overlay and content out of the DOM tree to the document body. */\nfunction SheetPortal({ ...props }: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\n/** Full-screen scrim rendered behind the sheet content. */\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Predefined scrim styles for the sheet overlay. Pass via `overlay`. */\nconst sheetOverlayVariants = {\n default: \"bg-overlay-bg\",\n dark: \"bg-black/50\",\n glass: \"bg-glass-40-bg backdrop-blur-glass\",\n none: \"bg-transparent\",\n} as const;\n\n/** The sliding panel surface (portaled, with its overlay). Holds the header, body, and footer. */\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n overlay = \"default\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n /** Edge the sheet slides in from. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Whether to render the built-in top-right close (X) button. */\n showCloseButton?: boolean;\n /** Scrim style behind the sheet (e.g. `glass` for drawer patterns). */\n overlay?: keyof typeof sheetOverlayVariants;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={sheetOverlayVariants[overlay]} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n // Figma: bg/primary panel with shadow-lg only (no border binding);\n // radius-8 on the inward edge — the outer edge sits flush.\n \"bg-primary-bg data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 overflow-y-auto shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 rounded-l-8 sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 rounded-r-8 sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto rounded-b-8\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto rounded-t-8\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute top-4 right-4 rounded-2 opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-focus focus-visible:ring-3 focus:outline-hidden disabled:pointer-events-none\">\n <Icon as={XIcon} className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\n/** Top region of the sheet; typically holds the `SheetTitle` and `SheetDescription`. */\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"sheet-header\" className={cn(\"flex flex-col gap-2 p-6\", className)} {...props} />\n );\n}\n\n/** Bottom region of the sheet, pinned to the base; typically holds action buttons. */\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\n \"mt-auto flex flex-col-reverse gap-3 p-6 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible title for the sheet, announced when it opens. */\nfunction SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n // Figma: heading 4 (Outfit Regular 20/24). Bound to raw neutral/900 in\n // Figma — we use content/primary (flag #13).\n className={cn(\n \"font-heading text-[length:var(--heading-4-font-size)] leading-[var(--heading-4-line-height)] font-normal text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Accessible supporting text for the sheet, linked to the dialog for screen readers. */\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-txt text-sm leading-5\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"],"mappings":";;;;;;;AAQA,SAAS,MAAM,EAAE,GAAG,SAA2D;CAC7E,OAAO,oBAACA,OAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;;AAGA,SAAS,aAAa,EAAE,GAAG,SAA8D;CACvF,OAAO,oBAACA,OAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;;AAGA,SAAS,WAAW,EAAE,GAAG,SAA4D;CACnF,OAAO,oBAACA,OAAe,OAAhB;EAAsB,aAAU;EAAc,GAAI;CAAQ,CAAA;AACnE;;AAGA,SAAS,YAAY,EAAE,GAAG,SAA6D;CACrF,OAAO,oBAACA,OAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;;AAGA,SAAS,aAAa,EACpB,WACA,GAAG,SACmD;CACtD,OACE,oBAACA,OAAe,SAAhB;EACE,aAAU;EACV,WAAW,GACT,8IACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,MAAM,uBAAuB;CAC3B,SAAS;CACT,MAAM;CACN,OAAO;CACP,MAAM;AACR;;AAGA,SAAS,aAAa,EACpB,WACA,UACA,OAAO,SACP,kBAAkB,MAClB,UAAU,WACV,GAAG,SAQF;CACD,OACE,qBAAC,aAAD,EAAA,UAAA,CACE,oBAAC,cAAD,EAAc,WAAW,qBAAqB,SAAW,CAAA,GACzD,qBAACA,OAAe,SAAhB;EACE,aAAU;EACV,WAAW,GAGT,8NACA,SAAS,WACP,uIACF,SAAS,UACP,oIACF,SAAS,SACP,+GACF,SAAS,YACP,wHACF,SACF;EACA,GAAI;YAhBN,CAkBG,UACA,mBACC,qBAACA,OAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,oBAAC,MAAD;IAAM,IAAI;IAAO,WAAU;GAAU,CAAA,GACrC,oBAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IAEF;GACb,EAAA,CAAA;AAEjB;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,sEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAA4D;CAC9F,OACE,oBAACA,OAAe,OAAhB;EACE,aAAU;EAGV,WAAW,GACT,6HACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,OAAe,aAAhB;EACE,aAAU;EACV,WAAW,GAAG,oCAAoC,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL"}
@@ -3,8 +3,8 @@ const require_chunk = require("../../chunk.cjs");
3
3
  const require_cn = require("../../cn.cjs");
4
4
  let react = require("react");
5
5
  react = require_chunk.__toESM(react);
6
- let radix_ui = require("radix-ui");
7
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let radix_ui = require("radix-ui");
8
8
  //#region src/primitives/Slider/Slider.tsx
9
9
  /**
10
10
  * A range input built on Radix Slider. Renders one thumb per value, so passing a
@@ -1,7 +1,7 @@
1
1
  import { t as cn } from "../../cn.js";
2
2
  import * as React from "react";
3
- import { Slider as Slider$1 } from "radix-ui";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Slider as Slider$1 } from "radix-ui";
5
5
  //#region src/primitives/Slider/Slider.tsx
6
6
  /**
7
7
  * A range input built on Radix Slider. Renders one thumb per value, so passing a