@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,36 @@
1
+ /* ============ Avatar ============ */
2
+ .avatar {
3
+ --size: 40px;
4
+ width: var(--size); height: var(--size);
5
+ border-radius: 999px;
6
+ background: var(--bg);
7
+ box-shadow: var(--neu-out-sm);
8
+ display: grid; place-items: center;
9
+ overflow: hidden;
10
+ color: var(--accent-ink);
11
+ font-weight: 600;
12
+ font-size: calc(var(--size) / 2.6);
13
+ position: relative;
14
+ flex-shrink: 0;
15
+ }
16
+ .avatar.sm { --size: 28px; }
17
+ .avatar.lg { --size: 56px; }
18
+ .avatar.xl { --size: 80px; }
19
+ .avatar img { width: 100%; height: 100%; object-fit: cover; }
20
+ .avatar-status {
21
+ position: absolute;
22
+ bottom: 0; right: 0;
23
+ width: 25%; height: 25%;
24
+ min-width: 8px; min-height: 8px;
25
+ border-radius: 999px;
26
+ background: var(--success);
27
+ box-shadow: 0 0 0 2px var(--bg);
28
+ }
29
+ .avatar-status.online { background: var(--success); }
30
+ .avatar-status.busy { background: var(--danger); }
31
+ .avatar-status.away { background: var(--warning); }
32
+ .avatar-status.offline { background: var(--fg-subtle); }
33
+
34
+ .avatar-group { display: inline-flex; }
35
+ .avatar-group .avatar { border: 3px solid var(--bg); box-sizing: content-box; }
36
+ .avatar-group .avatar + .avatar { margin-left: -12px; }
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkJWFVSBVX_cjs = require('./chunk-JWFVSBVX.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "Avatar", {
8
+ enumerable: true,
9
+ get: function () { return chunkJWFVSBVX_cjs.Avatar; }
10
+ });
11
+ //# sourceMappingURL=Avatar.cjs.map
12
+ //# sourceMappingURL=Avatar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Avatar.cjs"}
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
4
+ src?: string;
5
+ alt?: string;
6
+ /** Initials if no image. Auto-derived from `alt` if omitted. */
7
+ initials?: string;
8
+ size?: number | "sm" | "md" | "lg" | "xl";
9
+ /** Status dot. */
10
+ status?: "online" | "busy" | "away" | "offline";
11
+ }
12
+ /** `Avatar` — user image or initials chip. */
13
+ declare const Avatar: React.FC<AvatarProps>;
14
+
15
+ export { Avatar, type AvatarProps };
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+
3
+ interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
4
+ src?: string;
5
+ alt?: string;
6
+ /** Initials if no image. Auto-derived from `alt` if omitted. */
7
+ initials?: string;
8
+ size?: number | "sm" | "md" | "lg" | "xl";
9
+ /** Status dot. */
10
+ status?: "online" | "busy" | "away" | "offline";
11
+ }
12
+ /** `Avatar` — user image or initials chip. */
13
+ declare const Avatar: React.FC<AvatarProps>;
14
+
15
+ export { Avatar, type AvatarProps };
package/dist/Avatar.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Avatar } from './chunk-VXITDXLW.js';
2
+ //# sourceMappingURL=Avatar.js.map
3
+ //# sourceMappingURL=Avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Avatar.js"}
@@ -0,0 +1,96 @@
1
+ /* ============ Button ============ */
2
+ .btn {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: 8px;
7
+ height: var(--ctrl-h);
8
+ padding: 0 var(--ctrl-pad-x);
9
+ border: none;
10
+ border-radius: var(--r-md);
11
+ font-size: 13px;
12
+ font-weight: 500;
13
+ font-family: inherit;
14
+ color: var(--fg);
15
+ background: var(--bg);
16
+ box-shadow: var(--neu-out-sm);
17
+ cursor: pointer;
18
+ user-select: none;
19
+ white-space: nowrap;
20
+ flex-shrink: 0;
21
+ transition: all var(--dur-fast) var(--ease);
22
+ }
23
+ .btn > svg { flex-shrink: 0; }
24
+ .btn.icon {
25
+ flex-shrink: 0;
26
+ overflow: visible;
27
+ }
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
+
34
+ .btn.primary {
35
+ 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);
44
+ font-weight: 600;
45
+ }
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
+
64
+ .btn.ghost {
65
+ background: transparent;
66
+ box-shadow: none;
67
+ color: var(--fg-muted);
68
+ }
69
+ .btn.ghost:hover { background: var(--bg); box-shadow: var(--neu-flat); color: var(--fg); }
70
+
71
+ .btn.danger { color: var(--danger); }
72
+ .btn.danger:hover { color: var(--danger); }
73
+
74
+ .btn.icon { width: var(--ctrl-h); padding: 0; }
75
+ .btn.sm { height: 30px; padding: 0 12px; font-size: 12px; border-radius: var(--r-sm); }
76
+ .btn.sm.icon { width: 30px; padding: 0; }
77
+ .btn.lg { height: 52px; padding: 0 24px; font-size: 15px; border-radius: var(--r-lg); }
78
+ .btn.lg.icon { width: 52px; padding: 0; }
79
+
80
+ .btn[disabled], .btn.disabled, .btn:disabled {
81
+ color: var(--fg-subtle);
82
+ cursor: not-allowed;
83
+ box-shadow: var(--neu-flat);
84
+ transform: none;
85
+ }
86
+ .btn[disabled]:hover, .btn:disabled:hover, .btn.disabled:hover { transform: none; color: var(--fg-subtle); background: var(--bg); }
87
+
88
+ .btn.loading { cursor: wait; }
89
+ .btn .spinner {
90
+ width: 14px; height: 14px;
91
+ border-radius: 999px;
92
+ border: 2px solid currentColor;
93
+ border-right-color: transparent;
94
+ animation: spin 0.8s linear infinite;
95
+ display: inline-block;
96
+ }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var chunkAAMYURWQ_cjs = require('./chunk-AAMYURWQ.cjs');
4
+ require('./chunk-YVO7XO4W.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "Button", {
9
+ enumerable: true,
10
+ get: function () { return chunkAAMYURWQ_cjs.Button; }
11
+ });
12
+ Object.defineProperty(exports, "IconButton", {
13
+ enumerable: true,
14
+ get: function () { return chunkAAMYURWQ_cjs.IconButton; }
15
+ });
16
+ //# sourceMappingURL=Button.cjs.map
17
+ //# sourceMappingURL=Button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Button.cjs"}
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ import { IconName } from './Icon.cjs';
3
+
4
+ type ButtonVariant = "default" | "primary" | "ghost" | "danger";
5
+ type ButtonSize = "sm" | "md" | "lg";
6
+ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type"> {
7
+ /** Visual variant. `primary` uses the accent color; `ghost` is borderless; `danger` is red. */
8
+ variant?: ButtonVariant;
9
+ /** Control height preset. */
10
+ size?: ButtonSize;
11
+ /** Leading icon. */
12
+ icon?: IconName;
13
+ /** Trailing icon. */
14
+ trailingIcon?: IconName;
15
+ /** Show spinner + disable interaction. */
16
+ loading?: boolean;
17
+ /** Button type attribute. Defaults to "button" to avoid accidental form submits. */
18
+ type?: "button" | "submit" | "reset";
19
+ /** Extra class names. */
20
+ className?: string;
21
+ children?: React.ReactNode;
22
+ }
23
+ /**
24
+ * `Button` — the primary action surface.
25
+ *
26
+ * @example
27
+ * <Button variant="primary" icon="plus">新建</Button>
28
+ * <Button variant="ghost" loading>保存</Button>
29
+ */
30
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
31
+ interface IconButtonProps extends Omit<ButtonProps, "icon" | "children"> {
32
+ icon: IconName;
33
+ tip?: string;
34
+ "aria-label"?: string;
35
+ }
36
+ /**
37
+ * `IconButton` — square button containing just an icon. Pair with a tooltip.
38
+ */
39
+ declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
40
+
41
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, IconButton, type IconButtonProps };
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ import { IconName } from './Icon.js';
3
+
4
+ type ButtonVariant = "default" | "primary" | "ghost" | "danger";
5
+ type ButtonSize = "sm" | "md" | "lg";
6
+ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type"> {
7
+ /** Visual variant. `primary` uses the accent color; `ghost` is borderless; `danger` is red. */
8
+ variant?: ButtonVariant;
9
+ /** Control height preset. */
10
+ size?: ButtonSize;
11
+ /** Leading icon. */
12
+ icon?: IconName;
13
+ /** Trailing icon. */
14
+ trailingIcon?: IconName;
15
+ /** Show spinner + disable interaction. */
16
+ loading?: boolean;
17
+ /** Button type attribute. Defaults to "button" to avoid accidental form submits. */
18
+ type?: "button" | "submit" | "reset";
19
+ /** Extra class names. */
20
+ className?: string;
21
+ children?: React.ReactNode;
22
+ }
23
+ /**
24
+ * `Button` — the primary action surface.
25
+ *
26
+ * @example
27
+ * <Button variant="primary" icon="plus">新建</Button>
28
+ * <Button variant="ghost" loading>保存</Button>
29
+ */
30
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
31
+ interface IconButtonProps extends Omit<ButtonProps, "icon" | "children"> {
32
+ icon: IconName;
33
+ tip?: string;
34
+ "aria-label"?: string;
35
+ }
36
+ /**
37
+ * `IconButton` — square button containing just an icon. Pair with a tooltip.
38
+ */
39
+ declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
40
+
41
+ export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, IconButton, type IconButtonProps };
package/dist/Button.js ADDED
@@ -0,0 +1,4 @@
1
+ export { Button, IconButton } from './chunk-5EYI27B6.js';
2
+ import './chunk-GEYMWUW6.js';
3
+ //# sourceMappingURL=Button.js.map
4
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Button.js"}
@@ -0,0 +1,65 @@
1
+ /* ============ Calendar ============ */
2
+ .calendar {
3
+ background: var(--bg);
4
+ border-radius: var(--r-lg);
5
+ padding: var(--gap-4);
6
+ box-shadow: var(--neu-out);
7
+ width: 320px;
8
+ }
9
+ .calendar-head {
10
+ display: flex; align-items: center; justify-content: space-between;
11
+ padding: 4px 4px 14px;
12
+ }
13
+ .calendar-title {
14
+ font-size: 14px; font-weight: 600;
15
+ display: inline-flex; align-items: center; gap: 8px;
16
+ cursor: pointer; padding: 6px 10px; border-radius: var(--r-sm);
17
+ border: none; background: transparent; color: var(--fg);
18
+ font-family: inherit;
19
+ transition: all var(--dur-fast) var(--ease);
20
+ }
21
+ .calendar-title:hover { background: var(--bg); box-shadow: var(--neu-flat); }
22
+ .calendar-grid {
23
+ display: grid;
24
+ grid-template-columns: repeat(7, 1fr);
25
+ gap: 2px;
26
+ }
27
+ .calendar-dow {
28
+ text-align: center;
29
+ font-size: 10px;
30
+ font-weight: 600;
31
+ color: var(--fg-subtle);
32
+ text-transform: uppercase;
33
+ letter-spacing: 0.06em;
34
+ padding: 8px 0;
35
+ }
36
+ .calendar-cell {
37
+ position: relative;
38
+ aspect-ratio: 1;
39
+ display: grid; place-items: center;
40
+ font-size: 12px;
41
+ color: var(--fg);
42
+ border-radius: var(--r-sm);
43
+ cursor: pointer;
44
+ border: none;
45
+ background: transparent;
46
+ font-family: inherit;
47
+ transition: all var(--dur-fast) var(--ease);
48
+ }
49
+ .calendar-cell.out { color: var(--fg-subtle); opacity: 0.5; }
50
+ .calendar-cell:hover { background: var(--bg); box-shadow: var(--neu-flat); }
51
+ .calendar-cell.today { font-weight: 700; color: var(--accent-ink); }
52
+ .calendar-cell.today::after {
53
+ content: ""; position: absolute; bottom: 4px; left: 50%;
54
+ width: 4px; height: 4px; border-radius: 999px;
55
+ background: var(--accent);
56
+ transform: translateX(-50%);
57
+ }
58
+ .calendar-cell.selected {
59
+ background: var(--bg);
60
+ box-shadow: var(--neu-in-sm);
61
+ color: var(--accent-ink);
62
+ font-weight: 600;
63
+ }
64
+ .calendar-cell.disabled { color: var(--fg-subtle); opacity: 0.4; cursor: not-allowed; }
65
+ .calendar-cell.disabled:hover { background: transparent; box-shadow: none; }
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var chunk7CKHWCEA_cjs = require('./chunk-7CKHWCEA.cjs');
4
+ require('./chunk-YVO7XO4W.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "Calendar", {
9
+ enumerable: true,
10
+ get: function () { return chunk7CKHWCEA_cjs.Calendar; }
11
+ });
12
+ //# sourceMappingURL=Calendar.cjs.map
13
+ //# sourceMappingURL=Calendar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Calendar.cjs"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface CalendarProps {
4
+ value?: Date;
5
+ defaultValue?: Date;
6
+ onChange?: (date: Date) => void;
7
+ /** Min selectable date. */
8
+ min?: Date;
9
+ /** Max selectable date. */
10
+ max?: Date;
11
+ className?: string;
12
+ }
13
+ /** `Calendar` — month-view date picker. */
14
+ declare const Calendar: React.FC<CalendarProps>;
15
+
16
+ export { Calendar, type CalendarProps };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface CalendarProps {
4
+ value?: Date;
5
+ defaultValue?: Date;
6
+ onChange?: (date: Date) => void;
7
+ /** Min selectable date. */
8
+ min?: Date;
9
+ /** Max selectable date. */
10
+ max?: Date;
11
+ className?: string;
12
+ }
13
+ /** `Calendar` — month-view date picker. */
14
+ declare const Calendar: React.FC<CalendarProps>;
15
+
16
+ export { Calendar, type CalendarProps };
@@ -0,0 +1,4 @@
1
+ export { Calendar } from './chunk-FMG3ZPGK.js';
2
+ import './chunk-GEYMWUW6.js';
3
+ //# sourceMappingURL=Calendar.js.map
4
+ //# sourceMappingURL=Calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Calendar.js"}
@@ -0,0 +1,28 @@
1
+ /* ============ Card & Panel ============ */
2
+ .card {
3
+ background: var(--bg);
4
+ border-radius: var(--r-lg);
5
+ box-shadow: var(--neu-out);
6
+ padding: var(--gap-5);
7
+ }
8
+ .card.flat { box-shadow: var(--neu-flat); }
9
+ .card.sunken { box-shadow: var(--neu-in); }
10
+ .card.pad-none { padding: 0; }
11
+ .card.pad-sm { padding: var(--gap-3); }
12
+ .card.pad-lg { padding: var(--gap-6); }
13
+
14
+ .panel {
15
+ background: var(--bg);
16
+ border-radius: var(--r-lg);
17
+ box-shadow: var(--neu-out);
18
+ padding: var(--gap-5);
19
+ }
20
+ .panel-head {
21
+ display: flex; align-items: flex-start; justify-content: space-between;
22
+ gap: var(--gap-3); margin-bottom: var(--gap-4);
23
+ }
24
+ .panel-titles { display: flex; flex-direction: column; gap: 2px; }
25
+ .panel-title { font-size: 15px; font-weight: 600; }
26
+ .panel-desc { font-size: 12px; color: var(--fg-muted); }
27
+ .panel-actions { display: flex; gap: 6px; }
28
+ .panel-body { font-size: 13px; }
package/dist/Card.cjs ADDED
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var chunkI2ERCHFV_cjs = require('./chunk-I2ERCHFV.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "Card", {
8
+ enumerable: true,
9
+ get: function () { return chunkI2ERCHFV_cjs.Card; }
10
+ });
11
+ Object.defineProperty(exports, "Panel", {
12
+ enumerable: true,
13
+ get: function () { return chunkI2ERCHFV_cjs.Panel; }
14
+ });
15
+ //# sourceMappingURL=Card.cjs.map
16
+ //# sourceMappingURL=Card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Card.cjs"}
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Visual variant. `raised` protrudes; `sunken` recesses; `flat` is subtle. */
5
+ variant?: "raised" | "sunken" | "flat";
6
+ /** Inner padding. */
7
+ padding?: "none" | "sm" | "md" | "lg";
8
+ children?: React.ReactNode;
9
+ }
10
+ /**
11
+ * `Card` — neumorphic surface container. Use to group related content.
12
+ */
13
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
14
+ interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
15
+ title?: React.ReactNode;
16
+ description?: React.ReactNode;
17
+ actions?: React.ReactNode;
18
+ children?: React.ReactNode;
19
+ }
20
+ /**
21
+ * `Panel` — a titled `Card` with optional actions row.
22
+ */
23
+ declare const Panel: React.FC<PanelProps>;
24
+
25
+ export { Card, type CardProps, Panel, type PanelProps };
package/dist/Card.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** Visual variant. `raised` protrudes; `sunken` recesses; `flat` is subtle. */
5
+ variant?: "raised" | "sunken" | "flat";
6
+ /** Inner padding. */
7
+ padding?: "none" | "sm" | "md" | "lg";
8
+ children?: React.ReactNode;
9
+ }
10
+ /**
11
+ * `Card` — neumorphic surface container. Use to group related content.
12
+ */
13
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
14
+ interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
15
+ title?: React.ReactNode;
16
+ description?: React.ReactNode;
17
+ actions?: React.ReactNode;
18
+ children?: React.ReactNode;
19
+ }
20
+ /**
21
+ * `Panel` — a titled `Card` with optional actions row.
22
+ */
23
+ declare const Panel: React.FC<PanelProps>;
24
+
25
+ export { Card, type CardProps, Panel, type PanelProps };
package/dist/Card.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Card, Panel } from './chunk-OXYFB2ZI.js';
2
+ //# sourceMappingURL=Card.js.map
3
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Card.js"}
@@ -0,0 +1,76 @@
1
+ /* ============ Cascader ============ */
2
+ .cascader {
3
+ position: relative;
4
+ display: inline-block;
5
+ min-width: 240px;
6
+ width: 100%;
7
+ }
8
+ .cascader-trigger {
9
+ width: 100%;
10
+ height: var(--ctrl-h);
11
+ padding: 0 36px 0 var(--ctrl-pad-x);
12
+ border-radius: var(--r-md);
13
+ background: var(--bg);
14
+ box-shadow: var(--neu-out-sm);
15
+ display: inline-flex;
16
+ align-items: center;
17
+ font-size: 13px;
18
+ font-family: inherit;
19
+ cursor: pointer;
20
+ position: relative;
21
+ border: none;
22
+ color: var(--fg);
23
+ text-align: left;
24
+ }
25
+ .cascader-trigger.placeholder { color: var(--fg-subtle); }
26
+ .cascader.open .cascader-trigger { box-shadow: var(--neu-in-sm); color: var(--accent-ink); }
27
+ .cascader-panel {
28
+ position: absolute;
29
+ top: calc(100% + 8px);
30
+ left: 0;
31
+ z-index: 50;
32
+ display: flex;
33
+ background: var(--bg);
34
+ border-radius: var(--r-md);
35
+ box-shadow: var(--neu-out-lg);
36
+ padding: 6px;
37
+ animation: menuIn var(--dur) var(--ease);
38
+ gap: 4px;
39
+ }
40
+ .cascader-col {
41
+ min-width: 160px;
42
+ max-height: 280px;
43
+ overflow-y: auto;
44
+ padding: 4px;
45
+ border-radius: var(--r-sm);
46
+ }
47
+ .cascader-col + .cascader-col {
48
+ border-left: 1px solid var(--divider);
49
+ margin-left: 2px;
50
+ padding-left: 6px;
51
+ }
52
+ .cascader-item {
53
+ padding: 8px 10px;
54
+ border-radius: var(--r-sm);
55
+ font-size: 13px;
56
+ color: var(--fg);
57
+ cursor: pointer;
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 8px;
61
+ transition: all var(--dur-fast) var(--ease);
62
+ border: none;
63
+ background: transparent;
64
+ font-family: inherit;
65
+ width: 100%;
66
+ text-align: left;
67
+ }
68
+ .cascader-item:hover { background: var(--bg); box-shadow: var(--neu-flat); color: var(--accent-ink); }
69
+ .cascader-item.active {
70
+ background: var(--bg);
71
+ box-shadow: var(--neu-in-sm);
72
+ color: var(--accent-ink);
73
+ font-weight: 500;
74
+ }
75
+ .cascader-item .chev { margin-left: auto; color: var(--fg-subtle); display: inline-flex; }
76
+ .cascader-item.active .chev { color: var(--accent); }
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var chunkZXM247EM_cjs = require('./chunk-ZXM247EM.cjs');
4
+ require('./chunk-YVO7XO4W.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "Cascader", {
9
+ enumerable: true,
10
+ get: function () { return chunkZXM247EM_cjs.Cascader; }
11
+ });
12
+ //# sourceMappingURL=Cascader.cjs.map
13
+ //# sourceMappingURL=Cascader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"Cascader.cjs"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { IconName } from './Icon.cjs';
3
+
4
+ interface CascaderOption {
5
+ value: string;
6
+ label: React.ReactNode;
7
+ icon?: IconName;
8
+ children?: CascaderOption[];
9
+ disabled?: boolean;
10
+ }
11
+ interface CascaderProps {
12
+ options: CascaderOption[];
13
+ value?: string[];
14
+ defaultValue?: string[];
15
+ onChange?: (path: string[]) => void;
16
+ placeholder?: string;
17
+ disabled?: boolean;
18
+ className?: string;
19
+ }
20
+ /** `Cascader` — multi-column hierarchical selector. */
21
+ declare const Cascader: React.FC<CascaderProps>;
22
+
23
+ export { Cascader, type CascaderOption, type CascaderProps };