@fangxinyan/lumina 0.1.5 → 0.2.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 (220) hide show
  1. package/dist/{Accordion-GSBY5T5U.css → Accordion-3TQPKNN3.css} +8 -1
  2. package/dist/Accordion.cjs +2 -2
  3. package/dist/Accordion.d.cts +12 -0
  4. package/dist/Accordion.d.ts +12 -0
  5. package/dist/Accordion.js +1 -1
  6. package/dist/{Alert-LSKBYDRI.css → Alert-JJ7GB3UU.css} +11 -0
  7. package/dist/Alert.cjs +2 -2
  8. package/dist/Alert.d.cts +4 -0
  9. package/dist/Alert.d.ts +4 -0
  10. package/dist/Alert.js +1 -1
  11. package/dist/{Avatar-OXDSG5Q6.css → Avatar-R5A4AFKZ.css} +4 -0
  12. package/dist/Avatar.cjs +2 -2
  13. package/dist/Avatar.d.cts +2 -0
  14. package/dist/Avatar.d.ts +2 -0
  15. package/dist/Avatar.js +1 -1
  16. package/dist/{Button-5UI7QXGU.css → Button-SDQD25AG.css} +2 -0
  17. package/dist/Button.cjs +3 -3
  18. package/dist/Button.d.cts +2 -0
  19. package/dist/Button.d.ts +2 -0
  20. package/dist/Button.js +1 -1
  21. package/dist/Calendar.cjs +2 -2
  22. package/dist/Calendar.d.cts +8 -0
  23. package/dist/Calendar.d.ts +8 -0
  24. package/dist/Calendar.js +1 -1
  25. package/dist/{Card-2CHHFD4Y.css → Card-RG7ECXL2.css} +11 -0
  26. package/dist/Card.cjs +3 -3
  27. package/dist/Card.d.cts +2 -0
  28. package/dist/Card.d.ts +2 -0
  29. package/dist/Card.js +1 -1
  30. package/dist/{Divider-Z37INS5E.css → Divider-OEE4Q2KS.css} +31 -0
  31. package/dist/Divider.cjs +2 -2
  32. package/dist/Divider.d.cts +7 -0
  33. package/dist/Divider.d.ts +7 -0
  34. package/dist/Divider.js +1 -1
  35. package/dist/Drawer-IPGB4CXH.css +101 -0
  36. package/dist/Drawer.cjs +13 -0
  37. package/dist/Drawer.cjs.map +1 -0
  38. package/dist/Drawer.d.cts +45 -0
  39. package/dist/Drawer.d.ts +45 -0
  40. package/dist/Drawer.js +4 -0
  41. package/dist/Drawer.js.map +1 -0
  42. package/dist/{Empty-VM23UNLQ.css → Empty-NQ72W3D7.css} +22 -0
  43. package/dist/Empty.cjs +4 -4
  44. package/dist/Empty.d.cts +42 -2
  45. package/dist/Empty.d.ts +42 -2
  46. package/dist/Empty.js +1 -1
  47. package/dist/Input-33CAH4O6.css +134 -0
  48. package/dist/Input.cjs +3 -3
  49. package/dist/Input.d.cts +17 -1
  50. package/dist/Input.d.ts +17 -1
  51. package/dist/Input.js +1 -1
  52. package/dist/Modal-N4YVLEWW.css +72 -0
  53. package/dist/Modal.cjs +3 -7
  54. package/dist/Modal.d.cts +37 -8
  55. package/dist/Modal.d.ts +37 -8
  56. package/dist/Modal.js +2 -2
  57. package/dist/{Pagination-6FFOI4NM.css → Pagination-YIRYJUXP.css} +33 -0
  58. package/dist/Pagination.cjs +5 -2
  59. package/dist/Pagination.d.cts +14 -0
  60. package/dist/Pagination.d.ts +14 -0
  61. package/dist/Pagination.js +4 -1
  62. package/dist/Select.cjs +3 -3
  63. package/dist/Select.js +2 -2
  64. package/dist/{Slider-RE4HZQKF.css → Slider-X4PVA65R.css} +51 -2
  65. package/dist/Slider.cjs +2 -2
  66. package/dist/Slider.d.cts +20 -5
  67. package/dist/Slider.d.ts +20 -5
  68. package/dist/Slider.js +1 -1
  69. package/dist/Switch-36KJNDXM.css +92 -0
  70. package/dist/Switch.cjs +2 -2
  71. package/dist/Switch.d.cts +4 -0
  72. package/dist/Switch.d.ts +4 -0
  73. package/dist/Switch.js +1 -1
  74. package/dist/Table-ADVN6LXP.css +295 -0
  75. package/dist/Table.cjs +7 -3
  76. package/dist/Table.d.cts +103 -7
  77. package/dist/Table.d.ts +103 -7
  78. package/dist/Table.js +5 -1
  79. package/dist/{Tabs-A27TSZOP.css → Tabs-RHK6XAFF.css} +7 -0
  80. package/dist/Tabs.cjs +3 -3
  81. package/dist/Tabs.d.cts +2 -0
  82. package/dist/Tabs.d.ts +2 -0
  83. package/dist/Tabs.js +1 -1
  84. package/dist/{Tag-EYOY3UWG.css → Tag-FGDY3W7E.css} +2 -0
  85. package/dist/Tag.cjs +3 -3
  86. package/dist/Tag.d.cts +5 -0
  87. package/dist/Tag.d.ts +5 -0
  88. package/dist/Tag.js +1 -1
  89. package/dist/chunk-437LB2V4.js +111 -0
  90. package/dist/chunk-437LB2V4.js.map +1 -0
  91. package/dist/chunk-4MR4GVTD.js +73 -0
  92. package/dist/chunk-4MR4GVTD.js.map +1 -0
  93. package/dist/{chunk-OXYFB2ZI.js → chunk-4U4OY5RA.js} +11 -5
  94. package/dist/chunk-4U4OY5RA.js.map +1 -0
  95. package/dist/chunk-55NTFU7Y.js +476 -0
  96. package/dist/chunk-55NTFU7Y.js.map +1 -0
  97. package/dist/{chunk-5EYI27B6.js → chunk-77BVQNAQ.js} +5 -3
  98. package/dist/chunk-77BVQNAQ.js.map +1 -0
  99. package/dist/chunk-AEJJGUEN.cjs +127 -0
  100. package/dist/chunk-AEJJGUEN.cjs.map +1 -0
  101. package/dist/{chunk-3QWHDCHJ.js → chunk-AJZKESHB.js} +13 -4
  102. package/dist/chunk-AJZKESHB.js.map +1 -0
  103. package/dist/{chunk-NZPJ7BUB.cjs → chunk-AXMEZGEG.cjs} +13 -4
  104. package/dist/chunk-AXMEZGEG.cjs.map +1 -0
  105. package/dist/{chunk-HTP6UEVR.js → chunk-BBPNQ44M.js} +22 -6
  106. package/dist/chunk-BBPNQ44M.js.map +1 -0
  107. package/dist/chunk-CCBHZYE6.cjs +150 -0
  108. package/dist/chunk-CCBHZYE6.cjs.map +1 -0
  109. package/dist/{chunk-KGYLUZOU.cjs → chunk-EPFYIR63.cjs} +5 -5
  110. package/dist/{chunk-KGYLUZOU.cjs.map → chunk-EPFYIR63.cjs.map} +1 -1
  111. package/dist/chunk-F7HW2PYR.cjs +119 -0
  112. package/dist/chunk-F7HW2PYR.cjs.map +1 -0
  113. package/dist/chunk-GIVMKGZN.js +39 -0
  114. package/dist/chunk-GIVMKGZN.js.map +1 -0
  115. package/dist/{chunk-FMG3ZPGK.js → chunk-H6FCIJOP.js} +5 -3
  116. package/dist/chunk-H6FCIJOP.js.map +1 -0
  117. package/dist/{chunk-ALFDP5WX.cjs → chunk-IDM6JJLP.cjs} +22 -6
  118. package/dist/chunk-IDM6JJLP.cjs.map +1 -0
  119. package/dist/chunk-IFERLHCL.cjs +499 -0
  120. package/dist/chunk-IFERLHCL.cjs.map +1 -0
  121. package/dist/chunk-IWVKITPN.js +102 -0
  122. package/dist/chunk-IWVKITPN.js.map +1 -0
  123. package/dist/{chunk-I2ERCHFV.cjs → chunk-JKLQOB2F.cjs} +11 -5
  124. package/dist/chunk-JKLQOB2F.cjs.map +1 -0
  125. package/dist/{chunk-IGHLSNXT.cjs → chunk-K7PVJLW4.cjs} +51 -4
  126. package/dist/chunk-K7PVJLW4.cjs.map +1 -0
  127. package/dist/chunk-LDENBYRC.cjs +210 -0
  128. package/dist/chunk-LDENBYRC.cjs.map +1 -0
  129. package/dist/chunk-LSLYY5FN.js +125 -0
  130. package/dist/chunk-LSLYY5FN.js.map +1 -0
  131. package/dist/chunk-NSUD5B22.js +187 -0
  132. package/dist/chunk-NSUD5B22.js.map +1 -0
  133. package/dist/{chunk-AAMYURWQ.cjs → chunk-OPTTHURA.cjs} +5 -3
  134. package/dist/chunk-OPTTHURA.cjs.map +1 -0
  135. package/dist/{chunk-F3NHM4GX.js → chunk-OYGFMXAA.js} +13 -4
  136. package/dist/chunk-OYGFMXAA.js.map +1 -0
  137. package/dist/chunk-PBBHUUXU.cjs +133 -0
  138. package/dist/chunk-PBBHUUXU.cjs.map +1 -0
  139. package/dist/chunk-RDLPX7RK.cjs +95 -0
  140. package/dist/chunk-RDLPX7RK.cjs.map +1 -0
  141. package/dist/{chunk-XFRP2MBR.js → chunk-TYQ5CN2C.js} +51 -4
  142. package/dist/chunk-TYQ5CN2C.js.map +1 -0
  143. package/dist/{chunk-7CKHWCEA.cjs → chunk-TZSWDH5T.cjs} +5 -3
  144. package/dist/chunk-TZSWDH5T.cjs.map +1 -0
  145. package/dist/{chunk-VMHNKD3N.cjs → chunk-URF6RBW6.cjs} +13 -4
  146. package/dist/chunk-URF6RBW6.cjs.map +1 -0
  147. package/dist/{chunk-G3UWXSNQ.js → chunk-V34OPWKZ.js} +5 -4
  148. package/dist/chunk-V34OPWKZ.js.map +1 -0
  149. package/dist/{chunk-ITGCHU3Y.cjs → chunk-VICGQC6G.cjs} +5 -4
  150. package/dist/chunk-VICGQC6G.cjs.map +1 -0
  151. package/dist/chunk-YEOARJKR.cjs +40 -0
  152. package/dist/chunk-YEOARJKR.cjs.map +1 -0
  153. package/dist/chunk-Z5X5AMLA.cjs +41 -0
  154. package/dist/chunk-Z5X5AMLA.cjs.map +1 -0
  155. package/dist/chunk-Z7P6QGMT.js +115 -0
  156. package/dist/chunk-Z7P6QGMT.js.map +1 -0
  157. package/dist/{chunk-OYH6A7IQ.js → chunk-ZVCMXDTP.js} +3 -3
  158. package/dist/{chunk-OYH6A7IQ.js.map → chunk-ZVCMXDTP.js.map} +1 -1
  159. package/dist/chunk-ZWP4LSS3.js +38 -0
  160. package/dist/chunk-ZWP4LSS3.js.map +1 -0
  161. package/dist/index.cjs +57 -56
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.d.cts +6 -5
  164. package/dist/index.d.ts +6 -5
  165. package/dist/index.js +19 -18
  166. package/dist/index.js.map +1 -1
  167. package/dist/styles.css +566 -50
  168. package/package.json +1 -1
  169. package/dist/Input-Z526ARZP.css +0 -66
  170. package/dist/Modal-AYKNIWWQ.css +0 -79
  171. package/dist/Switch-NP7KKJOX.css +0 -44
  172. package/dist/Table-ZDPGWLH3.css +0 -139
  173. package/dist/chunk-2VA2HSL4.cjs +0 -121
  174. package/dist/chunk-2VA2HSL4.cjs.map +0 -1
  175. package/dist/chunk-2W2AJUZW.js +0 -118
  176. package/dist/chunk-2W2AJUZW.js.map +0 -1
  177. package/dist/chunk-3QWHDCHJ.js.map +0 -1
  178. package/dist/chunk-4AA22BOG.js +0 -63
  179. package/dist/chunk-4AA22BOG.js.map +0 -1
  180. package/dist/chunk-5EYI27B6.js.map +0 -1
  181. package/dist/chunk-77NP67ML.cjs +0 -70
  182. package/dist/chunk-77NP67ML.cjs.map +0 -1
  183. package/dist/chunk-7CKHWCEA.cjs.map +0 -1
  184. package/dist/chunk-7NM5BRUX.js +0 -91
  185. package/dist/chunk-7NM5BRUX.js.map +0 -1
  186. package/dist/chunk-7UJI437T.js +0 -49
  187. package/dist/chunk-7UJI437T.js.map +0 -1
  188. package/dist/chunk-AAMYURWQ.cjs.map +0 -1
  189. package/dist/chunk-ALFDP5WX.cjs.map +0 -1
  190. package/dist/chunk-F3NHM4GX.js.map +0 -1
  191. package/dist/chunk-FMG3ZPGK.js.map +0 -1
  192. package/dist/chunk-G3UWXSNQ.js.map +0 -1
  193. package/dist/chunk-HTP6UEVR.js.map +0 -1
  194. package/dist/chunk-I2ERCHFV.cjs.map +0 -1
  195. package/dist/chunk-IBZAGURN.cjs +0 -71
  196. package/dist/chunk-IBZAGURN.cjs.map +0 -1
  197. package/dist/chunk-IGHLSNXT.cjs.map +0 -1
  198. package/dist/chunk-ITGCHU3Y.cjs.map +0 -1
  199. package/dist/chunk-JNFCTYJT.cjs +0 -31
  200. package/dist/chunk-JNFCTYJT.cjs.map +0 -1
  201. package/dist/chunk-JWFVSBVX.cjs +0 -30
  202. package/dist/chunk-JWFVSBVX.cjs.map +0 -1
  203. package/dist/chunk-K67KIKX4.cjs +0 -67
  204. package/dist/chunk-K67KIKX4.cjs.map +0 -1
  205. package/dist/chunk-KF4MCHZL.cjs +0 -105
  206. package/dist/chunk-KF4MCHZL.cjs.map +0 -1
  207. package/dist/chunk-M6OTFXZA.js +0 -48
  208. package/dist/chunk-M6OTFXZA.js.map +0 -1
  209. package/dist/chunk-NWJW5KLN.js +0 -29
  210. package/dist/chunk-NWJW5KLN.js.map +0 -1
  211. package/dist/chunk-NZPJ7BUB.cjs.map +0 -1
  212. package/dist/chunk-OXYFB2ZI.js.map +0 -1
  213. package/dist/chunk-Q33V7MSK.js +0 -79
  214. package/dist/chunk-Q33V7MSK.js.map +0 -1
  215. package/dist/chunk-QT7SJITQ.cjs +0 -114
  216. package/dist/chunk-QT7SJITQ.cjs.map +0 -1
  217. package/dist/chunk-VMHNKD3N.cjs.map +0 -1
  218. package/dist/chunk-VXITDXLW.js +0 -28
  219. package/dist/chunk-VXITDXLW.js.map +0 -1
  220. package/dist/chunk-XFRP2MBR.js.map +0 -1
