@bioturing/components 0.27.0 → 0.29.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 (70) hide show
  1. package/dist/components/breadcrumb/style.css +1 -1
  2. package/dist/components/checkbox/component.js.map +1 -1
  3. package/dist/components/checkbox/style.css +1 -1
  4. package/dist/components/choice-list/component.js +102 -42
  5. package/dist/components/choice-list/component.js.map +1 -1
  6. package/dist/components/choice-list/style.css +1 -1
  7. package/dist/components/cmdk/index.js.map +1 -1
  8. package/dist/components/color-select/style.css +1 -1
  9. package/dist/components/combobox/component.js +232 -0
  10. package/dist/components/combobox/component.js.map +1 -0
  11. package/dist/components/combobox/style.css +1 -0
  12. package/dist/components/drag-drop/style.css +1 -1
  13. package/dist/components/dropdown-menu/component.js +181 -160
  14. package/dist/components/dropdown-menu/component.js.map +1 -1
  15. package/dist/components/dropdown-menu/divider.js +16 -0
  16. package/dist/components/dropdown-menu/divider.js.map +1 -0
  17. package/dist/components/dropdown-menu/item.css +1 -0
  18. package/dist/components/dropdown-menu/item.js +131 -0
  19. package/dist/components/dropdown-menu/item.js.map +1 -0
  20. package/dist/components/dropdown-menu/style.css +1 -1
  21. package/dist/components/ds-root/component.js +22 -17
  22. package/dist/components/ds-root/component.js.map +1 -1
  23. package/dist/components/ds-root/style.css +1 -1
  24. package/dist/components/form/style.css +1 -1
  25. package/dist/components/hooks/useDraggable.js +77 -0
  26. package/dist/components/hooks/useDraggable.js.map +1 -0
  27. package/dist/components/hooks/useHover.js +26 -0
  28. package/dist/components/hooks/useHover.js.map +1 -0
  29. package/dist/components/hooks/useTransitionStatus.js +52 -0
  30. package/dist/components/hooks/useTransitionStatus.js.map +1 -0
  31. package/dist/components/modal/style.css +1 -1
  32. package/dist/components/nav/item.js +2 -2
  33. package/dist/components/nav/style.css +1 -1
  34. package/dist/components/popup-panel/component.js +81 -92
  35. package/dist/components/popup-panel/component.js.map +1 -1
  36. package/dist/components/resizable/component.js +165 -97
  37. package/dist/components/resizable/component.js.map +1 -1
  38. package/dist/components/resizable/style.css +1 -1
  39. package/dist/components/scroll-area/component.js +70 -24
  40. package/dist/components/scroll-area/component.js.map +1 -1
  41. package/dist/components/scroll-area/style.css +1 -1
  42. package/dist/components/select/component.js +160 -91
  43. package/dist/components/select/component.js.map +1 -1
  44. package/dist/components/select/item.js +54 -0
  45. package/dist/components/select/item.js.map +1 -0
  46. package/dist/components/select/style.css +1 -1
  47. package/dist/components/select-trigger/component.js +150 -0
  48. package/dist/components/select-trigger/component.js.map +1 -0
  49. package/dist/components/select-trigger/style.css +1 -0
  50. package/dist/components/splitter/splitter-panel.js +8 -8
  51. package/dist/components/splitter/splitter.js +9 -9
  52. package/dist/components/splitter/useSizes.js +10 -10
  53. package/dist/components/splitter/useSizes.js.map +1 -1
  54. package/dist/components/stack/StackChild.js +9 -9
  55. package/dist/components/switch/style.css +1 -1
  56. package/dist/components/table/style.css +1 -1
  57. package/dist/components/theme-provider/component.js.map +1 -1
  58. package/dist/components/theme-provider/style.css +1 -1
  59. package/dist/components/tour/style.css +1 -1
  60. package/dist/components/transition/component.js +1 -1
  61. package/dist/components/transition/component.js.map +1 -1
  62. package/dist/components/utils/WithRenderProp.js.map +1 -1
  63. package/dist/index.d.ts +355 -12
  64. package/dist/index.js +198 -188
  65. package/dist/index.js.map +1 -1
  66. package/dist/metadata.js +21 -7
  67. package/dist/metadata.js.map +1 -1
  68. package/dist/tokens/and-theme/tokens.js +12 -12
  69. package/dist/tokens/and-theme/tokens.js.map +1 -1
  70. package/package.json +8 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../src/components/dropdown-menu/item.tsx"],"sourcesContent":["\"use client\";\nimport React, { Ref, useMemo } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport type { DropdownMenuItemType } from \"./component\";\nimport { Command } from \"../cmdk\";\nimport { Menu } from \"@base-ui-components/react/menu\";\n\nimport \"./item.css\";\nimport { Checkbox } from \"antd\";\n\nexport interface DropdownMenuItemProps {\n /** The menu item data */\n item: DropdownMenuItemType & { type: \"item\" };\n /** Custom render function for the item */\n itemRender?: (\n item: DropdownMenuItemType,\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /** Additional props to pass to the item */\n itemProps?: React.HTMLAttributes<HTMLElement>;\n /** Class names from parent DropdownMenu */\n classNames?: {\n item?: string;\n itemIcon?: string;\n itemText?: string;\n };\n onSelect?: () => void;\n /**\n * Whether the menu item is in a combobox\n */\n inCombobox?: boolean;\n /**\n * Whether the menu item is in a menu\n */\n renderAsNativeElement?: boolean;\n /**\n * Whether the menu item is selected (for combobox)\n * @default false\n */\n selected?: boolean;\n /**\n * Whether to show checkbox (only for decoration purpose)\n */\n showCheckbox?: boolean;\n /**\n * Whether the menu item checkbox is indeterminate (for combobox)\n * @default false\n */\n indeterminate?: boolean;\n}\n\nexport const DropdownMenuItem: React.FC<DropdownMenuItemProps> = ({\n item,\n inCombobox = false,\n selected = false,\n itemRender,\n itemProps = {},\n classNames,\n onSelect,\n showCheckbox,\n indeterminate,\n renderAsNativeElement,\n}) => {\n const cls = useCls();\n\n const MenuItem = useMemo(\n () => (inCombobox ? Command.Item : Menu.Item),\n [inCombobox]\n );\n\n const props = useMemo(() => {\n return {\n className: clsx(\n cls(\"dropdown-menu-item\", inCombobox && \"dropdown-menu-item-combobox\"),\n classNames?.item,\n item.className\n ),\n disabled: item.disabled,\n \"data-danger\": item.danger,\n \"data-actual-selected\": selected,\n ref: item.ref as Ref<HTMLDivElement>,\n onClick: item.onClick,\n onMouseEnter: item.onMouseEnter,\n onMouseLeave: item.onMouseLeave,\n onMouseOver: item.onMouseOver,\n onMouseOut: item.onMouseOut,\n \"data-value\":\n typeof item.label === \"string\" ? item.label : String(item.key),\n render: itemRender\n ? (itemProps: React.HTMLAttributes<HTMLElement>) =>\n itemRender(item, itemProps)\n : undefined,\n children: inCombobox ? (\n <>\n {showCheckbox && (\n <Checkbox\n checked={selected}\n tabIndex={-1}\n indeterminate={indeterminate}\n />\n )}\n {item.icon && (\n <span\n className={clsx(\n cls(\"dropdown-menu-item-icon\"),\n classNames?.itemIcon\n )}\n >\n {item.icon}\n </span>\n )}\n <span\n className={clsx(\n cls(\"dropdown-menu-item-text\"),\n classNames?.itemText\n )}\n >\n {item.label}\n </span>\n </>\n ) : (\n <>\n {showCheckbox && (\n <Checkbox\n checked={selected}\n tabIndex={-1}\n indeterminate={indeterminate}\n />\n )}\n {item.icon && (\n <span\n className={clsx(\n cls(\"dropdown-menu-item-icon\"),\n classNames?.itemIcon\n )}\n >\n {item.icon}\n </span>\n )}\n <span\n className={clsx(\n cls(\"dropdown-menu-item-text\"),\n classNames?.itemText\n )}\n >\n {item.label}\n </span>\n </>\n ),\n };\n }, [\n classNames?.item,\n classNames?.itemIcon,\n classNames?.itemText,\n cls,\n inCombobox,\n indeterminate,\n item,\n itemRender,\n selected,\n showCheckbox,\n ]);\n // If custom render function is provided, use it\n if (itemRender) {\n return itemRender(item, {\n ...props,\n ...itemProps,\n });\n }\n const { render, ...restProps } = props;\n // Default rendering\n return renderAsNativeElement ? (\n render ? (\n render(props)\n ) : (\n <div onClick={onSelect} {...restProps} />\n )\n ) : (\n <MenuItem\n value={String(item.key)}\n onSelect={onSelect}\n {...props}\n ></MenuItem>\n );\n};\n"],"names":["DropdownMenuItem","item","inCombobox","selected","itemRender","itemProps","classNames","onSelect","showCheckbox","indeterminate","renderAsNativeElement","cls","useCls","MenuItem","useMemo","Command","Menu","props","clsx","jsxs","Fragment","jsx","Checkbox","render","restProps"],"mappings":"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"}
