@caratlogic/design-system 0.1.3 → 0.1.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.
Files changed (30) hide show
  1. package/dist/components/molecules/Field/Field.d.ts.map +1 -1
  2. package/dist/components/molecules/MetricCard/MetricCard.d.ts +1 -1
  3. package/dist/components/molecules/MetricCard/MetricCard.d.ts.map +1 -1
  4. package/dist/components/molecules/MetricCard/MetricCard.types.d.ts +4 -0
  5. package/dist/components/molecules/MetricCard/MetricCard.types.d.ts.map +1 -1
  6. package/dist/components/molecules/SearchableSelect/SearchableSelect.d.ts.map +1 -1
  7. package/dist/components/molecules/SlideOut/SlideOut.parts.d.ts +1 -1
  8. package/dist/components/molecules/SlideOut/SlideOut.parts.d.ts.map +1 -1
  9. package/dist/components/organisms/FileUploader/FileCard.d.ts +1 -1
  10. package/dist/components/organisms/FileUploader/FileCard.d.ts.map +1 -1
  11. package/dist/components/organisms/FileUploader/FileUploader.utils.d.ts +10 -0
  12. package/dist/components/organisms/FileUploader/FileUploader.utils.d.ts.map +1 -1
  13. package/dist/components/ui/dialog.d.ts +1 -1
  14. package/dist/components/ui/dialog.d.ts.map +1 -1
  15. package/dist/components/ui/textarea.d.ts.map +1 -1
  16. package/dist/hooks/useOverlayBodyLockRelease.d.ts +9 -0
  17. package/dist/hooks/useOverlayBodyLockRelease.d.ts.map +1 -0
  18. package/dist/index.cjs.js +313 -169
  19. package/dist/index.cjs.js.map +1 -1
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.esm.js +313 -170
  23. package/dist/index.esm.js.map +1 -1
  24. package/dist/lib/overlayBodyLock.d.ts +12 -0
  25. package/dist/lib/overlayBodyLock.d.ts.map +1 -0
  26. package/dist/ui.cjs.js +79 -4
  27. package/dist/ui.cjs.js.map +1 -1
  28. package/dist/ui.esm.js +79 -4
  29. package/dist/ui.esm.js.map +1 -1
  30. package/package.json +1 -1
package/dist/ui.esm.js CHANGED
@@ -2901,10 +2901,84 @@ var U=1,Y$1=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k$1=.99,m=/[\\\/_+.#"@\[\(\{&]
2901
2901
 
2902
2902
  var N='[cmdk-group=""]',Y='[cmdk-group-items=""]',be='[cmdk-group-heading=""]',le='[cmdk-item=""]',ce=`${le}:not([aria-disabled="true"])`,Z="cmdk-item-select",T="data-value",Re=(r,o,n)=>W(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return {search:"",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=false,vimBindings:j=true,...O}=r,$=useId(),q=useId(),_=useId(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit();}},[R]),k(()=>{v(6,ne);},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e==="search")J(),z(),v(1,W);else if(e==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus();}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit();}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:"";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit();}},emit:()=>{f.current.forEach(e=>e());}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit();}));},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit();}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute("id"))===e&&W(),E.emit();});}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e);}),filter:()=>p.current.shouldFilter,label:b||r["aria-label"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===false)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g);}),a.push([i,g]);});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute("id"),y=l.getAttribute("id");return ((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`));}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}="${encodeURIComponent(i[0])}"]`);l==null||l.parentElement.appendChild(l);});}function W(){let e=V().find(s=>s.getAttribute("aria-disabled")!=="true"),a=e==null?void 0:e.getAttribute(T);E.setState("value",a||void 0);}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===false){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:"",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++;}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e;}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:"nearest"})),e.scrollIntoView({block:"nearest"}));}function M(){var e;return (e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected="true"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState("value",s.getAttribute(T));}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState("value",l.getAttribute(T));}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState("value",i.getAttribute(T)):Q(e);}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1);},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1);};return t.createElement(Primitive.div,{ref:o,tabIndex:-1,...O,"cmdk-root":"",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case "n":case "j":{j&&e.ctrlKey&&ie(e);break}case "ArrowDown":{ie(e);break}case "p":case "k":{j&&e.ctrlKey&&se(e);break}case "ArrowUp":{se(e);break}case "Home":{e.preventDefault(),X(0);break}case "End":{e.preventDefault(),oe();break}case "Enter":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l);}}}}},t.createElement("label",{"cmdk-label":"",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=useId(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===false?true:v.search?v.filtered.items.get(n)>0:true);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current);}function S(){m.setState("value",b.current,true);}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(Primitive.div,{ref:composeRefs(u,o),...q,id:n,"cmdk-item":"",role:"option","aria-disabled":!!A,"aria-selected":!!R,"data-disabled":!!A,"data-selected":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=useId(),p=t.useRef(null),b=t.useRef(null),m=useId(),R=K(),x=P(S=>c||R.filter()===false?true:S.search?S.filtered.groups.has(f):true);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(Primitive.div,{ref:composeRefs(p,o),...d,"cmdk-group":"",role:"presentation",hidden:x?void 0:true},n&&t.createElement("div",{ref:b,"cmdk-group-heading":"","aria-hidden":true,id:m},n),B(r,S=>t.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return !n&&!d?null:t.createElement(Primitive.div,{ref:composeRefs(c,o),...u,"cmdk-separator":"",role:"separator"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState("search",r.value);},[r.value]),t.createElement(Primitive.input,{ref:o,...u,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:false,"aria-autocomplete":"list",role:"combobox","aria-expanded":true,"aria-controls":b.listId,"aria-labelledby":b.labelId,"aria-activedescendant":p,id:b.inputId,type:"text",value:c?r.value:f,onChange:m=>{c||d.setState("search",m.target.value),n==null||n(m.target.value);}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u="Suggestions",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty("--cmdk-list-height",S.toFixed(1)+"px");});});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m);}}},[]),t.createElement(Primitive.div,{ref:composeRefs(d,o),...c,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":p,"aria-label":u,id:b.listId},B(r,m=>t.createElement("div",{ref:composeRefs(f,b.listInnerRef),"cmdk-list-sizer":""},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(DialogPrimitive.Root,{open:n,onOpenChange:u},t.createElement(DialogPrimitive.Portal,{container:f},t.createElement(DialogPrimitive.Overlay,{"cmdk-overlay":"",className:c}),t.createElement(DialogPrimitive.Content,{"aria-label":r.label,"cmdk-dialog":"",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(Primitive.div,{ref:o,...r,"cmdk-empty":"",role:"presentation"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c="Loading...",...d}=r;return t.createElement(Primitive.div,{ref:o,...d,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":c},B(r,f=>t.createElement("div",{"aria-hidden":true},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling;}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling;}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r;}),o}var k=typeof window=="undefined"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R=="string")return R.trim();if(typeof R=="object"&&"current"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f;}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map;},[r]),(u,c)=>{n.current.set(u,c),o({});}};function Me(r){let o=r.type;return typeof o=="function"?o(r.props):"render"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};
