@psnext/design-system 1.5.1 → 2.0.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 (647) hide show
  1. package/DESIGN.md +639 -0
  2. package/README.md +39 -2
  3. package/SKILL.md +101 -0
  4. package/bin/install-agent-skill.mjs +54 -0
  5. package/dist/Header.cjs +25 -25
  6. package/dist/Header.cjs.map +1 -1
  7. package/dist/Header.js +25 -25
  8. package/dist/Header.js.map +1 -1
  9. package/dist/Icon.cjs +19 -19
  10. package/dist/Icon.cjs.map +1 -1
  11. package/dist/Icon.js +19 -19
  12. package/dist/Icon.js.map +1 -1
  13. package/dist/Logo.cjs +4 -14
  14. package/dist/Logo.cjs.map +1 -1
  15. package/dist/Logo.js +4 -14
  16. package/dist/Logo.js.map +1 -1
  17. package/dist/Sidebar.cjs +26 -20
  18. package/dist/Sidebar.cjs.map +1 -1
  19. package/dist/Sidebar.js +21 -21
  20. package/dist/Sidebar.js.map +1 -1
  21. package/dist/cn.cjs +14 -1
  22. package/dist/cn.cjs.map +1 -1
  23. package/dist/cn.js +14 -1
  24. package/dist/cn.js.map +1 -1
  25. package/dist/index.cjs +13 -10
  26. package/dist/index.d.cts +5 -5
  27. package/dist/index.d.cts.map +1 -1
  28. package/dist/index.d.ts +5 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +5 -4
  31. package/dist/index10.d.cts +7 -7
  32. package/dist/index10.d.cts.map +1 -1
  33. package/dist/index10.d.ts +7 -7
  34. package/dist/index11.d.cts +3 -3
  35. package/dist/index11.d.cts.map +1 -1
  36. package/dist/index11.d.ts +3 -3
  37. package/dist/index11.d.ts.map +1 -1
  38. package/dist/index12.d.cts +18 -17
  39. package/dist/index12.d.cts.map +1 -1
  40. package/dist/index12.d.ts +18 -17
  41. package/dist/index12.d.ts.map +1 -1
  42. package/dist/index13.d.cts +6 -6
  43. package/dist/index13.d.cts.map +1 -1
  44. package/dist/index13.d.ts +6 -6
  45. package/dist/index14.d.cts +5 -5
  46. package/dist/index14.d.cts.map +1 -1
  47. package/dist/index14.d.ts +5 -5
  48. package/dist/index14.d.ts.map +1 -1
  49. package/dist/index15.d.cts +3 -3
  50. package/dist/index15.d.cts.map +1 -1
  51. package/dist/index15.d.ts +3 -3
  52. package/dist/index15.d.ts.map +1 -1
  53. package/dist/index16.d.cts +2 -2
  54. package/dist/index16.d.cts.map +1 -1
  55. package/dist/index16.d.ts +2 -2
  56. package/dist/index17.d.cts +4 -4
  57. package/dist/index17.d.cts.map +1 -1
  58. package/dist/index17.d.ts +4 -4
  59. package/dist/index17.d.ts.map +1 -1
  60. package/dist/index18.d.cts +11 -11
  61. package/dist/index18.d.cts.map +1 -1
  62. package/dist/index18.d.ts +11 -11
  63. package/dist/index19.d.cts +10 -10
  64. package/dist/index19.d.cts.map +1 -1
  65. package/dist/index19.d.ts +10 -10
  66. package/dist/index19.d.ts.map +1 -1
  67. package/dist/index2.d.cts +8 -8
  68. package/dist/index2.d.cts.map +1 -1
  69. package/dist/index2.d.ts +8 -8
  70. package/dist/index2.d.ts.map +1 -1
  71. package/dist/index20.d.cts +16 -16
  72. package/dist/index20.d.cts.map +1 -1
  73. package/dist/index20.d.ts +16 -16
  74. package/dist/index20.d.ts.map +1 -1
  75. package/dist/index21.d.cts +4 -4
  76. package/dist/index21.d.cts.map +1 -1
  77. package/dist/index21.d.ts +4 -4
  78. package/dist/index22.d.cts +11 -11
  79. package/dist/index22.d.cts.map +1 -1
  80. package/dist/index22.d.ts +11 -11
  81. package/dist/index22.d.ts.map +1 -1
  82. package/dist/index23.d.cts +16 -16
  83. package/dist/index23.d.cts.map +1 -1
  84. package/dist/index23.d.ts +16 -16
  85. package/dist/index23.d.ts.map +1 -1
  86. package/dist/index24.d.cts +10 -10
  87. package/dist/index24.d.cts.map +1 -1
  88. package/dist/index24.d.ts +10 -10
  89. package/dist/index25.d.cts +2 -2
  90. package/dist/index25.d.ts +2 -2
  91. package/dist/index25.d.ts.map +1 -1
  92. package/dist/index26.d.cts +14 -14
  93. package/dist/index26.d.cts.map +1 -1
  94. package/dist/index26.d.ts +14 -14
  95. package/dist/index26.d.ts.map +1 -1
  96. package/dist/index27.d.cts +7 -7
  97. package/dist/index27.d.ts +7 -7
  98. package/dist/index27.d.ts.map +1 -1
  99. package/dist/index28.d.cts +6 -6
  100. package/dist/index28.d.ts +5 -5
  101. package/dist/index28.d.ts.map +1 -1
  102. package/dist/index29.d.cts +4 -4
  103. package/dist/index29.d.ts +4 -4
  104. package/dist/index29.d.ts.map +1 -1
  105. package/dist/index3.d.cts +13 -13
  106. package/dist/index3.d.cts.map +1 -1
  107. package/dist/index3.d.ts +13 -13
  108. package/dist/index3.d.ts.map +1 -1
  109. package/dist/index30.d.cts +6 -6
  110. package/dist/index30.d.ts +4 -4
  111. package/dist/index31.d.cts +4 -4
  112. package/dist/index31.d.cts.map +1 -1
  113. package/dist/index31.d.ts +4 -4
  114. package/dist/index31.d.ts.map +1 -1
  115. package/dist/index32.d.cts +8 -5
  116. package/dist/index32.d.cts.map +1 -1
  117. package/dist/index32.d.ts +9 -6
  118. package/dist/index32.d.ts.map +1 -1
  119. package/dist/index33.d.cts +14 -10
  120. package/dist/index33.d.cts.map +1 -1
  121. package/dist/index33.d.ts +15 -11
  122. package/dist/index33.d.ts.map +1 -1
  123. package/dist/index34.d.cts +5 -5
  124. package/dist/index34.d.ts +5 -5
  125. package/dist/index34.d.ts.map +1 -1
  126. package/dist/index35.d.cts +14 -14
  127. package/dist/index35.d.ts +14 -14
  128. package/dist/index35.d.ts.map +1 -1
  129. package/dist/index36.d.cts +3 -3
  130. package/dist/index36.d.cts.map +1 -1
  131. package/dist/index36.d.ts +3 -3
  132. package/dist/index36.d.ts.map +1 -1
  133. package/dist/index37.d.cts +5 -5
  134. package/dist/index37.d.ts +4 -4
  135. package/dist/index37.d.ts.map +1 -1
  136. package/dist/index38.d.cts +2 -2
  137. package/dist/index38.d.ts +2 -2
  138. package/dist/index39.d.cts +17 -17
  139. package/dist/index39.d.cts.map +1 -1
  140. package/dist/index39.d.ts +17 -17
  141. package/dist/index39.d.ts.map +1 -1
  142. package/dist/index4.d.cts +2 -2
  143. package/dist/index4.d.cts.map +1 -1
  144. package/dist/index4.d.ts +2 -2
  145. package/dist/index4.d.ts.map +1 -1
  146. package/dist/index40.d.cts +4 -4
  147. package/dist/index40.d.cts.map +1 -1
  148. package/dist/index40.d.ts +5 -5
  149. package/dist/index40.d.ts.map +1 -1
  150. package/dist/index41.d.cts +11 -11
  151. package/dist/index41.d.cts.map +1 -1
  152. package/dist/index41.d.ts +11 -11
  153. package/dist/index41.d.ts.map +1 -1
  154. package/dist/index42.d.cts +8 -8
  155. package/dist/index42.d.cts.map +1 -1
  156. package/dist/index42.d.ts +8 -8
  157. package/dist/index42.d.ts.map +1 -1
  158. package/dist/index43.d.cts +10 -10
  159. package/dist/index43.d.cts.map +1 -1
  160. package/dist/index43.d.ts +10 -10
  161. package/dist/index43.d.ts.map +1 -1
  162. package/dist/index44.d.cts +1 -48
  163. package/dist/index44.d.ts +1 -48
  164. package/dist/index45.d.cts +42 -22
  165. package/dist/index45.d.cts.map +1 -1
  166. package/dist/index45.d.ts +42 -22
  167. package/dist/index45.d.ts.map +1 -1
  168. package/dist/index46.d.cts +21 -34
  169. package/dist/index46.d.cts.map +1 -1
  170. package/dist/index46.d.ts +21 -34
  171. package/dist/index46.d.ts.map +1 -1
  172. package/dist/index47.d.cts +33 -17
  173. package/dist/index47.d.cts.map +1 -1
  174. package/dist/index47.d.ts +33 -17
  175. package/dist/index47.d.ts.map +1 -1
  176. package/dist/index48.d.cts +18 -14
  177. package/dist/index48.d.cts.map +1 -1
  178. package/dist/index48.d.ts +18 -14
  179. package/dist/index48.d.ts.map +1 -1
  180. package/dist/index49.d.cts +12 -60
  181. package/dist/index49.d.cts.map +1 -1
  182. package/dist/index49.d.ts +12 -60
  183. package/dist/index49.d.ts.map +1 -1
  184. package/dist/index5.d.cts +7 -7
  185. package/dist/index5.d.cts.map +1 -1
  186. package/dist/index5.d.ts +7 -7
  187. package/dist/index5.d.ts.map +1 -1
  188. package/dist/index50.d.cts +55 -49
  189. package/dist/index50.d.cts.map +1 -1
  190. package/dist/index50.d.ts +55 -49
  191. package/dist/index50.d.ts.map +1 -1
  192. package/dist/index51.d.cts +56 -24
  193. package/dist/index51.d.cts.map +1 -1
  194. package/dist/index51.d.ts +56 -24
  195. package/dist/index51.d.ts.map +1 -1
  196. package/dist/index52.d.cts +25 -203
  197. package/dist/index52.d.cts.map +1 -1
  198. package/dist/index52.d.ts +25 -203
  199. package/dist/index52.d.ts.map +1 -1
  200. package/dist/index53.d.cts +198 -15
  201. package/dist/index53.d.cts.map +1 -1
  202. package/dist/index53.d.ts +198 -15
  203. package/dist/index53.d.ts.map +1 -1
  204. package/dist/index54.d.cts +21 -23
  205. package/dist/index54.d.cts.map +1 -1
  206. package/dist/index54.d.ts +21 -23
  207. package/dist/index54.d.ts.map +1 -1
  208. package/dist/index55.d.cts +21 -18
  209. package/dist/index55.d.cts.map +1 -1
  210. package/dist/index55.d.ts +21 -18
  211. package/dist/index55.d.ts.map +1 -1
  212. package/dist/index56.d.cts +21 -8
  213. package/dist/index56.d.cts.map +1 -1
  214. package/dist/index56.d.ts +21 -8
  215. package/dist/index56.d.ts.map +1 -1
  216. package/dist/index57.d.cts +6 -44
  217. package/dist/index57.d.cts.map +1 -1
  218. package/dist/index57.d.ts +6 -44
  219. package/dist/index57.d.ts.map +1 -1
  220. package/dist/index58.d.cts +46 -47
  221. package/dist/index58.d.cts.map +1 -1
  222. package/dist/index58.d.ts +46 -47
  223. package/dist/index58.d.ts.map +1 -1
  224. package/dist/index59.d.cts +47 -59
  225. package/dist/index59.d.cts.map +1 -1
  226. package/dist/index59.d.ts +47 -59
  227. package/dist/index59.d.ts.map +1 -1
  228. package/dist/index6.d.cts +7 -7
  229. package/dist/index6.d.cts.map +1 -1
  230. package/dist/index6.d.ts +7 -7
  231. package/dist/index6.d.ts.map +1 -1
  232. package/dist/index60.d.cts +56 -38
  233. package/dist/index60.d.cts.map +1 -1
  234. package/dist/index60.d.ts +56 -38
  235. package/dist/index60.d.ts.map +1 -1
  236. package/dist/index61.d.cts +38 -14
  237. package/dist/index61.d.cts.map +1 -1
  238. package/dist/index61.d.ts +38 -14
  239. package/dist/index61.d.ts.map +1 -1
  240. package/dist/index62.d.cts +20 -41
  241. package/dist/index62.d.cts.map +1 -1
  242. package/dist/index62.d.ts +20 -41
  243. package/dist/index62.d.ts.map +1 -1
  244. package/dist/index63.d.cts +41 -19
  245. package/dist/index63.d.cts.map +1 -1
  246. package/dist/index63.d.ts +41 -19
  247. package/dist/index63.d.ts.map +1 -1
  248. package/dist/index64.d.cts +14 -39
  249. package/dist/index64.d.cts.map +1 -1
  250. package/dist/index64.d.ts +14 -39
  251. package/dist/index64.d.ts.map +1 -1
  252. package/dist/index65.d.cts +39 -16
  253. package/dist/index65.d.cts.map +1 -1
  254. package/dist/index65.d.ts +39 -16
  255. package/dist/index65.d.ts.map +1 -1
  256. package/dist/index66.d.cts +18 -12
  257. package/dist/index66.d.cts.map +1 -1
  258. package/dist/index66.d.ts +18 -12
  259. package/dist/index66.d.ts.map +1 -1
  260. package/dist/index67.d.cts +12 -30
  261. package/dist/index67.d.cts.map +1 -1
  262. package/dist/index67.d.ts +12 -30
  263. package/dist/index67.d.ts.map +1 -1
  264. package/dist/index68.d.cts +28 -27
  265. package/dist/index68.d.cts.map +1 -1
  266. package/dist/index68.d.ts +28 -27
  267. package/dist/index68.d.ts.map +1 -1
  268. package/dist/index69.d.cts +36 -69
  269. package/dist/index69.d.cts.map +1 -0
  270. package/dist/index69.d.ts +36 -69
  271. package/dist/index69.d.ts.map +1 -0
  272. package/dist/index7.d.cts +8 -8
  273. package/dist/index7.d.cts.map +1 -1
  274. package/dist/index7.d.ts +8 -8
  275. package/dist/index70.d.cts +76 -237
  276. package/dist/index70.d.cts.map +1 -1
  277. package/dist/index70.d.ts +76 -237
  278. package/dist/index70.d.ts.map +1 -1
  279. package/dist/index71.d.cts +242 -0
  280. package/dist/index71.d.cts.map +1 -0
  281. package/dist/index71.d.ts +242 -0
  282. package/dist/index71.d.ts.map +1 -0
  283. package/dist/index8.d.cts +4 -4
  284. package/dist/index8.d.cts.map +1 -1
  285. package/dist/index8.d.ts +4 -4
  286. package/dist/index8.d.ts.map +1 -1
  287. package/dist/index9.d.cts +2 -2
  288. package/dist/index9.d.ts +2 -2
  289. package/dist/layouts/Container/index.cjs +4 -4
  290. package/dist/layouts/Container/index.cjs.map +1 -1
  291. package/dist/layouts/Container/index.d.cts +1 -1
  292. package/dist/layouts/Container/index.d.ts +1 -1
  293. package/dist/layouts/Container/index.js +4 -4
  294. package/dist/layouts/Container/index.js.map +1 -1
  295. package/dist/layouts/PageBackground/index.cjs +2 -2
  296. package/dist/layouts/PageBackground/index.cjs.map +1 -1
  297. package/dist/layouts/PageBackground/index.d.cts +1 -1
  298. package/dist/layouts/PageBackground/index.d.ts +1 -1
  299. package/dist/layouts/PageBackground/index.js +2 -2
  300. package/dist/layouts/PageBackground/index.js.map +1 -1
  301. package/dist/layouts/Stack/index.d.cts +1 -1
  302. package/dist/layouts/Stack/index.d.ts +1 -1
  303. package/dist/layouts/TwoColumn/index.d.cts +1 -1
  304. package/dist/layouts/TwoColumn/index.d.ts +1 -1
  305. package/dist/layouts/index.d.cts +4 -4
  306. package/dist/layouts/index.d.ts +4 -4
  307. package/dist/patterns/DataTable/index.cjs +12 -7
  308. package/dist/patterns/DataTable/index.cjs.map +1 -1
  309. package/dist/patterns/DataTable/index.d.cts +3 -3
  310. package/dist/patterns/DataTable/index.d.cts.map +1 -1
  311. package/dist/patterns/DataTable/index.d.ts +3 -3
  312. package/dist/patterns/DataTable/index.d.ts.map +1 -1
  313. package/dist/patterns/DataTable/index.js +12 -7
  314. package/dist/patterns/DataTable/index.js.map +1 -1
  315. package/dist/patterns/Footer/index.cjs +5 -5
  316. package/dist/patterns/Footer/index.cjs.map +1 -1
  317. package/dist/patterns/Footer/index.d.cts +9 -9
  318. package/dist/patterns/Footer/index.d.cts.map +1 -1
  319. package/dist/patterns/Footer/index.d.ts +9 -9
  320. package/dist/patterns/Footer/index.d.ts.map +1 -1
  321. package/dist/patterns/Footer/index.js +5 -5
  322. package/dist/patterns/Footer/index.js.map +1 -1
  323. package/dist/patterns/Header/index.d.cts +1 -1
  324. package/dist/patterns/Header/index.d.ts +1 -1
  325. package/dist/patterns/MediaObject/index.cjs +1 -1
  326. package/dist/patterns/MediaObject/index.cjs.map +1 -1
  327. package/dist/patterns/MediaObject/index.d.cts +12 -12
  328. package/dist/patterns/MediaObject/index.d.cts.map +1 -1
  329. package/dist/patterns/MediaObject/index.d.ts +13 -13
  330. package/dist/patterns/MediaObject/index.d.ts.map +1 -1
  331. package/dist/patterns/MediaObject/index.js +1 -1
  332. package/dist/patterns/MediaObject/index.js.map +1 -1
  333. package/dist/patterns/NavRail/index.cjs +195 -0
  334. package/dist/patterns/NavRail/index.cjs.map +1 -0
  335. package/dist/patterns/NavRail/index.d.cts +2 -0
  336. package/dist/patterns/NavRail/index.d.ts +2 -0
  337. package/dist/patterns/NavRail/index.js +185 -0
  338. package/dist/patterns/NavRail/index.js.map +1 -0
  339. package/dist/patterns/SectionCard/index.cjs +1 -1
  340. package/dist/patterns/SectionCard/index.cjs.map +1 -1
  341. package/dist/patterns/SectionCard/index.d.cts +2 -2
  342. package/dist/patterns/SectionCard/index.d.ts +2 -2
  343. package/dist/patterns/SectionCard/index.d.ts.map +1 -1
  344. package/dist/patterns/SectionCard/index.js +1 -1
  345. package/dist/patterns/SectionCard/index.js.map +1 -1
  346. package/dist/patterns/SectionHeading/index.d.cts +2 -2
  347. package/dist/patterns/SectionHeading/index.d.cts.map +1 -1
  348. package/dist/patterns/SectionHeading/index.d.ts +2 -2
  349. package/dist/patterns/SectionHeading/index.d.ts.map +1 -1
  350. package/dist/patterns/index.cjs +9 -0
  351. package/dist/patterns/index.d.cts +3 -2
  352. package/dist/patterns/index.d.ts +3 -2
  353. package/dist/patterns/index.js +2 -1
  354. package/dist/primitives/Accordion/index.cjs +6 -6
  355. package/dist/primitives/Accordion/index.cjs.map +1 -1
  356. package/dist/primitives/Accordion/index.js +6 -6
  357. package/dist/primitives/Accordion/index.js.map +1 -1
  358. package/dist/primitives/Alert/index.cjs +4 -4
  359. package/dist/primitives/Alert/index.cjs.map +1 -1
  360. package/dist/primitives/Alert/index.js +4 -4
  361. package/dist/primitives/Alert/index.js.map +1 -1
  362. package/dist/primitives/AlertDialog/index.cjs +4 -4
  363. package/dist/primitives/AlertDialog/index.cjs.map +1 -1
  364. package/dist/primitives/AlertDialog/index.js +4 -4
  365. package/dist/primitives/AlertDialog/index.js.map +1 -1
  366. package/dist/primitives/Avatar/index.cjs +5 -5
  367. package/dist/primitives/Avatar/index.cjs.map +1 -1
  368. package/dist/primitives/Avatar/index.js +5 -5
  369. package/dist/primitives/Avatar/index.js.map +1 -1
  370. package/dist/primitives/Badge/index.cjs +11 -10
  371. package/dist/primitives/Badge/index.cjs.map +1 -1
  372. package/dist/primitives/Badge/index.js +11 -10
  373. package/dist/primitives/Badge/index.js.map +1 -1
  374. package/dist/primitives/Breadcrumb/index.cjs +4 -4
  375. package/dist/primitives/Breadcrumb/index.cjs.map +1 -1
  376. package/dist/primitives/Breadcrumb/index.js +4 -4
  377. package/dist/primitives/Breadcrumb/index.js.map +1 -1
  378. package/dist/primitives/Button/index.cjs +20 -13
  379. package/dist/primitives/Button/index.cjs.map +1 -1
  380. package/dist/primitives/Button/index.js +20 -13
  381. package/dist/primitives/Button/index.js.map +1 -1
  382. package/dist/primitives/ButtonGroup/index.cjs +3 -3
  383. package/dist/primitives/ButtonGroup/index.cjs.map +1 -1
  384. package/dist/primitives/ButtonGroup/index.js +3 -3
  385. package/dist/primitives/ButtonGroup/index.js.map +1 -1
  386. package/dist/primitives/Calendar/index.cjs +22 -21
  387. package/dist/primitives/Calendar/index.cjs.map +1 -1
  388. package/dist/primitives/Calendar/index.js +22 -21
  389. package/dist/primitives/Calendar/index.js.map +1 -1
  390. package/dist/primitives/Card/index.cjs +18 -16
  391. package/dist/primitives/Card/index.cjs.map +1 -1
  392. package/dist/primitives/Card/index.js +18 -16
  393. package/dist/primitives/Card/index.js.map +1 -1
  394. package/dist/primitives/Carousel/index.cjs +2 -2
  395. package/dist/primitives/Carousel/index.cjs.map +1 -1
  396. package/dist/primitives/Carousel/index.js +2 -2
  397. package/dist/primitives/Carousel/index.js.map +1 -1
  398. package/dist/primitives/Chart/index.cjs +12 -12
  399. package/dist/primitives/Chart/index.cjs.map +1 -1
  400. package/dist/primitives/Chart/index.js +12 -12
  401. package/dist/primitives/Chart/index.js.map +1 -1
  402. package/dist/primitives/Checkbox/index.cjs +6 -6
  403. package/dist/primitives/Checkbox/index.cjs.map +1 -1
  404. package/dist/primitives/Checkbox/index.js +6 -6
  405. package/dist/primitives/Checkbox/index.js.map +1 -1
  406. package/dist/primitives/CheckboxTree/index.cjs +2 -2
  407. package/dist/primitives/CheckboxTree/index.cjs.map +1 -1
  408. package/dist/primitives/CheckboxTree/index.js +2 -2
  409. package/dist/primitives/CheckboxTree/index.js.map +1 -1
  410. package/dist/primitives/Command/index.cjs +9 -9
  411. package/dist/primitives/Command/index.cjs.map +1 -1
  412. package/dist/primitives/Command/index.js +9 -9
  413. package/dist/primitives/Command/index.js.map +1 -1
  414. package/dist/primitives/ContextMenu/index.cjs +10 -10
  415. package/dist/primitives/ContextMenu/index.cjs.map +1 -1
  416. package/dist/primitives/ContextMenu/index.js +10 -10
  417. package/dist/primitives/ContextMenu/index.js.map +1 -1
  418. package/dist/primitives/Credits/index.cjs +4 -4
  419. package/dist/primitives/Credits/index.cjs.map +1 -1
  420. package/dist/primitives/Credits/index.js +4 -4
  421. package/dist/primitives/Credits/index.js.map +1 -1
  422. package/dist/primitives/Dialog/index.cjs +5 -5
  423. package/dist/primitives/Dialog/index.cjs.map +1 -1
  424. package/dist/primitives/Dialog/index.js +5 -5
  425. package/dist/primitives/Dialog/index.js.map +1 -1
  426. package/dist/primitives/Drawer/index.cjs +5 -5
  427. package/dist/primitives/Drawer/index.cjs.map +1 -1
  428. package/dist/primitives/Drawer/index.js +5 -5
  429. package/dist/primitives/Drawer/index.js.map +1 -1
  430. package/dist/primitives/DropdownMenu/index.cjs +9 -9
  431. package/dist/primitives/DropdownMenu/index.cjs.map +1 -1
  432. package/dist/primitives/DropdownMenu/index.js +9 -9
  433. package/dist/primitives/DropdownMenu/index.js.map +1 -1
  434. package/dist/primitives/Empty/index.cjs +4 -4
  435. package/dist/primitives/Empty/index.cjs.map +1 -1
  436. package/dist/primitives/Empty/index.js +4 -4
  437. package/dist/primitives/Empty/index.js.map +1 -1
  438. package/dist/primitives/Field/index.cjs +5 -5
  439. package/dist/primitives/Field/index.cjs.map +1 -1
  440. package/dist/primitives/Field/index.js +5 -5
  441. package/dist/primitives/Field/index.js.map +1 -1
  442. package/dist/primitives/Form/index.cjs +1 -1
  443. package/dist/primitives/Form/index.cjs.map +1 -1
  444. package/dist/primitives/Form/index.js +1 -1
  445. package/dist/primitives/Form/index.js.map +1 -1
  446. package/dist/primitives/Heading/index.cjs +2 -2
  447. package/dist/primitives/Heading/index.cjs.map +1 -1
  448. package/dist/primitives/Heading/index.js +2 -2
  449. package/dist/primitives/Heading/index.js.map +1 -1
  450. package/dist/primitives/HoverCard/index.cjs +1 -1
  451. package/dist/primitives/HoverCard/index.cjs.map +1 -1
  452. package/dist/primitives/HoverCard/index.js +1 -1
  453. package/dist/primitives/HoverCard/index.js.map +1 -1
  454. package/dist/primitives/InfoBanner/index.cjs +12 -12
  455. package/dist/primitives/InfoBanner/index.cjs.map +1 -1
  456. package/dist/primitives/InfoBanner/index.js +12 -12
  457. package/dist/primitives/InfoBanner/index.js.map +1 -1
  458. package/dist/primitives/Input/index.cjs +13 -7
  459. package/dist/primitives/Input/index.cjs.map +1 -1
  460. package/dist/primitives/Input/index.js +13 -7
  461. package/dist/primitives/Input/index.js.map +1 -1
  462. package/dist/primitives/InputGroup/index.cjs +7 -7
  463. package/dist/primitives/InputGroup/index.cjs.map +1 -1
  464. package/dist/primitives/InputGroup/index.js +7 -7
  465. package/dist/primitives/InputGroup/index.js.map +1 -1
  466. package/dist/primitives/InputOtp/index.cjs +3 -3
  467. package/dist/primitives/InputOtp/index.cjs.map +1 -1
  468. package/dist/primitives/InputOtp/index.js +3 -3
  469. package/dist/primitives/InputOtp/index.js.map +1 -1
  470. package/dist/primitives/Item/index.cjs +6 -6
  471. package/dist/primitives/Item/index.cjs.map +1 -1
  472. package/dist/primitives/Item/index.js +6 -6
  473. package/dist/primitives/Item/index.js.map +1 -1
  474. package/dist/primitives/Kbd/index.cjs +1 -1
  475. package/dist/primitives/Kbd/index.cjs.map +1 -1
  476. package/dist/primitives/Kbd/index.js +1 -1
  477. package/dist/primitives/Kbd/index.js.map +1 -1
  478. package/dist/primitives/Link/index.cjs +4 -4
  479. package/dist/primitives/Link/index.cjs.map +1 -1
  480. package/dist/primitives/Link/index.js +4 -4
  481. package/dist/primitives/Link/index.js.map +1 -1
  482. package/dist/primitives/Menubar/index.cjs +12 -12
  483. package/dist/primitives/Menubar/index.cjs.map +1 -1
  484. package/dist/primitives/Menubar/index.js +12 -12
  485. package/dist/primitives/Menubar/index.js.map +1 -1
  486. package/dist/primitives/NativeSelect/index.cjs +5 -5
  487. package/dist/primitives/NativeSelect/index.cjs.map +1 -1
  488. package/dist/primitives/NativeSelect/index.js +5 -5
  489. package/dist/primitives/NativeSelect/index.js.map +1 -1
  490. package/dist/primitives/NavRail/index.cjs +9 -194
  491. package/dist/primitives/NavRail/index.d.cts +1 -0
  492. package/dist/primitives/NavRail/index.d.ts +1 -0
  493. package/dist/primitives/NavRail/index.js +1 -184
  494. package/dist/primitives/NavigationMenu/index.cjs +7 -7
  495. package/dist/primitives/NavigationMenu/index.cjs.map +1 -1
  496. package/dist/primitives/NavigationMenu/index.js +7 -7
  497. package/dist/primitives/NavigationMenu/index.js.map +1 -1
  498. package/dist/primitives/Pagination/index.cjs +7 -13
  499. package/dist/primitives/Pagination/index.cjs.map +1 -1
  500. package/dist/primitives/Pagination/index.d.cts +1 -1
  501. package/dist/primitives/Pagination/index.d.ts +1 -1
  502. package/dist/primitives/Pagination/index.js +8 -14
  503. package/dist/primitives/Pagination/index.js.map +1 -1
  504. package/dist/primitives/Popover/index.cjs +4 -4
  505. package/dist/primitives/Popover/index.cjs.map +1 -1
  506. package/dist/primitives/Popover/index.js +4 -4
  507. package/dist/primitives/Popover/index.js.map +1 -1
  508. package/dist/primitives/Progress/index.cjs +16 -16
  509. package/dist/primitives/Progress/index.cjs.map +1 -1
  510. package/dist/primitives/Progress/index.d.cts +1 -1
  511. package/dist/primitives/Progress/index.d.ts +1 -1
  512. package/dist/primitives/Progress/index.js +16 -16
  513. package/dist/primitives/Progress/index.js.map +1 -1
  514. package/dist/primitives/RadioGroup/index.cjs +7 -7
  515. package/dist/primitives/RadioGroup/index.cjs.map +1 -1
  516. package/dist/primitives/RadioGroup/index.d.cts +1 -1
  517. package/dist/primitives/RadioGroup/index.d.ts +1 -1
  518. package/dist/primitives/RadioGroup/index.js +7 -7
  519. package/dist/primitives/RadioGroup/index.js.map +1 -1
  520. package/dist/primitives/Resizable/index.cjs +2 -2
  521. package/dist/primitives/Resizable/index.cjs.map +1 -1
  522. package/dist/primitives/Resizable/index.d.cts +1 -1
  523. package/dist/primitives/Resizable/index.d.ts +1 -1
  524. package/dist/primitives/Resizable/index.js +2 -2
  525. package/dist/primitives/Resizable/index.js.map +1 -1
  526. package/dist/primitives/ScrollArea/index.cjs +2 -2
  527. package/dist/primitives/ScrollArea/index.cjs.map +1 -1
  528. package/dist/primitives/ScrollArea/index.d.cts +1 -1
  529. package/dist/primitives/ScrollArea/index.d.ts +1 -1
  530. package/dist/primitives/ScrollArea/index.js +2 -2
  531. package/dist/primitives/ScrollArea/index.js.map +1 -1
  532. package/dist/primitives/Select/index.cjs +8 -8
  533. package/dist/primitives/Select/index.cjs.map +1 -1
  534. package/dist/primitives/Select/index.d.cts +1 -1
  535. package/dist/primitives/Select/index.d.ts +1 -1
  536. package/dist/primitives/Select/index.js +8 -8
  537. package/dist/primitives/Select/index.js.map +1 -1
  538. package/dist/primitives/Separator/index.cjs +1 -1
  539. package/dist/primitives/Separator/index.cjs.map +1 -1
  540. package/dist/primitives/Separator/index.js +1 -1
  541. package/dist/primitives/Separator/index.js.map +1 -1
  542. package/dist/primitives/Sheet/index.cjs +8 -8
  543. package/dist/primitives/Sheet/index.cjs.map +1 -1
  544. package/dist/primitives/Sheet/index.d.cts +1 -1
  545. package/dist/primitives/Sheet/index.d.ts +1 -1
  546. package/dist/primitives/Sheet/index.js +8 -8
  547. package/dist/primitives/Sheet/index.js.map +1 -1
  548. package/dist/primitives/Sidebar/index.d.cts +1 -1
  549. package/dist/primitives/Sidebar/index.d.ts +1 -1
  550. package/dist/primitives/Skeleton/index.cjs +2 -2
  551. package/dist/primitives/Skeleton/index.cjs.map +1 -1
  552. package/dist/primitives/Skeleton/index.d.cts +1 -1
  553. package/dist/primitives/Skeleton/index.d.ts +1 -1
  554. package/dist/primitives/Skeleton/index.js +2 -2
  555. package/dist/primitives/Skeleton/index.js.map +1 -1
  556. package/dist/primitives/Slider/index.cjs +3 -3
  557. package/dist/primitives/Slider/index.cjs.map +1 -1
  558. package/dist/primitives/Slider/index.d.cts +1 -1
  559. package/dist/primitives/Slider/index.d.ts +1 -1
  560. package/dist/primitives/Slider/index.js +3 -3
  561. package/dist/primitives/Slider/index.js.map +1 -1
  562. package/dist/primitives/Sonner/index.cjs +13 -6
  563. package/dist/primitives/Sonner/index.cjs.map +1 -1
  564. package/dist/primitives/Sonner/index.d.cts +1 -1
  565. package/dist/primitives/Sonner/index.d.ts +1 -1
  566. package/dist/primitives/Sonner/index.js +13 -6
  567. package/dist/primitives/Sonner/index.js.map +1 -1
  568. package/dist/primitives/Spinner/index.d.cts +1 -1
  569. package/dist/primitives/Spinner/index.d.ts +1 -1
  570. package/dist/primitives/Switch/index.cjs +7 -7
  571. package/dist/primitives/Switch/index.cjs.map +1 -1
  572. package/dist/primitives/Switch/index.d.cts +1 -1
  573. package/dist/primitives/Switch/index.d.ts +1 -1
  574. package/dist/primitives/Switch/index.js +7 -7
  575. package/dist/primitives/Switch/index.js.map +1 -1
  576. package/dist/primitives/Table/index.cjs +7 -7
  577. package/dist/primitives/Table/index.cjs.map +1 -1
  578. package/dist/primitives/Table/index.d.cts +1 -1
  579. package/dist/primitives/Table/index.d.ts +1 -1
  580. package/dist/primitives/Table/index.js +7 -7
  581. package/dist/primitives/Table/index.js.map +1 -1
  582. package/dist/primitives/Tabs/index.cjs +21 -21
  583. package/dist/primitives/Tabs/index.cjs.map +1 -1
  584. package/dist/primitives/Tabs/index.d.cts +1 -1
  585. package/dist/primitives/Tabs/index.d.ts +1 -1
  586. package/dist/primitives/Tabs/index.js +21 -21
  587. package/dist/primitives/Tabs/index.js.map +1 -1
  588. package/dist/primitives/Text/index.cjs +5 -5
  589. package/dist/primitives/Text/index.cjs.map +1 -1
  590. package/dist/primitives/Text/index.d.cts +1 -1
  591. package/dist/primitives/Text/index.d.ts +1 -1
  592. package/dist/primitives/Text/index.js +5 -5
  593. package/dist/primitives/Text/index.js.map +1 -1
  594. package/dist/primitives/Textarea/index.cjs +20 -8
  595. package/dist/primitives/Textarea/index.cjs.map +1 -1
  596. package/dist/primitives/Textarea/index.d.cts +1 -1
  597. package/dist/primitives/Textarea/index.d.ts +1 -1
  598. package/dist/primitives/Textarea/index.js +20 -8
  599. package/dist/primitives/Textarea/index.js.map +1 -1
  600. package/dist/primitives/ThemeProvider/index.d.cts +1 -1
  601. package/dist/primitives/ThemeProvider/index.d.ts +1 -1
  602. package/dist/primitives/Toggle/index.cjs +11 -10
  603. package/dist/primitives/Toggle/index.cjs.map +1 -1
  604. package/dist/primitives/Toggle/index.d.cts +1 -1
  605. package/dist/primitives/Toggle/index.d.ts +1 -1
  606. package/dist/primitives/Toggle/index.js +11 -10
  607. package/dist/primitives/Toggle/index.js.map +1 -1
  608. package/dist/primitives/ToggleGroup/index.cjs +2 -2
  609. package/dist/primitives/ToggleGroup/index.cjs.map +1 -1
  610. package/dist/primitives/ToggleGroup/index.d.cts +1 -1
  611. package/dist/primitives/ToggleGroup/index.d.ts +1 -1
  612. package/dist/primitives/ToggleGroup/index.js +2 -2
  613. package/dist/primitives/ToggleGroup/index.js.map +1 -1
  614. package/dist/primitives/Tooltip/index.cjs +2 -2
  615. package/dist/primitives/Tooltip/index.cjs.map +1 -1
  616. package/dist/primitives/Tooltip/index.d.cts +1 -1
  617. package/dist/primitives/Tooltip/index.d.ts +1 -1
  618. package/dist/primitives/Tooltip/index.js +2 -2
  619. package/dist/primitives/Tooltip/index.js.map +1 -1
  620. package/dist/primitives/index.cjs +10 -10
  621. package/dist/primitives/index.d.cts +21 -21
  622. package/dist/primitives/index.d.ts +21 -21
  623. package/dist/primitives/index.js +2 -2
  624. package/dist/styles/base.css +23 -4
  625. package/dist/styles/brand-scopes.css +49 -0
  626. package/dist/styles/glass.css +13 -8
  627. package/dist/styles/index.css +8 -9
  628. package/dist/styles/theme.css +141 -90
  629. package/dist/styles/tokens/border-radius.css +8 -8
  630. package/dist/styles/tokens/mode-dark.css +71 -94
  631. package/dist/styles/tokens/mode-light.css +71 -94
  632. package/dist/styles/tokens/shadows.css +4 -7
  633. package/dist/styles/tokens/spacing.css +17 -37
  634. package/dist/styles/tokens/theme-bodhi.css +6 -28
  635. package/dist/styles/tokens/theme-slingshot.css +7 -28
  636. package/dist/styles/tokens/theme-sustain.css +6 -28
  637. package/dist/styles/typography.css +9 -9
  638. package/package.json +8 -2
  639. package/dist/index44.d.cts.map +0 -1
  640. package/dist/index44.d.ts.map +0 -1
  641. package/dist/primitives/NavRail/index.cjs.map +0 -1
  642. package/dist/primitives/NavRail/index.js.map +0 -1
  643. package/dist/styles/semantic.css +0 -178
  644. package/dist/styles/tokens/alpha.css +0 -39
  645. package/dist/styles/tokens/chart-colors-dark.css +0 -18
  646. package/dist/styles/tokens/chart-colors-light.css +0 -18
  647. package/dist/styles/tokens/colors.css +0 -251
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/InputGroup/InputGroup.tsx"],"sourcesContent":["\"use client\";\n\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Input } from \"@/primitives/Input\";\nimport { Textarea } from \"@/primitives/Textarea\";\nimport { cn } from \"@/utils\";\n\n/** Bordered container that groups a control (input/textarea) with addons, buttons, and text into one focusable field. */\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex w-full items-center rounded-xl border border-input shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-ring-error\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-5 [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\": \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\": \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\n/** A leading/trailing or stacked slot for icons, text, or buttons; clicking it focuses the group's input. */\nfunction InputGroupAddon({\n className,\n /** Where the addon sits relative to the control: inline (left/right) or block (top/bottom). */\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-5 px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\": \"size-6 rounded-5 p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\n/** A compact Button sized to sit inside an addon without overflowing the group's height. */\nfunction InputGroupButton({\n className,\n /** The button's HTML type; defaults to `\"button\"` so it does not submit forms. */\n type = \"button\",\n /** Visual style forwarded to the underlying Button; defaults to `\"ghost\"`. */\n variant = \"ghost\",\n /** Compact sizing tuned for the group: text (`xs`/`sm`) or square icon (`icon-xs`/`icon-sm`). */\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\n/** Muted inline text for prefixes, suffixes, or counts placed inside an addon (e.g. `$`, `USD`, `12 results`). */\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** The Input control for the group: borderless and transparent so the group container provides the chrome. */\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** The Textarea control for the group: borderless, transparent, and non-resizing so the group provides the chrome. */\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"mappings":";;;;;;;;AAWA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,GACT,2IACA,sCAGA,mDACA,iDACA,kIACA,4HAGA,mMAGA,gHAEA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,0BAA0B,IAC9B,mOACA;CACE,UAAU,EACR,OAAO;EACL,gBAAgB;EAChB,cAAc;EACd,eACE;EACF,aACE;CACJ,EACF;CACA,iBAAiB,EACf,OAAO,eACT;AACF,CACF;;AAGA,SAAS,gBAAgB,EACvB,WAEA,QAAQ,gBACR,GAAG,SAC0E;CAC7E,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,cAAY;EACZ,WAAW,GAAG,wBAAwB,EAAE,MAAM,CAAC,GAAG,SAAS;EAC3D,UAAU,MAAM;GACd,IAAK,EAAE,OAAuB,QAAQ,QAAQ,GAC5C;GAEF,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAM;EAC/D;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,2BAA2B,IAAI,+CAA+C;CAClF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,WAAW;EACX,WAAW;CACb,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CAAC;;AAGD,SAAS,iBAAiB,EACxB,WAEA,OAAO,UAEP,UAAU,SAEV,OAAO,MACP,GAAG,SAE4C;CAC/C,OACE,oBAAC,QAAD;EACQ;EACN,aAAW;EACF;EACT,WAAW,GAAG,yBAAyB,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAuC;CAC7E,OACE,oBAAC,QAAD;EACE,WAAW,GACT,0HACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAA6C;CACpF,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,gFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAA2C;CACrF,OACE,oBAAC,UAAD;EACE,aAAU;EACV,WAAW,GACT,iGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/InputGroup/InputGroup.tsx"],"sourcesContent":["\"use client\";\n\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Input } from \"@/primitives/Input\";\nimport { Textarea } from \"@/primitives/Textarea\";\nimport { cn } from \"@/utils\";\n\n/** Bordered container that groups a control (input/textarea) with addons, buttons, and text into one focusable field. */\nfunction InputGroup({\n className,\n /** Chrome style — `default` bordered group or `ai` (AI gradient border). */\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { variant?: \"default\" | \"ai\" }) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex w-full items-center rounded-12 transition-[color,box-shadow] outline-none\",\n // `ai` swaps the border for the AI gradient; contents are unchanged.\n variant === \"ai\"\n ? \"ai-border [--ai-surface:var(--input-bg)]\"\n : \"border border-primary-border\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-primary-invert-border has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-focus\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:border-danger-border has-[[data-slot][aria-invalid=true]]:ring-focus-error\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-txt select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-4 [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\": \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\": \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\n/** A leading/trailing or stacked slot for icons, text, or buttons; clicking it focuses the group's input. */\nfunction InputGroupAddon({\n className,\n /** Where the addon sits relative to the control: inline (left/right) or block (top/bottom). */\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\"flex items-center gap-2 text-sm shadow-none\", {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-4 px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-6 px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\": \"size-6 rounded-4 p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n});\n\n/** A compact Button sized to sit inside an addon without overflowing the group's height. */\nfunction InputGroupButton({\n className,\n /** The button's HTML type; defaults to `\"button\"` so it does not submit forms. */\n type = \"button\",\n /** Visual style forwarded to the underlying Button; defaults to `\"ghost\"`. */\n variant = \"ghost\",\n /** Compact sizing tuned for the group: text (`xs`/`sm`) or square icon (`icon-xs`/`icon-sm`). */\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\n/** Muted inline text for prefixes, suffixes, or counts placed inside an addon (e.g. `$`, `USD`, `12 results`). */\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-txt [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** The Input control for the group: borderless and transparent so the group container provides the chrome. */\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** The Textarea control for the group: borderless, transparent, and non-resizing so the group provides the chrome. */\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"mappings":";;;;;;;;AAWA,SAAS,WAAW,EAClB,WAEA,UAAU,WACV,GAAG,SAC4D;CAC/D,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,GACT,6GAEA,YAAY,OACR,6CACA,gCACJ,sCAGA,mDACA,iDACA,kIACA,4HAGA,8MAGA,mHAEA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,0BAA0B,IAC9B,4NACA;CACE,UAAU,EACR,OAAO;EACL,gBAAgB;EAChB,cAAc;EACd,eACE;EACF,aACE;CACJ,EACF;CACA,iBAAiB,EACf,OAAO,eACT;AACF,CACF;;AAGA,SAAS,gBAAgB,EACvB,WAEA,QAAQ,gBACR,GAAG,SAC0E;CAC7E,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,cAAY;EACZ,WAAW,GAAG,wBAAwB,EAAE,MAAM,CAAC,GAAG,SAAS;EAC3D,UAAU,MAAM;GACd,IAAK,EAAE,OAAuB,QAAQ,QAAQ,GAC5C;GAEF,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAM;EAC/D;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,2BAA2B,IAAI,+CAA+C;CAClF,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,WAAW;EACX,WAAW;CACb,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CAAC;;AAGD,SAAS,iBAAiB,EACxB,WAEA,OAAO,UAEP,UAAU,SAEV,OAAO,MACP,GAAG,SAE4C;CAC/C,OACE,oBAAC,QAAD;EACQ;EACN,aAAW;EACF;EACT,WAAW,GAAG,yBAAyB,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAuC;CAC7E,OACE,oBAAC,QAAD;EACE,WAAW,GACT,mHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAA6C;CACpF,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,gFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAA2C;CACrF,OACE,oBAAC,UAAD;EACE,aAAU;EACV,WAAW,GACT,iGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -47,17 +47,17 @@ function InputOTPSlot({ index, className, ...props }) {
47
47
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
48
48
  "data-slot": "input-otp-slot",
49
49
  "data-active": isActive,
50
- className: require_cn.cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-ring-error aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex items-center justify-center border-y border-r bg-input-background transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:z-10 data-[active=true]:ring-[3px]", inputOTPSlotSizes[size], className),
50
+ className: require_cn.cn("data-[active=true]:border-primary-invert-border data-[active=true]:ring-focus data-[active=true]:aria-invalid:ring-focus-error aria-invalid:border-danger-border data-[active=true]:aria-invalid:border-danger-border relative flex items-center justify-center border-y border-r border-secondary-border bg-input-bg transition-all outline-none first:rounded-l-8 first:border-l last:rounded-r-8 data-[active=true]:z-10 data-[active=true]:ring-3", inputOTPSlotSizes[size], className),
51
51
  ...props,
52
52
  children: [
53
53
  char,
54
54
  isEmpty && placeholder && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
55
- className: "text-muted-foreground pointer-events-none",
55
+ className: "text-muted-txt pointer-events-none",
56
56
  children: placeholder
57
57
  }),