@@ -1 +1 @@
1
- @layer components{.ds-dropdown-menu-root{z-index:2000}.ds-dropdown-menu{box-shadow:var(--ds-box-shadow-secondary);border-radius:var(--ds-border-radius);background:var(--ds-color-bg-elevated);list-style:none;padding:.25rem;color:var(--ds-color-text);font-size:var(--ds-font-size);font-family:var(--ds-font-family);transition-property:transform,scale,opacity;transition-duration:.2s;transition-timing-function:var(--ds-motion-ease-out);transform-origin:var(--transform-origin);max-width:min(var(--size-width),var(--available-width));max-height:var(--available-height);display:flex;flex-direction:column}.ds-dropdown-menu[data-ending-style],.ds-dropdown-menu[data-starting-style]{transform:scale(.9);opacity:0}.ds-dropdown-menu:focus{outline:none}.ds-dropdown-menu .ds-dropdown-menu-container{flex-shrink:1;min-height:0;display:flex;flex-direction:column}.ds-dropdown-menu .ds-dropdown-menu-search{flex-shrink:0}.ds-dropdown-menu .ds-dropdown-menu-list{flex-shrink:1;min-height:0;display:flex;flex-direction:column}.ds-dropdown-menu-item{padding:.375rem .75rem;border-radius:var(--ds-border-radius-sm);transition:all .3s var(--ds-motion-ease-out);cursor:pointer;display:flex;align-items:center}.ds-dropdown-menu-item:focus{outline:none}.ds-dropdown-menu-item:hover{background:var(--ds-control-item-bg-hover)}.ds-dropdown-menu-item:active,.ds-dropdown-menu-item:focus,.ds-dropdown-menu-item[data-focus=true],.ds-dropdown-menu-item[data-selected=true]{background:var(--ds-control-item-bg-active)}.ds-dropdown-menu-item[data-disabled=true]{pointer-events:none;color:var(--ds-color-text-disabled)}.ds-dropdown-menu-item[data-danger=true]{color:var(--ds-color-error)}.ds-dropdown-menu-item[data-danger=true]:hover{background:var(--ds-color-error-bg)}.ds-dropdown-menu-item[data-danger=true]:active,.ds-dropdown-menu-item[data-danger=true]:focus,.ds-dropdown-menu-item[data-danger=true][data-focus=true]{background:var(--ds-color-error-bg-hover)}.ds-dropdown-menu-search{margin-bottom:.25rem}.ds-dropdown-menu-item-icon{display:flex;align-items:center;justify-content:center;margin-right:.5rem;font-size:1rem;color:var(--ds-color-icon)}[data-danger=true] .ds-dropdown-menu-item-icon{color:var(--ds-color-error)}.ds-dropdown-menu-divider{border-bottom:1px solid var(--ds-color-split);margin:.25rem 0}.ds-dropdown-menu-header{font-size:.75rem;font-weight:500;line-height:1rem;text-transform:uppercase;color:var(--ds-color-text-tertiary);padding:.75rem .75rem .25rem}.ds-dropdown-menu-header:first-child{padding-top:.5rem}.ds-dropdown-menu-empty{padding:.375rem .75rem;color:var(--ds-color-text-tertiary)}}
1
+ @layer components{.ds-dropdown-menu-root{z-index:2000}.ds-dropdown-menu{box-shadow:var(--ds-box-shadow-secondary);border-radius:var(--ds-border-radius);background:var(--ds-color-bg-elevated);list-style:none;padding:.25rem;color:var(--ds-color-text);font-size:var(--ds-font-size);font-family:var(--ds-font-family);transition-property:transform,scale,opacity;transition-duration:.2s;transition-timing-function:var(--ds-motion-ease-out);transform-origin:var(--transform-origin);max-width:min(var(--size-width),var(--available-width));max-height:var(--available-height);display:flex;flex-direction:column}.ds-dropdown-menu[data-ending-style],.ds-dropdown-menu[data-starting-style]{transform:scale(.9);opacity:0}.ds-dropdown-menu:focus{outline:none}.ds-dropdown-menu .ds-dropdown-menu-container{flex-shrink:1;min-height:0;display:flex;flex-direction:column}.ds-dropdown-menu .ds-dropdown-menu-search{flex-shrink:0}.ds-dropdown-menu .ds-dropdown-menu-list,.ds-dropdown-menu .ds-dropdown-menu-list [cmdk-list-sizer]{flex-shrink:1;min-height:0;display:flex;flex-direction:column}.ds-dropdown-menu-search{margin-bottom:.25rem}.ds-dropdown-menu-divider{border-bottom:1px solid var(--ds-color-split);margin:.25rem 0}.ds-dropdown-menu-header{font-size:.75rem;font-weight:500;line-height:1rem;text-transform:uppercase;color:var(--ds-color-text-tertiary);padding:.75rem .75rem .25rem}.ds-dropdown-menu-header:first-child{padding-top:.5rem}.ds-dropdown-menu-empty{padding:.375rem .75rem;color:var(--ds-color-text-tertiary)}.ds-dropdown-menu-match-trigger-width{width:min(var(--anchor-width),var(--available-width))}}
@@ -1,22 +1,27 @@
1
1
  "use client";
2
- import { jsx as r, jsxs as p } from "react/jsx-runtime";
3
- import { ThemeProvider as l } from "../theme-provider/component.js";
4
- import { Modal as n } from "../modal/index.js";
5
- import c from "antd/es/app/App";
6
- import { DSRootContextProvider as s } from "./context.js";
2
+ import { jsx as o, jsxs as p } from "react/jsx-runtime";
3
+ import { ThemeProvider as c } from "../theme-provider/component.js";
4
+ import { Modal as d } from "../modal/index.js";
5
+ import n from "antd/es/app/App";
6
+ import { DSRootContextProvider as f } from "./context.js";
7
7
  import './style.css';/* empty css */
