@fangxinyan/lumina 0.1.6 → 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 (201) 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/{Empty-VM23UNLQ.css → Empty-NQ72W3D7.css} +22 -0
  36. package/dist/Empty.cjs +4 -4
  37. package/dist/Empty.d.cts +42 -2
  38. package/dist/Empty.d.ts +42 -2
  39. package/dist/Empty.js +1 -1
  40. package/dist/Input-33CAH4O6.css +134 -0
  41. package/dist/Input.cjs +3 -3
  42. package/dist/Input.d.cts +17 -1
  43. package/dist/Input.d.ts +17 -1
  44. package/dist/Input.js +1 -1
  45. package/dist/Modal.cjs +3 -3
  46. package/dist/Modal.js +2 -2
  47. package/dist/{Pagination-6FFOI4NM.css → Pagination-YIRYJUXP.css} +33 -0
  48. package/dist/Pagination.cjs +5 -2
  49. package/dist/Pagination.d.cts +14 -0
  50. package/dist/Pagination.d.ts +14 -0
  51. package/dist/Pagination.js +4 -1
  52. package/dist/Select.cjs +3 -3
  53. package/dist/Select.js +2 -2
  54. package/dist/{Slider-RE4HZQKF.css → Slider-X4PVA65R.css} +51 -2
  55. package/dist/Slider.cjs +2 -2
  56. package/dist/Slider.d.cts +20 -5
  57. package/dist/Slider.d.ts +20 -5
  58. package/dist/Slider.js +1 -1
  59. package/dist/Switch-36KJNDXM.css +92 -0
  60. package/dist/Switch.cjs +2 -2
  61. package/dist/Switch.d.cts +4 -0
  62. package/dist/Switch.d.ts +4 -0
  63. package/dist/Switch.js +1 -1
  64. package/dist/Table-ADVN6LXP.css +295 -0
  65. package/dist/Table.cjs +7 -3
  66. package/dist/Table.d.cts +103 -7
  67. package/dist/Table.d.ts +103 -7
  68. package/dist/Table.js +5 -1
  69. package/dist/{Tabs-A27TSZOP.css → Tabs-RHK6XAFF.css} +7 -0
  70. package/dist/Tabs.cjs +3 -3
  71. package/dist/Tabs.d.cts +2 -0
  72. package/dist/Tabs.d.ts +2 -0
  73. package/dist/Tabs.js +1 -1
  74. package/dist/{Tag-EYOY3UWG.css → Tag-FGDY3W7E.css} +2 -0
  75. package/dist/Tag.cjs +3 -3
  76. package/dist/Tag.d.cts +5 -0
  77. package/dist/Tag.d.ts +5 -0
  78. package/dist/Tag.js +1 -1
  79. package/dist/chunk-437LB2V4.js +111 -0
  80. package/dist/chunk-437LB2V4.js.map +1 -0
  81. package/dist/chunk-4MR4GVTD.js +73 -0
  82. package/dist/chunk-4MR4GVTD.js.map +1 -0
  83. package/dist/{chunk-OXYFB2ZI.js → chunk-4U4OY5RA.js} +11 -5
  84. package/dist/chunk-4U4OY5RA.js.map +1 -0
  85. package/dist/chunk-55NTFU7Y.js +476 -0
  86. package/dist/chunk-55NTFU7Y.js.map +1 -0
  87. package/dist/{chunk-5EYI27B6.js → chunk-77BVQNAQ.js} +5 -3
  88. package/dist/chunk-77BVQNAQ.js.map +1 -0
  89. package/dist/{chunk-3QWHDCHJ.js → chunk-AJZKESHB.js} +13 -4
  90. package/dist/chunk-AJZKESHB.js.map +1 -0
  91. package/dist/{chunk-NZPJ7BUB.cjs → chunk-AXMEZGEG.cjs} +13 -4
  92. package/dist/chunk-AXMEZGEG.cjs.map +1 -0
  93. package/dist/{chunk-HTP6UEVR.js → chunk-BBPNQ44M.js} +22 -6
  94. package/dist/chunk-BBPNQ44M.js.map +1 -0
  95. package/dist/{chunk-QQXIWOI3.cjs → chunk-CCBHZYE6.cjs} +5 -5
  96. package/dist/{chunk-QQXIWOI3.cjs.map → chunk-CCBHZYE6.cjs.map} +1 -1
  97. package/dist/{chunk-KGYLUZOU.cjs → chunk-EPFYIR63.cjs} +5 -5
  98. package/dist/{chunk-KGYLUZOU.cjs.map → chunk-EPFYIR63.cjs.map} +1 -1
  99. package/dist/chunk-F7HW2PYR.cjs +119 -0
  100. package/dist/chunk-F7HW2PYR.cjs.map +1 -0
  101. package/dist/chunk-GIVMKGZN.js +39 -0
  102. package/dist/chunk-GIVMKGZN.js.map +1 -0
  103. package/dist/{chunk-FMG3ZPGK.js → chunk-H6FCIJOP.js} +5 -3
  104. package/dist/chunk-H6FCIJOP.js.map +1 -0
  105. package/dist/{chunk-ALFDP5WX.cjs → chunk-IDM6JJLP.cjs} +22 -6
  106. package/dist/chunk-IDM6JJLP.cjs.map +1 -0
  107. package/dist/chunk-IFERLHCL.cjs +499 -0
  108. package/dist/chunk-IFERLHCL.cjs.map +1 -0
  109. package/dist/{chunk-I2ERCHFV.cjs → chunk-JKLQOB2F.cjs} +11 -5
  110. package/dist/chunk-JKLQOB2F.cjs.map +1 -0
  111. package/dist/{chunk-IGHLSNXT.cjs → chunk-K7PVJLW4.cjs} +51 -4
  112. package/dist/chunk-K7PVJLW4.cjs.map +1 -0
  113. package/dist/chunk-LDENBYRC.cjs +210 -0
  114. package/dist/chunk-LDENBYRC.cjs.map +1 -0
  115. package/dist/{chunk-OOBSH7EL.js → chunk-LSLYY5FN.js} +3 -3
  116. package/dist/{chunk-OOBSH7EL.js.map → chunk-LSLYY5FN.js.map} +1 -1
  117. package/dist/chunk-NSUD5B22.js +187 -0
  118. package/dist/chunk-NSUD5B22.js.map +1 -0
  119. package/dist/{chunk-AAMYURWQ.cjs → chunk-OPTTHURA.cjs} +5 -3
  120. package/dist/chunk-OPTTHURA.cjs.map +1 -0
  121. package/dist/{chunk-F3NHM4GX.js → chunk-OYGFMXAA.js} +13 -4
  122. package/dist/chunk-OYGFMXAA.js.map +1 -0
  123. package/dist/chunk-PBBHUUXU.cjs +133 -0
  124. package/dist/chunk-PBBHUUXU.cjs.map +1 -0
  125. package/dist/chunk-RDLPX7RK.cjs +95 -0
  126. package/dist/chunk-RDLPX7RK.cjs.map +1 -0
  127. package/dist/{chunk-XFRP2MBR.js → chunk-TYQ5CN2C.js} +51 -4
  128. package/dist/chunk-TYQ5CN2C.js.map +1 -0
  129. package/dist/{chunk-7CKHWCEA.cjs → chunk-TZSWDH5T.cjs} +5 -3
  130. package/dist/chunk-TZSWDH5T.cjs.map +1 -0
  131. package/dist/{chunk-VMHNKD3N.cjs → chunk-URF6RBW6.cjs} +13 -4
  132. package/dist/chunk-URF6RBW6.cjs.map +1 -0
  133. package/dist/{chunk-G3UWXSNQ.js → chunk-V34OPWKZ.js} +5 -4
  134. package/dist/chunk-V34OPWKZ.js.map +1 -0
  135. package/dist/{chunk-ITGCHU3Y.cjs → chunk-VICGQC6G.cjs} +5 -4
  136. package/dist/chunk-VICGQC6G.cjs.map +1 -0
  137. package/dist/chunk-YEOARJKR.cjs +40 -0
  138. package/dist/chunk-YEOARJKR.cjs.map +1 -0
  139. package/dist/chunk-Z5X5AMLA.cjs +41 -0
  140. package/dist/chunk-Z5X5AMLA.cjs.map +1 -0
  141. package/dist/chunk-Z7P6QGMT.js +115 -0
  142. package/dist/chunk-Z7P6QGMT.js.map +1 -0
  143. package/dist/{chunk-OYH6A7IQ.js → chunk-ZVCMXDTP.js} +3 -3
  144. package/dist/{chunk-OYH6A7IQ.js.map → chunk-ZVCMXDTP.js.map} +1 -1
  145. package/dist/chunk-ZWP4LSS3.js +38 -0
  146. package/dist/chunk-ZWP4LSS3.js.map +1 -0
  147. package/dist/index.cjs +43 -43
  148. package/dist/index.cjs.map +1 -1
  149. package/dist/index.d.cts +4 -4
  150. package/dist/index.d.ts +4 -4
  151. package/dist/index.js +18 -18
  152. package/dist/index.js.map +1 -1
  153. package/dist/styles.css +455 -30
  154. package/package.json +1 -1
  155. package/dist/Input-Z526ARZP.css +0 -66
  156. package/dist/Switch-NP7KKJOX.css +0 -44
  157. package/dist/Table-ZDPGWLH3.css +0 -139
  158. package/dist/chunk-2VA2HSL4.cjs +0 -121
  159. package/dist/chunk-2VA2HSL4.cjs.map +0 -1
  160. package/dist/chunk-2W2AJUZW.js +0 -118
  161. package/dist/chunk-2W2AJUZW.js.map +0 -1
  162. package/dist/chunk-3QWHDCHJ.js.map +0 -1
  163. package/dist/chunk-4AA22BOG.js +0 -63
  164. package/dist/chunk-4AA22BOG.js.map +0 -1
  165. package/dist/chunk-5EYI27B6.js.map +0 -1
  166. package/dist/chunk-77NP67ML.cjs +0 -70
  167. package/dist/chunk-77NP67ML.cjs.map +0 -1
  168. package/dist/chunk-7CKHWCEA.cjs.map +0 -1
  169. package/dist/chunk-7NM5BRUX.js +0 -91
  170. package/dist/chunk-7NM5BRUX.js.map +0 -1
  171. package/dist/chunk-7UJI437T.js +0 -49
  172. package/dist/chunk-7UJI437T.js.map +0 -1
  173. package/dist/chunk-AAMYURWQ.cjs.map +0 -1
  174. package/dist/chunk-ALFDP5WX.cjs.map +0 -1
  175. package/dist/chunk-F3NHM4GX.js.map +0 -1
  176. package/dist/chunk-FMG3ZPGK.js.map +0 -1
  177. package/dist/chunk-G3UWXSNQ.js.map +0 -1
  178. package/dist/chunk-HTP6UEVR.js.map +0 -1
  179. package/dist/chunk-I2ERCHFV.cjs.map +0 -1
  180. package/dist/chunk-IBZAGURN.cjs +0 -71
  181. package/dist/chunk-IBZAGURN.cjs.map +0 -1
  182. package/dist/chunk-IGHLSNXT.cjs.map +0 -1
  183. package/dist/chunk-ITGCHU3Y.cjs.map +0 -1
  184. package/dist/chunk-JNFCTYJT.cjs +0 -31
  185. package/dist/chunk-JNFCTYJT.cjs.map +0 -1
  186. package/dist/chunk-JWFVSBVX.cjs +0 -30
  187. package/dist/chunk-JWFVSBVX.cjs.map +0 -1
  188. package/dist/chunk-K67KIKX4.cjs +0 -67
  189. package/dist/chunk-K67KIKX4.cjs.map +0 -1
  190. package/dist/chunk-M6OTFXZA.js +0 -48
  191. package/dist/chunk-M6OTFXZA.js.map +0 -1
  192. package/dist/chunk-NWJW5KLN.js +0 -29
  193. package/dist/chunk-NWJW5KLN.js.map +0 -1
  194. package/dist/chunk-NZPJ7BUB.cjs.map +0 -1
  195. package/dist/chunk-OXYFB2ZI.js.map +0 -1
  196. package/dist/chunk-QT7SJITQ.cjs +0 -114
  197. package/dist/chunk-QT7SJITQ.cjs.map +0 -1
  198. package/dist/chunk-VMHNKD3N.cjs.map +0 -1
  199. package/dist/chunk-VXITDXLW.js +0 -28
  200. package/dist/chunk-VXITDXLW.js.map +0 -1
  201. package/dist/chunk-XFRP2MBR.js.map +0 -1
