@fangxinyan/lumina 0.3.0 → 0.5.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 (171) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.js +2 -2
  3. package/dist/Alert.cjs +3 -3
  4. package/dist/Alert.js +2 -2
  5. package/dist/AutoComplete-P5KZMZO5.css +54 -0
  6. package/dist/AutoComplete.cjs +15 -0
  7. package/dist/AutoComplete.cjs.map +1 -0
  8. package/dist/AutoComplete.d.cts +51 -0
  9. package/dist/AutoComplete.d.ts +51 -0
  10. package/dist/AutoComplete.js +6 -0
  11. package/dist/AutoComplete.js.map +1 -0
  12. package/dist/Button.cjs +4 -4
  13. package/dist/Button.js +2 -2
  14. package/dist/Calendar.cjs +3 -3
  15. package/dist/Calendar.js +2 -2
  16. package/dist/Cascader.cjs +3 -3
  17. package/dist/Cascader.js +2 -2
  18. package/dist/Checkbox.cjs +4 -4
  19. package/dist/Checkbox.js +2 -2
  20. package/dist/CommandPalette.cjs +4 -4
  21. package/dist/CommandPalette.js +3 -3
  22. package/dist/Drawer.cjs +3 -3
  23. package/dist/Drawer.js +2 -2
  24. package/dist/Form-5GRVZNDO.css +67 -0
  25. package/dist/Form.cjs +20 -0
  26. package/dist/Form.cjs.map +1 -0
  27. package/dist/Form.d.cts +85 -0
  28. package/dist/Form.d.ts +85 -0
  29. package/dist/Form.js +3 -0
  30. package/dist/Form.js.map +1 -0
  31. package/dist/Icon.cjs +3 -3
  32. package/dist/Icon.d.cts +1 -1
  33. package/dist/Icon.d.ts +1 -1
  34. package/dist/Icon.js +1 -1
  35. package/dist/Image.cjs +4 -4
  36. package/dist/Image.js +2 -2
  37. package/dist/Input.cjs +4 -4
  38. package/dist/Input.js +2 -2
  39. package/dist/InputNumber-VXQIWLQC.css +40 -0
  40. package/dist/InputNumber.cjs +14 -0
  41. package/dist/InputNumber.cjs.map +1 -0
  42. package/dist/InputNumber.d.cts +46 -0
  43. package/dist/InputNumber.d.ts +46 -0
  44. package/dist/InputNumber.js +5 -0
  45. package/dist/InputNumber.js.map +1 -0
  46. package/dist/Modal.cjs +4 -4
  47. package/dist/Modal.js +3 -3
  48. package/dist/Pagination.cjs +5 -5
  49. package/dist/Pagination.js +4 -4
  50. package/dist/Select.cjs +4 -4
  51. package/dist/Select.js +3 -3
  52. package/dist/{Slider-X4PVA65R.css → Slider-3JKA5EW6.css} +44 -25
  53. package/dist/Slider.cjs +2 -2
  54. package/dist/Slider.d.cts +8 -5
  55. package/dist/Slider.d.ts +8 -5
  56. package/dist/Slider.js +1 -1
  57. package/dist/Table.cjs +8 -8
  58. package/dist/Table.js +6 -6
  59. package/dist/Tag.cjs +4 -4
  60. package/dist/Tag.js +2 -2
  61. package/dist/Toast.cjs +4 -4
  62. package/dist/Toast.js +2 -2
  63. package/dist/Typography.cjs +7 -7
  64. package/dist/Typography.js +2 -2
  65. package/dist/{chunk-RIDCBNCM.cjs → chunk-2ENTRT7R.cjs} +5 -5
  66. package/dist/{chunk-RIDCBNCM.cjs.map → chunk-2ENTRT7R.cjs.map} +1 -1
  67. package/dist/chunk-2TZ2R7L2.js +235 -0
  68. package/dist/chunk-2TZ2R7L2.js.map +1 -0
  69. package/dist/{chunk-24FAK7QU.cjs → chunk-3BZ47QNV.cjs} +7 -7
  70. package/dist/{chunk-24FAK7QU.cjs.map → chunk-3BZ47QNV.cjs.map} +1 -1
  71. package/dist/{chunk-URLSZPS5.js → chunk-6XZ362VL.js} +4 -4
  72. package/dist/{chunk-URLSZPS5.js.map → chunk-6XZ362VL.js.map} +1 -1
  73. package/dist/{chunk-XDFZRV3V.js → chunk-6Z24VO3K.js} +3 -3
  74. package/dist/{chunk-XDFZRV3V.js.map → chunk-6Z24VO3K.js.map} +1 -1
  75. package/dist/{chunk-AWLBLRQX.cjs → chunk-77TZHI76.cjs} +7 -7
  76. package/dist/{chunk-AWLBLRQX.cjs.map → chunk-77TZHI76.cjs.map} +1 -1
  77. package/dist/{chunk-TMZVX6NO.js → chunk-7M7NAMR5.js} +3 -3
  78. package/dist/{chunk-TMZVX6NO.js.map → chunk-7M7NAMR5.js.map} +1 -1
  79. package/dist/{chunk-WQFC5EMC.js → chunk-AESLEYST.js} +4 -4
  80. package/dist/{chunk-WQFC5EMC.js.map → chunk-AESLEYST.js.map} +1 -1
  81. package/dist/chunk-BCPAY65C.cjs +169 -0
  82. package/dist/chunk-BCPAY65C.cjs.map +1 -0
  83. package/dist/{chunk-XZ22B3NW.js → chunk-CTYW42GG.js} +5 -5
  84. package/dist/{chunk-XZ22B3NW.js.map → chunk-CTYW42GG.js.map} +1 -1
  85. package/dist/chunk-E62JFAHW.js +147 -0
  86. package/dist/chunk-E62JFAHW.js.map +1 -0
  87. package/dist/{chunk-U5BZ7E3F.js → chunk-FXQGPHK2.js} +3 -3
  88. package/dist/{chunk-U5BZ7E3F.js.map → chunk-FXQGPHK2.js.map} +1 -1
  89. package/dist/{chunk-3HNRKO3M.cjs → chunk-HJIKU6MF.cjs} +4 -4
  90. package/dist/{chunk-3HNRKO3M.cjs.map → chunk-HJIKU6MF.cjs.map} +1 -1
  91. package/dist/{chunk-EHO2JH2L.cjs → chunk-HXSAH4Y6.cjs} +7 -7
  92. package/dist/{chunk-EHO2JH2L.cjs.map → chunk-HXSAH4Y6.cjs.map} +1 -1
  93. package/dist/{chunk-3LI6QH2Q.js → chunk-I7WLFADD.js} +3 -3
  94. package/dist/{chunk-3LI6QH2Q.js.map → chunk-I7WLFADD.js.map} +1 -1
  95. package/dist/chunk-IHACXMOI.js +307 -0
  96. package/dist/chunk-IHACXMOI.js.map +1 -0
  97. package/dist/{chunk-AGN3JSUH.cjs → chunk-IJA26LRY.cjs} +4 -4
  98. package/dist/{chunk-AGN3JSUH.cjs.map → chunk-IJA26LRY.cjs.map} +1 -1
  99. package/dist/chunk-IOWREUEP.js +170 -0
  100. package/dist/chunk-IOWREUEP.js.map +1 -0
  101. package/dist/{chunk-5UOBYRYJ.js → chunk-JXHMJUVI.js} +3 -3
  102. package/dist/{chunk-5UOBYRYJ.js.map → chunk-JXHMJUVI.js.map} +1 -1
  103. package/dist/{chunk-TY5EAKEI.js → chunk-KW7Z4IQC.js} +3 -3
  104. package/dist/{chunk-TY5EAKEI.js.map → chunk-KW7Z4IQC.js.map} +1 -1
  105. package/dist/{chunk-276NALYW.js → chunk-LXNR6TQK.js} +3 -3
  106. package/dist/{chunk-276NALYW.js.map → chunk-LXNR6TQK.js.map} +1 -1
  107. package/dist/{chunk-WREHBIJ5.cjs → chunk-MDQNUKCP.cjs} +12 -12
  108. package/dist/{chunk-WREHBIJ5.cjs.map → chunk-MDQNUKCP.cjs.map} +1 -1
  109. package/dist/chunk-N6ZLZUBF.cjs +257 -0
  110. package/dist/chunk-N6ZLZUBF.cjs.map +1 -0
  111. package/dist/{chunk-GOIQR4OH.cjs → chunk-N73JGXYZ.cjs} +4 -4
  112. package/dist/{chunk-GOIQR4OH.cjs.map → chunk-N73JGXYZ.cjs.map} +1 -1
  113. package/dist/{chunk-MFWOBALK.cjs → chunk-NN7WMXY4.cjs} +4 -4
  114. package/dist/{chunk-MFWOBALK.cjs.map → chunk-NN7WMXY4.cjs.map} +1 -1
  115. package/dist/{chunk-U4K7HOMW.js → chunk-O7C6S644.js} +3 -3
  116. package/dist/{chunk-U4K7HOMW.js.map → chunk-O7C6S644.js.map} +1 -1
  117. package/dist/{chunk-YXKJOPYT.js → chunk-OM76QWUN.js} +3 -3
  118. package/dist/{chunk-YXKJOPYT.js.map → chunk-OM76QWUN.js.map} +1 -1
  119. package/dist/{chunk-Q2EXOT4B.js → chunk-PKXXR76Q.js} +3 -3
  120. package/dist/{chunk-Q2EXOT4B.js.map → chunk-PKXXR76Q.js.map} +1 -1
  121. package/dist/{chunk-GEYMWUW6.js → chunk-QOGROEVD.js} +23 -5
  122. package/dist/chunk-QOGROEVD.js.map +1 -0
  123. package/dist/chunk-QVFEKGKI.cjs +331 -0
  124. package/dist/chunk-QVFEKGKI.cjs.map +1 -0
  125. package/dist/{chunk-HNVRMOL3.cjs → chunk-RQV7SMIZ.cjs} +5 -5
  126. package/dist/{chunk-HNVRMOL3.cjs.map → chunk-RQV7SMIZ.cjs.map} +1 -1
  127. package/dist/{chunk-RSZNFKCQ.cjs → chunk-RWHWEQQX.cjs} +6 -6
  128. package/dist/{chunk-RSZNFKCQ.cjs.map → chunk-RWHWEQQX.cjs.map} +1 -1
  129. package/dist/{chunk-AR4M7QGF.cjs → chunk-SMHXSEBD.cjs} +7 -7
  130. package/dist/{chunk-AR4M7QGF.cjs.map → chunk-SMHXSEBD.cjs.map} +1 -1
  131. package/dist/{chunk-RVSWH4RH.cjs → chunk-T4PI2ZX7.cjs} +14 -14
  132. package/dist/{chunk-RVSWH4RH.cjs.map → chunk-T4PI2ZX7.cjs.map} +1 -1
  133. package/dist/{chunk-MTCLJHXU.js → chunk-TZLM5GF4.js} +4 -4
  134. package/dist/{chunk-MTCLJHXU.js.map → chunk-TZLM5GF4.js.map} +1 -1
  135. package/dist/{chunk-CALRTZZ7.cjs → chunk-TZXEZFCI.cjs} +5 -5
  136. package/dist/{chunk-CALRTZZ7.cjs.map → chunk-TZXEZFCI.cjs.map} +1 -1
  137. package/dist/chunk-VQBZKRIB.cjs +192 -0
  138. package/dist/chunk-VQBZKRIB.cjs.map +1 -0
  139. package/dist/{chunk-WBMF7WM3.js → chunk-WUOFJPZ4.js} +3 -3
  140. package/dist/{chunk-WBMF7WM3.js.map → chunk-WUOFJPZ4.js.map} +1 -1
  141. package/dist/{chunk-SVVB6POY.cjs → chunk-WVBFQB26.cjs} +6 -6
  142. package/dist/{chunk-SVVB6POY.cjs.map → chunk-WVBFQB26.cjs.map} +1 -1
  143. package/dist/{chunk-DBJIK4JE.js → chunk-XCYE4OQV.js} +3 -3
  144. package/dist/{chunk-DBJIK4JE.js.map → chunk-XCYE4OQV.js.map} +1 -1
  145. package/dist/{chunk-7JYI5THC.cjs → chunk-XYVJ3FBQ.cjs} +5 -5
  146. package/dist/{chunk-7JYI5THC.cjs.map → chunk-XYVJ3FBQ.cjs.map} +1 -1
  147. package/dist/{chunk-YVO7XO4W.cjs → chunk-YCHUHMNP.cjs} +22 -4
  148. package/dist/chunk-YCHUHMNP.cjs.map +1 -0
  149. package/dist/{chunk-MKR4X57L.cjs → chunk-YFBHVTKN.cjs} +7 -7
  150. package/dist/{chunk-MKR4X57L.cjs.map → chunk-YFBHVTKN.cjs.map} +1 -1
  151. package/dist/{chunk-NGQDVJH3.js → chunk-ZFJHUOFU.js} +3 -3
  152. package/dist/{chunk-NGQDVJH3.js.map → chunk-ZFJHUOFU.js.map} +1 -1
  153. package/dist/index.cjs +131 -108
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.d.cts +5 -2
  156. package/dist/index.d.ts +5 -2
  157. package/dist/index.js +29 -26
  158. package/dist/index.js.map +1 -1
  159. package/dist/styles.css +38 -25
  160. package/docs/llms/autocomplete.md +56 -0
  161. package/docs/llms/form.md +147 -0
  162. package/docs/llms/inputnumber.md +57 -0
  163. package/docs/llms/slider.md +13 -2
  164. package/docs/llms.md +6 -3
  165. package/package.json +1 -1
  166. package/dist/chunk-B5JH7NRZ.cjs +0 -133
  167. package/dist/chunk-B5JH7NRZ.cjs.map +0 -1
  168. package/dist/chunk-GEYMWUW6.js.map +0 -1
  169. package/dist/chunk-QJGKI2BD.js +0 -111
  170. package/dist/chunk-QJGKI2BD.js.map +0 -1
  171. package/dist/chunk-YVO7XO4W.cjs.map +0 -1
