@fangxinyan/lumina 0.6.2 → 0.6.4

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 (284) hide show
  1. package/README.md +2 -1
  2. package/dist/{Alert-JJ7GB3UU.css → Alert-HVPI6L4V.css} +9 -2
  3. package/dist/Alert.cjs +3 -3
  4. package/dist/Alert.d.cts +3 -2
  5. package/dist/Alert.d.ts +3 -2
  6. package/dist/Alert.js +2 -2
  7. package/dist/{AppShell-RCALXUCZ.css → AppShell-FZCD4C56.css} +4 -4
  8. package/dist/AppShell.cjs +5 -5
  9. package/dist/AppShell.js +1 -1
  10. package/dist/{AutoComplete-P5KZMZO5.css → AutoComplete-4YZBMW4E.css} +2 -2
  11. package/dist/AutoComplete.cjs +5 -5
  12. package/dist/AutoComplete.js +4 -4
  13. package/dist/{Avatar-R5A4AFKZ.css → Avatar-TNPOHVY5.css} +1 -1
  14. package/dist/Avatar.cjs +2 -2
  15. package/dist/Avatar.js +1 -1
  16. package/dist/Badge.cjs +2 -2
  17. package/dist/Badge.d.cts +1 -0
  18. package/dist/Badge.d.ts +1 -0
  19. package/dist/Badge.js +1 -1
  20. package/dist/Button-TUMZUQLI.css +118 -0
  21. package/dist/Button.cjs +3 -3
  22. package/dist/Button.d.cts +6 -5
  23. package/dist/Button.d.ts +6 -5
  24. package/dist/Button.js +2 -2
  25. package/dist/{Calendar-LHZELUDL.css → Calendar-RUTPKREW.css} +4 -4
  26. package/dist/Calendar.cjs +3 -3
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Card-6RMVIHWX.css → Card-MA6SV7D5.css} +6 -6
  29. package/dist/Card.cjs +2 -2
  30. package/dist/Card.js +1 -1
  31. package/dist/{Cascader-C2DFSMKJ.css → Cascader-ANEQUPMI.css} +21 -8
  32. package/dist/Cascader.cjs +5 -5
  33. package/dist/Cascader.d.cts +4 -2
  34. package/dist/Cascader.d.ts +4 -2
  35. package/dist/Cascader.js +4 -4
  36. package/dist/{Checkbox-U5EUDSYS.css → Checkbox-EDNPZRIP.css} +3 -3
  37. package/dist/Checkbox.cjs +3 -3
  38. package/dist/Checkbox.js +2 -2
  39. package/dist/{Collapse-66U5YJFY.css → Collapse-UNBHEPYP.css} +2 -2
  40. package/dist/Collapse.cjs +3 -3
  41. package/dist/Collapse.js +2 -2
  42. package/dist/{ColorPicker-SDDQGHCM.css → ColorPicker-LPG6QPYF.css} +7 -7
  43. package/dist/ColorPicker.cjs +2 -2
  44. package/dist/ColorPicker.js +1 -1
  45. package/dist/{CommandPalette-T45DBMPY.css → CommandPalette-RTKWNH2D.css} +3 -3
  46. package/dist/CommandPalette.cjs +5 -5
  47. package/dist/CommandPalette.js +4 -4
  48. package/dist/{ContextMenu-FKW6CQW4.css → ContextMenu-WRR2SSWL.css} +3 -3
  49. package/dist/ContextMenu.cjs +2 -2
  50. package/dist/ContextMenu.js +1 -1
  51. package/dist/{Divider-OEE4Q2KS.css → Divider-RPQCVH3J.css} +2 -2
  52. package/dist/Divider.cjs +2 -2
  53. package/dist/Divider.js +1 -1
  54. package/dist/{Drawer-IPGB4CXH.css → Drawer-7N3URAJ6.css} +8 -5
  55. package/dist/Drawer.cjs +3 -3
  56. package/dist/Drawer.js +2 -2
  57. package/dist/{Empty-DC2LPORC.css → Empty-CZTRZMZQ.css} +1 -1
  58. package/dist/Empty.cjs +2 -2
  59. package/dist/Empty.js +1 -1
  60. package/dist/{Form-5GRVZNDO.css → Form-NGCQWTMZ.css} +1 -1
  61. package/dist/Form.cjs +4 -4
  62. package/dist/Form.js +1 -1
  63. package/dist/Icon.cjs +55 -47
  64. package/dist/Icon.d.cts +9 -1
  65. package/dist/Icon.d.ts +9 -1
  66. package/dist/Icon.js +1 -1
  67. package/dist/{Image-4MN34O6P.css → Image-SGSRTHQX.css} +81 -3
  68. package/dist/Image.cjs +12 -4
  69. package/dist/Image.d.cts +79 -6
  70. package/dist/Image.d.ts +79 -6
  71. package/dist/Image.js +2 -2
  72. package/dist/{Input-3G4ONWNU.css → Input-7GDPGP3E.css} +22 -12
  73. package/dist/Input.cjs +5 -5
  74. package/dist/Input.d.cts +4 -3
  75. package/dist/Input.d.ts +4 -3
  76. package/dist/Input.js +3 -3
  77. package/dist/InputNumber.cjs +5 -5
  78. package/dist/InputNumber.js +4 -4
  79. package/dist/{List-W5BW4D2P.css → List-LSMU5QAC.css} +3 -3
  80. package/dist/List.cjs +2 -2
  81. package/dist/List.js +1 -1
  82. package/dist/{Message-2MZ3LFPU.css → Message-H222YGR6.css} +1 -1
  83. package/dist/Message.cjs +6 -6
  84. package/dist/Message.js +2 -2
  85. package/dist/{Modal-2QNDW4SO.css → Modal-MCFDYVUQ.css} +3 -3
  86. package/dist/Modal.cjs +4 -4
  87. package/dist/Modal.d.cts +1 -0
  88. package/dist/Modal.d.ts +1 -0
  89. package/dist/Modal.js +3 -3
  90. package/dist/{Pagination-YIRYJUXP.css → Pagination-YSZSNFHG.css} +5 -5
  91. package/dist/Pagination.cjs +7 -7
  92. package/dist/Pagination.js +6 -6
  93. package/dist/{Popover-DVGQGWX6.css → Popover-Y3LDCJPW.css} +1 -1
  94. package/dist/Popover.cjs +2 -2
  95. package/dist/Popover.js +1 -1
  96. package/dist/{Progress-CHV7DN6Y.css → Progress-CZNXCYGW.css} +1 -1
  97. package/dist/Progress.cjs +2 -2
  98. package/dist/Progress.js +1 -1
  99. package/dist/{Radio-GVFDPAZM.css → Radio-IQKASYDF.css} +4 -4
  100. package/dist/Radio.cjs +3 -3
  101. package/dist/Radio.js +1 -1
  102. package/dist/{Select-JVBQAZBG.css → Select-YZ2NUJSX.css} +44 -19
  103. package/dist/Select.cjs +6 -6
  104. package/dist/Select.d.cts +4 -3
  105. package/dist/Select.d.ts +4 -3
  106. package/dist/Select.js +5 -5
  107. package/dist/Skeleton.cjs +2 -2
  108. package/dist/Skeleton.js +1 -1
  109. package/dist/{Slider-3JKA5EW6.css → Slider-UM2IZZBH.css} +7 -7
  110. package/dist/Slider.cjs +2 -2
  111. package/dist/Slider.js +1 -1
  112. package/dist/{Spin-3GJNMSIH.css → Spin-GONGPV4Q.css} +1 -1
  113. package/dist/Spin.cjs +2 -2
  114. package/dist/Spin.js +1 -1
  115. package/dist/Splitter.cjs +2 -2
  116. package/dist/Splitter.js +1 -1
  117. package/dist/{StatusBar-CDS2GPSI.css → StatusBar-FJKEEPXU.css} +3 -7
  118. package/dist/StatusBar.cjs +3 -3
  119. package/dist/StatusBar.js +1 -1
  120. package/dist/Surface-UDDN3DGL.css +42 -0
  121. package/dist/Surface.cjs +16 -0
  122. package/dist/Surface.d.cts +60 -0
  123. package/dist/Surface.d.ts +60 -0
  124. package/dist/Surface.js +3 -0
  125. package/dist/{Switch-36KJNDXM.css → Switch-COAQIOMH.css} +8 -5
  126. package/dist/Switch.cjs +2 -2
  127. package/dist/Switch.js +1 -1
  128. package/dist/{Table-ATJJQLKU.css → Table-IYJTPY6J.css} +16 -16
  129. package/dist/Table.cjs +9 -9
  130. package/dist/Table.js +8 -8
  131. package/dist/{TablePro-3XVHYLSL.css → TablePro-JRSBPXB5.css} +1 -1
  132. package/dist/TablePro.cjs +10 -10
  133. package/dist/TablePro.js +9 -9
  134. package/dist/{Tabs-BLSNI2T5.css → Tabs-X5U5PCPV.css} +2 -2
  135. package/dist/Tabs.cjs +2 -2
  136. package/dist/Tabs.js +1 -1
  137. package/dist/{Tag-LB3OOJAO.css → Tag-G2XWAL7A.css} +15 -2
  138. package/dist/Tag.cjs +3 -3
  139. package/dist/Tag.d.cts +4 -3
  140. package/dist/Tag.d.ts +4 -3
  141. package/dist/Tag.js +2 -2
  142. package/dist/{Textarea-YNET7IBH.css → Textarea-YHWKHIFE.css} +3 -3
  143. package/dist/Textarea.cjs +4 -4
  144. package/dist/Textarea.js +2 -2
  145. package/dist/Theme.cjs +14 -10
  146. package/dist/Theme.d.cts +34 -7
  147. package/dist/Theme.d.ts +34 -7
  148. package/dist/Theme.js +1 -1
  149. package/dist/ThemePanel-76LB3YA5.css +509 -0
  150. package/dist/ThemePanel.cjs +29 -0
  151. package/dist/ThemePanel.d.cts +80 -0
  152. package/dist/ThemePanel.d.ts +80 -0
  153. package/dist/ThemePanel.js +12 -0
  154. package/dist/{Timeline-3ZHOHPXT.css → Timeline-ZIM7QFQC.css} +1 -1
  155. package/dist/Timeline.cjs +3 -3
  156. package/dist/Timeline.js +2 -2
  157. package/dist/{Tooltip-DMKUPC24.css → Tooltip-WI23DSRQ.css} +1 -1
  158. package/dist/Tooltip.cjs +2 -2
  159. package/dist/Tooltip.js +1 -1
  160. package/dist/{Typography-NKPWTJCV.css → Typography-GQNIJ4XD.css} +5 -5
  161. package/dist/Typography.cjs +7 -7
  162. package/dist/Typography.d.cts +1 -0
  163. package/dist/Typography.d.ts +1 -0
  164. package/dist/Typography.js +2 -2
  165. package/dist/chunk-2NT5QKEX.js +243 -0
  166. package/dist/{chunk-6BWELOCT.js → chunk-2SCXQ7QS.js} +2 -2
  167. package/dist/{chunk-5WAXZJG5.cjs → chunk-2ZADGBUN.cjs} +6 -6
  168. package/dist/{chunk-7NGMQIST.js → chunk-2ZFJTMEF.js} +4 -4
  169. package/dist/{chunk-UMDGS4BP.js → chunk-3YP7CBJT.js} +5 -5
  170. package/dist/{chunk-UUHFKIWP.cjs → chunk-4UKM4KAC.cjs} +2 -2
  171. package/dist/{chunk-WGZ2KJTZ.js → chunk-56PHETWO.js} +3 -3
  172. package/dist/{chunk-MQV2XN4B.cjs → chunk-5JPAUQ5H.cjs} +7 -7
  173. package/dist/{chunk-OQBDU5I2.cjs → chunk-5NFSDFBB.cjs} +4 -4
  174. package/dist/{chunk-SKMP2A5O.cjs → chunk-66GXZQKL.cjs} +4 -4
  175. package/dist/{chunk-TZJH5HBT.cjs → chunk-66T76GII.cjs} +6 -6
  176. package/dist/chunk-6EOSMK34.cjs +194 -0
  177. package/dist/{chunk-WNM5RVXR.cjs → chunk-6GQPF3EI.cjs} +2 -2
  178. package/dist/{chunk-TJII7BQ2.cjs → chunk-6LARTGLP.cjs} +11 -1
  179. package/dist/chunk-6SPMHY54.js +191 -0
  180. package/dist/{chunk-YLIQ37KY.cjs → chunk-6XVLERA3.cjs} +2 -2
  181. package/dist/{chunk-WKKSAGYH.js → chunk-7D76MI37.js} +8 -8
  182. package/dist/chunk-7NZ2A4MA.js +495 -0
  183. package/dist/{chunk-KLEKKZ73.js → chunk-7ZNGHWVS.js} +1 -1
  184. package/dist/{chunk-4WTU5P3O.cjs → chunk-ACQSRMLF.cjs} +5 -5
  185. package/dist/{chunk-FFZ6OMZI.js → chunk-AJH2O4WC.js} +3 -3
  186. package/dist/{chunk-CXWEOAVU.js → chunk-BCFCSVGJ.js} +3 -3
  187. package/dist/{chunk-NTS5L4NQ.cjs → chunk-BJ6WUVEG.cjs} +4 -4
  188. package/dist/{chunk-S3VXH5L4.cjs → chunk-C24W6PTJ.cjs} +2 -2
  189. package/dist/{chunk-GMN74OEY.cjs → chunk-CBKJXKVI.cjs} +2 -2
  190. package/dist/{chunk-33NCTOEB.js → chunk-CEZ2DR4R.js} +3 -3
  191. package/dist/{chunk-JD7A6VM3.js → chunk-CNGKJYGZ.js} +6 -6
  192. package/dist/{chunk-TEG7NJHS.cjs → chunk-D5PCIVID.cjs} +4 -4
  193. package/dist/{chunk-K2KYM7LW.cjs → chunk-D64IPDUE.cjs} +4 -4
  194. package/dist/chunk-DYHNOYRC.cjs +271 -0
  195. package/dist/{chunk-CUXV6QNN.cjs → chunk-DYSGXQUK.cjs} +7 -7
  196. package/dist/{chunk-3YJU3D5S.cjs → chunk-F3LHLYX6.cjs} +2 -2
  197. package/dist/{chunk-HPFQXYKG.cjs → chunk-GBKUGKIY.cjs} +11 -11
  198. package/dist/{chunk-MUXP7ASL.js → chunk-GUZ2DNDC.js} +3 -3
  199. package/dist/{chunk-K6F25JXT.js → chunk-GZCU6HXD.js} +2 -2
  200. package/dist/{chunk-USQ43DJ5.js → chunk-HFUHQUPQ.js} +2 -2
  201. package/dist/{chunk-7JN6FJ55.js → chunk-HU7T64Y3.js} +2 -2
  202. package/dist/{chunk-OYMJVU66.cjs → chunk-IDJCFYPP.cjs} +16 -16
  203. package/dist/{chunk-KD4YYIIO.cjs → chunk-IHK2FRTS.cjs} +2 -2
  204. package/dist/{chunk-Q5SZIU7Z.cjs → chunk-JFQ53MO4.cjs} +1 -1
  205. package/dist/{chunk-7PQJCLIR.js → chunk-KMG7OMOS.js} +2 -2
  206. package/dist/{chunk-MT7UWY6T.cjs → chunk-L27C5O4W.cjs} +4 -4
  207. package/dist/chunk-LFTCK2VM.cjs +1194 -0
  208. package/dist/{chunk-EJBHR2P5.js → chunk-LI4XJTEA.js} +3 -3
  209. package/dist/{chunk-45VJGBGN.js → chunk-LQLOOUS3.js} +2 -2
  210. package/dist/{chunk-PL6DRFUO.cjs → chunk-MOMLQP7B.cjs} +2 -2
  211. package/dist/{chunk-OF7JIYBY.cjs → chunk-MYHBC3HA.cjs} +2 -2
  212. package/dist/{chunk-LKK2AA7W.js → chunk-MYRLCN6V.js} +2 -2
  213. package/dist/{chunk-6ACKL3WH.cjs → chunk-N2BTMKF2.cjs} +5 -5
  214. package/dist/chunk-N2COYOXE.cjs +526 -0
  215. package/dist/{chunk-2TL37AP5.cjs → chunk-N3OLFKV5.cjs} +1 -1
  216. package/dist/{chunk-5JSDQ6QQ.cjs → chunk-NDO22RER.cjs} +2 -2
  217. package/dist/{chunk-XD3JGL5O.js → chunk-NE7IUGMK.js} +3 -3
  218. package/dist/{chunk-F6RYCBQG.js → chunk-NFXHIO3G.js} +1 -1
  219. package/dist/chunk-NJCHFXGC.js +1170 -0
  220. package/dist/chunk-NT6CJYI3.cjs +129 -0
  221. package/dist/chunk-O43DOE7V.js +106 -0
  222. package/dist/{chunk-GNEZD7KE.cjs → chunk-O4BOBOYV.cjs} +2 -2
  223. package/dist/{chunk-3AS5B7MQ.cjs → chunk-OGPDCBPD.cjs} +12 -12
  224. package/dist/{chunk-6YQTMI55.js → chunk-OHFZ7L4T.js} +2 -2
  225. package/dist/{chunk-CEJ7VBR6.js → chunk-OHIFKN4E.js} +4 -4
  226. package/dist/{chunk-46VXFTEC.js → chunk-OQU3TJCF.js} +3 -3
  227. package/dist/{chunk-5TKC6IEN.js → chunk-PEJLXJQD.js} +1 -1
  228. package/dist/{chunk-HWFM4MAT.js → chunk-PKHITACT.js} +2 -2
  229. package/dist/{chunk-CHMCL7AV.js → chunk-PNZJFLMY.js} +3 -3
  230. package/dist/{chunk-XRR3CYQL.js → chunk-QP7RXZES.js} +2 -2
  231. package/dist/{chunk-QGHYQCF3.cjs → chunk-QY76WTO5.cjs} +9 -9
  232. package/dist/{chunk-EIY7KEJ3.cjs → chunk-R74TZKJS.cjs} +4 -4
  233. package/dist/{chunk-GNEZQMKH.js → chunk-REMJWNAT.js} +5 -5
  234. package/dist/{chunk-SWBWZIL4.cjs → chunk-S6OKX4H7.cjs} +2 -2
  235. package/dist/{chunk-EC4WGEAJ.js → chunk-SABWUELE.js} +2 -2
  236. package/dist/{chunk-QKQHZIF3.cjs → chunk-SG42F5VB.cjs} +2 -2
  237. package/dist/{chunk-5C2AI2SD.js → chunk-SQIWPU6V.js} +2 -2
  238. package/dist/{chunk-ZIP7F4UF.cjs → chunk-SYWTT5TY.cjs} +5 -5
  239. package/dist/{chunk-OBEKX4VR.js → chunk-TVUBGXWA.js} +2 -2
  240. package/dist/{chunk-7PNJI5UE.cjs → chunk-U2H4DRMV.cjs} +2 -2
  241. package/dist/{chunk-6LZ54NPO.cjs → chunk-VAXWWJJP.cjs} +34 -24
  242. package/dist/{chunk-DQTSTJ6O.js → chunk-VNNQYJLT.js} +4 -4
  243. package/dist/{chunk-KGSADAOD.cjs → chunk-VSUMJX6Z.cjs} +2 -2
  244. package/dist/{chunk-ON4DEDMI.js → chunk-W5CJC7S7.js} +3 -3
  245. package/dist/{chunk-AXZ7ELMA.js → chunk-WEJKY3DF.js} +2 -2
  246. package/dist/{chunk-EQEJTN3V.js → chunk-WXWFMWWF.js} +3 -3
  247. package/dist/{chunk-TEEFR2FD.js → chunk-XHQGMMH7.js} +2 -2
  248. package/dist/{chunk-XTIN5545.js → chunk-XVP7IKLZ.js} +32 -22
  249. package/dist/{chunk-ELNT3CFO.js → chunk-Y5F7ZTBH.js} +2 -2
  250. package/dist/{chunk-QCILPZWP.js → chunk-YJEXAO2I.js} +2 -2
  251. package/dist/{chunk-7ABFUIOB.cjs → chunk-YNCDTKAE.cjs} +2 -2
  252. package/dist/{chunk-35ZGBAA3.cjs → chunk-YSCIMHOI.cjs} +6 -6
  253. package/dist/{chunk-AWXCSX6J.js → chunk-YSXD344H.js} +5 -5
  254. package/dist/{chunk-OF3SGLZY.js → chunk-YT5NLCRC.js} +10 -2
  255. package/dist/{chunk-HZSIUOCN.cjs → chunk-YUKXNWVE.cjs} +1 -1
  256. package/dist/{chunk-65FIH5A3.js → chunk-YVTLHTG6.js} +2 -2
  257. package/dist/{chunk-GENABQYA.cjs → chunk-Z4PZ2ZHI.cjs} +2 -2
  258. package/dist/{chunk-FBVVRTX2.cjs → chunk-ZPKHGKVL.cjs} +4 -4
  259. package/dist/{chunk-FJNWUELL.js → chunk-ZPP7LTHP.js} +3 -3
  260. package/dist/{chunk-IZOHYJUQ.cjs → chunk-ZWCDB5PP.cjs} +2 -2
  261. package/dist/index.cjs +226 -183
  262. package/dist/index.d.cts +7 -5
  263. package/dist/index.d.ts +7 -5
  264. package/dist/index.js +49 -46
  265. package/dist/styles.css +873 -200
  266. package/dist/{tokens-BIIUTPKN.css → tokens-EF34LSWI.css} +42 -17
  267. package/dist/tokens.css +42 -17
  268. package/docs/llms/alert.md +4 -3
  269. package/docs/llms/button.md +4 -3
  270. package/docs/llms/cascader.md +3 -0
  271. package/docs/llms/image.md +72 -1
  272. package/docs/llms/input.md +3 -2
  273. package/docs/llms/select.md +2 -2
  274. package/docs/llms/surface.md +90 -0
  275. package/docs/llms/tag.md +3 -2
  276. package/docs/llms/theme.md +65 -6
  277. package/docs/llms/themepanel.md +128 -0
  278. package/docs/llms.md +6 -4
  279. package/package.json +16 -1
  280. package/dist/Button-SDQD25AG.css +0 -98
  281. package/dist/chunk-B2KEZQ6S.cjs +0 -116
  282. package/dist/chunk-NN25YMOL.js +0 -251
  283. package/dist/chunk-PH3YECMF.js +0 -90
  284. package/dist/chunk-RF2EY5JS.cjs +0 -281
