@fangxinyan/lumina 0.6.1 → 0.6.3

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 (270) hide show
  1. package/README.md +2 -1
  2. package/dist/{Alert-JJ7GB3UU.css → Alert-QBKIDY5H.css} +7 -0
  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/AutoComplete.cjs +5 -4
  8. package/dist/AutoComplete.d.cts +1 -1
  9. package/dist/AutoComplete.d.ts +1 -1
  10. package/dist/AutoComplete.js +4 -3
  11. package/dist/Badge-DPGLV3D3.css +22 -0
  12. package/dist/Badge.cjs +10 -0
  13. package/dist/Badge.d.cts +19 -0
  14. package/dist/Badge.d.ts +19 -0
  15. package/dist/Badge.js +1 -0
  16. package/dist/{Button-SDQD25AG.css → Button-4Z3Q6KII.css} +56 -36
  17. package/dist/Button.cjs +3 -7
  18. package/dist/Button.d.cts +11 -15
  19. package/dist/Button.d.ts +11 -15
  20. package/dist/Button.js +2 -2
  21. package/dist/Calendar.cjs +3 -3
  22. package/dist/Calendar.js +2 -2
  23. package/dist/{Card-RG7ECXL2.css → Card-6RMVIHWX.css} +7 -13
  24. package/dist/Card.cjs +2 -6
  25. package/dist/Card.d.cts +7 -11
  26. package/dist/Card.d.ts +7 -11
  27. package/dist/Card.js +1 -1
  28. package/dist/{Cascader-VSYEKQCG.css → Cascader-3BLLA7EN.css} +77 -0
  29. package/dist/Cascader.cjs +5 -3
  30. package/dist/Cascader.d.cts +22 -4
  31. package/dist/Cascader.d.ts +22 -4
  32. package/dist/Cascader.js +4 -2
  33. package/dist/{Checkbox-SKJATVSN.css → Checkbox-U5EUDSYS.css} +5 -35
  34. package/dist/Checkbox.cjs +3 -7
  35. package/dist/Checkbox.d.cts +1 -18
  36. package/dist/Checkbox.d.ts +1 -18
  37. package/dist/Checkbox.js +2 -2
  38. package/dist/Collapse-66U5YJFY.css +53 -0
  39. package/dist/Collapse.cjs +11 -0
  40. package/dist/Collapse.d.cts +32 -0
  41. package/dist/Collapse.d.ts +32 -0
  42. package/dist/Collapse.js +2 -0
  43. package/dist/CommandPalette.cjs +5 -4
  44. package/dist/CommandPalette.js +4 -3
  45. package/dist/Drawer.cjs +3 -3
  46. package/dist/Drawer.js +2 -2
  47. package/dist/Empty-DC2LPORC.css +28 -0
  48. package/dist/Empty.cjs +2 -10
  49. package/dist/Empty.d.cts +1 -62
  50. package/dist/Empty.d.ts +1 -62
  51. package/dist/Empty.js +1 -1
  52. package/dist/Form.d.cts +1 -1
  53. package/dist/Form.d.ts +1 -1
  54. package/dist/Icon.cjs +187 -3
  55. package/dist/Icon.d.cts +104 -3
  56. package/dist/Icon.d.ts +104 -3
  57. package/dist/Icon.js +1 -1
  58. package/dist/{Image-4MN34O6P.css → Image-MRYQCRQ5.css} +78 -0
  59. package/dist/Image.cjs +12 -4
  60. package/dist/Image.d.cts +79 -6
  61. package/dist/Image.d.ts +79 -6
  62. package/dist/Image.js +2 -2
  63. package/dist/{Input-33CAH4O6.css → Input-HUBJ55OH.css} +25 -42
  64. package/dist/Input.cjs +6 -5
  65. package/dist/Input.d.cts +23 -26
  66. package/dist/Input.d.ts +23 -26
  67. package/dist/Input.js +3 -2
  68. package/dist/InputNumber.cjs +5 -4
  69. package/dist/InputNumber.d.cts +1 -1
  70. package/dist/InputNumber.d.ts +1 -1
  71. package/dist/InputNumber.js +4 -3
  72. package/dist/Message-2MZ3LFPU.css +45 -0
  73. package/dist/Message.cjs +23 -0
  74. package/dist/Message.d.cts +54 -0
  75. package/dist/Message.d.ts +54 -0
  76. package/dist/Message.js +2 -0
  77. package/dist/{Modal-XSDMU4XJ.css → Modal-2QNDW4SO.css} +27 -0
  78. package/dist/Modal.cjs +4 -4
  79. package/dist/Modal.d.cts +29 -4
  80. package/dist/Modal.d.ts +29 -4
  81. package/dist/Modal.js +3 -3
  82. package/dist/Pagination.cjs +7 -5
  83. package/dist/Pagination.js +6 -4
  84. package/dist/Popover.cjs +2 -2
  85. package/dist/Popover.d.cts +11 -3
  86. package/dist/Popover.d.ts +11 -3
  87. package/dist/Popover.js +1 -1
  88. package/dist/Radio-GVFDPAZM.css +97 -0
  89. package/dist/Radio.cjs +14 -0
  90. package/dist/Radio.d.cts +36 -0
  91. package/dist/Radio.d.ts +36 -0
  92. package/dist/Radio.js +1 -0
  93. package/dist/{Select-J3CCVFJ7.css → Select-Z5VYPEEY.css} +33 -24
  94. package/dist/Select.cjs +6 -4
  95. package/dist/Select.d.cts +29 -7
  96. package/dist/Select.d.ts +29 -7
  97. package/dist/Select.js +5 -3
  98. package/dist/Skeleton-CVWH2VWN.css +40 -0
  99. package/dist/Skeleton.cjs +10 -0
  100. package/dist/Skeleton.d.cts +30 -0
  101. package/dist/Skeleton.d.ts +30 -0
  102. package/dist/Skeleton.js +1 -0
  103. package/dist/Spin-3GJNMSIH.css +94 -0
  104. package/dist/Spin.cjs +10 -0
  105. package/dist/Spin.d.cts +20 -0
  106. package/dist/Spin.d.ts +20 -0
  107. package/dist/Spin.js +1 -0
  108. package/dist/{Table-2LPTOUIR.css → Table-ATJJQLKU.css} +0 -53
  109. package/dist/Table.cjs +9 -11
  110. package/dist/Table.d.cts +2 -21
  111. package/dist/Table.d.ts +2 -21
  112. package/dist/Table.js +8 -6
  113. package/dist/TablePro-3XVHYLSL.css +45 -0
  114. package/dist/TablePro.cjs +19 -0
  115. package/dist/TablePro.d.cts +21 -0
  116. package/dist/TablePro.d.ts +21 -0
  117. package/dist/TablePro.js +10 -0
  118. package/dist/{Tabs-RHK6XAFF.css → Tabs-BLSNI2T5.css} +0 -34
  119. package/dist/Tabs.cjs +2 -6
  120. package/dist/Tabs.d.cts +1 -16
  121. package/dist/Tabs.d.ts +1 -16
  122. package/dist/Tabs.js +1 -1
  123. package/dist/Tag-HDYCDPFS.css +42 -0
  124. package/dist/Tag.cjs +3 -7
  125. package/dist/Tag.d.cts +5 -14
  126. package/dist/Tag.d.ts +5 -14
  127. package/dist/Tag.js +2 -2
  128. package/dist/Textarea-YNET7IBH.css +54 -0
  129. package/dist/Textarea.cjs +15 -0
  130. package/dist/Textarea.d.cts +25 -0
  131. package/dist/Textarea.d.ts +25 -0
  132. package/dist/Textarea.js +2 -0
  133. package/dist/Theme.cjs +14 -10
  134. package/dist/Theme.d.cts +29 -6
  135. package/dist/Theme.d.ts +29 -6
  136. package/dist/Theme.js +1 -1
  137. package/dist/{Timeline-RHZAZKZ7.css → Timeline-3ZHOHPXT.css} +2 -2
  138. package/dist/Timeline.cjs +3 -3
  139. package/dist/Timeline.d.cts +1 -1
  140. package/dist/Timeline.d.ts +1 -1
  141. package/dist/Timeline.js +2 -2
  142. package/dist/Tooltip.cjs +2 -2
  143. package/dist/Tooltip.d.cts +17 -4
  144. package/dist/Tooltip.d.ts +17 -4
  145. package/dist/Tooltip.js +1 -1
  146. package/dist/Typography.cjs +7 -7
  147. package/dist/Typography.d.cts +1 -0
  148. package/dist/Typography.d.ts +1 -0
  149. package/dist/Typography.js +2 -2
  150. package/dist/{chunk-OVZTG5CP.cjs → chunk-2HQCUBA7.cjs} +2 -2
  151. package/dist/{chunk-X2U7EKCS.cjs → chunk-3YJU3D5S.cjs} +28 -5
  152. package/dist/chunk-45VJGBGN.js +25 -0
  153. package/dist/{chunk-3D77MQHO.js → chunk-46VXFTEC.js} +3 -3
  154. package/dist/chunk-47VG2P34.js +393 -0
  155. package/dist/{chunk-LZU33BX6.cjs → chunk-5DKRY67M.cjs} +4 -20
  156. package/dist/{chunk-TWGQZX2R.js → chunk-5H5YP2TB.js} +4 -19
  157. package/dist/chunk-5MN3PMF4.cjs +240 -0
  158. package/dist/{chunk-5A3RT4KD.js → chunk-5TKC6IEN.js} +4 -55
  159. package/dist/{chunk-N57NXCNC.cjs → chunk-6HMTV6P4.cjs} +3 -44
  160. package/dist/{chunk-RF2EY5JS.cjs → chunk-6ZXQJRAT.cjs} +153 -34
  161. package/dist/{chunk-OFGDUCT7.cjs → chunk-7AG524YZ.cjs} +3 -3
  162. package/dist/chunk-7IYKKLV3.js +283 -0
  163. package/dist/{chunk-73RQBWWW.js → chunk-AAGF7K3L.js} +2 -2
  164. package/dist/chunk-AXZ7ELMA.js +41 -0
  165. package/dist/{chunk-R6BIF3FF.js → chunk-BPOOVO5T.js} +5 -23
  166. package/dist/{chunk-OI3CWXT3.js → chunk-BVQ77VRY.js} +3 -3
  167. package/dist/{chunk-UXH5PH3S.js → chunk-CETNCRZ4.js} +2 -2
  168. package/dist/chunk-DG5VQ6BO.cjs +28 -0
  169. package/dist/chunk-DWAN57G4.js +243 -0
  170. package/dist/chunk-ELNT3CFO.js +64 -0
  171. package/dist/{chunk-ULOJ5UEY.js → chunk-ET6DYQVZ.js} +1 -1
  172. package/dist/chunk-F6RYCBQG.js +25 -0
  173. package/dist/{chunk-RPFMQZA5.js → chunk-FBYUZOZP.js} +42 -31
  174. package/dist/chunk-FGW5GJ22.cjs +132 -0
  175. package/dist/{chunk-6Y5WRCPW.js → chunk-FWPBORRB.js} +1 -1
  176. package/dist/chunk-GENABQYA.cjs +47 -0
  177. package/dist/{chunk-TGHBKKSS.js → chunk-GIZU3H6H.js} +3 -43
  178. package/dist/chunk-GMN74OEY.cjs +63 -0
  179. package/dist/{chunk-Y47YTYQ3.cjs → chunk-H4LGWZMH.cjs} +159 -8
  180. package/dist/chunk-HKF2V5MM.cjs +214 -0
  181. package/dist/chunk-HLFH5HWR.js +81 -0
  182. package/dist/{chunk-4WRE4HQP.js → chunk-HWFM4MAT.js} +18 -6
  183. package/dist/{chunk-GY3BSHHS.cjs → chunk-HZSIUOCN.cjs} +2 -55
  184. package/dist/{chunk-D46EM4EN.js → chunk-I5WTQ5Y3.js} +4 -4
  185. package/dist/chunk-J2HZTJO6.js +26 -0
  186. package/dist/{chunk-NN25YMOL.js → chunk-J5ZGYQZK.js} +153 -35
  187. package/dist/{chunk-WRDKOSSM.js → chunk-JCEHZ336.js} +1 -1
  188. package/dist/chunk-JVUVOR6S.js +110 -0
  189. package/dist/chunk-K5IGFBDR.js +113 -0
  190. package/dist/{chunk-Q2KG6SQK.cjs → chunk-K7FV7W6U.cjs} +5 -5
  191. package/dist/{chunk-PWW64ZWO.cjs → chunk-KD4YYIIO.cjs} +1 -32
  192. package/dist/chunk-KGSADAOD.cjs +170 -0
  193. package/dist/{chunk-54YLXXS2.js → chunk-ME5BZ2WA.js} +2 -2
  194. package/dist/chunk-MPVCYU2K.cjs +104 -0
  195. package/dist/{chunk-EEMWQX3C.cjs → chunk-NTS5L4NQ.cjs} +3 -3
  196. package/dist/{chunk-WBK6XIDJ.js → chunk-OBEKX4VR.js} +2 -32
  197. package/dist/{chunk-EBNRZRWY.cjs → chunk-P6EZG2R7.cjs} +5 -5
  198. package/dist/{chunk-KYEY2LIB.cjs → chunk-P6P4DGLF.cjs} +3 -3
  199. package/dist/{chunk-GOBWKQCX.cjs → chunk-PULGVK2I.cjs} +3 -3
  200. package/dist/chunk-Q5SZIU7Z.cjs +47 -0
  201. package/dist/chunk-QKQHZIF3.cjs +86 -0
  202. package/dist/{chunk-3TWNBJFI.cjs → chunk-QP3VCSRY.cjs} +6 -6
  203. package/dist/{chunk-6ODY6MGL.cjs → chunk-R2TEDH2F.cjs} +5 -5
  204. package/dist/{chunk-YRZGXXWA.js → chunk-SQGPSMSK.js} +14 -20
  205. package/dist/{chunk-IW5LW6XS.js → chunk-TEEFR2FD.js} +28 -5
  206. package/dist/chunk-TGL5BGMR.js +218 -0
  207. package/dist/{chunk-62GU4OHH.cjs → chunk-TP567B3L.cjs} +13 -20
  208. package/dist/chunk-UKS23N3L.js +191 -0
  209. package/dist/chunk-USQ43DJ5.js +147 -0
  210. package/dist/{chunk-G2K6ETP4.cjs → chunk-UUHFKIWP.cjs} +18 -6
  211. package/dist/{chunk-2MNAZRWE.cjs → chunk-V272XR3F.cjs} +271 -2
  212. package/dist/chunk-VFFIE2VO.cjs +271 -0
  213. package/dist/{chunk-FIO65XYG.cjs → chunk-X5GCOMC3.cjs} +49 -38
  214. package/dist/{chunk-Y3ZSG3SJ.cjs → chunk-XSN4TLN5.cjs} +11 -30
  215. package/dist/chunk-ZKE73UQF.cjs +138 -0
  216. package/dist/index.cjs +342 -132
  217. package/dist/index.d.cts +26 -20
  218. package/dist/index.d.ts +26 -20
  219. package/dist/index.js +35 -29
  220. package/dist/styles.css +515 -230
  221. package/docs/llms/alert.md +4 -3
  222. package/docs/llms/badge.md +3 -3
  223. package/docs/llms/button.md +11 -41
  224. package/docs/llms/card.md +6 -12
  225. package/docs/llms/cascader.md +22 -0
  226. package/docs/llms/{accordion.md → collapse.md} +13 -11
  227. package/docs/llms/drawer.md +1 -1
  228. package/docs/llms/form.md +1 -1
  229. package/docs/llms/image.md +72 -1
  230. package/docs/llms/input.md +28 -18
  231. package/docs/llms/message.md +63 -0
  232. package/docs/llms/modal.md +30 -0
  233. package/docs/llms/popover.md +18 -1
  234. package/docs/llms/radio.md +37 -1
  235. package/docs/llms/select.md +22 -2
  236. package/docs/llms/spin.md +59 -0
  237. package/docs/llms/table.md +3 -3
  238. package/docs/llms/tag.md +3 -2
  239. package/docs/llms/theme.md +41 -4
  240. package/docs/llms/tooltip.md +16 -3
  241. package/docs/llms.md +8 -8
  242. package/package.json +32 -52
  243. package/dist/Accordion-REMDCQUD.css +0 -44
  244. package/dist/Accordion.cjs +0 -11
  245. package/dist/Accordion.d.cts +0 -33
  246. package/dist/Accordion.d.ts +0 -33
  247. package/dist/Accordion.js +0 -2
  248. package/dist/Empty-NQ72W3D7.css +0 -160
  249. package/dist/Tag-FGDY3W7E.css +0 -51
  250. package/dist/Toast-YSACW3EM.css +0 -45
  251. package/dist/Toast.cjs +0 -15
  252. package/dist/Toast.d.cts +0 -26
  253. package/dist/Toast.d.ts +0 -26
  254. package/dist/Toast.js +0 -2
  255. package/dist/chunk-32HBMXXV.cjs +0 -208
  256. package/dist/chunk-3XTHKAEY.js +0 -39
  257. package/dist/chunk-5M26OVVY.js +0 -90
  258. package/dist/chunk-DOMYUGJY.js +0 -132
  259. package/dist/chunk-DPNDHNKK.js +0 -185
  260. package/dist/chunk-G2XK57I7.cjs +0 -116
  261. package/dist/chunk-HBWO3QKW.js +0 -74
  262. package/dist/chunk-JVS5ZALZ.js +0 -123
  263. package/dist/chunk-LIGHV4RC.cjs +0 -121
  264. package/dist/chunk-MCTIA6RZ.js +0 -99
  265. package/dist/chunk-NC4YUEXM.cjs +0 -145
  266. package/dist/chunk-NJ6B22YJ.js +0 -170
  267. package/dist/chunk-W64ARHLJ.cjs +0 -62
  268. package/dist/chunk-ZFW6OYAO.cjs +0 -100
  269. package/docs/llms/spinner.md +0 -58
  270. package/docs/llms/toast.md +0 -51
