@fangxinyan/lumina 0.5.0 → 0.6.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 (382) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.d.cts +2 -2
  3. package/dist/Accordion.d.ts +2 -2
  4. package/dist/Accordion.js +2 -2
  5. package/dist/Alert.cjs +3 -3
  6. package/dist/Alert.d.cts +2 -2
  7. package/dist/Alert.d.ts +2 -2
  8. package/dist/Alert.js +2 -2
  9. package/dist/AppShell.cjs +5 -5
  10. package/dist/AppShell.d.cts +8 -8
  11. package/dist/AppShell.d.ts +8 -8
  12. package/dist/AppShell.js +1 -1
  13. package/dist/AutoComplete.cjs +5 -5
  14. package/dist/AutoComplete.d.cts +1 -4
  15. package/dist/AutoComplete.d.ts +1 -4
  16. package/dist/AutoComplete.js +4 -4
  17. package/dist/Avatar.cjs +2 -2
  18. package/dist/Avatar.d.cts +1 -1
  19. package/dist/Avatar.d.ts +1 -1
  20. package/dist/Avatar.js +1 -1
  21. package/dist/Button.cjs +4 -4
  22. package/dist/Button.js +2 -2
  23. package/dist/Calendar.cjs +3 -3
  24. package/dist/Calendar.d.cts +2 -2
  25. package/dist/Calendar.d.ts +2 -2
  26. package/dist/Calendar.js +2 -2
  27. package/dist/Cascader.cjs +4 -4
  28. package/dist/Cascader.d.cts +2 -2
  29. package/dist/Cascader.d.ts +2 -2
  30. package/dist/Cascader.js +3 -3
  31. package/dist/Checkbox.cjs +4 -4
  32. package/dist/Checkbox.d.cts +5 -5
  33. package/dist/Checkbox.d.ts +5 -5
  34. package/dist/Checkbox.js +2 -2
  35. package/dist/ColorPicker.cjs +3 -3
  36. package/dist/ColorPicker.d.cts +1 -3
  37. package/dist/ColorPicker.d.ts +1 -3
  38. package/dist/ColorPicker.js +2 -2
  39. package/dist/CommandPalette.cjs +4 -4
  40. package/dist/CommandPalette.d.cts +2 -2
  41. package/dist/CommandPalette.d.ts +2 -2
  42. package/dist/CommandPalette.js +3 -3
  43. package/dist/ContextMenu.cjs +2 -2
  44. package/dist/ContextMenu.d.cts +2 -2
  45. package/dist/ContextMenu.d.ts +2 -2
  46. package/dist/ContextMenu.js +1 -1
  47. package/dist/Divider.cjs +2 -2
  48. package/dist/Divider.d.cts +1 -1
  49. package/dist/Divider.d.ts +1 -1
  50. package/dist/Divider.js +1 -1
  51. package/dist/Drawer.cjs +3 -3
  52. package/dist/Drawer.d.cts +2 -2
  53. package/dist/Drawer.d.ts +2 -2
  54. package/dist/Drawer.js +2 -2
  55. package/dist/Empty.cjs +4 -4
  56. package/dist/Empty.d.cts +6 -6
  57. package/dist/Empty.d.ts +6 -6
  58. package/dist/Empty.js +1 -1
  59. package/dist/Form.cjs +4 -4
  60. package/dist/Form.d.cts +2 -2
  61. package/dist/Form.d.ts +2 -2
  62. package/dist/Form.js +1 -1
  63. package/dist/Icon.cjs +3 -3
  64. package/dist/Icon.d.cts +2 -2
  65. package/dist/Icon.d.ts +2 -2
  66. package/dist/Icon.js +1 -1
  67. package/dist/Image.cjs +4 -4
  68. package/dist/Image.d.cts +4 -4
  69. package/dist/Image.d.ts +4 -4
  70. package/dist/Image.js +2 -2
  71. package/dist/Input.cjs +4 -4
  72. package/dist/Input.js +2 -2
  73. package/dist/InputNumber.cjs +4 -4
  74. package/dist/InputNumber.d.cts +1 -5
  75. package/dist/InputNumber.d.ts +1 -5
  76. package/dist/InputNumber.js +3 -3
  77. package/dist/List.cjs +2 -2
  78. package/dist/List.d.cts +2 -2
  79. package/dist/List.d.ts +2 -2
  80. package/dist/List.js +1 -1
  81. package/dist/Modal.cjs +4 -4
  82. package/dist/Modal.d.cts +2 -2
  83. package/dist/Modal.d.ts +2 -2
  84. package/dist/Modal.js +3 -3
  85. package/dist/Pagination.cjs +6 -6
  86. package/dist/Pagination.d.cts +2 -2
  87. package/dist/Pagination.d.ts +2 -2
  88. package/dist/Pagination.js +5 -5
  89. package/dist/Popover-DVGQGWX6.css +103 -0
  90. package/dist/Popover.cjs +3 -3
  91. package/dist/Popover.d.cts +25 -3
  92. package/dist/Popover.d.ts +25 -3
  93. package/dist/Popover.js +2 -2
  94. package/dist/Progress-CHV7DN6Y.css +80 -0
  95. package/dist/Progress.cjs +2 -6
  96. package/dist/Progress.d.cts +5 -13
  97. package/dist/Progress.d.ts +5 -13
  98. package/dist/Progress.js +1 -1
  99. package/dist/Select.cjs +5 -5
  100. package/dist/Select.d.cts +6 -3
  101. package/dist/Select.d.ts +6 -3
  102. package/dist/Select.js +4 -4
  103. package/dist/Splitter.cjs +2 -2
  104. package/dist/Splitter.d.cts +2 -2
  105. package/dist/Splitter.d.ts +2 -2
  106. package/dist/Splitter.js +1 -1
  107. package/dist/StatusBar.cjs +3 -3
  108. package/dist/StatusBar.d.cts +3 -2
  109. package/dist/StatusBar.d.ts +3 -2
  110. package/dist/StatusBar.js +1 -1
  111. package/dist/Switch.cjs +2 -2
  112. package/dist/Switch.d.cts +2 -2
  113. package/dist/Switch.d.ts +2 -2
  114. package/dist/Switch.js +1 -1
  115. package/dist/Table.cjs +9 -9
  116. package/dist/Table.d.cts +4 -3
  117. package/dist/Table.d.ts +4 -3
  118. package/dist/Table.js +7 -7
  119. package/dist/Tabs.cjs +3 -3
  120. package/dist/Tabs.d.cts +5 -5
  121. package/dist/Tabs.d.ts +5 -5
  122. package/dist/Tabs.js +1 -1
  123. package/dist/Tag.cjs +4 -4
  124. package/dist/Tag.d.cts +2 -2
  125. package/dist/Tag.d.ts +2 -2
  126. package/dist/Tag.js +2 -2
  127. package/dist/Timeline-RHZAZKZ7.css +136 -0
  128. package/dist/Timeline.cjs +13 -0
  129. package/dist/Timeline.cjs.map +1 -0
  130. package/dist/Timeline.d.cts +38 -0
  131. package/dist/Timeline.d.ts +38 -0
  132. package/dist/Timeline.js +4 -0
  133. package/dist/Timeline.js.map +1 -0
  134. package/dist/{Toast-6PVSAXQ5.css → Toast-YSACW3EM.css} +2 -2
  135. package/dist/Toast.cjs +4 -4
  136. package/dist/Toast.d.cts +2 -2
  137. package/dist/Toast.d.ts +2 -2
  138. package/dist/Toast.js +2 -2
  139. package/dist/{Tooltip-ST24GY4S.css → Tooltip-DMKUPC24.css} +1 -0
  140. package/dist/Tooltip.cjs +3 -3
  141. package/dist/Tooltip.d.cts +2 -2
  142. package/dist/Tooltip.d.ts +2 -2
  143. package/dist/Tooltip.js +2 -2
  144. package/dist/Typography.cjs +7 -7
  145. package/dist/Typography.js +2 -2
  146. package/dist/{chunk-QVFEKGKI.cjs → chunk-2K5HZLXW.cjs} +6 -3
  147. package/dist/chunk-2K5HZLXW.cjs.map +1 -0
  148. package/dist/chunk-2LIX7ZHX.js +29 -0
  149. package/dist/chunk-2LIX7ZHX.js.map +1 -0
  150. package/dist/{chunk-N73JGXYZ.cjs → chunk-2TNJ7TC4.cjs} +22 -12
  151. package/dist/chunk-2TNJ7TC4.cjs.map +1 -0
  152. package/dist/chunk-3EGZ6TBF.cjs +65 -0
  153. package/dist/chunk-3EGZ6TBF.cjs.map +1 -0
  154. package/dist/{chunk-RFU5HN4E.js → chunk-3LJO33HI.js} +25 -7
  155. package/dist/chunk-3LJO33HI.js.map +1 -0
  156. package/dist/{chunk-RZ2E3XEU.cjs → chunk-3XIDJEYR.cjs} +21 -6
  157. package/dist/chunk-3XIDJEYR.cjs.map +1 -0
  158. package/dist/{chunk-UQB5OHMO.js → chunk-44AVDO3T.js} +27 -19
  159. package/dist/chunk-44AVDO3T.js.map +1 -0
  160. package/dist/chunk-474MXYO5.cjs +108 -0
  161. package/dist/chunk-474MXYO5.cjs.map +1 -0
  162. package/dist/{chunk-XCYE4OQV.js → chunk-4DNHASZU.js} +10 -8
  163. package/dist/chunk-4DNHASZU.js.map +1 -0
  164. package/dist/{chunk-OM76QWUN.js → chunk-4JHFGSNH.js} +24 -13
  165. package/dist/chunk-4JHFGSNH.js.map +1 -0
  166. package/dist/{chunk-6Z24VO3K.js → chunk-4XSP4HHZ.js} +18 -8
  167. package/dist/chunk-4XSP4HHZ.js.map +1 -0
  168. package/dist/{chunk-CTYW42GG.js → chunk-5VIOJW6M.js} +142 -129
  169. package/dist/chunk-5VIOJW6M.js.map +1 -0
  170. package/dist/{chunk-O7C6S644.js → chunk-6CAEGNCK.js} +10 -8
  171. package/dist/chunk-6CAEGNCK.js.map +1 -0
  172. package/dist/{chunk-JXHMJUVI.js → chunk-6FSOJLY6.js} +3 -3
  173. package/dist/{chunk-JXHMJUVI.js.map → chunk-6FSOJLY6.js.map} +1 -1
  174. package/dist/{chunk-LLNEDEST.cjs → chunk-6TRVGFFX.cjs} +18 -7
  175. package/dist/chunk-6TRVGFFX.cjs.map +1 -0
  176. package/dist/{chunk-7T2SLRNL.cjs → chunk-74VZZAUT.cjs} +14 -7
  177. package/dist/chunk-74VZZAUT.cjs.map +1 -0
  178. package/dist/{chunk-GR5STMOA.js → chunk-A3IJM7IX.js} +76 -50
  179. package/dist/chunk-A3IJM7IX.js.map +1 -0
  180. package/dist/{chunk-V2DIQ3RH.js → chunk-ANAQER3T.js} +21 -6
  181. package/dist/chunk-ANAQER3T.js.map +1 -0
  182. package/dist/{chunk-WZ73TWB2.cjs → chunk-AXRABZLY.cjs} +25 -7
  183. package/dist/chunk-AXRABZLY.cjs.map +1 -0
  184. package/dist/{chunk-QOGROEVD.js → chunk-BSHHQOFY.js} +27 -21
  185. package/dist/chunk-BSHHQOFY.js.map +1 -0
  186. package/dist/{chunk-JSDQVVQB.js → chunk-CVEGVB2C.js} +17 -12
  187. package/dist/chunk-CVEGVB2C.js.map +1 -0
  188. package/dist/{chunk-LXNR6TQK.js → chunk-D242UJZO.js} +14 -11
  189. package/dist/chunk-D242UJZO.js.map +1 -0
  190. package/dist/{chunk-AESLEYST.js → chunk-DB5JMXOI.js} +11 -9
  191. package/dist/chunk-DB5JMXOI.js.map +1 -0
  192. package/dist/{chunk-OWNVDXRQ.js → chunk-DCX36FYD.js} +23 -10
  193. package/dist/chunk-DCX36FYD.js.map +1 -0
  194. package/dist/{chunk-YCHUHMNP.cjs → chunk-DH4NYYJP.cjs} +46 -20
  195. package/dist/chunk-DH4NYYJP.cjs.map +1 -0
  196. package/dist/{chunk-ZFJHUOFU.js → chunk-DUNQNSVK.js} +21 -11
  197. package/dist/chunk-DUNQNSVK.js.map +1 -0
  198. package/dist/{chunk-5PREWYTB.js → chunk-E6K6GYUC.js} +21 -27
  199. package/dist/chunk-E6K6GYUC.js.map +1 -0
  200. package/dist/{chunk-IHACXMOI.js → chunk-EARCKSI7.js} +6 -3
  201. package/dist/chunk-EARCKSI7.js.map +1 -0
  202. package/dist/chunk-EHZXEZI2.cjs +78 -0
  203. package/dist/chunk-EHZXEZI2.cjs.map +1 -0
  204. package/dist/{chunk-HJIKU6MF.cjs → chunk-FBQLNAUI.cjs} +11 -9
  205. package/dist/chunk-FBQLNAUI.cjs.map +1 -0
  206. package/dist/chunk-FCIPCZAK.cjs +53 -0
  207. package/dist/chunk-FCIPCZAK.cjs.map +1 -0
  208. package/dist/{chunk-7M7NAMR5.js → chunk-FSOJHDXH.js} +18 -7
  209. package/dist/chunk-FSOJHDXH.js.map +1 -0
  210. package/dist/{chunk-BCPAY65C.cjs → chunk-HHSVGNJA.cjs} +7 -7
  211. package/dist/chunk-HHSVGNJA.cjs.map +1 -0
  212. package/dist/{chunk-WVBFQB26.cjs → chunk-HQO7EZNQ.cjs} +24 -14
  213. package/dist/chunk-HQO7EZNQ.cjs.map +1 -0
  214. package/dist/{chunk-MDQNUKCP.cjs → chunk-IL523MTN.cjs} +146 -133
  215. package/dist/chunk-IL523MTN.cjs.map +1 -0
  216. package/dist/{chunk-SMHXSEBD.cjs → chunk-JAGJQDAV.cjs} +22 -13
  217. package/dist/chunk-JAGJQDAV.cjs.map +1 -0
  218. package/dist/{chunk-RWHWEQQX.cjs → chunk-JF2WNLPF.cjs} +6 -6
  219. package/dist/{chunk-RWHWEQQX.cjs.map → chunk-JF2WNLPF.cjs.map} +1 -1
  220. package/dist/chunk-JS6U7UQS.js +86 -0
  221. package/dist/chunk-JS6U7UQS.js.map +1 -0
  222. package/dist/{chunk-TZXEZFCI.cjs → chunk-KA3XLPQJ.cjs} +34 -9
  223. package/dist/chunk-KA3XLPQJ.cjs.map +1 -0
  224. package/dist/{chunk-NS3C2ZSE.js → chunk-KWE2PXJQ.js} +8 -5
  225. package/dist/chunk-KWE2PXJQ.js.map +1 -0
  226. package/dist/{chunk-E62JFAHW.js → chunk-LSQD2GFA.js} +4 -4
  227. package/dist/chunk-LSQD2GFA.js.map +1 -0
  228. package/dist/{chunk-77TZHI76.cjs → chunk-MU4GGX6C.cjs} +14 -12
  229. package/dist/chunk-MU4GGX6C.cjs.map +1 -0
  230. package/dist/{chunk-IOWREUEP.js → chunk-MXIWTYNC.js} +17 -7
  231. package/dist/chunk-MXIWTYNC.js.map +1 -0
  232. package/dist/{chunk-5EAVXFFD.cjs → chunk-NRP3X3PE.cjs} +17 -12
  233. package/dist/chunk-NRP3X3PE.cjs.map +1 -0
  234. package/dist/{chunk-VQBZKRIB.cjs → chunk-P4CGE5C7.cjs} +19 -9
  235. package/dist/chunk-P4CGE5C7.cjs.map +1 -0
  236. package/dist/{chunk-TZLM5GF4.js → chunk-PX5ABNKV.js} +19 -10
  237. package/dist/chunk-PX5ABNKV.js.map +1 -0
  238. package/dist/{chunk-RQV7SMIZ.cjs → chunk-QCNHDDSD.cjs} +36 -13
  239. package/dist/chunk-QCNHDDSD.cjs.map +1 -0
  240. package/dist/{chunk-5N7347MI.js → chunk-QRSPBK3X.js} +8 -6
  241. package/dist/chunk-QRSPBK3X.js.map +1 -0
  242. package/dist/{chunk-6XZ362VL.js → chunk-RHZOBQON.js} +36 -15
  243. package/dist/chunk-RHZOBQON.js.map +1 -0
  244. package/dist/chunk-RNVE2LMJ.cjs +162 -0
  245. package/dist/chunk-RNVE2LMJ.cjs.map +1 -0
  246. package/dist/{chunk-TQLCIXCK.cjs → chunk-RXL26GSI.cjs} +28 -5
  247. package/dist/chunk-RXL26GSI.cjs.map +1 -0
  248. package/dist/{chunk-NN7WMXY4.cjs → chunk-S3OSBW7R.cjs} +19 -14
  249. package/dist/chunk-S3OSBW7R.cjs.map +1 -0
  250. package/dist/{chunk-33TIL25B.cjs → chunk-SREMTSVI.cjs} +47 -19
  251. package/dist/chunk-SREMTSVI.cjs.map +1 -0
  252. package/dist/{chunk-6GNFRP2H.js → chunk-SWB57EA2.js} +9 -7
  253. package/dist/chunk-SWB57EA2.js.map +1 -0
  254. package/dist/{chunk-KW7Z4IQC.js → chunk-T7ZBJJC4.js} +12 -7
  255. package/dist/chunk-T7ZBJJC4.js.map +1 -0
  256. package/dist/chunk-TC5ZL2OS.cjs +165 -0
  257. package/dist/chunk-TC5ZL2OS.cjs.map +1 -0
  258. package/dist/{chunk-XYVJ3FBQ.cjs → chunk-V24B7KWT.cjs} +12 -10
  259. package/dist/chunk-V24B7KWT.cjs.map +1 -0
  260. package/dist/{chunk-3BZ47QNV.cjs → chunk-V5KSJITO.cjs} +7 -7
  261. package/dist/{chunk-3BZ47QNV.cjs.map → chunk-V5KSJITO.cjs.map} +1 -1
  262. package/dist/{chunk-YFBHVTKN.cjs → chunk-WFFWVQK4.cjs} +7 -7
  263. package/dist/{chunk-YFBHVTKN.cjs.map → chunk-WFFWVQK4.cjs.map} +1 -1
  264. package/dist/{chunk-I7WLFADD.js → chunk-WLFMOWUY.js} +3 -3
  265. package/dist/{chunk-I7WLFADD.js.map → chunk-WLFMOWUY.js.map} +1 -1
  266. package/dist/{chunk-I2HHC6QW.js → chunk-X3QINITU.js} +17 -6
  267. package/dist/chunk-X3QINITU.js.map +1 -0
  268. package/dist/{chunk-2ENTRT7R.cjs → chunk-XMFVAYBP.cjs} +20 -9
  269. package/dist/chunk-XMFVAYBP.cjs.map +1 -0
  270. package/dist/{chunk-HXSAH4Y6.cjs → chunk-XMINE4TN.cjs} +28 -17
  271. package/dist/chunk-XMINE4TN.cjs.map +1 -0
  272. package/dist/{chunk-YZ2I7CDF.cjs → chunk-XXE5TQ7I.cjs} +9 -7
  273. package/dist/chunk-XXE5TQ7I.cjs.map +1 -0
  274. package/dist/chunk-XYGRVPUA.js +140 -0
  275. package/dist/chunk-XYGRVPUA.js.map +1 -0
  276. package/dist/chunk-Y7BZMMAV.cjs +51 -0
  277. package/dist/chunk-Y7BZMMAV.cjs.map +1 -0
  278. package/dist/{chunk-FFZLSY2N.js → chunk-YRAQRENN.js} +40 -13
  279. package/dist/chunk-YRAQRENN.js.map +1 -0
  280. package/dist/{chunk-IJA26LRY.cjs → chunk-YVSZLQTQ.cjs} +19 -9
  281. package/dist/chunk-YVSZLQTQ.cjs.map +1 -0
  282. package/dist/{chunk-OZVPJWXO.cjs → chunk-ZA36BJIY.cjs} +41 -14
  283. package/dist/chunk-ZA36BJIY.cjs.map +1 -0
  284. package/dist/{chunk-47Z4NIU4.js → chunk-ZHCQEJ2Z.js} +14 -7
  285. package/dist/chunk-ZHCQEJ2Z.js.map +1 -0
  286. package/dist/{chunk-T4PI2ZX7.cjs → chunk-ZM4P6ELG.cjs} +46 -25
  287. package/dist/chunk-ZM4P6ELG.cjs.map +1 -0
  288. package/dist/{chunk-PKXXR76Q.js → chunk-ZN6VS6SO.js} +18 -13
  289. package/dist/chunk-ZN6VS6SO.js.map +1 -0
  290. package/dist/{chunk-FXQGPHK2.js → chunk-ZPDMAMWC.js} +21 -11
  291. package/dist/chunk-ZPDMAMWC.js.map +1 -0
  292. package/dist/{chunk-WUOFJPZ4.js → chunk-ZZXNHPF3.js} +3 -3
  293. package/dist/{chunk-WUOFJPZ4.js.map → chunk-ZZXNHPF3.js.map} +1 -1
  294. package/dist/index.cjs +98 -97
  295. package/dist/index.cjs.map +1 -1
  296. package/dist/index.d.cts +3 -2
  297. package/dist/index.d.ts +3 -2
  298. package/dist/index.js +38 -37
  299. package/dist/index.js.map +1 -1
  300. package/dist/styles.css +136 -36
  301. package/docs/llms/appshell.md +36 -0
  302. package/docs/llms/popover.md +138 -6
  303. package/docs/llms/progress.md +10 -18
  304. package/docs/llms/timeline.md +140 -0
  305. package/docs/llms.md +9 -6
  306. package/package.json +80 -1
  307. package/dist/Popover-NYEKT5CQ.css +0 -10
  308. package/dist/Progress-IXRSO5TW.css +0 -63
  309. package/dist/chunk-2ENTRT7R.cjs.map +0 -1
  310. package/dist/chunk-33TIL25B.cjs.map +0 -1
  311. package/dist/chunk-3UU2PUK4.js +0 -66
  312. package/dist/chunk-3UU2PUK4.js.map +0 -1
  313. package/dist/chunk-47Z4NIU4.js.map +0 -1
  314. package/dist/chunk-5BFETKVP.cjs +0 -52
  315. package/dist/chunk-5BFETKVP.cjs.map +0 -1
  316. package/dist/chunk-5EAVXFFD.cjs.map +0 -1
  317. package/dist/chunk-5N7347MI.js.map +0 -1
  318. package/dist/chunk-5PREWYTB.js.map +0 -1
  319. package/dist/chunk-6GNFRP2H.js.map +0 -1
  320. package/dist/chunk-6XZ362VL.js.map +0 -1
  321. package/dist/chunk-6Z24VO3K.js.map +0 -1
  322. package/dist/chunk-77TZHI76.cjs.map +0 -1
  323. package/dist/chunk-7M7NAMR5.js.map +0 -1
  324. package/dist/chunk-7T2SLRNL.cjs.map +0 -1
  325. package/dist/chunk-7YQWG7HR.cjs +0 -45
  326. package/dist/chunk-7YQWG7HR.cjs.map +0 -1
  327. package/dist/chunk-AESLEYST.js.map +0 -1
  328. package/dist/chunk-BCPAY65C.cjs.map +0 -1
  329. package/dist/chunk-CTYW42GG.js.map +0 -1
  330. package/dist/chunk-E62JFAHW.js.map +0 -1
  331. package/dist/chunk-FFZLSY2N.js.map +0 -1
  332. package/dist/chunk-FXQGPHK2.js.map +0 -1
  333. package/dist/chunk-GR5STMOA.js.map +0 -1
  334. package/dist/chunk-HJIKU6MF.cjs.map +0 -1
  335. package/dist/chunk-HXSAH4Y6.cjs.map +0 -1
  336. package/dist/chunk-I2HHC6QW.js.map +0 -1
  337. package/dist/chunk-IHACXMOI.js.map +0 -1
  338. package/dist/chunk-IJA26LRY.cjs.map +0 -1
  339. package/dist/chunk-IOWREUEP.js.map +0 -1
  340. package/dist/chunk-IZDJCEMF.cjs +0 -31
  341. package/dist/chunk-IZDJCEMF.cjs.map +0 -1
  342. package/dist/chunk-JSDQVVQB.js.map +0 -1
  343. package/dist/chunk-KW7Z4IQC.js.map +0 -1
  344. package/dist/chunk-LLNEDEST.cjs.map +0 -1
  345. package/dist/chunk-LXNR6TQK.js.map +0 -1
  346. package/dist/chunk-MDQNUKCP.cjs.map +0 -1
  347. package/dist/chunk-N73JGXYZ.cjs.map +0 -1
  348. package/dist/chunk-NN7WMXY4.cjs.map +0 -1
  349. package/dist/chunk-NQQWCIE6.cjs +0 -20
  350. package/dist/chunk-NQQWCIE6.cjs.map +0 -1
  351. package/dist/chunk-NS3C2ZSE.js.map +0 -1
  352. package/dist/chunk-O2HMH5BI.cjs +0 -88
  353. package/dist/chunk-O2HMH5BI.cjs.map +0 -1
  354. package/dist/chunk-O7C6S644.js.map +0 -1
  355. package/dist/chunk-OM76QWUN.js.map +0 -1
  356. package/dist/chunk-OWNVDXRQ.js.map +0 -1
  357. package/dist/chunk-OZVPJWXO.cjs.map +0 -1
  358. package/dist/chunk-PKXXR76Q.js.map +0 -1
  359. package/dist/chunk-QOGROEVD.js.map +0 -1
  360. package/dist/chunk-QVFEKGKI.cjs.map +0 -1
  361. package/dist/chunk-RFU5HN4E.js.map +0 -1
  362. package/dist/chunk-RQV7SMIZ.cjs.map +0 -1
  363. package/dist/chunk-RZ2E3XEU.cjs.map +0 -1
  364. package/dist/chunk-SMHXSEBD.cjs.map +0 -1
  365. package/dist/chunk-T4PI2ZX7.cjs.map +0 -1
  366. package/dist/chunk-TQLCIXCK.cjs.map +0 -1
  367. package/dist/chunk-TZLM5GF4.js.map +0 -1
  368. package/dist/chunk-TZXEZFCI.cjs.map +0 -1
  369. package/dist/chunk-UQB5OHMO.js.map +0 -1
  370. package/dist/chunk-V2DIQ3RH.js.map +0 -1
  371. package/dist/chunk-VQBZKRIB.cjs.map +0 -1
  372. package/dist/chunk-WDBJVKSR.js +0 -18
  373. package/dist/chunk-WDBJVKSR.js.map +0 -1
  374. package/dist/chunk-WVBFQB26.cjs.map +0 -1
  375. package/dist/chunk-WZ73TWB2.cjs.map +0 -1
  376. package/dist/chunk-XCYE4OQV.js.map +0 -1
  377. package/dist/chunk-XUT2Z2L6.cjs +0 -119
  378. package/dist/chunk-XUT2Z2L6.cjs.map +0 -1
  379. package/dist/chunk-XYVJ3FBQ.cjs.map +0 -1
  380. package/dist/chunk-YCHUHMNP.cjs.map +0 -1
  381. package/dist/chunk-YZ2I7CDF.cjs.map +0 -1
  382. package/dist/chunk-ZFJHUOFU.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ var chunk3XIDJEYR_cjs = require('./chunk-3XIDJEYR.cjs');
