@tribepad/themis 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AlertDialog/index.js +1 -1
- package/dist/elements/AlertDialog/index.js.map +1 -1
- package/dist/elements/AlertDialog/index.mjs +1 -1
- package/dist/elements/AlertDialog/index.mjs.map +1 -1
- package/dist/elements/Breadcrumbs/index.js +1 -1
- package/dist/elements/Breadcrumbs/index.js.map +1 -1
- package/dist/elements/Breadcrumbs/index.mjs +1 -1
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
- package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
- package/dist/elements/Chart/ChartLineSeries.d.ts.map +1 -1
- package/dist/elements/Chart/index.js +1 -1
- package/dist/elements/Chart/index.js.map +1 -1
- package/dist/elements/Chart/index.mjs +1 -1
- package/dist/elements/Chart/index.mjs.map +1 -1
- package/dist/elements/DatePicker/index.js +1 -1
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +1 -1
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +1 -1
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +2 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +1 -1
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/NumberField.d.ts.map +1 -1
- package/dist/elements/NumberField/NumberField.types.d.ts +12 -0
- package/dist/elements/NumberField/NumberField.types.d.ts.map +1 -1
- package/dist/elements/NumberField/index.js +1 -1
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +1 -1
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/OTPInput/OTPInput.d.ts +1 -1
- package/dist/elements/Resizable/index.js +1 -1
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +1 -1
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/Switch/Switch.d.ts +11 -4
- package/dist/elements/Switch/Switch.d.ts.map +1 -1
- package/dist/elements/Switch/Switch.types.d.ts +5 -0
- package/dist/elements/Switch/Switch.types.d.ts.map +1 -1
- package/dist/elements/Switch/index.js +1 -1
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Switch/index.mjs +1 -1
- package/dist/elements/Switch/index.mjs.map +1 -1
- package/dist/elements/Tabs/Tabs.d.ts +1 -1
- package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
- package/dist/elements/Tabs/Tabs.types.d.ts +1 -0
- package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +1 -1
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +1 -1
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/index.js +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +2 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/hooks/useReducedMotion.d.ts +9 -0
- package/dist/hooks/useReducedMotion.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/styles/animations.css +172 -0
- package/dist/styles/index.js +1 -1
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -1
- package/dist/styles/index.mjs.map +1 -1
- package/dist/styles/shared-variants.d.ts +23 -0
- package/dist/styles/shared-variants.d.ts.map +1 -1
- package/dist/tailwind-source.css +1 -0
- package/dist/types/animation.d.ts +24 -0
- package/dist/types/animation.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +2 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +1 -1
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/shouldAnimate.d.ts +12 -0
- package/dist/utils/shouldAnimate.d.ts.map +1 -0
- package/package.json +34 -2
- package/src/elements/NumberField/NumberField.stories.tsx +100 -0
- package/src/elements/Switch/Switch.stories.tsx +60 -0
- package/src/elements/Tabs/Tabs.stories.tsx +101 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {createContext,forwardRef,useImperativeHandle,useRef,useState,useEffect,memo,useId,useCallback,useContext}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';import {cva}from'class-variance-authority';import {Loader2,Zap,Minus,Plus,X as X$1,GripVertical,GripHorizontal}from'lucide-react';import {Button,NumberField,Label,Group,Input,Text,FieldError,DialogTrigger,Popover,Dialog}from'react-aria-components';function N(...p){return twMerge(clsx(p))}var ee=createContext(null);ee.displayName="ResizableContext";function W(){let p=useContext(ee);if(!p)throw new Error("useResizableContext must be used within a ResizablePanelGroup. Make sure ResizablePanel and ResizableHandle are children of ResizablePanelGroup.");return p}function Se({direction:p,groupLabel:o,sizes:f,onSizesChange:n}){let[l,e]=useState([]),[a,i]=useState([]),t=useRef(null),s=useRef(null),v=useRef(null),c=useRef(false),P=f!==void 0,R=P?f:l,g=useCallback(b=>{P?n?.(b):e(b);},[P,n]),E=useCallback((b,r)=>{i(z=>{let w=[...z];return w[b]=r,w});},[]),L=useCallback(b=>{i(r=>{let z=[...r];return delete z[b],z.filter(Boolean)});},[]);useEffect(()=>{if(P||c.current)return;let r=a.filter(Boolean).length;if(r<2)return;if(R.length<r||R.some(w=>w===void 0)){let w=[],d=100/r;for(let u=0;u<r;u++)w[u]=d;c.current=true,e(w);}},[a,R,P]),useEffect(()=>()=>{v.current&&clearTimeout(v.current),s.current&&(document.body.removeChild(s.current),s.current=null);},[]);let y=useCallback(b=>{if(!s.current){let r=document.createElement("div");r.setAttribute("aria-live","polite"),r.setAttribute("aria-atomic","true"),r.className="sr-only",r.style.cssText="position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;",document.body.appendChild(r),s.current=r;}s.current.textContent=b,v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{s.current&&(s.current.textContent="");},1e3);},[]);return {direction:p,groupLabel:o,sizes:R,setSizes:g,panels:a,registerPanel:E,unregisterPanel:L,announce:y,containerRef:t}}var ye=forwardRef(function({direction:o,groupLabel:f,sizes:n,onSizesChange:l,className:e,children:a},i){let t=Se({direction:o,groupLabel:f,sizes:n,onSizesChange:l});return useImperativeHandle(i,()=>t.containerRef.current,[t.containerRef]),jsx(ee.Provider,{value:t,children:jsx("div",{ref:t.containerRef,role:"group","aria-label":`${f}, ${o}`,"data-direction":o,className:N("flex h-full w-full",o==="horizontal"?"flex-row":"flex-col",e),children:a})})});ye.displayName="ResizablePanelGroup";var U=10,$=90,te=300,Ee=z.object({label:z.string().min(1),sizes:z.array(z.number().min(0).max(100))}),lt=z.object({direction:z.enum(["horizontal","vertical"]),groupLabel:z.string().min(1),sizes:z.array(z.number().min(0).max(100)).optional(),onSizesChange:z.function().optional(),className:z.string().optional(),children:z.custom()}),ut=z.object({name:z.string().min(1),defaultSize:z.number().min(0).max(100).optional(),minSize:z.number().min(0).max(100).optional().default(U),maxSize:z.number().min(0).max(100).optional().default($),collapsible:z.boolean().optional().default(false),onCollapse:z.function().optional(),onExpand:z.function().optional(),onResize:z.function().optional(),className:z.string().optional(),children:z.custom()}),ct=z.object({withHandle:z.boolean().optional().default(true),presets:z.array(Ee).optional(),disabled:z.boolean().optional().default(false),className:z.string().optional()}),se=cva(["relative flex items-center justify-center","shrink-0","bg-transparent","transition-colors duration-150","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","touch-none select-none"],{variants:{direction:{horizontal:["w-3 min-w-[12px]","cursor-col-resize","hover:bg-[var(--accent)]/50","before:absolute before:inset-y-0 before:-inset-x-4","before:min-w-[44px]"],vertical:["h-3 min-h-[12px]","cursor-row-resize","hover:bg-[var(--accent)]/50","before:absolute before:inset-x-0 before:-inset-y-4","before:min-h-[44px]"]},disabled:{true:"cursor-not-allowed opacity-50 pointer-events-none",false:""},isDragging:{true:"bg-[var(--accent)]",false:""}},defaultVariants:{direction:"horizontal",disabled:false,isDragging:false}}),le=cva(["flex items-center justify-center","rounded-full","bg-[var(--border)]","text-[var(--menu-muted)]"],{variants:{direction:{horizontal:"h-8 w-1",vertical:"h-1 w-8"}},defaultVariants:{direction:"horizontal"}});var Ve=forwardRef(function({name:o,defaultSize:f,minSize:n=U,maxSize:l=$,collapsible:e=false,onCollapse:a,onExpand:i,onResize:t,className:s,children:v},c){let{sizes:P,registerPanel:R,unregisterPanel:g,containerRef:E}=W(),L=useRef(null),[y,b]=useState(-1),r=useRef(null),z=useRef(false),w=useRef(-1);useEffect(()=>{let u=L.current,x=E.current;if(!u||!x)return;let V=x.querySelectorAll("[data-resizable-panel]"),T=-1;for(let F=0;F<V.length;F++)if(V[F]===u){T=F;break}if(T!==-1)return y!==T&&b(T),z.current||(z.current=true,w.current=T,R(T,{name:o,minSize:n,maxSize:l,collapsible:e})),()=>{z.current&&(g(w.current),z.current=false);}},[E,R,g,o,n,l,e,y]);let d=y>=0?P[y]??50:50;return useEffect(()=>{if(r.current===null){r.current=d;return}let u=r.current===0,x=d===0;!u&&x&&a?a():u&&!x&&i&&i(),t&&r.current!==d&&t(d),r.current=d;},[d,a,i,t]),jsx("div",{ref:u=>{L.current=u,typeof c=="function"?c(u):c&&(c.current=u);},role:"region","aria-label":o,"data-resizable-panel":"","data-panel-name":o,"data-panel-index":y,"data-collapsed":d===0,style:{flexBasis:`${d}%`,flexGrow:0,flexShrink:0,overflow:"hidden"},className:N("relative",s),children:v})});Ve.displayName="ResizablePanel";function Te(p,o,f){return Math.max(o,Math.min(f,p))}function Le(p,o,f,n,l){let e=[...p],a=o[f],i=o[n];if(!a||!i)return p;let t=p[f]??50,s=p[n]??50,v=t+l,c=s-l,P=a.collapsible?0:a.minSize,R=a.maxSize,g=i.collapsible?0:i.minSize,E=i.maxSize;return v=Te(v,P,R),c=t+s-v,c=Te(c,g,E),v=t+s-c,e[f]=v,e[n]=c,e}function De({direction:p,sizes:o,setSizes:f,panels:n,containerRef:l,leftPanelIndex:e,rightPanelIndex:a,disabled:i=false,announce:t,groupLabel:s,onOpenPopover:v}){let[c,P]=useState(false),R=useRef(null),g=useRef(null),E=useRef(0),L=useRef(false),y=useRef(n),b=useRef(o),r=useRef(f),z=useRef(()=>{}),w=useRef(()=>{});useEffect(()=>{y.current=n,b.current=o,r.current=f;},[n,o,f]);let d=useCallback(()=>{let S=l.current;return S?p==="horizontal"?S.offsetWidth:S.offsetHeight:0},[l,p]),u=useCallback(S=>{let C=d();return C===0?0:S/C*100},[d]),x=useCallback(S=>{z.current(S);},[]),V=useCallback(()=>{w.current();},[]),T=useCallback(S=>{if(!R.current||i)return;let I=(p==="horizontal"?S.clientX:S.clientY)-R.current.position,D=u(I),_=Le(R.current.sizes,y.current,e,a,D);r.current(_);},[p,i,e,u,a]),F=useCallback(()=>{if(g.current&&(clearTimeout(g.current),g.current=null),Date.now()-E.current<te&&!L.current&&v&&!i&&v(),c){P(false);let I=y.current[e],D=Math.round(b.current[e]??50);t&&I&&s&&t(`${I.name} in ${s} resized to ${D} percent`);}R.current=null,L.current=false,document.removeEventListener("pointermove",x),document.removeEventListener("pointerup",V),document.removeEventListener("pointercancel",V),document.body.style.cursor="",document.body.style.userSelect="";},[t,i,s,c,e,v,x,V]);useEffect(()=>{z.current=T,w.current=F;});let K=useCallback(S=>{if(i)return;S.preventDefault();let C=p==="horizontal"?S.clientX:S.clientY;E.current=Date.now(),L.current=false,R.current={position:C,sizes:[...o],containerSize:d()},g.current=setTimeout(()=>{L.current=true,P(true),document.body.style.cursor=p==="horizontal"?"col-resize":"row-resize",document.body.style.userSelect="none";},te),document.addEventListener("pointermove",x),document.addEventListener("pointerup",V),document.addEventListener("pointercancel",V),S.pointerType==="mouse"&&(g.current&&(clearTimeout(g.current),g.current=null),L.current=true,P(true),document.body.style.cursor=p==="horizontal"?"col-resize":"row-resize",document.body.style.userSelect="none");},[p,i,d,x,V,o]),G=useCallback(S=>{if(i)return;let C=S.shiftKey?10:1,I=0;switch(S.key){case "ArrowLeft":case "ArrowUp":I=-C;break;case "ArrowRight":case "ArrowDown":I=C;break;case "Home":{let D=n[e];D&&(I=(D.collapsible?0:D.minSize)-(o[e]??50));break}case "End":{let D=n[e];D&&(I=D.maxSize-(o[e]??50));break}case "Enter":case " ":S.preventDefault(),v?.();return;default:return}if(I!==0){S.preventDefault();let D=Le(o,n,e,a,I);f(D);let _=n[e],k=Math.round(D[e]??50);t&&_&&s&&t(`${_.name} in ${s} resized to ${k} percent`);}},[t,i,s,e,v,n,a,f,o]);return useEffect(()=>{let S=x,C=V;return ()=>{g.current&&clearTimeout(g.current),document.removeEventListener("pointermove",S),document.removeEventListener("pointerup",C),document.removeEventListener("pointercancel",C);}},[x,V]),{isDragging:c,handlePointerDown:K,handleKeyDown:G}}var ce=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),de=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]",link:"text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-8",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var me="data-[pressed]:scale-[0.97]";var pe="data-[hovered]:shadow-md";var re="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",oe="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var _e=createContext(null);_e.displayName="ButtonGroupContext";function Me(){return useContext(_e)}var Fe=createContext(null);Fe.displayName="ButtonGroupItemContext";function Ge(){return useContext(Fe)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Be=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var M=memo(forwardRef(({className:p,buttonVisualClassName:o,variant:f,size:n,visualSize:l,fullWidth:e,loading:a=false,loadingText:i="Loading...",shortcut:t,children:s,isDisabled:v,paywall:c=false,paywallRedirect:P,paywallDescription:R,onPress:g,...E},L)=>{let y=useId(),b=Me(),r=Ge(),z=f??b?.variant??"default",w=n??b?.size,d=v??b?.isDisabled??false,u=b?.orientation==="vertical",x=e||u,V=r?Be({orientation:b?.orientation??"horizontal",position:r.position}):"",T=l??w??"default";return process.env.NODE_ENV!=="production"&&(T==="dot"||T==="icon")&&!E["aria-label"]&&!s&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:L,isDisabled:d||a||void 0,"aria-disabled":c?true:void 0,"aria-describedby":c?y:void 0,onPress:G=>{if(c){P&&window.open(P,"_blank","noopener,noreferrer");return}g?.(G);},className:N(ce({fullWidth:x,inVerticalGroup:u}),p),...E,children:G=>jsxs("span",{className:N(de({variant:z,visualSize:T,paywall:c,fullWidth:x}),V,o,me,pe,re,oe),"data-pressed":G.isPressed||void 0,children:[a&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:i})]}),!a&&s,c&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),c&&jsxs("span",{id:y,className:"sr-only",children:["Premium feature: ",R||"Upgrade required to access this feature"]}),G.isFocusVisible&&t&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:t}),G.isPressed&&jsx("span",{className:"absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95","aria-hidden":"true"})]})})}));M.displayName="Button";var Oe=4294967295,ke=0,Ue=-2147483647;z.object({value:z.number().nullable().optional(),defaultValue:z.number().optional(),minValue:z.number().optional(),maxValue:z.number().optional(),allowNegative:z.boolean().optional(),step:z.number().positive().optional(),formatOptions:z.custom().optional(),isDisabled:z.boolean().optional(),isReadOnly:z.boolean().optional(),isRequired:z.boolean().optional(),isInvalid:z.boolean().optional(),isWheelDisabled:z.boolean().optional(),validate:z.function().optional(),validationBehavior:z.enum(["native","aria"]).default("native"),label:z.string(),description:z.string().optional(),errorMessage:z.union([z.string(),z.function()]).optional(),stepperLayout:z.enum(["sides","stacked","hidden"]).default("sides"),incrementAriaLabel:z.string().optional(),decrementAriaLabel:z.string().optional(),name:z.string().optional(),size:z.enum(["sm","default","lg"]).default("default"),onChange:z.function().optional(),onFocus:z.function().optional(),onBlur:z.function().optional(),onFocusChange:z.function().optional(),className:z.string().optional(),autoFocus:z.boolean().optional()});var $e=cva(["inline-flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-2","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50"],{variants:{size:{sm:"h-9 text-sm",default:"h-10 text-base",lg:"h-12 text-lg"},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),je=cva(["flex-1 bg-transparent text-center tabular-nums","min-w-0","focus:outline-none","[appearance:textfield]","[&::-webkit-outer-spin-button]:appearance-none","[&::-webkit-inner-spin-button]:appearance-none"],{variants:{size:{sm:"px-2 text-sm",default:"px-3 text-base",lg:"px-4 text-lg"}},defaultVariants:{size:"default"}}),X=cva(["flex items-center justify-center","transition-colors duration-150","select-none","hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]","focus-visible:ring-inset","active:bg-[var(--accent)]/80","disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{sm:"min-w-8 min-h-8 text-sm",default:"min-w-10 min-h-10 text-base",lg:"min-w-12 min-h-12 text-lg"},position:{left:"rounded-l-md border-r border-[var(--input-border)]",right:"rounded-r-md border-l border-[var(--input-border)]",top:"rounded-tr-md border-b border-l border-[var(--input-border)] h-1/2",bottom:"rounded-br-md border-l border-[var(--input-border)] h-1/2"}},defaultVariants:{size:"default"}}),qe=cva(["block font-medium text-[var(--content-foreground)]","mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5',"data-[required]:after:text-[var(--destructive-background)]"],{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),Ye=cva(["text-[var(--menu-muted)]","mt-1"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),We=cva(["flex items-center gap-1","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var ae=forwardRef(({label:p,description:o,errorMessage:f,size:n="default",stepperLayout:l="sides",allowNegative:e=false,incrementAriaLabel:a,decrementAriaLabel:i,minValue:t,maxValue:s,className:v,isInvalid:c,isRequired:P,isDisabled:R,isReadOnly:g,...E},L)=>{let y=t??(e?Ue:ke),b=s??Oe,r=l!=="hidden"&&!g,z=l==="stacked";return jsxs(NumberField,{ref:L,className:N("group flex flex-col",v),minValue:y,maxValue:b,isInvalid:c,isRequired:P,isDisabled:R,isReadOnly:g,...E,children:[jsx(Label,{className:N(qe({size:n})),"data-required":P||void 0,children:p}),jsxs(Group,{className:N($e({size:n,isInvalid:c??false}),z&&"pr-0"),children:[r&&!z&&jsx(M,{slot:"decrement",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:N(X({size:n,position:"left"})),"aria-label":i??"Decrease value",children:jsx(Minus,{className:"h-4 w-4","aria-hidden":"true"})}),jsx(Input,{className:N(je({size:n}))}),r&&z&&jsxs("div",{className:"flex flex-col h-full",children:[jsx(M,{slot:"increment",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:N(X({size:n,position:"top"})),"aria-label":a??"Increase value",children:jsx(Plus,{className:"h-3 w-3","aria-hidden":"true"})}),jsx(M,{slot:"decrement",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:N(X({size:n,position:"bottom"})),"aria-label":i??"Decrease value",children:jsx(Minus,{className:"h-3 w-3","aria-hidden":"true"})})]}),r&&!z&&jsx(M,{slot:"increment",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:N(X({size:n,position:"right"})),"aria-label":a??"Increase value",children:jsx(Plus,{className:"h-4 w-4","aria-hidden":"true"})})]}),o&&jsx(Text,{slot:"description",className:N(Ye({size:n})),children:o}),jsx(FieldError,{className:N(We({size:n})),children:f})]})});ae.displayName="NumberField";var ge=forwardRef(function({isOpen:o,onOpenChange:f,groupLabel:n,leftPanel:l,rightPanel:e,leftSize:a,rightSize:i,onSizesChange:t,presets:s,triggerRef:v,direction:c},P){let[R,g]=useState({left:a,right:i}),E=useRef(false);useEffect(()=>{o&&!E.current&&g({left:a,right:i}),E.current=o;},[o,a,i]);let L=useCallback(d=>{if(d===null)return;let u=Math.max(l.collapsible?0:l.minSize,Math.min(l.maxSize,d)),x=100-u,V=e.collapsible?0:e.minSize,T=e.maxSize;x<V||x>T||t(u,x);},[l,e,t]),y=useCallback(d=>{if(d===null)return;let u=Math.max(e.collapsible?0:e.minSize,Math.min(e.maxSize,d)),x=100-u,V=l.collapsible?0:l.minSize,T=l.maxSize;x<V||x>T||t(x,u);},[l,e,t]),b=useCallback(d=>{let u=d.sizes[0],x=d.sizes[1];u!==void 0&&x!==void 0&&t(u,x);},[t]),r=useCallback(()=>{t(R.left,R.right),f(false);},[t,f,R]),z=useCallback(()=>{f(false);},[f]);return o?jsxs(DialogTrigger,{isOpen:o,onOpenChange:f,children:[jsx(Button,{className:"sr-only",children:"Open resize controls"}),jsx(Popover,{triggerRef:v,placement:c==="horizontal"?"bottom":"right",offset:8,className:N("w-72","rounded-lg border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-lg","outline-none","animate-in fade-in-0 zoom-in-95","data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95"),children:jsxs(Dialog,{className:"outline-none",children:[jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[jsxs("h3",{className:"text-sm font-medium",children:["Resize: ",n]}),jsx(Button,{onPress:z,className:N("inline-flex items-center justify-center rounded-md","min-h-[44px] min-w-[44px]","text-[var(--menu-muted)]","hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"),"aria-label":"Close",children:jsx(X$1,{className:"h-4 w-4"})})]}),jsxs("div",{className:"space-y-4 px-4 py-4",children:[jsx("div",{children:jsx(ae,{label:`${l.name} (%)`,value:Math.round(a),onChange:L,minValue:l.collapsible?0:l.minSize,maxValue:l.maxSize,step:1,stepperLayout:"sides"})}),jsx("div",{children:jsx(ae,{label:`${e.name} (%)`,value:Math.round(i),onChange:y,minValue:e.collapsible?0:e.minSize,maxValue:e.maxSize,step:1,stepperLayout:"sides"})}),s&&s.length>0&&jsxs("div",{className:"border-t border-[var(--border)] pt-4",children:[jsx("div",{className:"mb-2 text-xs font-medium text-[var(--menu-muted)]",children:"Presets"}),jsx("div",{className:"flex flex-wrap gap-2",children:s.map((d,u)=>jsx(M,{variant:"outline",size:"sm",onPress:()=>b(d),children:d.label},u))})]})]}),jsx("div",{className:"flex justify-end border-t border-[var(--border)] px-4 py-3",children:jsx(M,{variant:"ghost",size:"sm",onPress:r,children:"Cancel"})})]})})]}):null});ge.displayName="ResizablePopover";var Qe=forwardRef(function({withHandle:o=true,presets:f,disabled:n=false,className:l},e){let{direction:a,groupLabel:i,sizes:t,setSizes:s,panels:v,announce:c,containerRef:P}=W(),R=useRef(null),g=e||R,[E,L]=useState(0);useEffect(()=>{let D=g.current,_=P.current;if(!D||!_)return;let k=_.querySelectorAll('[role="slider"]'),he=0;k.forEach((et,tt)=>{et===D&&(he=tt);}),L(he);},[P,g]);let y=E,b=E+1,r=v[y],z=v[b],w=t[y]??50,d=t[b]??50,[u,x]=useState(false),V=useCallback((D,_)=>{let k=[...t];k[y]=D,k[b]=_,s(k);},[t,s,y,b]),{isDragging:T,handlePointerDown:F,handleKeyDown:K}=De({direction:a,sizes:t,setSizes:s,panels:v,containerRef:P,leftPanelIndex:y,rightPanelIndex:b,disabled:n,announce:c,groupLabel:i,onOpenPopover:()=>x(true)}),G=r&&z?`Resize handle between ${r.name} and ${z.name} in ${i}`:`Resize handle in ${i}`,S=a==="horizontal"?GripVertical:GripHorizontal,C=r??{name:"Panel 1",minSize:U,maxSize:$,collapsible:false},I=z??{name:"Panel 2",minSize:U,maxSize:$,collapsible:false};return jsxs(Fragment,{children:[jsx("div",{ref:g,role:"slider",tabIndex:n?-1:0,"aria-label":G,"aria-valuenow":Math.round(w),"aria-valuemin":r?.collapsible?0:r?.minSize??0,"aria-valuemax":r?.maxSize??100,"aria-orientation":a,"aria-disabled":n,"data-direction":a,"data-dragging":T,"data-disabled":n,onPointerDown:F,onKeyDown:K,className:N(se({direction:a,disabled:n,isDragging:T}),l),children:o&&jsx("div",{className:N(le({direction:a})),"aria-hidden":"true",children:jsx(S,{className:"h-4 w-4"})})}),jsx(ge,{isOpen:u,onOpenChange:x,groupLabel:i,leftPanel:C,rightPanel:I,leftSize:w,rightSize:d,onSizesChange:V,presets:f,triggerRef:g,direction:a})]})});Qe.displayName="ResizableHandle";export{$ as DEFAULT_MAX_SIZE,U as DEFAULT_MIN_SIZE,te as LONG_PRESS_THRESHOLD,Qe as ResizableHandle,ct as ResizableHandlePropsSchema,Ve as ResizablePanel,ye as ResizablePanelGroup,lt as ResizablePanelGroupPropsSchema,ut as ResizablePanelPropsSchema,Ee as ResizePresetSchema,le as resizableGripVariants,se as resizableHandleVariants,W as useResizableContext};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {createContext,forwardRef,useImperativeHandle,useRef,useState,useEffect,memo,useId,useCallback,useContext}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';import {cva}from'class-variance-authority';import {Loader2,Zap,Minus,Plus,X,GripVertical,GripHorizontal}from'lucide-react';import {Button,NumberField,Label,Group,Input,Text,FieldError,DialogTrigger,Popover,Dialog}from'react-aria-components';function S(...o){return twMerge(clsx(o))}var oe=createContext(null);oe.displayName="ResizableContext";function Q(){let o=useContext(oe);if(!o)throw new Error("useResizableContext must be used within a ResizablePanelGroup. Make sure ResizablePanel and ResizableHandle are children of ResizablePanelGroup.");return o}function we({direction:o,groupLabel:e,sizes:a,onSizesChange:t}){let[d,n]=useState([]),[i,l]=useState([]),r=useRef(null),u=useRef(null),x=useRef(null),f=useRef(false),P=a!==void 0,R=P?a:d,z=useCallback(b=>{P?t?.(b):n(b);},[P,t]),L=useCallback((b,s)=>{l(E=>{let V=[...E];return V[b]=s,V});},[]),C=useCallback(b=>{l(s=>{let E=[...s];return delete E[b],E.filter(Boolean)});},[]);useEffect(()=>{if(P||f.current)return;let s=i.filter(Boolean).length;if(s<2)return;if(R.length<s||R.some(V=>V===void 0)){let V=[],p=100/s;for(let m=0;m<s;m++)V[m]=p;f.current=true,n(V);}},[i,R,P]),useEffect(()=>()=>{x.current&&clearTimeout(x.current),u.current&&(document.body.removeChild(u.current),u.current=null);},[]);let y=useCallback(b=>{if(!u.current){let s=document.createElement("div");s.setAttribute("aria-live","polite"),s.setAttribute("aria-atomic","true"),s.className="sr-only",s.style.cssText="position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;",document.body.appendChild(s),u.current=s;}u.current.textContent=b,x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{u.current&&(u.current.textContent="");},1e3);},[]);return {direction:o,groupLabel:e,sizes:R,setSizes:z,panels:i,registerPanel:L,unregisterPanel:C,announce:y,containerRef:r}}var Te=forwardRef(function({direction:e,groupLabel:a,sizes:t,onSizesChange:d,className:n,children:i},l){let r=we({direction:e,groupLabel:a,sizes:t,onSizesChange:d});return useImperativeHandle(l,()=>r.containerRef.current,[r.containerRef]),jsx(oe.Provider,{value:r,children:jsx("div",{ref:r.containerRef,role:"group","aria-label":`${a}, ${e}`,"data-direction":e,className:S("flex h-full w-full",e==="horizontal"?"flex-row":"flex-col",n),children:i})})});Te.displayName="ResizablePanelGroup";var $=10,j=90,ae=300,Ae=z.object({label:z.string().min(1),sizes:z.array(z.number().min(0).max(100))}),bt=z.object({direction:z.enum(["horizontal","vertical"]),groupLabel:z.string().min(1),sizes:z.array(z.number().min(0).max(100)).optional(),onSizesChange:z.function().optional(),className:z.string().optional(),children:z.custom()}),vt=z.object({name:z.string().min(1),defaultSize:z.number().min(0).max(100).optional(),minSize:z.number().min(0).max(100).optional().default($),maxSize:z.number().min(0).max(100).optional().default(j),collapsible:z.boolean().optional().default(false),onCollapse:z.function().optional(),onExpand:z.function().optional(),onResize:z.function().optional(),className:z.string().optional(),children:z.custom()}),xt=z.object({withHandle:z.boolean().optional().default(true),presets:z.array(Ae).optional(),disabled:z.boolean().optional().default(false),className:z.string().optional()}),pe=cva(["relative flex items-center justify-center","shrink-0","bg-transparent","transition-colors duration-150","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","touch-none select-none"],{variants:{direction:{horizontal:["w-3 min-w-[12px]","cursor-col-resize","hover:bg-[var(--accent)]/50","before:absolute before:inset-y-0 before:-inset-x-4","before:min-w-[44px]"],vertical:["h-3 min-h-[12px]","cursor-row-resize","hover:bg-[var(--accent)]/50","before:absolute before:inset-x-0 before:-inset-y-4","before:min-h-[44px]"]},disabled:{true:"cursor-not-allowed opacity-50 pointer-events-none",false:""},isDragging:{true:"bg-[var(--accent)]",false:""}},defaultVariants:{direction:"horizontal",disabled:false,isDragging:false}}),fe=cva(["flex items-center justify-center","rounded-full","bg-[var(--border)]","text-[var(--menu-muted)]"],{variants:{direction:{horizontal:"h-8 w-1",vertical:"h-1 w-8"}},defaultVariants:{direction:"horizontal"}});var De=forwardRef(function({name:e,defaultSize:a,minSize:t=$,maxSize:d=j,collapsible:n=false,onCollapse:i,onExpand:l,onResize:r,className:u,children:x},f){let{sizes:P,registerPanel:R,unregisterPanel:z,containerRef:L}=Q(),C=useRef(null),[y,b]=useState(-1),s=useRef(null),E=useRef(false),V=useRef(-1);useEffect(()=>{let m=C.current,v=L.current;if(!m||!v)return;let N=v.querySelectorAll("[data-resizable-panel]"),T=-1;for(let M=0;M<N.length;M++)if(N[M]===m){T=M;break}if(T!==-1)return y!==T&&b(T),E.current||(E.current=true,V.current=T,R(T,{name:e,minSize:t,maxSize:d,collapsible:n})),()=>{E.current&&(z(V.current),E.current=false);}},[L,R,z,e,t,d,n,y]);let p=y>=0?P[y]??50:50;return useEffect(()=>{if(s.current===null){s.current=p;return}let m=s.current===0,v=p===0;!m&&v&&i?i():m&&!v&&l&&l(),r&&s.current!==p&&r(p),s.current=p;},[p,i,l,r]),jsx("div",{ref:m=>{C.current=m,typeof f=="function"?f(m):f&&(f.current=m);},role:"region","aria-label":e,"data-resizable-panel":"","data-panel-name":e,"data-panel-index":y,"data-collapsed":p===0,style:{flexBasis:`${p}%`,flexGrow:0,flexShrink:0,overflow:"hidden"},className:S("relative",u),children:x})});De.displayName="ResizablePanel";function Ie(o,e,a){return Math.max(e,Math.min(a,o))}function Me(o,e,a,t,d){let n=[...o],i=e[a],l=e[t];if(!i||!l)return o;let r=o[a]??50,u=o[t]??50,x=r+d,f=u-d,P=i.collapsible?0:i.minSize,R=i.maxSize,z=l.collapsible?0:l.minSize,L=l.maxSize;return x=Ie(x,P,R),f=r+u-x,f=Ie(f,z,L),x=r+u-f,n[a]=x,n[t]=f,n}function Fe({direction:o,sizes:e,setSizes:a,panels:t,containerRef:d,leftPanelIndex:n,rightPanelIndex:i,disabled:l=false,announce:r,groupLabel:u,onOpenPopover:x}){let[f,P]=useState(false),R=useRef(null),z=useRef(null),L=useRef(0),C=useRef(false),y=useRef(t),b=useRef(e),s=useRef(a),E=useRef(()=>{}),V=useRef(()=>{});useEffect(()=>{y.current=t,b.current=e,s.current=a;},[t,e,a]);let p=useCallback(()=>{let h=d.current;return h?o==="horizontal"?h.offsetWidth:h.offsetHeight:0},[d,o]),m=useCallback(h=>{let A=p();return A===0?0:h/A*100},[p]),v=useCallback(h=>{E.current(h);},[]),N=useCallback(()=>{V.current();},[]),T=useCallback(h=>{if(!R.current||l)return;let I=(o==="horizontal"?h.clientX:h.clientY)-R.current.position,w=m(I),D=Me(R.current.sizes,y.current,n,i,w);s.current(D);},[o,l,n,m,i]),M=useCallback(()=>{if(z.current&&(clearTimeout(z.current),z.current=null),Date.now()-L.current<ae&&!C.current&&x&&!l&&x(),f){P(false);let I=y.current[n],w=Math.round(b.current[n]??50);r&&I&&u&&r(`${I.name} in ${u} resized to ${w} percent`);}R.current=null,C.current=false,document.removeEventListener("pointermove",v),document.removeEventListener("pointerup",N),document.removeEventListener("pointercancel",N),document.body.style.cursor="",document.body.style.userSelect="";},[r,l,u,f,n,x,v,N]);useEffect(()=>{E.current=T,V.current=M;});let O=useCallback(h=>{if(l)return;h.preventDefault();let A=o==="horizontal"?h.clientX:h.clientY;L.current=Date.now(),C.current=false,R.current={position:A,sizes:[...e],containerSize:p()},z.current=setTimeout(()=>{C.current=true,P(true),document.body.style.cursor=o==="horizontal"?"col-resize":"row-resize",document.body.style.userSelect="none";},ae),document.addEventListener("pointermove",v),document.addEventListener("pointerup",N),document.addEventListener("pointercancel",N),h.pointerType==="mouse"&&(z.current&&(clearTimeout(z.current),z.current=null),C.current=true,P(true),document.body.style.cursor=o==="horizontal"?"col-resize":"row-resize",document.body.style.userSelect="none");},[o,l,p,v,N,e]),F=useCallback(h=>{if(l)return;let A=h.shiftKey?10:1,I=0;switch(h.key){case "ArrowLeft":case "ArrowUp":I=-A;break;case "ArrowRight":case "ArrowDown":I=A;break;case "Home":{let w=t[n];w&&(I=(w.collapsible?0:w.minSize)-(e[n]??50));break}case "End":{let w=t[n];w&&(I=w.maxSize-(e[n]??50));break}case "Enter":case " ":h.preventDefault(),x?.();return;default:return}if(I!==0){h.preventDefault();let w=Me(e,t,n,i,I);a(w);let D=t[n],G=Math.round(w[n]??50);r&&D&&u&&r(`${D.name} in ${u} resized to ${G} percent`);}},[r,l,u,n,x,t,i,a,e]);return useEffect(()=>{let h=v,A=N;return ()=>{z.current&&clearTimeout(z.current),document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",A),document.removeEventListener("pointercancel",A);}},[v,N]),{isDragging:f,handlePointerDown:O,handleKeyDown:F}}var ve=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),xe=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]",link:"text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-8",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var he="data-[pressed]:scale-[0.97]";var ge="data-[hovered]:shadow-md";var se="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",le="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var ke=createContext(null);ke.displayName="ButtonGroupContext";function Oe(){return useContext(ke)}var Ue=createContext(null);Ue.displayName="ButtonGroupItemContext";function $e(){return useContext(Ue)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var je=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var B=memo(forwardRef(({className:o,buttonVisualClassName:e,variant:a,size:t,visualSize:d,fullWidth:n,loading:i=false,loadingText:l="Loading...",shortcut:r,children:u,isDisabled:x,paywall:f=false,paywallRedirect:P,paywallDescription:R,onPress:z,...L},C)=>{let y=useId(),b=Oe(),s=$e(),E=a??b?.variant??"default",V=t??b?.size,p=x??b?.isDisabled??false,m=b?.orientation==="vertical",v=n||m,N=s?je({orientation:b?.orientation??"horizontal",position:s.position}):"",T=d??V??"default";return process.env.NODE_ENV!=="production"&&(T==="dot"||T==="icon")&&!L["aria-label"]&&!u&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:C,isDisabled:p||i||void 0,"aria-disabled":f?true:void 0,"aria-describedby":f?y:void 0,onPress:F=>{if(f){P&&window.open(P,"_blank","noopener,noreferrer");return}z?.(F);},className:S(ve({fullWidth:v,inVerticalGroup:m}),o),...L,children:F=>jsxs("span",{className:S(xe({variant:E,visualSize:T,paywall:f,fullWidth:v}),N,e,he,ge,se,le),"data-pressed":F.isPressed||void 0,children:[i&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:l})]}),!i&&u,f&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),f&&jsxs("span",{id:y,className:"sr-only",children:["Premium feature: ",R||"Upgrade required to access this feature"]}),F.isFocusVisible&&r&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:r}),F.isPressed&&jsx("span",{className:"absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95","aria-hidden":"true"})]})})}));B.displayName="Button";function qe(o,e){return !(o===false||e)}var Ye="(prefers-reduced-motion: reduce)";function Ct(){return typeof window>"u"?false:window.matchMedia(Ye).matches}function We(){let[o,e]=useState(Ct);return useEffect(()=>{let a=window.matchMedia(Ye);e(a.matches);let t=d=>{e(d.matches);};return a.addEventListener("change",t),()=>a.removeEventListener("change",t)},[]),o}var Xe=4294967295,Ze=0,Ke=-2147483647;z.object({value:z.number().nullable().optional(),defaultValue:z.number().optional(),minValue:z.number().optional(),maxValue:z.number().optional(),allowNegative:z.boolean().optional(),step:z.number().positive().optional(),formatOptions:z.custom().optional(),isDisabled:z.boolean().optional(),isReadOnly:z.boolean().optional(),isRequired:z.boolean().optional(),isInvalid:z.boolean().optional(),isWheelDisabled:z.boolean().optional(),validate:z.function().optional(),validationBehavior:z.enum(["native","aria"]).default("native"),label:z.string(),description:z.string().optional(),errorMessage:z.union([z.string(),z.function()]).optional(),stepperLayout:z.enum(["sides","stacked","hidden"]).default("sides"),incrementAriaLabel:z.string().optional(),decrementAriaLabel:z.string().optional(),name:z.string().optional(),size:z.enum(["sm","default","lg"]).default("default"),onChange:z.function().optional(),onFocus:z.function().optional(),onBlur:z.function().optional(),onFocusChange:z.function().optional(),animated:z.boolean().optional().default(true),springConfig:z.object({stiffness:z.number(),damping:z.number()}).optional(),className:z.string().optional(),autoFocus:z.boolean().optional()});var Qe=cva(["inline-flex items-center rounded-md border","bg-[var(--content-background)] text-[var(--content-foreground)]","transition-colors duration-200","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-2","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50"],{variants:{size:{sm:"h-9 text-sm",default:"h-10 text-base",lg:"h-12 text-lg"},isInvalid:{true:"border-[var(--destructive-background)] focus-within:ring-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),Je=cva(["flex-1 bg-transparent text-center tabular-nums","min-w-0","focus:outline-none","[appearance:textfield]","[&::-webkit-outer-spin-button]:appearance-none","[&::-webkit-inner-spin-button]:appearance-none"],{variants:{size:{sm:"px-2 text-sm",default:"px-3 text-base",lg:"px-4 text-lg"}},defaultVariants:{size:"default"}}),J=cva(["flex items-center justify-center","transition-colors duration-150","select-none","hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]","focus-visible:ring-inset","active:bg-[var(--accent)]/80","disabled:pointer-events-none disabled:opacity-50"],{variants:{size:{sm:"min-w-8 min-h-8 text-sm",default:"min-w-10 min-h-10 text-base",lg:"min-w-12 min-h-12 text-lg"},position:{left:"rounded-l-md border-r border-[var(--input-border)]",right:"rounded-r-md border-l border-[var(--input-border)]",top:"rounded-tr-md border-b border-l border-[var(--input-border)] h-1/2",bottom:"rounded-br-md border-l border-[var(--input-border)] h-1/2"}},defaultVariants:{size:"default"}}),et=cva(["block font-medium text-[var(--content-foreground)]","mb-1.5",'data-[required]:after:content-["*"] data-[required]:after:ml-0.5',"data-[required]:after:text-[var(--destructive-background)]"],{variants:{size:{sm:"text-sm",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),tt=cva(["text-[var(--menu-muted)]","mt-1"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),nt=cva(["flex items-center gap-1","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}});var ee;function Bt(){return ee!==void 0?Promise.resolve(ee):import('motion').then(o=>(ee=o.animate,ee)).catch(()=>(ee=null,null))}function kt(o,e){if(e)try{let a={...e};return a.style==="currency"&&!a.currencyDisplay&&(a.currencyDisplay="narrowSymbol"),new Intl.NumberFormat(void 0,a).format(o)}catch{return String(Math.round(o))}return String(Math.round(o))}var de=forwardRef(({label:o,description:e,errorMessage:a,size:t="default",stepperLayout:d="sides",allowNegative:n=false,incrementAriaLabel:i,decrementAriaLabel:l,animated:r,springConfig:u,onChange:x,value:f,defaultValue:P,formatOptions:R,minValue:z,maxValue:L,className:C,isInvalid:y,isRequired:b,isDisabled:s,isReadOnly:E,...V},p)=>{let m=z??(n?Ke:Ze),v=L??Xe,N=d!=="hidden"&&!E,T=We(),M=qe(r,T)&&N,O=useRef(null),F=useRef(f??P??0),h=useRef(void 0),A=useRef(null);useEffect(()=>{M&&Bt().then(D=>{h.current=D??null;});},[M]),useEffect(()=>()=>{A.current?.stop();},[]);let I=D=>{let G=F.current;if(M&&h.current&&O.current&&G!==D){A.current?.stop();let K=D,q=O.current,Y=q.parentElement?.querySelector("input");q.style.display="",Y&&(Y.style.color="transparent"),A.current=h.current(G,K,{type:"spring",stiffness:u?.stiffness??500,damping:u?.damping??30,onUpdate:Pe=>{F.current=Pe,q.textContent=kt(Pe,R);},onComplete:()=>{q.style.display="none",Y&&(Y.style.color=""),A.current=null,F.current=K;}});}else F.current=D;x?.(D);},w=d==="stacked";return jsxs(NumberField,{ref:p,className:S("group flex flex-col",C),minValue:m,maxValue:v,isInvalid:y,isRequired:b,isDisabled:s,isReadOnly:E,value:f,defaultValue:P,formatOptions:R,onChange:I,...V,children:[jsx(Label,{className:S(et({size:t})),"data-required":b||void 0,children:o}),jsxs(Group,{className:S(Qe({size:t,isInvalid:y??false}),w&&"pr-0"),children:[N&&!w&&jsx(B,{slot:"decrement",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:S(J({size:t,position:"left"})),"aria-label":l??"Decrease value",children:jsx(Minus,{className:"h-4 w-4","aria-hidden":"true"})}),jsxs("div",{className:"relative flex flex-1",children:[jsx(Input,{className:S(Je({size:t}),"w-full")}),M&&jsx("span",{ref:O,className:S("absolute inset-0 flex items-center justify-center","pointer-events-none bg-[var(--content-background)] tabular-nums",t==="sm"&&"px-2 text-sm",t==="default"&&"px-3 text-base",t==="lg"&&"px-4 text-lg"),style:{display:"none"},"aria-hidden":"true"})]}),N&&w&&jsxs("div",{className:"flex flex-col h-full",children:[jsx(B,{slot:"increment",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:S(J({size:t,position:"top"})),"aria-label":i??"Increase value",children:jsx(Plus,{className:"h-3 w-3","aria-hidden":"true"})}),jsx(B,{slot:"decrement",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:S(J({size:t,position:"bottom"})),"aria-label":l??"Decrease value",children:jsx(Minus,{className:"h-3 w-3","aria-hidden":"true"})})]}),N&&!w&&jsx(B,{slot:"increment",variant:"ghost",className:"!min-h-0 !min-w-0",buttonVisualClassName:S(J({size:t,position:"right"})),"aria-label":i??"Increase value",children:jsx(Plus,{className:"h-4 w-4","aria-hidden":"true"})})]}),e&&jsx(Text,{slot:"description",className:S(tt({size:t})),children:e}),jsx(FieldError,{className:S(nt({size:t})),children:a})]})});de.displayName="NumberField";var Se=forwardRef(function({isOpen:e,onOpenChange:a,groupLabel:t,leftPanel:d,rightPanel:n,leftSize:i,rightSize:l,onSizesChange:r,presets:u,triggerRef:x,direction:f},P){let[R,z]=useState({left:i,right:l}),L=useRef(false);useEffect(()=>{e&&!L.current&&z({left:i,right:l}),L.current=e;},[e,i,l]);let C=useCallback(p=>{if(p===null)return;let m=Math.max(d.collapsible?0:d.minSize,Math.min(d.maxSize,p)),v=100-m,N=n.collapsible?0:n.minSize,T=n.maxSize;v<N||v>T||r(m,v);},[d,n,r]),y=useCallback(p=>{if(p===null)return;let m=Math.max(n.collapsible?0:n.minSize,Math.min(n.maxSize,p)),v=100-m,N=d.collapsible?0:d.minSize,T=d.maxSize;v<N||v>T||r(v,m);},[d,n,r]),b=useCallback(p=>{let m=p.sizes[0],v=p.sizes[1];m!==void 0&&v!==void 0&&r(m,v);},[r]),s=useCallback(()=>{r(R.left,R.right),a(false);},[r,a,R]),E=useCallback(()=>{a(false);},[a]);return e?jsxs(DialogTrigger,{isOpen:e,onOpenChange:a,children:[jsx(Button,{className:"sr-only",children:"Open resize controls"}),jsx(Popover,{triggerRef:x,placement:f==="horizontal"?"bottom":"right",offset:8,className:S("w-72","rounded-lg border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","shadow-lg","outline-none","animate-in fade-in-0 zoom-in-95","data-[exiting]:animate-out data-[exiting]:fade-out-0 data-[exiting]:zoom-out-95"),children:jsxs(Dialog,{className:"outline-none",children:[jsxs("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[jsxs("h3",{className:"text-sm font-medium",children:["Resize: ",t]}),jsx(Button,{onPress:E,className:S("inline-flex items-center justify-center rounded-md","min-h-[44px] min-w-[44px]","text-[var(--menu-muted)]","hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"),"aria-label":"Close",children:jsx(X,{className:"h-4 w-4"})})]}),jsxs("div",{className:"space-y-4 px-4 py-4",children:[jsx("div",{children:jsx(de,{label:`${d.name} (%)`,value:Math.round(i),onChange:C,minValue:d.collapsible?0:d.minSize,maxValue:d.maxSize,step:1,stepperLayout:"sides"})}),jsx("div",{children:jsx(de,{label:`${n.name} (%)`,value:Math.round(l),onChange:y,minValue:n.collapsible?0:n.minSize,maxValue:n.maxSize,step:1,stepperLayout:"sides"})}),u&&u.length>0&&jsxs("div",{className:"border-t border-[var(--border)] pt-4",children:[jsx("div",{className:"mb-2 text-xs font-medium text-[var(--menu-muted)]",children:"Presets"}),jsx("div",{className:"flex flex-wrap gap-2",children:u.map((p,m)=>jsx(B,{variant:"outline",size:"sm",onPress:()=>b(p),children:p.label},m))})]})]}),jsx("div",{className:"flex justify-end border-t border-[var(--border)] px-4 py-3",children:jsx(B,{variant:"ghost",size:"sm",onPress:s,children:"Cancel"})})]})})]}):null});Se.displayName="ResizablePopover";var lt=forwardRef(function({withHandle:e=true,presets:a,disabled:t=false,className:d},n){let{direction:i,groupLabel:l,sizes:r,setSizes:u,panels:x,announce:f,containerRef:P}=Q(),R=useRef(null),z=n||R,[L,C]=useState(0);useEffect(()=>{let w=z.current,D=P.current;if(!w||!D)return;let G=D.querySelectorAll('[role="slider"]'),K=0;G.forEach((q,Y)=>{q===w&&(K=Y);}),C(K);},[P,z]);let y=L,b=L+1,s=x[y],E=x[b],V=r[y]??50,p=r[b]??50,[m,v]=useState(false),N=useCallback((w,D)=>{let G=[...r];G[y]=w,G[b]=D,u(G);},[r,u,y,b]),{isDragging:T,handlePointerDown:M,handleKeyDown:O}=Fe({direction:i,sizes:r,setSizes:u,panels:x,containerRef:P,leftPanelIndex:y,rightPanelIndex:b,disabled:t,announce:f,groupLabel:l,onOpenPopover:()=>v(true)}),F=s&&E?`Resize handle between ${s.name} and ${E.name} in ${l}`:`Resize handle in ${l}`,h=i==="horizontal"?GripVertical:GripHorizontal,A=s??{name:"Panel 1",minSize:$,maxSize:j,collapsible:false},I=E??{name:"Panel 2",minSize:$,maxSize:j,collapsible:false};return jsxs(Fragment,{children:[jsx("div",{ref:z,role:"slider",tabIndex:t?-1:0,"aria-label":F,"aria-valuenow":Math.round(V),"aria-valuemin":s?.collapsible?0:s?.minSize??0,"aria-valuemax":s?.maxSize??100,"aria-orientation":i,"aria-disabled":t,"data-direction":i,"data-dragging":T,"data-disabled":t,onPointerDown:M,onKeyDown:O,className:S(pe({direction:i,disabled:t,isDragging:T}),d),children:e&&jsx("div",{className:S(fe({direction:i})),"aria-hidden":"true",children:jsx(h,{className:"h-4 w-4"})})}),jsx(Se,{isOpen:m,onOpenChange:v,groupLabel:l,leftPanel:A,rightPanel:I,leftSize:V,rightSize:p,onSizesChange:N,presets:a,triggerRef:z,direction:i})]})});lt.displayName="ResizableHandle";export{j as DEFAULT_MAX_SIZE,$ as DEFAULT_MIN_SIZE,ae as LONG_PRESS_THRESHOLD,lt as ResizableHandle,xt as ResizableHandlePropsSchema,De as ResizablePanel,Te as ResizablePanelGroup,bt as ResizablePanelGroupPropsSchema,vt as ResizablePanelPropsSchema,Ae as ResizePresetSchema,fe as resizableGripVariants,pe as resizableHandleVariants,Q as useResizableContext};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|