8
- import { Toast as i } from "../toast/component.js";
9
- const j = ({
10
- className: t,
11
- appendClassesTo: e = "html",
12
- children: m,
13
- theme: o,
14
- ...d
15
- }) => /* @__PURE__ */ r(s, { value: { theme: o }, children: /* @__PURE__ */ r(l, { theme: o, ...d, appendClassesTo: e, children: /* @__PURE__ */ r(c, { className: t, children: /* @__PURE__ */ r(i.Provider, { children: /* @__PURE__ */ p(n.Provider, { children: [
16
- /* @__PURE__ */ r(i.List, {}),
17
- m
18
- ] }) }) }) }) });
8
+ import { Toast as t } from "../toast/component.js";
9
+ import { useCls as a } from "../utils/antdUtils.js";
10
+ import { clsx as h } from "../utils/cn.js";
11
+ const T = ({
12
+ className: i,
13
+ appendClassesTo: m = "html",
14
+ children: e,
15
+ theme: r,
16
+ ...s
17
+ }) => {
18
+ const l = a();
19
+ return /* @__PURE__ */ o(f, { value: { theme: r }, children: /* @__PURE__ */ o(c, { theme: r, ...s, appendClassesTo: m, children: /* @__PURE__ */ o(t.Provider, { children: /* @__PURE__ */ p(d.Provider, { children: [
20
+ /* @__PURE__ */ o(t.List, {}),
21
+ /* @__PURE__ */ o(n, { className: h(l("root"), i), children: e })
22
+ ] }) }) }) });
23
+ };
19
24
  export {
20
- j as DSRoot
25
+ T as DSRoot
21
26
  };