4
+ require('./tokens-BIIUTPKN.css');
5
+ require('./shared-NJHRNLRH.css');
6
+ require('./Popover-DVGQGWX6.css');
7
+ var React = require('react');
8
+ var reactDom = require('react-dom');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
+
31
+ var Popover = React__namespace.forwardRef(({
32
+ content,
33
+ title,
34
+ placement = "bottom",
35
+ trigger = "click",
36
+ arrow = false,
37
+ closable = false,
38
+ width,
39
+ defaultOpen = false,
40
+ open,
41
+ onOpenChange,
42
+ children,
43
+ className = "",
44
+ onClick,
45
+ onMouseEnter,
46
+ onMouseLeave,
47
+ ...rest
48
+ }, ref) => {
49
+ const [inner, setInner] = React__namespace.useState(defaultOpen);
50
+ const isControlled = open !== void 0;
51
+ const show = isControlled ? open : inner;
52
+ const panelWidth = width === "auto" ? 160 : width ?? 240;
53
+ const {
54
+ triggerRef,
55
+ floatingRef,
56
+ floatingStyle,
57
+ placement: resolved
58
+ } = chunk3XIDJEYR_cjs.useFloating({
59
+ open: show,
60
+ placement,
61
+ panelWidth,
62
+ panelHeight: 160,
63
+ alignCross: "center"
64
+ });
65
+ const set = React__namespace.useCallback((v) => {
66
+ if (!isControlled) setInner(v);
67
+ onOpenChange?.(v);
68
+ }, [isControlled, onOpenChange]);
69
+ const setTriggerRef = React__namespace.useCallback(
70
+ (node) => {
71
+ triggerRef.current = node;
72
+ if (typeof ref === "function") ref(node);
73
+ else if (ref) ref.current = node;
74
+ },
75
+ [ref, triggerRef]
76
+ );
77
+ React__namespace.useEffect(() => {
78
+ if (trigger !== "click" || !show) return;
79
+ const h = (e) => {
80
+ const t = e.target;
81
+ if (triggerRef.current?.contains(t)) return;
82
+ if (floatingRef.current?.contains(t)) return;
83
+ set(false);
84
+ };
85
+ document.addEventListener("mousedown", h);
86
+ return () => document.removeEventListener("mousedown", h);
87
+ }, [show, trigger, set, triggerRef, floatingRef]);
88
+ const hoverTimeout = React__namespace.useRef();
89
+ const interact = trigger === "hover" ? {
90
+ onMouseEnter: () => {
91
+ window.clearTimeout(hoverTimeout.current);
92
+ set(true);
93
+ },
94
+ onMouseLeave: () => {
95
+ hoverTimeout.current = window.setTimeout(() => set(false), 100);
96
+ }
97
+ } : { onClick: () => set(!show) };
98
+ const panelHover = trigger === "hover" ? {
99
+ onMouseEnter: () => window.clearTimeout(hoverTimeout.current),
100
+ onMouseLeave: () => {
101
+ hoverTimeout.current = window.setTimeout(() => set(false), 100);
102
+ }
103
+ } : {};
104
+ const widthStyle = width === "auto" ? {} : { width: width ?? void 0, minWidth: width ? void 0 : 220 };
105
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
106
+ /* @__PURE__ */ jsxRuntime.jsx(
107
+ "span",
108
+ {
109
+ ref: setTriggerRef,
110
+ className: `popover-anchor ${className}`,
111
+ style: { display: "inline-flex", alignSelf: "flex-start" },
112
+ onClick: (e) => {
113
+ onClick?.(e);
114
+ if ("onClick" in interact) interact.onClick?.();
115
+ },
116
+ onMouseEnter: (e) => {
117
+ onMouseEnter?.(e);
118
+ if ("onMouseEnter" in interact) interact.onMouseEnter?.();
119
+ },
120
+ onMouseLeave: (e) => {
121
+ onMouseLeave?.(e);
122
+ if ("onMouseLeave" in interact) interact.onMouseLeave?.();
123
+ },
124
+ ...rest,
125
+ children
126
+ }
127
+ ),
128
+ show && typeof document !== "undefined" && reactDom.createPortal(
129
+ /* @__PURE__ */ jsxRuntime.jsxs(
130
+ "div",
131
+ {
132
+ ref: floatingRef,
133
+ className: `popover popover-${resolved}`,
134
+ style: { ...floatingStyle, ...widthStyle },
135
+ ...panelHover,
136
+ children: [
137
+ (title || closable) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "popover-header", children: [
138
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "popover-title", children: title }),
139
+ closable && /* @__PURE__ */ jsxRuntime.jsx(
140
+ "button",
141
+ {
142
+ className: "popover-close",
143
+ onClick: () => set(false),
144
+ "aria-label": "Close",
145
+ children: "\xD7"
146
+ }
147
+ )
148
+ ] }),
149
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "popover-body", children: content }),
150
+ arrow && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `popover-arrow popover-arrow-${resolved}` })
151
+ ]
152
+ }
153
+ ),
154
+ document.body
155
+ )
156
+ ] });
157
+ });
158
+ Popover.displayName = "Popover";
159
+
160
+ exports.Popover = Popover;
161
+ //# sourceMappingURL=chunk-RNVE2LMJ.cjs.map
162
+ //# sourceMappingURL=chunk-RNVE2LMJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Popover/Popover.tsx"],"names":["React","useFloating","jsxs","Fragment","jsx","createPortal"],"mappings":"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","file":"chunk-RNVE2LMJ.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Popover.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface PopoverProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"title\" | \"children\" | \"content\"> {\n /** Popover body content. */\n content: React.ReactNode;\n /** Optional title rendered above content. */\n title?: React.ReactNode;\n /** Preferred placement relative to the trigger. */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** How the popover is triggered. */\n trigger?: \"click\" | \"hover\";\n /** Show a small arrow pointing at the trigger. */\n arrow?: boolean;\n /** Show a close button in the header (click trigger only). */\n closable?: boolean;\n /** Panel width in px, or `\"auto\"` to fit content. */\n width?: number | \"auto\";\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n /** Controlled open state. */\n open?: boolean;\n /** Callback when visibility changes. */\n onOpenChange?: (open: boolean) => void;\n /** Trigger element. */\n children: React.ReactElement;\n className?: string;\n}\n\n/**\n * `Popover` — rich content bubble with optional title, arrow, and close button.\n *\n * @example\n * <Popover title=\"Confirm\" content={<p>Are you sure?</p>} arrow>\n * <Button>Delete</Button>\n * </Popover>\n */\nexport const Popover = React.forwardRef<HTMLSpanElement, PopoverProps>(({\n content,\n title,\n placement = \"bottom\",\n trigger = \"click\",\n arrow = false,\n closable = false,\n width,\n defaultOpen = false,\n open,\n onOpenChange,\n children,\n className = \"\",\n onClick,\n onMouseEnter,\n onMouseLeave,\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultOpen);\n const isControlled = open !== undefined;\n const show = isControlled ? open! : inner;\n\n const panelWidth = width === \"auto\" ? 160 : (width ?? 240);\n\n const {\n triggerRef,\n floatingRef,\n floatingStyle,\n placement: resolved,\n } = useFloating<HTMLSpanElement, HTMLDivElement>({\n open: show,\n placement,\n panelWidth,\n panelHeight: 160,\n alignCross: \"center\",\n });\n\n const set = React.useCallback((v: boolean) => {\n if (!isControlled) setInner(v);\n onOpenChange?.(v);\n }, [isControlled, onOpenChange]);\n\n const setTriggerRef = React.useCallback(\n (node: HTMLSpanElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLSpanElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref, triggerRef]\n );\n\n React.useEffect(() => {\n if (trigger !== \"click\" || !show) return;\n const h = (e: MouseEvent) => {\n const t = e.target as Node;\n if (triggerRef.current?.contains(t)) return;\n if (floatingRef.current?.contains(t)) return;\n set(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n }, [show, trigger, set, triggerRef, floatingRef]);\n\n const hoverTimeout = React.useRef<number | undefined>();\n\n const interact =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => {\n window.clearTimeout(hoverTimeout.current);\n set(true);\n },\n onMouseLeave: () => {\n hoverTimeout.current = window.setTimeout(() => set(false), 100);\n },\n }\n : { onClick: () => set(!show) };\n\n const panelHover =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => window.clearTimeout(hoverTimeout.current),\n onMouseLeave: () => {\n hoverTimeout.current = window.setTimeout(() => set(false), 100);\n },\n }\n : {};\n\n const widthStyle = width === \"auto\" ? {} : { width: width ?? undefined, minWidth: width ? undefined : 220 };\n\n return (\n <>\n <span\n ref={setTriggerRef}\n className={`popover-anchor ${className}`}\n style={{ display: \"inline-flex\", alignSelf: \"flex-start\" }}\n onClick={(e) => {\n onClick?.(e);\n if (\"onClick\" in interact) interact.onClick?.();\n }}\n onMouseEnter={(e) => {\n onMouseEnter?.(e);\n if (\"onMouseEnter\" in interact) interact.onMouseEnter?.();\n }}\n onMouseLeave={(e) => {\n onMouseLeave?.(e);\n if (\"onMouseLeave\" in interact) interact.onMouseLeave?.();\n }}\n {...rest}\n >\n {children}\n </span>\n {show && typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={floatingRef}\n className={`popover popover-${resolved}`}\n style={{ ...floatingStyle, ...widthStyle }}\n {...panelHover}\n >\n {(title || closable) && (\n <div className=\"popover-header\">\n {title && <div className=\"popover-title\">{title}</div>}\n {closable && (\n <button\n className=\"popover-close\"\n onClick={() => set(false)}\n aria-label=\"Close\"\n >\n ×\n </button>\n )}\n </div>\n )}\n <div className=\"popover-body\">{content}</div>\n {arrow && <span className={`popover-arrow popover-arrow-${resolved}`} />}\n </div>,\n document.body\n )}\n </>\n );\n});\nPopover.displayName = \"Popover\";\n"]}
@@ -3,10 +3,31 @@
3
3
  require('./tokens-BIIUTPKN.css');