package/dist/Slider.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
 
3
- type SliderSingleValue = number;
4
3
  type SliderRangeValue = [number, number];
5
- type SliderValue = SliderSingleValue | SliderRangeValue;
4
+ type SliderValue = number | SliderRangeValue;
6
5
  interface SliderBaseProps {
7
6
  min?: number;
8
7
  max?: number;
@@ -10,6 +9,8 @@ interface SliderBaseProps {
10
9
  disabled?: boolean;
11
10
  showValue?: boolean;
12
11
  tone?: "accent" | "success" | "warning" | "danger";
12
+ /** Custom gradient colors mapped from min→max. Overrides `tone` for fill & thumb. */
13
+ colors?: string[];
13
14
  /** Tick marks with labels. Clicking a mark snaps to it. */
14
15
  marks?: Record<number, React.ReactNode>;
15
16
  className?: string;
@@ -27,7 +28,9 @@ interface SliderRangeProps extends SliderBaseProps {
27
28
  onChange?: (value: SliderRangeValue) => void;
28
29
  }
29
30
  type SliderProps = SliderSingleProps | SliderRangeProps;
30
- /** `Slider` — neumorphic range input with grooved track. */
31
- declare const Slider: React.FC<SliderProps>;
31
+ /** `Slider` — neumorphic range input with grooved track.
32
+ * @example <Slider defaultValue={40} showValue />
33
+ */
34
+ declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
32
35
 
33
- export { Slider, type SliderProps, type SliderRangeProps, type SliderRangeValue, type SliderSingleProps, type SliderSingleValue, type SliderValue };
36
+ export { Slider, type SliderProps, type SliderRangeProps, type SliderRangeValue, type SliderSingleProps, type SliderValue };
package/dist/Slider.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Slider } from './chunk-QJGKI2BD.js';
1
+ export { Slider } from './chunk-2TZ2R7L2.js';
2
2
  //# sourceMappingURL=Slider.js.map
3
3
  //# sourceMappingURL=Slider.js.map
package/dist/Table.cjs CHANGED
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkWREHBIJ5_cjs = require('./chunk-WREHBIJ5.cjs');
4
- require('./chunk-AWLBLRQX.cjs');
5
- require('./chunk-RVSWH4RH.cjs');
6
- require('./chunk-HNVRMOL3.cjs');
7
- require('./chunk-MFWOBALK.cjs');
3
+ var chunkMDQNUKCP_cjs = require('./chunk-MDQNUKCP.cjs');
4
+ require('./chunk-77TZHI76.cjs');
5
+ require('./chunk-T4PI2ZX7.cjs');
6
+ require('./chunk-RQV7SMIZ.cjs');
7
+ require('./chunk-NN7WMXY4.cjs');
8
8
  require('./chunk-RZ2E3XEU.cjs');
9
- require('./chunk-YVO7XO4W.cjs');
9
+ require('./chunk-YCHUHMNP.cjs');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "Table", {
14
14
  enumerable: true,
15
- get: function () { return chunkWREHBIJ5_cjs.Table; }
15
+ get: function () { return chunkMDQNUKCP_cjs.Table; }
16
16
  });