package/README.md CHANGED
@@ -92,10 +92,11 @@ package/
92
92
  所有设计令牌都在 `:root` 上定义,可以通过 `data-*` 属性切换主题:
93
93
 
94
94
  ```html
95
- <html data-theme="dark" data-accent="sky" data-density="compact">
95
+ <html data-theme="dark" data-theme-mode="graphite" data-accent="sky" data-density="compact">
96
96
  ```
97
97
 
98
98
  - `data-theme`: `light` | `dark`
99
+ - `data-theme-mode`: 当前模式名,例如 `light` / `dark` / `system` / 自定义模式名
99
100
  - `data-accent`: `rose` | `sky` | `coral` | `mint` | `violet` | `amber`
100
101
  - `data-density`: `compact` | `comfortable` | `spacious`
101
102
 
@@ -14,6 +14,13 @@
14
14
  display: grid; place-items: center;
15
15
  flex-shrink: 0;
16
16
  margin-top: 1px;
17
+ line-height: 0;
18
+ }
19
+ .alert-ico img {
20
+ display: block;
21
+ width: 16px;
22
+ height: 16px;
23
+ object-fit: contain;
17
24
  }
18
25
  .alert.info .alert-ico { color: var(--info); }
19
26
  .alert.success .alert-ico { color: var(--success); }