22
27
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/ds-root/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n ThemeProvider,\n type ThemeProviderProps,\n} from \"../theme-provider/component\";\nimport { Toast } from \"../toast\";\nimport { Modal } from \"../modal\";\nimport App from \"antd/es/app/App\";\nimport { DSRootContextProvider } from \"./context\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface DSRootProps extends ThemeProviderProps {\n /**\n * Classname passed to App component\n */\n className?: string;\n\n /**\n * Element to which the theme classes are appended\n * @default \"html\"\n */\n appendClassesTo?: string | HTMLElement;\n}\n\nexport const DSRoot = ({\n className,\n appendClassesTo = \"html\",\n children,\n theme,\n ...props\n}: DSRootProps) => {\n return (\n <DSRootContextProvider value={{ theme: theme }}>\n <ThemeProvider theme={theme} {...props} appendClassesTo={appendClassesTo}>\n <App className={className}>\n <Toast.Provider>\n <Modal.Provider>\n <Toast.List />\n {children}\n </Modal.Provider>\n </Toast.Provider>\n </App>\n </ThemeProvider>\n </DSRootContextProvider>\n );\n};\n"],"names":["DSRoot","className","appendClassesTo","children","theme","props","jsx","DSRootContextProvider","ThemeProvider","App","Toast","jsxs","Modal"],"mappings":";;;;;;;;AA0BO,MAAMA,IAAS,CAAC;AAAA,EACrB,WAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC,EAACC,KAAsB,OAAO,EAAE,OAAAH,EAC9B,GAAA,UAAA,gBAAAE,EAACE,GAAc,EAAA,OAAAJ,GAAe,GAAGC,GAAO,iBAAAH,GACtC,UAAC,gBAAAI,EAAAG,GAAA,EAAI,WAAAR,GACH,UAAC,gBAAAK,EAAAI,EAAM,UAAN,EACC,UAAA,gBAAAC,EAACC,EAAM,UAAN,EACC,UAAA;AAAA,EAAC,gBAAAN,EAAAI,EAAM,MAAN,EAAW;AAAA,EACXP;AACH,EAAA,CAAA,EACF,CAAA,GACF,EAAA,CACF,EACF,CAAA;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/ds-root/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n ThemeProvider,\n type ThemeProviderProps,\n} from \"../theme-provider/component\";\nimport { Toast } from \"../toast\";\nimport { Modal } from \"../modal\";\nimport App from \"antd/es/app/App\";\nimport { DSRootContextProvider } from \"./context\";\nimport { useCls, clsx } from \"../utils\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface DSRootProps extends ThemeProviderProps {\n /**\n * Classname passed to App component\n */\n className?: string;\n\n /**\n * Element to which the theme classes are appended\n * @default \"html\"\n */\n appendClassesTo?: string | HTMLElement;\n}\n\nexport const DSRoot = ({\n className,\n appendClassesTo = \"html\",\n children,\n theme,\n ...props\n}: DSRootProps) => {\n const cls = useCls();\n return (\n <DSRootContextProvider value={{ theme: theme }}>\n <ThemeProvider theme={theme} {...props} appendClassesTo={appendClassesTo}>\n <Toast.Provider>\n <Modal.Provider>\n <Toast.List />\n <App className={clsx(cls(\"root\"), className)}>{children}</App>\n </Modal.Provider>\n </Toast.Provider>\n </ThemeProvider>\n </DSRootContextProvider>\n );\n};\n"],"names":["DSRoot","className","appendClassesTo","children","theme","props","cls","useCls","DSRootContextProvider","ThemeProvider","Toast","jsxs","Modal","jsx","App","clsx"],"mappings":";;;;;;;;;;AA2BO,MAAMA,IAAS,CAAC;AAAA,EACrB,WAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAmB;AACjB,QAAMC,IAAMC,EAAO;AACnB,2BACGC,GAAsB,EAAA,OAAO,EAAE,OAAAJ,KAC9B,4BAACK,GAAc,EAAA,OAAAL,GAAe,GAAGC,GAAO,iBAAAH,GACtC,4BAACQ,EAAM,UAAN,EACC,UAAC,gBAAAC,EAAAC,EAAM,UAAN,EACC,UAAA;AAAA,IAAC,gBAAAC,EAAAH,EAAM,MAAN,EAAW;AAAA,IACZ,gBAAAG,EAACC,KAAI,WAAWC,EAAKT,EAAI,MAAM,GAAGL,CAAS,GAAI,UAAAE,EAAS,CAAA;AAAA,EAAA,GAC1D,EAAA,CACF,EACF,CAAA,GACF;AAEJ;"}
@@ -1 +1 @@
1
- @layer base{body{margin:0;padding:0}a[href],button:not(:disabled){cursor:pointer}svg{vertical-align:baseline}}@layer components{.ds-root{display:contents}@supports (scrollbar-width: auto){*{scrollbar-color:var(--ds-scrollbar-color-thumb) var(--ds-scrollbar-color-track);scrollbar-width:var(--ds-scrollbar-width)}}@supports selector(::-webkit-scrollbar){*::-webkit-scrollbar-thumb{background:var(--ds-scrollbar-color-thumb)}*::-webkit-scrollbar-track{background:var(--ds-scrollbar-color-track)}*::-webkit-scrollbar{max-width:var(--ds-scrollbar-width-legacy);max-height:var(--ds-scrollbar-width-legacy)}}}
1
+ @layer base{body{margin:0;padding:0}html{overflow:hidden}a[href],button:not(:disabled){cursor:pointer}svg{vertical-align:baseline}}@layer components{.ds-root{isolation:isolate}@supports (scrollbar-width: auto){*{scrollbar-color:var(--ds-scrollbar-color-thumb) var(--ds-scrollbar-color-track);scrollbar-width:var(--ds-scrollbar-width)}}@supports selector(::-webkit-scrollbar){*::-webkit-scrollbar-thumb{background:var(--ds-scrollbar-color-thumb)}*::-webkit-scrollbar-track{background:var(--ds-scrollbar-color-track)}*::-webkit-scrollbar{max-width:var(--ds-scrollbar-width-legacy);max-height:var(--ds-scrollbar-width-legacy)}}}
@@ -1 +1 @@
1
- @layer components{.ds-form-item-label-inner{display:inline-flex;align-items:center;gap:.25rem}.ds-form-item-label-optional-mark{color:var(--ds-color-text-tertiary)}:is(.ds-form-item-label>label.ds-form-item-required):after{display:none}:is(.ds-form-item-label>label.ds-form-item-required):before{display:none}.ds-form-item-label-required-mark{display:inline-block;font-size:var(--ds-font-size);font-family:Inter,sans-serif;line-height:1;content:"*"}.ds-form-item-label-required-mark.ds-form-item-label-required-mark-asterisk{color:var(--ds-form-label-required-mark-color)}.ds-form-item .ds-form-item-label>label:after{display:none}.ds-form-horizontal .ds-form-item .ds-form-item-label .ds-form-item-label-inner:after{content:":";position:relative;margin-block:0;margin-inline-start:var(--ds-form-label-colon-margin-inline-start);margin-inline-end:var(--ds-form-label-colon-margin-inline-end)}.ds-form-item-explain{margin-top:.25rem}.ds-form-item-margin-offset{margin:0!important}.ds-form-item-label{overflow:visible}.ds-form-item-row .ds-form-item-label label{width:100%}}
1
+ @layer components{.ds-form-item-label-inner{display:inline-flex;align-items:center;gap:.25rem}.ds-form-item-label-optional-mark{color:var(--ds-color-text-tertiary)}.ds-form-item-label>label.ds-form-item-required:after{display:none}.ds-form-item-label>label.ds-form-item-required:before{display:none}.ds-form-item-label-required-mark{display:inline-block;font-size:var(--ds-font-size);font-family:Inter,sans-serif;line-height:1;content:"*"}.ds-form-item-label-required-mark.ds-form-item-label-required-mark-asterisk{color:var(--ds-form-label-required-mark-color)}.ds-form-item .ds-form-item-label>label:after{display:none}.ds-form-horizontal .ds-form-item .ds-form-item-label .ds-form-item-label-inner:after{content:":";position:relative;margin-block:0;margin-inline-start:var(--ds-form-label-colon-margin-inline-start);margin-inline-end:var(--ds-form-label-colon-margin-inline-end)}.ds-form-item-explain{margin-top:.25rem}.ds-form-item-margin-offset{margin:0!important}.ds-form-item-label{overflow:visible}.ds-form-item-row .ds-form-item-label label{width:100%}}
@@ -0,0 +1,77 @@
1
+ "use client";
2
+ import { useCallback as H } from "react";
3
+ function T(d = !0) {
4
+ return { ref: H((n) => {
5
+ if (!n || !d) return;
6
+ let i = !1, m = 0, f = 0, v = 0, p = 0, o = null;
7
+ n.addEventListener("mousedown", h);
8
+ function z(t) {
9
+ var s, c;
10
+ let e = t;
11
+ for (; e && e !== n; ) {
12
+ if (e.classList.contains("resize-handle") || e.classList.contains("ds-resizable-resize-handle") || e.getAttribute("data-resize-handle") || (s = e.getAttribute("data-testid")) != null && s.includes("resize") || e.getAttribute("data-placement") || // Resizable handles have data-placement
13
+ (c = e.style.cursor) != null && c.includes("resize") || // Check for react-use-resizable specific classes/attributes
14
+ e.classList.contains("resizable-handle") || e.hasAttribute("data-resizable-handle") || // Check for common resize cursor styles
15
+ ["n-resize", "s-resize", "e-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize"].includes(e.style.cursor))
16
+ return !0;
17
+ e = e.parentElement;
18
+ }
19
+ return !1;
20
+ }
21
+ function y(t) {
22
+ const e = window.getComputedStyle(t), s = new DOMMatrix(e.transform);
23
+ return {
24
+ x: s.m41 || parseInt(e.left) || 0,
25
+ y: s.m42 || parseInt(e.top) || 0
26
+ };
27
+ }
28
+ function L(t, e, s) {
29
+ t.style.transform = `translate(${e}px, ${s}px)`;
30
+ }
31
+ function h(t) {
32
+ const e = t.target;
33
+ if (z(e))
34
+ return;
35
+ if (n.closest("[data-resizable]")) {
36
+ const r = n.getBoundingClientRect(), E = t.clientX - r.left, b = t.clientY - r.top, l = 8, w = b <= l, x = b >= r.height - l, S = E <= l, A = E >= r.width - l, D = n.querySelector('.ds-resizable-resize-handle[data-placement*="top"]'), X = n.querySelector('.ds-resizable-resize-handle[data-placement*="bottom"]'), Y = n.querySelector('.ds-resizable-resize-handle[data-placement*="left"]'), q = n.querySelector('.ds-resizable-resize-handle[data-placement*="right"]');
37
+ if (w && D || x && X || S && Y || A && q)
38
+ return;
39
+ }
40
+ t.preventDefault(), t.stopPropagation(), i = !0, m = t.clientX, f = t.clientY;
41
+ const s = y(n);
42
+ v = s.x, p = s.y, document.body.style.cursor = "grabbing", document.body.style.userSelect = "none", n.querySelectorAll('button, a, input, select, textarea, [role="button"]').forEach((r) => {
43
+ r.style.pointerEvents = "auto";
44
+ }), document.addEventListener("mousemove", u, { passive: !1 }), document.addEventListener("mouseup", a), document.addEventListener("touchmove", g, { passive: !1 }), document.addEventListener("touchend", a);
45
+ }
46
+ function u(t) {
47
+ !i || !n || (t.preventDefault(), o && cancelAnimationFrame(o), o = requestAnimationFrame(() => {
48
+ const e = t.clientX - m, s = t.clientY - f, c = v + e, r = p + s;
49
+ L(n, c, r);
50
+ }));
51
+ }
52
+ function g(t) {
53
+ if (!i || !n) return;
54
+ t.preventDefault();
55
+ const e = t.touches[0];
56
+ if (!e) return;
57
+ const s = new MouseEvent("mousemove", {
58
+ clientX: e.clientX,
59
+ clientY: e.clientY,
60
+ bubbles: !0
61
+ });
62
+ u(s);
63
+ }
64
+ function a() {
65
+ i && (i = !1, o && (cancelAnimationFrame(o), o = null), document.body.style.cursor = "", document.body.style.userSelect = "", n && n.querySelectorAll('button, a, input, select, textarea, [role="button"]').forEach((e) => {
66
+ e.style.pointerEvents = "";
67
+ }), document.removeEventListener("mousemove", u), document.removeEventListener("mouseup", a), document.removeEventListener("touchmove", g), document.removeEventListener("touchend", a));
68
+ }
69
+ return () => {
70
+ n.removeEventListener("mousedown", h), a();
71
+ };
72
+ }, [d]) };
73
+ }
74
+ export {
75
+ T as useDraggable
76
+ };
77
+ //# sourceMappingURL=useDraggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraggable.js","sources":["../../../src/components/hooks/useDraggable.ts"],"sourcesContent":["\"use client\";\nimport { useCallback } from \"react\";\n\nexport function useDraggable(enabled: boolean = true) {\n const ref = useCallback((element: HTMLElement | null) => {\n if (!element || !enabled) return;\n \n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialLeft = 0;\n let initialTop = 0;\n let rafId: number | null = null;\n\n element.addEventListener(\"mousedown\", dragMouseDown);\n\n function isResizeHandle(target: HTMLElement): boolean {\n // Check if the element or any of its parents is a resize handle\n let current = target;\n while (current && current !== element) {\n // Check for various resize handle indicators\n if (\n current.classList.contains('resize-handle') ||\n current.classList.contains('ds-resizable-resize-handle') ||\n current.getAttribute('data-resize-handle') ||\n current.getAttribute('data-testid')?.includes('resize') ||\n current.getAttribute('data-placement') || // Resizable handles have data-placement\n current.style.cursor?.includes('resize') ||\n // Check for react-use-resizable specific classes/attributes\n current.classList.contains('resizable-handle') ||\n current.hasAttribute('data-resizable-handle') ||\n // Check for common resize cursor styles\n ['n-resize', 's-resize', 'e-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize'].includes(current.style.cursor)\n ) {\n return true;\n }\n current = current.parentElement as HTMLElement;\n }\n return false;\n }\n\n function getElementPosition(el: HTMLElement) {\n const style = window.getComputedStyle(el);\n const matrix = new DOMMatrix(style.transform);\n return {\n x: matrix.m41 || parseInt(style.left) || 0,\n y: matrix.m42 || parseInt(style.top) || 0\n };\n }\n\n function setElementPosition(el: HTMLElement, x: number, y: number) {\n // Use transform for better performance and smoother animation\n el.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n function dragMouseDown(e: MouseEvent) {\n const target = e.target as HTMLElement;\n \n // Check if the click is on a resize handle\n if (isResizeHandle(target)) {\n return; // Don't start dragging\n }\n \n // Let resize handles take priority - if we reach this point and there's a resizable container,\n // we should check if there are actual resize handles present before preventing drag\n if (element.closest('[data-resizable]')) {\n const rect = element.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const handleSize = 8;\n \n // Only prevent drag if we're near an edge AND there are actual resize handles\n const nearTopEdge = y <= handleSize;\n const nearBottomEdge = y >= rect.height - handleSize;\n const nearLeftEdge = x <= handleSize;\n const nearRightEdge = x >= rect.width - handleSize;\n \n // Check if resize handles exist for the edges we're near\n const hasTopHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"top\"]');\n const hasBottomHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"bottom\"]');\n const hasLeftHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"left\"]');\n const hasRightHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"right\"]');\n \n if (\n (nearTopEdge && hasTopHandle) ||\n (nearBottomEdge && hasBottomHandle) ||\n (nearLeftEdge && hasLeftHandle) ||\n (nearRightEdge && hasRightHandle)\n ) {\n return; // Let resize handle it\n }\n }\n \n e.preventDefault();\n e.stopPropagation();\n \n isDragging = true;\n \n // Store initial mouse position\n startX = e.clientX;\n startY = e.clientY;\n \n // Get initial element position\n const pos = getElementPosition(element);\n initialLeft = pos.x;\n initialTop = pos.y;\n \n // Set initial cursor style and prevent text selection\n document.body.style.cursor = 'grabbing';\n document.body.style.userSelect = 'none';\n \n // Only disable pointer events on content areas, not buttons/interactive elements\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = 'auto';\n });\n \n // Add move and up listeners\n document.addEventListener(\"mousemove\", elementDrag, { passive: false });\n document.addEventListener(\"mouseup\", closeDragElement);\n \n // Add touch events for mobile support\n document.addEventListener(\"touchmove\", handleTouchMove, { passive: false });\n document.addEventListener(\"touchend\", closeDragElement);\n }\n\n function elementDrag(e: MouseEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n // Cancel any previous animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n \n // Use requestAnimationFrame for smooth animation\n rafId = requestAnimationFrame(() => {\n const deltaX = e.clientX - startX;\n const deltaY = e.clientY - startY;\n \n const newX = initialLeft + deltaX;\n const newY = initialTop + deltaY;\n \n // Apply position directly without bounds checking\n setElementPosition(element, newX, newY);\n });\n }\n\n function handleTouchMove(e: TouchEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n const touch = e.touches[0];\n if (!touch) return;\n \n // Convert touch event to mouse-like event\n const mouseEvent = new MouseEvent('mousemove', {\n clientX: touch.clientX,\n clientY: touch.clientY,\n bubbles: true\n });\n \n elementDrag(mouseEvent);\n }\n\n function closeDragElement() {\n if (!isDragging) return;\n \n isDragging = false;\n \n // Cancel any pending animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n \n // Restore styles\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n \n // Restore pointer events for interactive elements\n if (element) {\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = '';\n });\n }\n \n // Remove event listeners\n document.removeEventListener(\"mousemove\", elementDrag);\n document.removeEventListener(\"mouseup\", closeDragElement);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", closeDragElement);\n }\n\n // Cleanup function\n return () => {\n element.removeEventListener(\"mousedown\", dragMouseDown);\n closeDragElement();\n };\n }, [enabled]);\n \n return { ref };\n}\n"],"names":["useDraggable","enabled","useCallback","element","isDragging","startX","startY","initialLeft","initialTop","rafId","dragMouseDown","isResizeHandle","target","current","_a","_b","getElementPosition","el","style","matrix","setElementPosition","x","y","e","rect","handleSize","nearTopEdge","nearBottomEdge","nearLeftEdge","nearRightEdge","hasTopHandle","hasBottomHandle","hasLeftHandle","hasRightHandle","pos","elementDrag","closeDragElement","handleTouchMove","deltaX","deltaY","newX","newY","touch","mouseEvent"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { useState as v, useRef as E, useCallback as n } from "react";
3
+ function l() {
4
+ const [c, u] = v(!1), t = E(null), r = n(() => {
5
+ u(!0);
6
+ }, []), s = n(() => {
7
+ u(!1);
8
+ }, []);
9
+ return [n(
10
+ (e) => {
11
+ var o;
12
+ ((o = t.current) == null ? void 0 : o.nodeType) === Node.ELEMENT_NODE && (t.current.removeEventListener(
13
+ "mouseenter",
14
+ r
15
+ ), t.current.removeEventListener(
16
+ "mouseleave",
17
+ s
18
+ )), (e == null ? void 0 : e.nodeType) === Node.ELEMENT_NODE && (e.addEventListener("mouseenter", r), e.addEventListener("mouseleave", s)), t.current = e;
19
+ },
20
+ [r, s]
21
+ ), c];
22
+ }
23
+ export {
24
+ l as useHover
25
+ };
26
+ //# sourceMappingURL=useHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHover.js","sources":["../../../src/components/hooks/useHover.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef } from \"react\";\n\nexport function useHover<T extends HTMLElement>(): [\n (node: T) => void,\n boolean\n] {\n const [hovering, setHovering] = useState(false);\n const previousNode = useRef(null);\n\n const handleMouseEnter = useCallback(() => {\n setHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovering(false);\n }, []);\n\n const customRef = useCallback(\n (node: T) => {\n if (previousNode.current?.nodeType === Node.ELEMENT_NODE) {\n previousNode.current.removeEventListener(\n \"mouseenter\",\n handleMouseEnter\n );\n previousNode.current.removeEventListener(\n \"mouseleave\",\n handleMouseLeave\n );\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n\n previousNode.current = node;\n },\n [handleMouseEnter, handleMouseLeave]\n );\n\n return [customRef, hovering];\n}\n"],"names":["useHover","hovering","setHovering","useState","previousNode","useRef","handleMouseEnter","useCallback","handleMouseLeave","node","_a"],"mappings":";;AAIO,SAASA,IAGd;AACA,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAeC,EAAO,IAAI,GAE1BC,IAAmBC,EAAY,MAAM;AACzC,IAAAL,EAAY,EAAI;AAAA,EAClB,GAAG,EAAE,GAECM,IAAmBD,EAAY,MAAM;AACzC,IAAAL,EAAY,EAAK;AAAA,EACnB,GAAG,EAAE;AAyBE,SAAA,CAvBWK;AAAA,IAChB,CAACE,MAAY;;AACX,QAAIC,IAAAN,EAAa,YAAb,gBAAAM,EAAsB,cAAa,KAAK,iBAC1CN,EAAa,QAAQ;AAAA,QACnB;AAAA,QACAE;AAAA,MACF,GACAF,EAAa,QAAQ;AAAA,QACnB;AAAA,QACAI;AAAA,MACF,KAGEC,KAAA,gBAAAA,EAAM,cAAa,KAAK,iBACrBA,EAAA,iBAAiB,cAAcH,CAAgB,GAC/CG,EAAA,iBAAiB,cAAcD,CAAgB,IAGtDJ,EAAa,UAAUK;AAAA,IACzB;AAAA,IACA,CAACH,GAAkBE,CAAgB;AAAA,EACrC,GAEmBP,CAAQ;AAC7B;"}
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import * as c from "react";
3
+ import * as m from "react-dom";
4
+ import { useIsoLayoutEffect as e } from "@base-ui-components/utils/useIsoLayoutEffect";
5
+ import { AnimationFrame as u } from "@base-ui-components/utils/useAnimationFrame";
6
+ function g(t, n = !1, f = !1) {
7
+ const [r, s] = c.useState(
8
+ t && n ? "idle" : void 0
9
+ ), [i, a] = c.useState(t);
10
+ return t && !i && (a(!0), s("starting")), !t && i && r !== "ending" && !f && s("ending"), !t && !i && r === "ending" && s(void 0), e(() => {
11
+ if (!t && i && r !== "ending" && f) {
12
+ const o = u.request(() => {
13
+ s("ending");
14
+ });
15
+ return () => {
16
+ u.cancel(o);
17
+ };
18
+ }
19
+ }, [t, i, r, f]), e(() => {
20
+ if (!t || n)
21
+ return;
22
+ const o = u.request(() => {
23
+ m.flushSync(() => {
24
+ s(void 0);
25
+ });
26
+ });
27
+ return () => {
28
+ u.cancel(o);
29
+ };
30
+ }, [n, t]), e(() => {
31
+ if (!t || !n)
32
+ return;
33
+ t && i && r !== "idle" && s("starting");
34
+ const o = u.request(() => {
35
+ s("idle");
36
+ });
37
+ return () => {
38
+ u.cancel(o);
39
+ };
40
+ }, [n, t, i, s, r]), c.useMemo(
41
+ () => ({
42
+ mounted: i,
43
+ setMounted: a,
44
+ transitionStatus: r
45
+ }),
46
+ [i, r]
47
+ );
48
+ }
49
+ export {
50
+ g as useTransitionStatus
51
+ };
52
+ //# sourceMappingURL=useTransitionStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTransitionStatus.js","sources":["../../../src/components/hooks/useTransitionStatus.ts"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { useIsoLayoutEffect } from \"@base-ui-components/utils/useIsoLayoutEffect\";\nimport { AnimationFrame } from \"@base-ui-components/utils/useAnimationFrame\";\n\nexport type TransitionStatus = \"starting\" | \"ending\" | \"idle\" | undefined;\n\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(\n open: boolean,\n enableIdleState: boolean = false,\n deferEndingState: boolean = false\n) {\n const [transitionStatus, setTransitionStatus] =\n React.useState<TransitionStatus>(\n open && enableIdleState ? \"idle\" : undefined\n );\n const [mounted, setMounted] = React.useState(open);\n\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus(\"starting\");\n }\n\n if (!open && mounted && transitionStatus !== \"ending\" && !deferEndingState) {\n setTransitionStatus(\"ending\");\n }\n\n if (!open && !mounted && transitionStatus === \"ending\") {\n setTransitionStatus(undefined);\n }\n\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== \"ending\" && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"ending\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n\n const frame = AnimationFrame.request(() => {\n ReactDOM.flushSync(() => {\n setTransitionStatus(undefined);\n });\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n\n if (open && mounted && transitionStatus !== \"idle\") {\n setTransitionStatus(\"starting\");\n }\n\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"idle\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, setTransitionStatus, transitionStatus]);\n\n return React.useMemo(\n () => ({\n mounted,\n setMounted,\n transitionStatus,\n }),\n [mounted, transitionStatus]\n );\n}\n"],"names":["useTransitionStatus","open","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","React","mounted","setMounted","useIsoLayoutEffect","frame","AnimationFrame","ReactDOM"],"mappings":";;;;;AAaO,SAASA,EACdC,GACAC,IAA2B,IAC3BC,IAA4B,IAC5B;AACA,QAAM,CAACC,GAAkBC,CAAmB,IAC1CC,EAAM;AAAA,IACJL,KAAQC,IAAkB,SAAS;AAAA,EACrC,GACI,CAACK,GAASC,CAAU,IAAIF,EAAM,SAASL,CAAI;AAE7C,SAAAA,KAAQ,CAACM,MACXC,EAAW,EAAI,GACfH,EAAoB,UAAU,IAG5B,CAACJ,KAAQM,KAAWH,MAAqB,YAAY,CAACD,KACxDE,EAAoB,QAAQ,GAG1B,CAACJ,KAAQ,CAACM,KAAWH,MAAqB,YAC5CC,EAAoB,MAAS,GAG/BI,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQM,KAAWH,MAAqB,YAAYD,GAAkB;AACnE,YAAAO,IAAQC,EAAe,QAAQ,MAAM;AACzC,QAAAN,EAAoB,QAAQ;AAAA,MAAA,CAC7B;AAED,aAAO,MAAM;AACX,QAAAM,EAAe,OAAOD,CAAK;AAAA,MAC7B;AAAA,IAAA;AAAA,KAID,CAACT,GAAMM,GAASH,GAAkBD,CAAgB,CAAC,GAEtDM,EAAmB,MAAM;AACnB,QAAA,CAACR,KAAQC;AACJ;AAGH,UAAAQ,IAAQC,EAAe,QAAQ,MAAM;AACzC,MAAAC,EAAS,UAAU,MAAM;AACvB,QAAAP,EAAoB,MAAS;AAAA,MAAA,CAC9B;AAAA,IAAA,CACF;AAED,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EAAA,GACC,CAACR,GAAiBD,CAAI,CAAC,GAE1BQ,EAAmB,MAAM;AACnB,QAAA,CAACR,KAAQ,CAACC;AACL;AAGL,IAAAD,KAAQM,KAAWH,MAAqB,UAC1CC,EAAoB,UAAU;AAG1B,UAAAK,IAAQC,EAAe,QAAQ,MAAM;AACzC,MAAAN,EAAoB,MAAM;AAAA,IAAA,CAC3B;AAED,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EAAA,GACC,CAACR,GAAiBD,GAAMM,GAASF,GAAqBD,CAAgB,CAAC,GAEnEE,EAAM;AAAA,IACX,OAAO;AAAA,MACL,SAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAJ;AAAA,IAAA;AAAA,IAEF,CAACG,GAASH,CAAgB;AAAA,EAC5B;AACF;"}
@@ -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}:is(.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))}:is(.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}:is(.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}:is(.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}:is(.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%}:is(.ds-modal-no-body-scroll .ds-modal) .ds-modal-body{overflow:hidden;display:grid}:is(:is(.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%}:is(.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)}:is(.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)}:is(.ds-modal-fixed .ds-modal) .ds-modal-close{top:8px}:is(.ds-modal-content-overflow .ds-modal) .ds-modal-inner{margin-top: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))}.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}}
@@ -29,8 +29,8 @@ const R = (e) => N(e), j = ({
29
29
  },
30
30
  state: { active: r, icon: e }
31
31
  });