4
4
  require('./shared-NJHRNLRH.css');
5
5
  require('./Avatar-R5A4AFKZ.css');
6
+ var React = require('react');
6
7
  var jsxRuntime = require('react/jsx-runtime');
7
8
 
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
8
29
  // src/components/Avatar/Avatar.tsx
9
- var Avatar = ({
30
+ var Avatar = React__namespace.forwardRef(({
10
31
  src,
11
32
  alt = "",
12
33
  initials,
@@ -16,7 +37,7 @@ var Avatar = ({
16
37
  className = "",
17
38
  style,
18
39
  ...rest
19
- }) => {
40
+ }, ref) => {
20
41
  const sizeCls = typeof size === "string" && size !== "md" ? size : "";
21
42
  const shapeCls = shape === "square" ? "square" : "";
22
43
  const customStyle = typeof size === "number" ? { ["--size"]: `${size}px`, ...style } : style ?? {};
@@ -24,6 +45,7 @@ var Avatar = ({
24
45
  return /* @__PURE__ */ jsxRuntime.jsxs(
25
46
  "div",
26
47
  {
48
+ ref,
27
49
  className: `avatar ${sizeCls} ${shapeCls} ${className}`.trim().replace(/\s+/g, " "),
28
50
  style: customStyle,
29
51
  ...rest,
@@ -33,8 +55,9 @@ var Avatar = ({
33
55
  ]
34
56
  }
35
57
  );
36
- };
58
+ });
59
+ Avatar.displayName = "Avatar";
37
60
 
38
61
  exports.Avatar = Avatar;
39
- //# sourceMappingURL=chunk-TQLCIXCK.cjs.map
40
- //# sourceMappingURL=chunk-TQLCIXCK.cjs.map
62
+ //# sourceMappingURL=chunk-RXL26GSI.cjs.map
63
+ //# sourceMappingURL=chunk-RXL26GSI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"names":["React","jsxs","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,IAAM,MAAA,GAAeA,4BAAwC,CAAC;AAAA,EACnE,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,UAAU,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAO,IAAA,GAAO,EAAA;AACnE,EAAA,MAAM,QAAA,GAAW,KAAA,KAAU,QAAA,GAAW,QAAA,GAAW,EAAA;AACjD,EAAA,MAAM,WAAA,GACJ,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,CAAC,QAAiB,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA,EAAM,GAAG,KAAA,EAAM,GAAI,SAAS,EAAC;AACxF,EAAA,MAAM,QAAQ,QAAA,IAAY,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,EAAE,WAAA,EAAY;AACtD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK,CAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA;AAAA,MAClF,KAAA,EAAO,WAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,GAAA,kCAAO,KAAA,EAAA,EAAI,GAAA,EAAU,KAAU,CAAA,mBAAKC,cAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACjD,0BAAUA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA,EAAI;AAAA;AAAA;AAAA,GACzD;AAEJ,CAAC;AACD,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-RXL26GSI.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Avatar.css\";\nimport * as React from \"react\";\n\nexport interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n src?: string;\n alt?: string;\n /** Initials if no image. Auto-derived from `alt` if omitted. */\n initials?: string;\n size?: number | \"sm\" | \"md\" | \"lg\" | \"xl\";\n /** Shape — circular (default) or rounded-square. */\n shape?: \"circle\" | \"square\";\n /** Status dot. */\n status?: \"online\" | \"busy\" | \"away\" | \"offline\";\n}\n\n/** `Avatar` — user image or initials chip. */\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(({\n src,\n alt = \"\",\n initials,\n size = \"md\",\n shape = \"circle\",\n status,\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const sizeCls = typeof size === \"string\" && size !== \"md\" ? size : \"\";\n const shapeCls = shape === \"square\" ? \"square\" : \"\";\n const customStyle: React.CSSProperties =\n typeof size === \"number\" ? { [\"--size\" as never]: `${size}px`, ...style } : style ?? {};\n const shown = initials ?? alt.slice(0, 2).toUpperCase();\n return (\n <div\n ref={ref}\n className={`avatar ${sizeCls} ${shapeCls} ${className}`.trim().replace(/\\s+/g, \" \")}\n style={customStyle}\n {...rest}\n >\n {src ? <img src={src} alt={alt} /> : <span>{shown}</span>}\n {status && <span className={`avatar-status ${status}`} />}\n </div>\n );\n});\nAvatar.displayName = \"Avatar\";\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
3
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Checkbox-SKJATVSN.css');
@@ -27,7 +27,7 @@ function _interopNamespace(e) {
27
27
 
28
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
29
 
30
- var Checkbox = ({
30
+ var Checkbox = React__namespace.forwardRef(({
31
31
  checked,
32
32
  defaultChecked,
33
33
  indeterminate,
@@ -35,8 +35,9 @@ var Checkbox = ({
35
35
  disabled,
36
36
  label,
37
37
  className = "",
38
- id
39
- }) => {
38
+ id,
39
+ ...rest
40
+ }, ref) => {
40
41
  const [inner, setInner] = React__namespace.useState(defaultChecked ?? false);
41
42
  const isControlled = checked !== void 0;
42
43
  const value = isControlled ? checked : inner;
@@ -53,7 +54,7 @@ var Checkbox = ({
53
54
  disabled && "disabled",
54
55
  className
55
56
  ].filter(Boolean).join(" ");
56
- return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: cls, children: [
57
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { ref, className: cls, ...rest, children: [
57
58
  /* @__PURE__ */ jsxRuntime.jsx(
58
59
  "button",
59
60
  {
@@ -64,20 +65,22 @@ var Checkbox = ({
64
65
  onClick: toggle,
65
66
  id,
66
67
  className: "checkbox-box",
67
- children: indeterminate ? /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "minus", size: 11 }) : value ? /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "check", size: 11 }) : null
68
+ children: indeterminate ? /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "minus", size: 11 }) : value ? /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "check", size: 11 }) : null
68
69
  }
69
70
  ),
70
71
  label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "checkbox-label", children: label })
71
72
  ] });
72
- };
73
- function RadioGroup({
73
+ });
74
+ Checkbox.displayName = "Checkbox";
75
+ var RadioGroupInner = ({
74
76
  options,
75
77
  value,
76
78
  defaultValue,
77
79
  onChange,
78
80
  direction = "vertical",
79
- className = ""
80
- }) {
81
+ className = "",
82
+ ...rest
83
+ }, ref) => {
81
84
  const [inner, setInner] = React__namespace.useState(defaultValue);
82
85
  const isControlled = value !== void 0;
83
86
  const current = isControlled ? value : inner;
@@ -85,7 +88,7 @@ function RadioGroup({
85
88
  if (!isControlled) setInner(v);
86
89
  onChange?.(v);
87
90
  };
88
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `radio-group ${direction} ${className}`, children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsxs(
91
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: `radio-group ${direction} ${className}`, ...rest, children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsxs(
89
92
  "label",
90
93
  {
91
94
  className: `radio ${current === opt.value ? "checked" : ""} ${opt.disabled ? "disabled" : ""}`,
@@ -106,9 +109,11 @@ function RadioGroup({
106
109
  },
107
110
  String(opt.value)
108
111
  )) });
109
- }
112
+ };
113
+ var RadioGroup = React__namespace.forwardRef(RadioGroupInner);
114
+ RadioGroup.displayName = "RadioGroup";
110
115
 
111
116
  exports.Checkbox = Checkbox;
112
117
  exports.RadioGroup = RadioGroup;
113
- //# sourceMappingURL=chunk-NN7WMXY4.cjs.map
114
- //# sourceMappingURL=chunk-NN7WMXY4.cjs.map
118
+ //# sourceMappingURL=chunk-S3OSBW7R.cjs.map
119
+ //# sourceMappingURL=chunk-S3OSBW7R.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Checkbox/Checkbox.tsx"],"names":["React","jsx","Icon","jsxs"],"mappings":"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","file":"chunk-S3OSBW7R.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Checkbox.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface CheckboxProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\" | \"children\" | \"id\"> {\n checked?: boolean;\n defaultChecked?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\n/** `Checkbox` — binary choice, supports indeterminate state. */\nexport const Checkbox = React.forwardRef<HTMLLabelElement, CheckboxProps>(({\n checked,\n defaultChecked,\n indeterminate,\n onChange,\n disabled,\n label,\n className = \"\",\n id,\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultChecked ?? false);\n const isControlled = checked !== undefined;\n const value = isControlled ? checked : inner;\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const cls = [\n \"checkbox\",\n value && \"checked\",\n indeterminate && \"indeterminate\",\n disabled && \"disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label ref={ref} className={cls} {...rest}>\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : value}\n disabled={disabled}\n onClick={toggle}\n id={id}\n className=\"checkbox-box\"\n >\n {indeterminate ? <Icon name=\"minus\" size={11} /> : value ? <Icon name=\"check\" size={11} /> : null}\n </button>\n {label && <span className=\"checkbox-label\">{label}</span>}\n </label>\n );\n});\nCheckbox.displayName = \"Checkbox\";\n\nexport interface RadioOption<T extends string | number = string> {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps<T extends string | number = string>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n options: RadioOption<T>[];\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n name?: string;\n direction?: \"vertical\" | \"horizontal\";\n className?: string;\n}\n\ntype RadioGroupComponent = <T extends string | number = string>(\n props: RadioGroupProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n\nconst RadioGroupInner = <T extends string | number = string>({\n options,\n value,\n defaultValue,\n onChange,\n direction = \"vertical\",\n className = \"\",\n ...rest\n}: RadioGroupProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const [inner, setInner] = React.useState<T | undefined>(defaultValue);\n const isControlled = value !== undefined;\n const current = isControlled ? value : inner;\n\n const pick = (v: T) => {\n if (!isControlled) setInner(v);\n onChange?.(v);\n };\n\n return (\n <div ref={ref} className={`radio-group ${direction} ${className}`} {...rest}>\n {options.map((opt) => (\n <label\n key={String(opt.value)}\n className={`radio ${current === opt.value ? \"checked\" : \"\"} ${opt.disabled ? \"disabled\" : \"\"}`}\n >\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={current === opt.value}\n disabled={opt.disabled}\n onClick={() => pick(opt.value)}\n className=\"radio-dot\"\n />\n <span className=\"radio-label\">{opt.label}</span>\n </label>\n ))}\n </div>\n );\n};\n\n/** `RadioGroup` — mutually exclusive options. */\nexport const RadioGroup = React.forwardRef(RadioGroupInner) as RadioGroupComponent;\n(RadioGroup as any).displayName = \"RadioGroup\";\n"]}
@@ -3,31 +3,54 @@
3
3
  require('./tokens-BIIUTPKN.css');
4
4
  require('./shared-NJHRNLRH.css');
5
5
  require('./AppShell-RCALXUCZ.css');
6
+ var React = require('react');
6
7
  var jsxRuntime = require('react/jsx-runtime');
7
8
 
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
8
29
  // src/components/AppShell/AppShell.tsx
9
- var WindowControls = ({
30
+ var WindowControls = React__namespace.forwardRef(({
10
31
  platform = "mac",
11
32
  onMinimize,
12
33
  onMaximize,
13
34
  onClose,
14
- className = ""
15
- }) => {
35
+ className = "",
36
+ ...rest
37
+ }, ref) => {
16
38
  const noDragStyle = { WebkitAppRegion: "no-drag" };
17
39
  if (platform === "windows") {
18
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `win-controls windows ${className}`, style: noDragStyle, children: [
40
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `win-controls windows ${className}`, style: noDragStyle, ...rest, children: [
19
41
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn minimize", onClick: onMinimize, "aria-label": "Minimize", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 5h8", stroke: "currentColor", strokeWidth: "1" }) }) }),
20
42
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn maximize", onClick: onMaximize, "aria-label": "Maximize", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "1", y: "1", width: "8", height: "8", stroke: "currentColor", strokeWidth: "1" }) }) }),
21
43
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn close", onClick: onClose, "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 1l8 8M9 1l-8 8", stroke: "currentColor", strokeWidth: "1" }) }) })
22
44
  ] });
