@bioturing/components 0.32.3 → 0.34.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 (115) hide show
  1. package/dist/components/code-block/component.d.ts +1 -1
  2. package/dist/components/code-block/component.d.ts.map +1 -1
  3. package/dist/components/code-block/component.js +81 -73
  4. package/dist/components/code-block/component.js.map +1 -1
  5. package/dist/components/code-block/types.d.ts +17 -0
  6. package/dist/components/code-block/types.d.ts.map +1 -1
  7. package/dist/components/command-palette/component.d.ts.map +1 -1
  8. package/dist/components/command-palette/component.js +18 -18
  9. package/dist/components/command-palette/component.js.map +1 -1
  10. package/dist/components/data-table/component.d.ts +8 -0
  11. package/dist/components/data-table/component.d.ts.map +1 -0
  12. package/dist/components/data-table/component.js +112 -0
  13. package/dist/components/data-table/component.js.map +1 -0
  14. package/dist/components/data-table/components/TableBody.d.ts +15 -0
  15. package/dist/components/data-table/components/TableBody.d.ts.map +1 -0
  16. package/dist/components/data-table/components/TableBody.js +114 -0
  17. package/dist/components/data-table/components/TableBody.js.map +1 -0
  18. package/dist/components/data-table/components/TableHeader.d.ts +11 -0
  19. package/dist/components/data-table/components/TableHeader.d.ts.map +1 -0
  20. package/dist/components/data-table/components/TableHeader.js +103 -0
  21. package/dist/components/data-table/components/TableHeader.js.map +1 -0
  22. package/dist/components/data-table/components/TablePagination.d.ts +10 -0
  23. package/dist/components/data-table/components/TablePagination.d.ts.map +1 -0
  24. package/dist/components/data-table/components/TablePagination.js +38 -0
  25. package/dist/components/data-table/components/TablePagination.js.map +1 -0
  26. package/dist/components/data-table/components/index.d.ts +4 -0
  27. package/dist/components/data-table/components/index.d.ts.map +1 -0
  28. package/dist/components/data-table/hooks.d.ts +14 -0
  29. package/dist/components/data-table/hooks.d.ts.map +1 -0
  30. package/dist/components/data-table/hooks.js +120 -0
  31. package/dist/components/data-table/hooks.js.map +1 -0
  32. package/dist/components/data-table/index.d.ts +4 -0
  33. package/dist/components/data-table/index.d.ts.map +1 -0
  34. package/dist/components/data-table/style.css +1 -0
  35. package/dist/components/data-table/types.d.ts +108 -0
  36. package/dist/components/data-table/types.d.ts.map +1 -0
  37. package/dist/components/data-table/utils.d.ts +39 -0
  38. package/dist/components/data-table/utils.d.ts.map +1 -0
  39. package/dist/components/data-table/utils.js +71 -0
  40. package/dist/components/data-table/utils.js.map +1 -0
  41. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  42. package/dist/components/dropdown-menu/component.js +60 -56
  43. package/dist/components/dropdown-menu/component.js.map +1 -1
  44. package/dist/components/ds-root/component.d.ts.map +1 -1
  45. package/dist/components/ds-root/component.js +15 -16
  46. package/dist/components/ds-root/component.js.map +1 -1
  47. package/dist/components/ds-root/hook.d.ts +5 -0
  48. package/dist/components/ds-root/hook.d.ts.map +1 -0
  49. package/dist/components/ds-root/hook.js +7 -0
  50. package/dist/components/ds-root/hook.js.map +1 -0
  51. package/dist/components/ds-root/index.d.ts +1 -1
  52. package/dist/components/ds-root/index.d.ts.map +1 -1
  53. package/dist/components/field/component.d.ts.map +1 -1
  54. package/dist/components/field/component.js +22 -21
  55. package/dist/components/field/component.js.map +1 -1
  56. package/dist/components/hooks/useBreakpoint.d.ts.map +1 -1
  57. package/dist/components/hooks/useBreakpoint.js +30 -8
  58. package/dist/components/hooks/useBreakpoint.js.map +1 -1
  59. package/dist/components/hooks/useCharts.js +1 -1
  60. package/dist/components/hooks/useCharts.js.map +1 -1
  61. package/dist/components/index.d.ts +3 -1
  62. package/dist/components/index.d.ts.map +1 -1
  63. package/dist/components/modal/Modal.d.ts +1 -1
  64. package/dist/components/modal/Modal.d.ts.map +1 -1
  65. package/dist/components/modal/Modal.js +59 -55
  66. package/dist/components/modal/Modal.js.map +1 -1
  67. package/dist/components/modal/index.d.ts +1 -1
  68. package/dist/components/popover/component.d.ts.map +1 -1
  69. package/dist/components/popover/component.js +22 -9
  70. package/dist/components/popover/component.js.map +1 -1
  71. package/dist/components/popup-panel/component.d.ts.map +1 -1
  72. package/dist/components/popup-panel/component.js +61 -56
  73. package/dist/components/popup-panel/component.js.map +1 -1
  74. package/dist/components/scroll-area/component.d.ts +1 -1
  75. package/dist/components/scroll-area/component.d.ts.map +1 -1
  76. package/dist/components/scroll-area/component.js +79 -63
  77. package/dist/components/scroll-area/component.js.map +1 -1
  78. package/dist/components/table/component.d.ts.map +1 -1
  79. package/dist/components/table/component.js.map +1 -1
  80. package/dist/components/theme-provider/component.d.ts +6 -2
  81. package/dist/components/theme-provider/component.d.ts.map +1 -1
  82. package/dist/components/theme-provider/component.js +32 -28
  83. package/dist/components/theme-provider/component.js.map +1 -1
  84. package/dist/components/theme-provider/context/index.d.ts +3 -0
  85. package/dist/components/theme-provider/context/index.d.ts.map +1 -0
  86. package/dist/components/theme-provider/context/provider.d.ts +7 -0
  87. package/dist/components/theme-provider/context/provider.d.ts.map +1 -0
  88. package/dist/components/theme-provider/context/provider.js +11 -0
  89. package/dist/components/theme-provider/context/provider.js.map +1 -0
  90. package/dist/components/theme-provider/context/themeStore.d.ts +11 -0
  91. package/dist/components/theme-provider/context/themeStore.d.ts.map +1 -0
  92. package/dist/components/theme-provider/context/themeStore.js +15 -0
  93. package/dist/components/theme-provider/context/themeStore.js.map +1 -0
  94. package/dist/components/theme-provider/index.d.ts +1 -0
  95. package/dist/components/theme-provider/index.d.ts.map +1 -1
  96. package/dist/components/tree/useTreeCommon.d.ts +10 -10
  97. package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
  98. package/dist/components/utils/client.d.ts +0 -1
  99. package/dist/components/utils/client.d.ts.map +1 -1
  100. package/dist/index.js +223 -219
  101. package/dist/index.js.map +1 -1
  102. package/dist/metadata.d.ts +9 -0
  103. package/dist/metadata.d.ts.map +1 -1
  104. package/dist/metadata.js +18 -0
  105. package/dist/metadata.js.map +1 -1
  106. package/dist/stats.html +1 -1
  107. package/package.json +3 -2
  108. package/dist/components/ds-root/context.d.ts +0 -8
  109. package/dist/components/ds-root/context.d.ts.map +0 -1
  110. package/dist/components/ds-root/context.js +0 -10
  111. package/dist/components/ds-root/context.js.map +0 -1
  112. package/dist/components/utils/WithAntdTokens.d.ts +0 -8
  113. package/dist/components/utils/WithAntdTokens.d.ts.map +0 -1
  114. package/dist/components/utils/WithAntdTokens.js +0 -25
  115. package/dist/components/utils/WithAntdTokens.js.map +0 -1
