ics-ui-kit 1.0.1 → 1.0.2

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 (25) hide show
  1. package/dist/{Command-WsAKNQrY.js → Command-hVL9sUnd.js} +3 -3
  2. package/dist/{Command-WsAKNQrY.js.map → Command-hVL9sUnd.js.map} +1 -1
  3. package/dist/{Dialog-i_Y-phdM.js → Dialog-BKCZO7T_.js} +2 -2
  4. package/dist/{Dialog-i_Y-phdM.js.map → Dialog-BKCZO7T_.js.map} +1 -1
  5. package/dist/{FormFooterTemplate-CHlas_Pp.js → FormFooterTemplate-CRkxi-Mh.js} +2 -2
  6. package/dist/{FormFooterTemplate-CHlas_Pp.js.map → FormFooterTemplate-CRkxi-Mh.js.map} +1 -1
  7. package/dist/{FormHeader-PE63OqG9.js → FormHeader-CX2jsIcI.js} +2 -2
  8. package/dist/{FormHeader-PE63OqG9.js.map → FormHeader-CX2jsIcI.js.map} +1 -1
  9. package/dist/{ScrollShadowContainer-DdrnF8qU.js → ScrollShadowContainer-KUmqA25a.js} +11 -11
  10. package/dist/{ScrollShadowContainer-DdrnF8qU.js.map → ScrollShadowContainer-KUmqA25a.js.map} +1 -1
  11. package/dist/components/command.js +1 -1
  12. package/dist/components/dialog.js +3 -3
  13. package/dist/components/drawer.js +1 -1
  14. package/dist/components/form.js +2 -2
  15. package/dist/components/scroll-shadow-container.js +1 -1
  16. package/dist/components/search-select.js +1 -1
  17. package/dist/components/sidebar.js +1 -1
  18. package/dist/components/table/tree.js +1 -1
  19. package/dist/components/table.js +1 -1
  20. package/dist/docs/tailwind-utilities/ScrollFade.stories.d.ts +1 -0
  21. package/dist/scroll-fade-fix.css +120 -0
  22. package/dist/tailwind.css +1 -0
  23. package/dist/{treeModel-CUO1A5s7.js → treeModel-BH6Jg8rm.js} +2 -2
  24. package/dist/{treeModel-CUO1A5s7.js.map → treeModel-BH6Jg8rm.js.map} +1 -1
  25. package/package.json +15 -12
@@ -10,8 +10,8 @@ import { m as Le } from "./MenuItemShortcut-D1faeIXp.js";
10
10
  import { m as Fe } from "./MenuItemText-CRpaPbvg.js";
11
11
  import { I as je } from "./Icon-DH3ev9GK.js";
12
12
  import { u as _, n as be } from "./ComponentVariantProvider-brk0g-hm.js";
13
- import { b as Pe, g as Ke, a as Ve, D as Te, e as qe } from "./Dialog-i_Y-phdM.js";
14
- import { S as Oe } from "./ScrollShadowContainer-DdrnF8qU.js";
13
+ import { b as Pe, g as Ke, a as Ve, D as Te, e as qe } from "./Dialog-BKCZO7T_.js";
14
+ import { S as Oe } from "./ScrollShadowContainer-KUmqA25a.js";
15
15
  import { S as Ge } from "./search-CDdgqSGg.js";
