@fangxinyan/lumina 0.6.1 → 0.6.2

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 (246) hide show
  1. package/dist/Alert.cjs +3 -3
  2. package/dist/Alert.js +2 -2
  3. package/dist/AutoComplete.cjs +5 -4
  4. package/dist/AutoComplete.d.cts +1 -1
  5. package/dist/AutoComplete.d.ts +1 -1
  6. package/dist/AutoComplete.js +4 -3
  7. package/dist/Badge-DPGLV3D3.css +22 -0
  8. package/dist/Badge.cjs +10 -0
  9. package/dist/Badge.d.cts +18 -0
  10. package/dist/Badge.d.ts +18 -0
  11. package/dist/Badge.js +1 -0
  12. package/dist/Button.cjs +3 -7
  13. package/dist/Button.d.cts +5 -10
  14. package/dist/Button.d.ts +5 -10
  15. package/dist/Button.js +2 -2
  16. package/dist/Calendar.cjs +3 -3
  17. package/dist/Calendar.js +2 -2
  18. package/dist/{Card-RG7ECXL2.css → Card-6RMVIHWX.css} +7 -13
  19. package/dist/Card.cjs +2 -6
  20. package/dist/Card.d.cts +7 -11
  21. package/dist/Card.d.ts +7 -11
  22. package/dist/Card.js +1 -1
  23. package/dist/{Cascader-VSYEKQCG.css → Cascader-C2DFSMKJ.css} +64 -0
  24. package/dist/Cascader.cjs +5 -3
  25. package/dist/Cascader.d.cts +18 -2
  26. package/dist/Cascader.d.ts +18 -2
  27. package/dist/Cascader.js +4 -2
  28. package/dist/{Checkbox-SKJATVSN.css → Checkbox-U5EUDSYS.css} +5 -35
  29. package/dist/Checkbox.cjs +3 -7
  30. package/dist/Checkbox.d.cts +1 -18
  31. package/dist/Checkbox.d.ts +1 -18
  32. package/dist/Checkbox.js +2 -2
  33. package/dist/Collapse-66U5YJFY.css +53 -0
  34. package/dist/Collapse.cjs +11 -0
  35. package/dist/Collapse.d.cts +32 -0
  36. package/dist/Collapse.d.ts +32 -0
  37. package/dist/Collapse.js +2 -0
  38. package/dist/CommandPalette.cjs +5 -4
  39. package/dist/CommandPalette.js +4 -3
  40. package/dist/Drawer.cjs +3 -3
  41. package/dist/Drawer.js +2 -2
  42. package/dist/Empty-DC2LPORC.css +28 -0
  43. package/dist/Empty.cjs +2 -10
  44. package/dist/Empty.d.cts +1 -62
  45. package/dist/Empty.d.ts +1 -62
  46. package/dist/Empty.js +1 -1
  47. package/dist/Form.d.cts +1 -1
  48. package/dist/Form.d.ts +1 -1
  49. package/dist/Icon.cjs +179 -3
  50. package/dist/Icon.d.cts +96 -3
  51. package/dist/Icon.d.ts +96 -3
  52. package/dist/Icon.js +1 -1
  53. package/dist/Image.cjs +4 -4
  54. package/dist/Image.js +2 -2
  55. package/dist/{Input-33CAH4O6.css → Input-3G4ONWNU.css} +15 -42
  56. package/dist/Input.cjs +6 -5
  57. package/dist/Input.d.cts +19 -23
  58. package/dist/Input.d.ts +19 -23
  59. package/dist/Input.js +3 -2
  60. package/dist/InputNumber.cjs +5 -4
  61. package/dist/InputNumber.d.cts +1 -1
  62. package/dist/InputNumber.d.ts +1 -1
  63. package/dist/InputNumber.js +4 -3
  64. package/dist/Message-2MZ3LFPU.css +45 -0
  65. package/dist/Message.cjs +23 -0
  66. package/dist/Message.d.cts +54 -0
  67. package/dist/Message.d.ts +54 -0
  68. package/dist/Message.js +2 -0
  69. package/dist/{Modal-XSDMU4XJ.css → Modal-2QNDW4SO.css} +27 -0
  70. package/dist/Modal.cjs +4 -4
  71. package/dist/Modal.d.cts +28 -4
  72. package/dist/Modal.d.ts +28 -4
  73. package/dist/Modal.js +3 -3
  74. package/dist/Pagination.cjs +7 -5
  75. package/dist/Pagination.js +6 -4
  76. package/dist/Popover.cjs +2 -2
  77. package/dist/Popover.d.cts +11 -3
  78. package/dist/Popover.d.ts +11 -3
  79. package/dist/Popover.js +1 -1
  80. package/dist/Radio-GVFDPAZM.css +97 -0
  81. package/dist/Radio.cjs +14 -0
  82. package/dist/Radio.d.cts +36 -0
  83. package/dist/Radio.d.ts +36 -0
  84. package/dist/Radio.js +1 -0
  85. package/dist/{Select-J3CCVFJ7.css → Select-JVBQAZBG.css} +7 -23
  86. package/dist/Select.cjs +6 -4
  87. package/dist/Select.d.cts +25 -4
  88. package/dist/Select.d.ts +25 -4
  89. package/dist/Select.js +5 -3
  90. package/dist/Skeleton-CVWH2VWN.css +40 -0
  91. package/dist/Skeleton.cjs +10 -0
  92. package/dist/Skeleton.d.cts +30 -0
  93. package/dist/Skeleton.d.ts +30 -0
  94. package/dist/Skeleton.js +1 -0
  95. package/dist/Spin-3GJNMSIH.css +94 -0
  96. package/dist/Spin.cjs +10 -0
  97. package/dist/Spin.d.cts +20 -0
  98. package/dist/Spin.d.ts +20 -0
  99. package/dist/Spin.js +1 -0
  100. package/dist/{Table-2LPTOUIR.css → Table-ATJJQLKU.css} +0 -53
  101. package/dist/Table.cjs +9 -11
  102. package/dist/Table.d.cts +2 -21
  103. package/dist/Table.d.ts +2 -21
  104. package/dist/Table.js +8 -6
  105. package/dist/TablePro-3XVHYLSL.css +45 -0
  106. package/dist/TablePro.cjs +19 -0
  107. package/dist/TablePro.d.cts +21 -0
  108. package/dist/TablePro.d.ts +21 -0
  109. package/dist/TablePro.js +10 -0
  110. package/dist/{Tabs-RHK6XAFF.css → Tabs-BLSNI2T5.css} +0 -34
  111. package/dist/Tabs.cjs +2 -6
  112. package/dist/Tabs.d.cts +1 -16
  113. package/dist/Tabs.d.ts +1 -16
  114. package/dist/Tabs.js +1 -1
  115. package/dist/Tag-LB3OOJAO.css +29 -0
  116. package/dist/Tag.cjs +3 -7
  117. package/dist/Tag.d.cts +1 -11
  118. package/dist/Tag.d.ts +1 -11
  119. package/dist/Tag.js +2 -2
  120. package/dist/Textarea-YNET7IBH.css +54 -0
  121. package/dist/Textarea.cjs +15 -0
  122. package/dist/Textarea.d.cts +25 -0
  123. package/dist/Textarea.d.ts +25 -0
  124. package/dist/Textarea.js +2 -0
  125. package/dist/{Timeline-RHZAZKZ7.css → Timeline-3ZHOHPXT.css} +2 -2
  126. package/dist/Timeline.cjs +3 -3
  127. package/dist/Timeline.d.cts +1 -1
  128. package/dist/Timeline.d.ts +1 -1
  129. package/dist/Timeline.js +2 -2
  130. package/dist/Tooltip.cjs +2 -2
  131. package/dist/Tooltip.d.cts +17 -4
  132. package/dist/Tooltip.d.ts +17 -4
  133. package/dist/Tooltip.js +1 -1
  134. package/dist/Typography.cjs +7 -7
  135. package/dist/Typography.js +2 -2
  136. package/dist/{chunk-6Y5WRCPW.js → chunk-33NCTOEB.js} +1 -1
  137. package/dist/{chunk-Q2KG6SQK.cjs → chunk-35ZGBAA3.cjs} +3 -3
  138. package/dist/{chunk-Y3ZSG3SJ.cjs → chunk-3AS5B7MQ.cjs} +11 -30
  139. package/dist/{chunk-X2U7EKCS.cjs → chunk-3YJU3D5S.cjs} +28 -5
  140. package/dist/chunk-45VJGBGN.js +25 -0
  141. package/dist/{chunk-3D77MQHO.js → chunk-46VXFTEC.js} +3 -3
  142. package/dist/{chunk-OFGDUCT7.cjs → chunk-4WTU5P3O.cjs} +3 -3
  143. package/dist/{chunk-5A3RT4KD.js → chunk-5TKC6IEN.js} +4 -55
  144. package/dist/{chunk-62GU4OHH.cjs → chunk-5WAXZJG5.cjs} +12 -19
  145. package/dist/chunk-6ACKL3WH.cjs +138 -0
  146. package/dist/{chunk-32HBMXXV.cjs → chunk-6LZ54NPO.cjs} +70 -74
  147. package/dist/{chunk-UXH5PH3S.js → chunk-7NGMQIST.js} +2 -2
  148. package/dist/{chunk-R6BIF3FF.js → chunk-AWXCSX6J.js} +5 -23
  149. package/dist/chunk-AXZ7ELMA.js +41 -0
  150. package/dist/{chunk-G2XK57I7.cjs → chunk-B2KEZQ6S.cjs} +5 -5
  151. package/dist/chunk-CEJ7VBR6.js +283 -0
  152. package/dist/{chunk-WRDKOSSM.js → chunk-CHMCL7AV.js} +1 -1
  153. package/dist/{chunk-EBNRZRWY.cjs → chunk-CUXV6QNN.cjs} +5 -5
  154. package/dist/{chunk-ULOJ5UEY.js → chunk-CXWEOAVU.js} +1 -1
  155. package/dist/{chunk-TWGQZX2R.js → chunk-DQTSTJ6O.js} +3 -18
  156. package/dist/chunk-EIY7KEJ3.cjs +132 -0
  157. package/dist/{chunk-OI3CWXT3.js → chunk-EJBHR2P5.js} +3 -3
  158. package/dist/chunk-ELNT3CFO.js +64 -0
  159. package/dist/{chunk-TGHBKKSS.js → chunk-EQEJTN3V.js} +3 -43
  160. package/dist/chunk-F6RYCBQG.js +25 -0
  161. package/dist/{chunk-N57NXCNC.cjs → chunk-FBVVRTX2.cjs} +3 -44
  162. package/dist/chunk-FFZ6OMZI.js +110 -0
  163. package/dist/{chunk-73RQBWWW.js → chunk-FJNWUELL.js} +2 -2
  164. package/dist/chunk-GENABQYA.cjs +47 -0
  165. package/dist/chunk-GMN74OEY.cjs +63 -0
  166. package/dist/chunk-GNEZQMKH.js +218 -0
  167. package/dist/{chunk-Y47YTYQ3.cjs → chunk-HPFQXYKG.cjs} +159 -8
  168. package/dist/{chunk-4WRE4HQP.js → chunk-HWFM4MAT.js} +18 -6
  169. package/dist/{chunk-GY3BSHHS.cjs → chunk-HZSIUOCN.cjs} +2 -55
  170. package/dist/{chunk-YRZGXXWA.js → chunk-JD7A6VM3.js} +11 -17
  171. package/dist/chunk-K2KYM7LW.cjs +28 -0
  172. package/dist/{chunk-PWW64ZWO.cjs → chunk-KD4YYIIO.cjs} +1 -32
  173. package/dist/chunk-KGSADAOD.cjs +170 -0
  174. package/dist/{chunk-6ODY6MGL.cjs → chunk-MQV2XN4B.cjs} +5 -5
  175. package/dist/{chunk-OVZTG5CP.cjs → chunk-MT7UWY6T.cjs} +2 -2
  176. package/dist/chunk-MUXP7ASL.js +26 -0
  177. package/dist/{chunk-EEMWQX3C.cjs → chunk-NTS5L4NQ.cjs} +3 -3
  178. package/dist/{chunk-WBK6XIDJ.js → chunk-OBEKX4VR.js} +2 -32
  179. package/dist/chunk-OF3SGLZY.js +385 -0
  180. package/dist/chunk-ON4DEDMI.js +113 -0
  181. package/dist/chunk-OQBDU5I2.cjs +104 -0
  182. package/dist/{chunk-FIO65XYG.cjs → chunk-OYMJVU66.cjs} +48 -37
  183. package/dist/{chunk-5M26OVVY.js → chunk-PH3YECMF.js} +1 -1
  184. package/dist/chunk-Q5SZIU7Z.cjs +47 -0
  185. package/dist/chunk-QGHYQCF3.cjs +240 -0
  186. package/dist/chunk-QKQHZIF3.cjs +86 -0
  187. package/dist/{chunk-KYEY2LIB.cjs → chunk-SKMP2A5O.cjs} +3 -3
  188. package/dist/{chunk-IW5LW6XS.js → chunk-TEEFR2FD.js} +28 -5
  189. package/dist/{chunk-GOBWKQCX.cjs → chunk-TEG7NJHS.cjs} +3 -3
  190. package/dist/{chunk-2MNAZRWE.cjs → chunk-TJII7BQ2.cjs} +261 -2
  191. package/dist/{chunk-3TWNBJFI.cjs → chunk-TZJH5HBT.cjs} +6 -6
  192. package/dist/{chunk-D46EM4EN.js → chunk-UMDGS4BP.js} +1 -1
  193. package/dist/chunk-USQ43DJ5.js +147 -0
  194. package/dist/{chunk-G2K6ETP4.cjs → chunk-UUHFKIWP.cjs} +18 -6
  195. package/dist/chunk-WGZ2KJTZ.js +81 -0
  196. package/dist/{chunk-RPFMQZA5.js → chunk-WKKSAGYH.js} +39 -28
  197. package/dist/{chunk-54YLXXS2.js → chunk-XD3JGL5O.js} +2 -2
  198. package/dist/{chunk-DPNDHNKK.js → chunk-XTIN5545.js} +68 -72
  199. package/dist/{chunk-LZU33BX6.cjs → chunk-ZIP7F4UF.cjs} +4 -20
  200. package/dist/index.cjs +312 -122
  201. package/dist/index.d.cts +23 -17
  202. package/dist/index.d.ts +23 -17
  203. package/dist/index.js +34 -28
  204. package/dist/styles.css +313 -192
  205. package/docs/llms/badge.md +3 -3
  206. package/docs/llms/button.md +7 -38
  207. package/docs/llms/card.md +6 -12
  208. package/docs/llms/cascader.md +19 -0
  209. package/docs/llms/{accordion.md → collapse.md} +13 -11
  210. package/docs/llms/drawer.md +1 -1
  211. package/docs/llms/form.md +1 -1
  212. package/docs/llms/input.md +25 -16
  213. package/docs/llms/message.md +63 -0
  214. package/docs/llms/modal.md +30 -0
  215. package/docs/llms/popover.md +18 -1
  216. package/docs/llms/radio.md +37 -1
  217. package/docs/llms/select.md +20 -0
  218. package/docs/llms/spin.md +59 -0
  219. package/docs/llms/table.md +3 -3
  220. package/docs/llms/tooltip.md +16 -3
  221. package/docs/llms.md +5 -5
  222. package/package.json +17 -52
  223. package/dist/Accordion-REMDCQUD.css +0 -44
  224. package/dist/Accordion.cjs +0 -11
  225. package/dist/Accordion.d.cts +0 -33
  226. package/dist/Accordion.d.ts +0 -33
  227. package/dist/Accordion.js +0 -2
  228. package/dist/Empty-NQ72W3D7.css +0 -160
  229. package/dist/Tag-FGDY3W7E.css +0 -51
  230. package/dist/Toast-YSACW3EM.css +0 -45
  231. package/dist/Toast.cjs +0 -15
  232. package/dist/Toast.d.cts +0 -26
  233. package/dist/Toast.d.ts +0 -26
  234. package/dist/Toast.js +0 -2
  235. package/dist/chunk-3XTHKAEY.js +0 -39
  236. package/dist/chunk-DOMYUGJY.js +0 -132
  237. package/dist/chunk-HBWO3QKW.js +0 -74
  238. package/dist/chunk-JVS5ZALZ.js +0 -123
  239. package/dist/chunk-LIGHV4RC.cjs +0 -121
  240. package/dist/chunk-MCTIA6RZ.js +0 -99
  241. package/dist/chunk-NC4YUEXM.cjs +0 -145
  242. package/dist/chunk-NJ6B22YJ.js +0 -170
  243. package/dist/chunk-W64ARHLJ.cjs +0 -62
  244. package/dist/chunk-ZFW6OYAO.cjs +0 -100
  245. package/docs/llms/spinner.md +0 -58
  246. package/docs/llms/toast.md +0 -51