@@ -12,6 +12,7 @@ var Calendar = ({
12
12
  onChange,
13
13
  min,
14
14
  max,
15
+ disabledDate,
15
16
  className = ""
16
17
  }) => {
17
18
  const [inner, setInner] = React.useState(defaultValue ?? /* @__PURE__ */ new Date());
@@ -29,6 +30,7 @@ var Calendar = ({
29
30
  const next = new Date(view.getFullYear(), view.getMonth(), d);
30
31
  if (min && next < min) return;
31
32
  if (max && next > max) return;
33
+ if (disabledDate?.(next)) return;
32
34
  if (!isControlled) setInner(next);
33
35
  onChange?.(next);
34
36
  };
@@ -66,7 +68,7 @@ var Calendar = ({
66
68
  cells.map((d, i) => {
67
69
  if (d === null) return /* @__PURE__ */ jsx("div", { className: "calendar-cell out" }, i);
68
70
  const date = new Date(view.getFullYear(), view.getMonth(), d);
69
- const disabled = min && date < min || max && date > max;
71
+ const disabled = min && date < min || max && date > max || (disabledDate?.(date) ?? false);
70
72
  return /* @__PURE__ */ jsx(
71
73
  "button",
72
74
  {
@@ -84,5 +86,5 @@ var Calendar = ({
84
86
  };
85
87
 
86
88
  export { Calendar };
87
- //# sourceMappingURL=chunk-FMG3ZPGK.js.map
88
- //# sourceMappingURL=chunk-FMG3ZPGK.js.map
89
+ //# sourceMappingURL=chunk-H6FCIJOP.js.map
90
+ //# sourceMappingURL=chunk-H6FCIJOP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":[],"mappings":"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","file":"chunk-H6FCIJOP.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Calendar.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface CalendarProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (date: Date) => void;\n /** Min selectable date. */\n min?: Date;\n /** Max selectable date. */\n max?: Date;\n /**\n * Predicate that marks an individual cell as disabled. Disabled cells are\n * greyed out, not clickable, and do not fire `onChange`.\n * @example\n * // disable weekends\n * disabledDate={(d) => d.getDay() === 0 || d.getDay() === 6}\n */\n disabledDate?: (date: Date) => boolean;\n className?: string;\n}\n\nconst WEEKDAYS = [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"];\n\n/** `Calendar` — month-view date picker. */\nexport const Calendar: React.FC<CalendarProps> = ({\n value,\n defaultValue,\n onChange,\n min,\n max,\n disabledDate,\n className = \"\",\n}) => {\n const [inner, setInner] = React.useState(defaultValue ?? new Date());\n const isControlled = value !== undefined;\n const sel = isControlled ? value! : inner;\n const [view, setView] = React.useState(new Date(sel.getFullYear(), sel.getMonth(), 1));\n\n const first = new Date(view.getFullYear(), view.getMonth(), 1);\n const startDay = first.getDay();\n const daysInMonth = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells: (number | null)[] = [];\n for (let i = 0; i < startDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(d);\n\n const isSame = (a: Date, b: Date) =>\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n\n const pick = (d: number) => {\n const next = new Date(view.getFullYear(), view.getMonth(), d);\n if (min && next < min) return;\n if (max && next > max) return;\n if (disabledDate?.(next)) return;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n return (\n <div className={`calendar ${className}`}>\n <div className=\"calendar-head\">\n <button\n type=\"button\"\n className=\"btn icon sm ghost\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1))}\n aria-label=\"Previous month\"\n >\n <Icon name=\"chevLeft\" size={14} />\n </button>\n <button type=\"button\" className=\"calendar-title\">\n {view.getFullYear()} 年 {view.getMonth() + 1} 月\n </button>\n <button\n type=\"button\"\n className=\"btn icon sm ghost\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1))}\n aria-label=\"Next month\"\n >\n <Icon name=\"chevRight\" size={14} />\n </button>\n </div>\n <div className=\"calendar-grid\">\n {WEEKDAYS.map((w) => (\n <div key={w} className=\"calendar-dow\">{w}</div>\n ))}\n {cells.map((d, i) => {\n if (d === null) return <div key={i} className=\"calendar-cell out\" />;\n const date = new Date(view.getFullYear(), view.getMonth(), d);\n const disabled =\n (min && date < min) ||\n (max && date > max) ||\n (disabledDate?.(date) ?? false);\n return (\n <button\n key={i}\n type=\"button\"\n disabled={!!disabled}\n className={`calendar-cell ${isSame(date, sel) ? \"selected\" : \"\"} ${isSame(date, new Date()) ? \"today\" : \"\"} ${disabled ? \"disabled\" : \"\"}`}\n onClick={() => pick(d)}\n >\n {d}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./tokens-HWQ7KWPG.css');
4
4
  require('./shared-NJHRNLRH.css');
5
- require('./Switch-NP7KKJOX.css');
5
+ require('./Switch-36KJNDXM.css');
6
6
  var React = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
@@ -34,6 +34,8 @@ var Switch = ({
34
34
  disabled,
35
35
  label,
36
36
  size = "md",
37
+ checkedChildren,
38
+ unCheckedChildren,
37
39
  className = "",
38
40
  id
39
41
  }) => {
@@ -46,9 +48,17 @@ var Switch = ({
46
48
  if (!isControlled) setInner(next);
47
49
  onChange?.(next);
48
50
  };
49
- const cls = ["switch", value && "on", size !== "md" && size, disabled && "disabled", className].filter(Boolean).join(" ");
51
+ const hasChildren = checkedChildren != null || unCheckedChildren != null;
52
+ const cls = [
53
+ "switch",
54
+ value && "on",
55
+ size !== "md" && size,
56
+ disabled && "disabled",
57
+ hasChildren && "with-children",
58
+ className
59
+ ].filter(Boolean).join(" ");
50
60
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: cls, children: [
51
- /* @__PURE__ */ jsxRuntime.jsx(
61
+ /* @__PURE__ */ jsxRuntime.jsxs(
52
62
  "button",
53
63
  {
54
64
  type: "button",
@@ -58,7 +68,13 @@ var Switch = ({
58
68
  onClick: toggle,
59
69
  id,
60
70
  className: "switch-track",
61
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "switch-thumb" })
71
+ children: [
72
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "switch-inner", children: [
73
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "switch-inner-on", children: checkedChildren }),
74
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "switch-inner-off", children: unCheckedChildren })
75
+ ] }),
76
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "switch-thumb" })
77
+ ]
62
78
  }
63
79
  ),
64
80
  label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "switch-label", children: label })
@@ -66,5 +82,5 @@ var Switch = ({
66
82
  };
67
83
 
68
84
  exports.Switch = Switch;
69
- //# sourceMappingURL=chunk-ALFDP5WX.cjs.map
70
- //# sourceMappingURL=chunk-ALFDP5WX.cjs.map
85
+ //# sourceMappingURL=chunk-IDM6JJLP.cjs.map
86
+ //# sourceMappingURL=chunk-IDM6JJLP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Switch/Switch.tsx"],"names":["React","jsxs","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,IAAM,SAAgC,CAAC;AAAA,EAC5C,OAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUA,gBAAA,CAAA,QAAA,CAAS,kBAAkB,KAAK,CAAA;AAChE,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,eAAe,OAAA,GAAU,KAAA;AAEvC,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,MAAM,OAAO,CAAC,KAAA;AACd,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,IAAI,CAAA;AAChC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,eAAA,IAAmB,IAAA,IAAQ,iBAAA,IAAqB,IAAA;AACpE,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,QAAA;AAAA,IACA,KAAA,IAAS,IAAA;AAAA,IACT,SAAS,IAAA,IAAQ,IAAA;AAAA,IACjB,QAAA,IAAY,UAAA;AAAA,IACZ,WAAA,IAAe,eAAA;AAAA,IACf;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEC,eAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,GAAA,EAChB,QAAA,EAAA;AAAA,oBAAAA,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,cAAA,EAAc,KAAA;AAAA,QACd,QAAA;AAAA,QACA,OAAA,EAAS,MAAA;AAAA,QACT,EAAA;AAAA,QACA,SAAA,EAAU,cAAA;AAAA,QAET,QAAA,EAAA;AAAA,UAAA,WAAA,oBACCA,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACd,QAAA,EAAA;AAAA,4BAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAmB,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,4BACnDA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,iBAAA,EAAkB;AAAA,WAAA,EACxD,CAAA;AAAA,0BAEFA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAe;AAAA;AAAA;AAAA,KACjC;AAAA,IACC,KAAA,oBAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ","file":"chunk-IDM6JJLP.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Switch.css\";\nimport * as React from \"react\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: React.ReactNode;\n size?: \"sm\" | \"md\";\n /** Content rendered inside the track when checked (short text or icon). */\n checkedChildren?: React.ReactNode;\n /** Content rendered inside the track when unchecked. */\n unCheckedChildren?: React.ReactNode;\n className?: string;\n id?: string;\n}\n\n/**\n * `Switch` — on/off toggle. Controlled or uncontrolled.\n */\nexport const Switch: React.FC<SwitchProps> = ({\n checked,\n defaultChecked,\n onChange,\n disabled,\n label,\n size = \"md\",\n checkedChildren,\n unCheckedChildren,\n className = \"\",\n id,\n}) => {\n const [inner, setInner] = React.useState(defaultChecked ?? false);\n const isControlled = checked !== undefined;\n const value = isControlled ? checked : inner;\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const hasChildren = checkedChildren != null || unCheckedChildren != null;\n const cls = [\n \"switch\",\n value && \"on\",\n size !== \"md\" && size,\n disabled && \"disabled\",\n hasChildren && \"with-children\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label className={cls}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n disabled={disabled}\n onClick={toggle}\n id={id}\n className=\"switch-track\"\n >\n {hasChildren && (\n <span className=\"switch-inner\">\n <span className=\"switch-inner-on\">{checkedChildren}</span>\n <span className=\"switch-inner-off\">{unCheckedChildren}</span>\n </span>\n )}\n <span className=\"switch-thumb\" />\n </button>\n {label && <span className=\"switch-label\">{label}</span>}\n </label>\n );\n};\n"]}
@@ -0,0 +1,499 @@
1
+ 'use strict';
2
+
3
+ var chunkK7PVJLW4_cjs = require('./chunk-K7PVJLW4.cjs');
4
+ var chunkC5TGQ7CV_cjs = require('./chunk-C5TGQ7CV.cjs');
5
+ var chunkRZ2E3XEU_cjs = require('./chunk-RZ2E3XEU.cjs');
6
+ var chunkYVO7XO4W_cjs = require('./chunk-YVO7XO4W.cjs');
7
+ require('./tokens-HWQ7KWPG.css');
8
+ require('./shared-NJHRNLRH.css');
9
+ require('./Table-ADVN6LXP.css');
10
+ var React = require('react');
11
+ var reactDom = require('react-dom');
12
+ var jsxRuntime = require('react/jsx-runtime');
13
+
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ var n = Object.create(null);
17
+ if (e) {
18
+ Object.keys(e).forEach(function (k) {
19
+ if (k !== 'default') {
20
+ var d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: function () { return e[k]; }
24
+ });
25
+ }
26
+ });
27
+ }
28
+ n.default = e;
29
+ return Object.freeze(n);
30
+ }
31
+
32
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
+
34
+ function Table({
35
+ columns,
36
+ data,
37
+ rowKey,
38
+ variant,
39
+ hoverable = true,
40
+ striped,
41
+ sortKey,
42
+ sortDir = "asc",
43
+ onSort,
44
+ rowSelection,
45
+ selectable,
46
+ selected = [],
47
+ onSelect,
48
+ expandable,
49
+ pagination,
50
+ scroll,
51
+ onRowClick,
52
+ empty = "\u6682\u65E0\u6570\u636E",
53
+ className = ""
54
+ }) {
55
+ const keyOf = React__namespace.useCallback(
56
+ (row, i) => {
57
+ if (typeof rowKey === "function") return rowKey(row);
58
+ if (rowKey) return row[rowKey];
59
+ return i;
60
+ },
61
+ [rowKey]
62
+ );
63
+ const selectionMode = rowSelection ? "new" : selectable ? "legacy" : "off";
64
+ const selectionType = rowSelection?.type ?? "checkbox";
65
+ const [innerSel, setInnerSel] = React__namespace.useState(
66
+ rowSelection?.defaultSelectedRowKeys ?? []
67
+ );
68
+ const selControlledNew = rowSelection?.selectedRowKeys !== void 0;
69
+ const selectedKeys = selectionMode === "new" ? selControlledNew ? rowSelection.selectedRowKeys : innerSel : selectionMode === "legacy" ? selected : [];
70
+ const commitSelected = (next, rows) => {
71
+ if (selectionMode === "new") {
72
+ if (!selControlledNew) setInnerSel(next);
73
+ rowSelection.onChange?.(next, rows);
74
+ } else if (selectionMode === "legacy") {
75
+ onSelect?.(next);
76
+ }
77
+ };
78
+ const [innerFilters, setInnerFilters] = React__namespace.useState(
79
+ () => {
80
+ const out = {};
81
+ for (const c of columns) {
82
+ if (c.defaultFilteredValue && c.defaultFilteredValue.length) {
83
+ out[c.key] = c.defaultFilteredValue;
84
+ }
85
+ }
86
+ return out;
87
+ }
88
+ );
89
+ const activeFilters = React__namespace.useMemo(() => {
90
+ const out = {};
91
+ for (const c of columns) {
92
+ if (!c.filters?.length) continue;
93
+ if (c.filteredValue !== void 0) {
94
+ if (c.filteredValue.length) out[c.key] = c.filteredValue;
95
+ } else if (innerFilters[c.key]?.length) {
96
+ out[c.key] = innerFilters[c.key];
97
+ }
98
+ }
99
+ return out;
100
+ }, [columns, innerFilters]);
101
+ const setColumnFilter = (col, values) => {
102
+ if (col.filteredValue !== void 0) return;
103
+ setInnerFilters((prev) => {
104
+ const next = { ...prev };
105
+ if (values.length === 0) delete next[col.key];
106
+ else next[col.key] = values;
107
+ return next;
108
+ });
109
+ };
110
+ const filteredData = React__namespace.useMemo(() => {
111
+ const entries = Object.entries(activeFilters);
112
+ if (entries.length === 0) return data;
113
+ return data.filter((row) => {
114
+ for (const [colKey, vals] of entries) {
115
+ const col = columns.find((c) => c.key === colKey);
116
+ if (!col) continue;
117
+ const match = vals.some((v2) => {
118
+ if (col.onFilter) return col.onFilter(v2, row);
119
+ if (col.dataIndex != null) {
120
+ const cell = row[col.dataIndex];
121
+ return cell === v2 || String(cell) === String(v2);
122
+ }
123
+ return false;
124
+ });
125
+ if (!match) return false;
126
+ }
127
+ return true;
128
+ });
129
+ }, [data, columns, activeFilters]);
130
+ const pagEnabled = pagination !== false && pagination !== void 0;
131
+ const pagCfg = pagEnabled ? pagination : {};
132
+ const [innerPage, setInnerPage] = React__namespace.useState(
133
+ pagCfg.defaultCurrent ?? 1
134
+ );
135
+ const [innerPageSize, setInnerPageSize] = React__namespace.useState(
136
+ pagCfg.defaultPageSize ?? pagCfg.pageSize ?? 10
137
+ );
138
+ const pageControlled = pagCfg.current !== void 0;
139
+ const curPage = pageControlled ? pagCfg.current : innerPage;
140
+ const curPageSize = pagCfg.pageSize ?? innerPageSize;
141
+ const totalCount = pagCfg.total ?? filteredData.length;
142
+ React__namespace.useEffect(() => {
143
+ if (pagCfg.pageSize !== void 0 && pagCfg.pageSize !== innerPageSize) {
144
+ setInnerPageSize(pagCfg.pageSize);
145
+ }
146
+ }, [pagCfg.pageSize]);
147
+ React__namespace.useEffect(() => {
148
+ if (!pagEnabled) return;
149
+ const pages = Math.max(1, Math.ceil(filteredData.length / curPageSize));
150
+ if (!pageControlled && curPage > pages) setInnerPage(pages);
151
+ }, [filteredData.length, curPageSize, pagEnabled]);
152
+ const pagedData = React__namespace.useMemo(() => {
153
+ if (!pagEnabled) return filteredData;
154
+ if (pagCfg.total !== void 0 && pageControlled) {
155
+ return filteredData;
156
+ }
157
+ const start = (curPage - 1) * curPageSize;
158
+ return filteredData.slice(start, start + curPageSize);
159
+ }, [pagEnabled, filteredData, curPage, curPageSize, pagCfg.total, pageControlled]);
160
+ const onPageChange = (p) => {
161
+ if (!pageControlled) setInnerPage(p);
162
+ pagCfg.onChange?.(p, curPageSize);
163
+ };
164
+ const [innerExpanded, setInnerExpanded] = React__namespace.useState(
165
+ expandable?.defaultExpandedRowKeys ?? []
166
+ );
167
+ const expandControlled = expandable?.expandedRowKeys !== void 0;
168
+ const expandedKeys = expandControlled ? expandable.expandedRowKeys : innerExpanded;
169
+ const hasExpandable = !!expandable?.expandedRowRender;
170
+ const toggleExpand = (row, k) => {
171
+ const isOpen = expandedKeys.includes(k);
172
+ const next = isOpen ? expandedKeys.filter((x) => x !== k) : [...expandedKeys, k];
173
+ if (!expandControlled) setInnerExpanded(next);
174
+ expandable?.onExpand?.(!isOpen, row);
175
+ };
176
+ const v = variant ?? (striped ? "striped" : "default");
177
+ const rowsToRender = pagedData;
178
+ const selectableKeysOnPage = rowsToRender.map((r, i) => ({ row: r, k: keyOf(r, i) })).filter(({ row }) => {
179
+ if (selectionMode !== "new") return true;
180
+ const props = rowSelection?.getCheckboxProps?.(row);
181
+ return !props?.disabled;
182
+ });
183
+ const allSelectedOnPage = selectionMode !== "off" && selectableKeysOnPage.length > 0 && selectableKeysOnPage.every(({ k }) => selectedKeys.includes(k));
184
+ const someSelectedOnPage = selectionMode !== "off" && selectableKeysOnPage.some(({ k }) => selectedKeys.includes(k)) && !allSelectedOnPage;
185
+ const toggleRow = (row, k) => {
186
+ if (selectionMode === "new") {
187
+ const props = rowSelection?.getCheckboxProps?.(row);
188
+ if (props?.disabled) return;
189
+ let next;
190
+ if (selectionType === "radio") {
191
+ next = [k];
192
+ } else {
193
+ next = selectedKeys.includes(k) ? selectedKeys.filter((x) => x !== k) : [...selectedKeys, k];
194
+ }
195
+ const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));
196
+ commitSelected(next, nextRows);
197
+ } else if (selectionMode === "legacy") {
198
+ const next = selectedKeys.includes(k) ? selectedKeys.filter((x) => x !== k) : [...selectedKeys, k];
199
+ commitSelected(next, []);
200
+ }
201
+ };
202
+ const toggleAll = () => {
203
+ if (selectionMode === "off") return;
204
+ if (selectionType === "radio") return;
205
+ if (allSelectedOnPage) {
206
+ const pageKeys = new Set(selectableKeysOnPage.map(({ k }) => k));
207
+ const next = selectedKeys.filter((k) => !pageKeys.has(k));
208
+ const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));
209
+ commitSelected(next, nextRows);
210
+ } else {
211
+ const set = new Set(selectedKeys);
212
+ selectableKeysOnPage.forEach(({ k }) => set.add(k));
213
+ const next = Array.from(set);
214
+ const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));
215
+ commitSelected(next, nextRows);
216
+ }
217
+ };
218
+ const showSelCol = selectionMode !== "off";
219
+ const showExpandCol = hasExpandable;
220
+ const extraColCount = (showSelCol ? 1 : 0) + (showExpandCol ? 1 : 0);
221
+ const totalColCount = columns.length + extraColCount;
222
+ const wrapStyle = {};
223
+ const innerTableStyle = {};
224
+ let wrapClass = "table-wrap";
225
+ if (scroll?.y != null) {
226
+ wrapStyle.maxHeight = scroll.y;
227
+ wrapStyle.overflowY = "auto";
228
+ wrapClass += " scroll-y";
229
+ }
230
+ if (scroll?.x != null) {
231
+ wrapStyle.overflowX = "auto";
232
+ innerTableStyle.minWidth = scroll.x;
233
+ wrapClass += " scroll-x";
234
+ }
235
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
236
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${wrapClass} ${className}`, style: wrapStyle, children: /* @__PURE__ */ jsxRuntime.jsxs(
237
+ "table",
238
+ {
239
+ className: `table ${v} ${hoverable ? "hoverable" : ""} ${scroll?.y != null ? "sticky-head" : ""}`,
240
+ style: innerTableStyle,
241
+ children: [
242
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
243
+ showExpandCol && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "row-expand", style: { width: 40 } }),
244
+ showSelCol && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "row-check", style: { width: 44 }, children: selectionType === "checkbox" && /* @__PURE__ */ jsxRuntime.jsx(
245
+ chunkC5TGQ7CV_cjs.Checkbox,
246
+ {
247
+ checked: allSelectedOnPage,
248
+ indeterminate: someSelectedOnPage,
249
+ onChange: toggleAll
250
+ }
251
+ ) }),
252
+ columns.map((c) => {
253
+ const sorted = sortKey === c.key;
254
+ const hasFilters = !!c.filters?.length;
255
+ const filterActive = !!activeFilters[c.key]?.length;
256
+ return /* @__PURE__ */ jsxRuntime.jsxs(
257
+ "th",
258
+ {
259
+ className: `${c.sortable ? "sortable" : ""} ${sorted ? "sorted" : ""} ${hasFilters ? "filterable" : ""}`,
260
+ style: { width: c.width, textAlign: c.align ?? "left" },
261
+ onClick: () => c.sortable && onSort?.(c.key),
262
+ children: [
263
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "th-label", children: c.title }),
264
+ c.sortable && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sort-ind", children: /* @__PURE__ */ jsxRuntime.jsx(
265
+ chunkYVO7XO4W_cjs.Icon,
266
+ {
267
+ name: sorted ? sortDir === "asc" ? "chevUp" : "chevDown" : "chevDown",
268
+ size: 10
269
+ }
270
+ ) }),
271
+ hasFilters && /* @__PURE__ */ jsxRuntime.jsx(
272
+ ColumnFilterButton,
273
+ {
274
+ column: c,
275
+ activeValues: activeFilters[c.key] ?? [],
276
+ onApply: (values) => setColumnFilter(c, values),
277
+ active: filterActive
278
+ }
279
+ )
280
+ ]
281
+ },
282
+ c.key
283
+ );
284
+ })
285
+ ] }) }),
286
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rowsToRender.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColCount, className: "table-empty", children: empty }) }) : rowsToRender.map((row, i) => {
287
+ const k = keyOf(row, i);
288
+ const isSel = selectedKeys.includes(k);
289
+ const selProps = rowSelection?.getCheckboxProps?.(row);
290
+ const canExpand = hasExpandable && (expandable?.rowExpandable?.(row) ?? true);
291
+ const isExpanded = canExpand && expandedKeys.includes(k);
292
+ return /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
293
+ /* @__PURE__ */ jsxRuntime.jsxs(
294
+ "tr",
295
+ {
296
+ className: `${onRowClick ? "clickable" : ""} ${isSel ? "selected" : ""}`,
297
+ onClick: onRowClick ? () => onRowClick(row, i) : void 0,
298
+ children: [
299
+ showExpandCol && /* @__PURE__ */ jsxRuntime.jsx(
300
+ "td",
301
+ {
302
+ className: "row-expand",
303
+ onClick: (e) => {
304
+ e.stopPropagation();
305
+ if (canExpand) toggleExpand(row, k);
306
+ },
307
+ children: canExpand && /* @__PURE__ */ jsxRuntime.jsx(
308
+ "button",
309
+ {
310
+ type: "button",
311
+ className: `expand-btn ${isExpanded ? "open" : ""}`,
312
+ "aria-expanded": isExpanded,
313
+ "aria-label": isExpanded ? "Collapse row" : "Expand row",
314
+ onClick: (e) => {
315
+ e.stopPropagation();
316
+ toggleExpand(row, k);
317
+ },
318
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "chevRight", size: 12 })
319
+ }
320
+ )
321
+ }
322
+ ),
323
+ showSelCol && /* @__PURE__ */ jsxRuntime.jsx(
324
+ "td",
325
+ {
326
+ className: "row-check",
327
+ onClick: (e) => {
328
+ e.stopPropagation();
329
+ toggleRow(row, k);
330
+ },
331
+ children: selectionType === "radio" ? /* @__PURE__ */ jsxRuntime.jsx(
332
+ "button",
333
+ {
334
+ type: "button",
335
+ role: "radio",
336
+ "aria-checked": isSel,
337
+ disabled: selProps?.disabled,
338
+ className: `radio-dot ${isSel ? "checked" : ""}`,
339
+ onClick: (e) => {
340
+ e.stopPropagation();
341
+ toggleRow(row, k);
342
+ }
343
+ }
344
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
345
+ chunkC5TGQ7CV_cjs.Checkbox,
346
+ {
347
+ checked: isSel,
348
+ disabled: selProps?.disabled,
349
+ onChange: () => toggleRow(row, k)
350
+ }
351
+ )
352
+ }
353
+ ),
354
+ columns.map((c) => {
355
+ const val = c.dataIndex ? row[c.dataIndex] : void 0;
356
+ return /* @__PURE__ */ jsxRuntime.jsx("td", { style: { textAlign: c.align ?? "left" }, children: c.render ? c.render(val, row, i) : val }, c.key);
357
+ })
358
+ ]
359
+ }
360
+ ),
361
+ isExpanded && expandable?.expandedRowRender && /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "expanded-row", children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColCount, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "expanded-panel", children: expandable.expandedRowRender(row, i) }) }) })
362
+ ] }, k);
363
+ }) })
364
+ ]
365
+ }
366
+ ) }),
367
+ pagEnabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-pagination", children: /* @__PURE__ */ jsxRuntime.jsx(
368
+ chunkK7PVJLW4_cjs.Pagination,
369
+ {
370
+ total: totalCount,
371
+ pageSize: curPageSize,
372
+ page: curPage,
373
+ onChange: onPageChange
374
+ }
375
+ ) })
376
+ ] });
377
+ }
378
+ function ColumnFilterButton({
379
+ column,
380
+ activeValues,
381
+ onApply,
382
+ active
383
+ }) {
384
+ const [open, setOpen] = React__namespace.useState(false);
385
+ const [draft, setDraft] = React__namespace.useState(activeValues);
386
+ const panelRef = React__namespace.useRef(null);
387
+ const { triggerRef, floatingStyle } = chunkRZ2E3XEU_cjs.useFloating({
388
+ open,
389
+ placement: "bottom",
390
+ panelWidth: 200,
391
+ panelHeight: Math.min(260, (column.filters?.length ?? 0) * 32 + 80),
392
+ alignCross: "end"
393
+ });
394
+ React__namespace.useEffect(() => {
395
+ if (open) setDraft(activeValues);
396
+ }, [open, activeValues]);
397
+ React__namespace.useEffect(() => {
398
+ if (!open) return;
399
+ const h = (e) => {
400
+ const t = e.target;
401
+ if (triggerRef.current?.contains(t)) return;
402
+ if (panelRef.current?.contains(t)) return;
403
+ setOpen(false);
404
+ };
405
+ document.addEventListener("mousedown", h);
406
+ return () => document.removeEventListener("mousedown", h);
407
+ }, [open]);
408
+ const toggle = (v) => setDraft((d) => d.includes(v) ? d.filter((x) => x !== v) : [...d, v]);
409
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
410
+ /* @__PURE__ */ jsxRuntime.jsx(
411
+ "button",
412
+ {
413
+ ref: triggerRef,
414
+ type: "button",
415
+ className: `filter-ind ${active ? "active" : ""}`,
416
+ "aria-label": "Filter column",
417
+ onClick: (e) => {
418
+ e.stopPropagation();
419
+ setOpen((o) => !o);
420
+ },
421
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkYVO7XO4W_cjs.Icon, { name: "filter", size: 10 })
422
+ }
423
+ ),
424
+ open && typeof document !== "undefined" && reactDom.createPortal(
425
+ /* @__PURE__ */ jsxRuntime.jsxs(
426
+ "div",
427
+ {
428
+ ref: panelRef,
429
+ className: "table-filter-panel",
430
+ style: floatingStyle,
431
+ onClick: (e) => e.stopPropagation(),
432
+ children: [
433
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-filter-options", children: (column.filters ?? []).map((f) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "table-filter-item", children: [
434
+ /* @__PURE__ */ jsxRuntime.jsx(
435
+ chunkC5TGQ7CV_cjs.Checkbox,
436
+ {
437
+ checked: draft.includes(f.value),
438
+ onChange: () => toggle(f.value)
439
+ }
440
+ ),
441
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: f.text })
442
+ ] }, String(f.value))) }),
443
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "table-filter-actions", children: [
444
+ /* @__PURE__ */ jsxRuntime.jsx(
445
+ "button",
446
+ {
447
+ type: "button",
448
+ className: "tf-btn ghost",
449
+ onClick: () => {
450
+ setDraft([]);
451
+ onApply([]);
452
+ setOpen(false);
453
+ },
454
+ children: "\u91CD\u7F6E"
455
+ }
456
+ ),
457
+ /* @__PURE__ */ jsxRuntime.jsx(
458
+ "button",
459
+ {
460
+ type: "button",
461
+ className: "tf-btn primary",
462
+ onClick: () => {
463
+ onApply(draft);
464
+ setOpen(false);
465
+ },
466
+ children: "\u786E\u5B9A"
467
+ }
468
+ )
469
+ ] })
470
+ ]
471
+ }
472
+ ),
473
+ document.body
474
+ )
475
+ ] });
476
+ }
477
+ function TablePro({
478
+ toolbar,
479
+ actions,
480
+ footer,
481
+ title,
482
+ className = "",
483
+ ...tableProps
484
+ }) {
485
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `table-card ${className}`, children: [
486
+ (title || toolbar || actions) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "table-toolbar", children: [
487
+ title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-title", children: title }),
488
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-toolbar-main", children: toolbar }),
489
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-toolbar-actions", children: actions })
490
+ ] }),
491
+ /* @__PURE__ */ jsxRuntime.jsx(Table, { ...tableProps, className: "joined" }),
492
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-footer", children: footer })
493
+ ] });
494
+ }
495
+
496
+ exports.Table = Table;
497
+ exports.TablePro = TablePro;
498
+ //# sourceMappingURL=chunk-IFERLHCL.cjs.map
499
+ //# sourceMappingURL=chunk-IFERLHCL.cjs.map