17
17
  Object.defineProperty(exports, "TablePro", {
18
18
  enumerable: true,
19
- get: function () { return chunkWREHBIJ5_cjs.TablePro; }
19
+ get: function () { return chunkMDQNUKCP_cjs.TablePro; }
20
20
  });
21
21
  //# sourceMappingURL=Table.cjs.map
22
22
  //# sourceMappingURL=Table.cjs.map
package/dist/Table.js CHANGED
@@ -1,9 +1,9 @@
1
- export { Table, TablePro } from './chunk-XZ22B3NW.js';
2
- import './chunk-WQFC5EMC.js';
3
- import './chunk-URLSZPS5.js';
4
- import './chunk-276NALYW.js';
5
- import './chunk-Q2EXOT4B.js';
1
+ export { Table, TablePro } from './chunk-CTYW42GG.js';
2
+ import './chunk-AESLEYST.js';
3
+ import './chunk-6XZ362VL.js';
4
+ import './chunk-LXNR6TQK.js';
5
+ import './chunk-PKXXR76Q.js';
6
6
  import './chunk-V2DIQ3RH.js';
7
- import './chunk-GEYMWUW6.js';
7
+ import './chunk-QOGROEVD.js';
8
8
  //# sourceMappingURL=Table.js.map
9
9
  //# sourceMappingURL=Table.js.map
package/dist/Tag.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkHNVRMOL3_cjs = require('./chunk-HNVRMOL3.cjs');
4
- require('./chunk-YVO7XO4W.cjs');
3
+ var chunkRQV7SMIZ_cjs = require('./chunk-RQV7SMIZ.cjs');
4
+ require('./chunk-YCHUHMNP.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Badge", {
9
9
  enumerable: true,
10
- get: function () { return chunkHNVRMOL3_cjs.Badge; }
10
+ get: function () { return chunkRQV7SMIZ_cjs.Badge; }
11
11
  });
