@tribepad/themis 1.9.4 → 1.9.5
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/CHANGELOG.md +7 -0
- 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/Button/index.js +1 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.mjs +1 -1
- package/dist/elements/Button/index.mjs.map +1 -1
- package/dist/elements/Card/index.js +1 -1
- package/dist/elements/Card/index.js.map +1 -1
- package/dist/elements/Card/index.mjs +1 -1
- package/dist/elements/Card/index.mjs.map +1 -1
- package/dist/elements/Carousel/Carousel.d.ts +8 -1
- package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
- package/dist/elements/Carousel/index.js +1 -1
- package/dist/elements/Carousel/index.js.map +1 -1
- package/dist/elements/Carousel/index.mjs +1 -1
- package/dist/elements/Carousel/index.mjs.map +1 -1
- package/dist/elements/ChatInterface/ChatLiveRegions.d.ts +2 -2
- package/dist/elements/ChatInterface/ChatLiveRegions.d.ts.map +1 -1
- package/dist/elements/ChatInterface/ChatMessageBubble.d.ts +1 -1
- package/dist/elements/ChatInterface/ChatMessageBubble.d.ts.map +1 -1
- package/dist/elements/ChatInterface/ChatThinkingDisplay.d.ts +2 -2
- package/dist/elements/ChatInterface/ChatThinkingDisplay.d.ts.map +1 -1
- package/dist/elements/ChatInterface/ChatTypingIndicator.d.ts +2 -2
- package/dist/elements/ChatInterface/ChatTypingIndicator.d.ts.map +1 -1
- package/dist/elements/ChatInterface/index.js +1 -1
- package/dist/elements/ChatInterface/index.js.map +1 -1
- package/dist/elements/ChatInterface/index.mjs +1 -1
- package/dist/elements/ChatInterface/index.mjs.map +1 -1
- package/dist/elements/FeatureIcon/FeatureIcon.d.ts +3 -0
- package/dist/elements/FeatureIcon/FeatureIcon.d.ts.map +1 -0
- package/dist/elements/FeatureIcon/FeatureIcon.styles.d.ts +17 -0
- package/dist/elements/FeatureIcon/FeatureIcon.styles.d.ts.map +1 -0
- package/dist/elements/FeatureIcon/FeatureIcon.types.d.ts +137 -0
- package/dist/elements/FeatureIcon/FeatureIcon.types.d.ts.map +1 -0
- package/dist/elements/FeatureIcon/index.d.ts +25 -0
- package/dist/elements/FeatureIcon/index.d.ts.map +1 -0
- package/dist/elements/FeatureIcon/index.js +3 -0
- package/dist/elements/FeatureIcon/index.js.map +1 -0
- package/dist/elements/FeatureIcon/index.mjs +3 -0
- package/dist/elements/FeatureIcon/index.mjs.map +1 -0
- 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/Filters/index.js +1 -1
- package/dist/elements/Filters/index.js.map +1 -1
- package/dist/elements/Filters/index.mjs +1 -1
- package/dist/elements/Filters/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +2 -2
- package/dist/elements/Modal/Modal.types.d.ts +2 -2
- 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/PageTitle/index.js +1 -1
- package/dist/elements/PageTitle/index.js.map +1 -1
- package/dist/elements/PageTitle/index.mjs +1 -1
- package/dist/elements/PageTitle/index.mjs.map +1 -1
- package/dist/elements/Pagination/index.js +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.mjs +1 -1
- package/dist/elements/Pagination/index.mjs.map +1 -1
- package/dist/elements/Panel/Panel.d.ts +1 -1
- package/dist/elements/Panel/Panel.types.d.ts +2 -2
- package/dist/elements/PasswordField/index.js +1 -1
- package/dist/elements/PasswordField/index.js.map +1 -1
- package/dist/elements/PasswordField/index.mjs +1 -1
- package/dist/elements/PasswordField/index.mjs.map +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/SearchField/index.js +1 -1
- package/dist/elements/SearchField/index.js.map +1 -1
- package/dist/elements/SearchField/index.mjs +1 -1
- package/dist/elements/SearchField/index.mjs.map +1 -1
- package/dist/elements/Select/Select.d.ts +3 -3
- package/dist/elements/Select/Select.d.ts.map +1 -1
- package/dist/elements/Sidebar/Sidebar.styles.d.ts +1 -1
- package/dist/elements/Sidebar/Sidebar.styles.d.ts.map +1 -1
- package/dist/elements/Sidebar/Sidebar.types.d.ts +2 -2
- package/dist/elements/Sidebar/SidebarRail.d.ts.map +1 -1
- package/dist/elements/Sidebar/index.js +1 -1
- package/dist/elements/Sidebar/index.js.map +1 -1
- package/dist/elements/Sidebar/index.mjs +1 -1
- package/dist/elements/Sidebar/index.mjs.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -1
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/TextField/index.js +1 -1
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -1
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/Timeline/index.js +1 -1
- package/dist/elements/Timeline/index.js.map +1 -1
- package/dist/elements/Timeline/index.mjs +1 -1
- package/dist/elements/Timeline/index.mjs.map +1 -1
- package/dist/elements/Toast/index.js +1 -1
- package/dist/elements/Toast/index.js.map +1 -1
- package/dist/elements/Toast/index.mjs +1 -1
- package/dist/elements/Toast/index.mjs.map +1 -1
- package/dist/elements/Wizard/index.js +1 -1
- package/dist/elements/Wizard/index.js.map +1 -1
- package/dist/elements/Wizard/index.mjs +1 -1
- package/dist/elements/Wizard/index.mjs.map +1 -1
- package/dist/elements/index.d.ts +2 -0
- package/dist/elements/index.d.ts.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/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 +15 -0
- package/package.json +16 -14
- package/src/elements/FeatureIcon/FeatureIcon.stories.tsx +164 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react');function g(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var X="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var K="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",Q="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",J="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var Le=classVarianceAuthority.cva(["group relative inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",X,K].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Be=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 bg-[var(--content-background)] flex items-center justify-center transition-colors duration-200 motion-safe:data-[selected]:selection-pulse",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]","data-[indeterminate]:border-[var(--destructive-background)]","data-[indeterminate]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),Pe=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function He({className:t,...e}){return jsxRuntime.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function De({className:t,...e}){return jsxRuntime.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var H=react.forwardRef(({isSelected:t,defaultSelected:e,isDisabled:a,isReadOnly:r,isIndeterminate:n,isInvalid:l=false,isRequired:o=false,onChange:s,onFocusChange:i,value:p,name:y,size:d="default",variant:m="default",label:S,description:T,selectedIcon:f,className:v,id:E,"aria-label":b,"aria-labelledby":N,"aria-describedby":I,"data-testid":k,slot:O},R)=>{let c=a||void 0,_=r||void 0,C=n||void 0,L=(V,u)=>{let x=g(Pe({variant:m,size:d})),P=V||void 0,$=u||void 0;if(u)return jsxRuntime.jsx(De,{className:x,"data-selected":P,"data-indeterminate":$});if(f&&V){if(react.isValidElement(f)){let ke=f;return react.cloneElement(ke,{className:g(x,ke.props.className),"data-selected":P})}return jsxRuntime.jsx("span",{className:x,"data-selected":P,children:f})}return jsxRuntime.jsx(He,{className:x,"data-selected":P,"data-indeterminate":$})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{ref:R,id:E,isSelected:t,defaultSelected:e,isDisabled:c,isReadOnly:_,isIndeterminate:C,isInvalid:l,isRequired:o,onChange:s,onFocusChange:i,value:p,name:y,slot:O,"aria-label":b,"aria-labelledby":N,"aria-describedby":I,"data-testid":k,className:V=>g(Le({size:d,isDisabled:V.isDisabled}),v),children:V=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:Be({variant:m,size:d,isInvalid:V.isInvalid}),"data-selected":V.isSelected||void 0,"data-indeterminate":V.isIndeterminate||void 0,children:L(V.isSelected,V.isIndeterminate)}),(S||T)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[S&&jsxRuntime.jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:S}),T&&jsxRuntime.jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:T})]})]})})});H.displayName="Checkbox";var be=classVarianceAuthority.cva(["relative w-full overflow-auto","rounded-lg border border-[var(--border)] bg-[var(--content-background)]"]),xe=classVarianceAuthority.cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"[&_tr>*+*]:border-l [&_tr>*+*]:border-[var(--border)]"}},defaultVariants:{variant:"default"}}),ge=classVarianceAuthority.cva(["[&_tr]:border-b [&_tr]:border-[var(--border)]"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),ve=classVarianceAuthority.cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),ee=classVarianceAuthority.cva(["h-12 px-4 text-left align-middle font-semibold","uppercase tracking-wide","bg-[var(--accent-background)] text-[var(--content-foreground)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),te=classVarianceAuthority.cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--selected)] data-[selected]:bg-[var(--selected)]",false:""},zebra:{true:"even:bg-[var(--accent-background)]/30",false:""}},defaultVariants:{isSelected:false,zebra:true}}),ae=classVarianceAuthority.cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var Y=react.createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false,zebra:true}),Ge=react.forwardRef(({className:t,variant:e="default",size:a="default",stickyHeader:r=false,zebra:n=true,toolbar:l,selectionMode:o="none",selectionBehavior:s="toggle",disallowEmptySelection:i=false,disabledBehavior:p="selection",selectedKeys:y,defaultSelectedKeys:d,onSelectionChange:m,disabledKeys:S,sortDescriptor:T,onSortChange:f,onRowAction:v,children:E,...b},N)=>{process.env.NODE_ENV!=="production"&&a==="sm"&&o!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let I=react.useMemo(()=>({variant:e,size:a,selectionMode:o,stickyHeader:r,zebra:n}),[e,a,o,r,n]);return jsxRuntime.jsx(Y.Provider,{value:I,children:jsxRuntime.jsxs("div",{className:g(be(),t),"data-testid":"table-container",children:[l,jsxRuntime.jsx(reactAriaComponents.Table,{ref:N,className:g(xe({variant:e})),selectionMode:o,selectionBehavior:s,disallowEmptySelection:i,disabledBehavior:p,selectedKeys:y,defaultSelectedKeys:d,onSelectionChange:m,disabledKeys:S,sortDescriptor:T,onSortChange:f,onRowAction:v,"data-testid":"table","data-variant":e,"data-size":a,"data-zebra":n,...b,children:E})]})})});Ge.displayName="Table";function Ut({className:t,children:e,columns:a,...r},n){let{size:l,selectionMode:o,stickyHeader:s}=react.useContext(Y),{allowsDragging:i}=reactAriaComponents.useTableOptions();return jsxRuntime.jsxs(reactAriaComponents.TableHeader,{ref:n,className:g(ge({sticky:s}),t),"data-testid":"table-header",...r,children:[o==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Column,{className:g(ee({size:l}),"w-12"),children:jsxRuntime.jsx(H,{slot:"selection","aria-label":"Select all",size:l})}),i&&jsxRuntime.jsx(reactAriaComponents.Column,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:e}):e]})}var Ue=react.forwardRef(Ut);Ue.displayName="TableHeader";function Ft({className:t,children:e,items:a,renderEmptyState:r,...n},l){return jsxRuntime.jsx(reactAriaComponents.TableBody,{ref:l,className:g(t),items:a,renderEmptyState:r?()=>jsxRuntime.jsx("div",{className:"text-center p-8",children:r()}):void 0,"data-testid":"table-body",...n,children:e})}var Fe=react.forwardRef(Ft);Fe.displayName="TableBody";var je=react.forwardRef(({className:t,children:e,...a},r)=>jsxRuntime.jsx("tfoot",{ref:r,className:g(ve(),t),"data-testid":"table-footer",...a,children:e}));je.displayName="TableFooter";var $e=react.forwardRef(({className:t,children:e,isRowHeader:a=false,allowsSorting:r=false,align:n="start",width:l,minWidth:o,maxWidth:s,...i},p)=>{let{size:y}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Column,{ref:p,isRowHeader:a,allowsSorting:r,width:l,minWidth:o,maxWidth:s,className:g(ee({allowsSorting:r,align:n,size:y}),t),...i,children:({allowsSorting:d,sortDirection:m})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{children:e}),d&&jsxRuntime.jsx("span",{"aria-hidden":"true","data-sort-direction":m??"none",className:m?"text-[var(--primary-action)]":"opacity-50",children:m==="ascending"?jsxRuntime.jsx(lucideReact.ChevronUp,{className:"h-4 w-4"}):m==="descending"?jsxRuntime.jsx(lucideReact.ChevronDown,{className:"h-4 w-4"}):jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-4 w-4"})})]})})});$e.displayName="Column";function jt({className:t,children:e,columns:a,href:r,isDisabled:n,...l},o){let{size:s,selectionMode:i,zebra:p}=react.useContext(Y),{allowsDragging:y}=reactAriaComponents.useTableOptions(),d=te({isSelected:true,zebra:p}),m=te({isSelected:false,zebra:p}),S=g(ae({size:s}),"w-12");return jsxRuntime.jsxs(reactAriaComponents.Row,{ref:o,href:r,isDisabled:n,className:({isSelected:T,isDisabled:f})=>g(T?d:m,f&&"opacity-50",t),"data-testid":"table-row",...l,children:[i==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Cell,{className:S,children:jsxRuntime.jsx(H,{slot:"selection","aria-label":"Select row",size:s})}),y&&jsxRuntime.jsx(reactAriaComponents.Cell,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:e}):e]})}var Ke=react.forwardRef(jt);Ke.displayName="Row";var Ye=react.memo(react.forwardRef(({className:t,children:e,align:a="start",colSpan:r,...n},l)=>{let{size:o}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Cell,{ref:l,className:g(ae({align:a,size:o}),t),...n,children:e})}));Ye.displayName="Cell";var Ee=classVarianceAuthority.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}}),he=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_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)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover: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-6 text-base",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)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Xe=react.createContext(null);Xe.displayName="ButtonGroupContext";function Qe(){return react.useContext(Xe)}var Je=react.createContext(null);Je.displayName="ButtonGroupItemContext";function et(){return react.useContext(Je)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var tt=classVarianceAuthority.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"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var U=react.memo(react.forwardRef(({className:t,buttonVisualClassName:e,variant:a,size:r,visualSize:n,fullWidth:l,loading:o=false,loadingText:s="Loading...",shortcut:i,children:p,isDisabled:y,paywall:d=false,paywallRedirect:m,paywallDescription:S,onPress:T,...f},v)=>{let E=react.useId(),b=Qe(),N=et(),I=a??b?.variant??"default",k=r??b?.size,O=y??b?.isDisabled??false,R=b?.orientation==="vertical",c=l||R,_=N?tt({orientation:b?.orientation??"horizontal",position:N.position}):"",C=n??k??"default";return process.env.NODE_ENV!=="production"&&(C==="dot"||C==="icon")&&!f["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:v,isDisabled:O||o||void 0,"aria-disabled":d?true:void 0,"aria-describedby":d?E:void 0,onPress:u=>{if(d){m&&window.open(m,"_blank","noopener,noreferrer");return}T?.(u);},className:g(Ee({fullWidth:c,inVerticalGroup:R}),t),...f,children:u=>jsxRuntime.jsxs("span",{className:g(he({variant:I,visualSize:C,paywall:d,fullWidth:c}),_,e,me,"",Q,J),"data-pressed":u.isPressed||void 0,children:[o&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:s})]}),!o&&p,d&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),d&&jsxRuntime.jsxs("span",{id:E,className:"sr-only",children:["Premium feature: ",S||"Upgrade required to access this feature"]}),u.isFocusVisible&&i&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:i})]})})}));U.displayName="Button";var ne=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap","px-4 py-2.5","bg-[var(--selected)]"],{variants:{sticky:{true:"sticky top-0 z-[6]",false:""},framed:{true:"rounded-lg border border-[var(--border)]",false:"border-b border-[var(--border)]"}},defaultVariants:{sticky:true,framed:false}}),se=classVarianceAuthority.cva(["flex items-center gap-3 flex-wrap w-full justify-between"]),ie=classVarianceAuthority.cva(["text-sm text-[var(--content-muted)] inline-flex items-center gap-1.5"]),at=classVarianceAuthority.cva(["inline-flex items-center justify-center","min-w-[1.5rem] h-6 px-1.5 rounded","border border-[var(--primary)]/40 bg-[var(--content-background)]","font-mono text-xs font-semibold text-[var(--primary-action)]"]),rt=classVarianceAuthority.cva(["text-[var(--primary-action)] border-[var(--primary)]/30","hover:bg-[var(--content-background)]"]);function ra(t,e){typeof t=="function"?t(e):t&&(t.current=e);}var ot=react.forwardRef(({selectedCount:t,actions:e,onAction:a,onClearSelection:r,sticky:n=true,framed:l=false,showJumpHint:o=false,shortcutKey:s="A",labels:i,className:p,"data-testid":y="bulk-action-bar"},d)=>{let m=react.useRef(null),S=react.useRef(t),T=react.useRef([]),[f,v]=react.useState(0),E=e.length+1,b=Math.min(f,E-1),N=c=>{let _=(c+E)%E;v(_),T.current[_]?.focus();},I=c=>{switch(c.key){case "ArrowRight":case "ArrowDown":c.preventDefault(),N(b+1);break;case "ArrowLeft":case "ArrowUp":c.preventDefault(),N(b-1);break;case "Home":c.preventDefault(),N(0);break;case "End":c.preventDefault(),N(E-1);break;}};react.useEffect(()=>{let c=S.current;if(S.current=t,c>0&&t===0){let _=document.activeElement;(!_||_===document.body)&&m.current?.focus();}},[t]);let k=t>0,O=o&&!!i.jumpHint,R="";if(k){let c=[i.selectedCount(t)];i.actionsAvailable&&c.push(i.actionsAvailable(e.length)),o&&i.jumpAnnouncement&&c.push(i.jumpAnnouncement),R=c.join(". ");}return jsxRuntime.jsxs("div",{ref:c=>{m.current=c,ra(d,c);},tabIndex:-1,className:g("outline-none",p),"data-testid":y,children:[jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite",children:R}),k&&jsxRuntime.jsx("div",{className:ne({sticky:n,framed:l}),children:jsxRuntime.jsxs("div",{role:"toolbar","aria-label":i.toolbarLabel(t),"aria-orientation":"horizontal",onKeyDown:I,className:se(),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-sm font-bold text-[var(--content-foreground)]",children:i.selectedCount(t)}),jsxRuntime.jsx(U,{ref:c=>{T.current[0]=c;},variant:"link",excludeFromTabOrder:b!==0,onFocus:()=>v(0),onPress:r,children:i.clear}),O&&i.jumpHint&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:ie(),children:i.jumpHint(jsxRuntime.jsx("kbd",{className:at(),children:s}))})]}),jsxRuntime.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:e.map((c,_)=>{let C=_+1;return jsxRuntime.jsxs(U,{ref:L=>{T.current[C]=L;},variant:c.tone==="danger"?"destructive":"outline",buttonVisualClassName:c.tone==="danger"?void 0:rt(),isDisabled:c.isDisabled,excludeFromTabOrder:b!==C,onFocus:()=>v(C),onPress:()=>a(c.id),children:[c.icon!=null&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:"inline-flex",children:c.icon}),c.label]},c.id)})})]})})]})});ot.displayName="BulkActionBar";function oa(t,e){if(t==="all"){let a=0;for(let r of e)a+=1;return a}return t.size}var sa=new Set(["text","search","email","url","tel","number","password"]);function ia(t){if(!(t instanceof HTMLElement))return false;if(t.isContentEditable||t.closest('[contenteditable=""],[contenteditable="true"]'))return true;let e=t.tagName;if(e==="TEXTAREA"||e==="SELECT"||e==="INPUT"&&sa.has(t.type))return true;let a=t.getAttribute("role");return a==="textbox"||a==="searchbox"||a==="combobox"}function la({scopeRef:t,toolbarRef:e,key:a="a",disabled:r=false}){react.useEffect(()=>{if(r)return;let n=t.current;if(!n)return;let l=o=>{if(o.metaKey||o.ctrlKey||o.altKey||o.key.toLowerCase()!==a.toLowerCase()||ia(o.target))return;let s=e.current;if(!s)return;let i=s.querySelector('[tabindex="0"]')??s.querySelector("button:not([disabled])");i&&(o.preventDefault(),i.focus());};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[t,e,a,r]);}var ce={sm:"h-9",default:"h-10",lg:"h-11"},M={sm:`${ce.sm} px-2 text-xs`,default:`${ce.default} px-3 text-sm`,lg:`${ce.lg} px-4 text-base`},Ie="min-h-[44px] flex items-center";function ca(t){if(!(t instanceof Element))return false;let e=t;for(let n=0;e&&n<100;n++){let l=e.tagName?.toLowerCase()??"";if(l.startsWith("grammarly-")||l.startsWith("lt-")||e.hasAttribute("data-grammarly-shadow-root"))return true;if(e.parentElement)e=e.parentElement;else {let o=e.getRootNode();e=o instanceof ShadowRoot?o.host:null;}}let a=t;for(;a&&!a.tagName.includes("-");)a=a.parentElement;if(!a)return false;let r=a.parentElement;return r===document.body||r===document.documentElement}function nt(t){return e=>!ca(e)&&(t?.(e)??true)}var st=classVarianceAuthority.cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${M.sm} pr-1`,default:`${M.default} pr-1.5`,lg:`${M.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),it=classVarianceAuthority.cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${M.sm} py-1`,default:`${M.default} py-2`,lg:`${M.lg} py-3`}},defaultVariants:{size:"default"}}),lt=classVarianceAuthority.cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),ct=classVarianceAuthority.cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),dt=classVarianceAuthority.cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Ia=Array.from({length:3}).map((t,e)=>jsxRuntime.jsx("div",{className:"h-11 px-4 py-2",children:jsxRuntime.jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${e}`));function ft({ariaSelectProps:t,triggerContent:e,triggerRef:a,label:r,description:n,isRequired:l,isDisabled:o,isLoading:s,errorMessage:i,size:p,emptyStateMessage:y,childCount:d,children:m}){let S=react.useId(),T=react.useId(),f=react.useId(),v=!!i,{className:E,...b}=t;return jsxRuntime.jsxs(reactAriaComponents.Select,{...b,className:g("flex flex-col gap-1.5",E),isInvalid:v,children:[jsxRuntime.jsxs(reactAriaComponents.Label,{id:S,className:"text-sm font-medium text-[var(--content-foreground)]",children:[r,l&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:T,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsxRuntime.jsx("div",{className:Ie,children:jsxRuntime.jsxs(reactAriaComponents.Button,{ref:a,className:st({size:p,isInvalid:v}),"aria-labelledby":S,"aria-describedby":n?T:i?f:void 0,"data-loading":s,...l&&{"aria-required":"true"},...s&&{"aria-busy":"true"},...(o||s)&&{"aria-disabled":"true"},children:[e,s?jsxRuntime.jsx(lucideReact.Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsxRuntime.jsx(reactAriaComponents.FieldError,{id:f,className:dt({size:p}),children:({validationErrors:N})=>{let I=i||N.join(" ");return I?jsxRuntime.jsx(jsxRuntime.Fragment,{children:I}):null}}),jsxRuntime.jsx(reactAriaComponents.Popover,{shouldCloseOnInteractOutside:nt(),className:lt({size:p}),children:jsxRuntime.jsxs(reactAriaComponents.ListBox,{className:"outline-none",children:[s&&d>0&&Ia,!s&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m,d===0&&jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsxRuntime.jsx("span",{role:"status",children:y||"No options available"})})]})]})})]})}var bt=react.forwardRef(({label:t,placeholder:e,description:a,value:r,defaultValue:n,isOpen:l,isDisabled:o=false,isRequired:s=false,disabledKeys:i,validate:p,validationBehavior:y="aria",errorMessage:d,isLoading:m=false,emptyStateMessage:S,name:T,size:f="default",onChange:v,onOpenChange:E,className:b,children:N,...I},k)=>{let O=react.Children.count(N);return O>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsxRuntime.jsx(ft,{ariaSelectProps:{value:r,defaultValue:n,onChange:R=>{v&&v(R);},placeholder:e,disabledKeys:i,isOpen:l,onOpenChange:E,isDisabled:o||m,isRequired:s,name:T,validate:p,validationBehavior:y,className:b,...I},triggerContent:jsxRuntime.jsx(reactAriaComponents.SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:k,label:t,description:a,isRequired:s,isDisabled:o,isLoading:m,errorMessage:d,size:f,emptyStateMessage:S,childCount:O,children:N})});bt.displayName="Select";var xt=react.forwardRef(({label:t,placeholder:e,description:a,value:r,defaultValue:n,selectionMode:l="multiple",isOpen:o,isDisabled:s=false,isRequired:i=false,disabledKeys:p,validate:y,validationBehavior:d="aria",errorMessage:m,isLoading:S=false,emptyStateMessage:T,name:f,size:v="default",onChange:E,onOpenChange:b,className:N,children:I,...k},O)=>{let R=react.Children.count(I);R>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let c=react.useMemo(()=>{let C=new Map,L=V=>{react.Children.forEach(V,u=>{if(react.isValidElement(u)){let x=u;if(x.type===de||x.props?.value){let P=x.props.value,$=x.props.children;P&&typeof $=="string"&&C.set(P,$);}x.props?.children&&L(x.props.children);}});};return L(I),C},[I]),_=react.useMemo(()=>!r||!Array.isArray(r)||r.length===0?e||"":r.length<=2?r.map(L=>c.get(L)||L).join(", "):`${r.length} items selected`,[r,c,e]);return jsxRuntime.jsx(ft,{ariaSelectProps:{value:r,defaultValue:n,onChange:C=>{E&&E(C);},selectionMode:"multiple",disabledKeys:p,isOpen:o,onOpenChange:b,isDisabled:s||S,isRequired:i,name:f,validate:y,validationBehavior:d,className:N,...k},triggerContent:jsxRuntime.jsx("span",{className:"flex-1 text-left truncate",children:_}),triggerRef:O,label:t,description:a,isRequired:i,isDisabled:s,isLoading:S,errorMessage:m,size:v,emptyStateMessage:T,childCount:R,children:I})});xt.displayName="MultiSelect";var de=react.memo(function({children:e,textValue:a,value:r,isDisabled:n=false,className:l,...o}){if(!a&&typeof e!="string"){let s="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(s);console.warn(s);}return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:r,textValue:a||(typeof e=="string"?e:void 0),className:`${it({size:"default"})} ${l||""}`,isDisabled:n,...o,children:({isSelected:s,selectionMode:i,isDisabled:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i==="multiple"?jsxRuntime.jsx(lucideReact.CheckSquare,{className:`absolute left-2 h-4 w-4 ${s?"visible":"invisible"}`,"aria-hidden":"true"}):s&&jsxRuntime.jsx(lucideReact.Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:e})]})})});de.displayName="SelectItem";function Re({children:t,className:e,...a}){return jsxRuntime.jsx(reactAriaComponents.ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${e||""}`,...a,children:t})}Re.displayName="SelectSection";function we({children:t,className:e,...a}){return jsxRuntime.jsx(reactAriaComponents.Header,{className:`${ct({size:"default"})} ${e||""}`,...a,children:t})}we.displayName="SelectHeader";var ue=Object.assign(bt,{Item:de,Section:Re,Header:we});Object.assign(xt,{Item:de,Section:Re,Header:we});var gt=classVarianceAuthority.cva(["flex flex-col gap-3"]),vt=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap px-0.5"]),St=classVarianceAuthority.cva(["flex flex-col gap-2.5 list-none m-0 p-0"]),Tt=classVarianceAuthority.cva(["flex items-start gap-2.5 p-3.5","rounded-lg border border-[var(--border)] bg-[var(--content-background)]","motion-safe:transition-colors"],{variants:{isSelected:{true:"bg-[var(--selected)] border-[var(--primary)]/40",false:""}},defaultVariants:{isSelected:false}}),Et=classVarianceAuthority.cva(["flex items-center justify-center min-w-[44px] min-h-[44px] -m-1 flex-none"]),ht=classVarianceAuthority.cva(["flex-1 min-w-0"]),yt=classVarianceAuthority.cva(["block w-full text-left cursor-pointer rounded-md","outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"]);function Nt({items:t,getRowId:e,renderCard:a,selectionMode:r="none",selectedKeys:n=new Set,onSelectionChange:l,onRowAction:o,sortDescriptor:s,onSortChange:i,sortColumns:p=[],renderEmptyState:y,labels:d,"aria-label":m,className:S,"data-testid":T="table-card-list"}){let f=r==="multiple",v=t.map(e),E=u=>n==="all"||n.has(u),b=v.length>0&&v.every(E),N=v.some(E)&&!b,I=()=>n==="all"?new Set(v):new Set(n),k=()=>{l?.(b?new Set:new Set(v));},O=u=>{let x=I();x.has(u)?x.delete(u):x.add(u),l?.(x);},R=s?.column!=null?String(s.column):void 0,c=s?.direction??"ascending",_=u=>{let x=Array.isArray(u)?u[0]:u;x&&i?.({column:x,direction:s?.direction??"ascending"});},C=()=>{s?.column!=null&&i?.({column:s.column,direction:c==="ascending"?"descending":"ascending"});},L=f||p.length>0,V=t.length===0;return jsxRuntime.jsxs("div",{role:"region","aria-label":m,className:g(gt(),S),"data-testid":T,children:[jsxRuntime.jsx("p",{className:"sr-only",role:"status","aria-live":"polite",children:d.results(t.length)}),L&&jsxRuntime.jsxs("div",{className:vt(),children:[f?jsxRuntime.jsx(H,{label:d.selectAll,isSelected:b,isIndeterminate:N,onChange:k}):jsxRuntime.jsx("span",{}),p.length>0&&jsxRuntime.jsxs("div",{className:"flex items-end gap-2",children:[jsxRuntime.jsx(ue,{label:d.sort,placeholder:d.sortPlaceholder,value:R,onChange:_,children:p.map(u=>jsxRuntime.jsx(ue.Item,{value:u.id,children:u.label},u.id))}),jsxRuntime.jsx(U,{variant:"ghost",visualSize:"icon",isDisabled:s?.column==null,"aria-label":d.sortDirection(c),onPress:C,children:c==="ascending"?jsxRuntime.jsx(lucideReact.ArrowUp,{"aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ArrowDown,{"aria-hidden":"true"})})]})]}),V?y?jsxRuntime.jsx("div",{className:"rounded-lg border border-dashed border-[var(--border)] p-8 text-center","data-testid":"card-empty-state",children:y()}):null:jsxRuntime.jsx("ul",{className:St(),children:t.map(u=>{let x=e(u),P=E(x);return jsxRuntime.jsxs("li",{className:Tt({isSelected:P}),children:[f&&jsxRuntime.jsx("div",{className:Et(),children:jsxRuntime.jsx(H,{"aria-label":d.selectItem(u),isSelected:P,onChange:()=>O(x)})}),jsxRuntime.jsx("div",{className:ht(),children:o?jsxRuntime.jsx(reactAriaComponents.Button,{className:yt(),"data-testid":"card-action",onPress:()=>o(x),children:a(u)}):a(u)})]},String(x))})})]})}Nt.displayName="TableCardList";function Oa(t,e){let[a,r]=react.useState(false);return react.useEffect(()=>{let n=t.current;if(!n)return;let l=()=>r(n.offsetWidth<e);l();let o;return typeof ResizeObserver<"u"&&(o=new ResizeObserver(l),o.observe(n)),window.addEventListener("resize",l),()=>{window.removeEventListener("resize",l),o?.disconnect();}},[t,e]),a}exports.BulkActionBar=ot;exports.Cell=Ye;exports.Column=$e;exports.Row=Ke;exports.Table=Ge;exports.TableBody=Fe;exports.TableCardList=Nt;exports.TableFooter=je;exports.TableHeader=Ue;exports.bulkActionBarVariants=ne;exports.bulkActionHintVariants=ie;exports.bulkActionToolbarVariants=se;exports.cellVariants=ae;exports.columnVariants=ee;exports.resolveSelectedCount=oa;exports.rowVariants=te;exports.tableContainerVariants=be;exports.tableFooterVariants=ve;exports.tableHeaderVariants=ge;exports.tableVariants=xe;exports.useBulkActionShortcut=la;exports.useContainerNarrow=Oa;//# sourceMappingURL=index.js.map
|
|
2
|
+
'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),lucideReact=require('lucide-react');function g(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var X="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var K="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",Q="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",J="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var Le=classVarianceAuthority.cva(["group relative inline-flex items-center gap-2 cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",X,K].join(" "),{variants:{size:{sm:"min-h-[44px] text-sm",default:"min-h-[44px] text-sm",lg:"min-h-[48px] text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""}},defaultVariants:{size:"default",isDisabled:false}}),Be=classVarianceAuthority.cva("flex-shrink-0 rounded-sm border-2 bg-[var(--content-background)] flex items-center justify-center transition-colors duration-200 motion-safe:data-[selected]:selection-pulse",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]","data-[indeterminate]:border-[var(--primary)]","data-[indeterminate]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]","data-[indeterminate]:border-[var(--destructive-background)]","data-[indeterminate]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isInvalid:false}}),Pe=classVarianceAuthority.cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function He({className:t,...e}){return jsxRuntime.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("polyline",{points:"20 6 9 17 4 12"})})}function De({className:t,...e}){return jsxRuntime.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:jsxRuntime.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}var H=react.forwardRef(({isSelected:t,defaultSelected:e,isDisabled:a,isReadOnly:r,isIndeterminate:n,isInvalid:l=false,isRequired:o=false,onChange:s,onFocusChange:i,value:p,name:y,size:d="default",variant:m="default",label:S,description:T,selectedIcon:f,className:v,id:E,"aria-label":b,"aria-labelledby":N,"aria-describedby":I,"data-testid":k,slot:O},R)=>{let c=a||void 0,_=r||void 0,C=n||void 0,L=(V,u)=>{let x=g(Pe({variant:m,size:d})),P=V||void 0,$=u||void 0;if(u)return jsxRuntime.jsx(De,{className:x,"data-selected":P,"data-indeterminate":$});if(f&&V){if(react.isValidElement(f)){let ke=f;return react.cloneElement(ke,{className:g(x,ke.props.className),"data-selected":P})}return jsxRuntime.jsx("span",{className:x,"data-selected":P,children:f})}return jsxRuntime.jsx(He,{className:x,"data-selected":P,"data-indeterminate":$})};return jsxRuntime.jsx(reactAriaComponents.Checkbox,{ref:R,id:E,isSelected:t,defaultSelected:e,isDisabled:c,isReadOnly:_,isIndeterminate:C,isInvalid:l,isRequired:o,onChange:s,onFocusChange:i,value:p,name:y,slot:O,"aria-label":b,"aria-labelledby":N,"aria-describedby":I,"data-testid":k,className:V=>g(Le({size:d,isDisabled:V.isDisabled}),v),children:V=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:Be({variant:m,size:d,isInvalid:V.isInvalid}),"data-selected":V.isSelected||void 0,"data-indeterminate":V.isIndeterminate||void 0,children:L(V.isSelected,V.isIndeterminate)}),(S||T)&&jsxRuntime.jsxs("div",{className:"flex flex-col",children:[S&&jsxRuntime.jsx("span",{className:"font-medium text-[var(--content-foreground)]",children:S}),T&&jsxRuntime.jsx("span",{className:"text-sm text-[var(--menu-muted)]",children:T})]})]})})});H.displayName="Checkbox";var be=classVarianceAuthority.cva(["relative w-full overflow-auto","rounded-lg border border-[var(--border)] bg-[var(--content-background)]"]),xe=classVarianceAuthority.cva(["w-full caption-bottom text-sm","border-collapse"],{variants:{variant:{default:"",bordered:"[&_tr>*+*]:border-l [&_tr>*+*]:border-[var(--border)]"}},defaultVariants:{variant:"default"}}),ge=classVarianceAuthority.cva(["[&_tr]:border-b [&_tr]:border-[var(--border)]"],{variants:{sticky:{true:"sticky top-0 z-10 bg-[var(--content-background)]",false:""}},defaultVariants:{sticky:false}}),ve=classVarianceAuthority.cva(["border-t border-[var(--border)]","bg-[var(--accent-background)]/50","font-medium","[&>tr]:last:border-b-0"]),ee=classVarianceAuthority.cva(["h-12 px-4 text-left align-middle font-semibold","uppercase tracking-wide","bg-[var(--accent-background)] text-[var(--content-foreground)]","[&:has([role=checkbox])]:pr-0","select-none","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset"],{variants:{allowsSorting:{true:"cursor-pointer hover:bg-[var(--accent)]/50",false:""},align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"h-10 px-3 text-xs",default:"h-12 px-4 text-sm",lg:"h-14 px-5 text-base"}},defaultVariants:{allowsSorting:false,align:"start",size:"default"}}),te=classVarianceAuthority.cva(["border-b border-[var(--border)]","transition-colors","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-inset","hover:bg-[var(--accent-background)]/50","data-[disabled]:pointer-events-none data-[disabled]:opacity-50"],{variants:{isSelected:{true:"bg-[var(--selected)] data-[selected]:bg-[var(--selected)]",false:""},zebra:{true:"even:bg-[var(--accent-background)]/30",false:""}},defaultVariants:{isSelected:false,zebra:true}}),ae=classVarianceAuthority.cva(["p-4 align-middle","[&:has([role=checkbox])]:pr-0"],{variants:{align:{start:"text-start",center:"text-center",end:"text-end"},size:{sm:"p-3 text-xs",default:"p-4 text-sm",lg:"p-5 text-base"},isRowHeader:{true:"font-medium",false:""}},defaultVariants:{align:"start",size:"default",isRowHeader:false}});var Y=react.createContext({variant:"default",size:"default",selectionMode:"none",stickyHeader:false,zebra:true}),Ge=react.forwardRef(({className:t,variant:e="default",size:a="default",stickyHeader:r=false,zebra:n=true,toolbar:l,selectionMode:o="none",selectionBehavior:s="toggle",disallowEmptySelection:i=false,disabledBehavior:p="selection",selectedKeys:y,defaultSelectedKeys:d,onSelectionChange:m,disabledKeys:S,sortDescriptor:T,onSortChange:f,onRowAction:v,children:E,...b},N)=>{process.env.NODE_ENV!=="production"&&a==="sm"&&o!=="none"&&console.warn('[Table] size="sm" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. Use size="default" or size="lg" for accessible interactive tables.');let I=react.useMemo(()=>({variant:e,size:a,selectionMode:o,stickyHeader:r,zebra:n}),[e,a,o,r,n]);return jsxRuntime.jsx(Y.Provider,{value:I,children:jsxRuntime.jsxs("div",{className:g(be(),t),"data-testid":"table-container",children:[l,jsxRuntime.jsx(reactAriaComponents.Table,{ref:N,className:g(xe({variant:e})),selectionMode:o,selectionBehavior:s,disallowEmptySelection:i,disabledBehavior:p,selectedKeys:y,defaultSelectedKeys:d,onSelectionChange:m,disabledKeys:S,sortDescriptor:T,onSortChange:f,onRowAction:v,"data-testid":"table","data-variant":e,"data-size":a,"data-zebra":n,...b,children:E})]})})});Ge.displayName="Table";function Ut({className:t,children:e,columns:a,...r},n){let{size:l,selectionMode:o,stickyHeader:s}=react.useContext(Y),{allowsDragging:i}=reactAriaComponents.useTableOptions();return jsxRuntime.jsxs(reactAriaComponents.TableHeader,{ref:n,className:g(ge({sticky:s}),t),"data-testid":"table-header",...r,children:[o==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Column,{className:g(ee({size:l}),"w-12"),children:jsxRuntime.jsx(H,{slot:"selection","aria-label":"Select all",size:l})}),i&&jsxRuntime.jsx(reactAriaComponents.Column,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:e}):e]})}var Ue=react.forwardRef(Ut);Ue.displayName="TableHeader";function Ft({className:t,children:e,items:a,renderEmptyState:r,...n},l){return jsxRuntime.jsx(reactAriaComponents.TableBody,{ref:l,className:g(t),items:a,renderEmptyState:r?()=>jsxRuntime.jsx("div",{className:"text-center p-8",children:r()}):void 0,"data-testid":"table-body",...n,children:e})}var Fe=react.forwardRef(Ft);Fe.displayName="TableBody";var je=react.forwardRef(({className:t,children:e,...a},r)=>jsxRuntime.jsx("tfoot",{ref:r,className:g(ve(),t),"data-testid":"table-footer",...a,children:e}));je.displayName="TableFooter";var $e=react.forwardRef(({className:t,children:e,isRowHeader:a=false,allowsSorting:r=false,align:n="start",width:l,minWidth:o,maxWidth:s,...i},p)=>{let{size:y}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Column,{ref:p,isRowHeader:a,allowsSorting:r,width:l,minWidth:o,maxWidth:s,className:g(ee({allowsSorting:r,align:n,size:y}),t),...i,children:({allowsSorting:d,sortDirection:m})=>jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{children:e}),d&&jsxRuntime.jsx("span",{"aria-hidden":"true","data-sort-direction":m??"none",className:m?"text-[var(--primary-action)]":"opacity-50",children:m==="ascending"?jsxRuntime.jsx(lucideReact.ChevronUp,{className:"h-4 w-4"}):m==="descending"?jsxRuntime.jsx(lucideReact.ChevronDown,{className:"h-4 w-4"}):jsxRuntime.jsx(lucideReact.ChevronsUpDown,{className:"h-4 w-4"})})]})})});$e.displayName="Column";function jt({className:t,children:e,columns:a,href:r,isDisabled:n,...l},o){let{size:s,selectionMode:i,zebra:p}=react.useContext(Y),{allowsDragging:y}=reactAriaComponents.useTableOptions(),d=te({isSelected:true,zebra:p}),m=te({isSelected:false,zebra:p}),S=g(ae({size:s}),"w-12");return jsxRuntime.jsxs(reactAriaComponents.Row,{ref:o,href:r,isDisabled:n,className:({isSelected:T,isDisabled:f})=>g(T?d:m,f&&"opacity-50",t),"data-testid":"table-row",...l,children:[i==="multiple"&&jsxRuntime.jsx(reactAriaComponents.Cell,{className:S,children:jsxRuntime.jsx(H,{slot:"selection","aria-label":"Select row",size:s})}),y&&jsxRuntime.jsx(reactAriaComponents.Cell,{}),a?jsxRuntime.jsx(reactAriaComponents.Collection,{items:a,children:e}):e]})}var Ke=react.forwardRef(jt);Ke.displayName="Row";var Ye=react.memo(react.forwardRef(({className:t,children:e,align:a="start",colSpan:r,...n},l)=>{let{size:o}=react.useContext(Y);return jsxRuntime.jsx(reactAriaComponents.Cell,{ref:l,className:g(ae({align:a,size:o}),t),...n,children:e})}));Ye.displayName="Cell";var Ee=classVarianceAuthority.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}}),he=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_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)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--content-background)] hover:bg-[var(--accent-background)]/50",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover: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-6 text-base",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)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Xe=react.createContext(null);Xe.displayName="ButtonGroupContext";function Qe(){return react.useContext(Xe)}var Je=react.createContext(null);Je.displayName="ButtonGroupItemContext";function et(){return react.useContext(Je)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var tt=classVarianceAuthority.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"}});classVarianceAuthority.cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var U=react.memo(react.forwardRef(({className:t,buttonVisualClassName:e,variant:a,size:r,visualSize:n,fullWidth:l,loading:o=false,loadingText:s="Loading...",shortcut:i,children:p,isDisabled:y,paywall:d=false,paywallRedirect:m,paywallDescription:S,onPress:T,...f},v)=>{let E=react.useId(),b=Qe(),N=et(),I=a??b?.variant??"default",k=r??b?.size,O=y??b?.isDisabled??false,R=b?.orientation==="vertical",c=l||R,_=N?tt({orientation:b?.orientation??"horizontal",position:N.position}):"",C=n??k??"default";return process.env.NODE_ENV!=="production"&&(C==="dot"||C==="icon")&&!f["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsxRuntime.jsx(reactAriaComponents.Button,{ref:v,isDisabled:O||o||void 0,"aria-disabled":d?true:void 0,"aria-describedby":d?E:void 0,onPress:u=>{if(d){m&&window.open(m,"_blank","noopener,noreferrer");return}T?.(u);},className:g(Ee({fullWidth:c,inVerticalGroup:R}),t),...f,children:u=>jsxRuntime.jsxs("span",{className:g(he({variant:I,visualSize:C,paywall:d,fullWidth:c}),_,e,me,"",Q,J),"data-pressed":u.isPressed||void 0,children:[o&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(lucideReact.Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"sr-only","aria-live":"polite",children:s})]}),!o&&p,d&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),d&&jsxRuntime.jsxs("span",{id:E,className:"sr-only",children:["Premium feature: ",S||"Upgrade required to access this feature"]}),u.isFocusVisible&&i&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:i})]})})}));U.displayName="Button";var ne=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap","px-4 py-2.5","bg-[var(--selected)]"],{variants:{sticky:{true:"sticky top-0 z-[6]",false:""},framed:{true:"rounded-lg border border-[var(--border)]",false:"border-b border-[var(--border)]"}},defaultVariants:{sticky:true,framed:false}}),se=classVarianceAuthority.cva(["flex items-center gap-3 flex-wrap w-full justify-between"]),ie=classVarianceAuthority.cva(["text-sm text-[var(--content-muted)] inline-flex items-center gap-1.5"]),at=classVarianceAuthority.cva(["inline-flex items-center justify-center","min-w-[1.5rem] h-6 px-1.5 rounded","border border-[var(--primary)]/40 bg-[var(--content-background)]","font-mono text-xs font-semibold text-[var(--primary-action)]"]),rt=classVarianceAuthority.cva(["text-[var(--primary-action)] border-[var(--primary)]/30","hover:bg-[var(--content-background)]"]);function ra(t,e){typeof t=="function"?t(e):t&&(t.current=e);}var ot=react.forwardRef(({selectedCount:t,actions:e,onAction:a,onClearSelection:r,sticky:n=true,framed:l=false,showJumpHint:o=false,shortcutKey:s="A",labels:i,className:p,"data-testid":y="bulk-action-bar"},d)=>{let m=react.useRef(null),S=react.useRef(t),T=react.useRef([]),[f,v]=react.useState(0),E=e.length+1,b=Math.min(f,E-1),N=c=>{let _=(c+E)%E;v(_),T.current[_]?.focus();},I=c=>{switch(c.key){case "ArrowRight":case "ArrowDown":c.preventDefault(),N(b+1);break;case "ArrowLeft":case "ArrowUp":c.preventDefault(),N(b-1);break;case "Home":c.preventDefault(),N(0);break;case "End":c.preventDefault(),N(E-1);break;}};react.useEffect(()=>{let c=S.current;if(S.current=t,c>0&&t===0){let _=document.activeElement;(!_||_===document.body)&&m.current?.focus();}},[t]);let k=t>0,O=o&&!!i.jumpHint,R="";if(k){let c=[i.selectedCount(t)];i.actionsAvailable&&c.push(i.actionsAvailable(e.length)),o&&i.jumpAnnouncement&&c.push(i.jumpAnnouncement),R=c.join(". ");}return jsxRuntime.jsxs("div",{ref:c=>{m.current=c,ra(d,c);},tabIndex:-1,className:g("outline-none",p),"data-testid":y,children:[jsxRuntime.jsx("div",{className:"sr-only",role:"status","aria-live":"polite",children:R}),k&&jsxRuntime.jsx("div",{className:ne({sticky:n,framed:l}),children:jsxRuntime.jsxs("div",{role:"toolbar","aria-label":i.toolbarLabel(t),"aria-orientation":"horizontal",onKeyDown:I,className:se(),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-4 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-sm font-bold text-[var(--content-foreground)]",children:i.selectedCount(t)}),jsxRuntime.jsx(U,{ref:c=>{T.current[0]=c;},variant:"link",excludeFromTabOrder:b!==0,onFocus:()=>v(0),onPress:r,children:i.clear}),O&&i.jumpHint&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:ie(),children:i.jumpHint(jsxRuntime.jsx("kbd",{className:at(),children:s}))})]}),jsxRuntime.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:e.map((c,_)=>{let C=_+1;return jsxRuntime.jsxs(U,{ref:L=>{T.current[C]=L;},variant:c.tone==="danger"?"destructive":"outline",buttonVisualClassName:c.tone==="danger"?void 0:rt(),isDisabled:c.isDisabled,excludeFromTabOrder:b!==C,onFocus:()=>v(C),onPress:()=>a(c.id),children:[c.icon!=null&&jsxRuntime.jsx("span",{"aria-hidden":"true",className:"inline-flex",children:c.icon}),c.label]},c.id)})})]})})]})});ot.displayName="BulkActionBar";function oa(t,e){if(t==="all"){let a=0;for(let r of e)a+=1;return a}return t.size}var sa=new Set(["text","search","email","url","tel","number","password"]);function ia(t){if(!(t instanceof HTMLElement))return false;if(t.isContentEditable||t.closest('[contenteditable=""],[contenteditable="true"]'))return true;let e=t.tagName;if(e==="TEXTAREA"||e==="SELECT"||e==="INPUT"&&sa.has(t.type))return true;let a=t.getAttribute("role");return a==="textbox"||a==="searchbox"||a==="combobox"}function la({scopeRef:t,toolbarRef:e,key:a="a",disabled:r=false}){react.useEffect(()=>{if(r)return;let n=t.current;if(!n)return;let l=o=>{if(o.metaKey||o.ctrlKey||o.altKey||o.key.toLowerCase()!==a.toLowerCase()||ia(o.target))return;let s=e.current;if(!s)return;let i=s.querySelector('[tabindex="0"]')??s.querySelector("button:not([disabled])");i&&(o.preventDefault(),i.focus());};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[t,e,a,r]);}var ce={sm:"h-9",default:"h-10",lg:"h-11"},M={sm:`${ce.sm} px-2 text-xs`,default:`${ce.default} px-3 text-sm`,lg:`${ce.lg} px-4 text-base`},Ie="min-h-[44px] flex items-center";function ca(t){if(!(t instanceof Element))return false;let e=t;for(let n=0;e&&n<100;n++){let l=e.tagName?.toLowerCase()??"";if(l.startsWith("grammarly-")||l.startsWith("lt-")||e.hasAttribute("data-grammarly-shadow-root"))return true;if(e.parentElement)e=e.parentElement;else {let o=e.getRootNode();e=o instanceof ShadowRoot?o.host:null;}}let a=t;for(;a&&!a.tagName.includes("-");)a=a.parentElement;if(!a)return false;let r=a.parentElement;return r===document.body||r===document.documentElement}function nt(t){return e=>!ca(e)&&(t?.(e)??true)}var st=classVarianceAuthority.cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${M.sm} pr-1`,default:`${M.default} pr-1.5`,lg:`${M.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),it=classVarianceAuthority.cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${M.sm} py-1`,default:`${M.default} py-2`,lg:`${M.lg} py-3`}},defaultVariants:{size:"default"}}),lt=classVarianceAuthority.cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),ct=classVarianceAuthority.cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),dt=classVarianceAuthority.cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Ia=Array.from({length:3}).map((t,e)=>jsxRuntime.jsx("div",{className:"h-11 px-4 py-2",children:jsxRuntime.jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${e}`));function ft({ariaSelectProps:t,triggerContent:e,triggerRef:a,label:r,description:n,isRequired:l,isDisabled:o,isLoading:s,errorMessage:i,size:p,emptyStateMessage:y,childCount:d,children:m}){let S=react.useId(),T=react.useId(),f=react.useId(),v=!!i,{className:E,...b}=t;return jsxRuntime.jsxs(reactAriaComponents.Select,{...b,className:g("flex flex-col gap-1.5",E),isInvalid:v,children:[jsxRuntime.jsxs(reactAriaComponents.Label,{id:S,className:"text-sm font-medium text-[var(--content-foreground)]",children:[r,l&&jsxRuntime.jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsxRuntime.jsx(reactAriaComponents.Text,{id:T,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsxRuntime.jsx("div",{className:Ie,children:jsxRuntime.jsxs(reactAriaComponents.Button,{ref:a,className:st({size:p,isInvalid:v}),"aria-labelledby":S,"aria-describedby":n?T:i?f:void 0,"data-loading":s,...l&&{"aria-required":"true"},...s&&{"aria-busy":"true"},...(o||s)&&{"aria-disabled":"true"},children:[e,s?jsxRuntime.jsx(lucideReact.Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsxRuntime.jsx(reactAriaComponents.FieldError,{id:f,className:dt({size:p}),children:({validationErrors:N})=>{let I=i||N.join(" ");return I?jsxRuntime.jsx(jsxRuntime.Fragment,{children:I}):null}}),jsxRuntime.jsx(reactAriaComponents.Popover,{shouldCloseOnInteractOutside:nt(),className:lt({size:p}),children:jsxRuntime.jsxs(reactAriaComponents.ListBox,{className:"outline-none",children:[s&&d>0&&Ia,!s&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m,d===0&&jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsxRuntime.jsx("span",{role:"status",children:y||"No options available"})})]})]})})]})}var bt=react.forwardRef(({label:t,placeholder:e,description:a,value:r,defaultValue:n,isOpen:l,isDisabled:o=false,isRequired:s=false,disabledKeys:i,validate:p,validationBehavior:y="aria",errorMessage:d,isLoading:m=false,emptyStateMessage:S,name:T,size:f="default",onChange:v,onOpenChange:E,className:b,children:N,...I},k)=>{let O=react.Children.count(N);return O>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsxRuntime.jsx(ft,{ariaSelectProps:{value:r,defaultValue:n,onChange:R=>{v&&v(R);},placeholder:e,disabledKeys:i,isOpen:l,onOpenChange:E,isDisabled:o||m,isRequired:s,name:T,validate:p,validationBehavior:y,className:b,...I},triggerContent:jsxRuntime.jsx(reactAriaComponents.SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:k,label:t,description:a,isRequired:s,isDisabled:o,isLoading:m,errorMessage:d,size:f,emptyStateMessage:S,childCount:O,children:N})});bt.displayName="Select";var xt=react.forwardRef(({label:t,placeholder:e,description:a,value:r,defaultValue:n,selectionMode:l="multiple",isOpen:o,isDisabled:s=false,isRequired:i=false,disabledKeys:p,validate:y,validationBehavior:d="aria",errorMessage:m,isLoading:S=false,emptyStateMessage:T,name:f,size:v="default",onChange:E,onOpenChange:b,className:N,children:I,...k},O)=>{let R=react.Children.count(I);R>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let c=react.useMemo(()=>{let C=new Map,L=V=>{react.Children.forEach(V,u=>{if(react.isValidElement(u)){let x=u;if(x.type===de||x.props?.value){let P=x.props.value,$=x.props.children;P&&typeof $=="string"&&C.set(P,$);}x.props?.children&&L(x.props.children);}});};return L(I),C},[I]),_=react.useMemo(()=>!r||!Array.isArray(r)||r.length===0?e||"":r.length<=2?r.map(L=>c.get(L)||L).join(", "):`${r.length} items selected`,[r,c,e]);return jsxRuntime.jsx(ft,{ariaSelectProps:{value:r,defaultValue:n,onChange:C=>{E&&E(C);},selectionMode:"multiple",disabledKeys:p,isOpen:o,onOpenChange:b,isDisabled:s||S,isRequired:i,name:f,validate:y,validationBehavior:d,className:N,...k},triggerContent:jsxRuntime.jsx("span",{className:"flex-1 text-left truncate",children:_}),triggerRef:O,label:t,description:a,isRequired:i,isDisabled:s,isLoading:S,errorMessage:m,size:v,emptyStateMessage:T,childCount:R,children:I})});xt.displayName="MultiSelect";var de=react.memo(function({children:e,textValue:a,value:r,isDisabled:n=false,className:l,...o}){if(!a&&typeof e!="string"){let s="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(s);console.warn(s);}return jsxRuntime.jsx(reactAriaComponents.ListBoxItem,{id:r,textValue:a||(typeof e=="string"?e:void 0),className:`${it({size:"default"})} ${l||""}`,isDisabled:n,...o,children:({isSelected:s,selectionMode:i,isDisabled:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[i==="multiple"?jsxRuntime.jsx(lucideReact.CheckSquare,{className:`absolute left-2 h-4 w-4 ${s?"visible":"invisible"}`,"aria-hidden":"true"}):s&&jsxRuntime.jsx(lucideReact.Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:e})]})})});de.displayName="SelectItem";function Re({children:t,className:e,...a}){return jsxRuntime.jsx(reactAriaComponents.ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${e||""}`,...a,children:t})}Re.displayName="SelectSection";function we({children:t,className:e,...a}){return jsxRuntime.jsx(reactAriaComponents.Header,{className:`${ct({size:"default"})} ${e||""}`,...a,children:t})}we.displayName="SelectHeader";var ue=Object.assign(bt,{Item:de,Section:Re,Header:we});Object.assign(xt,{Item:de,Section:Re,Header:we});var gt=classVarianceAuthority.cva(["flex flex-col gap-3"]),vt=classVarianceAuthority.cva(["flex items-center justify-between gap-3 flex-wrap px-0.5"]),St=classVarianceAuthority.cva(["flex flex-col gap-2.5 list-none m-0 p-0"]),Tt=classVarianceAuthority.cva(["flex items-start gap-2.5 p-3.5","rounded-lg border border-[var(--border)] bg-[var(--content-background)]","motion-safe:transition-colors"],{variants:{isSelected:{true:"bg-[var(--selected)] border-[var(--primary)]/40",false:""}},defaultVariants:{isSelected:false}}),Et=classVarianceAuthority.cva(["flex items-center justify-center min-w-[44px] min-h-[44px] -m-1 flex-none"]),ht=classVarianceAuthority.cva(["flex-1 min-w-0"]),yt=classVarianceAuthority.cva(["block w-full text-left cursor-pointer rounded-md","outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"]);function Nt({items:t,getRowId:e,renderCard:a,selectionMode:r="none",selectedKeys:n=new Set,onSelectionChange:l,onRowAction:o,sortDescriptor:s,onSortChange:i,sortColumns:p=[],renderEmptyState:y,labels:d,"aria-label":m,className:S,"data-testid":T="table-card-list"}){let f=r==="multiple",v=t.map(e),E=u=>n==="all"||n.has(u),b=v.length>0&&v.every(E),N=v.some(E)&&!b,I=()=>n==="all"?new Set(v):new Set(n),k=()=>{l?.(b?new Set:new Set(v));},O=u=>{let x=I();x.has(u)?x.delete(u):x.add(u),l?.(x);},R=s?.column!=null?String(s.column):void 0,c=s?.direction??"ascending",_=u=>{let x=Array.isArray(u)?u[0]:u;x&&i?.({column:x,direction:s?.direction??"ascending"});},C=()=>{s?.column!=null&&i?.({column:s.column,direction:c==="ascending"?"descending":"ascending"});},L=f||p.length>0,V=t.length===0;return jsxRuntime.jsxs("div",{role:"region","aria-label":m,className:g(gt(),S),"data-testid":T,children:[jsxRuntime.jsx("p",{className:"sr-only",role:"status","aria-live":"polite",children:d.results(t.length)}),L&&jsxRuntime.jsxs("div",{className:vt(),children:[f?jsxRuntime.jsx(H,{label:d.selectAll,isSelected:b,isIndeterminate:N,onChange:k}):jsxRuntime.jsx("span",{}),p.length>0&&jsxRuntime.jsxs("div",{className:"flex items-end gap-2",children:[jsxRuntime.jsx(ue,{label:d.sort,placeholder:d.sortPlaceholder,value:R,onChange:_,children:p.map(u=>jsxRuntime.jsx(ue.Item,{value:u.id,children:u.label},u.id))}),jsxRuntime.jsx(U,{variant:"ghost",visualSize:"icon",isDisabled:s?.column==null,"aria-label":d.sortDirection(c),onPress:C,children:c==="ascending"?jsxRuntime.jsx(lucideReact.ArrowUp,{"aria-hidden":"true"}):jsxRuntime.jsx(lucideReact.ArrowDown,{"aria-hidden":"true"})})]})]}),V?y?jsxRuntime.jsx("div",{className:"rounded-lg border border-dashed border-[var(--border)] p-8 text-center","data-testid":"card-empty-state",children:y()}):null:jsxRuntime.jsx("ul",{className:St(),children:t.map(u=>{let x=e(u),P=E(x);return jsxRuntime.jsxs("li",{className:Tt({isSelected:P}),children:[f&&jsxRuntime.jsx("div",{className:Et(),children:jsxRuntime.jsx(H,{"aria-label":d.selectItem(u),isSelected:P,onChange:()=>O(x)})}),jsxRuntime.jsx("div",{className:ht(),children:o?jsxRuntime.jsx(reactAriaComponents.Button,{className:yt(),"data-testid":"card-action",onPress:()=>o(x),children:a(u)}):a(u)})]},String(x))})})]})}Nt.displayName="TableCardList";function Oa(t,e){let[a,r]=react.useState(false);return react.useEffect(()=>{let n=t.current;if(!n)return;let l=()=>r(n.offsetWidth<e);l();let o;return typeof ResizeObserver<"u"&&(o=new ResizeObserver(l),o.observe(n)),window.addEventListener("resize",l),()=>{window.removeEventListener("resize",l),o?.disconnect();}},[t,e]),a}exports.BulkActionBar=ot;exports.Cell=Ye;exports.Column=$e;exports.Row=Ke;exports.Table=Ge;exports.TableBody=Fe;exports.TableCardList=Nt;exports.TableFooter=je;exports.TableHeader=Ue;exports.bulkActionBarVariants=ne;exports.bulkActionHintVariants=ie;exports.bulkActionToolbarVariants=se;exports.cellVariants=ae;exports.columnVariants=ee;exports.resolveSelectedCount=oa;exports.rowVariants=te;exports.tableContainerVariants=be;exports.tableFooterVariants=ve;exports.tableHeaderVariants=ge;exports.tableVariants=xe;exports.useBulkActionShortcut=la;exports.useContainerNarrow=Oa;//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|