@fangxinyan/lumina 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +110 -0
  3. package/dist/Accordion-GSBY5T5U.css +38 -0
  4. package/dist/Accordion.cjs +13 -0
  5. package/dist/Accordion.cjs.map +1 -0
  6. package/dist/Accordion.d.cts +21 -0
  7. package/dist/Accordion.d.ts +21 -0
  8. package/dist/Accordion.js +4 -0
  9. package/dist/Accordion.js.map +1 -0
  10. package/dist/Alert-LSKBYDRI.css +35 -0
  11. package/dist/Alert.cjs +13 -0
  12. package/dist/Alert.cjs.map +1 -0
  13. package/dist/Alert.d.cts +17 -0
  14. package/dist/Alert.d.ts +17 -0
  15. package/dist/Alert.js +4 -0
  16. package/dist/Alert.js.map +1 -0
  17. package/dist/AppShell-RCALXUCZ.css +162 -0
  18. package/dist/AppShell.cjs +24 -0
  19. package/dist/AppShell.cjs.map +1 -0
  20. package/dist/AppShell.d.cts +68 -0
  21. package/dist/AppShell.d.ts +68 -0
  22. package/dist/AppShell.js +3 -0
  23. package/dist/AppShell.js.map +1 -0
  24. package/dist/Avatar-OXDSG5Q6.css +36 -0
  25. package/dist/Avatar.cjs +12 -0
  26. package/dist/Avatar.cjs.map +1 -0
  27. package/dist/Avatar.d.cts +15 -0
  28. package/dist/Avatar.d.ts +15 -0
  29. package/dist/Avatar.js +3 -0
  30. package/dist/Avatar.js.map +1 -0
  31. package/dist/Button-5UI7QXGU.css +96 -0
  32. package/dist/Button.cjs +17 -0
  33. package/dist/Button.cjs.map +1 -0
  34. package/dist/Button.d.cts +41 -0
  35. package/dist/Button.d.ts +41 -0
  36. package/dist/Button.js +4 -0
  37. package/dist/Button.js.map +1 -0
  38. package/dist/Calendar-LHZELUDL.css +65 -0
  39. package/dist/Calendar.cjs +13 -0
  40. package/dist/Calendar.cjs.map +1 -0
  41. package/dist/Calendar.d.cts +16 -0
  42. package/dist/Calendar.d.ts +16 -0
  43. package/dist/Calendar.js +4 -0
  44. package/dist/Calendar.js.map +1 -0
  45. package/dist/Card-2CHHFD4Y.css +28 -0
  46. package/dist/Card.cjs +16 -0
  47. package/dist/Card.cjs.map +1 -0
  48. package/dist/Card.d.cts +25 -0
  49. package/dist/Card.d.ts +25 -0
  50. package/dist/Card.js +3 -0
  51. package/dist/Card.js.map +1 -0
  52. package/dist/Cascader-TO2QMSLJ.css +76 -0
  53. package/dist/Cascader.cjs +13 -0
  54. package/dist/Cascader.cjs.map +1 -0
  55. package/dist/Cascader.d.cts +23 -0
  56. package/dist/Cascader.d.ts +23 -0
  57. package/dist/Cascader.js +4 -0
  58. package/dist/Cascader.js.map +1 -0
  59. package/dist/Checkbox-SKJATVSN.css +72 -0
  60. package/dist/Checkbox.cjs +17 -0
  61. package/dist/Checkbox.cjs.map +1 -0
  62. package/dist/Checkbox.d.cts +33 -0
  63. package/dist/Checkbox.d.ts +33 -0
  64. package/dist/Checkbox.js +4 -0
  65. package/dist/Checkbox.js.map +1 -0
  66. package/dist/Divider-Z37INS5E.css +49 -0
  67. package/dist/Divider.cjs +12 -0
  68. package/dist/Divider.cjs.map +1 -0
  69. package/dist/Divider.d.cts +12 -0
  70. package/dist/Divider.d.ts +12 -0
  71. package/dist/Divider.js +3 -0
  72. package/dist/Divider.js.map +1 -0
  73. package/dist/Empty-VM23UNLQ.css +138 -0
  74. package/dist/Empty.cjs +20 -0
  75. package/dist/Empty.cjs.map +1 -0
  76. package/dist/Empty.d.cts +37 -0
  77. package/dist/Empty.d.ts +37 -0
  78. package/dist/Empty.js +3 -0
  79. package/dist/Empty.js.map +1 -0
  80. package/dist/Icon.cjs +16 -0
  81. package/dist/Icon.cjs.map +1 -0
  82. package/dist/Icon.d.cts +21 -0
  83. package/dist/Icon.d.ts +21 -0
  84. package/dist/Icon.js +3 -0
  85. package/dist/Icon.js.map +1 -0
  86. package/dist/Image-WYWORJT4.css +106 -0
  87. package/dist/Image.cjs +17 -0
  88. package/dist/Image.cjs.map +1 -0
  89. package/dist/Image.d.cts +30 -0
  90. package/dist/Image.d.ts +30 -0
  91. package/dist/Image.js +4 -0
  92. package/dist/Image.js.map +1 -0
  93. package/dist/Input-Z526ARZP.css +66 -0
  94. package/dist/Input.cjs +17 -0
  95. package/dist/Input.cjs.map +1 -0
  96. package/dist/Input.d.cts +36 -0
  97. package/dist/Input.d.ts +36 -0
  98. package/dist/Input.js +4 -0
  99. package/dist/Input.js.map +1 -0
  100. package/dist/List-W5BW4D2P.css +26 -0
  101. package/dist/List.cjs +12 -0
  102. package/dist/List.cjs.map +1 -0
  103. package/dist/List.d.cts +20 -0
  104. package/dist/List.d.ts +20 -0
  105. package/dist/List.js +3 -0
  106. package/dist/List.js.map +1 -0
  107. package/dist/Modal-AYKNIWWQ.css +79 -0
  108. package/dist/Modal.cjs +18 -0
  109. package/dist/Modal.cjs.map +1 -0
  110. package/dist/Modal.d.cts +27 -0
  111. package/dist/Modal.d.ts +27 -0
  112. package/dist/Modal.js +5 -0
  113. package/dist/Modal.js.map +1 -0
  114. package/dist/Pagination-6FFOI4NM.css +35 -0
  115. package/dist/Pagination.cjs +13 -0
  116. package/dist/Pagination.cjs.map +1 -0
  117. package/dist/Pagination.d.cts +19 -0
  118. package/dist/Pagination.d.ts +19 -0
  119. package/dist/Pagination.js +4 -0
  120. package/dist/Pagination.js.map +1 -0
  121. package/dist/Popover-WXEVUYBG.css +15 -0
  122. package/dist/Popover.cjs +12 -0
  123. package/dist/Popover.cjs.map +1 -0
  124. package/dist/Popover.d.cts +16 -0
  125. package/dist/Popover.d.ts +16 -0
  126. package/dist/Popover.js +3 -0
  127. package/dist/Popover.js.map +1 -0
  128. package/dist/Progress-IXRSO5TW.css +63 -0
  129. package/dist/Progress.cjs +16 -0
  130. package/dist/Progress.cjs.map +1 -0
  131. package/dist/Progress.d.cts +26 -0
  132. package/dist/Progress.d.ts +26 -0
  133. package/dist/Progress.js +3 -0
  134. package/dist/Progress.js.map +1 -0
  135. package/dist/Select-DDJJBQEL.css +263 -0
  136. package/dist/Select.cjs +14 -0
  137. package/dist/Select.cjs.map +1 -0
  138. package/dist/Select.d.cts +68 -0
  139. package/dist/Select.d.ts +68 -0
  140. package/dist/Select.js +5 -0
  141. package/dist/Select.js.map +1 -0
  142. package/dist/Slider-RE4HZQKF.css +59 -0
  143. package/dist/Slider.cjs +12 -0
  144. package/dist/Slider.cjs.map +1 -0
  145. package/dist/Slider.d.cts +18 -0
  146. package/dist/Slider.d.ts +18 -0
  147. package/dist/Slider.js +3 -0
  148. package/dist/Slider.js.map +1 -0
  149. package/dist/Switch-NP7KKJOX.css +44 -0
  150. package/dist/Switch.cjs +12 -0
  151. package/dist/Switch.cjs.map +1 -0
  152. package/dist/Switch.d.cts +18 -0
  153. package/dist/Switch.d.ts +18 -0
  154. package/dist/Switch.js +3 -0
  155. package/dist/Switch.js.map +1 -0
  156. package/dist/Table-ZDPGWLH3.css +139 -0
  157. package/dist/Table.cjs +18 -0
  158. package/dist/Table.cjs.map +1 -0
  159. package/dist/Table.d.cts +57 -0
  160. package/dist/Table.d.ts +57 -0
  161. package/dist/Table.js +5 -0
  162. package/dist/Table.js.map +1 -0
  163. package/dist/Tabs-A27TSZOP.css +95 -0
  164. package/dist/Tabs.cjs +16 -0
  165. package/dist/Tabs.cjs.map +1 -0
  166. package/dist/Tabs.d.cts +35 -0
  167. package/dist/Tabs.d.ts +35 -0
  168. package/dist/Tabs.js +3 -0
  169. package/dist/Tabs.js.map +1 -0
  170. package/dist/Tag-EYOY3UWG.css +49 -0
  171. package/dist/Tag.cjs +17 -0
  172. package/dist/Tag.cjs.map +1 -0
  173. package/dist/Tag.d.cts +27 -0
  174. package/dist/Tag.d.ts +27 -0
  175. package/dist/Tag.js +4 -0
  176. package/dist/Tag.js.map +1 -0
  177. package/dist/Theme.cjs +44 -0
  178. package/dist/Theme.cjs.map +1 -0
  179. package/dist/Theme.d.cts +127 -0
  180. package/dist/Theme.d.ts +127 -0
  181. package/dist/Theme.js +3 -0
  182. package/dist/Theme.js.map +1 -0
  183. package/dist/Toast-ERHDN3WG.css +45 -0
  184. package/dist/Toast.cjs +17 -0
  185. package/dist/Toast.cjs.map +1 -0
  186. package/dist/Toast.d.cts +26 -0
  187. package/dist/Toast.d.ts +26 -0
  188. package/dist/Toast.js +4 -0
  189. package/dist/Toast.js.map +1 -0
  190. package/dist/Tooltip-RT4BOVTD.css +23 -0
  191. package/dist/Tooltip.cjs +12 -0
  192. package/dist/Tooltip.cjs.map +1 -0
  193. package/dist/Tooltip.d.cts +13 -0
  194. package/dist/Tooltip.d.ts +13 -0
  195. package/dist/Tooltip.js +3 -0
  196. package/dist/Tooltip.js.map +1 -0
  197. package/dist/chunk-2VA2HSL4.cjs +121 -0
  198. package/dist/chunk-2VA2HSL4.cjs.map +1 -0
  199. package/dist/chunk-2W2AJUZW.js +118 -0
  200. package/dist/chunk-2W2AJUZW.js.map +1 -0
  201. package/dist/chunk-3QWHDCHJ.js +53 -0
  202. package/dist/chunk-3QWHDCHJ.js.map +1 -0
  203. package/dist/chunk-3WAFIUDQ.js +85 -0
  204. package/dist/chunk-3WAFIUDQ.js.map +1 -0
  205. package/dist/chunk-4AA22BOG.js +63 -0
  206. package/dist/chunk-4AA22BOG.js.map +1 -0
  207. package/dist/chunk-4GT5TOHP.js +18 -0
  208. package/dist/chunk-4GT5TOHP.js.map +1 -0
  209. package/dist/chunk-5EYI27B6.js +64 -0
  210. package/dist/chunk-5EYI27B6.js.map +1 -0
  211. package/dist/chunk-6YVW3VYL.js +51 -0
  212. package/dist/chunk-6YVW3VYL.js.map +1 -0
  213. package/dist/chunk-77NP67ML.cjs +70 -0
  214. package/dist/chunk-77NP67ML.cjs.map +1 -0
  215. package/dist/chunk-7CKHWCEA.cjs +110 -0
  216. package/dist/chunk-7CKHWCEA.cjs.map +1 -0
  217. package/dist/chunk-7H453VPW.cjs +20 -0
  218. package/dist/chunk-7H453VPW.cjs.map +1 -0
  219. package/dist/chunk-7NM5BRUX.js +91 -0
  220. package/dist/chunk-7NM5BRUX.js.map +1 -0
  221. package/dist/chunk-7U6I44RV.cjs +283 -0
  222. package/dist/chunk-7U6I44RV.cjs.map +1 -0
  223. package/dist/chunk-AAMYURWQ.cjs +87 -0
  224. package/dist/chunk-AAMYURWQ.cjs.map +1 -0
  225. package/dist/chunk-ALFDP5WX.cjs +70 -0
  226. package/dist/chunk-ALFDP5WX.cjs.map +1 -0
  227. package/dist/chunk-C5TGQ7CV.cjs +114 -0
  228. package/dist/chunk-C5TGQ7CV.cjs.map +1 -0
  229. package/dist/chunk-F3NHM4GX.js +20 -0
  230. package/dist/chunk-F3NHM4GX.js.map +1 -0
  231. package/dist/chunk-FI7QO3I5.cjs +90 -0
  232. package/dist/chunk-FI7QO3I5.cjs.map +1 -0
  233. package/dist/chunk-FMG3ZPGK.js +88 -0
  234. package/dist/chunk-FMG3ZPGK.js.map +1 -0
  235. package/dist/chunk-G3UWXSNQ.js +71 -0
  236. package/dist/chunk-G3UWXSNQ.js.map +1 -0
  237. package/dist/chunk-GEYMWUW6.js +146 -0
  238. package/dist/chunk-GEYMWUW6.js.map +1 -0
  239. package/dist/chunk-HTP6UEVR.js +48 -0
  240. package/dist/chunk-HTP6UEVR.js.map +1 -0
  241. package/dist/chunk-I2ERCHFV.cjs +58 -0
  242. package/dist/chunk-I2ERCHFV.cjs.map +1 -0
  243. package/dist/chunk-I7SSCSFH.js +253 -0
  244. package/dist/chunk-I7SSCSFH.js.map +1 -0
  245. package/dist/chunk-IGHLSNXT.cjs +109 -0
  246. package/dist/chunk-IGHLSNXT.cjs.map +1 -0
  247. package/dist/chunk-IKI5CS4L.cjs +91 -0
  248. package/dist/chunk-IKI5CS4L.cjs.map +1 -0
  249. package/dist/chunk-ITGCHU3Y.cjs +94 -0
  250. package/dist/chunk-ITGCHU3Y.cjs.map +1 -0
  251. package/dist/chunk-JNFCTYJT.cjs +31 -0
  252. package/dist/chunk-JNFCTYJT.cjs.map +1 -0
  253. package/dist/chunk-JWFVSBVX.cjs +30 -0
  254. package/dist/chunk-JWFVSBVX.cjs.map +1 -0
  255. package/dist/chunk-K5MHL732.js +81 -0
  256. package/dist/chunk-K5MHL732.js.map +1 -0
  257. package/dist/chunk-K67KIKX4.cjs +67 -0
  258. package/dist/chunk-K67KIKX4.cjs.map +1 -0
  259. package/dist/chunk-KF4MCHZL.cjs +105 -0
  260. package/dist/chunk-KF4MCHZL.cjs.map +1 -0
  261. package/dist/chunk-M6CGYGEO.js +91 -0
  262. package/dist/chunk-M6CGYGEO.js.map +1 -0
  263. package/dist/chunk-M6OTFXZA.js +48 -0
  264. package/dist/chunk-M6OTFXZA.js.map +1 -0
  265. package/dist/chunk-NWJW5KLN.js +29 -0
  266. package/dist/chunk-NWJW5KLN.js.map +1 -0
  267. package/dist/chunk-NXOAYNG2.cjs +52 -0
  268. package/dist/chunk-NXOAYNG2.cjs.map +1 -0
  269. package/dist/chunk-NZPJ7BUB.cjs +22 -0
  270. package/dist/chunk-NZPJ7BUB.cjs.map +1 -0
  271. package/dist/chunk-OUJBCNWD.js +52 -0
  272. package/dist/chunk-OUJBCNWD.js.map +1 -0
  273. package/dist/chunk-OXYFB2ZI.js +35 -0
  274. package/dist/chunk-OXYFB2ZI.js.map +1 -0
  275. package/dist/chunk-Q33V7MSK.js +79 -0
  276. package/dist/chunk-Q33V7MSK.js.map +1 -0
  277. package/dist/chunk-QESLHLTG.cjs +107 -0
  278. package/dist/chunk-QESLHLTG.cjs.map +1 -0
  279. package/dist/chunk-QPZZNSRB.js +65 -0
  280. package/dist/chunk-QPZZNSRB.js.map +1 -0
  281. package/dist/chunk-QT7SJITQ.cjs +114 -0
  282. package/dist/chunk-QT7SJITQ.cjs.map +1 -0
  283. package/dist/chunk-RMD6KQ4H.cjs +56 -0
  284. package/dist/chunk-RMD6KQ4H.cjs.map +1 -0
  285. package/dist/chunk-T5AH4FCV.js +280 -0
  286. package/dist/chunk-T5AH4FCV.js.map +1 -0
  287. package/dist/chunk-U6ODMPTI.cjs +74 -0
  288. package/dist/chunk-U6ODMPTI.cjs.map +1 -0
  289. package/dist/chunk-V2ZUOEXM.cjs +73 -0
  290. package/dist/chunk-V2ZUOEXM.cjs.map +1 -0
  291. package/dist/chunk-VJN637MT.js +49 -0
  292. package/dist/chunk-VJN637MT.js.map +1 -0
  293. package/dist/chunk-VMHNKD3N.cjs +56 -0
  294. package/dist/chunk-VMHNKD3N.cjs.map +1 -0
  295. package/dist/chunk-VXITDXLW.js +28 -0
  296. package/dist/chunk-VXITDXLW.js.map +1 -0
  297. package/dist/chunk-XFRP2MBR.js +87 -0
  298. package/dist/chunk-XFRP2MBR.js.map +1 -0
  299. package/dist/chunk-XRZ5OKZH.js +101 -0
  300. package/dist/chunk-XRZ5OKZH.js.map +1 -0
  301. package/dist/chunk-Y6FVCCUE.js +34 -0
  302. package/dist/chunk-Y6FVCCUE.js.map +1 -0
  303. package/dist/chunk-YVO7XO4W.cjs +149 -0
  304. package/dist/chunk-YVO7XO4W.cjs.map +1 -0
  305. package/dist/chunk-ZMDVK2U3.cjs +302 -0
  306. package/dist/chunk-ZMDVK2U3.cjs.map +1 -0
  307. package/dist/chunk-ZXM247EM.cjs +123 -0
  308. package/dist/chunk-ZXM247EM.cjs.map +1 -0
  309. package/dist/index.cjs +249 -0
  310. package/dist/index.cjs.map +1 -0
  311. package/dist/index.d.cts +35 -0
  312. package/dist/index.d.ts +35 -0
  313. package/dist/index.js +35 -0
  314. package/dist/index.js.map +1 -0
  315. package/dist/shared-NJHRNLRH.css +4 -0
  316. package/dist/styles.css +2068 -0
  317. package/dist/tokens-HWQ7KWPG.css +153 -0
  318. package/dist/tokens.css +153 -0
  319. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Icon/Icon.tsx"],"names":[],"mappings":"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","file":"chunk-GEYMWUW6.js","sourcesContent":["import * as React from \"react\";\n\n/**\n * Name of a built-in icon. To add your own, pass `children` (raw SVG paths) instead.\n */\nexport type IconName =\n | \"search\"\n | \"plus\"\n | \"minus\"\n | \"check\"\n | \"x\"\n | \"chevDown\"\n | \"chevRight\"\n | \"chevLeft\"\n | \"chevUp\"\n | \"arrowRight\"\n | \"settings\"\n | \"user\"\n | \"bell\"\n | \"mail\"\n | \"heart\"\n | \"star\"\n | \"home\"\n | \"folder\"\n | \"file\"\n | \"image\"\n | \"play\"\n | \"pause\"\n | \"volume\"\n | \"trash\"\n | \"edit\"\n | \"copy\"\n | \"download\"\n | \"upload\"\n | \"info\"\n | \"alert\"\n | \"check2\"\n | \"eye\"\n | \"eyeOff\"\n | \"sparkle\"\n | \"moon\"\n | \"sun\"\n | \"palette\"\n | \"layers\"\n | \"grid\"\n | \"list\"\n | \"zap\"\n | \"filter\"\n | \"mic\"\n | \"send\"\n | \"calendar\"\n | \"clock\"\n | \"menu\"\n | \"more\"\n | \"sliders\";\n\nexport interface IconProps extends Omit<React.SVGAttributes<SVGSVGElement>, \"stroke\"> {\n name: IconName;\n size?: number;\n stroke?: number;\n}\n\nconst paths: Record<IconName, React.ReactNode> = {\nsearch: <><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/></>,\n plus: <><path d=\"M12 5v14M5 12h14\"/></>,\n minus: <><path d=\"M5 12h14\"/></>,\n check: <><path d=\"m4 12 5 5L20 6\"/></>,\n x: <><path d=\"M6 6l12 12M18 6 6 18\"/></>,\n chevDown: <><path d=\"m6 9 6 6 6-6\"/></>,\n chevRight: <><path d=\"m9 6 6 6-6 6\"/></>,\n chevLeft: <><path d=\"m15 6-6 6 6 6\"/></>,\n chevUp: <><path d=\"m6 15 6-6 6 6\"/></>,\n arrowRight:<><path d=\"M5 12h14M13 6l6 6-6 6\"/></>,\n settings: <><path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n user: <><circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M4 21a8 8 0 0 1 16 0\"/></>,\n bell: <><path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"/><path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"/></>,\n mail: <><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"m3 7 9 6 9-6\"/></>,\n heart: <><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></>,\n star: <><path d=\"m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"/></>,\n home: <><path d=\"m3 10 9-7 9 7v10a2 2 0 0 1-2 2h-4v-7h-6v7H5a2 2 0 0 1-2-2z\"/></>,\n folder: <><path d=\"M3 7a2 2 0 0 1 2-2h4l2 3h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/></>,\n file: <><path d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"/><path d=\"M14 3v6h6\"/></>,\n image: <><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-5-5L5 21\"/></>,\n play: <><path d=\"M7 5v14l11-7z\" fill=\"currentColor\" stroke=\"none\"/></>,\n pause: <><path d=\"M6 4h4v16H6zM14 4h4v16h-4z\" fill=\"currentColor\" stroke=\"none\"/></>,\n volume: <><path d=\"M11 5 6 9H3v6h3l5 4z\"/><path d=\"M17 8a5 5 0 0 1 0 8M20 5a9 9 0 0 1 0 14\"/></>,\n trash: <><path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14\"/></>,\n edit: <><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z\"/></>,\n copy: <><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></>,\n download: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"/></>,\n upload: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12\"/></>,\n info: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4M12 8h.01\"/></>,\n alert: <><path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01\"/></>,\n check2: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/></>,\n eye: <><path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n eyeOff: <><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a19 19 0 0 1 5.17-6M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a19 19 0 0 1-2.16 3.19M14.12 14.12a3 3 0 1 1-4.24-4.24M1 1l22 22\"/></>,\n sparkle: <><path d=\"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8\"/></>,\n moon: <><path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/></>,\n sun: <><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41\"/></>,\n palette: <><circle cx=\"13.5\" cy=\"6.5\" r=\"1\"/><circle cx=\"17.5\" cy=\"10.5\" r=\"1\"/><circle cx=\"8.5\" cy=\"7.5\" r=\"1\"/><circle cx=\"6.5\" cy=\"12.5\" r=\"1\"/><path d=\"M12 2a10 10 0 1 0 0 20 3 3 0 0 0 0-6h-1a2 2 0 0 1 0-4h4a5 5 0 0 0 5-5 10 10 0 0 0-8-5z\"/></>,\n layers: <><path d=\"m12 2 10 6-10 6L2 8z\"/><path d=\"m2 17 10 6 10-6M2 12l10 6 10-6\"/></>,\n grid: <><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"/></>,\n list: <><path d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"/></>,\n zap: <><path d=\"M13 2 3 14h9l-1 8 10-12h-9z\"/></>,\n filter: <><path d=\"M22 3H2l8 9.46V19l4 2v-8.54z\"/></>,\n mic: <><rect x=\"9\" y=\"2\" width=\"6\" height=\"12\" rx=\"3\"/><path d=\"M19 10v1a7 7 0 0 1-14 0v-1M12 18v4M8 22h8\"/></>,\n send: <><path d=\"m22 2-7 20-4-9-9-4zM22 2 11 13\"/></>,\n calendar: <><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></>,\n clock: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/></>,\n menu: <><path d=\"M3 6h18M3 12h18M3 18h18\"/></>,\n more: <><circle cx=\"5\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"19\" cy=\"12\" r=\"1\"/></>,\n sliders: <><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></>,\n};\n\n/**\n * `Icon` — stroked line icon set, sized in pixels, inherits `currentColor`.\n *\n * @example\n * <Icon name=\"plus\" size={18} />\n */\nexport const Icon: React.FC<IconProps> = ({ name, size = 16, stroke = 2, style, ...rest }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n overflow=\"visible\"\n style={style}\n {...rest}\n >\n {paths[name]}\n </svg>\n);\n\nexport const ICON_NAMES: IconName[] = [\"search\", \"plus\", \"minus\", \"check\", \"x\", \"chevDown\", \"chevRight\", \"chevLeft\", \"chevUp\", \"arrowRight\", \"settings\", \"user\", \"bell\", \"mail\", \"heart\", \"star\", \"home\", \"folder\", \"file\", \"image\", \"play\", \"pause\", \"volume\", \"trash\", \"edit\", \"copy\", \"download\", \"upload\", \"info\", \"alert\", \"check2\", \"eye\", \"eyeOff\", \"sparkle\", \"moon\", \"sun\", \"palette\", \"layers\", \"grid\", \"list\", \"zap\", \"filter\", \"mic\", \"send\", \"calendar\", \"clock\", \"menu\", \"more\", \"sliders\"];\n"]}