@@ -53,7 +53,7 @@ scroll.y 固定表头并限制表体最大高度;scroll.x 设置内容最小宽
53
53
 
54
54
  ### 行选择 (rowSelection)
55
55
 
56
- antd 风格的 rowSelection。表头多选框支持 indeterminate;可通过 getCheckboxProps 禁用指定行。
56
+ rowSelection 提供表头全选、半选状态与按行禁用能力。
57
57
 
58
58
  ```tsx
59
59
  <Table
@@ -126,11 +126,11 @@ antd 风格的 rowSelection。表头多选框支持 indeterminate;可通过 getC
126
126
  | variant | `"default" | "striped" | "embossed" | "cards"` | `"default"` | 视觉变体 |
127
127
  | pagination | `false | PaginationConfig` | — | 分页配置;false 关闭 |
128
128
  | scroll | `TableScrollConfig` | — | 滚动配置:{ x?, y? } |
129
- | rowSelection | `RowSelectionConfig` | — | 行选择配置 (antd 风格) |
129
+ | rowSelection | `RowSelectionConfig` | — | 行选择配置 |
130
130
  | expandable | `ExpandableConfig` | — | 可展开行配置 |
131
131
  | sortKey / sortDir / onSort | `—` | — | 受控排序 |
132
132
  | onRowClick | `(row, i) => void` | — | 点击行 |
133
- | selectable / selected / onSelect | `—` | — | 旧版多选 API (保留兼容,优先使用 rowSelection) |
133
+ | selectable / selected / onSelect | `—` | — | 旧版多选 API,优先使用 rowSelection |
134
134
 
135
135
 
136
136
  **TableColumn**
@@ -13,7 +13,7 @@ import { Tooltip } from "@fangxinyan/lumina";
13
13
  ### 基础
14
14
 
15
15
  ```tsx