2903
2903
 
2904
+ const OVERLAY_CONTENT_SELECTOR = [
2905
+ '[data-slot="dialog-content"]',
2906
+ '[role="dialog"]',
2907
+ '[role="alertdialog"]',
2908
+ '[role="menu"]',
2909
+ '[role="listbox"]',
2910
+ '[data-radix-popper-content-wrapper]',
2911
+ ].join(',');
2912
+ /**
2913
+ * `@radix-ui/react-dismissable-layer` keeps the value it must restore to
2914
+ * `<body>` in a single module-level variable shared by every layer. When two
2915
+ * layers overlap — a modal menu whose item opens a dialog, a select inside a
2916
+ * dialog — the second layer saves `pointer-events: none` and its close writes
2917
+ * that back instead of clearing it, leaving the page unclickable until reload.
2918
+ *
2919
+ * Clearing is only safe once nothing is on screen, so this is a no-op while any
2920
+ * overlay content is still mounted.
2921
+ */
2922
+ function releaseStaleOverlayBodyLock() {
2923
+ if (typeof document === 'undefined')
2924
+ return;
2925
+ if (document.querySelector(OVERLAY_CONTENT_SELECTOR))
2926
+ return;
2927
+ const { body } = document;
2928
+ if (body.style.pointerEvents === 'none') {
2929
+ body.style.pointerEvents = '';
2930
+ }
2931
+ if (body.hasAttribute('data-scroll-locked')) {
2932
+ body.removeAttribute('data-scroll-locked');
2933
+ body.style.overflow = '';
2934
+ body.style.paddingRight = '';
2935
+ }
2936
+ }
2937
+
2938
+ /** Long enough for the overlay exit animation (200ms) plus a margin. */
2939
+ const EXIT_GRACE_MS = 400;
2940
+ /**
2941
+ * Clears a leaked Radix `<body>` lock after an overlay closes or unmounts.
2942
+ * Returns a scheduler for overlays that are uncontrolled (no `open` prop), so
2943
+ * their `onOpenChange(false)` can trigger the same check.
2944
+ *
2945
+ * @see releaseStaleOverlayBodyLock for why the lock leaks.
2946
+ */
2947
+ function useOverlayBodyLockRelease(open) {
2948
+ const scheduleRelease = t.useCallback(() => {
2949
+ requestAnimationFrame(() => releaseStaleOverlayBodyLock());
2950
+ window.setTimeout(() => releaseStaleOverlayBodyLock(), EXIT_GRACE_MS);
2951
+ }, []);
2952
+ const wasOpen = t.useRef(false);
2953
+ t.useEffect(() => {
2954
+ if (open) {
2955
+ wasOpen.current = true;
2956
+ return;
2957
+ }
2958
+ if (!wasOpen.current)
2959
+ return;
2960
+ wasOpen.current = false;
2961
+ scheduleRelease();
2962
+ }, [open, scheduleRelease]);
2963
+ // Unmounting while open (route change, parent re-render) skips Radix's own
2964
+ // close path entirely, so the check has to outlive this component.
2965
+ t.useEffect(() => {
2966
+ return () => {
2967
+ window.setTimeout(() => releaseStaleOverlayBodyLock(), EXIT_GRACE_MS);
2968
+ };
2969
+ }, []);
2970
+ return scheduleRelease;
2971
+ }
2972
+
2904
2973
  // Utility to merge classes