23
45
  }
24
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `win-controls mac ${className}`, style: noDragStyle, children: [
46
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `win-controls mac ${className}`, style: noDragStyle, ...rest, children: [
25
47
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn close", onClick: onClose, "aria-label": "Close" }),
26
48
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn minimize", onClick: onMinimize, "aria-label": "Minimize" }),
27
49
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "win-btn maximize", onClick: onMaximize, "aria-label": "Maximize" })
28
50
  ] });
29
- };
30
- var TitleBar = ({
51
+ });
52
+ WindowControls.displayName = "WindowControls";
53
+ var TitleBar = React__namespace.forwardRef(({
31
54
  title,
32
55
  platform = "mac",
33
56
  onMinimize,
@@ -36,27 +59,30 @@ var TitleBar = ({
36
59
  center,
37
60
  actions,
38
61
  draggable = true,
39
- className = ""
40
- }) => {
62
+ className = "",
63
+ ...rest
64
+ }, ref) => {
41
65
  const dragStyle = draggable ? { WebkitAppRegion: "drag" } : void 0;
42
66
  const noDragStyle = { WebkitAppRegion: "no-drag" };
43
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `titlebar ${platform} ${className}`, style: dragStyle, children: [
67
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `titlebar ${platform} ${className}`, style: dragStyle, ...rest, children: [
44
68
  platform === "mac" && /* @__PURE__ */ jsxRuntime.jsx(WindowControls, { platform: "mac", onMinimize, onMaximize, onClose }),
45
69
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "titlebar-title", children: title }),
46
70
  center && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "titlebar-center", style: noDragStyle, children: center }),
47
71
  actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "titlebar-actions", style: noDragStyle, children: actions }),