16
- <Tooltip content="新建文档"><IconButton icon="plus" /></Tooltip>
16
+ <Tooltip content="新建文档"><Button icon="plus" /></Tooltip>
17
17
  ```
18
18
 
19
19
  ### 位置
@@ -22,16 +22,29 @@ import { Tooltip } from "@fangxinyan/lumina";
22
22
  <Tooltip placement="bottom" content="..." />
23
23
  ```
24
24
 
25
+ ### title 别名
26
+
27
+ title 与 content 等价,也支持 bottomLeft 等细分位置。
28
+
29
+ ```tsx
30
+ <Tooltip title="复制路径" placement="bottomLeft">
31
+ <Button icon="copy">复制</Button>
32
+ </Tooltip>
33
+ ```
34
+
25
35
  ## API
26
36
 
27
37
  **Tooltip**
28
38
 
29
39
  | Prop | 类型 | 默认 | 说明 |
30
40
  | --- | --- | --- | --- |
31
- | content \* | `ReactNode` | — | 提示内容 |
32
- | placement | `"top" | "bottom" | "left" | "right"` | `"top"` | 位置 |
41
+ | content | `ReactNode` | — | 提示内容 |
42
+ | title | `ReactNode` | — | content 的等价别名 |
43
+ | placement | `"top" | "bottom" | "left" | "right" | ...` | `"top"` | 位置,支持 bottomLeft 等细分方向 |
33
44
  | delay | `number` | `250` | 悬浮延时 (ms) |