package/dist/Alert.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkQ2KG6SQK_cjs = require('./chunk-Q2KG6SQK.cjs');
4
- require('./chunk-2MNAZRWE.cjs');
3
+ var chunkK7FV7W6U_cjs = require('./chunk-K7FV7W6U.cjs');
4
+ require('./chunk-V272XR3F.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Alert", {
9
9
  enumerable: true,
10
- get: function () { return chunkQ2KG6SQK_cjs.Alert; }
10
+ get: function () { return chunkK7FV7W6U_cjs.Alert; }
11
11
  });
package/dist/Alert.d.cts CHANGED
@@ -1,12 +1,13 @@
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 AlertTone = "info" | "success" | "warning" | "danger";
5
6
  interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title" | "children"> {
6
7
  tone?: AlertTone;
7
8
  title?: React.ReactNode;
8
9
  children?: React.ReactNode;
9
- icon?: IconName;
10
+ icon?: IconSlot;
10
11
  /** Controls the leading semantic icon. Defaults to `true`. */
11
12
  showIcon?: boolean;
12
13
  closable?: boolean;
package/dist/Alert.d.ts CHANGED
@@ -1,12 +1,13 @@
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 AlertTone = "info" | "success" | "warning" | "danger";
5
6
  interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title" | "children"> {