32
- }, F = u(j);
32
+ }, C = u(j);
33
33
  export {
34
- F as NavItem
34
+ C as NavItem
35
35
  };
36
36
  //# sourceMappingURL=item.js.map
@@ -1 +1 @@
1
- @layer components{.ds-nav-group{display:flex;flex-direction:column;gap:.25rem}.ds-nav-item{width:100%;display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;font-size:1.25rem;color:var(--ds-color-icon);background:transparent;border-radius:var(--ds-border-radius);transition:background-color var(--ds-motion-duration-mid),color var(--ds-motion-duration-mid)}.ds-nav-item:hover{background-color:var(--ds-color-fill-tertiary);color:var(--ds-color-icon-hover)}.ds-nav-item[data-active=true]{background-color:var(--ds-color-fill-secondary);color:var(--ds-color-text);font-weight:500}.ds-nav-item[aria-expanded=true]{background-color:var(--ds-color-fill-secondary);color:var(--ds-color-text)}.ds-nav-item:disabled{background:transparent;color:var(--ds-color-text-disabled);cursor:not-allowed}.ds-nav-item .ds-nav-item-icon{font-size:1.25rem;line-height:1;transition:all .1s}.ds-nav-item .ds-nav-item-content{flex:1;display:flex;align-items:center;white-space:nowrap;overflow:hidden;font-size:.875rem;line-height:1rem;transition:max-width .15s,opacity .15s}.ds-nav-small .ds-nav-item,.ds-nav-item.ds-nav-item-small{padding:.25rem .5rem}:is(.ds-nav-small .ds-nav-item,.ds-nav-item.ds-nav-item-small) .ds-nav-item-icon{font-size:1rem}.ds-nav-large .ds-nav-item,.ds-nav-item.ds-nav-item-large{padding:.5rem 1rem}:is(.ds-nav-large .ds-nav-item,.ds-nav-item.ds-nav-item-large) .ds-nav-item-icon{font-size:1.5rem}:is(.ds-nav-large .ds-nav-item,.ds-nav-item.ds-nav-item-large) .ds-nav-item-content{font-size:1rem;line-height:1.5rem}.ds-nav-heading{width:100%;height:.875rem;position:relative;color:var(--ds-color-text-tertiary);text-transform:uppercase;font-weight:500;letter-spacing:.002em;font-size:.75rem;line-height:1rem;margin-bottom:.5rem}.ds-nav-small .ds-nav-heading{font-size:.625rem;line-height:1.4}.ds-nav-heading-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;position:absolute;transition:all .1s;white-space:nowrap}}
1
+ @layer components{.ds-nav-group{display:flex;flex-direction:column;gap:.25rem}.ds-nav-item{width:100%;display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;font-size:1.25rem;color:var(--ds-color-icon);background:transparent;border-radius:var(--ds-border-radius);transition:background-color var(--ds-motion-duration-mid),color var(--ds-motion-duration-mid)}.ds-nav-item:hover{background-color:var(--ds-color-fill-tertiary);color:var(--ds-color-icon-hover)}.ds-nav-item[data-active=true]{background-color:var(--ds-color-fill-secondary);color:var(--ds-color-text);font-weight:500}.ds-nav-item[aria-expanded=true]{background-color:var(--ds-color-fill-secondary);color:var(--ds-color-text)}.ds-nav-item:disabled{background:transparent;color:var(--ds-color-text-disabled);cursor:not-allowed}.ds-nav-item .ds-nav-item-icon{font-size:1.25rem;line-height:1;transition:all .1s}.ds-nav-item .ds-nav-item-content{flex:1;display:flex;align-items:center;white-space:nowrap;overflow:hidden;font-size:.875rem;line-height:1rem;transition:max-width .15s,opacity .15s}.ds-nav-small .ds-nav-item,.ds-nav-item.ds-nav-item-small{padding:.25rem .5rem}.ds-nav-small .ds-nav-item .ds-nav-item-icon,.ds-nav-item.ds-nav-item-small .ds-nav-item-icon{font-size:1rem}.ds-nav-large .ds-nav-item,.ds-nav-item.ds-nav-item-large{padding:.5rem 1rem}.ds-nav-large .ds-nav-item .ds-nav-item-icon,.ds-nav-item.ds-nav-item-large .ds-nav-item-icon{font-size:1.5rem}.ds-nav-large .ds-nav-item .ds-nav-item-content,.ds-nav-item.ds-nav-item-large .ds-nav-item-content{font-size:1rem;line-height:1.5rem}.ds-nav-heading{width:100%;height:.875rem;position:relative;color:var(--ds-color-text-tertiary);text-transform:uppercase;font-weight:500;letter-spacing:.002em;font-size:.75rem;line-height:1rem;margin-bottom:.5rem}.ds-nav-small .ds-nav-heading{font-size:.625rem;line-height:1.4}.ds-nav-heading-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;position:absolute;transition:all .1s;white-space:nowrap}}
@@ -1,66 +1,70 @@
1
1
  "use client";
