@knpkv/rly 0.4.0 → 0.5.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.
Files changed (36) hide show
  1. package/README.md +31 -2
  2. package/dist/Dialog-DSwimdwG.js +955 -0
  3. package/dist/Dialog-DSwimdwG.js.map +1 -0
  4. package/dist/{PortalProvider-BpgZwSpw.js → PortalProvider-CN_81Fy3.js} +2 -2
  5. package/dist/{PortalProvider-BpgZwSpw.js.map → PortalProvider-CN_81Fy3.js.map} +1 -1
  6. package/dist/assets/worker-D8fZ3h-U.js.map +1 -1
  7. package/dist/components.css +1 -1
  8. package/dist/diff/bounded/index.js +6 -6
  9. package/dist/diff/bounded/index.js.map +1 -1
  10. package/dist/diff/index.js +479 -467
  11. package/dist/diff/index.js.map +1 -1
  12. package/dist/dts/foundations/PortalProvider.d.ts +1 -0
  13. package/dist/dts/foundations/PortalProvider.d.ts.map +1 -1
  14. package/dist/dts/internal/modal.d.ts +4 -0
  15. package/dist/dts/internal/modal.d.ts.map +1 -1
  16. package/dist/dts/patterns/RelayDock.d.ts +75 -0
  17. package/dist/dts/patterns/RelayDock.d.ts.map +1 -0
  18. package/dist/dts/patterns/index.d.ts +2 -0
  19. package/dist/dts/patterns/index.d.ts.map +1 -1
  20. package/dist/foundations/index.js +2 -2
  21. package/dist/index.js +6 -6
  22. package/dist/patterns/index.js +2 -2
  23. package/dist/patterns-DB9mAzxZ.js +3138 -0
  24. package/dist/patterns-DB9mAzxZ.js.map +1 -0
  25. package/dist/primitives/index.js +3 -3
  26. package/dist/primitives-DYGtIZqB.js +342 -0
  27. package/dist/primitives-DYGtIZqB.js.map +1 -0
  28. package/package.json +1 -1
  29. package/registry/components.json +111 -0
  30. package/registry/search.json +36 -0
  31. package/dist/Dialog-1WvU8GjA.js +0 -715
  32. package/dist/Dialog-1WvU8GjA.js.map +0 -1
  33. package/dist/patterns-CxMz8DKX.js +0 -2792
  34. package/dist/patterns-CxMz8DKX.js.map +0 -1
  35. package/dist/primitives-CW89TsFB.js +0 -543
  36. package/dist/primitives-CW89TsFB.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitives-CW89TsFB.js","names":[],"sources":["../src/primitives/Divider.module.css","../src/primitives/Divider.tsx","../src/internal/field-control.ts","../src/primitives/Field.module.css","../src/primitives/Field.tsx","../src/primitives/IconButton.module.css","../src/primitives/IconButton.tsx","../src/primitives/Select.module.css","../src/primitives/Select.tsx","../src/primitives/Surface.module.css","../src/primitives/Surface.tsx","../src/primitives/Tabs.module.css","../src/primitives/Tabs.tsx","../src/primitives/Text.module.css","../src/primitives/Text.tsx"],"sourcesContent":["@layer rly.components {\n .root {\n flex: none;\n }\n .horizontal {\n block-size: 1px;\n inline-size: 100%;\n }\n .vertical {\n align-self: stretch;\n inline-size: 1px;\n min-block-size: var(--rly-space-20);\n }\n .subtle {\n background: var(--rly-color-border-1);\n }\n .strong {\n background: var(--rly-color-border-2);\n }\n}\n","import type { ComponentPropsWithRef, ReactElement } from \"react\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Divider.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_DIVIDER_VARIANTS = defineVariants({\n orientation: {\n horizontal: { className: style(\"horizontal\"), purpose: \"Separate stacked content\", tokens: [\"space-0\"] },\n vertical: { className: style(\"vertical\"), purpose: \"Separate adjacent content\", tokens: [\"space-0\"] }\n },\n strength: {\n subtle: { className: style(\"subtle\"), purpose: \"Quiet structural boundary\", tokens: [\"color-border-1\"] },\n strong: { className: style(\"strong\"), purpose: \"Explicit structural boundary\", tokens: [\"color-border-2\"] }\n }\n})\nexport const RLY_DIVIDER_DEFAULT_VARIANTS = defineVariants({ orientation: \"horizontal\", strength: \"subtle\" })\nexport type RlyDividerOrientation = keyof typeof RLY_DIVIDER_VARIANTS.orientation\nexport type RlyDividerStrength = keyof typeof RLY_DIVIDER_VARIANTS.strength\ntype DividerBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"role\">\nexport type DividerProps = DividerBaseProps & {\n readonly orientation?: RlyDividerOrientation\n readonly strength?: RlyDividerStrength\n} & ({ readonly decorative?: true; readonly label?: never } | { readonly decorative: false; readonly label: string })\n\n/** Separate content visually or, when explicitly labelled, semantically. */\nexport const Divider = ({\n className,\n decorative = true,\n label,\n orientation = \"horizontal\",\n strength = \"subtle\",\n ...props\n}: DividerProps): ReactElement => {\n if (!decorative && label === undefined) throw new Error(\"Semantic Divider label must contain visible text\")\n const accessibleLabel = decorative || label === undefined ? undefined : requireText(label, \"Semantic Divider label\")\n return (\n <div\n {...props}\n aria-hidden={decorative ? \"true\" : undefined}\n aria-label={accessibleLabel}\n aria-orientation={decorative ? undefined : orientation}\n className={classNames(\n style(\"root\"),\n RLY_DIVIDER_VARIANTS.orientation[orientation].className,\n RLY_DIVIDER_VARIANTS.strength[strength].className,\n className\n )}\n role={decorative ? \"presentation\" : \"separator\"}\n />\n )\n}\n","const registeredFieldControls = new WeakSet<object>()\n\n/** Register an owned control that applies Field semantics to its final DOM host. */\nexport const registerFieldControl = <Component extends object>(component: Component): Component => {\n registeredFieldControls.add(component)\n return component\n}\n\n/** Distinguish rly-owned controls from consumer components that may discard DOM semantics. */\nexport const isRegisteredFieldControl = <Component extends object>(component: Component): boolean =>\n registeredFieldControls.has(component)\n","@layer rly.components {\n .root {\n align-content: start;\n color: var(--rly-color-text-1);\n display: grid;\n gap: var(--rly-space-8);\n inline-size: 100%;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .label {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n gap: var(--rly-space-8);\n letter-spacing: var(--rly-type-label-tracking);\n }\n\n .required,\n .description,\n .error {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n letter-spacing: var(--rly-type-meta-tracking);\n margin: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .required,\n .description {\n color: var(--rly-color-text-2);\n }\n\n .error {\n color: var(--rly-color-blocked-ink);\n }\n\n .controlSlot {\n min-inline-size: var(--rly-space-0);\n }\n\n .control {\n appearance: none;\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-field);\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n inline-size: 100%;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n padding: var(--rly-space-8) var(--rly-space-12);\n }\n\n .control:is(textarea) {\n min-block-size: var(--rly-space-96);\n resize: vertical;\n }\n\n .compact .control {\n min-block-size: var(--rly-space-40);\n padding-block: var(--rly-space-6);\n }\n\n .defaultSize .control {\n min-block-size: var(--rly-space-48);\n }\n\n .control:disabled,\n .control[aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.58;\n }\n\n .control[aria-invalid=\"true\"] {\n border-color: var(--rly-color-blocked-ink);\n }\n}\n","import { type AriaAttributes, type ComponentPropsWithRef, type ReactElement, useId } from \"react\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport { isRegisteredFieldControl } from \"../internal/field-control.js\"\nimport styles from \"./Field.module.css\"\nimport * as Predicate from \"../internal/predicates.js\"\n\nconst style = (name: string): string => cssClass(styles, name)\nconst semanticControlKeys: ReadonlyArray<keyof FieldControlProps> = [\n \"aria-describedby\",\n \"aria-errormessage\",\n \"aria-invalid\",\n \"aria-labelledby\",\n \"aria-required\",\n \"id\",\n \"required\"\n]\nconst concreteControlElements = new Set([\"button\", \"input\", \"select\", \"textarea\"])\n\nexport const RLY_FIELD_VARIANTS = defineVariants({\n size: {\n compact: { className: style(\"compact\"), purpose: \"Dense form rows\", tokens: [\"space-40\", \"type-meta\"] },\n default: { className: style(\"defaultSize\"), purpose: \"Standard form controls\", tokens: [\"space-48\", \"type-label\"] }\n }\n})\n\nexport const RLY_FIELD_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyFieldSize = keyof typeof RLY_FIELD_VARIANTS.size\n\n/** DOM-neutral semantics to spread onto an input, textarea, native select, or rly Select. */\nexport interface FieldControlProps {\n readonly \"aria-describedby\"?: AriaAttributes[\"aria-describedby\"]\n readonly \"aria-errormessage\"?: AriaAttributes[\"aria-errormessage\"]\n readonly \"aria-invalid\"?: AriaAttributes[\"aria-invalid\"]\n readonly \"aria-labelledby\": string\n readonly \"aria-required\"?: AriaAttributes[\"aria-required\"]\n readonly className: string\n readonly id: string\n readonly required?: true\n}\n\nexport type FieldProps = Omit<ComponentPropsWithRef<\"div\">, \"children\"> & {\n readonly children: (controlProps: FieldControlProps) => ReactElement<FieldControlProps>\n readonly controlId?: string\n readonly description?: string\n readonly error?: string\n readonly label: string\n readonly required?: boolean\n readonly size?: RlyFieldSize\n}\n\n/** Compose visible field context with control semantics without cloning an implementation-specific control. */\nexport const Field = ({\n children,\n className,\n controlId,\n description,\n error,\n label,\n required = false,\n size = RLY_FIELD_DEFAULT_VARIANTS.size,\n ...props\n}: FieldProps): ReactElement => {\n const generatedId = useId()\n const resolvedControlId = controlId ?? `rly-field-${generatedId}`\n const labelId = `${resolvedControlId}-label`\n const descriptionId = description === undefined ? undefined : `${resolvedControlId}-description`\n const errorId = error === undefined ? undefined : `${resolvedControlId}-error`\n const describedBy = [descriptionId, errorId].filter((id): id is string => id !== undefined).join(\" \") || undefined\n const commonControlProps: FieldControlProps = {\n \"aria-describedby\": describedBy,\n \"aria-errormessage\": errorId,\n \"aria-invalid\": error === undefined ? undefined : true,\n \"aria-labelledby\": labelId,\n \"aria-required\": required ? true : undefined,\n className: style(\"control\"),\n id: resolvedControlId\n }\n const controlProps: FieldControlProps = required ? { ...commonControlProps, required: true } : commonControlProps\n const control = children(controlProps)\n const controlType = control.type\n const supportedControl = Predicate.isString(controlType)\n ? concreteControlElements.has(controlType)\n : (Predicate.isFunction(controlType) || Predicate.isObjectOrArray(controlType)) &&\n controlType !== null &&\n isRegisteredFieldControl(controlType)\n if (!supportedControl) throw new Error(\"Field children must render one concrete or rly-owned control\")\n for (const key of semanticControlKeys) {\n if (control.props[key] !== controlProps[key]) throw new Error(`Field control must apply ${key}`)\n }\n if (!control.props.className.split(\" \").includes(controlProps.className)) {\n throw new Error(\"Field control must apply className\")\n }\n\n return (\n <div\n {...props}\n className={classNames(style(\"root\"), RLY_FIELD_VARIANTS.size[size].className, className)}\n data-error={error === undefined ? undefined : \"true\"}\n >\n <label className={style(\"label\")} htmlFor={resolvedControlId} id={labelId}>\n {requireText(label, \"Field label\")}\n {required ? <span className={style(\"required\")}>Required</span> : null}\n </label>\n {description === undefined ? null : (\n <p className={style(\"description\")} id={descriptionId}>\n {requireText(description, \"Field description\")}\n </p>\n )}\n <div className={style(\"controlSlot\")}>{control}</div>\n {error === undefined ? null : (\n <p className={style(\"error\")} id={errorId} role=\"alert\">\n {requireText(error, \"Field error\")}\n </p>\n )}\n </div>\n )\n}\n","@layer rly.components {\n .root {\n appearance: none;\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-control);\n box-sizing: border-box;\n cursor: pointer;\n display: inline-grid;\n padding: var(--rly-space-0);\n place-items: center;\n }\n\n .root:disabled {\n cursor: not-allowed;\n opacity: 0.58;\n }\n .primary {\n background: var(--rly-color-action-background);\n border-color: var(--rly-color-action-background);\n color: var(--rly-color-action-foreground);\n }\n .secondary {\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n }\n .quiet {\n background: var(--rly-color-surface-2);\n border-color: var(--rly-color-surface-2);\n color: var(--rly-color-text-1);\n }\n .compact {\n block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n inline-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n .defaultSize {\n block-size: var(--rly-space-48);\n inline-size: var(--rly-space-48);\n }\n .principal {\n block-size: calc(var(--rly-space-48) + var(--rly-space-8));\n inline-size: calc(var(--rly-space-48) + var(--rly-space-8));\n }\n\n @media (hover: hover) {\n .root:not(:disabled):hover {\n border-color: var(--rly-color-text-2);\n }\n .primary:not(:disabled):hover {\n background: var(--rly-color-text-2);\n }\n }\n}\n","import type { ComponentPropsWithRef, ReactElement } from \"react\"\nimport { Icon, type RlyIconName } from \"../foundations/Icon.js\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./IconButton.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_ICON_BUTTON_VARIANTS = defineVariants({\n variant: {\n primary: {\n className: style(\"primary\"),\n purpose: \"Principal icon action\",\n tokens: [\"color-action-background\", \"color-action-foreground\"]\n },\n secondary: {\n className: style(\"secondary\"),\n purpose: \"Default icon action\",\n tokens: [\"color-surface-1\", \"color-border-2\"]\n },\n quiet: {\n className: style(\"quiet\"),\n purpose: \"Low-emphasis icon action\",\n tokens: [\"color-text-1\", \"color-surface-2\"]\n }\n },\n size: {\n compact: {\n className: style(\"compact\"),\n purpose: \"Minimum accessible icon target\",\n tokens: [\"space-40\", \"space-4\"]\n },\n default: { className: style(\"defaultSize\"), purpose: \"Standard icon target\", tokens: [\"space-48\"] },\n principal: { className: style(\"principal\"), purpose: \"Prominent icon target\", tokens: [\"space-48\", \"space-8\"] }\n }\n})\nexport const RLY_ICON_BUTTON_DEFAULT_VARIANTS = defineVariants({ variant: \"secondary\", size: \"default\" })\nexport type RlyIconButtonVariant = keyof typeof RLY_ICON_BUTTON_VARIANTS.variant\nexport type RlyIconButtonSize = keyof typeof RLY_ICON_BUTTON_VARIANTS.size\nexport type IconButtonProps = Omit<ComponentPropsWithRef<\"button\">, \"aria-label\" | \"children\"> & {\n readonly icon: RlyIconName\n readonly label: string\n readonly loading?: boolean\n readonly size?: RlyIconButtonSize\n readonly variant?: RlyIconButtonVariant\n}\n\n/** Render an icon-only action whose accessible name is mandatory and owned. */\nexport const IconButton = ({\n className,\n disabled,\n icon,\n label,\n loading = false,\n size = \"default\",\n type,\n variant = \"secondary\",\n ...props\n}: IconButtonProps): ReactElement => (\n <button\n {...props}\n aria-busy={loading ? \"true\" : undefined}\n aria-label={requireText(label, \"IconButton label\")}\n className={classNames(\n style(\"root\"),\n RLY_ICON_BUTTON_VARIANTS.variant[variant].className,\n RLY_ICON_BUTTON_VARIANTS.size[size].className,\n className\n )}\n data-loading={loading ? \"true\" : undefined}\n disabled={disabled || loading}\n type={type ?? \"button\"}\n >\n <Icon decorative name={loading ? \"loader\" : icon} size={size === \"compact\" ? \"small\" : \"default\"} />\n </button>\n)\n","@layer rly.components {\n .trigger {\n align-items: center;\n appearance: none;\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-field);\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n cursor: pointer;\n display: inline-flex;\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n gap: var(--rly-space-12);\n inline-size: 100%;\n justify-content: space-between;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n padding: var(--rly-space-8) var(--rly-space-12);\n text-align: start;\n }\n\n .trigger[data-placeholder] {\n color: var(--rly-color-text-2);\n }\n\n .trigger > span:first-child {\n min-inline-size: var(--rly-space-0);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .trigger[data-state=\"open\"] {\n border-color: var(--rly-color-focus);\n }\n\n .trigger:disabled {\n cursor: not-allowed;\n opacity: 0.58;\n }\n\n .trigger[aria-invalid=\"true\"] {\n border-color: var(--rly-color-blocked-ink);\n }\n\n .compact {\n min-block-size: var(--rly-space-40);\n padding-block: var(--rly-space-6);\n }\n\n .defaultSize {\n min-block-size: var(--rly-space-48);\n }\n\n .triggerIcon {\n display: inline-flex;\n flex: none;\n transition: transform var(--rly-motion-fast-duration) var(--rly-motion-fast-easing);\n }\n\n .trigger[data-state=\"open\"] .triggerIcon {\n transform: rotate(180deg);\n }\n\n .content {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-field);\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n max-block-size: min(20rem, var(--radix-select-content-available-height));\n max-inline-size: min(calc(100vw - var(--rly-space-32)), 32rem);\n min-inline-size: var(--radix-select-trigger-width);\n overflow: hidden;\n transform-origin: var(--radix-select-content-transform-origin);\n z-index: 100;\n }\n\n .viewport {\n box-sizing: border-box;\n padding: var(--rly-space-4);\n }\n\n .item {\n align-items: center;\n border-radius: var(--rly-radius-tag);\n box-sizing: border-box;\n cursor: default;\n display: flex;\n gap: var(--rly-space-8);\n justify-content: space-between;\n min-block-size: var(--rly-space-40);\n min-inline-size: var(--rly-space-0);\n outline: none;\n overflow-wrap: anywhere;\n padding: var(--rly-space-8) var(--rly-space-12);\n user-select: none;\n }\n\n .item[data-highlighted],\n .item[data-state=\"checked\"] {\n background: var(--rly-color-surface-2);\n }\n\n .item[data-disabled] {\n opacity: 0.58;\n }\n\n .itemIndicator {\n display: inline-flex;\n flex: none;\n }\n\n .scrollButton {\n align-items: center;\n color: var(--rly-color-text-2);\n display: flex;\n justify-content: center;\n min-block-size: var(--rly-space-32);\n }\n\n @media (max-width: 30rem) {\n .content {\n inline-size: var(--radix-select-trigger-width);\n max-inline-size: calc(100vw - var(--rly-space-16));\n }\n }\n}\n","import { Select as RadixSelect } from \"radix-ui\"\nimport type { AriaAttributes, ComponentPropsWithRef, ReactElement } from \"react\"\nimport { Icon } from \"../foundations/Icon.js\"\nimport { PortalBoundary } from \"../foundations/PortalProvider.js\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport { registerFieldControl } from \"../internal/field-control.js\"\nimport styles from \"./Select.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_SELECT_VARIANTS = defineVariants({\n size: {\n compact: { className: style(\"compact\"), purpose: \"Dense form rows\", tokens: [\"space-40\", \"type-meta\"] },\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard selection control\",\n tokens: [\"space-48\", \"type-body\"]\n }\n }\n})\n\nexport const RLY_SELECT_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlySelectSize = keyof typeof RLY_SELECT_VARIANTS.size\n\nexport interface RlySelectOption {\n readonly disabled?: boolean\n readonly label: string\n readonly value: string\n}\n\ntype TriggerProps = Pick<\n ComponentPropsWithRef<\"button\">,\n \"className\" | \"id\" | \"onBlur\" | \"onFocus\" | \"onKeyDown\" | \"ref\" | \"tabIndex\"\n>\n\ntype SelectAccessibleName =\n | { readonly \"aria-label\": string; readonly \"aria-labelledby\"?: never }\n | { readonly \"aria-label\"?: never; readonly \"aria-labelledby\": string }\n\ntype SelectValueState =\n | {\n readonly defaultValue?: never\n readonly onValueChange: (value: string) => void\n readonly value: string | undefined\n }\n | {\n readonly defaultValue?: string\n readonly onValueChange?: (value: string) => void\n readonly value?: never\n }\n\ntype SelectOpenState =\n | {\n readonly defaultOpen?: never\n readonly onOpenChange: (open: boolean) => void\n readonly open: boolean\n }\n | {\n readonly defaultOpen?: boolean\n readonly onOpenChange?: (open: boolean) => void\n readonly open?: never\n }\n\ninterface SelectBaseProps extends TriggerProps {\n readonly \"aria-describedby\"?: AriaAttributes[\"aria-describedby\"]\n readonly \"aria-errormessage\"?: AriaAttributes[\"aria-errormessage\"]\n readonly \"aria-invalid\"?: AriaAttributes[\"aria-invalid\"]\n readonly \"aria-required\"?: AriaAttributes[\"aria-required\"]\n readonly autoComplete?: string\n readonly disabled?: boolean\n readonly form?: string\n readonly name?: string\n readonly options: ReadonlyArray<RlySelectOption>\n readonly placeholder?: string\n readonly required?: boolean\n readonly size?: RlySelectSize\n}\n\nexport type SelectProps = SelectBaseProps & SelectAccessibleName & SelectValueState & SelectOpenState\n\nconst validateOptions = (options: ReadonlyArray<RlySelectOption>, disabled: boolean): void => {\n if (!disabled && !options.some((option) => !option.disabled)) {\n throw new Error(\"Select options must contain at least one enabled option\")\n }\n const values = new Set<string>()\n for (const option of options) {\n requireText(option.label, \"Select option label\")\n const value = requireText(option.value, \"Select option value\")\n if (values.has(value)) throw new Error(`Duplicate Select option value: ${value}`)\n values.add(value)\n }\n}\n\n/** Render an owned, portal-safe single-value selector without exposing Radix component shapes. */\nconst SelectImplementation = (componentProps: SelectProps): ReactElement => {\n const valueControlled = \"value\" in componentProps\n const {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": ariaErrorMessage,\n \"aria-invalid\": ariaInvalid,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-required\": ariaRequired,\n autoComplete,\n className,\n defaultOpen,\n defaultValue,\n disabled = false,\n form,\n id,\n name,\n onBlur,\n onFocus,\n onKeyDown,\n onOpenChange,\n onValueChange,\n open,\n options,\n placeholder = \"Select an option\",\n ref,\n required = false,\n size = RLY_SELECT_DEFAULT_VARIANTS.size,\n tabIndex,\n value\n } = componentProps\n validateOptions(options, disabled)\n const accessibleName = ariaLabel ?? ariaLabelledBy\n requireText(accessibleName, ariaLabel === undefined ? \"Select aria-labelledby\" : \"Select aria-label\")\n const visiblePlaceholder = requireText(placeholder, \"Select placeholder\")\n const selectedValue = value ?? defaultValue\n if (selectedValue !== undefined && !options.some((option) => option.value === selectedValue)) {\n throw new Error(`Select value does not match an option: ${selectedValue}`)\n }\n\n return (\n <RadixSelect.Root\n {...(autoComplete === undefined ? {} : { autoComplete })}\n {...(defaultOpen === undefined ? {} : { defaultOpen })}\n {...(defaultValue === undefined ? {} : { defaultValue })}\n disabled={disabled}\n {...(form === undefined ? {} : { form })}\n {...(name === undefined ? {} : { name })}\n {...(onOpenChange === undefined ? {} : { onOpenChange })}\n {...(onValueChange === undefined ? {} : { onValueChange })}\n {...(open === undefined ? {} : { open })}\n required={required}\n {...(valueControlled ? { value: value ?? \"\" } : {})}\n >\n <RadixSelect.Trigger\n aria-describedby={ariaDescribedBy}\n aria-errormessage={ariaErrorMessage}\n aria-invalid={ariaInvalid}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-required={ariaRequired ?? (required ? true : undefined)}\n className={classNames(style(\"trigger\"), RLY_SELECT_VARIANTS.size[size].className, className)}\n id={id}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n ref={ref}\n tabIndex={tabIndex}\n >\n <RadixSelect.Value placeholder={visiblePlaceholder} />\n <RadixSelect.Icon asChild>\n <span aria-hidden=\"true\" className={style(\"triggerIcon\")}>\n <Icon decorative name=\"chevron-down\" size=\"small\" />\n </span>\n </RadixSelect.Icon>\n </RadixSelect.Trigger>\n <PortalBoundary>\n {(container) => (\n <RadixSelect.Portal container={container}>\n <RadixSelect.Content\n align=\"start\"\n className={classNames(style(\"content\"), RLY_SELECT_VARIANTS.size[size].className)}\n position=\"popper\"\n sideOffset={6}\n >\n <RadixSelect.ScrollUpButton aria-hidden=\"true\" className={style(\"scrollButton\")}>\n <Icon decorative name=\"chevron-up\" size=\"small\" />\n </RadixSelect.ScrollUpButton>\n <RadixSelect.Viewport className={style(\"viewport\")}>\n {options.map((option) => (\n <RadixSelect.Item\n className={style(\"item\")}\n {...(option.disabled === undefined ? {} : { disabled: option.disabled })}\n key={option.value}\n textValue={option.label}\n value={option.value}\n >\n <RadixSelect.ItemText>{option.label}</RadixSelect.ItemText>\n <RadixSelect.ItemIndicator className={style(\"itemIndicator\")}>\n <Icon decorative name=\"check\" size=\"small\" />\n </RadixSelect.ItemIndicator>\n </RadixSelect.Item>\n ))}\n </RadixSelect.Viewport>\n <RadixSelect.ScrollDownButton aria-hidden=\"true\" className={style(\"scrollButton\")}>\n <Icon decorative name=\"chevron-down\" size=\"small\" />\n </RadixSelect.ScrollDownButton>\n </RadixSelect.Content>\n </RadixSelect.Portal>\n )}\n </PortalBoundary>\n </RadixSelect.Root>\n )\n}\n\nexport const Select = /* @__PURE__ */ registerFieldControl(SelectImplementation)\n","@layer rly.components {\n .root {\n box-sizing: border-box;\n color: var(--rly-color-text-1);\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .tonePrimary {\n background: var(--rly-color-surface-1);\n border: 1px solid var(--rly-color-border-1);\n }\n .toneSecondary {\n background: var(--rly-color-surface-2);\n }\n .toneTertiary {\n background: var(--rly-color-surface-3);\n }\n .shapeCard {\n border-radius: var(--rly-radius-control);\n }\n .shapeGrouped {\n border-radius: var(--rly-radius-group);\n }\n .paddingNone {\n padding: var(--rly-space-0);\n }\n .paddingCompact {\n padding: var(--rly-space-16);\n }\n .paddingDefault {\n padding: var(--rly-space-24);\n }\n .paddingSpacious {\n padding: var(--rly-space-32);\n }\n}\n","import { createElement, type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Surface.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\nexport const RLY_SURFACE_VARIANTS = defineVariants({\n tone: {\n primary: {\n className: style(\"tonePrimary\"),\n purpose: \"Primary bordered surface\",\n tokens: [\"color-surface-1\", \"color-border-1\"]\n },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Quiet secondary surface\", tokens: [\"color-surface-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Inset tertiary surface\", tokens: [\"color-surface-3\"] }\n },\n form: {\n card: { className: style(\"shapeCard\"), purpose: \"Standard card geometry\", tokens: [\"radius-control\"] },\n grouped: { className: style(\"shapeGrouped\"), purpose: \"Grouped content geometry\", tokens: [\"radius-group\"] }\n },\n padding: {\n none: { className: style(\"paddingNone\"), purpose: \"Caller-owned internal layout\", tokens: [\"space-0\"] },\n compact: { className: style(\"paddingCompact\"), purpose: \"Dense supporting content\", tokens: [\"space-16\"] },\n default: { className: style(\"paddingDefault\"), purpose: \"Standard content\", tokens: [\"space-24\"] },\n spacious: { className: style(\"paddingSpacious\"), purpose: \"Prominent grouped content\", tokens: [\"space-32\"] }\n }\n})\nexport const RLY_SURFACE_DEFAULT_VARIANTS = defineVariants({ tone: \"primary\", form: \"card\", padding: \"default\" })\nexport type RlySurfaceTone = keyof typeof RLY_SURFACE_VARIANTS.tone\nexport type RlySurfaceForm = keyof typeof RLY_SURFACE_VARIANTS.form\nexport type RlySurfacePadding = keyof typeof RLY_SURFACE_VARIANTS.padding\nexport type RlySurfaceElement = \"div\" | \"section\" | \"article\" | \"aside\"\n\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\n\nexport type SurfaceProps<\n Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = Omit<ComponentPropsWithoutRef<Element>, \"children\" | \"color\"> & {\n readonly as?: Element\n readonly children: ReactNode\n readonly padding?: RlySurfacePadding\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n readonly form?: RlySurfaceForm\n readonly tone?: RlySurfaceTone\n}\n\n/** Render a quiet, non-interactive structural surface without elevation semantics. */\nexport const Surface = <\n const Element extends RlySurfaceElement = \"div\",\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>({\n as,\n children,\n className,\n form = \"card\",\n padding = \"default\",\n ref,\n tone = \"primary\",\n ...props\n}: SurfaceProps<Element, ElementRef>): ReactElement =>\n createElement(\n as ?? \"div\",\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_SURFACE_VARIANTS.tone[tone].className,\n RLY_SURFACE_VARIANTS.form[form].className,\n RLY_SURFACE_VARIANTS.padding[padding].className,\n className\n ),\n ref\n },\n children\n )\n","@layer rly.components {\n .root {\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n }\n\n .list {\n align-items: stretch;\n background: var(--rly-color-surface-2);\n border-radius: var(--rly-radius-field);\n display: flex;\n flex-wrap: wrap;\n gap: var(--rly-space-2);\n max-inline-size: 100%;\n padding: var(--rly-space-4);\n }\n\n .trigger {\n appearance: none;\n background: var(--rly-color-surface-2);\n border: var(--rly-space-0);\n border-radius: var(--rly-radius-tag);\n color: var(--rly-color-text-2);\n cursor: pointer;\n flex: 1 1 10rem;\n max-inline-size: 100%;\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n padding: var(--rly-space-8) var(--rly-space-12);\n position: relative;\n text-align: center;\n }\n\n .trigger::after {\n background: var(--rly-color-action-background);\n block-size: var(--rly-space-2);\n border-radius: var(--rly-radius-round);\n content: \"\";\n inset-block-end: var(--rly-space-2);\n inset-inline: var(--rly-space-12);\n opacity: 0;\n position: absolute;\n }\n\n .trigger[data-state=\"active\"] {\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n }\n\n .trigger[data-state=\"active\"]::after {\n opacity: 1;\n }\n .trigger:disabled {\n cursor: not-allowed;\n opacity: 0.58;\n }\n\n .defaultSize .trigger {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n min-block-size: calc(var(--rly-space-40) + var(--rly-space-4));\n }\n\n .large .trigger {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n min-block-size: var(--rly-space-48);\n padding-inline: var(--rly-space-16);\n }\n\n .panel {\n color: var(--rly-color-text-1);\n min-inline-size: var(--rly-space-0);\n padding-block-start: var(--rly-space-24);\n }\n\n @media (hover: hover) {\n .trigger:not(:disabled, [data-state=\"active\"]):hover {\n background: var(--rly-color-surface-3);\n color: var(--rly-color-text-1);\n }\n }\n}\n","import type { ComponentPropsWithRef, ReactElement, ReactNode } from \"react\"\nimport { Tabs as RadixTabs } from \"radix-ui\"\nimport { classNames, cssClass, defineVariants, requireText } from \"../internal/component.js\"\nimport styles from \"./Tabs.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TABS_VARIANTS = defineVariants({\n size: {\n default: {\n className: style(\"defaultSize\"),\n purpose: \"Standard section navigation\",\n tokens: [\"type-label\", \"space-40\", \"space-4\"]\n },\n large: {\n className: style(\"large\"),\n purpose: \"Prominent page-level navigation\",\n tokens: [\"type-body\", \"space-48\"]\n }\n }\n})\n\nexport const RLY_TABS_DEFAULT_VARIANTS = defineVariants({ size: \"default\" })\nexport type RlyTabsSize = keyof typeof RLY_TABS_VARIANTS.size\nexport type RlyTabsDirection = \"ltr\" | \"rtl\"\n\n/** One labelled tab and its presentation-only panel content. */\nexport interface RlyTabItem {\n readonly content: ReactNode\n readonly disabled?: boolean\n readonly label: string\n readonly value: string\n}\n\ntype TabsBaseProps = Omit<ComponentPropsWithRef<\"div\">, \"aria-label\" | \"children\" | \"defaultValue\" | \"dir\"> & {\n /** Accessible name for the tab list. */\n readonly \"aria-label\": string\n readonly direction?: RlyTabsDirection\n readonly items: ReadonlyArray<RlyTabItem>\n readonly size?: RlyTabsSize\n}\ntype ControlledTabsProps = TabsBaseProps & {\n readonly defaultValue?: never\n readonly onValueChange: (value: string) => void\n readonly value: string\n}\ntype DefaultTabsProps = TabsBaseProps & {\n readonly defaultValue?: string\n readonly onValueChange?: (value: string) => void\n readonly value?: never\n}\nexport type TabsProps = ControlledTabsProps | DefaultTabsProps\n\nconst validateItems = (items: ReadonlyArray<RlyTabItem>): RlyTabItem => {\n if (items.length === 0) throw new Error(\"Tabs items must contain at least one enabled tab\")\n\n const values = new Set<string>()\n let firstEnabled: RlyTabItem | undefined\n for (const item of items) {\n const value = requireText(item.value, \"Tab value\")\n requireText(item.label, `Tab label for ${value}`)\n if (values.has(value)) throw new Error(`Tabs item values must be unique: ${value}`)\n values.add(value)\n if (!item.disabled && firstEnabled === undefined) firstEnabled = item\n }\n\n if (firstEnabled === undefined) throw new Error(\"Tabs items must contain at least one enabled tab\")\n return firstEnabled\n}\n\n/** Render labelled, keyboard-navigable panels with controlled-first selection. */\nexport const Tabs = ({\n \"aria-label\": ariaLabel,\n className,\n defaultValue,\n direction,\n items,\n onValueChange,\n size = \"default\",\n value,\n ...props\n}: TabsProps): ReactElement => {\n const accessibleLabel = requireText(ariaLabel, \"Tabs aria-label\")\n const firstEnabled = validateItems(items)\n const selectedValue = value ?? defaultValue ?? firstEnabled.value\n const selectedItem = items.find((item) => item.value === selectedValue)\n if (selectedItem === undefined || selectedItem.disabled) {\n throw new Error(`Tabs selected value must identify an enabled tab: ${selectedValue}`)\n }\n\n const selectionProps =\n value === undefined\n ? onValueChange === undefined\n ? { defaultValue: selectedValue }\n : { defaultValue: selectedValue, onValueChange }\n : { onValueChange, value }\n const directionProps = direction === undefined ? {} : { dir: direction }\n\n return (\n <RadixTabs.Root\n {...props}\n {...selectionProps}\n {...directionProps}\n activationMode=\"automatic\"\n className={classNames(style(\"root\"), RLY_TABS_VARIANTS.size[size].className, className)}\n orientation=\"horizontal\"\n >\n <RadixTabs.List aria-label={accessibleLabel} className={style(\"list\")} loop>\n {items.map((item) => (\n <RadixTabs.Trigger className={style(\"trigger\")} disabled={item.disabled} key={item.value} value={item.value}>\n {item.label}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n {items.map((item) => (\n <RadixTabs.Content className={style(\"panel\")} key={item.value} value={item.value}>\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n","@layer rly.components {\n .root {\n margin: var(--rly-space-0);\n min-inline-size: var(--rly-space-0);\n overflow-wrap: anywhere;\n }\n\n .verdict,\n .pageTitle,\n .sectionTitle,\n .cardTitle {\n text-wrap: balance;\n }\n\n .bodyLarge,\n .body {\n text-wrap: pretty;\n }\n\n .verdict {\n font: var(--rly-type-verdict-weight) var(--rly-type-verdict-size) / var(--rly-type-verdict-line-height)\n var(--rly-type-verdict-font);\n letter-spacing: var(--rly-type-verdict-tracking);\n }\n\n .pageTitle {\n font: var(--rly-type-page-title-weight) var(--rly-type-page-title-size) / var(--rly-type-page-title-line-height)\n var(--rly-type-page-title-font);\n letter-spacing: var(--rly-type-page-title-tracking);\n }\n\n .sectionTitle {\n font: var(--rly-type-section-title-weight) var(--rly-type-section-title-size) /\n var(--rly-type-section-title-line-height) var(--rly-type-section-title-font);\n letter-spacing: var(--rly-type-section-title-tracking);\n }\n\n .cardTitle {\n font: var(--rly-type-card-title-weight) var(--rly-type-card-title-size) / var(--rly-type-card-title-line-height)\n var(--rly-type-card-title-font);\n letter-spacing: var(--rly-type-card-title-tracking);\n }\n\n .bodyLarge {\n font: var(--rly-type-body-large-weight) var(--rly-type-body-large-size) / var(--rly-type-body-large-line-height)\n var(--rly-type-body-large-font);\n letter-spacing: var(--rly-type-body-large-tracking);\n }\n\n .body {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n letter-spacing: var(--rly-type-body-tracking);\n }\n\n .label {\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n letter-spacing: var(--rly-type-label-tracking);\n }\n\n .meta {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n letter-spacing: var(--rly-type-meta-tracking);\n }\n\n .code {\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n font-variant-numeric: tabular-nums;\n letter-spacing: var(--rly-type-code-tracking);\n white-space: pre-wrap;\n }\n\n .tonePrimary {\n color: var(--rly-color-text-1);\n }\n .toneSecondary {\n color: var(--rly-color-text-2);\n }\n .toneTertiary {\n color: var(--rly-color-text-3);\n }\n .toneInherit {\n color: inherit;\n }\n}\n","import {\n createElement,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref\n} from \"react\"\nimport { classNames, cssClass, defineVariants } from \"../internal/component.js\"\nimport styles from \"./Text.module.css\"\n\nconst style = (name: string): string => cssClass(styles, name)\n\nexport const RLY_TEXT_VARIANTS = defineVariants({\n variant: {\n verdict: { className: style(\"verdict\"), purpose: \"One restrained verdict thesis\", tokens: [\"type-verdict\"] },\n \"page-title\": { className: style(\"pageTitle\"), purpose: \"Primary page title\", tokens: [\"type-page-title\"] },\n \"section-title\": { className: style(\"sectionTitle\"), purpose: \"Section heading\", tokens: [\"type-section-title\"] },\n \"card-title\": { className: style(\"cardTitle\"), purpose: \"Card or panel heading\", tokens: [\"type-card-title\"] },\n \"body-large\": { className: style(\"bodyLarge\"), purpose: \"Leading explanatory copy\", tokens: [\"type-body-large\"] },\n body: { className: style(\"body\"), purpose: \"Default interface copy\", tokens: [\"type-body\"] },\n label: { className: style(\"label\"), purpose: \"Control and metadata labels\", tokens: [\"type-label\"] },\n meta: { className: style(\"meta\"), purpose: \"Supporting metadata\", tokens: [\"type-meta\"] },\n code: { className: style(\"code\"), purpose: \"Code and tabular data\", tokens: [\"type-code\"] }\n },\n tone: {\n primary: { className: style(\"tonePrimary\"), purpose: \"Primary readable text\", tokens: [\"color-text-1\"] },\n secondary: { className: style(\"toneSecondary\"), purpose: \"Supporting text\", tokens: [\"color-text-2\"] },\n tertiary: { className: style(\"toneTertiary\"), purpose: \"Restricted tertiary text\", tokens: [\"color-text-3\"] },\n inherit: { className: style(\"toneInherit\"), purpose: \"Inherit semantic context\", tokens: [] }\n }\n})\n\nexport const RLY_TEXT_DEFAULT_VARIANTS = defineVariants({ variant: \"body\", tone: \"primary\" })\nexport type RlyTextVariant = keyof typeof RLY_TEXT_VARIANTS.variant\nexport type RlyTextTone = keyof typeof RLY_TEXT_VARIANTS.tone\nexport type RlyTextElement =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"p\"\n | \"span\"\n | \"strong\"\n | \"small\"\n | \"code\"\n | \"pre\"\n | \"time\"\n | \"li\"\n | \"dt\"\n | \"dd\"\n\ntype HeadingVariant = \"page-title\" | \"section-title\" | \"card-title\"\ntype HeadingElement = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\"\ntype OtherVariant = Exclude<RlyTextVariant, HeadingVariant>\ntype RefTarget<Value> = Value extends Ref<infer Target> ? Target : never\ntype ExactRef<Expected, Value> =\n Value extends Ref<Expected> ? (Expected extends RefTarget<Value> ? Value : never) : never\ntype TextOwnProps = {\n readonly children: ReactNode\n readonly tone?: RlyTextTone\n}\ntype ExplicitVariantProps<Element extends RlyTextElement> =\n { readonly variant?: OtherVariant } | (Element extends HeadingElement ? { readonly variant: HeadingVariant } : never)\ntype ExplicitTextProps<Element extends RlyTextElement, ElementRef extends Ref<HTMLElementTagNameMap[Element]>> = Omit<\n ComponentPropsWithoutRef<Element>,\n \"as\" | \"children\" | \"color\"\n> &\n TextOwnProps &\n ExplicitVariantProps<Element> & {\n readonly as: Element\n readonly ref?: ExactRef<HTMLElementTagNameMap[Element], ElementRef>\n }\ntype ImplicitTextProps = Omit<HTMLAttributes<HTMLElement>, \"children\" | \"color\"> &\n TextOwnProps & {\n readonly as?: never\n readonly ref?: never\n readonly variant?: OtherVariant\n }\nexport type TextProps<\n Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n> = ExplicitTextProps<Element, ElementRef> | ImplicitTextProps\n\ntype TextComponent = <\n const Element extends RlyTextElement = RlyTextElement,\n ElementRef extends Ref<HTMLElementTagNameMap[Element]> = Ref<HTMLElementTagNameMap[Element]>\n>(\n props: TextProps<Element, ElementRef>\n) => ReactElement\ntype TextRuntimeProps = Omit<HTMLAttributes<HTMLElement>, \"color\"> &\n TextOwnProps & {\n readonly as?: RlyTextElement\n readonly ref?: Ref<HTMLElement>\n readonly variant?: RlyTextVariant\n }\n\nconst defaultElement = (variant: RlyTextVariant): RlyTextElement =>\n variant === \"code\" ? \"code\" : variant === \"verdict\" ? \"p\" : variant === \"label\" || variant === \"meta\" ? \"span\" : \"p\"\n\n/** Render semantic typography while keeping visual role separate from document structure. */\nconst renderText = ({\n as,\n children,\n className,\n ref,\n tone = RLY_TEXT_DEFAULT_VARIANTS.tone,\n variant = RLY_TEXT_DEFAULT_VARIANTS.variant,\n ...props\n}: TextRuntimeProps): ReactElement =>\n createElement(\n as ?? defaultElement(variant),\n {\n ...props,\n className: classNames(\n style(\"root\"),\n RLY_TEXT_VARIANTS.variant[variant].className,\n RLY_TEXT_VARIANTS.tone[tone].className,\n className\n ),\n ref\n },\n children\n )\n\nexport const Text: TextComponent = renderText\n"],"mappings":"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"}