@@ -2,7 +2,7 @@
2
2
  .table-wrap {
3
3
  border-radius: var(--r-lg);
4
4
  background: var(--bg);
5
- box-shadow: var(--neu-in-sm);
5
+ box-shadow: var(--neu-shadow-inset);
6
6
  overflow: auto;
7
7
  }
8
8
  /* When scroll=y is on, the wrap itself becomes the scroll region. */
@@ -40,13 +40,13 @@
40
40
  width: 16px; height: 16px;
41
41
  border-radius: 6px;
42
42
  background: var(--bg);
43
- box-shadow: var(--neu-flat);
43
+ box-shadow: var(--neu-shadow-subtle);
44
44
  align-items: center; justify-content: center;
45
45
  margin-left: 6px;
46
46
  color: var(--fg-subtle);
47
47
  vertical-align: middle;
48
48
  }
49
- .table th.sorted .sort-ind { color: var(--accent); box-shadow: var(--neu-in-sm); }
49
+ .table th.sorted .sort-ind { color: var(--accent); box-shadow: var(--neu-shadow-inset); }
50
50
  .table td {
51
51
  padding: 12px 18px;
52
52
  border-bottom: 1px solid var(--divider);
@@ -109,14 +109,14 @@
109
109
  border: none;
110
110
  border-radius: var(--r-sm);
111
111
  background: var(--bg);
112
- box-shadow: var(--neu-flat);
112
+ box-shadow: var(--neu-shadow-subtle);
113
113
  color: var(--fg-subtle);
114
114
  display: inline-flex; align-items: center; justify-content: center;
115
115
  cursor: pointer;
116
116
  transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
117
117
  }
