@gradeui/ui 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,231 @@
1
+ 'use strict';var c=require('react'),E=require('@radix-ui/react-accordion'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),reactSlot=require('@radix-ui/react-slot'),ne=require('@radix-ui/react-checkbox'),w=require('@radix-ui/react-dialog'),u=require('@radix-ui/react-dropdown-menu'),Ie=require('@radix-ui/react-label'),de=require('@radix-ui/react-progress'),Y=require('@radix-ui/react-radio-group'),A=require('@radix-ui/react-scroll-area'),f=require('@radix-ui/react-select'),Fe=require('@radix-ui/react-separator'),_=require('@radix-ui/react-slider'),ce=require('@radix-ui/react-switch'),G=require('@radix-ui/react-tabs'),K=require('@radix-ui/react-tooltip'),Fo=require('lenis'),W=require('@radix-ui/react-popover');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var c__namespace=/*#__PURE__*/_interopNamespace(c);var E__namespace=/*#__PURE__*/_interopNamespace(E);var ne__namespace=/*#__PURE__*/_interopNamespace(ne);var w__namespace=/*#__PURE__*/_interopNamespace(w);var u__namespace=/*#__PURE__*/_interopNamespace(u);var Ie__namespace=/*#__PURE__*/_interopNamespace(Ie);var de__namespace=/*#__PURE__*/_interopNamespace(de);var Y__namespace=/*#__PURE__*/_interopNamespace(Y);var A__namespace=/*#__PURE__*/_interopNamespace(A);var f__namespace=/*#__PURE__*/_interopNamespace(f);var Fe__namespace=/*#__PURE__*/_interopNamespace(Fe);var ___namespace=/*#__PURE__*/_interopNamespace(_);var ce__namespace=/*#__PURE__*/_interopNamespace(ce);var G__namespace=/*#__PURE__*/_interopNamespace(G);var K__namespace=/*#__PURE__*/_interopNamespace(K);var Fo__default=/*#__PURE__*/_interopDefault(Fo);var W__namespace=/*#__PURE__*/_interopNamespace(W);function a(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var _r=E__namespace.Root,ot=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(E__namespace.Item,{ref:r,className:a("border-b",e),...t}));ot.displayName="AccordionItem";var at=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(E__namespace.Header,{className:"flex"},c__namespace.createElement(E__namespace.Trigger,{ref:o,className:a("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",e),...r},t,c__namespace.createElement(lucideReact.ChevronDown,{className:"h-4 w-4 shrink-0 transition-transform duration-200"}))));at.displayName=E__namespace.Trigger.displayName;var it=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(E__namespace.Content,{ref:o,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...r},c__namespace.createElement("div",{className:a("pb-4 pt-0",e)},t)));it.displayName=E__namespace.Content.displayName;var jr=classVarianceAuthority.cva("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4",{variants:{variant:{default:"bg-background text-foreground [&>svg]:text-foreground",destructive:"border-destructive/50 bg-destructive/10 text-destructive [&>svg]:text-destructive",success:"border-success/40 bg-success/10 text-success [&>svg]:text-success",warning:"border-warning/40 bg-warning/10 text-warning [&>svg]:text-warning",info:"border-info/40 bg-info/10 text-info [&>svg]:text-info",highlight:"border-highlight/40 bg-highlight/10 text-foreground [&>svg]:text-highlight"}},defaultVariants:{variant:"default"}}),nt=c__namespace.forwardRef(({className:e,variant:t,...r},o)=>c__namespace.createElement("div",{ref:o,role:"alert",className:a(jr({variant:t}),e),...r}));nt.displayName="Alert";var st=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("h5",{ref:r,className:a("mb-1 font-medium leading-none tracking-tight",e),...t}));st.displayName="AlertTitle";var dt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("text-sm [&_p]:leading-relaxed",e),...t}));dt.displayName="AlertDescription";var ct=classVarianceAuthority.cva("inline-flex items-center gap-1 border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 [&_svg]:size-3 [&_svg]:shrink-0",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground",highlight:"border-transparent bg-rds-yellow-400 text-rds-gray-900 shadow hover:bg-rds-yellow-500",success:"border-transparent bg-rds-green-500 text-rds-gray-900 shadow hover:bg-rds-green-600",warning:"border-transparent bg-orange-500 text-white shadow hover:bg-orange-600",info:"border-transparent bg-blue-500 text-white shadow hover:bg-blue-600","success-soft":"border-rds-green-500/20 bg-rds-green-500/10 text-rds-green-600 dark:text-rds-green-400","warning-soft":"border-orange-500/20 bg-orange-500/10 text-orange-600 dark:text-orange-400","destructive-soft":"border-destructive/20 bg-destructive/10 text-destructive dark:text-red-400","info-soft":"border-blue-500/20 bg-blue-500/10 text-blue-600 dark:text-blue-400","highlight-soft":"border-rds-yellow-500/20 bg-rds-yellow-400/10 text-rds-yellow-600 dark:text-rds-yellow-400","success-outline":"border-rds-green-500/50 bg-transparent text-rds-green-600 dark:text-rds-green-400","warning-outline":"border-orange-500/50 bg-transparent text-orange-600 dark:text-orange-400","destructive-outline":"border-destructive/50 bg-transparent text-destructive dark:text-red-400","info-outline":"border-blue-500/50 bg-transparent text-blue-600 dark:text-blue-400"},rounded:{default:"rounded-md",full:"rounded-full"}},defaultVariants:{variant:"default",rounded:"default"}});function Yr({className:e,variant:t,rounded:r,...o}){return c__namespace.createElement("div",{className:a(ct({variant:t,rounded:r}),e),...o})}var pt=classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),oe=c__namespace.forwardRef(({className:e,variant:t,size:r,asChild:o=false,...i},n)=>c__namespace.createElement(o?reactSlot.Slot:"button",{className:a("rds-button",pt({variant:t,size:r,className:e})),ref:n,...i}));oe.displayName="Button";var mt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("rds-card rounded-xl border bg-card text-card-foreground shadow",e),...t}));mt.displayName="Card";var ut=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("flex flex-col space-y-1.5 p-6",e),...t}));ut.displayName="CardHeader";var ft=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("font-semibold leading-none tracking-tight",e),...t}));ft.displayName="CardTitle";var gt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("text-sm text-muted-foreground",e),...t}));gt.displayName="CardDescription";var ht=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("p-6 pt-0",e),...t}));ht.displayName="CardContent";var yt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{ref:r,className:a("flex items-center p-6 pt-0",e),...t}));yt.displayName="CardFooter";var bt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(ne__namespace.Root,{ref:r,className:a("rds-checkbox peer h-4 w-4 shrink-0 rounded-[3px] border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...t},c__namespace.createElement(ne__namespace.Indicator,{className:a("flex items-center justify-center text-current")},c__namespace.createElement(lucideReact.Check,{className:"h-4 w-4"}))));bt.displayName=ne__namespace.Root.displayName;var Zr=w__namespace.Root,eo=w__namespace.Trigger,vt=w__namespace.Portal,to=w__namespace.Close,De=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Overlay,{ref:r,className:a("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));De.displayName=w__namespace.Overlay.displayName;var xt=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(vt,null,c__namespace.createElement(De,null),c__namespace.createElement(w__namespace.Content,{ref:o,className:a("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r},t,c__namespace.createElement(w__namespace.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"},c__namespace.createElement(lucideReact.X,{className:"h-4 w-4"}),c__namespace.createElement("span",{className:"sr-only"},"Close")))));xt.displayName=w__namespace.Content.displayName;var Rt=({className:e,...t})=>c__namespace.createElement("div",{className:a("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Rt.displayName="DialogHeader";var Tt=({className:e,...t})=>c__namespace.createElement("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Tt.displayName="DialogFooter";var St=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Title,{ref:r,className:a("text-lg font-semibold leading-none tracking-tight",e),...t}));St.displayName=w__namespace.Title.displayName;var wt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Description,{ref:r,className:a("text-sm text-muted-foreground",e),...t}));wt.displayName=w__namespace.Description.displayName;var io=u__namespace.Root,no=u__namespace.Trigger,so=u__namespace.Group,lo=u__namespace.Portal,co=u__namespace.Sub,po=u__namespace.RadioGroup,Pt=c__namespace.forwardRef(({className:e,inset:t,children:r,...o},i)=>c__namespace.createElement(u__namespace.SubTrigger,{ref:i,className:a("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t&&"pl-8",e),...o},r,c__namespace.createElement(lucideReact.ChevronRight,{className:"ml-auto"})));Pt.displayName=u__namespace.SubTrigger.displayName;var Ct=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(u__namespace.SubContent,{ref:r,className:a("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",e),...t}));Ct.displayName=u__namespace.SubContent.displayName;var Nt=c__namespace.forwardRef(({className:e,sideOffset:t=4,...r},o)=>c__namespace.createElement(u__namespace.Portal,null,c__namespace.createElement(u__namespace.Content,{ref:o,sideOffset:t,className:a("z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",e),...r})));Nt.displayName=u__namespace.Content.displayName;var kt=c__namespace.forwardRef(({className:e,inset:t,...r},o)=>c__namespace.createElement(u__namespace.Item,{ref:o,className:a("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",t&&"pl-8",e),...r}));kt.displayName=u__namespace.Item.displayName;var Mt=c__namespace.forwardRef(({className:e,children:t,checked:r,...o},i)=>c__namespace.createElement(u__namespace.CheckboxItem,{ref:i,className:a("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:r,...o},c__namespace.createElement("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center"},c__namespace.createElement(u__namespace.ItemIndicator,null,c__namespace.createElement(lucideReact.Check,{className:"h-4 w-4"}))),t));Mt.displayName=u__namespace.CheckboxItem.displayName;var Lt=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(u__namespace.RadioItem,{ref:o,className:a("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...r},c__namespace.createElement("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center"},c__namespace.createElement(u__namespace.ItemIndicator,null,c__namespace.createElement(lucideReact.Circle,{className:"h-2 w-2 fill-current"}))),t));Lt.displayName=u__namespace.RadioItem.displayName;var Dt=c__namespace.forwardRef(({className:e,inset:t,...r},o)=>c__namespace.createElement(u__namespace.Label,{ref:o,className:a("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...r}));Dt.displayName=u__namespace.Label.displayName;var It=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(u__namespace.Separator,{ref:r,className:a("-mx-1 my-1 h-px bg-muted",e),...t}));It.displayName=u__namespace.Separator.displayName;var Ht=({className:e,...t})=>c__namespace.createElement("span",{className:a("ml-auto text-xs tracking-widest opacity-60",e),...t});Ht.displayName="DropdownMenuShortcut";var Et=c__namespace.forwardRef(({className:e,type:t,...r},o)=>c__namespace.createElement("input",{type:t,className:a("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:o,...r}));Et.displayName="Input";var uo=classVarianceAuthority.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),At=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(Ie__namespace.Root,{ref:r,className:a(uo(),e),...t}));At.displayName=Ie__namespace.Root.displayName;var Ft=c__namespace.forwardRef(({className:e,value:t,...r},o)=>c__namespace.createElement(de__namespace.Root,{ref:o,className:a("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...r},c__namespace.createElement(de__namespace.Indicator,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})));Ft.displayName=de__namespace.Root.displayName;var Ot=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(Y__namespace.Root,{className:a("grid gap-2",e),...t,ref:r}));Ot.displayName=Y__namespace.Root.displayName;var $t=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(Y__namespace.Item,{ref:r,className:a("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),...t},c__namespace.createElement(Y__namespace.Indicator,{className:"flex items-center justify-center"},c__namespace.createElement(lucideReact.Circle,{className:"h-2.5 w-2.5 fill-current text-current"}))));$t.displayName=Y__namespace.Item.displayName;var Gt=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(A__namespace.Root,{ref:o,className:a("relative overflow-hidden",e),...r},c__namespace.createElement(A__namespace.Viewport,{className:"h-full w-full rounded-[inherit]"},t),c__namespace.createElement(He,null),c__namespace.createElement(A__namespace.Corner,null)));Gt.displayName=A__namespace.Root.displayName;var He=c__namespace.forwardRef(({className:e,orientation:t="vertical",...r},o)=>c__namespace.createElement(A__namespace.ScrollAreaScrollbar,{ref:o,orientation:t,className:a("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...r},c__namespace.createElement(A__namespace.ScrollAreaThumb,{className:"relative flex-1 rounded-full bg-border"})));He.displayName=A__namespace.ScrollAreaScrollbar.displayName;var yo=f__namespace.Root,bo=f__namespace.Group,vo=f__namespace.Value,Ut=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(f__namespace.Trigger,{ref:o,className:a("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...r},t,c__namespace.createElement(f__namespace.Icon,{asChild:true},c__namespace.createElement(lucideReact.ChevronDown,{className:"h-4 w-4 opacity-50"}))));Ut.displayName=f__namespace.Trigger.displayName;var Ee=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(f__namespace.ScrollUpButton,{ref:r,className:a("flex cursor-default items-center justify-center py-1",e),...t},c__namespace.createElement(lucideReact.ChevronUp,{className:"h-4 w-4"})));Ee.displayName=f__namespace.ScrollUpButton.displayName;var Ae=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(f__namespace.ScrollDownButton,{ref:r,className:a("flex cursor-default items-center justify-center py-1",e),...t},c__namespace.createElement(lucideReact.ChevronDown,{className:"h-4 w-4"})));Ae.displayName=f__namespace.ScrollDownButton.displayName;var Bt=c__namespace.forwardRef(({className:e,children:t,position:r="popper",...o},i)=>c__namespace.createElement(f__namespace.Portal,null,c__namespace.createElement(f__namespace.Content,{ref:i,className:a("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...o},c__namespace.createElement(Ee,null),c__namespace.createElement(f__namespace.Viewport,{className:a("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]")},t),c__namespace.createElement(Ae,null))));Bt.displayName=f__namespace.Content.displayName;var Wt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(f__namespace.Label,{ref:r,className:a("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...t}));Wt.displayName=f__namespace.Label.displayName;var _t=c__namespace.forwardRef(({className:e,children:t,...r},o)=>c__namespace.createElement(f__namespace.Item,{ref:o,className:a("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...r},c__namespace.createElement("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center"},c__namespace.createElement(f__namespace.ItemIndicator,null,c__namespace.createElement(lucideReact.Check,{className:"h-4 w-4"}))),c__namespace.createElement(f__namespace.ItemText,null,t)));_t.displayName=f__namespace.Item.displayName;var Vt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(f__namespace.Separator,{ref:r,className:a("-mx-1 my-1 h-px bg-muted",e),...t}));Vt.displayName=f__namespace.Separator.displayName;var jt=c__namespace.forwardRef(({className:e,orientation:t="horizontal",decorative:r=true,...o},i)=>c__namespace.createElement(Fe__namespace.Root,{ref:i,decorative:r,orientation:t,className:a("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...o}));jt.displayName=Fe__namespace.Root.displayName;var To=w__namespace.Root,So=w__namespace.Trigger,wo=w__namespace.Close,zt=w__namespace.Portal,Oe=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Overlay,{className:a("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:r}));Oe.displayName=w__namespace.Overlay.displayName;var Po=classVarianceAuthority.cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),Yt=c__namespace.forwardRef(({side:e="right",className:t,children:r,...o},i)=>c__namespace.createElement(zt,null,c__namespace.createElement(Oe,null),c__namespace.createElement(w__namespace.Content,{ref:i,className:a(Po({side:e}),t),...o},r,c__namespace.createElement(w__namespace.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary"},c__namespace.createElement(lucideReact.X,{className:"h-4 w-4"}),c__namespace.createElement("span",{className:"sr-only"},"Close")))));Yt.displayName=w__namespace.Content.displayName;var qt=({className:e,...t})=>c__namespace.createElement("div",{className:a("flex flex-col space-y-2 text-center sm:text-left",e),...t});qt.displayName="SheetHeader";var Jt=({className:e,...t})=>c__namespace.createElement("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Jt.displayName="SheetFooter";var Xt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Title,{ref:r,className:a("text-lg font-semibold text-foreground",e),...t}));Xt.displayName=w__namespace.Title.displayName;var Qt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(w__namespace.Description,{ref:r,className:a("text-sm text-muted-foreground",e),...t}));Qt.displayName=w__namespace.Description.displayName;function Co({className:e,...t}){return React.createElement("div",{className:a("animate-pulse rounded-md bg-muted",e),...t})}var Zt=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(___namespace.Root,{ref:r,className:a("relative flex w-full touch-none select-none items-center",e),...t},c__namespace.createElement(___namespace.Track,{className:"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary"},c__namespace.createElement(___namespace.Range,{className:"absolute h-full bg-primary"})),c__namespace.createElement(___namespace.Thumb,{className:"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"})));Zt.displayName=___namespace.Root.displayName;var er=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(ce__namespace.Root,{className:a("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:r},c__namespace.createElement(ce__namespace.Thumb,{className:a("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})));er.displayName=ce__namespace.Root.displayName;var tr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("div",{className:"relative w-full overflow-auto"},c__namespace.createElement("table",{ref:r,className:a("w-full caption-bottom text-sm",e),...t})));tr.displayName="Table";var rr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("thead",{ref:r,className:a("[&_tr]:border-b",e),...t}));rr.displayName="TableHeader";var or=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("tbody",{ref:r,className:a("[&_tr:last-child]:border-0",e),...t}));or.displayName="TableBody";var ar=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("tfoot",{ref:r,className:a("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t}));ar.displayName="TableFooter";var ir=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("tr",{ref:r,className:a("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));ir.displayName="TableRow";var nr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("th",{ref:r,className:a("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));nr.displayName="TableHead";var sr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("td",{ref:r,className:a("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));sr.displayName="TableCell";var dr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("caption",{ref:r,className:a("mt-4 text-sm text-muted-foreground",e),...t}));dr.displayName="TableCaption";var No=G__namespace.Root,lr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(G__namespace.List,{ref:r,className:a("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...t}));lr.displayName=G__namespace.List.displayName;var cr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(G__namespace.Trigger,{ref:r,className:a("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground",e),...t}));cr.displayName=G__namespace.Trigger.displayName;var pr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement(G__namespace.Content,{ref:r,className:a("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));pr.displayName=G__namespace.Content.displayName;var mr=c__namespace.forwardRef(({className:e,...t},r)=>c__namespace.createElement("textarea",{className:a("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...t}));mr.displayName="Textarea";var $e=K__namespace.Provider,Ge=K__namespace.Root,Ke=K__namespace.Trigger,Se=c__namespace.forwardRef(({className:e,sideOffset:t=4,...r},o)=>c__namespace.createElement(K__namespace.Portal,null,c__namespace.createElement(K__namespace.Content,{ref:o,sideOffset:t,className:a("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",e),...r})));Se.displayName=K__namespace.Content.displayName;var fr=c__namespace.createContext(null);function gr(){let e=c__namespace.useContext(fr);if(!e)throw new Error("SideMenu components must be used within SideMenu");return e}var Lo=({href:e,className:t,children:r})=>c__namespace.createElement("a",{href:e,className:t},r),hr=c__namespace.forwardRef(({header:e,collapsedHeader:t,sections:r,items:o,footer:i,collapsed:n,onCollapsedChange:s,collapsible:g=true,defaultCollapsed:l=false,activeItem:x,className:S,linkComponent:k=Lo},R)=>{let[O,Z]=c__namespace.useState(l),d=n??O,C=()=>{let I=!d;Z(I),s?.(I);};return c__namespace.createElement($e,{delayDuration:0},c__namespace.createElement(fr.Provider,{value:{collapsed:d,activeItem:x,LinkComponent:k}},c__namespace.createElement("aside",{ref:R,className:a("flex h-full flex-col transition-[width] duration-300 ease-in-out","bg-white dark:bg-[#141414] border-r border-rds-gray-200 dark:border-[#1a1a1a]",d?"w-16":"w-64",S)},c__namespace.createElement("div",{className:a("flex items-center border-b border-rds-gray-200 dark:border-[#1a1a1a] flex-shrink-0 h-12",d?"justify-center px-2":"justify-between px-3")},d&&t||e,g&&c__namespace.createElement("button",{onClick:C,className:a("rounded-md h-5 w-5 flex items-center justify-center","text-rds-gray-400 dark:text-rds-gray-500","hover:text-rds-gray-600 dark:hover:text-rds-gray-300 transition-colors","bg-white dark:bg-[#141414] border border-rds-gray-200 dark:border-rds-gray-700 shadow-sm",d&&"absolute left-[calc(4rem-10px)] top-6 -translate-y-1/2 z-50"),"aria-label":d?"Expand sidebar":"Collapse sidebar"},d?c__namespace.createElement(lucideReact.ChevronRight,{className:"h-3 w-3"}):c__namespace.createElement(lucideReact.ChevronLeft,{className:"h-3 w-3"}))),c__namespace.createElement("nav",{className:"flex-1 py-2 overflow-y-auto overflow-x-hidden"},o&&o.length>0&&c__namespace.createElement("div",{className:"px-2 mb-1 space-y-0.5"},o.map(I=>c__namespace.createElement(Ue,{key:I.id,item:I}))),r?.map(I=>c__namespace.createElement(Do,{key:I.id,section:I}))),i&&c__namespace.createElement("div",{className:"flex-shrink-0 border-t border-rds-gray-200 dark:border-[#1a1a1a] p-2"},i))))});hr.displayName="SideMenu";function Do({section:e}){let{collapsed:t}=gr(),[r,o]=c__namespace.useState(e.defaultExpanded??true);return t?c__namespace.createElement("div",{className:"px-2 mb-1 space-y-0.5"},e.items.map(i=>c__namespace.createElement(Ue,{key:i.id,item:i}))):c__namespace.createElement("div",{className:"px-2 mb-1"},c__namespace.createElement("button",{onClick:()=>o(!r),className:a("flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm font-medium","text-rds-gray-700 dark:text-rds-gray-300","hover:bg-rds-gray-50 dark:hover:bg-rds-gray-900","hover:text-rds-gray-900 dark:hover:text-white transition-colors")},e.icon&&c__namespace.createElement("span",{className:"h-3.5 w-3.5 flex-shrink-0"},e.icon),c__namespace.createElement("span",{className:"flex-1 text-left"},e.title),r?c__namespace.createElement(lucideReact.ChevronDown,{className:"h-3 w-3",strokeWidth:1.5}):c__namespace.createElement(lucideReact.ChevronRight,{className:"h-3 w-3",strokeWidth:1.5})),r&&c__namespace.createElement("div",{className:"mt-0.5 space-y-0.5 relative pl-5"},c__namespace.createElement("div",{className:"absolute left-[1.1rem] top-0 bottom-0 w-px bg-rds-gray-200 dark:bg-rds-gray-700"}),e.items.map(i=>c__namespace.createElement(Ue,{key:i.id,item:i,nested:true}))))}function Ue({item:e,nested:t=false}){let{collapsed:r,activeItem:o,LinkComponent:i}=gr(),n=o===e.id,s=a("flex items-center gap-2.5 rounded-md text-sm font-medium transition-colors",r?"justify-center px-2 py-2.5":"px-2 py-1.5",n?t?"bg-rds-gray-100 dark:bg-[#1a1a1a] text-rds-gray-900 dark:text-white":"bg-rds-green-50 dark:bg-rds-green-950 text-rds-green-700 dark:text-rds-green-400":"text-rds-gray-700 dark:text-rds-gray-300 hover:bg-rds-gray-50 dark:hover:bg-rds-gray-900 hover:text-rds-gray-900 dark:hover:text-white",e.disabled&&"opacity-50 pointer-events-none"),g=c__namespace.createElement(c__namespace.Fragment,null,e.icon&&c__namespace.createElement("span",{className:a("flex-shrink-0",r?"h-5 w-5":"h-3.5 w-3.5")},e.icon),!r&&c__namespace.createElement("span",null,e.label),!r&&e.badge&&c__namespace.createElement("span",{className:"ml-auto text-xs bg-rds-gray-100 dark:bg-rds-gray-800 px-1.5 py-0.5 rounded"},e.badge)),l=e.href?c__namespace.createElement(i,{href:e.href,className:s},g):c__namespace.createElement("button",{onClick:e.onClick,disabled:e.disabled,className:a(s,"w-full")},g);return r?c__namespace.createElement(Ge,null,c__namespace.createElement(Ke,{asChild:true},l),c__namespace.createElement(Se,{side:"right",sideOffset:8},e.label)):l}var Ho=({href:e,className:t,children:r})=>c__namespace.createElement("a",{href:e,className:t},r),yr=c__namespace.forwardRef(({breadcrumbs:e=[],showMobileMenu:t=false,onMobileMenuClick:r,leftContent:o,rightContent:i,className:n,linkComponent:s=Ho},g)=>c__namespace.createElement("header",{ref:g,className:a("sticky top-0 z-30 flex h-12 items-center gap-3","border-b border-rds-gray-200 dark:border-[#1a1a1a]","bg-white dark:bg-[#141414] px-4",n)},t&&c__namespace.createElement("button",{onClick:r,className:"lg:hidden rounded-md p-1.5 text-rds-gray-600 hover:bg-rds-gray-100 dark:text-rds-gray-400 dark:hover:bg-rds-gray-800","aria-label":"Toggle menu"},c__namespace.createElement(lucideReact.Menu,{className:"h-4 w-4"})),e.length>0&&c__namespace.createElement("nav",{className:"hidden md:flex items-center gap-1.5 text-sm","aria-label":"Breadcrumb"},e.map((l,x)=>c__namespace.createElement(c__namespace.Fragment,{key:x},x>0&&c__namespace.createElement("span",{className:"text-rds-gray-400 dark:text-rds-gray-500 text-xs"},"/"),l.href?c__namespace.createElement(s,{href:l.href,className:"text-rds-gray-600 dark:text-rds-gray-400 hover:text-rds-gray-900 dark:hover:text-white transition-colors text-sm"},l.label):c__namespace.createElement("span",{className:"text-rds-gray-900 dark:text-white font-medium text-sm"},l.label)))),o,c__namespace.createElement("div",{className:"flex-1"}),i&&c__namespace.createElement("div",{className:"flex items-center gap-1.5"},i)));yr.displayName="TopMenu";var br=c__namespace.forwardRef(({name:e,email:t,avatarUrl:r,avatarContent:o,avatarClassName:i,children:n,className:s},g)=>{let[l,x]=c__namespace.useState(false),S=c__namespace.useRef(null);return c__namespace.useEffect(()=>{let k=R=>{S.current&&!S.current.contains(R.target)&&x(false);};return l&&document.addEventListener("mousedown",k),()=>{document.removeEventListener("mousedown",k);}},[l]),c__namespace.createElement("div",{ref:g,className:a("relative",s)},c__namespace.createElement("div",{ref:S},c__namespace.createElement("button",{onClick:()=>x(!l),className:"flex items-center gap-1.5 rounded-full p-0.5 hover:ring-2 hover:ring-rds-green-500 hover:ring-offset-2 dark:hover:ring-offset-[#141414] transition-all","aria-label":"Account menu"},c__namespace.createElement("div",{className:a("h-8 w-8 rounded-full overflow-hidden flex items-center justify-center",i||"bg-gradient-to-br from-rds-yellow-400 to-rds-yellow-600")},r?c__namespace.createElement("img",{src:r,alt:e||"User",className:"h-full w-full object-cover"}):o)),l&&c__namespace.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg border border-rds-gray-200 dark:border-[#1a1a1a] bg-white dark:bg-[#141414] shadow-lg overflow-hidden z-50"},(e||t)&&c__namespace.createElement("div",{className:"px-4 py-3 border-b border-rds-gray-200 dark:border-[#1a1a1a]"},c__namespace.createElement("div",{className:"flex items-center gap-3"},c__namespace.createElement("div",{className:a("h-10 w-10 rounded-full overflow-hidden flex items-center justify-center",i||"bg-gradient-to-br from-rds-yellow-400 to-rds-yellow-600")},r?c__namespace.createElement("img",{src:r,alt:e||"User",className:"h-full w-full object-cover"}):o),c__namespace.createElement("div",{className:"flex-1 min-w-0"},e&&c__namespace.createElement("p",{className:"text-sm font-medium text-rds-gray-900 dark:text-white truncate"},e),t&&c__namespace.createElement("p",{className:"text-xs text-rds-gray-500 dark:text-rds-gray-400 truncate"},t)))),n)))});br.displayName="TopMenuUser";var vr=c__namespace.forwardRef(({icon:e,children:t,onClick:r,href:o,variant:i="default",className:n},s)=>c__namespace.createElement(o?"a":"button",{ref:s,onClick:r,href:o,className:a("w-full flex items-center gap-3 px-4 py-2 text-sm transition-colors",{default:"text-rds-gray-700 dark:text-rds-gray-300 hover:bg-rds-gray-50 dark:hover:bg-[#1a1a1a]",danger:"text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-950/20",success:"text-rds-green-600 dark:text-rds-green-400 hover:bg-rds-green-50 dark:hover:bg-rds-green-950/20"}[i],n)},e&&c__namespace.createElement("span",{className:"h-4 w-4"},e),c__namespace.createElement("span",null,t)));vr.displayName="TopMenuUserItem";var xr=c__namespace.forwardRef(({children:e,className:t},r)=>c__namespace.createElement("div",{ref:r,className:a("py-1 border-t border-rds-gray-200 dark:border-[#1a1a1a] first:border-t-0",t)},e));xr.displayName="TopMenuUserSection";var Be=c__namespace.createContext(null);function We(){let e=c__namespace.useContext(Be);if(!e)throw new Error("SimpleTabsPanel must be used within SimpleTabs");return e}var Rr=c__namespace.forwardRef(({tabs:e,activeTab:t,defaultTab:r,onTabChange:o,children:i,className:n,tabsClassName:s},g)=>{let[l,x]=c__namespace.useState(r||e[0]?.id||""),S=t??l,k=R=>{x(R),o?.(R);};return c__namespace.createElement(Be.Provider,{value:{activeTab:S,setActiveTab:k}},c__namespace.createElement("div",{ref:g,className:a("space-y-6",n)},c__namespace.createElement("div",{className:"border-b border-rds-gray-200 dark:border-rds-gray-800"},c__namespace.createElement("nav",{className:a("-mb-px flex gap-1 overflow-x-auto scrollbar-hide",s),"aria-label":"Tabs"},e.map(R=>{let O=S===R.id;return c__namespace.createElement("button",{key:R.id,onClick:()=>!R.disabled&&k(R.id),disabled:R.disabled,className:a("relative flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors whitespace-nowrap",O?"text-primary":"text-muted-foreground hover:text-foreground",R.disabled&&"opacity-50 cursor-not-allowed")},R.icon&&c__namespace.createElement("span",{className:"h-4 w-4"},R.icon),R.label,O&&c__namespace.createElement("span",{className:"absolute bottom-0 left-0 right-0 h-0.5 bg-primary","aria-hidden":"true"}))}))),i&&c__namespace.createElement("div",null,i)))});Rr.displayName="SimpleTabs";var Tr=c__namespace.forwardRef(({id:e,children:t,className:r},o)=>{let{activeTab:i}=We();return i!==e?null:c__namespace.createElement("div",{ref:o,role:"tabpanel","aria-labelledby":`tab-${e}`,className:r},t)});Tr.displayName="SimpleTabsPanel";var Sr=c__namespace.forwardRef(({activeTab:e,defaultTab:t,onTabChange:r,children:o,className:i},n)=>{let[s,g]=c__namespace.useState(t||""),l=e??s,x=S=>{g(S),r?.(S);};return c__namespace.createElement(Be.Provider,{value:{activeTab:l,setActiveTab:x}},c__namespace.createElement("div",{ref:n,className:a("space-y-6",i)},o))});Sr.displayName="SimpleTabsRoot";var wr=c__namespace.forwardRef(({children:e,className:t},r)=>c__namespace.createElement("div",{ref:r,className:"border-b border-rds-gray-200 dark:border-rds-gray-800"},c__namespace.createElement("nav",{className:a("-mb-px flex gap-1 overflow-x-auto scrollbar-hide",t),role:"tablist","aria-label":"Tabs"},e)));wr.displayName="SimpleTabsList";var Pr=c__namespace.forwardRef(({value:e,children:t,icon:r,disabled:o,className:i},n)=>{let{activeTab:s,setActiveTab:g}=We(),l=s===e;return c__namespace.createElement("button",{ref:n,role:"tab",id:`tab-${e}`,"aria-selected":l,"aria-controls":`panel-${e}`,onClick:()=>!o&&g(e),disabled:o,className:a("relative flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors whitespace-nowrap",l?"text-primary":"text-muted-foreground hover:text-foreground",o&&"opacity-50 cursor-not-allowed",i)},r&&c__namespace.createElement("span",{className:"h-4 w-4"},r),t,l&&c__namespace.createElement("span",{className:"absolute bottom-0 left-0 right-0 h-0.5 bg-primary","aria-hidden":"true"}))});Pr.displayName="SimpleTabsTrigger";var Cr=c__namespace.forwardRef(({value:e,children:t,className:r},o)=>{let{activeTab:i}=We();return i!==e?null:c__namespace.createElement("div",{ref:o,role:"tabpanel",id:`panel-${e}`,"aria-labelledby":`tab-${e}`,className:r},t)});Cr.displayName="SimpleTabsContent";function Oo({children:e}){let t=c.useRef(null);return c.useEffect(()=>{let r=new Fo__default.default({duration:1.2,easing:i=>Math.min(1,1.001-Math.pow(2,-10*i)),orientation:"vertical",gestureOrientation:"vertical",smoothWheel:true});t.current=r;function o(i){r.raf(i),requestAnimationFrame(o);}return requestAnimationFrame(o),()=>{r.destroy(),t.current=null;}},[]),React.createElement(React.Fragment,null,e)}var J=[50,100,200,300,400,500,600,700,800,900,950],Nr=[.985,.955,.895,.82,.72,.61,.51,.415,.325,.245,.17],$o=[.015,.04,.075,.11,.14,.17,.17,.15,.12,.08,.04];function we({hue:e,chromaScale:t=1}){let r=(e%360+360)%360,o={};for(let i=0;i<J.length;i++){let n=Nr[i],s=$o[i]*t;o[J[i]]=`${n.toFixed(4)} ${s.toFixed(4)} ${r.toFixed(2)}`;}return o}function kr(){let e={};for(let t=0;t<J.length;t++){let r=Nr[t];e[J[t]]=`${r.toFixed(4)} 0 0`;}return e}var _e={light:{destructive:"0.560 0.220 27.0",destructiveFg:"0.990 0.005 27.0",success:"0.610 0.180 145.0",warning:"0.720 0.180 60.0",info:"0.580 0.200 240.0",highlight:"0.860 0.180 95.0"},dark:{destructive:"0.680 0.220 27.0",destructiveFg:"0.990 0.005 27.0",success:"0.720 0.180 145.0",warning:"0.800 0.180 60.0",info:"0.700 0.200 240.0",highlight:"0.880 0.180 95.0"}},me="1 0 0",Mr="0 0 0";var Pe={geist:"var(--font-geist), system-ui, sans-serif",inter:"var(--font-inter), system-ui, sans-serif",manrope:"var(--font-manrope), system-ui, sans-serif",figtree:"var(--font-figtree), system-ui, sans-serif",dmSans:"var(--font-dm-sans), system-ui, sans-serif",lexend:"var(--font-lexend), system-ui, sans-serif",outfit:"var(--font-outfit), system-ui, sans-serif",plusJakarta:"var(--font-plus-jakarta), system-ui, sans-serif",spaceGrotesk:"var(--font-space-grotesk), system-ui, sans-serif",fraunces:"var(--font-fraunces), Georgia, serif",instrumentSerif:"var(--font-instrument-serif), Georgia, serif",sourceSerif:"var(--font-source-serif), Georgia, serif",jetbrainsMono:"var(--font-jetbrains-mono), ui-monospace, monospace",geistMono:"var(--font-geist-mono), ui-monospace, monospace",ibmPlexMono:"var(--font-ibm-plex-mono), ui-monospace, monospace",system:"system-ui, -apple-system, sans-serif",serif:"Georgia, 'Times New Roman', serif",mono:"ui-monospace, Menlo, monospace"};var Go=["superLight","light","dark","superDark"],Ko={muted:.6,default:1,vibrant:1.3};function Uo(e,t,r){let o=t.primary*r,i=t.accent*r,n=(o+i)/2*.8,s=g=>(g%360+360)%360;return {1:`0.600 ${(.17*o).toFixed(4)} ${e.primary.toFixed(2)}`,2:`0.640 ${(.17*n).toFixed(4)} ${s(e.primary+140).toFixed(2)}`,3:`0.580 ${(.17*n).toFixed(4)} ${s(e.primary+220).toFixed(2)}`,4:`0.510 0.0250 ${e.neutral.toFixed(2)}`,5:`0.620 ${(.17*i).toFixed(4)} ${e.accent.toFixed(2)}`}}var p=e=>({source:"neutral",step:e}),F=e=>({source:"primary",step:e}),X=e=>({source:"accent",step:e}),ue=e=>({source:"pure",value:e}),Bo={superLight:{background:p(50),foreground:p(800),card:ue(me),cardForeground:p(800),popover:ue(me),popoverForeground:p(800),primary:F(600),primaryForeground:F(50),secondary:p(100),secondaryForeground:p(700),muted:p(100),mutedForeground:p(500),accent:X(600),accentForeground:X(50),border:p(200),input:p(200),ring:F(500)},light:{background:p(50),foreground:p(950),card:ue(me),cardForeground:p(950),popover:ue(me),popoverForeground:p(950),primary:F(500),primaryForeground:F(50),secondary:p(100),secondaryForeground:p(700),muted:p(100),mutedForeground:p(500),accent:X(500),accentForeground:X(50),border:p(200),input:p(200),ring:F(500)},dark:{background:p(950),foreground:p(50),card:p(900),cardForeground:p(50),popover:p(900),popoverForeground:p(50),primary:F(400),primaryForeground:F(950),secondary:p(800),secondaryForeground:p(200),muted:p(800),mutedForeground:p(400),accent:X(400),accentForeground:X(950),border:p(800),input:p(800),ring:F(400)},superDark:{background:ue(Mr),foreground:p(100),card:p(950),cardForeground:p(100),popover:p(950),popoverForeground:p(100),primary:F(300),primaryForeground:F(950),secondary:p(900),secondaryForeground:p(300),muted:p(900),mutedForeground:p(500),accent:X(300),accentForeground:X(950),border:p(900),input:p(900),ring:F(300)}};function D(e,t){return e.source==="pure"?e.value:t[e.source][e.step]}function Wo(e,t){let r=Bo[t],i=t==="superLight"||t==="light"?_e.light:_e.dark;return {background:D(r.background,e),foreground:D(r.foreground,e),card:D(r.card,e),cardForeground:D(r.cardForeground,e),popover:D(r.popover,e),popoverForeground:D(r.popoverForeground,e),primary:D(r.primary,e),primaryForeground:D(r.primaryForeground,e),secondary:D(r.secondary,e),secondaryForeground:D(r.secondaryForeground,e),muted:D(r.muted,e),mutedForeground:D(r.mutedForeground,e),accent:D(r.accent,e),accentForeground:D(r.accentForeground,e),border:D(r.border,e),input:D(r.input,e),ring:D(r.ring,e),destructive:i.destructive,destructiveForeground:i.destructiveFg,success:i.success,warning:i.warning,info:i.info,highlight:i.highlight}}var V={display:3.75,h1:2.5,h2:2,h3:1.5,h4:1.25,h5:1.125,h6:1,body:1,bodySm:.875},_o={compact:.85,default:1,spacious:1.18};function Vo(e){let t=_o[e.scale],r=o=>`${(o*t).toFixed(3)}rem`;return {fontSans:Pe[e.body],fontMono:Pe[e.mono],fontDisplay:Pe[e.display],headingWeight:e.headingWeight??600,bodyWeight:e.bodyWeight??400,headingTracking:e.headingTracking??"-0.01em",scale:{display:r(V.display),h1:r(V.h1),h2:r(V.h2),h3:r(V.h3),h4:r(V.h4),h5:r(V.h5),h6:r(V.h6),body:r(V.body),bodySm:r(V.bodySm)}}}var jo={sharp:0,subtle:.25,soft:.5,round:.875,pill:1.25};function zo(e){let t=jo[e.style],r=o=>`${o.toFixed(3)}rem`;return {base:r(t),sm:r(Math.max(0,t-.25)),md:r(t),lg:r(t+.25),xl:r(t+.5),"2xl":r(t+1),full:"9999px"}}var Yo={tight:.85,default:1,roomy:1.2};function qo(e){return {baseUnit:"1rem",densityFactor:Yo[e.density]}}var Jo={none:{sm:"none",md:"none",lg:"none",xl:"none","2xl":"none",inner:"none"},subtle:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.03)",md:"0 2px 4px -1px rgb(0 0 0 / 0.04), 0 1px 2px -1px rgb(0 0 0 / 0.03)",lg:"0 6px 14px -2px rgb(0 0 0 / 0.05)",xl:"0 12px 24px -4px rgb(0 0 0 / 0.06)","2xl":"0 24px 48px -12px rgb(0 0 0 / 0.12)",inner:"inset 0 1px 2px 0 rgb(0 0 0 / 0.03)"},default:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"},dramatic:{sm:"0 2px 4px 0 rgb(0 0 0 / 0.12)",md:"0 8px 16px -2px rgb(0 0 0 / 0.18), 0 4px 8px -4px rgb(0 0 0 / 0.12)",lg:"0 20px 32px -4px rgb(0 0 0 / 0.22), 0 8px 16px -8px rgb(0 0 0 / 0.18)",xl:"0 32px 48px -6px rgb(0 0 0 / 0.28), 0 12px 24px -10px rgb(0 0 0 / 0.22)","2xl":"0 48px 80px -16px rgb(0 0 0 / 0.45)",inner:"inset 0 4px 8px 0 rgb(0 0 0 / 0.1)"}};function Xo(e){let t=e?.shadows??"default",r=e?.motionIntensity??1,o=i=>`${Math.round(i*r)}ms`;return {shadows:Jo[t],motion:{fast:o(150),base:o(200),slow:o(300),slower:o(500)},borderWidth:e?.borderWidth??"1px"}}function te(e){let t=Ko[e.intensity??"default"],r=e.neutralPureGray??false,o=(e.chroma?.neutral??.08)*t,i=(e.chroma?.primary??1)*t,n=(e.chroma?.accent??1)*t,s=r?kr():we({hue:e.hues.neutral,chromaScale:o}),g=we({hue:e.hues.primary,chromaScale:i}),l=we({hue:e.hues.accent,chromaScale:n}),x={neutral:s,primary:g,accent:l},S=Uo(e.hues,{primary:i,accent:n},t),k=Object.fromEntries(Go.map(I=>[I,Wo(x,I)])),R=Vo(e.typography),O=zo(e.radius),Z=qo(e.spacing),d=Xo(e.effects),C={buttonShape:e.components?.buttonShape??"default",inputStyle:e.components?.inputStyle??"outlined",cardStyle:e.components?.cardStyle??"flat"};return {id:e.id,name:e.name,description:e.description,tagline:e.tagline,input:e,ramps:x,colors:k,chart:S,typography:R,radius:O,spacing:Z,effects:d,components:C}}var fe={id:"calm",name:"Calm",description:"Warm neutrals, terracotta primary, serif typography.",tagline:"Signature",hues:{neutral:40,primary:20,accent:40},chroma:{neutral:.15,primary:.75,accent:.8},intensity:"muted",typography:{display:"fraunces",body:"fraunces",mono:"jetbrainsMono",scale:"default",headingWeight:600,headingTracking:"-0.02em"},spacing:{density:"roomy"},radius:{style:"round"},effects:{shadows:"subtle",motionIntensity:1.25},components:{buttonShape:"pill",inputStyle:"outlined",cardStyle:"outlined"}},Ve={id:"energy",name:"Energy",description:"Teal + indigo \u2014 punchy, cool-tone, modern sans.",tagline:"Alternate",hues:{neutral:175,primary:175,accent:235},chroma:{neutral:.08,primary:1,accent:1},intensity:"vibrant",typography:{display:"geist",body:"geist",mono:"geistMono",scale:"default",headingWeight:600},spacing:{density:"default"},radius:{style:"soft"},effects:{shadows:"default",motionIntensity:1},components:{buttonShape:"default",inputStyle:"outlined",cardStyle:"flat"}},Ce=[fe,Ve];function Qo(e){return {"--background":e.background,"--foreground":e.foreground,"--card":e.card,"--card-foreground":e.cardForeground,"--popover":e.popover,"--popover-foreground":e.popoverForeground,"--primary":e.primary,"--primary-foreground":e.primaryForeground,"--secondary":e.secondary,"--secondary-foreground":e.secondaryForeground,"--muted":e.muted,"--muted-foreground":e.mutedForeground,"--accent":e.accent,"--accent-foreground":e.accentForeground,"--destructive":e.destructive,"--destructive-foreground":e.destructiveForeground,"--border":e.border,"--input":e.input,"--ring":e.ring,"--success":e.success,"--warning":e.warning,"--info":e.info,"--highlight":e.highlight}}function ze(e,t){let r=e.colors[t];return {...Qo(r),...je("neutral",e.ramps.neutral),...je("primary",e.ramps.primary),...je("accent",e.ramps.accent),"--chart-1":e.chart[1],"--chart-2":e.chart[2],"--chart-3":e.chart[3],"--chart-4":e.chart[4],"--chart-5":e.chart[5],"--font-sans":e.typography.fontSans,"--font-mono":e.typography.fontMono,"--font-display":e.typography.fontDisplay,"--font-heading-weight":String(e.typography.headingWeight),"--font-body-weight":String(e.typography.bodyWeight),"--font-heading-tracking":e.typography.headingTracking,"--text-display":e.typography.scale.display,"--text-h1":e.typography.scale.h1,"--text-h2":e.typography.scale.h2,"--text-h3":e.typography.scale.h3,"--text-h4":e.typography.scale.h4,"--text-h5":e.typography.scale.h5,"--text-h6":e.typography.scale.h6,"--text-body":e.typography.scale.body,"--text-body-sm":e.typography.scale.bodySm,"--radius":e.radius.base,"--rds-radius-sm":e.radius.sm,"--rds-radius-md":e.radius.md,"--rds-radius-lg":e.radius.lg,"--rds-radius-xl":e.radius.xl,"--rds-radius-2xl":e.radius["2xl"],"--rds-radius-full":e.radius.full,"--rds-density":String(e.spacing.densityFactor),"--rds-shadow-sm":e.effects.shadows.sm,"--rds-shadow-md":e.effects.shadows.md,"--rds-shadow-lg":e.effects.shadows.lg,"--rds-shadow-xl":e.effects.shadows.xl,"--rds-shadow-2xl":e.effects.shadows["2xl"],"--rds-shadow-inner":e.effects.shadows.inner,"--rds-transition-fast":e.effects.motion.fast,"--rds-transition-base":e.effects.motion.base,"--rds-transition-slow":e.effects.motion.slow,"--rds-transition-slower":e.effects.motion.slower,"--rds-border-width":e.effects.borderWidth}}function je(e,t){let r={};for(let o of J)r[`--ramp-${e}-${o}`]=t[o];return r}function Ne(e,t){if(typeof document>"u")return;let r=document.documentElement,o=ze(e,t);for(let[i,n]of Object.entries(o))r.style.setProperty(i,n);r.setAttribute("data-ramp-theme",e.id),r.setAttribute("data-mode",t),r.setAttribute("data-button-shape",e.components.buttonShape??"default"),r.setAttribute("data-input-style",e.components.inputStyle??"outlined"),r.setAttribute("data-card-style",e.components.cardStyle??"flat");}function ge(e){if(typeof document>"u")return "";let t=document.createElement("span");t.style.color=`oklch(${e})`,t.style.position="absolute",t.style.visibility="hidden",document.body.appendChild(t);let r=getComputedStyle(t).color;document.body.removeChild(t);let o=r.match(/\d+/g);if(!o||o.length<3)return "";let[i,n,s]=o.slice(0,3).map(Number);return "#"+[i,n,s].map(g=>Math.max(0,Math.min(255,g)).toString(16).padStart(2,"0")).join("").toUpperCase()}function Zo(e){let t=e.trim().split(/\s+/);if(t.length<3)return {oklch:e,hex:""};let[r,o,i]=t.map(Number),n=`${r.toFixed(3)} ${o.toFixed(3)} ${Math.round(i)}`,s=ge(e);return {oklch:n,hex:s}}function Ye(e,t,r){let o=[`### ${e} ramp (hue ${Math.round(r)}\xB0)`,"","| Step | OKLCH | Hex |","|------|-------|-----|"];for(let i of J){let{oklch:n,hex:s}=Zo(t[i]);o.push(`| ${i} | \`${n}\` | \`${s||"\u2014"}\` |`);}return o.join(`
2
+ `)}function Lr(e,t){let r=[`### ${e}`,"","| Token | Usage | Light (hex) | Dark (hex) |","|-------|-------|-------------|------------|"];for(let o of t){let i=ge(o.light)||"\u2014",n=ge(o.dark)||"\u2014";r.push(`| \`--${o.token}\` | ${o.usage} | \`${i}\` (\`${o.light}\`) | \`${n}\` (\`${o.dark}\`) |`);}return r.join(`
3
+ `)}function Dr(e){return JSON.stringify(e.input,null,2)}function Ir(e){let{input:t,ramps:r,colors:o,chart:i,typography:n,radius:s,spacing:g,effects:l,components:x}=e,S=t.intensity??"default",k=d=>({token:d,usage:ea[d]??"",light:o.light[d],dark:o.dark[d]}),R=["background","foreground","card","cardForeground","popover","popoverForeground","primary","primaryForeground","secondary","secondaryForeground","muted","mutedForeground","accent","accentForeground","border","input","ring"].map(k),O=["destructive","destructiveForeground","success","warning","info","highlight"].map(k),Z=[1,2,3,4,5].map(d=>{let C=i[d];return {slot:d,triplet:C,hex:ge(C)||"\u2014"}});return `# ${e.name} \u2014 Grade Design System Theme
4
+
5
+ > **Portable theme spec.** Paste this entire file into a fresh LLM prompt along with your design brief. The model will have everything it needs to produce UI that matches this exact theme \u2014 colors, typography, spacing, shapes, and the "feel" we're after.
6
+
7
+ ## At a glance
8
+
9
+ - **Name**: ${e.name}
10
+ - **ID**: \`${t.id}\`
11
+ ${t.description?`- **Description**: ${t.description}
12
+ `:""}- **Hues**: neutral \`${t.hues.neutral}\xB0\` \xB7 primary \`${t.hues.primary}\xB0\` \xB7 accent \`${t.hues.accent}\xB0\`
13
+ - **Intensity**: \`${S}\` ${S==="muted"?"(quieter chroma across the board)":S==="vibrant"?"(punchier chroma across the board)":"(balanced)"}
14
+ - **Typography**: ${t.typography.display} display \xB7 ${t.typography.body} body \xB7 ${t.typography.mono} mono \xB7 scale \`${t.typography.scale}\`
15
+ - **Spacing density**: \`${t.spacing.density}\`
16
+ - **Radius style**: \`${t.radius.style}\` (base \`${s.base}\`)
17
+ - **Button shape**: \`${x.buttonShape}\` \xB7 **Input style**: \`${x.inputStyle}\` \xB7 **Card style**: \`${x.cardStyle}\`
18
+ - **Shadow preset**: \`${t.effects?.shadows??"default"}\` \xB7 **Motion intensity**: \`${t.effects?.motionIntensity??1}\`
19
+
20
+ ## How themes work
21
+
22
+ Every theme in Ramp DS is produced by a pure function:
23
+
24
+ \`\`\`ts
25
+ generateTheme(input: ThemeInput) => GeneratedTheme
26
+ \`\`\`
27
+
28
+ A \`ThemeInput\` is a small object (three hues plus a handful of presets). The generator turns it into three 11-stop **OKLCH** color ramps, semantic tokens for four brightness modes (superLight / light / dark / superDark), a chart palette, and concrete values for typography, radius, spacing, and effects. Everything downstream reads from CSS variables set on \`:root\`.
29
+
30
+ ## Full ThemeInput (round-trippable)
31
+
32
+ \`\`\`json
33
+ ${Dr(e)}
34
+ \`\`\`
35
+
36
+ ## Color ramps
37
+
38
+ Three 11-stop OKLCH ramps, generated from the input hues + chromas + global intensity. Every color elsewhere in the theme resolves back to one of these stops.
39
+
40
+ ${Ye("Neutral",r.neutral,t.hues.neutral)}
41
+
42
+ ${Ye("Primary",r.primary,t.hues.primary)}
43
+
44
+ ${Ye("Accent",r.accent,t.hues.accent)}
45
+
46
+ ## Semantic tokens (hue-derived)
47
+
48
+ Purpose-based tokens drawn from the ramps. Two values per token \u2014 the generator produces them for all four brightness modes, but only light + dark are shown here for brevity.
49
+
50
+ ${Lr("Core semantic tokens",R)}
51
+
52
+ ## Fixed semantic tokens (not hue-derived)
53
+
54
+ Status colors stay consistent across themes so users always read green as success, red as destructive, etc. Accessibility wins over brand cohesion.
55
+
56
+ ${Lr("Status colors",O)}
57
+
58
+ ## Chart palette
59
+
60
+ 5-stop categorical palette derived from theme hues. Primary leads, then two hue-rotated variants, then neutral, then accent. Adjacent slots are guaranteed to be visually distinct.
61
+
62
+ | Slot | OKLCH | Hex |
63
+ |------|-------|-----|
64
+ ${Z.map(d=>`| \`--chart-${d.slot}\` | \`${d.triplet}\` | \`${d.hex}\` |`).join(`
65
+ `)}
66
+
67
+ ## Typography
68
+
69
+ - **Display font**: \`${n.fontDisplay}\`
70
+ - **Body font**: \`${n.fontSans}\`
71
+ - **Mono font**: \`${n.fontMono}\`
72
+ - **Heading weight**: \`${n.headingWeight}\`
73
+ - **Body weight**: \`${n.bodyWeight}\`
74
+ - **Heading letter-spacing**: \`${n.headingTracking}\`
75
+
76
+ ### Type scale
77
+
78
+ | Step | Size |
79
+ |------|------|
80
+ | \`text-display\` | \`${n.scale.display}\` |
81
+ | \`text-h1\` | \`${n.scale.h1}\` |
82
+ | \`text-h2\` | \`${n.scale.h2}\` |
83
+ | \`text-h3\` | \`${n.scale.h3}\` |
84
+ | \`text-h4\` | \`${n.scale.h4}\` |
85
+ | \`text-h5\` | \`${n.scale.h5}\` |
86
+ | \`text-h6\` | \`${n.scale.h6}\` |
87
+ | body | \`${n.scale.body}\` |
88
+ | body-sm | \`${n.scale.bodySm}\` |
89
+
90
+ ## Radius, spacing, effects
91
+
92
+ ### Radius
93
+
94
+ | Step | Value |
95
+ |------|-------|
96
+ | \`--radius\` (base) | \`${s.base}\` |
97
+ | \`--rds-radius-sm\` | \`${s.sm}\` |
98
+ | \`--rds-radius-md\` | \`${s.md}\` |
99
+ | \`--rds-radius-lg\` | \`${s.lg}\` |
100
+ | \`--rds-radius-xl\` | \`${s.xl}\` |
101
+ | \`--rds-radius-2xl\` | \`${s["2xl"]}\` |
102
+ | \`--rds-radius-full\` | \`${s.full}\` |
103
+
104
+ ### Spacing
105
+
106
+ - **Density factor**: \`${g.densityFactor}\` (applied as \`var(--rds-density)\` on components that opt in)
107
+ - **Base unit**: \`${g.baseUnit}\`
108
+
109
+ ### Motion
110
+
111
+ | Var | Duration |
112
+ |-----|----------|
113
+ | \`--rds-transition-fast\` | \`${l.motion.fast}\` |
114
+ | \`--rds-transition-base\` | \`${l.motion.base}\` |
115
+ | \`--rds-transition-slow\` | \`${l.motion.slow}\` |
116
+ | \`--rds-transition-slower\` | \`${l.motion.slower}\` |
117
+
118
+ ### Shadows
119
+
120
+ All shadows are applied via Tailwind's \`shadow-*\` utilities mapped to these var values.
121
+
122
+ | Var | Value |
123
+ |-----|-------|
124
+ | \`--rds-shadow-sm\` | \`${l.shadows.sm}\` |
125
+ | \`--rds-shadow-md\` | \`${l.shadows.md}\` |
126
+ | \`--rds-shadow-lg\` | \`${l.shadows.lg}\` |
127
+ | \`--rds-shadow-xl\` | \`${l.shadows.xl}\` |
128
+
129
+ ## CSS variable conventions
130
+
131
+ Every color is stored as a bare \`L C H\` OKLCH triplet and wrapped at call time:
132
+
133
+ \`\`\`css
134
+ :root {
135
+ --primary: ${o.light.primary};
136
+ --background: ${o.light.background};
137
+ }
138
+ \`\`\`
139
+
140
+ Tailwind config wraps these with \`oklch(var(--x) / <alpha-value>)\` so Tailwind's opacity shortcuts work:
141
+
142
+ \`\`\`html
143
+ <div class="bg-primary text-primary-foreground">...</div>
144
+ <div class="bg-primary/50 hover:bg-primary/80">...</div>
145
+ <div class="text-muted-foreground border-border/40">...</div>
146
+ \`\`\`
147
+
148
+ ## Tailwind class cheat sheet
149
+
150
+ | Utility | Token |
151
+ |---------|-------|
152
+ | \`bg-background\`, \`text-foreground\` | page bg + primary text |
153
+ | \`bg-card\`, \`text-card-foreground\` | elevated surfaces |
154
+ | \`bg-popover\`, \`text-popover-foreground\` | floating menus |
155
+ | \`bg-primary\`, \`text-primary-foreground\` | primary action / brand |
156
+ | \`bg-secondary\`, \`text-secondary-foreground\` | secondary surface |
157
+ | \`bg-muted\`, \`text-muted-foreground\` | subtle surface + subtext |
158
+ | \`bg-accent\`, \`text-accent-foreground\` | highlight / hover |
159
+ | \`border-border\`, \`border-input\` | default + form borders |
160
+ | \`ring-ring\` | focus ring |
161
+ | \`bg-destructive\`, \`bg-success\`, \`bg-warning\`, \`bg-info\`, \`bg-highlight\` | status colors |
162
+ | \`bg-chart-1\` \u2026 \`bg-chart-5\` | chart series |
163
+
164
+ ## Components the theme styles
165
+
166
+ Import from \`@gradeui/ui\` \u2014 all components read theme vars and re-skin automatically:
167
+
168
+ \`\`\`tsx
169
+ import {
170
+ Button, Input, Textarea, Label, Select, Checkbox, RadioGroup, Switch,
171
+ Slider, Toggle, Calendar, Card, Badge, Alert, Skeleton, Separator,
172
+ HoverCard, Popover, Dialog, Sheet, Tooltip, Progress, DropdownMenu,
173
+ Command, Tabs, SimpleTabs, Accordion, Collapsible, ScrollArea, Table,
174
+ Avatar, AIChat, Logo, SectionBlock, CardBlock, MediaBlock, FAQBlock,
175
+ } from "@gradeui/ui";
176
+ import "@gradeui/ui/styles.css";
177
+ \`\`\`
178
+
179
+ Every component accepts a \`className\` for layout tweaks. Variants are passed via a \`variant\` prop: \`<Button variant="outline">\`, \`<Alert variant="success">\`, \`<Badge variant="destructive-soft">\`.
180
+
181
+ ## Feel and voice
182
+
183
+ When generating UI in the ${e.name} theme, match this character:
184
+
185
+ ${ta(e)}
186
+
187
+ ## Instructions for the generating LLM
188
+
189
+ 1. **Use semantic tokens first**. Prefer \`bg-primary\`, \`text-foreground\`, \`border-border\` over raw ramp classes. Reach for \`bg-primary-500\` / \`bg-neutral-200\` only when you need a specific shade unavailable as a semantic token.
190
+ 2. **Status colors are fixed**. Do not use \`success\` for a generic success-feeling visual \u2014 it's always green-ish. Use \`primary\` / \`accent\` for brand flavor; \`success\` / \`warning\` / \`destructive\` for actual state.
191
+ 3. **Respect the shape presets**. If the theme's buttonShape is \`pill\`, don't add \`rounded-none\` to a Button. The component already matches the theme.
192
+ 4. **Typography scales with the theme**. Heading utilities \`.text-h1\`\u2013\`.text-h6\` pick up the theme's display font automatically; body text inherits the body font. Only override with \`font-mono\` for code-like content.
193
+ 5. **Charts get theme palette**. Use \`var(--chart-1)\` through \`var(--chart-5)\` for series colors. Don't hardcode hex in charts.
194
+ 6. **Dark mode is one class**. Add \`dark\` to \`<html>\` (or toggle with the provider's \`setMode("dark")\`). All tokens have dark variants already \u2014 no \`dark:\` prefixes needed on most components.
195
+ 7. **Layout freely**. The theme controls look-and-feel; composition is up to you. Use Tailwind for grids, spacing, flex layout exactly as normal.
196
+
197
+ ## Quick regeneration
198
+
199
+ To recreate this theme in code:
200
+
201
+ \`\`\`ts
202
+ import { generateTheme, applyThemeToRoot, type ThemeInput } from "@gradeui/ui";
203
+
204
+ const input: ThemeInput = ${Dr(e).replace(/\n/g,`
205
+ `)};
206
+
207
+ const theme = generateTheme(input);
208
+ applyThemeToRoot(theme, "light"); // or "dark" / "superLight" / "superDark"
209
+ \`\`\`
210
+
211
+ ---
212
+ *Generated from Grade Design System v1 \xB7 ${new Date().toISOString()}*
213
+ `}var ea={background:"Page / body background",foreground:"Primary text",card:"Elevated surface background",cardForeground:"Text on cards",popover:"Floating menu background",popoverForeground:"Text inside floating menus",primary:"Primary actions, links, default button",primaryForeground:"Text on primary-tinted fills",secondary:"Secondary surfaces + quiet buttons",secondaryForeground:"Text on secondary surfaces",muted:"Subtle surfaces (hover states, skeletons)",mutedForeground:"Secondary / less-important text",accent:"Highlights, hover accents",accentForeground:"Text on accent surfaces",border:"Default borders",input:"Form input borders",ring:"Focus ring color",destructive:"Destructive actions, errors",destructiveForeground:"Text on destructive surfaces",success:"Success states",warning:"Warning states",info:"Informational states",highlight:"Emphasis, new features, callouts"};function ta(e){let t=[],{input:r,components:o}=e;r.intensity==="muted"?t.push("- **Quiet and restrained.** Avoid heavy saturation, glowing effects, or loud contrast jumps. Let whitespace do the work."):r.intensity==="vibrant"?t.push("- **Loud and confident.** Primary color wants to lead. Use it on hero CTAs, key metrics, empty states. Don't be shy."):t.push("- **Balanced.** Neither shouty nor sleepy \u2014 a workhorse feel suited to product interfaces."),r.spacing.density==="roomy"?t.push("- **Generous spacing.** Stretch things out \u2014 reach for `gap-6`, `gap-8`, `p-6`, `p-8`. Airy is the vibe."):r.spacing.density==="tight"?t.push("- **Dense layouts.** Pack information in \u2014 `gap-2`, `gap-3`, `p-3`, `p-4`. Scan-friendly dashboard energy."):t.push("- **Standard density.** Use Tailwind's default spacing ladder."),r.radius.style==="pill"?t.push("- **Fully rounded.** Controls are pill-shaped. Use `rounded-full` on custom chips / pills too."):r.radius.style==="sharp"?t.push("- **Square corners.** Zero radius everywhere \u2014 very architectural. Do not add curves."):r.radius.style==="round"?t.push("- **Rounded and friendly.** Corner radius is noticeable (\u224814px base). Avoid sharp edges."):t.push("- **Standard rounded corners.**");let i=r.typography.display;return i==="fraunces"||i==="instrumentSerif"||i==="sourceSerif"?t.push("- **Editorial serif headings.** Treat headings like magazine titles \u2014 give them space and weight. Serifs reward larger sizes."):(i==="geist"||i==="inter")&&t.push("- **Modern technical sans.** Clean, functional, neutral. Good for product UIs."),o.cardStyle==="outlined"?t.push("- **Cards are outlined**, not shadowed. Rely on borders + spacing for hierarchy."):o.cardStyle==="elevated"?t.push("- **Cards have real elevation.** Use shadows to stack content visually."):o.cardStyle==="glass"&&t.push("- **Glass / frosted cards.** Use translucent surfaces over background imagery or gradients."),o.buttonShape==="pill"&&t.push("- **Buttons are pills** \u2014 don't override with square corners."),t.join(`
214
+ `)}function qe(e){if(typeof window>"u"||typeof document>"u")return;let t=Ir(e),r=new Blob([t],{type:"text/markdown;charset=utf-8"}),o=URL.createObjectURL(r),i=document.createElement("a");i.href=o,i.download=`ramp-theme-${e.input.id}.md`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o);}var B=Object.fromEntries(Ce.map(e=>[e.id,te(e)])),ie=fe.id;function re(e){if(e in B)return B[e];let t=Xe(e);if(t)return te(t)}function Je(){return [...Object.values(B),...Ar()]}var Hr="ramp-user-themes";function ke(){if(typeof localStorage>"u")return {};try{let e=localStorage.getItem(Hr);if(!e)return {};let t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return {}}}function Er(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(Hr,JSON.stringify(e));}catch{}}function Ar(){return Object.values(ke()).map(te)}function Xe(e){return ke()[e]}function Me(e){let t=ke();return t[e.id]=e,Er(t),te(e)}function Qe(e){if(e in B)return;let t=ke();delete t[e],Er(t);}function ra(e,t,r){let o=B[e]?.input??Xe(e);if(!o)return;let i={...o,id:t,name:r};return Me(i),i}var Ze="ramp-theme",Le="ramp-mode",Or=["superLight","light","dark","superDark"],Fr=new Set(["dark","superDark"]),oa=`
215
+ (function() {
216
+ try {
217
+ var mode = localStorage.getItem('${Le}');
218
+ var valid = ['superLight','light','dark','superDark'];
219
+ if (!mode || valid.indexOf(mode) === -1) {
220
+ mode = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
221
+ }
222
+ if (mode === 'dark' || mode === 'superDark') {
223
+ document.documentElement.classList.add('dark');
224
+ }
225
+ document.documentElement.setAttribute('data-mode', mode);
226
+ var themeId = localStorage.getItem('${Ze}');
227
+ if (themeId) document.documentElement.setAttribute('data-ramp-theme', themeId);
228
+ } catch(e) {}
229
+ })();
230
+ `,et=c__namespace.createContext(null);function aa({children:e,defaultTheme:t=ie,defaultMode:r="light"}){let[o,i]=c__namespace.useState(t),[n,s]=c__namespace.useState(r),[g,l]=c__namespace.useState(0);c__namespace.useEffect(()=>{try{let d=localStorage.getItem(Ze);d&&re(d)&&i(d);let C=localStorage.getItem(Le);if(C&&Or.includes(C))s(C);else if(typeof window<"u"){let I=window.matchMedia("(prefers-color-scheme: dark)").matches;s(I?"dark":"light");}}catch{}},[]),c__namespace.useEffect(()=>{let d=re(o)??re(ie);d&&(Ne(d,n),typeof document<"u"&&document.documentElement.classList.toggle("dark",Fr.has(n)));},[o,n,g]),c__namespace.useEffect(()=>{if(typeof window>"u")return;let d=window.matchMedia("(prefers-color-scheme: dark)"),C=I=>{try{if(localStorage.getItem(Le))return}catch{return}s(I.matches?"dark":"light");};return d.addEventListener("change",C),()=>d.removeEventListener("change",C)},[]);let x=c__namespace.useCallback(d=>{i(d);try{localStorage.setItem(Ze,d);}catch{}},[]),S=c__namespace.useCallback(d=>{s(d);try{localStorage.setItem(Le,d);}catch{}},[]),k=c__namespace.useCallback(d=>{Me(d),l(C=>C+1),x(d.id);},[x]),R=c__namespace.useCallback(d=>{d in B||(Qe(d),l(C=>C+1),i(C=>C===d?ie:C));},[]),O=c__namespace.useCallback(()=>{l(d=>d+1);},[]),Z=c__namespace.useMemo(()=>{let d=re(o)??re(ie);return {theme:d,themeId:d.id,mode:n,isDark:Fr.has(n),setThemeId:x,setMode:S,themes:Je(),saveAndActivate:k,deleteTheme:R,refresh:O}},[o,n,g,x,S,k,R,O]);return c__namespace.createElement(et.Provider,{value:Z},e)}function tt(){let e=c__namespace.useContext(et);if(!e)throw new Error("useRampTheme must be used inside <RampThemeProvider>. Wrap your app (typically in app/layout.tsx).");return e}function he(){return c__namespace.useContext(et)}var $r=W__namespace.Root,Gr=W__namespace.Trigger;var rt=c__namespace.forwardRef(({className:e,align:t="center",sideOffset:r=4,...o},i)=>c__namespace.createElement(W__namespace.Portal,null,c__namespace.createElement(W__namespace.Content,{ref:i,align:t,sideOffset:r,className:a("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",e),...o})));rt.displayName=W__namespace.Content.displayName;function la({className:e}){let t=he();if(!t)return null;let{theme:r,themes:o,setThemeId:i,deleteTheme:n}=t;return c__namespace.createElement($r,null,c__namespace.createElement(Gr,{asChild:true},c__namespace.createElement(oe,{variant:"ghost",size:"sm",className:a("gap-2",e),"aria-label":"Switch theme"},c__namespace.createElement(lucideReact.Palette,{className:"h-4 w-4"}),c__namespace.createElement("span",{className:"hidden sm:inline"},r.name))),c__namespace.createElement(rt,{className:"w-80 p-2",align:"end"},c__namespace.createElement("div",{className:"flex items-start justify-between gap-2 px-2 py-1.5 mb-1"},c__namespace.createElement("div",null,c__namespace.createElement("div",{className:"text-xs font-medium text-muted-foreground"},"Theme"),c__namespace.createElement("div",{className:"text-xs text-muted-foreground/80"},"Switch the skin applied site-wide.")),c__namespace.createElement("button",{type:"button",onClick:()=>qe(r),className:"flex items-center gap-1 rounded-md border border-border px-2 py-1 text-[10px] font-medium text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",title:"Download the active theme as a markdown spec \u2014 paste into a fresh LLM prompt"},c__namespace.createElement(lucideReact.Download,{className:"h-3 w-3"}),".md")),c__namespace.createElement("div",{className:"flex flex-col gap-0.5"},o.map(s=>{let g=s.id===r.id,l=s.id in B,x=s.ramps.primary[500],S=s.ramps.accent[500],k=s.ramps.neutral[500];return c__namespace.createElement("div",{key:s.id,className:a("group flex items-start gap-3 rounded-md px-2 py-2 text-left transition-colors","hover:bg-muted",g&&"bg-muted")},c__namespace.createElement("button",{type:"button",onClick:()=>i(s.id),className:"flex items-start gap-3 flex-1 min-w-0 text-left"},c__namespace.createElement("div",{className:"mt-0.5 flex shrink-0 overflow-hidden rounded-md border border-border"},c__namespace.createElement("div",{className:"h-5 w-2.5",style:{background:`oklch(${x})`},"aria-hidden":true}),c__namespace.createElement("div",{className:"h-5 w-2.5",style:{background:`oklch(${S})`},"aria-hidden":true}),c__namespace.createElement("div",{className:"h-5 w-2.5",style:{background:`oklch(${k})`},"aria-hidden":true})),c__namespace.createElement("div",{className:"min-w-0 flex-1"},c__namespace.createElement("div",{className:"flex items-center gap-2"},c__namespace.createElement("span",{className:"text-sm font-medium truncate text-foreground"},s.name),s.tagline&&c__namespace.createElement("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground shrink-0"},s.tagline)),s.description&&c__namespace.createElement("div",{className:"text-xs text-muted-foreground line-clamp-2"},s.description))),g&&c__namespace.createElement(lucideReact.Check,{className:"mt-2 h-4 w-4 shrink-0 text-primary"}),!l&&!g&&c__namespace.createElement("button",{type:"button",onClick:R=>{R.stopPropagation(),n(s.id);},className:"mt-1 opacity-0 group-hover:opacity-100 transition-opacity rounded p-1 hover:bg-destructive/10 hover:text-destructive","aria-label":`Delete theme ${s.name}`},c__namespace.createElement(lucideReact.Trash2,{className:"h-3.5 w-3.5"})))}))))}var Kr=[{mode:"superLight",label:"Super light",icon:lucideReact.SunDim,tooltip:"Super light \u2014 airy, low contrast"},{mode:"light",label:"Light",icon:lucideReact.Sun,tooltip:"Light"},{mode:"dark",label:"Dark",icon:lucideReact.Moon,tooltip:"Dark"},{mode:"superDark",label:"Super dark",icon:lucideReact.MoonStar,tooltip:"Super dark \u2014 OLED, high contrast"}];function fa({className:e,variant:t="icons"}){let r=he();if(!r)return null;let{mode:o,setMode:i}=r;return t==="labeled"?c__namespace.createElement("div",{role:"radiogroup","aria-label":"Brightness mode",className:a("inline-flex flex-wrap gap-1 rounded-md border border-border bg-background p-1",e)},Kr.map(({mode:n,label:s,icon:g})=>{let l=o===n;return c__namespace.createElement("button",{key:n,type:"button",role:"radio","aria-checked":l,onClick:()=>i(n),className:a("flex items-center gap-2 rounded px-3 py-1.5 text-sm transition-colors",l?"bg-primary text-primary-foreground":"hover:bg-accent hover:text-accent-foreground")},c__namespace.createElement(g,{className:"h-4 w-4"}),c__namespace.createElement("span",null,s))})):c__namespace.createElement("div",{role:"radiogroup","aria-label":"Brightness mode",className:a("inline-flex items-center gap-0.5 rounded-md border border-border bg-background p-0.5",e)},Kr.map(({mode:n,icon:s,tooltip:g})=>{let l=o===n;return c__namespace.createElement("button",{key:n,type:"button",role:"radio","aria-checked":l,"aria-label":g,title:g,onClick:()=>i(n),className:a("flex h-7 w-7 items-center justify-center rounded transition-colors",l?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-accent hover:text-accent-foreground")},c__namespace.createElement(s,{className:"h-3.5 w-3.5"}))}))}function ya(){let{isDark:e,setMode:t}=tt();return React.createElement(oe,{variant:"ghost",size:"sm",onClick:()=>t(e?"light":"dark"),className:"gap-2","aria-label":e?"Switch to light mode":"Switch to dark mode"},e?React.createElement(React.Fragment,null,React.createElement(lucideReact.Sun,{className:"h-4 w-4"}),React.createElement("span",{className:"hidden sm:inline"},"Light")):React.createElement(React.Fragment,null,React.createElement(lucideReact.Moon,{className:"h-4 w-4"}),React.createElement("span",{className:"hidden sm:inline"},"Dark")))}exports.ALL_MODES=Or;exports.Accordion=_r;exports.AccordionContent=it;exports.AccordionItem=ot;exports.AccordionTrigger=at;exports.Alert=nt;exports.AlertDescription=dt;exports.AlertTitle=st;exports.BUILT_IN_INPUTS=Ce;exports.Badge=Yr;exports.Button=oe;exports.Card=mt;exports.CardContent=ht;exports.CardDescription=gt;exports.CardFooter=yt;exports.CardHeader=ut;exports.CardTitle=ft;exports.Checkbox=bt;exports.Dialog=Zr;exports.DialogClose=to;exports.DialogContent=xt;exports.DialogDescription=wt;exports.DialogFooter=Tt;exports.DialogHeader=Rt;exports.DialogOverlay=De;exports.DialogPortal=vt;exports.DialogTitle=St;exports.DialogTrigger=eo;exports.DropdownMenu=io;exports.DropdownMenuCheckboxItem=Mt;exports.DropdownMenuContent=Nt;exports.DropdownMenuGroup=so;exports.DropdownMenuItem=kt;exports.DropdownMenuLabel=Dt;exports.DropdownMenuPortal=lo;exports.DropdownMenuRadioGroup=po;exports.DropdownMenuRadioItem=Lt;exports.DropdownMenuSeparator=It;exports.DropdownMenuShortcut=Ht;exports.DropdownMenuSub=co;exports.DropdownMenuSubContent=Ct;exports.DropdownMenuSubTrigger=Pt;exports.DropdownMenuTrigger=no;exports.Input=Et;exports.Label=At;exports.LenisProvider=Oo;exports.Progress=Ft;exports.RAMP_PRE_HYDRATION_SCRIPT=oa;exports.RadioGroup=Ot;exports.RadioGroupItem=$t;exports.RampModeSwitcher=fa;exports.RampThemeProvider=aa;exports.RampThemeSwitcher=la;exports.ScrollArea=Gt;exports.ScrollBar=He;exports.Select=yo;exports.SelectContent=Bt;exports.SelectGroup=bo;exports.SelectItem=_t;exports.SelectLabel=Wt;exports.SelectScrollDownButton=Ae;exports.SelectScrollUpButton=Ee;exports.SelectSeparator=Vt;exports.SelectTrigger=Ut;exports.SelectValue=vo;exports.Separator=jt;exports.Sheet=To;exports.SheetClose=wo;exports.SheetContent=Yt;exports.SheetDescription=Qt;exports.SheetFooter=Jt;exports.SheetHeader=qt;exports.SheetOverlay=Oe;exports.SheetPortal=zt;exports.SheetTitle=Xt;exports.SheetTrigger=So;exports.SideMenu=hr;exports.SimpleTabs=Rr;exports.SimpleTabsContent=Cr;exports.SimpleTabsList=wr;exports.SimpleTabsPanel=Tr;exports.SimpleTabsRoot=Sr;exports.SimpleTabsTrigger=Pr;exports.Skeleton=Co;exports.Slider=Zt;exports.Switch=er;exports.Table=tr;exports.TableBody=or;exports.TableCaption=dr;exports.TableCell=sr;exports.TableFooter=ar;exports.TableHead=nr;exports.TableHeader=rr;exports.TableRow=ir;exports.Tabs=No;exports.TabsContent=pr;exports.TabsList=lr;exports.TabsTrigger=cr;exports.Textarea=mr;exports.ThemeToggle=ya;exports.Tooltip=Ge;exports.TooltipContent=Se;exports.TooltipProvider=$e;exports.TooltipTrigger=Ke;exports.TopMenu=yr;exports.TopMenuUser=br;exports.TopMenuUserItem=vr;exports.TopMenuUserSection=xr;exports.applyThemeToRoot=Ne;exports.badgeVariants=ct;exports.builtInThemes=B;exports.buttonVariants=pt;exports.calmInput=fe;exports.cn=a;exports.defaultThemeId=ie;exports.deleteUserTheme=Qe;exports.duplicateTheme=ra;exports.energyInput=Ve;exports.generateTheme=te;exports.getTheme=re;exports.listThemes=Je;exports.listUserThemes=Ar;exports.loadUserThemeInput=Xe;exports.saveUserTheme=Me;exports.themeToCSSVars=ze;exports.useMaybeRampTheme=he;exports.useRampTheme=tt;//# sourceMappingURL=index.js.map
231
+ //# sourceMappingURL=index.js.map