6
7
  tone?: AlertTone;
7
8
  title?: React.ReactNode;
8
9
  children?: React.ReactNode;
9
- icon?: IconName;
10
+ icon?: IconSlot;
10
11
  /** Controls the leading semantic icon. Defaults to `true`. */
11
12
  showIcon?: boolean;
12
13
  closable?: boolean;
package/dist/Alert.js CHANGED
@@ -1,2 +1,2 @@
1
- export { Alert } from './chunk-D46EM4EN.js';
2
- import './chunk-NJ6B22YJ.js';
1
+ export { Alert } from './chunk-I5WTQ5Y3.js';
2
+ import './chunk-47VG2P34.js';
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkKYEY2LIB_cjs = require('./chunk-KYEY2LIB.cjs');
3
+ var chunkP6P4DGLF_cjs = require('./chunk-P6P4DGLF.cjs');
4
4
  require('./chunk-YB3IWIOJ.cjs');
5
- require('./chunk-32HBMXXV.cjs');
6
- require('./chunk-2MNAZRWE.cjs');
5
+ require('./chunk-HKF2V5MM.cjs');
6
+ require('./chunk-MPVCYU2K.cjs');
7
+ require('./chunk-V272XR3F.cjs');
7
8
 
8
9
 
9
10
 
10
11
  Object.defineProperty(exports, "AutoComplete", {
11
12
  enumerable: true,
12
- get: function () { return chunkKYEY2LIB_cjs.AutoComplete; }
13
+ get: function () { return chunkP6P4DGLF_cjs.AutoComplete; }
13
14
  });
