@epam/ai-dial-ui-kit 0.15.0-dev.36 → 0.15.0-dev.38
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.
- package/dist/CHANGELOG.md +15 -0
- package/dist/DateCellRenderer-CeAlYqg4.cjs +1 -0
- package/dist/{DateCellRenderer-DB9p0E9c.cjs → DateCellRenderer-CvaixMXW.cjs} +1 -1
- package/dist/components/New/ConfirmationPopup/ConfirmationPopup.js +21 -25
- package/dist/components/New/ConfirmationPopup/constants.js +8 -11
- package/dist/components/New/Select/CollapsedSelectTags.js +127 -0
- package/dist/components/New/Select/MultiSelectTags.js +18 -15
- package/dist/components/New/Select/Select.js +184 -173
- package/dist/components/New/constants/overlay.js +7 -5
- package/dist/components-manifest.json +16 -3
- package/dist/dial-ui-kit.cjs +2 -2
- package/dist/file-manager.cjs +1 -1
- package/dist/grid.cjs +1 -1
- package/dist/index.css +2 -2
- package/dist/migration-guides/0.15.0/legacy-theme-variable-fallbacks-removal.md +69 -0
- package/dist/migration-guides/README.md +1 -0
- package/dist/src/components/New/ConfirmationPopup/constants.d.ts +0 -1
- package/dist/src/components/New/Select/CollapsedSelectTags.d.ts +22 -0
- package/dist/src/components/New/Select/MultiSelectTags.d.ts +5 -0
- package/dist/src/components/New/Select/Select.d.ts +9 -0
- package/dist/{use-file-manager-tabs-BJP7po3N.cjs → use-file-manager-tabs-BfvI09Xx.cjs} +1 -1
- package/dist/utils/sub-menu-floating.js +18 -17
- package/package.json +3 -8
- package/dist/DateCellRenderer-DABG5c2F.cjs +0 -1
package/dist/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,11 @@ Versions match the git tags on the `development` branch.
|
|
|
9
9
|
|
|
10
10
|
## [0.15.0]
|
|
11
11
|
|
|
12
|
+
### Breaking Changes
|
|
13
|
+
|
|
14
|
+
- **Legacy theme variable fallbacks removed** — 0.14.0 renamed several theme variables but kept the old names in the fallback chain, so every token resolved two variables and a theme could set either. The old names are no longer read: `--bg-control-neutral-hover` → `--bg-control-neutral-hover-muted`, `--stroke-focus-black` → `--stroke-focus`, and `--bg-control-accent-gradient-from` / `-to` / `-hover-from` / `-active-to` → `--bg-gradient-1` / `-2` / `-1-hover` / `-2-active`. A theme that still sets an old name falls back to the kit's default colour; rename the variable.
|
|
15
|
+
See [migration guide](migration-guides/0.15.0/legacy-theme-variable-fallbacks-removal.md).
|
|
16
|
+
|
|
12
17
|
### Added
|
|
13
18
|
|
|
14
19
|
- **Public class names on every design-system 2.0 component** — a host embedding the kit had no honest selector for the parts of a component its props do not reach: the kit's own classes are Tailwind utilities and hashed module locals, so hosts were left on `[class*='_selectedItem_']`, `> div:nth-child(2) > button` and `[role='none'][aria-label='dropdown']` — the last an accessibility contract, and a plain English string a localised host cannot rely on. Every 2.0 component now stamps a stable class on the element that draws it, exported as one record: `DIAL_KIT_CLASS.menuItem` is `'dial-kit-menuitem'`, and so on for 48 elements across the feedback components (`Spinner`, `ProgressBar`, `Skeleton`, `Notification`, `NoDataContent`), the text components (`Highlight`, `CaptionText`/`ErrorText`, `Label`), the containers (`CardShell`, `CollapsibleSidebar`, `ResizableContainer`, `Popup`, `ConfirmationPopup`, `Accordion`, `FolderPath`), the menus and overlays (`Dropdown` and its item list, rows and chosen-row check, `DialDropdownIcon`'s icon and caret badge, `Tooltip`, `InteractiveTooltip`, `EllipsisTooltip`), the fields (`Search`, `PasswordInput`, `NumberInput`, `TagInput`, `Select`, `InlineSelect`, `Calendar`, `FileDropzone`, `RadioGroupPopupField`) and the controls (`Switch`, `Checkbox`, `CheckboxBox`, `Radio`, `RadioGroup`, `SegmentedControl` and its segments, `Tabs` and its tabs, `Tag`, `ToggleIconButton`, `CloseButton`, `InfoButton`, `ButtonDropdown`). `dial-kit-dropdown-list` and `dial-kit-menuitem` are on the 1.0 dropdown family too, since `DialDropdownIcon` opens one.
|
|
@@ -49,8 +54,18 @@ Versions match the git tags on the `development` branch.
|
|
|
49
54
|
|
|
50
55
|
- **`BottomSheet` and `SideDrawer` (2.0) — `style` and `overlayStyle`, and `headerClassName` on `BottomSheet`** — both render in a portal at the end of `<body>`, so custom properties a caller sets on its own wrapper never reached the panel, its header or the backdrop, and `className` can carry a class but not a runtime value. A host theming the sheet through `var(--…)` — a panel background, a title colour, a divider, a backdrop tint — had no way to deliver the values. `style` is an inline style on the panel and `overlayStyle` one on the backdrop, merged after its own positioning; `headerClassName` reaches `BottomSheet`'s header row, which `SideDrawer` already exposed. All additive; nothing renders differently without them. Requested in [ai-dial-chat](https://github.com/epam/ai-dial-chat), whose bottom sheets and side panels theme their surfaces through public colour props.
|
|
51
56
|
|
|
57
|
+
- **`Select` (2.0) — `collapseTagOverflow`, a one-row multi-select with a `+N` counter** — a multi-select could only wrap its tags onto more rows, so a field in a dense form or a table cell grew without bound. `collapseTagOverflow` keeps the tags on one row, as it does on `TagInput`, and folds the ones that do not fit into a `+N` tag; hovering it opens an `InteractiveTooltip` listing the hidden tags, each still removable. The count follows the width the field has, not the number of tags: the tags are taken in order while they fit beside the counter, and it is recomputed on resize. Without the prop the tags wrap as before; the prop is ignored with `customMultiSelectTagsRenderer`, and on a mobile screen the tags wrap, since the panel opens on hover. Additive.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
- **`Select` (2.0) — multi-select tags are 24px, and the field wraps them with an 8px gap** — the tags in a multi-select field used the 32px pill of `Tag`, taller than the design's field chip. They are now 24px with a `rounded-md` shape, a `layer-sunken` fill and a `stroke-secondary` rim, and the wrapped field pads 8px vertically with 8px between tags, so one row of tags still fills the 40px field. `Tag` itself is unchanged. Visual only; no API changes.
|
|
62
|
+
|
|
52
63
|
### Fixed
|
|
53
64
|
|
|
65
|
+
- **`Dropdown` and `Select` — a submenu closes when its menu or the page scrolls** — a submenu is portalled and repositioned by Floating UI's `autoUpdate`, so scrolling the list that holds its trigger, or the page, left the submenu open and dragged it along after the trigger, even once the trigger had scrolled out of the clipped list. The submenu now closes when an ancestor of its trigger scrolls. Scrolling inside the submenu does not close it. The fix is in the shared submenu hook, so it covers the 2.0 and 1.0 `Dropdown` and `Select` submenus. Reported in [ai-dial-chat#9295](https://github.com/epam/ai-dial-chat/issues/9295), on the catalog's Create menu.
|
|
66
|
+
|
|
67
|
+
- **`Select` and `Dropdown` (2.0) — rows keep their 40px when the panel is capped** — the rows are `flex-col` items with a fixed height inside a list that scrolls at the panel's height cap, and a flex item shrinks by default: on a short viewport the rows collapsed to their content, with the check boxes squeezed and the focus ring hugging the text. The shared overlay row no longer shrinks.
|
|
68
|
+
|
|
54
69
|
- **`Button` and `IconButton` (2.0) — a disabled button's tooltip opens** — `tooltipProps` wraps the button in `<Tooltip asChild>`, but a natively `disabled` button receives no pointer or focus events, so its tooltip could never open. That is exactly the state where a "why is this unavailable" hint matters, and callers worked around it with their own `<span>` wrapper, which no keyboard user could reach either. A disabled button that has a visible tooltip is now marked `aria-disabled="true"` instead of `disabled`: it stays in the tab order and answers hover and focus, so the tooltip opens for mouse and keyboard users alike, and it is still announced as unavailable. Its click is swallowed with `preventDefault`, so neither `onClick` nor a `type="submit"` form submission fires. Without a tooltip, or while `hideTooltip` is set, the button stays natively disabled as before. The disabled look is unchanged, since every 2.0 variant already styles `[aria-disabled="true"]`; the two ghost icon-button rules that styled only `:disabled` now style both. Requested in [ai-dial-chat](https://github.com/epam/ai-dial-chat), where the chat-settings dialog explains why "Apply changes" is disabled.
|
|
55
70
|
|
|
56
71
|
- **`InlineSelectTrigger` (2.0) — a `className` no longer wipes out the trigger's own classes** — the props were spread after the merged `className`, so passing `className` replaced it outright: the trigger lost its padding, pill shape, hover tint and focus ring, and the public `dial-kit-inline-select` class. `className` is now merged after the trigger's own classes, the way every other 2.0 component takes it. The trigger's own `aria-haspopup`, `aria-expanded` and `aria-label` also now win over the same attributes passed as props.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),g=require("./DateCellRenderer-CvaixMXW.cjs"),U=require("@tabler/icons-react"),a=require("react"),h=require("./merge-classes-BEJXjzkx.cjs"),p=require("@floating-ui/react"),ge=require("./icon-DhjrDQ8I.cjs"),ne=require("./icon-CrGVkVpG.cjs"),C=require("./IconButton-DHOFapLo.cjs"),Ct=require("classnames");function gt(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(s,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return s.default=e,Object.freeze(s)}const de=gt(a);var he=(e=>(e.Top="top",e.Right="right",e.Bottom="bottom",e.Left="left",e))(he||{});const ht=7,xt=2,bt=500,St="fill-control-inverted",It="z-tooltip max-w-[376px] whitespace-pre-wrap break-words rounded-lg bg-control-inverted px-3 py-2 dial-small-text text-control-inverted shadow-xs",ze=a.createContext(null),Ze=()=>{const e=a.useContext(ze);if(e==null)throw new Error("Tooltip components must be wrapped in <TooltipContainer />");return e},Nt=({initialOpen:e=!1,placement:s=he.Bottom,isTriggerClickable:n=!1,open:r,onOpenChange:i}={})=>{const[u,c]=a.useState(e),m=a.useRef(null),d=r??u,x=i??c,S=p.useFloating({placement:s,open:d,onOpenChange:x,whileElementsMounted:p.autoUpdate,middleware:[p.offset(ht+xt),p.flip({fallbackAxisSideDirection:"start",padding:5}),p.shift({padding:5}),p.arrow({element:m})]}),f=p.useHover(S.context,{move:!1,enabled:r==null,mouseOnly:n,delay:{open:bt,close:0}}),I=p.useFocus(S.context,{enabled:r==null}),E=p.useDismiss(S.context),k=p.useRole(S.context,{role:"tooltip"}),A=p.useInteractions([f,I,E,k]);return a.useEffect(()=>{if(!d)return;const y=S.refs.reference.current;if(!(y instanceof Element))return;const T=new IntersectionObserver(([O])=>{O.isIntersecting||x(!1)},{root:null,threshold:0});return T.observe(y),()=>T.disconnect()},[d,S.refs.reference,x]),a.useMemo(()=>({open:d,setOpen:x,arrowRef:m,...A,...S}),[d,x,A,S])},Le=({children:e,...s})=>{const n=Nt(s);return t.jsx(ze.Provider,{value:n,children:e})},we=({style:e,...s})=>{const n=Ze(),r=C.useHasHover(),i=g.useThemeScope(),u=a.useRef(null),c=p.useMergeRefs([n.refs.setFloating,u]);return!n.open||!r?null:t.jsx(p.FloatingPortal,{id:"tooltip-portal",children:t.jsxs("div",{ref:c,"data-placement":n.placement,style:{...n.floatingStyles,...e},...n.getFloatingProps(s),className:Ct(It,i,n.getFloatingProps(s).className,g.DIAL_KIT_CLASS.tooltip),children:[s.children,t.jsx(p.FloatingArrow,{ref:n.arrowRef,context:n.context,className:St})]})})},Re=({children:e,asChild:s=!1,...n})=>{const r=Ze(),i=s&&a.isValidElement(e),u=i?e.props?.ref:null,c=p.useMergeRefs([r.refs.setReference,...u?[u]:[]]);if(i){const m=e.props;return a.cloneElement(e,r.getReferenceProps({...m,...n,className:h.mergeClasses(m.className,n.className)||void 0,ref:c}))}return t.jsx("span",{ref:c,...r.getReferenceProps(n),className:n.className??"text-start",children:e})},We=({hideTooltip:e=!1,tooltip:s,children:n,asChild:r=!1,triggerClassName:i,contentClassName:u,...c})=>{const m=!e&&!!s;return t.jsxs(Le,{...c,children:[t.jsx(Re,{asChild:r,className:i,children:n}),m&&t.jsx(we,{className:u,children:s})]})},Fe={[C.ButtonVariant.Primary]:{[C.ButtonAppearance.Solid]:"dial-kit-primary-solid-button",[C.ButtonAppearance.Ghost]:"dial-kit-primary-ghost-button",[C.ButtonAppearance.Link]:"dial-kit-primary-link-button"},[C.ButtonVariant.Neutral]:{[C.ButtonAppearance.Solid]:"dial-kit-neutral-solid-button",[C.ButtonAppearance.Outlined]:"dial-kit-neutral-outlined-button"},[C.ButtonVariant.Danger]:{[C.ButtonAppearance.Solid]:"dial-kit-danger-solid-button",[C.ButtonAppearance.Ghost]:"dial-kit-danger-ghost-button",[C.ButtonAppearance.Outlined]:"dial-kit-danger-outlined-button"},[C.ButtonVariant.Static]:{[C.ButtonAppearance.Solid]:"dial-kit-static-solid-button"},[C.ButtonVariant.Starter]:{[C.ButtonAppearance.Outlined]:"dial-kit-starter-outlined-button"},[C.ButtonVariant.Success]:{},[C.ButtonVariant.Secondary]:{},[C.ButtonVariant.Tertiary]:{}},vt=e=>{e.preventDefault()},Ke=(e,s,n)=>{const r=s!=null&&!s.hideTooltip&&s.tooltip!=null&&s.tooltip!=="";return e&&r?{disabled:void 0,"aria-disabled":!0,onClick:vt}:{disabled:e,onClick:n}},Ue=(e=C.ButtonVariant.Primary,s=C.ButtonAppearance.Solid)=>{const n=Fe[e]?.[s];return n||(console.warn(`Could not find Button styles for variant: ${e} and appearance: ${s}. Using default primary solid button styles.`),Fe[C.ButtonVariant.Primary][C.ButtonAppearance.Solid])},Et={[C.ElementSize.Small]:"size-[24px]",[C.ElementSize.Standard]:"size-[40px] dial-kit-enhanced-target",[C.ElementSize.Large]:"size-[48px] dial-kit-enhanced-target"},xe=({variant:e,appearance:s=C.ButtonAppearance.Solid,size:n=C.ElementSize.Standard,className:r,icon:i,tooltipProps:u,type:c="button",disabled:m,...d})=>{const x=h.mergeClasses("dial-kit-base-icon-button dial-kit-base-button",e&&Ue(e,s),Et[n],r),S=t.jsx("button",{...d,...Ke(m,u,d.onClick),type:c,className:x,"aria-label":C.resolveAccessibleName(d["aria-label"],u?.tooltip),children:i});return u?t.jsx(We,{asChild:!0,...u,children:S}):S},$e=({caption:e,onClick:s,"aria-label":n})=>{if(!e)return null;const r=h.mergeClasses("text-secondary hover:text-control-accent-hover active:text-control-accent-active","focus-visible:outline focus-visible:outline-focus",g.DIAL_KIT_CLASS.infoButton);return t.jsx(xe,{"aria-label":n,className:r,icon:t.jsx(U.IconInfoCircle,{size:ne.DIAL_ICON_SIZE.SM,stroke:ge.DIAL_KIT_ICON_STROKE,"aria-hidden":"true"}),onClick:s,size:C.ElementSize.Small,tooltipProps:{tooltip:e}})},De=({label:e,required:s,className:n,containerClassName:r,caption:i,size:u=C.ElementSize.Small,...c})=>e?t.jsxs("span",{className:h.mergeClasses("flex items-center gap-0.5",r,g.DIAL_KIT_CLASS.label),children:[t.jsxs("label",{...c,className:h.mergeClasses("text-secondary flex items-center gap-0.5",u===C.ElementSize.Small?"dial-tiny-semi-text":"dial-small-text",n),children:[typeof e=="string"?t.jsx("span",{className:"min-h-4",children:e}):e,s&&t.jsxs(t.Fragment,{children:[t.jsx("span",{"aria-hidden":"true",className:"text-error dial-tiny-text",children:"*"}),t.jsx("span",{className:"sr-only",children:"(required)"})]})]}),t.jsx($e,{caption:i})]}):null;var H=(e=>(e.None="none",e.Check="check",e.Tint="tint",e.Checkbox="checkbox",e.Highlight="highlight",e))(H||{});const je=(e,s)=>({appearance:r,...i})=>t.jsx(xe,{...i,variant:e,appearance:r||s}),qe=(e,s)=>({variant:r,...i})=>t.jsx(xe,{...i,variant:r||s,appearance:e}),yt=je(C.ButtonVariant.Primary,C.ButtonAppearance.Solid),Tt=je(C.ButtonVariant.Neutral,C.ButtonAppearance.Solid),_t=je(C.ButtonVariant.Danger,C.ButtonAppearance.Ghost),Xe=qe(C.ButtonAppearance.Ghost,C.ButtonVariant.Primary),kt=qe(C.ButtonAppearance.Solid,C.ButtonVariant.Static),Ye=({ariaLabel:e="Close",className:s,size:n=C.ElementSize.Small,onClose:r,...i})=>t.jsx(Xe,{...i,size:n,"aria-label":e,className:h.mergeClasses(s,g.DIAL_KIT_CLASS.closeButton),onClick:r,icon:t.jsx(U.IconX,{size:n===C.ElementSize.Small?ne.DIAL_ICON_SIZE.SM:ne.DIAL_ICON_SIZE.MD,stroke:ge.DIAL_KIT_ICON_STROKE,"aria-hidden":"true"})}),At=e=>{const s=a.useRef(null),[n,r]=a.useState(!1),[i,u]=a.useState(""),c=a.useRef(!1),m=a.useCallback(()=>{const x=s.current;x&&(c.current&&u(x.textContent??""),r(x.scrollWidth>x.clientWidth))},[]),d=a.useCallback(()=>g.scheduleMeasure(m),[m]);return a.useEffect(()=>{const x=s.current;if(x)return g.observeElementSize(x,m)},[m]),a.useEffect(()=>{c.current=typeof e!="string",d()},[e,d]),{ref:s,isTruncated:n,textContent:i,remeasure:d}},be=({text:e,className:s,contentClassName:n,hideTooltip:r=!1,id:i,customTooltipContent:u,...c})=>{const{ref:m,isTruncated:d,textContent:x,remeasure:S}=At(e),f=typeof e=="string"?e:x,I=a.useMemo(()=>r||!d?null:u??f,[u,f,r,d]);return t.jsxs(Le,{...c,children:[t.jsx(Re,{asChild:!0,onMouseEnter:S,onFocusCapture:S,children:t.jsx("span",{id:i,ref:m,"aria-label":d&&f?f:void 0,className:h.mergeClasses("block min-w-0 max-w-full flex-1 truncate text-start",s,g.DIAL_KIT_CLASS.ellipsisTooltip),children:e})}),!!I&&t.jsx(we,{className:n,children:I})]})},Lt=8,wt=400,Rt="z-interactive-tooltip max-w-[320px] rounded-xl bg-layer-0 p-4 dial-small-text text-primary shadow-md",fe=({content:e,placement:s=he.Right,children:n,asChild:r=!1,hideTooltip:i=!1,initialOpen:u=!1,open:c,onOpenChange:m,triggerClassName:d,contentClassName:x})=>{const S=g.useIsMobileScreen(),f=g.useThemeScope(),[I,E]=a.useState(u),k=c??I,A=j=>{m?.(j),c==null&&E(j)},y=p.useFloatingNodeId(),{refs:T,floatingStyles:O,context:w}=p.useFloating({nodeId:y,placement:s,open:k,onOpenChange:A,whileElementsMounted:p.autoUpdate,middleware:[p.offset(Lt),p.flip({padding:5}),p.shift({padding:5})]}),$=p.useHover(w,{enabled:c==null,handleClose:p.safePolygon(),delay:{open:wt,close:0}}),R=p.useFocus(w,{enabled:c==null}),F=p.useDismiss(w),{getReferenceProps:V,getFloatingProps:v}=p.useInteractions([$,R,F]),q=a.useRef(null),Q=p.useMergeRefs(a.useMemo(()=>[T.setFloating,q],[T.setFloating])),X=r&&a.isValidElement(n),G=X?n.props?.ref:null,P=p.useMergeRefs(a.useMemo(()=>[T.setReference,...G?[G]:[]],[T.setReference,G])),L=!i&&!S&&!!e,D=X?a.cloneElement(n,V({...n.props,ref:P,className:h.mergeClasses(n.props.className,d)||void 0})):t.jsx("span",{ref:P,...V(),className:d??"text-start",children:n});return t.jsxs(t.Fragment,{children:[D,k&&L&&t.jsx(p.FloatingPortal,{id:"interactive-tooltip-portal",children:t.jsx(p.FloatingFocusManager,{context:w,modal:!1,initialFocus:-1,returnFocus:!1,order:["reference","content"],children:t.jsx("div",{ref:Q,"data-placement":w.placement,style:O,...v(),className:h.mergeClasses(Rt,f,x,g.DIAL_KIT_CLASS.interactiveTooltip),children:e})})})]})},Je="rounded-xl bg-layer-raised p-1 shadow-md",Me="flex flex-col gap-0.5",Qe=h.mergeClasses(Je,"w-max"),et=h.mergeClasses(Qe,Me,"py-2"),tt=h.mergeClasses("flex w-full shrink-0 cursor-pointer items-center gap-2 px-3 h-[40px] rounded-lg","dial-small-text text-primary truncate","hover:bg-control-accent-alpha-hover","focus-visible:outline focus-visible:outline-focus"),nt="bg-control-accent-alpha",Dt=h.mergeClasses(nt,"text-accent"),jt=h.mergeClasses("cursor-not-allowed text-control-disable-primary","bg-transparent hover:bg-transparent"),st=4,Mt=h.mergeClasses("flex items-center gap-2 align-middle","h-auto px-0 bg-transparent border-0"),Ht=h.mergeClasses("z-floating focus-visible:outline-none",Je),Ot=Qe,Bt=et,Ft=h.mergeClasses(Me,"py-1"),Vt="my-1 border-t border-tertiary",J=st,Gt=t.jsx(U.IconChevronRight,{size:ne.DIAL_ICON_SIZE.SM,stroke:ge.DIAL_KIT_ICON_STROKE,"aria-hidden":"true"}),Ve={size:14,stroke:3,"aria-hidden":!0},He=({isSelected:e=!1,isIndeterminate:s=!1,invalid:n=!1,disabled:r=!1,htmlFor:i,className:u})=>{const c=s||e,m=!!i,d=h.mergeClasses("grid size-[20px] shrink-0 place-items-center rounded border transition-colors duration-200",m&&"dial-kit-minimum-target",m&&"peer-focus-visible:outline peer-focus-visible:outline-focus",r?"border-transparent bg-control-disable-primary text-control-disable-primary":h.mergeClasses(n&&c&&"border-transparent bg-control-error text-control-permanent",n&&!c&&"border-error bg-control-neutral",!n&&c&&"border-transparent bg-control-accent text-control-permanent hover:bg-control-accent-hover",!n&&!c&&"border-default bg-control-neutral hover:border-accent hover:bg-control-accent-alpha-hover"),r?"cursor-not-allowed":m&&"cursor-pointer",u,g.DIAL_KIT_CLASS.checkboxBox),x=s?t.jsx(U.IconMinus,{...Ve}):e&&t.jsx(U.IconCheck,{...Ve});return m?t.jsx("label",{htmlFor:i,className:d,children:x}):t.jsx("span",{"aria-hidden":"true",className:d,children:x})},Pt=t.jsx(U.IconCheck,{size:ne.DIAL_ICON_SIZE.SM,stroke:ge.DIAL_KIT_ICON_STROKE,className:`shrink-0 ${g.DIAL_KIT_CLASS.menuItemCheck}`,"aria-hidden":!0}),pe=({label:e,icon:s,description:n,mark:r=H.None,selected:i=!1,danger:u=!1,trailing:c,rightControl:m,ellipsisLabel:d=!1,labelClassName:x,children:S,className:f,disabled:I=!1,type:E="button",...k})=>{const A=i&&r===H.Highlight,y=i&&(r===H.Checkbox||r===H.Tint),T=h.mergeClasses(u&&"text-error",I&&"text-control-disable-primary"),O=h.mergeClasses(tt,"aria-expanded:bg-control-accent-alpha-hover",A&&Dt,y&&nt,I&&jt,u&&"text-error",f,g.DIAL_KIT_CLASS.menuItem),w=t.jsxs("button",{type:E,disabled:I,"data-menu-item-row":m?"":void 0,className:m?"flex h-full min-w-0 flex-1 items-center gap-2 truncate text-start focus-visible:outline-none":O,...k,children:[S??t.jsxs(t.Fragment,{children:[r===H.Checkbox&&t.jsx(He,{isSelected:i,disabled:I}),s&&t.jsx(g.DialIcon,{icon:s,className:T}),d?t.jsx(be,{text:e,className:h.mergeClasses(T,x)}):t.jsx("span",{className:h.mergeClasses("min-w-0 flex-1 truncate text-start",T,x),children:e}),n&&t.jsx("span",{className:h.mergeClasses("shrink-0 text-secondary dial-small-text",I&&"text-control-disable-primary"),children:n}),i&&r===H.Check&&Pt]}),c&&t.jsx("span",{className:h.mergeClasses("ml-auto shrink-0",T),children:c})]});return m?t.jsxs("div",{role:"none",className:h.mergeClasses(O,"has-[[data-menu-item-row]:focus-visible]:outline","has-[[data-menu-item-row]:focus-visible]:outline-focus"),children:[w,m]}):w},Ce=e=>e.mark??(e.selectable?H.Checkbox:H.None),rt=e=>e.selectable?"menuitemcheckbox":Ce(e)===H.Check?"menuitemradio":"menuitem",zt=({item:e,onRootClose:s})=>{const{isOpen:n,nodeId:r,refs:i,floatingStyles:u,context:c,getReferenceProps:m,getFloatingProps:d}=g.useSubMenuFloating(J,"menu",!!e.disabled),x=a.useCallback(f=>I=>{f.disabled||(f.onClick?.({key:f.key,domEvent:I}),f.selectable||s())},[s]),S=t.jsx(pe,{ref:i.setReference,role:"menuitem","aria-haspopup":"menu","aria-expanded":n,"aria-disabled":!!e.disabled,disabled:e.disabled,icon:e.icon,label:e.label,trailing:Gt,className:e.className,...m(),children:e.renderItem?.(e)});return t.jsxs(p.FloatingNode,{id:r,children:[e.interactiveTooltip?t.jsx(fe,{asChild:!0,placement:e.interactiveTooltip.placement,content:e.interactiveTooltip.content,contentClassName:e.interactiveTooltip.contentClassName,children:S}):S,n&&t.jsx(g.SubMenuPanel,{refs:i,floatingStyles:u,context:c,getFloatingProps:d,role:"menu",surfaceClassName:e.renderSubMenu?Ot:Bt,children:e.renderSubMenu?e.renderSubMenu():t.jsxs(t.Fragment,{children:[e.menuHeader&&(typeof e.menuHeader=="function"?e.menuHeader():e.menuHeader),e.children.map(f=>{const I=rt(f),E=t.jsx(pe,{role:I,"aria-checked":I==="menuitem"?void 0:!!f.checked,"aria-current":Ce(f)===H.Highlight&&f.checked?!0:void 0,"aria-disabled":!!f.disabled,disabled:f.disabled,mark:Ce(f),selected:!!f.checked,danger:f.danger,icon:f.icon,label:f.label,className:f.className,rightControl:f.rightControl,onClick:x(f),children:f.renderItem?.(f)});return t.jsx(a.Fragment,{children:f.interactiveTooltip?t.jsx(fe,{asChild:!0,placement:f.interactiveTooltip.placement,content:f.interactiveTooltip.content,contentClassName:f.interactiveTooltip.contentClassName,children:E}):E},f.key)}),e.menuFooter&&(typeof e.menuFooter=="function"?e.menuFooter():e.menuFooter)]})})]})},Zt='[role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"]',Wt=e=>!e.hasAttribute("disabled")&&e.getAttribute("aria-disabled")!=="true",Kt=["ArrowDown","ArrowUp","Home","End"],Ut=(e,s,n)=>{if(e==="Home")return 0;if(e==="End")return n-1;const r=e==="ArrowDown"?1:-1;return s===-1?r===1?0:n-1:(s+r+n)%n},$t=e=>"clientWidth"in e?e.clientWidth:e.getBoundingClientRect?.()?.width??0,ot=({children:e,items:s,onItemClick:n,menuHeader:r,menuFooter:i,renderOverlay:u,trigger:c=[g.DropdownTrigger.Click],placement:m,disabled:d=!1,open:x,defaultOpen:S=!1,onOpenChange:f,closable:I=!1,onClose:E,className:k,overlayContentClassName:A,separatorClassName:y,listClassName:T,listStyle:O,outsidePressIgnoreRef:w,outsideClosable:$=!0,allowedPlacements:R,anchorToMouse:F=!1,matchReferenceWidth:V=!0,maxDropdownHeight:v,initialFocus:q})=>{const Q=g.useThemeScope(),[X,G]=a.useState(S),P=x!==void 0,L=P?!!x:X,D=a.useRef(null),[j,se]=a.useState(!0),_=a.useCallback((l,o,b)=>{l&&se(b!=="hover"&&b!=="safe-polygon"),P||G(l),f?.(l)},[P,f]),re=a.useId(),Se=m===void 0,oe=p.useFloatingNodeId(),{refs:M,floatingStyles:K,context:z}=p.useFloating({nodeId:oe,placement:m,open:L,onOpenChange:_,whileElementsMounted:p.autoUpdate,middleware:[p.offset({mainAxis:J,crossAxis:0}),Se?p.autoPlacement({alignment:"start",crossAxis:!0,padding:J,allowedPlacements:R}):p.flip({padding:J}),p.shift({padding:J}),p.size({padding:J,apply({availableWidth:l,availableHeight:o,elements:b}){const N=b.floating,B=$t(b.reference);N.style.setProperty("--fui-available-height",`${Math.floor(o)}px`),N.style.setProperty("--reference-width",V?`${Math.round(B)}px`:"0px"),V?N.style.minWidth=`${Math.round(B)}px`:N.style.removeProperty("min-width"),N.style.maxWidth=`${Math.floor(l)}px`;const te=Math.floor(o);N.style.maxHeight=`${v?Math.min(te,v):te}px`}})]}),Y=p.useClick(z,{enabled:c.includes(g.DropdownTrigger.Click)&&!d}),Ie=p.useHover(z,{enabled:c.includes(g.DropdownTrigger.Hover)&&!d,move:!1,restMs:40,handleClose:p.safePolygon(),delay:{open:80,close:80}}),ee=p.useDismiss(z,{bubbles:!0,referencePress:!1,outsidePress:l=>{if(!$)return!1;const o=l.target;return!(w?.current&&o instanceof Node&&w.current.contains(o))}}),ae=p.useRole(z,{role:"menu"}),{getReferenceProps:Ne,getFloatingProps:le}=p.useInteractions([Y,Ie,ee,ae]),Z=a.useCallback((l,o)=>{M.setPositionReference({getBoundingClientRect:()=>({width:0,height:0,x:l,y:o,top:o,left:l,right:l,bottom:o})})},[M]),ve=a.useCallback(l=>{!c.includes(g.DropdownTrigger.ContextMenu)||d||(l.preventDefault(),F&&(Z(l.clientX,l.clientY),D.current=document.elementFromPoint(l.clientX,l.clientY)),_(!0))},[F,d,_,Z,c]),Ee=a.useCallback(l=>{!F||d||(c.includes(g.DropdownTrigger.ContextMenu)&&L&&_(!1),Z(l.clientX,l.clientY),D.current=document.elementFromPoint(l.clientX,l.clientY))},[F,d,Z,L,c,_]);a.useEffect(()=>{d&&L&&_(!1)},[d,L,_]);const ye=a.useCallback(l=>{if(l.defaultPrevented||!Kt.includes(l.key)||!l.currentTarget.contains(l.target))return;const o=Array.from(l.currentTarget.querySelectorAll(Zt)).filter(Wt);if(o.length===0)return;l.preventDefault();const b=l.currentTarget.ownerDocument.activeElement,N=o.findIndex(B=>B===b);o[Ut(l.key,N,o.length)]?.focus()},[]),ce=a.useCallback(l=>o=>{l.disabled||(l.onClick?.({key:l.key,domEvent:o}),n?.({key:l.key,domEvent:o}),l.selectable||_(!1))},[n,_]),ie=a.useMemo(()=>u?u():s?t.jsxs(t.Fragment,{children:[r&&t.jsx(t.Fragment,{children:typeof r=="function"?r():r}),t.jsx("div",{role:"none",className:h.mergeClasses(Ft,A,g.DIAL_KIT_CLASS.dropdownList),"aria-label":"dropdown",children:s.map(l=>{if(l.type===g.DropdownItemType.Divider)return t.jsx("div",{role:"separator",className:h.mergeClasses(Vt,y)},l.key);if(l.type===g.DropdownItemType.PlainText)return t.jsx("div",{className:h.mergeClasses("px-3 py-2 text-secondary dial-caption-text",l.className),children:l.label},l.key);if(l.children?.length)return t.jsx(zt,{item:l,onRootClose:()=>_(!1)},l.key);const o=Ce(l),b=rt(l),N=t.jsx(pe,{role:b,"aria-checked":b==="menuitem"?void 0:!!l.checked,"aria-current":o===H.Highlight&&l.checked?!0:void 0,"aria-disabled":!!l.disabled,disabled:l.disabled,mark:o,selected:!!l.checked,danger:l.danger,icon:l.icon,label:l.label,className:l.className,rightControl:l.rightControl,onClick:ce(l),children:l.renderItem?.(l)});return t.jsx(a.Fragment,{children:l.interactiveTooltip?t.jsx(fe,{asChild:!0,placement:l.interactiveTooltip.placement,content:l.interactiveTooltip.content,contentClassName:l.interactiveTooltip.contentClassName,children:N}):N},l.key)})}),i&&t.jsx(t.Fragment,{children:typeof i=="function"?i():i})]}):null,[ce,s,i,r,u,_,A,y]),Te=Ne({onContextMenu:ve,onMouseDown:Ee});return a.useEffect(()=>{if(!L)return;const l=M.reference.current;let o=null;if(l instanceof Element?o=l:D.current instanceof Element&&(o=D.current),!o)return;const b=new IntersectionObserver(([N])=>{N.isIntersecting||_(!1)},{root:null,threshold:0});return b.observe(o),()=>b.disconnect()},[L,M.reference,_]),t.jsx(p.FloatingTree,{children:t.jsxs(p.FloatingNode,{id:oe,children:[t.jsx("span",{ref:M.setReference,className:h.mergeClasses(Mt,d&&"!cursor-not-allowed opacity-75",k,g.DIAL_KIT_CLASS.dropdown),"aria-haspopup":"menu","aria-expanded":L,"aria-controls":re,...Te,children:e}),L&&t.jsx(p.FloatingPortal,{children:t.jsx(p.FloatingFocusManager,{context:z,modal:!1,initialFocus:q!==void 0?q:j?0:-1,returnFocus:!0,children:t.jsxs("div",{id:re,ref:M.setFloating,style:O?{...O,...K}:K,className:h.mergeClasses(Ht,!V&&"w-max","overflow-auto",Q,T),...le({onKeyDown:ye}),children:[I&&t.jsx("div",{className:"flex items-center justify-between px-2 pt-2",children:t.jsx(Ye,{ariaLabel:"Close dropdown",onClose:l=>{E?.(l),_(!1)}})}),ie]})})})]})})},Oe=({id:e,labelProps:s,isSelected:n=!1,isIndeterminate:r=!1,invalid:i=!1,disabled:u,onChange:c,caption:m,className:d,boxClassName:x,...S})=>{const f=a.useId(),I=e??f,E=m?`${I}-caption`:void 0,k=a.useCallback(y=>{c?.(y.target.checked)},[c]),A=a.useCallback(y=>{y&&(y.indeterminate=r)},[r]);return t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:h.mergeClasses("flex items-center gap-2",d,g.DIAL_KIT_CLASS.checkbox),children:[t.jsx("input",{...S,ref:A,type:"checkbox",id:I,checked:n,disabled:u,onChange:k,"aria-checked":r?"mixed":n,"aria-invalid":i||void 0,"aria-label":C.resolveAccessibleName(typeof s?.label!="string"?S["aria-label"]:void 0),"aria-describedby":E,className:"peer sr-only"}),t.jsx(He,{htmlFor:I,isSelected:n,isIndeterminate:r,invalid:i,disabled:u,className:x}),s&&t.jsx(De,{size:C.ElementSize.Standard,...s,htmlFor:I,className:h.mergeClasses("py-[1px]",u?"cursor-not-allowed text-control-disable-primary":"cursor-pointer text-primary",s.className)})]}),m&&t.jsx("span",{id:E,className:"dial-tiny-text text-secondary ml-[28px]",children:m})]})},at=e=>de.createElement("svg",{width:32,height:32,viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},de.createElement("path",{d:"M20.2954 16.7035C20.2954 17.088 20.6029 17.4069 20.9737 17.4069C21.3445 17.4069 21.6519 17.088 21.6519 16.7035C21.6519 16.3189 21.3445 16 20.9737 16C20.6029 16 20.2954 16.3189 20.2954 16.7035Z",fill:"currentColor"}),de.createElement("path",{d:"M11.7041 16.7035C11.7041 17.088 11.3966 17.4069 11.0258 17.4069C10.655 17.4069 10.3476 17.088 10.3476 16.7035C10.3476 16.3189 10.655 16 11.0258 16C11.3966 16 11.7041 16.3189 11.7041 16.7035Z",fill:"currentColor"}),de.createElement("path",{d:"M19.0221 2.40002L19.5525 1.86969C19.4118 1.72904 19.221 1.65002 19.0221 1.65002V2.40002ZM26.5777 9.95558H27.3277C27.3277 9.75667 27.2487 9.5659 27.108 9.42525L26.5777 9.95558ZM5.42212 29.6H4.67212C4.67212 30.0142 5.00791 30.35 5.42212 30.35V29.6ZM8.44434 2.40002V1.65002V2.40002ZM13.8932 19.5173C13.8932 19.9315 14.229 20.2673 14.6432 20.2673C15.0574 20.2673 15.3932 19.9315 15.3932 19.5173H14.6432H13.8932ZM16.6063 19.5173C16.6063 19.9315 16.9421 20.2673 17.3563 20.2673C17.7705 20.2673 18.1063 19.9315 18.1063 19.5173H17.3563H16.6063ZM19.0221 2.40002H18.2721V8.44447H19.0221H19.7721V2.40002H19.0221ZM19.0221 8.44447H18.2721C18.2721 9.04415 18.5103 9.61927 18.9344 10.0433L19.4647 9.51299L19.995 8.98266C19.8523 8.83992 19.7721 8.64633 19.7721 8.44447H19.0221ZM19.4647 9.51299L18.9344 10.0433C19.3584 10.4674 19.9335 10.7056 20.5332 10.7056V9.95558V9.20558C20.3314 9.20558 20.1378 9.12539 19.995 8.98266L19.4647 9.51299ZM20.5332 9.95558V10.7056H26.5777V9.95558V9.20558H20.5332V9.95558ZM5.42212 29.6H6.17212V5.42225H5.42212H4.67212V29.6H5.42212ZM5.42212 5.42225H6.17212C6.17212 4.81962 6.41151 4.24167 6.83764 3.81554L6.30731 3.28521L5.77698 2.75488C5.06955 3.46231 4.67212 4.42179 4.67212 5.42225H5.42212ZM6.30731 3.28521L6.83764 3.81554C7.26376 3.38942 7.84171 3.15002 8.44434 3.15002V2.40002V1.65002C7.44389 1.65002 6.48441 2.04745 5.77698 2.75488L6.30731 3.28521ZM8.44434 2.40002V3.15002H19.0221V2.40002V1.65002H8.44434V2.40002ZM19.0221 2.40002L18.4918 2.93035L26.0473 10.4859L26.5777 9.95558L27.108 9.42525L19.5525 1.86969L19.0221 2.40002ZM26.5777 9.95558H25.8277V26.5778H26.5777H27.3277V9.95558H26.5777ZM26.5777 26.5778H25.8277C25.8277 27.1804 25.5883 27.7584 25.1622 28.1845L25.6925 28.7148L26.2228 29.2452C26.9302 28.5377 27.3277 27.5783 27.3277 26.5778H26.5777ZM25.6925 28.7148L25.1622 28.1845C24.736 28.6106 24.1581 28.85 23.5555 28.85V29.6V30.35C24.5559 30.35 25.5154 29.9526 26.2228 29.2452L25.6925 28.7148ZM23.5555 29.6V28.85H5.42212V29.6V30.35H23.5555V29.6ZM20.9737 16V16.75C20.9388 16.75 20.9181 16.7345 20.9119 16.7281C20.906 16.722 20.9019 16.7133 20.9019 16.7035H21.6519H22.4019C22.4019 15.9307 21.7842 15.25 20.9737 15.25V16ZM21.6519 16.7035H20.9019C20.9019 16.6936 20.906 16.685 20.9119 16.6788C20.9181 16.6724 20.9388 16.6569 20.9737 16.6569V17.4069V18.1569C21.7842 18.1569 22.4019 17.4762 22.4019 16.7035H21.6519ZM20.9737 17.4069V16.6569C21.0086 16.6569 21.0292 16.6724 21.0354 16.6788C21.0414 16.685 21.0454 16.6936 21.0454 16.7035H20.2954H19.5454C19.5454 17.4762 20.1631 18.1569 20.9737 18.1569V17.4069ZM20.2954 16.7035H21.0454C21.0454 16.7133 21.0414 16.722 21.0354 16.7281C21.0292 16.7345 21.0086 16.75 20.9737 16.75V16V15.25C20.1631 15.25 19.5454 15.9307 19.5454 16.7035H20.2954ZM11.0258 16V16.75C10.9909 16.75 10.9703 16.7345 10.9641 16.7281C10.9582 16.722 10.9541 16.7133 10.9541 16.7035H11.7041H12.4541C12.4541 15.9307 11.8364 15.25 11.0258 15.25V16ZM11.7041 16.7035H10.9541C10.9541 16.6936 10.9582 16.685 10.9641 16.6788C10.9703 16.6724 10.9909 16.6569 11.0258 16.6569V17.4069V18.1569C11.8364 18.1569 12.4541 17.4762 12.4541 16.7035H11.7041ZM11.0258 17.4069V16.6569C11.0607 16.6569 11.0814 16.6724 11.0876 16.6788C11.0935 16.685 11.0976 16.6936 11.0976 16.7035H10.3476H9.59757C9.59757 17.4762 10.2153 18.1569 11.0258 18.1569V17.4069ZM10.3476 16.7035H11.0976C11.0976 16.7133 11.0935 16.722 11.0876 16.7281C11.0814 16.7345 11.0607 16.75 11.0258 16.75V16V15.25C10.2153 15.25 9.59757 15.9307 9.59757 16.7035H10.3476ZM14.6432 19.5173H15.3932C15.3932 19.127 15.6889 18.8604 15.9998 18.8604V18.1104V17.3604C14.8094 17.3604 13.8932 18.3506 13.8932 19.5173H14.6432ZM15.9998 18.1104V18.8604C16.3106 18.8604 16.6063 19.127 16.6063 19.5173H17.3563H18.1063C18.1063 18.3506 17.1901 17.3604 15.9998 17.3604V18.1104Z",fill:"currentColor"})),lt=({id:e,name:s,value:n,labelProps:r,isSelected:i=!1,disabled:u,onChange:c,caption:m,className:d,...x})=>{const S=a.useId(),f=e??S,I=m?`${f}-caption`:void 0,E=a.useCallback(k=>{k.target.checked&&c?.(n)},[c,n]);return t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:h.mergeClasses("flex items-center gap-2 ",d,g.DIAL_KIT_CLASS.radio),children:[t.jsx("input",{...x,type:"radio",id:f,name:s,value:n,checked:i,disabled:u,onChange:E,"aria-label":C.resolveAccessibleName(typeof r?.label!="string"?x["aria-label"]:void 0),"aria-describedby":I,className:"peer sr-only"}),t.jsx("label",{htmlFor:f,className:h.mergeClasses("group grid size-[20px] shrink-0 place-items-center rounded-full border transition-colors duration-200 hover:bg-control-accent-alpha-hover","dial-kit-minimum-target","peer-focus-visible:outline peer-focus-visible:outline-focus",u?"cursor-not-allowed border-default bg-control-disable-primary":h.mergeClasses("cursor-pointer",i?"border border-accent bg-control-neutral":"border-default bg-control-neutral")),children:i&&t.jsx("span",{className:h.mergeClasses("size-3 rounded-full",u?"bg-control-disable-secondary":"bg-control-accent")})}),r&&t.jsx(De,{size:C.ElementSize.Standard,...r,htmlFor:f,className:h.mergeClasses("py-[1px]",u?"cursor-not-allowed text-control-disable-primary":"cursor-pointer text-primary",r.className)})]}),m&&t.jsx("span",{id:I,className:"dial-tiny-text text-secondary ml-[26px]",children:m})]})},Ge=32,ct=({title:e,description:s,icon:n,live:r=!1,className:i,titleClassName:u,descriptionClassName:c})=>t.jsxs("div",{role:r?"status":void 0,className:h.mergeClasses("flex size-full flex-col items-center justify-center gap-2 text-tertiary",i,g.DIAL_KIT_CLASS.noDataContent),children:[n??t.jsx(at,{width:Ge,height:Ge,"aria-hidden":"true"}),t.jsx("span",{className:h.mergeClasses("dial-tiny-text text-secondary",u),children:e}),s&&t.jsx("span",{className:h.mergeClasses("dial-tiny-text text-secondary",c),children:s})]}),it="dial-kit-grid",qt="dial-kit-grid-with-selection",Xt="dial-kit-grid-without-header-borders",Yt="dial-kit-grid-row-select",Jt="dial-kit-grid-header-select",Qt="dial-kit-grid-selection-visible",en="dial-kit-grid-align-right",Ae=40,_e="0.5px solid var(--stroke-tertiary, #E0E6F0)",me={accentColor:"var(--bg-control-accent, #1D4ED8)",backgroundColor:"var(--bg-layer-raised, #FCFCFC)",oddRowBackgroundColor:"var(--bg-layer-sunken, #EEF1F7)",selectedRowBackgroundColor:"var(--bg-control-accent-alpha, #2764D90F)",rowHoverColor:"var(--bg-control-accent-alpha-hover, #2764D924)",borderColor:"var(--stroke-tertiary, #E0E6F0)",rowBorder:_e,headerRowBorder:_e,headerColumnBorder:_e,chromeBackgroundColor:"var(--bg-layer-base, #F5F7FA)",foregroundColor:"var(--text-primary, #161B2D)",headerTextColor:"var(--text-secondary, #57647A)",browserColorScheme:"light",headerFontSize:14,headerFontWeight:600,fontSize:14,fontFamily:"var(--theme-font, var(--font-inter))",spacing:4,borderRadius:4,wrapperBorderRadius:8};var W=(e=>(e.API="api",e.ROW_DATA_CHANGED="rowDataChanged",e.CHECKBOX_SELECTED="checkboxSelected",e))(W||{});const tn=({params:e,mode:s,label:n,radioName:r,rowId:i,disabled:u})=>{const c=e.node,[m,d]=a.useState(()=>!!c.isSelected());a.useEffect(()=>{const S=()=>d(!!c.isSelected());return S(),c.addEventListener("rowSelected",S),()=>c.removeEventListener("rowSelected",S)},[c]);const x=S=>{u||c.setSelected(S,s===g.GridSelectionMode.SINGLE,W.CHECKBOX_SELECTED)};return s===g.GridSelectionMode.SINGLE?t.jsx(lt,{name:r,value:i,isSelected:m,disabled:u,"aria-label":n,onChange:()=>x(!0)}):t.jsx(Oe,{isSelected:m,disabled:u,"aria-label":n,onChange:x})},Pe=e=>{let s=0,n=0;return e.forEachNodeAfterFilter(r=>{r.selectable!==!1&&(n++,r.isSelected()&&s++)}),{selected:s,selectable:n}},nn=({api:e,label:s})=>{const[{selected:n,selectable:r},i]=a.useState(()=>Pe(e));a.useEffect(()=>{const c=()=>i(Pe(e));return c(),e.addEventListener("selectionChanged",c),e.addEventListener("modelUpdated",c),()=>{e.isDestroyed()||(e.removeEventListener("selectionChanged",c),e.removeEventListener("modelUpdated",c))}},[e]);const u=a.useCallback(c=>{if(c){e.selectAll("filtered",W.CHECKBOX_SELECTED);return}e.deselectAll("filtered",W.CHECKBOX_SELECTED)},[e]);return t.jsx(Oe,{isSelected:r>0&&n===r,isIndeterminate:n>0&&n<r,disabled:r===0,"aria-label":s,onChange:u})},ut="en-US",dt={year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"},ke=40,sn={minWidth:ke,width:ke,maxWidth:ke,resizable:!1,sortable:!1,filter:!1,floatingFilter:!1,suppressMovable:!0,suppressHeaderMenuButton:!0,suppressAutoSize:!0,suppressSizeToFit:!0},mt="dial-kit-grid-selection",rn=150,on=100,an=({columnDefs:e,rowData:s,additionalGridOptions:n,getContextMenuItems:r,className:i,ariaLabel:u="Data grid",wrapCustomCellRenderers:c=!0,disabledRowIds:m,selectedRowIds:d,onSelectionChange:x,onGridApiChange:S,getRowId:f,alternateOddRowColors:I=!1,filterPlaceholder:E="Enter value",emptyStateIcon:k,emptyStateTitle:A="No results found",emptyStateDescription:y="Sorry, we couldn't find any results for your search.",loading:T=!1,wrapperBorder:O=!0,withoutHeaderBorders:w=!1,allowDisabledContextMenu:$=!1,selectionMode:R,selectRowLabel:F,selectAllLabel:V="Select all rows"})=>{g.registerAgGridModulesOnce();const[v,q]=a.useState(),Q=g.useIsMobileScreen(),X=g.useIsTabletScreen(),G=a.useRef(new Set),P=a.useRef(void 0),L=`dial-kit-grid-selection-${a.useId()}`,D=a.useRef({getRowId:f,getContextMenuItems:r,onSelectionChange:x,selectRowLabel:F,wrapCustomCellRenderers:c});D.current={getRowId:f,getContextMenuItems:r,onSelectionChange:x,selectRowLabel:F,wrapCustomCellRenderers:c};const j=a.useCallback(o=>{const b=D.current.getRowId;return b?b(o):String(o.id??JSON.stringify(o))},[]),se=!!r,_=!!c,re=a.useMemo(()=>g.themeBalham.withPart(g.colorSchemeLight).withParams({...me,oddRowBackgroundColor:I?me.oddRowBackgroundColor:me.backgroundColor,wrapperBorder:O}),[I,O]),Se=a.useCallback(o=>{o.api.sizeColumnsToFit()},[]),oe=Q||X||(d?.size??0)>0,M=a.useCallback(o=>!!o&&!!m?.has(j(o)),[m,j]),K=a.useCallback((o,b,N)=>se?t.jsx(ot,{trigger:[g.DropdownTrigger.ContextMenu],items:o.data?D.current.getContextMenuItems?.(o.data)??[]:[],anchorToMouse:!0,matchReferenceWidth:!0,className:h.mergeClasses("size-full",N&&"cursor-not-allowed opacity-75"),disabled:N&&!$,children:t.jsx("span",{className:"block min-w-0 max-w-full flex-1",children:b})}):b,[se,$]),z=a.useCallback(o=>{if(!o.data)return null;const b=M(o.data);return K(o,t.jsx(be,{text:o.value==null?"":String(o.value),className:"max-w-full dial-small-text text-primary",hideTooltip:b}),b)},[M,K]),Y=a.useCallback(o=>o===W.API||o===W.ROW_DATA_CHANGED,[]),Ie=a.useMemo(()=>g.debounceFn(o=>{const N=(o.selectedNodes??[]).map(te=>te.data),B=new Set(N.map(j));G.current=B,P.current=o.source,!Y(o.source)&&D.current.onSelectionChange?.(B,N)},on),[Y,j]),ee=a.useMemo(()=>{if(R)return{...sn,colId:mt,headerName:"",headerClass:Jt,cellClass:Yt,headerComponent:R===g.GridSelectionMode.MULTIPLE?nn:void 0,headerComponentParams:{label:V},cellRenderer:o=>{if(!o.data)return null;const b=j(o.data);return t.jsx(tn,{params:o,mode:R,rowId:b,radioName:L,label:D.current.selectRowLabel?.(o.data)??"Select row",disabled:m?.has(b)})}}},[R,V,j,m,L]),ae=a.useCallback(o=>{if(!o.cellRenderer)return{...o,cellRenderer:z};const b=D.current.wrapCustomCellRenderers;if(!(typeof b=="function"?b(o):!!b))return o;const B=o.cellRenderer;return{...o,cellRenderer:ue=>{const ft=M(ue.data),Be=typeof B=="function"?B:void 0,pt=Be?t.jsx(Be,{...ue}):z(ue);return K(ue,pt,ft)}}},[M,z,K]),Ne=a.useMemo(()=>{const o=_?(e??[]).map(ae):e??[];return ee?[ee,...o]:o},[e,_,ae,ee]),{defaultColDef:le,rowSelection:Z,...ve}=n??{},Ee=a.useMemo(()=>({minWidth:rn,resizable:!0,sortable:!0,floatingFilter:!0,filter:"agTextColumnFilter",filterParams:{filterPlaceholder:E,buttons:["reset"]},comparator:g.baseColumnComparator,...g.omitUndefined(le)}),[E,le]),ye=o=>{o.api.sizeColumnsToFit(),q(o.api),n?.onGridReady?.(o),S?.(o.api)};a.useEffect(()=>{v&&s&&v.setGridOption("rowData",s)},[v,s]);const ce=a.useCallback(()=>t.jsx(ct,{live:!0,title:A,description:y,icon:k??t.jsx(U.IconZoomCancel,{size:100,stroke:.5,"aria-hidden":"true"})}),[A,y,k]),ie=typeof Z=="object"?Z:void 0,Te=a.useMemo(()=>R?{isRowSelectable:o=>!M(o.data),...ie,mode:R===g.GridSelectionMode.SINGLE?"singleRow":"multiRow",checkboxes:!1,headerCheckbox:!1}:Z,[Z,ie,M,R]);a.useEffect(()=>{v&&s&&G.current.size&&G.current.forEach(o=>{const b=v.getRowNode(o);b&&!b.isSelected()&&b.setSelected(!0,!1,W.API)})},[v,s]),a.useEffect(()=>{v&&d&&(v.deselectAll("all",W.API),d.forEach(o=>{const b=v.getRowNode(o);b&&!b.isSelected()&&b.setSelected(!0,!1,W.API)}))},[v,d]);const l=a.useCallback(o=>o.data?j(o.data):"",[j]);return a.useEffect(()=>{const o=Y(P.current);if(v&&d?.size&&o){const b=Array.from(d)[0];if(b){const N=v.getRowNode(b);N&&v.ensureNodeVisible(N)}}},[v,Y,d]),t.jsx("div",{className:h.mergeClasses(it,"size-full",R&&qt,R&&oe&&Qt,w&&Xt,i),role:"region","aria-label":u,"aria-busy":T,children:t.jsx("div",{className:"h-full overflow-x-auto",children:t.jsx(g.AgGridReact,{rowModelType:"clientSide",headerHeight:Ae,rowHeight:Ae,cellSelection:!1,theme:re,autoSizeStrategy:{type:"fitGridWidth"},columnDefs:Ne,defaultColDef:Ee,onGridSizeChanged:Se,onGridReady:ye,loading:T,suppressCellFocus:!0,suppressDragLeaveHidesColumns:!0,noRowsOverlayComponent:ce,rowData:s,rowSelection:Te,onSelectionChanged:Ie,getRowId:l,...ve})})})},ln=({value:e,locale:s=ut,options:n=dt,emptyPlaceholder:r,className:i,hideTooltip:u=!1})=>{const c=g.convertToDate(e),m=a.useMemo(()=>c?new Intl.DateTimeFormat(s,n).format(c):r,[c,r,s,n]),d=c?c.toISOString():void 0;return t.jsx(be,{text:d?t.jsx("time",{dateTime:d,children:m}):t.jsx("span",{children:m}),className:h.mergeClasses("dial-small-text text-primary",i),hideTooltip:u})};exports.Checkbox=Oe;exports.CheckboxBox=He;exports.CloseButton=Ye;exports.DEFAULT_DATE_FORMAT_OPTIONS=dt;exports.DEFAULT_LOCALE=ut;exports.DangerIconButton=_t;exports.DateCellRenderer=ln;exports.Dropdown=ot;exports.EllipsisTooltip=be;exports.GRID_ALIGN_RIGHT_CLASS=en;exports.GRID_ROOT_CLASS=it;exports.GRID_SELECTION_COLUMN_ID=mt;exports.GRID_THEME_PARAMS=me;exports.GhostIconButton=Xe;exports.Grid=an;exports.IconButton=xe;exports.InfoButton=$e;exports.InteractiveTooltip=fe;exports.Label=De;exports.MenuItem=pe;exports.MenuItemMark=H;exports.NeutralIconButton=Tt;exports.NoDataContent=ct;exports.PrimaryIconButton=yt;exports.ROW_HEIGHT=Ae;exports.Radio=lt;exports.StaticIconButton=kt;exports.SvgNoData=at;exports.Tooltip=We;exports.TooltipContainer=Le;exports.TooltipContent=we;exports.TooltipPlacement=he;exports.TooltipTrigger=Re;exports.getButtonClassNames=Ue;exports.getDisabledButtonProps=Ke;exports.overlayGap=st;exports.overlayItemClassName=tt;exports.overlayListClassName=Me;exports.overlaySubMenuListClassName=et;
|