@bioturing/components 0.46.4 → 0.48.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 (139) hide show
  1. package/dist/components/base-menu/component.js +19 -21
  2. package/dist/components/base-menu/component.js.map +1 -1
  3. package/dist/components/base-menu/index.d.ts +1 -1
  4. package/dist/components/base-menu/index.d.ts.map +1 -1
  5. package/dist/components/base-menu/index.js +12 -7
  6. package/dist/components/base-menu/index.js.map +1 -1
  7. package/dist/components/base-menu/item.css +1 -1
  8. package/dist/components/base-menu/item.d.ts +13 -2
  9. package/dist/components/base-menu/item.d.ts.map +1 -1
  10. package/dist/components/base-menu/item.js +62 -47
  11. package/dist/components/base-menu/item.js.map +1 -1
  12. package/dist/components/base-menu/style.css +1 -1
  13. package/dist/components/checkbox/component.d.ts +2 -2
  14. package/dist/components/checkbox/component.d.ts.map +1 -1
  15. package/dist/components/checkbox/component.js.map +1 -1
  16. package/dist/components/choice-list/component.js +12 -12
  17. package/dist/components/combobox/component.d.ts.map +1 -1
  18. package/dist/components/combobox/component.js +121 -121
  19. package/dist/components/combobox/component.js.map +1 -1
  20. package/dist/components/combobox/style.css +1 -1
  21. package/dist/components/data-table/component.d.ts.map +1 -1
  22. package/dist/components/data-table/component.js +99 -79
  23. package/dist/components/data-table/component.js.map +1 -1
  24. package/dist/components/data-table/components/TableBody.d.ts +3 -2
  25. package/dist/components/data-table/components/TableBody.d.ts.map +1 -1
  26. package/dist/components/data-table/components/TableBody.js +106 -89
  27. package/dist/components/data-table/components/TableBody.js.map +1 -1
  28. package/dist/components/data-table/components/TableHeader.d.ts +3 -1
  29. package/dist/components/data-table/components/TableHeader.d.ts.map +1 -1
  30. package/dist/components/data-table/components/TableHeader.js +121 -93
  31. package/dist/components/data-table/components/TableHeader.js.map +1 -1
  32. package/dist/components/data-table/components/TablePagination.d.ts.map +1 -1
  33. package/dist/components/data-table/components/TablePagination.js +36 -31
  34. package/dist/components/data-table/components/TablePagination.js.map +1 -1
  35. package/dist/components/data-table/hooks.d.ts.map +1 -1
  36. package/dist/components/data-table/hooks.js +98 -83
  37. package/dist/components/data-table/hooks.js.map +1 -1
  38. package/dist/components/data-table/style.css +1 -1
  39. package/dist/components/data-table/types.d.ts +1 -1
  40. package/dist/components/data-table/types.d.ts.map +1 -1
  41. package/dist/components/data-table/utils.js +37 -30
  42. package/dist/components/data-table/utils.js.map +1 -1
  43. package/dist/components/data-table/variant-minimal.css +1 -0
  44. package/dist/components/data-table/variant-zebra.css +1 -0
  45. package/dist/components/dialog/Dialog.js +46 -46
  46. package/dist/components/dialog/Dialog.js.map +1 -1
  47. package/dist/components/dialog/dialog.css +1 -1
  48. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  49. package/dist/components/dropdown-menu/component.js +121 -144
  50. package/dist/components/dropdown-menu/component.js.map +1 -1
  51. package/dist/components/dropdown-menu/index.d.ts +2 -0
  52. package/dist/components/dropdown-menu/index.d.ts.map +1 -1
  53. package/dist/components/dropdown-menu/item.d.ts +7 -15
  54. package/dist/components/dropdown-menu/item.d.ts.map +1 -1
  55. package/dist/components/dropdown-menu/item.js +132 -81
  56. package/dist/components/dropdown-menu/item.js.map +1 -1
  57. package/dist/components/dropdown-menu/radio-group.d.ts +14 -0
  58. package/dist/components/dropdown-menu/radio-group.d.ts.map +1 -0
  59. package/dist/components/dropdown-menu/radio-group.js +45 -0
  60. package/dist/components/dropdown-menu/radio-group.js.map +1 -0
  61. package/dist/components/dropdown-menu/search-mode.d.ts +4 -0
  62. package/dist/components/dropdown-menu/search-mode.d.ts.map +1 -0
  63. package/dist/components/dropdown-menu/search-mode.js +6 -0
  64. package/dist/components/dropdown-menu/search-mode.js.map +1 -0
  65. package/dist/components/dropdown-menu/style.css +1 -1
  66. package/dist/components/dropdown-menu/submenu.d.ts +25 -0
  67. package/dist/components/dropdown-menu/submenu.d.ts.map +1 -0
  68. package/dist/components/dropdown-menu/submenu.js +96 -0
  69. package/dist/components/dropdown-menu/submenu.js.map +1 -0
  70. package/dist/components/dropdown-menu/types.d.ts +85 -12
  71. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  72. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +4 -8
  73. package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -1
  74. package/dist/components/dropdown-menu/useDropdownMenu.js +108 -81
  75. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  76. package/dist/components/form/FormItem/ItemHolder.d.ts +6 -5
  77. package/dist/components/form/FormItem/ItemHolder.d.ts.map +1 -1
  78. package/dist/components/form/FormItem/ItemHolder.js +32 -29
  79. package/dist/components/form/FormItem/ItemHolder.js.map +1 -1
  80. package/dist/components/form/FormItem/index.d.ts +6 -0
  81. package/dist/components/form/FormItem/index.d.ts.map +1 -1
  82. package/dist/components/form/FormItem/index.js +138 -127
  83. package/dist/components/form/FormItem/index.js.map +1 -1
  84. package/dist/components/form/FormValidationContext.d.ts +5 -0
  85. package/dist/components/form/FormValidationContext.d.ts.map +1 -0
  86. package/dist/components/form/FormValidationContext.js +7 -0
  87. package/dist/components/form/FormValidationContext.js.map +1 -0
  88. package/dist/components/form/component.d.ts +6 -1
  89. package/dist/components/form/component.d.ts.map +1 -1
  90. package/dist/components/form/component.js +30 -20
  91. package/dist/components/form/component.js.map +1 -1
  92. package/dist/components/form/formValidationRule.d.ts +19 -0
  93. package/dist/components/form/formValidationRule.d.ts.map +1 -0
  94. package/dist/components/form/formValidationRule.js +22 -0
  95. package/dist/components/form/formValidationRule.js.map +1 -0
  96. package/dist/components/form/index.d.ts +2 -0
  97. package/dist/components/form/index.d.ts.map +1 -1
  98. package/dist/components/form/useFormValidation.d.ts +3 -0
  99. package/dist/components/form/useFormValidation.d.ts.map +1 -0
  100. package/dist/components/form/useFormValidation.js +18 -0
  101. package/dist/components/form/useFormValidation.js.map +1 -0
  102. package/dist/components/index.d.ts +2 -0
  103. package/dist/components/index.d.ts.map +1 -1
  104. package/dist/components/keyboard-shortcut/component.d.ts +2 -0
  105. package/dist/components/keyboard-shortcut/component.d.ts.map +1 -1
  106. package/dist/components/keyboard-shortcut/component.js +69 -49
  107. package/dist/components/keyboard-shortcut/component.js.map +1 -1
  108. package/dist/components/modal/Modal.d.ts +1 -1
  109. package/dist/components/modal/Modal.js +9 -9
  110. package/dist/components/modal/Modal.js.map +1 -1
  111. package/dist/components/modal/style.css +1 -1
  112. package/dist/components/select/component.js +29 -29
  113. package/dist/components/select/component.js.map +1 -1
  114. package/dist/components/theme-provider/component.d.ts +3 -1
  115. package/dist/components/theme-provider/component.d.ts.map +1 -1
  116. package/dist/components/theme-provider/component.js +32 -31
  117. package/dist/components/theme-provider/component.js.map +1 -1
  118. package/dist/components/theme-provider/context/index.d.ts +2 -1
  119. package/dist/components/theme-provider/context/index.d.ts.map +1 -1
  120. package/dist/components/theme-provider/context/provider.d.ts +2 -3
  121. package/dist/components/theme-provider/context/provider.d.ts.map +1 -1
  122. package/dist/components/theme-provider/context/provider.js +13 -6
  123. package/dist/components/theme-provider/context/provider.js.map +1 -1
  124. package/dist/components/theme-provider/context/themeStore.d.ts +15 -0
  125. package/dist/components/theme-provider/context/themeStore.d.ts.map +1 -1
  126. package/dist/components/theme-provider/context/themeStore.js +10 -9
  127. package/dist/components/theme-provider/context/themeStore.js.map +1 -1
  128. package/dist/components/theme-provider/style.css +1 -1
  129. package/dist/components/tooltip/component.d.ts.map +1 -1
  130. package/dist/components/tooltip/component.js +23 -12
  131. package/dist/components/tooltip/component.js.map +1 -1
  132. package/dist/index.js +273 -258
  133. package/dist/index.js.map +1 -1
  134. package/dist/metadata.d.ts +9 -0
  135. package/dist/metadata.d.ts.map +1 -1
  136. package/dist/metadata.js +14 -0
  137. package/dist/metadata.js.map +1 -1
  138. package/dist/stats.html +1 -1
  139. package/package.json +6 -6
