@xploreu/components 0.1.0 → 0.1.2

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.
@@ -0,0 +1,2 @@
1
+ import'react';import {Slot}from'@radix-ui/react-slot';import {cva}from'class-variance-authority';import {Loader2}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';var b=cva(cn("group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0","disabled:cursor-not-allowed"),{variants:{color:{default:"focus-visible:outline-focus-ring",destructive:"focus-visible:outline-focus-ring-error","gradient-ai":"focus-visible:outline-focus-ring","linear-green":"focus-visible:outline-focus-ring-success","linear-overlay":"focus-visible:outline-focus-ring","linear-destructive":"focus-visible:outline-focus-ring-error"},variant:{primary:"shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border",secondary:"shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle","secondary-accent":"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled",tertiary:"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled","tertiary-accent":"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle",link:"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline"},icon:{true:void 0,false:void 0},size:{sm:"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",md:"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",lg:"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5",xl:"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5"}},compoundVariants:[{variant:"primary",color:"default",className:"bg-gradient-buttons-gradient-blue text-text-primary-on-brand"},{variant:"secondary",color:"default",className:"bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"},{variant:"secondary-accent",color:"default",className:"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"default",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"default",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"default",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"},{variant:"primary",color:"destructive",className:"bg-bg-error-solid text-text-primary-on-brand"},{variant:"secondary",color:"destructive",className:"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"},{variant:"secondary-accent",color:"destructive",className:"border border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"},{variant:"tertiary-accent",color:"destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"destructive",className:"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"},{variant:"primary",color:"gradient-ai",className:"bg-gradient-buttons-button-ai text-text-primary-on-brand"},{variant:"secondary",color:"gradient-ai",className:"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"secondary-accent",color:"gradient-ai",className:"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"gradient-ai",className:"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"tertiary-accent",color:"gradient-ai",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"gradient-ai",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-green",className:"bg-gradient-buttons-gradient-green text-text-primary-on-brand"},{variant:"secondary",color:"linear-green",className:"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900"},{variant:"secondary-accent",color:"linear-green",className:"border border-border-primary text-fg-primary hover:bg-bg-primary"},{variant:"tertiary",color:"linear-green",className:"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900"},{variant:"tertiary-accent",color:"linear-green",className:"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover"},{variant:"link",color:"linear-green",className:"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary"},{variant:"primary",color:"linear-overlay",className:"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-overlay",className:"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-overlay",className:"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"linear-overlay",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"linear-overlay",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"linear-overlay",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-destructive",className:"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-destructive",className:"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-destructive",className:"border border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary"},{variant:"tertiary-accent",color:"linear-destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"}],defaultVariants:{variant:"primary",color:"default",size:"sm"}});function k({className:a,color:o,variant:r,size:s,asChild:g=false,loading:l=false,children:c,disabled:v,icon:i,...n}){let d=g?Slot:"button";return l?jsxs(d,{className:cn(b({color:o,variant:r,size:s,className:a})),"data-icon":i?"":void 0,"data-slot":"button",disabled:true,...n,children:[jsx(Loader2,{className:"size-4 animate-spin"}),jsx("span",{className:"sr-only",children:"Loading..."})]}):jsx(d,{className:cn(b({color:o,variant:r,size:s,className:a})),"data-icon":i?"":void 0,"data-slot":"button","data-variant":r,disabled:v,...n,children:c})}export{b as a,k as b};//# sourceMappingURL=chunk-CJONAIBS.js.map
2
+ //# sourceMappingURL=chunk-CJONAIBS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/button.tsx"],"names":["buttonVariants","cva","cn","Button","className","color","variant","size","asChild","loading","children","disabled","icon","props","Comp","Slot","jsxs","jsx","Loader2"],"mappings":"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","file":"chunk-CJONAIBS.js","sourcesContent":["import * as React from \"react\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@xploreu/lib/cn\"\n\nconst buttonVariants = cva(\n cn(\n \"group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0\",\n // Disabled styles\n \"disabled:cursor-not-allowed\",\n ),\n {\n variants: {\n color: {\n default: \"focus-visible:outline-focus-ring\",\n destructive: \"focus-visible:outline-focus-ring-error\",\n \"gradient-ai\": \"focus-visible:outline-focus-ring\",\n \"linear-green\": \"focus-visible:outline-focus-ring-success\",\n \"linear-overlay\": \"focus-visible:outline-focus-ring\",\n \"linear-destructive\": \"focus-visible:outline-focus-ring-error\",\n },\n variant: {\n primary: \"shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border\",\n secondary: \"shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle\",\n \"secondary-accent\": \"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled\",\n tertiary: \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled\",\n \"tertiary-accent\": \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle\",\n link: \"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline\",\n },\n icon: {\n true: undefined,\n false: undefined\n },\n size: {\n sm: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n md: \"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n lg: \"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n xl: \"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n }\n },\n compoundVariants: [\n // Default Color Variants\n {\n variant: \"primary\",\n color: \"default\",\n className: \"bg-gradient-buttons-gradient-blue text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"default\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"default\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"default\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"default\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"default\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Destructive Color Variants\n {\n variant: \"primary\",\n color: \"destructive\",\n className: \"bg-bg-error-solid text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"destructive\",\n className: \"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"destructive\",\n className: \"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n\n // Gradient AI\n {\n variant: \"primary\",\n color: \"gradient-ai\",\n className: \"bg-gradient-buttons-button-ai text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"gradient-ai\",\n className: \"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"gradient-ai\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"gradient-ai\",\n className: \"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"gradient-ai\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"gradient-ai\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Green Color Variants\n {\n variant: \"primary\",\n color: \"linear-green\",\n className: \"bg-gradient-buttons-gradient-green text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"linear-green\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-green\",\n className: \"border border-border-primary text-fg-primary hover:bg-bg-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-green\",\n className: \"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-green\",\n className: \"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"linear-green\",\n className: \"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary\"\n },\n\n // Linear Overlay Color Variants\n {\n variant: \"primary\",\n color: \"linear-overlay\",\n className: \"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"linear-overlay\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-overlay\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-overlay\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Destructive Color Variants\n {\n variant: \"primary\",\n color: \"linear-destructive\",\n className: \"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"default\",\n size: \"sm\",\n },\n }\n)\n\nfunction Button({\n className,\n color,\n variant,\n size,\n asChild = false,\n loading = false,\n children,\n disabled,\n icon,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n if (loading) {\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n disabled\n {...props}\n >\n <Loader2 className=\"size-4 animate-spin\" />\n <span className=\"sr-only\">Loading...</span>\n </Comp>\n )\n }\n\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n data-variant={variant}\n disabled={disabled}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"]}
@@ -0,0 +1,2 @@
1
+ import {XIcon}from'lucide-react';import*as n from'react';import*as e from'@radix-ui/react-dialog';import {useControllableState}from'@radix-ui/react-use-controllable-state';import {AnimatePresence,motion}from'motion/react';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {jsx,jsxs}from'react/jsx-runtime';import {cn}from'@xploreu/lib/cn';var[L,f]=getStrictContext("DialogContext");function C({open:o,defaultOpen:i,onOpenChange:s,...g}){let[l,p]=useControllableState({prop:o,defaultProp:i??false,onChange:s,caller:"DialogOpen"});return jsx(L,{value:{open:l,setOpen:p},children:jsx(e.Root,{"data-slot":"dialog",open:l,onOpenChange:p,...g})})}function x(o){return jsx(e.Trigger,{"data-slot":"dialog-trigger",...o})}function b(o){let{open:i}=f();return jsx(AnimatePresence,{children:i&&jsx(e.Portal,{"data-slot":"dialog-portal",forceMount:true,...o})})}function T({transition:o={duration:.2,ease:"easeInOut"},...i}){return jsx(e.Overlay,{asChild:true,"data-slot":"dialog-overlay",forceMount:true,children:jsx(motion.div,{animate:{opacity:1,backdropFilter:"blur(4px)"},exit:{opacity:0,backdropFilter:"blur(0px)"},initial:{opacity:0,backdropFilter:"blur(0px)"},transition:o,...i},"dialog-overlay")})}function O({from:o="left",onOpenAutoFocus:i,onCloseAutoFocus:s,onEscapeKeyDown:g,onPointerDownOutside:l,onInteractOutside:p,transition:M={type:"spring",stiffness:150,damping:25},ref:w,...k}){let D=n.useRef(null);n.useImperativeHandle(w,()=>D.current);let{open:d}=f(),v=o==="bottom"||o==="left"?"20deg":"-20deg",P=o==="top"||o==="bottom"?"rotateX":"rotateY";return n.useEffect(()=>{d||D.current?.classList.remove("transform-none!");},[d]),jsx(e.Content,{asChild:true,forceMount:true,onCloseAutoFocus:s,onEscapeKeyDown:g,onInteractOutside:p,onOpenAutoFocus:i,onPointerDownOutside:l,children:jsx(motion.div,{ref:D,animate:{opacity:1,filter:"blur(0px)",transform:`perspective(500px) ${P}(0deg) scale(1)`},"data-slot":"dialog-content",exit:{opacity:0,filter:"blur(4px)",transform:`perspective(500px) ${P}(${v}) scale(0.8)`},initial:{opacity:0,filter:"blur(4px)",transform:`perspective(500px) ${P}(${v}) scale(0.8)`},transition:M,onAnimationComplete:c=>{typeof c=="object"&&"opacity"in c&&c.opacity!==1||requestAnimationFrame(()=>{D.current?.classList.add("transform-none!");});},...k},"dialog-content")})}function m(o){return jsx(e.Close,{"data-slot":"dialog-close",...o})}function F(o){return jsx("div",{"data-slot":"dialog-header",...o})}function h(o){return jsx("div",{"data-slot":"dialog-footer",...o})}function R(o){return jsx(e.Title,{"data-slot":"dialog-title",...o})}function H(o){return jsx(e.Description,{"data-slot":"dialog-description",...o})}function j(o){return jsx(C,{...o})}function G(o){return jsx(x,{...o})}function J(o){return jsx(m,{...o})}function z({className:o,...i}){return jsx(T,{className:cn("fixed inset-0 z-50 bg-background-overlay-default",o),...i})}function Q({className:o,children:i,showCloseButton:s=true,closeClassName:g,onCloseClick:l,...p}){return jsxs(b,{children:[jsx(z,{}),jsxs(O,{className:cn("fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border-primary bg-bg-primary p-6 shadow-xp-lg rounded-lg overflow-hidden",o),...p,children:[i,s&&jsxs(m,{className:cn("ring-offset-neutral-25 focus:ring-neutral-20 data-[state=open]:bg-bg-primary data-[state=open]:text-muted-foreground absolute top-7 right-6 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6",g),onClick:l,children:[jsx(XIcon,{}),jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function U({className:o,...i}){return jsx(F,{className:cn("flex flex-col gap-2 text-center sm:text-left bg-bg-primary",o),...i})}function W({className:o,...i}){return jsx(h,{className:cn("flex flex-col gap-2 laptop:flex-row items-center justify-between bg-bg-primary border-t shadow-[0px_16px_44px_-24px_var(--color-background-shadow-light),0px_0px_28px_0px_var(--color-background-shadow-light)] border-border-primary py-4 px-[26px]",o),"data-slot":"dialog-footer",...i})}function Z({className:o,...i}){return jsx(R,{className:cn("text-center text-heading-bold-4 text-text-primary",o),...i})}function oo({className:o,...i}){return jsx(H,{className:cn("text-label-semibold-3 text-text-secondary",o),...i})}export{j as a,G as b,J as c,Q as d,U as e,W as f,Z as g,oo as h};//# sourceMappingURL=chunk-DRJAHT5N.js.map
2
+ //# sourceMappingURL=chunk-DRJAHT5N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/primitives/dialog.tsx","../src/ui/dialog.tsx"],"names":["DialogProvider","useDialog","getStrictContext","Dialog","openProp","defaultOpen","onOpenChange","props","open","setOpen","useControllableState","jsx","DialogTrigger","DialogPortal","AnimatePresence","DialogOverlay","transition","motion","DialogContent","from","onOpenAutoFocus","onCloseAutoFocus","onEscapeKeyDown","onPointerDownOutside","onInteractOutside","ref","contentRef","initialRotation","rotateAxis","latest","DialogClose","DialogHeader","DialogFooter","DialogTitle","DialogDescription","className","cn","children","showCloseButton","closeClassName","onCloseClick","jsxs","XIcon"],"mappings":"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","file":"chunk-DRJAHT5N.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\"\nimport {\n AnimatePresence,\n type HTMLMotionProps,\n motion\n} from \"motion/react\"\n\nimport { getStrictContext } from \"@xploreu/lib/get-strict-context\"\n\ntype DialogContextType = {\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\nconst [DialogProvider, useDialog] =\n getStrictContext<DialogContextType>(\"DialogContext\")\n\ntype DialogProps = React.ComponentProps<typeof DialogPrimitive.Root>\n\nfunction Dialog({\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n}: DialogProps) {\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: \"DialogOpen\",\n })\n\n return (\n <DialogProvider value={{ open, setOpen }}>\n <DialogPrimitive.Root\n data-slot=\"dialog\"\n open={open}\n onOpenChange={setOpen}\n {...props}\n />\n </DialogProvider>\n )\n}\n\ntype DialogTriggerProps = React.ComponentProps<typeof DialogPrimitive.Trigger>\n\nfunction DialogTrigger(props: DialogTriggerProps) {\n return <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n {...props}\n />\n}\n\ntype DialogPortalProps = Omit<\n React.ComponentProps<typeof DialogPrimitive.Portal>,\n \"forceMount\"\n>\n\nfunction DialogPortal(props: DialogPortalProps) {\n const { open } = useDialog()\n\n return (\n <AnimatePresence>\n {open && (\n <DialogPrimitive.Portal\n data-slot=\"dialog-portal\"\n forceMount\n {...props}\n />\n )}\n </AnimatePresence>\n )\n}\n\ntype DialogOverlayProps = Omit<\n React.ComponentProps<typeof DialogPrimitive.Overlay>,\n \"forceMount\" | \"asChild\"\n> &\n HTMLMotionProps<\"div\">\n\nfunction DialogOverlay({\n transition = { duration: 0.2, ease: \"easeInOut\" },\n ...props\n}: DialogOverlayProps) {\n return (\n <DialogPrimitive.Overlay\n asChild\n data-slot=\"dialog-overlay\"\n forceMount\n >\n <motion.div\n key=\"dialog-overlay\"\n animate={{ opacity: 1, backdropFilter: \"blur(4px)\" }}\n exit={{ opacity: 0, backdropFilter: \"blur(0px)\" }}\n initial={{ opacity: 0, backdropFilter: \"blur(0px)\" }}\n transition={transition}\n {...props}\n />\n </DialogPrimitive.Overlay>\n )\n}\n\ntype DialogFlipDirection = \"top\" | \"bottom\" | \"left\" | \"right\"\n\ntype DialogContentProps = Omit<\n React.ComponentProps<typeof DialogPrimitive.Content>,\n \"forceMount\" | \"asChild\"\n> &\n HTMLMotionProps<\"div\"> & {\n from?: DialogFlipDirection;\n }\n\nfunction DialogContent({\n from = \"left\",\n onOpenAutoFocus,\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onInteractOutside,\n transition = { type: \"spring\", stiffness: 150, damping: 25 },\n ref,\n ...props\n}: DialogContentProps) {\n const contentRef = React.useRef<HTMLDivElement>(null)\n\n React.useImperativeHandle(ref, () => contentRef.current!)\n\n const { open } = useDialog()\n\n const initialRotation =\n from === \"bottom\" || from === \"left\" ? \"20deg\" : \"-20deg\"\n const isVertical = from === \"top\" || from === \"bottom\"\n const rotateAxis = isVertical ? \"rotateX\" : \"rotateY\"\n\n React.useEffect(() => {\n if (open) return\n\n contentRef.current?.classList.remove(\"transform-none!\")\n }, [open])\n\n return (\n <DialogPrimitive.Content\n asChild\n forceMount\n onCloseAutoFocus={onCloseAutoFocus}\n onEscapeKeyDown={onEscapeKeyDown}\n onInteractOutside={onInteractOutside}\n onOpenAutoFocus={onOpenAutoFocus}\n onPointerDownOutside={onPointerDownOutside}\n >\n <motion.div\n key=\"dialog-content\"\n ref={contentRef}\n animate={{\n opacity: 1,\n filter: \"blur(0px)\",\n transform: `perspective(500px) ${rotateAxis}(0deg) scale(1)`,\n }}\n data-slot=\"dialog-content\"\n exit={{\n opacity: 0,\n filter: \"blur(4px)\",\n transform: `perspective(500px) ${rotateAxis}(${initialRotation}) scale(0.8)`,\n }}\n initial={{\n opacity: 0,\n filter: \"blur(4px)\",\n transform: `perspective(500px) ${rotateAxis}(${initialRotation}) scale(0.8)`,\n }}\n transition={transition}\n onAnimationComplete={(latest) => {\n if (typeof latest === \"object\" && \"opacity\" in latest && latest.opacity !== 1) return\n\n requestAnimationFrame(() => {\n contentRef.current?.classList.add(\"transform-none!\")\n })\n }}\n {...props}\n />\n </DialogPrimitive.Content>\n )\n}\n\ntype DialogCloseProps = React.ComponentProps<typeof DialogPrimitive.Close>\n\nfunction DialogClose(props: DialogCloseProps) {\n return <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n {...props}\n />\n}\n\ntype DialogHeaderProps = React.ComponentProps<\"div\">\n\nfunction DialogHeader(props: DialogHeaderProps) {\n return <div\n data-slot=\"dialog-header\"\n {...props}\n />\n}\n\ntype DialogFooterProps = React.ComponentProps<\"div\">\n\nfunction DialogFooter(props: DialogFooterProps) {\n return <div\n data-slot=\"dialog-footer\"\n {...props}\n />\n}\n\ntype DialogTitleProps = React.ComponentProps<typeof DialogPrimitive.Title>\n\nfunction DialogTitle(props: DialogTitleProps) {\n return <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n {...props}\n />\n}\n\ntype DialogDescriptionProps = React.ComponentProps<\n typeof DialogPrimitive.Description\n>\n\nfunction DialogDescription(props: DialogDescriptionProps) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n type DialogCloseProps,\n DialogContent,\n type DialogContentProps,\n type DialogContextType,\n DialogDescription,\n type DialogDescriptionProps,\n type DialogFlipDirection,\n DialogFooter,\n type DialogFooterProps,\n DialogHeader,\n type DialogHeaderProps,\n DialogOverlay,\n type DialogOverlayProps,\n DialogPortal,\n type DialogPortalProps,\n type DialogProps,\n DialogTitle,\n type DialogTitleProps,\n DialogTrigger,\n type DialogTriggerProps,\n useDialog,\n}\n","\"use client\"\n\nimport { XIcon } from \"lucide-react\"\n\nimport {\n Dialog as DialogPrimitive,\n DialogClose as DialogClosePrimitive,\n type DialogCloseProps as DialogClosePrimitiveProps,\n DialogContent as DialogContentPrimitive,\n type DialogContentProps as DialogContentPrimitiveProps,\n DialogDescription as DialogDescriptionPrimitive,\n type DialogDescriptionProps as DialogDescriptionPrimitiveProps,\n DialogFooter as DialogFooterPrimitive,\n type DialogFooterProps as DialogFooterPrimitiveProps,\n DialogHeader as DialogHeaderPrimitive,\n type DialogHeaderProps as DialogHeaderPrimitiveProps,\n DialogOverlay as DialogOverlayPrimitive,\n type DialogOverlayProps as DialogOverlayPrimitiveProps,\n DialogPortal as DialogPortalPrimitive,\n type DialogProps as DialogPrimitiveProps,\n DialogTitle as DialogTitlePrimitive,\n type DialogTitleProps as DialogTitlePrimitiveProps,\n DialogTrigger as DialogTriggerPrimitive,\n type DialogTriggerProps as DialogTriggerPrimitiveProps,\n} from \"../primitives/dialog\"\nimport { cn } from \"@xploreu/lib/cn\"\n\ntype DialogProps = DialogPrimitiveProps\n\nfunction Dialog(props: DialogProps) {\n return <DialogPrimitive {...props} />\n}\n\ntype DialogTriggerProps = DialogTriggerPrimitiveProps\n\nfunction DialogTrigger(props: DialogTriggerProps) {\n return <DialogTriggerPrimitive {...props} />\n}\n\ntype DialogCloseProps = DialogClosePrimitiveProps\n\nfunction DialogClose(props: DialogCloseProps) {\n return <DialogClosePrimitive {...props} />\n}\n\ntype DialogOverlayProps = DialogOverlayPrimitiveProps\n\nfunction DialogOverlay({ className, ...props }: DialogOverlayProps) {\n return (\n <DialogOverlayPrimitive\n className={cn(\"fixed inset-0 z-50 bg-background-overlay-default\", className)}\n {...props}\n />\n )\n}\n\ntype DialogContentProps = DialogContentPrimitiveProps & {\n showCloseButton?: boolean;\n closeClassName?: string;\n onCloseClick?: React.MouseEventHandler;\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n closeClassName,\n onCloseClick,\n ...props\n}: DialogContentProps) {\n return (\n <DialogPortalPrimitive>\n <DialogOverlay />\n <DialogContentPrimitive\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border-primary bg-bg-primary p-6 shadow-xp-lg rounded-lg overflow-hidden\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogClosePrimitive\n className={cn(\n \"ring-offset-neutral-25 focus:ring-neutral-20 data-[state=open]:bg-bg-primary data-[state=open]:text-muted-foreground absolute top-7 right-6 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6\",\n closeClassName\n )}\n onClick={onCloseClick}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogClosePrimitive>\n )}\n </DialogContentPrimitive>\n </DialogPortalPrimitive>\n )\n}\n\ntype DialogHeaderProps = DialogHeaderPrimitiveProps\n\nfunction DialogHeader({ className, ...props }: DialogHeaderProps) {\n return (\n <DialogHeaderPrimitive\n className={cn(\"flex flex-col gap-2 text-center sm:text-left bg-bg-primary\", className)}\n {...props}\n />\n )\n}\n\ntype DialogFooterProps = DialogFooterPrimitiveProps\n\nfunction DialogFooter({ className, ...props }: DialogFooterProps) {\n return (\n <DialogFooterPrimitive\n className={cn(\n \"flex flex-col gap-2 laptop:flex-row items-center justify-between bg-bg-primary border-t shadow-[0px_16px_44px_-24px_var(--color-background-shadow-light),0px_0px_28px_0px_var(--color-background-shadow-light)] border-border-primary py-4 px-[26px]\",\n className\n )}\n data-slot=\"dialog-footer\"\n {...props}\n />\n )\n}\n\ntype DialogTitleProps = DialogTitlePrimitiveProps\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return (\n <DialogTitlePrimitive\n className={cn(\"text-center text-heading-bold-4 text-text-primary\", className)}\n {...props}\n />\n )\n}\n\ntype DialogDescriptionProps = DialogDescriptionPrimitiveProps\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogDescriptionPrimitive\n className={cn(\"text-label-semibold-3 text-text-secondary\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps,\n type DialogProps, DialogTitle, type DialogTitleProps, DialogTrigger, type DialogTriggerProps\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import*as n from'react';import*as H from'@radix-ui/react-tabs';import {useControllableState}from'@radix-ui/react-use-controllable-state';import {motion,AnimatePresence,isMotionComponent}from'motion/react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useAutoHeight}from'@xploreu/hooks/use-auto-height';import {getStrictContext}from'@xploreu/lib/get-strict-context';function Ct(...t){return e=>{t.forEach(i=>{i&&(typeof i=="function"?i(e):i.current=e);});}}function Ht(t,e){let i={...t,...e};return (t.className||e.className)&&(i.className=cn(t.className,e.className)),(t.style||e.style)&&(i.style={...t.style,...e.style}),i}function st({children:t,ref:e,...i}){let s=typeof t.type=="object"&&t.type!==null&&isMotionComponent(t.type),d=n.useMemo(()=>s?t.type:motion.create(t.type),[s,t.type]);if(!n.isValidElement(t))return null;let{ref:l,...f}=t.props,P=Ht(f,i);return jsx(d,{...P,ref:Ct(l,e)})}function rt({children:t,deps:e=[],transition:i={type:"spring",stiffness:300,damping:30,bounce:0,restDelta:.01},style:s,animate:d,asChild:l=false,...f}){let{ref:P,height:M}=useAutoHeight(e),u=l?st:motion.div;return jsx(u,{animate:{height:M,...d},style:{overflow:"hidden",...s},transition:i,...f,children:jsx("div",{ref:P,children:t})})}var Lt={top:0,left:0,width:0,height:0},lt=n.createContext(void 0);function Nt(){let t=n.useContext(lt);if(!t)throw new Error("useHighlight must be used within a HighlightProvider");return t}function dt({ref:t,...e}){let{as:i="div",children:s,value:d,defaultValue:l,onValueChange:f,className:P,style:M,transition:u={type:"spring",stiffness:350,damping:35},hover:$=false,click:K=true,enabled:L=true,controlledItems:q,disabled:Q=false,exitDelay:N=200,mode:v="children"}=e,g=n.useRef(null);n.useImperativeHandle(t,()=>g.current);let x=e?.boundsOffset??Lt,S=x.top??0,O=x.left??0,k=x.width??0,A=x.height??0,V=n.useRef({top:S,left:O,width:k,height:A});n.useEffect(()=>{V.current={top:S,left:O,width:k,height:A};},[S,O,k,A]);let[B,w]=n.useState(d??l??null),[m,U]=n.useState(null),[z,j]=n.useState(""),G=a=>{w(c=>c!==a?(f?.(a),a):c);},r=n.useRef(void 0);n.useEffect(()=>{r.current=a=>{if(!g.current)return;let c=g.current.getBoundingClientRect(),p=V.current,b={top:a.top-c.top+p.top,left:a.left-c.left+p.left,width:a.width+p.width,height:a.height+p.height};U(o=>o&&o.top===b.top&&o.left===b.left&&o.width===b.width&&o.height===b.height?o:b);};});let R=a=>{r.current?.(a);},C=n.useCallback(()=>{U(a=>a===null?a:null);},[]);n.useEffect(()=>{d!==void 0?w(d):l!==void 0&&w(l);},[d,l]);let F=n.useId();n.useEffect(()=>{if(v!=="parent")return;let a=g.current;if(!a)return;let c=()=>{if(!B)return;let p=a.querySelector(`[data-value="${B}"][data-highlight="true"]`);p&&r.current?.(p.getBoundingClientRect());};return a.addEventListener("scroll",c,{passive:true}),()=>a.removeEventListener("scroll",c)},[v,B]);let T=a=>v==="parent"?jsxs(i,{ref:g,className:e?.containerClassName,"data-slot":"motion-highlight-container",style:{position:"relative",zIndex:1},children:[jsx(AnimatePresence,{initial:false,mode:"wait",children:m&&jsx(motion.div,{animate:{top:m.top,left:m.left,width:m.width,height:m.height,opacity:1},className:cn(P,z),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...u,delay:(u?.delay??0)+(N??0)/1e3}},initial:{top:m.top,left:m.left,width:m.width,height:m.height,opacity:0},style:{position:"absolute",zIndex:0,...M},transition:u})}),a]}):a;return jsx(lt.Provider,{value:{mode:v,activeValue:B,setActiveValue:G,id:F,hover:$,click:K,className:P,style:M,transition:u,disabled:Q,enabled:L,exitDelay:N,setBounds:R,clearBounds:C,activeClassName:z,setActiveClassName:j,forceUpdateBounds:e?.forceUpdateBounds},children:L?T(q?s:n.Children.map(s,(a,c)=>jsx(it,{className:e?.itemsClassName,children:a},c))):s})}function Z(t,e){return Object.keys(e).reduce((i,s)=>(t.props[s]===void 0&&(i[s]=e[s]),i),{})}function it({ref:t,as:e,children:i,id:s,value:d,className:l,style:f,transition:P,disabled:M=false,activeClassName:u,exitDelay:$,asChild:K=false,forceUpdateBounds:L,...q}){let Q=n.useId(),{activeValue:N,setActiveValue:v,mode:g,setBounds:X,clearBounds:x,hover:S,click:O,enabled:k,className:A,style:V,transition:B,id:w,disabled:m,exitDelay:U,forceUpdateBounds:z,setActiveClassName:j}=Nt(),G=e??"div",r=i,R=s??d??r.props?.["data-value"]??r.props?.id??Q,C=N===R,F=M===void 0?m:M,T=P??B,a=n.useRef(null);n.useImperativeHandle(t,()=>a.current);let c=n.useCallback(o=>{a.current=o;},[]);if(n.useEffect(()=>{if(g!=="parent")return;let o,I=null,at=L===true||z&&L!==false,Y=()=>{if(!a.current)return;let D=a.current.getBoundingClientRect();if(at){if(I&&I.top===D.top&&I.left===D.left&&I.width===D.width&&I.height===D.height){o=requestAnimationFrame(Y);return}I=D,o=requestAnimationFrame(Y);}X(D);};if(C?(Y(),j(u??"")):N||x(),at)return ()=>cancelAnimationFrame(o)},[g,C,N,X,x,u,j,L,z]),!n.isValidElement(i))return i;let p={"data-active":C?"true":"false","aria-selected":C,"data-disabled":F,"data-value":R,"data-highlight":true},b=S?{onMouseEnter:o=>{v(R),r.props.onMouseEnter?.(o);},onMouseLeave:o=>{v(null),r.props.onMouseLeave?.(o);}}:O?{onClick:o=>{v(R),r.props.onClick?.(o);}}:{};return K?g==="children"?n.cloneElement(r,{key:R,ref:c,className:cn("relative",r.props.className),...Z(r,{...p,"data-slot":"motion-highlight-item-container"}),...b,...q},jsxs(Fragment,{children:[jsx(AnimatePresence,{initial:false,mode:"wait",children:C&&!F&&jsx(motion.div,{animate:{opacity:1},className:cn(A,u),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...T,delay:(T?.delay??0)+($??U??0)/1e3}},initial:{opacity:0},layoutId:`transition-background-${w}`,style:{position:"absolute",zIndex:0,...V,...f},transition:T,...p})}),jsx(G,{className:l,"data-slot":"motion-highlight-item",style:{position:"relative",zIndex:1},...p,children:i})]})):n.cloneElement(r,{ref:c,...Z(r,{...p,"data-slot":"motion-highlight-item"}),...b}):k?jsxs(G,{ref:a,className:cn(g==="children"&&"relative",l),"data-slot":"motion-highlight-item-container",...p,...q,...b,children:[g==="children"&&jsx(AnimatePresence,{initial:false,mode:"wait",children:C&&!F&&jsx(motion.div,{animate:{opacity:1},className:cn(A,u),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...T,delay:(T?.delay??0)+($??U??0)/1e3}},initial:{opacity:0},layoutId:`transition-background-${w}`,style:{position:"absolute",zIndex:0,...V,...f},transition:T,...p})}),n.cloneElement(r,{style:{position:"relative",zIndex:1},className:r.props.className,...Z(r,{...p,"data-slot":"motion-highlight-item"})})]},R):i}var[Dt,ut]=getStrictContext("TabsContext");function gt({value:t,defaultValue:e,onValueChange:i,...s}){let[d,l]=useControllableState({prop:t,defaultProp:e||"",onChange:i});return jsx(Dt,{value:{value:d,setValue:l},children:jsx(H.Root,{"data-slot":"tabs",value:d,onValueChange:l,...s})})}function mt({transition:t={type:"spring",stiffness:200,damping:25},...e}){let{value:i}=ut();return jsx(dt,{click:false,controlledItems:true,"data-slot":"tabs-highlight",transition:t,value:i,...e})}function ht(t){return jsx(H.List,{"data-slot":"tabs-list",...t})}function ft(t){return jsx(it,{"data-slot":"tabs-highlight-item",...t})}function Tt(t){return jsx(H.Trigger,{"data-slot":"tabs-trigger",...t})}function bt({value:t,forceMount:e,transition:i={duration:.5,ease:"easeInOut"},...s}){return jsx(AnimatePresence,{mode:"wait",children:jsx(H.Content,{asChild:true,forceMount:e,value:t,children:jsx(motion.div,{animate:{opacity:1,filter:"blur(0px)"},"data-slot":"tabs-content",exit:{opacity:0,filter:"blur(4px)"},initial:{opacity:0,filter:"blur(4px)"},layout:true,layoutDependency:t,transition:i,...s})})})}var pt={type:"spring",stiffness:200,damping:30};function St(t){return !("mode"in t)||t.mode==="auto-height"}function yt(t){let{value:e}=ut();if(St(t)){let{transition:l=pt,...f}=t;return jsx(rt,{"data-slot":"tabs-contents",deps:[e],transition:l,...f})}let{transition:i=pt,style:s,...d}=t;return jsx(motion.div,{"data-slot":"tabs-contents",layout:"size",layoutDependency:e,style:{overflow:"hidden",...s},transition:{layout:i},...d})}function re({className:t,variant:e="default",...i}){return jsx(gt,{className:cn("group/tabs flex flex-col gap-2",t),"data-variant":e,...i})}function le({className:t,highlightClassName:e,...i}){return jsx(mt,{className:cn("absolute z-0","group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-transparent group-data-[variant=default]/tabs:rounded-md group-data-[variant=default]/tabs:bg-primary group-data-[variant=default]/tabs:shadow-sm","group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary",e),children:jsx(ht,{className:cn("inline-flex w-fit items-center justify-center","group-data-[variant=default]/tabs:bg-bg-primary group-data-[variant=default]/tabs:h-9 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.75","group-data-[variant=underline]/tabs:gap-7",t),...i})})}function de({className:t,...e}){return jsx(ft,{className:"flex-1",value:e.value,children:jsx(Tt,{className:cn("group/tabs-trigger data-[state=active]:text-text-brand-tertiary-alt focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-500 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=default]/tabs:px-2 group-data-[variant=default]/tabs:py-1","group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3",t),...e})})}function pe(t){return jsx(yt,{...t})}function ce({className:t,...e}){return jsx(bt,{className:cn("flex-1 outline-none",t),...e})}export{re as a,le as b,de as c,pe as d,ce as e};//# sourceMappingURL=chunk-PC4FRLZM.js.map
2
+ //# sourceMappingURL=chunk-PC4FRLZM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/primitives/slot.tsx","../src/effects/auto-height.tsx","../src/effects/highlight.tsx","../src/primitives/tabs.tsx","../src/ui/tabs.tsx"],"names":["mergeRefs","refs","node","ref","mergeProps","childProps","slotProps","merged","cn","Slot","children","props","isAlreadyMotion","isMotionComponent","Base","J","motion","childRef","mergedProps","jsx","AutoHeight","deps","transition","style","animate","asChild","height","useAutoHeight","Comp","DEFAULT_BOUNDS_OFFSET","HighlightContext","useHighlight","context","Highlight","Component","value","defaultValue","onValueChange","className","hover","click","enabled","controlledItems","disabled","exitDelay","mode","localRef","boundsOffset","boundsOffsetTop","boundsOffsetLeft","boundsOffsetWidth","boundsOffsetHeight","boundsOffsetRef","activeValue","setActiveValue","boundsState","setBoundsState","activeClassNameState","setActiveClassNameState","safeSetActiveValue","id","prev","safeSetBoundsRef","bounds","containerRect","offset","newBounds","safeSetBounds","clearBounds","container","onScroll","activeEl","render","jsxs","AnimatePresence","child","index","HighlightItem","getNonOverridingDataAttributes","element","dataAttributes","acc","key","as","activeClassName","forceUpdateBounds","itemId","setBounds","contextClassName","contextStyle","contextTransition","contextId","contextDisabled","contextExitDelay","contextForceUpdateBounds","setActiveClassName","childValue","isActive","isDisabled","itemTransition","refCallback","rafId","previousBounds","shouldUpdateBounds","updateBounds","commonHandlers","e","Fragment","TabsProvider","useTabs","getStrictContext","Tabs","valueProp","setValue","useControllableState","TabsHighlight","TabsList","TabsHighlightItem","TabsTrigger","TabsContent","forceMount","defaultTransition","isAutoMode","TabsContents","autoProps","layoutProps","variant","highlightClassName"],"mappings":"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","file":"chunk-PC4FRLZM.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n type HTMLMotionProps,\n isMotionComponent,\n motion\n} from \"motion/react\"\n\nimport { cn } from \"@xploreu/lib/cn\"\n\ntype AnyProps = Record<string, unknown>\n\ntype DOMMotionProps<T extends HTMLElement = HTMLElement> = Omit<\n HTMLMotionProps<keyof Omit<HTMLElementTagNameMap, `gmpx${string}`>>,\n \"ref\"\n> & { ref?: React.Ref<T> }\n\ntype WithAsChild<Base extends object> =\n | (Base & { asChild: true; children: React.ReactElement })\n | (Base & { asChild?: false | undefined })\n\ntype SlotProps<T extends HTMLElement = HTMLElement> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children?: any;\n} & DOMMotionProps<T>\n\nfunction mergeRefs<T>(\n ...refs: (React.Ref<T> | undefined)[]\n): React.RefCallback<T> {\n return (node) => {\n refs.forEach((ref) => {\n if (!ref) return\n if (typeof ref === \"function\") {\n ref(node)\n } else {\n (ref as React.RefObject<T | null>).current = node\n }\n })\n }\n}\n\nfunction mergeProps<T extends HTMLElement>(\n childProps: AnyProps,\n slotProps: DOMMotionProps<T>,\n): AnyProps {\n const merged: AnyProps = { ...childProps, ...slotProps }\n\n if (childProps.className || slotProps.className) {\n merged.className = cn(\n childProps.className as string,\n slotProps.className as string,\n )\n }\n\n if (childProps.style || slotProps.style) {\n merged.style = {\n ...(childProps.style as React.CSSProperties),\n ...(slotProps.style as React.CSSProperties),\n }\n }\n\n return merged\n}\n\nfunction Slot<T extends HTMLElement = HTMLElement>({\n children,\n ref,\n ...props\n}: SlotProps<T>) {\n const isAlreadyMotion =\n typeof children.type === \"object\" &&\n children.type !== null &&\n isMotionComponent(children.type)\n\n const Base = React.useMemo(\n () =>\n isAlreadyMotion\n ? (children.type as React.ElementType)\n : motion.create(children.type as React.ElementType),\n [isAlreadyMotion, children.type],\n )\n\n if (!React.isValidElement(children)) return null\n\n const { ref: childRef, ...childProps } = children.props as AnyProps\n\n const mergedProps = mergeProps(childProps, props)\n\n return (\n // eslint-disable-next-line react-hooks/static-components\n <Base\n {...mergedProps}\n ref={mergeRefs(childRef as React.Ref<T>, ref)}\n />\n )\n}\n\nexport {\n type AnyProps,\n type DOMMotionProps,\n Slot,\n type SlotProps,\n type WithAsChild,\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n type HTMLMotionProps,\n type LegacyAnimationControls,\n motion,\n type TargetAndTransition,\n type Transition,\n} from \"motion/react\"\n\nimport { Slot, type WithAsChild } from \"../primitives/slot\"\nimport { useAutoHeight } from \"@xploreu/hooks/use-auto-height\"\n\ntype AutoHeightProps = WithAsChild<\n {\n children: React.ReactNode;\n deps?: React.DependencyList;\n animate?: TargetAndTransition | LegacyAnimationControls;\n transition?: Transition;\n } & Omit<HTMLMotionProps<\"div\">, \"animate\">\n>\n\nfunction AutoHeight({\n children,\n deps = [],\n transition = {\n type: \"spring\",\n stiffness: 300,\n damping: 30,\n bounce: 0,\n restDelta: 0.01,\n },\n style,\n animate,\n asChild = false,\n ...props\n}: AutoHeightProps) {\n const { ref, height } = useAutoHeight<HTMLDivElement>(deps)\n\n const Comp = asChild ? Slot : motion.div\n\n return (\n <Comp\n animate={{ height, ...animate }}\n style={{ overflow: \"hidden\", ...style }}\n transition={transition}\n {...props}\n >\n <div ref={ref}>\n {children}\n </div>\n </Comp>\n )\n}\n\nexport { AutoHeight, type AutoHeightProps }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n AnimatePresence,\n motion,\n type Transition\n} from \"motion/react\"\n\nimport { cn } from \"@xploreu/lib/cn\"\n\ntype HighlightMode = \"children\" | \"parent\"\n\ntype Bounds = {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nconst DEFAULT_BOUNDS_OFFSET: Bounds = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n}\n\ntype HighlightContextType<T extends string> = {\n as?: keyof HTMLElementTagNameMap;\n mode: HighlightMode;\n activeValue: T | null;\n setActiveValue: (value: T | null) => void;\n setBounds: (bounds: DOMRect) => void;\n clearBounds: () => void;\n id: string;\n hover: boolean;\n click: boolean;\n className?: string;\n style?: React.CSSProperties;\n activeClassName?: string;\n setActiveClassName: (className: string) => void;\n transition?: Transition;\n disabled?: boolean;\n enabled?: boolean;\n exitDelay?: number;\n forceUpdateBounds?: boolean;\n}\n\nconst HighlightContext = React.createContext<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n HighlightContextType<any> | undefined\n>(undefined)\n\nfunction useHighlight<T extends string>(): HighlightContextType<T> {\n const context = React.useContext(HighlightContext)\n if (!context) {\n throw new Error(\"useHighlight must be used within a HighlightProvider\")\n }\n return context as unknown as HighlightContextType<T>\n}\n\ntype BaseHighlightProps<T extends React.ElementType = \"div\"> = {\n as?: T;\n ref?: React.Ref<HTMLDivElement>;\n mode?: HighlightMode;\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n className?: string;\n style?: React.CSSProperties;\n transition?: Transition;\n hover?: boolean;\n click?: boolean;\n disabled?: boolean;\n enabled?: boolean;\n exitDelay?: number;\n}\n\ntype ParentModeHighlightProps = {\n boundsOffset?: Partial<Bounds>;\n containerClassName?: string;\n forceUpdateBounds?: boolean;\n}\n\ntype ControlledParentModeHighlightProps<T extends React.ElementType = \"div\"> =\n BaseHighlightProps<T> &\n ParentModeHighlightProps & {\n mode: \"parent\";\n controlledItems: true;\n children: React.ReactNode;\n }\n\ntype ControlledChildrenModeHighlightProps<T extends React.ElementType = \"div\"> =\n BaseHighlightProps<T> & {\n mode?: \"children\" | undefined;\n controlledItems: true;\n children: React.ReactNode;\n }\n\ntype UncontrolledParentModeHighlightProps<T extends React.ElementType = \"div\"> =\n BaseHighlightProps<T> &\n ParentModeHighlightProps & {\n mode: \"parent\";\n controlledItems?: false;\n itemsClassName?: string;\n children: React.ReactElement | React.ReactElement[];\n }\n\ntype UncontrolledChildrenModeHighlightProps<\n T extends React.ElementType = \"div\",\n> = BaseHighlightProps<T> & {\n mode?: \"children\";\n controlledItems?: false;\n itemsClassName?: string;\n children: React.ReactElement | React.ReactElement[];\n}\n\ntype HighlightProps<T extends React.ElementType = \"div\"> =\n | ControlledParentModeHighlightProps<T>\n | ControlledChildrenModeHighlightProps<T>\n | UncontrolledParentModeHighlightProps<T>\n | UncontrolledChildrenModeHighlightProps<T>\n\nfunction Highlight<T extends React.ElementType = \"div\">({\n ref,\n ...props\n}: HighlightProps<T>) {\n const {\n as: Component = \"div\",\n children,\n value,\n defaultValue,\n onValueChange,\n className,\n style,\n transition = { type: \"spring\", stiffness: 350, damping: 35 },\n hover = false,\n click = true,\n enabled = true,\n controlledItems,\n disabled = false,\n exitDelay = 200,\n mode = \"children\",\n } = props\n\n const localRef = React.useRef<HTMLDivElement>(null)\n React.useImperativeHandle(ref, () => localRef.current as HTMLDivElement)\n\n const propsBoundsOffset = (props as ParentModeHighlightProps)?.boundsOffset\n const boundsOffset = propsBoundsOffset ?? DEFAULT_BOUNDS_OFFSET\n const boundsOffsetTop = boundsOffset.top ?? 0\n const boundsOffsetLeft = boundsOffset.left ?? 0\n const boundsOffsetWidth = boundsOffset.width ?? 0\n const boundsOffsetHeight = boundsOffset.height ?? 0\n\n const boundsOffsetRef = React.useRef({\n top: boundsOffsetTop,\n left: boundsOffsetLeft,\n width: boundsOffsetWidth,\n height: boundsOffsetHeight,\n })\n\n React.useEffect(() => {\n boundsOffsetRef.current = {\n top: boundsOffsetTop,\n left: boundsOffsetLeft,\n width: boundsOffsetWidth,\n height: boundsOffsetHeight,\n }\n }, [\n boundsOffsetTop,\n boundsOffsetLeft,\n boundsOffsetWidth,\n boundsOffsetHeight,\n ])\n\n const [activeValue, setActiveValue] = React.useState<string | null>(\n value ?? defaultValue ?? null,\n )\n const [boundsState, setBoundsState] = React.useState<Bounds | null>(null)\n const [activeClassNameState, setActiveClassNameState] =\n React.useState<string>(\"\")\n\n const safeSetActiveValue = (id: string | null) => {\n setActiveValue((prev) => {\n if (prev !== id) {\n onValueChange?.(id)\n return id\n }\n return prev\n })\n }\n\n const safeSetBoundsRef = React.useRef<\n ((bounds: DOMRect) => void) | undefined\n >(undefined)\n\n React.useEffect(() => {\n safeSetBoundsRef.current = (bounds: DOMRect) => {\n if (!localRef.current) return\n\n const containerRect = localRef.current.getBoundingClientRect()\n const offset = boundsOffsetRef.current\n const newBounds: Bounds = {\n top: bounds.top - containerRect.top + offset.top,\n left: bounds.left - containerRect.left + offset.left,\n width: bounds.width + offset.width,\n height: bounds.height + offset.height,\n }\n\n setBoundsState((prev) => {\n if (\n prev &&\n prev.top === newBounds.top &&\n prev.left === newBounds.left &&\n prev.width === newBounds.width &&\n prev.height === newBounds.height\n ) {\n return prev\n }\n return newBounds\n })\n }\n })\n\n const safeSetBounds = (bounds: DOMRect) => {\n safeSetBoundsRef.current?.(bounds)\n }\n\n const clearBounds = React.useCallback(() => {\n setBoundsState((prev) => (prev === null ? prev : null))\n }, [])\n\n React.useEffect(() => {\n if (value !== undefined) setActiveValue(value)\n else if (defaultValue !== undefined) setActiveValue(defaultValue)\n }, [value, defaultValue])\n\n const id = React.useId()\n\n React.useEffect(() => {\n if (mode !== \"parent\") return\n const container = localRef.current\n if (!container) return\n\n const onScroll = () => {\n if (!activeValue) return\n const activeEl = container.querySelector<HTMLElement>(\n `[data-value=\"${activeValue}\"][data-highlight=\"true\"]`,\n )\n if (activeEl)\n safeSetBoundsRef.current?.(activeEl.getBoundingClientRect())\n }\n\n container.addEventListener(\"scroll\", onScroll, { passive: true })\n return () => container.removeEventListener(\"scroll\", onScroll)\n }, [mode, activeValue])\n\n const render = (children: React.ReactNode) => {\n if (mode === \"parent\") {\n return (\n <Component\n ref={localRef}\n className={(props as ParentModeHighlightProps)?.containerClassName}\n data-slot=\"motion-highlight-container\"\n style={{ position: \"relative\", zIndex: 1 }}\n >\n <AnimatePresence\n initial={false}\n mode=\"wait\"\n >\n {boundsState && (\n <motion.div\n animate={{\n top: boundsState.top,\n left: boundsState.left,\n width: boundsState.width,\n height: boundsState.height,\n opacity: 1,\n }}\n className={cn(className, activeClassNameState)}\n data-slot=\"motion-highlight\"\n exit={{\n opacity: 0,\n transition: {\n ...transition,\n delay: (transition?.delay ?? 0) + (exitDelay ?? 0) / 1000,\n },\n }}\n initial={{\n top: boundsState.top,\n left: boundsState.left,\n width: boundsState.width,\n height: boundsState.height,\n opacity: 0,\n }}\n style={{ position: \"absolute\", zIndex: 0, ...style }}\n transition={transition}\n />\n )}\n </AnimatePresence>\n {children}\n </Component>\n )\n }\n\n return children\n }\n\n return (\n <HighlightContext.Provider\n value={{\n mode,\n activeValue,\n setActiveValue: safeSetActiveValue,\n id,\n hover,\n click,\n className,\n style,\n transition,\n disabled,\n enabled,\n exitDelay,\n setBounds: safeSetBounds,\n clearBounds,\n activeClassName: activeClassNameState,\n setActiveClassName: setActiveClassNameState,\n forceUpdateBounds: (props as ParentModeHighlightProps)\n ?.forceUpdateBounds,\n }}\n >\n {enabled\n ? controlledItems\n ? render(children)\n : render(\n React.Children.map(children, (child, index) => (\n <HighlightItem\n key={index}\n className={props?.itemsClassName}\n >\n {child}\n </HighlightItem>\n )),\n )\n : children}\n </HighlightContext.Provider>\n )\n}\n\nfunction getNonOverridingDataAttributes(\n element: React.ReactElement,\n dataAttributes: Record<string, unknown>,\n): Record<string, unknown> {\n return Object.keys(dataAttributes).reduce<Record<string, unknown>>(\n (acc, key) => {\n if ((element.props as Record<string, unknown>)[key] === undefined) {\n acc[key] = dataAttributes[key]\n }\n return acc\n },\n {},\n )\n}\n\ntype ExtendedChildProps = React.ComponentProps<\"div\"> & {\n id?: string;\n ref?: React.Ref<HTMLElement>;\n \"data-active\"?: string;\n \"data-value\"?: string;\n \"data-disabled\"?: boolean;\n \"data-highlight\"?: boolean;\n \"data-slot\"?: string;\n}\n\ntype HighlightItemProps<T extends React.ElementType = \"div\"> =\n React.ComponentProps<T> & {\n as?: T;\n children: React.ReactElement;\n id?: string;\n value?: string;\n className?: string;\n style?: React.CSSProperties;\n transition?: Transition;\n activeClassName?: string;\n disabled?: boolean;\n exitDelay?: number;\n asChild?: boolean;\n forceUpdateBounds?: boolean;\n }\n\nfunction HighlightItem<T extends React.ElementType>({\n ref,\n as,\n children,\n id,\n value,\n className,\n style,\n transition,\n disabled = false,\n activeClassName,\n exitDelay,\n asChild = false,\n forceUpdateBounds,\n ...props\n}: HighlightItemProps<T>) {\n const itemId = React.useId()\n const {\n activeValue,\n setActiveValue,\n mode,\n setBounds,\n clearBounds,\n hover,\n click,\n enabled,\n className: contextClassName,\n style: contextStyle,\n transition: contextTransition,\n id: contextId,\n disabled: contextDisabled,\n exitDelay: contextExitDelay,\n forceUpdateBounds: contextForceUpdateBounds,\n setActiveClassName,\n } = useHighlight()\n\n const Component = as ?? \"div\"\n const element = children as React.ReactElement<ExtendedChildProps>\n const childValue =\n id ?? value ?? element.props?.[\"data-value\"] ?? element.props?.id ?? itemId\n const isActive = activeValue === childValue\n const isDisabled = disabled === undefined ? contextDisabled : disabled\n const itemTransition = transition ?? contextTransition\n\n const localRef = React.useRef<HTMLDivElement>(null)\n React.useImperativeHandle(ref, () => localRef.current as HTMLDivElement)\n\n const refCallback = React.useCallback((node: HTMLElement | null) => {\n localRef.current = node as HTMLDivElement\n }, [])\n\n React.useEffect(() => {\n if (mode !== \"parent\") return\n let rafId: number\n let previousBounds: Bounds | null = null\n const shouldUpdateBounds =\n forceUpdateBounds === true ||\n (contextForceUpdateBounds && forceUpdateBounds !== false)\n\n const updateBounds = () => {\n if (!localRef.current) return\n\n const bounds = localRef.current.getBoundingClientRect()\n\n if (shouldUpdateBounds) {\n if (\n previousBounds &&\n previousBounds.top === bounds.top &&\n previousBounds.left === bounds.left &&\n previousBounds.width === bounds.width &&\n previousBounds.height === bounds.height\n ) {\n rafId = requestAnimationFrame(updateBounds)\n return\n }\n previousBounds = bounds\n rafId = requestAnimationFrame(updateBounds)\n }\n\n setBounds(bounds)\n }\n\n if (isActive) {\n updateBounds()\n setActiveClassName(activeClassName ?? \"\")\n } else if (!activeValue) clearBounds()\n\n if (shouldUpdateBounds) return () => cancelAnimationFrame(rafId)\n }, [\n mode,\n isActive,\n activeValue,\n setBounds,\n clearBounds,\n activeClassName,\n setActiveClassName,\n forceUpdateBounds,\n contextForceUpdateBounds,\n ])\n\n if (!React.isValidElement(children)) return children\n\n const dataAttributes = {\n \"data-active\": isActive ? \"true\" : \"false\",\n \"aria-selected\": isActive,\n \"data-disabled\": isDisabled,\n \"data-value\": childValue,\n \"data-highlight\": true,\n }\n\n const commonHandlers = hover\n ? {\n onMouseEnter: (e: React.MouseEvent<HTMLDivElement>) => {\n setActiveValue(childValue)\n element.props.onMouseEnter?.(e)\n },\n onMouseLeave: (e: React.MouseEvent<HTMLDivElement>) => {\n setActiveValue(null)\n element.props.onMouseLeave?.(e)\n },\n }\n : click\n ? {\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\n setActiveValue(childValue)\n element.props.onClick?.(e)\n },\n }\n : {}\n\n if (asChild) {\n if (mode === \"children\") {\n return React.cloneElement(\n element,\n {\n key: childValue,\n ref: refCallback,\n className: cn(\"relative\", element.props.className),\n ...getNonOverridingDataAttributes(element, {\n ...dataAttributes,\n \"data-slot\": \"motion-highlight-item-container\",\n }),\n ...commonHandlers,\n ...props,\n },\n <>\n <AnimatePresence\n initial={false}\n mode=\"wait\"\n >\n {isActive && !isDisabled && (\n <motion.div\n animate={{ opacity: 1 }}\n className={cn(contextClassName, activeClassName)}\n data-slot=\"motion-highlight\"\n exit={{\n opacity: 0,\n transition: {\n ...itemTransition,\n delay:\n (itemTransition?.delay ?? 0) +\n (exitDelay ?? contextExitDelay ?? 0) / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n layoutId={`transition-background-${contextId}`}\n style={{\n position: \"absolute\",\n zIndex: 0,\n ...contextStyle,\n ...style,\n }}\n transition={itemTransition}\n {...dataAttributes}\n />\n )}\n </AnimatePresence>\n\n <Component\n className={className}\n data-slot=\"motion-highlight-item\"\n style={{ position: \"relative\", zIndex: 1 }}\n {...dataAttributes}\n >\n {children}\n </Component>\n </>,\n )\n }\n\n return React.cloneElement(element, {\n ref: refCallback,\n ...getNonOverridingDataAttributes(element, {\n ...dataAttributes,\n \"data-slot\": \"motion-highlight-item\",\n }),\n ...commonHandlers,\n })\n }\n\n return enabled ? (\n <Component\n key={childValue}\n ref={localRef}\n className={cn(mode === \"children\" && \"relative\", className)}\n data-slot=\"motion-highlight-item-container\"\n {...dataAttributes}\n {...props}\n {...commonHandlers}\n >\n {mode === \"children\" && (\n <AnimatePresence\n initial={false}\n mode=\"wait\"\n >\n {isActive && !isDisabled && (\n <motion.div\n animate={{ opacity: 1 }}\n className={cn(contextClassName, activeClassName)}\n data-slot=\"motion-highlight\"\n exit={{\n opacity: 0,\n transition: {\n ...itemTransition,\n delay:\n (itemTransition?.delay ?? 0) +\n (exitDelay ?? contextExitDelay ?? 0) / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n layoutId={`transition-background-${contextId}`}\n style={{\n position: \"absolute\",\n zIndex: 0,\n ...contextStyle,\n ...style,\n }}\n transition={itemTransition}\n {...dataAttributes}\n />\n )}\n </AnimatePresence>\n )}\n\n {React.cloneElement(element, {\n style: { position: \"relative\", zIndex: 1 },\n className: element.props.className,\n ...getNonOverridingDataAttributes(element, {\n ...dataAttributes,\n \"data-slot\": \"motion-highlight-item\",\n }),\n })}\n </Component>\n ) : (\n children\n )\n}\n\nexport {\n Highlight,\n HighlightItem,\n type HighlightItemProps,\n type HighlightProps,\n useHighlight,\n}","\"use client\"\n\nimport * as React from \"react\"\n\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\"\nimport {\n AnimatePresence,\n type HTMLMotionProps,\n motion,\n type Transition,\n} from \"motion/react\"\n\nimport { AutoHeight, type AutoHeightProps } from \"../effects/auto-height\"\nimport {\n Highlight,\n HighlightItem,\n type HighlightItemProps,\n type HighlightProps,\n} from \"../effects/highlight\"\nimport { getStrictContext } from \"@xploreu/lib/get-strict-context\"\n\ntype TabsContextType = {\n value: string | undefined;\n setValue: TabsProps[\"onValueChange\"];\n}\n\nconst [TabsProvider, useTabs] =\n getStrictContext<TabsContextType>(\"TabsContext\")\n\ntype TabsProps = React.ComponentProps<typeof TabsPrimitive.Root>\n\nfunction Tabs({\n value: valueProp,\n defaultValue,\n onValueChange,\n ...props\n}: TabsProps) {\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue || \"\",\n onChange: onValueChange,\n })\n\n return (\n <TabsProvider value={{ value, setValue }}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n value={value}\n onValueChange={setValue}\n {...props}\n />\n </TabsProvider>\n )\n}\n\ntype TabsHighlightProps = Omit<HighlightProps, \"controlledItems\" | \"value\">\n\nfunction TabsHighlight({\n transition = { type: \"spring\", stiffness: 200, damping: 25 },\n ...props\n}: TabsHighlightProps) {\n const { value } = useTabs()\n\n return (\n <Highlight\n click={false}\n controlledItems\n data-slot=\"tabs-highlight\"\n transition={transition}\n value={value}\n {...props}\n />\n )\n}\n\ntype TabsListProps = React.ComponentProps<typeof TabsPrimitive.List>\n\nfunction TabsList(props: TabsListProps) {\n return <TabsPrimitive.List\n data-slot=\"tabs-list\"\n {...props}\n />\n}\n\ntype TabsHighlightItemProps = HighlightItemProps & {\n value: string;\n}\n\nfunction TabsHighlightItem(props: TabsHighlightItemProps) {\n return <HighlightItem\n data-slot=\"tabs-highlight-item\"\n {...props}\n />\n}\n\ntype TabsTriggerProps = React.ComponentProps<typeof TabsPrimitive.Trigger>\n\nfunction TabsTrigger(props: TabsTriggerProps) {\n return <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n {...props}\n />\n}\n\ntype TabsContentProps = React.ComponentProps<typeof TabsPrimitive.Content> &\n HTMLMotionProps<\"div\">\n\nfunction TabsContent({\n value,\n forceMount,\n transition = { duration: 0.5, ease: \"easeInOut\" },\n ...props\n}: TabsContentProps) {\n return (\n <AnimatePresence mode=\"wait\">\n <TabsPrimitive.Content\n asChild\n forceMount={forceMount}\n value={value}\n >\n <motion.div\n animate={{ opacity: 1, filter: \"blur(0px)\" }}\n data-slot=\"tabs-content\"\n exit={{ opacity: 0, filter: \"blur(4px)\" }}\n initial={{ opacity: 0, filter: \"blur(4px)\" }}\n layout\n layoutDependency={value}\n transition={transition}\n {...props}\n />\n </TabsPrimitive.Content>\n </AnimatePresence>\n )\n}\n\ntype TabsContentsAutoProps = AutoHeightProps & {\n mode?: \"auto-height\";\n children: React.ReactNode;\n transition?: Transition;\n}\n\ntype TabsContentsLayoutProps = Omit<HTMLMotionProps<\"div\">, \"transition\"> & {\n mode: \"layout\";\n children: React.ReactNode;\n transition?: Transition;\n}\n\ntype TabsContentsProps = TabsContentsAutoProps | TabsContentsLayoutProps\n\nconst defaultTransition: Transition = {\n type: \"spring\",\n stiffness: 200,\n damping: 30,\n}\n\nfunction isAutoMode(props: TabsContentsProps): props is TabsContentsAutoProps {\n return !(\"mode\" in props) || props.mode === \"auto-height\"\n}\n\nfunction TabsContents(props: TabsContentsProps) {\n const { value } = useTabs()\n\n if (isAutoMode(props)) {\n const { transition = defaultTransition, ...autoProps } = props\n\n return (\n <AutoHeight\n data-slot=\"tabs-contents\"\n deps={[value]}\n transition={transition}\n {...autoProps}\n />\n )\n }\n\n const { transition = defaultTransition, style, ...layoutProps } = props\n\n return (\n <motion.div\n data-slot=\"tabs-contents\"\n layout=\"size\"\n layoutDependency={value}\n style={{ overflow: \"hidden\", ...style }}\n transition={{ layout: transition }}\n {...layoutProps}\n />\n )\n}\n\nexport {\n Tabs,\n TabsContent,\n type TabsContentProps,\n TabsContents,\n type TabsContentsProps,\n TabsHighlight,\n TabsHighlightItem,\n type TabsHighlightItemProps,\n type TabsHighlightProps,\n TabsList,\n type TabsListProps,\n type TabsProps,\n TabsTrigger,\n type TabsTriggerProps,\n}","import * as React from \"react\"\n\nimport {\n Tabs as TabsPrimitive,\n TabsContent as TabsContentPrimitive,\n type TabsContentProps as TabsContentPrimitiveProps,\n TabsContents as TabsContentsPrimitive,\n type TabsContentsProps as TabsContentsPrimitiveProps,\n TabsHighlight as TabsHighlightPrimitive,\n TabsHighlightItem as TabsHighlightItemPrimitive,\n TabsList as TabsListPrimitive,\n type TabsListProps as TabsListPrimitiveProps,\n type TabsProps as TabsPrimitiveProps,\n TabsTrigger as TabsTriggerPrimitive,\n type TabsTriggerProps as TabsTriggerPrimitiveProps,\n} from \"../primitives/tabs\"\nimport { cn } from \"@xploreu/lib/cn\"\n\ntype TabsProps = TabsPrimitiveProps & {\n variant?: \"default\" | \"underline\";\n}\n\nfunction Tabs({\n className,\n variant = \"default\",\n ...props\n}: TabsProps) {\n return (\n <TabsPrimitive\n className={cn(\"group/tabs flex flex-col gap-2\", className)}\n data-variant={variant}\n {...props}\n />\n )\n}\n\ntype TabsListProps = TabsListPrimitiveProps & {\n highlightClassName?: string;\n}\n\nfunction TabsList({\n className,\n highlightClassName,\n ...props\n}: TabsListProps) {\n return (\n <TabsHighlightPrimitive\n className={cn(\n \"absolute z-0\",\n \"group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-transparent group-data-[variant=default]/tabs:rounded-md group-data-[variant=default]/tabs:bg-primary group-data-[variant=default]/tabs:shadow-sm\",\n \"group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary\",\n highlightClassName\n )}\n >\n <TabsListPrimitive\n className={cn(\n \"inline-flex w-fit items-center justify-center\",\n \"group-data-[variant=default]/tabs:bg-bg-primary group-data-[variant=default]/tabs:h-9 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.75\",\n \"group-data-[variant=underline]/tabs:gap-7\",\n className,\n )}\n {...props}\n />\n </TabsHighlightPrimitive>\n )\n}\n\ntype TabsTriggerProps = TabsTriggerPrimitiveProps\n\nfunction TabsTrigger({ className, ...props }: TabsTriggerProps) {\n return (\n <TabsHighlightItemPrimitive\n className=\"flex-1\"\n value={props.value}\n >\n <TabsTriggerPrimitive\n className={cn(\n \"group/tabs-trigger data-[state=active]:text-text-brand-tertiary-alt focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-500 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=default]/tabs:px-2 group-data-[variant=default]/tabs:py-1\",\n \"group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3\",\n className,\n )}\n {...props}\n />\n </TabsHighlightItemPrimitive>\n )\n}\n\ntype TabsContentsProps = TabsContentsPrimitiveProps\n\nfunction TabsContents(props: TabsContentsProps) {\n return <TabsContentsPrimitive {...props} />\n}\n\ntype TabsContentProps = TabsContentPrimitiveProps\n\nfunction TabsContent({ className, ...props }: TabsContentProps) {\n return (\n <TabsContentPrimitive\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Tabs,\n TabsContent,\n type TabsContentProps,\n TabsContents,\n type TabsContentsProps,\n TabsList,\n type TabsListProps,\n type TabsProps,\n TabsTrigger,\n type TabsTriggerProps,\n}"]}
package/dist/ui/button.js CHANGED
@@ -1,3 +1,2 @@
1
- export { Button, buttonVariants } from '../chunk-NLAZFIHF.js';
2
- //# sourceMappingURL=button.js.map
1
+ export{b as Button,a as buttonVariants}from'../chunk-CJONAIBS.js';//# sourceMappingURL=button.js.map
3
2
  //# sourceMappingURL=button.js.map
@@ -0,0 +1,39 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
3
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
4
+ import { HTMLMotionProps } from 'motion/react';
5
+
6
+ type DialogProps$1 = React$1.ComponentProps<typeof DialogPrimitive.Root>;
7
+ type DialogTriggerProps$1 = React$1.ComponentProps<typeof DialogPrimitive.Trigger>;
8
+ type DialogFlipDirection = "top" | "bottom" | "left" | "right";
9
+ type DialogContentProps$1 = Omit<React$1.ComponentProps<typeof DialogPrimitive.Content>, "forceMount" | "asChild"> & HTMLMotionProps<"div"> & {
10
+ from?: DialogFlipDirection;
11
+ };
12
+ type DialogCloseProps$1 = React$1.ComponentProps<typeof DialogPrimitive.Close>;
13
+ type DialogHeaderProps$1 = React$1.ComponentProps<"div">;
14
+ type DialogFooterProps$1 = React$1.ComponentProps<"div">;
15
+ type DialogTitleProps$1 = React$1.ComponentProps<typeof DialogPrimitive.Title>;
16
+ type DialogDescriptionProps$1 = React$1.ComponentProps<typeof DialogPrimitive.Description>;
17
+
18
+ type DialogProps = DialogProps$1;
19
+ declare function Dialog(props: DialogProps): react_jsx_runtime.JSX.Element;
20
+ type DialogTriggerProps = DialogTriggerProps$1;
21
+ declare function DialogTrigger(props: DialogTriggerProps): react_jsx_runtime.JSX.Element;
22
+ type DialogCloseProps = DialogCloseProps$1;
23
+ declare function DialogClose(props: DialogCloseProps): react_jsx_runtime.JSX.Element;
24
+ type DialogContentProps = DialogContentProps$1 & {
25
+ showCloseButton?: boolean;
26
+ closeClassName?: string;
27
+ onCloseClick?: React.MouseEventHandler;
28
+ };
29
+ declare function DialogContent({ className, children, showCloseButton, closeClassName, onCloseClick, ...props }: DialogContentProps): react_jsx_runtime.JSX.Element;
30
+ type DialogHeaderProps = DialogHeaderProps$1;
31
+ declare function DialogHeader({ className, ...props }: DialogHeaderProps): react_jsx_runtime.JSX.Element;
32
+ type DialogFooterProps = DialogFooterProps$1;
33
+ declare function DialogFooter({ className, ...props }: DialogFooterProps): react_jsx_runtime.JSX.Element;
34
+ type DialogTitleProps = DialogTitleProps$1;
35
+ declare function DialogTitle({ className, ...props }: DialogTitleProps): react_jsx_runtime.JSX.Element;
36
+ type DialogDescriptionProps = DialogDescriptionProps$1;
37
+ declare function DialogDescription({ className, ...props }: DialogDescriptionProps): react_jsx_runtime.JSX.Element;
38
+
39
+ export { Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, type DialogProps, DialogTitle, type DialogTitleProps, DialogTrigger, type DialogTriggerProps };
@@ -0,0 +1,2 @@
1
+ export{a as Dialog,c as DialogClose,d as DialogContent,h as DialogDescription,f as DialogFooter,e as DialogHeader,g as DialogTitle,b as DialogTrigger}from'../chunk-DRJAHT5N.js';//# sourceMappingURL=dialog.js.map
2
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"dialog.js"}
@@ -1,5 +1,10 @@
1
1
  export { Button, buttonVariants } from './button.js';
2
+ export { Dialog, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps } from './dialog.js';
3
+ export { Tabs, TabsContent, TabsContentProps, TabsContents, TabsContentsProps, TabsList, TabsListProps, TabsProps, TabsTrigger, TabsTriggerProps } from './tabs.js';
2
4
  import 'react/jsx-runtime';
3
5
  import 'class-variance-authority/types';
4
6
  import 'react';
5
7
  import 'class-variance-authority';
8
+ import '@radix-ui/react-dialog';
9
+ import 'motion/react';
10
+ import '@radix-ui/react-tabs';
package/dist/ui/index.js CHANGED
@@ -1,3 +1,2 @@
1
- export { Button, buttonVariants } from '../chunk-NLAZFIHF.js';
2
- //# sourceMappingURL=index.js.map
1
+ export{b as Button,a as buttonVariants}from'../chunk-CJONAIBS.js';export{a as Dialog,c as DialogClose,d as DialogContent,h as DialogDescription,f as DialogFooter,e as DialogHeader,g as DialogTitle,b as DialogTrigger}from'../chunk-DRJAHT5N.js';export{a as Tabs,e as TabsContent,d as TabsContents,b as TabsList,c as TabsTrigger}from'../chunk-PC4FRLZM.js';//# sourceMappingURL=index.js.map
3
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,51 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
4
+ import { TargetAndTransition, LegacyAnimationControls, Transition, HTMLMotionProps } from 'motion/react';
5
+
6
+ type WithAsChild<Base extends object> = (Base & {
7
+ asChild: true;
8
+ children: React.ReactElement;
9
+ }) | (Base & {
10
+ asChild?: false | undefined;
11
+ });
12
+
13
+ type AutoHeightProps = WithAsChild<{
14
+ children: React.ReactNode;
15
+ deps?: React.DependencyList;
16
+ animate?: TargetAndTransition | LegacyAnimationControls;
17
+ transition?: Transition;
18
+ } & Omit<HTMLMotionProps<"div">, "animate">>;
19
+
20
+ type TabsProps$1 = React.ComponentProps<typeof TabsPrimitive.Root>;
21
+ type TabsListProps$1 = React.ComponentProps<typeof TabsPrimitive.List>;
22
+ type TabsTriggerProps$1 = React.ComponentProps<typeof TabsPrimitive.Trigger>;
23
+ type TabsContentProps$1 = React.ComponentProps<typeof TabsPrimitive.Content> & HTMLMotionProps<"div">;
24
+ type TabsContentsAutoProps = AutoHeightProps & {
25
+ mode?: "auto-height";
26
+ children: React.ReactNode;
27
+ transition?: Transition;
28
+ };
29
+ type TabsContentsLayoutProps = Omit<HTMLMotionProps<"div">, "transition"> & {
30
+ mode: "layout";
31
+ children: React.ReactNode;
32
+ transition?: Transition;
33
+ };
34
+ type TabsContentsProps$1 = TabsContentsAutoProps | TabsContentsLayoutProps;
35
+
36
+ type TabsProps = TabsProps$1 & {
37
+ variant?: "default" | "underline";
38
+ };
39
+ declare function Tabs({ className, variant, ...props }: TabsProps): react_jsx_runtime.JSX.Element;
40
+ type TabsListProps = TabsListProps$1 & {
41
+ highlightClassName?: string;
42
+ };
43
+ declare function TabsList({ className, highlightClassName, ...props }: TabsListProps): react_jsx_runtime.JSX.Element;
44
+ type TabsTriggerProps = TabsTriggerProps$1;
45
+ declare function TabsTrigger({ className, ...props }: TabsTriggerProps): react_jsx_runtime.JSX.Element;
46
+ type TabsContentsProps = TabsContentsProps$1;
47
+ declare function TabsContents(props: TabsContentsProps): react_jsx_runtime.JSX.Element;
48
+ type TabsContentProps = TabsContentProps$1;
49
+ declare function TabsContent({ className, ...props }: TabsContentProps): react_jsx_runtime.JSX.Element;
50
+
51
+ export { Tabs, TabsContent, type TabsContentProps, TabsContents, type TabsContentsProps, TabsList, type TabsListProps, type TabsProps, TabsTrigger, type TabsTriggerProps };
@@ -0,0 +1,2 @@
1
+ export{a as Tabs,e as TabsContent,d as TabsContents,b as TabsList,c as TabsTrigger}from'../chunk-PC4FRLZM.js';//# sourceMappingURL=tabs.js.map
2
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tabs.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xploreu/components",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Shared UI components for XploreU apps",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -29,22 +29,30 @@
29
29
  "dist"
30
30
  ],
31
31
  "peerDependencies": {
32
+ "lucide-react": "^0.477.0",
32
33
  "react": ">=18",
33
- "react-dom": ">=18"
34
+ "react-dom": ">=18",
35
+ "@xploreu/hooks": "0.1.0",
36
+ "@xploreu/lib": "0.1.1"
34
37
  },
35
38
  "dependencies": {
39
+ "@radix-ui/react-dialog": "^1.1.15",
36
40
  "@radix-ui/react-slot": "^1.2.4",
37
- "class-variance-authority": "^0.7.1",
38
- "lucide-react": "^0.477.0",
39
- "@xploreu/lib": "0.1.0"
41
+ "@radix-ui/react-tabs": "^1.1.2",
42
+ "@radix-ui/react-use-controllable-state": "^1.2.2",
43
+ "motion": "^12.16.0",
44
+ "class-variance-authority": "^0.7.1"
40
45
  },
41
46
  "devDependencies": {
42
47
  "@types/react": "^19.2.2",
43
48
  "@types/react-dom": "^19.2.2",
49
+ "lucide-react": "^0.477.0",
44
50
  "react": "^19.2.4",
45
51
  "react-dom": "^19.2.4",
46
52
  "tsup": "^8.4.0",
47
- "typescript": "^5"
53
+ "typescript": "^5",
54
+ "@xploreu/hooks": "0.1.0",
55
+ "@xploreu/lib": "0.1.1"
48
56
  },
49
57
  "scripts": {
50
58
  "build": "tsup",
@@ -1,293 +0,0 @@
1
- import 'react';
2
- import { Slot } from '@radix-ui/react-slot';
3
- import { cva } from 'class-variance-authority';
4
- import { Loader2 } from 'lucide-react';
5
- import { cn } from '@xploreu/lib/cn';
6
- import { jsxs, jsx } from 'react/jsx-runtime';
7
-
8
- var buttonVariants = cva(
9
- cn(
10
- "group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0",
11
- // Disabled styles
12
- "disabled:cursor-not-allowed"
13
- ),
14
- {
15
- variants: {
16
- color: {
17
- default: "focus-visible:outline-focus-ring",
18
- destructive: "focus-visible:outline-focus-ring-error",
19
- "gradient-ai": "focus-visible:outline-focus-ring",
20
- "linear-green": "focus-visible:outline-focus-ring-success",
21
- "linear-overlay": "focus-visible:outline-focus-ring",
22
- "linear-destructive": "focus-visible:outline-focus-ring-error"
23
- },
24
- variant: {
25
- primary: "shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border",
26
- secondary: "shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle",
27
- "secondary-accent": "disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled",
28
- tertiary: "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled",
29
- "tertiary-accent": "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle",
30
- link: "underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline"
31
- },
32
- icon: {
33
- true: void 0,
34
- false: void 0
35
- },
36
- size: {
37
- sm: "text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",
38
- md: "text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",
39
- lg: "text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5",
40
- xl: "text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5"
41
- }
42
- },
43
- compoundVariants: [
44
- // Default Color Variants
45
- {
46
- variant: "primary",
47
- color: "default",
48
- className: "bg-gradient-buttons-gradient-blue text-text-primary-on-brand"
49
- },
50
- {
51
- variant: "secondary",
52
- color: "default",
53
- className: "bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
54
- },
55
- {
56
- variant: "secondary-accent",
57
- color: "default",
58
- className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
59
- },
60
- {
61
- variant: "tertiary",
62
- color: "default",
63
- className: "text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"
64
- },
65
- {
66
- variant: "tertiary-accent",
67
- color: "default",
68
- className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
69
- },
70
- {
71
- variant: "link",
72
- color: "default",
73
- className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
74
- },
75
- // Destructive Color Variants
76
- {
77
- variant: "primary",
78
- color: "destructive",
79
- className: "bg-bg-error-solid text-text-primary-on-brand"
80
- },
81
- {
82
- variant: "secondary",
83
- color: "destructive",
84
- className: "bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
85
- },
86
- {
87
- // Not existing in design system yet
88
- variant: "secondary-accent",
89
- color: "destructive",
90
- className: "border border-border-error text-fg-error-primary hover:bg-bg-error-primary"
91
- },
92
- {
93
- variant: "tertiary",
94
- color: "destructive",
95
- className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
96
- },
97
- {
98
- // Not existing in design system yet
99
- variant: "tertiary-accent",
100
- color: "destructive",
101
- className: "bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"
102
- },
103
- {
104
- variant: "link",
105
- color: "destructive",
106
- className: "text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
107
- },
108
- // Gradient AI
109
- {
110
- variant: "primary",
111
- color: "gradient-ai",
112
- className: "bg-gradient-buttons-button-ai text-text-primary-on-brand"
113
- },
114
- {
115
- variant: "secondary",
116
- color: "gradient-ai",
117
- className: "relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"
118
- },
119
- {
120
- // Not existing in design system yet
121
- variant: "secondary-accent",
122
- color: "gradient-ai",
123
- className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
124
- },
125
- {
126
- variant: "tertiary",
127
- color: "gradient-ai",
128
- className: "relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"
129
- },
130
- {
131
- // Not existing in design system yet
132
- variant: "tertiary-accent",
133
- color: "gradient-ai",
134
- className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
135
- },
136
- {
137
- // Not existing in design system yet
138
- variant: "link",
139
- color: "gradient-ai",
140
- className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
141
- },
142
- // Linear Green Color Variants
143
- {
144
- variant: "primary",
145
- color: "linear-green",
146
- className: "bg-gradient-buttons-gradient-green text-text-primary-on-brand"
147
- },
148
- {
149
- variant: "secondary",
150
- color: "linear-green",
151
- className: "bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900"
152
- },
153
- {
154
- // Not existing in design system yet
155
- variant: "secondary-accent",
156
- color: "linear-green",
157
- className: "border border-border-primary text-fg-primary hover:bg-bg-primary"
158
- },
159
- {
160
- variant: "tertiary",
161
- color: "linear-green",
162
- className: "text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900"
163
- },
164
- {
165
- // Not existing in design system yet
166
- variant: "tertiary-accent",
167
- color: "linear-green",
168
- className: "bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover"
169
- },
170
- {
171
- // Not existing in design system yet
172
- variant: "link",
173
- color: "linear-green",
174
- className: "text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary"
175
- },
176
- // Linear Overlay Color Variants
177
- {
178
- variant: "primary",
179
- color: "linear-overlay",
180
- className: "relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"
181
- },
182
- {
183
- variant: "secondary",
184
- color: "linear-overlay",
185
- className: "bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
186
- },
187
- {
188
- variant: "secondary-accent",
189
- color: "linear-overlay",
190
- className: "border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"
191
- },
192
- {
193
- variant: "tertiary",
194
- color: "linear-overlay",
195
- className: "text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover"
196
- },
197
- {
198
- variant: "tertiary-accent",
199
- color: "linear-overlay",
200
- className: "bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"
201
- },
202
- {
203
- variant: "link",
204
- color: "linear-overlay",
205
- className: "text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover"
206
- },
207
- // Linear Destructive Color Variants
208
- {
209
- variant: "primary",
210
- color: "linear-destructive",
211
- className: "relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"
212
- },
213
- {
214
- variant: "secondary",
215
- color: "linear-destructive",
216
- className: "bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover"
217
- },
218
- {
219
- // Not existing in design system yet
220
- variant: "secondary-accent",
221
- color: "linear-destructive",
222
- className: "border border-border-error text-fg-error-primary hover:bg-bg-error-primary"
223
- },
224
- {
225
- variant: "tertiary",
226
- color: "linear-destructive",
227
- className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary"
228
- },
229
- {
230
- // Not existing in design system yet
231
- variant: "tertiary-accent",
232
- color: "linear-destructive",
233
- className: "bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"
234
- },
235
- {
236
- variant: "link",
237
- color: "linear-destructive",
238
- className: "text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary"
239
- }
240
- ],
241
- defaultVariants: {
242
- variant: "primary",
243
- color: "default",
244
- size: "sm"
245
- }
246
- }
247
- );
248
- function Button({
249
- className,
250
- color,
251
- variant,
252
- size,
253
- asChild = false,
254
- loading = false,
255
- children,
256
- disabled,
257
- icon,
258
- ...props
259
- }) {
260
- const Comp = asChild ? Slot : "button";
261
- if (loading) {
262
- return /* @__PURE__ */ jsxs(
263
- Comp,
264
- {
265
- className: cn(buttonVariants({ color, variant, size, className })),
266
- "data-icon": icon ? "" : void 0,
267
- "data-slot": "button",
268
- disabled: true,
269
- ...props,
270
- children: [
271
- /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin" }),
272
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
273
- ]
274
- }
275
- );
276
- }
277
- return /* @__PURE__ */ jsx(
278
- Comp,
279
- {
280
- className: cn(buttonVariants({ color, variant, size, className })),
281
- "data-icon": icon ? "" : void 0,
282
- "data-slot": "button",
283
- "data-variant": variant,
284
- disabled,
285
- ...props,
286
- children
287
- }
288
- );
289
- }
290
-
291
- export { Button, buttonVariants };
292
- //# sourceMappingURL=chunk-NLAZFIHF.js.map
293
- //# sourceMappingURL=chunk-NLAZFIHF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/button.tsx"],"names":[],"mappings":"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","file":"chunk-NLAZFIHF.js","sourcesContent":["import * as React from \"react\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@xploreu/lib/cn\"\n\nconst buttonVariants = cva(\n cn(\n \"group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0\",\n // Disabled styles\n \"disabled:cursor-not-allowed\",\n ),\n {\n variants: {\n color: {\n default: \"focus-visible:outline-focus-ring\",\n destructive: \"focus-visible:outline-focus-ring-error\",\n \"gradient-ai\": \"focus-visible:outline-focus-ring\",\n \"linear-green\": \"focus-visible:outline-focus-ring-success\",\n \"linear-overlay\": \"focus-visible:outline-focus-ring\",\n \"linear-destructive\": \"focus-visible:outline-focus-ring-error\",\n },\n variant: {\n primary: \"shadow-xp-xs-skeumorphic before:rounded-lg before:absolute before:inset-0 before:border-2 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-[#F5F5F5] disabled:hover:after:bg-transparent disabled:shadow-xp-xs disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border\",\n secondary: \"shadow-xp-xs-skeumorphic border disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:shadow-xp-xs disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle\",\n \"secondary-accent\": \"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled\",\n tertiary: \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled\",\n \"tertiary-accent\": \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle\",\n link: \"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline\",\n },\n icon: {\n true: undefined,\n false: undefined\n },\n size: {\n sm: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n md: \"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\n lg: \"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n xl: \"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\n }\n },\n compoundVariants: [\n // Default Color Variants\n {\n variant: \"primary\",\n color: \"default\",\n className: \"bg-gradient-buttons-gradient-blue text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"default\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-text-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"default\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"default\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"default\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"default\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Destructive Color Variants\n {\n variant: \"primary\",\n color: \"destructive\",\n className: \"bg-bg-error-solid text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"destructive\",\n className: \"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error-subtle hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"destructive\",\n className: \"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n\n // Gradient AI\n {\n variant: \"primary\",\n color: \"gradient-ai\",\n className: \"bg-gradient-buttons-button-ai text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"gradient-ai\",\n className: \"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"gradient-ai\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"gradient-ai\",\n className: \"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"gradient-ai\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"gradient-ai\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Green Color Variants\n {\n variant: \"primary\",\n color: \"linear-green\",\n className: \"bg-gradient-buttons-gradient-green text-text-primary-on-brand\"\n },\n {\n variant: \"secondary\",\n color: \"linear-green\",\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-green\",\n className: \"border border-border-primary text-fg-primary hover:bg-bg-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-green\",\n className: \"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary [&_svg]:hover:text-green-900\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-green\",\n className: \"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"link\",\n color: \"linear-green\",\n className: \"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover [&_svg]:hover:text-fg-success-primary\"\n },\n\n // Linear Overlay Color Variants\n {\n variant: \"primary\",\n color: \"linear-overlay\",\n className: \"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n variant: \"secondary-accent\",\n color: \"linear-overlay\",\n className: \"border border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-overlay\",\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover [&_svg]:hover:text-fg-quaternary-hover\"\n },\n {\n variant: \"tertiary-accent\",\n color: \"linear-overlay\",\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-overlay\",\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover [&_svg]:hover:text-fg-brand-secondary-hover\"\n },\n\n // Linear Destructive Color Variants\n {\n variant: \"primary\",\n color: \"linear-destructive\",\n className: \"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\n },\n {\n variant: \"secondary\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover [&_svg]:hover:text-text-quaternary-hover\"\n },\n {\n // Not existing in design system yet\n variant: \"secondary-accent\",\n color: \"linear-destructive\",\n className: \"border border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\n },\n {\n variant: \"tertiary\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover [&_svg]:hover:text-fg-error-secondary\"\n },\n {\n // Not existing in design system yet\n variant: \"tertiary-accent\",\n color: \"linear-destructive\",\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\n },\n {\n variant: \"link\",\n color: \"linear-destructive\",\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover [&_svg]:hover:text-fg-error-primary\"\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"default\",\n size: \"sm\",\n },\n }\n)\n\nfunction Button({\n className,\n color,\n variant,\n size,\n asChild = false,\n loading = false,\n children,\n disabled,\n icon,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n if (loading) {\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n disabled\n {...props}\n >\n <Loader2 className=\"size-4 animate-spin\" />\n <span className=\"sr-only\">Loading...</span>\n </Comp>\n )\n }\n\n return (\n <Comp\n className={cn(buttonVariants({ color, variant, size, className }))}\n data-icon={icon ? \"\" : undefined}\n data-slot=\"button\"\n data-variant={variant}\n disabled={disabled}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"]}