package/dist/Modal.d.ts CHANGED
@@ -1,27 +1,56 @@
1
1
  import * as React from 'react';
2
+ import { ButtonProps } from './Button.js';
3
+ import './Icon.js';
2
4
 
3
5
  interface ModalProps {
6
+ /** Whether the modal is visible. */
4
7
  open: boolean;
8
+ /** Fired by mask click / close button / Esc. Also the fallback for cancel. */
5
9
  onClose?: () => void;
10
+ /** Dedicated Cancel callback. Falls back to `onClose` when omitted. */
11
+ onCancel?: () => void;
12
+ /** Fired when the default OK button is clicked. */
13
+ onOk?: () => void;
6
14
  title?: React.ReactNode;
7
15
  description?: React.ReactNode;
16
+ /**
17
+ * Footer content. Pass `null` to hide the footer, or a custom node to
18
+ * replace the default OK / Cancel buttons.
19
+ */
8
20
  footer?: React.ReactNode;
9
21
  children?: React.ReactNode;
10
22
  width?: number | string;
23
+ /** Show the close (×) button. Default true. */
24
+ closable?: boolean;
25
+ /** Override the close icon node. */
26
+ closeIcon?: React.ReactNode;
11
27
  /** Close when clicking the mask. Default true. */
12
28
  maskClosable?: boolean;
13
29
  /** Close on Escape key. Default true. */
14
30
  escClosable?: boolean;
31
+ /** Label for the default OK button. */
32
+ okText?: React.ReactNode;
33
+ /** Label for the default Cancel button. */
34
+ cancelText?: React.ReactNode;
35
+ /** Extra props forwarded to the default OK button. */
36
+ okButtonProps?: Partial<ButtonProps>;
37
+ /** Extra props forwarded to the default Cancel button. */
38
+ cancelButtonProps?: Partial<ButtonProps>;
39
+ /** Show a spinner on the OK button (e.g. while an async submit is running). */
40
+ confirmLoading?: boolean;
41
+ /**
42
+ * When true the modal's children are unmounted every time it closes.
43
+ * Default `false` — children stay mounted so internal state survives
44
+ * reopens, matching antd's default.
45
+ */
46
+ destroyOnClose?: boolean;
47
+ /** Fires after the open/close animation finishes. */
48
+ afterOpenChange?: (open: boolean) => void;
49
+ /** Override the z-index of the overlay. */
50
+ zIndex?: number;
15
51
  className?: string;
16
52
  }