34
45
  | disabled | `boolean` | `false` | 禁用提示 |
46
+ | open / visible | `boolean` | — | 受控显示状态 |
47
+ | overlayClassName / popupClassName | `string` | — | 浮层 className |
35
48
 
36
49
 
37
50
  ---
package/docs/llms.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > 拟态风格的 React 18 组件库,目标是 Electron 桌面应用。**写给 AI 编程助手**的按需文档 —— 每个组件单独一个 `.md`,避免一次性读取全部。示例源自 playground 的 demo,可直接复制运行。
4
4
 
5
5
  - **包名**: `@fangxinyan/lumina`
6
- - **版本**: `0.6.1`
6
+ - **版本**: `0.6.2`
7
7
  - **React 最低版本**: 18
8
8
  - **环境**: 带打包器的 React 工程(Vite / Next.js / Webpack / Remix / Electron + Vite 等)
9
9
  - **零运行时依赖**: 只依赖 `react` / `react-dom` (peer deps)
@@ -62,7 +62,7 @@
62
62
  - [AutoComplete 自动补全](./llms/autocomplete.md) — 输入时展示建议下拉,不限定必须从候选中选。
63
63
  - [Cascader 级联选择](./llms/cascader.md) — 层级关联数据集合中的多级选择。
64
64
  - [ColorPicker 颜色选择](./llms/colorpicker.md) — 拟态风格的颜色选择器:HSV 色域、色相、hex 输入、预设调色板。
65
- - [Form 表单](./llms/form.md) — 受控表单,字段绑定 + 校验,API 对齐 antd。
65
+ - [Form 表单](./llms/form.md) — 受控表单,字段绑定 + 校验。
66
66
 
67
67
  ### 数据展示
68
68
 
@@ -79,19 +79,19 @@
79
79
  - [Table Pro](./llms/tablepro.md) — 带工具栏 / 搜索 / 筛选 / 排序 / 多选 / 分页的全功能表格。
80
80
  - [Pagination 分页](./llms/pagination.md) — 分页控件,支持快速跳转与每页条数切换。
81
81
  - [Tabs 选项卡](./llms/tabs.md) — 同一层级的内容分组,通过标签切换。
82
- - [Accordion 折叠面板](./llms/accordion.md) — 纵向折叠面板。
82
+ - [Collapse 折叠面板](./llms/collapse.md) — 纵向折叠面板。
83
83
  - [Calendar 日历](./llms/calendar.md) — 查看与选择日期。
84
84
 
85
85
  ### 反馈
86
86
 
87
87
  - [Modal 对话框](./llms/modal.md) — 在不离开当前页面的前提下处理事务。
88
88
  - [Drawer 抽屉](./llms/drawer.md) — 从屏幕边缘滑出的浮层。
89
- - [Toast 通知](./llms/toast.md) — 全局轻量提示,4 种语义。
89
+ - [Message 全局消息](./llms/message.md) — 全局轻量提示,支持函数调用与对象配置。
90
90
  - [Tooltip 文字提示](./llms/tooltip.md) — 鼠标悬浮触发的简短说明。
91
91
  - [Popover 气泡卡片](./llms/popover.md) — 比 Tooltip 更丰富,可承载交互内容。
92
92
  - [Alert 警告提示](./llms/alert.md) — 页面中嵌入的警告/提示。
93
93
  - [Empty 空状态](./llms/empty.md) — 列表、页面或容器无数据时的占位。