12
12
  Object.defineProperty(exports, "Tag", {
13
13
  enumerable: true,
14
- get: function () { return chunkHNVRMOL3_cjs.Tag; }
14
+ get: function () { return chunkRQV7SMIZ_cjs.Tag; }
15
15
  });
16
16
  //# sourceMappingURL=Tag.cjs.map
17
17
  //# sourceMappingURL=Tag.cjs.map
package/dist/Tag.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Badge, Tag } from './chunk-276NALYW.js';
2
- import './chunk-GEYMWUW6.js';
1
+ export { Badge, Tag } from './chunk-LXNR6TQK.js';
2
+ import './chunk-QOGROEVD.js';
3
3
  //# sourceMappingURL=Tag.js.map
4
4
  //# sourceMappingURL=Tag.js.map
package/dist/Toast.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkRIDCBNCM_cjs = require('./chunk-RIDCBNCM.cjs');
4
- require('./chunk-YVO7XO4W.cjs');
3
+ var chunk2ENTRT7R_cjs = require('./chunk-2ENTRT7R.cjs');
4
+ require('./chunk-YCHUHMNP.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "ToastContainer", {
9
9
  enumerable: true,
10
- get: function () { return chunkRIDCBNCM_cjs.ToastContainer; }
10
+ get: function () { return chunk2ENTRT7R_cjs.ToastContainer; }
11
11
  });
12
12
  Object.defineProperty(exports, "toast", {
13
13
  enumerable: true,
14
- get: function () { return chunkRIDCBNCM_cjs.toast; }
14
+ get: function () { return chunk2ENTRT7R_cjs.toast; }
15
15
  });
16
16
  //# sourceMappingURL=Toast.cjs.map
17
17
  //# sourceMappingURL=Toast.cjs.map
package/dist/Toast.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ToastContainer, toast } from './chunk-TMZVX6NO.js';
2
- import './chunk-GEYMWUW6.js';
1
+ export { ToastContainer, toast } from './chunk-7M7NAMR5.js';
2
+ import './chunk-QOGROEVD.js';
3
3
  //# sourceMappingURL=Toast.js.map
4
4
  //# sourceMappingURL=Toast.js.map
@@ -1,29 +1,29 @@
1
1
  'use strict';
2
2
 
3
- var chunk24FAK7QU_cjs = require('./chunk-24FAK7QU.cjs');
4
- require('./chunk-YVO7XO4W.cjs');
3
+ var chunk3BZ47QNV_cjs = require('./chunk-3BZ47QNV.cjs');
4
+ require('./chunk-YCHUHMNP.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Link", {
9
9
  enumerable: true,
10
- get: function () { return chunk24FAK7QU_cjs.Link; }
10
+ get: function () { return chunk3BZ47QNV_cjs.Link; }
11
11
  });
12
12
  Object.defineProperty(exports, "Paragraph", {
13
13
  enumerable: true,
14
- get: function () { return chunk24FAK7QU_cjs.Paragraph; }
14
+ get: function () { return chunk3BZ47QNV_cjs.Paragraph; }
15
15
  });
16
16
  Object.defineProperty(exports, "Text", {
17
17
  enumerable: true,
18
- get: function () { return chunk24FAK7QU_cjs.Text; }
18
+ get: function () { return chunk3BZ47QNV_cjs.Text; }
19
19
  });
20
20
  Object.defineProperty(exports, "Title", {
21
21
  enumerable: true,
22
- get: function () { return chunk24FAK7QU_cjs.Title; }
22
+ get: function () { return chunk3BZ47QNV_cjs.Title; }
23
23
  });
24
24
  Object.defineProperty(exports, "Typography", {
25
25
  enumerable: true,
26
- get: function () { return chunk24FAK7QU_cjs.Typography; }
26
+ get: function () { return chunk3BZ47QNV_cjs.Typography; }
27
27
  });
28
28
  //# sourceMappingURL=Typography.cjs.map
29
29
  //# sourceMappingURL=Typography.cjs.map
@@ -1,4 +1,4 @@
1
- export { Link, Paragraph, Text, Title, Typography } from './chunk-3LI6QH2Q.js';
2
- import './chunk-GEYMWUW6.js';
1
+ export { Link, Paragraph, Text, Title, Typography } from './chunk-I7WLFADD.js';
2
+ import './chunk-QOGROEVD.js';
3
3
  //# sourceMappingURL=Typography.js.map
4
4
  //# sourceMappingURL=Typography.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
3
+ var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Toast-6PVSAXQ5.css');
@@ -73,12 +73,12 @@ var ToastContainer = ({ placement = "top-right" }) => {
73
73
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `toast-container ${placement}`, children: list.map((t) => {
74
74
  const iconName = t.type === "success" ? "check2" : t.type === "warning" ? "alert" : t.type === "danger" ? "alert" : "info";
75
75
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `toast ${t.type}`, role: "status", children: [
76
- /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: iconName, size: 18, className: "toast-icon" }),
76
+ /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: iconName, size: 18, className: "toast-icon" }),
77
77
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "toast-body", children: [
78
78
  t.title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "toast-title", children: t.title }),
79
79
  t.message && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "toast-msg", children: t.message })
80
80
  ] }),
81
- /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "toast-close", onClick: () => toast.dismiss(t.id), "aria-label": "Dismiss", children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "x", size: 14 }) })
81
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "toast-close", onClick: () => toast.dismiss(t.id), "aria-label": "Dismiss", children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "x", size: 14 }) })
82
82
  ] }, t.id);
83
83
  }) }),
84
84
  document.body