17
53
  /** `Modal` — centered dialog with mask. Renders into `document.body`. */
18
54
  declare const Modal: React.FC<ModalProps>;
19
- interface DrawerProps extends Omit<ModalProps, "width"> {
20
- /** Edge the drawer slides from. */
21
- placement?: "left" | "right" | "top" | "bottom";
22
- size?: number | string;
23
- }
24
- /** `Drawer` — slide-in panel from an edge. */
25
- declare const Drawer: React.FC<DrawerProps>;
26
55
 
27
- export { Drawer, type DrawerProps, Modal, type ModalProps };
56
+ export { Modal, type ModalProps };
package/dist/Modal.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Drawer, Modal } from './chunk-Q33V7MSK.js';
2
- import './chunk-5EYI27B6.js';
1
+ export { Modal } from './chunk-LSLYY5FN.js';
2
+ import './chunk-77BVQNAQ.js';
3
3
  import './chunk-GEYMWUW6.js';
4
4
  //# sourceMappingURL=Modal.js.map
5
5
  //# sourceMappingURL=Modal.js.map
@@ -33,3 +33,36 @@
33
33
  }
34
34
  .pagination .pg.disabled { color: var(--fg-subtle); cursor: not-allowed; box-shadow: var(--neu-flat); }
35
35
  .pagination .ellipsis { padding: 0 4px; color: var(--fg-subtle); }