2905
2974
  // Root
2906
- function Dialog({ ...props }) {
2907
- return jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
2975
+ function Dialog({ open, onOpenChange, ...props }) {
2976
+ const scheduleLockRelease = useOverlayBodyLockRelease(open);
2977
+ return (jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props, open: open, onOpenChange: (next) => {
2978
+ onOpenChange?.(next);
2979
+ if (!next)
2980
+ scheduleLockRelease();
2981
+ } }));
2908
2982
  }
2909
2983
  // Trigger
2910
2984
  function DialogTrigger({ ...props }) {
@@ -2990,7 +3064,7 @@ function CommandShortcut({ className, ...props }) {
2990
3064
  }
2991
3065
 
2992
3066
  function Input({ className, type, ...props }) {
2993
- return (jsx("input", { type: type, "data-slot": "input", className: cn('file:text-foreground placeholder:text-placeholder placeholder:text-sm selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input-border flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', className), ...props }));
3067
+ return (jsx("input", { type: type, "data-slot": "input", className: cn('file:text-foreground placeholder:text-placeholder placeholder:text-sm selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input-border flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label md:text-sm', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', className), ...props }));
2994
3068
  }
2995
3069
 
2996
3070
  function Label({ className, ...props }) {
@@ -3173,7 +3247,7 @@ function SelectValue({ className, ...props }) {
3173
3247
  return (jsx(SelectPrimitive.Value, { "data-slot": "select-value", className: cn('data-[placeholder]:!text-[var(--placeholder)] data-[placeholder]:!text-sm', className), ...props }));
3174
3248
  }
3175
3249
  function SelectTrigger({ className, size = 'default', children, ...props }) {
3176
- return (jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("border-input-border cursor-pointer data-[placeholder]:!text-[var(--placeholder)] data-[placeholder]:!text-sm [&_[data-placeholder]]:!text-[var(--placeholder)] [&_[data-placeholder]]:!text-sm [&_span[data-placeholder]]:!text-[var(--placeholder)] [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, jsx(SelectPrimitive.Icon, { asChild: true, children: jsx(ChevronDown, { className: "size-4 text-gray-600" }) })] }));
3250
+ return (jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("border-input-border cursor-pointer data-[placeholder]:!text-[var(--placeholder)] data-[placeholder]:!text-sm [&_[data-placeholder]]:!text-[var(--placeholder)] [&_[data-placeholder]]:!text-sm [&_span[data-placeholder]]:!text-[var(--placeholder)] [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, jsx(SelectPrimitive.Icon, { asChild: true, children: jsx(ChevronDown, { className: "size-4 text-gray-600" }) })] }));
3177
3251
  }
3178
3252
  function SelectContent({ className, children, position = 'popper', searchable = true, // default: all selects are searchable
3179
3253
  searchPlaceholder = 'Search...', ...props }) {
@@ -3327,6 +3401,7 @@ TableCell.displayName = 'TableCell';
3327
3401
 
3328
3402
  const Textarea = ({ label, error, className, ...props }) => {
3329
3403
  return (jsxs("div", { className: "flex flex-col gap-1 w-full text-xs", children: [label && (jsx("label", { className: " font-medium text-foreground text-xs", children: label })), jsx("textarea", { "aria-invalid": error ? true : undefined, className: `w-full text-xs rounded-lg border px-3 py-2 placeholder:text-placeholder placeholder:text-sm shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] outline-none resize-y
3404
+ disabled:cursor-not-allowed disabled:bg-muted/50 disabled:text-label
3330
3405
  focus:ring-2 focus:ring-input focus:border-input
3331
3406
  ${error ? 'border-destructive focus:border-destructive focus:ring-destructive/20' : 'border-input-border'}
3332
3407
  ${className || ''}