118
- .expand-btn:hover { color: var(--accent-ink); box-shadow: var(--neu-out-sm); }
119
- .expand-btn.open { transform: rotate(90deg); color: var(--accent-ink); box-shadow: var(--neu-in-sm); }
118
+ .expand-btn:hover { color: var(--accent-ink); box-shadow: var(--neu-shadow-control); }
119
+ .expand-btn.open { transform: rotate(90deg); color: var(--accent-ink); box-shadow: var(--neu-shadow-inset); }
120
120
 
121
121
  /* Expanded row panel */
122
122
  .table tbody tr.expanded-row td {
@@ -128,7 +128,7 @@
128
128
  padding: 14px 16px;
129
129
  border-radius: var(--r-md);
130
130
  background: var(--bg);
131
- box-shadow: var(--neu-in-sm);
131
+ box-shadow: var(--neu-shadow-inset);
132
132
  color: var(--fg);
133
133
  font-size: 13px;
134
134
  }
@@ -140,14 +140,14 @@
140
140
  border: none;
141
141
  padding: 0;
142
142
  background: var(--bg);
143
- box-shadow: var(--neu-in-sm);
143
+ box-shadow: var(--neu-shadow-inset);
144
144
  display: inline-flex; align-items: center; justify-content: center;
145
145
  cursor: pointer;