48
72
  platform === "windows" && /* @__PURE__ */ jsxRuntime.jsx(WindowControls, { platform: "windows", onMinimize, onMaximize, onClose })
49
73
  ] });
50
- };
51
- var Sidebar = ({
74
+ });
75
+ TitleBar.displayName = "TitleBar";
76
+ var Sidebar = React__namespace.forwardRef(({
52
77
  items,
53
78
  activeKey,
54
79
  onSelect,
55
80
  collapsed,
56
81
  header,
57
82
  footer,
58
- className = ""
59
- }) => /* @__PURE__ */ jsxRuntime.jsxs("aside", { className: `sidebar ${collapsed ? "collapsed" : ""} ${className}`, children: [
83
+ className = "",
84
+ ...rest
85
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("aside", { ref, className: `sidebar ${collapsed ? "collapsed" : ""} ${className}`, ...rest, children: [
60
86
  header && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sidebar-header", children: header }),
61
87
  /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "sidebar-nav", children: items.map((it) => /* @__PURE__ */ jsxRuntime.jsxs(
62
88
  "button",
@@ -73,18 +99,20 @@ var Sidebar = ({
73
99
  it.key
74
100
  )) }),
75
101
  footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sidebar-footer", children: footer })
76
- ] });
77
- var AppShell = ({ sidebar, titleBar, children, className = "" }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `app-shell ${className}`, children: [
102
+ ] }));
103
+ Sidebar.displayName = "Sidebar";
104
+ var AppShell = React__namespace.forwardRef(({ sidebar, titleBar, children, className = "", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `app-shell ${className}`, ...rest, children: [
78
105
  titleBar,
79
106
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "app-shell-body", children: [
80
107
  sidebar,
81
108
  /* @__PURE__ */ jsxRuntime.jsx("main", { className: "app-shell-main", children })
82
109
  ] })
83
- ] });
110
+ ] }));
111
+ AppShell.displayName = "AppShell";
84
112
 