2
2
  import { jsx as t, jsxs as f } from "react/jsx-runtime";
3
3
  import { Popover as o } from "@base-ui-components/react/popover";
4
- import { useMemo as L, useRef as C, useState as Q, useEffect as W, useCallback as Y } from "react";
5
- import { X as Z } from "@bioturing/assets";
6
- import { PopupPanelSize as _ } from "./constants.js";
7
- import { Stack as B } from "../stack/index.js";
4
+ import { useMemo as _, useRef as A, useState as B, useEffect as m, useCallback as a } from "react";
5
+ import { X as N } from "@bioturing/assets";
6
+ import { PopupPanelSize as s } from "./constants.js";
7
+ import { Stack as ee } from "../stack/index.js";
8
8
  import './style.css';/* empty css */
9
- import { parseAntdPlacement as m, buildAntdPlacement as a } from "../utils/placement.js";
10
- import { Resizable as N } from "../resizable/component.js";
11
- import { useControlledState as s } from "../hooks/useControlledState.js";
12
- import { useCls as ee } from "../utils/antdUtils.js";
9
+ import { parseAntdPlacement as te, buildAntdPlacement as re } from "../utils/placement.js";
10
+ import { useDraggable as ne } from "../hooks/useDraggable.js";
11
+ import { Resizable as ie } from "../resizable/component.js";
12
+ import { useControlledState as oe } from "../hooks/useControlledState.js";
13
+ import { useCls as pe } from "../utils/antdUtils.js";
13
14
  import { clsx as p } from "../utils/cn.js";