36
+
37
+ /* size changer — compact Select inline with the page buttons */
38
+ .pagination .pg-size-changer { margin-left: 8px; min-width: 108px; }
39
+
40
+ /* quick jumper */
41
+ .pagination .pg-jumper {
42
+ display: inline-flex;
43
+ align-items: center;
44
+ gap: 6px;
45
+ margin-left: 8px;
46
+ color: var(--fg-muted);
47
+ font-size: 12px;
48
+ }
49
+ .pagination .pg-jumper-label { color: var(--fg-muted); }
50
+ .pagination .pg-jumper-input {
51
+ width: 44px;
52
+ height: 28px;
53
+ padding: 0 8px;
54
+ border: none;
55
+ border-radius: var(--r-sm);
56
+ background: var(--bg);
57
+ box-shadow: var(--neu-in-sm);
58
+ color: var(--fg);
59
+ font-family: inherit;
60
+ font-size: 12px;
61
+ font-variant-numeric: tabular-nums;
62
+ text-align: center;
63
+ outline: none;
64
+ transition: box-shadow var(--dur-fast) var(--ease);
65
+ }
66
+ .pagination .pg-jumper-input:focus-visible {
67
+ box-shadow: var(--neu-in-sm), 0 0 0 2px var(--accent-glow);
68
+ }
@@ -1,13 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkIGHLSNXT_cjs = require('./chunk-IGHLSNXT.cjs');
3
+ var chunkK7PVJLW4_cjs = require('./chunk-K7PVJLW4.cjs');
4
+ require('./chunk-EPFYIR63.cjs');
5
+ require('./chunk-URF6RBW6.cjs');
6
+ require('./chunk-RZ2E3XEU.cjs');
4
7
  require('./chunk-YVO7XO4W.cjs');