@@ -0,0 +1,48 @@
1
+ import './tokens-HWQ7KWPG.css';
2
+ import './shared-NJHRNLRH.css';
3
+ import './Switch-NP7KKJOX.css';
4
+ import * as React from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ // src/components/Switch/Switch.tsx
8
+ var Switch = ({
9
+ checked,
10
+ defaultChecked,
11
+ onChange,
12
+ disabled,
13
+ label,
14
+ size = "md",
15
+ className = "",
16
+ id
17
+ }) => {
18
+ const [inner, setInner] = React.useState(defaultChecked ?? false);
19
+ const isControlled = checked !== void 0;
20
+ const value = isControlled ? checked : inner;
21
+ const toggle = () => {
22
+ if (disabled) return;
23
+ const next = !value;
24
+ if (!isControlled) setInner(next);
25
+ onChange?.(next);
26
+ };
27
+ const cls = ["switch", value && "on", size !== "md" && size, disabled && "disabled", className].filter(Boolean).join(" ");
28
+ return /* @__PURE__ */ jsxs("label", { className: cls, children: [
29
+ /* @__PURE__ */ jsx(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ role: "switch",
34
+ "aria-checked": value,
35
+ disabled,
36
+ onClick: toggle,
37
+ id,
38
+ className: "switch-track",
39
+ children: /* @__PURE__ */ jsx("span", { className: "switch-thumb" })
40
+ }
41
+ ),
42
+ label && /* @__PURE__ */ jsx("span", { className: "switch-label", children: label })
43
+ ] });
44
+ };
45
+
46
+ export { Switch };
47
+ //# sourceMappingURL=chunk-HTP6UEVR.js.map
48
+ //# sourceMappingURL=chunk-HTP6UEVR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Switch/Switch.tsx"],"names":[],"mappings":";;;;;;;AAmBO,IAAM,SAAgC,CAAC;AAAA,EAC5C,OAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,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,MAAM,CAAC,QAAA,EAAU,KAAA,IAAS,IAAA,EAAM,SAAS,IAAA,IAAQ,IAAA,EAAM,QAAA,IAAY,UAAA,EAAY,SAAS,CAAA,CAC3F,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,GAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,GAAA;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,QAEV,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA,KACjC;AAAA,IACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ","file":"chunk-HTP6UEVR.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Switch.css\";\nimport * as React from \"react\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: React.ReactNode;\n size?: \"sm\" | \"md\";\n className?: string;\n id?: string;\n}\n\n/**\n * `Switch` — on/off toggle. Controlled or uncontrolled.\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n size = \"md\",\n className = \"\",\n id,\n}) => {\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 = [\"switch\", value && \"on\", size !== \"md\" && size, disabled && \"disabled\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\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 <span className=\"switch-thumb\" />\n </button>\n {label && <span className=\"switch-label\">{label}</span>}\n </label>\n );\n};\n"]}
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ require('./tokens-HWQ7KWPG.css');
4
+ require('./shared-NJHRNLRH.css');
5
+ require('./Card-2CHHFD4Y.css');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
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
+
29
+ // src/components/Card/Card.tsx
30
+ var Card = React__namespace.forwardRef(
31
+ ({ variant = "raised", padding = "md", className = "", children, ...rest }, ref) => {
32
+ const cls = ["card", variant, padding !== "md" && `pad-${padding}`, className].filter(Boolean).join(" ");
33
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cls, ...rest, children });
34
+ }
35
+ );
36
+ Card.displayName = "Card";
37
+ var Panel = ({
38
+ title,
39
+ description,
40
+ actions,
41
+ children,
42
+ className = "",
43
+ ...rest
44
+ }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `panel ${className}`, ...rest, children: [
45
+ (title || actions) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "panel-head", children: [
46
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "panel-titles", children: [
47
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel-title", children: title }),
48
+ description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel-desc", children: description })
49
+ ] }),
50
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel-actions", children: actions })
51
+ ] }),
52
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel-body", children })
53
+ ] });
54
+
55
+ exports.Card = Card;
56
+ exports.Panel = Panel;
57
+ //# sourceMappingURL=chunk-I2ERCHFV.cjs.map
58
+ //# sourceMappingURL=chunk-I2ERCHFV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Card/Card.tsx"],"names":["React","jsxs","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAM,IAAA,GAAaA,gBAAA,CAAA,UAAA;AAAA,EACxB,CAAC,EAAE,OAAA,GAAU,QAAA,EAAU,OAAA,GAAU,IAAA,EAAM,SAAA,GAAY,EAAA,EAAI,QAAA,EAAU,GAAG,IAAA,EAAK,EAAG,GAAA,KAAQ;AAClF,IAAA,MAAM,GAAA,GAAM,CAAC,MAAA,EAAQ,OAAA,EAAS,YAAY,IAAA,IAAQ,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAC1E,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,IAAA,sCACG,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,GAAA,EAAM,GAAG,MAChC,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAYZ,IAAM,QAA8B,CAAC;AAAA,EAC1C,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,qCACG,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,SAAS,CAAA,CAAA,EAAK,GAAG,IAAA,EACtC,QAAA,EAAA;AAAA,EAAA,CAAA,KAAA,IAAS,OAAA,qBACTC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,cAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAASC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAC7C,WAAA,oBAAeA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAC3D,CAAA;AAAA,IACC,OAAA,oBAAWA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAiB,QAAA,EAAA,OAAA,EAAQ;AAAA,GAAA,EACtD,CAAA;AAAA,kBAEFA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAc,QAAA,EAAS;AAAA,CAAA,EACxC","file":"chunk-I2ERCHFV.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Card.css\";\nimport * as React from \"react\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Visual variant. `raised` protrudes; `sunken` recesses; `flat` is subtle. */\n variant?: \"raised\" | \"sunken\" | \"flat\";\n /** Inner padding. */\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n children?: React.ReactNode;\n}\n\n/**\n * `Card` — neumorphic surface container. Use to group related content.\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ variant = \"raised\", padding = \"md\", className = \"\", children, ...rest }, ref) => {\n const cls = [\"card\", variant, padding !== \"md\" && `pad-${padding}`, className]\n .filter(Boolean)\n .join(\" \");\n return (\n <div ref={ref} className={cls} {...rest}>\n {children}\n </div>\n );\n }\n);\nCard.displayName = \"Card\";\n\nexport interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n/**\n * `Panel` — a titled `Card` with optional actions row.\n */\nexport const Panel: React.FC<PanelProps> = ({\n title,\n description,\n actions,\n children,\n className = \"\",\n ...rest\n}) => (\n <div className={`panel ${className}`} {...rest}>\n {(title || actions) && (\n <div className=\"panel-head\">\n <div className=\"panel-titles\">\n {title && <div className=\"panel-title\">{title}</div>}\n {description && <div className=\"panel-desc\">{description}</div>}\n </div>\n {actions && <div className=\"panel-actions\">{actions}</div>}\n </div>\n )}\n <div className=\"panel-body\">{children}</div>\n </div>\n);\n"]}
@@ -0,0 +1,253 @@
1
+ import './tokens-HWQ7KWPG.css';
2
+ import * as React from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ // src/components/Theme/Theme.tsx
6
+ var ACCENT_PRESETS = {
7
+ sky: { accent: "oklch(68% 0.14 235)", ink: "oklch(42% 0.12 235)", soft: "oklch(92% 0.04 235)", glow: "oklch(68% 0.14 235 / 0.35)" },
8
+ coral: { accent: "oklch(72% 0.16 35)", ink: "oklch(48% 0.14 35)", soft: "oklch(94% 0.04 35)", glow: "oklch(72% 0.16 35 / 0.35)" },
9
+ mint: { accent: "oklch(72% 0.13 165)", ink: "oklch(46% 0.11 165)", soft: "oklch(93% 0.04 165)", glow: "oklch(72% 0.13 165 / 0.35)" },
10
+ violet: { accent: "oklch(66% 0.16 290)", ink: "oklch(44% 0.14 290)", soft: "oklch(93% 0.04 290)", glow: "oklch(66% 0.16 290 / 0.35)" },
11
+ amber: { accent: "oklch(76% 0.14 75)", ink: "oklch(50% 0.12 75)", soft: "oklch(94% 0.05 75)", glow: "oklch(76% 0.14 75 / 0.35)" },
12
+ rose: { accent: "oklch(68% 0.17 10)", ink: "oklch(46% 0.15 10)", soft: "oklch(93% 0.04 10)", glow: "oklch(68% 0.17 10 / 0.35)" }
13
+ };
14
+ var ACCENT_PRESETS_DARK = {
15
+ sky: { soft: "oklch(35% 0.08 235)", ink: "oklch(82% 0.10 235)", glow: "oklch(68% 0.14 235 / 0.18)" },
16
+ coral: { soft: "oklch(38% 0.09 35)", ink: "oklch(84% 0.10 35)", glow: "oklch(72% 0.16 35 / 0.18)" },
17
+ mint: { soft: "oklch(36% 0.08 165)", ink: "oklch(83% 0.10 165)", glow: "oklch(72% 0.13 165 / 0.18)" },
18
+ violet: { soft: "oklch(36% 0.09 290)", ink: "oklch(82% 0.11 290)", glow: "oklch(66% 0.16 290 / 0.18)" },
19
+ amber: { soft: "oklch(38% 0.08 75)", ink: "oklch(85% 0.10 75)", glow: "oklch(76% 0.14 75 / 0.18)" },
20
+ rose: { soft: "oklch(38% 0.09 10)", ink: "oklch(84% 0.11 10)", glow: "oklch(68% 0.17 10 / 0.18)" }
21
+ };
22
+ var FONT_STACKS = {
23
+ system: '-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif',
24
+ sf: '"SF Pro Display", -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif',
25
+ serif: 'Cambria, Georgia, "Songti SC", "STSong", serif',
26
+ mono: 'ui-monospace, "SF Mono", "JetBrains Mono", Consolas, monospace'
27
+ };
28
+ var DEFAULT_CONFIG = {
29
+ mode: "light",
30
+ accent: "sky",
31
+ density: "comfortable",
32
+ intensity: 5,
33
+ radius: 20,
34
+ font: "sf",
35
+ tokens: {}
36
+ };
37
+ var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
38
+ function resolveThemeMode(mode) {
39
+ if (mode !== "system") return mode;
40
+ if (!isBrowser) return "light";
41
+ return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
42
+ }
43
+ function normalizeAccentInput(input, resolvedMode) {
44
+ if (typeof input === "string" && input in ACCENT_PRESETS) {
45
+ const key = input;
46
+ const base = ACCENT_PRESETS[key];
47
+ if (resolvedMode === "dark") {
48
+ return { key, palette: { ...base, ...ACCENT_PRESETS_DARK[key] } };
49
+ }
50
+ return { key, palette: base };
51
+ }
52
+ const raw = typeof input === "string" ? { accent: input } : input;
53
+ const { accent } = raw;
54
+ const ink = raw.ink ?? `color-mix(in oklch, ${accent} 65%, black)`;
55
+ const soft = raw.soft ?? (resolvedMode === "dark" ? `color-mix(in oklch, ${accent} 30%, black)` : `color-mix(in oklch, ${accent} 15%, white)`);
56
+ const glow = raw.glow ?? (resolvedMode === "dark" ? `color-mix(in oklch, ${accent} 18%, transparent)` : `color-mix(in oklch, ${accent} 35%, transparent)`);
57
+ return { key: "custom", palette: { accent, ink, soft, glow } };
58
+ }
59
+ function toVar(key) {
60
+ return key.startsWith("--") ? key : `--${key}`;
61
+ }
62
+ function applyTheme(target, config) {
63
+ const cfg = { ...DEFAULT_CONFIG, ...config };
64
+ const resolvedMode = resolveThemeMode(cfg.mode);
65
+ const { key, palette } = normalizeAccentInput(cfg.accent, resolvedMode);
66
+ target.dataset.theme = resolvedMode;
67
+ target.dataset.density = cfg.density;
68
+ if (key === "custom") {
69
+ delete target.dataset.accent;
70
+ } else {
71
+ target.dataset.accent = key;
72
+ }
73
+ target.style.setProperty("--accent", palette.accent);
74
+ target.style.setProperty("--accent-ink", palette.ink);
75
+ target.style.setProperty("--accent-soft", palette.soft);
76
+ target.style.setProperty("--accent-glow", palette.glow);
77
+ const intensity = cfg.intensity ?? DEFAULT_CONFIG.intensity;
78
+ target.style.setProperty("--d", String(0.4 + intensity * 0.12));
79
+ const r = cfg.radius ?? DEFAULT_CONFIG.radius;
80
+ target.style.setProperty("--r-xs", `${Math.max(4, r - 16)}px`);
81
+ target.style.setProperty("--r-sm", `${Math.max(6, r - 12)}px`);
82
+ target.style.setProperty("--r-md", `${Math.max(8, r - 6)}px`);
83
+ target.style.setProperty("--r-lg", `${r}px`);
84
+ target.style.setProperty("--r-xl", `${r + 10}px`);
85
+ const font = cfg.font ?? DEFAULT_CONFIG.font;
86
+ if (typeof font === "string") {
87
+ const stack = FONT_STACKS[font] ?? font;
88
+ target.style.setProperty("--font-sans", stack);
89
+ if (font === "mono") target.style.setProperty("--font-display", FONT_STACKS.mono);
90
+ } else {
91
+ if (font.sans) target.style.setProperty("--font-sans", font.sans);
92
+ if (font.display) target.style.setProperty("--font-display", font.display);
93
+ if (font.mono) target.style.setProperty("--font-mono", font.mono);
94
+ }
95
+ if (cfg.tokens) {
96
+ for (const [k, v] of Object.entries(cfg.tokens)) {
97
+ target.style.setProperty(toVar(k), v);
98
+ }
99
+ }
100
+ }
101
+ var ThemeCtx = React.createContext(null);
102
+ function useTheme() {
103
+ const ctx = React.useContext(ThemeCtx);
104
+ if (!ctx) {
105
+ throw new Error(
106
+ "useTheme() must be used inside <ThemeProvider>. Wrap your app (or a subtree) with <ThemeProvider>."
107
+ );
108
+ }
109
+ return ctx;
110
+ }
111
+ function useThemeOptional() {
112
+ return React.useContext(ThemeCtx);
113
+ }
114
+ function loadPersisted(key) {
115
+ if (!key || !isBrowser) return null;
116
+ try {
117
+ const raw = localStorage.getItem(key);
118
+ if (!raw) return null;
119
+ return JSON.parse(raw);
120
+ } catch {
121
+ return null;
122
+ }
123
+ }
124
+ function persist(key, cfg) {
125
+ if (!key || !isBrowser) return;
126
+ try {
127
+ localStorage.setItem(key, JSON.stringify(cfg));
128
+ } catch {
129
+ }
130
+ }
131
+ var ThemeProvider = (props) => {
132
+ const {
133
+ children,
134
+ target = "root",
135
+ as: Tag = "div",
136
+ className,
137
+ style,
138
+ storageKey,
139
+ onChange,
140
+ ...configProps
141
+ } = props;
142
+ const initialConfig = React.useMemo(() => {
143
+ const fromProps = {
144
+ mode: configProps.mode ?? DEFAULT_CONFIG.mode,
145
+ accent: configProps.accent ?? DEFAULT_CONFIG.accent,
146
+ density: configProps.density ?? DEFAULT_CONFIG.density,
147
+ intensity: configProps.intensity ?? DEFAULT_CONFIG.intensity,
148
+ radius: configProps.radius ?? DEFAULT_CONFIG.radius,
149
+ font: configProps.font ?? DEFAULT_CONFIG.font,
150
+ tokens: configProps.tokens ?? {}
151
+ };
152
+ const persisted = loadPersisted(storageKey);
153
+ return persisted ? { ...fromProps, ...persisted } : fromProps;
154
+ }, []);
155
+ const [config, setConfig] = React.useState(initialConfig);
156
+ React.useEffect(() => {
157
+ setConfig((c) => {
158
+ const next = {
159
+ mode: configProps.mode ?? c.mode,
160
+ accent: configProps.accent ?? c.accent,
161
+ density: configProps.density ?? c.density,
162
+ intensity: configProps.intensity ?? c.intensity,
163
+ radius: configProps.radius ?? c.radius,
164
+ font: configProps.font ?? c.font,
165
+ tokens: configProps.tokens ?? c.tokens
166
+ };
167
+ if (next.mode === c.mode && next.accent === c.accent && next.density === c.density && next.intensity === c.intensity && next.radius === c.radius && next.font === c.font && next.tokens === c.tokens) {
168
+ return c;
169
+ }
170
+ return next;
171
+ });
172
+ }, [
173
+ configProps.mode,
174
+ configProps.accent,
175
+ configProps.density,
176
+ configProps.intensity,
177
+ configProps.radius,
178
+ configProps.font,
179
+ configProps.tokens
180
+ ]);
181
+ const [systemDark, setSystemDark] = React.useState(
182
+ () => isBrowser && window.matchMedia("(prefers-color-scheme: dark)").matches
183
+ );
184
+ React.useEffect(() => {
185
+ if (!isBrowser) return;
186
+ const mql = window.matchMedia("(prefers-color-scheme: dark)");
187
+ const handler = (e) => setSystemDark(e.matches);
188
+ mql.addEventListener?.("change", handler);
189
+ return () => mql.removeEventListener?.("change", handler);
190
+ }, []);
191
+ const resolvedMode = config.mode === "system" ? systemDark ? "dark" : "light" : config.mode;
192
+ const { key: accentKey, palette: accentPalette } = React.useMemo(
193
+ () => normalizeAccentInput(config.accent, resolvedMode),
194
+ [config.accent, resolvedMode]
195
+ );
196
+ const scopeRef = React.useRef(null);
197
+ React.useEffect(() => {
198
+ if (!isBrowser) return;
199
+ const el = target === "root" ? document.documentElement : scopeRef.current;
200
+ if (!el) return;
201
+ applyTheme(el, { ...config, mode: resolvedMode });
202
+ persist(storageKey, config);
203
+ }, [config, resolvedMode, target, storageKey]);
204
+ const value = React.useMemo(() => {
205
+ const patch = (p) => setConfig((c) => ({ ...c, ...p }));
206
+ return {
207
+ mode: config.mode,
208
+ resolvedMode,
209
+ accent: accentKey,
210
+ accentPalette,
211
+ density: config.density,
212
+ intensity: config.intensity,
213
+ radius: config.radius,
214
+ font: config.font,
215
+ tokens: config.tokens ?? {},
216
+ setMode: (m) => patch({ mode: m }),
217
+ toggleMode: () => setConfig((c) => ({
218
+ ...c,
219
+ mode: c.mode === "dark" ? "light" : "dark"
220
+ })),
221
+ setAccent: (a) => patch({ accent: a }),
222
+ setDensity: (d) => patch({ density: d }),
223
+ setIntensity: (n) => patch({ intensity: n }),
224
+ setRadius: (n) => patch({ radius: n }),
225
+ setFont: (f) => patch({ font: f }),
226
+ setTokens: (t) => patch({ tokens: t }),
227
+ update: patch,
228
+ reset: () => setConfig(initialConfig)
229
+ };
230
+ }, [config, resolvedMode, accentKey, accentPalette, initialConfig]);
231
+ const onChangeRef = React.useRef(onChange);
232
+ onChangeRef.current = onChange;
233
+ React.useEffect(() => {
234
+ onChangeRef.current?.(value);
235
+ }, [value]);
236
+ if (target === "scope") {
237
+ const Component = Tag;
238
+ return /* @__PURE__ */ jsx(ThemeCtx.Provider, { value, children: /* @__PURE__ */ jsx(
239
+ Component,
240
+ {
241
+ ref: scopeRef,
242
+ className,
243
+ style,
244
+ children
245
+ }
246
+ ) });
247
+ }
248
+ return /* @__PURE__ */ jsx(ThemeCtx.Provider, { value, children });
249
+ };
250
+
251
+ export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, FONT_STACKS, ThemeProvider, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional };
252
+ //# sourceMappingURL=chunk-I7SSCSFH.js.map
253
+ //# sourceMappingURL=chunk-I7SSCSFH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Theme/Theme.tsx"],"names":[],"mappings":"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","file":"chunk-I7SSCSFH.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport * as React from \"react\";\n\n/* ============================================================================\n * Theme — full custom theming system for lumina\n *\n * - <ThemeProvider> manages theme state and applies CSS variables / data-attrs\n * to either <html> (global) or a local scope.\n * - useTheme() exposes read/write access for descendants.\n * - Presets: accent palettes, font stacks, densities.\n * - Custom accent: pass a full palette or only a base color — missing slots\n * are auto-derived via `color-mix`.\n * - Persistence: optional localStorage via `storageKey` prop.\n * - \"system\" mode respects `prefers-color-scheme` via matchMedia.\n * - Arbitrary token overrides through the `tokens` prop.\n * ========================================================================== */\n\n/* ------------------------------- Types ---------------------------------- */\n\nexport type ThemeMode = \"light\" | \"dark\" | \"system\";\nexport type ResolvedThemeMode = \"light\" | \"dark\";\nexport type AccentKey = \"sky\" | \"coral\" | \"mint\" | \"violet\" | \"amber\" | \"rose\";\nexport type DensityMode = \"compact\" | \"comfortable\" | \"spacious\";\nexport type FontKey = \"system\" | \"sf\" | \"serif\" | \"mono\";\n\n/** Full accent color slots. All four CSS variables the library reads. */\nexport interface AccentPalette {\n /** Primary accent — `--accent`. */\n accent: string;\n /** Darker text-on-soft variant — `--accent-ink`. */\n ink: string;\n /** Pale tint for backgrounds — `--accent-soft`. */\n soft: string;\n /** Halo / glow color (typically with alpha) — `--accent-glow`. */\n glow: string;\n}\n\n/** Input type for custom accent: either full palette, or just a base color\n * (missing slots derived via color-mix in CSS). */\nexport type CustomAccentInput = string | Partial<AccentPalette> & { accent: string };\n\n/** Font config — either a preset key, a single sans string, or a granular object. */\nexport type FontConfig =\n | FontKey\n | string\n | { sans?: string; display?: string; mono?: string };\n\n/** Arbitrary CSS variable overrides. Keys may be either a short name\n * (e.g. `\"bg\"` → `--bg`) or a full var name (e.g. `\"--bg\"`). */\nexport type ThemeTokens = Record<string, string>;\n\nexport interface ThemeConfig {\n mode?: ThemeMode;\n accent?: AccentKey | CustomAccentInput;\n density?: DensityMode;\n /** Shadow strength, 1..10. Maps to `--d` (0.4..1.6). */\n intensity?: number;\n /** Base radius in px — generates the full `--r-*` scale. */\n radius?: number;\n font?: FontConfig;\n tokens?: ThemeTokens;\n}\n\nexport interface ThemeValue {\n /** Requested mode (\"system\" is preserved here). */\n mode: ThemeMode;\n /** Resolved concrete mode (\"system\" → \"light\" | \"dark\" based on OS). */\n resolvedMode: ResolvedThemeMode;\n /** Accent key or \"custom\" if a palette was supplied. */\n accent: AccentKey | \"custom\";\n /** Resolved palette currently in effect. */\n accentPalette: AccentPalette;\n density: DensityMode;\n intensity: number;\n radius: number;\n font: FontConfig;\n tokens: ThemeTokens;\n\n setMode: (m: ThemeMode) => void;\n toggleMode: () => void;\n setAccent: (a: AccentKey | CustomAccentInput) => void;\n setDensity: (d: DensityMode) => void;\n setIntensity: (n: number) => void;\n setRadius: (n: number) => void;\n setFont: (f: FontConfig) => void;\n setTokens: (t: ThemeTokens) => void;\n /** Shallow-merge a partial config. */\n update: (cfg: Partial<ThemeConfig>) => void;\n /** Reset to the initial props. */\n reset: () => void;\n}\n\n/* --------------------------- Built-in presets --------------------------- */\n\n/** Built-in accent palettes (light-mode values). */\nexport const ACCENT_PRESETS: Record<AccentKey, AccentPalette> = {\n sky: { accent: \"oklch(68% 0.14 235)\", ink: \"oklch(42% 0.12 235)\", soft: \"oklch(92% 0.04 235)\", glow: \"oklch(68% 0.14 235 / 0.35)\" },\n coral: { accent: \"oklch(72% 0.16 35)\", ink: \"oklch(48% 0.14 35)\", soft: \"oklch(94% 0.04 35)\", glow: \"oklch(72% 0.16 35 / 0.35)\" },\n mint: { accent: \"oklch(72% 0.13 165)\", ink: \"oklch(46% 0.11 165)\", soft: \"oklch(93% 0.04 165)\", glow: \"oklch(72% 0.13 165 / 0.35)\" },\n violet: { accent: \"oklch(66% 0.16 290)\", ink: \"oklch(44% 0.14 290)\", soft: \"oklch(93% 0.04 290)\", glow: \"oklch(66% 0.16 290 / 0.35)\" },\n amber: { accent: \"oklch(76% 0.14 75)\", ink: \"oklch(50% 0.12 75)\", soft: \"oklch(94% 0.05 75)\", glow: \"oklch(76% 0.14 75 / 0.35)\" },\n rose: { accent: \"oklch(68% 0.17 10)\", ink: \"oklch(46% 0.15 10)\", soft: \"oklch(93% 0.04 10)\", glow: \"oklch(68% 0.17 10 / 0.35)\" },\n};\n\n/** Dark-mode overrides — ink/soft shift, and glow alpha is halved so the outer\n * button bloom doesn't read as a bright ring on dark surfaces. */\nexport const ACCENT_PRESETS_DARK: Record<AccentKey, Pick<AccentPalette, \"ink\" | \"soft\" | \"glow\">> = {\n sky: { soft: \"oklch(35% 0.08 235)\", ink: \"oklch(82% 0.10 235)\", glow: \"oklch(68% 0.14 235 / 0.18)\" },\n coral: { soft: \"oklch(38% 0.09 35)\", ink: \"oklch(84% 0.10 35)\", glow: \"oklch(72% 0.16 35 / 0.18)\" },\n mint: { soft: \"oklch(36% 0.08 165)\", ink: \"oklch(83% 0.10 165)\", glow: \"oklch(72% 0.13 165 / 0.18)\" },\n violet: { soft: \"oklch(36% 0.09 290)\", ink: \"oklch(82% 0.11 290)\", glow: \"oklch(66% 0.16 290 / 0.18)\" },\n amber: { soft: \"oklch(38% 0.08 75)\", ink: \"oklch(85% 0.10 75)\", glow: \"oklch(76% 0.14 75 / 0.18)\" },\n rose: { soft: \"oklch(38% 0.09 10)\", ink: \"oklch(84% 0.11 10)\", glow: \"oklch(68% 0.17 10 / 0.18)\" },\n};\n\n/** Built-in font family stacks. */\nexport const FONT_STACKS: Record<FontKey, string> = {\n system: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif',\n sf: '\"SF Pro Display\", -apple-system, BlinkMacSystemFont, \"PingFang SC\", sans-serif',\n serif: 'Cambria, Georgia, \"Songti SC\", \"STSong\", serif',\n mono: 'ui-monospace, \"SF Mono\", \"JetBrains Mono\", Consolas, monospace',\n};\n\nconst DEFAULT_CONFIG: Required<Omit<ThemeConfig, \"tokens\">> & { tokens: ThemeTokens } = {\n mode: \"light\",\n accent: \"sky\",\n density: \"comfortable\",\n intensity: 5,\n radius: 20,\n font: \"sf\",\n tokens: {},\n};\n\n/* ------------------------------ Helpers --------------------------------- */\n\nconst isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n\n/** Resolve \"system\" mode against `prefers-color-scheme`. */\nexport function resolveThemeMode(mode: ThemeMode): ResolvedThemeMode {\n if (mode !== \"system\") return mode;\n if (!isBrowser) return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\n/** Fill missing slots of a custom accent via color-mix. */\nexport function normalizeAccentInput(\n input: AccentKey | CustomAccentInput,\n resolvedMode: ResolvedThemeMode\n): { key: AccentKey | \"custom\"; palette: AccentPalette } {\n // Preset key?\n if (typeof input === \"string\" && input in ACCENT_PRESETS) {\n const key = input as AccentKey;\n const base = ACCENT_PRESETS[key];\n if (resolvedMode === \"dark\") {\n return { key, palette: { ...base, ...ACCENT_PRESETS_DARK[key] } };\n }\n return { key, palette: base };\n }\n // Custom — either a raw color string or a partial palette object.\n const raw = typeof input === \"string\" ? { accent: input } : input;\n const { accent } = raw;\n const ink = raw.ink ?? `color-mix(in oklch, ${accent} 65%, black)`;\n const soft =\n raw.soft ??\n (resolvedMode === \"dark\"\n ? `color-mix(in oklch, ${accent} 30%, black)`\n : `color-mix(in oklch, ${accent} 15%, white)`);\n // Dark-mode glow is halved so it doesn't wash into a white halo on dark surfaces.\n const glow =\n raw.glow ??\n (resolvedMode === \"dark\"\n ? `color-mix(in oklch, ${accent} 18%, transparent)`\n : `color-mix(in oklch, ${accent} 35%, transparent)`);\n return { key: \"custom\", palette: { accent, ink, soft, glow } };\n}\n\n/** Normalize a token key to a CSS custom property name. */\nfunction toVar(key: string): string {\n return key.startsWith(\"--\") ? key : `--${key}`;\n}\n\n/** Imperative theme application — writes CSS vars / data-attrs on a target. */\nexport function applyTheme(target: HTMLElement, config: ThemeConfig): void {\n const cfg: ThemeConfig = { ...DEFAULT_CONFIG, ...config };\n const resolvedMode = resolveThemeMode(cfg.mode!);\n const { key, palette } = normalizeAccentInput(cfg.accent!, resolvedMode);\n\n // data-* attributes\n target.dataset.theme = resolvedMode;\n target.dataset.density = cfg.density!;\n if (key === \"custom\") {\n delete target.dataset.accent;\n } else {\n target.dataset.accent = key;\n }\n\n // Accent palette — always set inline so custom overrides win and preset\n // stays deterministic across mode switches.\n target.style.setProperty(\"--accent\", palette.accent);\n target.style.setProperty(\"--accent-ink\", palette.ink);\n target.style.setProperty(\"--accent-soft\", palette.soft);\n target.style.setProperty(\"--accent-glow\", palette.glow);\n\n // Shadow intensity (1..10 → 0.4..1.6)\n const intensity = cfg.intensity ?? DEFAULT_CONFIG.intensity;\n target.style.setProperty(\"--d\", String(0.4 + intensity * 0.12));\n\n // Radius scale\n const r = cfg.radius ?? DEFAULT_CONFIG.radius;\n target.style.setProperty(\"--r-xs\", `${Math.max(4, r - 16)}px`);\n target.style.setProperty(\"--r-sm\", `${Math.max(6, r - 12)}px`);\n target.style.setProperty(\"--r-md\", `${Math.max(8, r - 6)}px`);\n target.style.setProperty(\"--r-lg\", `${r}px`);\n target.style.setProperty(\"--r-xl\", `${r + 10}px`);\n\n // Fonts\n const font = cfg.font ?? DEFAULT_CONFIG.font;\n if (typeof font === \"string\") {\n const stack = (FONT_STACKS as Record<string, string>)[font] ?? font;\n target.style.setProperty(\"--font-sans\", stack);\n if (font === \"mono\") target.style.setProperty(\"--font-display\", FONT_STACKS.mono);\n } else {\n if (font.sans) target.style.setProperty(\"--font-sans\", font.sans);\n if (font.display) target.style.setProperty(\"--font-display\", font.display);\n if (font.mono) target.style.setProperty(\"--font-mono\", font.mono);\n }\n\n // Arbitrary token overrides\n if (cfg.tokens) {\n for (const [k, v] of Object.entries(cfg.tokens)) {\n target.style.setProperty(toVar(k), v);\n }\n }\n}\n\n/* ----------------------------- Context ---------------------------------- */\n\nconst ThemeCtx = React.createContext<ThemeValue | null>(null);\n\n/** Read/write access to the nearest `<ThemeProvider>`. */\nexport function useTheme(): ThemeValue {\n const ctx = React.useContext(ThemeCtx);\n if (!ctx) {\n throw new Error(\n \"useTheme() must be used inside <ThemeProvider>. Wrap your app (or a subtree) with <ThemeProvider>.\"\n );\n }\n return ctx;\n}\n\n/** Read theme value without throwing — returns `null` outside of a provider. */\nexport function useThemeOptional(): ThemeValue | null {\n return React.useContext(ThemeCtx);\n}\n\n/* ---------------------------- Persistence ------------------------------- */\n\nfunction loadPersisted(key: string | undefined): Partial<ThemeConfig> | null {\n if (!key || !isBrowser) return null;\n try {\n const raw = localStorage.getItem(key);\n if (!raw) return null;\n return JSON.parse(raw) as Partial<ThemeConfig>;\n } catch {\n return null;\n }\n}\n\nfunction persist(key: string | undefined, cfg: ThemeConfig): void {\n if (!key || !isBrowser) return;\n try {\n localStorage.setItem(key, JSON.stringify(cfg));\n } catch {\n /* quota exceeded / disabled storage — ignore */\n }\n}\n\n/* --------------------------- ThemeProvider ------------------------------ */\n\nexport interface ThemeProviderProps extends ThemeConfig {\n children?: React.ReactNode;\n /**\n * Where to apply the theme.\n * - `\"root\"` (default): on `<html>` — affects the whole document.\n * - `\"scope\"`: on a local wrapper element — scoped to descendants.\n */\n target?: \"root\" | \"scope\";\n /** Tag for scope mode. Default `\"div\"`. */\n as?: keyof JSX.IntrinsicElements;\n className?: string;\n style?: React.CSSProperties;\n /** If set, theme state is persisted to localStorage under this key. */\n storageKey?: string;\n /** Called whenever the resolved theme value changes. */\n onChange?: (value: ThemeValue) => void;\n}\n\n/**\n * `<ThemeProvider>` — manage theme state and apply CSS variables.\n *\n * @example\n * ```tsx\n * <ThemeProvider mode=\"system\" accent=\"violet\" storageKey=\"app:theme\">\n * <App />\n * </ThemeProvider>\n * ```\n *\n * @example Custom accent\n * ```tsx\n * <ThemeProvider accent={{ accent: \"oklch(70% 0.2 180)\" }} />\n * // or just\n * <ThemeProvider accent=\"oklch(70% 0.2 180)\" />\n * ```\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = (props) => {\n const {\n children,\n target = \"root\",\n as: Tag = \"div\",\n className,\n style,\n storageKey,\n onChange,\n ...configProps\n } = props;\n\n // Build the initial config: defaults ← props ← persisted (if any)\n const initialConfig = React.useMemo<ThemeConfig>(() => {\n const fromProps: ThemeConfig = {\n mode: configProps.mode ?? DEFAULT_CONFIG.mode,\n accent: configProps.accent ?? DEFAULT_CONFIG.accent,\n density: configProps.density ?? DEFAULT_CONFIG.density,\n intensity: configProps.intensity ?? DEFAULT_CONFIG.intensity,\n radius: configProps.radius ?? DEFAULT_CONFIG.radius,\n font: configProps.font ?? DEFAULT_CONFIG.font,\n tokens: configProps.tokens ?? {},\n };\n const persisted = loadPersisted(storageKey);\n return persisted ? { ...fromProps, ...persisted } : fromProps;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [config, setConfig] = React.useState<ThemeConfig>(initialConfig);\n\n // Sync external prop changes into state — so callers can drive the provider\n // \"controlled-style\" (e.g. <ThemeProvider accent={reactState} />).\n // `setMode`/`setAccent`/etc. still work; they just get overridden if the\n // parent later changes the prop.\n React.useEffect(() => {\n setConfig((c) => {\n const next: ThemeConfig = {\n mode: configProps.mode ?? c.mode,\n accent: configProps.accent ?? c.accent,\n density: configProps.density ?? c.density,\n intensity: configProps.intensity ?? c.intensity,\n radius: configProps.radius ?? c.radius,\n font: configProps.font ?? c.font,\n tokens: configProps.tokens ?? c.tokens,\n };\n if (\n next.mode === c.mode &&\n next.accent === c.accent &&\n next.density === c.density &&\n next.intensity === c.intensity &&\n next.radius === c.radius &&\n next.font === c.font &&\n next.tokens === c.tokens\n ) {\n return c;\n }\n return next;\n });\n }, [\n configProps.mode,\n configProps.accent,\n configProps.density,\n configProps.intensity,\n configProps.radius,\n configProps.font,\n configProps.tokens,\n ]);\n\n // Listen for system preference changes when mode === \"system\".\n const [systemDark, setSystemDark] = React.useState<boolean>(() =>\n isBrowser && window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n );\n React.useEffect(() => {\n if (!isBrowser) return;\n const mql = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e: MediaQueryListEvent) => setSystemDark(e.matches);\n mql.addEventListener?.(\"change\", handler);\n return () => mql.removeEventListener?.(\"change\", handler);\n }, []);\n\n const resolvedMode: ResolvedThemeMode =\n config.mode === \"system\" ? (systemDark ? \"dark\" : \"light\") : (config.mode as ResolvedThemeMode);\n\n const { key: accentKey, palette: accentPalette } = React.useMemo(\n () => normalizeAccentInput(config.accent!, resolvedMode),\n [config.accent, resolvedMode]\n );\n\n const scopeRef = React.useRef<HTMLElement | null>(null);\n\n // Apply theme whenever config/resolvedMode changes.\n React.useEffect(() => {\n if (!isBrowser) return;\n const el = target === \"root\" ? document.documentElement : scopeRef.current;\n if (!el) return;\n applyTheme(el as HTMLElement, { ...config, mode: resolvedMode });\n persist(storageKey, config);\n }, [config, resolvedMode, target, storageKey]);\n\n const value: ThemeValue = React.useMemo(() => {\n const patch = (p: Partial<ThemeConfig>) => setConfig((c) => ({ ...c, ...p }));\n return {\n mode: config.mode!,\n resolvedMode,\n accent: accentKey,\n accentPalette,\n density: config.density!,\n intensity: config.intensity!,\n radius: config.radius!,\n font: config.font!,\n tokens: config.tokens ?? {},\n setMode: (m) => patch({ mode: m }),\n toggleMode: () =>\n setConfig((c) => ({\n ...c,\n mode: (c.mode === \"dark\" ? \"light\" : \"dark\") as ThemeMode,\n })),\n setAccent: (a) => patch({ accent: a }),\n setDensity: (d) => patch({ density: d }),\n setIntensity: (n) => patch({ intensity: n }),\n setRadius: (n) => patch({ radius: n }),\n setFont: (f) => patch({ font: f }),\n setTokens: (t) => patch({ tokens: t }),\n update: patch,\n reset: () => setConfig(initialConfig),\n };\n }, [config, resolvedMode, accentKey, accentPalette, initialConfig]);\n\n // onChange callback.\n const onChangeRef = React.useRef(onChange);\n onChangeRef.current = onChange;\n React.useEffect(() => {\n onChangeRef.current?.(value);\n }, [value]);\n\n if (target === \"scope\") {\n const Component = Tag as React.ElementType;\n return (\n <ThemeCtx.Provider value={value}>\n <Component\n ref={scopeRef as React.Ref<never>}\n className={className}\n style={style}\n >\n {children}\n </Component>\n </ThemeCtx.Provider>\n );\n }\n\n return <ThemeCtx.Provider value={value}>{children}</ThemeCtx.Provider>;\n};\n"]}
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
4
+ require('./tokens-HWQ7KWPG.css');
5
+ require('./shared-NJHRNLRH.css');
6
+ require('./Pagination-6FFOI4NM.css');
7
+ var React = require('react');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+
30
+ var Pagination = ({
31
+ total,
32
+ pageSize = 10,
33
+ page,
34
+ defaultPage = 1,
35
+ onChange,
36
+ siblings = 1,
37
+ className = ""
38
+ }) => {
39
+ const [inner, setInner] = React__namespace.useState(defaultPage);
40
+ const isControlled = page !== void 0;
41
+ const cur = isControlled ? page : inner;
42
+ const pages = Math.max(1, Math.ceil(total / pageSize));
43
+ const go = (p) => {
44
+ const next = Math.min(pages, Math.max(1, p));
45
+ if (!isControlled) setInner(next);
46
+ onChange?.(next);
47
+ };
48
+ const range = () => {
49
+ const out = [];
50
+ const add = (n) => out.push(n);
51
+ const s = Math.max(2, cur - siblings);
52
+ const e = Math.min(pages - 1, cur + siblings);
53
+ add(1);
54
+ if (s > 2) add("...");
55
+ for (let i = s; i <= e; i++) add(i);
56
+ if (e < pages - 1) add("...");
57
+ if (pages > 1) add(pages);
58
+ return out;
59
+ };
60
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `pagination ${className}`, children: [
61
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "pg-info", children: [
62
+ "\u5171 ",
63
+ total,
64
+ " \u6761 \xB7 \u7B2C ",
65
+ cur,
66
+ " / ",
67
+ pages,
68
+ " \u9875"
69
+ ] }),
70
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pg-controls", children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(
72
+ "button",
73
+ {
74
+ type: "button",
75
+ className: `pg ${cur === 1 ? "disabled" : ""}`,
76
+ onClick: () => cur > 1 && go(cur - 1),
77
+ "aria-label": "Previous",
78
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "chevLeft", size: 12 })
79
+ }
80
+ ),
81
+ range().map(
82
+ (p, i) => p === "..." ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ellipsis", children: "\u2026" }, `e${i}`) : /* @__PURE__ */ jsxRuntime.jsx(
83
+ "button",
84
+ {
85
+ type: "button",
86
+ className: `pg ${p === cur ? "active" : ""}`,
87
+ onClick: () => go(p),
88
+ children: p
89
+ },
90
+ p
91
+ )
92
+ ),
93
+ /* @__PURE__ */ jsxRuntime.jsx(
94
+ "button",
95
+ {
96
+ type: "button",
97
+ className: `pg ${cur === pages ? "disabled" : ""}`,
98
+ onClick: () => cur < pages && go(cur + 1),
99
+ "aria-label": "Next",
100
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "chevRight", size: 12 })
101
+ }
102
+ )
103
+ ] })
104
+ ] });
105
+ };
106
+
107
+ exports.Pagination = Pagination;
108
+ //# sourceMappingURL=chunk-IGHLSNXT.cjs.map
109
+ //# sourceMappingURL=chunk-IGHLSNXT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Pagination/Pagination.tsx"],"names":["React","jsxs","jsx","Icon"],"mappings":"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","file":"chunk-IGHLSNXT.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Pagination.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface PaginationProps {\n /** Total number of items. */\n total: number;\n /** Items per page. */\n pageSize?: number;\n /** Current page (1-indexed). */\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n /** Max visible page buttons (before ellipsis logic). */\n siblings?: number;\n className?: string;\n}\n\n/** `Pagination` — page number controls. */\nexport const Pagination: React.FC<PaginationProps> = ({\n total,\n pageSize = 10,\n page,\n defaultPage = 1,\n onChange,\n siblings = 1,\n className = \"\",\n}) => {\n const [inner, setInner] = React.useState(defaultPage);\n const isControlled = page !== undefined;\n const cur = isControlled ? page! : inner;\n const pages = Math.max(1, Math.ceil(total / pageSize));\n const go = (p: number) => {\n const next = Math.min(pages, Math.max(1, p));\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const range = (): (number | \"...\")[] => {\n const out: (number | \"...\")[] = [];\n const add = (n: number | \"...\") => out.push(n);\n const s = Math.max(2, cur - siblings);\n const e = Math.min(pages - 1, cur + siblings);\n add(1);\n if (s > 2) add(\"...\");\n for (let i = s; i <= e; i++) add(i);\n if (e < pages - 1) add(\"...\");\n if (pages > 1) add(pages);\n return out;\n };\n\n return (\n <div className={`pagination ${className}`}>\n <span className=\"pg-info\">\n 共 {total} 条 · 第 {cur} / {pages} 页\n </span>\n <div className=\"pg-controls\">\n <button\n type=\"button\"\n className={`pg ${cur === 1 ? \"disabled\" : \"\"}`}\n onClick={() => cur > 1 && go(cur - 1)}\n aria-label=\"Previous\"\n >\n <Icon name=\"chevLeft\" size={12} />\n </button>\n {range().map((p, i) =>\n p === \"...\" ? (\n <span key={`e${i}`} className=\"ellipsis\">…</span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={`pg ${p === cur ? \"active\" : \"\"}`}\n onClick={() => go(p)}\n >\n {p}\n </button>\n )\n )}\n <button\n type=\"button\"\n className={`pg ${cur === pages ? \"disabled\" : \"\"}`}\n onClick={() => cur < pages && go(cur + 1)}\n aria-label=\"Next\"\n >\n <Icon name=\"chevRight\" size={12} />\n </button>\n </div>\n </div>\n );\n};\n"]}