58
58
  hasFakeCaret && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
59
59
  className: "pointer-events-none absolute inset-0 flex items-center justify-center",
60
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" })
60
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "animate-caret-blink bg-primary-txt h-4 w-px duration-1000" })
61
61
  })
62
62
  ]
63
63
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["React","OTPInput","cn","OTPInputContext","MinusIcon"],"sources":["../../../src/primitives/InputOtp/InputOtp.tsx"],"sourcesContent":["\"use client\";\n\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\ntype InputOTPSize = \"default\" | \"lg\" | \"sm\" | \"xs\";\n\ntype InputOTPContextValue = {\n size: InputOTPSize;\n placeholder?: string;\n};\n\nconst InputOTPSettingsContext = React.createContext<InputOTPContextValue>({\n size: \"default\",\n});\n\n// Sizes mirror the Figma \"Input\" spec: Mini 24px / Small 32px / Default 36px / Large 40px.\nconst inputOTPSlotSizes: Record<InputOTPSize, string> = {\n xs: \"size-6 text-xs\",\n sm: \"size-8 text-sm\",\n default: \"size-9 text-sm\",\n lg: \"size-10 text-base\",\n};\n\n/** One-time-passcode field: a row of single-character slots backed by a hidden input. */\nfunction InputOTP({\n className,\n containerClassName,\n size = \"default\",\n placeholder,\n ...props\n}: DistributiveOmit<React.ComponentProps<typeof OTPInput>, \"size\" | \"placeholder\"> & {\n /** Class applied to the outer flex container that wraps the slot groups. */\n containerClassName?: string;\n /** Slot dimensions and type scale: Mini 24px / Small 32px / Default 36px / Large 40px. */\n size?: InputOTPSize;\n /** Single character shown in empty slots as a hint until the user types. */\n placeholder?: string;\n}) {\n const settings = React.useMemo<InputOTPContextValue>(\n () => ({ size, placeholder }),\n [size, placeholder],\n );\n\n return (\n <InputOTPSettingsContext.Provider value={settings}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPSettingsContext.Provider>\n );\n}\n\n/** Visual cluster of adjacent slots; use multiple groups around an `InputOTPSeparator`. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** A single character cell rendering its char, active ring, fake caret, and placeholder. */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Zero-based position of this slot within the input's character buffer. */\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { size, placeholder } = React.useContext(InputOTPSettingsContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n const isEmpty = char == null || char === \"\";\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-ring-error aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex items-center justify-center border-y border-r bg-input-background transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n inputOTPSlotSizes[size],\n className,\n )}\n {...props}\n >\n {char}\n {isEmpty && placeholder && (\n <span className=\"text-muted-foreground pointer-events-none\">{placeholder}</span>\n )}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Decorative divider (a minus icon) placed between two `InputOTPGroup`s. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"mappings":";;;;;;;;;AAiBA,MAAM,0BAA0BA,MAAM,cAAoC,EACxE,MAAM,UACR,CAAC;AAGD,MAAM,oBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,IAAI;AACN;;AAGA,SAAS,SAAS,EAChB,WACA,oBACA,OAAO,WACP,aACA,GAAG,SAQF;CACD,MAAM,WAAWA,MAAM,eACd;EAAE;EAAM;CAAY,IAC3B,CAAC,MAAM,WAAW,CACpB;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAC,wBAAwB,UAAzB;EAAkC,OAAO;YACvC,iBAAA,GAAA,kBAAA,KAACC,UAAAA,UAAD;GACE,aAAU;GACV,oBAAoBC,WAAAA,GAClB,mDACA,kBACF;GACA,WAAWA,WAAAA,GAAG,+BAA+B,SAAS;GACtD,GAAI;EACL,CAAA;CAC+B,CAAA;AAEtC;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EACpB,OACA,WACA,GAAG,SAIF;CACD,MAAM,kBAAkBF,MAAM,WAAWG,UAAAA,eAAe;CACxD,MAAM,EAAE,MAAM,gBAAgBH,MAAM,WAAW,uBAAuB;CACtE,MAAM,EAAE,MAAM,cAAc,aAAa,iBAAiB,MAAM,UAAU,CAAC;CAC3E,MAAM,UAAU,QAAQ,QAAQ,SAAS;CAEzC,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,aAAU;EACV,eAAa;EACb,WAAWE,WAAAA,GACT,waACA,kBAAkB,OAClB,SACF;EACA,GAAI;YARN;GAUG;GACA,WAAW,eACV,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;cAA6C;GAAkB,CAAA;GAEhF,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,2DAA4D,CAAA;GACxE,CAAA;EAEJ;;AAET;;AAGA,SAAS,kBAAkB,EAAE,GAAG,SAAsC;CACpE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAsB,MAAK;EAAY,GAAI;YACxD,iBAAA,GAAA,kBAAA,KAACE,aAAAA,WAAD,CAAY,CAAA;CACT,CAAA;AAET"}
1
+ {"version":3,"file":"index.cjs","names":["React","OTPInput","cn","OTPInputContext","MinusIcon"],"sources":["../../../src/primitives/InputOtp/InputOtp.tsx"],"sourcesContent":["\"use client\";\n\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\ntype InputOTPSize = \"default\" | \"lg\" | \"sm\" | \"xs\";\n\ntype InputOTPContextValue = {\n size: InputOTPSize;\n placeholder?: string;\n};\n\nconst InputOTPSettingsContext = React.createContext<InputOTPContextValue>({\n size: \"default\",\n});\n\n// Sizes mirror the Figma \"Input\" spec: Mini 24px / Small 32px / Default 36px / Large 40px.\nconst inputOTPSlotSizes: Record<InputOTPSize, string> = {\n xs: \"size-6 text-xs\",\n sm: \"size-8 text-sm\",\n default: \"size-9 text-sm\",\n lg: \"size-10 text-base\",\n};\n\n/** One-time-passcode field: a row of single-character slots backed by a hidden input. */\nfunction InputOTP({\n className,\n containerClassName,\n size = \"default\",\n placeholder,\n ...props\n}: DistributiveOmit<React.ComponentProps<typeof OTPInput>, \"size\" | \"placeholder\"> & {\n /** Class applied to the outer flex container that wraps the slot groups. */\n containerClassName?: string;\n /** Slot dimensions and type scale: Mini 24px / Small 32px / Default 36px / Large 40px. */\n size?: InputOTPSize;\n /** Single character shown in empty slots as a hint until the user types. */\n placeholder?: string;\n}) {\n const settings = React.useMemo<InputOTPContextValue>(\n () => ({ size, placeholder }),\n [size, placeholder],\n );\n\n return (\n <InputOTPSettingsContext.Provider value={settings}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPSettingsContext.Provider>\n );\n}\n\n/** Visual cluster of adjacent slots; use multiple groups around an `InputOTPSeparator`. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** A single character cell rendering its char, active ring, fake caret, and placeholder. */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Zero-based position of this slot within the input's character buffer. */\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { size, placeholder } = React.useContext(InputOTPSettingsContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n const isEmpty = char == null || char === \"\";\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-primary-invert-border data-[active=true]:ring-focus data-[active=true]:aria-invalid:ring-focus-error aria-invalid:border-danger-border data-[active=true]:aria-invalid:border-danger-border relative flex items-center justify-center border-y border-r border-secondary-border bg-input-bg transition-all outline-none first:rounded-l-8 first:border-l last:rounded-r-8 data-[active=true]:z-10 data-[active=true]:ring-3\",\n inputOTPSlotSizes[size],\n className,\n )}\n {...props}\n >\n {char}\n {isEmpty && placeholder && (\n <span className=\"text-muted-txt pointer-events-none\">{placeholder}</span>\n )}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-primary-txt h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Decorative divider (a minus icon) placed between two `InputOTPGroup`s. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"mappings":";;;;;;;;;AAiBA,MAAM,0BAA0BA,MAAM,cAAoC,EACxE,MAAM,UACR,CAAC;AAGD,MAAM,oBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,IAAI;AACN;;AAGA,SAAS,SAAS,EAChB,WACA,oBACA,OAAO,WACP,aACA,GAAG,SAQF;CACD,MAAM,WAAWA,MAAM,eACd;EAAE;EAAM;CAAY,IAC3B,CAAC,MAAM,WAAW,CACpB;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAC,wBAAwB,UAAzB;EAAkC,OAAO;YACvC,iBAAA,GAAA,kBAAA,KAACC,UAAAA,UAAD;GACE,aAAU;GACV,oBAAoBC,WAAAA,GAClB,mDACA,kBACF;GACA,WAAWA,WAAAA,GAAG,+BAA+B,SAAS;GACtD,GAAI;EACL,CAAA;CAC+B,CAAA;AAEtC;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EACpB,OACA,WACA,GAAG,SAIF;CACD,MAAM,kBAAkBF,MAAM,WAAWG,UAAAA,eAAe;CACxD,MAAM,EAAE,MAAM,gBAAgBH,MAAM,WAAW,uBAAuB;CACtE,MAAM,EAAE,MAAM,cAAc,aAAa,iBAAiB,MAAM,UAAU,CAAC;CAC3E,MAAM,UAAU,QAAQ,QAAQ,SAAS;CAEzC,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,aAAU;EACV,eAAa;EACb,WAAWE,WAAAA,GACT,ybACA,kBAAkB,OAClB,SACF;EACA,GAAI;YARN;GAUG;GACA,WAAW,eACV,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;cAAsC;GAAkB,CAAA;GAEzE,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4DAA6D,CAAA;GACzE,CAAA;EAEJ;;AAET;;AAGA,SAAS,kBAAkB,EAAE,GAAG,SAAsC;CACpE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAsB,MAAK;EAAY,GAAI;YACxD,iBAAA,GAAA,kBAAA,KAACE,aAAAA,WAAD,CAAY,CAAA;CACT,CAAA;AAET"}
@@ -44,17 +44,17 @@ function InputOTPSlot({ index, className, ...props }) {
44
44
  return /* @__PURE__ */ jsxs("div", {
45
45
  "data-slot": "input-otp-slot",
46
46
  "data-active": isActive,
47
- className: cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-ring-error aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex items-center justify-center border-y border-r bg-input-background transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:z-10 data-[active=true]:ring-[3px]", inputOTPSlotSizes[size], className),
47
+ className: cn("data-[active=true]:border-primary-invert-border data-[active=true]:ring-focus data-[active=true]:aria-invalid:ring-focus-error aria-invalid:border-danger-border data-[active=true]:aria-invalid:border-danger-border relative flex items-center justify-center border-y border-r border-secondary-border bg-input-bg transition-all outline-none first:rounded-l-8 first:border-l last:rounded-r-8 data-[active=true]:z-10 data-[active=true]:ring-3", inputOTPSlotSizes[size], className),
48
48
  ...props,
49
49
  children: [
50
50
  char,
51
51
  isEmpty && placeholder && /* @__PURE__ */ jsx("span", {
52
- className: "text-muted-foreground pointer-events-none",
52
+ className: "text-muted-txt pointer-events-none",
53
53
  children: placeholder
54
54
  }),
55
55
  hasFakeCaret && /* @__PURE__ */ jsx("div", {
56
56
  className: "pointer-events-none absolute inset-0 flex items-center justify-center",
57
- children: /* @__PURE__ */ jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" })
57
+ children: /* @__PURE__ */ jsx("div", { className: "animate-caret-blink bg-primary-txt h-4 w-px duration-1000" })
58
58
  })
59
59
  ]
60
60
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/InputOtp/InputOtp.tsx"],"sourcesContent":["\"use client\";\n\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\ntype InputOTPSize = \"default\" | \"lg\" | \"sm\" | \"xs\";\n\ntype InputOTPContextValue = {\n size: InputOTPSize;\n placeholder?: string;\n};\n\nconst InputOTPSettingsContext = React.createContext<InputOTPContextValue>({\n size: \"default\",\n});\n\n// Sizes mirror the Figma \"Input\" spec: Mini 24px / Small 32px / Default 36px / Large 40px.\nconst inputOTPSlotSizes: Record<InputOTPSize, string> = {\n xs: \"size-6 text-xs\",\n sm: \"size-8 text-sm\",\n default: \"size-9 text-sm\",\n lg: \"size-10 text-base\",\n};\n\n/** One-time-passcode field: a row of single-character slots backed by a hidden input. */\nfunction InputOTP({\n className,\n containerClassName,\n size = \"default\",\n placeholder,\n ...props\n}: DistributiveOmit<React.ComponentProps<typeof OTPInput>, \"size\" | \"placeholder\"> & {\n /** Class applied to the outer flex container that wraps the slot groups. */\n containerClassName?: string;\n /** Slot dimensions and type scale: Mini 24px / Small 32px / Default 36px / Large 40px. */\n size?: InputOTPSize;\n /** Single character shown in empty slots as a hint until the user types. */\n placeholder?: string;\n}) {\n const settings = React.useMemo<InputOTPContextValue>(\n () => ({ size, placeholder }),\n [size, placeholder],\n );\n\n return (\n <InputOTPSettingsContext.Provider value={settings}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPSettingsContext.Provider>\n );\n}\n\n/** Visual cluster of adjacent slots; use multiple groups around an `InputOTPSeparator`. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** A single character cell rendering its char, active ring, fake caret, and placeholder. */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Zero-based position of this slot within the input's character buffer. */\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { size, placeholder } = React.useContext(InputOTPSettingsContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n const isEmpty = char == null || char === \"\";\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-ring-error aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex items-center justify-center border-y border-r bg-input-background transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n inputOTPSlotSizes[size],\n className,\n )}\n {...props}\n >\n {char}\n {isEmpty && placeholder && (\n <span className=\"text-muted-foreground pointer-events-none\">{placeholder}</span>\n )}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Decorative divider (a minus icon) placed between two `InputOTPGroup`s. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"mappings":";;;;;;AAiBA,MAAM,0BAA0B,MAAM,cAAoC,EACxE,MAAM,UACR,CAAC;AAGD,MAAM,oBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,IAAI;AACN;;AAGA,SAAS,SAAS,EAChB,WACA,oBACA,OAAO,WACP,aACA,GAAG,SAQF;CACD,MAAM,WAAW,MAAM,eACd;EAAE;EAAM;CAAY,IAC3B,CAAC,MAAM,WAAW,CACpB;CAEA,OACE,oBAAC,wBAAwB,UAAzB;EAAkC,OAAO;YACvC,oBAAC,UAAD;GACE,aAAU;GACV,oBAAoB,GAClB,mDACA,kBACF;GACA,WAAW,GAAG,+BAA+B,SAAS;GACtD,GAAI;EACL,CAAA;CAC+B,CAAA;AAEtC;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EACpB,OACA,WACA,GAAG,SAIF;CACD,MAAM,kBAAkB,MAAM,WAAW,eAAe;CACxD,MAAM,EAAE,MAAM,gBAAgB,MAAM,WAAW,uBAAuB;CACtE,MAAM,EAAE,MAAM,cAAc,aAAa,iBAAiB,MAAM,UAAU,CAAC;CAC3E,MAAM,UAAU,QAAQ,QAAQ,SAAS;CAEzC,OACE,qBAAC,OAAD;EACE,aAAU;EACV,eAAa;EACb,WAAW,GACT,waACA,kBAAkB,OAClB,SACF;EACA,GAAI;YARN;GAUG;GACA,WAAW,eACV,oBAAC,QAAD;IAAM,WAAU;cAA6C;GAAkB,CAAA;GAEhF,gBACC,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,OAAD,EAAK,WAAU,2DAA4D,CAAA;GACxE,CAAA;EAEJ;;AAET;;AAGA,SAAS,kBAAkB,EAAE,GAAG,SAAsC;CACpE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAsB,MAAK;EAAY,GAAI;YACxD,oBAAC,WAAD,CAAY,CAAA;CACT,CAAA;AAET"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/InputOtp/InputOtp.tsx"],"sourcesContent":["\"use client\";\n\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never;\n\ntype InputOTPSize = \"default\" | \"lg\" | \"sm\" | \"xs\";\n\ntype InputOTPContextValue = {\n size: InputOTPSize;\n placeholder?: string;\n};\n\nconst InputOTPSettingsContext = React.createContext<InputOTPContextValue>({\n size: \"default\",\n});\n\n// Sizes mirror the Figma \"Input\" spec: Mini 24px / Small 32px / Default 36px / Large 40px.\nconst inputOTPSlotSizes: Record<InputOTPSize, string> = {\n xs: \"size-6 text-xs\",\n sm: \"size-8 text-sm\",\n default: \"size-9 text-sm\",\n lg: \"size-10 text-base\",\n};\n\n/** One-time-passcode field: a row of single-character slots backed by a hidden input. */\nfunction InputOTP({\n className,\n containerClassName,\n size = \"default\",\n placeholder,\n ...props\n}: DistributiveOmit<React.ComponentProps<typeof OTPInput>, \"size\" | \"placeholder\"> & {\n /** Class applied to the outer flex container that wraps the slot groups. */\n containerClassName?: string;\n /** Slot dimensions and type scale: Mini 24px / Small 32px / Default 36px / Large 40px. */\n size?: InputOTPSize;\n /** Single character shown in empty slots as a hint until the user types. */\n placeholder?: string;\n}) {\n const settings = React.useMemo<InputOTPContextValue>(\n () => ({ size, placeholder }),\n [size, placeholder],\n );\n\n return (\n <InputOTPSettingsContext.Provider value={settings}>\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n </InputOTPSettingsContext.Provider>\n );\n}\n\n/** Visual cluster of adjacent slots; use multiple groups around an `InputOTPSeparator`. */\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\n/** A single character cell rendering its char, active ring, fake caret, and placeholder. */\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Zero-based position of this slot within the input's character buffer. */\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { size, placeholder } = React.useContext(InputOTPSettingsContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n const isEmpty = char == null || char === \"\";\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-primary-invert-border data-[active=true]:ring-focus data-[active=true]:aria-invalid:ring-focus-error aria-invalid:border-danger-border data-[active=true]:aria-invalid:border-danger-border relative flex items-center justify-center border-y border-r border-secondary-border bg-input-bg transition-all outline-none first:rounded-l-8 first:border-l last:rounded-r-8 data-[active=true]:z-10 data-[active=true]:ring-3\",\n inputOTPSlotSizes[size],\n className,\n )}\n {...props}\n >\n {char}\n {isEmpty && placeholder && (\n <span className=\"text-muted-txt pointer-events-none\">{placeholder}</span>\n )}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-primary-txt h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\n/** Decorative divider (a minus icon) placed between two `InputOTPGroup`s. */\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"mappings":";;;;;;AAiBA,MAAM,0BAA0B,MAAM,cAAoC,EACxE,MAAM,UACR,CAAC;AAGD,MAAM,oBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,SAAS;CACT,IAAI;AACN;;AAGA,SAAS,SAAS,EAChB,WACA,oBACA,OAAO,WACP,aACA,GAAG,SAQF;CACD,MAAM,WAAW,MAAM,eACd;EAAE;EAAM;CAAY,IAC3B,CAAC,MAAM,WAAW,CACpB;CAEA,OACE,oBAAC,wBAAwB,UAAzB;EAAkC,OAAO;YACvC,oBAAC,UAAD;GACE,aAAU;GACV,oBAAoB,GAClB,mDACA,kBACF;GACA,WAAW,GAAG,+BAA+B,SAAS;GACtD,GAAI;EACL,CAAA;CAC+B,CAAA;AAEtC;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EACpB,OACA,WACA,GAAG,SAIF;CACD,MAAM,kBAAkB,MAAM,WAAW,eAAe;CACxD,MAAM,EAAE,MAAM,gBAAgB,MAAM,WAAW,uBAAuB;CACtE,MAAM,EAAE,MAAM,cAAc,aAAa,iBAAiB,MAAM,UAAU,CAAC;CAC3E,MAAM,UAAU,QAAQ,QAAQ,SAAS;CAEzC,OACE,qBAAC,OAAD;EACE,aAAU;EACV,eAAa;EACb,WAAW,GACT,ybACA,kBAAkB,OAClB,SACF;EACA,GAAI;YARN;GAUG;GACA,WAAW,eACV,oBAAC,QAAD;IAAM,WAAU;cAAsC;GAAkB,CAAA;GAEzE,gBACC,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,OAAD,EAAK,WAAU,4DAA6D,CAAA;GACzE,CAAA;EAEJ;;AAET;;AAGA,SAAS,kBAAkB,EAAE,GAAG,SAAsC;CACpE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAsB,MAAK;EAAY,GAAI;YACxD,oBAAC,WAAD,CAAY,CAAA;CACT,CAAA;AAET"}
@@ -23,12 +23,12 @@ function ItemSeparator({ className, ...props }) {
23
23
  ...props
24
24
  });
25
25
  }
26
- const itemVariants = (0, class_variance_authority.cva)("group/item flex flex-wrap items-center rounded-xl border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary", {
26
+ const itemVariants = (0, class_variance_authority.cva)("group/item flex flex-wrap items-center rounded-12 border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-primary-invert-border focus-visible:ring-3 focus-visible:ring-focus [a]:transition-colors [a]:hover:bg-secondary-bg", {
27
27
  variants: {
28
28
  variant: {
29
29
  default: "bg-transparent",
30
- outline: "border-border",
31
- muted: "bg-secondary"
30
+ outline: "border-primary-border",
31
+ muted: "bg-secondary-bg"
32
32
  },
33
33
  size: {
34
34
  default: "gap-4 p-4",
@@ -57,8 +57,8 @@ function Item({ className, variant = "default", size = "default", asChild = fals
57
57
  const itemMediaVariants = (0, class_variance_authority.cva)("flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none", {
58
58
  variants: { variant: {
59
59
  default: "bg-transparent",
60
- icon: "size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4",
61
- image: "size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"
60
+ icon: "size-8 rounded-4 border bg-muted-bg [&_svg:not([class*='size-'])]:size-4",
61
+ image: "size-10 overflow-hidden rounded-4 [&_img]:size-full [&_img]:object-cover"
62
62
  } },
63
63
  defaultVariants: { variant: "default" }
64
64
  });
@@ -94,7 +94,7 @@ function ItemTitle({ className, ...props }) {
94
94
  function ItemDescription({ className, ...props }) {
95
95
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
96
96
  "data-slot": "item-description",
97
- className: require_cn.cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
97
+ className: require_cn.cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-txt", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary-txt", className),
98
98
  ...props
99
99
  });
100
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["cn","Separator","Slot"],"sources":["../../../src/primitives/Item/Item.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\n/** Vertical list container that groups related `Item`s (role=\"list\"). */\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** Horizontal divider rendered between `Item`s inside an `ItemGroup`. */\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-xl border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border\",\n muted: \"bg-secondary\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\n/** A flexible list/row primitive composing media, content, and actions into a single line. */\nfunction Item({\n className,\n /** Visual treatment of the row surface. */\n variant = \"default\",\n /** Vertical density / padding of the row. */\n size = \"default\",\n /** Render as the child element (e.g. an anchor) via Radix `Slot` instead of a `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\";\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/** Leading media slot for an `Item` — holds an icon, image, or avatar. */\nfunction ItemMedia({\n className,\n /** Media framing: bare, a bordered icon tile, or a clipped image box. */\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\n/** Primary content column of an `Item`, stacking title and description. */\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\", className)}\n {...props}\n />\n );\n}\n\n/** Emphasised title line within `ItemContent`. */\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** Muted, line-clamped supporting text within `ItemContent`. */\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Trailing actions slot of an `Item` — holds buttons or controls. */\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"item-actions\" className={cn(\"flex items-center gap-2\", className)} {...props} />\n );\n}\n\n/** Full-width header row spanning the top of an `Item`. */\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Full-width footer row spanning the bottom of an `Item`. */\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,WAAWA,WAAAA,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAiD;CACtF,OACE,iBAAA,GAAA,kBAAA,KAACC,mCAAAA,WAAD;EACE,aAAU;EACV,aAAY;EACZ,WAAWD,WAAAA,GAAG,QAAQ,SAAS;EAC/B,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,gBAAA,GAAA,yBAAA,KACJ,8PACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,MAAM;GACJ,SAAS;GACT,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;;AAGA,SAAS,KAAK,EACZ,WAEA,UAAU,WAEV,OAAO,WAEP,UAAU,OACV,GAAG,SACuF;CAE1F,OACE,iBAAA,GAAA,kBAAA,KAFW,UAAUE,SAAAA,KAAK,OAAO,OAEjC;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAWF,WAAAA,GAAG,aAAa;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,qBAAA,GAAA,yBAAA,KACJ,sMACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;AAGA,SAAS,UAAU,EACjB,WAEA,UAAU,WACV,GAAG,SACoE;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,WAAWA,WAAAA,GAAG,kBAAkB;GAAE;GAAS;EAAU,CAAC,CAAC;EACvD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,qEAAqE,SAAS;EAC5F,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,OACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,sFACA,qEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAe,WAAWA,WAAAA,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["cn","Separator","Slot"],"sources":["../../../src/primitives/Item/Item.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\n/** Vertical list container that groups related `Item`s (role=\"list\"). */\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** Horizontal divider rendered between `Item`s inside an `ItemGroup`. */\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-12 border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-primary-invert-border focus-visible:ring-3 focus-visible:ring-focus [a]:transition-colors [a]:hover:bg-secondary-bg\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-primary-border\",\n muted: \"bg-secondary-bg\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\n/** A flexible list/row primitive composing media, content, and actions into a single line. */\nfunction Item({\n className,\n /** Visual treatment of the row surface. */\n variant = \"default\",\n /** Vertical density / padding of the row. */\n size = \"default\",\n /** Render as the child element (e.g. an anchor) via Radix `Slot` instead of a `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\";\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-4 border bg-muted-bg [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-4 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/** Leading media slot for an `Item` — holds an icon, image, or avatar. */\nfunction ItemMedia({\n className,\n /** Media framing: bare, a bordered icon tile, or a clipped image box. */\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\n/** Primary content column of an `Item`, stacking title and description. */\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\", className)}\n {...props}\n />\n );\n}\n\n/** Emphasised title line within `ItemContent`. */\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** Muted, line-clamped supporting text within `ItemContent`. */\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-txt\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Trailing actions slot of an `Item` — holds buttons or controls. */\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"item-actions\" className={cn(\"flex items-center gap-2\", className)} {...props} />\n );\n}\n\n/** Full-width header row spanning the top of an `Item`. */\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Full-width footer row spanning the bottom of an `Item`. */\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":";;;;;;;;AAQA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,WAAWA,WAAAA,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAiD;CACtF,OACE,iBAAA,GAAA,kBAAA,KAACC,mCAAAA,WAAD;EACE,aAAU;EACV,aAAY;EACZ,WAAWD,WAAAA,GAAG,QAAQ,SAAS;EAC/B,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,gBAAA,GAAA,yBAAA,KACJ,4QACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,MAAM;GACJ,SAAS;GACT,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;;AAGA,SAAS,KAAK,EACZ,WAEA,UAAU,WAEV,OAAO,WAEP,UAAU,OACV,GAAG,SACuF;CAE1F,OACE,iBAAA,GAAA,kBAAA,KAFW,UAAUE,SAAAA,KAAK,OAAO,OAEjC;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAWF,WAAAA,GAAG,aAAa;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,qBAAA,GAAA,yBAAA,KACJ,sMACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;AAGA,SAAS,UAAU,EACjB,WAEA,UAAU,WACV,GAAG,SACoE;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,WAAWA,WAAAA,GAAG,kBAAkB;GAAE;GAAS;EAAU,CAAC,CAAC;EACvD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,qEAAqE,SAAS;EAC5F,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,OACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,+EACA,yEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAe,WAAWA,WAAAA,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL"}
@@ -22,12 +22,12 @@ function ItemSeparator({ className, ...props }) {
22
22
  ...props
23
23
  });
24
24
  }
25
- const itemVariants = cva("group/item flex flex-wrap items-center rounded-xl border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary", {
25
+ const itemVariants = cva("group/item flex flex-wrap items-center rounded-12 border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-primary-invert-border focus-visible:ring-3 focus-visible:ring-focus [a]:transition-colors [a]:hover:bg-secondary-bg", {
26
26
  variants: {
27
27
  variant: {
28
28
  default: "bg-transparent",
29
- outline: "border-border",
30
- muted: "bg-secondary"
29
+ outline: "border-primary-border",
30
+ muted: "bg-secondary-bg"
31
31
  },
32
32
  size: {
33
33
  default: "gap-4 p-4",
@@ -56,8 +56,8 @@ function Item({ className, variant = "default", size = "default", asChild = fals
56
56
  const itemMediaVariants = cva("flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none", {
57
57
  variants: { variant: {
58
58
  default: "bg-transparent",
59
- icon: "size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4",
60
- image: "size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"
59
+ icon: "size-8 rounded-4 border bg-muted-bg [&_svg:not([class*='size-'])]:size-4",
60
+ image: "size-10 overflow-hidden rounded-4 [&_img]:size-full [&_img]:object-cover"
61
61
  } },
62
62
  defaultVariants: { variant: "default" }
63
63
  });
@@ -93,7 +93,7 @@ function ItemTitle({ className, ...props }) {
93
93
  function ItemDescription({ className, ...props }) {
94
94
  return /* @__PURE__ */ jsx("p", {
95
95
  "data-slot": "item-description",
96
- className: cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
96
+ className: cn("line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-txt", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary-txt", className),
97
97
  ...props
98
98
  });
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Separator"],"sources":["../../../src/primitives/Item/Item.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\n/** Vertical list container that groups related `Item`s (role=\"list\"). */\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** Horizontal divider rendered between `Item`s inside an `ItemGroup`. */\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-xl border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-border\",\n muted: \"bg-secondary\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\n/** A flexible list/row primitive composing media, content, and actions into a single line. */\nfunction Item({\n className,\n /** Visual treatment of the row surface. */\n variant = \"default\",\n /** Vertical density / padding of the row. */\n size = \"default\",\n /** Render as the child element (e.g. an anchor) via Radix `Slot` instead of a `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\";\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-sm border bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/** Leading media slot for an `Item` — holds an icon, image, or avatar. */\nfunction ItemMedia({\n className,\n /** Media framing: bare, a bordered icon tile, or a clipped image box. */\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\n/** Primary content column of an `Item`, stacking title and description. */\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\", className)}\n {...props}\n />\n );\n}\n\n/** Emphasised title line within `ItemContent`. */\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** Muted, line-clamped supporting text within `ItemContent`. */\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-foreground\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Trailing actions slot of an `Item` — holds buttons or controls. */\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"item-actions\" className={cn(\"flex items-center gap-2\", className)} {...props} />\n );\n}\n\n/** Full-width header row spanning the top of an `Item`. */\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Full-width footer row spanning the bottom of an `Item`. */\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":";;;;;;;AAQA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,WAAW,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAiD;CACtF,OACE,oBAACA,aAAD;EACE,aAAU;EACV,aAAY;EACZ,WAAW,GAAG,QAAQ,SAAS;EAC/B,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,eAAe,IACnB,8PACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,MAAM;GACJ,SAAS;GACT,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;;AAGA,SAAS,KAAK,EACZ,WAEA,UAAU,WAEV,OAAO,WAEP,UAAU,OACV,GAAG,SACuF;CAE1F,OACE,oBAFW,UAAU,KAAK,OAAO,OAEjC;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAW,GAAG,aAAa;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,oBAAoB,IACxB,sMACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;AAGA,SAAS,UAAU,EACjB,WAEA,UAAU,WACV,GAAG,SACoE;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,kBAAkB;GAAE;GAAS;EAAU,CAAC,CAAC;EACvD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,qEAAqE,SAAS;EAC5F,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,OACE,oBAAC,KAAD;EACE,aAAU;EACV,WAAW,GACT,sFACA,qEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;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,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":["Separator"],"sources":["../../../src/primitives/Item/Item.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\n/** Vertical list container that groups related `Item`s (role=\"list\"). */\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"list\"\n data-slot=\"item-group\"\n className={cn(\"group/item-group flex flex-col\", className)}\n {...props}\n />\n );\n}\n\n/** Horizontal divider rendered between `Item`s inside an `ItemGroup`. */\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn(\"my-0\", className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n \"group/item flex flex-wrap items-center rounded-12 border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:border-primary-invert-border focus-visible:ring-3 focus-visible:ring-focus [a]:transition-colors [a]:hover:bg-secondary-bg\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"border-primary-border\",\n muted: \"bg-secondary-bg\",\n },\n size: {\n default: \"gap-4 p-4\",\n sm: \"gap-2.5 px-4 py-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\n/** A flexible list/row primitive composing media, content, and actions into a single line. */\nfunction Item({\n className,\n /** Visual treatment of the row surface. */\n variant = \"default\",\n /** Vertical density / padding of the row. */\n size = \"default\",\n /** Render as the child element (e.g. an anchor) via Radix `Slot` instead of a `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"div\";\n return (\n <Comp\n data-slot=\"item\"\n data-variant={variant}\n data-size={size}\n className={cn(itemVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nconst itemMediaVariants = cva(\n \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"size-8 rounded-4 border bg-muted-bg [&_svg:not([class*='size-'])]:size-4\",\n image: \"size-10 overflow-hidden rounded-4 [&_img]:size-full [&_img]:object-cover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/** Leading media slot for an `Item` — holds an icon, image, or avatar. */\nfunction ItemMedia({\n className,\n /** Media framing: bare, a bordered icon tile, or a clipped image box. */\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\n/** Primary content column of an `Item`, stacking title and description. */\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\", className)}\n {...props}\n />\n );\n}\n\n/** Emphasised title line within `ItemContent`. */\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\", className)}\n {...props}\n />\n );\n}\n\n/** Muted, line-clamped supporting text within `ItemContent`. */\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n \"line-clamp-2 text-sm leading-normal font-normal text-balance text-muted-txt\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Trailing actions slot of an `Item` — holds buttons or controls. */\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"item-actions\" className={cn(\"flex items-center gap-2\", className)} {...props} />\n );\n}\n\n/** Full-width header row spanning the top of an `Item`. */\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\n/** Full-width footer row spanning the bottom of an `Item`. */\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n"],"mappings":";;;;;;;AAQA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,WAAW,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAiD;CACtF,OACE,oBAACA,aAAD;EACE,aAAU;EACV,aAAY;EACZ,WAAW,GAAG,QAAQ,SAAS;EAC/B,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,eAAe,IACnB,4QACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,OAAO;EACT;EACA,MAAM;GACJ,SAAS;GACT,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;;AAGA,SAAS,KAAK,EACZ,WAEA,UAAU,WAEV,OAAO,WAEP,UAAU,OACV,GAAG,SACuF;CAE1F,OACE,oBAFW,UAAU,KAAK,OAAO,OAEjC;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAW,GAAG,aAAa;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,oBAAoB,IACxB,sMACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;;AAGA,SAAS,UAAU,EACjB,WAEA,UAAU,WACV,GAAG,SACoE;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,kBAAkB;GAAE;GAAS;EAAU,CAAC,CAAC;EACvD,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,qEAAqE,SAAS;EAC5F,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAoC;CAC3E,OACE,oBAAC,KAAD;EACE,aAAU;EACV,WAAW,GACT,+EACA,yEACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;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,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,sDAAsD,SAAS;EAC7E,GAAI;CACL,CAAA;AAEL"}
@@ -6,7 +6,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
6
6
  function Kbd({ className, ...props }) {
7
7
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("kbd", {
8
8
  "data-slot": "kbd",
9
- className: require_cn.cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-inverse-foreground/20 [[data-slot=tooltip-content]_&]:text-inverse-foreground", className),
9
+ className: require_cn.cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-4 bg-muted-bg px-1 font-sans text-xs font-medium text-muted-txt select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-primary-invert-txt/20 [[data-slot=tooltip-content]_&]:text-primary-invert-txt", className),
10
10
  ...props
11
11
  });
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["cn"],"sources":["../../../src/primitives/Kbd/Kbd.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A small key cap that renders a single keyboard key or symbol (e.g. ⌘, Ctrl, ↩). */\nfunction Kbd({\n /** Extra classes merged onto the key cap. */\n className,\n ...props\n}: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-inverse-foreground/20 [[data-slot=tooltip-content]_&]:text-inverse-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Lays out multiple `Kbd` keys (and separators) inline as a single shortcut combo. */\nfunction KbdGroup({\n /** Extra classes merged onto the group wrapper. */\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n"],"mappings":";;;;;AAKA,SAAS,IAAI,EAEX,WACA,GAAG,SAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,gLACA,wCACA,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,SAAS,EAEhB,WACA,GAAG,SAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["cn"],"sources":["../../../src/primitives/Kbd/Kbd.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A small key cap that renders a single keyboard key or symbol (e.g. ⌘, Ctrl, ↩). */\nfunction Kbd({\n /** Extra classes merged onto the key cap. */\n className,\n ...props\n}: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-4 bg-muted-bg px-1 font-sans text-xs font-medium text-muted-txt select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-primary-invert-txt/20 [[data-slot=tooltip-content]_&]:text-primary-invert-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Lays out multiple `Kbd` keys (and separators) inline as a single shortcut combo. */\nfunction KbdGroup({\n /** Extra classes merged onto the group wrapper. */\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n"],"mappings":";;;;;AAKA,SAAS,IAAI,EAEX,WACA,GAAG,SAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,2KACA,wCACA,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,SAAS,EAEhB,WACA,GAAG,SAC2B;CAC9B,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL"}
@@ -5,7 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
  function Kbd({ className, ...props }) {
6
6
  return /* @__PURE__ */ jsx("kbd", {
7
7
  "data-slot": "kbd",
8
- className: cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-inverse-foreground/20 [[data-slot=tooltip-content]_&]:text-inverse-foreground", className),
8
+ className: cn("pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-4 bg-muted-bg px-1 font-sans text-xs font-medium text-muted-txt select-none", "[&_svg:not([class*='size-'])]:size-3", "[[data-slot=tooltip-content]_&]:bg-primary-invert-txt/20 [[data-slot=tooltip-content]_&]:text-primary-invert-txt", className),
9
9
  ...props
10
10
  });
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Kbd/Kbd.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A small key cap that renders a single keyboard key or symbol (e.g. ⌘, Ctrl, ↩). */\nfunction Kbd({\n /** Extra classes merged onto the key cap. */\n className,\n ...props\n}: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-inverse-foreground/20 [[data-slot=tooltip-content]_&]:text-inverse-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Lays out multiple `Kbd` keys (and separators) inline as a single shortcut combo. */\nfunction KbdGroup({\n /** Extra classes merged onto the group wrapper. */\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n"],"mappings":";;;;AAKA,SAAS,IAAI,EAEX,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,gLACA,wCACA,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,SAAS,EAEhB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Kbd/Kbd.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A small key cap that renders a single keyboard key or symbol (e.g. ⌘, Ctrl, ↩). */\nfunction Kbd({\n /** Extra classes merged onto the key cap. */\n className,\n ...props\n}: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n \"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-4 bg-muted-bg px-1 font-sans text-xs font-medium text-muted-txt select-none\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-primary-invert-txt/20 [[data-slot=tooltip-content]_&]:text-primary-invert-txt\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Lays out multiple `Kbd` keys (and separators) inline as a single shortcut combo. */\nfunction KbdGroup({\n /** Extra classes merged onto the group wrapper. */\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n"],"mappings":";;;;AAKA,SAAS,IAAI,EAEX,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,2KACA,wCACA,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,SAAS,EAEhB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL"}
@@ -3,12 +3,12 @@ const require_cn = require("../../cn.cjs");
3
3
  let radix_ui = require("radix-ui");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  //#region src/primitives/Link/Link.tsx
6
- const linkVariants = (0, require("class-variance-authority").cva)("rounded-xs underline underline-offset-2 outline-none transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50", {
6
+ const linkVariants = (0, require("class-variance-authority").cva)("rounded-2 underline underline-offset-2 outline-none transition-colors focus-visible:ring-3 focus-visible:ring-focus", {
7
7
  variants: {
8
8
  variant: {
9
- default: "font-medium text-primary hover:text-primary/80",
10
- muted: "font-medium text-muted-foreground hover:text-foreground",
11
- subtle: "text-foreground hover:text-foreground/80"
9
+ default: "font-medium text-primary-txt hover:text-primary-txt/80",
10
+ muted: "font-medium text-muted-txt hover:text-primary-txt",
11
+ subtle: "text-primary-txt hover:text-primary-txt/80"
12
12
  },
13
13
  underline: {
14
14
  always: "",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["Slot","cn"],"sources":["../../../src/primitives/Link/Link.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Link — inline text link. Use `asChild` to render a router link (e.g. React\n// Router's <Link>) while keeping the design-system styling.\nconst linkVariants = cva(\n \"rounded-xs underline underline-offset-2 outline-none transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n {\n variants: {\n variant: {\n default: \"font-medium text-primary hover:text-primary/80\",\n muted: \"font-medium text-muted-foreground hover:text-foreground\",\n subtle: \"text-foreground hover:text-foreground/80\",\n },\n underline: {\n always: \"\",\n hover: \"no-underline hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: \"always\",\n },\n },\n);\n\ntype LinkProps = React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n /** Render the child element instead of an <a> (for router links). */\n asChild?: boolean;\n /** Visual emphasis of the link text: primary (`default`), `muted`, or `subtle`. */\n variant?: VariantProps<typeof linkVariants>[\"variant\"];\n /** When the underline shows: `always` or only on `hover`. */\n underline?: VariantProps<typeof linkVariants>[\"underline\"];\n };\n\n/** Inline text link styled to the design system; pass `asChild` to render a router link. */\nfunction Link({ asChild = false, className, variant, underline, ...props }: LinkProps) {\n const Comp = asChild ? Slot.Root : \"a\";\n return (\n <Comp\n data-slot=\"link\"\n className={cn(linkVariants({ variant, underline }), className)}\n {...props}\n />\n );\n}\n\nexport { Link, linkVariants, type LinkProps };\n"],"mappings":";;;;;AAQA,MAAM,gBAAA,qCAAA,EAAA,KACJ,8HACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;GACP,QAAQ;EACV;EACA,WAAW;GACT,QAAQ;GACR,OAAO;EACT;CACF;CACA,iBAAiB;EACf,SAAS;EACT,WAAW;CACb;AACF,CACF;;AAaA,SAAS,KAAK,EAAE,UAAU,OAAO,WAAW,SAAS,WAAW,GAAG,SAAoB;CAErF,OACE,iBAAA,GAAA,kBAAA,KAFW,UAAUA,SAAAA,KAAK,OAAO,KAEjC;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,aAAa;GAAE;GAAS;EAAU,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["Slot","cn"],"sources":["../../../src/primitives/Link/Link.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Link — inline text link. Use `asChild` to render a router link (e.g. React\n// Router's <Link>) while keeping the design-system styling.\nconst linkVariants = cva(\n \"rounded-2 underline underline-offset-2 outline-none transition-colors focus-visible:ring-3 focus-visible:ring-focus\",\n {\n variants: {\n variant: {\n default: \"font-medium text-primary-txt hover:text-primary-txt/80\",\n muted: \"font-medium text-muted-txt hover:text-primary-txt\",\n subtle: \"text-primary-txt hover:text-primary-txt/80\",\n },\n underline: {\n always: \"\",\n hover: \"no-underline hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: \"always\",\n },\n },\n);\n\ntype LinkProps = React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n /** Render the child element instead of an <a> (for router links). */\n asChild?: boolean;\n /** Visual emphasis of the link text: primary (`default`), `muted`, or `subtle`. */\n variant?: VariantProps<typeof linkVariants>[\"variant\"];\n /** When the underline shows: `always` or only on `hover`. */\n underline?: VariantProps<typeof linkVariants>[\"underline\"];\n };\n\n/** Inline text link styled to the design system; pass `asChild` to render a router link. */\nfunction Link({ asChild = false, className, variant, underline, ...props }: LinkProps) {\n const Comp = asChild ? Slot.Root : \"a\";\n return (\n <Comp\n data-slot=\"link\"\n className={cn(linkVariants({ variant, underline }), className)}\n {...props}\n />\n );\n}\n\nexport { Link, linkVariants, type LinkProps };\n"],"mappings":";;;;;AAQA,MAAM,gBAAA,qCAAA,EAAA,KACJ,uHACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;GACP,QAAQ;EACV;EACA,WAAW;GACT,QAAQ;GACR,OAAO;EACT;CACF;CACA,iBAAiB;EACf,SAAS;EACT,WAAW;CACb;AACF,CACF;;AAaA,SAAS,KAAK,EAAE,UAAU,OAAO,WAAW,SAAS,WAAW,GAAG,SAAoB;CAErF,OACE,iBAAA,GAAA,kBAAA,KAFW,UAAUA,SAAAA,KAAK,OAAO,KAEjC;EACE,aAAU;EACV,WAAWC,WAAAA,GAAG,aAAa;GAAE;GAAS;EAAU,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
@@ -3,12 +3,12 @@ import { Slot } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { cva } from "class-variance-authority";
5
5
  //#region src/primitives/Link/Link.tsx
6
- const linkVariants = cva("rounded-xs underline underline-offset-2 outline-none transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50", {
6
+ const linkVariants = cva("rounded-2 underline underline-offset-2 outline-none transition-colors focus-visible:ring-3 focus-visible:ring-focus", {
7
7
  variants: {
8
8
  variant: {
9
- default: "font-medium text-primary hover:text-primary/80",
10
- muted: "font-medium text-muted-foreground hover:text-foreground",
11
- subtle: "text-foreground hover:text-foreground/80"
9
+ default: "font-medium text-primary-txt hover:text-primary-txt/80",
10
+ muted: "font-medium text-muted-txt hover:text-primary-txt",
11
+ subtle: "text-primary-txt hover:text-primary-txt/80"
12
12
  },
13
13
  underline: {
14
14
  always: "",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Link/Link.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Link — inline text link. Use `asChild` to render a router link (e.g. React\n// Router's <Link>) while keeping the design-system styling.\nconst linkVariants = cva(\n \"rounded-xs underline underline-offset-2 outline-none transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n {\n variants: {\n variant: {\n default: \"font-medium text-primary hover:text-primary/80\",\n muted: \"font-medium text-muted-foreground hover:text-foreground\",\n subtle: \"text-foreground hover:text-foreground/80\",\n },\n underline: {\n always: \"\",\n hover: \"no-underline hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: \"always\",\n },\n },\n);\n\ntype LinkProps = React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n /** Render the child element instead of an <a> (for router links). */\n asChild?: boolean;\n /** Visual emphasis of the link text: primary (`default`), `muted`, or `subtle`. */\n variant?: VariantProps<typeof linkVariants>[\"variant\"];\n /** When the underline shows: `always` or only on `hover`. */\n underline?: VariantProps<typeof linkVariants>[\"underline\"];\n };\n\n/** Inline text link styled to the design system; pass `asChild` to render a router link. */\nfunction Link({ asChild = false, className, variant, underline, ...props }: LinkProps) {\n const Comp = asChild ? Slot.Root : \"a\";\n return (\n <Comp\n data-slot=\"link\"\n className={cn(linkVariants({ variant, underline }), className)}\n {...props}\n />\n );\n}\n\nexport { Link, linkVariants, type LinkProps };\n"],"mappings":";;;;;AAQA,MAAM,eAAe,IACnB,8HACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;GACP,QAAQ;EACV;EACA,WAAW;GACT,QAAQ;GACR,OAAO;EACT;CACF;CACA,iBAAiB;EACf,SAAS;EACT,WAAW;CACb;AACF,CACF;;AAaA,SAAS,KAAK,EAAE,UAAU,OAAO,WAAW,SAAS,WAAW,GAAG,SAAoB;CAErF,OACE,oBAFW,UAAU,KAAK,OAAO,KAEjC;EACE,aAAU;EACV,WAAW,GAAG,aAAa;GAAE;GAAS;EAAU,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Link/Link.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Link — inline text link. Use `asChild` to render a router link (e.g. React\n// Router's <Link>) while keeping the design-system styling.\nconst linkVariants = cva(\n \"rounded-2 underline underline-offset-2 outline-none transition-colors focus-visible:ring-3 focus-visible:ring-focus\",\n {\n variants: {\n variant: {\n default: \"font-medium text-primary-txt hover:text-primary-txt/80\",\n muted: \"font-medium text-muted-txt hover:text-primary-txt\",\n subtle: \"text-primary-txt hover:text-primary-txt/80\",\n },\n underline: {\n always: \"\",\n hover: \"no-underline hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: \"always\",\n },\n },\n);\n\ntype LinkProps = React.ComponentProps<\"a\"> &\n VariantProps<typeof linkVariants> & {\n /** Render the child element instead of an <a> (for router links). */\n asChild?: boolean;\n /** Visual emphasis of the link text: primary (`default`), `muted`, or `subtle`. */\n variant?: VariantProps<typeof linkVariants>[\"variant\"];\n /** When the underline shows: `always` or only on `hover`. */\n underline?: VariantProps<typeof linkVariants>[\"underline\"];\n };\n\n/** Inline text link styled to the design system; pass `asChild` to render a router link. */\nfunction Link({ asChild = false, className, variant, underline, ...props }: LinkProps) {\n const Comp = asChild ? Slot.Root : \"a\";\n return (\n <Comp\n data-slot=\"link\"\n className={cn(linkVariants({ variant, underline }), className)}\n {...props}\n />\n );\n}\n\nexport { Link, linkVariants, type LinkProps };\n"],"mappings":";;;;;AAQA,MAAM,eAAe,IACnB,uHACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,OAAO;GACP,QAAQ;EACV;EACA,WAAW;GACT,QAAQ;GACR,OAAO;EACT;CACF;CACA,iBAAiB;EACf,SAAS;EACT,WAAW;CACb;AACF,CACF;;AAaA,SAAS,KAAK,EAAE,UAAU,OAAO,WAAW,SAAS,WAAW,GAAG,SAAoB;CAErF,OACE,oBAFW,UAAU,KAAK,OAAO,KAEjC;EACE,aAAU;EACV,WAAW,GAAG,aAAa;GAAE;GAAS;EAAU,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
@@ -8,7 +8,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
8
8
  function Menubar({ className, ...props }) {
9
9
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Menubar.Root, {
10
10
  "data-slot": "menubar",
11
- className: require_cn.cn("flex h-9 items-center gap-1 rounded-md border bg-background p-1 shadow-xs", className),
11
+ className: require_cn.cn("flex h-9 items-center gap-1 rounded-8 border border-primary-border bg-primary-bg p-1 shadow-sm", className),
12
12
  ...props
13
13
  });
14
14
  }
@@ -44,7 +44,7 @@ function MenubarRadioGroup({ ...props }) {
44
44
  function MenubarTrigger({ className, ...props }) {
45
45
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Menubar.Trigger, {
46
46
  "data-slot": "menubar-trigger",
47
- className: require_cn.cn("flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", className),
47
+ className: require_cn.cn("flex items-center rounded-8 px-2 py-1 font-heading text-sm leading-5 font-medium outline-hidden select-none focus:bg-ghost-hover-bg data-[state=open]:bg-toggle-active-bg", className),
48
48
  ...props
49
49
  });
50
50
  }
@@ -55,7 +55,7 @@ function MenubarContent({ className, align = "start", alignOffset = -4, sideOffs
55
55
  align,
56
56
  alignOffset,
57
57
  sideOffset,
58
- className: require_cn.cn("z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", className),
58
+ className: require_cn.cn("z-50 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-12 border border-primary-border bg-glass-none-bg p-2 text-primary-txt shadow-sm 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 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-item]:not([data-inset])]:pl-8", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-label]:not([data-inset])]:pl-8", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-sub-trigger]:not([data-inset])]:pl-8", className),
59
59
  ...props
60
60
  }) });
61
61
  }
@@ -65,7 +65,7 @@ function MenubarItem({ className, inset, variant = "default", ...props }) {
65
65
  "data-slot": "menubar-item",
66
66
  "data-inset": inset,
67
67
  "data-variant": variant,
68
- className: require_cn.cn("relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive-subtle data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!", className),
68
+ className: require_cn.cn("relative flex min-h-8 cursor-default items-center gap-2 rounded-10 px-2 py-1.5 text-sm leading-5 outline-hidden select-none focus:bg-ghost-hover-bg data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-danger-txt data-[variant=destructive]:focus:bg-danger-bg [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-txt data-[variant=destructive]:*:[svg]:text-danger-txt!", className),
69
69
  ...props
70
70
  });
71
71
  }
@@ -73,7 +73,7 @@ function MenubarItem({ className, inset, variant = "default", ...props }) {
73
73
  function MenubarCheckboxItem({ className, children, checked, ...props }) {
74
74
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Menubar.CheckboxItem, {
75
75
  "data-slot": "menubar-checkbox-item",
76
- className: require_cn.cn("relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
76
+ className: require_cn.cn("relative flex min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-2 pl-8 text-sm leading-5 outline-hidden select-none focus:bg-ghost-hover-bg data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
77
77
  checked,
78
78
  ...props,
79
79
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -86,7 +86,7 @@ function MenubarCheckboxItem({ className, children, checked, ...props }) {
86
86
  function MenubarRadioItem({ className, children, ...props }) {
87
87
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Menubar.RadioItem, {
88
88
  "data-slot": "menubar-radio-item",
89
- className: require_cn.cn("relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
89
+ className: require_cn.cn("relative flex min-h-8 cursor-default items-center gap-2 rounded-10 py-1.5 pr-2 pl-8 text-sm leading-5 outline-hidden select-none focus:bg-ghost-hover-bg data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
90
90
  ...props,
91
91
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
92
92
  className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
@@ -99,7 +99,7 @@ function MenubarLabel({ className, inset, ...props }) {
99
99
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Menubar.Label, {
100
100
  "data-slot": "menubar-label",
101
101
  "data-inset": inset,
102
- className: require_cn.cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
102
+ className: require_cn.cn("px-2 py-1.5 text-xs leading-4 font-medium text-muted-txt data-[inset]:pl-8", className),
103
103
  ...props
104
104
  });
105
105
  }
@@ -107,7 +107,7 @@ function MenubarLabel({ className, inset, ...props }) {
107
107
  function MenubarSeparator({ className, ...props }) {
108
108
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Menubar.Separator, {
109
109
  "data-slot": "menubar-separator",
110
- className: require_cn.cn("-mx-1 my-1 h-px bg-border", className),
110
+ className: require_cn.cn("my-1 h-px bg-primary-border", className),
111
111
  ...props
112
112
  });
113
113
  }
@@ -115,7 +115,7 @@ function MenubarSeparator({ className, ...props }) {
115
115
  function MenubarShortcut({ className, ...props }) {
116
116
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
117
117
  "data-slot": "menubar-shortcut",
118
- className: require_cn.cn("ml-auto text-xs tracking-widest text-muted-foreground", className),
118
+ className: require_cn.cn("ml-auto text-sm leading-5 text-muted-txt", className),
119
119
  ...props
120
120
  });
121
121
  }
@@ -131,16 +131,16 @@ function MenubarSubTrigger({ className, inset, children, ...props }) {
131
131
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Menubar.SubTrigger, {
132
132
  "data-slot": "menubar-sub-trigger",
133
133
  "data-inset": inset,
134
- className: require_cn.cn("flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", className),
134
+ className: require_cn.cn("flex min-h-8 cursor-default items-center gap-2 rounded-10 px-2 py-1.5 text-sm leading-5 outline-none select-none focus:bg-ghost-hover-bg data-[inset]:pl-8 data-[state=open]:bg-ghost-hover-bg", className),
135
135
  ...props,
136
- children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRightIcon, { className: "ml-auto h-4 w-4" })]
136
+ children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRightIcon, { className: "ml-auto size-4" })]
137
137
  });
138
138
  }
139
139
  /** The dropdown surface for a nested submenu's items. */
140
140
  function MenubarSubContent({ className, ...props }) {
141
141
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Menubar.SubContent, {
142
142
  "data-slot": "menubar-sub-content",
143
- className: require_cn.cn("z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", className),
143
+ className: require_cn.cn("z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-12 border border-primary-border bg-glass-none-bg p-2 text-primary-txt shadow-sm 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-item]:not([data-inset])]:pl-8", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-label]:not([data-inset])]:pl-8", "[&:has([role=menuitemcheckbox],[role=menuitemradio])_[data-slot=menubar-sub-trigger]:not([data-inset])]:pl-8", className),
144
144
  ...props
145
145
  });
146
146
  }