5
8
 
6
9
 
7
10
 
8
11
  Object.defineProperty(exports, "Pagination", {
9
12
  enumerable: true,
10
- get: function () { return chunkIGHLSNXT_cjs.Pagination; }
13
+ get: function () { return chunkK7PVJLW4_cjs.Pagination; }
11
14
  });
12
15
  //# sourceMappingURL=Pagination.cjs.map
13
16
  //# sourceMappingURL=Pagination.cjs.map
@@ -11,6 +11,20 @@ interface PaginationProps {
11
11
  onChange?: (page: number) => void;
12
12
  /** Max visible page buttons (before ellipsis logic). */
13
13
  siblings?: number;
14
+ /**
15
+ * Render a "跳至 N 页" input to the right of the page buttons. Enter key commits
16
+ * and clamps to `1..totalPages`.
17
+ */
18
+ showQuickJumper?: boolean;
19
+ /**
20
+ * Render a Select to let the user switch the page size. Resetting the size sends the
21
+ * user back to page 1 and calls both `onShowSizeChange` and `onChange(1)`.
22
+ */
23
+ showSizeChanger?: boolean;
24
+ /** Page size choices for `showSizeChanger`. Defaults to `[10, 20, 50, 100]`. */
25
+ pageSizeOptions?: number[];
26
+ /** Fires when the user picks a new page size via the size changer. */
27
+ onShowSizeChange?: (current: number, size: number) => void;
14
28
  className?: string;
15
29
  }
16
30
  /** `Pagination` — page number controls. */
@@ -11,6 +11,20 @@ interface PaginationProps {
11
11
  onChange?: (page: number) => void;
12
12
  /** Max visible page buttons (before ellipsis logic). */
13
13
  siblings?: number;
14
+ /**
15
+ * Render a "跳至 N 页" input to the right of the page buttons. Enter key commits
16
+ * and clamps to `1..totalPages`.
17
+ */
18
+ showQuickJumper?: boolean;
19
+ /**
20
+ * Render a Select to let the user switch the page size. Resetting the size sends the
21
+ * user back to page 1 and calls both `onShowSizeChange` and `onChange(1)`.
22
+ */
23
+ showSizeChanger?: boolean;
24
+ /** Page size choices for `showSizeChanger`. Defaults to `[10, 20, 50, 100]`. */
25
+ pageSizeOptions?: number[];
26
+ /** Fires when the user picks a new page size via the size changer. */
27
+ onShowSizeChange?: (current: number, size: number) => void;
14
28
  className?: string;
15
29
  }
16
30
  /** `Pagination` — page number controls. */
@@ -1,4 +1,7 @@
1
- export { Pagination } from './chunk-XFRP2MBR.js';
1
+ export { Pagination } from './chunk-TYQ5CN2C.js';
2
+ import './chunk-ZVCMXDTP.js';
3
+ import './chunk-AJZKESHB.js';
4
+ import './chunk-V2DIQ3RH.js';
2
5
  import './chunk-GEYMWUW6.js';
3
6
  //# sourceMappingURL=Pagination.js.map
4
7
  //# sourceMappingURL=Pagination.js.map
package/dist/Select.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkKGYLUZOU_cjs = require('./chunk-KGYLUZOU.cjs');
4
- require('./chunk-VMHNKD3N.cjs');
3
+ var chunkEPFYIR63_cjs = require('./chunk-EPFYIR63.cjs');
4
+ require('./chunk-URF6RBW6.cjs');
5
5
  require('./chunk-RZ2E3XEU.cjs');
6
6
  require('./chunk-YVO7XO4W.cjs');
7
7
 
@@ -9,7 +9,7 @@ require('./chunk-YVO7XO4W.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "Select", {
11
11
  enumerable: true,
12
- get: function () { return chunkKGYLUZOU_cjs.Select; }
12
+ get: function () { return chunkEPFYIR63_cjs.Select; }
13
13
  });
14
14
  //# sourceMappingURL=Select.cjs.map
15
15
  //# sourceMappingURL=Select.cjs.map