85
113
  exports.AppShell = AppShell;
86
114
  exports.Sidebar = Sidebar;
87
115
  exports.TitleBar = TitleBar;
88
116
  exports.WindowControls = WindowControls;
89
- //# sourceMappingURL=chunk-33TIL25B.cjs.map
90
- //# sourceMappingURL=chunk-33TIL25B.cjs.map
117
+ //# sourceMappingURL=chunk-SREMTSVI.cjs.map
118
+ //# sourceMappingURL=chunk-SREMTSVI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AppShell/AppShell.tsx"],"names":["React","jsxs","jsx"],"mappings":"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","file":"chunk-SREMTSVI.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./AppShell.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface WindowControlsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** macOS traffic lights or Windows-style buttons. */\n platform?: \"mac\" | \"windows\";\n onMinimize?: () => void;\n onMaximize?: () => void;\n onClose?: () => void;\n className?: string;\n}\n\n/**\n * `WindowControls` — standalone window control buttons.\n * Mac: traffic lights (close/min/max). Windows: rectangular controls.\n */\nexport const WindowControls = React.forwardRef<HTMLDivElement, WindowControlsProps>(({\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n className = \"\",\n ...rest\n}, ref) => {\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n if (platform === \"windows\") {\n return (\n <div ref={ref} className={`win-controls windows ${className}`} style={noDragStyle} {...rest}>\n <button type=\"button\" className=\"win-btn minimize\" onClick={onMinimize} aria-label=\"Minimize\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <path d=\"M1 5h8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n <button type=\"button\" className=\"win-btn maximize\" onClick={onMaximize} aria-label=\"Maximize\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <rect x=\"1\" y=\"1\" width=\"8\" height=\"8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n <button type=\"button\" className=\"win-btn close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <path d=\"M1 1l8 8M9 1l-8 8\" stroke=\"currentColor\" strokeWidth=\"1\" />\n </svg>\n </button>\n </div>\n );\n }\n return (\n <div ref={ref} className={`win-controls mac ${className}`} style={noDragStyle} {...rest}>\n <button type=\"button\" className=\"win-btn close\" onClick={onClose} aria-label=\"Close\" />\n <button type=\"button\" className=\"win-btn minimize\" onClick={onMinimize} aria-label=\"Minimize\" />\n <button type=\"button\" className=\"win-btn maximize\" onClick={onMaximize} aria-label=\"Maximize\" />\n </div>\n );\n});\nWindowControls.displayName = \"WindowControls\";\n\nexport interface TitleBarProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: React.ReactNode;\n /** Platform appearance — affects button placement. Default \"mac\". */\n platform?: \"mac\" | \"windows\";\n onMinimize?: () => void;\n onMaximize?: () => void;\n onClose?: () => void;\n /** Extra content in the center. */\n center?: React.ReactNode;\n /** Extra content on the trailing side. */\n actions?: React.ReactNode;\n /** Make the whole bar draggable (Electron `-webkit-app-region: drag`). */\n draggable?: boolean;\n className?: string;\n}\n\n/**\n * `TitleBar` — Electron-style window chrome. Attach at the top of your app.\n * Buttons are non-draggable regions so clicks register correctly.\n */\nexport const TitleBar = React.forwardRef<HTMLDivElement, TitleBarProps>(({\n title,\n platform = \"mac\",\n onMinimize,\n onMaximize,\n onClose,\n center,\n actions,\n draggable = true,\n className = \"\",\n ...rest\n}, ref) => {\n const dragStyle = draggable ? ({ WebkitAppRegion: \"drag\" } as React.CSSProperties) : undefined;\n const noDragStyle = { WebkitAppRegion: \"no-drag\" } as React.CSSProperties;\n\n return (\n <div ref={ref} className={`titlebar ${platform} ${className}`} style={dragStyle} {...rest}>\n {platform === \"mac\" && (\n <WindowControls platform=\"mac\" onMinimize={onMinimize} onMaximize={onMaximize} onClose={onClose} />\n )}\n <div className=\"titlebar-title\">{title}</div>\n {center && (\n <div className=\"titlebar-center\" style={noDragStyle}>\n {center}\n </div>\n )}\n {actions && (\n <div className=\"titlebar-actions\" style={noDragStyle}>\n {actions}\n </div>\n )}\n {platform === \"windows\" && (\n <WindowControls platform=\"windows\" onMinimize={onMinimize} onMaximize={onMaximize} onClose={onClose} />\n )}\n </div>\n );\n});\nTitleBar.displayName = \"TitleBar\";\n\nexport interface SidebarItem {\n key: string;\n label: React.ReactNode;\n icon?: React.ReactNode;\n badge?: React.ReactNode;\n children?: SidebarItem[];\n}\n\nexport interface SidebarProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"onSelect\" | \"children\"> {\n items: SidebarItem[];\n activeKey?: string;\n onSelect?: (key: string) => void;\n /** Collapsed: icons only. */\n collapsed?: boolean;\n /** Header slot (e.g. workspace switcher). */\n header?: React.ReactNode;\n /** Footer slot (e.g. user card). */\n footer?: React.ReactNode;\n className?: string;\n}\n\n/** `Sidebar` — navigation rail. Pair with `AppShell`. */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(({\n items,\n activeKey,\n onSelect,\n collapsed,\n header,\n footer,\n className = \"\",\n ...rest\n}, ref) => (\n <aside ref={ref} className={`sidebar ${collapsed ? \"collapsed\" : \"\"} ${className}`} {...rest}>\n {header && <div className=\"sidebar-header\">{header}</div>}\n <nav className=\"sidebar-nav\">\n {items.map((it) => (\n <button\n type=\"button\"\n key={it.key}\n className={`sidebar-item ${activeKey === it.key ? \"active\" : \"\"}`}\n onClick={() => onSelect?.(it.key)}\n >\n {it.icon && <span className=\"sidebar-icon\">{it.icon}</span>}\n {!collapsed && <span className=\"sidebar-label\">{it.label}</span>}\n {!collapsed && it.badge && <span className=\"sidebar-badge\">{it.badge}</span>}\n </button>\n ))}\n </nav>\n {footer && <div className=\"sidebar-footer\">{footer}</div>}\n </aside>\n));\nSidebar.displayName = \"Sidebar\";\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n sidebar?: React.ReactNode;\n titleBar?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\n/**\n * `AppShell` — 3-zone Electron layout: title bar across top, sidebar on left, content fills rest.\n */\nexport const AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(({ sidebar, titleBar, children, className = \"\", ...rest }, ref) => (\n <div ref={ref} className={`app-shell ${className}`} {...rest}>\n {titleBar}\n <div className=\"app-shell-body\">\n {sidebar}\n <main className=\"app-shell-main\">{children}</main>\n </div>\n </div>\n));\nAppShell.displayName = \"AppShell\";\n"]}
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
7
7
  // src/components/Switch/Switch.tsx
