@bioturing/components 0.32.2 → 0.33.1

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 (111) hide show
  1. package/dist/components/code-block/component.d.ts.map +1 -1
  2. package/dist/components/code-block/component.js +41 -42
  3. package/dist/components/code-block/component.js.map +1 -1
  4. package/dist/components/command-palette/component.d.ts.map +1 -1
  5. package/dist/components/command-palette/component.js +18 -18
  6. package/dist/components/command-palette/component.js.map +1 -1
  7. package/dist/components/data-table/component.d.ts +8 -0
  8. package/dist/components/data-table/component.d.ts.map +1 -0
  9. package/dist/components/data-table/component.js +112 -0
  10. package/dist/components/data-table/component.js.map +1 -0
  11. package/dist/components/data-table/components/TableBody.d.ts +15 -0
  12. package/dist/components/data-table/components/TableBody.d.ts.map +1 -0
  13. package/dist/components/data-table/components/TableBody.js +114 -0
  14. package/dist/components/data-table/components/TableBody.js.map +1 -0
  15. package/dist/components/data-table/components/TableHeader.d.ts +11 -0
  16. package/dist/components/data-table/components/TableHeader.d.ts.map +1 -0
  17. package/dist/components/data-table/components/TableHeader.js +103 -0
  18. package/dist/components/data-table/components/TableHeader.js.map +1 -0
  19. package/dist/components/data-table/components/TablePagination.d.ts +10 -0
  20. package/dist/components/data-table/components/TablePagination.d.ts.map +1 -0
  21. package/dist/components/data-table/components/TablePagination.js +38 -0
  22. package/dist/components/data-table/components/TablePagination.js.map +1 -0
  23. package/dist/components/data-table/components/index.d.ts +4 -0
  24. package/dist/components/data-table/components/index.d.ts.map +1 -0
  25. package/dist/components/data-table/hooks.d.ts +14 -0
  26. package/dist/components/data-table/hooks.d.ts.map +1 -0
  27. package/dist/components/data-table/hooks.js +120 -0
  28. package/dist/components/data-table/hooks.js.map +1 -0
  29. package/dist/components/data-table/index.d.ts +4 -0
  30. package/dist/components/data-table/index.d.ts.map +1 -0
  31. package/dist/components/data-table/style.css +1 -0
  32. package/dist/components/data-table/types.d.ts +108 -0
  33. package/dist/components/data-table/types.d.ts.map +1 -0
  34. package/dist/components/data-table/utils.d.ts +39 -0
  35. package/dist/components/data-table/utils.d.ts.map +1 -0
  36. package/dist/components/data-table/utils.js +71 -0
  37. package/dist/components/data-table/utils.js.map +1 -0
  38. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  39. package/dist/components/dropdown-menu/component.js +60 -56
  40. package/dist/components/dropdown-menu/component.js.map +1 -1
  41. package/dist/components/ds-root/component.d.ts.map +1 -1
  42. package/dist/components/ds-root/component.js +15 -16
  43. package/dist/components/ds-root/component.js.map +1 -1
  44. package/dist/components/ds-root/hook.d.ts +5 -0
  45. package/dist/components/ds-root/hook.d.ts.map +1 -0
  46. package/dist/components/ds-root/hook.js +7 -0
  47. package/dist/components/ds-root/hook.js.map +1 -0
  48. package/dist/components/ds-root/index.d.ts +1 -1
  49. package/dist/components/ds-root/index.d.ts.map +1 -1
  50. package/dist/components/field/component.d.ts.map +1 -1
  51. package/dist/components/field/component.js +22 -21
  52. package/dist/components/field/component.js.map +1 -1
  53. package/dist/components/hooks/useBreakpoint.d.ts.map +1 -1
  54. package/dist/components/hooks/useBreakpoint.js +30 -8
  55. package/dist/components/hooks/useBreakpoint.js.map +1 -1
  56. package/dist/components/hooks/useCharts.js +1 -1
  57. package/dist/components/hooks/useCharts.js.map +1 -1
  58. package/dist/components/index.d.ts +3 -1
  59. package/dist/components/index.d.ts.map +1 -1
  60. package/dist/components/modal/Modal.d.ts +1 -1
  61. package/dist/components/modal/Modal.d.ts.map +1 -1
  62. package/dist/components/modal/Modal.js +59 -55
  63. package/dist/components/modal/Modal.js.map +1 -1
  64. package/dist/components/modal/index.d.ts +1 -1
  65. package/dist/components/popover/component.d.ts.map +1 -1
  66. package/dist/components/popover/component.js +22 -9
  67. package/dist/components/popover/component.js.map +1 -1
  68. package/dist/components/popup-panel/component.d.ts.map +1 -1
  69. package/dist/components/popup-panel/component.js +61 -56
  70. package/dist/components/popup-panel/component.js.map +1 -1
  71. package/dist/components/scroll-area/component.d.ts.map +1 -1
  72. package/dist/components/scroll-area/component.js +28 -28
  73. package/dist/components/scroll-area/component.js.map +1 -1
  74. package/dist/components/table/component.d.ts.map +1 -1
  75. package/dist/components/table/component.js.map +1 -1
  76. package/dist/components/theme-provider/component.d.ts +6 -2
  77. package/dist/components/theme-provider/component.d.ts.map +1 -1
  78. package/dist/components/theme-provider/component.js +32 -28
  79. package/dist/components/theme-provider/component.js.map +1 -1
  80. package/dist/components/theme-provider/context/index.d.ts +3 -0
  81. package/dist/components/theme-provider/context/index.d.ts.map +1 -0
  82. package/dist/components/theme-provider/context/provider.d.ts +7 -0
  83. package/dist/components/theme-provider/context/provider.d.ts.map +1 -0
  84. package/dist/components/theme-provider/context/provider.js +11 -0
  85. package/dist/components/theme-provider/context/provider.js.map +1 -0
  86. package/dist/components/theme-provider/context/themeStore.d.ts +11 -0
  87. package/dist/components/theme-provider/context/themeStore.d.ts.map +1 -0
  88. package/dist/components/theme-provider/context/themeStore.js +15 -0
  89. package/dist/components/theme-provider/context/themeStore.js.map +1 -0
  90. package/dist/components/theme-provider/index.d.ts +1 -0
  91. package/dist/components/theme-provider/index.d.ts.map +1 -1
  92. package/dist/components/tree/useTreeCommon.d.ts +10 -10
  93. package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
  94. package/dist/components/utils/client.d.ts +0 -1
  95. package/dist/components/utils/client.d.ts.map +1 -1
  96. package/dist/index.js +223 -219
  97. package/dist/index.js.map +1 -1
  98. package/dist/metadata.d.ts +9 -0
  99. package/dist/metadata.d.ts.map +1 -1
  100. package/dist/metadata.js +18 -0
  101. package/dist/metadata.js.map +1 -1
  102. package/dist/stats.html +1 -1
  103. package/package.json +3 -2
  104. package/dist/components/ds-root/context.d.ts +0 -8
  105. package/dist/components/ds-root/context.d.ts.map +0 -1
  106. package/dist/components/ds-root/context.js +0 -10
  107. package/dist/components/ds-root/context.js.map +0 -1
  108. package/dist/components/utils/WithAntdTokens.d.ts +0 -8
  109. package/dist/components/utils/WithAntdTokens.d.ts.map +0 -1
  110. package/dist/components/utils/WithAntdTokens.js +0 -25
  111. package/dist/components/utils/WithAntdTokens.js.map +0 -1
