@augmenting-integrations/ui 0.1.0 → 0.2.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.
- package/dist/components/ui/avatar.d.ts +5 -5
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/badge.d.ts +5 -3
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +5 -3
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +1 -3
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/checkbox.d.ts +3 -2
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +9 -9
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +16 -20
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/label.d.ts +2 -1
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts +11 -11
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +3 -2
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts +7 -7
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/tabs.d.ts +7 -6
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/index.cjs +1688 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +1561 -31
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/dist/components/chrome/Logo.jsx +0 -19
- package/dist/components/chrome/Logo.jsx.map +0 -1
- package/dist/components/chrome/RoleSwitcher.jsx +0 -32
- package/dist/components/chrome/RoleSwitcher.jsx.map +0 -1
- package/dist/components/chrome/ThemeSwitcher.jsx +0 -43
- package/dist/components/chrome/ThemeSwitcher.jsx.map +0 -1
- package/dist/components/shells/AppShell.jsx +0 -67
- package/dist/components/shells/AppShell.jsx.map +0 -1
- package/dist/components/shells/PublicShell.jsx +0 -42
- package/dist/components/shells/PublicShell.jsx.map +0 -1
- package/dist/components/shells/StudioShell.jsx +0 -20
- package/dist/components/shells/StudioShell.jsx.map +0 -1
- package/dist/components/ui/avatar.jsx +0 -24
- package/dist/components/ui/avatar.jsx.map +0 -1
- package/dist/components/ui/badge.jsx +0 -34
- package/dist/components/ui/badge.jsx.map +0 -1
- package/dist/components/ui/button.jsx +0 -34
- package/dist/components/ui/button.jsx.map +0 -1
- package/dist/components/ui/card.jsx +0 -25
- package/dist/components/ui/card.jsx.map +0 -1
- package/dist/components/ui/checkbox.jsx +0 -13
- package/dist/components/ui/checkbox.jsx.map +0 -1
- package/dist/components/ui/dialog.jsx +0 -52
- package/dist/components/ui/dialog.jsx.map +0 -1
- package/dist/components/ui/dropdown-menu.jsx +0 -73
- package/dist/components/ui/dropdown-menu.jsx.map +0 -1
- package/dist/components/ui/input.jsx +0 -8
- package/dist/components/ui/input.jsx.map +0 -1
- package/dist/components/ui/label.jsx +0 -8
- package/dist/components/ui/label.jsx.map +0 -1
- package/dist/components/ui/select.jsx +0 -57
- package/dist/components/ui/select.jsx.map +0 -1
- package/dist/components/ui/separator.jsx +0 -8
- package/dist/components/ui/separator.jsx.map +0 -1
- package/dist/components/ui/sheet.jsx +0 -47
- package/dist/components/ui/sheet.jsx.map +0 -1
- package/dist/components/ui/table.jsx +0 -31
- package/dist/components/ui/table.jsx.map +0 -1
- package/dist/components/ui/tabs.jsx +0 -29
- package/dist/components/ui/tabs.jsx.map +0 -1
- package/dist/components/ui/textarea.jsx +0 -7
- package/dist/components/ui/textarea.jsx.map +0 -1
- package/dist/index.mjs +0 -1585
- package/dist/index.mjs.map +0 -1
- package/dist/lib/utils.js +0 -6
- package/dist/lib/utils.js.map +0 -1
- package/dist/providers/MockProvider.jsx +0 -59
- package/dist/providers/MockProvider.jsx.map +0 -1
- package/dist/providers/QueryProvider.jsx +0 -12
- package/dist/providers/QueryProvider.jsx.map +0 -1
- package/dist/providers/SessionProvider.jsx +0 -6
- package/dist/providers/SessionProvider.jsx.map +0 -1
- package/dist/providers/ThemeProvider.jsx +0 -44
- package/dist/providers/ThemeProvider.jsx.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/avatar.tsx","../src/lib/utils.ts","../src/components/ui/badge.tsx","../src/components/ui/button.tsx","../src/components/ui/card.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/select.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/components/chrome/Logo.tsx","../src/components/chrome/ThemeSwitcher.tsx","../src/providers/ThemeProvider.tsx","../src/components/chrome/RoleSwitcher.tsx","../src/components/shells/PublicShell.tsx","../src/components/shells/AppShell.tsx","../src/components/shells/StudioShell.tsx","../src/providers/SessionProvider.tsx","../src/providers/QueryProvider.tsx","../src/providers/MockProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: \"default\" | \"sm\" | \"lg\";\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n \"group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full rounded-full object-cover\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","\"use client\";\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\";\n\nimport { cn } from \"../../lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n >\n <CheckIcon />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { XIcon } from \"lucide-react\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button variant=\"ghost\" className=\"absolute top-2 right-2\" size=\"icon-sm\" />\n }\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean;\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n );\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"font-heading text-base leading-none font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({ className, ...props }: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\n\nimport { cn } from \"../../lib/utils\";\nimport { ChevronRightIcon, CheckIcon } from \"lucide-react\";\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<MenuPrimitive.Positioner.Props, \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\">) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"w-auto min-w-[96px] rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return <MenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: MenuPrimitive.RadioItem.Props & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <CheckIcon />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react/input\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\n\nimport { cn } from \"../../lib/utils\";\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from \"lucide-react\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDownIcon className=\"pointer-events-none size-4 text-muted-foreground\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n \"relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"px-1.5 py-1 text-xs text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { XIcon } from \"lucide-react\";\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({ ...props }: SheetPrimitive.Close.Props) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: SheetPrimitive.Popup.Props & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\n \"fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button variant=\"ghost\" className=\"absolute top-3 right-3\" size=\"icon-sm\" />\n }\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-0.5 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({ className, ...props }: SheetPrimitive.Title.Props) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"font-heading text-base font-medium text-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({ className, ...props }: SheetPrimitive.Description.Props) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","\"use client\";\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\"group/tabs flex gap-2 data-horizontal:flex-col\", className)}\n {...props}\n />\n );\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 text-sm outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport { useBrand } from \"@augmenting-integrations/brand\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport function Logo({\n className,\n showWordmark = true,\n}: {\n className?: string;\n showWordmark?: boolean;\n}) {\n const brand = useBrand();\n return (\n <div className={cn(\"inline-flex items-center gap-2 text-primary\", className)}>\n <span className=\"inline-flex h-8 w-8 shrink-0 items-center justify-center text-current\">\n <svg viewBox=\"0 0 32 32\" className=\"h-full w-full\" aria-hidden=\"true\">\n <rect x=\"2\" y=\"2\" width=\"28\" height=\"28\" rx=\"6\" fill=\"currentColor\" />\n <path\n d=\"M10 22V10h2.6l3.4 6.4L19.4 10H22v12h-2.4v-7.4l-2.8 5.2h-1.6L12.4 14.6V22H10z\"\n fill=\"var(--primary-foreground)\"\n />\n </svg>\n </span>\n {showWordmark ? (\n <span className=\"text-base font-semibold tracking-tight text-foreground\">\n {brand.shortName}\n </span>\n ) : null}\n <span className=\"sr-only\">{brand.name}</span>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useTheme } from \"next-themes\";\nimport { Moon, Sun, Palette } from \"lucide-react\";\nimport { BASE_THEMES } from \"@augmenting-integrations/themes\";\nimport { useThemeName } from \"../../providers/ThemeProvider.js\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu.js\";\n\nexport function ThemeSwitcher({ className }: { className?: string }) {\n const { themeName, setThemeName } = useThemeName();\n const { resolvedTheme, setTheme } = useTheme();\n const mounted = React.useSyncExternalStore(\n () => () => {},\n () => true,\n () => false,\n );\n\n if (!mounted) {\n return (\n <div\n className={cn(\n \"h-9 w-[120px] rounded-md border border-border bg-background\",\n className,\n )}\n />\n );\n }\n\n const isDark = resolvedTheme === \"dark\";\n const activeLabel = BASE_THEMES.find((t) => t.id === themeName)?.label ?? \"Theme\";\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={() => setTheme(isDark ? \"light\" : \"dark\")}\n aria-label={isDark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border border-border bg-background text-foreground transition hover:bg-muted\"\n >\n {isDark ? <Sun className=\"h-4 w-4\" /> : <Moon className=\"h-4 w-4\" />}\n </button>\n\n <DropdownMenu>\n <DropdownMenuTrigger\n className=\"inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm text-foreground transition hover:bg-muted\"\n aria-label=\"Switch theme palette\"\n >\n <Palette className=\"h-4 w-4\" />\n <span className=\"font-medium\">{activeLabel}</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" sideOffset={6} className=\"w-72 p-1\">\n {BASE_THEMES.map((t) => (\n <DropdownMenuItem\n key={t.id}\n onClick={() => setThemeName(t.id)}\n className={cn(\n \"items-start gap-3 px-2 py-2\",\n themeName === t.id && \"bg-muted\",\n )}\n >\n <span\n aria-hidden\n className=\"mt-0.5 inline-flex h-6 w-6 shrink-0 overflow-hidden rounded-full ring-1 ring-border\"\n >\n <span className=\"h-full w-1/2\" style={{ background: t.swatch.primary }} />\n <span\n className=\"h-full w-1/2\"\n style={{ background: t.swatch.primaryDark }}\n />\n </span>\n <span className=\"flex flex-col\">\n <span className=\"text-sm font-medium\">{t.label}</span>\n <span className=\"text-xs text-muted-foreground\">{t.description}</span>\n </span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\";\nimport type { ThemeName, Variant } from \"@augmenting-integrations/brand\";\nimport { THEME_COOKIE_KEY } from \"@augmenting-integrations/themes\";\n\ntype ThemeContextValue = {\n themeName: ThemeName;\n setThemeName: (next: ThemeName) => void;\n};\n\nconst ThemeNameContext = React.createContext<ThemeContextValue | null>(null);\n\nfunction readCookie(): ThemeName | null {\n if (typeof document === \"undefined\") return null;\n const match = document.cookie\n .split(\"; \")\n .find((row) => row.startsWith(`${THEME_COOKIE_KEY}=`));\n if (!match) return null;\n const value = match.split(\"=\")[1];\n return value && value.length > 0 ? value : null;\n}\n\nfunction writeCookie(value: ThemeName) {\n if (typeof document === \"undefined\") return;\n document.cookie = `${THEME_COOKIE_KEY}=${value}; path=/; max-age=${60 * 60 * 24 * 365}; samesite=lax`;\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme,\n defaultVariant,\n}: {\n children: React.ReactNode;\n defaultTheme: ThemeName;\n defaultVariant: Variant;\n}) {\n const [themeName, setThemeNameState] = React.useState<ThemeName>(\n () => readCookie() ?? defaultTheme,\n );\n\n React.useEffect(() => {\n document.documentElement.setAttribute(\"data-theme\", themeName);\n }, [themeName]);\n\n const setThemeName = React.useCallback((next: ThemeName) => {\n writeCookie(next);\n setThemeNameState(next);\n }, []);\n\n const value = React.useMemo(\n () => ({ themeName, setThemeName }),\n [themeName, setThemeName],\n );\n\n return (\n <ThemeNameContext.Provider value={value}>\n <NextThemesProvider\n attribute=\"class\"\n defaultTheme={defaultVariant}\n enableSystem={false}\n disableTransitionOnChange\n >\n {children}\n </NextThemesProvider>\n </ThemeNameContext.Provider>\n );\n}\n\nexport function useThemeName() {\n const ctx = React.useContext(ThemeNameContext);\n if (!ctx) throw new Error(\"useThemeName must be used inside <ThemeProvider />\");\n return ctx;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { signIn, useSession } from \"next-auth/react\";\nimport { UserCog } from \"lucide-react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst ROLES = [\"visitor\", \"sales\", \"agent\", \"admin\"] as const;\n\nexport function RoleSwitcher({ className }: { className?: string }) {\n const { data: session, update } = useSession();\n const [open, setOpen] = React.useState(false);\n const current = (session?.user as { role?: string } | undefined)?.role ?? \"visitor\";\n\n return (\n <div className={cn(\"relative\", className)}>\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n className=\"inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm text-foreground transition hover:bg-muted\"\n >\n <UserCog className=\"h-4 w-4\" />\n <span className=\"font-medium capitalize\">{current}</span>\n </button>\n\n {open ? (\n <div\n role=\"menu\"\n className=\"absolute right-0 top-full z-50 mt-2 w-56 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-lg\"\n onMouseLeave={() => setOpen(false)}\n >\n <div className=\"px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground\">\n Switch role (dev)\n </div>\n {ROLES.map((r) => (\n <button\n key={r}\n type=\"button\"\n role=\"menuitem\"\n onClick={async () => {\n await signIn(\"credentials\", { role: r, redirect: false });\n await update();\n setOpen(false);\n }}\n className={cn(\n \"flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-sm capitalize transition hover:bg-muted\",\n current === r && \"bg-muted\",\n )}\n >\n <span>{r}</span>\n {current === r ? (\n <span className=\"text-xs text-muted-foreground\">active</span>\n ) : null}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useBrand } from \"@augmenting-integrations/brand\";\nimport { Logo } from \"../chrome/Logo.js\";\nimport { ThemeSwitcher } from \"../chrome/ThemeSwitcher.js\";\n\nexport type NavLink = { href: string; label: string };\n\nexport function PublicShell({\n children,\n navLinks,\n loginHref = \"/login\",\n footerLinks,\n Link,\n}: {\n children: React.ReactNode;\n navLinks: NavLink[];\n loginHref?: string;\n footerLinks?: NavLink[];\n /**\n * The consuming app passes its router's Link component (e.g. next/link).\n * Decoupling the package from next/link keeps it framework-agnostic.\n */\n Link: React.ComponentType<{\n href: string;\n children?: React.ReactNode;\n className?: string;\n \"aria-label\"?: string;\n }>;\n}) {\n const brand = useBrand();\n return (\n <div className=\"flex min-h-svh flex-col bg-background text-foreground\">\n <header className=\"border-b border-border bg-background/80 backdrop-blur\">\n <div className=\"mx-auto flex max-w-6xl items-center justify-between px-6 py-4\">\n <Link href=\"/\" aria-label=\"Home\">\n <Logo />\n </Link>\n <nav className=\"flex items-center gap-6 text-sm\">\n {navLinks.map((link) => (\n <Link\n key={link.href}\n href={link.href}\n className=\"text-muted-foreground transition hover:text-foreground\"\n >\n {link.label}\n </Link>\n ))}\n <Link\n href={loginHref}\n className=\"text-muted-foreground transition hover:text-foreground\"\n >\n Log in\n </Link>\n <ThemeSwitcher />\n </nav>\n </div>\n </header>\n\n <main className=\"flex-1\">{children}</main>\n\n <footer className=\"border-t border-border\">\n <div className=\"mx-auto flex max-w-6xl flex-wrap items-center justify-between gap-3 px-6 py-6 text-sm text-muted-foreground\">\n <span>\n © {new Date().getFullYear()} {brand.name}\n </span>\n <div className=\"flex gap-4\">\n {(footerLinks ?? []).map((link) => (\n <Link key={link.href} href={link.href} className=\"hover:text-foreground\">\n {link.label}\n </Link>\n ))}\n </div>\n </div>\n </footer>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Menu, X } from \"lucide-react\";\nimport { Logo } from \"../chrome/Logo.js\";\nimport { ThemeSwitcher } from \"../chrome/ThemeSwitcher.js\";\nimport { RoleSwitcher } from \"../chrome/RoleSwitcher.js\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport type AppNavItem = {\n href: string;\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n /** When provided, item only renders if the consumer's `getFlag(flag)` returns true. */\n flag?: string;\n};\n\nexport type AppNavGroup = { label: string; items: AppNavItem[] };\n\nfunction NavGroup({\n group,\n pathname,\n Link,\n}: {\n group: AppNavGroup;\n pathname: string;\n Link: React.ComponentType<{\n href: string;\n children?: React.ReactNode;\n className?: string;\n }>;\n}) {\n if (group.items.length === 0) return null;\n return (\n <div className=\"space-y-1\">\n <p className=\"px-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n {group.label}\n </p>\n <ul className=\"space-y-0.5\">\n {group.items.map((item) => {\n const active = pathname === item.href || pathname.startsWith(`${item.href}/`);\n return (\n <li key={item.href}>\n <Link\n href={item.href}\n className={cn(\n \"flex items-center gap-3 rounded-md px-3 py-2 text-sm transition\",\n active\n ? \"bg-sidebar-accent text-sidebar-accent-foreground\"\n : \"text-sidebar-foreground hover:bg-sidebar-accent/60\",\n )}\n >\n <item.icon className=\"h-4 w-4 shrink-0\" />\n <span>{item.label}</span>\n </Link>\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n\nexport function AppShell({\n children,\n pathname,\n navGroups,\n Link,\n homeHref = \"/\",\n showRoleSwitcher = true,\n}: {\n children: React.ReactNode;\n pathname: string;\n navGroups: AppNavGroup[];\n Link: React.ComponentType<{\n href: string;\n children?: React.ReactNode;\n className?: string;\n \"aria-label\"?: string;\n }>;\n homeHref?: string;\n showRoleSwitcher?: boolean;\n}) {\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n const sidebarContent = (\n <div className=\"flex h-full flex-col gap-6 px-3 py-4\">\n <Link href={homeHref} className=\"px-2\" aria-label=\"Home\">\n <Logo />\n </Link>\n {navGroups.map((g) => (\n <NavGroup key={g.label} group={g} pathname={pathname} Link={Link} />\n ))}\n </div>\n );\n\n return (\n <div className=\"flex min-h-svh bg-background text-foreground\">\n <aside className=\"hidden w-64 shrink-0 border-r border-sidebar-border bg-sidebar text-sidebar-foreground md:block\">\n {sidebarContent}\n </aside>\n\n {mobileOpen ? (\n <div className=\"fixed inset-0 z-50 flex md:hidden\">\n <div\n className=\"flex-1 bg-foreground/40 backdrop-blur-sm\"\n onClick={() => setMobileOpen(false)}\n aria-hidden\n />\n <aside className=\"relative w-72 border-l border-sidebar-border bg-sidebar text-sidebar-foreground\">\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n aria-label=\"Close menu\"\n className=\"absolute right-2 top-2 inline-flex h-9 w-9 items-center justify-center rounded-md hover:bg-sidebar-accent\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n {sidebarContent}\n </aside>\n </div>\n ) : null}\n\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <header className=\"flex h-14 items-center justify-between gap-3 border-b border-border bg-background/80 px-4 backdrop-blur md:px-6\">\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border border-border md:hidden\"\n >\n <Menu className=\"h-4 w-4\" />\n </button>\n <div className=\"flex items-center gap-3 md:ml-auto\">\n {showRoleSwitcher ? <RoleSwitcher /> : null}\n <ThemeSwitcher />\n </div>\n </header>\n <main className=\"min-w-0 flex-1 px-4 py-6 md:px-8 md:py-8\">{children}</main>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Common chrome for studio panels (theme, brand, flags, content). Each app's\n * studio routes wrap their page in <StudioShell title=\"Feature flags\">.\n */\nexport function StudioShell({\n title,\n description,\n actions,\n children,\n className,\n}: {\n title: string;\n description?: string;\n actions?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section className={cn(\"space-y-6\", className)}>\n <header className=\"flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h1 className=\"text-2xl font-semibold tracking-tight\">{title}</h1>\n {description ? (\n <p className=\"mt-1 max-w-2xl text-sm text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {actions ? <div className=\"flex items-center gap-2\">{actions}</div> : null}\n </header>\n <div className=\"rounded-lg border border-border bg-card p-4 md:p-6\">{children}</div>\n </section>\n );\n}\n","\"use client\";\n\nimport type { Session } from \"next-auth\";\nimport { SessionProvider as NextAuthSessionProvider } from \"next-auth/react\";\n\nexport function SessionProvider({\n children,\n session,\n}: {\n children: React.ReactNode;\n session: Session | null;\n}) {\n return <NextAuthSessionProvider session={session}>{children}</NextAuthSessionProvider>;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nexport function QueryProvider({ children }: { children: React.ReactNode }) {\n const [client] = React.useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: { staleTime: 30_000, refetchOnWindowFocus: false },\n },\n }),\n );\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport type { SetupWorker } from \"msw/browser\";\n\n/**\n * Initializes MSW in the browser in development. **No-op in production.**\n *\n * Production-safety pattern: every gate uses `process.env.NODE_ENV !==\n * \"development\"` directly (not through a `const enabled = ...` indirection).\n * Webpack/Next.js statically replace `process.env.NODE_ENV` with the literal\n * `\"production\"` at build time, the comparisons collapse to constants, and\n * the dynamic `loadWorker()` call becomes dead code that the bundler strips.\n * The mocks chunk is never emitted in a production build.\n *\n * Belt-and-suspenders: each consuming app should ALSO add a\n * `webpack.IgnorePlugin({ resourceRegExp: /[/\\\\\\\\]mocks[/\\\\\\\\]/ })` in its\n * `next.config.ts` for production builds. That excludes the source files\n * even if a future contributor accidentally adds a non-gated import.\n */\nexport function MockProvider({\n children,\n loadWorker,\n serviceWorkerUrl = \"/mockServiceWorker.js\",\n}: {\n children: React.ReactNode;\n loadWorker: () => Promise<SetupWorker>;\n serviceWorkerUrl?: string;\n}) {\n const [ready, setReady] = React.useState(() => process.env.NODE_ENV !== \"development\");\n const [error, setError] = React.useState<string | null>(null);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== \"development\") return;\n let cancelled = false;\n void (async () => {\n try {\n const worker = await loadWorker();\n await worker.start({\n onUnhandledRequest: \"bypass\",\n serviceWorker: { url: serviceWorkerUrl },\n });\n if (!cancelled) setReady(true);\n } catch (e) {\n console.error(\"[MockProvider] MSW failed to start:\", e);\n if (!cancelled) {\n setError(e instanceof Error ? e.message : String(e));\n setReady(true);\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [loadWorker, serviceWorkerUrl]);\n\n if (!ready) {\n return (\n <div className=\"flex min-h-svh items-center justify-center bg-background text-muted-foreground\">\n <p className=\"text-sm\">Initializing mocks…</p>\n </div>\n );\n }\n return (\n <>\n {error ? (\n <div className=\"border-b border-destructive/40 bg-destructive/10 px-4 py-2 text-xs text-destructive\">\n MSW failed to start ({error}). Mock API calls will return real 404s.\n </div>\n ) : null}\n {children}\n </>\n );\n}\n"],"mappings":"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","names":["React","cva","cva","React","React","React","CheckIcon","React","React","React","CheckIcon","React","XIcon","React","cva","cva","React","React","React","React","React","useBrand","useBrand","React","React","React","React"]}
|
package/dist/lib/utils.js
DELETED
package/dist/lib/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
/**
|
|
4
|
-
* Initializes MSW in the browser in development. **No-op in production.**
|
|
5
|
-
*
|
|
6
|
-
* Production-safety pattern: every gate uses `process.env.NODE_ENV !==
|
|
7
|
-
* "development"` directly (not through a `const enabled = ...` indirection).
|
|
8
|
-
* Webpack/Next.js statically replace `process.env.NODE_ENV` with the literal
|
|
9
|
-
* `"production"` at build time, the comparisons collapse to constants, and
|
|
10
|
-
* the dynamic `loadWorker()` call becomes dead code that the bundler strips.
|
|
11
|
-
* The mocks chunk is never emitted in a production build.
|
|
12
|
-
*
|
|
13
|
-
* Belt-and-suspenders: each consuming app should ALSO add a
|
|
14
|
-
* `webpack.IgnorePlugin({ resourceRegExp: /[/\\\\]mocks[/\\\\]/ })` in its
|
|
15
|
-
* `next.config.ts` for production builds. That excludes the source files
|
|
16
|
-
* even if a future contributor accidentally adds a non-gated import.
|
|
17
|
-
*/
|
|
18
|
-
export function MockProvider({ children, loadWorker, serviceWorkerUrl = "/mockServiceWorker.js", }) {
|
|
19
|
-
const [ready, setReady] = React.useState(() => process.env.NODE_ENV !== "development");
|
|
20
|
-
const [error, setError] = React.useState(null);
|
|
21
|
-
React.useEffect(() => {
|
|
22
|
-
if (process.env.NODE_ENV !== "development")
|
|
23
|
-
return;
|
|
24
|
-
let cancelled = false;
|
|
25
|
-
void (async () => {
|
|
26
|
-
try {
|
|
27
|
-
const worker = await loadWorker();
|
|
28
|
-
await worker.start({
|
|
29
|
-
onUnhandledRequest: "bypass",
|
|
30
|
-
serviceWorker: { url: serviceWorkerUrl },
|
|
31
|
-
});
|
|
32
|
-
if (!cancelled)
|
|
33
|
-
setReady(true);
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
console.error("[MockProvider] MSW failed to start:", e);
|
|
37
|
-
if (!cancelled) {
|
|
38
|
-
setError(e instanceof Error ? e.message : String(e));
|
|
39
|
-
setReady(true);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
})();
|
|
43
|
-
return () => {
|
|
44
|
-
cancelled = true;
|
|
45
|
-
};
|
|
46
|
-
}, [loadWorker, serviceWorkerUrl]);
|
|
47
|
-
if (!ready) {
|
|
48
|
-
return (<div className="flex min-h-svh items-center justify-center bg-background text-muted-foreground">
|
|
49
|
-
<p className="text-sm">Initializing mocks…</p>
|
|
50
|
-
</div>);
|
|
51
|
-
}
|
|
52
|
-
return (<>
|
|
53
|
-
{error ? (<div className="border-b border-destructive/40 bg-destructive/10 px-4 py-2 text-xs text-destructive">
|
|
54
|
-
MSW failed to start ({error}). Mock API calls will return real 404s.
|
|
55
|
-
</div>) : null}
|
|
56
|
-
{children}
|
|
57
|
-
</>);
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=MockProvider.jsx.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MockProvider.jsx","sourceRoot":"","sources":["../../src/providers/MockProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,gBAAgB,GAAG,uBAAuB,GAK3C;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC;IACvF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE9D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;YAAE,OAAO;QACnD,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,CAAC,KAAK,CAAC;oBACjB,kBAAkB,EAAE,QAAQ;oBAC5B,aAAa,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE;iBACzC,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS;oBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrD,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,gFAAgF,CAC7F;QAAA,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAC/C;MAAA,EAAE,GAAG,CAAC,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,EACE;MAAA,CAAC,KAAK,CAAC,CAAC,CAAC,CACP,CAAC,GAAG,CAAC,SAAS,CAAC,qFAAqF,CAClG;+BAAqB,CAAC,KAAK,CAAC;QAC9B,EAAE,GAAG,CAAC,CACP,CAAC,CAAC,CAAC,IAAI,CACR;MAAA,CAAC,QAAQ,CACX;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
4
|
-
export function QueryProvider({ children }) {
|
|
5
|
-
const [client] = React.useState(() => new QueryClient({
|
|
6
|
-
defaultOptions: {
|
|
7
|
-
queries: { staleTime: 30_000, refetchOnWindowFocus: false },
|
|
8
|
-
},
|
|
9
|
-
}));
|
|
10
|
-
return <QueryClientProvider client={client}>{children}</QueryClientProvider>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=QueryProvider.jsx.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryProvider.jsx","sourceRoot":"","sources":["../../src/providers/QueryProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAiC;IACvE,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC7B,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,cAAc,EAAE;YACd,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE;SAC5D;KACF,CAAC,CACL,CAAC;IACF,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { SessionProvider as NextAuthSessionProvider } from "next-auth/react";
|
|
3
|
-
export function SessionProvider({ children, session, }) {
|
|
4
|
-
return <NextAuthSessionProvider session={session}>{children}</NextAuthSessionProvider>;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=SessionProvider.jsx.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionProvider.jsx","sourceRoot":"","sources":["../../src/providers/SessionProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,EAAE,eAAe,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,GAIR;IACC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { ThemeProvider as NextThemesProvider } from "next-themes";
|
|
4
|
-
import { THEME_COOKIE_KEY } from "@augmenting-integrations/themes";
|
|
5
|
-
const ThemeNameContext = React.createContext(null);
|
|
6
|
-
function readCookie() {
|
|
7
|
-
if (typeof document === "undefined")
|
|
8
|
-
return null;
|
|
9
|
-
const match = document.cookie
|
|
10
|
-
.split("; ")
|
|
11
|
-
.find((row) => row.startsWith(`${THEME_COOKIE_KEY}=`));
|
|
12
|
-
if (!match)
|
|
13
|
-
return null;
|
|
14
|
-
const value = match.split("=")[1];
|
|
15
|
-
return value && value.length > 0 ? value : null;
|
|
16
|
-
}
|
|
17
|
-
function writeCookie(value) {
|
|
18
|
-
if (typeof document === "undefined")
|
|
19
|
-
return;
|
|
20
|
-
document.cookie = `${THEME_COOKIE_KEY}=${value}; path=/; max-age=${60 * 60 * 24 * 365}; samesite=lax`;
|
|
21
|
-
}
|
|
22
|
-
export function ThemeProvider({ children, defaultTheme, defaultVariant, }) {
|
|
23
|
-
const [themeName, setThemeNameState] = React.useState(() => readCookie() ?? defaultTheme);
|
|
24
|
-
React.useEffect(() => {
|
|
25
|
-
document.documentElement.setAttribute("data-theme", themeName);
|
|
26
|
-
}, [themeName]);
|
|
27
|
-
const setThemeName = React.useCallback((next) => {
|
|
28
|
-
writeCookie(next);
|
|
29
|
-
setThemeNameState(next);
|
|
30
|
-
}, []);
|
|
31
|
-
const value = React.useMemo(() => ({ themeName, setThemeName }), [themeName, setThemeName]);
|
|
32
|
-
return (<ThemeNameContext.Provider value={value}>
|
|
33
|
-
<NextThemesProvider attribute="class" defaultTheme={defaultVariant} enableSystem={false} disableTransitionOnChange>
|
|
34
|
-
{children}
|
|
35
|
-
</NextThemesProvider>
|
|
36
|
-
</ThemeNameContext.Provider>);
|
|
37
|
-
}
|
|
38
|
-
export function useThemeName() {
|
|
39
|
-
const ctx = React.useContext(ThemeNameContext);
|
|
40
|
-
if (!ctx)
|
|
41
|
-
throw new Error("useThemeName must be used inside <ThemeProvider />");
|
|
42
|
-
return ctx;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=ThemeProvider.jsx.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.jsx","sourceRoot":"","sources":["../../src/providers/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOnE,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAA2B,IAAI,CAAC,CAAC;AAE7E,SAAS,UAAU;IACjB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM;SAC1B,KAAK,CAAC,IAAI,CAAC;SACX,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,KAAgB;IACnC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,QAAQ,CAAC,MAAM,GAAG,GAAG,gBAAgB,IAAI,KAAK,qBAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,gBAAgB,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAY,EACZ,cAAc,GAKf;IACC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CACnD,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,YAAY,CACnC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAe,EAAE,EAAE;QACzD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EACnC,CAAC,SAAS,EAAE,YAAY,CAAC,CAC1B,CAAC;IAEF,OAAO,CACL,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CACtC;MAAA,CAAC,kBAAkB,CACjB,SAAS,CAAC,OAAO,CACjB,YAAY,CAAC,CAAC,cAAc,CAAC,CAC7B,YAAY,CAAC,CAAC,KAAK,CAAC,CACpB,yBAAyB,CAEzB;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,kBAAkB,CACtB;IAAA,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAChF,OAAO,GAAG,CAAC;AACb,CAAC"}
|