94
- - [Spinner 加载](./llms/spinner.md) — 表示任务正在进行,提示用户等待。
94
+ - [Spin 加载](./llms/spin.md) — 表示任务正在进行,提示用户等待。
95
95
  - [Skeleton 骨架屏](./llms/skeleton.md) — 数据加载前展示页面结构轮廓。
96
96
 
97
97
  ### Electron
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fangxinyan/lumina",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Lumina — Neumorphic component library for Electron & React apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -17,51 +17,6 @@
17
17
  "./llms.md": "./docs/llms.md",
18
18
  "./llms/*": "./docs/llms/*",
19
19
  "./package.json": "./package.json",
20
- "./IconButton": {
21
- "types": "./dist/Button.d.ts",
22
- "import": "./dist/Button.js",
23
- "require": "./dist/Button.cjs"
24
- },
25
- "./Textarea": {
26
- "types": "./dist/Input.d.ts",
27
- "import": "./dist/Input.js",
28
- "require": "./dist/Input.cjs"
29
- },
30
- "./RadioGroup": {
31
- "types": "./dist/Checkbox.d.ts",
32
- "import": "./dist/Checkbox.js",
33
- "require": "./dist/Checkbox.cjs"
34
- },
35
- "./Segmented": {
36
- "types": "./dist/Tabs.d.ts",
37
- "import": "./dist/Tabs.js",
38
- "require": "./dist/Tabs.cjs"
39
- },
40
- "./Badge": {
41
- "types": "./dist/Tag.d.ts",
42
- "import": "./dist/Tag.js",
43
- "require": "./dist/Tag.cjs"
44
- },
45
- "./Panel": {
46
- "types": "./dist/Card.d.ts",
47
- "import": "./dist/Card.js",
48
- "require": "./dist/Card.cjs"
49
- },
50
- "./Spinner": {
51
- "types": "./dist/Empty.d.ts",
52
- "import": "./dist/Empty.js",
53
- "require": "./dist/Empty.cjs"
54
- },
55
- "./Skeleton": {
56
- "types": "./dist/Empty.d.ts",
57
- "import": "./dist/Empty.js",
58
- "require": "./dist/Empty.cjs"
59
- },
60
- "./TablePro": {
61
- "types": "./dist/Table.d.ts",
62
- "import": "./dist/Table.js",
63
- "require": "./dist/Table.cjs"
64
- },
65
20
  "./TitleBar": {
66
21
  "types": "./dist/AppShell.d.ts",
67
22
  "import": "./dist/AppShell.js",
@@ -82,15 +37,25 @@
82
37
  "import": "./dist/StatusBar.js",
83
38
  "require": "./dist/StatusBar.cjs"
84
39
  },
40
+ "./MessageContainer": {
41
+ "types": "./dist/Message.d.ts",
42
+ "import": "./dist/Message.js",
43
+ "require": "./dist/Message.cjs"
44
+ },
45
+ "./message": {
46
+ "types": "./dist/Message.d.ts",
47
+ "import": "./dist/Message.js",
48
+ "require": "./dist/Message.cjs"
49
+ },
85
50
  "./ToastContainer": {
86
- "types": "./dist/Toast.d.ts",
87
- "import": "./dist/Toast.js",
88
- "require": "./dist/Toast.cjs"
51
+ "types": "./dist/Message.d.ts",
52
+ "import": "./dist/Message.js",
53
+ "require": "./dist/Message.cjs"
89
54
  },
90
55
  "./toast": {
91
- "types": "./dist/Toast.d.ts",
92
- "import": "./dist/Toast.js",
93
- "require": "./dist/Toast.cjs"
56
+ "types": "./dist/Message.d.ts",
57
+ "import": "./dist/Message.js",
58
+ "require": "./dist/Message.cjs"
94
59
  },
