@tribepad/themis 1.9.1 → 1.9.3

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 (56) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/elements/AlertDialog/index.js +1 -1
  3. package/dist/elements/AlertDialog/index.js.map +1 -1
  4. package/dist/elements/AlertDialog/index.mjs +1 -1
  5. package/dist/elements/AlertDialog/index.mjs.map +1 -1
  6. package/dist/elements/Checkbox/Checkbox.d.ts.map +1 -1
  7. package/dist/elements/Checkbox/index.js +1 -1
  8. package/dist/elements/Checkbox/index.js.map +1 -1
  9. package/dist/elements/Checkbox/index.mjs +1 -1
  10. package/dist/elements/Checkbox/index.mjs.map +1 -1
  11. package/dist/elements/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  12. package/dist/elements/CheckboxGroup/index.js +1 -1
  13. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  14. package/dist/elements/CheckboxGroup/index.mjs +1 -1
  15. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  16. package/dist/elements/Filters/index.js +1 -1
  17. package/dist/elements/Filters/index.js.map +1 -1
  18. package/dist/elements/Filters/index.mjs +1 -1
  19. package/dist/elements/Filters/index.mjs.map +1 -1
  20. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  21. package/dist/elements/Modal/index.js +1 -1
  22. package/dist/elements/Modal/index.js.map +1 -1
  23. package/dist/elements/Modal/index.mjs +1 -1
  24. package/dist/elements/Modal/index.mjs.map +1 -1
  25. package/dist/elements/OTPInput/index.js +1 -1
  26. package/dist/elements/OTPInput/index.js.map +1 -1
  27. package/dist/elements/OTPInput/index.mjs +1 -1
  28. package/dist/elements/OTPInput/index.mjs.map +1 -1
  29. package/dist/elements/RadioGroup/RadioGroup.d.ts.map +1 -1
  30. package/dist/elements/RadioGroup/index.js +1 -1
  31. package/dist/elements/RadioGroup/index.js.map +1 -1
  32. package/dist/elements/RadioGroup/index.mjs +1 -1
  33. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  34. package/dist/elements/SituationalJudgement/index.js +1 -1
  35. package/dist/elements/SituationalJudgement/index.js.map +1 -1
  36. package/dist/elements/SituationalJudgement/index.mjs +1 -1
  37. package/dist/elements/SituationalJudgement/index.mjs.map +1 -1
  38. package/dist/elements/Switch/Switch.d.ts.map +1 -1
  39. package/dist/elements/Switch/index.js +1 -1
  40. package/dist/elements/Switch/index.js.map +1 -1
  41. package/dist/elements/Switch/index.mjs +1 -1
  42. package/dist/elements/Switch/index.mjs.map +1 -1
  43. package/dist/elements/Table/index.js +1 -1
  44. package/dist/elements/Table/index.js.map +1 -1
  45. package/dist/elements/Table/index.mjs +1 -1
  46. package/dist/elements/Table/index.mjs.map +1 -1
  47. package/dist/elements/index.js +1 -1
  48. package/dist/elements/index.js.map +1 -1
  49. package/dist/elements/index.mjs +1 -1
  50. package/dist/elements/index.mjs.map +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.mjs +1 -1
  54. package/dist/index.mjs.map +1 -1
  55. package/package.json +1 -1
  56. package/src/elements/Modal/Modal.stories.tsx +70 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.9.3] - 2026-06-29
9
+
10
+ ### Fixed
11
+ - **`Modal` now actually scrolls tall content inside `Modal.Body`.** 1.9.0 capped the centred box at `85vh` and gave `Modal.Body` `flex-1 overflow-y-auto`, but those flex/height classes lived on `AriaModal` while the regions (`Header`/`Tabs`/`Body`/`Footer`) are children of the intervening `AriaDialog` — which carried only `outline-none`. With no flex parent, `Modal.Body`'s `flex-1` had no effect, the dialog grew to full content height, and `AriaModal`'s `overflow-hidden` clipped the overflow with no scrollbar. The dialog wrapper now gets `flex flex-1 min-h-0 flex-col`, so it fills the capped box and becomes the flex column the regions need — `Modal.Body` scrolls while the header, tab strip, and footer stay pinned. Affected every modal taller than 85vh (tabbed or not). Layout-only fix — no API changes.
12
+
13
+ ## [1.9.2] - 2026-06-27
14
+
15
+ ### Fixed
16
+ - **`Checkbox`, `RadioGroup`, `CheckboxGroup`, and `Switch` no longer extend the page's scroll height.** React Aria renders each control's real `<input>` inside a `VisuallyHidden` span (`position: absolute` with auto offsets). With no positioned ancestor, the span's containing block resolved to the document, so the hidden input was laid out at its static position deep inside tall scroll content and extended `<html>`'s scroll height — producing a phantom blank band and a second (window) scrollbar on layouts whose scroll container was an inner `overflow:auto` region rather than the document. Added `relative` to each control's item/container so the hidden input is confined to its own ~44px box. (`Switch` already had `relative` on its track sub-element, but that's a sibling of the hidden input, not an ancestor, so it didn't help.) Visual/layout fix — no API changes.
17
+
8
18
  ## [1.9.1] - 2026-06-25