@@ -87,5 +87,5 @@ var ToastContainer = ({ placement = "top-right" }) => {
87
87
 
88
88
  exports.ToastContainer = ToastContainer;
89
89
  exports.toast = toast;
90
- //# sourceMappingURL=chunk-RIDCBNCM.cjs.map
91
- //# sourceMappingURL=chunk-RIDCBNCM.cjs.map
90
+ //# sourceMappingURL=chunk-2ENTRT7R.cjs.map
91
+ //# sourceMappingURL=chunk-2ENTRT7R.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Toast/Toast.tsx"],"names":["React","ReactDOM","jsx","jsxs","Icon"],"mappings":"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","file":"chunk-RIDCBNCM.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Toast.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\n\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ToastItem {\n id: number;\n type: ToastType;\n title?: React.ReactNode;\n message?: React.ReactNode;\n duration?: number;\n}\n\ntype ListenerState = ToastItem[];\nconst listeners = new Set<(s: ListenerState) => void>();\nlet items: ListenerState = [];\nlet uid = 0;\n\nfunction emit() {\n listeners.forEach((l) => l(items));\n}\n\nexport const toast = {\n show(t: Omit<ToastItem, \"id\">) {\n const id = ++uid;\n items = [...items, { ...t, id, duration: t.duration ?? 3200 }];\n emit();\n if (items[items.length - 1].duration! > 0) {\n setTimeout(() => toast.dismiss(id), items[items.length - 1].duration);\n }\n return id;\n },\n info: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"info\", message, title }),\n success: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"success\", message, title }),\n warn: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"warning\", message, title }),\n error: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"danger\", message, title }),\n dismiss(id: number) {\n items = items.filter((i) => i.id !== id);\n emit();\n },\n clear() {\n items = [];\n emit();\n },\n};\n\nexport interface ToastContainerProps {\n placement?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | \"top-center\";\n}\n\n/** `ToastContainer` — mount once at your app root; subscribes to `toast.*` calls. */\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ placement = \"top-right\" }) => {\n const [list, setList] = React.useState<ListenerState>(items);\n React.useEffect(() => {\n listeners.add(setList);\n return () => {\n listeners.delete(setList);\n };\n }, []);\n if (typeof document === \"undefined\") return null;\n return ReactDOM.createPortal(\n <div className={`toast-container ${placement}`}>\n {list.map((t) => {\n const iconName =\n t.type === \"success\" ? \"check2\" : t.type === \"warning\" ? \"alert\" : t.type === \"danger\" ? \"alert\" : \"info\";\n return (\n <div key={t.id} className={`toast ${t.type}`} role=\"status\">\n <Icon name={iconName} size={18} className=\"toast-icon\" />\n <div className=\"toast-body\">\n {t.title && <div className=\"toast-title\">{t.title}</div>}\n {t.message && <div className=\"toast-msg\">{t.message}</div>}\n </div>\n <button type=\"button\" className=\"toast-close\" onClick={() => toast.dismiss(t.id)} aria-label=\"Dismiss\">\n <Icon name=\"x\" size={14} />\n </button>\n </div>\n );\n })}\n </div>,\n document.body\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Toast/Toast.tsx"],"names":["React","ReactDOM","jsx","jsxs","Icon"],"mappings":"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","file":"chunk-2ENTRT7R.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Toast.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\n\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ToastItem {\n id: number;\n type: ToastType;\n title?: React.ReactNode;\n message?: React.ReactNode;\n duration?: number;\n}\n\ntype ListenerState = ToastItem[];\nconst listeners = new Set<(s: ListenerState) => void>();\nlet items: ListenerState = [];\nlet uid = 0;\n\nfunction emit() {\n listeners.forEach((l) => l(items));\n}\n\nexport const toast = {\n show(t: Omit<ToastItem, \"id\">) {\n const id = ++uid;\n items = [...items, { ...t, id, duration: t.duration ?? 3200 }];\n emit();\n if (items[items.length - 1].duration! > 0) {\n setTimeout(() => toast.dismiss(id), items[items.length - 1].duration);\n }\n return id;\n },\n info: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"info\", message, title }),\n success: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"success\", message, title }),\n warn: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"warning\", message, title }),\n error: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"danger\", message, title }),\n dismiss(id: number) {\n items = items.filter((i) => i.id !== id);\n emit();\n },\n clear() {\n items = [];\n emit();\n },\n};\n\nexport interface ToastContainerProps {\n placement?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | \"top-center\";\n}\n\n/** `ToastContainer` — mount once at your app root; subscribes to `toast.*` calls. */\nexport const ToastContainer: React.FC<ToastContainerProps> = ({ placement = \"top-right\" }) => {\n const [list, setList] = React.useState<ListenerState>(items);\n React.useEffect(() => {\n listeners.add(setList);\n return () => {\n listeners.delete(setList);\n };\n }, []);\n if (typeof document === \"undefined\") return null;\n return ReactDOM.createPortal(\n <div className={`toast-container ${placement}`}>\n {list.map((t) => {\n const iconName =\n t.type === \"success\" ? \"check2\" : t.type === \"warning\" ? \"alert\" : t.type === \"danger\" ? \"alert\" : \"info\";\n return (\n <div key={t.id} className={`toast ${t.type}`} role=\"status\">\n <Icon name={iconName} size={18} className=\"toast-icon\" />\n <div className=\"toast-body\">\n {t.title && <div className=\"toast-title\">{t.title}</div>}\n {t.message && <div className=\"toast-msg\">{t.message}</div>}\n </div>\n <button type=\"button\" className=\"toast-close\" onClick={() => toast.dismiss(t.id)} aria-label=\"Dismiss\">\n <Icon name=\"x\" size={14} />\n </button>\n </div>\n );\n })}\n </div>,\n document.body\n );\n};\n"]}
@@ -0,0 +1,235 @@
1
+ import './tokens-BIIUTPKN.css';
2
+ import './shared-NJHRNLRH.css';
3
+ import './Slider-3JKA5EW6.css';
4
+ import * as React from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ // src/components/Slider/Slider.tsx
8
+ function clamp(v, lo, hi) {
9
+ return Math.max(lo, Math.min(hi, v));
10
+ }
11
+ function snap(raw, step, min) {
12
+ return Math.round((raw - min) / step) * step + min;
13
+ }
14
+ function lerpColor(colors, t) {
15
+ const pos = Math.max(0, Math.min(1, t)) * (colors.length - 1);
16
+ const i = Math.min(Math.floor(pos), colors.length - 2);
17
+ const frac = pos - i;
18
+ if (frac === 0) return colors[i];
19
+ return `color-mix(in oklch, ${colors[i + 1]} ${Math.round(frac * 100)}%, ${colors[i]})`;
20
+ }
21
+ var Slider = React.forwardRef(
22
+ (props, ref) => {
23
+ const {
24
+ min = 0,
25
+ max = 100,
26
+ step = 1,
27
+ disabled,
28
+ showValue,
29
+ tone = "accent",
30
+ colors,
31
+ marks,
32
+ className = ""
33
+ } = props;
34
+ const range = props.range === true;
35
+ const controlled = props.value;
36
+ const defaultVal = props.defaultValue;
37
+ const onChange = props.onChange;
38
+ const initRef = React.useRef(
39
+ defaultVal !== void 0 ? Array.isArray(defaultVal) ? [...defaultVal] : [defaultVal] : range ? [min, max] : [min]
40
+ );
41
+ const [inner, setInner] = React.useState(initRef.current);
42
+ const isControlled = controlled !== void 0;
43
+ const vals = isControlled ? Array.isArray(controlled) ? controlled : [controlled] : inner;
44
+ const valsRef = React.useRef(vals);
45
+ valsRef.current = vals;
46
+ const trackRef = React.useRef(null);
47
+ const thumbEls = React.useRef([]);
48
+ const dragging = React.useRef(null);
49
+ const pct = (n) => (n - min) / (max - min) * 100;
50
+ const commit = React.useCallback(
51
+ (next) => {
52
+ if (!isControlled) setInner(next);
53
+ if (range) {
54
+ onChange?.([next[0], next[1]]);
55
+ } else {
56
+ onChange?.(next[0]);
57
+ }
58
+ },
59
+ [isControlled, range, onChange]
60
+ );
61
+ const setAt = React.useCallback(
62
+ (index, raw) => {
63
+ const snapped = snap(clamp(raw, min, max), step, min);
64
+ const clamped = clamp(snapped, min, max);
65
+ const out = [...valsRef.current];
66
+ out[index] = clamped;
67
+ if (range && out.length === 2 && out[0] > out[1]) out.sort((a, b) => a - b);
68
+ commit(out);
69
+ },
70
+ [min, max, step, range, commit]
71
+ );
72
+ const valFromX = React.useCallback(
73
+ (clientX) => {
74
+ const rect = trackRef.current?.getBoundingClientRect();
75
+ if (!rect) return min;
76
+ const ratio = clamp((clientX - rect.left) / rect.width, 0, 1);
77
+ return min + ratio * (max - min);
78
+ },
79
+ [min, max]
80
+ );
81
+ const closerIndex = React.useCallback(
82
+ (target) => {
83
+ const v = valsRef.current;
84
+ if (!range || v.length < 2) return 0;
85
+ const d0 = Math.abs(v[0] - target);
86
+ const d1 = Math.abs(v[1] - target);
87
+ if (d0 === d1) return target < v[0] ? 0 : 1;
88
+ return d0 < d1 ? 0 : 1;
89
+ },
90
+ [range]
91
+ );
92
+ const onPointerDown = React.useCallback(
93
+ (e) => {
94
+ if (disabled) return;
95
+ e.preventDefault();
96
+ const val = valFromX(e.clientX);
97
+ const idx = closerIndex(val);
98
+ dragging.current = idx;
99
+ setAt(idx, val);
100
+ trackRef.current?.setPointerCapture(e.pointerId);
101
+ thumbEls.current[idx]?.focus();
102
+ },
103
+ [disabled, valFromX, closerIndex, setAt]
104
+ );
105
+ const onPointerMove = React.useCallback(
106
+ (e) => {
107
+ if (dragging.current === null) return;
108
+ setAt(dragging.current, valFromX(e.clientX));
109
+ },
110
+ [valFromX, setAt]
111
+ );
112
+ const onPointerUp = React.useCallback(() => {
113
+ dragging.current = null;
114
+ }, []);
115
+ const handleKey = React.useCallback(
116
+ (index, e) => {
117
+ if (disabled) return;
118
+ let delta = 0;
119
+ if (e.key === "ArrowRight" || e.key === "ArrowUp") delta = step;
120
+ else if (e.key === "ArrowLeft" || e.key === "ArrowDown") delta = -step;
121
+ else if (e.key === "Home") {
122
+ setAt(index, min);
123
+ return;
124
+ } else if (e.key === "End") {
125
+ setAt(index, max);
126
+ return;
127
+ } else return;
128
+ e.preventDefault();
129
+ setAt(index, valsRef.current[index] + delta);
130
+ },
131
+ [disabled, step, min, max, setAt]
132
+ );
133
+ const handleMarkClick = React.useCallback(
134
+ (mark) => {
135
+ if (disabled) return;
136
+ setAt(closerIndex(mark), mark);
137
+ },
138
+ [disabled, closerIndex, setAt]
139
+ );
140
+ const fillLeft = range ? pct(Math.min(vals[0], vals[1])) : 0;
141
+ const fillRight = range ? 100 - pct(Math.max(vals[0], vals[1])) : 100 - pct(vals[0]);
142
+ const hasGradient = colors && colors.length >= 2;
143
+ const fillStyle = {
144
+ left: `${fillLeft}%`,
145
+ right: `${fillRight}%`
146
+ };
147
+ if (hasGradient) {
148
+ const w = 100 - fillLeft - fillRight;
149
+ if (w > 0) {
150
+ const stops = colors.map((c, i) => {
151
+ const orig = i / (colors.length - 1) * 100;
152
+ return `${c} ${((orig - fillLeft) / w * 100).toFixed(2)}%`;
153
+ }).join(", ");
154
+ fillStyle.background = `linear-gradient(to right, ${stops})`;
155
+ fillStyle.boxShadow = "none";
156
+ }
157
+ }
158
+ return /* @__PURE__ */ jsxs(
159
+ "div",
160
+ {
161
+ ref,
162
+ className: `slider ${range ? "range" : ""} ${hasGradient ? "gradient" : tone} ${disabled ? "disabled" : ""} ${marks ? "has-marks" : ""} ${className}`,
163
+ children: [
164
+ /* @__PURE__ */ jsxs("div", { className: "slider-rail", children: [
165
+ /* @__PURE__ */ jsx(
166
+ "div",
167
+ {
168
+ className: "slider-track",
169
+ ref: trackRef,
170
+ onPointerDown,
171
+ onPointerMove,
172
+ onPointerUp,
173
+ children: /* @__PURE__ */ jsx("div", { className: "slider-fill", style: fillStyle })
174
+ }
175
+ ),
176
+ vals.map((n, i) => {
177
+ const thumbStyle = { left: `${pct(n)}%` };
178
+ if (hasGradient) {
179
+ thumbStyle["--slider-thumb-color"] = lerpColor(colors, (n - min) / (max - min));
180
+ }
181
+ return /* @__PURE__ */ jsx(
182
+ "div",
183
+ {
184
+ ref: (el) => {
185
+ thumbEls.current[i] = el;
186
+ },
187
+ className: "slider-thumb",
188
+ style: thumbStyle,
189
+ role: "slider",
190
+ tabIndex: disabled ? -1 : 0,
191
+ "aria-valuemin": min,
192
+ "aria-valuemax": max,
193
+ "aria-valuenow": n,
194
+ "aria-disabled": disabled || void 0,
195
+ onKeyDown: (e) => handleKey(i, e),
196
+ onPointerDown: (e) => {
197
+ if (disabled) return;
198
+ e.preventDefault();
199
+ e.stopPropagation();
200
+ dragging.current = i;
201
+ trackRef.current?.setPointerCapture(e.pointerId);
202
+ e.currentTarget.focus();
203
+ }
204
+ },
205
+ i
206
+ );
207
+ }),
208
+ marks && /* @__PURE__ */ jsx("div", { className: "slider-marks", children: Object.entries(marks).map(([k, label]) => {
209
+ const n = Number(k);
210
+ const active = range ? n >= Math.min(vals[0], vals[1]) && n <= Math.max(vals[0], vals[1]) : n <= vals[0];
211
+ return /* @__PURE__ */ jsxs(
212
+ "span",
213
+ {
214
+ className: `slider-mark ${active ? "active" : ""}`,
215
+ style: { left: `${pct(n)}%` },
216
+ onClick: () => handleMarkClick(n),
217
+ children: [
218
+ /* @__PURE__ */ jsx("span", { className: "slider-mark-dot" }),
219
+ /* @__PURE__ */ jsx("span", { className: "slider-mark-label", children: label })
220
+ ]
221
+ },
222
+ k
223
+ );
224
+ }) })
225
+ ] }),
226
+ showValue && /* @__PURE__ */ jsx("span", { className: "slider-value", children: range ? `${vals[0]} \u2013 ${vals[1]}` : vals[0] })
227
+ ]
228
+ }
229
+ );
230
+ }
231
+ );
232
+
233
+ export { Slider };
234
+ //# sourceMappingURL=chunk-2TZ2R7L2.js.map
235
+ //# sourceMappingURL=chunk-2TZ2R7L2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Slider/Slider.tsx"],"names":[],"mappings":"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","file":"chunk-2TZ2R7L2.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Slider.css\";\nimport * as React from \"react\";\n\nexport type SliderRangeValue = [number, number];\nexport type SliderValue = number | SliderRangeValue;\n\ninterface SliderBaseProps {\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showValue?: boolean;\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\";\n /** Custom gradient colors mapped from min→max. Overrides `tone` for fill & thumb. */\n colors?: string[];\n /** Tick marks with labels. Clicking a mark snaps to it. */\n marks?: Record<number, React.ReactNode>;\n className?: string;\n}\n\nexport interface SliderSingleProps extends SliderBaseProps {\n range?: false;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n}\n\nexport interface SliderRangeProps extends SliderBaseProps {\n range: true;\n value?: SliderRangeValue;\n defaultValue?: SliderRangeValue;\n onChange?: (value: SliderRangeValue) => void;\n}\n\nexport type SliderProps = SliderSingleProps | SliderRangeProps;\n\nfunction clamp(v: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, v));\n}\n\nfunction snap(raw: number, step: number, min: number) {\n return Math.round((raw - min) / step) * step + min;\n}\n\nfunction lerpColor(colors: string[], t: number): string {\n const pos = Math.max(0, Math.min(1, t)) * (colors.length - 1);\n const i = Math.min(Math.floor(pos), colors.length - 2);\n const frac = pos - i;\n if (frac === 0) return colors[i];\n return `color-mix(in oklch, ${colors[i + 1]} ${Math.round(frac * 100)}%, ${colors[i]})`;\n}\n\n/** `Slider` — neumorphic range input with grooved track.\n * @example <Slider defaultValue={40} showValue />\n */\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(\n (props, ref) => {\n const {\n min = 0,\n max = 100,\n step = 1,\n disabled,\n showValue,\n tone = \"accent\",\n colors,\n marks,\n className = \"\",\n } = props;\n\n const range = (props as SliderRangeProps).range === true;\n const controlled = (props as { value?: SliderValue }).value;\n const defaultVal = (props as { defaultValue?: SliderValue }).defaultValue;\n const onChange = (props as { onChange?: (v: any) => void }).onChange;\n\n const initRef = React.useRef<number[]>(\n defaultVal !== undefined\n ? Array.isArray(defaultVal)\n ? [...defaultVal]\n : [defaultVal]\n : range\n ? [min, max]\n : [min]\n );\n const [inner, setInner] = React.useState<number[]>(initRef.current);\n\n const isControlled = controlled !== undefined;\n const vals = isControlled\n ? Array.isArray(controlled)\n ? controlled\n : [controlled]\n : inner;\n\n const valsRef = React.useRef(vals);\n valsRef.current = vals;\n\n const trackRef = React.useRef<HTMLDivElement>(null);\n const thumbEls = React.useRef<(HTMLDivElement | null)[]>([]);\n const dragging = React.useRef<number | null>(null);\n\n const pct = (n: number) => ((n - min) / (max - min)) * 100;\n\n const commit = React.useCallback(\n (next: number[]) => {\n if (!isControlled) setInner(next);\n if (range) {\n onChange?.([next[0], next[1]] as SliderRangeValue);\n } else {\n onChange?.(next[0]);\n }\n },\n [isControlled, range, onChange]\n );\n\n const setAt = React.useCallback(\n (index: number, raw: number) => {\n const snapped = snap(clamp(raw, min, max), step, min);\n const clamped = clamp(snapped, min, max);\n const out = [...valsRef.current];\n out[index] = clamped;\n if (range && out.length === 2 && out[0] > out[1]) out.sort((a, b) => a - b);\n commit(out);\n },\n [min, max, step, range, commit]\n );\n\n const valFromX = React.useCallback(\n (clientX: number) => {\n const rect = trackRef.current?.getBoundingClientRect();\n if (!rect) return min;\n const ratio = clamp((clientX - rect.left) / rect.width, 0, 1);\n return min + ratio * (max - min);\n },\n [min, max]\n );\n\n const closerIndex = React.useCallback(\n (target: number) => {\n const v = valsRef.current;\n if (!range || v.length < 2) return 0;\n const d0 = Math.abs(v[0] - target);\n const d1 = Math.abs(v[1] - target);\n if (d0 === d1) return target < v[0] ? 0 : 1;\n return d0 < d1 ? 0 : 1;\n },\n [range]\n );\n\n const onPointerDown = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n const val = valFromX(e.clientX);\n const idx = closerIndex(val);\n dragging.current = idx;\n setAt(idx, val);\n trackRef.current?.setPointerCapture(e.pointerId);\n thumbEls.current[idx]?.focus();\n },\n [disabled, valFromX, closerIndex, setAt]\n );\n\n const onPointerMove = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (dragging.current === null) return;\n setAt(dragging.current, valFromX(e.clientX));\n },\n [valFromX, setAt]\n );\n\n const onPointerUp = React.useCallback(() => {\n dragging.current = null;\n }, []);\n\n const handleKey = React.useCallback(\n (index: number, e: React.KeyboardEvent) => {\n if (disabled) return;\n let delta = 0;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") delta = step;\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") delta = -step;\n else if (e.key === \"Home\") { setAt(index, min); return; }\n else if (e.key === \"End\") { setAt(index, max); return; }\n else return;\n e.preventDefault();\n setAt(index, valsRef.current[index] + delta);\n },\n [disabled, step, min, max, setAt]\n );\n\n const handleMarkClick = React.useCallback(\n (mark: number) => {\n if (disabled) return;\n setAt(closerIndex(mark), mark);\n },\n [disabled, closerIndex, setAt]\n );\n\n const fillLeft = range ? pct(Math.min(vals[0], vals[1])) : 0;\n const fillRight = range\n ? 100 - pct(Math.max(vals[0], vals[1]))\n : 100 - pct(vals[0]);\n\n const hasGradient = colors && colors.length >= 2;\n\n const fillStyle: React.CSSProperties = {\n left: `${fillLeft}%`,\n right: `${fillRight}%`,\n };\n if (hasGradient) {\n const w = 100 - fillLeft - fillRight;\n if (w > 0) {\n const stops = colors.map((c, i) => {\n const orig = (i / (colors.length - 1)) * 100;\n return `${c} ${((orig - fillLeft) / w * 100).toFixed(2)}%`;\n }).join(\", \");\n fillStyle.background = `linear-gradient(to right, ${stops})`;\n fillStyle.boxShadow = \"none\";\n }\n }\n\n return (\n <div\n ref={ref}\n className={`slider ${range ? \"range\" : \"\"} ${hasGradient ? \"gradient\" : tone} ${disabled ? \"disabled\" : \"\"} ${marks ? \"has-marks\" : \"\"} ${className}`}\n >\n <div className=\"slider-rail\">\n <div\n className=\"slider-track\"\n ref={trackRef}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n >\n <div className=\"slider-fill\" style={fillStyle} />\n </div>\n\n {vals.map((n, i) => {\n const thumbStyle: React.CSSProperties = { left: `${pct(n)}%` };\n if (hasGradient) {\n (thumbStyle as any)[\"--slider-thumb-color\"] = lerpColor(colors, (n - min) / (max - min));\n }\n return (\n <div\n key={i}\n ref={(el) => { thumbEls.current[i] = el; }}\n className=\"slider-thumb\"\n style={thumbStyle}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={n}\n aria-disabled={disabled || undefined}\n onKeyDown={(e) => handleKey(i, e)}\n onPointerDown={(e) => {\n if (disabled) return;\n e.preventDefault();\n e.stopPropagation();\n dragging.current = i;\n trackRef.current?.setPointerCapture(e.pointerId);\n e.currentTarget.focus();\n }}\n />\n );\n })}\n\n {marks && (\n <div className=\"slider-marks\">\n {Object.entries(marks).map(([k, label]) => {\n const n = Number(k);\n const active = range\n ? n >= Math.min(vals[0], vals[1]) && n <= Math.max(vals[0], vals[1])\n : n <= vals[0];\n return (\n <span\n key={k}\n className={`slider-mark ${active ? \"active\" : \"\"}`}\n style={{ left: `${pct(n)}%` }}\n onClick={() => handleMarkClick(n)}\n >\n <span className=\"slider-mark-dot\" />\n <span className=\"slider-mark-label\">{label}</span>\n </span>\n );\n })}\n </div>\n )}\n </div>\n\n {showValue && (\n <span className=\"slider-value\">\n {range ? `${vals[0]} – ${vals[1]}` : vals[0]}\n </span>\n )}\n </div>\n );\n }\n);\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
3
+ var chunkYCHUHMNP_cjs = require('./chunk-YCHUHMNP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Typography-NKPWTJCV.css');
@@ -74,8 +74,8 @@ var CopyAction = ({ config, fallbackText }) => {
74
74
  timerRef.current = window.setTimeout(() => setCopied(false), 2400);
75
75
  };
76
76
  const [defIcon, doneIcon] = config.icon ?? [
77
- /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "copy", size: 12 }, "def"),
78
- /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "check", size: 12 }, "done")
77
+ /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "copy", size: 12 }, "def"),
78
+ /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "check", size: 12 }, "done")
79
79
  ];