@@ -32,7 +32,7 @@ interface AutoCompleteProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
32
32
  }
33
33
  /**
34
34
  * `AutoComplete` — text input with a filtered suggestion dropdown.
35
- * Follows antd's API shape (value / onChange / onSelect / options / filterOption).
35
+ * Uses value / onChange / onSelect / options / filterOption for predictable field binding.
36
36
  *
37
37
  * @example
38
38
  * ```tsx
@@ -32,7 +32,7 @@ interface AutoCompleteProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
32
32
  }
33
33
  /**
34
34
  * `AutoComplete` — text input with a filtered suggestion dropdown.
35
- * Follows antd's API shape (value / onChange / onSelect / options / filterOption).
35
+ * Uses value / onChange / onSelect / options / filterOption for predictable field binding.
36
36
  *
37
37
  * @example
38
38
  * ```tsx
@@ -1,4 +1,5 @@
1
- export { AutoComplete } from './chunk-73RQBWWW.js';
1
+ export { AutoComplete } from './chunk-AAGF7K3L.js';
2
2
  import './chunk-DUFRASGO.js';
3
- import './chunk-DPNDHNKK.js';
4
- import './chunk-NJ6B22YJ.js';
3
+ import './chunk-UKS23N3L.js';
4
+ import './chunk-HLFH5HWR.js';
5
+ import './chunk-47VG2P34.js';
@@ -0,0 +1,22 @@
1
+ /* ============ Badge ============ */
2
+ .badge {
3
+ display: inline-flex;
4
+ align-items: center; justify-content: center;
5
+ min-width: 18px; height: 18px;
6
+ padding: 0 6px;
7
+ border-radius: 999px;
8
+ font-size: 10px;
9
+ font-weight: 700;
10
+ background: var(--danger);
11
+ color: var(--bg);
12
+ box-shadow: 0 1px 4px color-mix(in oklch, var(--shadow-dark) 35%, transparent);
13
+ font-variant-numeric: tabular-nums;
14
+ }
15
+ .badge.dot { min-width: 10px; height: 10px; padding: 0; }
16
+ .badge.accent { background: var(--accent); box-shadow: 0 1px 4px var(--accent-glow); }
17
+ .badge.info { background: var(--info); box-shadow: 0 1px 4px color-mix(in oklch, var(--info) 35%, transparent); }
18
+ .badge.success { background: var(--success); box-shadow: 0 1px 4px color-mix(in oklch, var(--success) 35%, transparent); }
19
+ .badge.warning { background: var(--warning); box-shadow: 0 1px 4px color-mix(in oklch, var(--warning) 35%, transparent); }
20
+ .badge.neutral { background: var(--fg-muted); box-shadow: 0 1px 4px color-mix(in oklch, var(--shadow-dark) 35%, transparent); }
21
+ .badge-wrap { position: relative; display: inline-block; }
22
+ .badge-wrap > .badge { position: absolute; top: -4px; right: -4px; }
package/dist/Badge.cjs ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var chunkQ5SZIU7Z_cjs = require('./chunk-Q5SZIU7Z.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "Badge", {
8
+ enumerable: true,
9
+ get: function () { return chunkQ5SZIU7Z_cjs.Badge; }
10
+ });
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import { TagTone } from './Tag.cjs';
3
+ import './Icon.cjs';
4
+ import 'react/jsx-runtime';
5
+
6
+ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
7
+ /** Numeric count — renders as "max+" if greater than `max`. */
8
+ count?: number;
9
+ /** Maximum number to display before adding "+". */
10
+ max?: number;
11
+ /** Show a tiny dot instead of a number. */
12
+ dot?: boolean;
13
+ tone?: TagTone;
14
+ children?: React.ReactNode;
15
+ }
16
+ /** `Badge` — notification dot / count. Wrap around another element. */
17
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
18
+
19
+ export { Badge, type BadgeProps };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import { TagTone } from './Tag.js';
3
+ import './Icon.js';
4
+ import 'react/jsx-runtime';
5
+
6
+ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
7
+ /** Numeric count — renders as "max+" if greater than `max`. */
8
+ count?: number;
9
+ /** Maximum number to display before adding "+". */
10
+ max?: number;
11
+ /** Show a tiny dot instead of a number. */
12
+ dot?: boolean;
13
+ tone?: TagTone;
14
+ children?: React.ReactNode;
15
+ }
16
+ /** `Badge` — notification dot / count. Wrap around another element. */
17
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
18
+
19
+ export { Badge, type BadgeProps };
package/dist/Badge.js ADDED
@@ -0,0 +1 @@
1
+ export { Badge } from './chunk-F6RYCBQG.js';
@@ -6,7 +6,7 @@
6
6
  gap: 8px;