package/dist/Select.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Select } from './chunk-OYH6A7IQ.js';
2
- import './chunk-3QWHDCHJ.js';
1
+ export { Select } from './chunk-ZVCMXDTP.js';
2
+ import './chunk-AJZKESHB.js';
3
3
  import './chunk-V2DIQ3RH.js';
4
4
  import './chunk-GEYMWUW6.js';
5
5
  //# sourceMappingURL=Select.js.map
@@ -7,6 +7,7 @@
7
7
  align-items: center;
8
8
  cursor: pointer;
9
9
  }
10
+ .slider.has-marks { padding-bottom: 26px; }
10
11
  .slider.disabled { opacity: 0.5; cursor: not-allowed; }
11
12
  .slider-track {
12
13
  position: relative;
@@ -19,11 +20,11 @@
19
20
  }
20
21
  .slider-fill {
21
22
  position: absolute;
22
- top: 0; left: 0; bottom: 0;
23
+ top: 0; bottom: 0;
23
24
  background: linear-gradient(90deg, color-mix(in oklch, var(--accent) 70%, white), var(--accent));
24
25
  box-shadow: 0 0 12px var(--accent-glow);
25
26
  border-radius: 999px;
26
- transition: width var(--dur-fast) var(--ease);
27
+ transition: left var(--dur-fast) var(--ease), right var(--dur-fast) var(--ease);
27
28
  }
28
29
  .slider-thumb {
29
30
  position: absolute;
@@ -35,7 +36,10 @@
35
36
  transform: translate(-50%, -50%);
36
37
  transition: all var(--dur-fast) var(--ease);
37
38
  display: grid; place-items: center;
39
+ pointer-events: none;
38
40
  }
41
+ .slider.has-marks .slider-thumb { top: calc(50% - 13px); }
42
+ .slider.has-marks .slider-track { margin-top: -26px; }
39
43
  .slider-thumb::after {
40
44
  content: "";
41
45
  width: 6px; height: 6px;
@@ -49,7 +53,13 @@
49
53
  width: 100%; height: 100%;
50
54
  opacity: 0;
51
55
  cursor: inherit;
56
+ margin: 0;
57
+ pointer-events: auto;
52
58
  }
59
+ /* In range mode (two stacked inputs), split the hit zones by half so the user can drag either thumb */
60
+ .slider input[type="range"]:nth-of-type(1):not(:only-of-type) { right: 50%; }
61
+ .slider input[type="range"]:nth-of-type(2) { left: 50%; }
62
+ .slider.has-marks input[type="range"] { height: calc(100% - 26px); }
53
63
  .slider-value { font-family: var(--font-mono); font-size: 12px; color: var(--accent-ink); margin-left: 10px; }
54
64
  .slider.success .slider-fill { background: linear-gradient(90deg, color-mix(in oklch, var(--success) 70%, white), var(--success)); box-shadow: 0 0 10px color-mix(in oklch, var(--success) 35%, transparent); }
55
65
  .slider.success .slider-thumb::after { background: var(--success); }
@@ -57,3 +67,42 @@
57
67
  .slider.warning .slider-thumb::after { background: var(--warning); }
58
68
  .slider.danger .slider-fill { background: linear-gradient(90deg, color-mix(in oklch, var(--danger) 70%, white), var(--danger)); box-shadow: 0 0 10px color-mix(in oklch, var(--danger) 35%, transparent); }
59
69
  .slider.danger .slider-thumb::after { background: var(--danger); }
70
+
71
+ /* Marks */
72
+ .slider-marks {
73
+ position: absolute;
74
+ left: 0; right: 0;
75
+ bottom: 0;
76
+ height: 22px;
77
+ pointer-events: none;
78
+ }
79
+ .slider-mark {
80
+ position: absolute;
81
+ transform: translateX(-50%);
82
+ display: inline-flex;
83
+ flex-direction: column;
84
+ align-items: center;
85
+ gap: 4px;
86
+ pointer-events: auto;
87
+ cursor: pointer;
88
+ color: var(--fg-subtle);
89
+ font-size: 11px;
90
+ user-select: none;
91
+ }
92
+ .slider-mark-dot {
93
+ width: 6px; height: 6px;
94
+ border-radius: 999px;
95
+ background: var(--bg);
96
+ box-shadow: var(--neu-in-sm);
97
+ margin-top: -18px;
98
+ position: relative;
99
+ z-index: 1;
100
+ }
101
+ .slider-mark.active .slider-mark-dot { background: var(--accent); box-shadow: 0 0 6px var(--accent-glow); }
102
+ .slider.success .slider-mark.active .slider-mark-dot { background: var(--success); box-shadow: 0 0 6px color-mix(in oklch, var(--success) 35%, transparent); }
103
+ .slider.warning .slider-mark.active .slider-mark-dot { background: var(--warning); box-shadow: 0 0 6px color-mix(in oklch, var(--warning) 35%, transparent); }
104
+ .slider.danger .slider-mark.active .slider-mark-dot { background: var(--danger); box-shadow: 0 0 6px color-mix(in oklch, var(--danger) 35%, transparent); }
105
+ .slider-mark-label { white-space: nowrap; }
106
+ .slider-mark.active .slider-mark-label { color: var(--accent-ink); font-weight: 500; }
107
+ .slider-mark:hover .slider-mark-label { color: var(--fg); }
108
+ .slider.disabled .slider-mark { pointer-events: none; }
package/dist/Slider.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkIBZAGURN_cjs = require('./chunk-IBZAGURN.cjs');
3
+ var chunkPBBHUUXU_cjs = require('./chunk-PBBHUUXU.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "Slider", {
8
8
  enumerable: true,
9
- get: function () { return chunkIBZAGURN_cjs.Slider; }
9
+ get: function () { return chunkPBBHUUXU_cjs.Slider; }
10
10
  });