80
80
  const tipText = config.tooltips === false ? void 0 : Array.isArray(config.tooltips) ? copied ? config.tooltips[1] : config.tooltips[0] : copied ? "\u5DF2\u590D\u5236" : "\u590D\u5236";
81
81
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -213,7 +213,7 @@ function useTypographyBody(props) {
213
213
  }
214
214
  },
215
215
  className: "typo-action typo-edit",
216
- children: editConf.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "edit", size: 12 })
216
+ children: editConf.icon ?? /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: "edit", size: 12 })
217
217
  }
218
218
  );
219
219
  }
@@ -473,7 +473,7 @@ var Link = React__namespace.forwardRef(
473
473
  ...anchorRest,
474
474
  children: [
475
475
  body.inner,
476
- external && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-link-ext", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: externalIcon, size: 12 }) }),
476
+ external && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-link-ext", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkYCHUHMNP_cjs.Icon, { name: externalIcon, size: 12 }) }),
477
477
  body.expandNode,
478
478
  body.copyNode,
479
479
  body.editIconNode
@@ -506,5 +506,5 @@ exports.Paragraph = Paragraph;
506
506
  exports.Text = Text;
507
507
  exports.Title = Title;
508
508
  exports.Typography = Typography;
509
- //# sourceMappingURL=chunk-24FAK7QU.cjs.map
510
- //# sourceMappingURL=chunk-24FAK7QU.cjs.map
509
+ //# sourceMappingURL=chunk-3BZ47QNV.cjs.map
510
+ //# sourceMappingURL=chunk-3BZ47QNV.cjs.map