7
7
  height: var(--ctrl-h);
8
8
  padding: 0 var(--ctrl-pad-x);
9
- border: none;
9
+ border: 1px solid transparent;
10
10
  border-radius: var(--r-md);
11
11
  font-size: 13px;
12
12
  font-weight: 500;
@@ -18,58 +18,71 @@
18
18
  user-select: none;
19
19
  white-space: nowrap;
20
20
  flex-shrink: 0;
21
- transition: all var(--dur-fast) var(--ease);
21
+ transition:
22
+ background var(--dur-fast) var(--ease),
23
+ box-shadow var(--dur-fast) var(--ease),
24
+ color var(--dur-fast) var(--ease);
25
+ }
26
+ .btn > svg,
27
+ .btn-icon-slot {
28
+ flex-shrink: 0;
29
+ }
30
+ .btn-icon-slot {
31
+ display: inline-flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ line-height: 0;
35
+ }
36
+ .btn-icon-slot img {
37
+ display: block;
38
+ max-width: 1.25em;
39
+ max-height: 1.25em;
40
+ object-fit: contain;
22
41
  }
23
- .btn > svg { flex-shrink: 0; }
24
42
  .btn.icon {
25
43
  flex-shrink: 0;
26
44
  overflow: visible;
27
45
  }
28
- .btn:hover { color: var(--accent-ink); }
29
- .btn:active, .btn.pressed {
30
- box-shadow: var(--neu-in-sm);
31
- color: var(--accent-ink);
32
- }
33
46
 
34
47
  .btn.primary {
35
48
  color: var(--accent-ink);
36
- background:
37
- linear-gradient(145deg,
38
- color-mix(in oklch, var(--accent-soft) 80%, var(--shadow-light)),
39
- color-mix(in oklch, var(--accent-soft) 92%, var(--bg)));
40
- box-shadow:
41
- var(--neu-out-sm),
42
- inset 1px 1px 0 color-mix(in oklch, var(--shadow-light) 60%, transparent),
43
- inset -1px -1px 0 color-mix(in oklch, var(--accent) 15%, transparent);
49
+ background: color-mix(in oklch, var(--accent-soft) 62%, var(--bg));
44
50
  font-weight: 600;
45
51
  }
46
- .btn.primary:hover {
47
- background:
48
- linear-gradient(145deg,
49
- color-mix(in oklch, var(--accent-soft) 70%, var(--shadow-light)),
50
- color-mix(in oklch, var(--accent) 18%, var(--accent-soft)));
51
- box-shadow:
52
- var(--neu-out-sm),
53
- inset 1px 1px 0 color-mix(in oklch, var(--shadow-light) 70%, transparent),
54
- inset -1px -1px 0 color-mix(in oklch, var(--accent) 20%, transparent),
55
- 0 0 16px -6px var(--accent-glow);
56
- }
57
- .btn.primary:active, .btn.primary.pressed {
58
- box-shadow:
59
- inset 2px 2px 4px color-mix(in oklch, var(--accent) 25%, var(--shadow-dark)),
60
- inset -1px -1px 2px var(--shadow-light);
61
- transform: none;
62
- }
63
52
 
64
53
  .btn.ghost {
65
54
  background: transparent;
66
55
  box-shadow: none;
67
56
  color: var(--fg-muted);
68
57
  }
69
- .btn.ghost:hover { background: var(--bg); box-shadow: var(--neu-flat); color: var(--fg); }
70
58
 
71
59
  .btn.danger { color: var(--danger); }
72
- .btn.danger:hover { color: var(--danger); }
60
+
61
+ .btn:hover {
62
+ box-shadow: var(--neu-out);
63
+ }
64
+ .btn.ghost:hover {
65
+ background: var(--bg);
66
+ border-color: transparent;
67
+ box-shadow: var(--neu-flat);
68
+ color: var(--fg);
69
+ }
70
+ .btn.danger:hover {
71
+ color: var(--danger);
72
+ }
73
+ .btn:active,
74
+ .btn.pressed {
75
+ box-shadow: var(--neu-in);
76
+ }
77
+ .btn.ghost:active,
78
+ .btn.ghost.pressed {
79
+ background: var(--bg);
80
+ color: var(--fg);
81
+ }
82
+ .btn.danger:active,
83
+ .btn.danger.pressed {
84
+ color: var(--danger);
85
+ }
73
86
 
74
87
  .btn.icon { width: var(--ctrl-h); padding: 0; }
75
88
  .btn.sm { height: 30px; padding: 0 12px; font-size: 12px; border-radius: var(--r-sm); }
@@ -82,10 +95,17 @@
82
95
  .btn[disabled], .btn.disabled, .btn:disabled {
83
96
  color: var(--fg-subtle);
84
97
  cursor: not-allowed;
98
+ border-color: transparent;
99
+ box-shadow: var(--neu-flat);
100
+ transform: none;
101
+ }
102
+ .btn[disabled]:hover, .btn:disabled:hover, .btn.disabled:hover {
103
+ color: var(--fg-subtle);
104
+ background: var(--bg);
105
+ border-color: transparent;
85
106
  box-shadow: var(--neu-flat);
86
107
  transform: none;
87
108
  }