11
11
  //# sourceMappingURL=Slider.cjs.map
12
12
  //# sourceMappingURL=Slider.cjs.map
package/dist/Slider.d.cts CHANGED
@@ -1,18 +1,33 @@
1
1
  import * as React from 'react';
2
2
 
3
- interface SliderProps {
4
- value?: number;
5
- defaultValue?: number;
6
- onChange?: (value: number) => void;
3
+ type SliderSingleValue = number;
4
+ type SliderRangeValue = [number, number];
5
+ type SliderValue = SliderSingleValue | SliderRangeValue;
6
+ interface SliderBaseProps {
7
7
  min?: number;
8
8
  max?: number;
9
9
  step?: number;
10
10
  disabled?: boolean;
11
11
  showValue?: boolean;
12
12
  tone?: "accent" | "success" | "warning" | "danger";
13
+ /** Tick marks with labels. Clicking a mark snaps to it. */
14
+ marks?: Record<number, React.ReactNode>;
13
15
  className?: string;
14
16
  }
17
+ interface SliderSingleProps extends SliderBaseProps {
18
+ range?: false;
19
+ value?: number;
20
+ defaultValue?: number;
21
+ onChange?: (value: number) => void;
22
+ }
23
+ interface SliderRangeProps extends SliderBaseProps {
24
+ range: true;
25
+ value?: SliderRangeValue;
26
+ defaultValue?: SliderRangeValue;
27
+ onChange?: (value: SliderRangeValue) => void;
28
+ }
29
+ type SliderProps = SliderSingleProps | SliderRangeProps;
15
30
  /** `Slider` — neumorphic range input with grooved track. */
16
31
  declare const Slider: React.FC<SliderProps>;
17
32
 
18
- export { Slider, type SliderProps };
33
+ export { Slider, type SliderProps, type SliderRangeProps, type SliderRangeValue, type SliderSingleProps, type SliderSingleValue, type SliderValue };
package/dist/Slider.d.ts CHANGED
@@ -1,18 +1,33 @@
1
1
  import * as React from 'react';
2
2
 
3
- interface SliderProps {
4
- value?: number;
5
- defaultValue?: number;
6
- onChange?: (value: number) => void;
3
+ type SliderSingleValue = number;
4
+ type SliderRangeValue = [number, number];
5
+ type SliderValue = SliderSingleValue | SliderRangeValue;
6
+ interface SliderBaseProps {
7
7
  min?: number;
8
8
  max?: number;
9
9
  step?: number;
10
10
  disabled?: boolean;
11
11
  showValue?: boolean;
12
12
  tone?: "accent" | "success" | "warning" | "danger";
13
+ /** Tick marks with labels. Clicking a mark snaps to it. */
14
+ marks?: Record<number, React.ReactNode>;
13
15
  className?: string;
14
16
  }
17
+ interface SliderSingleProps extends SliderBaseProps {
18
+ range?: false;
19
+ value?: number;
20
+ defaultValue?: number;
21
+ onChange?: (value: number) => void;
22
+ }
23
+ interface SliderRangeProps extends SliderBaseProps {
24
+ range: true;
25
+ value?: SliderRangeValue;
26
+ defaultValue?: SliderRangeValue;
27
+ onChange?: (value: SliderRangeValue) => void;
28
+ }
29
+ type SliderProps = SliderSingleProps | SliderRangeProps;
15
30
  /** `Slider` — neumorphic range input with grooved track. */
16
31
  declare const Slider: React.FC<SliderProps>;
17
32
 
18
- export { Slider, type SliderProps };
33
+ export { Slider, type SliderProps, type SliderRangeProps, type SliderRangeValue, type SliderSingleProps, type SliderSingleValue, type SliderValue };
package/dist/Slider.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Slider } from './chunk-7UJI437T.js';
1
+ export { Slider } from './chunk-437LB2V4.js';
2
2
  //# sourceMappingURL=Slider.js.map
3
3
  //# sourceMappingURL=Slider.js.map
@@ -0,0 +1,92 @@
1
+ /* ============ Switch ============ */
2
+ .switch {
3
+ --w: 46px;
4
+ --h: 26px;
5
+ display: inline-flex;
6
+ align-items: center;
7
+ gap: 10px;
8
+ font-size: 13px;
9
+ color: var(--fg);
10
+ cursor: pointer;
11
+ user-select: none;
12
+ }
13
+ .switch.disabled { opacity: 0.5; cursor: not-allowed; }
14
+ .switch-track {
15
+ position: relative;
16
+ width: var(--w);
17
+ height: var(--h);
18
+ border: none;
19
+ padding: 0;
20
+ border-radius: 999px;
21
+ background: var(--bg);
22
+ box-shadow: var(--neu-in-sm);
23
+ cursor: inherit;
24
+ flex-shrink: 0;
25
+ transition: all var(--dur) var(--ease);
26
+ }
27
+ .switch.sm { --w: 36px; --h: 20px; }
28
+ .switch.lg { --w: 58px; --h: 32px; }
29
+ /* When checkedChildren / unCheckedChildren are present, widen the track to fit. */
30
+ .switch.with-children { --w: 60px; }
31
+ .switch.with-children.sm { --w: 46px; }
32
+ .switch.with-children.lg { --w: 74px; }
33
+
34
+ .switch-thumb {
35
+ position: absolute;
36
+ top: 3px;
37
+ left: 3px;
38
+ width: calc(var(--h) - 6px);
39
+ height: calc(var(--h) - 6px);
40
+ border-radius: 999px;
41
+ background: var(--bg-raised);
42
+ box-shadow: var(--neu-out-sm);
43
+ transition: all var(--dur) var(--ease);
44
+ z-index: 1;
45
+ }
46
+ .switch.on .switch-thumb {
47
+ transform: translateX(calc(var(--w) - var(--h)));
48
+ background: var(--accent);
49
+ box-shadow: 0 2px 8px var(--accent-glow), 0 0 0 1px color-mix(in oklch, var(--accent) 40%, transparent);
50
+ }
51
+
52
+ /* Inline content (checkedChildren / unCheckedChildren) */
53
+ .switch-inner {
54
+ position: absolute;
55
+ inset: 0;
56
+ display: flex;
57
+ align-items: center;
58
+ font-size: 11px;
59
+ font-weight: 500;
60
+ font-family: inherit;
61
+ line-height: 1;
62
+ pointer-events: none;
63
+ }
64
+ .switch.sm .switch-inner { font-size: 10px; }
65
+ .switch-inner-on,
66
+ .switch-inner-off {
67
+ position: absolute;
68
+ display: inline-flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease);
72
+ }
73
+ /* Checked label sits on the left side of the track (thumb pushes right). */
74
+ .switch-inner-on {
75
+ left: 8px;
76
+ right: calc(var(--h) - 2px);
77
+ color: white;
78
+ opacity: 0;
79
+ transform: translateX(-4px);
80
+ }
81
+ /* Unchecked label sits on the right side (thumb is at left). */
82
+ .switch-inner-off {
83
+ right: 8px;
84
+ left: calc(var(--h) - 2px);
85
+ color: var(--fg-muted);
86
+ opacity: 1;
87
+ transform: translateX(0);
88
+ }
89
+ .switch.sm .switch-inner-on { left: 5px; right: calc(var(--h) - 2px); }
90
+ .switch.sm .switch-inner-off { right: 5px; left: calc(var(--h) - 2px); }
91
+ .switch.on .switch-inner-on { opacity: 1; transform: translateX(0); }
92
+ .switch.on .switch-inner-off { opacity: 0; transform: translateX(4px); }
package/dist/Switch.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkALFDP5WX_cjs = require('./chunk-ALFDP5WX.cjs');
3
+ var chunkIDM6JJLP_cjs = require('./chunk-IDM6JJLP.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "Switch", {
8
8
  enumerable: true,
9
- get: function () { return chunkALFDP5WX_cjs.Switch; }
9
+ get: function () { return chunkIDM6JJLP_cjs.Switch; }
10
10
  });