@@ -1,3 +1,3 @@
1
1
  import { CodeBlockProps } from './types';
2
- export declare const CodeBlock: ({ code, children, lang: defaultLang, className, options, activeOption: controlledActiveOption, defaultActiveOption, onActiveOptionChange, copyText, copySuccessText, classNames, maxHeight, onCopy, ...rest }: CodeBlockProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const CodeBlock: ({ code, children, lang: defaultLang, className, options, activeOption: controlledActiveOption, defaultActiveOption, onActiveOptionChange, copyText, copySuccessText, classNames, maxHeight, onCopy, theme, themeProviderProps, scrollAreaProps, ...rest }: CodeBlockProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/component.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,aAAa,CAAC;AAErB,eAAO,MAAM,SAAS,GAAI,+MAgBvB,cAAc,4CA4HhB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/component.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,aAAa,CAAC;AAQrB,eAAO,MAAM,SAAS,GAAI,2PAmBvB,cAAc,4CAqIhB,CAAC"}
@@ -1,128 +1,136 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as $ } from "react/jsx-runtime";
3
- import { CheckIcon as q, CopyIcon as z } from "@bioturing/assets";
4
- import { Highlight as G, themes as J } from "prism-react-renderer";
5
- import { useState as a, useEffect as K, useCallback as S } from "react";
6
- import { ThemeProvider as Q } from "../theme-provider/component.js";
2
+ import { jsxs as R, jsx as e } from "react/jsx-runtime";
3
+ import { CheckIcon as U, CopyIcon as V } from "@bioturing/assets";
4
+ import { Highlight as W, themes as T } from "prism-react-renderer";
5
+ import { useState as i, useEffect as X, useCallback as I } from "react";
6
+ import { ThemeProvider as Y } from "../theme-provider/component.js";
7
7
  import './style.css';/* empty css */
8
- import { Segmented as R } from "../segmented/component.js";
9
- import { useControlledState as U } from "../hooks/useControlledState.js";
10
- import { reactNodeToString as V } from "../utils/reactToString.js";
11
- import { useCls as X } from "../utils/antdUtils.js";
12
- import { WithAntdTokens as Y } from "../utils/WithAntdTokens.js";
13
- import { clsx as Z } from "../utils/cn.js";
14
- import { IconButton as H } from "../icon-button/component.js";
15
- import { ScrollArea as ee } from "../scroll-area/component.js";
16
- const fe = ({
17
- code: u,
18
- children: i,
8
+ import { Segmented as Z } from "../segmented/component.js";
9
+ import { useControlledState as ee } from "../hooks/useControlledState.js";
10
+ import { reactNodeToString as oe } from "../utils/reactToString.js";
11
+ import { useCls as te } from "../utils/antdUtils.js";
12
+ import { useTheme as re } from "../theme-provider/context/themeStore.js";
13
+ import { clsx as ne } from "../utils/cn.js";
14
+ import { IconButton as ce } from "../icon-button/component.js";
15
+ import { ScrollArea as se } from "../scroll-area/component.js";
16
+ const M = {
17
+ dark: T.vsDark,
18
+ light: T.vsLight
19
+ }, ye = ({
20
+ code: v,
21
+ children: m,
19
22
  // initial,
20
- lang: m = "tsx",
21
- className: N,
23
+ lang: d = "tsx",
24
+ className: w,
22
25
  options: t,
23
- activeOption: w,
24
- defaultActiveOption: v = 0,
25
- onActiveOptionChange: I,
26
- copyText: d = "Copy",
27
- copySuccessText: k = "Copied",
28
- classNames: p,
26
+ activeOption: x,
27
+ defaultActiveOption: g = 0,
28
+ onActiveOptionChange: E,
29
+ copyText: p = "Copy",
30
+ copySuccessText: b = "Copied",
31
+ classNames: h,
29
32
  maxHeight: c,
30
- onCopy: h,
31
- ...O
33
+ onCopy: u,
34
+ theme: s = "auto",
35
+ themeProviderProps: L,
36
+ scrollAreaProps: O,
37
+ ...j
32
38
  }) => {
33
- const [l, b] = U(
34
- w,
35
- I,
36
- v
37
- ), [n, j] = a(u || ""), [x, A] = a(m), C = t && t.length > 0;
38
- K(() => {
39
+ const [l, k] = ee(
40
+ x,
41
+ E,
42
+ g
43
+ ), [n, A] = i(v || ""), [B, F] = i(d), C = t && t.length > 0;
44
+ X(() => {
39
45
  if (C) {
40
- const o = t[l]?.code || "", r = t[l]?.lang || m;
41
- j(o), A(r);
46
+ const o = t[l]?.code || "", r = t[l]?.lang || d;
47
+ A(o), F(r);
42
48
  }
43
49
  }, [
44
- u,
45
- l,
46
50
  v,
51
+ l,
52
+ g,
47
53
  t,
48
- m,
54
+ d,
49
55
  C,
50
- b
56
+ k
51
57
  ]);
52
- const [B, f] = a(d), [L, g] = a(!1), M = S(() => {
53
- const o = n || V(i);
58
+ const [P, f] = i(p), [_, y] = i(!1), D = I(() => {
59
+ const o = n || oe(m);
54
60
  try {
55
61
  navigator.clipboard.writeText(o).then(() => {
56
- f(k), g(!0), h && h(o);
62
+ f(b), y(!0), u && u(o);
57
63
  });
58
64
  } catch {
59
65
  f("Failed to copy");
60
66
  }
61
- }, [n, i, k, h]), T = S(() => {
62
- f(d), g(!1);
63
- }, [d]), s = X();
64
- return /* @__PURE__ */ e(Q, { theme: "dark", children: /* @__PURE__ */ $(
65
- Y,
67
+ }, [n, m, b, u]), $ = I(() => {
68
+ f(p), y(!1);
69
+ }, [p]), a = te(), { theme: q } = re(), S = () => /* @__PURE__ */ R(
70
+ "div",
66
71
  {
67
- className: Z(s("code-block"), N, p?.root),
68
- ...O,
72
+ className: ne(a("code-block"), w, h?.root),
73
+ ...j,
69
74
  children: [
70
- C && /* @__PURE__ */ e("div", { className: s("code-block-header", p?.header), children: /* @__PURE__ */ e(
71
- R,
75
+ C && /* @__PURE__ */ e("div", { className: a("code-block-header", h?.header), children: /* @__PURE__ */ e(
76
+ Z,
72
77
  {
73
78
  value: l,
74
- onChange: b,
79
+ onChange: k,
75
80
  options: t.map((o, r) => ({
76
81
  label: o.label,
77
82
  value: r
78
83
  }))
79
84
  }
80
85
  ) }),
81
- /* @__PURE__ */ e("div", { className: s("code-block-copy"), children: /* @__PURE__ */ e(
82
- H,
86
+ /* @__PURE__ */ e("div", { className: a("code-block-copy"), children: /* @__PURE__ */ e(
87
+ ce,
83
88
  {
84
- onClick: M,
85
- label: B,
86
- onMouseLeave: T,
87
- children: L ? /* @__PURE__ */ e(q, {}) : /* @__PURE__ */ e(z, {})
89
+ onClick: D,
90
+ label: P,
91
+ onMouseLeave: $,
92
+ children: _ ? /* @__PURE__ */ e(U, {}) : /* @__PURE__ */ e(V, {})
88
93
  }
89
94
  ) }),
90
95
  /* @__PURE__ */ e(
91
96
  "div",
92
97
  {
93
- className: s("code-block-content", p?.content),
98
+ className: a("code-block-content", h?.content),
94
99
  style: {
95
100
  maxHeight: c && (typeof c == "number" ? `${c}px` : c)
96
101
  },
97
- children: /* @__PURE__ */ e(ee, { children: n ? /* @__PURE__ */ e(
98
- G,
102
+ children: /* @__PURE__ */ e(se, { orientation: "both", ...O, children: n ? /* @__PURE__ */ e(
103
+ W,
99
104
  {
100
- language: x,
105
+ language: B,
101
106
  code: n,
102
- theme: J.vsDark,
103
- children: ({
104
- className: o,
105
- style: r,
106
- tokens: D,
107
- getLineProps: E,
108
- getTokenProps: F
109
- }) => /* @__PURE__ */ e(
107
+ theme: s == "auto" ? M[q] : M[s],
108
+ children: ({ className: o, style: r, tokens: z, getLineProps: G, getTokenProps: H }) => /* @__PURE__ */ e(
110
109
  "pre",
111
110
  {
112
111
  style: { ...r, backgroundColor: "transparent" },
113
112
  className: o,
114
- children: D.map((y, P) => /* @__PURE__ */ e("div", { ...E({ line: y }), children: y.map((W, _) => /* @__PURE__ */ e("span", { ...F({ token: W }) }, _)) }, P))
113
+ children: z.map((N, J) => /* @__PURE__ */ e("div", { ...G({ line: N }), children: N.map((K, Q) => /* @__PURE__ */ e("span", { ...H({ token: K }) }, Q)) }, J))
115
114
  }
116
115
  )
117
116
  }
118
- ) : i })
117
+ ) : m })
119
118
  }
120
119
  )
121
120
  ]
122
121
  }
123
- ) });
122
+ );
123
+ return s == "auto" ? S() : /* @__PURE__ */ e(
124
+ Y,
125
+ {
126
+ theme: s,
127
+ appendClassesToChildren: !0,
128
+ ...L,
129
+ children: S()
130
+ }
131
+ );
124
132
  };
125
133
  export {
126
- fe as CodeBlock
134
+ ye as CodeBlock
127
135
  };
128
136
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/code-block/component.tsx"],"sourcesContent":["\"use client\";\nimport { CheckIcon, CopyIcon } from \"@bioturing/assets\";\nimport { Highlight, themes } from \"prism-react-renderer\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { Segmented } from \"../segmented\";\nimport { ThemeProvider } from \"../theme-provider/component\";\nimport { clsx, reactNodeToString, useCls, WithAntdTokens } from \"../utils\";\nimport type { CodeBlockProps } from \"./types\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport const CodeBlock = ({\n code,\n children,\n // initial,\n lang: defaultLang = \"tsx\",\n className,\n options,\n activeOption: controlledActiveOption,\n defaultActiveOption = 0,\n onActiveOptionChange,\n copyText = \"Copy\",\n copySuccessText = \"Copied\",\n classNames,\n maxHeight,\n onCopy,\n ...rest\n}: CodeBlockProps) => {\n const [activeOption, setActiveOption] = useControlledState(\n controlledActiveOption,\n onActiveOptionChange,\n defaultActiveOption\n );\n\n const [currentCode, setCurrentCode] = useState(code || \"\");\n\n const [lang, setLang] = useState(defaultLang);\n\n const hasOptions = options && options.length > 0;\n\n useEffect(() => {\n if (hasOptions) {\n const newCode = options[activeOption]?.code || \"\";\n const newLang = options[activeOption]?.lang || defaultLang;\n setCurrentCode(newCode);\n setLang(newLang);\n }\n }, [\n code,\n activeOption,\n defaultActiveOption,\n options,\n defaultLang,\n hasOptions,\n setActiveOption,\n ]);\n\n const [tooltipContent, setTooltipContent] = useState(copyText);\n const [copySuccess, setCopySuccess] = useState(false);\n\n const handleCopy = useCallback(() => {\n const codeContent = currentCode ? currentCode : reactNodeToString(children);\n try {\n navigator.clipboard.writeText(codeContent).then(() => {\n setTooltipContent(copySuccessText);\n setCopySuccess(true);\n if (onCopy) onCopy(codeContent);\n });\n } catch (_) {\n setTooltipContent(\"Failed to copy\");\n }\n }, [currentCode, children, copySuccessText, onCopy]);\n\n const handleMouseLeave = useCallback(() => {\n setTooltipContent(copyText);\n setCopySuccess(false);\n }, [copyText]);\n\n const cls = useCls();\n\n return (\n <ThemeProvider theme={\"dark\"}>\n <WithAntdTokens\n className={clsx(cls(\"code-block\"), className, classNames?.root)}\n {...rest}\n >\n {hasOptions && (\n <div className={cls(\"code-block-header\", classNames?.header)}>\n <Segmented\n value={activeOption}\n onChange={setActiveOption}\n options={options.map((opt, index) => ({\n label: opt.label,\n value: index,\n }))}\n />\n </div>\n )}\n <div className={cls(\"code-block-copy\")}>\n <IconButton\n onClick={handleCopy}\n label={tooltipContent}\n onMouseLeave={handleMouseLeave}\n >\n {copySuccess ? <CheckIcon /> : <CopyIcon />}\n </IconButton>\n </div>\n <div\n className={cls(\"code-block-content\", classNames?.content)}\n style={{\n maxHeight:\n maxHeight &&\n (typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight),\n }}\n >\n <ScrollArea>\n {currentCode ? (\n <Highlight\n language={lang}\n code={currentCode}\n theme={themes.vsDark}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps,\n }) => (\n <pre\n style={{ ...style, backgroundColor: \"transparent\" }}\n className={className}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n ) : (\n children\n )}\n </ScrollArea>\n </div>\n </WithAntdTokens>\n </ThemeProvider>\n );\n};\n"],"names":["CodeBlock","code","children","defaultLang","className","options","controlledActiveOption","defaultActiveOption","onActiveOptionChange","copyText","copySuccessText","classNames","maxHeight","onCopy","rest","activeOption","setActiveOption","useControlledState","currentCode","setCurrentCode","useState","lang","setLang","hasOptions","useEffect","newCode","newLang","tooltipContent","setTooltipContent","copySuccess","setCopySuccess","handleCopy","useCallback","codeContent","reactNodeToString","handleMouseLeave","cls","useCls","jsx","ThemeProvider","jsxs","WithAntdTokens","clsx","Segmented","opt","index","IconButton","CheckIcon","CopyIcon","ScrollArea","Highlight","themes","style","tokens","getLineProps","getTokenProps","line","i","token","key"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/code-block/component.tsx"],"sourcesContent":["\"use client\";\nimport { CheckIcon, CopyIcon } from \"@bioturing/assets\";\nimport { Highlight, themes } from \"prism-react-renderer\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { Segmented } from \"../segmented\";\nimport { ThemeProvider } from \"../theme-provider/component\";\nimport { clsx, reactNodeToString, useCls } from \"../utils\";\nimport type { CodeBlockProps } from \"./types\";\n\n// Import component-specific styles\nimport \"./style.css\";\nimport { useTheme } from \"../theme-provider\";\n\nconst THEME_MAP = {\n dark: themes.vsDark,\n light: themes.vsLight,\n};\n\nexport const CodeBlock = ({\n code,\n children,\n // initial,\n lang: defaultLang = \"tsx\",\n className,\n options,\n activeOption: controlledActiveOption,\n defaultActiveOption = 0,\n onActiveOptionChange,\n copyText = \"Copy\",\n copySuccessText = \"Copied\",\n classNames,\n maxHeight,\n onCopy,\n theme = \"auto\",\n themeProviderProps,\n scrollAreaProps,\n ...rest\n}: CodeBlockProps) => {\n const [activeOption, setActiveOption] = useControlledState(\n controlledActiveOption,\n onActiveOptionChange,\n defaultActiveOption\n );\n\n const [currentCode, setCurrentCode] = useState(code || \"\");\n\n const [lang, setLang] = useState(defaultLang);\n\n const hasOptions = options && options.length > 0;\n\n useEffect(() => {\n if (hasOptions) {\n const newCode = options[activeOption]?.code || \"\";\n const newLang = options[activeOption]?.lang || defaultLang;\n setCurrentCode(newCode);\n setLang(newLang);\n }\n }, [\n code,\n activeOption,\n defaultActiveOption,\n options,\n defaultLang,\n hasOptions,\n setActiveOption,\n ]);\n\n const [tooltipContent, setTooltipContent] = useState(copyText);\n const [copySuccess, setCopySuccess] = useState(false);\n\n const handleCopy = useCallback(() => {\n const codeContent = currentCode ? currentCode : reactNodeToString(children);\n try {\n navigator.clipboard.writeText(codeContent).then(() => {\n setTooltipContent(copySuccessText);\n setCopySuccess(true);\n if (onCopy) onCopy(codeContent);\n });\n } catch (_) {\n setTooltipContent(\"Failed to copy\");\n }\n }, [currentCode, children, copySuccessText, onCopy]);\n\n const handleMouseLeave = useCallback(() => {\n setTooltipContent(copyText);\n setCopySuccess(false);\n }, [copyText]);\n\n const cls = useCls();\n const { theme: currentThemeFromContext } = useTheme();\n\n const renderInner = () => (\n <div\n className={clsx(cls(\"code-block\"), className, classNames?.root)}\n {...rest}\n >\n {hasOptions && (\n <div className={cls(\"code-block-header\", classNames?.header)}>\n <Segmented\n value={activeOption}\n onChange={setActiveOption}\n options={options.map((opt, index) => ({\n label: opt.label,\n value: index,\n }))}\n />\n </div>\n )}\n <div className={cls(\"code-block-copy\")}>\n <IconButton\n onClick={handleCopy}\n label={tooltipContent}\n onMouseLeave={handleMouseLeave}\n >\n {copySuccess ? <CheckIcon /> : <CopyIcon />}\n </IconButton>\n </div>\n <div\n className={cls(\"code-block-content\", classNames?.content)}\n style={{\n maxHeight:\n maxHeight &&\n (typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight),\n }}\n >\n <ScrollArea orientation=\"both\" {...scrollAreaProps}>\n {currentCode ? (\n <Highlight\n language={lang}\n code={currentCode}\n theme={\n theme == \"auto\"\n ? THEME_MAP[currentThemeFromContext]\n : THEME_MAP[theme]\n }\n >\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n style={{ ...style, backgroundColor: \"transparent\" }}\n className={className}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n ) : (\n children\n )}\n </ScrollArea>\n </div>\n </div>\n );\n\n return theme == \"auto\" ? (\n renderInner()\n ) : (\n <ThemeProvider\n theme={theme}\n appendClassesToChildren\n {...themeProviderProps}\n >\n {renderInner()}\n </ThemeProvider>\n );\n};\n"],"names":["THEME_MAP","themes","CodeBlock","code","children","defaultLang","className","options","controlledActiveOption","defaultActiveOption","onActiveOptionChange","copyText","copySuccessText","classNames","maxHeight","onCopy","theme","themeProviderProps","scrollAreaProps","rest","activeOption","setActiveOption","useControlledState","currentCode","setCurrentCode","useState","lang","setLang","hasOptions","useEffect","newCode","newLang","tooltipContent","setTooltipContent","copySuccess","setCopySuccess","handleCopy","useCallback","codeContent","reactNodeToString","handleMouseLeave","cls","useCls","currentThemeFromContext","useTheme","renderInner","jsxs","clsx","jsx","Segmented","opt","index","IconButton","CheckIcon","CopyIcon","ScrollArea","Highlight","style","tokens","getLineProps","getTokenProps","line","i","token","key","ThemeProvider"],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { HighlightProps } from 'prism-react-renderer';
2
+ import { Theme } from '../../tokens';
3
+ import { ThemeProviderProps } from '../theme-provider';
4
+ import { ScrollAreaProps } from '../scroll-area';
2
5
  export interface CodeOption {
3
6
  label: string;
4
7
  code: string;
@@ -60,5 +63,19 @@ export interface CodeBlockProps extends Omit<React.ComponentPropsWithRef<"div">,
60
63
  * Copy callback function
61
64
  */
62
65
  onCopy?: (code?: string) => void;
66
+ /**
67
+ * Theme of the code block
68
+ * @default "dark"
69
+ */
70
+ theme?: Theme | "auto";
71
+ /**
72
+ * Props to pass to the ThemeProvider
73
+ * Only works when theme is not "auto"
74
+ */
75
+ themeProviderProps?: ThemeProviderProps;
76
+ /**
77
+ * Props to pass to the ScrollArea
78
+ */
79
+ scrollAreaProps?: ScrollAreaProps;
63
80
  }
64
81
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1D;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA0CD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4ExD,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,aAAa,CAAC;AAGrB,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA0CD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2ExD,CAAC"}
@@ -2,28 +2,28 @@
2
2
  import { jsxs as f, Fragment as S, jsx as n } from "react/jsx-runtime";
3
3
  import { useEffect as E, useCallback as L } from "react";
4
4
  import { Command as r } from "../cmdk/index.js";
5
- import { useDropdownMenu as N } from "../dropdown-menu/useDropdownMenu.js";
5
+ import { useDropdownMenu as D } from "../dropdown-menu/useDropdownMenu.js";
6
6
  import './style.css';/* empty css */
7
- import { WithAntdTokens as D } from "../utils/WithAntdTokens.js";
8
7
  import { useCls as b } from "../utils/antdUtils.js";
9
8
  import { useControlledState as x } from "../hooks/useControlledState.js";
9
+ import { useTheme as j } from "../theme-provider/context/themeStore.js";
10
10
  import { ScrollArea as A } from "../scroll-area/component.js";
11
- const j = [
11
+ const G = [
12
12
  { key: "k", metaKey: !0 },
13
13
  { key: "k", ctrlKey: !0 }
14
14
  ];
15
- function G(t, e) {
15
+ function I(t, e) {
16
16
  return t.key.toLowerCase() === e.key.toLowerCase() && !!t.metaKey == !!e.metaKey && !!t.ctrlKey == !!e.ctrlKey && !!t.altKey == !!e.altKey && !!t.shiftKey == !!e.shiftKey;
17
17
  }
18
- const B = ({
18
+ const J = ({
19
19
  open: t,
20
20
  onOpenChange: e,
21
21
  defaultOpen: h,
22
- items: k = [],
23
- shortcuts: s = j,
22
+ items: C = [],
23
+ shortcuts: s = G,
24
24
  placeholder: c = "Type a command or search...",
25
25
  emptyText: l = "No results found.",
26
- label: C = "Command Palette",
26
+ label: k = "Command Palette",
27
27
  className: K,
28
28
  classNames: d
29
29
  }) => {
@@ -35,16 +35,16 @@ const B = ({
35
35
  E(() => {
36
36
  const p = (y) => {
37
37
  s.find(
38
- (g) => G(y, g)
38
+ (g) => I(y, g)
39
39
  ) && (y.preventDefault(), a(!m));
40
40
  };
41
41
  return document.addEventListener("keydown", p), () => document.removeEventListener("keydown", p);
42
42
  }, [s, m, a]);
43
- const { renderGroup: i, itemGroups: u } = N({
44
- items: k,
43
+ const { renderGroup: i, itemGroups: u } = D({
44
+ items: C,
45
45
  inCombobox: !0,
46
46
  onOpenChange: e
47
- }), w = L(
47
+ }), { className: w } = j(), N = L(
48
48
  () => /* @__PURE__ */ f(S, { children: [
49
49
  /* @__PURE__ */ n(r.Input, { placeholder: c }),
50
50
  /* @__PURE__ */ n(A, { fadeEdges: !0, children: /* @__PURE__ */ f(
@@ -60,20 +60,20 @@ const B = ({
60
60
  ] }),
61
61
  [o, l, u, c, i]
62
62
  );
63
- return /* @__PURE__ */ n(D, { children: /* @__PURE__ */ n(
63
+ return /* @__PURE__ */ n(
64
64
  r.Dialog,
65
65
  {
66
66
  open: m,
67
67
  onOpenChange: a,
68
- label: C,
68
+ label: k,
69
69
  overlayClassName: o("command-palette-overlay", d?.mask),
70
70
  contentClassName: o("command-palette-content", d?.content),
71
- className: o("command-palette", K),
72
- children: w()
71
+ className: o("command-palette", w, K),
72
+ children: N()
73
73
  }
74
- ) });
74
+ );
75
75
  };
76
76
  export {
77
- B as CommandPalette
77
+ J as CommandPalette
78
78
  };
79
79
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/command-palette/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { Command } from \"../cmdk\";\nimport { DropdownMenuItemType } from \"../dropdown-menu/types\";\nimport { useDropdownMenu } from \"../dropdown-menu/useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { useCls, WithAntdTokens } from \"../utils\";\nimport \"./style.css\";\n\nexport type CommandPaletteShortcut = {\n key: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n};\n\nexport interface CommandPaletteProps {\n /** Whether the command palette is open */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state\n */\n defaultOpen?: boolean;\n /** Items to display in the command palette */\n items?: DropdownMenuItemType[];\n /** Keyboard shortcuts to open the palette */\n shortcuts?: CommandPaletteShortcut[];\n /** Placeholder text for the search input */\n placeholder?: string;\n /** Text to show when no results are found */\n emptyText?: string;\n /** Accessible label for the command palette */\n label?: string;\n /** Additional CSS class names */\n className?: string;\n classNames?: {\n root?: string;\n mask?: string;\n content?: string;\n group?: string;\n item?: string;\n groupLabel?: string;\n };\n}\n\nconst defaultShortcuts: CommandPaletteShortcut[] = [\n { key: \"k\", metaKey: true },\n { key: \"k\", ctrlKey: true },\n];\n\nfunction matchesShortcut(\n event: KeyboardEvent,\n shortcut: CommandPaletteShortcut,\n): boolean {\n return (\n event.key.toLowerCase() === shortcut.key.toLowerCase() &&\n !!event.metaKey === !!shortcut.metaKey &&\n !!event.ctrlKey === !!shortcut.ctrlKey &&\n !!event.altKey === !!shortcut.altKey &&\n !!event.shiftKey === !!shortcut.shiftKey\n );\n}\n\n// Default items for testing/demo purposes\n// const defaultItems: DropdownMenuItemType[] = [\n// {\n// type: \"item\",\n// key: \"search\",\n// label: \"Search files\",\n// onClick: () => console.log(\"Search files\"),\n// },\n// {\n// type: \"item\",\n// key: \"new-file\",\n// label: \"New file\",\n// onClick: () => console.log(\"New file\"),\n// },\n// {\n// type: \"item\",\n// key: \"settings\",\n// label: \"Open settings\",\n// onClick: () => console.log(\"Open settings\"),\n// },\n// ];\n\nexport const CommandPalette: React.FC<CommandPaletteProps> = ({\n open,\n onOpenChange,\n defaultOpen,\n items = [],\n shortcuts = defaultShortcuts,\n placeholder = \"Type a command or search...\",\n emptyText = \"No results found.\",\n label = \"Command Palette\",\n className,\n classNames,\n}) => {\n const cls = useCls();\n const [actualOpen, setActualOpen] = useControlledState(\n open,\n onOpenChange,\n defaultOpen,\n );\n\n // Set up keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const matchingShortcut = shortcuts.find((shortcut) =>\n matchesShortcut(event, shortcut),\n );\n\n if (matchingShortcut) {\n event.preventDefault();\n setActualOpen(!actualOpen);\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [shortcuts, actualOpen, setActualOpen]);\n\n const { renderGroup, itemGroups } = useDropdownMenu({\n items,\n inCombobox: true,\n onOpenChange,\n });\n\n const renderMenuInner = useCallback(\n () => (\n <>\n <Command.Input placeholder={placeholder} />\n {/*{beforeList}*/}\n <ScrollArea fadeEdges>\n <Command.List\n className={cls(\"dropdown-menu-list\", \"command-palette-list\")}\n >\n <Command.Empty className={cls(\"dropdown-menu-empty\")}>\n {emptyText}\n </Command.Empty>\n {itemGroups.map(renderGroup)}\n </Command.List>\n </ScrollArea>\n {/*{afterList}*/}\n </>\n ),\n [cls, emptyText, itemGroups, placeholder, renderGroup],\n );\n return (\n <WithAntdTokens>\n <Command.Dialog\n open={actualOpen}\n onOpenChange={setActualOpen}\n label={label}\n overlayClassName={cls(\"command-palette-overlay\", classNames?.mask)}\n contentClassName={cls(\"command-palette-content\", classNames?.content)}\n className={cls(\"command-palette\", className)}\n >\n {renderMenuInner()}\n </Command.Dialog>\n </WithAntdTokens>\n );\n};\n"],"names":["defaultShortcuts","matchesShortcut","event","shortcut","CommandPalette","open","onOpenChange","defaultOpen","items","shortcuts","placeholder","emptyText","label","className","classNames","cls","useCls","actualOpen","setActualOpen","useControlledState","useEffect","handleKeyDown","renderGroup","itemGroups","useDropdownMenu","renderMenuInner","useCallback","jsxs","Fragment","jsx","Command","ScrollArea","WithAntdTokens"],"mappings":";;;;;;;;;;AAiDA,MAAMA,IAA6C;AAAA,EACjD,EAAE,KAAK,KAAK,SAAS,GAAA;AAAA,EACrB,EAAE,KAAK,KAAK,SAAS,GAAA;AACvB;AAEA,SAASC,EACPC,GACAC,GACS;AACT,SACED,EAAM,IAAI,YAAA,MAAkBC,EAAS,IAAI,YAAA,KACzC,CAAC,CAACD,EAAM,WAAY,CAAC,CAACC,EAAS,WAC/B,CAAC,CAACD,EAAM,WAAY,CAAC,CAACC,EAAS,WAC/B,CAAC,CAACD,EAAM,UAAW,CAAC,CAACC,EAAS,UAC9B,CAAC,CAACD,EAAM,YAAa,CAAC,CAACC,EAAS;AAEpC;AAwBO,MAAMC,IAAgD,CAAC;AAAA,EAC5D,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ,CAAA;AAAA,EACR,WAAAC,IAAYT;AAAA,EACZ,aAAAU,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,YAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAA,GACN,CAACC,GAAYC,CAAa,IAAIC;AAAA,IAClCd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAIF,EAAAa,EAAU,MAAM;AACd,UAAMC,IAAgB,CAACnB,MAAyB;AAK9C,MAJyBO,EAAU;AAAA,QAAK,CAACN,MACvCF,EAAgBC,GAAOC,CAAQ;AAAA,MAAA,MAI/BD,EAAM,eAAA,GACNgB,EAAc,CAACD,CAAU;AAAA,IAE7B;AAEA,oBAAS,iBAAiB,WAAWI,CAAa,GAC3C,MAAM,SAAS,oBAAoB,WAAWA,CAAa;AAAA,EACpE,GAAG,CAACZ,GAAWQ,GAAYC,CAAa,CAAC;AAEzC,QAAM,EAAE,aAAAI,GAAa,YAAAC,EAAA,IAAeC,EAAgB;AAAA,IAClD,OAAAhB;AAAA,IACA,YAAY;AAAA,IACZ,cAAAF;AAAA,EAAA,CACD,GAEKmB,IAAkBC;AAAA,IACtB,MACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAC,EAACC,EAAQ,OAAR,EAAc,aAAApB,EAAA,CAA0B;AAAA,MAEzC,gBAAAmB,EAACE,GAAA,EAAW,WAAS,IACnB,UAAA,gBAAAJ;AAAA,QAACG,EAAQ;AAAA,QAAR;AAAA,UACC,WAAWf,EAAI,sBAAsB,sBAAsB;AAAA,UAE3D,UAAA;AAAA,YAAA,gBAAAc,EAACC,EAAQ,OAAR,EAAc,WAAWf,EAAI,qBAAqB,GAChD,UAAAJ,GACH;AAAA,YACCY,EAAW,IAAID,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,EAC7B,CACF;AAAA,IAAA,GAEF;AAAA,IAEF,CAACP,GAAKJ,GAAWY,GAAYb,GAAaY,CAAW;AAAA,EAAA;AAEvD,2BACGU,GAAA,EACC,UAAA,gBAAAH;AAAA,IAACC,EAAQ;AAAA,IAAR;AAAA,MACC,MAAMb;AAAA,MACN,cAAcC;AAAA,MACd,OAAAN;AAAA,MACA,kBAAkBG,EAAI,2BAA2BD,GAAY,IAAI;AAAA,MACjE,kBAAkBC,EAAI,2BAA2BD,GAAY,OAAO;AAAA,MACpE,WAAWC,EAAI,mBAAmBF,CAAS;AAAA,MAE1C,UAAAY,EAAA;AAAA,IAAgB;AAAA,EAAA,GAErB;AAEJ;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/command-palette/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { Command } from \"../cmdk\";\nimport { DropdownMenuItemType } from \"../dropdown-menu/types\";\nimport { useDropdownMenu } from \"../dropdown-menu/useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { useCls } from \"../utils\";\nimport \"./style.css\";\nimport { useTheme } from \"../theme-provider\";\n\nexport type CommandPaletteShortcut = {\n key: string;\n metaKey?: boolean;\n ctrlKey?: boolean;\n altKey?: boolean;\n shiftKey?: boolean;\n};\n\nexport interface CommandPaletteProps {\n /** Whether the command palette is open */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state\n */\n defaultOpen?: boolean;\n /** Items to display in the command palette */\n items?: DropdownMenuItemType[];\n /** Keyboard shortcuts to open the palette */\n shortcuts?: CommandPaletteShortcut[];\n /** Placeholder text for the search input */\n placeholder?: string;\n /** Text to show when no results are found */\n emptyText?: string;\n /** Accessible label for the command palette */\n label?: string;\n /** Additional CSS class names */\n className?: string;\n classNames?: {\n root?: string;\n mask?: string;\n content?: string;\n group?: string;\n item?: string;\n groupLabel?: string;\n };\n}\n\nconst defaultShortcuts: CommandPaletteShortcut[] = [\n { key: \"k\", metaKey: true },\n { key: \"k\", ctrlKey: true },\n];\n\nfunction matchesShortcut(\n event: KeyboardEvent,\n shortcut: CommandPaletteShortcut\n): boolean {\n return (\n event.key.toLowerCase() === shortcut.key.toLowerCase() &&\n !!event.metaKey === !!shortcut.metaKey &&\n !!event.ctrlKey === !!shortcut.ctrlKey &&\n !!event.altKey === !!shortcut.altKey &&\n !!event.shiftKey === !!shortcut.shiftKey\n );\n}\n\n// Default items for testing/demo purposes\n// const defaultItems: DropdownMenuItemType[] = [\n// {\n// type: \"item\",\n// key: \"search\",\n// label: \"Search files\",\n// onClick: () => console.log(\"Search files\"),\n// },\n// {\n// type: \"item\",\n// key: \"new-file\",\n// label: \"New file\",\n// onClick: () => console.log(\"New file\"),\n// },\n// {\n// type: \"item\",\n// key: \"settings\",\n// label: \"Open settings\",\n// onClick: () => console.log(\"Open settings\"),\n// },\n// ];\n\nexport const CommandPalette: React.FC<CommandPaletteProps> = ({\n open,\n onOpenChange,\n defaultOpen,\n items = [],\n shortcuts = defaultShortcuts,\n placeholder = \"Type a command or search...\",\n emptyText = \"No results found.\",\n label = \"Command Palette\",\n className,\n classNames,\n}) => {\n const cls = useCls();\n const [actualOpen, setActualOpen] = useControlledState(\n open,\n onOpenChange,\n defaultOpen\n );\n\n // Set up keyboard shortcuts\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const matchingShortcut = shortcuts.find((shortcut) =>\n matchesShortcut(event, shortcut)\n );\n\n if (matchingShortcut) {\n event.preventDefault();\n setActualOpen(!actualOpen);\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [shortcuts, actualOpen, setActualOpen]);\n\n const { renderGroup, itemGroups } = useDropdownMenu({\n items,\n inCombobox: true,\n onOpenChange,\n });\n\n const { className: themeClassName } = useTheme();\n const renderMenuInner = useCallback(\n () => (\n <>\n <Command.Input placeholder={placeholder} />\n {/*{beforeList}*/}\n <ScrollArea fadeEdges>\n <Command.List\n className={cls(\"dropdown-menu-list\", \"command-palette-list\")}\n >\n <Command.Empty className={cls(\"dropdown-menu-empty\")}>\n {emptyText}\n </Command.Empty>\n {itemGroups.map(renderGroup)}\n </Command.List>\n </ScrollArea>\n {/*{afterList}*/}\n </>\n ),\n [cls, emptyText, itemGroups, placeholder, renderGroup]\n );\n return (\n <Command.Dialog\n open={actualOpen}\n onOpenChange={setActualOpen}\n label={label}\n overlayClassName={cls(\"command-palette-overlay\", classNames?.mask)}\n contentClassName={cls(\"command-palette-content\", classNames?.content)}\n className={cls(\"command-palette\", themeClassName, className)}\n >\n {renderMenuInner()}\n </Command.Dialog>\n );\n};\n"],"names":["defaultShortcuts","matchesShortcut","event","shortcut","CommandPalette","open","onOpenChange","defaultOpen","items","shortcuts","placeholder","emptyText","label","className","classNames","cls","useCls","actualOpen","setActualOpen","useControlledState","useEffect","handleKeyDown","renderGroup","itemGroups","useDropdownMenu","themeClassName","useTheme","renderMenuInner","useCallback","jsxs","Fragment","jsx","Command","ScrollArea"],"mappings":";;;;;;;;;;AAkDA,MAAMA,IAA6C;AAAA,EACjD,EAAE,KAAK,KAAK,SAAS,GAAA;AAAA,EACrB,EAAE,KAAK,KAAK,SAAS,GAAA;AACvB;AAEA,SAASC,EACPC,GACAC,GACS;AACT,SACED,EAAM,IAAI,YAAA,MAAkBC,EAAS,IAAI,YAAA,KACzC,CAAC,CAACD,EAAM,WAAY,CAAC,CAACC,EAAS,WAC/B,CAAC,CAACD,EAAM,WAAY,CAAC,CAACC,EAAS,WAC/B,CAAC,CAACD,EAAM,UAAW,CAAC,CAACC,EAAS,UAC9B,CAAC,CAACD,EAAM,YAAa,CAAC,CAACC,EAAS;AAEpC;AAwBO,MAAMC,IAAgD,CAAC;AAAA,EAC5D,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ,CAAA;AAAA,EACR,WAAAC,IAAYT;AAAA,EACZ,aAAAU,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,WAAAC;AAAA,EACA,YAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAA,GACN,CAACC,GAAYC,CAAa,IAAIC;AAAA,IAClCd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAIF,EAAAa,EAAU,MAAM;AACd,UAAMC,IAAgB,CAACnB,MAAyB;AAK9C,MAJyBO,EAAU;AAAA,QAAK,CAACN,MACvCF,EAAgBC,GAAOC,CAAQ;AAAA,MAAA,MAI/BD,EAAM,eAAA,GACNgB,EAAc,CAACD,CAAU;AAAA,IAE7B;AAEA,oBAAS,iBAAiB,WAAWI,CAAa,GAC3C,MAAM,SAAS,oBAAoB,WAAWA,CAAa;AAAA,EACpE,GAAG,CAACZ,GAAWQ,GAAYC,CAAa,CAAC;AAEzC,QAAM,EAAE,aAAAI,GAAa,YAAAC,EAAA,IAAeC,EAAgB;AAAA,IAClD,OAAAhB;AAAA,IACA,YAAY;AAAA,IACZ,cAAAF;AAAA,EAAA,CACD,GAEK,EAAE,WAAWmB,EAAA,IAAmBC,EAAA,GAChCC,IAAkBC;AAAA,IACtB,MACE,gBAAAC,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAC,EAACC,EAAQ,OAAR,EAAc,aAAAtB,EAAA,CAA0B;AAAA,MAEzC,gBAAAqB,EAACE,GAAA,EAAW,WAAS,IACnB,UAAA,gBAAAJ;AAAA,QAACG,EAAQ;AAAA,QAAR;AAAA,UACC,WAAWjB,EAAI,sBAAsB,sBAAsB;AAAA,UAE3D,UAAA;AAAA,YAAA,gBAAAgB,EAACC,EAAQ,OAAR,EAAc,WAAWjB,EAAI,qBAAqB,GAChD,UAAAJ,GACH;AAAA,YACCY,EAAW,IAAID,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,EAC7B,CACF;AAAA,IAAA,GAEF;AAAA,IAEF,CAACP,GAAKJ,GAAWY,GAAYb,GAAaY,CAAW;AAAA,EAAA;AAEvD,SACE,gBAAAS;AAAA,IAACC,EAAQ;AAAA,IAAR;AAAA,MACC,MAAMf;AAAA,MACN,cAAcC;AAAA,MACd,OAAAN;AAAA,MACA,kBAAkBG,EAAI,2BAA2BD,GAAY,IAAI;AAAA,MACjE,kBAAkBC,EAAI,2BAA2BD,GAAY,OAAO;AAAA,MACpE,WAAWC,EAAI,mBAAmBU,GAAgBZ,CAAS;AAAA,MAE1D,UAAAc,EAAA;AAAA,IAAgB;AAAA,EAAA;AAGvB;"}
@@ -0,0 +1,8 @@
1
+ import { Ref } from 'react';
2
+ import { DataTableProps, DataTableRef } from './types';
3
+ declare const InnerDataTable: <RecordType extends Record<string, any> = Record<string, unknown>>(props: DataTableProps<RecordType>, ref: Ref<DataTableRef>) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const DataTable: <RecordType extends Record<string, any> = Record<string, unknown>>(props: DataTableProps<RecordType> & {
5
+ ref?: Ref<DataTableRef>;
6
+ }) => ReturnType<typeof InnerDataTable>;
7
+ export {};
8
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/component.tsx"],"names":[],"mappings":"AACA,OAAc,EAAsB,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAO5D,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGjE,OAAO,aAAa,CAAC;AAUrB,QAAA,MAAM,cAAc,GAClB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,OAAO,cAAc,CAAC,UAAU,CAAC,EACjC,KAAK,GAAG,CAAC,YAAY,CAAC,4CAgIvB,CAAC;AAQF,eAAO,MAAM,SAAS,GALpB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,mCAE/B,cAAc,CAAC,UAAU,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;CAAE,KAC5D,UAAU,CAAC,OAAO,cAAc,CAEK,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use client";
2
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
+ import { forwardRef as R, useRef as T } from "react";
4
+ import { Spin as C } from "../spin/component.js";
5
+ import { useDataTable as D } from "./hooks.js";
6
+ import { convertSelectionToAntFormat as x } from "./utils.js";
7
+ import './style.css';/* empty css */
8
+ import { TableHeader as K } from "./components/TableHeader.js";
9
+ import { TableBody as N } from "./components/TableBody.js";
10
+ import { TablePagination as z } from "./components/TablePagination.js";
11
+ import { useCls as P } from "../utils/antdUtils.js";
12
+ import { clsx as m } from "../utils/cn.js";
13
+ const k = (n, W) => {
14
+ const {
15
+ dataSource: i = [],
16
+ className: d,
17
+ size: f = "large",
18
+ variant: p = "default",
19
+ emptyDescription: b,
20
+ rowKey: g
21
+ } = n, o = P(), u = T(null), {
22
+ table: a,
23
+ isLoading: w,
24
+ spinProps: h,
25
+ hasRowSelection: c,
26
+ hasPagination: S,
27
+ paginationConfig: y,
28
+ rowSelectionConfig: r
29
+ } = D(n), v = (t) => {
30
+ if (c && (t.toggleSelected(), r?.onSelect)) {
31
+ const { selectedRows: l } = x(
32
+ a.getState().rowSelection,
33
+ i,
34
+ g
35
+ );
36
+ r.onSelect(
37
+ t.original,
38
+ !t.getIsSelected(),
39
+ l,
40
+ new Event("click")
41
+ );
42
+ }
43
+ };
44
+ return /* @__PURE__ */ e(
45
+ "div",
46
+ {
47
+ ref: u,
48
+ className: m(
49
+ o("table-wrapper", "data-table"),
50
+ o(`table-${f}`),
51
+ p === "zebra" ? o("table-zebra") : "",
52
+ "css-var-«r3»",
53
+ d
54
+ ),
55
+ children: /* @__PURE__ */ s(C, { spinning: w, ...h, children: [
56
+ /* @__PURE__ */ e("div", { className: m(o("table")), children: /* @__PURE__ */ e("div", { className: o("table-container"), children: /* @__PURE__ */ e("div", { className: o("table-content"), children: /* @__PURE__ */ s("table", { children: [
57
+ /* @__PURE__ */ e("colgroup", { children: a.getHeaderGroups()[0]?.headers.map((t) => {
58
+ let l;
59
+ if (t.id === "select")
60
+ l = r?.columnWidth || 32;
61
+ else
62
+ try {
63
+ l = `${t.getSize()}px`;
64
+ } catch {
65
+ l = t.column.columnDef.meta?.width;
66
+ }
67
+ return /* @__PURE__ */ e(
68
+ "col",
69
+ {
70
+ style: { width: l }
71
+ },
72
+ t.id
73
+ );
74
+ }) }),
75
+ /* @__PURE__ */ e(
76
+ K,
77
+ {
78
+ table: a,
79
+ rowSelectionConfig: r,
80
+ dataSource: i,
81
+ rowKey: n.rowKey
82
+ }
83
+ ),
84
+ /* @__PURE__ */ e(
85
+ N,
86
+ {
87
+ table: a,
88
+ dataSource: i,
89
+ emptyDescription: b,
90
+ hasRowSelection: c,
91
+ onRowClick: v,
92
+ rowSelectionConfig: r,
93
+ rowKey: n.rowKey
94
+ }
95
+ )
96
+ ] }) }) }) }),
97
+ S && /* @__PURE__ */ e(
98
+ z,
99
+ {
100
+ table: a,
101
+ paginationConfig: y,
102
+ totalCount: a.getPreFilteredRowModel().rows.length
103
+ }
104
+ )
105
+ ] })
106
+ }
107
+ );
108
+ }, I = R(k), O = I;
109
+ export {
110
+ O as DataTable
111
+ };
112
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/data-table/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { forwardRef, useRef, type Ref } from \"react\";\nimport { type Row } from \"@tanstack/react-table\";\nimport { clsx, useCls } from \"../utils\";\nimport { Spin } from \"../spin/component\";\nimport { TableHeader, TableBody, TablePagination } from \"./components\";\nimport { useDataTable } from \"./hooks\";\nimport { convertSelectionToAntFormat } from \"./utils\";\nimport { type DataTableProps, type DataTableRef } from \"./types\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Extended meta type for column definitions\ninterface ExtendedColumnMeta {\n align?: 'left' | 'center' | 'right';\n width?: string | number;\n fixed?: 'left' | 'right' | boolean;\n ellipsis?: boolean;\n}\n\nconst InnerDataTable = <\n RecordType extends Record<string, any> = Record<string, unknown>\n>(\n props: DataTableProps<RecordType>,\n ref: Ref<DataTableRef>\n) => {\n const {\n dataSource = [],\n columns = [],\n className,\n size = \"large\",\n variant = \"default\",\n emptyDescription,\n rowSelection,\n pagination,\n loading,\n enableSorting = true,\n enableFiltering = false,\n onSortingChange,\n onFilteringChange,\n rowKey,\n ...restProps\n } = props;\n\n const cls = useCls();\n const tableWrapperRef = useRef<HTMLDivElement>(null);\n\n // Use the custom hook for table logic\n const {\n table,\n isLoading,\n spinProps,\n hasRowSelection,\n hasPagination,\n paginationConfig,\n rowSelectionConfig,\n } = useDataTable(props);\n\n // Handle row click for selection\n const handleRowClick = (row: Row<RecordType>) => {\n if (hasRowSelection) {\n row.toggleSelected();\n if (rowSelectionConfig?.onSelect) {\n const { selectedRowKeys, selectedRows } = convertSelectionToAntFormat(\n table.getState().rowSelection,\n dataSource,\n rowKey\n );\n rowSelectionConfig.onSelect(\n row.original,\n !row.getIsSelected(),\n selectedRows,\n new Event(\"click\")\n );\n }\n }\n };\n\n // cls(\"table-scroll-horizontal\"))\n\n return (\n <div\n ref={tableWrapperRef}\n className={clsx(\n cls(\"table-wrapper\", \"data-table\"),\n cls(`table-${size}`),\n variant === \"zebra\" ? cls(\"table-zebra\") : \"\",\n \"css-var-«r3»\",\n className\n )}\n >\n <Spin spinning={isLoading} {...spinProps}>\n <div className={clsx(cls(\"table\"))}>\n <div className={cls(\"table-container\")}>\n <div className={cls(\"table-content\")}>\n <table>\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) => {\n let columnWidth: string | number | undefined;\n \n if (header.id === \"select\") {\n columnWidth = rowSelectionConfig?.columnWidth || 32;\n } else {\n // Try to get the current size from TanStack, fallback to meta width\n try {\n columnWidth = `${header.getSize()}px`;\n } catch (error) {\n // Fallback to static width from column meta\n columnWidth = (header.column.columnDef.meta as ExtendedColumnMeta)?.width;\n }\n }\n \n return (\n <col\n key={header.id}\n style={{ width: columnWidth }}\n />\n );\n })}\n </colgroup>\n\n <TableHeader\n table={table}\n rowSelectionConfig={rowSelectionConfig}\n dataSource={dataSource}\n rowKey={props.rowKey}\n />\n\n <TableBody\n table={table}\n dataSource={dataSource}\n emptyDescription={emptyDescription}\n hasRowSelection={hasRowSelection}\n onRowClick={handleRowClick}\n rowSelectionConfig={rowSelectionConfig}\n rowKey={props.rowKey}\n />\n </table>\n </div>\n </div>\n </div>\n\n {hasPagination && (\n <TablePagination\n table={table}\n paginationConfig={paginationConfig}\n totalCount={table.getPreFilteredRowModel().rows.length}\n />\n )}\n </Spin>\n </div>\n );\n};\n\nconst InternalDataTable = forwardRef(InnerDataTable) as <\n RecordType extends Record<string, any> = Record<string, unknown>\n>(\n props: DataTableProps<RecordType> & { ref?: Ref<DataTableRef> }\n) => ReturnType<typeof InnerDataTable>;\n\nexport const DataTable = InternalDataTable;\n"],"names":["InnerDataTable","props","ref","dataSource","className","size","variant","emptyDescription","rowKey","cls","useCls","tableWrapperRef","useRef","table","isLoading","spinProps","hasRowSelection","hasPagination","paginationConfig","rowSelectionConfig","useDataTable","handleRowClick","row","selectedRows","convertSelectionToAntFormat","jsx","clsx","jsxs","Spin","header","columnWidth","TableHeader","TableBody","TablePagination","InternalDataTable","forwardRef","DataTable"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ import { Table, Row } from '@tanstack/react-table';
3
+ import { DataTableRowSelection, RowKey } from '../types';
4
+ interface TableBodyProps<RecordType extends Record<string, any> = Record<string, unknown>> {
5
+ table: Table<RecordType>;
6
+ dataSource: RecordType[];
7
+ emptyDescription?: React.ReactNode;
8
+ hasRowSelection?: boolean;
9
+ onRowClick?: (row: Row<RecordType>) => void;
10
+ rowSelectionConfig?: DataTableRowSelection<RecordType>;
11
+ rowKey?: RowKey | ((record: RecordType, index?: number) => RowKey);
12
+ }
13
+ export declare const TableBody: <RecordType extends Record<string, any> = Record<string, unknown>>({ table, dataSource, emptyDescription, hasRowSelection, onRowClick, rowSelectionConfig, rowKey }: TableBodyProps<RecordType>) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=TableBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../src/components/data-table/components/TableBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,KAAK,EAAE,KAAK,GAAG,EAA0B,MAAM,uBAAuB,CAAC;AAKjG,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAWnE,UAAU,cAAc,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvF,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACzB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC5C,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,SAAS,GAAI,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,kGAQzF,cAAc,CAAC,UAAU,CAAC,4CAkH5B,CAAC"}