146
146
  transition: box-shadow var(--dur-fast) var(--ease);
147
147
  }
148
148
  .table .row-check .radio-dot:disabled { opacity: 0.5; cursor: not-allowed; }
149
149
  .table .row-check .radio-dot.checked {
150
- box-shadow: var(--neu-out-sm);
150
+ box-shadow: var(--neu-shadow-control);
151
151
  }
152
152
  .table .row-check .radio-dot.checked::after {
153
153
  content: "";
@@ -162,7 +162,7 @@
162
162
  width: 18px; height: 18px;
163
163
  border-radius: 5px;
164
164
  background: var(--bg);
165
- box-shadow: var(--neu-flat);
165
+ box-shadow: var(--neu-shadow-subtle);
166
166
  color: var(--fg-subtle);
167
167
  align-items: center; justify-content: center;
168
168
  margin-left: 6px;
@@ -175,7 +175,7 @@
175
175
  .table th.filterable .filter-ind:hover { color: var(--fg); }
176
176
  .table th.filterable .filter-ind.active {
177
177
  color: var(--accent-ink);
178
- box-shadow: var(--neu-in-sm);
178
+ box-shadow: var(--neu-shadow-inset);
179
179
  }
180
180
 
181
181
  /* Filter popover panel (portaled to body) */
@@ -185,7 +185,7 @@
185
185
  max-width: 260px;
186
186
  background: var(--bg);
187
187
  border-radius: var(--r-md);
188
- box-shadow: var(--neu-float);
188
+ box-shadow: var(--neu-shadow-float);
189
189
  padding: 10px;
190
190
  animation: menuIn var(--dur) var(--ease);
191
191
  }