9
19
 
10
20
  ### Fixed
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function c(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function Zt(e){if(!(e instanceof Element))return false;let t=e;for(let r=0;t&&r<100;r++){let i=t.tagName?.toLowerCase()??"";if(i.startsWith("grammarly-")||i.startsWith("lt-")||t.hasAttribute("data-grammarly-shadow-root"))return true;if(t.parentElement)t=t.parentElement;else {let d=t.getRootNode();t=d instanceof ShadowRoot?d.host:null;}}let o=e;for(;o&&!o.tagName.includes("-");)o=o.parentElement;if(!o)return false;let n=o.parentElement;return n===document.body||n===document.documentElement}function ot(e){return t=>!Zt(t)&&(e?.(t)??true)}function at(e){let t=react.useCallback(r=>{let i=window.matchMedia(e);return i.addEventListener("change",r),()=>i.removeEventListener("change",r)},[e]),o=react.useCallback(()=>window.matchMedia(e).matches,[e]),n=react.useCallback(()=>false,[]);return react.useSyncExternalStore(t,o,n)}var nt=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[entering]:duration-200","data-[entering]:ease-out"],rt=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95","data-[exiting]:duration-150","data-[exiting]:ease-in"],it=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:slide-in-from-bottom-4","data-[entering]:duration-200","data-[entering]:ease-out"],st=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:slide-out-to-bottom-4","data-[exiting]:duration-150","data-[exiting]:ease-in"],lt=["data-[entering]:animate-in","data-[entering]:slide-in-from-left","data-[entering]:duration-200","data-[entering]:ease-out"],dt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-left","data-[exiting]:duration-150","data-[exiting]:ease-in"],ct=["data-[entering]:animate-in","data-[entering]:slide-in-from-right","data-[entering]:duration-200","data-[entering]:ease-out"],ut=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-right","data-[exiting]:duration-150","data-[exiting]:ease-in"],pt=["data-[entering]:animate-in","data-[entering]:slide-in-from-top","data-[entering]:duration-200","data-[entering]:ease-out"],mt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-top","data-[exiting]:duration-150","data-[exiting]:ease-in"],ft=["data-[entering]:animate-in","data-[entering]:slide-in-from-bottom","data-[entering]:duration-200","data-[entering]:ease-out"],gt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-bottom","data-[exiting]:duration-150","data-[exiting]:ease-in"],L=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:duration-200"],P=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:duration-150"],R=["motion-reduce:transition-none","motion-reduce:animate-none"];var xt=classVarianceAuthority.cva(["relative","bg-[var(--content-background)]","text-[var(--content-foreground)]","rounded-lg","flex","flex-col","overflow-hidden","w-full","outline-none","mx-4","sm:mx-0",...R],{variants:{size:{sm:"max-w-sm max-h-[85vh]",md:"max-w-md max-h-[85vh]",lg:"max-w-lg max-h-[85vh]",xl:"max-w-2xl max-h-[85vh]",full:"max-w-full min-h-screen max-h-none rounded-none"},animation:{"fade-zoom":[...nt,...rt],fade:["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:duration-200","data-[entering]:ease-out","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:duration-150","data-[exiting]:ease-in"],slide:[...it,...st],none:""}},defaultVariants:{size:"md",animation:"fade-zoom"}}),vt=classVarianceAuthority.cva(["fixed","inset-0","z-50","flex","bg-black/50","backdrop-blur-sm",...R],{variants:{animation:{"fade-zoom":[...L,...P],fade:[...L,...P],slide:[...L,...P],none:""},position:{center:"items-center justify-center",left:"items-stretch justify-start",right:"items-stretch justify-end",top:"items-start justify-center",bottom:"items-end justify-center"}},defaultVariants:{animation:"fade-zoom",position:"center"}}),j=classVarianceAuthority.cva(["relative","bg-[var(--content-background)]","text-[var(--content-foreground)]","flex","flex-col","overflow-hidden","outline-none",...R],{variants:{position:{left:"h-full border-r border-[var(--border)] rounded-r-lg",right:"h-full border-l border-[var(--border)] rounded-l-lg",top:"w-full border-b border-[var(--border)] rounded-b-lg",bottom:"w-full border-t border-[var(--border)] rounded-t-lg"},size:{sm:"",md:"",lg:"",xl:"",full:""}},compoundVariants:[{position:["left","right"],size:"sm",class:"w-[300px] max-w-[90vw]"},{position:["left","right"],size:"md",class:"w-[400px] max-w-[90vw]"},{position:["left","right"],size:"lg",class:"w-[500px] max-w-[90vw]"},{position:["left","right"],size:"xl",class:"w-[600px] max-w-[90vw]"},{position:["left","right"],size:"full",class:"w-screen"},{position:["top","bottom"],size:"sm",class:"h-[200px] max-h-[90vh]"},{position:["top","bottom"],size:"md",class:"h-[320px] max-h-[90vh]"},{position:["top","bottom"],size:"lg",class:"h-[440px] max-h-[90vh]"},{position:["top","bottom"],size:"xl",class:"h-[560px] max-h-[90vh]"},{position:["top","bottom"],size:"full",class:"h-screen"}],defaultVariants:{position:"right",size:"md"}}),bt={left:[...lt,...dt],right:[...ct,...ut],top:[...pt,...mt],bottom:[...ft,...gt]},ht=classVarianceAuthority.cva(["px-6","py-4","flex-1","min-h-0","overflow-y-auto"]),Et=classVarianceAuthority.cva(["[&_[role=tablist]]:flex","[&_[role=tablist]]:w-full","[&_[role=tablist]]:px-2"]);var X=react.createContext(void 0);function Mt({children:e,defaultOpen:t,isOpen:o,onOpenChange:n,role:r="dialog"}){let i=react.Children.toArray(e);if(process.env.NODE_ENV!=="production"&&!i.some(u=>react.isValidElement(u)&&(u.type===M||u.type.displayName==="ModalContent")))throw new Error("Modal requires a Modal.Content as a child");let d=i.find(a=>react.isValidElement(a)&&(a.type===T||a.type.displayName==="ModalTrigger")),f=i.find(a=>react.isValidElement(a)&&(a.type===M||a.type.displayName==="ModalContent"));if(!d)return jsxRuntime.jsx(X.Provider,{value:{role:r},children:jsxRuntime.jsx(reactAriaComponents.DialogTrigger,{defaultOpen:t,isOpen:o,onOpenChange:n,children:f})});let g=d,x=react.isValidElement(g)?g.props.children:null;return jsxRuntime.jsx(X.Provider,{value:{role:r},children:jsxRuntime.jsxs(reactAriaComponents.DialogTrigger,{defaultOpen:t,isOpen:o,onOpenChange:n,children:[x,f]})})}Mt.displayName="Modal";function T({children:e}){return e}T.displayName="ModalTrigger";function M({children:e,size:t="md",animation:o="fade-zoom",position:n="center",mobileBreakpoint:r=768,animationDuration:i=250,isDismissable:d=true,isKeyboardDismissDisabled:h=false,shouldCloseOnInteractOutside:f,showClose:g=true,className:x}){let u=react.useContext(X)?.role??"dialog",E=n!=="center",_=at(`(max-width: ${r-1}px)`),v=E&&_?"bottom":n,I=vt({animation:o,position:v}),O;if(E){let p=v,C=_?c(j({position:"bottom",size:t}),"h-auto max-h-[85vh]"):j({position:p,size:t}),F=o==="none"?void 0:bt[p];O=c(C,F,x);}else O=c(xt({size:t,animation:o}),x);return jsxRuntime.jsx(reactAriaComponents.ModalOverlay,{isDismissable:d,isKeyboardDismissDisabled:h,shouldCloseOnInteractOutside:ot(f),className:I,children:jsxRuntime.jsx(reactAriaComponents.Modal,{className:O,style:{transitionDuration:`${i}ms`},children:jsxRuntime.jsx(reactAriaComponents.Dialog,{role:u,className:"outline-none",children:({close:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[g&&jsxRuntime.jsx(reactAriaComponents.Button,{onPress:p,className:"absolute right-0 top-0 flex items-center justify-center rounded-sm opacity-70 ring-offset-[var(--content-background)] transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:ring-offset-2 disabled:pointer-events-none min-h-[44px] min-w-[44px]","aria-label":"Close modal",children:jsxRuntime.jsx(lucideReact.X,{className:"h-4 w-4","aria-hidden":"true"})}),e]})})})})}M.displayName="ModalContent";function yt(e){return null}yt.displayName="ModalOverlay";function w({children:e,className:t}){return jsxRuntime.jsx("div",{className:c("flex flex-col space-y-1.5 px-6 pt-6 pb-4 pr-12 text-center sm:text-left",t),children:e})}w.displayName="ModalHeader";function B({children:e,as:t="h2",className:o}){return jsxRuntime.jsx(reactAriaComponents.Heading,{slot:"title",level:parseInt(t[1]??"2"),className:c("text-lg font-semibold leading-none tracking-tight",o),children:e})}B.displayName="ModalTitle";function z({children:e,className:t}){return jsxRuntime.jsx("p",{slot:"description",className:c("text-sm text-[var(--menu-muted)]",t),children:e})}z.displayName="ModalDescription";function At({children:e,className:t}){return jsxRuntime.jsx("div",{className:c(Et(),t),children:e})}At.displayName="ModalTabs";function Dt({children:e,className:t}){return jsxRuntime.jsx("div",{className:c(ht(),t),children:e})}Dt.displayName="ModalBody";function G({children:e,className:t}){return jsxRuntime.jsx("div",{className:c("flex flex-col-reverse sm:flex-row sm:justify-end gap-2 px-6 pb-6 pt-4",t),children:e})}G.displayName="ModalFooter";function S({children:e}){let t=react.useContext(reactAriaComponents.OverlayTriggerStateContext);if(!t)throw new Error("Modal.Close must be used inside Modal.Content");if(!react.isValidElement(e))throw new Error("Modal.Close requires a valid React element as a child");let o=e,n=()=>{t.close();},r=o.props?.onPress;return react.cloneElement(o,{onPress:r?()=>{r(),n();}:n})}S.displayName="ModalClose";var Tt=Object.assign(Mt,{Trigger:T,Content:M,Overlay:yt,Header:w,Title:B,Description:z,Tabs:At,Body:Dt,Footer:G,Close:S});var It=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}}),Ct=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 Z="data-[pressed]:scale-[0.97]";var H="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",U="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var Rt=react.createContext(null);Rt.displayName="ButtonGroupContext";function wt(){return react.useContext(Rt)}var Bt=react.createContext(null);Bt.displayName="ButtonGroupItemContext";function zt(){return react.useContext(Bt)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Gt=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 k=react.memo(react.forwardRef(({className:e,buttonVisualClassName:t,variant:o,size:n,visualSize:r,fullWidth:i,loading:d=false,loadingText:h="Loading...",shortcut:f,children:g,isDisabled:x,paywall:a=false,paywallRedirect:u,paywallDescription:E,onPress:_,...v},I)=>{let O=react.useId(),p=wt(),C=zt(),F=o??p?.variant??"default",$t=n??p?.size,Yt=x??p?.isDisabled??false,tt=p?.orientation==="vertical",et=i||tt,Wt=C?Gt({orientation:p?.orientation??"horizontal",position:C.position}):"",$=r??$t??"default";return process.env.NODE_ENV!=="production"&&($==="dot"||$==="icon")&&!v["aria-label"]&&!g&&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:I,isDisabled:Yt||d||void 0,"aria-disabled":a?true:void 0,"aria-describedby":a?O:void 0,onPress:V=>{if(a){u&&window.open(u,"_blank","noopener,noreferrer");return}_?.(V);},className:c(It({fullWidth:et,inVerticalGroup:tt}),e),...v,children:V=>jsxRuntime.jsxs("span",{className:c(Ct({variant:F,visualSize:$,paywall:a,fullWidth:et}),Wt,t,Z,"",H,U),"data-pressed":V.isPressed||void 0,children:[d&&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:h})]}),!d&&g,a&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),a&&jsxRuntime.jsxs("span",{id:O,className:"sr-only",children:["Premium feature: ",E||"Upgrade required to access this feature"]}),V.isFocusVisible&&f&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:f})]})})}));k.displayName="Button";var J=classVarianceAuthority.cva("border border-[var(--border)]",{variants:{variant:{default:"",destructive:"border-[var(--destructive-background)]"}},defaultVariants:{variant:"default"}});function Ht({trigger:e,isOpen:t,defaultOpen:o=false,onOpenChange:n,title:r,description:i,children:d,variant:h="default",size:f="md",cancelLabel:g="Cancel",cancelIcon:x,actionLabel:a,actionIcon:u,actionVariant:E="destructive",onAction:_,className:v}){return jsxRuntime.jsxs(Tt,{role:"alertdialog",isOpen:t,defaultOpen:o,onOpenChange:n,children:[jsxRuntime.jsx(T,{children:e}),jsxRuntime.jsxs(M,{size:f,isDismissable:false,isKeyboardDismissDisabled:true,showClose:false,animation:"fade-zoom",animationDuration:250,className:J({variant:h})+(v?` ${v}`:""),children:[jsxRuntime.jsxs(w,{children:[jsxRuntime.jsx(B,{as:"h2",children:r}),i&&jsxRuntime.jsx(z,{children:i})]}),d,jsxRuntime.jsxs(G,{children:[jsxRuntime.jsx(S,{children:jsxRuntime.jsxs(k,{variant:"secondary",children:[x&&jsxRuntime.jsx("span",{className:"mr-2","aria-hidden":"true",children:x}),g]})}),jsxRuntime.jsx(S,{children:jsxRuntime.jsxs(k,{variant:E,onPress:_,children:[u&&jsxRuntime.jsx("span",{className:"mr-2","aria-hidden":"true",children:u}),a]})})]})]})]})}Ht.displayName="AlertDialog";var Ut=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var kt=zod.z.enum(["default","destructive"]),Ft=zod.z.enum(["sm","md","lg"]),ve=Ut.extend({trigger:zod.z.custom(),isOpen:zod.z.boolean().optional(),defaultOpen:zod.z.boolean().optional().default(false),onOpenChange:zod.z.custom().optional(),title:zod.z.string(),description:zod.z.string().optional(),children:zod.z.custom().optional(),variant:kt.optional().default("default"),size:Ft.optional().default("md"),cancelLabel:zod.z.string().optional().default("Cancel"),cancelIcon:zod.z.custom().optional(),actionLabel:zod.z.string(),actionIcon:zod.z.custom().optional(),actionVariant:zod.z.enum(["default","destructive"]).optional().default("destructive"),onAction:zod.z.custom().optional()});exports.AlertDialog=Ht;exports.AlertDialogPropsSchema=ve;exports.AlertDialogSizeSchema=Ft;exports.AlertDialogVariantSchema=kt;exports.alertDialogContentVariants=J;//# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function c(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function Zt(e){if(!(e instanceof Element))return false;let t=e;for(let r=0;t&&r<100;r++){let i=t.tagName?.toLowerCase()??"";if(i.startsWith("grammarly-")||i.startsWith("lt-")||t.hasAttribute("data-grammarly-shadow-root"))return true;if(t.parentElement)t=t.parentElement;else {let d=t.getRootNode();t=d instanceof ShadowRoot?d.host:null;}}let o=e;for(;o&&!o.tagName.includes("-");)o=o.parentElement;if(!o)return false;let n=o.parentElement;return n===document.body||n===document.documentElement}function ot(e){return t=>!Zt(t)&&(e?.(t)??true)}function at(e){let t=react.useCallback(r=>{let i=window.matchMedia(e);return i.addEventListener("change",r),()=>i.removeEventListener("change",r)},[e]),o=react.useCallback(()=>window.matchMedia(e).matches,[e]),n=react.useCallback(()=>false,[]);return react.useSyncExternalStore(t,o,n)}var nt=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[entering]:duration-200","data-[entering]:ease-out"],rt=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95","data-[exiting]:duration-150","data-[exiting]:ease-in"],it=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:slide-in-from-bottom-4","data-[entering]:duration-200","data-[entering]:ease-out"],st=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:slide-out-to-bottom-4","data-[exiting]:duration-150","data-[exiting]:ease-in"],lt=["data-[entering]:animate-in","data-[entering]:slide-in-from-left","data-[entering]:duration-200","data-[entering]:ease-out"],dt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-left","data-[exiting]:duration-150","data-[exiting]:ease-in"],ct=["data-[entering]:animate-in","data-[entering]:slide-in-from-right","data-[entering]:duration-200","data-[entering]:ease-out"],ut=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-right","data-[exiting]:duration-150","data-[exiting]:ease-in"],pt=["data-[entering]:animate-in","data-[entering]:slide-in-from-top","data-[entering]:duration-200","data-[entering]:ease-out"],mt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-top","data-[exiting]:duration-150","data-[exiting]:ease-in"],ft=["data-[entering]:animate-in","data-[entering]:slide-in-from-bottom","data-[entering]:duration-200","data-[entering]:ease-out"],gt=["data-[exiting]:animate-out","data-[exiting]:slide-out-to-bottom","data-[exiting]:duration-150","data-[exiting]:ease-in"],L=["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:duration-200"],P=["data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:duration-150"],R=["motion-reduce:transition-none","motion-reduce:animate-none"];var xt=classVarianceAuthority.cva(["relative","bg-[var(--content-background)]","text-[var(--content-foreground)]","rounded-lg","flex","flex-col","overflow-hidden","w-full","outline-none","mx-4","sm:mx-0",...R],{variants:{size:{sm:"max-w-sm max-h-[85vh]",md:"max-w-md max-h-[85vh]",lg:"max-w-lg max-h-[85vh]",xl:"max-w-2xl max-h-[85vh]",full:"max-w-full min-h-screen max-h-none rounded-none"},animation:{"fade-zoom":[...nt,...rt],fade:["data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:duration-200","data-[entering]:ease-out","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:duration-150","data-[exiting]:ease-in"],slide:[...it,...st],none:""}},defaultVariants:{size:"md",animation:"fade-zoom"}}),vt=classVarianceAuthority.cva(["fixed","inset-0","z-50","flex","bg-black/50","backdrop-blur-sm",...R],{variants:{animation:{"fade-zoom":[...L,...P],fade:[...L,...P],slide:[...L,...P],none:""},position:{center:"items-center justify-center",left:"items-stretch justify-start",right:"items-stretch justify-end",top:"items-start justify-center",bottom:"items-end justify-center"}},defaultVariants:{animation:"fade-zoom",position:"center"}}),j=classVarianceAuthority.cva(["relative","bg-[var(--content-background)]","text-[var(--content-foreground)]","flex","flex-col","overflow-hidden","outline-none",...R],{variants:{position:{left:"h-full border-r border-[var(--border)] rounded-r-lg",right:"h-full border-l border-[var(--border)] rounded-l-lg",top:"w-full border-b border-[var(--border)] rounded-b-lg",bottom:"w-full border-t border-[var(--border)] rounded-t-lg"},size:{sm:"",md:"",lg:"",xl:"",full:""}},compoundVariants:[{position:["left","right"],size:"sm",class:"w-[300px] max-w-[90vw]"},{position:["left","right"],size:"md",class:"w-[400px] max-w-[90vw]"},{position:["left","right"],size:"lg",class:"w-[500px] max-w-[90vw]"},{position:["left","right"],size:"xl",class:"w-[600px] max-w-[90vw]"},{position:["left","right"],size:"full",class:"w-screen"},{position:["top","bottom"],size:"sm",class:"h-[200px] max-h-[90vh]"},{position:["top","bottom"],size:"md",class:"h-[320px] max-h-[90vh]"},{position:["top","bottom"],size:"lg",class:"h-[440px] max-h-[90vh]"},{position:["top","bottom"],size:"xl",class:"h-[560px] max-h-[90vh]"},{position:["top","bottom"],size:"full",class:"h-screen"}],defaultVariants:{position:"right",size:"md"}}),bt={left:[...lt,...dt],right:[...ct,...ut],top:[...pt,...mt],bottom:[...ft,...gt]},ht=classVarianceAuthority.cva(["px-6","py-4","flex-1","min-h-0","overflow-y-auto"]),Et=classVarianceAuthority.cva(["[&_[role=tablist]]:flex","[&_[role=tablist]]:w-full","[&_[role=tablist]]:px-2"]);var X=react.createContext(void 0);function Mt({children:e,defaultOpen:t,isOpen:o,onOpenChange:n,role:r="dialog"}){let i=react.Children.toArray(e);if(process.env.NODE_ENV!=="production"&&!i.some(u=>react.isValidElement(u)&&(u.type===M||u.type.displayName==="ModalContent")))throw new Error("Modal requires a Modal.Content as a child");let d=i.find(a=>react.isValidElement(a)&&(a.type===T||a.type.displayName==="ModalTrigger")),f=i.find(a=>react.isValidElement(a)&&(a.type===M||a.type.displayName==="ModalContent"));if(!d)return jsxRuntime.jsx(X.Provider,{value:{role:r},children:jsxRuntime.jsx(reactAriaComponents.DialogTrigger,{defaultOpen:t,isOpen:o,onOpenChange:n,children:f})});let g=d,x=react.isValidElement(g)?g.props.children:null;return jsxRuntime.jsx(X.Provider,{value:{role:r},children:jsxRuntime.jsxs(reactAriaComponents.DialogTrigger,{defaultOpen:t,isOpen:o,onOpenChange:n,children:[x,f]})})}Mt.displayName="Modal";function T({children:e}){return e}T.displayName="ModalTrigger";function M({children:e,size:t="md",animation:o="fade-zoom",position:n="center",mobileBreakpoint:r=768,animationDuration:i=250,isDismissable:d=true,isKeyboardDismissDisabled:h=false,shouldCloseOnInteractOutside:f,showClose:g=true,className:x}){let u=react.useContext(X)?.role??"dialog",E=n!=="center",_=at(`(max-width: ${r-1}px)`),v=E&&_?"bottom":n,I=vt({animation:o,position:v}),O;if(E){let p=v,C=_?c(j({position:"bottom",size:t}),"h-auto max-h-[85vh]"):j({position:p,size:t}),F=o==="none"?void 0:bt[p];O=c(C,F,x);}else O=c(xt({size:t,animation:o}),x);return jsxRuntime.jsx(reactAriaComponents.ModalOverlay,{isDismissable:d,isKeyboardDismissDisabled:h,shouldCloseOnInteractOutside:ot(f),className:I,children:jsxRuntime.jsx(reactAriaComponents.Modal,{className:O,style:{transitionDuration:`${i}ms`},children:jsxRuntime.jsx(reactAriaComponents.Dialog,{role:u,className:"flex flex-1 min-h-0 flex-col outline-none",children:({close:p})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[g&&jsxRuntime.jsx(reactAriaComponents.Button,{onPress:p,className:"absolute right-0 top-0 flex items-center justify-center rounded-sm opacity-70 ring-offset-[var(--content-background)] transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--ring)] focus:ring-offset-2 disabled:pointer-events-none min-h-[44px] min-w-[44px]","aria-label":"Close modal",children:jsxRuntime.jsx(lucideReact.X,{className:"h-4 w-4","aria-hidden":"true"})}),e]})})})})}M.displayName="ModalContent";function yt(e){return null}yt.displayName="ModalOverlay";function w({children:e,className:t}){return jsxRuntime.jsx("div",{className:c("flex flex-col space-y-1.5 px-6 pt-6 pb-4 pr-12 text-center sm:text-left",t),children:e})}w.displayName="ModalHeader";function B({children:e,as:t="h2",className:o}){return jsxRuntime.jsx(reactAriaComponents.Heading,{slot:"title",level:parseInt(t[1]??"2"),className:c("text-lg font-semibold leading-none tracking-tight",o),children:e})}B.displayName="ModalTitle";function z({children:e,className:t}){return jsxRuntime.jsx("p",{slot:"description",className:c("text-sm text-[var(--menu-muted)]",t),children:e})}z.displayName="ModalDescription";function At({children:e,className:t}){return jsxRuntime.jsx("div",{className:c(Et(),t),children:e})}At.displayName="ModalTabs";function Dt({children:e,className:t}){return jsxRuntime.jsx("div",{className:c(ht(),t),children:e})}Dt.displayName="ModalBody";function G({children:e,className:t}){return jsxRuntime.jsx("div",{className:c("flex flex-col-reverse sm:flex-row sm:justify-end gap-2 px-6 pb-6 pt-4",t),children:e})}G.displayName="ModalFooter";function S({children:e}){let t=react.useContext(reactAriaComponents.OverlayTriggerStateContext);if(!t)throw new Error("Modal.Close must be used inside Modal.Content");if(!react.isValidElement(e))throw new Error("Modal.Close requires a valid React element as a child");let o=e,n=()=>{t.close();},r=o.props?.onPress;return react.cloneElement(o,{onPress:r?()=>{r(),n();}:n})}S.displayName="ModalClose";var Tt=Object.assign(Mt,{Trigger:T,Content:M,Overlay:yt,Header:w,Title:B,Description:z,Tabs:At,Body:Dt,Footer:G,Close:S});var It=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}}),Ct=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 Z="data-[pressed]:scale-[0.97]";var H="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",U="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground";var Rt=react.createContext(null);Rt.displayName="ButtonGroupContext";function wt(){return react.useContext(Rt)}var Bt=react.createContext(null);Bt.displayName="ButtonGroupItemContext";function zt(){return react.useContext(Bt)}classVarianceAuthority.cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Gt=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 k=react.memo(react.forwardRef(({className:e,buttonVisualClassName:t,variant:o,size:n,visualSize:r,fullWidth:i,loading:d=false,loadingText:h="Loading...",shortcut:f,children:g,isDisabled:x,paywall:a=false,paywallRedirect:u,paywallDescription:E,onPress:_,...v},I)=>{let O=react.useId(),p=wt(),C=zt(),F=o??p?.variant??"default",$t=n??p?.size,Yt=x??p?.isDisabled??false,tt=p?.orientation==="vertical",et=i||tt,Wt=C?Gt({orientation:p?.orientation??"horizontal",position:C.position}):"",$=r??$t??"default";return process.env.NODE_ENV!=="production"&&($==="dot"||$==="icon")&&!v["aria-label"]&&!g&&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:I,isDisabled:Yt||d||void 0,"aria-disabled":a?true:void 0,"aria-describedby":a?O:void 0,onPress:V=>{if(a){u&&window.open(u,"_blank","noopener,noreferrer");return}_?.(V);},className:c(It({fullWidth:et,inVerticalGroup:tt}),e),...v,children:V=>jsxRuntime.jsxs("span",{className:c(Ct({variant:F,visualSize:$,paywall:a,fullWidth:et}),Wt,t,Z,"",H,U),"data-pressed":V.isPressed||void 0,children:[d&&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:h})]}),!d&&g,a&&jsxRuntime.jsx(lucideReact.Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),a&&jsxRuntime.jsxs("span",{id:O,className:"sr-only",children:["Premium feature: ",E||"Upgrade required to access this feature"]}),V.isFocusVisible&&f&&jsxRuntime.jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:f})]})})}));k.displayName="Button";var J=classVarianceAuthority.cva("border border-[var(--border)]",{variants:{variant:{default:"",destructive:"border-[var(--destructive-background)]"}},defaultVariants:{variant:"default"}});function Ht({trigger:e,isOpen:t,defaultOpen:o=false,onOpenChange:n,title:r,description:i,children:d,variant:h="default",size:f="md",cancelLabel:g="Cancel",cancelIcon:x,actionLabel:a,actionIcon:u,actionVariant:E="destructive",onAction:_,className:v}){return jsxRuntime.jsxs(Tt,{role:"alertdialog",isOpen:t,defaultOpen:o,onOpenChange:n,children:[jsxRuntime.jsx(T,{children:e}),jsxRuntime.jsxs(M,{size:f,isDismissable:false,isKeyboardDismissDisabled:true,showClose:false,animation:"fade-zoom",animationDuration:250,className:J({variant:h})+(v?` ${v}`:""),children:[jsxRuntime.jsxs(w,{children:[jsxRuntime.jsx(B,{as:"h2",children:r}),i&&jsxRuntime.jsx(z,{children:i})]}),d,jsxRuntime.jsxs(G,{children:[jsxRuntime.jsx(S,{children:jsxRuntime.jsxs(k,{variant:"secondary",children:[x&&jsxRuntime.jsx("span",{className:"mr-2","aria-hidden":"true",children:x}),g]})}),jsxRuntime.jsx(S,{children:jsxRuntime.jsxs(k,{variant:E,onPress:_,children:[u&&jsxRuntime.jsx("span",{className:"mr-2","aria-hidden":"true",children:u}),a]})})]})]})]})}Ht.displayName="AlertDialog";var Ut=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var kt=zod.z.enum(["default","destructive"]),Ft=zod.z.enum(["sm","md","lg"]),ve=Ut.extend({trigger:zod.z.custom(),isOpen:zod.z.boolean().optional(),defaultOpen:zod.z.boolean().optional().default(false),onOpenChange:zod.z.custom().optional(),title:zod.z.string(),description:zod.z.string().optional(),children:zod.z.custom().optional(),variant:kt.optional().default("default"),size:Ft.optional().default("md"),cancelLabel:zod.z.string().optional().default("Cancel"),cancelIcon:zod.z.custom().optional(),actionLabel:zod.z.string(),actionIcon:zod.z.custom().optional(),actionVariant:zod.z.enum(["default","destructive"]).optional().default("destructive"),onAction:zod.z.custom().optional()});exports.AlertDialog=Ht;exports.AlertDialogPropsSchema=ve;exports.AlertDialogSizeSchema=Ft;exports.AlertDialogVariantSchema=kt;exports.alertDialogContentVariants=J;//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map