95
60
  "./*": {
96
61
  "types": "./dist/*.d.ts",
@@ -1,44 +0,0 @@
1
- /* ============ Accordion ============ */
2
- .accordion { display: flex; flex-direction: column; gap: 10px; }
3
- .accordion-item {
4
- background: var(--bg);
5
- border-radius: var(--r-md);
6
- box-shadow: var(--neu-out-sm);
7
- overflow: hidden;
8
- }
9
- .accordion-item.disabled { opacity: 0.5; }
10
- .accordion-head {
11
- width: 100%;
12
- border: none;
13
- background: transparent;
14
- padding: 14px 18px;
15
- display: flex;
16
- align-items: center;
17
- justify-content: space-between;
18
- cursor: pointer;
19
- font-size: 13px;
20
- font-weight: 500;
21
- font-family: inherit;
22
- color: var(--fg);
23
- text-align: left;
24
- }
25
- .accordion-item.disabled .accordion-head { cursor: not-allowed; }
26
- .accordion-item.icon-only .accordion-head:not(:disabled) { cursor: default; }
27
- .accordion-body {
28
- max-height: 0;
29
- overflow: hidden;
30
- transition: max-height var(--dur) var(--ease);
31
- color: var(--fg-muted);
32
- font-size: 13px;
33
- }
34
- .accordion-body-inner { padding: 0 18px 16px; }
35
- .accordion-chev {
36
- transition: transform var(--dur) var(--ease), color var(--dur) var(--ease);
37
- color: var(--fg-subtle);
38
- display: inline-flex;
39
- border-radius: 6px;
40
- padding: 2px;
41
- }
42
- .accordion-chev.clickable { cursor: pointer; }
43
- .accordion-chev.clickable:hover { color: var(--fg); background: var(--bg); box-shadow: var(--neu-flat); }
44
- .accordion-item.open .accordion-chev { transform: rotate(180deg); color: var(--accent); }
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkLIGHV4RC_cjs = require('./chunk-LIGHV4RC.cjs');
4
- require('./chunk-2MNAZRWE.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "Accordion", {
9
- enumerable: true,
10
- get: function () { return chunkLIGHV4RC_cjs.Accordion; }
11
- });
@@ -1,33 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface AccordionItem {
4
- key: string;
5
- title: React.ReactNode;
6
- content: React.ReactNode;
7
- disabled?: boolean;
8
- }
9
- interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
10
- items: AccordionItem[];
11
- /** If true, multiple sections can be open at once. */
12
- multiple?: boolean;
13
- /**
14
- * Accordion mode — at most one item open at a time. Takes precedence over `multiple`
15
- * when both are set.
16
- */
17
- accordion?: boolean;
18
- /**
19
- * What triggers expansion.
20
- * - `"header"` (default): clicking anywhere on the header toggles.
21
- * - `"icon"`: only the chevron icon is clickable.
22
- * - `"disabled"`: the panel cannot be toggled.
23
- */
24
- collapsible?: "header" | "icon" | "disabled";
25
- activeKeys?: string[];
26
- defaultActiveKeys?: string[];
27
- onChange?: (keys: string[]) => void;
28
- className?: string;
29
- }
30
- /** `Accordion` — collapsible sections. */
31
- declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
32
-
33
- export { Accordion, type AccordionItem, type AccordionProps };
@@ -1,33 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface AccordionItem {
4
- key: string;
5
- title: React.ReactNode;
6
- content: React.ReactNode;
7
- disabled?: boolean;
8
- }
9
- interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
10
- items: AccordionItem[];
11
- /** If true, multiple sections can be open at once. */
12
- multiple?: boolean;
13
- /**
14
- * Accordion mode — at most one item open at a time. Takes precedence over `multiple`
15
- * when both are set.
16
- */
17
- accordion?: boolean;
18
- /**
19
- * What triggers expansion.
20
- * - `"header"` (default): clicking anywhere on the header toggles.
21
- * - `"icon"`: only the chevron icon is clickable.
22
- * - `"disabled"`: the panel cannot be toggled.
23
- */
24
- collapsible?: "header" | "icon" | "disabled";
25
- activeKeys?: string[];
26
- defaultActiveKeys?: string[];
27
- onChange?: (keys: string[]) => void;
28
- className?: string;
29
- }
30
- /** `Accordion` — collapsible sections. */
31
- declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
32
-
33
- export { Accordion, type AccordionItem, type AccordionProps };
package/dist/Accordion.js DELETED
@@ -1,2 +0,0 @@
1
- export { Accordion } from './chunk-MCTIA6RZ.js';
2
- import './chunk-NJ6B22YJ.js';
@@ -1,160 +0,0 @@
1
- /* ============ Empty / Spinner / Skeleton ============ */
2
- /* .spinner base — legacy border-ring used internally by Select/Button.
3
- The public <Spinner> component always sets a variant class (`ring`|`dots`)
4
- which overrides this via the more specific rules below. */
5
- .spinner {
6
- width: 14px; height: 14px;
7
- border-radius: 999px;
8
- border: 2px solid currentColor;
9
- border-right-color: transparent;
10
- animation: spin 0.8s linear infinite;
11
- display: inline-block;
12
- }
13
-
14
- .empty {
15
- padding: 60px 20px;
16
- display: grid; place-items: center;
17
- gap: 12px;
18
- color: var(--fg-muted);
19
- text-align: center;
20
- }
21
- .empty.sm { padding: 28px 16px; gap: 8px; }
22
- .empty.sm .empty-ico { width: 40px; height: 40px; }
23
- .empty.sm .empty-title { font-size: 13px; }
24
- .empty.sm .empty-desc { font-size: 11px; }
25
- .empty.lg { padding: 96px 24px; gap: 16px; }
26
- .empty.lg .empty-ico { width: 72px; height: 72px; }
27
- .empty.lg .empty-title { font-size: 16px; }
28
- .empty.lg .empty-desc { font-size: 13px; }
29
- .empty.subtle .empty-ico { background: transparent; box-shadow: none; }
30
- .empty-ico {
31
- width: 56px; height: 56px;
32
- border-radius: var(--r-lg);
33
- background: var(--bg);
34
- box-shadow: var(--neu-in-sm);
35
- display: grid; place-items: center;
36
- color: var(--fg-subtle);
37
- }
38
- .empty-title { font-size: 14px; font-weight: 600; color: var(--fg); }
39
- .empty-desc { font-size: 12px; }
40
- .empty-action { margin-top: 8px; }
41
-
42
- /* Spinner tones */
43
- .spinner.accent { color: var(--accent); }
44
- .spinner.success { color: var(--success); }
45
- .spinner.warning { color: var(--warning); }
46
- .spinner.danger { color: var(--danger); }
47
-
48
- /* --- Ring variant: neumorphic pressed track + rotating arc --- */
49
- .spinner.ring {
50
- position: relative;
51
- display: inline-block;
52
- border: none;
53
- border-radius: 50%;
54
- background: var(--bg);
55
- box-shadow: var(--neu-in-sm);
56
- animation: none;
57
- }
58
- .spinner.ring::before {
59
- content: "";
60
- position: absolute;
61
- inset: 0;
62
- border-radius: inherit;
63
- background: conic-gradient(from 0deg,
64
- transparent 0deg,
65
- color-mix(in oklch, currentColor 30%, transparent) 40deg,
66
- color-mix(in oklch, currentColor 70%, transparent) 100deg,
67
- currentColor 220deg,
68
- currentColor 340deg,
69
- transparent 360deg);
70
- -webkit-mask: radial-gradient(circle, transparent 60%, #000 61%);
71
- mask: radial-gradient(circle, transparent 60%, #000 61%);
72
- animation: spin 0.9s linear infinite;
73
- }
74
- .spinner.ring.accent::before,
75
- .spinner.ring.success::before,
76
- .spinner.ring.warning::before,
77
- .spinner.ring.danger::before {
78
- filter: drop-shadow(0 0 4px color-mix(in oklch, currentColor 50%, transparent));
79
- }
80
-
81
- /* --- Dots variant: raised neumorphic spheres (container is transparent) --- */
82
- .spinner.dots {
83
- display: inline-flex;
84
- align-items: center;
85
- gap: 0.34em;
86
- border: none;
87
- background: none;
88
- box-shadow: none;
89
- width: auto; height: auto;
90
- animation: none;
91
- line-height: 1;
92
- }
93
- .spinner.dots i {
94
- width: 0.4em; height: 0.4em;
95
- border-radius: 999px;
96
- background: radial-gradient(circle at 32% 28%,
97
- color-mix(in oklch, currentColor 40%, white),
98
- currentColor 62%,
99
- color-mix(in oklch, currentColor 82%, black) 100%);
100
- box-shadow:
101
- 0 0.06em 0.14em color-mix(in oklch, currentColor 45%, transparent),
102
- 0 0 0.35em color-mix(in oklch, currentColor 50%, transparent);
103
- display: inline-block;
104
- animation: dot-bounce 1.2s ease-in-out infinite;
105
- }
106
- .spinner.dots i:nth-child(2) { animation-delay: 0.15s; }
107
- .spinner.dots i:nth-child(3) { animation-delay: 0.3s; }
108
- @keyframes dot-bounce {
109
- 0%, 80%, 100% { transform: translateY(0); opacity: 0.5; }
110
- 40% { transform: translateY(-30%); opacity: 1; }
111
- }
112
-
113
- .spinner-wrap {
114
- display: inline-flex;
115
- align-items: center;
116
- gap: 8px;
117
- color: var(--fg-muted);
118
- }
119
- .spinner-label { font-size: 12px; }
120
-
121
- .skeleton {
122
- display: block;
123
- background: color-mix(in oklch, var(--accent-soft) 55%, var(--bg-sunken));
124
- border-radius: var(--r-sm);
125
- }
126
- .skeleton.wave {
127
- background: linear-gradient(90deg,
128
- color-mix(in oklch, var(--accent-soft) 35%, var(--bg-sunken)),
129
- color-mix(in oklch, var(--accent-soft) 75%, var(--bg-sunken)),
130
- color-mix(in oklch, var(--accent-soft) 35%, var(--bg-sunken)));
131
- background-size: 200% 100%;
132
- animation: skel-wave 1.4s ease-in-out infinite;
133
- }
134
- .skeleton.pulse { animation: skel-pulse 1.4s ease-in-out infinite; }
135
- .skeleton.none { animation: none; }
136
- .skeleton.circle { border-radius: 999px; }
137
- @keyframes skel-wave { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
138
- @keyframes skel-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
139
-
140
- /* Composite skeleton — avatar + title + paragraph layout */
141
- .skeleton-box {
142
- display: flex;
143
- align-items: flex-start;
144
- gap: 16px;
145
- width: 100%;
146
- }
147
- .skeleton-content {
148
- flex: 1;
149
- min-width: 0;
150
- display: flex;
151
- flex-direction: column;
152
- gap: 12px;
153
- }
154
- .skeleton-box .skeleton-title {
155
- display: block;
156
- margin-bottom: 4px;
157
- }
158
- .skeleton-box .skeleton-row {
159
- display: block;
160
- }
@@ -1,51 +0,0 @@
1
- /* ============ Tag & Badge ============ */
2
- .tag {
3
- display: inline-flex;
4
- align-items: center;
5
- gap: 6px;
6
- height: 24px;
7
- padding: 0 10px;
8
- border-radius: var(--r-pill);
9
- font-size: 11px;
10
- font-weight: 500;
11
- background: var(--bg);
12
- box-shadow: var(--neu-flat);
13
- color: var(--fg-muted);
14
- }
15
- .tag.accent { color: var(--accent-ink); }
16
- .tag.info { color: var(--info); }
17
- .tag.success { color: var(--success); }
18
- .tag.warning { color: var(--warning); }
19
- .tag.danger { color: var(--danger); }
20
- .tag.solid { background: var(--accent); color: white; box-shadow: 0 2px 6px var(--accent-glow); }
21
- .tag.solid.info { background: var(--info); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--info) 35%, transparent); }
22
- .tag.solid.success { background: var(--success); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--success) 35%, transparent); }
23
- .tag.solid.warning { background: var(--warning); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--warning) 35%, transparent); }
24
- .tag.solid.danger { background: var(--danger); color: white; box-shadow: 0 2px 6px color-mix(in oklch, var(--danger) 35%, transparent); }
25
- .tag.borderless { background: transparent; box-shadow: none; }
26
- .tag .dot { width: 6px; height: 6px; border-radius: 999px; background: currentColor; }
27
- .tag .tag-ico { color: currentColor; display: inline-flex; }
28
- .tag .x { cursor: pointer; color: var(--fg-subtle); margin-left: 2px; display: inline-flex; }
29
- .tag .x:hover { color: var(--fg); }
30
-
31
- .badge {
32
- display: inline-flex;
33
- align-items: center; justify-content: center;
34
- min-width: 18px; height: 18px;
35
- padding: 0 6px;
36
- border-radius: 999px;
37
- font-size: 10px;
38
- font-weight: 700;
39
- background: var(--danger);
40
- color: white;
41
- box-shadow: 0 1px 4px rgba(0,0,0,0.15);
42
- font-variant-numeric: tabular-nums;
43
- }
44
- .badge.dot { min-width: 10px; height: 10px; padding: 0; }
45
- .badge.accent { background: var(--accent); box-shadow: 0 1px 4px var(--accent-glow); }
46
- .badge.info { background: var(--info); box-shadow: 0 1px 4px color-mix(in oklch, var(--info) 35%, transparent); }
47
- .badge.success { background: var(--success); box-shadow: 0 1px 4px color-mix(in oklch, var(--success) 35%, transparent); }
48
- .badge.warning { background: var(--warning); box-shadow: 0 1px 4px color-mix(in oklch, var(--warning) 35%, transparent); }
49
- .badge.neutral { background: var(--fg-muted); box-shadow: 0 1px 4px rgba(0,0,0,0.15); }
50
- .badge-wrap { position: relative; display: inline-block; }
51
- .badge-wrap > .badge { position: absolute; top: -4px; right: -4px; }
@@ -1,45 +0,0 @@
1
- /* ============ Toast ============ */
2
- .toast-container {
3
- position: fixed;
4
- display: flex;
5
- flex-direction: column;
6
- gap: 10px;
7
- z-index: 300;
8
- pointer-events: none;
9
- }
10
- .toast-container.top-right { top: 56px; right: 20px; }
11
- .toast-container.top-left { top: 56px; left: 20px; }
12
- .toast-container.bottom-right { bottom: 20px; right: 20px; }
13
- .toast-container.bottom-left { bottom: 20px; left: 20px; }
14
- .toast-container.top-center { top: 56px; left: 50%; transform: translateX(-50%); align-items: center; }
15
- .toast {
16
- background: var(--bg);
17
- border-radius: var(--r-md);
18
- box-shadow: var(--neu-float);
19
- padding: 12px 16px;
20
- min-width: 240px;
21
- display: flex; align-items: center; gap: 10px;
22
- font-size: 13px;
23
- pointer-events: auto;
24
- animation: toastIn var(--dur-slow) var(--ease);
25
- border-left: 3px solid var(--accent);
26
- }
27
- .toast.success { border-color: var(--success); }
28
- .toast.warning { border-color: var(--warning); }
29
- .toast.danger { border-color: var(--danger); }
30
- .toast .toast-icon { color: var(--accent); flex-shrink: 0; }
31
- .toast.success .toast-icon { color: var(--success); }
32
- .toast.warning .toast-icon { color: var(--warning); }
33
- .toast.danger .toast-icon { color: var(--danger); }
34
- .toast-body { flex: 1; min-width: 0; }
35
- .toast-title { font-weight: 600; margin-bottom: 2px; }
36
- .toast-msg { color: var(--fg-muted); font-size: 12px; }
37
- .toast-close {
38
- background: transparent; border: none;
39
- color: var(--fg-subtle); cursor: pointer;
40
- padding: 0 2px; font-family: inherit;
41
- }
42
- .toast-close:hover { color: var(--fg); }
43
- .toast.leaving { animation: toastOut var(--dur) var(--ease) forwards; }
44
- @keyframes toastIn { from { opacity: 0; transform: translateX(20px); } }
45
- @keyframes toastOut { to { opacity: 0; transform: translateX(20px); } }
package/dist/Toast.cjs DELETED
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkZFW6OYAO_cjs = require('./chunk-ZFW6OYAO.cjs');
4
- require('./chunk-2MNAZRWE.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "ToastContainer", {
9
- enumerable: true,
10
- get: function () { return chunkZFW6OYAO_cjs.ToastContainer; }
11
- });
12
- Object.defineProperty(exports, "toast", {
13
- enumerable: true,
14
- get: function () { return chunkZFW6OYAO_cjs.toast; }
15
- });
package/dist/Toast.d.cts DELETED
@@ -1,26 +0,0 @@
1
- import * as React from 'react';
2
-
3
- type ToastType = "info" | "success" | "warning" | "danger";
4
- interface ToastItem {
5
- id: number;
6
- type: ToastType;
7
- title?: React.ReactNode;
8
- message?: React.ReactNode;
9
- duration?: number;
10
- }
11
- declare const toast: {
12
- show(t: Omit<ToastItem, "id">): number;
13
- info: (message: React.ReactNode, title?: React.ReactNode) => number;
14
- success: (message: React.ReactNode, title?: React.ReactNode) => number;
15
- warn: (message: React.ReactNode, title?: React.ReactNode) => number;
16
- error: (message: React.ReactNode, title?: React.ReactNode) => number;
17
- dismiss(id: number): void;
18
- clear(): void;
19
- };
20
- interface ToastContainerProps extends React.HTMLAttributes<HTMLDivElement> {
21
- placement?: "top-right" | "top-left" | "bottom-right" | "bottom-left" | "top-center";
22
- }
23
- /** `ToastContainer` — mount once at your app root; subscribes to `toast.*` calls. */
24
- declare const ToastContainer: React.ForwardRefExoticComponent<ToastContainerProps & React.RefAttributes<HTMLDivElement>>;
25
-
26
- export { ToastContainer, type ToastContainerProps, type ToastItem, type ToastType, toast };
package/dist/Toast.d.ts DELETED
@@ -1,26 +0,0 @@
1
- import * as React from 'react';
2
-
3
- type ToastType = "info" | "success" | "warning" | "danger";
4
- interface ToastItem {
5
- id: number;
6
- type: ToastType;
7
- title?: React.ReactNode;
8
- message?: React.ReactNode;
9
- duration?: number;
10
- }
11
- declare const toast: {
12
- show(t: Omit<ToastItem, "id">): number;
13
- info: (message: React.ReactNode, title?: React.ReactNode) => number;
14
- success: (message: React.ReactNode, title?: React.ReactNode) => number;
15
- warn: (message: React.ReactNode, title?: React.ReactNode) => number;
16
- error: (message: React.ReactNode, title?: React.ReactNode) => number;
17
- dismiss(id: number): void;
18
- clear(): void;
19
- };
20
- interface ToastContainerProps extends React.HTMLAttributes<HTMLDivElement> {
21
- placement?: "top-right" | "top-left" | "bottom-right" | "bottom-left" | "top-center";
22
- }
23
- /** `ToastContainer` — mount once at your app root; subscribes to `toast.*` calls. */
24
- declare const ToastContainer: React.ForwardRefExoticComponent<ToastContainerProps & React.RefAttributes<HTMLDivElement>>;
25
-
26
- export { ToastContainer, type ToastContainerProps, type ToastItem, type ToastType, toast };
package/dist/Toast.js DELETED
@@ -1,2 +0,0 @@
1
- export { ToastContainer, toast } from './chunk-HBWO3QKW.js';
2
- import './chunk-NJ6B22YJ.js';