@@ -224,17 +224,17 @@
224
224
  padding: 6px 12px;
225
225
  border-radius: var(--r-sm);
226
226
  background: var(--bg);
227
- box-shadow: var(--neu-out-sm);
227
+ box-shadow: var(--neu-shadow-control);
228
228
  font-size: 12px;
229
229
  font-family: inherit;
230
230
  color: var(--fg);
231
231
  cursor: pointer;
232
232
  transition: box-shadow var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
233
233
  }
234
- .table-filter-actions .tf-btn:hover { box-shadow: var(--neu-in-sm); }
234
+ .table-filter-actions .tf-btn:hover { box-shadow: var(--neu-shadow-inset); }
235
235
  .table-filter-actions .tf-btn.primary { color: var(--accent-ink); font-weight: 600; }
236
- .table-filter-actions .tf-btn.ghost { color: var(--fg-muted); box-shadow: var(--neu-flat); }
237
- .table-filter-actions .tf-btn.ghost:hover { box-shadow: var(--neu-in-sm); }
236
+ .table-filter-actions .tf-btn.ghost { color: var(--fg-muted); box-shadow: var(--neu-shadow-subtle); }
237
+ .table-filter-actions .tf-btn.ghost:hover { box-shadow: var(--neu-shadow-inset); }
238
238
 
239
239
  /* Built-in pagination bar */
240
240
  .table-pagination {
package/dist/Table.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunk3AS5B7MQ_cjs = require('./chunk-3AS5B7MQ.cjs');
4
- require('./chunk-CUXV6QNN.cjs');
5
- require('./chunk-OYMJVU66.cjs');
6
- require('./chunk-ZIP7F4UF.cjs');
7
- require('./chunk-FBVVRTX2.cjs');
3
+ var chunkOGPDCBPD_cjs = require('./chunk-OGPDCBPD.cjs');
4
+ require('./chunk-DYSGXQUK.cjs');
5
+ require('./chunk-IDJCFYPP.cjs');
6
+ require('./chunk-SYWTT5TY.cjs');
7
+ require('./chunk-ZPKHGKVL.cjs');
8
8
  require('./chunk-YB3IWIOJ.cjs');
9
- require('./chunk-6LZ54NPO.cjs');
10
- require('./chunk-OQBDU5I2.cjs');
11
- require('./chunk-TJII7BQ2.cjs');
9
+ require('./chunk-VAXWWJJP.cjs');
10
+ require('./chunk-5NFSDFBB.cjs');
11
+ require('./chunk-6LARTGLP.cjs');
12
12
 
13
13
 
14
14
 
15
15
  Object.defineProperty(exports, "Table", {
16
16
  enumerable: true,
17
- get: function () { return chunk3AS5B7MQ_cjs.Table; }
17
+ get: function () { return chunkOGPDCBPD_cjs.Table; }
18
18
  });
package/dist/Table.js CHANGED
@@ -1,9 +1,9 @@
1
- export { Table } from './chunk-AWXCSX6J.js';
2
- import './chunk-7NGMQIST.js';
3
- import './chunk-WKKSAGYH.js';
4
- import './chunk-DQTSTJ6O.js';
5
- import './chunk-EQEJTN3V.js';
1
+ export { Table } from './chunk-YSXD344H.js';
2
+ import './chunk-2ZFJTMEF.js';
3
+ import './chunk-7D76MI37.js';
4
+ import './chunk-VNNQYJLT.js';
5
+ import './chunk-WXWFMWWF.js';
6
6
  import './chunk-DUFRASGO.js';
7
- import './chunk-XTIN5545.js';
8
- import './chunk-WGZ2KJTZ.js';
9
- import './chunk-OF3SGLZY.js';
7
+ import './chunk-XVP7IKLZ.js';
8
+ import './chunk-56PHETWO.js';
9
+ import './chunk-YT5NLCRC.js';
@@ -2,7 +2,7 @@
2
2
  .table-card {
3
3
  border-radius: var(--r-lg);
4
4
  background: var(--bg);
5
- box-shadow: var(--neu-out-sm);
5
+ box-shadow: var(--neu-shadow-control);
6
6
  overflow: hidden;
7
7
  }
8
8
  .table-card .table-wrap { background: transparent; box-shadow: none; border-radius: 0; }
package/dist/TablePro.cjs CHANGED
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var chunkK2KYM7LW_cjs = require('./chunk-K2KYM7LW.cjs');
4
- require('./chunk-3AS5B7MQ.cjs');
5
- require('./chunk-CUXV6QNN.cjs');
6
- require('./chunk-OYMJVU66.cjs');
7
- require('./chunk-ZIP7F4UF.cjs');
8
- require('./chunk-FBVVRTX2.cjs');
3
+ var chunkD64IPDUE_cjs = require('./chunk-D64IPDUE.cjs');
4
+ require('./chunk-OGPDCBPD.cjs');
5
+ require('./chunk-DYSGXQUK.cjs');
6
+ require('./chunk-IDJCFYPP.cjs');
7
+ require('./chunk-SYWTT5TY.cjs');
8
+ require('./chunk-ZPKHGKVL.cjs');
9
9
  require('./chunk-YB3IWIOJ.cjs');
10
- require('./chunk-6LZ54NPO.cjs');
11
- require('./chunk-OQBDU5I2.cjs');
12
- require('./chunk-TJII7BQ2.cjs');
10
+ require('./chunk-VAXWWJJP.cjs');
11
+ require('./chunk-5NFSDFBB.cjs');
12
+ require('./chunk-6LARTGLP.cjs');
13
13
 
14
14
 
15
15
 
16
16
  Object.defineProperty(exports, "TablePro", {
17
17
  enumerable: true,
18
- get: function () { return chunkK2KYM7LW_cjs.TablePro; }
18
+ get: function () { return chunkD64IPDUE_cjs.TablePro; }
19
19
  });
package/dist/TablePro.js CHANGED
@@ -1,10 +1,10 @@
1
- export { TablePro } from './chunk-MUXP7ASL.js';
2
- import './chunk-AWXCSX6J.js';
3
- import './chunk-7NGMQIST.js';
4
- import './chunk-WKKSAGYH.js';
5
- import './chunk-DQTSTJ6O.js';
6
- import './chunk-EQEJTN3V.js';
1
+ export { TablePro } from './chunk-GUZ2DNDC.js';
2
+ import './chunk-YSXD344H.js';
3
+ import './chunk-2ZFJTMEF.js';
4
+ import './chunk-7D76MI37.js';
5
+ import './chunk-VNNQYJLT.js';
6
+ import './chunk-WXWFMWWF.js';
7
7
  import './chunk-DUFRASGO.js';
8
- import './chunk-XTIN5545.js';
9
- import './chunk-WGZ2KJTZ.js';
10
- import './chunk-OF3SGLZY.js';
8
+ import './chunk-XVP7IKLZ.js';
9
+ import './chunk-56PHETWO.js';
10
+ import './chunk-YT5NLCRC.js';
@@ -5,7 +5,7 @@
5
5
  padding: 5px;
6
6
  border-radius: var(--r-md);
7
7
  background: var(--bg);
8
- box-shadow: var(--neu-in-sm);
8
+ box-shadow: var(--neu-shadow-inset);
9
9
  gap: 2px;
10
10
  align-self: flex-start;
11
11
  }