11
11
  //# sourceMappingURL=Switch.cjs.map
12
12
  //# sourceMappingURL=Switch.cjs.map
package/dist/Switch.d.cts CHANGED
@@ -7,6 +7,10 @@ interface SwitchProps {
7
7
  disabled?: boolean;
8
8
  label?: React.ReactNode;
9
9
  size?: "sm" | "md";
10
+ /** Content rendered inside the track when checked (short text or icon). */
11
+ checkedChildren?: React.ReactNode;
12
+ /** Content rendered inside the track when unchecked. */
13
+ unCheckedChildren?: React.ReactNode;
10
14
  className?: string;
11
15
  id?: string;
12
16
  }
package/dist/Switch.d.ts CHANGED
@@ -7,6 +7,10 @@ interface SwitchProps {
7
7
  disabled?: boolean;
8
8
  label?: React.ReactNode;
9
9
  size?: "sm" | "md";
10
+ /** Content rendered inside the track when checked (short text or icon). */
11
+ checkedChildren?: React.ReactNode;
12
+ /** Content rendered inside the track when unchecked. */
13
+ unCheckedChildren?: React.ReactNode;
10
14
  className?: string;
11
15
  id?: string;
12
16
  }
package/dist/Switch.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Switch } from './chunk-HTP6UEVR.js';
1
+ export { Switch } from './chunk-BBPNQ44M.js';
2
2
  //# sourceMappingURL=Switch.js.map
3
3
  //# sourceMappingURL=Switch.js.map