@@ -1 +1 @@
1
- @layer components{.ds-modal-wrap{max-height:100vh}.ds-modal-wrap .ds-modal-close-x{width:100%;display:flex}.ds-modal-wrap .ds-modal{padding-bottom:0;margin-top:0;margin-bottom:0;max-height:100vh;top:0}.ds-modal-wrap .ds-modal .ds-modal-content{display:flex;flex-direction:column;padding:0;box-shadow:var(--ds-box-shadow-secondary);background:var(--ds-modal-bg, var(--ds-modal-content-bg));position:relative}.ds-modal-wrap .ds-modal .ds-modal-body{padding:var(--ds-modal-content-padding);flex-grow:1;flex-shrink:1;min-height:0;overflow:auto}.ds-modal-wrap .ds-modal .ds-modal-header{padding:calc(var(--ds-modal-padding) * 2 / 3) var(--ds-modal-padding) 0 var(--ds-modal-padding);margin-bottom:0;background:transparent}.ds-modal-wrap .ds-modal .ds-modal-footer{padding:0 var(--ds-modal-padding) var(--ds-modal-padding) var(--ds-modal-padding);margin-top:0;background:transparent}.ds-modal-wrap .ds-modal .ds-modal-close{top:calc(var(--ds-modal-padding) * 2 / 3 - 4px)}.ds-modal-wrap:not(.ds-modal-centered) .ds-modal-inner{margin-top:4rem}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal-content{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2);margin:var(--ds-modal-edge-padding)}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal>div[tabindex="0"]{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2)}.ds-modal-no-body-scroll .ds-modal{max-height:100%}.ds-modal-no-body-scroll .ds-modal .ds-modal-body{overflow:hidden;display:grid}.ds-modal-no-body-scroll .ds-modal .ds-modal-body>*{min-height:0}.ds-modal-fullscreen .ds-modal>div[tabindex="0"]{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-inner{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-content{border-radius:0;height:100%;width:100%}.ds-modal-fixed .ds-modal .ds-modal-footer{border-top:1px solid var(--ds-color-split);margin-top:0;padding:calc(var(--ds-modal-padding) / 2) var(--ds-modal-padding)}.ds-modal-fixed .ds-modal .ds-modal-header{border-bottom:1px solid var(--ds-color-split);margin-bottom:0;padding:calc(var(--ds-modal-padding) / 2) var(--ds-modal-padding)}.ds-modal-fixed .ds-modal .ds-modal-close{top:8px}.ds-modal-content-overflow .ds-modal .ds-modal-inner{margin-top:0}.ds-modal-loading-overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:color-mix(in oklab,var(--ds-modal-bg) 60%,transparent);margin-top:calc(var(--ds-modal-header-height, 0));margin-bottom:calc(var(--ds-modal-footer-height, 0))}}
1
+ @layer components{.ds-modal-wrap{max-height:100vh}.ds-modal-wrap .ds-modal-close-x{width:100%;display:flex}.ds-modal-wrap .ds-modal{padding-bottom:0;margin-top:0;margin-bottom:0;max-height:100vh;top:0}.ds-modal-wrap .ds-modal .ds-modal-content{display:flex;flex-direction:column;padding:0;box-shadow:var(--ds-box-shadow-secondary);background:var(--ds-modal-bg, var(--ds-modal-content-bg));position:relative}.ds-modal-wrap .ds-modal .ds-modal-body{padding:var(--ds-modal-body-content-padding);flex-grow:1;flex-shrink:1;min-height:0;overflow:auto}.ds-modal-wrap .ds-modal .ds-modal-header{padding-block:var(--ds-modal-header-padding-block);padding-inline:var(--ds-modal-padding);margin-bottom:0;background:transparent}.ds-modal-wrap .ds-modal .ds-modal-footer{padding-block:var(--ds-modal-footer-padding-block);padding-inline:var(--ds-modal-padding);margin-top:0;background:transparent}.ds-modal-wrap .ds-modal .ds-modal-close{top:calc(var(--ds-modal-padding) * 2 / 3 - 4px)}.ds-modal-wrap:not(.ds-modal-centered) .ds-modal-inner{margin-top:4rem}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal-content{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2);margin:var(--ds-modal-edge-padding)}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal>div[tabindex="0"]{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2)}.ds-modal-no-body-scroll .ds-modal{max-height:100%}.ds-modal-no-body-scroll .ds-modal .ds-modal-body{overflow:hidden;display:grid}.ds-modal-no-body-scroll .ds-modal .ds-modal-body>*{min-height:0}.ds-modal-fullscreen .ds-modal>div[tabindex="0"]{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-inner{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-content{border-radius:0;height:100%;width:100%}.ds-modal-fixed .ds-modal .ds-modal-footer{border-top:1px solid var(--ds-color-split);margin-top:0;padding-block:var(--ds-modal-fixed-footer-padding-block);padding-inline:var(--ds-modal-padding)}.ds-modal-fixed .ds-modal .ds-modal-header{border-bottom:1px solid var(--ds-color-split);margin-bottom:0;padding-block:var(--ds-modal-fixed-header-padding-block);padding-inline:var(--ds-modal-padding)}.ds-modal-content-overflow .ds-modal .ds-modal-inner{margin-top:0}.ds-modal-loading-overlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:color-mix(in oklab,var(--ds-modal-bg) 60%,transparent);margin-top:calc(var(--ds-modal-header-height, 0));margin-bottom:calc(var(--ds-modal-footer-height, 0))}}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { jsx as t, Fragment as y, jsxs as G } from "react/jsx-runtime";
2
+ import { jsx as o, Fragment as b, jsxs as G } from "react/jsx-runtime";
3
3
  import { CaretDown as de } from "@bioturing/assets";
4
- import { useFloatingPortalNode as fe, offset as ge, autoPlacement as he, shift as be, size as ye, useFloating as Ae, autoUpdate as Ce, FloatingOverlay as Re } from "@floating-ui/react";
4
+ import { useFloatingPortalNode as fe, offset as ge, autoPlacement as he, shift as ye, size as be, useFloating as Ae, autoUpdate as Ce, FloatingOverlay as Re } from "@floating-ui/react";
5
5
  import V from "antd/es/checkbox";
6
6
  import R from "antd/es/select";
7
7
  import { toMerged as ke } from "es-toolkit";
