@hex-core/components 1.8.1 → 1.9.0

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 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/alert/alert.tsx","../src/primitives/empty/empty.tsx","../src/primitives/button/button-variants.ts","../src/primitives/button/button.tsx","../src/primitives/input/input.tsx","../src/primitives/label/label.tsx","../src/blocks/auth-forgot-password/auth-forgot-password.tsx"],"names":["React","cva","React2","jsx","React3","jsxs","React4","React5","Fragment"],"mappings":"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","file":"auth-forgot-password.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst alertVariants = cva(\n\t[\n\t\t\"relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground\",\n\t\t\"[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-foreground/[0.08] bg-background text-foreground\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-destructive/50 text-destructive [&>svg]:text-destructive bg-destructive/5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\" },\n\t},\n);\n\n/** An inline notification banner for important messages. */\nconst Alert = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"alert\"\n\t\tclassName={cn(alertVariants({ variant }), className)}\n\t\t{...props}\n\t/>\n));\nAlert.displayName = \"Alert\";\n\n/** The alert title heading. */\nconst AlertTitle = React.forwardRef<\n\tHTMLHeadingElement,\n\tReact.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n\t<h5\n\t\tref={ref}\n\t\tclassName={cn(\"mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nAlertTitle.displayName = \"AlertTitle\";\n\n/** The alert description. Renders a div so paragraph children can be styled via [&_p]. */\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n\t),\n);\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst emptyVariants = cva(\n\t[\n\t\t\"flex flex-col items-center justify-center text-center\",\n\t\t\"rounded-md border border-dashed border-border bg-muted/30\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"gap-[var(--space-2,0.5rem)] px-[var(--space-4,1rem)] py-[var(--space-6,1.5rem)] text-sm\",\n\t\t\t\tdefault: \"gap-[var(--space-3,0.75rem)] px-[var(--space-6,1.5rem)] py-[var(--space-8,2rem)]\",\n\t\t\t\tlg: \"gap-[var(--space-4,1rem)] px-[var(--space-8,2rem)] py-[var(--space-12,3rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { size: \"default\" },\n\t},\n);\n\nconst emptyIconWrapperVariants = cva(\n\t\"flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground [&_svg]:size-5\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"h-9 w-9\",\n\t\t\t\tdefault: \"h-12 w-12 [&_svg]:size-6\",\n\t\t\t\tlg: \"h-16 w-16 [&_svg]:size-7\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { size: \"default\" },\n\t},\n);\n\nconst emptyTitleVariants = cva(\"font-semibold text-foreground\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-sm\",\n\t\t\tdefault: \"text-base\",\n\t\t\tlg: \"text-lg\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"default\" },\n});\n\nconst emptyDescriptionVariants = cva(\"max-w-md text-muted-foreground\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-xs\",\n\t\t\tdefault: \"text-sm\",\n\t\t\tlg: \"text-base\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"default\" },\n});\n\n/** Heading element used to render the Empty title. Defaults to `h3`. */\ntype EmptyTitleAs = \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\";\n\nexport interface EmptyProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n\t\tVariantProps<typeof emptyVariants> {\n\t/** Forwarded ref onto the root region element. */\n\tref?: React.Ref<HTMLDivElement>;\n\t/** Optional icon (typically an `<svg>`) rendered in a circular muted container. */\n\ticon?: React.ReactNode;\n\t/** Required heading copy. Becomes the region's accessible name via `aria-labelledby`. */\n\ttitle: React.ReactNode;\n\t/** Optional supporting copy that explains why the slot is empty + what to do next. */\n\tdescription?: React.ReactNode;\n\t/** Optional call-to-action — typically a `<Button>` that creates the missing record. */\n\taction?: React.ReactNode;\n\t/** Heading level for the title — pick to match surrounding hierarchy (default `h3`). */\n\ttitleAs?: EmptyTitleAs;\n}\n\n/**\n * A \"zero-state\" surface for lists, dashboards, and search results that have\n * no content to show. Use to explain *why* the slot is empty and *what to do*\n * next; pair the `action` slot with a button that creates the missing record.\n *\n * Distinct from {@link Loading} (transient, has a measurable wait) and\n * {@link ErrorState} (something failed and may need a retry). If you're\n * thinking \"show a message because the request just hasn't returned yet,\"\n * reach for `Loading` — Empty is for \"the request returned, and there's\n * nothing to show.\"\n *\n * @example\n * ```tsx\n * <Empty\n * icon={<InboxIcon />}\n * title=\"No messages yet\"\n * description=\"When someone sends you a message, it'll show up here.\"\n * action={<Button>Compose</Button>}\n * />\n * ```\n *\n * @returns A region landmark labeled by the title.\n */\nfunction Empty({\n\tclassName,\n\tsize,\n\ticon,\n\ttitle,\n\tdescription,\n\taction,\n\ttitleAs = \"h3\",\n\tref,\n\t...props\n}: EmptyProps) {\n\tconst titleId = React.useId();\n\tconst TitleComp = titleAs;\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\trole=\"region\"\n\t\t\taria-labelledby={titleId}\n\t\t\tclassName={cn(emptyVariants({ size }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{icon ? (\n\t\t\t\t<div className={emptyIconWrapperVariants({ size })} aria-hidden=\"true\">\n\t\t\t\t\t{icon}\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<TitleComp id={titleId} className={emptyTitleVariants({ size })}>\n\t\t\t\t{title}\n\t\t\t</TitleComp>\n\t\t\t{description ? (\n\t\t\t\t<div className={emptyDescriptionVariants({ size })}>{description}</div>\n\t\t\t) : null}\n\t\t\t{action ? <div className=\"mt-[var(--space-2,0.5rem)]\">{action}</div> : null}\n\t\t</div>\n\t);\n}\n\nexport { Empty, emptyVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\n\n/**\n * CVA variants for the Button component.\n *\n * Lives in its own module so RSC-safe consumers (`Pagination`, future\n * link-styled buttons in static layouts) can import variants without\n * pulling in the full `Button` runtime — `Button` itself is client-only\n * because of `Slot` + `forwardRef` + the loading spinner. Splitting the\n * variants out keeps `dist/pagination.js` free of `@radix-ui/react-slot`.\n */\nexport const buttonVariants = cva(\n\t[\n\t\t\"inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"active:scale-[0.98]\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: [\n\t\t\t\t\t\"bg-primary text-primary-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-primary/20\",\n\t\t\t\t\t\"hover:bg-primary/90 hover:shadow-md hover:shadow-primary/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tdestructive: [\n\t\t\t\t\t\"bg-destructive text-destructive-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-destructive/20\",\n\t\t\t\t\t\"hover:bg-destructive/90 hover:shadow-md hover:shadow-destructive/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\toutline: [\n\t\t\t\t\t\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tsecondary: [\n\t\t\t\t\t\"bg-secondary text-secondary-foreground\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.08]\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md hover:inset-ring-foreground/15\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tghost: \"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base\",\n\t\t\t\ticon: \"h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { type ButtonVariantsProps, buttonVariants } from \"./button-variants.js\";\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tButtonVariantsProps {\n\tasChild?: boolean;\n\tloading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n\t(\n\t\t{ className, variant, size, asChild = false, loading = false, children, disabled, ...props },\n\t\tref,\n\t) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t\tref={ref}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\taria-busy={loading || undefined}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{loading ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclassName=\"animate-spin h-4 w-4\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tclassName=\"opacity-25\"\n\t\t\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tclassName=\"opacity-75\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\td=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t({ className, type, ...props }, ref) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype={type}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t// inset-ring gives a self-borne edge so the input field is visible on flat\n\t\t\t\t\t// surfaces (token border alone is too low-contrast on bg-background=white).\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst labelVariants = cva(\n\t\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nexport interface LabelProps\n\textends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n\t\tVariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<React.ComponentRef<typeof LabelPrimitive.Root>, LabelProps>(\n\t({ className, ...props }, ref) => (\n\t\t<LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n\t),\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"../../components/alert/alert.js\";\nimport { Empty } from \"../../primitives/empty/empty.js\";\nimport { Button } from \"../../primitives/button/button.js\";\nimport { Input } from \"../../primitives/input/input.js\";\nimport { Label } from \"../../primitives/label/label.js\";\nimport { cn } from \"../../lib/utils.js\";\nimport type { AuthAdapter } from \"../_shared/auth-adapter.js\";\n\nexport interface AuthForgotPasswordProps {\n\tadapter: AuthAdapter;\n\tsignInHref?: string;\n\tclassName?: string;\n\tonSuccess?: () => void;\n}\n\nconst EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nconst MailIcon = () => (\n\t<svg\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth={2}\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\taria-hidden=\"true\"\n\t>\n\t\t<rect width={20} height={16} x={2} y={4} rx={2} />\n\t\t<path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n\t</svg>\n);\n\n/**\n * \"Forgot password\" page. Single email field; on success swaps to a\n * confirmation state composed from `Empty` (\"we sent you a link\") plus a\n * \"back to sign in\" affordance. Routes the dispatch through\n * `adapter.requestPasswordReset`.\n */\nexport function AuthForgotPassword({\n\tadapter,\n\tsignInHref = \"/sign-in\",\n\tclassName,\n\tonSuccess,\n}: AuthForgotPasswordProps) {\n\tconst [email, setEmail] = React.useState(\"\");\n\tconst [submitting, setSubmitting] = React.useState(false);\n\tconst [error, setError] = React.useState<{ code: string; message: string } | null>(null);\n\tconst [submittedEmail, setSubmittedEmail] = React.useState<string | null>(null);\n\n\tasync function handleSubmit(e: React.FormEvent<HTMLFormElement>) {\n\t\te.preventDefault();\n\t\tif (!EMAIL_REGEX.test(email)) {\n\t\t\tsetError({ code: \"invalid_email\", message: \"Enter a valid email address.\" });\n\t\t\treturn;\n\t\t}\n\t\tif (!adapter.requestPasswordReset) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[AuthForgotPassword] adapter.requestPasswordReset is not implemented — wire it up before exposing the form.\",\n\t\t\t);\n\t\t\tsetError({\n\t\t\t\tcode: \"unimplemented\",\n\t\t\t\tmessage: \"Password reset is currently unavailable. Please try again later.\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetError(null);\n\t\tsetSubmitting(true);\n\t\ttry {\n\t\t\tconst result = await adapter.requestPasswordReset({ email });\n\t\t\tif (!result.ok) {\n\t\t\t\tsetError(result.error ?? { code: \"unknown\", message: \"Couldn't send reset link.\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetSubmittedEmail(email);\n\t\t\tonSuccess?.();\n\t\t} finally {\n\t\t\tsetSubmitting(false);\n\t\t}\n\t}\n\n\tif (submittedEmail) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex min-h-svh items-center justify-center p-6 sm:p-10\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"w-full max-w-sm\">\n\t\t\t\t\t<Empty\n\t\t\t\t\t\ticon={<MailIcon />}\n\t\t\t\t\t\ttitle=\"Check your inbox\"\n\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tWe sent a password-reset link to{\" \"}\n\t\t\t\t\t\t\t\t<strong className=\"text-foreground\">{submittedEmail}</strong>. The\n\t\t\t\t\t\t\t\tlink expires in 60 minutes.\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\taction={\n\t\t\t\t\t\t\t<Button variant=\"outline\" asChild>\n\t\t\t\t\t\t\t\t<a href={signInHref}>Back to sign in</a>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={cn(\"flex min-h-svh items-center justify-center p-6 sm:p-10\", className)}>\n\t\t\t<div className=\"w-full max-w-sm space-y-6\">\n\t\t\t\t<header className=\"space-y-2 text-center\">\n\t\t\t\t\t<h1 className=\"text-2xl font-semibold tracking-tight\">Reset your password</h1>\n\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\tEnter your email and we&rsquo;ll send you a link to set a new password.\n\t\t\t\t\t</p>\n\t\t\t\t</header>\n\n\t\t\t\t{error ? (\n\t\t\t\t\t<Alert variant=\"destructive\">\n\t\t\t\t\t\t<AlertTitle>Couldn&rsquo;t send reset link</AlertTitle>\n\t\t\t\t\t\t<AlertDescription>{error.message}</AlertDescription>\n\t\t\t\t\t</Alert>\n\t\t\t\t) : null}\n\n\t\t\t\t<form onSubmit={handleSubmit} className=\"space-y-4\" noValidate>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Label htmlFor=\"auth-forgot-email\">Email</Label>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tid=\"auth-forgot-email\"\n\t\t\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t\t\tautoComplete=\"email\"\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tvalue={email}\n\t\t\t\t\t\t\tonChange={(e) => setEmail(e.target.value)}\n\t\t\t\t\t\t\tdisabled={submitting}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\tdisabled={submitting}\n\t\t\t\t\t\tloading={submitting}\n\t\t\t\t\t>\n\t\t\t\t\t\t{submitting ? \"Sending link\" : \"Send reset link\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\n\t\t\t\t<p className=\"text-center text-sm text-muted-foreground\">\n\t\t\t\t\tRemembered your password?{\" \"}\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={signInHref}\n\t\t\t\t\t\tclassName=\"font-medium text-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSign in\n\t\t\t\t\t</a>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { AuthResetPassword_alias_2 as AuthResetPassword } from './_tsup-dts-rollup.js';
2
+ export { AuthResetPasswordProps_alias_2 as AuthResetPasswordProps } from './_tsup-dts-rollup.js';
@@ -0,0 +1,323 @@
1
+ "use client";
2
+ import * as React5 from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { Slot } from '@radix-ui/react-slot';
8
+ import * as LabelPrimitive from '@radix-ui/react-label';
9
+
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ var alertVariants = cva(
14
+ [
15
+ "relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm",
16
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
17
+ "[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground",
18
+ "[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]"
19
+ ].join(" "),
20
+ {
21
+ variants: {
22
+ variant: {
23
+ default: "border-foreground/[0.08] bg-background text-foreground",
24
+ destructive: "border-destructive/50 text-destructive [&>svg]:text-destructive bg-destructive/5"
25
+ }
26
+ },
27
+ defaultVariants: { variant: "default" }
28
+ }
29
+ );
30
+ var Alert = React5.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(
31
+ "div",
32
+ {
33
+ ref,
34
+ role: "alert",
35
+ className: cn(alertVariants({ variant }), className),
36
+ ...props
37
+ }
38
+ ));
39
+ Alert.displayName = "Alert";
40
+ var AlertTitle = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
41
+ "h5",
42
+ {
43
+ ref,
44
+ className: cn("mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight", className),
45
+ ...props
46
+ }
47
+ ));
48
+ AlertTitle.displayName = "AlertTitle";
49
+ var AlertDescription = React5.forwardRef(
50
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("text-sm [&_p]:leading-relaxed", className), ...props })
51
+ );
52
+ AlertDescription.displayName = "AlertDescription";
53
+ var buttonVariants = cva(
54
+ [
55
+ "inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium",
56
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
57
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
58
+ "disabled:pointer-events-none disabled:opacity-50",
59
+ "active:scale-[0.98]",
60
+ "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"
61
+ ].join(" "),
62
+ {
63
+ variants: {
64
+ variant: {
65
+ default: [
66
+ "bg-primary text-primary-foreground",
67
+ "shadow-sm shadow-primary/20",
68
+ "hover:bg-primary/90 hover:shadow-md hover:shadow-primary/25"
69
+ ].join(" "),
70
+ destructive: [
71
+ "bg-destructive text-destructive-foreground",
72
+ "shadow-sm shadow-destructive/20",
73
+ "hover:bg-destructive/90 hover:shadow-md hover:shadow-destructive/25"
74
+ ].join(" "),
75
+ outline: [
76
+ "border border-input bg-background",
77
+ "shadow-sm inset-ring-1 inset-ring-foreground/[0.06]",
78
+ "hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12"
79
+ ].join(" "),
80
+ secondary: [
81
+ "bg-secondary text-secondary-foreground",
82
+ "shadow-sm inset-ring-1 inset-ring-foreground/[0.08]",
83
+ "hover:bg-secondary/80 hover:shadow-md hover:inset-ring-foreground/15"
84
+ ].join(" "),
85
+ ghost: "hover:bg-accent hover:text-accent-foreground",
86
+ link: "text-primary underline-offset-4 hover:underline"
87
+ },
88
+ size: {
89
+ default: "h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]",
90
+ sm: "h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]",
91
+ lg: "h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base",
92
+ icon: "h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]"
93
+ }
94
+ },
95
+ defaultVariants: {
96
+ variant: "default",
97
+ size: "default"
98
+ }
99
+ }
100
+ );
101
+ var Button = React5.forwardRef(
102
+ ({ className, variant, size, asChild = false, loading = false, children, disabled, ...props }, ref) => {
103
+ const Comp = asChild ? Slot : "button";
104
+ return /* @__PURE__ */ jsx(
105
+ Comp,
106
+ {
107
+ className: cn(buttonVariants({ variant, size, className })),
108
+ ref,
109
+ disabled: disabled || loading,
110
+ "aria-busy": loading || void 0,
111
+ ...props,
112
+ children: loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
113
+ /* @__PURE__ */ jsxs(
114
+ "svg",
115
+ {
116
+ className: "animate-spin h-4 w-4",
117
+ xmlns: "http://www.w3.org/2000/svg",
118
+ fill: "none",
119
+ viewBox: "0 0 24 24",
120
+ "aria-hidden": "true",
121
+ children: [
122
+ /* @__PURE__ */ jsx(
123
+ "circle",
124
+ {
125
+ className: "opacity-25",
126
+ cx: "12",
127
+ cy: "12",
128
+ r: "10",
129
+ stroke: "currentColor",
130
+ strokeWidth: "4"
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsx(
134
+ "path",
135
+ {
136
+ className: "opacity-75",
137
+ fill: "currentColor",
138
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
139
+ }
140
+ )
141
+ ]
142
+ }
143
+ ),
144
+ children
145
+ ] }) : children
146
+ }
147
+ );
148
+ }
149
+ );
150
+ Button.displayName = "Button";
151
+ var Input = React5.forwardRef(
152
+ ({ className, type, ...props }, ref) => {
153
+ return /* @__PURE__ */ jsx(
154
+ "input",
155
+ {
156
+ type,
157
+ className: cn(
158
+ "flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm",
159
+ "transition-all duration-[var(--duration-normal,200ms)] ease-out",
160
+ // inset-ring gives a self-borne edge so the input field is visible on flat
161
+ // surfaces (token border alone is too low-contrast on bg-background=white).
162
+ "shadow-sm inset-ring-1 inset-ring-foreground/[0.06]",
163
+ "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
164
+ "placeholder:text-muted-foreground",
165
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
166
+ "focus-visible:shadow-md focus-visible:border-ring/50",
167
+ "hover:border-ring/30 hover:shadow-md",
168
+ "disabled:cursor-not-allowed disabled:opacity-50",
169
+ className
170
+ ),
171
+ ref,
172
+ ...props
173
+ }
174
+ );
175
+ }
176
+ );
177
+ Input.displayName = "Input";
178
+ var labelVariants = cva(
179
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
180
+ );
181
+ var Label = React5.forwardRef(
182
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props })
183
+ );
184
+ Label.displayName = "Label";
185
+ function AuthResetPassword({
186
+ adapter,
187
+ token,
188
+ signInHref = "/sign-in",
189
+ passwordMinLength = 8,
190
+ className,
191
+ onSuccess
192
+ }) {
193
+ const [password, setPassword] = React5.useState("");
194
+ const [confirmPassword, setConfirmPassword] = React5.useState("");
195
+ const [submitting, setSubmitting] = React5.useState(false);
196
+ const [error, setError] = React5.useState(null);
197
+ function validate() {
198
+ if (password.length < passwordMinLength) {
199
+ return {
200
+ code: "password_too_short",
201
+ message: `Password must be at least ${passwordMinLength} characters.`
202
+ };
203
+ }
204
+ if (password !== confirmPassword) {
205
+ return { code: "password_mismatch", message: "Passwords don't match." };
206
+ }
207
+ if (token.length === 0) {
208
+ return {
209
+ code: "missing_token",
210
+ message: "This reset link is invalid or expired. Request a new one."
211
+ };
212
+ }
213
+ return null;
214
+ }
215
+ async function handleSubmit(e) {
216
+ e.preventDefault();
217
+ const validation = validate();
218
+ if (validation) {
219
+ setError(validation);
220
+ return;
221
+ }
222
+ if (!adapter.resetPassword) {
223
+ console.warn(
224
+ "[AuthResetPassword] adapter.resetPassword is not implemented \u2014 wire it up before exposing the form."
225
+ );
226
+ setError({
227
+ code: "unimplemented",
228
+ message: "Password reset is currently unavailable. Please try again later."
229
+ });
230
+ return;
231
+ }
232
+ setError(null);
233
+ setSubmitting(true);
234
+ try {
235
+ const result = await adapter.resetPassword({ token, password });
236
+ if (!result.ok) {
237
+ setError(result.error ?? { code: "unknown", message: "Couldn't update password." });
238
+ return;
239
+ }
240
+ onSuccess?.(result.redirect);
241
+ } finally {
242
+ setSubmitting(false);
243
+ }
244
+ }
245
+ return /* @__PURE__ */ jsx("div", { className: cn("flex min-h-svh items-center justify-center p-6 sm:p-10", className), children: /* @__PURE__ */ jsxs("div", { className: "w-full max-w-sm space-y-6", children: [
246
+ /* @__PURE__ */ jsxs("header", { className: "space-y-2 text-center", children: [
247
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold tracking-tight", children: "Set a new password" }),
248
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Choose a strong password. You\u2019ll be signed in automatically once it\u2019s saved." })
249
+ ] }),
250
+ error ? /* @__PURE__ */ jsxs(Alert, { variant: "destructive", children: [
251
+ /* @__PURE__ */ jsx(AlertTitle, { children: "Couldn\u2019t update password" }),
252
+ /* @__PURE__ */ jsx(AlertDescription, { children: error.message })
253
+ ] }) : null,
254
+ /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", noValidate: true, children: [
255
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
256
+ /* @__PURE__ */ jsx(Label, { htmlFor: "auth-reset-password", children: "New password" }),
257
+ /* @__PURE__ */ jsx(
258
+ Input,
259
+ {
260
+ id: "auth-reset-password",
261
+ type: "password",
262
+ autoComplete: "new-password",
263
+ required: true,
264
+ minLength: passwordMinLength,
265
+ value: password,
266
+ onChange: (e) => setPassword(e.target.value),
267
+ disabled: submitting,
268
+ "aria-describedby": "auth-reset-password-hint"
269
+ }
270
+ ),
271
+ /* @__PURE__ */ jsxs(
272
+ "p",
273
+ {
274
+ id: "auth-reset-password-hint",
275
+ className: "text-xs text-muted-foreground",
276
+ children: [
277
+ "At least ",
278
+ passwordMinLength,
279
+ " characters."
280
+ ]
281
+ }
282
+ )
283
+ ] }),
284
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
285
+ /* @__PURE__ */ jsx(Label, { htmlFor: "auth-reset-confirm", children: "Confirm new password" }),
286
+ /* @__PURE__ */ jsx(
287
+ Input,
288
+ {
289
+ id: "auth-reset-confirm",
290
+ type: "password",
291
+ autoComplete: "new-password",
292
+ required: true,
293
+ value: confirmPassword,
294
+ onChange: (e) => setConfirmPassword(e.target.value),
295
+ disabled: submitting
296
+ }
297
+ )
298
+ ] }),
299
+ /* @__PURE__ */ jsx(
300
+ Button,
301
+ {
302
+ type: "submit",
303
+ className: "w-full",
304
+ disabled: submitting,
305
+ loading: submitting,
306
+ children: submitting ? "Saving" : "Save new password"
307
+ }
308
+ )
309
+ ] }),
310
+ /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-muted-foreground", children: /* @__PURE__ */ jsx(
311
+ "a",
312
+ {
313
+ href: signInHref,
314
+ className: "font-medium text-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded",
315
+ children: "Back to sign in"
316
+ }
317
+ ) })
318
+ ] }) });
319
+ }
320
+
321
+ export { AuthResetPassword };
322
+ //# sourceMappingURL=auth-reset-password.js.map
323
+ //# sourceMappingURL=auth-reset-password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/alert/alert.tsx","../src/primitives/button/button-variants.ts","../src/primitives/button/button.tsx","../src/primitives/input/input.tsx","../src/primitives/label/label.tsx","../src/blocks/auth-reset-password/auth-reset-password.tsx"],"names":["React","cva","React2","jsx","React3","React4","jsxs"],"mappings":"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","file":"auth-reset-password.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst alertVariants = cva(\n\t[\n\t\t\"relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground\",\n\t\t\"[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-foreground/[0.08] bg-background text-foreground\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-destructive/50 text-destructive [&>svg]:text-destructive bg-destructive/5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\" },\n\t},\n);\n\n/** An inline notification banner for important messages. */\nconst Alert = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"alert\"\n\t\tclassName={cn(alertVariants({ variant }), className)}\n\t\t{...props}\n\t/>\n));\nAlert.displayName = \"Alert\";\n\n/** The alert title heading. */\nconst AlertTitle = React.forwardRef<\n\tHTMLHeadingElement,\n\tReact.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n\t<h5\n\t\tref={ref}\n\t\tclassName={cn(\"mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nAlertTitle.displayName = \"AlertTitle\";\n\n/** The alert description. Renders a div so paragraph children can be styled via [&_p]. */\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n\t),\n);\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\n\n/**\n * CVA variants for the Button component.\n *\n * Lives in its own module so RSC-safe consumers (`Pagination`, future\n * link-styled buttons in static layouts) can import variants without\n * pulling in the full `Button` runtime — `Button` itself is client-only\n * because of `Slot` + `forwardRef` + the loading spinner. Splitting the\n * variants out keeps `dist/pagination.js` free of `@radix-ui/react-slot`.\n */\nexport const buttonVariants = cva(\n\t[\n\t\t\"inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"active:scale-[0.98]\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: [\n\t\t\t\t\t\"bg-primary text-primary-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-primary/20\",\n\t\t\t\t\t\"hover:bg-primary/90 hover:shadow-md hover:shadow-primary/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tdestructive: [\n\t\t\t\t\t\"bg-destructive text-destructive-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-destructive/20\",\n\t\t\t\t\t\"hover:bg-destructive/90 hover:shadow-md hover:shadow-destructive/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\toutline: [\n\t\t\t\t\t\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tsecondary: [\n\t\t\t\t\t\"bg-secondary text-secondary-foreground\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.08]\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md hover:inset-ring-foreground/15\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tghost: \"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base\",\n\t\t\t\ticon: \"h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { type ButtonVariantsProps, buttonVariants } from \"./button-variants.js\";\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tButtonVariantsProps {\n\tasChild?: boolean;\n\tloading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n\t(\n\t\t{ className, variant, size, asChild = false, loading = false, children, disabled, ...props },\n\t\tref,\n\t) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t\tref={ref}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\taria-busy={loading || undefined}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{loading ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclassName=\"animate-spin h-4 w-4\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tclassName=\"opacity-25\"\n\t\t\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tclassName=\"opacity-75\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\td=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t({ className, type, ...props }, ref) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype={type}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t// inset-ring gives a self-borne edge so the input field is visible on flat\n\t\t\t\t\t// surfaces (token border alone is too low-contrast on bg-background=white).\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst labelVariants = cva(\n\t\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nexport interface LabelProps\n\textends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n\t\tVariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<React.ComponentRef<typeof LabelPrimitive.Root>, LabelProps>(\n\t({ className, ...props }, ref) => (\n\t\t<LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n\t),\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Alert, AlertDescription, AlertTitle } from \"../../components/alert/alert.js\";\nimport { Button } from \"../../primitives/button/button.js\";\nimport { Input } from \"../../primitives/input/input.js\";\nimport { Label } from \"../../primitives/label/label.js\";\nimport { cn } from \"../../lib/utils.js\";\nimport type { AuthAdapter } from \"../_shared/auth-adapter.js\";\n\nexport interface AuthResetPasswordProps {\n\tadapter: AuthAdapter;\n\t/** Reset token, typically read from `?token=…` by the showcase / consumer route. */\n\ttoken: string;\n\tsignInHref?: string;\n\tpasswordMinLength?: number;\n\tclassName?: string;\n\tonSuccess?: (redirect: string | undefined) => void;\n}\n\n/**\n * \"Reset password\" page. Two fields (new password + confirm) with manual\n * confirm-match and minLength validation. The opaque `token` is forwarded\n * verbatim to `adapter.resetPassword`. Routes the consumer-supplied adapter\n * is responsible for binding the token to a user account on the backend.\n */\nexport function AuthResetPassword({\n\tadapter,\n\ttoken,\n\tsignInHref = \"/sign-in\",\n\tpasswordMinLength = 8,\n\tclassName,\n\tonSuccess,\n}: AuthResetPasswordProps) {\n\tconst [password, setPassword] = React.useState(\"\");\n\tconst [confirmPassword, setConfirmPassword] = React.useState(\"\");\n\tconst [submitting, setSubmitting] = React.useState(false);\n\tconst [error, setError] = React.useState<{ code: string; message: string } | null>(null);\n\n\tfunction validate(): { code: string; message: string } | null {\n\t\tif (password.length < passwordMinLength) {\n\t\t\treturn {\n\t\t\t\tcode: \"password_too_short\",\n\t\t\t\tmessage: `Password must be at least ${passwordMinLength} characters.`,\n\t\t\t};\n\t\t}\n\t\tif (password !== confirmPassword) {\n\t\t\treturn { code: \"password_mismatch\", message: \"Passwords don't match.\" };\n\t\t}\n\t\tif (token.length === 0) {\n\t\t\treturn {\n\t\t\t\tcode: \"missing_token\",\n\t\t\t\tmessage: \"This reset link is invalid or expired. Request a new one.\",\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\tasync function handleSubmit(e: React.FormEvent<HTMLFormElement>) {\n\t\te.preventDefault();\n\t\tconst validation = validate();\n\t\tif (validation) {\n\t\t\tsetError(validation);\n\t\t\treturn;\n\t\t}\n\t\tif (!adapter.resetPassword) {\n\t\t\tconsole.warn(\n\t\t\t\t\"[AuthResetPassword] adapter.resetPassword is not implemented — wire it up before exposing the form.\",\n\t\t\t);\n\t\t\tsetError({\n\t\t\t\tcode: \"unimplemented\",\n\t\t\t\tmessage: \"Password reset is currently unavailable. Please try again later.\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetError(null);\n\t\tsetSubmitting(true);\n\t\ttry {\n\t\t\tconst result = await adapter.resetPassword({ token, password });\n\t\t\tif (!result.ok) {\n\t\t\t\tsetError(result.error ?? { code: \"unknown\", message: \"Couldn't update password.\" });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSuccess?.(result.redirect);\n\t\t} finally {\n\t\t\tsetSubmitting(false);\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={cn(\"flex min-h-svh items-center justify-center p-6 sm:p-10\", className)}>\n\t\t\t<div className=\"w-full max-w-sm space-y-6\">\n\t\t\t\t<header className=\"space-y-2 text-center\">\n\t\t\t\t\t<h1 className=\"text-2xl font-semibold tracking-tight\">Set a new password</h1>\n\t\t\t\t\t<p className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\tChoose a strong password. You&rsquo;ll be signed in automatically once it&rsquo;s\n\t\t\t\t\t\tsaved.\n\t\t\t\t\t</p>\n\t\t\t\t</header>\n\n\t\t\t\t{error ? (\n\t\t\t\t\t<Alert variant=\"destructive\">\n\t\t\t\t\t\t<AlertTitle>Couldn&rsquo;t update password</AlertTitle>\n\t\t\t\t\t\t<AlertDescription>{error.message}</AlertDescription>\n\t\t\t\t\t</Alert>\n\t\t\t\t) : null}\n\n\t\t\t\t<form onSubmit={handleSubmit} className=\"space-y-4\" noValidate>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Label htmlFor=\"auth-reset-password\">New password</Label>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tid=\"auth-reset-password\"\n\t\t\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t\t\tautoComplete=\"new-password\"\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tminLength={passwordMinLength}\n\t\t\t\t\t\t\tvalue={password}\n\t\t\t\t\t\t\tonChange={(e) => setPassword(e.target.value)}\n\t\t\t\t\t\t\tdisabled={submitting}\n\t\t\t\t\t\t\taria-describedby=\"auth-reset-password-hint\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p\n\t\t\t\t\t\t\tid=\"auth-reset-password-hint\"\n\t\t\t\t\t\t\tclassName=\"text-xs text-muted-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tAt least {passwordMinLength} characters.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<Label htmlFor=\"auth-reset-confirm\">Confirm new password</Label>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tid=\"auth-reset-confirm\"\n\t\t\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t\t\tautoComplete=\"new-password\"\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\tvalue={confirmPassword}\n\t\t\t\t\t\t\tonChange={(e) => setConfirmPassword(e.target.value)}\n\t\t\t\t\t\t\tdisabled={submitting}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\tdisabled={submitting}\n\t\t\t\t\t\tloading={submitting}\n\t\t\t\t\t>\n\t\t\t\t\t\t{submitting ? \"Saving\" : \"Save new password\"}\n\t\t\t\t\t</Button>\n\t\t\t\t</form>\n\n\t\t\t\t<p className=\"text-center text-sm text-muted-foreground\">\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={signInHref}\n\t\t\t\t\t\tclassName=\"font-medium text-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded\"\n\t\t\t\t\t>\n\t\t\t\t\t\tBack to sign in\n\t\t\t\t\t</a>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { AuthSignInSplit_alias_2 as AuthSignInSplit } from './_tsup-dts-rollup.js';
2
+ export { AuthSignInSocialProvider_alias_2 as AuthSignInSocialProvider } from './_tsup-dts-rollup.js';
3
+ export { AuthSignInSplitProps_alias_2 as AuthSignInSplitProps } from './_tsup-dts-rollup.js';