@@ -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;AAGrB,eAAO,MAAM,SAAS,GAAI,+MAgBvB,cAAc,4CA4HhB,CAAC"}
@@ -1,20 +1,19 @@
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 { jsx as e, jsxs as q } from "react/jsx-runtime";
3
+ import { CheckIcon as z, CopyIcon as G } from "@bioturing/assets";
4
+ import { Highlight as J, themes as K } from "prism-react-renderer";
5
+ import { useState as a, useEffect as Q, useCallback as S } from "react";
6
+ import { ThemeProvider as R } 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";
8
+ import { Segmented as U } from "../segmented/component.js";
9
+ import { useControlledState as V } from "../hooks/useControlledState.js";
10
+ import { reactNodeToString as W } from "../utils/reactToString.js";
11
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,
12
+ import { clsx as Y } from "../utils/cn.js";
13
+ import { IconButton as Z } from "../icon-button/component.js";
14
+ import { ScrollArea as H } from "../scroll-area/component.js";
15
+ const he = ({
16
+ code: f,
18
17
  children: i,
19
18
  // initial,
20
19
  lang: m = "tsx",
@@ -24,54 +23,54 @@ const fe = ({
24
23
  defaultActiveOption: v = 0,
25
24
  onActiveOptionChange: I,
26
25
  copyText: d = "Copy",
27
- copySuccessText: k = "Copied",
26
+ copySuccessText: b = "Copied",
28
27
  classNames: p,
29
28
  maxHeight: c,
30
29
  onCopy: h,
31
30
  ...O
32
31
  }) => {
33
- const [l, b] = U(
32
+ const [l, g] = V(
34
33
  w,
35
34
  I,
36
35
  v
37
- ), [n, j] = a(u || ""), [x, A] = a(m), C = t && t.length > 0;
38
- K(() => {
36
+ ), [n, j] = a(f || ""), [x, B] = a(m), C = t && t.length > 0;
37
+ Q(() => {
39
38
  if (C) {
40
39
  const o = t[l]?.code || "", r = t[l]?.lang || m;
41
- j(o), A(r);
40
+ j(o), B(r);
42
41
  }
43
42
  }, [
44
- u,
43
+ f,
45
44
  l,
46
45
  v,
47
46
  t,
48
47
  m,
49
48
  C,
50
- b
49
+ g
51
50
  ]);
52
- const [B, f] = a(d), [L, g] = a(!1), M = S(() => {
53
- const o = n || V(i);
51
+ const [L, u] = a(d), [M, k] = a(!1), T = S(() => {
52
+ const o = n || W(i);
54
53
  try {
55
54
  navigator.clipboard.writeText(o).then(() => {
56
- f(k), g(!0), h && h(o);
55
+ u(b), k(!0), h && h(o);
57
56
  });
58
57
  } catch {
59
- f("Failed to copy");
58
+ u("Failed to copy");
60
59
  }
61
- }, [n, i, k, h]), T = S(() => {
62
- f(d), g(!1);
60
+ }, [n, i, b, h]), A = S(() => {
61
+ u(d), k(!1);
63
62
  }, [d]), s = X();
64
- return /* @__PURE__ */ e(Q, { theme: "dark", children: /* @__PURE__ */ $(
65
- Y,
63
+ return /* @__PURE__ */ e(R, { theme: "dark", appendClassesToChildren: !0, children: /* @__PURE__ */ q(
64
+ "div",
66
65
  {
67
- className: Z(s("code-block"), N, p?.root),
66
+ className: Y(s("code-block"), N, p?.root),
68
67
  ...O,
69
68
  children: [
70
69
  C && /* @__PURE__ */ e("div", { className: s("code-block-header", p?.header), children: /* @__PURE__ */ e(
71
- R,
70
+ U,
72
71
  {
73
72
  value: l,
74
- onChange: b,
73
+ onChange: g,
75
74
  options: t.map((o, r) => ({
76
75
  label: o.label,
77
76
  value: r
@@ -79,12 +78,12 @@ const fe = ({
79
78
  }
80
79
  ) }),
81
80
  /* @__PURE__ */ e("div", { className: s("code-block-copy"), children: /* @__PURE__ */ e(
82
- H,
81
+ Z,
83
82
  {
84
- onClick: M,
85
- label: B,
86
- onMouseLeave: T,
87
- children: L ? /* @__PURE__ */ e(q, {}) : /* @__PURE__ */ e(z, {})
83
+ onClick: T,
84
+ label: L,
85
+ onMouseLeave: A,
86
+ children: M ? /* @__PURE__ */ e(z, {}) : /* @__PURE__ */ e(G, {})
88
87
  }
89
88
  ) }),
90
89
  /* @__PURE__ */ e(
@@ -94,12 +93,12 @@ const fe = ({
94
93
  style: {
95
94
  maxHeight: c && (typeof c == "number" ? `${c}px` : c)
96
95
  },
97
- children: /* @__PURE__ */ e(ee, { children: n ? /* @__PURE__ */ e(
98
- G,
96
+ children: /* @__PURE__ */ e(H, { children: n ? /* @__PURE__ */ e(
97
+ J,
99
98
  {
100
99
  language: x,
101
100
  code: n,
102
- theme: J.vsDark,
101
+ theme: K.vsDark,
103
102
  children: ({
104
103
  className: o,
105
104
  style: r,
@@ -111,7 +110,7 @@ const fe = ({
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: D.map((y, P) => /* @__PURE__ */ e("div", { ...E({ line: y }), children: y.map((_, $) => /* @__PURE__ */ e("span", { ...F({ token: _ }) }, $)) }, P))
115
114
  }
116
115
  )
117
116
  }
@@ -123,6 +122,6 @@ const fe = ({
123
122
  ) });
124
123
  };
125
124
  export {
126
- fe as CodeBlock
125
+ he as CodeBlock
127
126
  };
128
127
  //# 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\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\"} appendClassesToChildren>\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>\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 </div>\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","clsx","Segmented","opt","index","IconButton","CheckIcon","CopyIcon","ScrollArea","Highlight","themes","style","tokens","getLineProps","getTokenProps","line","i","token","key"],"mappings":"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"}
@@ -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"}
@@ -0,0 +1,114 @@
1
+ import { jsxs as x, jsx as t } from "react/jsx-runtime";
2
+ import { flexRender as f } from "@tanstack/react-table";
3
+ import { Checkbox as k } from "antd";
4
+ import { convertSelectionToAntFormat as h, getAlignmentClass as w } from "../utils.js";
5
+ import { Empty as S } from "../../empty/component.js";
6
+ import { useCls as y } from "../../utils/antdUtils.js";
7
+ import { clsx as g } from "../../utils/cn.js";
8
+ const j = ({
9
+ table: c,
10
+ dataSource: a,
11
+ emptyDescription: p,
12
+ hasRowSelection: b,
13
+ onRowClick: u,
14
+ rowSelectionConfig: s,
15
+ rowKey: m
16
+ }) => {
17
+ const d = y();
18
+ return /* @__PURE__ */ x("tbody", { className: d("table-tbody"), children: [
19
+ /* @__PURE__ */ t(
20
+ "tr",
21
+ {
22
+ "aria-hidden": "true",
23
+ className: d("table-measure-row"),
24
+ style: { height: "0px", fontSize: "0px" },
25
+ children: c.getHeaderGroups()[0]?.headers.map((o) => /* @__PURE__ */ t(
26
+ "td",
27
+ {
28
+ style: {
29
+ padding: "0px",
30
+ border: "0px",
31
+ height: "0px",
32
+ width: o.id === "select" ? 32 : o.column.columnDef.meta?.width
33
+ },
34
+ children: /* @__PURE__ */ t("div", { style: { height: "0px", overflow: "hidden" }, children: " " })
35
+ },
36
+ o.id
37
+ ))
38
+ }
39
+ ),
40
+ a.length === 0 ? /* @__PURE__ */ t("tr", { children: /* @__PURE__ */ t("td", { colSpan: c.getHeaderGroups()[0]?.headers.length || 1, children: /* @__PURE__ */ t(S, { description: p }) }) }) : c.getRowModel().rows.map((o) => /* @__PURE__ */ t(
41
+ "tr",
42
+ {
43
+ className: g(
44
+ d("table-row"),
45
+ d("table-row-level-0"),
46
+ o.getIsSelected() ? d("table-row-selected") : ""
47
+ ),
48
+ "data-row-key": o.id,
49
+ "data-selectable": b ? "true" : "false",
50
+ onClick: () => u?.(o),
51
+ children: o.getVisibleCells().map((e) => /* @__PURE__ */ t(
52
+ "td",
53
+ {
54
+ className: g(
55
+ d("table-cell"),
56
+ e.column.id === "select" ? d("table-selection-column") : "",
57
+ w(e.column.columnDef.meta?.align)
58
+ ),
59
+ children: e.column.id === "select" ? (
60
+ // Handle selection column cells
61
+ (() => {
62
+ const l = e.row.original, n = s?.getCheckboxProps?.(l) || {};
63
+ return s?.type === "radio" ? /* @__PURE__ */ t(
64
+ "input",
65
+ {
66
+ type: "radio",
67
+ name: "table-radio",
68
+ checked: e.row.getIsSelected(),
69
+ disabled: !e.row.getCanSelect(),
70
+ onChange: (r) => {
71
+ if (e.row.toggleSelected(r.target.checked), s.onSelect) {
72
+ const { selectedRows: i } = h(
73
+ c.getState().rowSelection,
74
+ a,
75
+ m
76
+ );
77
+ s.onSelect(l, r.target.checked, i, r.nativeEvent);
78
+ }
79
+ },
80
+ disabled: n.disabled,
81
+ className: n.className
82
+ }
83
+ ) : /* @__PURE__ */ t(
84
+ k,
85
+ {
86
+ checked: e.row.getIsSelected(),
87
+ disabled: !e.row.getCanSelect(),
88
+ onChange: (r) => {
89
+ if (e.row.toggleSelected(r.target.checked), s?.onSelect) {
90
+ const { selectedRows: i } = h(
91
+ c.getState().rowSelection,
92
+ a,
93
+ m
94
+ );
95
+ s.onSelect(l, r.target.checked, i, r.nativeEvent);
96
+ }
97
+ },
98
+ ...n
99
+ }
100
+ );
101
+ })()
102
+ ) : f(e.column.columnDef.cell, e.getContext())
103
+ },
104
+ e.id
105
+ ))
106
+ },
107
+ o.id
108
+ ))
109
+ ] });
110
+ };
111
+ export {
112
+ j as TableBody
113
+ };
114
+ //# sourceMappingURL=TableBody.js.map