@@ -28,7 +28,7 @@
28
28
  .tabs-nav .tab.active {
29
29
  color: var(--accent-ink);
30
30
  background: var(--bg);
31
- box-shadow: var(--neu-out-sm);
31
+ box-shadow: var(--neu-shadow-control);
32
32
  font-weight: 600;
33
33
  }
34
34
  .tabs-nav .tab[disabled] { opacity: 0.4; cursor: not-allowed; }
package/dist/Tabs.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkKD4YYIIO_cjs = require('./chunk-KD4YYIIO.cjs');
3
+ var chunkIHK2FRTS_cjs = require('./chunk-IHK2FRTS.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "Tabs", {
8
8
  enumerable: true,
9
- get: function () { return chunkKD4YYIIO_cjs.Tabs; }
9
+ get: function () { return chunkIHK2FRTS_cjs.Tabs; }
10
10
  });
package/dist/Tabs.js CHANGED
@@ -1 +1 @@
1
- export { Tabs } from './chunk-OBEKX4VR.js';
1
+ export { Tabs } from './chunk-TVUBGXWA.js';
@@ -9,7 +9,7 @@
9
9
  font-size: 11px;
10
10
  font-weight: 500;
11
11
  background: var(--bg);
12
- box-shadow: var(--neu-flat);
12
+ box-shadow: var(--neu-shadow-subtle);
13
13
  color: var(--fg-muted);
14
14
  }
15
15
  .tag.accent { color: var(--accent-ink); }
@@ -24,6 +24,19 @@
24
24
  .tag.solid.danger { background: var(--danger); color: var(--bg); box-shadow: 0 2px 6px color-mix(in oklch, var(--danger) 35%, transparent); }
25
25
  .tag.borderless { background: transparent; box-shadow: none; }
26
26
  .tag .dot { width: 6px; height: 6px; border-radius: 999px; background: currentColor; }
27
- .tag .tag-ico { color: currentColor; display: inline-flex; }
27
+ .tag .tag-ico {
28
+ color: currentColor;
29
+ display: inline-flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ line-height: 0;
33
+ flex-shrink: 0;
34
+ }
35
+ .tag .tag-ico img {
36
+ display: block;
37
+ width: 1em;
38
+ height: 1em;
39
+ object-fit: contain;
40
+ }
28
41
  .tag .x { cursor: pointer; color: var(--fg-subtle); margin-left: 2px; display: inline-flex; }
29
42
  .tag .x:hover { color: var(--fg); }
package/dist/Tag.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkZIP7F4UF_cjs = require('./chunk-ZIP7F4UF.cjs');
4
- require('./chunk-TJII7BQ2.cjs');
3
+ var chunkSYWTT5TY_cjs = require('./chunk-SYWTT5TY.cjs');
4
+ require('./chunk-6LARTGLP.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Tag", {
9
9
  enumerable: true,
10
- get: function () { return chunkZIP7F4UF_cjs.Tag; }
10
+ get: function () { return chunkSYWTT5TY_cjs.Tag; }
11
11
  });
package/dist/Tag.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { IconName } from './Icon.cjs';
2
+ import { IconSlot } from './Icon.cjs';
3
+ import 'react/jsx-runtime';
3
4
 
4
5
  type TagTone = "neutral" | "accent" | "info" | "success" | "warning" | "danger";
5
6
  interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
@@ -7,8 +8,8 @@ interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
7
8
  solid?: boolean;
8
9
  /** Render a leading colored dot. */
9
10
  dot?: boolean;
10
- /** Leading icon (uses the built-in `Icon` component). */
11
- icon?: IconName;
11
+ /** Leading icon. Accepts a built-in icon name or custom React node. */
12
+ icon?: IconSlot;
12
13
  /** Show a close button. */
13
14
  removable?: boolean;
14
15
  onRemove?: () => void;
package/dist/Tag.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { IconName } from './Icon.js';
2
+ import { IconSlot } from './Icon.js';
3
+ import 'react/jsx-runtime';
3
4
 
4
5
  type TagTone = "neutral" | "accent" | "info" | "success" | "warning" | "danger";
5
6
  interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
@@ -7,8 +8,8 @@ interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
7
8
  solid?: boolean;
8
9
  /** Render a leading colored dot. */
9
10
  dot?: boolean;
10
- /** Leading icon (uses the built-in `Icon` component). */
11
- icon?: IconName;
11
+ /** Leading icon. Accepts a built-in icon name or custom React node. */
12
+ icon?: IconSlot;
12
13
  /** Show a close button. */