@@ -44,19 +44,19 @@ const Oe = ({
44
44
  B,
45
45
  J || L,
46
46
  H
47
- ), m = Me(), [o, g] = W(
47
+ ), m = Me(), [r, g] = W(
48
48
  Z,
49
49
  _,
50
50
  z
51
- ), h = C(X), b = C(Y), P = C(ee), N = n(
51
+ ), h = C(X), y = C(Y), P = C(ee), N = n(
52
52
  ({
53
53
  availableHeight: e,
54
- availableWidth: r,
54
+ availableWidth: t,
55
55
  elements: i
56
56
  }) => {
57
57
  i.floating.style.setProperty(
58
58
  "--available-width",
59
- r + "px"
59
+ t + "px"
60
60
  ), i.floating.style.setProperty(
61
61
  "--available-height",
62
62
  e + "px"
@@ -78,10 +78,10 @@ const Oe = ({
78
78
  "top"
79
79
  ]
80
80
  }),
81
- be({
81
+ ye({
82
82
  padding: 8
83
83
  }),
84
- ye({
84
+ be({
85
85
  padding: 8,
86
86
  apply: N
87
87
  })
@@ -95,8 +95,8 @@ const Oe = ({
95
95
  whileElementsMounted: Ce
96
96
  }), ne = n(
97
97
  (e) => {
98
- const r = Array.isArray(e) ? e.length : 1;
99
- return p ? r + ` ${r == 1 ? "item" : "items"} selected` : /* @__PURE__ */ t(y, { children: e });
98
+ const t = Array.isArray(e) ? e.length : 1;
99
+ return p ? t + ` ${t == 1 ? "item" : "items"} selected` : /* @__PURE__ */ o(b, { children: e });
100
100
  },
101
101
  [p]
102
102
  ), se = T(
@@ -111,8 +111,8 @@ const Oe = ({
111
111
  }), j = n(
112
112
  (e) => {
113
113
  if (!e) return;
114
- const r = e.closest(".ds-select-dropdown");
115
- u.setFloating(r);
114
+ const t = e.closest(".ds-select-dropdown");
115
+ u.setFloating(t);
116
116
  },
117
117
  [u]
118
118
  ), ce = $(
@@ -127,11 +127,11 @@ const Oe = ({
127
127
  k?.popup?.root || K
128
128
  ), ie = l && typeof l == "string" && l in U ? U[l] : typeof l == "number" ? l + "px" : l || "fit-content", d = n(
129
129
  (e) => {
130
- const r = h.current ? h.current(e) : b.current ? b.current(e) : e;
131
- if (!M) return r;
132
- const i = Array.isArray(o) && o.length > 0, ue = Array.isArray(o) && o.length && o.length < c.length;
133
- return /* @__PURE__ */ G(y, { children: [
134
- /* @__PURE__ */ t(
130
+ const t = h.current ? h.current(e) : y.current ? y.current(e) : e;
131
+ if (!M) return t;
132
+ const i = Array.isArray(r) && r.length > 0, ue = Array.isArray(r) && r.length && r.length < c.length;
133
+ return /* @__PURE__ */ G(b, { children: [
134
+ /* @__PURE__ */ o(
135
135
  we,
136
136
  {
137
137
  className: m(
@@ -149,15 +149,15 @@ const Oe = ({
149
149
  onDeselectAll: F
150
150
  }
151
151
  ),
152
- /* @__PURE__ */ t(ve, {}),
153
- r
152
+ /* @__PURE__ */ o(ve, {}),
153
+ t
154
154
  ] });
155
155
  },
156
156
  [
157
157
  h,
158
- b,
158
+ y,
159
159
  M,
160
- o,
160
+ r,
161
161
  c,
162
162
  m,
163
163
  P,
@@ -170,23 +170,23 @@ const Oe = ({
170
170
  },
171
171
  [a, u]
172
172
  ), E = n(
173
- (e) => /* @__PURE__ */ G(y, { children: [
174
- /* @__PURE__ */ t(Re, { lockScroll: !0, onClick: I }),
175
- /* @__PURE__ */ t("div", { ref: j, children: d(e) })
173
+ (e) => /* @__PURE__ */ G(b, { children: [
174
+ /* @__PURE__ */ o(Re, { lockScroll: !0, onClick: I }),
175
+ /* @__PURE__ */ o("div", { ref: j, children: d(e) })
176
176
  ] }),
177
177
  [I, j, d]
178
178
  ), me = n(
179
179
  (e) => s ? E(e) : d(e),
180
180
  [s, d, E]
181
181
  );
182
- return /* @__PURE__ */ t(
182
+ return /* @__PURE__ */ o(
183
183
  R,
184
184
  {
185
185
  ref: pe,
186
- suffixIcon: /* @__PURE__ */ t(de, { weight: "bold" }),
186
+ suffixIcon: /* @__PURE__ */ o(de, { weight: "bold" }),
187
187
  open: O,
188
188
  onOpenChange: S,
189
- value: o,
189
+ value: r,
190
190
  onChange: g,
191
191
  classNames: {
192
192
  popup: {
@@ -195,7 +195,7 @@ const Oe = ({
195
195
  ...k
196
196
  },
197
197
  ...p ? {
198
- menuItemSelectedIcon: ({ isSelected: e }) => /* @__PURE__ */ t("span", { className: "ant-select-checkbox-indicator", children: e ? /* @__PURE__ */ t(V, { checked: !0 }) : /* @__PURE__ */ t(V, { checked: !1 }) })
198
+ menuItemSelectedIcon: ({ isSelected: e, disabled: t }) => /* @__PURE__ */ o("span", { className: "ant-select-checkbox-indicator", children: e ? /* @__PURE__ */ o(V, { checked: !0, disabled: t }) : /* @__PURE__ */ o(V, { checked: !1, disabled: t }) })
199
199
  } : {},
200
200
  mode: f,
201
201
  className: ce,
@@ -214,7 +214,7 @@ const Oe = ({
214
214
  ...v ? {
215
215
  maxTagCount: 1,
216
216
  showSearch: !1,
217
- labelRender: () => w ? w(o) : ne(o)
217
+ labelRender: () => w ? w(r) : ne(r)
218
218
  } : {},
219
219
  ...te
220
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingOverlay,\n offset,\n shift,\n size,\n useFloating,\n useFloatingPortalNode,\n type MiddlewareState,\n} from \"@floating-ui/react\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport {\n default as AntSelect,\n type SelectProps as AntSelectProps,\n type BaseOptionType,\n type DefaultOptionType,\n} from \"antd/es/select\";\nimport { toMerged } from \"es-toolkit\";\nimport React, { CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { useStableCallback } from \"@base-ui/utils/useStableCallback\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport { Divider } from \"antd\";\nimport { CheckboxProps } from \"../checkbox\";\nimport { SelectItem } from \"./item\";\nimport \"./style.css\";\nimport { BaseSelectRef } from \"rc-select\";\nimport { useValueAsRef } from \"@base-ui/utils/useValueAsRef\";\n// SelectItem component props\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n /**\n * Show selection summary instead of tags in multiple case\n * @default false\n */\n showSelectionSummary?: boolean;\n /**\n * Render function for the selection summary in multiple case\n * @default (value) => `${value.length} items selected`\n */\n selectionSummaryRender?: (value: ValueType) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n showSelectionSummary,\n selectionSummaryRender,\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n showSelectAll,\n selectAllRender,\n options,\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n const cls = useCls();\n const [value, onChange] = useControlledState(\n valueProp,\n onChangeProp,\n defaultValue\n );\n\n // Stabilize render callback props used in useCallback dependencies\n const stablePopupRender = useValueAsRef(popupRender);\n const stableDropdownRender = useValueAsRef(dropdownRender);\n const stableSelectAllRender = useValueAsRef(selectAllRender);\n\n // Memoize size middleware apply function to prevent recreating on every render\n const sizeApply = useCallback(\n ({\n availableHeight,\n availableWidth,\n elements,\n }: MiddlewareState & {\n availableWidth: number;\n availableHeight: number;\n }) => {\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n []\n );\n\n // Memoize floating UI middleware array to prevent recalculating position unnecessarily\n const floatingMiddleware = useMemo(\n () => [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply: sizeApply,\n }),\n ],\n [sizeApply]\n );\n\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: floatingMiddleware,\n whileElementsMounted: autoUpdate,\n });\n\n const defaultSelectionSummaryRender = useCallback(\n (v: ValueType) => {\n const count = Array.isArray(v) ? v.length : 1;\n if (isMultiple) {\n return count + ` ${count == 1 ? \"item\" : \"items\"} selected`;\n }\n return <>{v}</>;\n },\n [isMultiple]\n );\n\n // Memoize allValues calculation\n const allValues = useMemo(\n () => (Array.isArray(options) ? options.map((option) => option.value) : []),\n [options]\n );\n\n // Create stable callbacks for select all/deselect all\n const handleSelectAll = useStableCallback(() => {\n onChange(allValues as ValueType);\n });\n\n const handleDeselectAll = useStableCallback(() => {\n onChange([] as ValueType);\n });\n\n // Create stable callback for overlay click\n const handleOverlayClick = useStableCallback(() => {\n setOpen(false);\n });\n\n // Memoize floating ref callback\n const floatingRefCallback = useCallback(\n (node: HTMLElement | null) => {\n if (!node) return;\n const popupEl = node.closest(\".ds-select-dropdown\") as HTMLDivElement;\n refs.setFloating(popupEl);\n },\n [refs]\n );\n\n const dsSelectClassname = clsx(\n cls(\"select\", showSelectionSummary && \"select-selection-summary\"),\n className\n );\n\n const dsPopupClassName = clsx(\n cls(\n \"select-popup\",\n isMultiple && \"select-multiple\",\n enhancePositioner && \"select-popup-enhanced\"\n ),\n classNames?.popup?.root || popupClassName\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n const customRenderMenu = useCallback(\n (menu: React.ReactElement) => {\n const renderedMenu = stablePopupRender.current\n ? stablePopupRender.current(menu)\n : stableDropdownRender.current\n ? stableDropdownRender.current(menu)\n : menu;\n if (!showSelectAll) return renderedMenu;\n const checked = Array.isArray(value) && value.length > 0;\n const indeterminate =\n Array.isArray(value) && value.length && value.length < options.length;\n return (\n <>\n <SelectItem\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-option-active\"\n )}\n onMouseOver={(e) => {}}\n selectAllRender={stableSelectAllRender.current}\n checked={checked}\n indeterminate={indeterminate}\n onSelectAll={handleSelectAll}\n onDeselectAll={handleDeselectAll}\n />\n <Divider />\n {renderedMenu}\n </>\n );\n },\n [\n stablePopupRender,\n stableDropdownRender,\n showSelectAll,\n value,\n options,\n cls,\n stableSelectAllRender,\n handleSelectAll,\n handleDeselectAll,\n ]\n );\n\n const refCallback = useCallback(\n (node: BaseSelectRef) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n },\n [ref, refs]\n );\n\n // Memoize enhanced popup render for enhancePositioner mode\n const enhancedPopupRender = useCallback(\n (menu: React.ReactElement) => {\n return (\n <>\n <FloatingOverlay lockScroll onClick={handleOverlayClick} />\n <div ref={floatingRefCallback}>{customRenderMenu(menu)}</div>\n </>\n );\n },\n [handleOverlayClick, floatingRefCallback, customRenderMenu]\n );\n\n // Memoize final popup render\n const finalPopupRender = useCallback(\n (menu: React.ReactElement) => {\n if (!enhancePositioner) {\n return customRenderMenu(menu);\n }\n return enhancedPopupRender(menu);\n },\n [enhancePositioner, customRenderMenu, enhancedPopupRender]\n );\n\n return (\n <AntSelect\n // ref={ref}\n ref={refCallback}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n value={value}\n onChange={onChange}\n // for old version\n // popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked />\n ) : (\n <Checkbox checked={false} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={dsSelectClassname}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={finalPopupRender}\n options={options}\n {...(showSelectionSummary\n ? {\n maxTagCount: 1,\n showSearch: false,\n labelRender: () => {\n if (selectionSummaryRender) {\n return selectionSummaryRender(value);\n }\n return defaultSelectionSummaryRender(value);\n },\n }\n : {})}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","showSelectionSummary","selectionSummaryRender","valueProp","onChangeProp","defaultValue","showSelectAll","selectAllRender","options","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","cls","useCls","value","onChange","stablePopupRender","useValueAsRef","stableDropdownRender","stableSelectAllRender","sizeApply","useCallback","availableHeight","availableWidth","elements","floatingMiddleware","useMemo","offset","autoPlacement","shift","size","floatingStyles","refs","useFloating","autoUpdate","defaultSelectionSummaryRender","v","count","allValues","option","handleSelectAll","useStableCallback","handleDeselectAll","handleOverlayClick","floatingRefCallback","node","popupEl","dsSelectClassname","clsx","dsPopupClassName","popupWidth","PopupPanelSize","customRenderMenu","menu","renderedMenu","checked","indeterminate","jsxs","Fragment","jsx","SelectItem","e","Divider","refCallback","enhancedPopupRender","FloatingOverlay","finalPopupRender","AntSelect","CaretDown","isSelected","Checkbox","toMerged","MainSelect","forwardRef","Select"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingOverlay,\n offset,\n shift,\n size,\n useFloating,\n useFloatingPortalNode,\n type MiddlewareState,\n} from \"@floating-ui/react\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport {\n default as AntSelect,\n type SelectProps as AntSelectProps,\n type BaseOptionType,\n type DefaultOptionType,\n} from \"antd/es/select\";\nimport { toMerged } from \"es-toolkit\";\nimport React, { CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { useStableCallback } from \"@base-ui/utils/useStableCallback\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport { Divider } from \"antd\";\nimport { CheckboxProps } from \"../checkbox\";\nimport { SelectItem } from \"./item\";\nimport \"./style.css\";\nimport { BaseSelectRef } from \"rc-select\";\nimport { useValueAsRef } from \"@base-ui/utils/useValueAsRef\";\n// SelectItem component props\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n /**\n * Show selection summary instead of tags in multiple case\n * @default false\n */\n showSelectionSummary?: boolean;\n /**\n * Render function for the selection summary in multiple case\n * @default (value) => `${value.length} items selected`\n */\n selectionSummaryRender?: (value: ValueType) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n showSelectionSummary,\n selectionSummaryRender,\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n showSelectAll,\n selectAllRender,\n options,\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n const cls = useCls();\n const [value, onChange] = useControlledState(\n valueProp,\n onChangeProp,\n defaultValue\n );\n\n // Stabilize render callback props used in useCallback dependencies\n const stablePopupRender = useValueAsRef(popupRender);\n const stableDropdownRender = useValueAsRef(dropdownRender);\n const stableSelectAllRender = useValueAsRef(selectAllRender);\n\n // Memoize size middleware apply function to prevent recreating on every render\n const sizeApply = useCallback(\n ({\n availableHeight,\n availableWidth,\n elements,\n }: MiddlewareState & {\n availableWidth: number;\n availableHeight: number;\n }) => {\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n []\n );\n\n // Memoize floating UI middleware array to prevent recalculating position unnecessarily\n const floatingMiddleware = useMemo(\n () => [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply: sizeApply,\n }),\n ],\n [sizeApply]\n );\n\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: floatingMiddleware,\n whileElementsMounted: autoUpdate,\n });\n\n const defaultSelectionSummaryRender = useCallback(\n (v: ValueType) => {\n const count = Array.isArray(v) ? v.length : 1;\n if (isMultiple) {\n return count + ` ${count == 1 ? \"item\" : \"items\"} selected`;\n }\n return <>{v}</>;\n },\n [isMultiple]\n );\n\n // Memoize allValues calculation\n const allValues = useMemo(\n () => (Array.isArray(options) ? options.map((option) => option.value) : []),\n [options]\n );\n\n // Create stable callbacks for select all/deselect all\n const handleSelectAll = useStableCallback(() => {\n onChange(allValues as ValueType);\n });\n\n const handleDeselectAll = useStableCallback(() => {\n onChange([] as ValueType);\n });\n\n // Create stable callback for overlay click\n const handleOverlayClick = useStableCallback(() => {\n setOpen(false);\n });\n\n // Memoize floating ref callback\n const floatingRefCallback = useCallback(\n (node: HTMLElement | null) => {\n if (!node) return;\n const popupEl = node.closest(\".ds-select-dropdown\") as HTMLDivElement;\n refs.setFloating(popupEl);\n },\n [refs]\n );\n\n const dsSelectClassname = clsx(\n cls(\"select\", showSelectionSummary && \"select-selection-summary\"),\n className\n );\n\n const dsPopupClassName = clsx(\n cls(\n \"select-popup\",\n isMultiple && \"select-multiple\",\n enhancePositioner && \"select-popup-enhanced\"\n ),\n classNames?.popup?.root || popupClassName\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n const customRenderMenu = useCallback(\n (menu: React.ReactElement) => {\n const renderedMenu = stablePopupRender.current\n ? stablePopupRender.current(menu)\n : stableDropdownRender.current\n ? stableDropdownRender.current(menu)\n : menu;\n if (!showSelectAll) return renderedMenu;\n const checked = Array.isArray(value) && value.length > 0;\n const indeterminate =\n Array.isArray(value) && value.length && value.length < options.length;\n return (\n <>\n <SelectItem\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-option-active\"\n )}\n onMouseOver={(e) => {}}\n selectAllRender={stableSelectAllRender.current}\n checked={checked}\n indeterminate={indeterminate}\n onSelectAll={handleSelectAll}\n onDeselectAll={handleDeselectAll}\n />\n <Divider />\n {renderedMenu}\n </>\n );\n },\n [\n stablePopupRender,\n stableDropdownRender,\n showSelectAll,\n value,\n options,\n cls,\n stableSelectAllRender,\n handleSelectAll,\n handleDeselectAll,\n ]\n );\n\n const refCallback = useCallback(\n (node: BaseSelectRef) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n },\n [ref, refs]\n );\n\n // Memoize enhanced popup render for enhancePositioner mode\n const enhancedPopupRender = useCallback(\n (menu: React.ReactElement) => {\n return (\n <>\n <FloatingOverlay lockScroll onClick={handleOverlayClick} />\n <div ref={floatingRefCallback}>{customRenderMenu(menu)}</div>\n </>\n );\n },\n [handleOverlayClick, floatingRefCallback, customRenderMenu]\n );\n\n // Memoize final popup render\n const finalPopupRender = useCallback(\n (menu: React.ReactElement) => {\n if (!enhancePositioner) {\n return customRenderMenu(menu);\n }\n return enhancedPopupRender(menu);\n },\n [enhancePositioner, customRenderMenu, enhancedPopupRender]\n );\n\n return (\n <AntSelect\n // ref={ref}\n ref={refCallback}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n value={value}\n onChange={onChange}\n // for old version\n // popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected, disabled }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked disabled={disabled} />\n ) : (\n <Checkbox checked={false} disabled={disabled} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={dsSelectClassname}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={finalPopupRender}\n options={options}\n {...(showSelectionSummary\n ? {\n maxTagCount: 1,\n showSearch: false,\n labelRender: () => {\n if (selectionSummaryRender) {\n return selectionSummaryRender(value);\n }\n return defaultSelectionSummaryRender(value);\n },\n }\n : {})}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","showSelectionSummary","selectionSummaryRender","valueProp","onChangeProp","defaultValue","showSelectAll","selectAllRender","options","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","cls","useCls","value","onChange","stablePopupRender","useValueAsRef","stableDropdownRender","stableSelectAllRender","sizeApply","useCallback","availableHeight","availableWidth","elements","floatingMiddleware","useMemo","offset","autoPlacement","shift","size","floatingStyles","refs","useFloating","autoUpdate","defaultSelectionSummaryRender","v","count","allValues","option","handleSelectAll","useStableCallback","handleDeselectAll","handleOverlayClick","floatingRefCallback","node","popupEl","dsSelectClassname","clsx","dsPopupClassName","popupWidth","PopupPanelSize","customRenderMenu","menu","renderedMenu","checked","indeterminate","jsxs","Fragment","jsx","SelectItem","e","Divider","refCallback","enhancedPopupRender","FloatingOverlay","finalPopupRender","AntSelect","CaretDown","isSelected","disabled","Checkbox","toMerged","MainSelect","forwardRef","Select"],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { ConfigProviderProps } from 'antd/es/config-provider';
2
2
  import { StyleProviderProps } from '@ant-design/cssinjs';
3
+ import { ComponentConfig } from './context';
3
4
  import { Theme } from '../../tokens';
4
5
  export interface ThemeProviderProps extends Omit<ConfigProviderProps, "theme" | "prefixCls"> {
5
6
  appendClassesTo?: string | HTMLElement;
6
7
  appendClassesToChildren?: boolean;
7
8
  styleProviderProps?: StyleProviderProps;
8
9
  theme?: Theme;
10
+ componentConfig?: ComponentConfig;
9
11
  }
10
- export declare const ThemeProvider: ({ theme, appendClassesTo, appendClassesToChildren, styleProviderProps, children, ...configProviderProps }: ThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const ThemeProvider: ({ theme, componentConfig, appendClassesTo, appendClassesToChildren, styleProviderProps, children, ...configProviderProps }: ThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
11
13
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/theme-provider/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,aAAa,CAAC;AAGrB,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,WAAW,CAAC;IACxD,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACvC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAyCD,eAAO,MAAM,aAAa,GAAI,2GAO3B,kBAAkB,4CAkBpB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/theme-provider/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAiB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAwB,eAAe,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,aAAa,CAAC;AAGrB,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,WAAW,CAAC;IACxD,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACvC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAyCD,eAAO,MAAM,aAAa,GAAI,4HAQ3B,kBAAkB,4CAkBpB,CAAC"}
@@ -1,46 +1,47 @@
1
1
  "use client";
2
2
  import { jsx as i } from "react/jsx-runtime";
3
- import s from "antd/es/config-provider";
4
- import { useLayoutEffect as c, Children as n, isValidElement as l, cloneElement as u } from "react";
5
- import { lightTheme as p, darkTheme as a } from "../../tokens/and-theme/tokens.js";
6
- import { StyleProvider as h } from "@ant-design/cssinjs";
3
+ import c from "antd/es/config-provider";
4
+ import { useLayoutEffect as n, Children as l, isValidElement as u, cloneElement as p } from "react";
5
+ import { lightTheme as a, darkTheme as h } from "../../tokens/and-theme/tokens.js";
6
+ import { StyleProvider as v } from "@ant-design/cssinjs";
7
7
  import './style.css';/* empty css */
8
- import { ThemeContextProvider as v } from "./context/provider.js";
9
- import { useTheme as d } from "./context/themeStore.js";
10
- import { clsx as x } from "../utils/cn.js";
11
- const y = ({
12
- children: o,
8
+ import { ThemeContextProvider as d } from "./context/provider.js";
9
+ import { useTheme as x } from "./context/themeStore.js";
10
+ import { clsx as y } from "../utils/cn.js";
11
+ const g = ({
12
+ children: m,
13
13
  appendClassesTo: e
14
14
  }) => {
15
- const { className: m } = d();
16
- return c(() => {
17
- const r = m.split(" "), t = typeof e == "string" ? document.querySelector(e) : e;
18
- return t && t.classList.add(...r), () => {
19
- t && t.classList.remove(...r);
15
+ const { className: t } = x();
16
+ return n(() => {
17
+ const r = t.split(" "), o = typeof e == "string" ? document.querySelector(e) : e;
18
+ return o && o.classList.add(...r), () => {
19
+ o && o.classList.remove(...r);
20
20
  };
21
- }, [e, m]), e === void 0 ? n.map(o, (r) => l(r) ? u(r, {
22
- className: x(
21
+ }, [e, t]), e === void 0 ? l.map(m, (r) => u(r) ? p(r, {
22
+ className: y(
23
23
  r.props.className,
24
- m
24
+ t
25
25
  )
26
- }) : r) : o;
27
- }, D = ({
28
- theme: o,
29
- appendClassesTo: e,
30
- appendClassesToChildren: m,
31
- styleProviderProps: r,
32
- children: t,
33
- ...f
34
- }) => /* @__PURE__ */ i(h, { layer: !0, ...r, children: /* @__PURE__ */ i(v, { theme: o, children: /* @__PURE__ */ i(
35
- s,
26
+ }) : r) : m;
27
+ }, V = ({
28
+ theme: m,
29
+ componentConfig: e,
30
+ appendClassesTo: t,
31
+ appendClassesToChildren: r,
32
+ styleProviderProps: o,
33
+ children: f,
34
+ ...s
35
+ }) => /* @__PURE__ */ i(v, { layer: !0, ...o, children: /* @__PURE__ */ i(d, { theme: m, componentConfig: e, children: /* @__PURE__ */ i(
36
+ c,
36
37
  {
37
- theme: o == "light" ? p : a,
38
+ theme: m == "light" ? a : h,
38
39
  prefixCls: "ds",
39
- ...f,
40
- children: m || e ? /* @__PURE__ */ i(y, { appendClassesTo: e, children: t }) : t
40
+ ...s,
41
+ children: r || t ? /* @__PURE__ */ i(g, { appendClassesTo: t, children: f }) : f
41
42
  }
42
43
  ) }) });
43
44
  export {
44
- D as ThemeProvider
45
+ V as ThemeProvider
45
46
  };
46
47
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/theme-provider/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as ConfigProvider,\n type ConfigProviderProps,\n} from \"antd/es/config-provider\";\nimport { Children, cloneElement, isValidElement, useLayoutEffect } from \"react\";\nimport { darkTheme, lightTheme } from \"../../tokens/and-theme/tokens\";\nimport { clsx } from \"../utils\";\nimport { StyleProvider, StyleProviderProps } from \"@ant-design/cssinjs\";\nimport { ThemeContextProvider } from \"./context\";\nimport { Theme } from \"../../tokens\";\n\n// Import component-specific styles\nimport \"./style.css\";\nimport { useTheme } from \"./context\";\n\nexport interface ThemeProviderProps\n extends Omit<ConfigProviderProps, \"theme\" | \"prefixCls\"> {\n appendClassesTo?: string | HTMLElement;\n appendClassesToChildren?: boolean;\n styleProviderProps?: StyleProviderProps;\n theme?: Theme;\n}\n\nconst DSWrapper = ({\n children,\n appendClassesTo,\n}: {\n children: React.ReactNode;\n appendClassesTo?: string | HTMLElement;\n}) => {\n const { className } = useTheme();\n\n useLayoutEffect(() => {\n const classes = className.split(\" \");\n const el =\n typeof appendClassesTo === \"string\"\n ? document.querySelector(appendClassesTo)\n : appendClassesTo;\n if (el) {\n el.classList.add(...classes);\n }\n return () => {\n if (el) {\n el.classList.remove(...classes);\n }\n };\n }, [appendClassesTo, className]);\n\n return appendClassesTo === undefined\n ? Children.map(children, (child) => {\n if (isValidElement(child))\n return cloneElement(child, {\n className: clsx(\n (child.props as { className?: string }).className,\n className\n ),\n } as { className: string });\n return child;\n })\n : children;\n};\n\nexport const ThemeProvider = ({\n theme,\n appendClassesTo,\n appendClassesToChildren,\n styleProviderProps,\n children,\n ...configProviderProps\n}: ThemeProviderProps) => {\n return (\n <StyleProvider layer {...styleProviderProps}>\n <ThemeContextProvider theme={theme}>\n <ConfigProvider\n theme={theme == \"light\" ? lightTheme : darkTheme}\n prefixCls=\"ds\"\n {...configProviderProps}\n >\n {appendClassesToChildren || appendClassesTo ? (\n <DSWrapper appendClassesTo={appendClassesTo}>{children}</DSWrapper>\n ) : (\n children\n )}\n </ConfigProvider>\n </ThemeContextProvider>\n </StyleProvider>\n );\n};\n"],"names":["DSWrapper","children","appendClassesTo","className","useTheme","useLayoutEffect","classes","el","Children","child","isValidElement","cloneElement","clsx","ThemeProvider","theme","appendClassesToChildren","styleProviderProps","configProviderProps","jsx","StyleProvider","ThemeContextProvider","ConfigProvider","lightTheme","darkTheme"],"mappings":";;;;;;;;;;AAwBA,MAAMA,IAAY,CAAC;AAAA,EACjB,UAAAC;AAAA,EACA,iBAAAC;AACF,MAGM;AACJ,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAA;AAEtB,SAAAC,EAAgB,MAAM;AACpB,UAAMC,IAAUH,EAAU,MAAM,GAAG,GAC7BI,IACJ,OAAOL,KAAoB,WACvB,SAAS,cAAcA,CAAe,IACtCA;AACN,WAAIK,KACFA,EAAG,UAAU,IAAI,GAAGD,CAAO,GAEtB,MAAM;AACX,MAAIC,KACFA,EAAG,UAAU,OAAO,GAAGD,CAAO;AAAA,IAElC;AAAA,EACF,GAAG,CAACJ,GAAiBC,CAAS,CAAC,GAExBD,MAAoB,SACvBM,EAAS,IAAIP,GAAU,CAACQ,MAClBC,EAAeD,CAAK,IACfE,EAAaF,GAAO;AAAA,IACzB,WAAWG;AAAA,MACRH,EAAM,MAAiC;AAAA,MACxCN;AAAA,IAAA;AAAA,EACF,CACwB,IACrBM,CACR,IACDR;AACN,GAEaY,IAAgB,CAAC;AAAA,EAC5B,OAAAC;AAAA,EACA,iBAAAZ;AAAA,EACA,yBAAAa;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAf;AAAA,EACA,GAAGgB;AACL,MAEI,gBAAAC,EAACC,KAAc,OAAK,IAAE,GAAGH,GACvB,UAAA,gBAAAE,EAACE,KAAqB,OAAAN,GACpB,UAAA,gBAAAI;AAAA,EAACG;AAAA,EAAA;AAAA,IACC,OAAOP,KAAS,UAAUQ,IAAaC;AAAA,IACvC,WAAU;AAAA,IACT,GAAGN;AAAA,IAEH,eAA2Bf,IAC1B,gBAAAgB,EAAClB,GAAA,EAAU,iBAAAE,GAAmC,UAAAD,GAAS,IAEvDA;AAAA,EAAA;AAAA,GAGN,EAAA,CACF;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/theme-provider/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as ConfigProvider,\n type ConfigProviderProps,\n} from \"antd/es/config-provider\";\nimport { Children, cloneElement, isValidElement, useLayoutEffect } from \"react\";\nimport { darkTheme, lightTheme } from \"../../tokens/and-theme/tokens\";\nimport { clsx } from \"../utils\";\nimport { StyleProvider, StyleProviderProps } from \"@ant-design/cssinjs\";\nimport { ThemeContextProvider, ComponentConfig } from \"./context\";\nimport { Theme } from \"../../tokens\";\n\n// Import component-specific styles\nimport \"./style.css\";\nimport { useTheme } from \"./context\";\n\nexport interface ThemeProviderProps\n extends Omit<ConfigProviderProps, \"theme\" | \"prefixCls\"> {\n appendClassesTo?: string | HTMLElement;\n appendClassesToChildren?: boolean;\n styleProviderProps?: StyleProviderProps;\n theme?: Theme;\n componentConfig?: ComponentConfig;\n}\n\nconst DSWrapper = ({\n children,\n appendClassesTo,\n}: {\n children: React.ReactNode;\n appendClassesTo?: string | HTMLElement;\n}) => {\n const { className } = useTheme();\n\n useLayoutEffect(() => {\n const classes = className.split(\" \");\n const el =\n typeof appendClassesTo === \"string\"\n ? document.querySelector(appendClassesTo)\n : appendClassesTo;\n if (el) {\n el.classList.add(...classes);\n }\n return () => {\n if (el) {\n el.classList.remove(...classes);\n }\n };\n }, [appendClassesTo, className]);\n\n return appendClassesTo === undefined\n ? Children.map(children, (child) => {\n if (isValidElement(child))\n return cloneElement(child, {\n className: clsx(\n (child.props as { className?: string }).className,\n className\n ),\n } as { className: string });\n return child;\n })\n : children;\n};\n\nexport const ThemeProvider = ({\n theme,\n componentConfig,\n appendClassesTo,\n appendClassesToChildren,\n styleProviderProps,\n children,\n ...configProviderProps\n}: ThemeProviderProps) => {\n return (\n <StyleProvider layer {...styleProviderProps}>\n <ThemeContextProvider theme={theme} componentConfig={componentConfig}>\n <ConfigProvider\n theme={theme == \"light\" ? lightTheme : darkTheme}\n prefixCls=\"ds\"\n {...configProviderProps}\n >\n {appendClassesToChildren || appendClassesTo ? (\n <DSWrapper appendClassesTo={appendClassesTo}>{children}</DSWrapper>\n ) : (\n children\n )}\n </ConfigProvider>\n </ThemeContextProvider>\n </StyleProvider>\n );\n};\n"],"names":["DSWrapper","children","appendClassesTo","className","useTheme","useLayoutEffect","classes","el","Children","child","isValidElement","cloneElement","clsx","ThemeProvider","theme","componentConfig","appendClassesToChildren","styleProviderProps","configProviderProps","jsx","StyleProvider","ThemeContextProvider","ConfigProvider","lightTheme","darkTheme"],"mappings":";;;;;;;;;;AAyBA,MAAMA,IAAY,CAAC;AAAA,EACjB,UAAAC;AAAA,EACA,iBAAAC;AACF,MAGM;AACJ,QAAM,EAAE,WAAAC,EAAA,IAAcC,EAAA;AAEtB,SAAAC,EAAgB,MAAM;AACpB,UAAMC,IAAUH,EAAU,MAAM,GAAG,GAC7BI,IACJ,OAAOL,KAAoB,WACvB,SAAS,cAAcA,CAAe,IACtCA;AACN,WAAIK,KACFA,EAAG,UAAU,IAAI,GAAGD,CAAO,GAEtB,MAAM;AACX,MAAIC,KACFA,EAAG,UAAU,OAAO,GAAGD,CAAO;AAAA,IAElC;AAAA,EACF,GAAG,CAACJ,GAAiBC,CAAS,CAAC,GAExBD,MAAoB,SACvBM,EAAS,IAAIP,GAAU,CAACQ,MAClBC,EAAeD,CAAK,IACfE,EAAaF,GAAO;AAAA,IACzB,WAAWG;AAAA,MACRH,EAAM,MAAiC;AAAA,MACxCN;AAAA,IAAA;AAAA,EACF,CACwB,IACrBM,CACR,IACDR;AACN,GAEaY,IAAgB,CAAC;AAAA,EAC5B,OAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAb;AAAA,EACA,yBAAAc;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAhB;AAAA,EACA,GAAGiB;AACL,MAEI,gBAAAC,EAACC,KAAc,OAAK,IAAE,GAAGH,GACvB,UAAA,gBAAAE,EAACE,GAAA,EAAqB,OAAAP,GAAc,iBAAAC,GAClC,UAAA,gBAAAI;AAAA,EAACG;AAAA,EAAA;AAAA,IACC,OAAOR,KAAS,UAAUS,IAAaC;AAAA,IACvC,WAAU;AAAA,IACT,GAAGN;AAAA,IAEH,eAA2BhB,IAC1B,gBAAAiB,EAACnB,GAAA,EAAU,iBAAAE,GAAmC,UAAAD,GAAS,IAEvDA;AAAA,EAAA;AAAA,GAGN,EAAA,CACF;"}
@@ -1,3 +1,4 @@
1
- export { ThemeContext, useTheme } from './themeStore';
1
+ export { ThemeContext, useTheme, useThemeContext } from './themeStore';
2
+ export type { ComponentConfig } from './themeStore';
2
3
  export { ThemeContextProvider } from './provider';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
- import { Theme } from '../../../tokens';
3
- export declare const ThemeContextProvider: ({ children, theme, }: {
2
+ import { ThemeStore } from './themeStore';
3
+ export declare const ThemeContextProvider: ({ children, ...store }: ThemeStore & {
4
4
  children: ReactNode;
5
- theme: Theme;
6
5
  }) => import("react/jsx-runtime").JSX.Element;
7
6
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,eAAO,MAAM,oBAAoB,GAAI,sBAGlC;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;CACd,4CAMA,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAgB,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,oBAAoB,GAAI,wBAGlC,UAAU,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAStC,CAAC"}
@@ -1,11 +1,18 @@
1
1
  "use client";
2
- import { jsx as r } from "react/jsx-runtime";
3
- import { ThemeContext as t } from "./themeStore.js";
4
- const n = ({
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ import { useMemo as t } from "react";
4
+ import { ThemeContext as i } from "./themeStore.js";
5
+ const f = ({
5
6
  children: o,
6
- theme: e
7
- }) => e ? /* @__PURE__ */ r(t.Provider, { value: { theme: e }, children: o }) : void 0;
7
+ ...e
8
+ }) => {
9
+ const m = t(
10
+ () => ({ theme: e.theme, componentConfig: e.componentConfig }),
11
+ [e.theme, e.componentConfig]
12
+ );
13
+ return e.theme ? /* @__PURE__ */ n(i.Provider, { value: m, children: o }) : void 0;
14
+ };
8
15
  export {
9
- n as ThemeContextProvider
16
+ f as ThemeContextProvider
10
17
  };
11
18
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sources":["../../../../src/components/theme-provider/context/provider.tsx"],"sourcesContent":["\"use client\";\nimport { ReactNode } from \"react\";\nimport { Theme } from \"../../../tokens\";\nimport { ThemeContext } from \"./themeStore\";\n\nexport const ThemeContextProvider = ({\n children,\n theme,\n}: {\n children: ReactNode;\n theme: Theme;\n}) => {\n // Initialize with a consistent default value for server and client\n\n return theme ? (\n <ThemeContext.Provider value={{ theme }}>{children}</ThemeContext.Provider>\n ) : undefined;\n};\n"],"names":["ThemeContextProvider","children","theme","jsx","ThemeContext"],"mappings":";;;AAKO,MAAMA,IAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,OAAAC;AACF,MAMSA,IACL,gBAAAC,EAACC,EAAa,UAAb,EAAsB,OAAO,EAAE,OAAAF,EAAA,GAAU,UAAAD,EAAA,CAAS,IACjD;"}
1
+ {"version":3,"file":"provider.js","sources":["../../../../src/components/theme-provider/context/provider.tsx"],"sourcesContent":["\"use client\";\nimport { ReactNode, useMemo } from \"react\";\nimport { ThemeStore, ThemeContext } from \"./themeStore\";\n\nexport const ThemeContextProvider = ({\n children,\n ...store\n}: ThemeStore & { children: ReactNode }) => {\n const value = useMemo<ThemeStore>(\n () => ({ theme: store.theme, componentConfig: store.componentConfig }),\n [store.theme, store.componentConfig],\n );\n\n return store.theme ? (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n ) : undefined;\n};\n"],"names":["ThemeContextProvider","children","store","value","useMemo","jsx","ThemeContext"],"mappings":";;;;AAIO,MAAMA,IAAuB,CAAC;AAAA,EACnC,UAAAC;AAAA,EACA,GAAGC;AACL,MAA4C;AAC1C,QAAMC,IAAQC;AAAA,IACZ,OAAO,EAAE,OAAOF,EAAM,OAAO,iBAAiBA,EAAM;IACpD,CAACA,EAAM,OAAOA,EAAM,eAAe;AAAA,EAAA;AAGrC,SAAOA,EAAM,QACX,gBAAAG,EAACC,EAAa,UAAb,EAAsB,OAAAH,GAAe,UAAAF,GAAS,IAC7C;AACN;"}
@@ -1,9 +1,24 @@
1
1
  import { Context } from 'react';
2
2
  import { Theme } from '../../../tokens';
3
+ import { FormValidationRule } from '../../form/formValidationRule';
4
+ export interface ComponentConfig {
5
+ tooltipEnterDelay?: number;
6
+ tooltipLeaveDelay?: number;
7
+ /**
8
+ * Shared validation rules applied to all Form.Items globally.
9
+ * Each rule requires a `key` for identification, and may optionally
10
+ * provide a `sanitize` function to transform input values on change.
11
+ * Use `BLOCKED_CHARS_RULE` as a ready-made rule, or `createBlockedCharsRule()`
12
+ * for a customized variant. Opt out per item with `ignoreDefaultRules`.
13
+ */
14
+ formValidationRules?: FormValidationRule[];
15
+ }
3
16
  export interface ThemeStore {
4
17
  theme: Theme;
18
+ componentConfig?: ComponentConfig;
5
19
  }
6
20
  export declare const ThemeContext: Context<ThemeStore>;
21
+ export declare const useThemeContext: () => ThemeStore;
7
22
  export declare const useTheme: () => {
8
23
  theme: Theme;
9
24
  className: string;
@@ -1 +1 @@
1
- {"version":3,"file":"themeStore.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/themeStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,OAAO,EAAc,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,UAAU,CAE3C,CAAC;AAEH,eAAO,MAAM,QAAQ;;;CAMpB,CAAC"}
1
+ {"version":3,"file":"themeStore.d.ts","sourceRoot":"","sources":["../../../../src/components/theme-provider/context/themeStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,OAAO,EAAc,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,UAAU,CAE3C,CAAC;AAEH,eAAO,MAAM,eAAe,kBAAiC,CAAC;AAE9D,eAAO,MAAM,QAAQ;;;CAMpB,CAAC"}
@@ -1,15 +1,16 @@
1
1
  "use client";
2
- import { createContext as r, useContext as n } from "react";
3
- import { useCls as m, useAntdCssVarClassname as c } from "../../utils/antdUtils.js";
4
- import { clsx as a } from "../../utils/cn.js";
5
- const i = r({
2
+ import { createContext as m, useContext as t } from "react";
3
+ import { useCls as c, useAntdCssVarClassname as a } from "../../utils/antdUtils.js";
4
+ import { clsx as h } from "../../utils/cn.js";
5
+ const s = m({
6
6
  theme: "light"
7
- }), C = () => {
8
- const { theme: e } = n(i), t = m(), s = c(), o = a(t("theme-provider"), e?.toString(), s);
9
- return { theme: e, className: o };
7
+ }), C = () => t(s), x = () => {
8
+ const { theme: e } = t(s), o = c(), n = a(), r = h(o("theme-provider"), e?.toString(), n);
9
+ return { theme: e, className: r };
10
10
  };
11
11
  export {
12
- i as ThemeContext,
13
- C as useTheme
12
+ s as ThemeContext,
13
+ x as useTheme,
14
+ C as useThemeContext
14
15
  };
15
16
  //# sourceMappingURL=themeStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeStore.js","sources":["../../../../src/components/theme-provider/context/themeStore.ts"],"sourcesContent":["\"use client\";\nimport { createContext, Context, useContext } from \"react\";\nimport { Theme } from \"../../../tokens\";\nimport { useCls, clsx, useAntdCssVarClassname } from \"../../utils\";\n\nexport interface ThemeStore {\n theme: Theme;\n}\n\nexport const ThemeContext: Context<ThemeStore> = createContext<ThemeStore>({\n theme: \"light\",\n});\n\nexport const useTheme = () => {\n const { theme } = useContext(ThemeContext);\n const cls = useCls();\n const cssVars = useAntdCssVarClassname();\n const className = clsx(cls(\"theme-provider\"), theme?.toString(), cssVars);\n return { theme, className };\n};\n"],"names":["ThemeContext","createContext","useTheme","theme","useContext","cls","useCls","cssVars","useAntdCssVarClassname","className","clsx"],"mappings":";;;;AASO,MAAMA,IAAoCC,EAA0B;AAAA,EACzE,OAAO;AACT,CAAC,GAEYC,IAAW,MAAM;AAC5B,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAWJ,CAAY,GACnCK,IAAMC,EAAA,GACNC,IAAUC,EAAA,GACVC,IAAYC,EAAKL,EAAI,gBAAgB,GAAGF,GAAO,SAAA,GAAYI,CAAO;AACxE,SAAO,EAAE,OAAAJ,GAAO,WAAAM,EAAA;AAClB;"}
1
+ {"version":3,"file":"themeStore.js","sources":["../../../../src/components/theme-provider/context/themeStore.ts"],"sourcesContent":["\"use client\";\nimport { createContext, Context, useContext } from \"react\";\nimport { Theme } from \"../../../tokens\";\nimport { useCls, clsx, useAntdCssVarClassname } from \"../../utils\";\nimport type { FormValidationRule } from \"../../form/formValidationRule\";\n\nexport interface ComponentConfig {\n tooltipEnterDelay?: number;\n tooltipLeaveDelay?: number;\n /**\n * Shared validation rules applied to all Form.Items globally.\n * Each rule requires a `key` for identification, and may optionally\n * provide a `sanitize` function to transform input values on change.\n * Use `BLOCKED_CHARS_RULE` as a ready-made rule, or `createBlockedCharsRule()`\n * for a customized variant. Opt out per item with `ignoreDefaultRules`.\n */\n formValidationRules?: FormValidationRule[];\n}\n\nexport interface ThemeStore {\n theme: Theme;\n componentConfig?: ComponentConfig;\n}\n\nexport const ThemeContext: Context<ThemeStore> = createContext<ThemeStore>({\n theme: \"light\",\n});\n\nexport const useThemeContext = () => useContext(ThemeContext);\n\nexport const useTheme = () => {\n const { theme } = useContext(ThemeContext);\n const cls = useCls();\n const cssVars = useAntdCssVarClassname();\n const className = clsx(cls(\"theme-provider\"), theme?.toString(), cssVars);\n return { theme, className };\n};\n"],"names":["ThemeContext","createContext","useThemeContext","useContext","useTheme","theme","cls","useCls","cssVars","useAntdCssVarClassname","className","clsx"],"mappings":";;;;AAwBO,MAAMA,IAAoCC,EAA0B;AAAA,EACzE,OAAO;AACT,CAAC,GAEYC,IAAkB,MAAMC,EAAWH,CAAY,GAE/CI,IAAW,MAAM;AAC5B,QAAM,EAAE,OAAAC,EAAA,IAAUF,EAAWH,CAAY,GACnCM,IAAMC,EAAA,GACNC,IAAUC,EAAA,GACVC,IAAYC,EAAKL,EAAI,gBAAgB,GAAGD,GAAO,SAAA,GAAYG,CAAO;AACxE,SAAO,EAAE,OAAAH,GAAO,WAAAK,EAAA;AAClB;"}
@@ -1 +1 @@
1
- @layer components{@keyframes ds-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ds-theme-provider{--ds-modal-padding: 24px;--ds-modal-edge-padding: 16px;--ds-popup-panel-padding: 16px;--ds-scrollbar-width: auto;--ds-scrollbar-width-legacy: 15;--ds-box-shadow-popover-arrow: 0px 0px 1px 0px var(--ds-modal-color-border), 2px 2px 5px rgba(0, 0, 0, .05);--ds-control-border-radius: 6px;--ds-control-border-radius-sm: 4px;--ds-control-border-radius-lg: 8px;--ds-control-transition: all .2s;--ds-control-padding-small: 1px 8px;--ds-control-padding-middle: 5px 12px;--ds-control-padding-large: 9px 12px;--ds-control-padding-inline-small: 8px;--ds-control-padding-block-small: 1px;--ds-control-padding-inline-middle: 12px;--ds-control-padding-block-middle: 5px;--ds-control-padding-inline-large: 12px;--ds-control-padding-block-large: 9px;--ds-control-min-height-small: 24px;--ds-control-min-height-middle: 32px;--ds-control-min-height-large: 40px;--ds-control-line-height: 20px;--ds-control-color-border-hover: var(--ds-color-primary-hover);--ds-control-color-border-focus: var(--ds-color-primary);--ds-control-color-bg-disabled: var(--ds-color-bg-container-disabled);--ds-control-color-text-disabled: var(--ds-color-text-disabled);--ds-control-icon-size: 12px;--ds-control-color-bg: var(--ds-color-bg-container);--ds-control-color-border: var(--ds-color-border);--ds-control-color-border-active: var(--ds-color-primary);--ds-control-color-border-error-active: var(--ds-color-error);--ds-control-color-border-warning-active: var(--ds-color-warning);--ds-control-color-icon: var(--ds-color-text-quaternary);--ds-control-color-icon-hover: var(--ds-color-icon-hover);--ds-control-border: 1px solid var(--ds-control-color-border);--ds-control-border-active: 1px solid var(--ds-control-color-border-active);--ds-control-border-error-active: 1px solid var(--ds-control-color-border-error-active);--ds-control-border-warning-active: 1px solid var(--ds-control-color-border-warning-active);--ds-control-shadow-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-primary) 20%, transparent);--ds-form-label-required-mark-color: var(--ds-color-error);--ds-control-shadow-error-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-error) 20%, transparent);--ds-control-shadow-warning-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-warning) 20%, transparent);--ds-control-color-text-placeholder: var(--ds-color-text-placeholder);--ds-button-bg-secondary: #fafafa;--ds-button-bg-gradient-top: rgba(0, 0, 0, .02);--ds-button-bg-gradient-bottom: rgba(255, 255, 255, 0);--ds-button-bg-gradient-primary-top: rgba(255, 255, 255, .07);--ds-button-bg-gradient-primary-bottom: rgba(255, 255, 255, 0);--ds-button-shadow-default: 0 0 0 0 transparent;--ds-button-shadow-default-inner: inset 0 1px 0 1px #ffffff;--ds-button-shadow-solid: 0 0 0 0 transparent;--ds-button-shadow-solid-hover: 0 0 0 0 transparent;--ds-button-shadow-solid-active: 0 0 0 0 transparent;--ds-button-shadow-solid-inner: inset 0 1px 0 1px rgba(255, 255, 255, .12);--ds-color-primary-fg: hsl(217 80% 40%);--ds-color-primary-fg-hover: hsl(217 80% 55%);--ds-color-primary-fg-active: hsl(217 80% 30%);--ds-color-error-fg: hsl(5 68% 45%);--ds-color-error-fg-hover: hsl(5 68% 50%);--ds-color-error-fg-active: hsl(5 68% 40%);--ds-inter: "Inter", Helvetica, Arial, sans-serif;--ds-roboto-mono: "Roboto Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ds-animate-spin: ds-spin 1s linear infinite;--ds-z-index-base: 0;--ds-z-index-sticky-element: 520;--ds-z-index-scrollbar: 530;--ds-z-index-panel: 540;--ds-z-index-modal: 1000;--ds-z-index-modal-mask: 1000;--ds-z-index-message: 1010;--ds-z-index-notification: 1010;--ds-z-index-popover: 1030;--ds-z-index-popup: 1030;--ds-z-index-dropdown: 1050;--ds-z-index-picker: 1050;--ds-z-index-popconfirm: 1060;--ds-z-index-tooltip: 1070;--ds-z-index-toast: 2000;--ds-segment-color-bg-active: #ffffff;--ds-scrollbar-color-thumb: rgba(0, 0, 0, .2);--ds-scrollbar-color-track: rgba(0, 0, 0, 0);--ds-color-base-solid: #000000;--ds-color-table-fixed-column-shadow: rgb(0 0 0 / 10%);--ds-modal-color-border: rgba(0, 0, 0, .07)}@supports (font-variation-settings: normal){.ds-theme-provider{--ds-inter: "InterVariable", Inter, Helvetica, Arial, sans-serif;--ds-roboto-mono: "Roboto Mono Variable", Roboto Mono, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}}.ds-theme-provider.dark{--ds-modal-color-border: rgba(255, 255, 255, .1);--ds-segment-color-bg-active: #424248;--ds-scrollbar-color-thumb: rgba(255, 255, 255, .2);--ds-scrollbar-color-track: rgba(0, 0, 0, 0);--ds-color-base-solid: #ffffff;--ds-color-table-fixed-column-shadow: rgb(0 0 0 / 20%);--ds-button-bg-secondary: hsl(240, 6.5%, 17%);--ds-button-bg-gradient-top: rgba(255, 255, 255, .03);--ds-button-bg-gradient-bottom: rgba(255, 255, 255, 0);--ds-button-bg-gradient-primary-top: rgba(255, 255, 255, .12);--ds-button-bg-gradient-primary-bottom: rgba(255, 255, 255, 0);--ds-button-shadow-default: 0 0 0 0 transparent;--ds-button-shadow-default-inner: 0 0 0 0 transparent;--ds-button-shadow-solid: 0 0 0 0 transparent;--ds-button-shadow-solid-hover: 0 0 0 0 transparent;--ds-button-shadow-solid-active: 0 0 0 0 transparent;--ds-button-shadow-solid-inner: inset 0 1px 0 1px rgba(255, 255, 255, .14);--ds-color-primary-fg: hsl(211 95% 60%);--ds-color-primary-fg-hover: hsl(211 95% 65%);--ds-color-primary-fg-active: hsl(211 95% 58%);--ds-color-error-fg: hsl(4 72% 59%);--ds-color-error-fg-hover: hsl(4 72% 64%);--ds-color-error-fg-active: hsl(4 72% 56%)}}
1
+ @layer components{@keyframes ds-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ds-theme-provider{--ds-modal-padding: 20px;--ds-modal-edge-padding: 16px;--ds-modal-fixed-header-padding-block: 12px;--ds-modal-fixed-footer-padding-block: 12px;--ds-modal-header-padding-block: 16px 0px;--ds-modal-footer-padding-block: 4px 16px;--ds-modal-body-content-padding-block: 20px;--ds-modal-body-content-padding: var(--ds-modal-body-content-padding-block) var(--ds-modal-padding);--ds-dialog-body-content-padding: var(--ds-modal-body-content-padding-block) var(--ds-modal-padding);--ds-popup-panel-padding: 16px;--ds-scrollbar-width: auto;--ds-scrollbar-width-legacy: 15;--ds-box-shadow-popover-arrow: 0px 0px 1px 0px var(--ds-modal-color-border), 2px 2px 5px rgba(0, 0, 0, .05);--ds-control-border-radius: 6px;--ds-control-border-radius-sm: 4px;--ds-control-border-radius-lg: 8px;--ds-control-transition: all .2s;--ds-control-padding-small: 1px 8px;--ds-control-padding-middle: 5px 12px;--ds-control-padding-large: 9px 12px;--ds-control-padding-inline-small: 8px;--ds-control-padding-block-small: 1px;--ds-control-padding-inline-middle: 12px;--ds-control-padding-block-middle: 5px;--ds-control-padding-inline-large: 12px;--ds-control-padding-block-large: 9px;--ds-control-min-height-small: 24px;--ds-control-min-height-middle: 32px;--ds-control-min-height-large: 40px;--ds-control-line-height: 20px;--ds-control-color-border-hover: var(--ds-color-primary-hover);--ds-control-color-border-focus: var(--ds-color-primary);--ds-control-color-bg-disabled: var(--ds-color-bg-container-disabled);--ds-control-color-text-disabled: var(--ds-color-text-disabled);--ds-control-icon-size: 12px;--ds-control-color-bg: var(--ds-color-bg-container);--ds-control-color-border: var(--ds-color-border);--ds-control-color-border-active: var(--ds-color-primary);--ds-control-color-border-error-active: var(--ds-color-error);--ds-control-color-border-warning-active: var(--ds-color-warning);--ds-control-color-icon: var(--ds-color-text-quaternary);--ds-control-color-icon-hover: var(--ds-color-icon-hover);--ds-control-border: 1px solid var(--ds-control-color-border);--ds-control-border-active: 1px solid var(--ds-control-color-border-active);--ds-control-border-error-active: 1px solid var(--ds-control-color-border-error-active);--ds-control-border-warning-active: 1px solid var(--ds-control-color-border-warning-active);--ds-control-shadow-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-primary) 20%, transparent);--ds-form-label-required-mark-color: var(--ds-color-error);--ds-control-shadow-error-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-error) 20%, transparent);--ds-control-shadow-warning-active: 0 0 0 2px color-mix(in oklab, var(--ds-color-warning) 20%, transparent);--ds-control-color-text-placeholder: var(--ds-color-text-placeholder);--ds-button-bg-secondary: #fafafa;--ds-button-bg-gradient-top: rgba(0, 0, 0, .02);--ds-button-bg-gradient-bottom: rgba(255, 255, 255, 0);--ds-button-bg-gradient-primary-top: rgba(255, 255, 255, .07);--ds-button-bg-gradient-primary-bottom: rgba(255, 255, 255, 0);--ds-button-shadow-default: 0 0 0 0 transparent;--ds-button-shadow-default-inner: inset 0 1px 0 1px #ffffff;--ds-button-shadow-solid: 0 0 0 0 transparent;--ds-button-shadow-solid-hover: 0 0 0 0 transparent;--ds-button-shadow-solid-active: 0 0 0 0 transparent;--ds-button-shadow-solid-inner: inset 0 1px 0 1px rgba(255, 255, 255, .12);--ds-color-primary-fg: hsl(217 80% 40%);--ds-color-primary-fg-hover: hsl(217 80% 55%);--ds-color-primary-fg-active: hsl(217 80% 30%);--ds-color-error-fg: hsl(5 68% 45%);--ds-color-error-fg-hover: hsl(5 68% 50%);--ds-color-error-fg-active: hsl(5 68% 40%);--ds-inter: "Inter", Helvetica, Arial, sans-serif;--ds-roboto-mono: "Roboto Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ds-animate-spin: ds-spin 1s linear infinite;--ds-z-index-base: 0;--ds-z-index-sticky-element: 520;--ds-z-index-scrollbar: 530;--ds-z-index-panel: 540;--ds-z-index-modal: 1000;--ds-z-index-modal-mask: 1000;--ds-z-index-message: 1010;--ds-z-index-notification: 1010;--ds-z-index-popover: 1030;--ds-z-index-popup: 1030;--ds-z-index-dropdown: 1050;--ds-z-index-picker: 1050;--ds-z-index-popconfirm: 1060;--ds-z-index-tooltip: 1070;--ds-z-index-toast: 2000;--ds-segment-color-bg-active: #ffffff;--ds-scrollbar-color-thumb: rgba(0, 0, 0, .2);--ds-scrollbar-color-track: rgba(0, 0, 0, 0);--ds-color-base-solid: #000000;--ds-color-table-fixed-column-shadow: rgb(0 0 0 / 10%);--ds-modal-color-border: rgba(0, 0, 0, .07)}@supports (font-variation-settings: normal){.ds-theme-provider{--ds-inter: "InterVariable", Inter, Helvetica, Arial, sans-serif;--ds-roboto-mono: "Roboto Mono Variable", Roboto Mono, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}}.ds-theme-provider.dark{--ds-modal-color-border: rgba(255, 255, 255, .1);--ds-segment-color-bg-active: #424248;--ds-scrollbar-color-thumb: rgba(255, 255, 255, .2);--ds-scrollbar-color-track: rgba(0, 0, 0, 0);--ds-color-base-solid: #ffffff;--ds-color-table-fixed-column-shadow: rgb(0 0 0 / 20%);--ds-button-bg-secondary: hsl(240, 6.5%, 17%);--ds-button-bg-gradient-top: rgba(255, 255, 255, .03);--ds-button-bg-gradient-bottom: rgba(255, 255, 255, 0);--ds-button-bg-gradient-primary-top: rgba(255, 255, 255, .12);--ds-button-bg-gradient-primary-bottom: rgba(255, 255, 255, 0);--ds-button-shadow-default: 0 0 0 0 transparent;--ds-button-shadow-default-inner: 0 0 0 0 transparent;--ds-button-shadow-solid: 0 0 0 0 transparent;--ds-button-shadow-solid-hover: 0 0 0 0 transparent;--ds-button-shadow-solid-active: 0 0 0 0 transparent;--ds-button-shadow-solid-inner: inset 0 1px 0 1px rgba(255, 255, 255, .14);--ds-color-primary-fg: hsl(211 95% 60%);--ds-color-primary-fg-hover: hsl(211 95% 65%);--ds-color-primary-fg-active: hsl(211 95% 58%);--ds-color-error-fg: hsl(4 72% 59%);--ds-color-error-fg-hover: hsl(4 72% 64%);--ds-color-error-fg-active: hsl(4 72% 56%)}}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,aAAa,CAAC;AAIrB,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAC3C;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAMF,eAAO,MAAM,OAAO,sGAkBnB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,aAAa,CAAC;AAIrB,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAC3C;;;OAGG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,OAAO,sGAyBnB,CAAC"}
@@ -1,19 +1,30 @@
1
1
  "use client";
2
- import { jsx as l } from "react/jsx-runtime";
3
- import m from "antd/es/tooltip";
2
+ import { jsx as p } from "react/jsx-runtime";
3
+ import s from "antd/es/tooltip";
4
4
  import './style.css';/* empty css */
5
- import { forwardRef as f, useRef as p, useImperativeHandle as s } from "react";
6
- const a = f(
7
- ({ arrow: o = !1, children: r, ...n }, i) => {
8
- const e = p(null);
9
- return s(i, () => {
10
- const t = e.current?.nativeElement;
11
- return t instanceof Element ? t : null;
12
- }), /* @__PURE__ */ l(m, { arrow: o, ...n, ref: e, children: r });
5
+ import { forwardRef as f, useRef as u, useImperativeHandle as c } from "react";
6
+ import { useThemeContext as v } from "../theme-provider/context/themeStore.js";
7
+ const y = f(
8
+ ({ arrow: n = !1, mouseEnterDelay: r, mouseLeaveDelay: l, children: i, ...m }, a) => {
9
+ const e = u(null), { componentConfig: t } = v();
10
+ return c(a, () => {
11
+ const o = e.current?.nativeElement;
12
+ return o instanceof Element ? o : null;
13
+ }), /* @__PURE__ */ p(
14
+ s,
15
+ {
16
+ arrow: n,
17
+ mouseEnterDelay: r ?? t?.tooltipEnterDelay,
18
+ mouseLeaveDelay: l ?? t?.tooltipLeaveDelay,
19
+ ...m,
20
+ ref: e,
21
+ children: i
22
+ }
23
+ );
13
24
  }
14
25
  );
15
- a.displayName = "Tooltip";
26
+ y.displayName = "Tooltip";
16
27
  export {
17
- a as Tooltip
28
+ y as Tooltip
18
29
  };
19
30
  //# sourceMappingURL=component.js.map