16
16
  var ge = 1, Be = 0.9, Ue = 0.8, ze = 0.17, te = 0.1, re = 0.999, He = 0.9999, We = 0.99, Ye = /[\\\/_+.#"@\[\(\{&]/, Je = /[\\\/_+.#"@\[\(\{&]/g, Xe = /[\s-]/, ye = /[\s-]/g;
17
17
  function oe(e, a, t, l, o, d, u) {
@@ -569,4 +569,4 @@ export {
569
569
  Mt as i,
570
570
  Tt as j
571
571
  };
572
- //# sourceMappingURL=Command-WsAKNQrY.js.map
572
+ //# sourceMappingURL=Command-hVL9sUnd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Command-WsAKNQrY.js","sources":["../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react@18.3.20_react-dom_e52941dcd4eb4b3a60339c5aac444699/node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react@18.3.20_react-dom_e52941dcd4eb4b3a60339c5aac444699/node_modules/cmdk/dist/index.mjs","../src/components/command/Command.tsx"],"sourcesContent":["var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","import * as React from \"react\";\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { tv } from \"tailwind-variants\";\nimport { MENU_ITEM_ANATOMY, menuItemStyles } from \"../menu-item\";\nimport { Icon } from \"../icon\";\nimport { narrowVariant, useComponentVariant } from \"@/providers/component-variant-context\";\nimport { menuItemShortcutStyles } from \"../menu-item/components/menu-item-shortcut/MenuItemShortcut\";\nimport { menuItemTextStyles } from \"../menu-item/components/menu-item-text/MenuItemText\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"../dialog\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { ScrollShadowContainerProps } from \"../scroll-shadow-container/ScrollShadowContainer\";\n\nconst commandStyles = tv({\n\tbase: \"flex h-full w-full flex-col overflow-hidden rounded-lg bg-secondary-bg text-primary-fg shadow-soft-md\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"border-inverse-border bg-inverse-primary-bg text-inverse-primary-fg shadow-hard-md\"\n\t\t}\n\t}\n});\n\nconst glassCommandStyles = tv({\n\tbase: \"backdrop-glass-regular flex h-full w-full flex-col overflow-hidden rounded-xl bg-alpha-40 text-primary-fg shadow-glass-md\"\n});\n\nconst Command = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst commandClassName =\n\t\tvariant === \"glass\" ? glassCommandStyles({ className }) : commandStyles({ className, theme: variant });\n\n\treturn <CommandPrimitive ref={ref} data-slot=\"command\" className={commandClassName} {...props} />;\n});\nCommand.displayName = CommandPrimitive.displayName;\n\nconst commandDialogStyles = tv({\n\tslots: {\n\t\tcontent: \"overflow-hidden border-none p-0 shadow-soft-2xl\",\n\t\tcommand: [\n\t\t\t\"rounded-xl\",\n\t\t\t\"[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted\",\n\t\t\t\"[&_[cmdk-group]]:px-1\",\n\t\t\t\"[&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4\",\n\t\t\t\"[&_[cmdk-input-wrapper]]:pl-4\",\n\t\t\t\"[&_[cmdk-group-items]]:p-1\",\n\t\t\t\"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-1.5\",\n\t\t\t\"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4\"\n\t\t]\n\t},\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: {\n\t\t\t\tcommand: \"border-inverse-border\"\n\t\t\t}\n\t\t}\n\t}\n});\n\nconst glassCommandDialogStyles = tv({\n\tslots: {\n\t\tcontent: \"backdrop-glass-regular overflow-hidden border-none bg-alpha-40 p-0 shadow-glass-md\",\n\t\tcommand: [\n\t\t\t\"rounded-xl\",\n\t\t\t\"[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted\",\n\t\t\t\"[&_[cmdk-group]]:px-1\",\n\t\t\t\"[&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4\",\n\t\t\t\"[&_[cmdk-input-wrapper]]:pl-4\",\n\t\t\t\"[&_[cmdk-group-items]]:p-1\",\n\t\t\t\"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-1.5\",\n\t\t\t\"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4\"\n\t\t]\n\t}\n});\n\nconst CommandDialog = ({\n\ttitle = \"Command Palette\",\n\tdescription = \"Search for a command to run...\",\n\tchildren,\n\tclassName,\n\toverlayType,\n\toverlayBlur,\n\t...props\n}: DialogProps & {\n\ttitle?: string;\n\tdescription?: string;\n\tclassName?: string;\n\toverlayType?: React.ComponentProps<typeof DialogContent>[\"overlayType\"];\n\toverlayBlur?: React.ComponentProps<typeof DialogContent>[\"overlayBlur\"];\n}) => {\n\tconst { variant } = useComponentVariant();\n\tconst styles = variant === \"glass\" ? glassCommandDialogStyles() : commandDialogStyles();\n\treturn (\n\t\t<Dialog {...props}>\n\t\t\t<DialogHeader className=\"sr-only!\">\n\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t<DialogDescription>{description}</DialogDescription>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\toverlayType={overlayType}\n\t\t\t\toverlayBlur={overlayBlur}\n\t\t\t\tshowCloseButton={false}\n\t\t\t>\n\t\t\t\t<Command className={styles.command()}>{children}</Command>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n};\n\nconst commandInputStyles = tv({\n\tslots: {\n\t\twrapper: \"flex items-center border-b border-secondary-border pl-3 pr-2\",\n\t\tsearch: \"mr-2 h-4 w-4 shrink-0 text-muted\",\n\t\tinput: \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted disabled:cursor-not-allowed disabled:opacity-50\"\n\t},\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: {\n\t\t\t\twrapper: \"border-inverse-border\",\n\t\t\t\tsearch: \"text-inverse-muted\",\n\t\t\t\tinput: \"placeholder:text-inverse-muted\"\n\t\t\t}\n\t\t}\n\t}\n});\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n\twrapperClassName?: string;\n};\n\nconst glassCommandInputStyles = tv({\n\tslots: {\n\t\twrapper: \"flex items-center border-b border-primary-border pl-3 pr-2\",\n\t\tsearch: \"mr-2 h-4 w-4 shrink-0 text-muted\",\n\t\tinput: \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted disabled:cursor-not-allowed disabled:opacity-50\"\n\t}\n});\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n\t({ className, wrapperClassName, ...props }, ref) => {\n\t\tconst { variant } = useComponentVariant();\n\t\tconst styles = variant === \"glass\" ? glassCommandInputStyles() : commandInputStyles({ theme: variant });\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={styles.wrapper({ className: wrapperClassName })}\n\t\t\t\tdata-slot=\"command-input-wrapper\"\n\t\t\t\tcmdk-input-wrapper=\"\"\n\t\t\t>\n\t\t\t\t<Icon icon={Search} className={styles.search()} />\n\t\t\t\t<CommandPrimitive.Input\n\t\t\t\t\tref={ref}\n\t\t\t\t\tdata-slot=\"command-input\"\n\t\t\t\t\tclassName={styles.input({ className })}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst commandListStyles = tv({\n\tbase: \"max-h-[300px] overflow-y-auto overflow-x-hidden outline-hidden\"\n});\n\nconst CommandList = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.List ref={ref} data-slot=\"command-list\" className={commandListStyles({ className })} {...props} />\n));\n\nconst commandListContainerStyles = tv({\n\tbase: \"max-h-[300px] overflow-x-hidden outline-hidden\"\n});\n\nexport type CommandListScrollShadowProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n\tcontainerClassName?: string;\n\tshadowSize?: ScrollShadowContainerProps[\"shadowSize\"];\n};\n\nconst CommandListContainer = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.List>,\n\tCommandListScrollShadowProps\n>(({ className, containerClassName, shadowSize, ...props }, ref) => (\n\t<ScrollShadowContainer\n\t\tclassName={commandListContainerStyles({ className: containerClassName })}\n\t\tdata-slot=\"command-list-scroll-shadow\"\n\t\tshadowSize={shadowSize}\n\t>\n\t\t<CommandPrimitive.List ref={ref} data-slot=\"command-list\" className={className} {...props} />\n\t</ScrollShadowContainer>\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\nCommandListContainer.displayName = \"CommandListContainer\";\n\nconst commandEmptyStyles = tv({\n\textend: menuItemTextStyles,\n\tbase: \"flex items-center justify-center px-3 py-6 text-secondary-fg\"\n});\n\nconst CommandEmpty = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Empty>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst theme = narrowVariant(variant, [\"inverse\"]);\n\n\treturn (\n\t\t<CommandPrimitive.Empty\n\t\t\tref={ref}\n\t\t\tdata-slot=\"command-empty\"\n\t\t\tclassName={commandEmptyStyles({ className, theme })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst commandGroupStyles = tv({\n\tbase: \"overflow-hidden p-1 text-primary-fg [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:text-muted\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"text-inverse-primary-fg [&_[cmdk-group-heading]]:text-inverse-muted\"\n\t\t}\n\t}\n});\n\nconst glassCommandGroupStyles = tv({\n\tbase: \"overflow-hidden p-2 text-primary-fg [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:text-muted\"\n});\n\nconst CommandGroup = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Group>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst groupClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandGroupStyles({ className })\n\t\t\t: commandGroupStyles({ className, theme: variant });\n\n\treturn <CommandPrimitive.Group ref={ref} data-slot=\"command-group\" className={groupClassName} {...props} />;\n});\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst commandSeparatorStyles = tv({\n\tbase: \"mx-1 h-px bg-secondary-border\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"bg-inverse-border\"\n\t\t}\n\t}\n});\n\nconst glassCommandSeparatorStyles = tv({\n\tbase: \"mx-1 h-px bg-primary-border\"\n});\n\nconst CommandSeparator = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst separatorClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandSeparatorStyles({ className })\n\t\t\t: commandSeparatorStyles({ className, theme: variant });\n\n\treturn (\n\t\t<CommandPrimitive.Separator ref={ref} data-slot=\"command-separator\" className={separatorClassName} {...props} />\n\t);\n});\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst commandItemStyles = tv({\n\textend: menuItemStyles,\n\tbase: \"pr-2 data-[disabled=true]:pointer-events-none data-[selected=true]:bg-secondary-bg-hover data-[selected=true]:text-primary-fg data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n});\n\nconst glassCommandItemStyles = tv({\n\tbase: [\n\t\t...MENU_ITEM_ANATOMY,\n\t\t\"rounded-lg bg-transparent pr-2 text-primary-fg\",\n\t\t\"hover:bg-secondary-border focus:bg-secondary-border\",\n\t\t\"[&:has([data-menu-item-action]:hover)]:bg-secondary-border\",\n\t\t\"data-[selected=true]:bg-secondary-border data-[selected=true]:text-primary-fg\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:shrink-0\"\n\t],\n\tvariants: {\n\t\tdisabled: {\n\t\t\ttrue: \"pointer-events-none opacity-50\"\n\t\t}\n\t}\n});\n\nconst CommandItem = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, disabled, children, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst itemClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandItemStyles({ className, disabled })\n\t\t\t: commandItemStyles({ className, disabled, theme: variant });\n\n\treturn (\n\t\t<CommandPrimitive.Item\n\t\t\tdisabled={disabled}\n\t\t\tref={ref}\n\t\t\tdata-slot=\"command-item\"\n\t\t\tclassName={itemClassName}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</CommandPrimitive.Item>\n\t);\n});\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst commandShortcutStyles = tv({\n\textend: menuItemShortcutStyles,\n\tbase: \"ml-auto text-xs tracking-widest\"\n});\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n\tconst { variant } = useComponentVariant();\n\tconst theme = narrowVariant(variant, [\"inverse\"]);\n\n\treturn <span data-slot=\"command-shortcut\" className={commandShortcutStyles({ className, theme })} {...props} />;\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nconst commandFooterStyles = tv({\n\tbase: \"flex items-center gap-1 border-t border-secondary-border bg-alpha-60 px-4 py-2.5 text-xs text-secondary-fg\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"border-inverse-border bg-alpha-high-60 text-inverse-secondary-fg\"\n\t\t}\n\t}\n});\n\nconst glassCommandFooterStyles = tv({\n\tbase: \"flex items-center gap-1 border-t border-primary-border bg-alpha-40 px-4 py-2.5 text-xs text-secondary-fg\"\n});\n\nconst CommandFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\tconst { variant } = useComponentVariant();\n\t\tconst footerClassName =\n\t\t\tvariant === \"glass\"\n\t\t\t\t? glassCommandFooterStyles({ className })\n\t\t\t\t: commandFooterStyles({ className, theme: variant });\n\n\t\treturn <div ref={ref} data-slot=\"command-footer\" className={footerClassName} {...props} />;\n\t}\n);\nCommandFooter.displayName = \"CommandFooter\";\n\nexport {\n\tCommand,\n\tCommandDialog,\n\tCommandInput,\n\tCommandList,\n\tCommandListContainer,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandItem,\n\tCommandShortcut,\n\tCommandSeparator,\n\tCommandFooter\n};\n"],"names":["U","Y","H","J","p","u","$","k","m","B","K","X","G","_","C","h","P","A","f","O","T","L","c","S","E","N","R","M","D","W","be","le","ce","Z","Re","r","o","n","ae","ue","t","de","ee","fe","me","e","a","pe","b","x","ge","j","q","I","v","ke","ne","s","i","l","g","y","z","te","F","Q","re","we","De","oe","ie","se","Te","he","d","ve","Ee","ye","Se","Ce","xe","w.Root","w.Portal","w.Overlay","w.Content","Ie","Pe","_e","Me","commandStyles","tv","glassCommandStyles","Command","React","className","props","ref","variant","useComponentVariant","commandClassName","jsx","CommandPrimitive","commandDialogStyles","glassCommandDialogStyles","CommandDialog","title","description","children","overlayType","overlayBlur","styles","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","commandInputStyles","glassCommandInputStyles","CommandInput","wrapperClassName","Icon","Search","commandListStyles","CommandList","commandListContainerStyles","CommandListContainer","containerClassName","shadowSize","ScrollShadowContainer","commandEmptyStyles","menuItemTextStyles","CommandEmpty","theme","narrowVariant","commandGroupStyles","glassCommandGroupStyles","CommandGroup","groupClassName","commandSeparatorStyles","glassCommandSeparatorStyles","CommandSeparator","separatorClassName","commandItemStyles","menuItemStyles","glassCommandItemStyles","MENU_ITEM_ANATOMY","CommandItem","disabled","itemClassName","commandShortcutStyles","menuItemShortcutStyles","CommandShortcut","commandFooterStyles","glassCommandFooterStyles","CommandFooter","footerClassName"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"Command-hVL9sUnd.js","sources":["../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react@18.3.20_react-dom_e52941dcd4eb4b3a60339c5aac444699/node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../node_modules/.pnpm/cmdk@1.1.1_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react@18.3.20_react-dom_e52941dcd4eb4b3a60339c5aac444699/node_modules/cmdk/dist/index.mjs","../src/components/command/Command.tsx"],"sourcesContent":["var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","import * as React from \"react\";\nimport { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { tv } from \"tailwind-variants\";\nimport { MENU_ITEM_ANATOMY, menuItemStyles } from \"../menu-item\";\nimport { Icon } from \"../icon\";\nimport { narrowVariant, useComponentVariant } from \"@/providers/component-variant-context\";\nimport { menuItemShortcutStyles } from \"../menu-item/components/menu-item-shortcut/MenuItemShortcut\";\nimport { menuItemTextStyles } from \"../menu-item/components/menu-item-text/MenuItemText\";\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"../dialog\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { ScrollShadowContainerProps } from \"../scroll-shadow-container/ScrollShadowContainer\";\n\nconst commandStyles = tv({\n\tbase: \"flex h-full w-full flex-col overflow-hidden rounded-lg bg-secondary-bg text-primary-fg shadow-soft-md\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"border-inverse-border bg-inverse-primary-bg text-inverse-primary-fg shadow-hard-md\"\n\t\t}\n\t}\n});\n\nconst glassCommandStyles = tv({\n\tbase: \"backdrop-glass-regular flex h-full w-full flex-col overflow-hidden rounded-xl bg-alpha-40 text-primary-fg shadow-glass-md\"\n});\n\nconst Command = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst commandClassName =\n\t\tvariant === \"glass\" ? glassCommandStyles({ className }) : commandStyles({ className, theme: variant });\n\n\treturn <CommandPrimitive ref={ref} data-slot=\"command\" className={commandClassName} {...props} />;\n});\nCommand.displayName = CommandPrimitive.displayName;\n\nconst commandDialogStyles = tv({\n\tslots: {\n\t\tcontent: \"overflow-hidden border-none p-0 shadow-soft-2xl\",\n\t\tcommand: [\n\t\t\t\"rounded-xl\",\n\t\t\t\"[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted\",\n\t\t\t\"[&_[cmdk-group]]:px-1\",\n\t\t\t\"[&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4\",\n\t\t\t\"[&_[cmdk-input-wrapper]]:pl-4\",\n\t\t\t\"[&_[cmdk-group-items]]:p-1\",\n\t\t\t\"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-1.5\",\n\t\t\t\"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4\"\n\t\t]\n\t},\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: {\n\t\t\t\tcommand: \"border-inverse-border\"\n\t\t\t}\n\t\t}\n\t}\n});\n\nconst glassCommandDialogStyles = tv({\n\tslots: {\n\t\tcontent: \"backdrop-glass-regular overflow-hidden border-none bg-alpha-40 p-0 shadow-glass-md\",\n\t\tcommand: [\n\t\t\t\"rounded-xl\",\n\t\t\t\"[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted\",\n\t\t\t\"[&_[cmdk-group]]:px-1\",\n\t\t\t\"[&_[cmdk-input-wrapper]_svg]:h-4 [&_[cmdk-input-wrapper]_svg]:w-4\",\n\t\t\t\"[&_[cmdk-input-wrapper]]:pl-4\",\n\t\t\t\"[&_[cmdk-group-items]]:p-1\",\n\t\t\t\"[&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-1.5\",\n\t\t\t\"[&_[cmdk-item]_svg]:h-4 [&_[cmdk-item]_svg]:w-4\"\n\t\t]\n\t}\n});\n\nconst CommandDialog = ({\n\ttitle = \"Command Palette\",\n\tdescription = \"Search for a command to run...\",\n\tchildren,\n\tclassName,\n\toverlayType,\n\toverlayBlur,\n\t...props\n}: DialogProps & {\n\ttitle?: string;\n\tdescription?: string;\n\tclassName?: string;\n\toverlayType?: React.ComponentProps<typeof DialogContent>[\"overlayType\"];\n\toverlayBlur?: React.ComponentProps<typeof DialogContent>[\"overlayBlur\"];\n}) => {\n\tconst { variant } = useComponentVariant();\n\tconst styles = variant === \"glass\" ? glassCommandDialogStyles() : commandDialogStyles();\n\treturn (\n\t\t<Dialog {...props}>\n\t\t\t<DialogHeader className=\"sr-only!\">\n\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t<DialogDescription>{description}</DialogDescription>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\toverlayType={overlayType}\n\t\t\t\toverlayBlur={overlayBlur}\n\t\t\t\tshowCloseButton={false}\n\t\t\t>\n\t\t\t\t<Command className={styles.command()}>{children}</Command>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n};\n\nconst commandInputStyles = tv({\n\tslots: {\n\t\twrapper: \"flex items-center border-b border-secondary-border pl-3 pr-2\",\n\t\tsearch: \"mr-2 h-4 w-4 shrink-0 text-muted\",\n\t\tinput: \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted disabled:cursor-not-allowed disabled:opacity-50\"\n\t},\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: {\n\t\t\t\twrapper: \"border-inverse-border\",\n\t\t\t\tsearch: \"text-inverse-muted\",\n\t\t\t\tinput: \"placeholder:text-inverse-muted\"\n\t\t\t}\n\t\t}\n\t}\n});\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n\twrapperClassName?: string;\n};\n\nconst glassCommandInputStyles = tv({\n\tslots: {\n\t\twrapper: \"flex items-center border-b border-primary-border pl-3 pr-2\",\n\t\tsearch: \"mr-2 h-4 w-4 shrink-0 text-muted\",\n\t\tinput: \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted disabled:cursor-not-allowed disabled:opacity-50\"\n\t}\n});\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n\t({ className, wrapperClassName, ...props }, ref) => {\n\t\tconst { variant } = useComponentVariant();\n\t\tconst styles = variant === \"glass\" ? glassCommandInputStyles() : commandInputStyles({ theme: variant });\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={styles.wrapper({ className: wrapperClassName })}\n\t\t\t\tdata-slot=\"command-input-wrapper\"\n\t\t\t\tcmdk-input-wrapper=\"\"\n\t\t\t>\n\t\t\t\t<Icon icon={Search} className={styles.search()} />\n\t\t\t\t<CommandPrimitive.Input\n\t\t\t\t\tref={ref}\n\t\t\t\t\tdata-slot=\"command-input\"\n\t\t\t\t\tclassName={styles.input({ className })}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst commandListStyles = tv({\n\tbase: \"max-h-[300px] overflow-y-auto overflow-x-hidden outline-hidden\"\n});\n\nconst CommandList = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.List ref={ref} data-slot=\"command-list\" className={commandListStyles({ className })} {...props} />\n));\n\nconst commandListContainerStyles = tv({\n\tbase: \"max-h-[300px] overflow-x-hidden outline-hidden\"\n});\n\nexport type CommandListScrollShadowProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n\tcontainerClassName?: string;\n\tshadowSize?: ScrollShadowContainerProps[\"shadowSize\"];\n};\n\nconst CommandListContainer = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.List>,\n\tCommandListScrollShadowProps\n>(({ className, containerClassName, shadowSize, ...props }, ref) => (\n\t<ScrollShadowContainer\n\t\tclassName={commandListContainerStyles({ className: containerClassName })}\n\t\tdata-slot=\"command-list-scroll-shadow\"\n\t\tshadowSize={shadowSize}\n\t>\n\t\t<CommandPrimitive.List ref={ref} data-slot=\"command-list\" className={className} {...props} />\n\t</ScrollShadowContainer>\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\nCommandListContainer.displayName = \"CommandListContainer\";\n\nconst commandEmptyStyles = tv({\n\textend: menuItemTextStyles,\n\tbase: \"flex items-center justify-center px-3 py-6 text-secondary-fg\"\n});\n\nconst CommandEmpty = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Empty>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst theme = narrowVariant(variant, [\"inverse\"]);\n\n\treturn (\n\t\t<CommandPrimitive.Empty\n\t\t\tref={ref}\n\t\t\tdata-slot=\"command-empty\"\n\t\t\tclassName={commandEmptyStyles({ className, theme })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst commandGroupStyles = tv({\n\tbase: \"overflow-hidden p-1 text-primary-fg [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:text-muted\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"text-inverse-primary-fg [&_[cmdk-group-heading]]:text-inverse-muted\"\n\t\t}\n\t}\n});\n\nconst glassCommandGroupStyles = tv({\n\tbase: \"overflow-hidden p-2 text-primary-fg [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:text-muted\"\n});\n\nconst CommandGroup = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Group>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst groupClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandGroupStyles({ className })\n\t\t\t: commandGroupStyles({ className, theme: variant });\n\n\treturn <CommandPrimitive.Group ref={ref} data-slot=\"command-group\" className={groupClassName} {...props} />;\n});\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst commandSeparatorStyles = tv({\n\tbase: \"mx-1 h-px bg-secondary-border\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"bg-inverse-border\"\n\t\t}\n\t}\n});\n\nconst glassCommandSeparatorStyles = tv({\n\tbase: \"mx-1 h-px bg-primary-border\"\n});\n\nconst CommandSeparator = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst separatorClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandSeparatorStyles({ className })\n\t\t\t: commandSeparatorStyles({ className, theme: variant });\n\n\treturn (\n\t\t<CommandPrimitive.Separator ref={ref} data-slot=\"command-separator\" className={separatorClassName} {...props} />\n\t);\n});\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst commandItemStyles = tv({\n\textend: menuItemStyles,\n\tbase: \"pr-2 data-[disabled=true]:pointer-events-none data-[selected=true]:bg-secondary-bg-hover data-[selected=true]:text-primary-fg data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n});\n\nconst glassCommandItemStyles = tv({\n\tbase: [\n\t\t...MENU_ITEM_ANATOMY,\n\t\t\"rounded-lg bg-transparent pr-2 text-primary-fg\",\n\t\t\"hover:bg-secondary-border focus:bg-secondary-border\",\n\t\t\"[&:has([data-menu-item-action]:hover)]:bg-secondary-border\",\n\t\t\"data-[selected=true]:bg-secondary-border data-[selected=true]:text-primary-fg\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:shrink-0\"\n\t],\n\tvariants: {\n\t\tdisabled: {\n\t\t\ttrue: \"pointer-events-none opacity-50\"\n\t\t}\n\t}\n});\n\nconst CommandItem = React.forwardRef<\n\tReact.ElementRef<typeof CommandPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, disabled, children, ...props }, ref) => {\n\tconst { variant } = useComponentVariant();\n\tconst itemClassName =\n\t\tvariant === \"glass\"\n\t\t\t? glassCommandItemStyles({ className, disabled })\n\t\t\t: commandItemStyles({ className, disabled, theme: variant });\n\n\treturn (\n\t\t<CommandPrimitive.Item\n\t\t\tdisabled={disabled}\n\t\t\tref={ref}\n\t\t\tdata-slot=\"command-item\"\n\t\t\tclassName={itemClassName}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</CommandPrimitive.Item>\n\t);\n});\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst commandShortcutStyles = tv({\n\textend: menuItemShortcutStyles,\n\tbase: \"ml-auto text-xs tracking-widest\"\n});\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n\tconst { variant } = useComponentVariant();\n\tconst theme = narrowVariant(variant, [\"inverse\"]);\n\n\treturn <span data-slot=\"command-shortcut\" className={commandShortcutStyles({ className, theme })} {...props} />;\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nconst commandFooterStyles = tv({\n\tbase: \"flex items-center gap-1 border-t border-secondary-border bg-alpha-60 px-4 py-2.5 text-xs text-secondary-fg\",\n\tvariants: {\n\t\ttheme: {\n\t\t\tinverse: \"border-inverse-border bg-alpha-high-60 text-inverse-secondary-fg\"\n\t\t}\n\t}\n});\n\nconst glassCommandFooterStyles = tv({\n\tbase: \"flex items-center gap-1 border-t border-primary-border bg-alpha-40 px-4 py-2.5 text-xs text-secondary-fg\"\n});\n\nconst CommandFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\tconst { variant } = useComponentVariant();\n\t\tconst footerClassName =\n\t\t\tvariant === \"glass\"\n\t\t\t\t? glassCommandFooterStyles({ className })\n\t\t\t\t: commandFooterStyles({ className, theme: variant });\n\n\t\treturn <div ref={ref} data-slot=\"command-footer\" className={footerClassName} {...props} />;\n\t}\n);\nCommandFooter.displayName = \"CommandFooter\";\n\nexport {\n\tCommand,\n\tCommandDialog,\n\tCommandInput,\n\tCommandList,\n\tCommandListContainer,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandItem,\n\tCommandShortcut,\n\tCommandSeparator,\n\tCommandFooter\n};\n"],"names":["U","Y","H","J","p","u","$","k","m","B","K","X","G","_","C","h","P","A","f","O","T","L","c","S","E","N","R","M","D","W","be","le","ce","Z","Re","r","o","n","ae","ue","t","de","ee","fe","me","e","a","pe","b","x","ge","j","q","I","v","ke","ne","s","i","l","g","y","z","te","F","Q","re","we","De","oe","ie","se","Te","he","d","ve","Ee","ye","Se","Ce","xe","w.Root","w.Portal","w.Overlay","w.Content","Ie","Pe","_e","Me","commandStyles","tv","glassCommandStyles","Command","React","className","props","ref","variant","useComponentVariant","commandClassName","jsx","CommandPrimitive","commandDialogStyles","glassCommandDialogStyles","CommandDialog","title","description","children","overlayType","overlayBlur","styles","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","commandInputStyles","glassCommandInputStyles","CommandInput","wrapperClassName","Icon","Search","commandListStyles","CommandList","commandListContainerStyles","CommandListContainer","containerClassName","shadowSize","ScrollShadowContainer","commandEmptyStyles","menuItemTextStyles","CommandEmpty","theme","narrowVariant","commandGroupStyles","glassCommandGroupStyles","CommandGroup","groupClassName","commandSeparatorStyles","glassCommandSeparatorStyles","CommandSeparator","separatorClassName","commandItemStyles","menuItemStyles","glassCommandItemStyles","MENU_ITEM_ANATOMY","CommandItem","disabled","itemClassName","commandShortcutStyles","menuItemShortcutStyles","CommandShortcut","commandFooterStyles","glassCommandFooterStyles","CommandFooter","footerClassName"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -2,7 +2,7 @@ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
2
  import { R as F, C as c, P as m, T as R, a as P, D as z, O as p, b as O } from "./index-CMxHunQ4.js";
3
3
  import * as l from "react";
4
4
  import { T as g } from "./index-BVqs-uqP.js";
5
- import { F as S, a as H, b as I, f as j, c as k } from "./FormHeader-PE63OqG9.js";
5
+ import { F as S, a as H, b as I, f as j, c as k } from "./FormHeader-CX2jsIcI.js";
6
6
  import { I as q } from "./Icon-DH3ev9GK.js";
7
7
  import { o as X } from "./Overlay-E0UvxzIc.js";
8
8
  import { X as A } from "./x-tDTt7hTQ.js";
@@ -95,4 +95,4 @@ export {
95
95
  ra as s,
96
96
  ia as t
97
97
  };
98
- //# sourceMappingURL=Dialog-i_Y-phdM.js.map
98
+ //# sourceMappingURL=Dialog-BKCZO7T_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog-i_Y-phdM.js","sources":["../src/components/dialog/Dialog.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormBody } from \"../form/components/form-body/FormBody\";\nimport { FormFooter } from \"../form/components/form-footer/FormFooter\";\nimport { formDescriptionStyles, FormHeader, formTitleStyles } from \"../form/components/form-header/FormHeader\";\nimport { Icon } from \"../icon\";\nimport { overlayStyles, OverlayVariants } from \"../overlay/Overlay\";\n\nconst Dialog = DialogPrimitive.Root;\nDialog.displayName = \"Dialog\";\n\nconst DialogTrigger = DialogPrimitive.Trigger;\nDialogTrigger.displayName = \"DialogTrigger\";\n\nconst DialogPortal = DialogPrimitive.Portal;\nDialogPortal.displayName = \"DialogPortal\";\n\nconst DialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n\tconst styles = formTitleStyles({ class: className });\n\treturn <DialogPrimitive.Title ref={ref} className={styles} {...props} />;\n});\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n\tconst styles = formDescriptionStyles({ class: className });\n\treturn <DialogPrimitive.Description ref={ref} className={styles} {...props} />;\n});\nDialogDescription.displayName = \"DialogDescription\";\n\nconst DialogHeader = FormHeader;\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogBody = FormBody;\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogFooter = FormFooter;\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogClose = DialogPrimitive.Close;\nDialogClose.displayName = \"DialogClose\";\n\nconst dialogOverlayStyles = tv({ extend: overlayStyles });\n\ninterface DialogOverlayProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>, OverlayVariants {}\n\nconst DialogOverlay = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Overlay>, DialogOverlayProps>(\n\t({ className, blur, type, ...props }, ref) => (\n\t\t<DialogPrimitive.Overlay\n\t\t\tref={ref}\n\t\t\tclassName={dialogOverlayStyles({ class: className, blur, type })}\n\t\t\t{...props}\n\t\t/>\n\t)\n);\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentStyles = tv({\n\tbase: [\n\t\t\"fixed left-[50%] top-[45%] z-50 max-h-[min(90vh,calc(100vh-44px))] w-full max-w-[min(480px,calc(100vw-32px))] translate-x-[-50%] translate-y-[-45%] lg:top-[35%] lg:max-h-[min(90vh,830px)] lg:max-w-[min(544px,calc(100vw-32px))] lg:translate-y-[-35%]\",\n\t\t\"flex flex-col gap-0 overflow-hidden rounded-xl border border-secondary-border bg-secondary-bg p-0 shadow-soft-lg\",\n\t\t\"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\"\n\t],\n\tslots: {\n\t\tcloseButton: \"absolute right-0 top-0 z-50 h-11 w-11 p-3.5 text-muted\",\n\t\tcloseIcon: \"h-4 w-4\"\n\t}\n});\n\ntype BackgroundProps = OverlayVariants;\n\nconst DialogContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n\t\toverlayBlur?: BackgroundProps[\"blur\"];\n\t\toverlayType?: BackgroundProps[\"type\"];\n\t\tshowCloseButton?: boolean;\n\t\t/**\n\t\t * Контейнер для портала. Если не указан, портал рендерится в document.body\n\t\t */\n\t\tportalContainer?: HTMLElement;\n\t}\n>((props, ref) => {\n\tconst {\n\t\tclassName,\n\t\tchildren,\n\t\toverlayBlur,\n\t\toverlayType,\n\t\tshowCloseButton = true,\n\t\tportalContainer,\n\t\t...restProps\n\t} = props;\n\tconst styles = dialogContentStyles();\n\tconst container = portalContainer;\n\treturn (\n\t\t<DialogPrimitive.Portal container={container}>\n\t\t\t<DialogOverlay blur={overlayBlur} type={overlayType} />\n\t\t\t<DialogPrimitive.Content ref={ref} className={styles.base({ className })} {...restProps}>\n\t\t\t\t{children}\n\t\t\t\t{showCloseButton && (\n\t\t\t\t\t<DialogPrimitive.Close className={styles.closeButton()}>\n\t\t\t\t\t\t<Icon className={styles.closeIcon()} size=\"lg\" icon={X}></Icon>\n\t\t\t\t\t</DialogPrimitive.Close>\n\t\t\t\t)}\n\t\t\t</DialogPrimitive.Content>\n\t\t</DialogPrimitive.Portal>\n\t);\n});\nDialogContent.displayName = \"DialogContent\";\n\nexport {\n\tDialog,\n\tDialogBody,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle,\n\tDialogTrigger\n};\n\n/** @deprecated Используйте Dialog вместо Modal */\nexport const Modal = Dialog;\n/** @deprecated Используйте DialogBody вместо ModalBody */\nexport const ModalBody = DialogBody;\n/** @deprecated Используйте DialogClose вместо ModalClose */\nexport const ModalClose = DialogClose;\n/** @deprecated Используйте DialogContent вместо ModalContent */\nexport const ModalContent = DialogContent;\n/** @deprecated Используйте DialogDescription вместо ModalDescription */\nexport const ModalDescription = DialogDescription;\n/** @deprecated Используйте DialogFooter вместо ModalFooter */\nexport const ModalFooter = DialogFooter;\n/** @deprecated Используйте DialogHeader вместо ModalHeader */\nexport const ModalHeader = DialogHeader;\n/** @deprecated Используйте DialogOverlay вместо ModalOverlay */\nexport const ModalOverlay = DialogOverlay;\n/** @deprecated Используйте DialogPortal вместо ModalPortal */\nexport const ModalPortal = DialogPortal;\n/** @deprecated Используйте DialogTitle вместо ModalTitle */\nexport const ModalTitle = DialogTitle;\n/** @deprecated Используйте DialogTrigger вместо ModalTrigger */\nexport const ModalTrigger = DialogTrigger;\n"],"names":["Dialog","DialogPrimitive.Root","DialogTrigger","DialogPrimitive.Trigger","DialogPortal","DialogPrimitive.Portal","DialogTitle","React","className","props","ref","styles","formTitleStyles","jsx","DialogPrimitive.Title","DialogDescription","formDescriptionStyles","DialogPrimitive.Description","DialogHeader","FormHeader","DialogBody","FormBody","DialogFooter","FormFooter","DialogClose","DialogPrimitive.Close","dialogOverlayStyles","tv","overlayStyles","DialogOverlay","blur","type","DialogPrimitive.Overlay","dialogContentStyles","DialogContent","children","overlayBlur","overlayType","showCloseButton","portalContainer","restProps","jsxs","DialogPrimitive.Content","Icon","X","Modal","ModalBody","ModalClose","ModalContent","ModalDescription","ModalFooter","ModalHeader","ModalOverlay","ModalPortal","ModalTitle","ModalTrigger"],"mappings":";;;;;;;;AAUA,MAAMA,IAASC;AACfD,EAAO,cAAc;AAErB,MAAME,IAAgBC;AACtBD,EAAc,cAAc;AAE5B,MAAME,IAAeC;AACrBD,EAAa,cAAc;AAErB,MAAAE,IAAcC,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnC,QAAMC,IAASC,EAAgB,EAAE,OAAOJ,GAAW;AAC5C,SAAA,gBAAAK,EAACC,GAAA,EAAsB,KAAAJ,GAAU,WAAWC,GAAS,GAAGF,GAAO;AACvE,CAAC;AACDH,EAAY,cAAc;AAEpB,MAAAS,IAAoBR,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnC,QAAMC,IAASK,EAAsB,EAAE,OAAOR,GAAW;AAClD,SAAA,gBAAAK,EAACI,GAAA,EAA4B,KAAAP,GAAU,WAAWC,GAAS,GAAGF,GAAO;AAC7E,CAAC;AACDM,EAAkB,cAAc;AAEhC,MAAMG,IAAeC;AACrBD,EAAa,cAAc;AAE3B,MAAME,IAAaC;AACnBD,EAAW,cAAc;AAEzB,MAAME,IAAeC;AACrBD,EAAa,cAAc;AAE3B,MAAME,IAAcC;AACpBD,EAAY,cAAc;AAE1B,MAAME,IAAsBC,EAAG,EAAE,QAAQC,GAAe,GAIlDC,IAAgBtB,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAC,GAAW,MAAAsB,GAAM,MAAAC,GAAM,GAAGtB,EAAA,GAASC,MACrC,gBAAAG;AAAA,IAACmB;AAAAA,IAAA;AAAA,MACA,KAAAtB;AAAA,MACA,WAAWgB,EAAoB,EAAE,OAAOlB,GAAW,MAAAsB,GAAM,MAAAC,GAAM;AAAA,MAC9D,GAAGtB;AAAA,IAAA;AAAA,EAAA;AAGP;AACAoB,EAAc,cAAcG,EAAwB;AAEpD,MAAMC,IAAsBN,EAAG;AAAA,EAC9B,MAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,aAAa;AAAA,IACb,WAAW;AAAA,EAAA;AAEb,CAAC,GAIKO,IAAgB3B,EAAM,WAW1B,CAACE,GAAOC,MAAQ;AACX,QAAA;AAAA,IACL,WAAAF;AAAA,IACA,UAAA2B;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,iBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACA/B,GACEE,IAASsB,EAAoB;AAEnC,SACE,gBAAAQ,EAAApC,GAAA,EAAuB,WAFPkC,GAGhB,UAAA;AAAA,IAAA,gBAAA1B,EAACgB,GAAc,EAAA,MAAMO,GAAa,MAAMC,GAAa;AAAA,IACpD,gBAAAI,EAAAC,GAAA,EAAwB,KAAAhC,GAAU,WAAWC,EAAO,KAAK,EAAE,WAAAH,EAAW,CAAA,GAAI,GAAGgC,GAC5E,UAAA;AAAA,MAAAL;AAAA,MACAG,KACC,gBAAAzB,EAAAY,GAAA,EAAsB,WAAWd,EAAO,YAAY,GACpD,4BAACgC,GAAK,EAAA,WAAWhC,EAAO,UAAU,GAAG,MAAK,MAAK,MAAMiC,GAAG,EACzD,CAAA;AAAA,IAAA,EAEF,CAAA;AAAA,EAAA,GACD;AAEF,CAAC;AACDV,EAAc,cAAc;AAiBrB,MAAMW,IAAQ7C,GAER8C,IAAY1B,GAEZ2B,IAAavB,GAEbwB,KAAed,GAEfe,KAAmBlC,GAEnBmC,KAAc5B,GAEd6B,KAAcjC,GAEdkC,KAAevB,GAEfwB,KAAcjD,GAEdkD,KAAahD,GAEbiD,KAAerD;"}
1
+ {"version":3,"file":"Dialog-BKCZO7T_.js","sources":["../src/components/dialog/Dialog.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormBody } from \"../form/components/form-body/FormBody\";\nimport { FormFooter } from \"../form/components/form-footer/FormFooter\";\nimport { formDescriptionStyles, FormHeader, formTitleStyles } from \"../form/components/form-header/FormHeader\";\nimport { Icon } from \"../icon\";\nimport { overlayStyles, OverlayVariants } from \"../overlay/Overlay\";\n\nconst Dialog = DialogPrimitive.Root;\nDialog.displayName = \"Dialog\";\n\nconst DialogTrigger = DialogPrimitive.Trigger;\nDialogTrigger.displayName = \"DialogTrigger\";\n\nconst DialogPortal = DialogPrimitive.Portal;\nDialogPortal.displayName = \"DialogPortal\";\n\nconst DialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => {\n\tconst styles = formTitleStyles({ class: className });\n\treturn <DialogPrimitive.Title ref={ref} className={styles} {...props} />;\n});\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => {\n\tconst styles = formDescriptionStyles({ class: className });\n\treturn <DialogPrimitive.Description ref={ref} className={styles} {...props} />;\n});\nDialogDescription.displayName = \"DialogDescription\";\n\nconst DialogHeader = FormHeader;\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogBody = FormBody;\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogFooter = FormFooter;\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogClose = DialogPrimitive.Close;\nDialogClose.displayName = \"DialogClose\";\n\nconst dialogOverlayStyles = tv({ extend: overlayStyles });\n\ninterface DialogOverlayProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>, OverlayVariants {}\n\nconst DialogOverlay = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Overlay>, DialogOverlayProps>(\n\t({ className, blur, type, ...props }, ref) => (\n\t\t<DialogPrimitive.Overlay\n\t\t\tref={ref}\n\t\t\tclassName={dialogOverlayStyles({ class: className, blur, type })}\n\t\t\t{...props}\n\t\t/>\n\t)\n);\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentStyles = tv({\n\tbase: [\n\t\t\"fixed left-[50%] top-[45%] z-50 max-h-[min(90vh,calc(100vh-44px))] w-full max-w-[min(480px,calc(100vw-32px))] translate-x-[-50%] translate-y-[-45%] lg:top-[35%] lg:max-h-[min(90vh,830px)] lg:max-w-[min(544px,calc(100vw-32px))] lg:translate-y-[-35%]\",\n\t\t\"flex flex-col gap-0 overflow-hidden rounded-xl border border-secondary-border bg-secondary-bg p-0 shadow-soft-lg\",\n\t\t\"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\"\n\t],\n\tslots: {\n\t\tcloseButton: \"absolute right-0 top-0 z-50 h-11 w-11 p-3.5 text-muted\",\n\t\tcloseIcon: \"h-4 w-4\"\n\t}\n});\n\ntype BackgroundProps = OverlayVariants;\n\nconst DialogContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n\t\toverlayBlur?: BackgroundProps[\"blur\"];\n\t\toverlayType?: BackgroundProps[\"type\"];\n\t\tshowCloseButton?: boolean;\n\t\t/**\n\t\t * Контейнер для портала. Если не указан, портал рендерится в document.body\n\t\t */\n\t\tportalContainer?: HTMLElement;\n\t}\n>((props, ref) => {\n\tconst {\n\t\tclassName,\n\t\tchildren,\n\t\toverlayBlur,\n\t\toverlayType,\n\t\tshowCloseButton = true,\n\t\tportalContainer,\n\t\t...restProps\n\t} = props;\n\tconst styles = dialogContentStyles();\n\tconst container = portalContainer;\n\treturn (\n\t\t<DialogPrimitive.Portal container={container}>\n\t\t\t<DialogOverlay blur={overlayBlur} type={overlayType} />\n\t\t\t<DialogPrimitive.Content ref={ref} className={styles.base({ className })} {...restProps}>\n\t\t\t\t{children}\n\t\t\t\t{showCloseButton && (\n\t\t\t\t\t<DialogPrimitive.Close className={styles.closeButton()}>\n\t\t\t\t\t\t<Icon className={styles.closeIcon()} size=\"lg\" icon={X}></Icon>\n\t\t\t\t\t</DialogPrimitive.Close>\n\t\t\t\t)}\n\t\t\t</DialogPrimitive.Content>\n\t\t</DialogPrimitive.Portal>\n\t);\n});\nDialogContent.displayName = \"DialogContent\";\n\nexport {\n\tDialog,\n\tDialogBody,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle,\n\tDialogTrigger\n};\n\n/** @deprecated Используйте Dialog вместо Modal */\nexport const Modal = Dialog;\n/** @deprecated Используйте DialogBody вместо ModalBody */\nexport const ModalBody = DialogBody;\n/** @deprecated Используйте DialogClose вместо ModalClose */\nexport const ModalClose = DialogClose;\n/** @deprecated Используйте DialogContent вместо ModalContent */\nexport const ModalContent = DialogContent;\n/** @deprecated Используйте DialogDescription вместо ModalDescription */\nexport const ModalDescription = DialogDescription;\n/** @deprecated Используйте DialogFooter вместо ModalFooter */\nexport const ModalFooter = DialogFooter;\n/** @deprecated Используйте DialogHeader вместо ModalHeader */\nexport const ModalHeader = DialogHeader;\n/** @deprecated Используйте DialogOverlay вместо ModalOverlay */\nexport const ModalOverlay = DialogOverlay;\n/** @deprecated Используйте DialogPortal вместо ModalPortal */\nexport const ModalPortal = DialogPortal;\n/** @deprecated Используйте DialogTitle вместо ModalTitle */\nexport const ModalTitle = DialogTitle;\n/** @deprecated Используйте DialogTrigger вместо ModalTrigger */\nexport const ModalTrigger = DialogTrigger;\n"],"names":["Dialog","DialogPrimitive.Root","DialogTrigger","DialogPrimitive.Trigger","DialogPortal","DialogPrimitive.Portal","DialogTitle","React","className","props","ref","styles","formTitleStyles","jsx","DialogPrimitive.Title","DialogDescription","formDescriptionStyles","DialogPrimitive.Description","DialogHeader","FormHeader","DialogBody","FormBody","DialogFooter","FormFooter","DialogClose","DialogPrimitive.Close","dialogOverlayStyles","tv","overlayStyles","DialogOverlay","blur","type","DialogPrimitive.Overlay","dialogContentStyles","DialogContent","children","overlayBlur","overlayType","showCloseButton","portalContainer","restProps","jsxs","DialogPrimitive.Content","Icon","X","Modal","ModalBody","ModalClose","ModalContent","ModalDescription","ModalFooter","ModalHeader","ModalOverlay","ModalPortal","ModalTitle","ModalTrigger"],"mappings":";;;;;;;;AAUA,MAAMA,IAASC;AACfD,EAAO,cAAc;AAErB,MAAME,IAAgBC;AACtBD,EAAc,cAAc;AAE5B,MAAME,IAAeC;AACrBD,EAAa,cAAc;AAErB,MAAAE,IAAcC,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnC,QAAMC,IAASC,EAAgB,EAAE,OAAOJ,GAAW;AAC5C,SAAA,gBAAAK,EAACC,GAAA,EAAsB,KAAAJ,GAAU,WAAWC,GAAS,GAAGF,GAAO;AACvE,CAAC;AACDH,EAAY,cAAc;AAEpB,MAAAS,IAAoBR,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAAQ;AACnC,QAAMC,IAASK,EAAsB,EAAE,OAAOR,GAAW;AAClD,SAAA,gBAAAK,EAACI,GAAA,EAA4B,KAAAP,GAAU,WAAWC,GAAS,GAAGF,GAAO;AAC7E,CAAC;AACDM,EAAkB,cAAc;AAEhC,MAAMG,IAAeC;AACrBD,EAAa,cAAc;AAE3B,MAAME,IAAaC;AACnBD,EAAW,cAAc;AAEzB,MAAME,IAAeC;AACrBD,EAAa,cAAc;AAE3B,MAAME,IAAcC;AACpBD,EAAY,cAAc;AAE1B,MAAME,IAAsBC,EAAG,EAAE,QAAQC,GAAe,GAIlDC,IAAgBtB,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAC,GAAW,MAAAsB,GAAM,MAAAC,GAAM,GAAGtB,EAAA,GAASC,MACrC,gBAAAG;AAAA,IAACmB;AAAAA,IAAA;AAAA,MACA,KAAAtB;AAAA,MACA,WAAWgB,EAAoB,EAAE,OAAOlB,GAAW,MAAAsB,GAAM,MAAAC,GAAM;AAAA,MAC9D,GAAGtB;AAAA,IAAA;AAAA,EAAA;AAGP;AACAoB,EAAc,cAAcG,EAAwB;AAEpD,MAAMC,IAAsBN,EAAG;AAAA,EAC9B,MAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,aAAa;AAAA,IACb,WAAW;AAAA,EAAA;AAEb,CAAC,GAIKO,IAAgB3B,EAAM,WAW1B,CAACE,GAAOC,MAAQ;AACX,QAAA;AAAA,IACL,WAAAF;AAAA,IACA,UAAA2B;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,iBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACA/B,GACEE,IAASsB,EAAoB;AAEnC,SACE,gBAAAQ,EAAApC,GAAA,EAAuB,WAFPkC,GAGhB,UAAA;AAAA,IAAA,gBAAA1B,EAACgB,GAAc,EAAA,MAAMO,GAAa,MAAMC,GAAa;AAAA,IACpD,gBAAAI,EAAAC,GAAA,EAAwB,KAAAhC,GAAU,WAAWC,EAAO,KAAK,EAAE,WAAAH,EAAW,CAAA,GAAI,GAAGgC,GAC5E,UAAA;AAAA,MAAAL;AAAA,MACAG,KACC,gBAAAzB,EAAAY,GAAA,EAAsB,WAAWd,EAAO,YAAY,GACpD,4BAACgC,GAAK,EAAA,WAAWhC,EAAO,UAAU,GAAG,MAAK,MAAK,MAAMiC,GAAG,EACzD,CAAA;AAAA,IAAA,EAEF,CAAA;AAAA,EAAA,GACD;AAEF,CAAC;AACDV,EAAc,cAAc;AAiBrB,MAAMW,IAAQ7C,GAER8C,IAAY1B,GAEZ2B,IAAavB,GAEbwB,KAAed,GAEfe,KAAmBlC,GAEnBmC,KAAc5B,GAEd6B,KAAcjC,GAEdkC,KAAevB,GAEfwB,KAAcjD,GAEdkD,KAAahD,GAEbiD,KAAerD;"}
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
2
  import { F as w } from "./FeatureIcon-BGE0Orkc.js";
3
3
  import f from "react";
4
4
  import { T as F } from "./index-BVqs-uqP.js";
5
- import { d as T, e as N, b as v, a as b } from "./FormHeader-PE63OqG9.js";
5
+ import { d as T, e as N, b as v, a as b } from "./FormHeader-CX2jsIcI.js";
6
6
  import { B as h } from "./Button-_qdP4hSf.js";
7
7
  import { a as k } from "./CheckboxField-xDqHgXHh.js";
8
8
  import { e as y } from "./useBreakpoints-DHvp74UL.js";
@@ -85,4 +85,4 @@ export {
85
85
  z as F,
86
86
  R as a
87
87
  };
88
- //# sourceMappingURL=FormFooterTemplate-CHlas_Pp.js.map
88
+ //# sourceMappingURL=FormFooterTemplate-CRkxi-Mh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormFooterTemplate-CHlas_Pp.js","sources":["../src/components/form/templates/header-template/FormHeaderTemplate.tsx","../src/components/form/templates/footer-template/FormFooterTemplate.tsx"],"sourcesContent":["import { FeatureIcon } from \"@/components/icon/feature-icon/FeatureIcon\";\nimport { LucideIcon } from \"lucide-react\";\nimport React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormDescription, FormHeader, FormTitle } from \"../../components/form-header/FormHeader\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface FormHeaderTemplateVariants {\n\talignment?: \"compact\" | \"left\" | \"center\";\n}\n\nconst formHeaderTemplateStyles = tv({\n\tslots: {\n\t\theader: \"flex items-start gap-4\",\n\t\tcontentWrapper: \"flex flex-col gap-px lg:gap-1.5\",\n\t\ticon: \"shrink-0 rounded-lg ring-0\"\n\t},\n\tvariants: {\n\t\talignment: {\n\t\t\tcompact: {\n\t\t\t\theader: \"flex-row pr-9\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\theader: \"flex-col gap-2 lg:gap-4\",\n\t\t\t\tcontentWrapper: \"gap-0.5 lg:gap-1\"\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t\theader: \"flex-col items-center gap-2 text-center lg:gap-4\",\n\t\t\t\tcontentWrapper: \"gap-0.5 lg:gap-1\"\n\t\t\t}\n\t\t}\n\t} satisfies VariantsConfig<FormHeaderTemplateVariants>,\n\tdefaultVariants: {\n\t\talignment: \"compact\"\n\t}\n});\n\nexport type BaseHeaderTemplateProps = Omit<HTMLAttributes<HTMLDivElement>, \"title\"> &\n\tFormHeaderTemplateVariants & {\n\t\t/** Заголовок формы */\n\t\ttitle: React.ReactNode;\n\t\t/** Описание формы */\n\t\tdescription?: React.ReactNode;\n\t\t/** Иконка заголовка */\n\t\ticon?: LucideIcon;\n\t\t/** Кастомная иконка заголовка */\n\t\tcustomIcon?: React.ReactNode;\n\t};\n\nexport const BaseHeaderTemplate = React.forwardRef<HTMLDivElement, PropsWithChildren<BaseHeaderTemplateProps>>(\n\t({ className, icon: Icon, title, alignment, description, customIcon, ...props }, ref) => {\n\t\tconst { header, contentWrapper, icon } = formHeaderTemplateStyles({ alignment });\n\n\t\treturn (\n\t\t\t<FormHeader ref={ref} className={header({ class: className })} {...props}>\n\t\t\t\t{Icon && <FeatureIcon size=\"xl\" icon={Icon} className={icon()} />}\n\t\t\t\t{customIcon && customIcon}\n\t\t\t\t<div className={contentWrapper()}>\n\t\t\t\t\t{title}\n\t\t\t\t\t{description}\n\t\t\t\t</div>\n\t\t\t</FormHeader>\n\t\t);\n\t}\n);\n\n/**\n * Темплейт заголовка формы. Содержит иконку, заголовок и описание.\n * Имеет различные варианты расположения элементов\n */\nexport const FormHeaderTemplate = React.forwardRef<HTMLDivElement, PropsWithChildren<BaseHeaderTemplateProps>>(\n\t({ title, description, ...props }, ref) => {\n\t\treturn (\n\t\t\t<BaseHeaderTemplate\n\t\t\t\ttitle={<FormTitle>{title}</FormTitle>}\n\t\t\t\tdescription={<FormDescription>{description}</FormDescription>}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nFormHeaderTemplate.displayName = \"FormHeaderTemplate\";\n","import { Button, ButtonProps } from \"@/components/button/button/Button\";\nimport { CheckboxField, CheckboxFieldProps } from \"@/components/checkbox/checkbox-field/CheckboxField\";\nimport { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormFooter } from \"../../components/form-footer/FormFooter\";\n\nconst formFooterTemplateStyles = tv({\n\tslots: {\n\t\tcontainer: \"flex w-full flex-col gap-3 lg:flex-row\",\n\t\tstartBlock: \"flex items-center py-1 lg:py-2.5\",\n\t\tendBlock: \"ml-auto flex w-full flex-col gap-3 lg:w-auto lg:flex-row\"\n\t}\n});\n\nexport interface FormFooterTemplateProps {\n\t/** Дополнительные классы */\n\tclassName?: string;\n\t/** Текст для чекбокса */\n\tcheckboxLabel?: string;\n\t/** Пропсы для чекбокса */\n\tcheckboxProps?: CheckboxFieldProps;\n\t/** Основная кнопка */\n\tprimaryButton?: React.ReactNode;\n\t/** Пропсы для основной кнопки */\n\tprimaryButtonProps?: ButtonProps;\n\t/** Вторичная кнопка */\n\tsecondaryButton?: React.ReactNode;\n\t/** Пропсы для вторичной кнопки */\n\tsecondaryButtonProps?: ButtonProps;\n}\n\n/**\n * Темплейт футера формы. Содержит чекбокс и 2 кнопки, которыми можно управлять.\n * Адаптивен к размерам устройств\n */\nexport const FormFooterTemplate = React.forwardRef<HTMLDivElement, FormFooterTemplateProps>(\n\t(\n\t\t{\n\t\t\tclassName,\n\t\t\tprimaryButton,\n\t\t\tsecondaryButton,\n\t\t\tcheckboxLabel,\n\t\t\tcheckboxProps,\n\t\t\tprimaryButtonProps,\n\t\t\tsecondaryButtonProps\n\t\t},\n\t\tref\n\t) => {\n\t\tconst isMobile = useIsMobile();\n\t\tconst { container, startBlock, endBlock } = formFooterTemplateStyles();\n\n\t\tif (isMobile) {\n\t\t\tprimaryButtonProps = { ...primaryButtonProps, size: \"xl\" };\n\t\t\tsecondaryButtonProps = { ...secondaryButtonProps, size: \"xl\" };\n\t\t}\n\t\tconst primaryButtonElement = primaryButton && (\n\t\t\t<Button key=\"primary-button\" variant=\"primary\" {...primaryButtonProps}>\n\t\t\t\t{primaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\tconst secondaryButtonElement = secondaryButton && (\n\t\t\t<Button key=\"secondary-button\" variant=\"outline\" {...secondaryButtonProps}>\n\t\t\t\t{secondaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\treturn (\n\t\t\t<FormFooter className={className} ref={ref}>\n\t\t\t\t<div className={container()}>\n\t\t\t\t\t{checkboxLabel && (\n\t\t\t\t\t\t<div className={startBlock()}>\n\t\t\t\t\t\t\t<CheckboxField label={checkboxLabel} {...checkboxProps} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={endBlock()}>\n\t\t\t\t\t\t{isMobile\n\t\t\t\t\t\t\t? [primaryButtonElement, secondaryButtonElement]\n\t\t\t\t\t\t\t: [secondaryButtonElement, primaryButtonElement]}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</FormFooter>\n\t\t);\n\t}\n);\n\nFormFooterTemplate.displayName = \"FormFooterTemplate\";\n"],"names":["formHeaderTemplateStyles","tv","BaseHeaderTemplate","React","className","Icon","title","alignment","description","customIcon","props","ref","header","contentWrapper","icon","jsxs","FormHeader","jsx","FeatureIcon","FormHeaderTemplate","FormTitle","FormDescription","formFooterTemplateStyles","FormFooterTemplate","primaryButton","secondaryButton","checkboxLabel","checkboxProps","primaryButtonProps","secondaryButtonProps","isMobile","useIsMobile","container","startBlock","endBlock","primaryButtonElement","Button","secondaryButtonElement","FormFooter","CheckboxField"],"mappings":"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"}
1
+ {"version":3,"file":"FormFooterTemplate-CRkxi-Mh.js","sources":["../src/components/form/templates/header-template/FormHeaderTemplate.tsx","../src/components/form/templates/footer-template/FormFooterTemplate.tsx"],"sourcesContent":["import { FeatureIcon } from \"@/components/icon/feature-icon/FeatureIcon\";\nimport { LucideIcon } from \"lucide-react\";\nimport React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormDescription, FormHeader, FormTitle } from \"../../components/form-header/FormHeader\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface FormHeaderTemplateVariants {\n\talignment?: \"compact\" | \"left\" | \"center\";\n}\n\nconst formHeaderTemplateStyles = tv({\n\tslots: {\n\t\theader: \"flex items-start gap-4\",\n\t\tcontentWrapper: \"flex flex-col gap-px lg:gap-1.5\",\n\t\ticon: \"shrink-0 rounded-lg ring-0\"\n\t},\n\tvariants: {\n\t\talignment: {\n\t\t\tcompact: {\n\t\t\t\theader: \"flex-row pr-9\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\theader: \"flex-col gap-2 lg:gap-4\",\n\t\t\t\tcontentWrapper: \"gap-0.5 lg:gap-1\"\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t\theader: \"flex-col items-center gap-2 text-center lg:gap-4\",\n\t\t\t\tcontentWrapper: \"gap-0.5 lg:gap-1\"\n\t\t\t}\n\t\t}\n\t} satisfies VariantsConfig<FormHeaderTemplateVariants>,\n\tdefaultVariants: {\n\t\talignment: \"compact\"\n\t}\n});\n\nexport type BaseHeaderTemplateProps = Omit<HTMLAttributes<HTMLDivElement>, \"title\"> &\n\tFormHeaderTemplateVariants & {\n\t\t/** Заголовок формы */\n\t\ttitle: React.ReactNode;\n\t\t/** Описание формы */\n\t\tdescription?: React.ReactNode;\n\t\t/** Иконка заголовка */\n\t\ticon?: LucideIcon;\n\t\t/** Кастомная иконка заголовка */\n\t\tcustomIcon?: React.ReactNode;\n\t};\n\nexport const BaseHeaderTemplate = React.forwardRef<HTMLDivElement, PropsWithChildren<BaseHeaderTemplateProps>>(\n\t({ className, icon: Icon, title, alignment, description, customIcon, ...props }, ref) => {\n\t\tconst { header, contentWrapper, icon } = formHeaderTemplateStyles({ alignment });\n\n\t\treturn (\n\t\t\t<FormHeader ref={ref} className={header({ class: className })} {...props}>\n\t\t\t\t{Icon && <FeatureIcon size=\"xl\" icon={Icon} className={icon()} />}\n\t\t\t\t{customIcon && customIcon}\n\t\t\t\t<div className={contentWrapper()}>\n\t\t\t\t\t{title}\n\t\t\t\t\t{description}\n\t\t\t\t</div>\n\t\t\t</FormHeader>\n\t\t);\n\t}\n);\n\n/**\n * Темплейт заголовка формы. Содержит иконку, заголовок и описание.\n * Имеет различные варианты расположения элементов\n */\nexport const FormHeaderTemplate = React.forwardRef<HTMLDivElement, PropsWithChildren<BaseHeaderTemplateProps>>(\n\t({ title, description, ...props }, ref) => {\n\t\treturn (\n\t\t\t<BaseHeaderTemplate\n\t\t\t\ttitle={<FormTitle>{title}</FormTitle>}\n\t\t\t\tdescription={<FormDescription>{description}</FormDescription>}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nFormHeaderTemplate.displayName = \"FormHeaderTemplate\";\n","import { Button, ButtonProps } from \"@/components/button/button/Button\";\nimport { CheckboxField, CheckboxFieldProps } from \"@/components/checkbox/checkbox-field/CheckboxField\";\nimport { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { FormFooter } from \"../../components/form-footer/FormFooter\";\n\nconst formFooterTemplateStyles = tv({\n\tslots: {\n\t\tcontainer: \"flex w-full flex-col gap-3 lg:flex-row\",\n\t\tstartBlock: \"flex items-center py-1 lg:py-2.5\",\n\t\tendBlock: \"ml-auto flex w-full flex-col gap-3 lg:w-auto lg:flex-row\"\n\t}\n});\n\nexport interface FormFooterTemplateProps {\n\t/** Дополнительные классы */\n\tclassName?: string;\n\t/** Текст для чекбокса */\n\tcheckboxLabel?: string;\n\t/** Пропсы для чекбокса */\n\tcheckboxProps?: CheckboxFieldProps;\n\t/** Основная кнопка */\n\tprimaryButton?: React.ReactNode;\n\t/** Пропсы для основной кнопки */\n\tprimaryButtonProps?: ButtonProps;\n\t/** Вторичная кнопка */\n\tsecondaryButton?: React.ReactNode;\n\t/** Пропсы для вторичной кнопки */\n\tsecondaryButtonProps?: ButtonProps;\n}\n\n/**\n * Темплейт футера формы. Содержит чекбокс и 2 кнопки, которыми можно управлять.\n * Адаптивен к размерам устройств\n */\nexport const FormFooterTemplate = React.forwardRef<HTMLDivElement, FormFooterTemplateProps>(\n\t(\n\t\t{\n\t\t\tclassName,\n\t\t\tprimaryButton,\n\t\t\tsecondaryButton,\n\t\t\tcheckboxLabel,\n\t\t\tcheckboxProps,\n\t\t\tprimaryButtonProps,\n\t\t\tsecondaryButtonProps\n\t\t},\n\t\tref\n\t) => {\n\t\tconst isMobile = useIsMobile();\n\t\tconst { container, startBlock, endBlock } = formFooterTemplateStyles();\n\n\t\tif (isMobile) {\n\t\t\tprimaryButtonProps = { ...primaryButtonProps, size: \"xl\" };\n\t\t\tsecondaryButtonProps = { ...secondaryButtonProps, size: \"xl\" };\n\t\t}\n\t\tconst primaryButtonElement = primaryButton && (\n\t\t\t<Button key=\"primary-button\" variant=\"primary\" {...primaryButtonProps}>\n\t\t\t\t{primaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\tconst secondaryButtonElement = secondaryButton && (\n\t\t\t<Button key=\"secondary-button\" variant=\"outline\" {...secondaryButtonProps}>\n\t\t\t\t{secondaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\treturn (\n\t\t\t<FormFooter className={className} ref={ref}>\n\t\t\t\t<div className={container()}>\n\t\t\t\t\t{checkboxLabel && (\n\t\t\t\t\t\t<div className={startBlock()}>\n\t\t\t\t\t\t\t<CheckboxField label={checkboxLabel} {...checkboxProps} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={endBlock()}>\n\t\t\t\t\t\t{isMobile\n\t\t\t\t\t\t\t? [primaryButtonElement, secondaryButtonElement]\n\t\t\t\t\t\t\t: [secondaryButtonElement, primaryButtonElement]}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</FormFooter>\n\t\t);\n\t}\n);\n\nFormFooterTemplate.displayName = \"FormFooterTemplate\";\n"],"names":["formHeaderTemplateStyles","tv","BaseHeaderTemplate","React","className","Icon","title","alignment","description","customIcon","props","ref","header","contentWrapper","icon","jsxs","FormHeader","jsx","FeatureIcon","FormHeaderTemplate","FormTitle","FormDescription","formFooterTemplateStyles","FormFooterTemplate","primaryButton","secondaryButton","checkboxLabel","checkboxProps","primaryButtonProps","secondaryButtonProps","isMobile","useIsMobile","container","startBlock","endBlock","primaryButtonElement","Button","secondaryButtonElement","FormFooter","CheckboxField"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as t, Fragment as m } from "react/jsx-runtime";
2
- import { S as d } from "./ScrollShadowContainer-DdrnF8qU.js";
2
+ import { S as d } from "./ScrollShadowContainer-KUmqA25a.js";
3
3
  import a from "react";
4
4
  import { T as n } from "./index-BVqs-uqP.js";
5
5
  const i = n({
@@ -46,4 +46,4 @@ export {
46
46
  F as e,
47
47
  x as f
48
48
  };
49
- //# sourceMappingURL=FormHeader-PE63OqG9.js.map
49
+ //# sourceMappingURL=FormHeader-CX2jsIcI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormHeader-PE63OqG9.js","sources":["../src/components/form/components/form-body/FormBody.tsx","../src/components/form/components/form-footer/FormFooter.tsx","../src/components/form/components/form-header/FormHeader.tsx"],"sourcesContent":["import { ScrollShadowContainer } from \"@/components/scroll-shadow-container\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formBodyStyles = tv({\n\tslots: {\n\t\tcontent: \"px-4 py-5 lg:p-6\"\n\t}\n});\n\n/**\n * Тело формы\n */\nexport const FormBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = formBodyStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer className={styles.content({ className })} {...props} ref={ref}>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nFormBody.displayName = \"FormBody\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formFooterStyles = tv({\n\tbase: \"shrink-0 gap-2 border-t border-secondary-border px-4 pb-4 pt-4 lg:px-6 lg:pb-6 lg:pt-5\"\n});\n\n/**\n * Футер формы\n */\nexport const FormFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={formFooterStyles({ class: className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFormFooter.displayName = \"FormFooter\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formHeaderStyles = tv({\n\tbase: \"relative shrink-0 border-b border-secondary-border px-4 pb-4 pt-4 lg:px-6 lg:pb-5 lg:pt-6\"\n});\n\n/**\n * Заголовок формы\n */\nexport const FormHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div ref={ref} className={formHeaderStyles({ class: className })} {...props}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport const formTitleStyles = tv({\n\tbase: \"font-sans text-base font-semibold leading-none tracking-tight text-primary-fg lg:text-lg lg:leading-none\"\n});\n\n/**\n * Заголовок поля\n */\nexport const FormTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <h2 ref={ref} className={formTitleStyles({ class: className })} {...props} />;\n\t}\n);\n\nFormTitle.displayName = \"FormTitle\";\n\nexport const formDescriptionStyles = tv({\n\tbase: \"font-sans text-sm font-normal tracking-tight text-muted\"\n});\n\n/**\n * Описание поля\n */\nexport const FormDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <div ref={ref} className={formDescriptionStyles({ class: className })} {...props} />;\n\t}\n);\n\nFormDescription.displayName = \"FormDescription\";\n"],"names":["formBodyStyles","tv","FormBody","React","className","children","props","ref","styles","jsx","ScrollShadowContainer","formFooterStyles","FormFooter","formHeaderStyles","FormHeader","Fragment","formTitleStyles","FormTitle","formDescriptionStyles","FormDescription"],"mappings":";;;;AAIA,MAAMA,IAAiBC,EAAG;AAAA,EACzB,OAAO;AAAA,IACN,SAAS;AAAA,EAAA;AAEX,CAAC,GAKYC,IAAWC,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAAQ;AAC3C,UAAMC,IAASR,EAAe;AAE9B,WACE,gBAAAS,EAAAC,GAAA,EAAsB,WAAWF,EAAO,QAAQ,EAAE,WAAAJ,EAAU,CAAC,GAAI,GAAGE,GAAO,KAAAC,GAC1E,UAAAF,EACF,CAAA;AAAA,EAAA;AAGH;AAEAH,EAAS,cAAc;ACtBvB,MAAMS,IAAmBV,EAAG;AAAA,EAC3B,MAAM;AACP,CAAC,GAKYW,IAAaT,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAEjC,gBAAAE,EAAA,OAAA,EAAI,KAAAF,GAAU,WAAWI,EAAiB,EAAE,OAAOP,EAAA,CAAW,GAAI,GAAGE,GACpE,UAAAD,EACF,CAAA;AAGH;AAEAO,EAAW,cAAc;ACjBzB,MAAMC,IAAmBZ,EAAG;AAAA,EAC3B,MAAM;AACP,CAAC,GAKYa,IAAaX,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAGjC,gBAAAE,EAAAM,GAAA,EAAA,UAAA,gBAAAN,EAAC,OAAI,EAAA,KAAAF,GAAU,WAAWM,EAAiB,EAAE,OAAOT,EAAW,CAAA,GAAI,GAAGE,GACpE,UAAAD,EACF,CAAA,GACD;AAGH;AAEAS,EAAW,cAAc;AAElB,MAAME,IAAkBf,EAAG;AAAA,EACjC,MAAM;AACP,CAAC,GAKYgB,IAAYd,EAAM;AAAA,EAC9B,CAAC,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAASC,MAClB,gBAAAE,EAAC,MAAG,EAAA,KAAAF,GAAU,WAAWS,EAAgB,EAAE,OAAOZ,EAAU,CAAC,GAAI,GAAGE,EAAO,CAAA;AAEpF;AAEAW,EAAU,cAAc;AAEjB,MAAMC,IAAwBjB,EAAG;AAAA,EACvC,MAAM;AACP,CAAC,GAKYkB,IAAkBhB,EAAM;AAAA,EACpC,CAAC,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAASC,MAClB,gBAAAE,EAAC,OAAI,EAAA,KAAAF,GAAU,WAAWW,EAAsB,EAAE,OAAOd,EAAU,CAAC,GAAI,GAAGE,EAAO,CAAA;AAE3F;AAEAa,EAAgB,cAAc;"}
1
+ {"version":3,"file":"FormHeader-CX2jsIcI.js","sources":["../src/components/form/components/form-body/FormBody.tsx","../src/components/form/components/form-footer/FormFooter.tsx","../src/components/form/components/form-header/FormHeader.tsx"],"sourcesContent":["import { ScrollShadowContainer } from \"@/components/scroll-shadow-container\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formBodyStyles = tv({\n\tslots: {\n\t\tcontent: \"px-4 py-5 lg:p-6\"\n\t}\n});\n\n/**\n * Тело формы\n */\nexport const FormBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = formBodyStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer className={styles.content({ className })} {...props} ref={ref}>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nFormBody.displayName = \"FormBody\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formFooterStyles = tv({\n\tbase: \"shrink-0 gap-2 border-t border-secondary-border px-4 pb-4 pt-4 lg:px-6 lg:pb-6 lg:pt-5\"\n});\n\n/**\n * Футер формы\n */\nexport const FormFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={formFooterStyles({ class: className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFormFooter.displayName = \"FormFooter\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst formHeaderStyles = tv({\n\tbase: \"relative shrink-0 border-b border-secondary-border px-4 pb-4 pt-4 lg:px-6 lg:pb-5 lg:pt-6\"\n});\n\n/**\n * Заголовок формы\n */\nexport const FormHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div ref={ref} className={formHeaderStyles({ class: className })} {...props}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport const formTitleStyles = tv({\n\tbase: \"font-sans text-base font-semibold leading-none tracking-tight text-primary-fg lg:text-lg lg:leading-none\"\n});\n\n/**\n * Заголовок поля\n */\nexport const FormTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <h2 ref={ref} className={formTitleStyles({ class: className })} {...props} />;\n\t}\n);\n\nFormTitle.displayName = \"FormTitle\";\n\nexport const formDescriptionStyles = tv({\n\tbase: \"font-sans text-sm font-normal tracking-tight text-muted\"\n});\n\n/**\n * Описание поля\n */\nexport const FormDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <div ref={ref} className={formDescriptionStyles({ class: className })} {...props} />;\n\t}\n);\n\nFormDescription.displayName = \"FormDescription\";\n"],"names":["formBodyStyles","tv","FormBody","React","className","children","props","ref","styles","jsx","ScrollShadowContainer","formFooterStyles","FormFooter","formHeaderStyles","FormHeader","Fragment","formTitleStyles","FormTitle","formDescriptionStyles","FormDescription"],"mappings":";;;;AAIA,MAAMA,IAAiBC,EAAG;AAAA,EACzB,OAAO;AAAA,IACN,SAAS;AAAA,EAAA;AAEX,CAAC,GAKYC,IAAWC,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAAQ;AAC3C,UAAMC,IAASR,EAAe;AAE9B,WACE,gBAAAS,EAAAC,GAAA,EAAsB,WAAWF,EAAO,QAAQ,EAAE,WAAAJ,EAAU,CAAC,GAAI,GAAGE,GAAO,KAAAC,GAC1E,UAAAF,EACF,CAAA;AAAA,EAAA;AAGH;AAEAH,EAAS,cAAc;ACtBvB,MAAMS,IAAmBV,EAAG;AAAA,EAC3B,MAAM;AACP,CAAC,GAKYW,IAAaT,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAEjC,gBAAAE,EAAA,OAAA,EAAI,KAAAF,GAAU,WAAWI,EAAiB,EAAE,OAAOP,EAAA,CAAW,GAAI,GAAGE,GACpE,UAAAD,EACF,CAAA;AAGH;AAEAO,EAAW,cAAc;ACjBzB,MAAMC,IAAmBZ,EAAG;AAAA,EAC3B,MAAM;AACP,CAAC,GAKYa,IAAaX,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAGjC,gBAAAE,EAAAM,GAAA,EAAA,UAAA,gBAAAN,EAAC,OAAI,EAAA,KAAAF,GAAU,WAAWM,EAAiB,EAAE,OAAOT,EAAW,CAAA,GAAI,GAAGE,GACpE,UAAAD,EACF,CAAA,GACD;AAGH;AAEAS,EAAW,cAAc;AAElB,MAAME,IAAkBf,EAAG;AAAA,EACjC,MAAM;AACP,CAAC,GAKYgB,IAAYd,EAAM;AAAA,EAC9B,CAAC,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAASC,MAClB,gBAAAE,EAAC,MAAG,EAAA,KAAAF,GAAU,WAAWS,EAAgB,EAAE,OAAOZ,EAAU,CAAC,GAAI,GAAGE,EAAO,CAAA;AAEpF;AAEAW,EAAU,cAAc;AAEjB,MAAMC,IAAwBjB,EAAG;AAAA,EACvC,MAAM;AACP,CAAC,GAKYkB,IAAkBhB,EAAM;AAAA,EACpC,CAAC,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAASC,MAClB,gBAAAE,EAAC,OAAI,EAAA,KAAAF,GAAU,WAAWW,EAAsB,EAAE,OAAOd,EAAU,CAAC,GAAI,GAAGE,EAAO,CAAA;AAE3F;AAEAa,EAAgB,cAAc;"}
@@ -1,16 +1,16 @@
1
1
  import { jsx as p } from "react/jsx-runtime";
2
2
  import * as t from "react";
3
- import { c as E } from "./cn-dsXlqdJg.js";
4
- const h = t.forwardRef(
3
+ import { c as h } from "./cn-dsXlqdJg.js";
4
+ const E = t.forwardRef(
5
5
  ({ className: b, children: k, shadowSize: c = 28, ...v }, d) => {
6
- const n = t.useRef(null), a = t.useRef(null), u = t.useRef(-1);
6
+ const n = t.useRef(null), l = t.useRef(null), u = t.useRef(-1);
7
7
  t.useImperativeHandle(d, () => n.current);
8
8
  const r = t.useCallback(() => {
9
9
  const e = n.current;
10
10
  if (!e) return;
11
- const { scrollTop: s, scrollHeight: o, clientHeight: R } = e, i = s > 0, f = s < o - R - 1, l = (i ? 1 : 0) | (f ? 2 : 0);
12
- if (l === u.current) return;
13
- if (u.current = l, l === 0) {
11
+ const { scrollTop: s, scrollHeight: o, clientHeight: R } = e, i = s > 0, f = s < o - R - 1, a = (i ? 1 : 0) | (f ? 2 : 0);
12
+ if (a === u.current) return;
13
+ if (u.current = a, a === 0) {
14
14
  e.style.maskImage = "", e.style.webkitMaskImage = "";
15
15
  return;
16
16
  }
@@ -22,15 +22,15 @@ const h = t.forwardRef(
22
22
  if (e)
23
23
  return r(), e.addEventListener("scroll", r), () => e.removeEventListener("scroll", r);
24
24
  }, [r]), t.useEffect(() => {
25
- const e = n.current, s = a.current;
25
+ const e = n.current, s = l.current;
26
26
  if (!e || !s) return;
27
27
  const o = new ResizeObserver(r);
28
28
  return o.observe(e), o.observe(s), () => o.disconnect();
29
- }, [r]), /* @__PURE__ */ p("div", { ref: n, className: E("overflow-auto", b), ...v, children: /* @__PURE__ */ p("div", { ref: a, children: k }) });
29
+ }, [r]), /* @__PURE__ */ p("div", { ref: n, className: h("overflow-auto", b), ...v, children: /* @__PURE__ */ p("div", { ref: l, className: "will-change-transform", children: k }) });
30
30
  }
31
31
  );
32
- h.displayName = "ScrollShadowContainer";
32
+ E.displayName = "ScrollShadowContainer";
33
33
  export {
34
- h as S
34
+ E as S
35
35
  };
36
- //# sourceMappingURL=ScrollShadowContainer-DdrnF8qU.js.map
36
+ //# sourceMappingURL=ScrollShadowContainer-KUmqA25a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollShadowContainer-DdrnF8qU.js","sources":["../src/components/scroll-shadow-container/ScrollShadowContainer.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ScrollShadowContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n\tchildren: React.ReactNode;\n\tshadowSize?: number;\n}\n\nexport const ScrollShadowContainer = React.forwardRef<HTMLDivElement, ScrollShadowContainerProps>(\n\t({ className, children, shadowSize = 28, ...props }, ref) => {\n\t\tconst scrollRef = React.useRef<HTMLDivElement>(null);\n\t\tconst contentRef = React.useRef<HTMLDivElement>(null);\n\t\tconst prevStateRef = React.useRef<number>(-1);\n\n\t\tReact.useImperativeHandle(ref, () => scrollRef.current as HTMLDivElement);\n\n\t\tconst updateMask = React.useCallback(() => {\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\n\t\t\tconst { scrollTop, scrollHeight, clientHeight } = el;\n\t\t\tconst showTop = scrollTop > 0;\n\t\t\tconst showBottom = scrollTop < scrollHeight - clientHeight - 1;\n\n\t\t\t// 0 = none, 1 = top, 2 = bottom, 3 = both\n\t\t\tconst state = (showTop ? 1 : 0) | (showBottom ? 2 : 0);\n\t\t\tif (state === prevStateRef.current) return;\n\t\t\tprevStateRef.current = state;\n\n\t\t\tif (state === 0) {\n\t\t\t\tel.style.maskImage = \"\";\n\t\t\t\tel.style.webkitMaskImage = \"\";\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst top = showTop ? `transparent, black ${shadowSize}px` : \"black\";\n\t\t\tconst bottom = showBottom ? `black calc(100% - ${shadowSize}px), transparent` : \"black\";\n\t\t\tconst mask = `linear-gradient(to bottom, ${top}, ${bottom})`;\n\t\t\tel.style.maskImage = mask;\n\t\t\tel.style.webkitMaskImage = mask;\n\t\t}, [shadowSize]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\n\t\t\tupdateMask();\n\t\t\tel.addEventListener(\"scroll\", updateMask);\n\n\t\t\treturn () => el.removeEventListener(\"scroll\", updateMask);\n\t\t}, [updateMask]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst scrollEl = scrollRef.current;\n\t\t\tconst contentEl = contentRef.current;\n\t\t\tif (!scrollEl || !contentEl) return;\n\n\t\t\tconst observer = new ResizeObserver(updateMask);\n\t\t\tobserver.observe(scrollEl);\n\t\t\tobserver.observe(contentEl);\n\n\t\t\treturn () => observer.disconnect();\n\t\t}, [updateMask]);\n\n\t\treturn (\n\t\t\t<div ref={scrollRef} className={cn(\"overflow-auto\", className)} {...props}>\n\t\t\t\t<div ref={contentRef}>{children}</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nScrollShadowContainer.displayName = \"ScrollShadowContainer\";\n"],"names":["ScrollShadowContainer","React","className","children","shadowSize","props","ref","scrollRef","contentRef","prevStateRef","updateMask","el","scrollTop","scrollHeight","clientHeight","showTop","showBottom","state","top","bottom","mask","scrollEl","contentEl","observer","cn","jsx"],"mappings":";;;AAQO,MAAMA,IAAwBC,EAAM;AAAA,EAC1C,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,YAAAC,IAAa,IAAI,GAAGC,EAAM,GAAGC,MAAQ;AACtD,UAAAC,IAAYN,EAAM,OAAuB,IAAI,GAC7CO,IAAaP,EAAM,OAAuB,IAAI,GAC9CQ,IAAeR,EAAM,OAAe,EAAE;AAE5C,IAAAA,EAAM,oBAAoBK,GAAK,MAAMC,EAAU,OAAyB;AAElE,UAAAG,IAAaT,EAAM,YAAY,MAAM;AAC1C,YAAMU,IAAKJ,EAAU;AACrB,UAAI,CAACI,EAAI;AAET,YAAM,EAAE,WAAAC,GAAW,cAAAC,GAAc,cAAAC,EAAiB,IAAAH,GAC5CI,IAAUH,IAAY,GACtBI,IAAaJ,IAAYC,IAAeC,IAAe,GAGvDG,KAASF,IAAU,IAAI,MAAMC,IAAa,IAAI;AAChD,UAAAC,MAAUR,EAAa,QAAS;AAGpC,UAFAA,EAAa,UAAUQ,GAEnBA,MAAU,GAAG;AAChB,QAAAN,EAAG,MAAM,YAAY,IACrBA,EAAG,MAAM,kBAAkB;AAC3B;AAAA,MAAA;AAGD,YAAMO,IAAMH,IAAU,sBAAsBX,CAAU,OAAO,SACvDe,IAASH,IAAa,qBAAqBZ,CAAU,qBAAqB,SAC1EgB,IAAO,8BAA8BF,CAAG,KAAKC,CAAM;AACzD,MAAAR,EAAG,MAAM,YAAYS,GACrBT,EAAG,MAAM,kBAAkBS;AAAA,IAAA,GACzB,CAAChB,CAAU,CAAC;AAEf,WAAAH,EAAM,UAAU,MAAM;AACrB,YAAMU,IAAKJ,EAAU;AACrB,UAAKI;AAEM,eAAAD,EAAA,GACRC,EAAA,iBAAiB,UAAUD,CAAU,GAEjC,MAAMC,EAAG,oBAAoB,UAAUD,CAAU;AAAA,IAAA,GACtD,CAACA,CAAU,CAAC,GAEfT,EAAM,UAAU,MAAM;AACrB,YAAMoB,IAAWd,EAAU,SACrBe,IAAYd,EAAW;AACzB,UAAA,CAACa,KAAY,CAACC,EAAW;AAEvB,YAAAC,IAAW,IAAI,eAAeb,CAAU;AAC9C,aAAAa,EAAS,QAAQF,CAAQ,GACzBE,EAAS,QAAQD,CAAS,GAEnB,MAAMC,EAAS,WAAW;AAAA,IAAA,GAC/B,CAACb,CAAU,CAAC,qBAGb,OAAI,EAAA,KAAKH,GAAW,WAAWiB,EAAG,iBAAiBtB,CAAS,GAAI,GAAGG,GACnE,UAAC,gBAAAoB,EAAA,OAAA,EAAI,KAAKjB,GAAa,UAAAL,EAAS,CAAA,GACjC;AAAA,EAAA;AAGH;AAEAH,EAAsB,cAAc;"}
1
+ {"version":3,"file":"ScrollShadowContainer-KUmqA25a.js","sources":["../src/components/scroll-shadow-container/ScrollShadowContainer.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ScrollShadowContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n\tchildren: React.ReactNode;\n\tshadowSize?: number;\n}\n\nexport const ScrollShadowContainer = React.forwardRef<HTMLDivElement, ScrollShadowContainerProps>(\n\t({ className, children, shadowSize = 28, ...props }, ref) => {\n\t\tconst scrollRef = React.useRef<HTMLDivElement>(null);\n\t\tconst contentRef = React.useRef<HTMLDivElement>(null);\n\t\tconst prevStateRef = React.useRef<number>(-1);\n\n\t\tReact.useImperativeHandle(ref, () => scrollRef.current as HTMLDivElement);\n\n\t\tconst updateMask = React.useCallback(() => {\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\n\t\t\tconst { scrollTop, scrollHeight, clientHeight } = el;\n\t\t\tconst showTop = scrollTop > 0;\n\t\t\tconst showBottom = scrollTop < scrollHeight - clientHeight - 1;\n\n\t\t\t// 0 = none, 1 = top, 2 = bottom, 3 = both\n\t\t\tconst state = (showTop ? 1 : 0) | (showBottom ? 2 : 0);\n\t\t\tif (state === prevStateRef.current) return;\n\t\t\tprevStateRef.current = state;\n\n\t\t\tif (state === 0) {\n\t\t\t\tel.style.maskImage = \"\";\n\t\t\t\tel.style.webkitMaskImage = \"\";\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst top = showTop ? `transparent, black ${shadowSize}px` : \"black\";\n\t\t\tconst bottom = showBottom ? `black calc(100% - ${shadowSize}px), transparent` : \"black\";\n\t\t\tconst mask = `linear-gradient(to bottom, ${top}, ${bottom})`;\n\t\t\tel.style.maskImage = mask;\n\t\t\tel.style.webkitMaskImage = mask;\n\t\t}, [shadowSize]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst el = scrollRef.current;\n\t\t\tif (!el) return;\n\n\t\t\tupdateMask();\n\t\t\tel.addEventListener(\"scroll\", updateMask);\n\n\t\t\treturn () => el.removeEventListener(\"scroll\", updateMask);\n\t\t}, [updateMask]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst scrollEl = scrollRef.current;\n\t\t\tconst contentEl = contentRef.current;\n\t\t\tif (!scrollEl || !contentEl) return;\n\n\t\t\tconst observer = new ResizeObserver(updateMask);\n\t\t\tobserver.observe(scrollEl);\n\t\t\tobserver.observe(contentEl);\n\n\t\t\treturn () => observer.disconnect();\n\t\t}, [updateMask]);\n\n\t\treturn (\n\t\t\t<div ref={scrollRef} className={cn(\"overflow-auto\", className)} {...props}>\n\t\t\t\t<div ref={contentRef} className=\"will-change-transform\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nScrollShadowContainer.displayName = \"ScrollShadowContainer\";\n"],"names":["ScrollShadowContainer","React","className","children","shadowSize","props","ref","scrollRef","contentRef","prevStateRef","updateMask","el","scrollTop","scrollHeight","clientHeight","showTop","showBottom","state","top","bottom","mask","scrollEl","contentEl","observer","cn"],"mappings":";;;AAQO,MAAMA,IAAwBC,EAAM;AAAA,EAC1C,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,YAAAC,IAAa,IAAI,GAAGC,EAAM,GAAGC,MAAQ;AACtD,UAAAC,IAAYN,EAAM,OAAuB,IAAI,GAC7CO,IAAaP,EAAM,OAAuB,IAAI,GAC9CQ,IAAeR,EAAM,OAAe,EAAE;AAE5C,IAAAA,EAAM,oBAAoBK,GAAK,MAAMC,EAAU,OAAyB;AAElE,UAAAG,IAAaT,EAAM,YAAY,MAAM;AAC1C,YAAMU,IAAKJ,EAAU;AACrB,UAAI,CAACI,EAAI;AAET,YAAM,EAAE,WAAAC,GAAW,cAAAC,GAAc,cAAAC,EAAiB,IAAAH,GAC5CI,IAAUH,IAAY,GACtBI,IAAaJ,IAAYC,IAAeC,IAAe,GAGvDG,KAASF,IAAU,IAAI,MAAMC,IAAa,IAAI;AAChD,UAAAC,MAAUR,EAAa,QAAS;AAGpC,UAFAA,EAAa,UAAUQ,GAEnBA,MAAU,GAAG;AAChB,QAAAN,EAAG,MAAM,YAAY,IACrBA,EAAG,MAAM,kBAAkB;AAC3B;AAAA,MAAA;AAGD,YAAMO,IAAMH,IAAU,sBAAsBX,CAAU,OAAO,SACvDe,IAASH,IAAa,qBAAqBZ,CAAU,qBAAqB,SAC1EgB,IAAO,8BAA8BF,CAAG,KAAKC,CAAM;AACzD,MAAAR,EAAG,MAAM,YAAYS,GACrBT,EAAG,MAAM,kBAAkBS;AAAA,IAAA,GACzB,CAAChB,CAAU,CAAC;AAEf,WAAAH,EAAM,UAAU,MAAM;AACrB,YAAMU,IAAKJ,EAAU;AACrB,UAAKI;AAEM,eAAAD,EAAA,GACRC,EAAA,iBAAiB,UAAUD,CAAU,GAEjC,MAAMC,EAAG,oBAAoB,UAAUD,CAAU;AAAA,IAAA,GACtD,CAACA,CAAU,CAAC,GAEfT,EAAM,UAAU,MAAM;AACrB,YAAMoB,IAAWd,EAAU,SACrBe,IAAYd,EAAW;AACzB,UAAA,CAACa,KAAY,CAACC,EAAW;AAEvB,YAAAC,IAAW,IAAI,eAAeb,CAAU;AAC9C,aAAAa,EAAS,QAAQF,CAAQ,GACzBE,EAAS,QAAQD,CAAS,GAEnB,MAAMC,EAAS,WAAW;AAAA,IAAA,GAC/B,CAACb,CAAU,CAAC,qBAGb,OAAI,EAAA,KAAKH,GAAW,WAAWiB,EAAG,iBAAiBtB,CAAS,GAAI,GAAGG,GACnE,4BAAC,OAAI,EAAA,KAAKG,GAAY,WAAU,yBAC9B,UAAAL,EACF,CAAA,GACD;AAAA,EAAA;AAGH;AAEAH,EAAsB,cAAc;"}
@@ -1,4 +1,4 @@
1
- import { C as o, a as n, e as s, j as C, f as d, b as t, g as r, c as e, d as i, i as p, h as u } from "../Command-WsAKNQrY.js";
1
+ import { C as o, a as n, e as s, j as C, f as d, b as t, g as r, c as e, d as i, i as p, h as u } from "../Command-hVL9sUnd.js";
2
2
  export {
3
3
  o as Command,
4
4
  n as CommandDialog,
@@ -1,8 +1,8 @@
1
- import { D as s, a as i } from "../Dialog-i_Y-phdM.js";
2
- import { b as y, c as B, d as C, e as h, f as x, g as j, h as u, i as v, j as O, M as P, k as R, l as _, m as b, n as k, o as q, p as w, q as N, r as z, s as A, t as E } from "../Dialog-i_Y-phdM.js";
1
+ import { D as s, a as i } from "../Dialog-BKCZO7T_.js";
2
+ import { b as y, c as B, d as C, e as h, f as x, g as j, h as u, i as v, j as O, M as P, k as R, l as _, m as b, n as k, o as q, p as w, q as N, r as z, s as A, t as E } from "../Dialog-BKCZO7T_.js";
3
3
  import { jsx as a } from "react/jsx-runtime";
4
4
  import d from "react";
5
- import { F as g, B as m } from "../FormFooterTemplate-CHlas_Pp.js";
5
+ import { F as g, B as m } from "../FormFooterTemplate-CRkxi-Mh.js";
6
6
  const o = d.forwardRef(
7
7
  ({ title: e, description: l, ...r }, t) => /* @__PURE__ */ a(
8
8
  m,
@@ -3,7 +3,7 @@ import * as St from "react";
3
3
  import r, { useLayoutEffect as Oe, useEffect as Ne, useMemo as $e } from "react";
4
4
  import { T as Ae, C as Me, P as He, b as Pe, D as Ie, R as _e, a as Le, O as ke } from "../index-CMxHunQ4.js";
5
5
  import { c as Ht } from "../cn-dsXlqdJg.js";
6
- import { S as Be } from "../ScrollShadowContainer-DdrnF8qU.js";
6
+ import { S as Be } from "../ScrollShadowContainer-KUmqA25a.js";
7
7
  import { o as Fe } from "../Overlay-E0UvxzIc.js";
8
8
  import { T as Q } from "../index-BVqs-uqP.js";
9
9
  import { B as bt } from "../Button-_qdP4hSf.js";
@@ -2,11 +2,11 @@ import { F as i } from "../FormStack-DfoaOry7.js";
2
2
  import { a as R, d as w, g as C, f as h, b as _, c as j, e as k, u as I } from "../FormStack-DfoaOry7.js";
3
3
  import { jsx as t } from "react/jsx-runtime";
4
4
  import { T as a } from "../index-BVqs-uqP.js";
5
- import { F as M, d as q, a as z, b as A, e as E } from "../FormHeader-PE63OqG9.js";
5
+ import { F as M, d as q, a as z, b as A, e as E } from "../FormHeader-CX2jsIcI.js";
6
6
  import { D as l } from "../Divider-DPW5ZhZ8.js";
7
7
  import s from "react";
8
8
  import { B as d } from "../Button-_qdP4hSf.js";
9
- import { F as J, a as K } from "../FormFooterTemplate-CHlas_Pp.js";
9
+ import { F as J, a as K } from "../FormFooterTemplate-CRkxi-Mh.js";
10
10
  const F = a({
11
11
  base: "text-md font-semibold"
12
12
  });
@@ -1,4 +1,4 @@
1
- import { S as a } from "../ScrollShadowContainer-DdrnF8qU.js";
1
+ import { S as a } from "../ScrollShadowContainer-KUmqA25a.js";
2
2
  export {
3
3
  a as ScrollShadowContainer
4
4
  };
@@ -2,7 +2,7 @@ import { jsx as e, jsxs as D, Fragment as q } from "react/jsx-runtime";
2
2
  import F, { useState as w, useCallback as x, useEffect as A, forwardRef as ee, useMemo as M, useRef as H } from "react";
3
3
  import { T as Q } from "../index-BVqs-uqP.js";
4
4
  import { u as K, S as fe } from "../SearchSelectTag-Dp5_OvZp.js";
5
- import { b as Se, g as re, C as te, c as ne, e as ge, i as ve } from "../Command-WsAKNQrY.js";
5
+ import { b as Se, g as re, C as te, c as ne, e as ge, i as ve } from "../Command-hVL9sUnd.js";
6
6
  import { I as j } from "../Icon-DH3ev9GK.js";
7
7
  import { b as ye, P as _, a as $ } from "../Popover-XrJa7lyb.js";
8
8
  import { m as be, s as Ce } from "../Select-DO02vXt3.js";
@@ -11,7 +11,7 @@ import { D as $ } from "../Divider-DPW5ZhZ8.js";
11
11
  import { S as y } from "../index-BtQfgaSF.js";
12
12
  import { T as n } from "../index-BVqs-uqP.js";
13
13
  import { S as I } from "../Skeleton-y6I-i9q5.js";
14
- import { S as q } from "../ScrollShadowContainer-DdrnF8qU.js";
14
+ import { S as q } from "../ScrollShadowContainer-KUmqA25a.js";
15
15
  import { P as W } from "../plus-BpxYPnAG.js";
16
16
  import { c as V } from "../createLucideIcon-DwBrHnj9.js";
17
17
  /**
@@ -1,4 +1,4 @@
1
- import { s as a, o as E, p as s, u as l, r, q as _, v as R, j as t, k as L, m as N, l as O, x as n, w as G, n as i, t as b } from "../../treeModel-CUO1A5s7.js";
1
+ import { s as a, o as E, p as s, u as l, r, q as _, v as R, j as t, k as L, m as N, l as O, x as n, w as G, n as i, t as b } from "../../treeModel-BH6Jg8rm.js";
2
2
  export {
3
3
  a as TREE_CONNECTOR_Y,
4
4
  E as TREE_INDENT,
@@ -1,4 +1,4 @@
1
- import { s, o as T, p as l, u as E, r as t, q as o, v as R, T as r, b as _, c as n, h as i, g as C, d as b, e as d, a as L, i as O, f as S, j as A, k as N, m as c, l as f, x as g, w as m, n as u, t as p } from "../treeModel-CUO1A5s7.js";
1
+ import { s, o as T, p as l, u as E, r as t, q as o, v as R, T as r, b as _, c as n, h as i, g as C, d as b, e as d, a as L, i as O, f as S, j as A, k as N, m as c, l as f, x as g, w as m, n as u, t as p } from "../treeModel-BH6Jg8rm.js";
2
2
  import { C as I, g as G, u as x } from "../useColumnResize-wjfEyBBg.js";
3
3
  import { C as F, u as H } from "../useColumnReorder-tE5pMONm.js";
4
4
  import { T as W, a as h, b as k, o as w, t as z } from "../opaqueCell-D95h1mFM.js";
@@ -26,3 +26,4 @@ export declare const Horizontal: Story;
26
26
  export declare const SingleEdge: Story;
27
27
  /** Глубина заливки: `scroll-fade-<number>` по шкале spacing. */
28
28
  export declare const Size: Story;
29
+ export declare const OverflowDisappears: Story;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Исправление scroll-fade из shadcn/tailwind.css (UIK-306).
3
+ *
4
+ * Баг (Chrome): начальный край (верх у scroll-fade/-y/-t, начало строки у
5
+ * scroll-fade-x/-s/-l) остаётся погашенным, если элемент прокрутили дальше
6
+ * --scroll-fade-reveal, а потом переполнение пропало — контент стал короче
7
+ * или контейнер шире. Анимация проявления к этому моменту закончилась, и
8
+ * fill-mode: both держит её финальное значение; когда таймлайн прокрутки
9
+ * становится неактивным, Chrome это значение не сбрасывает. Если анимация
10
+ * не закончилась (прокрутили меньше reveal), сброс проходит нормально.
11
+ *
12
+ * Поэтому у начального края две анимации, и ни одна не держит значение после
13
+ * конца:
14
+ * 1. проявление на первых --scroll-fade-reveal px — только fill backwards;
15
+ * 2. удержание полного фейда до calc(100% + 1px) — конец за пределами
16
+ * прокрутки, анимация никогда не заканчивается и пересчитывается.
17
+ * Конечный край (-b/-e/-r) не трогаем: его анимация заканчивается в нуле,
18
+ * а ноль совпадает со значением по умолчанию.
19
+ *
20
+ * Файл подключается в tailwind.css после shadcn/tailwind.css: одноимённые
21
+ * @utility Tailwind склеивает, более поздние объявления перекрывают ранние.
22
+ * Убрать, когда исправят в shadcn.
23
+ */
24
+
25
+ @keyframes scroll-fade-hold-t {
26
+ from,
27
+ to {
28
+ --scroll-fade-t: var(--_scroll-fade-size-t, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
29
+ }
30
+ }
31
+
32
+ @keyframes scroll-fade-hold-s {
33
+ from,
34
+ to {
35
+ --scroll-fade-s: var(--_scroll-fade-size-s, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
36
+ }
37
+ }
38
+
39
+ /* Верх и низ */
40
+ @utility scroll-fade {
41
+ @supports (animation-timeline: scroll()) {
42
+ animation:
43
+ scroll-fade-reveal-t 1ms ease-in-out backwards,
44
+ scroll-fade-hold-t 1ms linear,
45
+ scroll-fade-reveal-b 1ms ease-in-out both;
46
+ animation-timeline: scroll(self y), scroll(self y), scroll(self y);
47
+ animation-range:
48
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
49
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px),
50
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
51
+ }
52
+ }
53
+
54
+ @utility scroll-fade-y {
55
+ @supports (animation-timeline: scroll()) {
56
+ animation:
57
+ scroll-fade-reveal-t 1ms ease-in-out backwards,
58
+ scroll-fade-hold-t 1ms linear,
59
+ scroll-fade-reveal-b 1ms ease-in-out both;
60
+ animation-timeline: scroll(self y), scroll(self y), scroll(self y);
61
+ animation-range:
62
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
63
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px),
64
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
65
+ }
66
+ }
67
+
68
+ /* Только верх */
69
+ @utility scroll-fade-t {
70
+ @supports (animation-timeline: scroll()) {
71
+ animation:
72
+ scroll-fade-reveal-t 1ms ease-in-out backwards,
73
+ scroll-fade-hold-t 1ms linear;
74
+ animation-timeline: scroll(self y), scroll(self y);
75
+ animation-range:
76
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
77
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px);
78
+ }
79
+ }
80
+
81
+ /* Начало и конец строки */
82
+ @utility scroll-fade-x {
83
+ @supports (animation-timeline: scroll()) {
84
+ animation:
85
+ scroll-fade-reveal-s 1ms ease-in-out backwards,
86
+ scroll-fade-hold-s 1ms linear,
87
+ scroll-fade-reveal-e 1ms ease-in-out both;
88
+ animation-timeline: scroll(self inline), scroll(self inline), scroll(self inline);
89
+ animation-range:
90
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
91
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px),
92
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
93
+ }
94
+ }
95
+
96
+ /* Только начало строки */
97
+ @utility scroll-fade-s {
98
+ @supports (animation-timeline: scroll()) {
99
+ animation:
100
+ scroll-fade-reveal-s 1ms ease-in-out backwards,
101
+ scroll-fade-hold-s 1ms linear;
102
+ animation-timeline: scroll(self inline), scroll(self inline);
103
+ animation-range:
104
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
105
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px);
106
+ }
107
+ }
108
+
109
+ /* Только левый край (физическая ось x) */
110
+ @utility scroll-fade-l {
111
+ @supports (animation-timeline: scroll()) {
112
+ animation:
113
+ scroll-fade-reveal-s 1ms ease-in-out backwards,
114
+ scroll-fade-hold-s 1ms linear;
115
+ animation-timeline: scroll(self x), scroll(self x);
116
+ animation-range:
117
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
118
+ var(--scroll-fade-reveal, calc(var(--spacing) * 24)) calc(100% + 1px);
119
+ }
120
+ }
package/dist/tailwind.css CHANGED
@@ -27,6 +27,7 @@
27
27
 
28
28
  @import "tw-animate-css";
29
29
  @import "./shadcn-tailwind.css";
30
+ @import "./scroll-fade-fix.css";
30
31
  @import "./theme.css";
31
32
  @import "./font-smoothing.css";
32
33
 
@@ -2,7 +2,7 @@ import { jsx as s, jsxs as m } from "react/jsx-runtime";
2
2
  import * as l from "react";
3
3
  import { T as n } from "./index-BVqs-uqP.js";
4
4
  import { I as A } from "./Icon-DH3ev9GK.js";
5
- import { S as G } from "./ScrollShadowContainer-DdrnF8qU.js";
5
+ import { S as G } from "./ScrollShadowContainer-KUmqA25a.js";
6
6
  import { STICKY_HEADER as F, STICKY_FOOTER as P } from "./components/table/sticky.js";
7
7
  import { a as j } from "./opaqueCell-D95h1mFM.js";
8
8
  import { c as u } from "./cn-dsXlqdJg.js";
@@ -316,4 +316,4 @@ export {
316
316
  xe as w,
317
317
  he as x
318
318
  };
319
- //# sourceMappingURL=treeModel-CUO1A5s7.js.map
319
+ //# sourceMappingURL=treeModel-BH6Jg8rm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeModel-CUO1A5s7.js","sources":["../src/components/table/Table.tsx","../src/components/table/tree/treeGeometry.ts","../src/components/table/tree/TableTree.tsx","../src/components/table/tree/treeModel.ts"],"sourcesContent":["import * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { STICKY_FOOTER, STICKY_HEADER } from \"./sticky/stickyCell\";\nimport { ScrollShadowContainerProps } from \"../scroll-shadow-container/ScrollShadowContainer\";\nimport { TABLE_ROW_TINT_LAYERS } from \"./rowTint\";\n\nconst tableStyles = tv({\n\tslots: {\n\t\twrapper: \"relative w-full overflow-x-auto rounded-lg border border-secondary-border\",\n\n\t\t// Раздельная модель границ вместо схлопнутой (умолчание Tailwind для таблиц).\n\t\t// В схлопнутой модели граница принадлежит сетке таблицы, а не ячейке: `position: sticky`\n\t\t// и `transform` уносят ячейку, а линия остаётся стоять на старом месте — из-за этого\n\t\t// прилипающим шапке и колонке приходилось гасить границу и рисовать её inset-тенью.\n\t\t// В раздельной модели граница входит в бокс ячейки и едет вместе с ней.\n\t\t//\n\t\t// Плата: `border` у групп строк (`thead`, `tbody`, `tfoot`) и у самих `tr` браузер\n\t\t// обязан игнорировать, поэтому все разделители живут на ячейках — см. `TABLE_ROW_ANATOMY`,\n\t\t// `tableHeaderStyles` и `tableFooterStyles`.\n\t\ttable: \"w-full caption-bottom border-separate border-spacing-0 text-xs\"\n\t}\n});\n\nexport type TableProps = React.HTMLAttributes<HTMLTableElement> & {\n\tcontainerClassName?: string;\n\tcontainerRef?: React.Ref<HTMLDivElement>;\n};\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n\t({ className, containerClassName, containerRef, ...props }, ref) => {\n\t\tconst styles = tableStyles();\n\n\t\treturn (\n\t\t\t<div ref={containerRef} className={styles.wrapper({ className: containerClassName })}>\n\t\t\t\t<table ref={ref} className={styles.table({ className })} {...props} />\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTable.displayName = \"Table\";\n\nconst tableHeaderStyles = tv({\n\t// Линия под шапкой — на ячейках, а не на `thead`: `border` у групп строк в раздельной\n\t// модели игнорируется (см. `tableStyles`). Заодно это ровно то, что нужно прилипающей\n\t// шапке: граница ячейки уезжает вместе с ячейкой, а не остаётся в сетке таблицы.\n\t//\n\t// Ту же нижнюю границу ячейкам шапки даёт и `TableRow`; дубль намеренный — разделитель\n\t// шапки и тела это контракт самого `TableHeader`, и он не должен пропадать из-за голого\n\t// `<tr>` в разметке потребителя. Одинаковые объявления одного свойства линию не задваивают.\n\t//\n\tbase: \"bg-primary-bg [&_th]:border-b [&_th]:border-secondary-border [&_tr]:[--table-row-bg-hover:transparent]\",\n\tvariants: {\n\t\tsticky: {\n\t\t\ttrue: STICKY_HEADER\n\t\t}\n\t}\n});\n\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\t/**\n\t * Шапка остаётся на месте при вертикальной прокрутке.\n\t *\n\t * Прокручивается контейнер таблицы, поэтому ему нужна ограниченная высота\n\t * (`containerClassName=\"max-h-80\"`): без неё прокручивать нечего и `position: sticky`\n\t * ничего не делает.\n\t *\n\t * Проп, а не набор классов в `className`, потому что вместе со `sticky` требуется\n\t * `z-index`, согласованный с закреплёнными колонками, — это знание кита, а не\n\t * потребителя (см. `STICKY_HEADER`).\n\t */\n\tsticky?: boolean;\n};\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n\t({ className, sticky, ...props }, ref) => (\n\t\t<thead ref={ref} className={tableHeaderStyles({ sticky, className })} {...props} />\n\t)\n);\n\nTableHeader.displayName = \"TableHeader\";\n\nconst tableBodyStyles = tv({\n\tbase: \"bg-secondary-bg [&_tr:last-child>*]:border-b-0\"\n});\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => <tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n);\n\nTableBody.displayName = \"TableBody\";\n\nconst tableBodyContainerStyles = tv({\n\tbase: \"overflow-x-hidden\"\n});\n\nexport type TableBodyContainerProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\tcontainerClassName?: string;\n\tshadowSize?: ScrollShadowContainerProps[\"shadowSize\"];\n};\n\nexport const TableBodyContainer = React.forwardRef<HTMLTableSectionElement, TableBodyContainerProps>(\n\t({ className, containerClassName, shadowSize, ...props }, ref) => (\n\t\t<ScrollShadowContainer\n\t\t\tclassName={tableBodyContainerStyles({ className: containerClassName })}\n\t\t\tshadowSize={shadowSize}\n\t\t>\n\t\t\t<tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n\t\t</ScrollShadowContainer>\n\t)\n);\n\nTableBodyContainer.displayName = \"TableBodyContainer\";\n\nconst tableFooterStyles = tv({\n\t// Верхняя граница — на ячейках первой строки, нижняя снимается с ячеек последней:\n\t// собственный `border` у `tfoot` в раздельной модели игнорируется (см. `tableStyles`).\n\tbase: [\n\t\t\"bg-primary-bg font-medium\",\n\t\t\"[&>tr:first-child>*]:border-t [&>tr:first-child>*]:border-secondary-border\",\n\t\t\"[&>tr:last-child>*]:border-b-0\"\n\t],\n\tvariants: {\n\t\tsticky: {\n\t\t\ttrue: STICKY_FOOTER\n\t\t}\n\t}\n});\n\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\t/**\n\t * Итоги остаются на месте при вертикальной прокрутке.\n\t *\n\t * Зеркало `sticky` у `TableHeader`, и требует того же: прокручивается контейнер таблицы,\n\t * поэтому у него должна быть ограниченная высота — без неё прокручивать нечего.\n\t *\n\t * Проп, а не классы в `className`, по той же причине, что и у шапки: вместе со `sticky`\n\t * нужен `z-index`, согласованный с закреплёнными колонками (см. `STICKY_FOOTER`).\n\t */\n\tsticky?: boolean;\n};\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n\t({ className, sticky, ...props }, ref) => (\n\t\t<tfoot ref={ref} className={tableFooterStyles({ sticky, className })} {...props} />\n\t)\n);\n\nTableFooter.displayName = \"TableFooter\";\n\nconst TABLE_ROW_ANATOMY = \"[&>*]:border-b [&>*]:border-secondary-border transition-colors\";\n\n/**\n * Строка красится двумя вещами: заливкой и слоями подкраски поверх неё.\n *\n * **Заливка** — `--table-row-bg` и `--table-row-bg-hover`: обычная строка и наведённая.\n * Это всё, что кит знает про цвет строки; ни выделения, ни деактивации у примитива нет —\n * что означает подсветка и когда её включать, знает прикладной код (см. `rowTint.ts`).\n *\n * **Слои подкраски** — `--table-row-tints`, их выставляет потребитель через `tableRowTints()`.\n * Полупрозрачные цвета поверх заливки: альфы складываются и между собой, и с заливкой, поэтому\n * выделенная деактивированная строка показывает обе подсветки, а не одну.\n *\n * Заливка и слои разведены не только по смыслу, но и по свойству: `background-color` против\n * `background-image`. Поэтому `className=\"bg-…\"` вытесняет заливку — и только её: слои\n * останутся на месте и лягут поверх любого цвета, который выбрал потребитель.\n */\nconst tableRowStyles = tv({\n\tbase: [\n\t\tTABLE_ROW_ANATOMY,\n\n\t\t// Заливку читает ровно один класс на состояние — обычный `bg-*` и `hover:bg-*`, —\n\t\t// поэтому любой `bg-*` из `className` вытесняет её штатно, без `!important`\n\t\t// и без повторения модификаторов.\n\t\t\"bg-[color:var(--table-row-bg)] hover:bg-[color:var(--table-row-bg-hover)]\",\n\n\t\t// Обычная строка: подложку даёт `TableBody`, ховер — нейтральная альфа поверх неё\n\t\t// (`alpha/high/97` в макете подписана как состояние строки `hover`).\n\t\t\"[--table-row-bg-hover:hsl(var(--alpha-high-hover))] [--table-row-bg:transparent]\",\n\n\t\tTABLE_ROW_TINT_LAYERS\n\t]\n});\n\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>;\n\n/**\n * Строка таблицы.\n *\n * **Как перекрасить.** Обычными классами: `className=\"bg-… hover:bg-…\"`. Они выигрывают\n * штатно — ни `!important`, ни повторения модификаторов не нужно. Кто хочет сохранить\n * встроенное наведение и подменить только палитру — выставляет переменные `--table-row-bg`\n * и `--table-row-bg-hover`.\n *\n * **Как подсветить.** Слоями: `style={tableRowTints(…)}`, готовые цвета — в `TABLE_ROW_TINT`.\n * Слои складываются друг с другом и ложатся поверх заливки, какой бы она ни была, поэтому\n * подсветка и перекраска не конфликтуют. Подробности — в `rowTint.ts`.\n *\n * **Почему цвет читают отдельные классы, а не состояния.** Раньше `base` красил строку\n * четырьмя классами (`hover:bg-*`, `data-[state=selected]:bg-*`,\n * `data-[state=selected]:hover:bg-*`), и перебить их снаружи было нечем: `tailwind-merge`\n * снимает конфликт только между классами с одинаковым набором модификаторов, поэтому `bg-x`\n * из `className` не вытеснял ни один из них, а `data-[state=selected]:bg-*` вдобавок выигрывал\n * по специфичности — 0,2,0 против 0,1,0. Потребителю приходилось вручную повторять все четыре\n * комбинации модификаторов.\n */\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(({ className, ...props }, ref) => (\n\t<tr ref={ref} className={tableRowStyles({ className })} {...props} />\n));\n\nTableRow.displayName = \"TableRow\";\n\nconst tableHeadStyles = tv({\n\tbase: \"border-r border-secondary-border px-3 py-2.5 text-left align-middle font-medium text-muted last:border-r-0\",\n\tvariants: {\n\t\tinteractive: {\n\t\t\ttrue: [\n\t\t\t\t\"cursor-pointer p-0 transition-colors\",\n\t\t\t\t\"hover:bg-secondary-bg-hover\",\n\t\t\t\t\"data-[state=open]:bg-primary-bg-hover [&:has([data-state=open])]:bg-primary-bg-hover\"\n\t\t\t]\n\t\t}\n\t}\n});\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement> & {\n\t/**\n\t * Вся ячейка — интерактивная зона: меняет фон на наведении и на раскрытом меню,\n\t * и снимает собственный паддинг в пользу растянутого на всю ячейку триггера.\n\t */\n\tinteractive?: boolean;\n};\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n\t({ className, interactive, ...props }, ref) => (\n\t\t<th ref={ref} className={tableHeadStyles({ interactive, className })} {...props} />\n\t)\n);\n\nTableHead.displayName = \"TableHead\";\n\nconst tableCellStyles = tv({\n\tbase: \"border-r border-secondary-border px-3 py-2.5 align-middle last:border-r-0 [&:has([role=checkbox])]:pr-0\"\n});\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => <td ref={ref} className={tableCellStyles({ className })} {...props} />\n);\n\nTableCell.displayName = \"TableCell\";\n\nconst tableResizeHandleStyles = tv({\n\tbase: [\n\t\t\"absolute right-0 top-0 z-10 h-full w-2 translate-x-1/2 cursor-col-resize touch-none select-none\",\n\t\t\"after:absolute after:left-1/2 after:top-0 after:h-full after:w-0.5 after:-translate-x-1/2\",\n\t\t\"after:bg-primary-border after:opacity-0 after:transition-opacity hover:after:opacity-100\"\n\t],\n\tvariants: {\n\t\tactive: {\n\t\t\ttrue: \"after:opacity-100\"\n\t\t}\n\t}\n});\n\nexport type TableResizeHandleProps = React.HTMLAttributes<HTMLDivElement> & {\n\t/** Держит индикатор подсвеченным во время drag-сессии, когда курсор уже ушёл с ручки. */\n\tactive?: boolean;\n};\n\n/**\n * Зона захвата для ресайза колонки. Кладётся внутрь `TableHead`, которому нужен `relative`.\n * Саму ширину не считает — работает в паре с `useColumnResize` из `./column-resize`.\n * Работает только если у `TableHead` нет `overflow: hidden`.\n */\nexport const TableResizeHandle = React.forwardRef<HTMLDivElement, TableResizeHandleProps>(\n\t({ className, active, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\trole=\"separator\"\n\t\t\taria-orientation=\"vertical\"\n\t\t\tclassName={tableResizeHandleStyles({ active, className })}\n\t\t\t{...props}\n\t\t/>\n\t)\n);\n\nTableResizeHandle.displayName = \"TableResizeHandle\";\n\nconst tableCaptionStyles = tv({\n\tbase: \"mt-4 text-muted\"\n});\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n\t({ className, ...props }, ref) => <caption ref={ref} className={tableCaptionStyles({ className })} {...props} />\n);\n\nTableCaption.displayName = \"TableCaption\";\n","/**\n * Геометрия линий иерархии.\n *\n * Значения связаны между собой — менять их можно только согласованно, поэтому производные\n * выражены формулами, а не числами.\n *\n * ```\n * ┌────────────────────────────────────────┐\n * │ ┌───┐ │\n * │ │ − │ Родитель │\n * │ └─┬─┘ │\n * ├─────┼──────────────────────────────────┤ ← граница ячеек; линию продлевает TREE_OVERHANG\n * │ │ ┌───┐ │\n * │ └────┤ + │ Потомок │ ← TREE_CONNECTOR_Y (центр первой строки)\n * │ └───┘ │\n * └────────────────────────────────────────┘\n *\n * ├─────┤ TREE_LINE_OFFSET — до вертикали нулевого уровня\n * ├──────┤ TREE_INDENT — шаг между вертикалями соседних уровней\n * ├────┤ TREE_STUB — отвод до левого края раскрывателя\n * ├───┤ TREE_TOGGLE — сторона квадрата, центр на своей вертикали\n * ```\n *\n * Схема не в масштабе — важны отношения величин, а не пропорции на картинке.\n */\n\n/** Шаг отступа на один уровень вложенности. */\nexport const TREE_INDENT = 18;\n\n/** Отступ от левого края ячейки до вертикали нулевой колонки. */\nexport const TREE_LINE_OFFSET = 13;\n\n/**\n * Сторона квадрата-раскрывателя. Центрируется ровно на вертикали своего уровня.\n *\n * Совпадает с чекбоксом (`size-4`): в одной строке они стоят рядом, и разный размер\n * у двух одинаковых по смыслу квадратов читается как небрежность.\n *\n * Сверху ограничен `2 * TREE_LINE_OFFSET` — иначе `treeCellPaddingLeft(0)` уходит в минус,\n * и раскрыватель корня вылезает за левый край ячейки. Практический потолок ниже:\n * при стороне больше `TREE_INDENT` обнуляется `TREE_STUB` и отвод к узлу исчезает.\n */\nexport const TREE_TOGGLE = 16;\n\n/**\n * Длина горизонтального отвода — от вертикали предка до левого края раскрывателя.\n *\n * Обязана равняться `TREE_INDENT - TREE_TOGGLE / 2`: раскрыватель смещён от своей вертикали\n * влево на половину стороны, и при любом другом значении между отводом и квадратом\n * остаётся щель либо отвод заезжает под квадрат.\n */\nexport const TREE_STUB = TREE_INDENT - TREE_TOGGLE / 2;\n\n/** Вертикальный паддинг ячейки таблицы (`py-2.5`). */\nconst TREE_CELL_PADDING_TOP = 10;\n\n/** Высота строки текста при `text-xs`. */\nconst TREE_TEXT_LINE_HEIGHT = 16;\n\n/**\n * Вертикальная позиция коннектора — центр ПЕРВОЙ строки текста, а не середина ячейки.\n *\n * Это принципиально для строк переменной высоты: при `top: 50%` середина ячейки уезжает вниз\n * от подписи, как только контент переносится, и уголок перестаёт указывать на узел.\n */\nexport const TREE_CONNECTOR_Y = TREE_CELL_PADDING_TOP + TREE_TEXT_LINE_HEIGHT / 2;\n\n/**\n * Насколько линии вылезают за padding-box ячейки сверху и снизу.\n *\n * Нижняя граница ячейки лежит вне её padding-box, и без этого выноса вертикаль обрывалась бы\n * на каждой границе — вместо сплошной линии получался пунктир.\n */\nexport const TREE_OVERHANG = 1;\n\n/**\n * Отступ раскрывателя сверху, при котором его центр совпадает с коннектором.\n *\n * Раньше здесь стоял `mt-0.5`, подобранный под сторону 12px. Теперь это разность:\n * содержимое ячейки начинается на `TREE_CELL_PADDING_TOP`, а центр квадрата должен\n * попасть на `TREE_CONNECTOR_Y`. При достаточно крупном раскрывателе значение\n * становится отрицательным — квадрат заходит в верхний паддинг, и это нормально.\n */\nexport const TREE_TOGGLE_MARGIN_TOP = TREE_CONNECTOR_Y - TREE_CELL_PADDING_TOP - TREE_TOGGLE / 2;\n\n/**\n * Горизонтальная позиция вертикали для колонки отступа.\n *\n * @example\n * treeLineX(0); // 13\n * treeLineX(2); // 49\n */\nexport const treeLineX = (column: number) => TREE_LINE_OFFSET + column * TREE_INDENT;\n\n/**\n * Левый отступ ячейки, при котором раскрыватель встаёт по центру вертикали своего уровня.\n *\n * @example\n * <TableCell style={{ paddingLeft: treeCellPaddingLeft(row.level) }}> // уровень 2 → 41px\n */\nexport const treeCellPaddingLeft = (level: number) => treeLineX(level) - TREE_TOGGLE / 2;\n","import * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { Minus, Plus } from \"lucide-react\";\nimport { Icon } from \"../../icon/Icon\";\nimport { TableCell } from \"../Table\";\nimport { cn } from \"../../../lib/utils/cn\";\nimport {\n\tTREE_CONNECTOR_Y,\n\tTREE_OVERHANG,\n\tTREE_STUB,\n\tTREE_TOGGLE,\n\tTREE_TOGGLE_MARGIN_TOP,\n\ttreeCellPaddingLeft,\n\ttreeLineX\n} from \"./treeGeometry\";\nimport type { TreeLine, TreeRow } from \"./treeModel\";\n\nconst treeLineStyles = tv({\n\tbase: \"absolute bg-primary-border\",\n\tvariants: {\n\t\taxis: {\n\t\t\tvertical: \"w-px\",\n\t\t\thorizontal: \"h-px\"\n\t\t}\n\t}\n});\n\nexport type TableTreeLinesProps = {\n\t/**\n\t * Модель линий, по одному элементу на колонку отступа. Считается `flattenTree`.\n\t * Длина массива задаёт глубину узла — отдельный проп `level` не нужен.\n\t */\n\tlines: TreeLine[];\n\t/** Спуск от раскрывателя вниз, к первому потомку. Ставится у раскрытых узлов с потомками. */\n\tdescends?: boolean;\n\tclassName?: string;\n};\n\n/**\n * Линии связи для строки дерева или группы.\n *\n * Кладётся в ячейку с `position: relative` и `padding-left: treeCellPaddingLeft(level)` —\n * обычно этим занимается `TableTreeCell`.\n *\n * Все линии — абсолютно позиционированные блоки в 1px, а не рамки контейнеров: уровни\n * вложенности в таблице не образуют вложенных DOM-узлов, поэтому рисовать `border-left`\n * на контейнере уровня попросту негде.\n *\n * Разметка повторяет модель один в один и размечена data-атрибутами: на обёртке лежит вся\n * модель строки (`data-tree-lines=\"pass none end\"`), на каждом элементе — его роль\n * (`data-tree-line`) и номер колонки. Это делает отладку в DevTools прямой: видно не только\n * то, что нарисовано, но и то, что было велено нарисовать.\n *\n * @example\n * <TableCell className=\"relative\" style={{ paddingLeft: treeCellPaddingLeft(row.level) }}>\n * <TableTreeLines lines={row.lines} descends={row.descends} />\n * {row.node.name}\n * </TableCell>\n */\nexport const TableTreeLines = ({ lines, descends = false, className }: TableTreeLinesProps) => (\n\t<span\n\t\taria-hidden\n\t\tdata-tree-lines={lines.join(\" \")}\n\t\tdata-tree-level={lines.length}\n\t\tclassName={cn(\"pointer-events-none absolute inset-0\", className)}\n\t>\n\t\t{lines.map((kind, column) => {\n\t\t\tif (kind === \"none\") return null;\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment key={column}>\n\t\t\t\t\t<span\n\t\t\t\t\t\tdata-tree-line={kind}\n\t\t\t\t\t\tdata-tree-column={column}\n\t\t\t\t\t\tclassName={treeLineStyles({ axis: \"vertical\" })}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: treeLineX(column),\n\t\t\t\t\t\t\ttop: -TREE_OVERHANG,\n\t\t\t\t\t\t\t// `end` — уголок: вертикаль обрывается на коннекторе, иначе протекла бы\n\t\t\t\t\t\t\t// под следующие строки, где ветки этого предка уже нет.\n\t\t\t\t\t\t\t...(kind === \"end\"\n\t\t\t\t\t\t\t\t? { height: TREE_CONNECTOR_Y + TREE_OVERHANG }\n\t\t\t\t\t\t\t\t: { bottom: -TREE_OVERHANG })\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t{kind !== \"pass\" && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tdata-tree-line=\"stub\"\n\t\t\t\t\t\t\tdata-tree-column={column}\n\t\t\t\t\t\t\tclassName={treeLineStyles({ axis: \"horizontal\" })}\n\t\t\t\t\t\t\tstyle={{ left: treeLineX(column), top: TREE_CONNECTOR_Y, width: TREE_STUB }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t);\n\t\t})}\n\n\t\t{descends && (\n\t\t\t<span\n\t\t\t\tdata-tree-line=\"spur\"\n\t\t\t\tdata-tree-column={lines.length}\n\t\t\t\tclassName={treeLineStyles({ axis: \"vertical\" })}\n\t\t\t\tstyle={{\n\t\t\t\t\tleft: treeLineX(lines.length),\n\t\t\t\t\ttop: TREE_CONNECTOR_Y + TREE_TOGGLE / 2,\n\t\t\t\t\tbottom: -TREE_OVERHANG\n\t\t\t\t}}\n\t\t\t/>\n\t\t)}\n\t</span>\n);\n\nTableTreeLines.displayName = \"TableTreeLines\";\n\nconst tableTreeToggleStyles = tv({\n\tbase: [\n\t\t// `z-10` поднимает раскрыватель над линиями, непрозрачный фон разрывает вертикаль под ним.\n\t\t\"relative z-10 flex shrink-0 items-center justify-center\",\n\t\t// Рамка, фон и скругление — как у `Checkbox`: в строке они стоят рядом и должны\n\t\t// читаться одинаково.\n\t\t\"rounded-sm border border-primary-border bg-secondary-bg text-muted\",\n\t\t\"hover:text-primary-fg focus-visible:shadow-focus focus-visible:outline-hidden\",\n\t\t// Невидимое расширение зоны нажатия до 24px. Именно псевдоэлементом, а не паддингом\n\t\t// или размером: квадрат обязан остаться на сетке линий, а промахиваться по 16px\n\t\t// на строке высотой 36px легко.\n\t\t\"before:absolute before:left-1/2 before:top-1/2 before:size-6 before:-translate-x-1/2 before:-translate-y-1/2\"\n\t]\n});\n\nexport type TableTreeToggleProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> & {\n\texpanded: boolean;\n};\n\n/** Квадрат раскрытия ветки. Иконка и `aria-expanded` следуют за `expanded`. */\nexport const TableTreeToggle = React.forwardRef<HTMLButtonElement, TableTreeToggleProps>(\n\t({ className, expanded, style, ...props }, ref) => (\n\t\t<button\n\t\t\tref={ref}\n\t\t\ttype=\"button\"\n\t\t\taria-expanded={expanded}\n\t\t\tclassName={tableTreeToggleStyles({ className })}\n\t\t\tstyle={{ width: TREE_TOGGLE, height: TREE_TOGGLE, marginTop: TREE_TOGGLE_MARGIN_TOP, ...style }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Icon icon={expanded ? Minus : Plus} className=\"size-3\" />\n\t\t</button>\n\t)\n);\n\nTableTreeToggle.displayName = \"TableTreeToggle\";\n\n/**\n * Распорка на месте раскрывателя у листьев.\n *\n * Нужна, чтобы подписи узлов с потомками и без выравнивались по одной вертикали.\n * Отдельным компонентом, а не режимом `TableTreeToggle`, чтобы у листа не было\n * ни кнопки, ни `aria-expanded`.\n */\nexport const TableTreeSpacer = ({ className }: { className?: string }) => (\n\t<span aria-hidden className={cn(\"shrink-0\", className)} style={{ width: TREE_TOGGLE }} />\n);\n\nTableTreeSpacer.displayName = \"TableTreeSpacer\";\n\n/**\n * Всё, что ячейка иерархии знает о строке: где она стоит и что у неё с потомками.\n *\n * Структурный тип, а не generic: ячейке безразличен сам узел, поэтому в неё проходит любой\n * `TreeRow<T>` — и любой собранный вручную объект с этими пятью полями. Второе нужно там,\n * где дерева в памяти нет: список пришёл плоским, с готовым `level`, а линии считаются\n * `childTreeLines`.\n *\n * Инвариант: `lines.length === level`. Отступ берётся из `level`, а линии расставляются по\n * индексам `lines` — при расхождении уголок промахнётся мимо отступа.\n */\nexport type TableTreeCellRow = Pick<TreeRow<unknown>, \"level\" | \"lines\" | \"descends\" | \"hasChildren\" | \"isExpanded\">;\n\nexport type TableTreeCellProps = React.TdHTMLAttributes<HTMLTableCellElement> & {\n\t/**\n\t * Положение строки в иерархии: `level` — отступ, `lines` — линии связи, `descends` — спуск\n\t * к первому потомку, `hasChildren` — раскрыватель либо распорка на его месте, `isExpanded` —\n\t * знак в раскрывателе и `aria-expanded`.\n\t */\n\trow: TableTreeCellRow;\n\t/** Клик по раскрывателю. Без него раскрыватель рисуется, но ничего не делает. */\n\tonToggle?: React.MouseEventHandler<HTMLButtonElement>;\n\ttoggleLabel?: string;\n};\n\n/**\n * Ячейка с отступом, линиями и раскрывателем — весь столбец иерархии целиком.\n *\n * Собирает три вещи, которые иначе пришлось бы согласовывать вручную в каждой таблице:\n * `padding-left` по глубине, линии и раскрыватель либо распорку на его месте. Содержимое\n * остаётся за потребителем — внутрь идёт что угодно, от подписи до бейджей.\n *\n * `align-top` не косметика: при переносе текста в соседних колонках содержимое, выровненное\n * по центру, уедет вниз от коннектора, который привязан к первой строке.\n *\n * @example\n * <TableTreeCell row={row} onToggle={() => toggle(row.node.id)}>\n * {row.node.name}\n * </TableTreeCell>\n */\nexport const TableTreeCell = React.forwardRef<HTMLTableCellElement, TableTreeCellProps>(\n\t({ row, onToggle, toggleLabel, className, style, children, ...props }, ref) => (\n\t\t<TableCell\n\t\t\tref={ref}\n\t\t\tdata-tree-level={row.level}\n\t\t\tclassName={cn(\"relative align-top\", className)}\n\t\t\tstyle={{ paddingLeft: treeCellPaddingLeft(row.level), ...style }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<TableTreeLines lines={row.lines} descends={row.descends} />\n\t\t\t<span className=\"flex items-start gap-1.5\">\n\t\t\t\t{row.hasChildren ? (\n\t\t\t\t\t<TableTreeToggle\n\t\t\t\t\t\texpanded={row.isExpanded}\n\t\t\t\t\t\taria-label={toggleLabel ?? (row.isExpanded ? \"Свернуть\" : \"Развернуть\")}\n\t\t\t\t\t\tonClick={onToggle}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<TableTreeSpacer />\n\t\t\t\t)}\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t</TableCell>\n\t)\n);\n\nTableTreeCell.displayName = \"TableTreeCell\";\n","/**\n * Модель строки дерева: что рисовать в каждой колонке отступа.\n *\n * Ровно эти четыре состояния использует классический вывод `tree` и почти все табличные\n * гриды (AG Grid, TanStack Table, rc-tree) — набор проверен и закрывает все случаи:\n *\n * - `pass` — сквозная вертикаль `│`: ветка предка продолжается ниже этой строки;\n * - `branch` — `├`: отвод к узлу, и у узла есть следующие соседи;\n * - `end` — `└`: отвод к последнему соседу, вертикаль обрывается на уголке;\n * - `none` — пусто: ветка предка закончилась выше.\n *\n * Ключевой инвариант: **индекс в массиве равен номеру колонки**, а `lines.length` равно\n * глубине узла. `branch`/`end` встречается только в последней колонке, `pass`/`none` — только\n * в предыдущих. Именно этот инвариант убирает класс ошибок «сдвиг на единицу»: раньше\n * массив хранил флаги предков, и колонка `level - 1` управлялась флагом родителя, хотя\n * должна была — признаком `isLast` самого узла. Сравнивать модель с картинкой теперь можно\n * глазами: `[\"pass\", \"none\", \"end\"]` читается как `│ └`.\n */\nexport type TreeLine = \"none\" | \"pass\" | \"branch\" | \"end\";\n\n/** Строка плоского списка со всем, что нужно для отрисовки узла дерева. */\nexport type TreeRow<T> = {\n\tnode: T;\n\t/** Родительский узел, `null` у корней. */\n\tparent: T | null;\n\t/** Глубина, 0 — корень. Равна `lines.length`. */\n\tlevel: number;\n\t/** Позиция среди соседей. */\n\tindex: number;\n\t/** Последний ли среди соседей — от этого зависит `└` вместо `├`. */\n\tisLast: boolean;\n\thasChildren: boolean;\n\t/** Раскрыт ли узел. У листьев всегда `false`. */\n\tisExpanded: boolean;\n\t/**\n\t * Нужен ли спуск от раскрывателя вниз, к первому потомку.\n\t *\n\t * Вертикаль потомка начинается от его собственной строки, поэтому участок между\n\t * раскрывателем и низом строки родителя рисует именно родитель.\n\t */\n\tdescends: boolean;\n\tlines: TreeLine[];\n\t/** Индексы от корня: `[0, 2, 1]`. Годится как стабильный ключ и как «1.3.2» в интерфейсе. */\n\tpath: number[];\n};\n\nexport type FlattenTreeOptions<T> = {\n\t/**\n\t * Потомки узла. Это функция поиска, а не имя поля: плоскому списку с `parentId` хватит\n\t * индекса `Map<parentId, T[]>`, перекладывать данные в узлы с `children` не нужно.\n\t */\n\tgetChildren: (node: T) => T[] | undefined;\n\t/** Раскрыт ли узел. Свёрнутые не отдают потомков. По умолчанию раскрыты все. */\n\tisExpanded?: (node: T) => boolean;\n};\n\n/**\n * Линии потомка, выведенные из линий родителя.\n *\n * Весь алгоритм — в двух строчках: у предков уголок превращается в продолжение (`branch` →\n * `pass`), а обрыв — в пустоту (`end` → `none`); своя колонка получает уголок по `isLast`.\n * Экспортируется отдельно, чтобы линии можно было считать и без обхода дерева — например,\n * для виртуализованного или подгружаемого списка, где полного дерева в памяти нет.\n *\n * Родительские линии в плоском списке удобно держать бегущим массивом `linesByLevel[level]`:\n * в списке, упорядоченном как при выводе, родитель всегда встречается раньше потомка.\n *\n * @example\n * childTreeLines([\"pass\", \"branch\"], false); // [\"pass\", \"pass\", \"branch\"]\n * childTreeLines([\"pass\", \"branch\"], true); // [\"pass\", \"pass\", \"end\"]\n */\nexport const childTreeLines = (parentLines: TreeLine[], isLast: boolean): TreeLine[] => [\n\t...parentLines.map((line): TreeLine => (line === \"pass\" || line === \"branch\" ? \"pass\" : \"none\")),\n\tisLast ? \"end\" : \"branch\"\n];\n\n/**\n * Разворачивает дерево в плоский список строк и попутно считает модель линий.\n *\n * Порядок — как при отображении: узел, затем его раскрытые потомки.\n *\n * @example\n * const rows = flattenTree(nodes, {\n * getChildren: (node) => node.children,\n * isExpanded: (node) => expanded.has(node.id)\n * });\n *\n * rows.map((row) => (\n * <TableRow key={row.path.join(\".\")}>\n * <TableTreeCell row={row} onToggle={() => toggle(row.node.id)}>{row.node.name}</TableTreeCell>\n * </TableRow>\n * ));\n */\nexport function flattenTree<T>(roots: T[], options: FlattenTreeOptions<T>): TreeRow<T>[] {\n\tconst { getChildren, isExpanded = () => true } = options;\n\tconst rows: TreeRow<T>[] = [];\n\n\tconst walk = (nodes: T[], parent: T | null, level: number, parentLines: TreeLine[], parentPath: number[]) => {\n\t\tnodes.forEach((node, index) => {\n\t\t\tconst isLast = index === nodes.length - 1;\n\t\t\tconst children = getChildren(node);\n\t\t\tconst hasChildren = Boolean(children?.length);\n\t\t\tconst expanded = hasChildren && isExpanded(node);\n\t\t\t// У корней нет предка — значит, нет и колонок отступа.\n\t\t\tconst lines = level === 0 ? [] : childTreeLines(parentLines, isLast);\n\t\t\tconst path = [...parentPath, index];\n\n\t\t\trows.push({\n\t\t\t\tnode,\n\t\t\t\tparent,\n\t\t\t\tlevel,\n\t\t\t\tindex,\n\t\t\t\tisLast,\n\t\t\t\thasChildren,\n\t\t\t\tisExpanded: expanded,\n\t\t\t\tdescends: expanded,\n\t\t\t\tlines,\n\t\t\t\tpath\n\t\t\t});\n\n\t\t\tif (expanded) walk(children!, node, level + 1, lines, path);\n\t\t});\n\t};\n\n\twalk(roots, null, 0, [], []);\n\treturn rows;\n}\n"],"names":["tableStyles","tv","Table","React","className","containerClassName","containerRef","props","ref","styles","jsx","tableHeaderStyles","STICKY_HEADER","TableHeader","sticky","tableBodyStyles","TableBody","tableBodyContainerStyles","TableBodyContainer","shadowSize","ScrollShadowContainer","tableFooterStyles","STICKY_FOOTER","TableFooter","TABLE_ROW_ANATOMY","tableRowStyles","TABLE_ROW_TINT_LAYERS","TableRow","tableHeadStyles","TableHead","interactive","tableCellStyles","TableCell","tableResizeHandleStyles","TableResizeHandle","active","tableCaptionStyles","TableCaption","TREE_INDENT","TREE_LINE_OFFSET","TREE_TOGGLE","TREE_STUB","TREE_CELL_PADDING_TOP","TREE_TEXT_LINE_HEIGHT","TREE_CONNECTOR_Y","TREE_OVERHANG","TREE_TOGGLE_MARGIN_TOP","treeLineX","column","treeCellPaddingLeft","level","treeLineStyles","TableTreeLines","lines","descends","jsxs","cn","kind","tableTreeToggleStyles","TableTreeToggle","expanded","style","Icon","Minus","Plus","TableTreeSpacer","TableTreeCell","row","onToggle","toggleLabel","children","childTreeLines","parentLines","isLast","line","flattenTree","roots","options","getChildren","isExpanded","rows","walk","nodes","parent","parentPath","node","index","hasChildren","path"],"mappings":"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"}
1
+ {"version":3,"file":"treeModel-BH6Jg8rm.js","sources":["../src/components/table/Table.tsx","../src/components/table/tree/treeGeometry.ts","../src/components/table/tree/TableTree.tsx","../src/components/table/tree/treeModel.ts"],"sourcesContent":["import * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { STICKY_FOOTER, STICKY_HEADER } from \"./sticky/stickyCell\";\nimport { ScrollShadowContainerProps } from \"../scroll-shadow-container/ScrollShadowContainer\";\nimport { TABLE_ROW_TINT_LAYERS } from \"./rowTint\";\n\nconst tableStyles = tv({\n\tslots: {\n\t\twrapper: \"relative w-full overflow-x-auto rounded-lg border border-secondary-border\",\n\n\t\t// Раздельная модель границ вместо схлопнутой (умолчание Tailwind для таблиц).\n\t\t// В схлопнутой модели граница принадлежит сетке таблицы, а не ячейке: `position: sticky`\n\t\t// и `transform` уносят ячейку, а линия остаётся стоять на старом месте — из-за этого\n\t\t// прилипающим шапке и колонке приходилось гасить границу и рисовать её inset-тенью.\n\t\t// В раздельной модели граница входит в бокс ячейки и едет вместе с ней.\n\t\t//\n\t\t// Плата: `border` у групп строк (`thead`, `tbody`, `tfoot`) и у самих `tr` браузер\n\t\t// обязан игнорировать, поэтому все разделители живут на ячейках — см. `TABLE_ROW_ANATOMY`,\n\t\t// `tableHeaderStyles` и `tableFooterStyles`.\n\t\ttable: \"w-full caption-bottom border-separate border-spacing-0 text-xs\"\n\t}\n});\n\nexport type TableProps = React.HTMLAttributes<HTMLTableElement> & {\n\tcontainerClassName?: string;\n\tcontainerRef?: React.Ref<HTMLDivElement>;\n};\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n\t({ className, containerClassName, containerRef, ...props }, ref) => {\n\t\tconst styles = tableStyles();\n\n\t\treturn (\n\t\t\t<div ref={containerRef} className={styles.wrapper({ className: containerClassName })}>\n\t\t\t\t<table ref={ref} className={styles.table({ className })} {...props} />\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTable.displayName = \"Table\";\n\nconst tableHeaderStyles = tv({\n\t// Линия под шапкой — на ячейках, а не на `thead`: `border` у групп строк в раздельной\n\t// модели игнорируется (см. `tableStyles`). Заодно это ровно то, что нужно прилипающей\n\t// шапке: граница ячейки уезжает вместе с ячейкой, а не остаётся в сетке таблицы.\n\t//\n\t// Ту же нижнюю границу ячейкам шапки даёт и `TableRow`; дубль намеренный — разделитель\n\t// шапки и тела это контракт самого `TableHeader`, и он не должен пропадать из-за голого\n\t// `<tr>` в разметке потребителя. Одинаковые объявления одного свойства линию не задваивают.\n\t//\n\tbase: \"bg-primary-bg [&_th]:border-b [&_th]:border-secondary-border [&_tr]:[--table-row-bg-hover:transparent]\",\n\tvariants: {\n\t\tsticky: {\n\t\t\ttrue: STICKY_HEADER\n\t\t}\n\t}\n});\n\nexport type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\t/**\n\t * Шапка остаётся на месте при вертикальной прокрутке.\n\t *\n\t * Прокручивается контейнер таблицы, поэтому ему нужна ограниченная высота\n\t * (`containerClassName=\"max-h-80\"`): без неё прокручивать нечего и `position: sticky`\n\t * ничего не делает.\n\t *\n\t * Проп, а не набор классов в `className`, потому что вместе со `sticky` требуется\n\t * `z-index`, согласованный с закреплёнными колонками, — это знание кита, а не\n\t * потребителя (см. `STICKY_HEADER`).\n\t */\n\tsticky?: boolean;\n};\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n\t({ className, sticky, ...props }, ref) => (\n\t\t<thead ref={ref} className={tableHeaderStyles({ sticky, className })} {...props} />\n\t)\n);\n\nTableHeader.displayName = \"TableHeader\";\n\nconst tableBodyStyles = tv({\n\tbase: \"bg-secondary-bg [&_tr:last-child>*]:border-b-0\"\n});\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => <tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n);\n\nTableBody.displayName = \"TableBody\";\n\nconst tableBodyContainerStyles = tv({\n\tbase: \"overflow-x-hidden\"\n});\n\nexport type TableBodyContainerProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\tcontainerClassName?: string;\n\tshadowSize?: ScrollShadowContainerProps[\"shadowSize\"];\n};\n\nexport const TableBodyContainer = React.forwardRef<HTMLTableSectionElement, TableBodyContainerProps>(\n\t({ className, containerClassName, shadowSize, ...props }, ref) => (\n\t\t<ScrollShadowContainer\n\t\t\tclassName={tableBodyContainerStyles({ className: containerClassName })}\n\t\t\tshadowSize={shadowSize}\n\t\t>\n\t\t\t<tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n\t\t</ScrollShadowContainer>\n\t)\n);\n\nTableBodyContainer.displayName = \"TableBodyContainer\";\n\nconst tableFooterStyles = tv({\n\t// Верхняя граница — на ячейках первой строки, нижняя снимается с ячеек последней:\n\t// собственный `border` у `tfoot` в раздельной модели игнорируется (см. `tableStyles`).\n\tbase: [\n\t\t\"bg-primary-bg font-medium\",\n\t\t\"[&>tr:first-child>*]:border-t [&>tr:first-child>*]:border-secondary-border\",\n\t\t\"[&>tr:last-child>*]:border-b-0\"\n\t],\n\tvariants: {\n\t\tsticky: {\n\t\t\ttrue: STICKY_FOOTER\n\t\t}\n\t}\n});\n\nexport type TableFooterProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\t/**\n\t * Итоги остаются на месте при вертикальной прокрутке.\n\t *\n\t * Зеркало `sticky` у `TableHeader`, и требует того же: прокручивается контейнер таблицы,\n\t * поэтому у него должна быть ограниченная высота — без неё прокручивать нечего.\n\t *\n\t * Проп, а не классы в `className`, по той же причине, что и у шапки: вместе со `sticky`\n\t * нужен `z-index`, согласованный с закреплёнными колонками (см. `STICKY_FOOTER`).\n\t */\n\tsticky?: boolean;\n};\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, TableFooterProps>(\n\t({ className, sticky, ...props }, ref) => (\n\t\t<tfoot ref={ref} className={tableFooterStyles({ sticky, className })} {...props} />\n\t)\n);\n\nTableFooter.displayName = \"TableFooter\";\n\nconst TABLE_ROW_ANATOMY = \"[&>*]:border-b [&>*]:border-secondary-border transition-colors\";\n\n/**\n * Строка красится двумя вещами: заливкой и слоями подкраски поверх неё.\n *\n * **Заливка** — `--table-row-bg` и `--table-row-bg-hover`: обычная строка и наведённая.\n * Это всё, что кит знает про цвет строки; ни выделения, ни деактивации у примитива нет —\n * что означает подсветка и когда её включать, знает прикладной код (см. `rowTint.ts`).\n *\n * **Слои подкраски** — `--table-row-tints`, их выставляет потребитель через `tableRowTints()`.\n * Полупрозрачные цвета поверх заливки: альфы складываются и между собой, и с заливкой, поэтому\n * выделенная деактивированная строка показывает обе подсветки, а не одну.\n *\n * Заливка и слои разведены не только по смыслу, но и по свойству: `background-color` против\n * `background-image`. Поэтому `className=\"bg-…\"` вытесняет заливку — и только её: слои\n * останутся на месте и лягут поверх любого цвета, который выбрал потребитель.\n */\nconst tableRowStyles = tv({\n\tbase: [\n\t\tTABLE_ROW_ANATOMY,\n\n\t\t// Заливку читает ровно один класс на состояние — обычный `bg-*` и `hover:bg-*`, —\n\t\t// поэтому любой `bg-*` из `className` вытесняет её штатно, без `!important`\n\t\t// и без повторения модификаторов.\n\t\t\"bg-[color:var(--table-row-bg)] hover:bg-[color:var(--table-row-bg-hover)]\",\n\n\t\t// Обычная строка: подложку даёт `TableBody`, ховер — нейтральная альфа поверх неё\n\t\t// (`alpha/high/97` в макете подписана как состояние строки `hover`).\n\t\t\"[--table-row-bg-hover:hsl(var(--alpha-high-hover))] [--table-row-bg:transparent]\",\n\n\t\tTABLE_ROW_TINT_LAYERS\n\t]\n});\n\nexport type TableRowProps = React.HTMLAttributes<HTMLTableRowElement>;\n\n/**\n * Строка таблицы.\n *\n * **Как перекрасить.** Обычными классами: `className=\"bg-… hover:bg-…\"`. Они выигрывают\n * штатно — ни `!important`, ни повторения модификаторов не нужно. Кто хочет сохранить\n * встроенное наведение и подменить только палитру — выставляет переменные `--table-row-bg`\n * и `--table-row-bg-hover`.\n *\n * **Как подсветить.** Слоями: `style={tableRowTints(…)}`, готовые цвета — в `TABLE_ROW_TINT`.\n * Слои складываются друг с другом и ложатся поверх заливки, какой бы она ни была, поэтому\n * подсветка и перекраска не конфликтуют. Подробности — в `rowTint.ts`.\n *\n * **Почему цвет читают отдельные классы, а не состояния.** Раньше `base` красил строку\n * четырьмя классами (`hover:bg-*`, `data-[state=selected]:bg-*`,\n * `data-[state=selected]:hover:bg-*`), и перебить их снаружи было нечем: `tailwind-merge`\n * снимает конфликт только между классами с одинаковым набором модификаторов, поэтому `bg-x`\n * из `className` не вытеснял ни один из них, а `data-[state=selected]:bg-*` вдобавок выигрывал\n * по специфичности — 0,2,0 против 0,1,0. Потребителю приходилось вручную повторять все четыре\n * комбинации модификаторов.\n */\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(({ className, ...props }, ref) => (\n\t<tr ref={ref} className={tableRowStyles({ className })} {...props} />\n));\n\nTableRow.displayName = \"TableRow\";\n\nconst tableHeadStyles = tv({\n\tbase: \"border-r border-secondary-border px-3 py-2.5 text-left align-middle font-medium text-muted last:border-r-0\",\n\tvariants: {\n\t\tinteractive: {\n\t\t\ttrue: [\n\t\t\t\t\"cursor-pointer p-0 transition-colors\",\n\t\t\t\t\"hover:bg-secondary-bg-hover\",\n\t\t\t\t\"data-[state=open]:bg-primary-bg-hover [&:has([data-state=open])]:bg-primary-bg-hover\"\n\t\t\t]\n\t\t}\n\t}\n});\n\nexport type TableHeadProps = React.ThHTMLAttributes<HTMLTableCellElement> & {\n\t/**\n\t * Вся ячейка — интерактивная зона: меняет фон на наведении и на раскрытом меню,\n\t * и снимает собственный паддинг в пользу растянутого на всю ячейку триггера.\n\t */\n\tinteractive?: boolean;\n};\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n\t({ className, interactive, ...props }, ref) => (\n\t\t<th ref={ref} className={tableHeadStyles({ interactive, className })} {...props} />\n\t)\n);\n\nTableHead.displayName = \"TableHead\";\n\nconst tableCellStyles = tv({\n\tbase: \"border-r border-secondary-border px-3 py-2.5 align-middle last:border-r-0 [&:has([role=checkbox])]:pr-0\"\n});\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => <td ref={ref} className={tableCellStyles({ className })} {...props} />\n);\n\nTableCell.displayName = \"TableCell\";\n\nconst tableResizeHandleStyles = tv({\n\tbase: [\n\t\t\"absolute right-0 top-0 z-10 h-full w-2 translate-x-1/2 cursor-col-resize touch-none select-none\",\n\t\t\"after:absolute after:left-1/2 after:top-0 after:h-full after:w-0.5 after:-translate-x-1/2\",\n\t\t\"after:bg-primary-border after:opacity-0 after:transition-opacity hover:after:opacity-100\"\n\t],\n\tvariants: {\n\t\tactive: {\n\t\t\ttrue: \"after:opacity-100\"\n\t\t}\n\t}\n});\n\nexport type TableResizeHandleProps = React.HTMLAttributes<HTMLDivElement> & {\n\t/** Держит индикатор подсвеченным во время drag-сессии, когда курсор уже ушёл с ручки. */\n\tactive?: boolean;\n};\n\n/**\n * Зона захвата для ресайза колонки. Кладётся внутрь `TableHead`, которому нужен `relative`.\n * Саму ширину не считает — работает в паре с `useColumnResize` из `./column-resize`.\n * Работает только если у `TableHead` нет `overflow: hidden`.\n */\nexport const TableResizeHandle = React.forwardRef<HTMLDivElement, TableResizeHandleProps>(\n\t({ className, active, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\trole=\"separator\"\n\t\t\taria-orientation=\"vertical\"\n\t\t\tclassName={tableResizeHandleStyles({ active, className })}\n\t\t\t{...props}\n\t\t/>\n\t)\n);\n\nTableResizeHandle.displayName = \"TableResizeHandle\";\n\nconst tableCaptionStyles = tv({\n\tbase: \"mt-4 text-muted\"\n});\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n\t({ className, ...props }, ref) => <caption ref={ref} className={tableCaptionStyles({ className })} {...props} />\n);\n\nTableCaption.displayName = \"TableCaption\";\n","/**\n * Геометрия линий иерархии.\n *\n * Значения связаны между собой — менять их можно только согласованно, поэтому производные\n * выражены формулами, а не числами.\n *\n * ```\n * ┌────────────────────────────────────────┐\n * │ ┌───┐ │\n * │ │ − │ Родитель │\n * │ └─┬─┘ │\n * ├─────┼──────────────────────────────────┤ ← граница ячеек; линию продлевает TREE_OVERHANG\n * │ │ ┌───┐ │\n * │ └────┤ + │ Потомок │ ← TREE_CONNECTOR_Y (центр первой строки)\n * │ └───┘ │\n * └────────────────────────────────────────┘\n *\n * ├─────┤ TREE_LINE_OFFSET — до вертикали нулевого уровня\n * ├──────┤ TREE_INDENT — шаг между вертикалями соседних уровней\n * ├────┤ TREE_STUB — отвод до левого края раскрывателя\n * ├───┤ TREE_TOGGLE — сторона квадрата, центр на своей вертикали\n * ```\n *\n * Схема не в масштабе — важны отношения величин, а не пропорции на картинке.\n */\n\n/** Шаг отступа на один уровень вложенности. */\nexport const TREE_INDENT = 18;\n\n/** Отступ от левого края ячейки до вертикали нулевой колонки. */\nexport const TREE_LINE_OFFSET = 13;\n\n/**\n * Сторона квадрата-раскрывателя. Центрируется ровно на вертикали своего уровня.\n *\n * Совпадает с чекбоксом (`size-4`): в одной строке они стоят рядом, и разный размер\n * у двух одинаковых по смыслу квадратов читается как небрежность.\n *\n * Сверху ограничен `2 * TREE_LINE_OFFSET` — иначе `treeCellPaddingLeft(0)` уходит в минус,\n * и раскрыватель корня вылезает за левый край ячейки. Практический потолок ниже:\n * при стороне больше `TREE_INDENT` обнуляется `TREE_STUB` и отвод к узлу исчезает.\n */\nexport const TREE_TOGGLE = 16;\n\n/**\n * Длина горизонтального отвода — от вертикали предка до левого края раскрывателя.\n *\n * Обязана равняться `TREE_INDENT - TREE_TOGGLE / 2`: раскрыватель смещён от своей вертикали\n * влево на половину стороны, и при любом другом значении между отводом и квадратом\n * остаётся щель либо отвод заезжает под квадрат.\n */\nexport const TREE_STUB = TREE_INDENT - TREE_TOGGLE / 2;\n\n/** Вертикальный паддинг ячейки таблицы (`py-2.5`). */\nconst TREE_CELL_PADDING_TOP = 10;\n\n/** Высота строки текста при `text-xs`. */\nconst TREE_TEXT_LINE_HEIGHT = 16;\n\n/**\n * Вертикальная позиция коннектора — центр ПЕРВОЙ строки текста, а не середина ячейки.\n *\n * Это принципиально для строк переменной высоты: при `top: 50%` середина ячейки уезжает вниз\n * от подписи, как только контент переносится, и уголок перестаёт указывать на узел.\n */\nexport const TREE_CONNECTOR_Y = TREE_CELL_PADDING_TOP + TREE_TEXT_LINE_HEIGHT / 2;\n\n/**\n * Насколько линии вылезают за padding-box ячейки сверху и снизу.\n *\n * Нижняя граница ячейки лежит вне её padding-box, и без этого выноса вертикаль обрывалась бы\n * на каждой границе — вместо сплошной линии получался пунктир.\n */\nexport const TREE_OVERHANG = 1;\n\n/**\n * Отступ раскрывателя сверху, при котором его центр совпадает с коннектором.\n *\n * Раньше здесь стоял `mt-0.5`, подобранный под сторону 12px. Теперь это разность:\n * содержимое ячейки начинается на `TREE_CELL_PADDING_TOP`, а центр квадрата должен\n * попасть на `TREE_CONNECTOR_Y`. При достаточно крупном раскрывателе значение\n * становится отрицательным — квадрат заходит в верхний паддинг, и это нормально.\n */\nexport const TREE_TOGGLE_MARGIN_TOP = TREE_CONNECTOR_Y - TREE_CELL_PADDING_TOP - TREE_TOGGLE / 2;\n\n/**\n * Горизонтальная позиция вертикали для колонки отступа.\n *\n * @example\n * treeLineX(0); // 13\n * treeLineX(2); // 49\n */\nexport const treeLineX = (column: number) => TREE_LINE_OFFSET + column * TREE_INDENT;\n\n/**\n * Левый отступ ячейки, при котором раскрыватель встаёт по центру вертикали своего уровня.\n *\n * @example\n * <TableCell style={{ paddingLeft: treeCellPaddingLeft(row.level) }}> // уровень 2 → 41px\n */\nexport const treeCellPaddingLeft = (level: number) => treeLineX(level) - TREE_TOGGLE / 2;\n","import * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { Minus, Plus } from \"lucide-react\";\nimport { Icon } from \"../../icon/Icon\";\nimport { TableCell } from \"../Table\";\nimport { cn } from \"../../../lib/utils/cn\";\nimport {\n\tTREE_CONNECTOR_Y,\n\tTREE_OVERHANG,\n\tTREE_STUB,\n\tTREE_TOGGLE,\n\tTREE_TOGGLE_MARGIN_TOP,\n\ttreeCellPaddingLeft,\n\ttreeLineX\n} from \"./treeGeometry\";\nimport type { TreeLine, TreeRow } from \"./treeModel\";\n\nconst treeLineStyles = tv({\n\tbase: \"absolute bg-primary-border\",\n\tvariants: {\n\t\taxis: {\n\t\t\tvertical: \"w-px\",\n\t\t\thorizontal: \"h-px\"\n\t\t}\n\t}\n});\n\nexport type TableTreeLinesProps = {\n\t/**\n\t * Модель линий, по одному элементу на колонку отступа. Считается `flattenTree`.\n\t * Длина массива задаёт глубину узла — отдельный проп `level` не нужен.\n\t */\n\tlines: TreeLine[];\n\t/** Спуск от раскрывателя вниз, к первому потомку. Ставится у раскрытых узлов с потомками. */\n\tdescends?: boolean;\n\tclassName?: string;\n};\n\n/**\n * Линии связи для строки дерева или группы.\n *\n * Кладётся в ячейку с `position: relative` и `padding-left: treeCellPaddingLeft(level)` —\n * обычно этим занимается `TableTreeCell`.\n *\n * Все линии — абсолютно позиционированные блоки в 1px, а не рамки контейнеров: уровни\n * вложенности в таблице не образуют вложенных DOM-узлов, поэтому рисовать `border-left`\n * на контейнере уровня попросту негде.\n *\n * Разметка повторяет модель один в один и размечена data-атрибутами: на обёртке лежит вся\n * модель строки (`data-tree-lines=\"pass none end\"`), на каждом элементе — его роль\n * (`data-tree-line`) и номер колонки. Это делает отладку в DevTools прямой: видно не только\n * то, что нарисовано, но и то, что было велено нарисовать.\n *\n * @example\n * <TableCell className=\"relative\" style={{ paddingLeft: treeCellPaddingLeft(row.level) }}>\n * <TableTreeLines lines={row.lines} descends={row.descends} />\n * {row.node.name}\n * </TableCell>\n */\nexport const TableTreeLines = ({ lines, descends = false, className }: TableTreeLinesProps) => (\n\t<span\n\t\taria-hidden\n\t\tdata-tree-lines={lines.join(\" \")}\n\t\tdata-tree-level={lines.length}\n\t\tclassName={cn(\"pointer-events-none absolute inset-0\", className)}\n\t>\n\t\t{lines.map((kind, column) => {\n\t\t\tif (kind === \"none\") return null;\n\n\t\t\treturn (\n\t\t\t\t<React.Fragment key={column}>\n\t\t\t\t\t<span\n\t\t\t\t\t\tdata-tree-line={kind}\n\t\t\t\t\t\tdata-tree-column={column}\n\t\t\t\t\t\tclassName={treeLineStyles({ axis: \"vertical\" })}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: treeLineX(column),\n\t\t\t\t\t\t\ttop: -TREE_OVERHANG,\n\t\t\t\t\t\t\t// `end` — уголок: вертикаль обрывается на коннекторе, иначе протекла бы\n\t\t\t\t\t\t\t// под следующие строки, где ветки этого предка уже нет.\n\t\t\t\t\t\t\t...(kind === \"end\"\n\t\t\t\t\t\t\t\t? { height: TREE_CONNECTOR_Y + TREE_OVERHANG }\n\t\t\t\t\t\t\t\t: { bottom: -TREE_OVERHANG })\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t{kind !== \"pass\" && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tdata-tree-line=\"stub\"\n\t\t\t\t\t\t\tdata-tree-column={column}\n\t\t\t\t\t\t\tclassName={treeLineStyles({ axis: \"horizontal\" })}\n\t\t\t\t\t\t\tstyle={{ left: treeLineX(column), top: TREE_CONNECTOR_Y, width: TREE_STUB }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</React.Fragment>\n\t\t\t);\n\t\t})}\n\n\t\t{descends && (\n\t\t\t<span\n\t\t\t\tdata-tree-line=\"spur\"\n\t\t\t\tdata-tree-column={lines.length}\n\t\t\t\tclassName={treeLineStyles({ axis: \"vertical\" })}\n\t\t\t\tstyle={{\n\t\t\t\t\tleft: treeLineX(lines.length),\n\t\t\t\t\ttop: TREE_CONNECTOR_Y + TREE_TOGGLE / 2,\n\t\t\t\t\tbottom: -TREE_OVERHANG\n\t\t\t\t}}\n\t\t\t/>\n\t\t)}\n\t</span>\n);\n\nTableTreeLines.displayName = \"TableTreeLines\";\n\nconst tableTreeToggleStyles = tv({\n\tbase: [\n\t\t// `z-10` поднимает раскрыватель над линиями, непрозрачный фон разрывает вертикаль под ним.\n\t\t\"relative z-10 flex shrink-0 items-center justify-center\",\n\t\t// Рамка, фон и скругление — как у `Checkbox`: в строке они стоят рядом и должны\n\t\t// читаться одинаково.\n\t\t\"rounded-sm border border-primary-border bg-secondary-bg text-muted\",\n\t\t\"hover:text-primary-fg focus-visible:shadow-focus focus-visible:outline-hidden\",\n\t\t// Невидимое расширение зоны нажатия до 24px. Именно псевдоэлементом, а не паддингом\n\t\t// или размером: квадрат обязан остаться на сетке линий, а промахиваться по 16px\n\t\t// на строке высотой 36px легко.\n\t\t\"before:absolute before:left-1/2 before:top-1/2 before:size-6 before:-translate-x-1/2 before:-translate-y-1/2\"\n\t]\n});\n\nexport type TableTreeToggleProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> & {\n\texpanded: boolean;\n};\n\n/** Квадрат раскрытия ветки. Иконка и `aria-expanded` следуют за `expanded`. */\nexport const TableTreeToggle = React.forwardRef<HTMLButtonElement, TableTreeToggleProps>(\n\t({ className, expanded, style, ...props }, ref) => (\n\t\t<button\n\t\t\tref={ref}\n\t\t\ttype=\"button\"\n\t\t\taria-expanded={expanded}\n\t\t\tclassName={tableTreeToggleStyles({ className })}\n\t\t\tstyle={{ width: TREE_TOGGLE, height: TREE_TOGGLE, marginTop: TREE_TOGGLE_MARGIN_TOP, ...style }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Icon icon={expanded ? Minus : Plus} className=\"size-3\" />\n\t\t</button>\n\t)\n);\n\nTableTreeToggle.displayName = \"TableTreeToggle\";\n\n/**\n * Распорка на месте раскрывателя у листьев.\n *\n * Нужна, чтобы подписи узлов с потомками и без выравнивались по одной вертикали.\n * Отдельным компонентом, а не режимом `TableTreeToggle`, чтобы у листа не было\n * ни кнопки, ни `aria-expanded`.\n */\nexport const TableTreeSpacer = ({ className }: { className?: string }) => (\n\t<span aria-hidden className={cn(\"shrink-0\", className)} style={{ width: TREE_TOGGLE }} />\n);\n\nTableTreeSpacer.displayName = \"TableTreeSpacer\";\n\n/**\n * Всё, что ячейка иерархии знает о строке: где она стоит и что у неё с потомками.\n *\n * Структурный тип, а не generic: ячейке безразличен сам узел, поэтому в неё проходит любой\n * `TreeRow<T>` — и любой собранный вручную объект с этими пятью полями. Второе нужно там,\n * где дерева в памяти нет: список пришёл плоским, с готовым `level`, а линии считаются\n * `childTreeLines`.\n *\n * Инвариант: `lines.length === level`. Отступ берётся из `level`, а линии расставляются по\n * индексам `lines` — при расхождении уголок промахнётся мимо отступа.\n */\nexport type TableTreeCellRow = Pick<TreeRow<unknown>, \"level\" | \"lines\" | \"descends\" | \"hasChildren\" | \"isExpanded\">;\n\nexport type TableTreeCellProps = React.TdHTMLAttributes<HTMLTableCellElement> & {\n\t/**\n\t * Положение строки в иерархии: `level` — отступ, `lines` — линии связи, `descends` — спуск\n\t * к первому потомку, `hasChildren` — раскрыватель либо распорка на его месте, `isExpanded` —\n\t * знак в раскрывателе и `aria-expanded`.\n\t */\n\trow: TableTreeCellRow;\n\t/** Клик по раскрывателю. Без него раскрыватель рисуется, но ничего не делает. */\n\tonToggle?: React.MouseEventHandler<HTMLButtonElement>;\n\ttoggleLabel?: string;\n};\n\n/**\n * Ячейка с отступом, линиями и раскрывателем — весь столбец иерархии целиком.\n *\n * Собирает три вещи, которые иначе пришлось бы согласовывать вручную в каждой таблице:\n * `padding-left` по глубине, линии и раскрыватель либо распорку на его месте. Содержимое\n * остаётся за потребителем — внутрь идёт что угодно, от подписи до бейджей.\n *\n * `align-top` не косметика: при переносе текста в соседних колонках содержимое, выровненное\n * по центру, уедет вниз от коннектора, который привязан к первой строке.\n *\n * @example\n * <TableTreeCell row={row} onToggle={() => toggle(row.node.id)}>\n * {row.node.name}\n * </TableTreeCell>\n */\nexport const TableTreeCell = React.forwardRef<HTMLTableCellElement, TableTreeCellProps>(\n\t({ row, onToggle, toggleLabel, className, style, children, ...props }, ref) => (\n\t\t<TableCell\n\t\t\tref={ref}\n\t\t\tdata-tree-level={row.level}\n\t\t\tclassName={cn(\"relative align-top\", className)}\n\t\t\tstyle={{ paddingLeft: treeCellPaddingLeft(row.level), ...style }}\n\t\t\t{...props}\n\t\t>\n\t\t\t<TableTreeLines lines={row.lines} descends={row.descends} />\n\t\t\t<span className=\"flex items-start gap-1.5\">\n\t\t\t\t{row.hasChildren ? (\n\t\t\t\t\t<TableTreeToggle\n\t\t\t\t\t\texpanded={row.isExpanded}\n\t\t\t\t\t\taria-label={toggleLabel ?? (row.isExpanded ? \"Свернуть\" : \"Развернуть\")}\n\t\t\t\t\t\tonClick={onToggle}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<TableTreeSpacer />\n\t\t\t\t)}\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t</TableCell>\n\t)\n);\n\nTableTreeCell.displayName = \"TableTreeCell\";\n","/**\n * Модель строки дерева: что рисовать в каждой колонке отступа.\n *\n * Ровно эти четыре состояния использует классический вывод `tree` и почти все табличные\n * гриды (AG Grid, TanStack Table, rc-tree) — набор проверен и закрывает все случаи:\n *\n * - `pass` — сквозная вертикаль `│`: ветка предка продолжается ниже этой строки;\n * - `branch` — `├`: отвод к узлу, и у узла есть следующие соседи;\n * - `end` — `└`: отвод к последнему соседу, вертикаль обрывается на уголке;\n * - `none` — пусто: ветка предка закончилась выше.\n *\n * Ключевой инвариант: **индекс в массиве равен номеру колонки**, а `lines.length` равно\n * глубине узла. `branch`/`end` встречается только в последней колонке, `pass`/`none` — только\n * в предыдущих. Именно этот инвариант убирает класс ошибок «сдвиг на единицу»: раньше\n * массив хранил флаги предков, и колонка `level - 1` управлялась флагом родителя, хотя\n * должна была — признаком `isLast` самого узла. Сравнивать модель с картинкой теперь можно\n * глазами: `[\"pass\", \"none\", \"end\"]` читается как `│ └`.\n */\nexport type TreeLine = \"none\" | \"pass\" | \"branch\" | \"end\";\n\n/** Строка плоского списка со всем, что нужно для отрисовки узла дерева. */\nexport type TreeRow<T> = {\n\tnode: T;\n\t/** Родительский узел, `null` у корней. */\n\tparent: T | null;\n\t/** Глубина, 0 — корень. Равна `lines.length`. */\n\tlevel: number;\n\t/** Позиция среди соседей. */\n\tindex: number;\n\t/** Последний ли среди соседей — от этого зависит `└` вместо `├`. */\n\tisLast: boolean;\n\thasChildren: boolean;\n\t/** Раскрыт ли узел. У листьев всегда `false`. */\n\tisExpanded: boolean;\n\t/**\n\t * Нужен ли спуск от раскрывателя вниз, к первому потомку.\n\t *\n\t * Вертикаль потомка начинается от его собственной строки, поэтому участок между\n\t * раскрывателем и низом строки родителя рисует именно родитель.\n\t */\n\tdescends: boolean;\n\tlines: TreeLine[];\n\t/** Индексы от корня: `[0, 2, 1]`. Годится как стабильный ключ и как «1.3.2» в интерфейсе. */\n\tpath: number[];\n};\n\nexport type FlattenTreeOptions<T> = {\n\t/**\n\t * Потомки узла. Это функция поиска, а не имя поля: плоскому списку с `parentId` хватит\n\t * индекса `Map<parentId, T[]>`, перекладывать данные в узлы с `children` не нужно.\n\t */\n\tgetChildren: (node: T) => T[] | undefined;\n\t/** Раскрыт ли узел. Свёрнутые не отдают потомков. По умолчанию раскрыты все. */\n\tisExpanded?: (node: T) => boolean;\n};\n\n/**\n * Линии потомка, выведенные из линий родителя.\n *\n * Весь алгоритм — в двух строчках: у предков уголок превращается в продолжение (`branch` →\n * `pass`), а обрыв — в пустоту (`end` → `none`); своя колонка получает уголок по `isLast`.\n * Экспортируется отдельно, чтобы линии можно было считать и без обхода дерева — например,\n * для виртуализованного или подгружаемого списка, где полного дерева в памяти нет.\n *\n * Родительские линии в плоском списке удобно держать бегущим массивом `linesByLevel[level]`:\n * в списке, упорядоченном как при выводе, родитель всегда встречается раньше потомка.\n *\n * @example\n * childTreeLines([\"pass\", \"branch\"], false); // [\"pass\", \"pass\", \"branch\"]\n * childTreeLines([\"pass\", \"branch\"], true); // [\"pass\", \"pass\", \"end\"]\n */\nexport const childTreeLines = (parentLines: TreeLine[], isLast: boolean): TreeLine[] => [\n\t...parentLines.map((line): TreeLine => (line === \"pass\" || line === \"branch\" ? \"pass\" : \"none\")),\n\tisLast ? \"end\" : \"branch\"\n];\n\n/**\n * Разворачивает дерево в плоский список строк и попутно считает модель линий.\n *\n * Порядок — как при отображении: узел, затем его раскрытые потомки.\n *\n * @example\n * const rows = flattenTree(nodes, {\n * getChildren: (node) => node.children,\n * isExpanded: (node) => expanded.has(node.id)\n * });\n *\n * rows.map((row) => (\n * <TableRow key={row.path.join(\".\")}>\n * <TableTreeCell row={row} onToggle={() => toggle(row.node.id)}>{row.node.name}</TableTreeCell>\n * </TableRow>\n * ));\n */\nexport function flattenTree<T>(roots: T[], options: FlattenTreeOptions<T>): TreeRow<T>[] {\n\tconst { getChildren, isExpanded = () => true } = options;\n\tconst rows: TreeRow<T>[] = [];\n\n\tconst walk = (nodes: T[], parent: T | null, level: number, parentLines: TreeLine[], parentPath: number[]) => {\n\t\tnodes.forEach((node, index) => {\n\t\t\tconst isLast = index === nodes.length - 1;\n\t\t\tconst children = getChildren(node);\n\t\t\tconst hasChildren = Boolean(children?.length);\n\t\t\tconst expanded = hasChildren && isExpanded(node);\n\t\t\t// У корней нет предка — значит, нет и колонок отступа.\n\t\t\tconst lines = level === 0 ? [] : childTreeLines(parentLines, isLast);\n\t\t\tconst path = [...parentPath, index];\n\n\t\t\trows.push({\n\t\t\t\tnode,\n\t\t\t\tparent,\n\t\t\t\tlevel,\n\t\t\t\tindex,\n\t\t\t\tisLast,\n\t\t\t\thasChildren,\n\t\t\t\tisExpanded: expanded,\n\t\t\t\tdescends: expanded,\n\t\t\t\tlines,\n\t\t\t\tpath\n\t\t\t});\n\n\t\t\tif (expanded) walk(children!, node, level + 1, lines, path);\n\t\t});\n\t};\n\n\twalk(roots, null, 0, [], []);\n\treturn rows;\n}\n"],"names":["tableStyles","tv","Table","React","className","containerClassName","containerRef","props","ref","styles","jsx","tableHeaderStyles","STICKY_HEADER","TableHeader","sticky","tableBodyStyles","TableBody","tableBodyContainerStyles","TableBodyContainer","shadowSize","ScrollShadowContainer","tableFooterStyles","STICKY_FOOTER","TableFooter","TABLE_ROW_ANATOMY","tableRowStyles","TABLE_ROW_TINT_LAYERS","TableRow","tableHeadStyles","TableHead","interactive","tableCellStyles","TableCell","tableResizeHandleStyles","TableResizeHandle","active","tableCaptionStyles","TableCaption","TREE_INDENT","TREE_LINE_OFFSET","TREE_TOGGLE","TREE_STUB","TREE_CELL_PADDING_TOP","TREE_TEXT_LINE_HEIGHT","TREE_CONNECTOR_Y","TREE_OVERHANG","TREE_TOGGLE_MARGIN_TOP","treeLineX","column","treeCellPaddingLeft","level","treeLineStyles","TableTreeLines","lines","descends","jsxs","cn","kind","tableTreeToggleStyles","TableTreeToggle","expanded","style","Icon","Minus","Plus","TableTreeSpacer","TableTreeCell","row","onToggle","toggleLabel","children","childTreeLines","parentLines","isLast","line","flattenTree","roots","options","getChildren","isExpanded","rows","walk","nodes","parent","parentPath","node","index","hasChildren","path"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ics-ui-kit",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "packageManager": "pnpm@10.17.1",
5
5
  "repository": {
6
6
  "type": "git",
@@ -68,12 +68,12 @@
68
68
  "./dist/tailwind.css"
69
69
  ],
70
70
  "peerDependencies": {
71
+ "@tailwindcss/typography": ">=0.5.0",
71
72
  "react": ">=17.0.0",
72
- "react-dom": ">=17.0.0",
73
73
  "react-day-picker": ">=9.0.0",
74
+ "react-dom": ">=17.0.0",
74
75
  "react-hook-form": ">=7.0.0",
75
- "tw-animate-css": ">=1.0.0",
76
- "@tailwindcss/typography": ">=0.5.0"
76
+ "tw-animate-css": ">=1.0.0"
77
77
  },
78
78
  "scripts": {
79
79
  "type-check": "tsc -p tsconfig.check.json",
@@ -141,15 +141,15 @@
141
141
  "@chromatic-com/storybook": "^3.2.2",
142
142
  "@eslint/js": "^9.14.0",
143
143
  "@hookform/resolvers": "^4.1.3",
144
- "@storybook/addon-docs": "^8.6.13",
144
+ "@storybook/addon-docs": "^8.6.19",
145
145
  "@storybook/addon-essentials": "^8.6.14",
146
146
  "@storybook/addon-interactions": "^8.6.14",
147
- "@storybook/addon-onboarding": "^8.4.4",
147
+ "@storybook/addon-onboarding": "^8.6.19",
148
148
  "@storybook/addon-themes": "8.4.4",
149
- "@storybook/blocks": "^8.4.4",
150
- "@storybook/react": "^8.6.14",
151
- "@storybook/react-vite": "^8.6.14",
152
- "@storybook/test": "^8.6.14",
149
+ "@storybook/blocks": "^8.6.14",
150
+ "@storybook/react": "^8.6.19",
151
+ "@storybook/react-vite": "^8.6.19",
152
+ "@storybook/test": "^8.6.15",
153
153
  "@storybook/theming": "^8.6.14",
154
154
  "@tailwindcss/typography": "^0.5.16",
155
155
  "@tailwindcss/vite": "^4.3.3",
@@ -173,7 +173,7 @@
173
173
  "rollup-plugin-postcss": "^4.0.2",
174
174
  "rollup-plugin-visualizer": "^5.14.0",
175
175
  "shadcn": "^4.21.0",
176
- "storybook": "^8.6.14",
176
+ "storybook": "^8.6.19",
177
177
  "storybook-design-token": "^3.2.0",
178
178
  "tailwindcss": "^4.3.3",
179
179
  "tw-animate-css": "^1.4.0",
@@ -181,7 +181,7 @@
181
181
  "typescript-eslint": "^8.14.0",
182
182
  "vite": "^5.4.11",
183
183
  "vite-plugin-dts": "^4.3.0",
184
- "vitest": "^2.1.6",
184
+ "vitest": "^3.2.7",
185
185
  "zod": "^3.24.2"
186
186
  },
187
187
  "eslintConfig": {
@@ -194,6 +194,9 @@
194
194
  "@radix-ui/react-focus-scope": "^1.1.7"
195
195
  },
196
196
  "pnpm": {
197
+ "overrides": {
198
+ "tinypool": "^2.1.2"
199
+ },
197
200
  "onlyBuiltDependencies": [
198
201
  "@swc/core",
199
202
  "esbuild"