@clerk/ui 0.1.28 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/dva.ts","../src/primitives/spinner.tsx","../src/primitives/button.tsx","../src/primitives/icons/icon.tsx","../src/common/connections.tsx","../src/primitives/icons/exclamation-octagon-sm.tsx","../src/primitives/icons/exclamation-triangle-sm.tsx","../src/primitives/alert.tsx","../src/primitives/clerk-logo.tsx","../src/utils/validators.ts","../src/utils/images.ts","../src/primitives/image.tsx","../src/primitives/card.tsx","../src/primitives/icons/checkmark-circle-sm.tsx","../src/primitives/icons/information-circle-sm.tsx","../src/primitives/field.tsx","../src/primitives/separator.tsx","../src/descriptors.ts","../src/themes/buildTheme.ts","../src/themes/layout.ts","../src/themes/full.ts","../src/contexts/AppearanceContext.tsx"],"names":["cx","clsx","dva","compose","forwardRef","Spinner","jsxs","jsx","layoutStyle","visualStyle","React","Button","spinner","Fragment","React2","Icon","mergeProps","React3","Alert","React4","Image","React5","React6","React7","Separator","OAUTH_PROVIDERS","WEB3_PROVIDERS","createContextAndHook","useDeepEqualMemo"],"mappings":"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","file":"contexts.js","sourcesContent":["/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\nimport { clsx } from 'clsx';\n\nimport { type DescriptorIdentifier, mergeDescriptors, type ParsedElements } from '~/contexts/AppearanceContext';\n\n/* Types\n ============================================ */\n\n/* clsx\n ---------------------------------- */\n\n// When compiling with `declaration: true`, many projects experience the dreaded\n// TS2742 error. To combat this, we copy clsx's types manually.\n// Should this project move to JSDoc, this workaround would no longer be needed.\n\ntype ClassValue = ClassArray | ClassDictionary | DescriptorIdentifier | number | null | boolean | undefined;\ntype ClassDictionary = Record<DescriptorIdentifier, any>;\ntype ClassArray = ClassValue[];\n\n/* Utils\n ---------------------------------- */\n\ntype OmitUndefined<T> = T extends undefined ? never : T;\ntype StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\nexport type VariantProps<Component extends (...args: any) => any> = Omit<\n OmitUndefined<Parameters<Component>[0]>,\n 'class' | 'className'\n>;\n\n/* compose\n ---------------------------------- */\n\nexport interface Compose {\n <T extends ReturnType<DVA>[]>(\n ...components: [...T]\n ): (\n props?: (\n | UnionToIntersection<\n {\n [K in keyof T]: VariantProps<T[K]>;\n }[number]\n >\n | undefined\n ) &\n DVAClassProp,\n ) => string;\n}\n\n/* cx\n ---------------------------------- */\n\nexport interface CX {\n (...inputs: ClassValue[]): string;\n}\n\nexport type CXOptions = Parameters<CX>;\nexport type CXReturn = ReturnType<CX>;\n\n/* dva\n ============================================ */\n\ntype DVAConfigBase = { base?: ClassValue };\ntype DVAVariantShape = Record<string, Record<string, ClassValue>>;\ntype DVAVariantSchema<V extends DVAVariantShape> = {\n [Variant in keyof V]?: StringToBoolean<keyof V[Variant]> | undefined;\n};\ntype DVAClassProp = { descriptor?: ClassValue };\n\nexport interface DVA {\n <_ extends \"dva's generic parameters are restricted to internal use only.\", V>(\n config: V extends DVAVariantShape\n ? DVAConfigBase & {\n variants?: V;\n compoundVariants?: (V extends DVAVariantShape\n ? (\n | DVAVariantSchema<V>\n | {\n [Variant in keyof V]?:\n | StringToBoolean<keyof V[Variant]>\n | StringToBoolean<keyof V[Variant]>[]\n | undefined;\n }\n ) &\n DVAClassProp\n : DVAClassProp)[];\n defaultVariants?: DVAVariantSchema<V>;\n }\n : DVAConfigBase & {\n variants?: never;\n compoundVariants?: never;\n defaultVariants?: never;\n },\n ): (props?: V extends DVAVariantShape ? DVAVariantSchema<V> & DVAClassProp : DVAClassProp) => string;\n}\n\n/* defineConfig\n ---------------------------------- */\n\nexport interface DefineConfigOptions {\n hooks?: {\n /**\n * @deprecated please use `onComplete`\n */\n 'cx:done'?: (className: string) => string;\n /**\n * Returns the completed string of concatenated classes/classNames.\n */\n onComplete?: (className: string) => string;\n };\n}\n\nexport interface DefineConfig {\n (options?: DefineConfigOptions): {\n compose: Compose;\n cx: CX;\n dva: DVA;\n };\n}\n\n/* Exports\n ============================================ */\n\nconst falsyToString = <T, _>(value: T) => (typeof value === 'boolean' ? `${value}` : value === 0 ? '0' : value);\n\nexport const defineConfig: DefineConfig = options => {\n const cx: CX = (...inputs) => {\n if (typeof options?.hooks?.['cx:done'] !== 'undefined') {\n return options?.hooks['cx:done'](clsx(inputs));\n }\n\n if (typeof options?.hooks?.onComplete !== 'undefined') {\n return options?.hooks.onComplete(clsx(inputs));\n }\n\n return clsx(inputs);\n };\n\n const dva: DVA = config => props => {\n if (config?.variants == null) {\n return cx(config?.base, props?.descriptor);\n }\n\n const { variants, defaultVariants } = config;\n\n const getVariantClassNames = Object.keys(variants).map((variant: keyof typeof variants) => {\n const variantProp = props?.[variant as keyof typeof props];\n const defaultVariantProp = defaultVariants?.[variant];\n\n const variantKey = (falsyToString(variantProp) ||\n falsyToString(defaultVariantProp)) as keyof (typeof variants)[typeof variant];\n\n return variants[variant][variantKey];\n });\n\n const defaultsAndProps = {\n ...defaultVariants,\n // remove `undefined` props\n ...(props &&\n Object.entries(props).reduce<typeof props>(\n (acc, [key, value]) => (typeof value === 'undefined' ? acc : { ...acc, [key]: value }),\n {} as typeof props,\n )),\n };\n\n const getCompoundVariantClassNames = config?.compoundVariants?.reduce(\n (acc, { descriptor, ...cvConfig }) =>\n Object.entries(cvConfig).every(([cvKey, cvSelector]) => {\n const selector = defaultsAndProps[cvKey as keyof typeof defaultsAndProps];\n\n return Array.isArray(cvSelector) ? cvSelector.includes(selector) : selector === cvSelector;\n })\n ? [...acc, descriptor]\n : acc,\n [] as ClassValue[],\n );\n\n return cx(config?.base, getVariantClassNames, getCompoundVariantClassNames, props?.descriptor);\n };\n\n const compose: Compose =\n (...components) =>\n props => {\n const propsWithoutDescriptor = Object.fromEntries(\n Object.entries(props || {}).filter(([key]) => !['descriptor'].includes(key)),\n );\n\n return cx(components.map(component => component(propsWithoutDescriptor)) as ClassValue[], props?.descriptor);\n };\n\n return {\n compose,\n dva,\n cx,\n };\n};\n\nexport const { compose, dva, cx } = defineConfig();\n\nexport function getDescriptors(elements: ParsedElements, descriptorList: string) {\n const descriptors = descriptorList.split(' ') as (keyof ParsedElements)[];\n return descriptors.map(d => {\n const value = elements[d];\n if (!value) {\n console.warn(`Clerk: unable to access style configuration for descriptor: ${d}`);\n }\n\n return value;\n });\n}\n\nexport function applyDescriptors(elements: ParsedElements, descriptorList: string) {\n const descriptors = getDescriptors(elements, descriptorList);\n return mergeDescriptors(...descriptors);\n}\n","import type { VariantProps } from 'cva';\nimport { cx } from 'cva';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { type ParsedElementsFragment, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva } from '~/utils/dva';\n\nconst SIZE = 16;\n\ntype SpinnerRef = HTMLDivElement;\n\nexport const layoutStyle = {\n spinner: {\n className: \"cl-26207fa4\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n spinner: {\n className: \"cl-9feebad9\",\n },\n} satisfies ParsedElementsFragment;\n\nconst spinner = dva({\n base: 'spinner',\n});\n\n/**\n * # Spinner\n *\n * ## Accessibility\n *\n * An accessible label–set via `children`–must be provided for screen readers.\n *\n * ```tsx\n * import { Spinner } from '@clerk/ceramic/components/Spinner';\n *\n * function Example() {\n * return (\n * <Spinner>\n * Some other loading text…\n * </Spinner>\n * );\n * }\n * ```\n */\nexport const Spinner = forwardRef(function Spinner(\n {\n children,\n descriptor,\n }: HTMLAttributes<SpinnerRef> &\n VariantProps<typeof spinner> & {\n children: string;\n },\n ref: React.ForwardedRef<SpinnerRef>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n (<span\n ref={ref}\n {...applyDescriptors(elements, spinner({ descriptor }))}\n >\n <span className=\"cl-32fb0905\">{children}</span>\n <svg\n viewBox={[0, 0, SIZE, SIZE].join(' ')}\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className=\"cl-4f43603c\"\n style={{\n ['--spinner-origin' as string]: Array.from({ length: 2 })\n .fill(`${16 / SIZE / 2}rem`)\n .join(' '),\n }}\n aria-hidden\n >\n <g\n className={cx(\n \"cl-bfbc36b1\",\n \"cl-22c1b7ea\",\n \"cl-45bbc6bf\",\n \"cl-e5d7b81e\",\n \"cl-4bd15f3b\",\n )}\n fill='currentColor'\n opacity={0.5}\n >\n (\n <circle\n cx='8'\n cy='2.75'\n r='0.75'\n />\n <circle\n cx='13.25'\n cy='8'\n r='0.75'\n />\n <circle\n cx='2.75'\n cy='8'\n r='0.75'\n />\n <circle\n cx='4.29999'\n cy='4.29001'\n r='0.75'\n />\n <circle\n cx='11.7'\n cy='4.29001'\n r='0.75'\n />\n <circle\n cx='4.29999'\n cy='11.72'\n r='0.75'\n />\n <circle\n cx='11.7'\n cy='11.72'\n r='0.75'\n />\n <circle\n cx='8'\n cy='13.25'\n r='0.75'\n />\n )\n </g>\n\n <circle\n className={cx(\n \"cl-4f43603c\",\n \"cl-bfbc36b1\",\n \"cl-22c1b7ea\",\n \"cl-45bbc6bf\",\n \"cl-3ba7917c\",\n )}\n cx='8'\n cy='8'\n r='5.25'\n pathLength={360}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n // Manually offset an additional 10 deg (on top of 90deg) to cover the\n // dots at either end of the stroke; which is particularly noticeable\n // when \"reduce motion\" is enabled.\n strokeDashoffset={100}\n strokeDasharray='90 270'\n strokeWidth={1.5}\n />\n </svg>\n </span>)\n );\n});\n","import * as React from 'react';\n\nimport type { ParsedElementsFragment } from '~/contexts/AppearanceContext';\nimport { mergeDescriptors, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva, type VariantProps } from '~/utils/dva';\n\nimport { Spinner } from './spinner';\n\nexport const layoutStyle = {\n button: {\n className: [\n \"cl-16a914bc\", // 16px\n \"cl-da41fb98\",\n \"cl-f5aee1d0\",\n \"cl-c8dc0199\",\n \"cl-ff9d26a5\",\n \"cl-ce4a8aff\",\n \"cl-8a3782da\",\n ].join(' '),\n },\n buttonIcon: {\n className: \"cl-27ead27a\",\n },\n buttonSpinner: {\n className: \"cl-27ead27a\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n button: {\n className: [\"cl-b55f0528\", \"cl-d9cf47b8\", \"cl-b30fc560\"].join(' '),\n },\n buttonPrimary: {\n className: [\n \"cl-a98b2d0f\",\n \"cl-e7b4a4f3\",\n \"cl-93e9de3b\",\n \"cl-cb1d8f85\",\n \"cl-2b39a966\",\n \"cl-5d812cb6\",\n ].join(' '),\n },\n buttonSecondary: {\n className: [\n \"cl-947a937d\",\n \"cl-2031c7be\",\n \"cl-97c9b979\",\n \"cl-aa729509\",\n ].join(' '),\n },\n buttonConnection: {\n className: [\n \"cl-947a937d\",\n \"cl-2031c7be\",\n \"cl-97c9b979\",\n \"cl-aa729509\",\n ].join(' '),\n },\n buttonPrimaryDefault: {\n className: \"cl-dd1ec9c5\",\n },\n buttonSecondaryDefault: {\n className: \"cl-9b31bb43\",\n },\n buttonConnectionDefault: {\n className: \"cl-9b31bb43\",\n },\n buttonDisabled: {\n className: \"cl-d4e2e313\",\n },\n buttonBusy: {\n className: \"cl-d6edf6f5\",\n },\n buttonText: {\n className: \"cl-63a1f595\",\n },\n buttonTextVisuallyHidden: {\n className: \"cl-32fb0905\",\n },\n buttonIcon: {\n className: \"cl-2e5aed0f\",\n },\n buttonSpinner: {\n className: \"cl-291bc932\",\n },\n} satisfies ParsedElementsFragment;\n\nconst button = dva({\n base: 'button',\n variants: {\n intent: {\n primary: 'buttonPrimary',\n secondary: 'buttonSecondary',\n connection: 'buttonConnection',\n },\n busy: {\n false: null,\n true: null,\n },\n disabled: {\n false: null,\n true: null,\n },\n },\n compoundVariants: [\n { busy: false, disabled: false, intent: 'primary', descriptor: 'buttonPrimaryDefault' },\n { busy: false, disabled: false, intent: 'secondary', descriptor: 'buttonSecondaryDefault' },\n { busy: false, disabled: false, intent: 'connection', descriptor: 'buttonConnectionDefault' },\n { busy: false, disabled: true, descriptor: 'buttonDisabled' },\n { busy: true, disabled: false, descriptor: 'buttonBusy' },\n ],\n});\n\nexport const Button = React.forwardRef(function Button(\n {\n busy = false,\n children,\n descriptor,\n disabled = false,\n iconStart,\n iconEnd,\n intent = 'primary',\n type = 'button',\n textVisuallyHidden,\n ...props\n }: React.ButtonHTMLAttributes<HTMLButtonElement> &\n // Omit types supplied via ButtonHTMLAttributes\n Omit<VariantProps<typeof button>, 'disabled'> & {\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n textVisuallyHidden?: boolean;\n },\n forwardedRef: React.ForwardedRef<HTMLButtonElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const spinner = <Spinner descriptor='buttonSpinner'>Loading…</Spinner>;\n\n return (\n <button\n ref={forwardedRef}\n disabled={busy || disabled}\n // eslint-disable-next-line react/button-has-type\n type={type}\n {...props}\n {...applyDescriptors(elements, button({ busy, disabled, intent, descriptor }))}\n >\n {busy && intent === 'primary' ? (\n spinner\n ) : (\n <>\n {iconStart ? (\n busy && intent === 'connection' ? (\n spinner\n ) : (\n <span {...applyDescriptors(elements, 'buttonIcon buttonIconStart')}>{iconStart}</span>\n )\n ) : null}\n {children ? (\n <span {...mergeDescriptors(elements.buttonText, !!textVisuallyHidden && elements.buttonTextVisuallyHidden)}>\n {children}\n </span>\n ) : null}\n {iconEnd ? <span {...applyDescriptors(elements, 'buttonIcon buttonIconEnd')}>{iconEnd}</span> : null}\n </>\n )}\n </button>\n );\n});\n","import * as React from 'react';\nimport { mergeProps } from 'react-aria';\n\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {}\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps & { children: React.ReactElement }>(\n function Icon(props, ref) {\n const { children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden, ...restProps } = props;\n return React.cloneElement(children, {\n ...mergeProps(children.props, restProps),\n ref,\n width: '1em',\n height: '1em',\n fill: 'none',\n focusable: 'false',\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaLabel ? ariaHidden || undefined : true,\n role: 'img',\n });\n },\n);\n","import * as Common from '@clerk/elements/common';\nimport * as React from 'react';\n\nimport { useAppearance } from '~/contexts';\nimport { useEnabledConnections } from '~/hooks/use-enabled-connections';\nimport { useLocalizations } from '~/hooks/use-localizations';\nimport { Button } from '~/primitives/button';\nimport { PROVIDERS } from '~/primitives/icons/providers';\nimport { applyDescriptors } from '~/utils/dva';\n\n/**\n * Calculates the number of columns given the total number of items and the maximum columns allowed per row.\n *\n * @param {Object} options\n * @param {number} options.length - The total number of items.\n * @param {number} options.max - The maximum number of columns allowed per row.\n * @returns The calculated number of columns.\n *\n * Example output for item counts from 1 to 24 with `columns: 6`:\n *\n * 1: [ 1 ]\n * 2: [ 1, 2 ]\n * 3: [ 1, 2, 3 ]\n * 4: [ 1, 2, 3, 4 ]\n * 5: [ 1, 2, 3, 4, 5 ]\n * 6: [ 1, 2, 3, 4, 5, 6 ]\n * 7: [ [1, 2, 3, 4], [5, 6, 7] ]\n * 8: [ [1, 2, 3, 4], [5, 6, 7, 8] ]\n * 9: [ [1, 2, 3, 4, 5], [6, 7, 8, 9] ]\n * 10: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10] ]\n * 11: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11] ]\n * 12: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12] ]\n * 13: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13] ]\n * 14: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14] ]\n * 15: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15] ]\n * 16: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16] ]\n * 17: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17] ]\n * 18: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18] ]\n * 19: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19] ]\n * 20: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20] ]\n * 21: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21] ]\n * 22: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22] ]\n * 23: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23] ]\n * 24: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24] ]\n *\n * Examples:\n * ```\n * getColumnCount(1); // 1\n * getColumnCount(7); // 4\n * getColumnCount(15); // 6\n * ```\n */\nfunction getColumnCount({ length, max }: Record<'length' | 'max', number>): number {\n const numRows = Math.ceil(length / max);\n return Math.ceil(length / numRows);\n}\n\nexport const layoutStyle = {\n connectionList: {\n className:\n \"cl-519e344c\",\n },\n connectionListItem: {\n className: \"cl-b9a44166\",\n },\n};\n\n// Purposefully left blank to prevent confusion.\nexport const visualStyle = {};\n\nexport function Connections(\n props: { columns?: number } & Pick<React.ComponentProps<typeof Button>, 'disabled' | 'textVisuallyHidden'>,\n) {\n const { t } = useLocalizations();\n const enabledConnections = useEnabledConnections();\n const { options, elements } = useAppearance().parsedAppearance;\n const connectionListDescriptors = applyDescriptors(elements, 'connectionList');\n const hasConnection = enabledConnections.length > 0;\n const textVisuallyHidden =\n typeof props?.textVisuallyHidden !== 'undefined'\n ? props.textVisuallyHidden\n : enabledConnections.length > 2 || options?.socialButtonsVariant === 'iconButton';\n const columns = getColumnCount({ length: enabledConnections.length, max: props?.columns || 6 });\n const localizationKey =\n enabledConnections.length === 1 ? 'socialButtonsBlockButton' : 'socialButtonsBlockButtonManyInView';\n\n return hasConnection ? (\n <ul\n className={connectionListDescriptors.className}\n style={{ ...connectionListDescriptors.style, '--cl-connection-columns': columns } as React.CSSProperties}\n >\n {enabledConnections.map(c => {\n return (\n <li\n key={c.provider}\n {...applyDescriptors(elements, 'connectionListItem')}\n >\n <Common.Loading scope={`provider:${c.provider}`}>\n {isConnectionLoading => {\n return (\n <Common.Connection\n name={c.provider}\n asChild\n >\n <Button\n descriptor={`buttonConnection__${c.provider}`}\n intent='connection'\n busy={isConnectionLoading}\n disabled={props?.disabled || isConnectionLoading}\n iconStart={PROVIDERS[c.provider] || null}\n textVisuallyHidden={textVisuallyHidden}\n >\n {t(localizationKey, {\n provider: c.name,\n })}\n </Button>\n </Common.Connection>\n );\n }}\n </Common.Loading>\n </li>\n );\n })}\n </ul>\n ) : null;\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function ExclamationOctagonSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <path\n d='M8 5.75V7.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 10V10.01'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M10.25 2.75H5.75L2.75 5.75V10.25L5.75 13.25H10.25L13.25 10.25V5.75L10.25 2.75Z'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function ExclamationTriangleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <path\n d='M8 6.75V8.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 10.5V10.51'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M2.95652 10.4518L6.27146 3.8188C6.98366 2.39373 9.01635 2.39373 9.72855 3.81881L13.0435 10.4518C13.686 11.7374 12.7516 13.25 11.3149 13.25H4.68506C3.24842 13.25 2.31404 11.7374 2.95652 10.4518Z'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import * as React from 'react';\n\nimport {\n mergeDescriptors,\n type ParsedDescriptor,\n type ParsedElementsFragment,\n useAppearance,\n} from '~/contexts/AppearanceContext';\n\nimport ExclamationOctagonSm from './icons/exclamation-octagon-sm';\nimport ExclamationTriangleSm from './icons/exclamation-triangle-sm';\n\nexport const layoutStyle = {\n alert: {\n className: \"cl-fbddaa7d\",\n },\n alertIcon: {\n className: \"cl-af4e251c\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n alert: {\n className: \"cl-15c02a47\",\n },\n alertWarning: {\n className: \"cl-a992fcfc\",\n },\n alertError: {\n className: \"cl-66ef3405\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n intent?: 'warning' | 'error';\n descriptors?: ParsedDescriptor[];\n }\n>(function Alert({ children, descriptors, intent = 'error', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(\n elements.alert,\n intent === 'error' && elements.alertError,\n intent === 'warning' && elements.alertWarning,\n ...(descriptors ?? []),\n )}\n >\n {\n {\n error: <ExclamationOctagonSm {...mergeDescriptors(elements.alertIcon)} />,\n warning: <ExclamationTriangleSm {...mergeDescriptors(elements.alertIcon)} />,\n }[intent]\n }\n {children}\n </div>\n );\n});\n","export const ClerkLogo = () => (\n <svg\n className=\"cl-2a836795\"\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 50 14'\n >\n <ellipse\n cx='7.889'\n cy='7'\n rx='2.187'\n ry='2.188'\n fill='currentColor'\n />\n <path\n d='M11.83 12.18a.415.415 0 0 1-.05.64A6.967 6.967 0 0 1 7.888 14a6.967 6.967 0 0 1-3.891-1.18.415.415 0 0 1-.051-.64l1.598-1.6a.473.473 0 0 1 .55-.074 3.92 3.92 0 0 0 1.794.431 3.92 3.92 0 0 0 1.792-.43.473.473 0 0 1 .551.074l1.599 1.598Z'\n fill='currentColor'\n />\n <path\n opacity='0.5'\n d='M11.78 1.18a.415.415 0 0 1 .05.64l-1.598 1.6a.473.473 0 0 1-.55.073 3.937 3.937 0 0 0-5.3 5.3.473.473 0 0 1-.074.55L2.71 10.942a.415.415 0 0 1-.641-.051 7 7 0 0 1 9.71-9.71Z'\n fill='currentColor'\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M23.748 1.422c0-.06.05-.11.11-.11h1.64c.06 0 .11.05.11.11v11.156a.11.11 0 0 1-.11.11h-1.64a.11.11 0 0 1-.11-.11V1.422Zm-2.315 8.9a.112.112 0 0 0-.15.004 2.88 2.88 0 0 1-.884.569c-.36.148-.747.222-1.137.219-.33.01-.658-.047-.965-.166a2.422 2.422 0 0 1-.817-.527c-.424-.432-.668-1.05-.668-1.785 0-1.473.98-2.48 2.45-2.48.394-.005.785.074 1.144.234.325.144.617.35.86.607.04.044.11.049.155.01l1.108-.959a.107.107 0 0 0 .01-.152c-.832-.93-2.138-1.412-3.379-1.412-2.499 0-4.27 1.686-4.27 4.166 0 1.227.44 2.26 1.182 2.99.743.728 1.801 1.157 3.022 1.157 1.53 0 2.763-.587 3.485-1.34a.107.107 0 0 0-.009-.155l-1.137-.98Zm13.212-1.14a.108.108 0 0 1-.107.096H28.79a.106.106 0 0 0-.104.132c.286 1.06 1.138 1.701 2.302 1.701a2.59 2.59 0 0 0 1.136-.236 2.55 2.55 0 0 0 .862-.645.08.08 0 0 1 .112-.01l1.155 1.006c.044.039.05.105.013.15-.698.823-1.828 1.42-3.38 1.42-2.386 0-4.185-1.651-4.185-4.162 0-1.232.424-2.264 1.13-2.994.373-.375.82-.67 1.314-.87a3.968 3.968 0 0 1 1.557-.285c2.419 0 3.983 1.701 3.983 4.05a6.737 6.737 0 0 1-.04.647Zm-5.924-1.524a.104.104 0 0 0 .103.133h3.821c.07 0 .123-.066.103-.134-.26-.901-.921-1.503-1.947-1.503a2.13 2.13 0 0 0-.88.16 2.1 2.1 0 0 0-.733.507 2.242 2.242 0 0 0-.467.837Zm11.651-3.172c.061-.001.11.048.11.109v1.837a.11.11 0 0 1-.117.109 7.17 7.17 0 0 0-.455-.024c-1.43 0-2.27 1.007-2.27 2.329v3.732a.11.11 0 0 1-.11.11h-1.64a.11.11 0 0 1-.11-.11v-7.87c0-.06.049-.109.11-.109h1.64c.06 0 .11.05.11.11v1.104a.011.011 0 0 0 .02.007c.64-.857 1.587-1.333 2.587-1.333l.125-.001Zm4.444 4.81a.035.035 0 0 1 .056.006l2.075 3.334a.11.11 0 0 0 .093.052h1.865a.11.11 0 0 0 .093-.168L46.152 7.93a.11.11 0 0 1 .012-.131l2.742-3.026a.11.11 0 0 0-.081-.183h-1.946a.11.11 0 0 0-.08.036l-3.173 3.458a.11.11 0 0 1-.19-.074V1.422a.11.11 0 0 0-.11-.11h-1.64a.11.11 0 0 0-.11.11v11.156c0 .06.05.11.11.11h1.64a.11.11 0 0 0 .11-.11v-1.755a.11.11 0 0 1 .03-.075l1.35-1.452Z'\n fill='currentColor'\n />\n </svg>\n);\n","export function isValidUrl(val: unknown): val is string {\n if (!val) {\n return false;\n }\n\n try {\n new URL(val as string);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport function isDataUri(val?: string): val is string {\n if (!isValidUrl(val)) {\n return false;\n }\n\n return new URL(val).protocol === 'data:';\n}\n\nconst CLERK_IMAGE_URL_BASES = ['https://img.clerk.com/', 'https://img.clerkstage.dev/', 'https://img.lclclerk.com/'];\n\nexport const isClerkImage = (src?: string): boolean => {\n return !!CLERK_IMAGE_URL_BASES.some(base => src?.includes(base));\n};\n","import { isDataUri, isValidUrl } from './validators';\n\nexport const generateSrcSet = ({ src, width }: { src?: string; width: number }) => {\n if (!src) {\n return '';\n }\n\n return generateSrc({ src, width: width });\n};\n\nexport const generateSrc = ({ src, width }: { src?: string; width: number }) => {\n if (!isValidUrl(src) || isDataUri(src)) {\n return src;\n }\n\n const newSrc = new URL(src);\n if (width) {\n newSrc.searchParams.append('width', width?.toString());\n }\n\n return newSrc.href;\n};\n","import * as React from 'react';\n\nimport { generateSrc, generateSrcSet } from '~/utils/images';\nimport { isClerkImage } from '~/utils/validators';\n\n// BASE_IMAGE_WIDTH is the default \"small size\" for Clerk images.\n// Images are rendered at a multiple of this resolution (currently 1x or 2x)\n// NOTE: img.clerk.com only returns the true aspect ratio for a few specific widths.\n// For other widths, it returns the next largest size. See https://clerk.com/docs/guides/image-optimization/imageurl-image-optimization\n// Currently, 80 and 160 are available exact widths returned by img.clerk.com.\n// Before updating this value, or returning a new size multiple, recommend\n// ensuring that img.clerk.com also returns that new size exactly.\nconst BASE_IMAGE_WIDTH = 80;\n\nexport const Image = React.forwardRef(function Image(\n {\n src,\n size = BASE_IMAGE_WIDTH,\n ...props\n }: React.ImgHTMLAttributes<HTMLImageElement> & {\n size?: number;\n },\n forwardedRef: React.ForwardedRef<HTMLImageElement>,\n) {\n const shouldOptimize = isClerkImage(src);\n return (\n <img\n ref={forwardedRef}\n data-image=''\n crossOrigin='anonymous'\n srcSet={shouldOptimize ? generateSrcSet({ src, width: size }) : undefined}\n src={shouldOptimize ? generateSrc({ src, width: size * 2 }) : src}\n alt={props.alt}\n {...props}\n />\n );\n});\n","import { cx } from 'cva';\nimport * as React from 'react';\n\nimport { useAppearance } from '~/contexts';\nimport { mergeDescriptors, type ParsedElementsFragment } from '~/contexts/AppearanceContext';\nimport type { PolymorphicForwardRefExoticComponent, PolymorphicPropsWithoutRef } from '~/types/utils';\nimport { applyDescriptors } from '~/utils/dva';\n\nimport { ClerkLogo } from './clerk-logo';\nimport { Image } from './image';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardRoot\n */\nconst RootDefaultElement = 'div';\ntype RootOwnProps = {\n children?: React.ReactNode;\n banner?: React.ReactNode;\n};\n\nconst cardRootLayoutStyle = {\n cardRoot: {\n className: [\n \"cl-a6922c72\",\n \"cl-5e44c334\",\n \"cl-c4324dd6\",\n \"cl-3fbacce1\",\n \"cl-89a8e890\",\n ].join(' '),\n },\n};\nconst cardRootVisualStyle = {\n cardRoot: {\n className: \"cl-86f06b43\",\n },\n cardRootDefault: {\n className: \"cl-bc4a783b\",\n },\n cardRootInner: {\n className: \"cl-9c68c093\",\n },\n};\n\nexport const Root: PolymorphicForwardRefExoticComponent<RootOwnProps, typeof RootDefaultElement> = React.forwardRef(\n function CardRoot<T extends React.ElementType = typeof RootDefaultElement>(\n { as, banner, children, ...props }: PolymorphicPropsWithoutRef<RootOwnProps, T>,\n forwardedRef: React.ForwardedRef<Element>,\n ) {\n const { elements } = useAppearance().parsedAppearance;\n const Element: React.ElementType = as || RootDefaultElement;\n const cardRootDescriptors = applyDescriptors(elements, 'cardRoot');\n const cardRootDefaultDescriptors = applyDescriptors(elements, 'cardRootDefault');\n return (\n (<Element\n ref={forwardedRef}\n {...props}\n className={cx(\n cardRootDescriptors.className,\n banner\n ? [\n \"cl-a52b4c3f\",\n \"cl-5af1449f\",\n ]\n : cardRootDefaultDescriptors.className,\n )}\n >\n {banner && (\n <div\n className={cx(\n \"cl-7817f2f2\",\n )}\n >\n <p\n className={cx(\n \"cl-03e68f06\",\n )}\n {...props}\n >\n {banner}\n </p>\n </div>\n )}\n {children && <div {...mergeDescriptors(elements.cardRootInner)}>{children}</div>}\n </Element>)\n );\n },\n);\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardContent\n */\nconst cardContentLayoutStyle = {\n cardContent: {\n className: \"cl-8baa595e\",\n },\n} satisfies ParsedElementsFragment;\nconst cardContentVisualStyle = {\n cardContent: {\n className: [\n \"cl-c99cd8b4\",\n \"cl-1c01a9d7\",\n ].join(' '),\n },\n} satisfies ParsedElementsFragment;\n\nexport const Content = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardContent(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardContent)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardHeader\n */\nconst cardHeaderLayoutStyle = {\n cardHeader: {\n className: \"cl-c757ad0c\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardHeaderVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Header = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardHeader(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardHeader)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardLogo\n */\nconst cardLogoLayoutStyle = {\n cardLogoBox: {\n className: \"cl-4f5262b8\",\n },\n cardLogoLink: {\n className: \"cl-33c167b1\",\n },\n cardLogoImage: {\n className: \"cl-deefc87a\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardLogoVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Logo = React.forwardRef(function CardLogo(\n {\n href,\n src,\n ...props\n }: React.ImgHTMLAttributes<HTMLImageElement> & {\n href?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLImageElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n if (!src) {\n return null;\n }\n\n const img = (\n <Image\n ref={forwardedRef}\n src={src}\n size={200}\n {...props}\n {...mergeDescriptors(elements.cardLogoImage)}\n />\n );\n return (\n <div {...mergeDescriptors(elements.cardLogoBox)}>\n {href ? (\n <a\n href={href}\n {...mergeDescriptors(elements.cardLogoLink)}\n >\n {img}\n </a>\n ) : (\n img\n )}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardTitle\n */\n// Purposefully left blank to prevent confusion.\nconst cardTitleLayoutStyle = {} satisfies ParsedElementsFragment;\nconst cardTitleVisualStyle = {\n cardTitle: {\n className: \"cl-f29e36a7\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Title = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(function CardTitle(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <h2\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardTitle)}\n >\n {children}\n </h2>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardDescription\n */\n// Purposefully left blank to prevent confusion.\nconst cardDescriptionLayoutStyle = {} satisfies ParsedElementsFragment;\nconst cardDescriptionVisualStyle = {\n cardDescription: {\n className: \"cl-5c413d88\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Description = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CardDescription({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <p\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardDescription)}\n >\n {children}\n </p>\n );\n },\n);\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardBody\n */\nconst cardBodyLayoutStyle = {\n cardBody: {\n className: \"cl-5eebf917\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardBodyVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Body = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardBody(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardBody)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardActions\n */\nconst cardActionsLayoutStyle = {\n cardActions: {\n className: [\n \"cl-5eebf917\",\n // Note:\n // Prevents underline interractions triggering outside of the link text\n // https://linear.app/clerk/issue/SDKI-192/#comment-ebf943b0\n \"cl-04c8fa73\",\n ].join(' '),\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardActionsVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Actions = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardActions(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardActions)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardFooter\n */\nconst cardFooterLayoutStyle = {\n cardFooter: {\n className: \"cl-0f2a693e\",\n },\n cardFooterAction: {\n className: \"cl-0c81043e\",\n },\n} satisfies ParsedElementsFragment;\nconst cardFooterVisualStyle = {\n cardFooterAction: {\n className: \"cl-e7659ac7\",\n },\n cardFooterActionText: {\n className: \"cl-8e9f71ce\",\n },\n cardFooterActionLink: {\n className:\n \"cl-812d8d14\",\n },\n cardFooterActionButton: {\n className:\n \"cl-812d8d14\",\n },\n cardFooterActionPageLink: {\n className: \"cl-39faa7ab\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Footer = React.forwardRef(function CardFooter(\n {\n branded = true,\n helpPageUrl,\n privacyPageUrl,\n termsPageUrl,\n children,\n className,\n ...props\n }: {\n branded?: boolean;\n helpPageUrl?: string;\n privacyPageUrl?: string;\n termsPageUrl?: string;\n } & React.HTMLAttributes<HTMLDivElement>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const hasPageLinks = helpPageUrl || privacyPageUrl || termsPageUrl;\n const renderFooter = branded || hasPageLinks || children;\n const renderSubFooter = branded || hasPageLinks;\n const hasBrandingAndPageLinks = branded && hasPageLinks;\n\n return renderFooter ? (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooter)}\n >\n {children}\n\n {renderSubFooter ? (\n <div\n className={cx(\"cl-10ec6412\", hasBrandingAndPageLinks ? \"cl-32c92bb1\" : \"cl-a503dd37\")}\n >\n {branded ? (\n <p\n // Note:\n // We don't use `items-center` here for a more optical fit\n className=\"cl-286d6459\"\n >\n Secured by{' '}\n <a\n aria-label='Clerk logo'\n href='https://www.clerk.com?utm_source=clerk&amp;utm_medium=components'\n target='_blank'\n rel='noopener'\n className=\"cl-e9dc1e80\"\n >\n <ClerkLogo />\n </a>\n </p>\n ) : null}\n\n {hasPageLinks ? (\n <div className=\"cl-c354e22d\">\n {helpPageUrl ? <FooterPageLink href={helpPageUrl}>Help</FooterPageLink> : null}\n {privacyPageUrl ? <FooterPageLink href={privacyPageUrl}>Privacy</FooterPageLink> : null}\n {termsPageUrl ? <FooterPageLink href={termsPageUrl}>Terms</FooterPageLink> : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null;\n});\n\nexport const FooterAction = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooterAction({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterAction)}\n >\n {children}\n </div>\n );\n },\n);\n\nexport const FooterActionText = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n function CardFooterActionText({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <p\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionText)}\n >\n {children}\n </p>\n );\n },\n);\n\nexport const FooterActionButton = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function CardFooterActionButton({ children, className, type = 'button', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <button\n ref={forwardedRef}\n // eslint-disable-next-line react/button-has-type\n type={type}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionButton)}\n >\n {children}\n </button>\n );\n },\n);\n\nexport const FooterActionLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n function CardFooterActionLink({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <a\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionLink)}\n >\n {children}\n </a>\n );\n },\n);\n\nconst FooterPageLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n function CardFooterPageLink({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <a\n ref={forwardedRef}\n {...props}\n target='_blank'\n rel='noopener'\n {...mergeDescriptors(elements.cardFooterActionPageLink)}\n >\n {children}\n </a>\n );\n },\n);\n\nexport const layoutStyle = {\n ...cardRootLayoutStyle,\n ...cardHeaderLayoutStyle,\n ...cardContentLayoutStyle,\n ...cardTitleLayoutStyle,\n ...cardDescriptionLayoutStyle,\n ...cardBodyLayoutStyle,\n ...cardActionsLayoutStyle,\n ...cardFooterLayoutStyle,\n ...cardLogoLayoutStyle,\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n ...cardRootVisualStyle,\n ...cardHeaderVisualStyle,\n ...cardContentVisualStyle,\n ...cardTitleVisualStyle,\n ...cardDescriptionVisualStyle,\n ...cardBodyVisualStyle,\n ...cardActionsVisualStyle,\n ...cardFooterVisualStyle,\n ...cardLogoVisualStyle,\n} satisfies ParsedElementsFragment;\n","import { Icon, type IconProps } from './icon';\n\nexport default function CheckmarkCircleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <circle\n cx='8'\n cy='8'\n r='5.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M6.25 8.35L7.65 9.75L9.75 6.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function InformationCircleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <circle\n cx='8'\n cy='8'\n r='5.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 8.75V10.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 6.25024V6.26024'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { cx } from 'cva';\nimport * as React from 'react';\n\nimport { mergeDescriptors, type ParsedElementsFragment, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva, type VariantProps } from '~/utils/dva';\n\nimport CheckmarkCircleSm from './icons/checkmark-circle-sm';\nimport ExclamationOctagonSm from './icons/exclamation-octagon-sm';\nimport ExclamationTriangleSm from './icons/exclamation-triangle-sm';\nimport InformationCircleSm from './icons/information-circle-sm';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldRoot\n */\n\nconst fieldRootLayoutStyle = {\n fieldRoot: {\n className: [\n \"cl-dcb655e4\",\n \"cl-03811a40\",\n \"cl-81d1ec5b\",\n \"cl-3a46e0d4\",\n \"cl-7c5144aa\",\n ].join(' '),\n },\n};\n\nconst fieldRootVisualStyle = {\n fieldRoot: {\n className: [\n \"cl-4636b1d3\",\n \"cl-3da4a9c6\",\n ].join(' '),\n },\n};\n\nexport const Root = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function FieldRoot(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldRoot)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldLabel\n */\n\nconst fieldLabelLayoutStyle = {\n fieldLabel: {\n className: \"cl-8c391822\",\n },\n};\n\nconst fieldLabelVisualStyle = {\n fieldLabel: {\n className:\n \"cl-f75d1b2a\",\n },\n};\n\nexport const Label = React.forwardRef(function FieldLabel(\n {\n className,\n children,\n visuallyHidden,\n ...props\n }: React.HTMLAttributes<HTMLLabelElement> & { htmlFor?: string; visuallyHidden?: boolean },\n forwardedRef: React.ForwardedRef<HTMLLabelElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const fieldLabelDescriptors = applyDescriptors(elements, 'fieldLabel');\n return (\n (<label\n ref={forwardedRef}\n {...props}\n className={cx(visuallyHidden ? \"cl-32fb0905\" : fieldLabelDescriptors.className)}\n >\n {children}\n </label>)\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldLabelEnd\n */\n\nconst fieldLabelEndLayoutStyle = {\n fieldLabelEnd: {\n className: \"cl-43770a6e\",\n },\n};\n\nexport const LabelEnd = React.forwardRef(function FieldLabelEnd(\n { className, children, ...props }: React.HTMLAttributes<HTMLSpanElement>,\n forwardedRef: React.ForwardedRef<HTMLSpanElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <span\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldLabelEnd)}\n >\n {children}\n </span>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldHint\n */\n\nconst fieldHintVisualStyle = {\n fieldLabelEnd: {\n className: \"cl-275d380b\",\n },\n};\n\nexport const Hint = React.forwardRef(function FieldHint(\n { className, children, ...props }: React.ComponentProps<typeof LabelEnd>,\n forwardedRef: React.ForwardedRef<React.ComponentRef<typeof LabelEnd>>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <LabelEnd\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldHint)}\n >\n {children}\n </LabelEnd>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldCheckbox\n */\n\nconst fieldCheckboxLayoutStyle = {\n fieldCheckbox: {\n className: \"cl-13e816a3\",\n },\n};\n\nconst fieldCheckboxVisualStyle = {\n fieldCheckbox: {\n className: \"cl-12b86d4e\",\n },\n};\n\nexport const Checkbox = React.forwardRef(function FieldCheckbox(\n props: React.InputHTMLAttributes<HTMLInputElement>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <input\n ref={forwardedRef}\n type='checkbox'\n {...props}\n {...mergeDescriptors(elements.fieldCheckbox)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInputGroup\n */\n\nconst fieldInputGroupLayoutStyle = {\n fieldInputGroup: {\n className: \"cl-6a6227fc\",\n },\n};\n\nexport const InputGroup = React.forwardRef(function FieldInputGroup(\n { className, ...props }: React.HTMLAttributes<HTMLDivElement>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={ref}\n {...props}\n {...mergeDescriptors(elements.fieldInputGroup)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInputGroupEnd\n */\n\nconst fieldInputGroupEndLayoutStyle = {\n fieldInputGroupEnd: {\n className: \"cl-4e1b09eb\",\n },\n};\n\nexport const InputGroupEnd = React.forwardRef(function FieldInputGroupEnd(\n { className, ...props }: React.HTMLAttributes<HTMLDivElement>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n data-field-input-group-end=''\n ref={ref}\n // className={cx('absolute inset-0 start-auto size-[--field-input-group-end-size]', className)}\n {...props}\n {...mergeDescriptors(elements.fieldInputGroupEnd)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInput\n */\n\nconst fieldInputLayoutStyle = {\n fieldInput: {\n className: [\n \"cl-58d0413d\",\n \"cl-43ccb14c\",\n \"cl-f18c4e82\",\n // If an `InputGroup` exists, use the `pe` value, or fallback to the\n // standard input `px` value\n \"cl-983f1668\",\n \"cl-d3e031f6\",\n \"cl-ed4ed5cf\",\n ].join(' '),\n },\n};\n\nconst fieldInputVisualStyle = {\n fieldInput: {\n className: [\n \"cl-ac0ebc23\",\n \"cl-2aeea0c3\",\n \"cl-0290fbc4\",\n \"cl-d4e2e313\",\n ].join(' '),\n },\n fieldInputIdle: {\n className: [\n \"cl-cac18779\",\n \"cl-03c582dd\",\n ].join(' '),\n },\n fieldInputInfo: {\n className: [\n \"cl-fa487ffe\",\n \"cl-03c582dd\",\n ].join(' '),\n },\n fieldInputError: {\n className: [\n \"cl-cffb481b\",\n \"cl-776840f6\",\n \"cl-1e334ea3\",\n ].join(' '),\n },\n fieldInputSuccess: {\n className: [\n \"cl-90c7848a\",\n \"cl-204cd4cf\",\n \"cl-0810e01c\",\n ].join(' '),\n },\n fieldInputWarning: {\n className: [\n \"cl-d250e2b7\",\n \"cl-8cae7b37\",\n \"cl-43888e8c\",\n ].join(' '),\n },\n};\n\nconst input = dva({\n base: 'fieldInput',\n variants: {\n intent: {\n idle: 'fieldInputIdle',\n info: 'fieldInputInfo',\n error: 'fieldInputError',\n success: 'fieldInputSuccess',\n warning: 'fieldInputWarning',\n },\n },\n});\n\n// Note:\n// - To create the overlapping border/shadow effect\"\n// - `ring` – \"focus ring\"\n// - `ring-offset` - border\nexport const Input = React.forwardRef(function FieldInput(\n { descriptor, intent = 'idle', ...props }: VariantProps<typeof input> & React.InputHTMLAttributes<HTMLInputElement>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <input\n ref={forwardedRef}\n {...props}\n {...applyDescriptors(elements, input({ intent, descriptor }))}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldMessage\n */\n\nconst fieldMessageLayoutStyle = {\n fieldMessage: {\n className: \"cl-b86c33af\",\n },\n fieldMessageStart: {\n className: \"cl-c62ec162\",\n },\n fieldMessageCenter: {\n className: \"cl-a503dd37\",\n },\n fieldMessageEnd: {\n className: \"cl-307644c3\",\n },\n};\n\nconst fieldMessageVisualStyle = {\n fieldMessage: {\n className: \"cl-757071a1\",\n },\n fieldMessageIdle: {\n className: \"cl-de621653\",\n },\n fieldMessageInfo: {\n className: \"cl-de621653\",\n },\n fieldMessageError: {\n className: \"cl-e5cd1f02\",\n },\n fieldMessageSuccess: {\n className: \"cl-e8e05e0c\",\n },\n fieldMessageWarning: {\n className: \"cl-d794f084\",\n },\n};\n\nconst message = dva({\n base: 'fieldMessage',\n variants: {\n justify: {\n start: 'fieldMessageStart',\n center: 'fieldMessageCenter',\n end: 'fieldMessageEnd',\n },\n intent: {\n idle: 'fieldMessageIdle',\n info: 'fieldMessageInfo',\n error: 'fieldMessageError',\n success: 'fieldMessageSuccess',\n warning: 'fieldMessageWarning',\n },\n },\n});\n\nexport const Message = React.forwardRef<\n HTMLDivElement,\n VariantProps<typeof message> & React.HTMLAttributes<HTMLDivElement>\n>(function FieldMessage({ descriptor, children, justify = 'start', intent = 'idle', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n (<p\n ref={forwardedRef}\n {...props}\n {...applyDescriptors(elements, message({ justify, intent, descriptor }))}\n >\n {intent !== 'idle' && (\n <span className=\"cl-eb8de575\">\n {\n {\n error: <ExclamationOctagonSm />,\n info: <InformationCircleSm />,\n success: <CheckmarkCircleSm />,\n warning: <ExclamationTriangleSm />,\n }[intent]\n }\n </span>\n )}\n {children}\n </p>)\n );\n});\n\nexport const layoutStyle = {\n ...fieldRootLayoutStyle,\n ...fieldLabelLayoutStyle,\n ...fieldLabelEndLayoutStyle,\n // ...fieldHintLayoutStyle,\n ...fieldCheckboxLayoutStyle,\n ...fieldInputGroupLayoutStyle,\n ...fieldInputGroupEndLayoutStyle,\n ...fieldInputLayoutStyle,\n ...fieldMessageLayoutStyle,\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n ...fieldRootVisualStyle,\n ...fieldLabelVisualStyle,\n // ...fieldLabelEndLayoutStyle,\n ...fieldHintVisualStyle,\n ...fieldCheckboxVisualStyle,\n // ...fieldInputGroupVisualStyle,\n // ...fieldInputGroupEndVisualStyle,\n ...fieldInputVisualStyle,\n ...fieldMessageVisualStyle,\n} satisfies ParsedElementsFragment;\n","import * as React from 'react';\n\nimport {\n mergeDescriptors,\n type ParsedDescriptor,\n type ParsedElementsFragment,\n useAppearance,\n} from '~/contexts/AppearanceContext';\n\nexport const layoutStyle = {\n separator: {\n className: \"cl-c53048bf\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n separator: {\n className: \"cl-77b14b2e\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Separator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n descriptors?: ParsedDescriptor[];\n }\n>(function Separator({ children, descriptors, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.separator, ...(descriptors ?? []))}\n >\n {children}\n </div>\n );\n});\n","import { OAUTH_PROVIDERS, type OAuthProvider, WEB3_PROVIDERS, type Web3Provider } from '@clerk/types';\n\nexport const DESCRIPTORS = [\n // Alert\n 'alert',\n 'alertError',\n 'alertWarning',\n 'alertIcon',\n\n // Button\n 'button',\n 'buttonPrimary',\n 'buttonSecondary',\n 'buttonConnection',\n 'buttonPrimaryDefault',\n 'buttonSecondaryDefault',\n 'buttonConnectionDefault',\n 'buttonDisabled',\n 'buttonBusy',\n 'buttonText',\n 'buttonTextVisuallyHidden',\n 'buttonIcon',\n 'buttonIconStart',\n 'buttonIconEnd',\n 'buttonSpinner',\n ...[...OAUTH_PROVIDERS, ...WEB3_PROVIDERS].map(({ provider }) => `buttonConnection__${provider}`),\n\n // Connection\n 'connectionList',\n 'connectionListItem',\n\n // Field\n 'fieldRoot',\n 'fieldLabel',\n 'fieldLabelEnd',\n 'fieldHint',\n 'fieldCheckbox',\n 'fieldInputGroup',\n 'fieldInputGroupEnd',\n 'fieldInput',\n 'fieldInputDefault',\n 'fieldInputOtp',\n 'fieldInputIdle',\n 'fieldInputInfo',\n 'fieldInputError',\n 'fieldInputSuccess',\n 'fieldInputWarning',\n 'fieldMessageStart',\n 'fieldMessageCenter',\n 'fieldMessageEnd',\n 'fieldMessage',\n 'fieldMessageIdle',\n 'fieldMessageInfo',\n 'fieldMessageError',\n 'fieldMessageSuccess',\n 'fieldMessageWarning',\n\n // Separator\n 'separator',\n\n // Spinner\n 'spinner',\n\n // Card\n 'cardRoot',\n 'cardRootDefault',\n 'cardRootInner',\n 'cardHeader',\n 'cardContent',\n 'cardTitle',\n 'cardDescription',\n 'cardBody',\n 'cardActions',\n 'cardFooter',\n 'cardFooterAction',\n 'cardFooterActionText',\n 'cardFooterActionLink',\n 'cardFooterActionButton',\n 'cardFooterActionPageLink',\n 'cardLogoBox',\n 'cardLogoLink',\n 'cardLogoImage',\n] as const;\n\ntype Provider = OAuthProvider | Web3Provider;\n\n/**\n * Union of all valid descriptors used throughout the components.\n */\nexport type DescriptorIdentifier = (typeof DESCRIPTORS)[number] | `buttonConnection__${Provider}`;\n","import type { ParsedElements, PartialTheme } from '~/contexts/AppearanceContext';\nimport { DESCRIPTORS } from '~/descriptors';\n\n/**\n * Given an object containing partial descriptors, returns a full ParsedElements object with generated descriptors.\n */\nexport function buildTheme(p: PartialTheme): ParsedElements {\n const theme: Partial<ParsedElements> = {};\n\n // Setup base theme containing empty objects for each descriptor.\n DESCRIPTORS.forEach(descriptor => {\n theme[descriptor] = {\n descriptor: `cl-${descriptor}`,\n className: '',\n style: {},\n };\n });\n\n for (const descriptor in p) {\n const key = descriptor as keyof ParsedElements;\n\n if (p[key]) {\n if (!(key in theme)) {\n console.warn(`Clerk: Unknown descriptor: ${descriptor}`);\n continue;\n }\n\n // These non-null assertions are okay since we confirmed that theme contains the descriptor above.\n const { className, style } = p[key]!;\n if (className) {\n theme[key]!.className = className;\n }\n\n if (style) {\n theme[key]!.style = style;\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return theme as ParsedElements;\n}\n\n/**\n * Given two complete theme objects, merge their className and style properties to create a new merged theme.\n */\nexport function mergeTheme(a: ParsedElements, b: ParsedElements): ParsedElements {\n const mergedTheme = { ...a };\n\n for (const d in mergedTheme) {\n const descriptor = d as keyof ParsedElements;\n mergedTheme[descriptor].className = [mergedTheme[descriptor].className, b[descriptor].className].join(' ');\n mergedTheme[descriptor].style = { ...mergedTheme[descriptor].style, ...b[descriptor].style };\n }\n\n return mergedTheme;\n}\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('buildTheme', () => {\n it('returns a theme containing all descriptors', () => {\n const theme = buildTheme({});\n expect(Object.keys(theme).sort()).toStrictEqual([...DESCRIPTORS].sort());\n\n for (const [k, v] of Object.entries(theme)) {\n expect(v.descriptor).toEqual(`cl-${k}`);\n expect(v.className).toEqual('');\n expect(v.style).toStrictEqual({});\n }\n });\n });\n}\n","import { layoutStyle as connections } from '~/common/connections';\nimport { layoutStyle as alert } from '~/primitives/alert';\nimport { layoutStyle as button } from '~/primitives/button';\nimport { layoutStyle as card } from '~/primitives/card';\nimport { layoutStyle as field } from '~/primitives/field';\nimport { layoutStyle as separator } from '~/primitives/separator';\nimport { layoutStyle as spinner } from '~/primitives/spinner';\n\nimport { buildTheme } from './buildTheme';\n\nexport const layoutTheme = buildTheme({\n ...alert,\n ...button,\n ...card,\n ...connections,\n ...field,\n ...separator,\n ...spinner,\n});\n","import { visualStyle as connections } from '~/common/connections';\nimport { visualStyle as alert } from '~/primitives/alert';\nimport { visualStyle as button } from '~/primitives/button';\nimport { visualStyle as card } from '~/primitives/card';\nimport { visualStyle as field } from '~/primitives/field';\nimport { visualStyle as separator } from '~/primitives/separator';\nimport { visualStyle as spinner } from '~/primitives/spinner';\n\nimport { buildTheme, mergeTheme } from './buildTheme';\nimport { layoutTheme } from './layout';\n\nconst visualTheme = buildTheme({\n ...alert,\n ...button,\n ...card,\n ...connections,\n ...field,\n ...separator,\n ...spinner,\n});\nexport const fullTheme = mergeTheme(layoutTheme, visualTheme);\n","import { createContextAndHook, useDeepEqualMemo } from '@clerk/shared/react';\nimport type { Appearance as CurrentAppearance, Layout as CurrentLayout } from '@clerk/types';\nimport React from 'react';\n\nimport type { DescriptorIdentifier } from '~/descriptors';\nimport { fullTheme } from '~/themes';\n\n/**\n * The final resulting descriptor that gets passed to mergeDescriptors and spread on the element.\n */\nexport type ParsedDescriptor = { descriptor: string; className: string; style: React.CSSProperties };\n\n/**\n * The authoring format value type for styles written within a component. Essentially { className?: string, style?: CSSProperties }\n */\nexport type PartialDescriptor = Omit<Partial<ParsedDescriptor>, 'descriptor'>;\n\n/**\n * A full theme generated from merging ParsedElementsFragments. Has entries for each descriptor, but they're not complete.\n */\nexport type PartialTheme = Partial<Record<DescriptorIdentifier, PartialDescriptor>>;\n\n/**\n * A subset of a partial theme. This is the type used when authoring style objects within a component.\n */\nexport type ParsedElementsFragment = Partial<PartialTheme>;\n\n/**\n * A full theme, complete with descriptors. This is the value returned from useAppearance().parsedAppearance, and is\n * the main type interacted with within components.\n */\nexport type ParsedElements = Record<DescriptorIdentifier, ParsedDescriptor>;\nexport type ParsedOptions = Omit<CurrentLayout, 'logoPlacement'> & {\n logoVisibility?: 'visible' | 'hidden';\n};\n\ntype ElementsAppearanceConfig = string | (React.CSSProperties & { className?: string });\n\nexport type Appearance = Omit<CurrentAppearance, 'elements' | 'baseTheme' | 'layout'> & {\n theme?: ParsedElements;\n elements?: Partial<Record<DescriptorIdentifier, ElementsAppearanceConfig>>;\n options?: ParsedOptions;\n};\n\nexport type AppearanceCascade = {\n globalAppearance?: ParsedAppearance;\n appearance?: Appearance;\n};\n\n/**\n * The generated appearance calculated from defaults and user-provided values. This is the type used to access computed\n * appearance values, and as such will always have a value for a given key.\n */\nexport type ParsedAppearance = {\n theme: ParsedElements;\n elements: ParsedElements;\n options: ParsedOptions;\n};\n\ntype AppearanceContextValue = {\n /**\n * The calculated appearance value based on the provided `appearance` and `globalAppearance`.\n *\n * Example:\n * ```tsx\n * function Help() {\n * const { options } = useAppearance().parsedAppearance;\n * return <p>{options.helpPageUrl}</p>\n * }\n * ```\n */\n parsedAppearance: ParsedAppearance;\n themelessAppearance: Appearance | null;\n theme?: ParsedElements;\n};\n\n/**\n * Used to merge full themes with ParsedElementsFragments. Allows you to combine optionsStyle with multiple visualStyle\n * elements.\n */\nexport function mergeParsedElementsFragment(...fragments: ParsedElementsFragment[]): ParsedElementsFragment {\n const acc: ParsedElementsFragment = {};\n\n fragments.forEach(fragment => {\n for (const k in fragment) {\n const key = k as keyof ParsedElementsFragment;\n if (key in acc) {\n acc[key]!.className = [acc[key]?.className, fragment[key]?.className].join(' ');\n acc[key]!.style = {\n ...acc[key]!.style,\n ...fragment[key]?.style,\n };\n } else {\n acc[key] = {\n className: fragment[key]?.className,\n style: fragment[key]?.style,\n };\n }\n }\n });\n\n return acc;\n}\n\n/**\n * Used within components to merge multiple descriptors onto a single element. Result is directly spread onto the element.\n */\nexport function mergeDescriptors(...descriptors: (ParsedDescriptor | boolean)[]): PartialDescriptor {\n return descriptors.reduce<PartialDescriptor>(\n (acc, el) => {\n if (typeof el === 'boolean') {\n return acc;\n }\n acc.className = [el.descriptor, acc.className, el.className].join(' ');\n acc.style = { ...acc.style, ...el.style };\n return acc;\n },\n { className: '', style: {} },\n );\n}\n\nfunction mergeElementsAppearanceConfig(\n a: ElementsAppearanceConfig,\n b: ElementsAppearanceConfig,\n): ElementsAppearanceConfig {\n let result: ElementsAppearanceConfig | undefined;\n if (typeof a === 'string' && typeof b === 'string') {\n result = [a, b].join(' ');\n } else if (typeof a === 'string' && typeof b === 'object') {\n result = { ...b };\n result.className = [result.className, a].join(' ');\n } else if (typeof a === 'object' && typeof b === 'string') {\n result = { ...a };\n result.className = [result.className, b].join(' ');\n } else if (typeof a === 'object' && typeof b === 'object') {\n result = {\n ...a,\n ...b,\n };\n if (a.className || b.className) {\n result.className = [a.className, b.className].filter(Boolean).join(' ');\n }\n }\n\n if (!result) {\n throw new Error(`Unable to merge ElementsAppearanceConfigs: ${JSON.stringify(a)} and ${JSON.stringify(b)}`);\n }\n\n return result;\n}\n\nfunction mergeAppearance(a: Appearance | null | undefined, b: Appearance | null | undefined): Appearance | null {\n if (!a && !b) {\n return null;\n }\n if (!a) {\n return b!;\n }\n if (!b) {\n return a;\n }\n\n const result = { ...a, options: { ...a.options, ...b.options } }; // Ensure options are merged\n\n if (b.theme) {\n result.theme = b.theme;\n }\n\n if (!result.elements && b.elements) {\n result.elements = { ...b.elements };\n } else if (result.elements && b.elements) {\n Object.entries(b.elements).forEach(([element, config]) => {\n const el = element as DescriptorIdentifier;\n if (el in result.elements!) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n result.elements![el] = mergeElementsAppearanceConfig(result.elements![el]!, config!);\n } else {\n result.elements![el] = config;\n }\n });\n }\n\n return result;\n}\n\nfunction applyTheme(theme: ParsedElements | undefined, appearance: Appearance | null): ParsedAppearance {\n const baseTheme = theme ?? fullTheme;\n if (!appearance) {\n return { theme: baseTheme, elements: structuredClone(baseTheme), options: defaultAppearance.options };\n }\n\n const result = {\n theme: baseTheme,\n // because we're going to perform modifications to deeply nested objects, we need to create a structuredClone of\n // the theme or else subsequent usage of the baseTheme will contain our merged changes.\n elements: structuredClone(baseTheme),\n options: { ...defaultAppearance.options, ...appearance.options },\n };\n\n if (appearance.elements) {\n Object.entries(appearance.elements).forEach(([element, config]) => {\n const el = element as DescriptorIdentifier;\n if (el in appearance.elements!) {\n if (typeof config === 'string') {\n result.elements[el].className = [result.elements[el].className, config].join(' ');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const { className, ...style } = config!;\n if (className) {\n result.elements[el].className = [result.elements[el].className, className].join(' ');\n }\n result.elements[el].style = { ...result.elements[el].style, ...style };\n }\n }\n });\n }\n\n return result;\n}\n\nexport const defaultAppearance: ParsedAppearance = {\n theme: fullTheme,\n elements: fullTheme,\n options: {\n logoVisibility: 'visible',\n socialButtonsPlacement: 'top',\n socialButtonsVariant: 'auto',\n logoImageUrl: '',\n logoLinkUrl: '',\n showOptionalFields: true,\n helpPageUrl: '',\n privacyPageUrl: '',\n termsPageUrl: '',\n shimmer: true,\n animations: true,\n unsafe_disableDevelopmentModeWarnings: false,\n },\n};\n\nconst [AppearanceContext, useAppearance, usePartialAppearance] =\n createContextAndHook<AppearanceContextValue>('AppearanceContext');\n\ntype AppearanceProviderProps = React.PropsWithChildren<{ appearance?: Appearance; theme?: ParsedElements }>;\n\n/**\n * Used to provide appearance values throughout an application. In typical usage, the entire application will be\n * wrapped in an `AppearanceProvider` to provide global configuration. Each top-level AIO component that accepts an\n * `appearance` prop will wrap its children in `AppearanceProvider`. The provider handles the merging of attributes,\n * and makes them available via the `useAppearance` hook.\n */\nconst AppearanceProvider = (props: AppearanceProviderProps) => {\n // Access the parsedAppearance of the parent context provider. `undefined` if this is the top-most\n // AppearanceProvider.\n const {\n parsedAppearance: globalAppearance,\n themelessAppearance: globalThemelessAppearance,\n theme: globalTheme,\n } = usePartialAppearance();\n\n const ctxValue = useDeepEqualMemo(() => {\n const theme = props.theme ?? globalTheme;\n const themelessAppearance = mergeAppearance(globalThemelessAppearance, props.appearance);\n const parsedAppearance = applyTheme(theme, themelessAppearance);\n\n return { value: { parsedAppearance, themelessAppearance, theme: props.theme ?? globalTheme } };\n }, [props.appearance, props.theme, globalAppearance, globalThemelessAppearance, globalTheme]);\n\n return <AppearanceContext.Provider value={ctxValue}>{props.children}</AppearanceContext.Provider>;\n};\n\nexport { AppearanceProvider, useAppearance };\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('mergeAppearance', () => {\n it('retains keys from both appearances', () => {\n const a = { elements: { alertWarning: 'cl-test-class-one' } };\n const b = { elements: { alertIcon: 'cl-test-class-two' } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('retains the theme prop', () => {\n const a = { theme: fullTheme, elements: { alertWarning: 'cl-test-class-one' } };\n const b = {\n elements: { alertIcon: 'cl-test-class-two' },\n };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n theme: a.theme,\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('overrides the theme prop', () => {\n const a = { theme: fullTheme, elements: { alertWarning: 'cl-test-class-one' } };\n const b = {\n theme: { ...fullTheme, alertIcon: { descriptor: 'test', className: 'cl-test-class', style: {} } },\n elements: { alertIcon: 'cl-test-class-two' },\n };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n theme: b.theme,\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('merges string values for the same element', () => {\n const a = { elements: { alertWarning: 'cl-test-class-one' } };\n const b = { elements: { alertWarning: 'cl-test-class-two' } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: 'cl-test-class-one cl-test-class-two',\n },\n });\n });\n\n it('merges object values for the same element', () => {\n const a = { elements: { alertWarning: { background: 'tomato' } } };\n const b = { elements: { alertWarning: { color: 'red' } } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: { color: 'red', background: 'tomato' },\n },\n });\n });\n\n it('overrides same style properties', () => {\n const a = { elements: { alertWarning: { background: 'tomato' } } };\n const b = { elements: { alertWarning: { background: 'red' } } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: { background: 'red' },\n },\n });\n });\n });\n\n describe('mergeElementsAppearanceConfig', () => {\n it('merges two strings', () => {\n const a = 'cl-test-class-one';\n const b = 'cl-test-class-two';\n expect(mergeElementsAppearanceConfig(a, b)).toBe('cl-test-class-one cl-test-class-two');\n });\n\n it('merges a string and an object', () => {\n const a = 'cl-test-class-one';\n const b = { className: 'cl-test-class-two' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-two cl-test-class-one' });\n });\n\n it('merges an object and a string', () => {\n const a = { className: 'cl-test-class-one' };\n const b = 'cl-test-class-two';\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-one cl-test-class-two' });\n });\n\n it('merges two objects', () => {\n const a = { className: 'cl-test-class-one' };\n const b = { className: 'cl-test-class-two' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-one cl-test-class-two' });\n });\n\n it('merges a string and an object with style', () => {\n const a = 'cl-test-class-one';\n const b = { className: 'cl-test-class-two', backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n className: 'cl-test-class-two cl-test-class-one',\n backgroundColor: 'tomato',\n });\n });\n\n it('merges two objects with styles', () => {\n const a = { className: 'cl-test-class-one', color: 'red' };\n const b = { className: 'cl-test-class-two', backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n className: 'cl-test-class-one cl-test-class-two',\n color: 'red',\n backgroundColor: 'tomato',\n });\n });\n\n it('correctly omits className if not present', () => {\n const a = { color: 'red' };\n const b = { backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n color: 'red',\n backgroundColor: 'tomato',\n });\n });\n });\n\n describe('applyTheme', () => {\n it('adds classNames from theme', () => {\n const appearance = {\n elements: {\n alertWarning: 'cl-test-1',\n },\n };\n const theme = {\n ...fullTheme,\n alertWarning: { descriptor: 'test', className: 'cl-test-class', style: { color: 'red' } },\n };\n expect(applyTheme(theme, appearance)).toStrictEqual({\n theme,\n options: defaultAppearance.options,\n elements: {\n ...fullTheme,\n alertWarning: {\n className: 'cl-test-class cl-test-1',\n descriptor: 'test',\n style: { color: 'red' },\n },\n },\n });\n });\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/dva.ts","../src/primitives/spinner.tsx","../src/primitives/button.tsx","../src/primitives/icons/icon.tsx","../src/common/connections.tsx","../src/primitives/icons/exclamation-octagon-sm.tsx","../src/primitives/icons/exclamation-triangle-sm.tsx","../src/primitives/alert.tsx","../src/primitives/clerk-logo.tsx","../src/utils/validators.ts","../src/utils/images.ts","../src/primitives/image.tsx","../src/primitives/card.tsx","../src/primitives/icons/checkmark-circle-sm.tsx","../src/primitives/icons/information-circle-sm.tsx","../src/primitives/field.tsx","../src/primitives/separator.tsx","../src/descriptors.ts","../src/themes/buildTheme.ts","../src/themes/layout.ts","../src/themes/full.ts","../src/contexts/AppearanceContext.tsx"],"names":["cx","clsx","dva","compose","forwardRef","Spinner","jsxs","jsx","layoutStyle","visualStyle","React","Button","spinner","Fragment","React2","Icon","mergeProps","React3","Alert","React4","Image","React5","React6","React7","Separator","OAUTH_PROVIDERS","WEB3_PROVIDERS","createContextAndHook","useDeepEqualMemo"],"mappings":"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","file":"contexts.js","sourcesContent":["/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\nimport { clsx } from 'clsx';\n\nimport { type DescriptorIdentifier, mergeDescriptors, type ParsedElements } from '~/contexts/AppearanceContext';\n\n/* Types\n ============================================ */\n\n/* clsx\n ---------------------------------- */\n\n// When compiling with `declaration: true`, many projects experience the dreaded\n// TS2742 error. To combat this, we copy clsx's types manually.\n// Should this project move to JSDoc, this workaround would no longer be needed.\n\ntype ClassValue = ClassArray | ClassDictionary | DescriptorIdentifier | number | null | boolean | undefined;\ntype ClassDictionary = Record<DescriptorIdentifier, any>;\ntype ClassArray = ClassValue[];\n\n/* Utils\n ---------------------------------- */\n\ntype OmitUndefined<T> = T extends undefined ? never : T;\ntype StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;\n\nexport type VariantProps<Component extends (...args: any) => any> = Omit<\n OmitUndefined<Parameters<Component>[0]>,\n 'class' | 'className'\n>;\n\n/* compose\n ---------------------------------- */\n\nexport interface Compose {\n <T extends ReturnType<DVA>[]>(\n ...components: [...T]\n ): (\n props?: (\n | UnionToIntersection<\n {\n [K in keyof T]: VariantProps<T[K]>;\n }[number]\n >\n | undefined\n ) &\n DVAClassProp,\n ) => string;\n}\n\n/* cx\n ---------------------------------- */\n\nexport interface CX {\n (...inputs: ClassValue[]): string;\n}\n\nexport type CXOptions = Parameters<CX>;\nexport type CXReturn = ReturnType<CX>;\n\n/* dva\n ============================================ */\n\ntype DVAConfigBase = { base?: ClassValue };\ntype DVAVariantShape = Record<string, Record<string, ClassValue>>;\ntype DVAVariantSchema<V extends DVAVariantShape> = {\n [Variant in keyof V]?: StringToBoolean<keyof V[Variant]> | undefined;\n};\ntype DVAClassProp = { descriptor?: ClassValue };\n\nexport interface DVA {\n <_ extends \"dva's generic parameters are restricted to internal use only.\", V>(\n config: V extends DVAVariantShape\n ? DVAConfigBase & {\n variants?: V;\n compoundVariants?: (V extends DVAVariantShape\n ? (\n | DVAVariantSchema<V>\n | {\n [Variant in keyof V]?:\n | StringToBoolean<keyof V[Variant]>\n | StringToBoolean<keyof V[Variant]>[]\n | undefined;\n }\n ) &\n DVAClassProp\n : DVAClassProp)[];\n defaultVariants?: DVAVariantSchema<V>;\n }\n : DVAConfigBase & {\n variants?: never;\n compoundVariants?: never;\n defaultVariants?: never;\n },\n ): (props?: V extends DVAVariantShape ? DVAVariantSchema<V> & DVAClassProp : DVAClassProp) => string;\n}\n\n/* defineConfig\n ---------------------------------- */\n\nexport interface DefineConfigOptions {\n hooks?: {\n /**\n * @deprecated please use `onComplete`\n */\n 'cx:done'?: (className: string) => string;\n /**\n * Returns the completed string of concatenated classes/classNames.\n */\n onComplete?: (className: string) => string;\n };\n}\n\nexport interface DefineConfig {\n (options?: DefineConfigOptions): {\n compose: Compose;\n cx: CX;\n dva: DVA;\n };\n}\n\n/* Exports\n ============================================ */\n\nconst falsyToString = <T, _>(value: T) => (typeof value === 'boolean' ? `${value}` : value === 0 ? '0' : value);\n\nexport const defineConfig: DefineConfig = options => {\n const cx: CX = (...inputs) => {\n if (typeof options?.hooks?.['cx:done'] !== 'undefined') {\n return options?.hooks['cx:done'](clsx(inputs));\n }\n\n if (typeof options?.hooks?.onComplete !== 'undefined') {\n return options?.hooks.onComplete(clsx(inputs));\n }\n\n return clsx(inputs);\n };\n\n const dva: DVA = config => props => {\n if (config?.variants == null) {\n return cx(config?.base, props?.descriptor);\n }\n\n const { variants, defaultVariants } = config;\n\n const getVariantClassNames = Object.keys(variants).map((variant: keyof typeof variants) => {\n const variantProp = props?.[variant as keyof typeof props];\n const defaultVariantProp = defaultVariants?.[variant];\n\n const variantKey = (falsyToString(variantProp) ||\n falsyToString(defaultVariantProp)) as keyof (typeof variants)[typeof variant];\n\n return variants[variant][variantKey];\n });\n\n const defaultsAndProps = {\n ...defaultVariants,\n // remove `undefined` props\n ...(props &&\n Object.entries(props).reduce<typeof props>(\n (acc, [key, value]) => (typeof value === 'undefined' ? acc : { ...acc, [key]: value }),\n {} as typeof props,\n )),\n };\n\n const getCompoundVariantClassNames = config?.compoundVariants?.reduce(\n (acc, { descriptor, ...cvConfig }) =>\n Object.entries(cvConfig).every(([cvKey, cvSelector]) => {\n const selector = defaultsAndProps[cvKey as keyof typeof defaultsAndProps];\n\n return Array.isArray(cvSelector) ? cvSelector.includes(selector) : selector === cvSelector;\n })\n ? [...acc, descriptor]\n : acc,\n [] as ClassValue[],\n );\n\n return cx(config?.base, getVariantClassNames, getCompoundVariantClassNames, props?.descriptor);\n };\n\n const compose: Compose =\n (...components) =>\n props => {\n const propsWithoutDescriptor = Object.fromEntries(\n Object.entries(props || {}).filter(([key]) => !['descriptor'].includes(key)),\n );\n\n return cx(components.map(component => component(propsWithoutDescriptor)) as ClassValue[], props?.descriptor);\n };\n\n return {\n compose,\n dva,\n cx,\n };\n};\n\nexport const { compose, dva, cx } = defineConfig();\n\nexport function getDescriptors(elements: ParsedElements, descriptorList: string) {\n const descriptors = descriptorList.split(' ') as (keyof ParsedElements)[];\n return descriptors.map(d => {\n const value = elements[d];\n if (!value) {\n console.warn(`Clerk: unable to access style configuration for descriptor: ${d}`);\n }\n\n return value;\n });\n}\n\nexport function applyDescriptors(elements: ParsedElements, descriptorList: string) {\n const descriptors = getDescriptors(elements, descriptorList);\n return mergeDescriptors(...descriptors);\n}\n","import type { VariantProps } from 'cva';\nimport { cx } from 'cva';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { type ParsedElementsFragment, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva } from '~/utils/dva';\n\nconst SIZE = 16;\n\ntype SpinnerRef = HTMLDivElement;\n\nexport const layoutStyle = {\n spinner: {\n className: \"cl-26207fa4\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n spinner: {\n className: \"cl-9feebad9\",\n },\n} satisfies ParsedElementsFragment;\n\nconst spinner = dva({\n base: 'spinner',\n});\n\n/**\n * # Spinner\n *\n * ## Accessibility\n *\n * An accessible label–set via `children`–must be provided for screen readers.\n *\n * ```tsx\n * import { Spinner } from '@clerk/ceramic/components/Spinner';\n *\n * function Example() {\n * return (\n * <Spinner>\n * Some other loading text…\n * </Spinner>\n * );\n * }\n * ```\n */\nexport const Spinner = forwardRef(function Spinner(\n {\n children,\n descriptor,\n }: HTMLAttributes<SpinnerRef> &\n VariantProps<typeof spinner> & {\n children: string;\n },\n ref: React.ForwardedRef<SpinnerRef>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n (<span\n ref={ref}\n {...applyDescriptors(elements, spinner({ descriptor }))}\n >\n <span className=\"cl-32fb0905\">{children}</span>\n <svg\n viewBox={[0, 0, SIZE, SIZE].join(' ')}\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className=\"cl-4f43603c\"\n style={{\n ['--spinner-origin' as string]: Array.from({ length: 2 })\n .fill(`${16 / SIZE / 2}rem`)\n .join(' '),\n }}\n aria-hidden\n >\n <g\n className={cx(\n \"cl-bfbc36b1\",\n \"cl-22c1b7ea\",\n \"cl-45bbc6bf\",\n \"cl-e5d7b81e\",\n \"cl-4bd15f3b\",\n )}\n fill='currentColor'\n opacity={0.5}\n >\n (\n <circle\n cx='8'\n cy='2.75'\n r='0.75'\n />\n <circle\n cx='13.25'\n cy='8'\n r='0.75'\n />\n <circle\n cx='2.75'\n cy='8'\n r='0.75'\n />\n <circle\n cx='4.29999'\n cy='4.29001'\n r='0.75'\n />\n <circle\n cx='11.7'\n cy='4.29001'\n r='0.75'\n />\n <circle\n cx='4.29999'\n cy='11.72'\n r='0.75'\n />\n <circle\n cx='11.7'\n cy='11.72'\n r='0.75'\n />\n <circle\n cx='8'\n cy='13.25'\n r='0.75'\n />\n )\n </g>\n\n <circle\n className={cx(\n \"cl-4f43603c\",\n \"cl-bfbc36b1\",\n \"cl-22c1b7ea\",\n \"cl-45bbc6bf\",\n \"cl-3ba7917c\",\n )}\n cx='8'\n cy='8'\n r='5.25'\n pathLength={360}\n stroke='currentColor'\n strokeLinecap='round'\n strokeLinejoin='round'\n // Manually offset an additional 10 deg (on top of 90deg) to cover the\n // dots at either end of the stroke; which is particularly noticeable\n // when \"reduce motion\" is enabled.\n strokeDashoffset={100}\n strokeDasharray='90 270'\n strokeWidth={1.5}\n />\n </svg>\n </span>)\n );\n});\n","import * as React from 'react';\n\nimport type { ParsedElementsFragment } from '~/contexts/AppearanceContext';\nimport { mergeDescriptors, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva, type VariantProps } from '~/utils/dva';\n\nimport { Spinner } from './spinner';\n\nexport const layoutStyle = {\n button: {\n className: [\n \"cl-16a914bc\", // 16px\n \"cl-da41fb98\",\n \"cl-f5aee1d0\",\n \"cl-c8dc0199\",\n \"cl-ff9d26a5\",\n \"cl-ce4a8aff\",\n \"cl-8a3782da\",\n ].join(' '),\n },\n buttonIcon: {\n className: \"cl-27ead27a\",\n },\n buttonSpinner: {\n className: \"cl-27ead27a\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n button: {\n className: [\"cl-b55f0528\", \"cl-d9cf47b8\", \"cl-b30fc560\"].join(' '),\n },\n buttonPrimary: {\n className: [\n \"cl-a98b2d0f\",\n \"cl-e7b4a4f3\",\n \"cl-93e9de3b\",\n \"cl-cb1d8f85\",\n \"cl-2b39a966\",\n \"cl-5d812cb6\",\n ].join(' '),\n },\n buttonSecondary: {\n className: [\n \"cl-947a937d\",\n \"cl-2031c7be\",\n \"cl-97c9b979\",\n \"cl-aa729509\",\n ].join(' '),\n },\n buttonConnection: {\n className: [\n \"cl-947a937d\",\n \"cl-2031c7be\",\n \"cl-97c9b979\",\n \"cl-aa729509\",\n ].join(' '),\n },\n buttonPrimaryDefault: {\n className: \"cl-dd1ec9c5\",\n },\n buttonSecondaryDefault: {\n className: \"cl-9b31bb43\",\n },\n buttonConnectionDefault: {\n className: \"cl-9b31bb43\",\n },\n buttonDisabled: {\n className: \"cl-d4e2e313\",\n },\n buttonBusy: {\n className: \"cl-d6edf6f5\",\n },\n buttonText: {\n className: \"cl-63a1f595\",\n },\n buttonTextVisuallyHidden: {\n className: \"cl-32fb0905\",\n },\n buttonIcon: {\n className: \"cl-2e5aed0f\",\n },\n buttonSpinner: {\n className: \"cl-291bc932\",\n },\n} satisfies ParsedElementsFragment;\n\nconst button = dva({\n base: 'button',\n variants: {\n intent: {\n primary: 'buttonPrimary',\n secondary: 'buttonSecondary',\n connection: 'buttonConnection',\n },\n busy: {\n false: null,\n true: null,\n },\n disabled: {\n false: null,\n true: null,\n },\n },\n compoundVariants: [\n { busy: false, disabled: false, intent: 'primary', descriptor: 'buttonPrimaryDefault' },\n { busy: false, disabled: false, intent: 'secondary', descriptor: 'buttonSecondaryDefault' },\n { busy: false, disabled: false, intent: 'connection', descriptor: 'buttonConnectionDefault' },\n { busy: false, disabled: true, descriptor: 'buttonDisabled' },\n { busy: true, disabled: false, descriptor: 'buttonBusy' },\n ],\n});\n\nexport const Button = React.forwardRef(function Button(\n {\n busy = false,\n children,\n descriptor,\n disabled = false,\n iconStart,\n iconEnd,\n intent = 'primary',\n type = 'button',\n textVisuallyHidden,\n ...props\n }: React.ButtonHTMLAttributes<HTMLButtonElement> &\n // Omit types supplied via ButtonHTMLAttributes\n Omit<VariantProps<typeof button>, 'disabled'> & {\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n textVisuallyHidden?: boolean;\n },\n forwardedRef: React.ForwardedRef<HTMLButtonElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const spinner = <Spinner descriptor='buttonSpinner'>Loading…</Spinner>;\n\n return (\n <button\n ref={forwardedRef}\n disabled={busy || disabled}\n // eslint-disable-next-line react/button-has-type\n type={type}\n {...props}\n {...applyDescriptors(elements, button({ busy, disabled, intent, descriptor }))}\n >\n {busy && intent === 'primary' ? (\n spinner\n ) : (\n <>\n {iconStart ? (\n busy && intent === 'connection' ? (\n spinner\n ) : (\n <span {...applyDescriptors(elements, 'buttonIcon buttonIconStart')}>{iconStart}</span>\n )\n ) : null}\n {children ? (\n <span {...mergeDescriptors(elements.buttonText, !!textVisuallyHidden && elements.buttonTextVisuallyHidden)}>\n {children}\n </span>\n ) : null}\n {iconEnd ? <span {...applyDescriptors(elements, 'buttonIcon buttonIconEnd')}>{iconEnd}</span> : null}\n </>\n )}\n </button>\n );\n});\n","import * as React from 'react';\nimport { mergeProps } from 'react-aria';\n\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {}\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps & { children: React.ReactElement }>(\n function Icon(props, ref) {\n const { children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden, ...restProps } = props;\n return React.cloneElement(children, {\n ...mergeProps(children.props, restProps),\n ref,\n width: '1em',\n height: '1em',\n fill: 'none',\n focusable: 'false',\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaLabel ? ariaHidden || undefined : true,\n role: 'img',\n });\n },\n);\n","import * as Common from '@clerk/elements/common';\nimport * as React from 'react';\n\nimport { useAppearance } from '~/contexts';\nimport { useEnabledConnections } from '~/hooks/use-enabled-connections';\nimport { useLocalizations } from '~/hooks/use-localizations';\nimport { Button } from '~/primitives/button';\nimport { PROVIDERS } from '~/primitives/icons/providers';\nimport { applyDescriptors } from '~/utils/dva';\n\n/**\n * Calculates the number of columns given the total number of items and the maximum columns allowed per row.\n *\n * @param {Object} options\n * @param {number} options.length - The total number of items.\n * @param {number} options.max - The maximum number of columns allowed per row.\n * @returns The calculated number of columns.\n *\n * Example output for item counts from 1 to 24 with `columns: 6`:\n *\n * 1: [ 1 ]\n * 2: [ 1, 2 ]\n * 3: [ 1, 2, 3 ]\n * 4: [ 1, 2, 3, 4 ]\n * 5: [ 1, 2, 3, 4, 5 ]\n * 6: [ 1, 2, 3, 4, 5, 6 ]\n * 7: [ [1, 2, 3, 4], [5, 6, 7] ]\n * 8: [ [1, 2, 3, 4], [5, 6, 7, 8] ]\n * 9: [ [1, 2, 3, 4, 5], [6, 7, 8, 9] ]\n * 10: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10] ]\n * 11: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11] ]\n * 12: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12] ]\n * 13: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13] ]\n * 14: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14] ]\n * 15: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15] ]\n * 16: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16] ]\n * 17: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17] ]\n * 18: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18] ]\n * 19: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19] ]\n * 20: [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20] ]\n * 21: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21] ]\n * 22: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11], [12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22] ]\n * 23: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23] ]\n * 24: [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24] ]\n *\n * Examples:\n * ```\n * getColumnCount(1); // 1\n * getColumnCount(7); // 4\n * getColumnCount(15); // 6\n * ```\n */\nfunction getColumnCount({ length, max }: Record<'length' | 'max', number>): number {\n const numRows = Math.ceil(length / max);\n return Math.ceil(length / numRows);\n}\n\nexport const layoutStyle = {\n connectionList: {\n className:\n \"cl-519e344c\",\n },\n connectionListItem: {\n className: \"cl-b9a44166\",\n },\n};\n\n// Purposefully left blank to prevent confusion.\nexport const visualStyle = {};\n\nexport function Connections(\n props: { columns?: number } & Pick<React.ComponentProps<typeof Button>, 'disabled' | 'textVisuallyHidden'>,\n) {\n const { t } = useLocalizations();\n const enabledConnections = useEnabledConnections();\n const { options, elements } = useAppearance().parsedAppearance;\n const connectionListDescriptors = applyDescriptors(elements, 'connectionList');\n const hasConnection = enabledConnections.length > 0;\n const textVisuallyHidden =\n typeof props?.textVisuallyHidden !== 'undefined'\n ? props.textVisuallyHidden\n : enabledConnections.length > 2 || options?.socialButtonsVariant === 'iconButton';\n const columns = getColumnCount({ length: enabledConnections.length, max: props?.columns || 6 });\n const localizationKey =\n enabledConnections.length === 1 ? 'socialButtonsBlockButton' : 'socialButtonsBlockButtonManyInView';\n\n return hasConnection ? (\n <ul\n className={connectionListDescriptors.className}\n style={{ ...connectionListDescriptors.style, '--cl-connection-columns': columns } as React.CSSProperties}\n >\n {enabledConnections.map(c => {\n return (\n <li\n key={c.provider}\n {...applyDescriptors(elements, 'connectionListItem')}\n >\n <Common.Loading scope={`provider:${c.provider}`}>\n {isConnectionLoading => {\n return (\n <Common.Connection\n name={c.provider}\n asChild\n >\n <Button\n descriptor={`buttonConnection__${c.provider}`}\n intent='connection'\n busy={isConnectionLoading}\n disabled={props?.disabled || isConnectionLoading}\n iconStart={PROVIDERS[c.provider] || null}\n textVisuallyHidden={textVisuallyHidden}\n >\n {t(localizationKey, {\n provider: c.name,\n })}\n </Button>\n </Common.Connection>\n );\n }}\n </Common.Loading>\n </li>\n );\n })}\n </ul>\n ) : null;\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function ExclamationOctagonSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <path\n d='M8 5.75V7.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 10V10.01'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M10.25 2.75H5.75L2.75 5.75V10.25L5.75 13.25H10.25L13.25 10.25V5.75L10.25 2.75Z'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function ExclamationTriangleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <path\n d='M8 6.75V8.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 10.5V10.51'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M2.95652 10.4518L6.27146 3.8188C6.98366 2.39373 9.01635 2.39373 9.72855 3.81881L13.0435 10.4518C13.686 11.7374 12.7516 13.25 11.3149 13.25H4.68506C3.24842 13.25 2.31404 11.7374 2.95652 10.4518Z'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import * as React from 'react';\n\nimport {\n mergeDescriptors,\n type ParsedDescriptor,\n type ParsedElementsFragment,\n useAppearance,\n} from '~/contexts/AppearanceContext';\n\nimport ExclamationOctagonSm from './icons/exclamation-octagon-sm';\nimport ExclamationTriangleSm from './icons/exclamation-triangle-sm';\n\nexport const layoutStyle = {\n alert: {\n className: \"cl-fbddaa7d\",\n },\n alertIcon: {\n className: \"cl-af4e251c\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n alert: {\n className: \"cl-15c02a47\",\n },\n alertWarning: {\n className: \"cl-a992fcfc\",\n },\n alertError: {\n className: \"cl-66ef3405\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n intent?: 'warning' | 'error';\n descriptors?: ParsedDescriptor[];\n }\n>(function Alert({ children, descriptors, intent = 'error', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(\n elements.alert,\n intent === 'error' && elements.alertError,\n intent === 'warning' && elements.alertWarning,\n ...(descriptors ?? []),\n )}\n >\n {\n {\n error: <ExclamationOctagonSm {...mergeDescriptors(elements.alertIcon)} />,\n warning: <ExclamationTriangleSm {...mergeDescriptors(elements.alertIcon)} />,\n }[intent]\n }\n {children}\n </div>\n );\n});\n","export const ClerkLogo = () => (\n <svg\n className=\"cl-2a836795\"\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 50 14'\n >\n <ellipse\n cx='7.889'\n cy='7'\n rx='2.187'\n ry='2.188'\n fill='currentColor'\n />\n <path\n d='M11.83 12.18a.415.415 0 0 1-.05.64A6.967 6.967 0 0 1 7.888 14a6.967 6.967 0 0 1-3.891-1.18.415.415 0 0 1-.051-.64l1.598-1.6a.473.473 0 0 1 .55-.074 3.92 3.92 0 0 0 1.794.431 3.92 3.92 0 0 0 1.792-.43.473.473 0 0 1 .551.074l1.599 1.598Z'\n fill='currentColor'\n />\n <path\n opacity='0.5'\n d='M11.78 1.18a.415.415 0 0 1 .05.64l-1.598 1.6a.473.473 0 0 1-.55.073 3.937 3.937 0 0 0-5.3 5.3.473.473 0 0 1-.074.55L2.71 10.942a.415.415 0 0 1-.641-.051 7 7 0 0 1 9.71-9.71Z'\n fill='currentColor'\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M23.748 1.422c0-.06.05-.11.11-.11h1.64c.06 0 .11.05.11.11v11.156a.11.11 0 0 1-.11.11h-1.64a.11.11 0 0 1-.11-.11V1.422Zm-2.315 8.9a.112.112 0 0 0-.15.004 2.88 2.88 0 0 1-.884.569c-.36.148-.747.222-1.137.219-.33.01-.658-.047-.965-.166a2.422 2.422 0 0 1-.817-.527c-.424-.432-.668-1.05-.668-1.785 0-1.473.98-2.48 2.45-2.48.394-.005.785.074 1.144.234.325.144.617.35.86.607.04.044.11.049.155.01l1.108-.959a.107.107 0 0 0 .01-.152c-.832-.93-2.138-1.412-3.379-1.412-2.499 0-4.27 1.686-4.27 4.166 0 1.227.44 2.26 1.182 2.99.743.728 1.801 1.157 3.022 1.157 1.53 0 2.763-.587 3.485-1.34a.107.107 0 0 0-.009-.155l-1.137-.98Zm13.212-1.14a.108.108 0 0 1-.107.096H28.79a.106.106 0 0 0-.104.132c.286 1.06 1.138 1.701 2.302 1.701a2.59 2.59 0 0 0 1.136-.236 2.55 2.55 0 0 0 .862-.645.08.08 0 0 1 .112-.01l1.155 1.006c.044.039.05.105.013.15-.698.823-1.828 1.42-3.38 1.42-2.386 0-4.185-1.651-4.185-4.162 0-1.232.424-2.264 1.13-2.994.373-.375.82-.67 1.314-.87a3.968 3.968 0 0 1 1.557-.285c2.419 0 3.983 1.701 3.983 4.05a6.737 6.737 0 0 1-.04.647Zm-5.924-1.524a.104.104 0 0 0 .103.133h3.821c.07 0 .123-.066.103-.134-.26-.901-.921-1.503-1.947-1.503a2.13 2.13 0 0 0-.88.16 2.1 2.1 0 0 0-.733.507 2.242 2.242 0 0 0-.467.837Zm11.651-3.172c.061-.001.11.048.11.109v1.837a.11.11 0 0 1-.117.109 7.17 7.17 0 0 0-.455-.024c-1.43 0-2.27 1.007-2.27 2.329v3.732a.11.11 0 0 1-.11.11h-1.64a.11.11 0 0 1-.11-.11v-7.87c0-.06.049-.109.11-.109h1.64c.06 0 .11.05.11.11v1.104a.011.011 0 0 0 .02.007c.64-.857 1.587-1.333 2.587-1.333l.125-.001Zm4.444 4.81a.035.035 0 0 1 .056.006l2.075 3.334a.11.11 0 0 0 .093.052h1.865a.11.11 0 0 0 .093-.168L46.152 7.93a.11.11 0 0 1 .012-.131l2.742-3.026a.11.11 0 0 0-.081-.183h-1.946a.11.11 0 0 0-.08.036l-3.173 3.458a.11.11 0 0 1-.19-.074V1.422a.11.11 0 0 0-.11-.11h-1.64a.11.11 0 0 0-.11.11v11.156c0 .06.05.11.11.11h1.64a.11.11 0 0 0 .11-.11v-1.755a.11.11 0 0 1 .03-.075l1.35-1.452Z'\n fill='currentColor'\n />\n </svg>\n);\n","export function isValidUrl(val: unknown): val is string {\n if (!val) {\n return false;\n }\n\n try {\n new URL(val as string);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport function isDataUri(val?: string): val is string {\n if (!isValidUrl(val)) {\n return false;\n }\n\n return new URL(val).protocol === 'data:';\n}\n\nconst CLERK_IMAGE_URL_BASES = ['https://img.clerk.com/', 'https://img.clerkstage.dev/', 'https://img.lclclerk.com/'];\n\nexport const isClerkImage = (src?: string): boolean => {\n return !!CLERK_IMAGE_URL_BASES.some(base => src?.includes(base));\n};\n","import { isDataUri, isValidUrl } from './validators';\n\nexport const generateSrcSet = ({ src, width }: { src?: string; width: number }) => {\n if (!src) {\n return '';\n }\n\n return generateSrc({ src, width: width });\n};\n\nexport const generateSrc = ({ src, width }: { src?: string; width: number }) => {\n if (!isValidUrl(src) || isDataUri(src)) {\n return src;\n }\n\n const newSrc = new URL(src);\n if (width) {\n newSrc.searchParams.append('width', width?.toString());\n }\n\n return newSrc.href;\n};\n","import * as React from 'react';\n\nimport { generateSrc, generateSrcSet } from '~/utils/images';\nimport { isClerkImage } from '~/utils/validators';\n\n// BASE_IMAGE_WIDTH is the default \"small size\" for Clerk images.\n// Images are rendered at a multiple of this resolution (currently 1x or 2x)\n// NOTE: img.clerk.com only returns the true aspect ratio for a few specific widths.\n// For other widths, it returns the next largest size. See https://clerk.com/docs/guides/image-optimization/imageurl-image-optimization\n// Currently, 80 and 160 are available exact widths returned by img.clerk.com.\n// Before updating this value, or returning a new size multiple, recommend\n// ensuring that img.clerk.com also returns that new size exactly.\nconst BASE_IMAGE_WIDTH = 80;\n\nexport const Image = React.forwardRef(function Image(\n {\n src,\n size = BASE_IMAGE_WIDTH,\n ...props\n }: React.ImgHTMLAttributes<HTMLImageElement> & {\n size?: number;\n },\n forwardedRef: React.ForwardedRef<HTMLImageElement>,\n) {\n const shouldOptimize = isClerkImage(src);\n return (\n <img\n ref={forwardedRef}\n data-image=''\n crossOrigin='anonymous'\n srcSet={shouldOptimize ? generateSrcSet({ src, width: size }) : undefined}\n src={shouldOptimize ? generateSrc({ src, width: size * 2 }) : src}\n alt={props.alt}\n {...props}\n />\n );\n});\n","import { cx } from 'cva';\nimport * as React from 'react';\n\nimport { useAppearance } from '~/contexts';\nimport { mergeDescriptors, type ParsedElementsFragment } from '~/contexts/AppearanceContext';\nimport type { PolymorphicForwardRefExoticComponent, PolymorphicPropsWithoutRef } from '~/types/utils';\nimport { applyDescriptors } from '~/utils/dva';\n\nimport { ClerkLogo } from './clerk-logo';\nimport { Image } from './image';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardRoot\n */\nconst RootDefaultElement = 'div';\ntype RootOwnProps = {\n children?: React.ReactNode;\n banner?: React.ReactNode;\n};\n\nconst cardRootLayoutStyle = {\n cardRoot: {\n className: [\n \"cl-a6922c72\",\n \"cl-5e44c334\",\n \"cl-c4324dd6\",\n \"cl-3fbacce1\",\n \"cl-89a8e890\",\n ].join(' '),\n },\n};\nconst cardRootVisualStyle = {\n cardRoot: {\n className: \"cl-86f06b43\",\n },\n cardRootDefault: {\n className: \"cl-bc4a783b\",\n },\n cardRootInner: {\n className: \"cl-9c68c093\",\n },\n};\n\nexport const Root: PolymorphicForwardRefExoticComponent<RootOwnProps, typeof RootDefaultElement> = React.forwardRef(\n function CardRoot<T extends React.ElementType = typeof RootDefaultElement>(\n { as, banner, children, ...props }: PolymorphicPropsWithoutRef<RootOwnProps, T>,\n forwardedRef: React.ForwardedRef<Element>,\n ) {\n const { elements } = useAppearance().parsedAppearance;\n const Element: React.ElementType = as || RootDefaultElement;\n const cardRootDescriptors = applyDescriptors(elements, 'cardRoot');\n const cardRootDefaultDescriptors = applyDescriptors(elements, 'cardRootDefault');\n return (\n (<Element\n ref={forwardedRef}\n {...props}\n className={cx(\n cardRootDescriptors.className,\n banner\n ? [\n \"cl-a52b4c3f\",\n \"cl-5af1449f\",\n ]\n : cardRootDefaultDescriptors.className,\n )}\n >\n {banner && (\n <div\n className={cx(\n \"cl-7817f2f2\",\n )}\n >\n <p\n className={cx(\n \"cl-03e68f06\",\n )}\n {...props}\n >\n {banner}\n </p>\n </div>\n )}\n {children && <div {...mergeDescriptors(elements.cardRootInner)}>{children}</div>}\n </Element>)\n );\n },\n);\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardContent\n */\nconst cardContentLayoutStyle = {\n cardContent: {\n className: \"cl-8baa595e\",\n },\n} satisfies ParsedElementsFragment;\nconst cardContentVisualStyle = {\n cardContent: {\n className: [\n \"cl-c99cd8b4\",\n \"cl-1c01a9d7\",\n ].join(' '),\n },\n} satisfies ParsedElementsFragment;\n\nexport const Content = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardContent(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardContent)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardHeader\n */\nconst cardHeaderLayoutStyle = {\n cardHeader: {\n className: \"cl-c757ad0c\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardHeaderVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Header = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardHeader(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardHeader)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardLogo\n */\nconst cardLogoLayoutStyle = {\n cardLogoBox: {\n className: \"cl-4f5262b8\",\n },\n cardLogoLink: {\n className: \"cl-33c167b1\",\n },\n cardLogoImage: {\n className: \"cl-deefc87a\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardLogoVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Logo = React.forwardRef(function CardLogo(\n {\n href,\n src,\n ...props\n }: React.ImgHTMLAttributes<HTMLImageElement> & {\n href?: string;\n },\n forwardedRef: React.ForwardedRef<HTMLImageElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n if (!src) {\n return null;\n }\n\n const img = (\n <Image\n ref={forwardedRef}\n src={src}\n size={200}\n {...props}\n {...mergeDescriptors(elements.cardLogoImage)}\n />\n );\n return (\n <div {...mergeDescriptors(elements.cardLogoBox)}>\n {href ? (\n <a\n href={href}\n {...mergeDescriptors(elements.cardLogoLink)}\n >\n {img}\n </a>\n ) : (\n img\n )}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardTitle\n */\n// Purposefully left blank to prevent confusion.\nconst cardTitleLayoutStyle = {} satisfies ParsedElementsFragment;\nconst cardTitleVisualStyle = {\n cardTitle: {\n className: \"cl-f29e36a7\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Title = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(function CardTitle(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <h2\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardTitle)}\n >\n {children}\n </h2>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardDescription\n */\n// Purposefully left blank to prevent confusion.\nconst cardDescriptionLayoutStyle = {} satisfies ParsedElementsFragment;\nconst cardDescriptionVisualStyle = {\n cardDescription: {\n className: \"cl-5c413d88\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Description = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CardDescription({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <p\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardDescription)}\n >\n {children}\n </p>\n );\n },\n);\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardBody\n */\nconst cardBodyLayoutStyle = {\n cardBody: {\n className: \"cl-5eebf917\",\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardBodyVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Body = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardBody(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardBody)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardActions\n */\nconst cardActionsLayoutStyle = {\n cardActions: {\n className: [\n \"cl-5eebf917\",\n // Note:\n // Prevents underline interractions triggering outside of the link text\n // https://linear.app/clerk/issue/SDKI-192/#comment-ebf943b0\n \"cl-04c8fa73\",\n ].join(' '),\n },\n} satisfies ParsedElementsFragment;\n\n// Purposefully left blank to prevent confusion.\nconst cardActionsVisualStyle = {} satisfies ParsedElementsFragment;\n\nexport const Actions = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function CardActions(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardActions)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * CardFooter\n */\nconst cardFooterLayoutStyle = {\n cardFooter: {\n className: \"cl-0f2a693e\",\n },\n cardFooterAction: {\n className: \"cl-0c81043e\",\n },\n} satisfies ParsedElementsFragment;\nconst cardFooterVisualStyle = {\n cardFooterAction: {\n className: \"cl-e7659ac7\",\n },\n cardFooterActionText: {\n className: \"cl-8e9f71ce\",\n },\n cardFooterActionLink: {\n className:\n \"cl-812d8d14\",\n },\n cardFooterActionButton: {\n className:\n \"cl-812d8d14\",\n },\n cardFooterActionPageLink: {\n className: \"cl-39faa7ab\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Footer = React.forwardRef(function CardFooter(\n {\n branded = true,\n helpPageUrl,\n privacyPageUrl,\n termsPageUrl,\n children,\n className,\n ...props\n }: {\n branded?: boolean;\n helpPageUrl?: string;\n privacyPageUrl?: string;\n termsPageUrl?: string;\n } & React.HTMLAttributes<HTMLDivElement>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const hasPageLinks = helpPageUrl || privacyPageUrl || termsPageUrl;\n const renderFooter = branded || hasPageLinks || children;\n const renderSubFooter = branded || hasPageLinks;\n const hasBrandingAndPageLinks = branded && hasPageLinks;\n\n return renderFooter ? (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooter)}\n >\n {children}\n\n {renderSubFooter ? (\n <div\n className={cx(\"cl-10ec6412\", hasBrandingAndPageLinks ? \"cl-32c92bb1\" : \"cl-a503dd37\")}\n >\n {branded ? (\n <p\n // Note:\n // We don't use `items-center` here for a more optical fit\n className=\"cl-286d6459\"\n >\n Secured by{' '}\n <a\n aria-label='Clerk logo'\n href='https://www.clerk.com?utm_source=clerk&amp;utm_medium=components'\n target='_blank'\n rel='noopener'\n className=\"cl-e9dc1e80\"\n >\n <ClerkLogo />\n </a>\n </p>\n ) : null}\n\n {hasPageLinks ? (\n <div className=\"cl-c354e22d\">\n {helpPageUrl ? <FooterPageLink href={helpPageUrl}>Help</FooterPageLink> : null}\n {privacyPageUrl ? <FooterPageLink href={privacyPageUrl}>Privacy</FooterPageLink> : null}\n {termsPageUrl ? <FooterPageLink href={termsPageUrl}>Terms</FooterPageLink> : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n ) : null;\n});\n\nexport const FooterAction = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooterAction({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterAction)}\n >\n {children}\n </div>\n );\n },\n);\n\nexport const FooterActionText = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n function CardFooterActionText({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <p\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionText)}\n >\n {children}\n </p>\n );\n },\n);\n\nexport const FooterActionButton = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement>>(\n function CardFooterActionButton({ children, className, type = 'button', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <button\n ref={forwardedRef}\n // eslint-disable-next-line react/button-has-type\n type={type}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionButton)}\n >\n {children}\n </button>\n );\n },\n);\n\nexport const FooterActionLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n function CardFooterActionLink({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <a\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.cardFooterActionLink)}\n >\n {children}\n </a>\n );\n },\n);\n\nconst FooterPageLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n function CardFooterPageLink({ children, className, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <a\n ref={forwardedRef}\n {...props}\n target='_blank'\n rel='noopener'\n {...mergeDescriptors(elements.cardFooterActionPageLink)}\n >\n {children}\n </a>\n );\n },\n);\n\nexport const layoutStyle = {\n ...cardRootLayoutStyle,\n ...cardHeaderLayoutStyle,\n ...cardContentLayoutStyle,\n ...cardTitleLayoutStyle,\n ...cardDescriptionLayoutStyle,\n ...cardBodyLayoutStyle,\n ...cardActionsLayoutStyle,\n ...cardFooterLayoutStyle,\n ...cardLogoLayoutStyle,\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n ...cardRootVisualStyle,\n ...cardHeaderVisualStyle,\n ...cardContentVisualStyle,\n ...cardTitleVisualStyle,\n ...cardDescriptionVisualStyle,\n ...cardBodyVisualStyle,\n ...cardActionsVisualStyle,\n ...cardFooterVisualStyle,\n ...cardLogoVisualStyle,\n} satisfies ParsedElementsFragment;\n","import { Icon, type IconProps } from './icon';\n\nexport default function CheckmarkCircleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <circle\n cx='8'\n cy='8'\n r='5.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M6.25 8.35L7.65 9.75L9.75 6.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from './icon';\n\nexport default function InformationCircleSm(props: IconProps) {\n return (\n <Icon {...props}>\n <svg viewBox='0 0 16 16'>\n <circle\n cx='8'\n cy='8'\n r='5.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 8.75V10.25'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M8 6.25024V6.26024'\n stroke='currentColor'\n strokeWidth='1.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n </Icon>\n );\n}\n","import { cx } from 'cva';\nimport * as React from 'react';\n\nimport { mergeDescriptors, type ParsedElementsFragment, useAppearance } from '~/contexts/AppearanceContext';\nimport { applyDescriptors, dva, type VariantProps } from '~/utils/dva';\n\nimport CheckmarkCircleSm from './icons/checkmark-circle-sm';\nimport ExclamationOctagonSm from './icons/exclamation-octagon-sm';\nimport ExclamationTriangleSm from './icons/exclamation-triangle-sm';\nimport InformationCircleSm from './icons/information-circle-sm';\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldRoot\n */\n\nconst fieldRootLayoutStyle = {\n fieldRoot: {\n className: [\n \"cl-dcb655e4\",\n \"cl-03811a40\",\n \"cl-81d1ec5b\",\n \"cl-3a46e0d4\",\n \"cl-7c5144aa\",\n ].join(' '),\n },\n};\n\nconst fieldRootVisualStyle = {\n fieldRoot: {\n className: [\n \"cl-4636b1d3\",\n \"cl-3da4a9c6\",\n ].join(' '),\n },\n};\n\nexport const Root = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function FieldRoot(\n { children, className, ...props },\n forwardedRef,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldRoot)}\n >\n {children}\n </div>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldLabel\n */\n\nconst fieldLabelLayoutStyle = {\n fieldLabel: {\n className: \"cl-8c391822\",\n },\n};\n\nconst fieldLabelVisualStyle = {\n fieldLabel: {\n className:\n \"cl-f75d1b2a\",\n },\n};\n\nexport const Label = React.forwardRef(function FieldLabel(\n {\n className,\n children,\n visuallyHidden,\n ...props\n }: React.HTMLAttributes<HTMLLabelElement> & { htmlFor?: string; visuallyHidden?: boolean },\n forwardedRef: React.ForwardedRef<HTMLLabelElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n const fieldLabelDescriptors = applyDescriptors(elements, 'fieldLabel');\n return (\n (<label\n ref={forwardedRef}\n {...props}\n className={cx(visuallyHidden ? \"cl-32fb0905\" : fieldLabelDescriptors.className)}\n >\n {children}\n </label>)\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldLabelEnd\n */\n\nconst fieldLabelEndLayoutStyle = {\n fieldLabelEnd: {\n className: \"cl-43770a6e\",\n },\n};\n\nexport const LabelEnd = React.forwardRef(function FieldLabelEnd(\n { className, children, ...props }: React.HTMLAttributes<HTMLSpanElement>,\n forwardedRef: React.ForwardedRef<HTMLSpanElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <span\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldLabelEnd)}\n >\n {children}\n </span>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldHint\n */\n\nconst fieldHintVisualStyle = {\n fieldLabelEnd: {\n className: \"cl-275d380b\",\n },\n};\n\nexport const Hint = React.forwardRef(function FieldHint(\n { className, children, ...props }: React.ComponentProps<typeof LabelEnd>,\n forwardedRef: React.ForwardedRef<React.ComponentRef<typeof LabelEnd>>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <LabelEnd\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.fieldHint)}\n >\n {children}\n </LabelEnd>\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldCheckbox\n */\n\nconst fieldCheckboxLayoutStyle = {\n fieldCheckbox: {\n className: \"cl-13e816a3\",\n },\n};\n\nconst fieldCheckboxVisualStyle = {\n fieldCheckbox: {\n className: \"cl-12b86d4e\",\n },\n};\n\nexport const Checkbox = React.forwardRef(function FieldCheckbox(\n props: React.InputHTMLAttributes<HTMLInputElement>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <input\n ref={forwardedRef}\n type='checkbox'\n {...props}\n {...mergeDescriptors(elements.fieldCheckbox)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInputGroup\n */\n\nconst fieldInputGroupLayoutStyle = {\n fieldInputGroup: {\n className: \"cl-6a6227fc\",\n },\n};\n\nexport const InputGroup = React.forwardRef(function FieldInputGroup(\n { className, ...props }: React.HTMLAttributes<HTMLDivElement>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={ref}\n {...props}\n {...mergeDescriptors(elements.fieldInputGroup)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInputGroupEnd\n */\n\nconst fieldInputGroupEndLayoutStyle = {\n fieldInputGroupEnd: {\n className: \"cl-4e1b09eb\",\n },\n};\n\nexport const InputGroupEnd = React.forwardRef(function FieldInputGroupEnd(\n { className, ...props }: React.HTMLAttributes<HTMLDivElement>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n data-field-input-group-end=''\n ref={ref}\n // className={cx('absolute inset-0 start-auto size-[--field-input-group-end-size]', className)}\n {...props}\n {...mergeDescriptors(elements.fieldInputGroupEnd)}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldInput\n */\n\nconst fieldInputLayoutStyle = {\n fieldInput: {\n className: [\n \"cl-58d0413d\",\n \"cl-43ccb14c\",\n \"cl-f18c4e82\",\n // If an `InputGroup` exists, use the `pe` value, or fallback to the\n // standard input `px` value\n \"cl-983f1668\",\n \"cl-d3e031f6\",\n \"cl-ed4ed5cf\",\n ].join(' '),\n },\n};\n\nconst fieldInputVisualStyle = {\n fieldInput: {\n className: [\n \"cl-ac0ebc23\",\n \"cl-2aeea0c3\",\n \"cl-0290fbc4\",\n \"cl-d4e2e313\",\n ].join(' '),\n },\n fieldInputIdle: {\n className: [\n \"cl-cac18779\",\n \"cl-03c582dd\",\n ].join(' '),\n },\n fieldInputInfo: {\n className: [\n \"cl-fa487ffe\",\n \"cl-03c582dd\",\n ].join(' '),\n },\n fieldInputError: {\n className: [\n \"cl-cffb481b\",\n \"cl-776840f6\",\n \"cl-1e334ea3\",\n ].join(' '),\n },\n fieldInputSuccess: {\n className: [\n \"cl-90c7848a\",\n \"cl-204cd4cf\",\n \"cl-0810e01c\",\n ].join(' '),\n },\n fieldInputWarning: {\n className: [\n \"cl-d250e2b7\",\n \"cl-8cae7b37\",\n \"cl-43888e8c\",\n ].join(' '),\n },\n};\n\nconst input = dva({\n base: 'fieldInput',\n variants: {\n intent: {\n idle: 'fieldInputIdle',\n info: 'fieldInputInfo',\n error: 'fieldInputError',\n success: 'fieldInputSuccess',\n warning: 'fieldInputWarning',\n },\n },\n});\n\n// Note:\n// - To create the overlapping border/shadow effect\"\n// - `ring` – \"focus ring\"\n// - `ring-offset` - border\nexport const Input = React.forwardRef(function FieldInput(\n { descriptor, intent = 'idle', ...props }: VariantProps<typeof input> & React.InputHTMLAttributes<HTMLInputElement>,\n forwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n const { elements } = useAppearance().parsedAppearance;\n\n return (\n <input\n ref={forwardedRef}\n {...props}\n {...applyDescriptors(elements, input({ intent, descriptor }))}\n />\n );\n});\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * FieldMessage\n */\n\nconst fieldMessageLayoutStyle = {\n fieldMessage: {\n className: \"cl-b86c33af\",\n },\n fieldMessageStart: {\n className: \"cl-c62ec162\",\n },\n fieldMessageCenter: {\n className: \"cl-a503dd37\",\n },\n fieldMessageEnd: {\n className: \"cl-307644c3\",\n },\n};\n\nconst fieldMessageVisualStyle = {\n fieldMessage: {\n className: \"cl-757071a1\",\n },\n fieldMessageIdle: {\n className: \"cl-de621653\",\n },\n fieldMessageInfo: {\n className: \"cl-de621653\",\n },\n fieldMessageError: {\n className: \"cl-e5cd1f02\",\n },\n fieldMessageSuccess: {\n className: \"cl-e8e05e0c\",\n },\n fieldMessageWarning: {\n className: \"cl-d794f084\",\n },\n};\n\nconst message = dva({\n base: 'fieldMessage',\n variants: {\n justify: {\n start: 'fieldMessageStart',\n center: 'fieldMessageCenter',\n end: 'fieldMessageEnd',\n },\n intent: {\n idle: 'fieldMessageIdle',\n info: 'fieldMessageInfo',\n error: 'fieldMessageError',\n success: 'fieldMessageSuccess',\n warning: 'fieldMessageWarning',\n },\n },\n});\n\nexport const Message = React.forwardRef<\n HTMLDivElement,\n VariantProps<typeof message> & React.HTMLAttributes<HTMLDivElement>\n>(function FieldMessage({ descriptor, children, justify = 'start', intent = 'idle', ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n (<p\n ref={forwardedRef}\n {...props}\n {...applyDescriptors(elements, message({ justify, intent, descriptor }))}\n >\n {intent !== 'idle' && (\n <span className=\"cl-eb8de575\">\n {\n {\n error: <ExclamationOctagonSm />,\n info: <InformationCircleSm />,\n success: <CheckmarkCircleSm />,\n warning: <ExclamationTriangleSm />,\n }[intent]\n }\n </span>\n )}\n {children}\n </p>)\n );\n});\n\nexport const layoutStyle = {\n ...fieldRootLayoutStyle,\n ...fieldLabelLayoutStyle,\n ...fieldLabelEndLayoutStyle,\n // ...fieldHintLayoutStyle,\n ...fieldCheckboxLayoutStyle,\n ...fieldInputGroupLayoutStyle,\n ...fieldInputGroupEndLayoutStyle,\n ...fieldInputLayoutStyle,\n ...fieldMessageLayoutStyle,\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n ...fieldRootVisualStyle,\n ...fieldLabelVisualStyle,\n // ...fieldLabelEndLayoutStyle,\n ...fieldHintVisualStyle,\n ...fieldCheckboxVisualStyle,\n // ...fieldInputGroupVisualStyle,\n // ...fieldInputGroupEndVisualStyle,\n ...fieldInputVisualStyle,\n ...fieldMessageVisualStyle,\n} satisfies ParsedElementsFragment;\n","import * as React from 'react';\n\nimport {\n mergeDescriptors,\n type ParsedDescriptor,\n type ParsedElementsFragment,\n useAppearance,\n} from '~/contexts/AppearanceContext';\n\nexport const layoutStyle = {\n separator: {\n className: \"cl-c53048bf\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const visualStyle = {\n separator: {\n className: \"cl-77b14b2e\",\n },\n} satisfies ParsedElementsFragment;\n\nexport const Separator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & {\n descriptors?: ParsedDescriptor[];\n }\n>(function Separator({ children, descriptors, ...props }, forwardedRef) {\n const { elements } = useAppearance().parsedAppearance;\n return (\n <div\n ref={forwardedRef}\n {...props}\n {...mergeDescriptors(elements.separator, ...(descriptors ?? []))}\n >\n {children}\n </div>\n );\n});\n","import { OAUTH_PROVIDERS } from '@clerk/shared/oauth';\nimport { WEB3_PROVIDERS } from '@clerk/shared/web3';\nimport type { OAuthProvider, Web3Provider } from '@clerk/types';\n\nexport const DESCRIPTORS = [\n // Alert\n 'alert',\n 'alertError',\n 'alertWarning',\n 'alertIcon',\n\n // Button\n 'button',\n 'buttonPrimary',\n 'buttonSecondary',\n 'buttonConnection',\n 'buttonPrimaryDefault',\n 'buttonSecondaryDefault',\n 'buttonConnectionDefault',\n 'buttonDisabled',\n 'buttonBusy',\n 'buttonText',\n 'buttonTextVisuallyHidden',\n 'buttonIcon',\n 'buttonIconStart',\n 'buttonIconEnd',\n 'buttonSpinner',\n ...[...OAUTH_PROVIDERS, ...WEB3_PROVIDERS].map(({ provider }) => `buttonConnection__${provider}`),\n\n // Connection\n 'connectionList',\n 'connectionListItem',\n\n // Field\n 'fieldRoot',\n 'fieldLabel',\n 'fieldLabelEnd',\n 'fieldHint',\n 'fieldCheckbox',\n 'fieldInputGroup',\n 'fieldInputGroupEnd',\n 'fieldInput',\n 'fieldInputDefault',\n 'fieldInputOtp',\n 'fieldInputIdle',\n 'fieldInputInfo',\n 'fieldInputError',\n 'fieldInputSuccess',\n 'fieldInputWarning',\n 'fieldMessageStart',\n 'fieldMessageCenter',\n 'fieldMessageEnd',\n 'fieldMessage',\n 'fieldMessageIdle',\n 'fieldMessageInfo',\n 'fieldMessageError',\n 'fieldMessageSuccess',\n 'fieldMessageWarning',\n\n // Separator\n 'separator',\n\n // Spinner\n 'spinner',\n\n // Card\n 'cardRoot',\n 'cardRootDefault',\n 'cardRootInner',\n 'cardHeader',\n 'cardContent',\n 'cardTitle',\n 'cardDescription',\n 'cardBody',\n 'cardActions',\n 'cardFooter',\n 'cardFooterAction',\n 'cardFooterActionText',\n 'cardFooterActionLink',\n 'cardFooterActionButton',\n 'cardFooterActionPageLink',\n 'cardLogoBox',\n 'cardLogoLink',\n 'cardLogoImage',\n] as const;\n\ntype Provider = OAuthProvider | Web3Provider;\n\n/**\n * Union of all valid descriptors used throughout the components.\n */\nexport type DescriptorIdentifier = (typeof DESCRIPTORS)[number] | `buttonConnection__${Provider}`;\n","import type { ParsedElements, PartialTheme } from '~/contexts/AppearanceContext';\nimport { DESCRIPTORS } from '~/descriptors';\n\n/**\n * Given an object containing partial descriptors, returns a full ParsedElements object with generated descriptors.\n */\nexport function buildTheme(p: PartialTheme): ParsedElements {\n const theme: Partial<ParsedElements> = {};\n\n // Setup base theme containing empty objects for each descriptor.\n DESCRIPTORS.forEach(descriptor => {\n theme[descriptor] = {\n descriptor: `cl-${descriptor}`,\n className: '',\n style: {},\n };\n });\n\n for (const descriptor in p) {\n const key = descriptor as keyof ParsedElements;\n\n if (p[key]) {\n if (!(key in theme)) {\n console.warn(`Clerk: Unknown descriptor: ${descriptor}`);\n continue;\n }\n\n // These non-null assertions are okay since we confirmed that theme contains the descriptor above.\n const { className, style } = p[key]!;\n if (className) {\n theme[key]!.className = className;\n }\n\n if (style) {\n theme[key]!.style = style;\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n return theme as ParsedElements;\n}\n\n/**\n * Given two complete theme objects, merge their className and style properties to create a new merged theme.\n */\nexport function mergeTheme(a: ParsedElements, b: ParsedElements): ParsedElements {\n const mergedTheme = { ...a };\n\n for (const d in mergedTheme) {\n const descriptor = d as keyof ParsedElements;\n mergedTheme[descriptor].className = [mergedTheme[descriptor].className, b[descriptor].className].join(' ');\n mergedTheme[descriptor].style = { ...mergedTheme[descriptor].style, ...b[descriptor].style };\n }\n\n return mergedTheme;\n}\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('buildTheme', () => {\n it('returns a theme containing all descriptors', () => {\n const theme = buildTheme({});\n expect(Object.keys(theme).sort()).toStrictEqual([...DESCRIPTORS].sort());\n\n for (const [k, v] of Object.entries(theme)) {\n expect(v.descriptor).toEqual(`cl-${k}`);\n expect(v.className).toEqual('');\n expect(v.style).toStrictEqual({});\n }\n });\n });\n}\n","import { layoutStyle as connections } from '~/common/connections';\nimport { layoutStyle as alert } from '~/primitives/alert';\nimport { layoutStyle as button } from '~/primitives/button';\nimport { layoutStyle as card } from '~/primitives/card';\nimport { layoutStyle as field } from '~/primitives/field';\nimport { layoutStyle as separator } from '~/primitives/separator';\nimport { layoutStyle as spinner } from '~/primitives/spinner';\n\nimport { buildTheme } from './buildTheme';\n\nexport const layoutTheme = buildTheme({\n ...alert,\n ...button,\n ...card,\n ...connections,\n ...field,\n ...separator,\n ...spinner,\n});\n","import { visualStyle as connections } from '~/common/connections';\nimport { visualStyle as alert } from '~/primitives/alert';\nimport { visualStyle as button } from '~/primitives/button';\nimport { visualStyle as card } from '~/primitives/card';\nimport { visualStyle as field } from '~/primitives/field';\nimport { visualStyle as separator } from '~/primitives/separator';\nimport { visualStyle as spinner } from '~/primitives/spinner';\n\nimport { buildTheme, mergeTheme } from './buildTheme';\nimport { layoutTheme } from './layout';\n\nconst visualTheme = buildTheme({\n ...alert,\n ...button,\n ...card,\n ...connections,\n ...field,\n ...separator,\n ...spinner,\n});\nexport const fullTheme = mergeTheme(layoutTheme, visualTheme);\n","import { createContextAndHook, useDeepEqualMemo } from '@clerk/shared/react';\nimport type { Appearance as CurrentAppearance, Layout as CurrentLayout } from '@clerk/types';\nimport React from 'react';\n\nimport type { DescriptorIdentifier } from '~/descriptors';\nimport { fullTheme } from '~/themes';\n\n/**\n * The final resulting descriptor that gets passed to mergeDescriptors and spread on the element.\n */\nexport type ParsedDescriptor = { descriptor: string; className: string; style: React.CSSProperties };\n\n/**\n * The authoring format value type for styles written within a component. Essentially { className?: string, style?: CSSProperties }\n */\nexport type PartialDescriptor = Omit<Partial<ParsedDescriptor>, 'descriptor'>;\n\n/**\n * A full theme generated from merging ParsedElementsFragments. Has entries for each descriptor, but they're not complete.\n */\nexport type PartialTheme = Partial<Record<DescriptorIdentifier, PartialDescriptor>>;\n\n/**\n * A subset of a partial theme. This is the type used when authoring style objects within a component.\n */\nexport type ParsedElementsFragment = Partial<PartialTheme>;\n\n/**\n * A full theme, complete with descriptors. This is the value returned from useAppearance().parsedAppearance, and is\n * the main type interacted with within components.\n */\nexport type ParsedElements = Record<DescriptorIdentifier, ParsedDescriptor>;\nexport type ParsedOptions = Omit<CurrentLayout, 'logoPlacement'> & {\n logoVisibility?: 'visible' | 'hidden';\n};\n\ntype ElementsAppearanceConfig = string | (React.CSSProperties & { className?: string });\n\nexport type Appearance = Omit<CurrentAppearance, 'elements' | 'baseTheme' | 'layout'> & {\n theme?: ParsedElements;\n elements?: Partial<Record<DescriptorIdentifier, ElementsAppearanceConfig>>;\n options?: ParsedOptions;\n};\n\nexport type AppearanceCascade = {\n globalAppearance?: ParsedAppearance;\n appearance?: Appearance;\n};\n\n/**\n * The generated appearance calculated from defaults and user-provided values. This is the type used to access computed\n * appearance values, and as such will always have a value for a given key.\n */\nexport type ParsedAppearance = {\n theme: ParsedElements;\n elements: ParsedElements;\n options: ParsedOptions;\n};\n\ntype AppearanceContextValue = {\n /**\n * The calculated appearance value based on the provided `appearance` and `globalAppearance`.\n *\n * Example:\n * ```tsx\n * function Help() {\n * const { options } = useAppearance().parsedAppearance;\n * return <p>{options.helpPageUrl}</p>\n * }\n * ```\n */\n parsedAppearance: ParsedAppearance;\n themelessAppearance: Appearance | null;\n theme?: ParsedElements;\n};\n\n/**\n * Used to merge full themes with ParsedElementsFragments. Allows you to combine optionsStyle with multiple visualStyle\n * elements.\n */\nexport function mergeParsedElementsFragment(...fragments: ParsedElementsFragment[]): ParsedElementsFragment {\n const acc: ParsedElementsFragment = {};\n\n fragments.forEach(fragment => {\n for (const k in fragment) {\n const key = k as keyof ParsedElementsFragment;\n if (key in acc) {\n acc[key]!.className = [acc[key]?.className, fragment[key]?.className].join(' ');\n acc[key]!.style = {\n ...acc[key]!.style,\n ...fragment[key]?.style,\n };\n } else {\n acc[key] = {\n className: fragment[key]?.className,\n style: fragment[key]?.style,\n };\n }\n }\n });\n\n return acc;\n}\n\n/**\n * Used within components to merge multiple descriptors onto a single element. Result is directly spread onto the element.\n */\nexport function mergeDescriptors(...descriptors: (ParsedDescriptor | boolean)[]): PartialDescriptor {\n return descriptors.reduce<PartialDescriptor>(\n (acc, el) => {\n if (typeof el === 'boolean') {\n return acc;\n }\n acc.className = [el.descriptor, acc.className, el.className].join(' ');\n acc.style = { ...acc.style, ...el.style };\n return acc;\n },\n { className: '', style: {} },\n );\n}\n\nfunction mergeElementsAppearanceConfig(\n a: ElementsAppearanceConfig,\n b: ElementsAppearanceConfig,\n): ElementsAppearanceConfig {\n let result: ElementsAppearanceConfig | undefined;\n if (typeof a === 'string' && typeof b === 'string') {\n result = [a, b].join(' ');\n } else if (typeof a === 'string' && typeof b === 'object') {\n result = { ...b };\n result.className = [result.className, a].join(' ');\n } else if (typeof a === 'object' && typeof b === 'string') {\n result = { ...a };\n result.className = [result.className, b].join(' ');\n } else if (typeof a === 'object' && typeof b === 'object') {\n result = {\n ...a,\n ...b,\n };\n if (a.className || b.className) {\n result.className = [a.className, b.className].filter(Boolean).join(' ');\n }\n }\n\n if (!result) {\n throw new Error(`Unable to merge ElementsAppearanceConfigs: ${JSON.stringify(a)} and ${JSON.stringify(b)}`);\n }\n\n return result;\n}\n\nfunction mergeAppearance(a: Appearance | null | undefined, b: Appearance | null | undefined): Appearance | null {\n if (!a && !b) {\n return null;\n }\n if (!a) {\n return b!;\n }\n if (!b) {\n return a;\n }\n\n const result = { ...a, options: { ...a.options, ...b.options } }; // Ensure options are merged\n\n if (b.theme) {\n result.theme = b.theme;\n }\n\n if (!result.elements && b.elements) {\n result.elements = { ...b.elements };\n } else if (result.elements && b.elements) {\n Object.entries(b.elements).forEach(([element, config]) => {\n const el = element as DescriptorIdentifier;\n if (el in result.elements!) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n result.elements![el] = mergeElementsAppearanceConfig(result.elements![el]!, config!);\n } else {\n result.elements![el] = config;\n }\n });\n }\n\n return result;\n}\n\nfunction applyTheme(theme: ParsedElements | undefined, appearance: Appearance | null): ParsedAppearance {\n const baseTheme = theme ?? fullTheme;\n if (!appearance) {\n return { theme: baseTheme, elements: structuredClone(baseTheme), options: defaultAppearance.options };\n }\n\n const result = {\n theme: baseTheme,\n // because we're going to perform modifications to deeply nested objects, we need to create a structuredClone of\n // the theme or else subsequent usage of the baseTheme will contain our merged changes.\n elements: structuredClone(baseTheme),\n options: { ...defaultAppearance.options, ...appearance.options },\n };\n\n if (appearance.elements) {\n Object.entries(appearance.elements).forEach(([element, config]) => {\n const el = element as DescriptorIdentifier;\n if (el in appearance.elements!) {\n if (typeof config === 'string') {\n result.elements[el].className = [result.elements[el].className, config].join(' ');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const { className, ...style } = config!;\n if (className) {\n result.elements[el].className = [result.elements[el].className, className].join(' ');\n }\n result.elements[el].style = { ...result.elements[el].style, ...style };\n }\n }\n });\n }\n\n return result;\n}\n\nexport const defaultAppearance: ParsedAppearance = {\n theme: fullTheme,\n elements: fullTheme,\n options: {\n logoVisibility: 'visible',\n socialButtonsPlacement: 'top',\n socialButtonsVariant: 'auto',\n logoImageUrl: '',\n logoLinkUrl: '',\n showOptionalFields: true,\n helpPageUrl: '',\n privacyPageUrl: '',\n termsPageUrl: '',\n shimmer: true,\n animations: true,\n unsafe_disableDevelopmentModeWarnings: false,\n },\n};\n\nconst [AppearanceContext, useAppearance, usePartialAppearance] =\n createContextAndHook<AppearanceContextValue>('AppearanceContext');\n\ntype AppearanceProviderProps = React.PropsWithChildren<{ appearance?: Appearance; theme?: ParsedElements }>;\n\n/**\n * Used to provide appearance values throughout an application. In typical usage, the entire application will be\n * wrapped in an `AppearanceProvider` to provide global configuration. Each top-level AIO component that accepts an\n * `appearance` prop will wrap its children in `AppearanceProvider`. The provider handles the merging of attributes,\n * and makes them available via the `useAppearance` hook.\n */\nconst AppearanceProvider = (props: AppearanceProviderProps) => {\n // Access the parsedAppearance of the parent context provider. `undefined` if this is the top-most\n // AppearanceProvider.\n const {\n parsedAppearance: globalAppearance,\n themelessAppearance: globalThemelessAppearance,\n theme: globalTheme,\n } = usePartialAppearance();\n\n const ctxValue = useDeepEqualMemo(() => {\n const theme = props.theme ?? globalTheme;\n const themelessAppearance = mergeAppearance(globalThemelessAppearance, props.appearance);\n const parsedAppearance = applyTheme(theme, themelessAppearance);\n\n return { value: { parsedAppearance, themelessAppearance, theme: props.theme ?? globalTheme } };\n }, [props.appearance, props.theme, globalAppearance, globalThemelessAppearance, globalTheme]);\n\n return <AppearanceContext.Provider value={ctxValue}>{props.children}</AppearanceContext.Provider>;\n};\n\nexport { AppearanceProvider, useAppearance };\n\nif (import.meta.vitest) {\n const { it, expect, describe } = import.meta.vitest;\n\n describe('mergeAppearance', () => {\n it('retains keys from both appearances', () => {\n const a = { elements: { alertWarning: 'cl-test-class-one' } };\n const b = { elements: { alertIcon: 'cl-test-class-two' } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('retains the theme prop', () => {\n const a = { theme: fullTheme, elements: { alertWarning: 'cl-test-class-one' } };\n const b = {\n elements: { alertIcon: 'cl-test-class-two' },\n };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n theme: a.theme,\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('overrides the theme prop', () => {\n const a = { theme: fullTheme, elements: { alertWarning: 'cl-test-class-one' } };\n const b = {\n theme: { ...fullTheme, alertIcon: { descriptor: 'test', className: 'cl-test-class', style: {} } },\n elements: { alertIcon: 'cl-test-class-two' },\n };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n theme: b.theme,\n elements: {\n alertWarning: 'cl-test-class-one',\n alertIcon: 'cl-test-class-two',\n },\n });\n });\n\n it('merges string values for the same element', () => {\n const a = { elements: { alertWarning: 'cl-test-class-one' } };\n const b = { elements: { alertWarning: 'cl-test-class-two' } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: 'cl-test-class-one cl-test-class-two',\n },\n });\n });\n\n it('merges object values for the same element', () => {\n const a = { elements: { alertWarning: { background: 'tomato' } } };\n const b = { elements: { alertWarning: { color: 'red' } } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: { color: 'red', background: 'tomato' },\n },\n });\n });\n\n it('overrides same style properties', () => {\n const a = { elements: { alertWarning: { background: 'tomato' } } };\n const b = { elements: { alertWarning: { background: 'red' } } };\n expect(mergeAppearance(a, b)).toStrictEqual({\n options: {},\n elements: {\n alertWarning: { background: 'red' },\n },\n });\n });\n });\n\n describe('mergeElementsAppearanceConfig', () => {\n it('merges two strings', () => {\n const a = 'cl-test-class-one';\n const b = 'cl-test-class-two';\n expect(mergeElementsAppearanceConfig(a, b)).toBe('cl-test-class-one cl-test-class-two');\n });\n\n it('merges a string and an object', () => {\n const a = 'cl-test-class-one';\n const b = { className: 'cl-test-class-two' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-two cl-test-class-one' });\n });\n\n it('merges an object and a string', () => {\n const a = { className: 'cl-test-class-one' };\n const b = 'cl-test-class-two';\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-one cl-test-class-two' });\n });\n\n it('merges two objects', () => {\n const a = { className: 'cl-test-class-one' };\n const b = { className: 'cl-test-class-two' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({ className: 'cl-test-class-one cl-test-class-two' });\n });\n\n it('merges a string and an object with style', () => {\n const a = 'cl-test-class-one';\n const b = { className: 'cl-test-class-two', backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n className: 'cl-test-class-two cl-test-class-one',\n backgroundColor: 'tomato',\n });\n });\n\n it('merges two objects with styles', () => {\n const a = { className: 'cl-test-class-one', color: 'red' };\n const b = { className: 'cl-test-class-two', backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n className: 'cl-test-class-one cl-test-class-two',\n color: 'red',\n backgroundColor: 'tomato',\n });\n });\n\n it('correctly omits className if not present', () => {\n const a = { color: 'red' };\n const b = { backgroundColor: 'tomato' };\n expect(mergeElementsAppearanceConfig(a, b)).toStrictEqual({\n color: 'red',\n backgroundColor: 'tomato',\n });\n });\n });\n\n describe('applyTheme', () => {\n it('adds classNames from theme', () => {\n const appearance = {\n elements: {\n alertWarning: 'cl-test-1',\n },\n };\n const theme = {\n ...fullTheme,\n alertWarning: { descriptor: 'test', className: 'cl-test-class', style: { color: 'red' } },\n };\n expect(applyTheme(theme, appearance)).toStrictEqual({\n theme,\n options: defaultAppearance.options,\n elements: {\n ...fullTheme,\n alertWarning: {\n className: 'cl-test-class cl-test-1',\n descriptor: 'test',\n style: { color: 'red' },\n },\n },\n });\n });\n });\n}\n"]}