13
14
  removable?: boolean;
14
15
  onRemove?: () => void;
package/dist/Tag.js CHANGED
@@ -1,2 +1,2 @@
1
- export { Tag } from './chunk-DQTSTJ6O.js';
2
- import './chunk-OF3SGLZY.js';
1
+ export { Tag } from './chunk-VNNQYJLT.js';
2
+ import './chunk-YT5NLCRC.js';
@@ -40,7 +40,7 @@
40
40
  border: none;
41
41
  border-radius: var(--r-md);
42
42
  background: var(--bg);
43
- box-shadow: var(--neu-in-sm);
43
+ box-shadow: var(--neu-shadow-inset);
44
44
  color: var(--fg);
45
45
  font-size: 13px;
46
46
  font-family: inherit;
@@ -49,6 +49,6 @@
49
49
  outline: none;
50
50
  transition: box-shadow var(--dur) var(--ease);
51
51
  }
52
- .textarea:focus { box-shadow: var(--neu-in-sm), 0 0 0 2px var(--accent-glow); }
53
- .textarea.invalid { box-shadow: var(--neu-in-sm), 0 0 0 2px color-mix(in oklch, var(--danger) 30%, transparent); }
52
+ .textarea:focus { box-shadow: var(--neu-shadow-inset), 0 0 0 2px var(--accent-glow); }
53
+ .textarea.invalid { box-shadow: var(--neu-shadow-inset), 0 0 0 2px color-mix(in oklch, var(--danger) 30%, transparent); }
54
54
  .textarea::placeholder { color: var(--fg-subtle); }
package/dist/Textarea.cjs CHANGED
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkOQBDU5I2_cjs = require('./chunk-OQBDU5I2.cjs');
4
- require('./chunk-TJII7BQ2.cjs');
3
+ var chunk5NFSDFBB_cjs = require('./chunk-5NFSDFBB.cjs');
4
+ require('./chunk-6LARTGLP.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "TextArea", {
9
9
  enumerable: true,
10
- get: function () { return chunkOQBDU5I2_cjs.TextArea; }
10
+ get: function () { return chunk5NFSDFBB_cjs.TextArea; }
11
11
  });
12
12
  Object.defineProperty(exports, "Textarea", {
13
13
  enumerable: true,
14
- get: function () { return chunkOQBDU5I2_cjs.Textarea; }
14
+ get: function () { return chunk5NFSDFBB_cjs.Textarea; }
15
15
  });
package/dist/Textarea.js CHANGED
@@ -1,2 +1,2 @@
1
- export { TextArea, Textarea } from './chunk-WGZ2KJTZ.js';
2
- import './chunk-OF3SGLZY.js';
1
+ export { TextArea, Textarea } from './chunk-56PHETWO.js';
2
+ import './chunk-YT5NLCRC.js';
package/dist/Theme.cjs CHANGED
@@ -1,42 +1,46 @@
1
1
  'use strict';
2
2
 
3
- var chunkRF2EY5JS_cjs = require('./chunk-RF2EY5JS.cjs');
3
+ var chunkN2COYOXE_cjs = require('./chunk-N2COYOXE.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "ACCENT_PRESETS", {
8
8
  enumerable: true,
9
- get: function () { return chunkRF2EY5JS_cjs.ACCENT_PRESETS; }
9
+ get: function () { return chunkN2COYOXE_cjs.ACCENT_PRESETS; }
10
10
  });
11
11
  Object.defineProperty(exports, "ACCENT_PRESETS_DARK", {
12
12
  enumerable: true,
13
- get: function () { return chunkRF2EY5JS_cjs.ACCENT_PRESETS_DARK; }
13
+ get: function () { return chunkN2COYOXE_cjs.ACCENT_PRESETS_DARK; }
14
14
  });
15
15
  Object.defineProperty(exports, "FONT_STACKS", {
16
16
  enumerable: true,
17
- get: function () { return chunkRF2EY5JS_cjs.FONT_STACKS; }
17
+ get: function () { return chunkN2COYOXE_cjs.FONT_STACKS; }
18
18
  });
19
19
  Object.defineProperty(exports, "ThemeProvider", {
20
20
  enumerable: true,
21
- get: function () { return chunkRF2EY5JS_cjs.ThemeProvider; }
21
+ get: function () { return chunkN2COYOXE_cjs.ThemeProvider; }
22
22
  });
23
23
  Object.defineProperty(exports, "applyTheme", {
24
24
  enumerable: true,
25
- get: function () { return chunkRF2EY5JS_cjs.applyTheme; }
25
+ get: function () { return chunkN2COYOXE_cjs.applyTheme; }
26
26
  });
27
27
  Object.defineProperty(exports, "normalizeAccentInput", {
28
28
  enumerable: true,
29
- get: function () { return chunkRF2EY5JS_cjs.normalizeAccentInput; }
29
+ get: function () { return chunkN2COYOXE_cjs.normalizeAccentInput; }
30
+ });
31
+ Object.defineProperty(exports, "resolveThemeColorScheme", {
32
+ enumerable: true,
33
+ get: function () { return chunkN2COYOXE_cjs.resolveThemeColorScheme; }
30
34
  });
31
35
  Object.defineProperty(exports, "resolveThemeMode", {
32
36
  enumerable: true,
33
- get: function () { return chunkRF2EY5JS_cjs.resolveThemeMode; }
37
+ get: function () { return chunkN2COYOXE_cjs.resolveThemeMode; }
34
38
  });
35
39
  Object.defineProperty(exports, "useTheme", {
36
40
  enumerable: true,
37
- get: function () { return chunkRF2EY5JS_cjs.useTheme; }
41
+ get: function () { return chunkN2COYOXE_cjs.useTheme; }
38
42
  });
39
43
  Object.defineProperty(exports, "useThemeOptional", {
40
44
  enumerable: true,
41
- get: function () { return chunkRF2EY5JS_cjs.useThemeOptional; }
45
+ get: function () { return chunkN2COYOXE_cjs.useThemeOptional; }
42
46
  });
package/dist/Theme.d.cts CHANGED
@@ -1,7 +1,9 @@
1
1
  import * as React from 'react';
2
2
 
3
- type ThemeMode = "light" | "dark" | "system";
4
- type ResolvedThemeMode = "light" | "dark";
3
+ type ThemeBaseMode = "light" | "dark";
4
+ type BuiltInThemeMode = ThemeBaseMode | "system";
5
+ type ThemeMode = BuiltInThemeMode | (string & {});
6
+ type ResolvedThemeMode = ThemeBaseMode | (string & {});
5
7
  type AccentKey = "sky" | "coral" | "mint" | "violet" | "amber" | "rose";