88
- .btn[disabled]:hover, .btn:disabled:hover, .btn.disabled:hover { transform: none; color: var(--fg-subtle); background: var(--bg); }
89
109
 
90
110
  .btn.loading { cursor: wait; }
91
111
  .btn .spinner {
package/dist/Button.cjs CHANGED
@@ -1,15 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunk62GU4OHH_cjs = require('./chunk-62GU4OHH.cjs');
4
- require('./chunk-2MNAZRWE.cjs');
3
+ var chunkTP567B3L_cjs = require('./chunk-TP567B3L.cjs');
4
+ require('./chunk-V272XR3F.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Button", {
9
9
  enumerable: true,
10
- get: function () { return chunk62GU4OHH_cjs.Button; }
11
- });
12
- Object.defineProperty(exports, "IconButton", {
13
- enumerable: true,
14
- get: function () { return chunk62GU4OHH_cjs.IconButton; }
10
+ get: function () { return chunkTP567B3L_cjs.Button; }
15
11
  });
package/dist/Button.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 ButtonVariant = "default" | "primary" | "ghost" | "danger";
5
6
  type ButtonSize = "sm" | "md" | "lg";
@@ -8,10 +9,14 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
8
9
  variant?: ButtonVariant;
9
10
  /** Control height preset. */
10
11
  size?: ButtonSize;
11
- /** Leading icon. */
12
- icon?: IconName;
13
- /** Trailing icon. */
14
- trailingIcon?: IconName;
12
+ /** Leading icon. Accepts a built-in icon name or custom React node. */
13
+ icon?: IconSlot;
14
+ /** Trailing icon. Accepts a built-in icon name or custom React node. */
15
+ trailingIcon?: IconSlot;
16
+ /** Render as a square icon-only button. Automatically enabled when `icon` is set and no children are provided. */
17
+ iconOnly?: boolean;
18
+ /** Native tooltip/title for compact icon-only buttons. */
19
+ tip?: string;
15
20
  /** Show spinner + disable interaction. */
16
21
  loading?: boolean;
17
22
  /** Make the button fill the container's width. */
@@ -30,14 +35,5 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
30
35
  * <Button variant="ghost" loading>保存</Button>
31
36
  */
32
37
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
33
- interface IconButtonProps extends Omit<ButtonProps, "icon" | "children"> {
34
- icon: IconName;
35
- tip?: string;
36
- "aria-label"?: string;
37
- }
38
- /**
39
- * `IconButton` — square button containing just an icon. Pair with a tooltip.
40
- */
41
- declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
42
38
 
43
- export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, IconButton, type IconButtonProps };
39
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant };
package/dist/Button.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 ButtonVariant = "default" | "primary" | "ghost" | "danger";
5
6
  type ButtonSize = "sm" | "md" | "lg";
@@ -8,10 +9,14 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
8
9
  variant?: ButtonVariant;
9
10
  /** Control height preset. */
10
11
  size?: ButtonSize;
11
- /** Leading icon. */
12
- icon?: IconName;
13
- /** Trailing icon. */
14
- trailingIcon?: IconName;
12
+ /** Leading icon. Accepts a built-in icon name or custom React node. */
13
+ icon?: IconSlot;
14
+ /** Trailing icon. Accepts a built-in icon name or custom React node. */
15
+ trailingIcon?: IconSlot;
16
+ /** Render as a square icon-only button. Automatically enabled when `icon` is set and no children are provided. */
17
+ iconOnly?: boolean;
18
+ /** Native tooltip/title for compact icon-only buttons. */
19
+ tip?: string;
15
20
  /** Show spinner + disable interaction. */
16
21
  loading?: boolean;
17
22
  /** Make the button fill the container's width. */
@@ -30,14 +35,5 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
30
35
  * <Button variant="ghost" loading>保存</Button>
31
36
  */
32
37
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
33
- interface IconButtonProps extends Omit<ButtonProps, "icon" | "children"> {
34
- icon: IconName;
35
- tip?: string;
36
- "aria-label"?: string;
37
- }
38
- /**
39
- * `IconButton` — square button containing just an icon. Pair with a tooltip.
40
- */
41
- declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
42
38
 
43
- export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, IconButton, type IconButtonProps };
39
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant };
package/dist/Button.js CHANGED
@@ -1,2 +1,2 @@
1
- export { Button, IconButton } from './chunk-YRZGXXWA.js';
2
- import './chunk-NJ6B22YJ.js';
1
+ export { Button } from './chunk-SQGPSMSK.js';
2
+ import './chunk-47VG2P34.js';
package/dist/Calendar.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkOFGDUCT7_cjs = require('./chunk-OFGDUCT7.cjs');
4
- require('./chunk-2MNAZRWE.cjs');
3
+ var chunk7AG524YZ_cjs = require('./chunk-7AG524YZ.cjs');
4
+ require('./chunk-V272XR3F.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Calendar", {
9
9
  enumerable: true,
10
- get: function () { return chunkOFGDUCT7_cjs.Calendar; }
10
+ get: function () { return chunk7AG524YZ_cjs.Calendar; }
11
11
  });