8
- var Switch = ({
8
+ var Switch = React.forwardRef(({
9
9
  checked,
10
10
  defaultChecked,
11
11
  onChange,
@@ -15,8 +15,9 @@ var Switch = ({
15
15
  checkedChildren,
16
16
  unCheckedChildren,
17
17
  className = "",
18
- id
19
- }) => {
18
+ id,
19
+ ...rest
20
+ }, ref) => {
20
21
  const [inner, setInner] = React.useState(defaultChecked ?? false);
21
22
  const isControlled = checked !== void 0;
22
23
  const value = isControlled ? checked : inner;
@@ -35,7 +36,7 @@ var Switch = ({
35
36
  hasChildren && "with-children",
36
37
  className
37
38
  ].filter(Boolean).join(" ");
38
- return /* @__PURE__ */ jsxs("label", { className: cls, children: [
39
+ return /* @__PURE__ */ jsxs("label", { ref, className: cls, ...rest, children: [
39
40
  /* @__PURE__ */ jsxs(
40
41
  "button",
41
42
  {
@@ -57,8 +58,9 @@ var Switch = ({
57
58
  ),
58
59
  label && /* @__PURE__ */ jsx("span", { className: "switch-label", children: label })
59
60
  ] });
60
- };
61
+ });
62
+ Switch.displayName = "Switch";
61
63
 
62
64
  export { Switch };
63
- //# sourceMappingURL=chunk-6GNFRP2H.js.map
64
- //# sourceMappingURL=chunk-6GNFRP2H.js.map
65
+ //# sourceMappingURL=chunk-SWB57EA2.js.map
66
+ //# sourceMappingURL=chunk-SWB57EA2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Switch/Switch.tsx"],"names":[],"mappings":";;;;;;;AAwBO,IAAM,MAAA,GAAe,iBAA0C,CAAC;AAAA,EACrE,OAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,EAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,KAAA,CAAA,QAAA,CAAS,kBAAkB,KAAK,CAAA;AAChE,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,eAAe,OAAA,GAAU,KAAA;AAEvC,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,KAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,IAAI,CAAA;AAChC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,eAAA,IAAmB,IAAA,IAAQ,iBAAA,IAAqB,IAAA;AACpE,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,QAAA;AAAA,IACA,KAAA,IAAS,IAAA;AAAA,IACT,SAAS,IAAA,IAAQ,IAAA;AAAA,IACjB,QAAA,IAAY,UAAA;AAAA,IACZ,WAAA,IAAe,eAAA;AAAA,IACf;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,4BACG,OAAA,EAAA,EAAM,GAAA,EAAU,SAAA,EAAW,GAAA,EAAM,GAAG,IAAA,EACnC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,cAAA,EAAc,KAAA;AAAA,QACd,QAAA;AAAA,QACA,OAAA,EAAS,MAAA;AAAA,QACT,EAAA;AAAA,QACA,SAAA,EAAU,cAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,WAAA,oBACC,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACd,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,4BACnD,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,iBAAA,EAAkB;AAAA,WAAA,EACxD,CAAA;AAAA,0BAEF,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA;AAAA,KACjC;AAAA,IACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAC;AACD,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-SWB57EA2.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Switch.css\";\nimport * as React from \"react\";\n\nexport interface SwitchProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\" | \"children\" | \"id\"> {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: React.ReactNode;\n size?: \"sm\" | \"md\";\n /** Content rendered inside the track when checked (short text or icon). */\n checkedChildren?: React.ReactNode;\n /** Content rendered inside the track when unchecked. */\n unCheckedChildren?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\n/**\n * `Switch` — on/off toggle. Controlled or uncontrolled.\n */\nexport const Switch = React.forwardRef<HTMLLabelElement, SwitchProps>(({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n size = \"md\",\n checkedChildren,\n unCheckedChildren,\n className = \"\",\n id,\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultChecked ?? false);\n const isControlled = checked !== undefined;\n const value = isControlled ? checked : inner;\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const hasChildren = checkedChildren != null || unCheckedChildren != null;\n const cls = [\n \"switch\",\n value && \"on\",\n size !== \"md\" && size,\n disabled && \"disabled\",\n hasChildren && \"with-children\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label ref={ref} className={cls} {...rest}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n disabled={disabled}\n onClick={toggle}\n id={id}\n className=\"switch-track\"\n >\n {hasChildren && (\n <span className=\"switch-inner\">\n <span className=\"switch-inner-on\">{checkedChildren}</span>\n <span className=\"switch-inner-off\">{unCheckedChildren}</span>\n </span>\n )}\n <span className=\"switch-thumb\" />\n </button>\n {label && <span className=\"switch-label\">{label}</span>}\n </label>\n );\n});\nSwitch.displayName = \"Switch\";\n"]}
@@ -1,10 +1,11 @@
1
- import { Icon } from './chunk-QOGROEVD.js';
1
+ import { Icon } from './chunk-BSHHQOFY.js';
2
2
  import './tokens-BIIUTPKN.css';
3
3
  import './shared-NJHRNLRH.css';
4
4
  import './Alert-JJ7GB3UU.css';
5
+ import * as React from 'react';
5
6
  import { jsxs, jsx } from 'react/jsx-runtime';
6
7
 
7
- var Alert = ({
8
+ var Alert = React.forwardRef(({
8
9
  tone = "info",
9
10
  title,
10
11
  children,
@@ -13,14 +14,17 @@ var Alert = ({
13
14
  closable,
14
15
  onClose,
15
16
  action,
16
- className = ""
17
- }) => {
17
+ className = "",
18
+ ...rest
19
+ }, ref) => {
18
20
  const iconName = icon ?? (tone === "success" ? "check2" : tone === "warning" || tone === "danger" ? "alert" : "info");
19
21
  return /* @__PURE__ */ jsxs(
20
22
  "div",
21
23
  {
24
+ ref,
22
25
  className: `alert ${tone} ${title ? "" : "no-title"} ${showIcon ? "" : "no-icon"} ${className}`,
23
26
  role: "alert",
27
+ ...rest,
24
28
  children: [
25
29
  showIcon && /* @__PURE__ */ jsx("span", { className: "alert-ico", children: /* @__PURE__ */ jsx(Icon, { name: iconName, size: 14 }) }),
26
30
  /* @__PURE__ */ jsxs("div", { className: "alert-body", children: [
@@ -32,8 +36,9 @@ var Alert = ({
32
36
  ]
33
37
  }
34
38
  );
35
- };
39
+ });
40
+ Alert.displayName = "Alert";
36
41
 
37
42
  export { Alert };
38
- //# sourceMappingURL=chunk-KW7Z4IQC.js.map
39
- //# sourceMappingURL=chunk-KW7Z4IQC.js.map
43
+ //# sourceMappingURL=chunk-T7ZBJJC4.js.map
44
+ //# sourceMappingURL=chunk-T7ZBJJC4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Alert/Alert.tsx"],"names":[],"mappings":";;;;;;;AAwBO,IAAM,KAAA,GAAc,iBAAuC,CAAC;AAAA,EACjE,IAAA,GAAO,MAAA;AAAA,EACP,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,QAAA,GACJ,SAAS,IAAA,KAAS,SAAA,GAAY,WAAW,IAAA,KAAS,SAAA,IAAa,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,MAAA,CAAA;AAC/F,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,KAAA,GAAQ,EAAA,GAAK,UAAU,CAAA,CAAA,EAAI,QAAA,GAAW,EAAA,GAAK,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,MAC7F,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EACd,QAAA,kBAAA,GAAA,CAAC,QAAK,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAA,EAAI,CAAA,EAClC,CAAA;AAAA,wBAEF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAAS,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,QAAA,oBAAY,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAS;AAAA,SAAA,EACrD,CAAA;AAAA,QACC,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAgB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAChD,4BACC,GAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,WAAU,aAAA,EAAc,OAAA,EAAS,OAAA,EAAS,YAAA,EAAW,WACzE,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,MAAK,GAAA,EAAI,IAAA,EAAM,IAAI,CAAA,EAC3B;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AACD,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-T7ZBJJC4.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Alert.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\"> {\n tone?: AlertTone;\n title?: React.ReactNode;\n children?: React.ReactNode;\n icon?: IconName;\n /** Controls the leading semantic icon. Defaults to `true`. */\n showIcon?: boolean;\n closable?: boolean;\n onClose?: () => void;\n /** Right-side action area, rendered after the content and before the close button. */\n action?: React.ReactNode;\n className?: string;\n}\n\n/** `Alert` — inline contextual message. */\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(({\n tone = \"info\",\n title,\n children,\n icon,\n showIcon = true,\n closable,\n onClose,\n action,\n className = \"\",\n ...rest\n}, ref) => {\n const iconName: IconName =\n icon ?? (tone === \"success\" ? \"check2\" : tone === \"warning\" || tone === \"danger\" ? \"alert\" : \"info\");\n return (\n <div\n ref={ref}\n className={`alert ${tone} ${title ? \"\" : \"no-title\"} ${showIcon ? \"\" : \"no-icon\"} ${className}`}\n role=\"alert\"\n {...rest}\n >\n {showIcon && (\n <span className=\"alert-ico\">\n <Icon name={iconName} size={14} />\n </span>\n )}\n <div className=\"alert-body\">\n {title && <div className=\"alert-title\">{title}</div>}\n {children && <div className=\"alert-desc\">{children}</div>}\n </div>\n {action && <div className=\"alert-action\">{action}</div>}\n {closable && (\n <button type=\"button\" className=\"alert-close\" onClick={onClose} aria-label=\"Dismiss\">\n <Icon name=\"x\" size={12} />\n </button>\n )}\n </div>\n );\n});\nAlert.displayName = \"Alert\";\n"]}