14
- import { IconButton as te } from "../icon-button/component.js";
15
- const ve = ({
16
- children: H,
17
- placement: I,
18
- openOnHover: K = !1,
19
- open: j,
20
- onOpenChange: E,
21
- content: M,
15
+ import { IconButton as ue } from "../icon-button/component.js";
16
+ const Ce = ({
17
+ children: K,
18
+ placement: j,
19
+ openOnHover: E = !1,
20
+ open: M,
21
+ onOpenChange: D,
22
+ content: F,
22
23
  title: h,
23
- trigger: F = "click",
24
- className: T,
25
- anchor: U,
26
- beforeCloseButton: R,
24
+ trigger: T = "click",
25
+ className: U,
26
+ anchor: V,
27
+ beforeCloseButton: C,
27
28
  afterCloseButton: S,
28
29
  afterTitle: b,
29
30
  size: v = "medium",
30
31
  footer: l,
31
- defaultOpen: V,
32
- resizable: X = !1,
32
+ defaultOpen: X,
33
+ resizable: x = !1,
34
+ draggable: $ = !1,
35
+ maintainAspectRatio: q = !1,
33
36
  classNames: e,
34
- modal: $ = !1,
35
- closeOnClickOutside: q = !0,
36
- onPlacementChange: P
37
+ modal: G = !1,
38
+ closeOnClickOutside: J = !0,
39
+ onPlacementChange: P,
40
+ ...L
37
41
  }) => {
38
- const [w, x] = s(
39
- j,
40
- E,
41
- V ?? !1
42
+ const [w, z] = oe(
43
+ M,
44
+ D,
45
+ X ?? !1
42
46
  // Always provide a default value to prevent undefined
43
- ), r = ee(), c = m(I), z = L(() => /* @__PURE__ */ t(Z, { size: 16 }), []), k = C(null), y = C(c.side), O = C(c.align), [D, G] = Q(0);
44
- W(() => {
45
- const u = k.current;
47
+ ), r = pe(), c = te(j), k = _(() => /* @__PURE__ */ t(N, { size: 16 }), []), H = A(null), y = A(c.side), O = A(c.align), [Q, W] = B(0);
48
+ m(() => {
49
+ const u = H.current;
46
50
  if (!u || !w) return;
47
51
  const g = new MutationObserver((d) => {
48
- let A = !1;
52
+ let R = !1;
49
53
  if (d.forEach((i) => {
50
54
  if (i.type === "attributes" && i.attributeName === "data-side") {
51
55
  const n = u.getAttribute(i.attributeName);
52
- n && n !== y.current && (y.current = n, A = !0);
56
+ n && n !== y.current && (y.current = n, R = !0);
53
57
  }
54
58
  if (i.type === "attributes" && i.attributeName === "data-align") {
55
59
  const n = u.getAttribute(i.attributeName);
56
- n && n !== O.current && (O.current = n, A = !0);
60
+ n && n !== O.current && (O.current = n, R = !0);
57
61
  }
58
- }), A) {
59
- const i = a({
62
+ }), R) {
63
+ const i = re({
60
64
  side: y.current,
61
65
  align: O.current
62
66
  });
63
- G((n) => n + 1), P && P(i);
67
+ W((n) => n + 1), P && P(i);
64
68
  }
65
69
  });
66
70
  return g.observe(u, {
@@ -71,9 +75,9 @@ const ve = ({
71
75
  g.disconnect();
72
76
  };
73
77
  }, [P, w]);
74
- const J = Y(() => /* @__PURE__ */ f("div", { className: p(r("popup-panel-header"), e == null ? void 0 : e.header), children: [
78
+ const Y = a(() => /* @__PURE__ */ f("div", { className: p(r("popup-panel-header"), e == null ? void 0 : e.header), children: [
75
79
  /* @__PURE__ */ f(
76
- B,
80
+ ee,
77
81
  {
78
82
  align: "center",
79
83
  gap: 8,
@@ -86,11 +90,11 @@ const ve = ({
86
90
  }
87
91
  ),
88
92
  /* @__PURE__ */ f("div", { className: "flex items-center gap-2", children: [
89
- R,
93
+ C,
90
94
  /* @__PURE__ */ t(
91
95
  o.Close,
92
96
  {
93
- render: /* @__PURE__ */ t(te, { children: z })
97
+ render: /* @__PURE__ */ t(ue, { children: k })
94
98
  }
95
99
  ),
96
100
  S
@@ -102,87 +106,72 @@ const ve = ({
102
106
  ] }), [
103
107
  S,
104
108
  b,
105
- R,
109
+ C,
106
110
  r,
107
111
  e == null ? void 0 : e.header,
108
112
  e == null ? void 0 : e.title,
109
- z,
113
+ k,
110
114
  h
111
- ]);
115
+ ]), { ref: Z } = ne($), I = /* @__PURE__ */ f(
116
+ o.Popup,
117
+ {
118
+ className: p(
119
+ r("popup-panel"),
120
+ r(`popup-panel-size-${v}`),
121
+ U,
122
+ e == null ? void 0 : e.popup
123
+ ),
124
+ ref: Z,
125
+ children: [
126
+ h && Y(),
127
+ /* @__PURE__ */ t("div", { className: p(r("popup-panel-content"), e == null ? void 0 : e.content), children: /* @__PURE__ */ t("div", { className: r("popup-panel-content-inner"), children: F }) }),
128
+ l && /* @__PURE__ */ t("div", { className: p(r("popup-panel-footer"), e == null ? void 0 : e.footer), children: typeof l == "function" ? l({ close: () => z(!1) }) : l })
129
+ ]
130
+ }
131
+ );
112
132
  return /* @__PURE__ */ f(
113
133
  o.Root,
114
134
  {
115
- openOnHover: F === "hover" ? !0 : K,
135
+ openOnHover: T === "hover" ? !0 : E,
116
136
  open: w,
117
137
  onOpenChange: (u, g, d) => {
118
- (d === "outside-press" || d === "focus-out") && !q || x(u, g, d);
138
+ (d === "outside-press" || d === "focus-out") && !J || z(u, g, d);
119
139
  },
120
- modal: $,
140
+ modal: G,
141
+ ...L,
121
142
  children: [
122
143
  /* @__PURE__ */ t(
123
144
  o.Trigger,
124
145
  {
125
- render: H,
146
+ render: K,
126
147
  className: p(r("popup-panel-trigger"), e == null ? void 0 : e.trigger)
127
148
  }
128
149
  ),
129
150
  /* @__PURE__ */ t(o.Portal, { children: /* @__PURE__ */ t(
130
151
  o.Positioner,
131
152
  {
132
- ref: k,
153
+ ref: H,
133
154
  className: p(r("popup-panel-root"), e == null ? void 0 : e.root),
134
155
  side: c.side,
135
156
  align: c.align,
136
157
  sideOffset: 4,
137
- anchor: U,
158
+ anchor: V,
138
159
  style: {
139
- "--size-width": v ? _[v] : void 0
160
+ "--size-width": v ? s[v] : void 0
140
161
  },
141
- children: /* @__PURE__ */ t(
142
- N,
162
+ children: x ? /* @__PURE__ */ t(
163
+ ie,
143
164
  {
144
- resizable: X,
165
+ resizable: x,
145
166
  absolutePositioning: !0,
146
- resetKey: D,
167
+ resetKey: Q,
168
+ maintainAspectRatio: q,
147
169
  classNames: {
148
170
  resizeHandle: e == null ? void 0 : e.resizeHandle
149
171
  },
150
- children: /* @__PURE__ */ f(
151
- o.Popup,
152
- {
153
- className: p(
154
- r("popup-panel"),
155
- r(`popup-panel-size-${v}`),
156
- T,
157
- e == null ? void 0 : e.popup
158
- ),
159
- children: [
160
- h && J(),
161
- /* @__PURE__ */ t(
162
- "div",
163
- {
164
- className: p(
165
- r("popup-panel-content"),
166
- e == null ? void 0 : e.content
167
- ),
168
- children: /* @__PURE__ */ t("div", { className: r("popup-panel-content-inner"), children: M })
169
- }
170
- ),
171
- l && /* @__PURE__ */ t(
172
- "div",
173
- {
174
- className: p(
175
- r("popup-panel-footer"),
176
- e == null ? void 0 : e.footer
177
- ),
178
- children: typeof l == "function" ? l({ close: () => x(!1) }) : l
179
- }
180
- )
181
- ]
182
- }
183
- )
172
+ children: I
184
173
  }
185
- )
174
+ ) : I
186
175
  }
187
176
  ) })
188
177
  ]
@@ -190,6 +179,6 @@ const ve = ({
190
179
  );
191
180
  };
192
181
  export {
193
- ve as PopupPanel
182
+ Ce as PopupPanel
194
183
  };
195
184
  //# sourceMappingURL=component.js.map