package/dist/Calendar.js CHANGED
@@ -1,2 +1,2 @@
1
- export { Calendar } from './chunk-6Y5WRCPW.js';
2
- import './chunk-NJ6B22YJ.js';
1
+ export { Calendar } from './chunk-FWPBORRB.js';
2
+ import './chunk-47VG2P34.js';
@@ -1,4 +1,4 @@
1
- /* ============ Card & Panel ============ */
1
+ /* ============ Card ============ */
2
2
  .card {
3
3
  background: var(--bg);
4
4
  border-radius: var(--r-lg);
@@ -22,18 +22,12 @@
22
22
  .card.hoverable.flat:hover { box-shadow: var(--neu-out-sm); }
23
23
  .card.hoverable.sunken:hover { box-shadow: var(--neu-out); }
24
24
 
25
- .panel {
26
- background: var(--bg);
27
- border-radius: var(--r-lg);
28
- box-shadow: var(--neu-out);
29
- padding: var(--gap-5);
30
- }
31
- .panel-head {
25
+ .card-head {
32
26
  display: flex; align-items: flex-start; justify-content: space-between;
33
27
  gap: var(--gap-3); margin-bottom: var(--gap-4);
34
28
  }
35
- .panel-titles { display: flex; flex-direction: column; gap: 2px; }
36
- .panel-title { font-size: 15px; font-weight: 600; }
37
- .panel-desc { font-size: 12px; color: var(--fg-muted); }
38
- .panel-actions { display: flex; gap: 6px; }
39
- .panel-body { font-size: 13px; }
29
+ .card-titles { display: flex; flex-direction: column; gap: 2px; }
30
+ .card-title { font-size: 15px; font-weight: 600; }
31
+ .card-desc { font-size: 12px; color: var(--fg-muted); }
32
+ .card-actions { display: flex; gap: 6px; }
33
+ .card-body { font-size: 13px; }
package/dist/Card.cjs CHANGED
@@ -1,14 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkW64ARHLJ_cjs = require('./chunk-W64ARHLJ.cjs');
3
+ var chunkGMN74OEY_cjs = require('./chunk-GMN74OEY.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "Card", {
8
8
  enumerable: true,
9
- get: function () { return chunkW64ARHLJ_cjs.Card; }
10
- });
11
- Object.defineProperty(exports, "Panel", {
12
- enumerable: true,
13
- get: function () { return chunkW64ARHLJ_cjs.Panel; }
9
+ get: function () { return chunkGMN74OEY_cjs.Card; }
14
10
  });
package/dist/Card.d.cts CHANGED
@@ -1,27 +1,23 @@
1
1
  import * as React from 'react';
2
2
 
3
- interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
4
4
  /** Visual variant. `raised` protrudes; `sunken` recesses; `flat` is subtle. */
5
5
  variant?: "raised" | "sunken" | "flat";
6
6
  /** Inner padding. */
7
7
  padding?: "none" | "sm" | "md" | "lg";
8
8
  /** When true, the card raises and lifts on hover. */
9
9
  hoverable?: boolean;
10
- children?: React.ReactNode;
11
- }
12
- /**
13
- * `Card` — neumorphic surface container. Use to group related content.
14
- */
15
- declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
16
- interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
10
+ /** Optional card heading. */
17
11
  title?: React.ReactNode;
12
+ /** Secondary text shown under `title`. */
18
13
  description?: React.ReactNode;
14
+ /** Action slot aligned to the card heading. */
19
15
  actions?: React.ReactNode;
20
16
  children?: React.ReactNode;
21
17
  }
22
18
  /**
23
- * `Panel` — a titled `Card` with optional actions row.
19
+ * `Card` — neumorphic surface container. Use to group related content.
24
20
  */
25
- declare const Panel: React.FC<PanelProps>;
21
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
26
22
 
27
- export { Card, type CardProps, Panel, type PanelProps };
23
+ export { Card, type CardProps };
package/dist/Card.d.ts CHANGED
@@ -1,27 +1,23 @@
1
1
  import * as React from 'react';
2
2
 
3
- interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
4
4
  /** Visual variant. `raised` protrudes; `sunken` recesses; `flat` is subtle. */
5
5
  variant?: "raised" | "sunken" | "flat";
6
6
  /** Inner padding. */
7
7
  padding?: "none" | "sm" | "md" | "lg";
8
8
  /** When true, the card raises and lifts on hover. */
9
9
  hoverable?: boolean;
10
- children?: React.ReactNode;
11
- }
12
- /**
13
- * `Card` — neumorphic surface container. Use to group related content.
14
- */
15
- declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
16
- interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
10
+ /** Optional card heading. */
17
11
  title?: React.ReactNode;
12
+ /** Secondary text shown under `title`. */
18
13
  description?: React.ReactNode;
14
+ /** Action slot aligned to the card heading. */
19
15
  actions?: React.ReactNode;
20
16
  children?: React.ReactNode;
21
17
  }
22
18
  /**
23
- * `Panel` — a titled `Card` with optional actions row.
19
+ * `Card` — neumorphic surface container. Use to group related content.
24
20
  */
25
- declare const Panel: React.FC<PanelProps>;
21
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
26
22
 
27
- export { Card, type CardProps, Panel, type PanelProps };
23
+ export { Card, type CardProps };
package/dist/Card.js CHANGED
@@ -1 +1 @@
1
- export { Card, Panel } from './chunk-3XTHKAEY.js';
1
+ export { Card } from './chunk-AXZ7ELMA.js';