6
8
  type DensityMode = "compact" | "comfortable" | "spacious";
7
9
  type FontKey = "system" | "sf" | "serif" | "mono";
@@ -30,8 +32,25 @@ type FontConfig = FontKey | string | {
30
32
  /** Arbitrary CSS variable overrides. Keys may be either a short name
31
33
  * (e.g. `"bg"` → `--bg`) or a full var name (e.g. `"--bg"`). */
32
34
  type ThemeTokens = Record<string, string>;
35
+ /** Named custom theme mode. `base` keeps dark/light specific component rules. */
36
+ interface ThemePreset {
37
+ /** Optional display name used by ThemePanel or other theme pickers. */
38
+ label?: string;
39
+ /** Optional helper text used by ThemePanel or other theme pickers. */
40
+ description?: string;
41
+ base?: ThemeBaseMode;
42
+ accent?: AccentKey | CustomAccentInput;
43
+ density?: DensityMode;
44
+ intensity?: number;
45
+ radius?: number;
46
+ font?: FontConfig;
47
+ tokens?: ThemeTokens;
48
+ }
49
+ type ThemePresets = Record<string, ThemePreset>;
33
50
  interface ThemeConfig {
34
51
  mode?: ThemeMode;
52
+ /** Base light/dark color scheme used by custom modes. */
53
+ colorScheme?: ThemeBaseMode;
35
54
  accent?: AccentKey | CustomAccentInput;
36
55
  density?: DensityMode;
37
56
  /** Shadow strength, 1..10. Maps to `--d` (0.4..1.6). */
@@ -40,12 +59,16 @@ interface ThemeConfig {
40
59
  radius?: number;
41
60
  font?: FontConfig;
42
61
  tokens?: ThemeTokens;
62
+ /** Custom named modes addressable through `mode` / `setMode`. */
63
+ themes?: ThemePresets;
43
64
  }
44
65
  interface ThemeValue {
45
66
  /** Requested mode ("system" is preserved here). */
46
67
  mode: ThemeMode;
47
- /** Resolved concrete mode ("system" → "light" | "dark" based on OS). */
68
+ /** Resolved concrete mode ("system" → "light" | "dark"; custom modes keep their name). */
48
69
  resolvedMode: ResolvedThemeMode;
70
+ /** The light/dark base currently used for component-specific selectors. */
71
+ colorScheme: ThemeBaseMode;
49
72
  /** Accent key or "custom" if a palette was supplied. */
50
73
  accent: AccentKey | "custom";
51
74
  /** Resolved palette currently in effect. */
@@ -55,6 +78,8 @@ interface ThemeValue {
55
78
  radius: number;
56
79
  font: FontConfig;
57
80
  tokens: ThemeTokens;
81
+ themes: ThemePresets;
82
+ activeTheme: ThemePreset | null;
58
83
  setMode: (m: ThemeMode) => void;
59
84
  toggleMode: () => void;
60
85
  setAccent: (a: AccentKey | CustomAccentInput) => void;
@@ -63,6 +88,7 @@ interface ThemeValue {
63
88
  setRadius: (n: number) => void;
64
89
  setFont: (f: FontConfig) => void;
65
90
  setTokens: (t: ThemeTokens) => void;
91
+ setThemes: (t: ThemePresets) => void;
66
92
  /** Shallow-merge a partial config. */
67
93
  update: (cfg: Partial<ThemeConfig>) => void;
68
94
  /** Reset to the initial props. */
@@ -75,10 +101,11 @@ declare const ACCENT_PRESETS: Record<AccentKey, AccentPalette>;
75
101
  declare const ACCENT_PRESETS_DARK: Record<AccentKey, Pick<AccentPalette, "ink" | "soft" | "glow">>;
76
102
  /** Built-in font family stacks. */
77
103
  declare const FONT_STACKS: Record<FontKey, string>;
78
- /** Resolve "system" mode against `prefers-color-scheme`. */
104
+ /** Resolve "system" mode against `prefers-color-scheme`; custom modes keep their name. */
79
105
  declare function resolveThemeMode(mode: ThemeMode): ResolvedThemeMode;
106
+ declare function resolveThemeColorScheme(mode: ThemeMode, themes?: ThemePresets, fallback?: ThemeBaseMode): ThemeBaseMode;
80
107
  /** Fill missing slots of a custom accent via color-mix. */
81
- declare function normalizeAccentInput(input: AccentKey | CustomAccentInput, resolvedMode: ResolvedThemeMode): {
108
+ declare function normalizeAccentInput(input: AccentKey | CustomAccentInput, colorScheme: ThemeBaseMode): {
82
109
  key: AccentKey | "custom";
83
110
  palette: AccentPalette;
84
111
  };
@@ -100,7 +127,7 @@ interface ThemeProviderProps extends ThemeConfig {
100
127
  as?: keyof JSX.IntrinsicElements;
101
128
  className?: string;
102
129
  style?: React.CSSProperties;
103
- /** If set, theme state is persisted to localStorage under this key. */
130
+ /** If set, theme state and custom named themes are persisted to localStorage under this key. */
104
131
  storageKey?: string;
105
132
  /** Called whenever the resolved theme value changes. */
106
133
  onChange?: (value: ThemeValue) => void;
@@ -124,4 +151,4 @@ interface ThemeProviderProps extends ThemeConfig {
124
151
  */
125
152
  declare const ThemeProvider: React.FC<ThemeProviderProps>;
126
153
 
127
- export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, type AccentKey, type AccentPalette, type CustomAccentInput, type DensityMode, FONT_STACKS, type FontConfig, type FontKey, type ResolvedThemeMode, type ThemeConfig, type ThemeMode, ThemeProvider, type ThemeProviderProps, type ThemeTokens, type ThemeValue, applyTheme, normalizeAccentInput, resolveThemeMode, useTheme, useThemeOptional };
154
+ export { ACCENT_PRESETS, ACCENT_PRESETS_DARK, type AccentKey, type AccentPalette, type BuiltInThemeMode, type CustomAccentInput, type DensityMode, FONT_STACKS, type FontConfig, type FontKey, type ResolvedThemeMode, type ThemeBaseMode, type ThemeConfig, type ThemeMode, type ThemePreset, type ThemePresets, ThemeProvider, type ThemeProviderProps, type ThemeTokens, type ThemeValue, applyTheme, normalizeAccentInput, resolveThemeColorScheme, resolveThemeMode, useTheme, useThemeOptional };