{"version":3,"sources":["../src/bridges/index.tsx","../src/lib/classNames.ts","../src/components/AdapterStatusBadge.tsx","../src/components/AdapterCard.tsx","../src/components/AdapterConfigForm.tsx","../src/components/AdapterList.tsx","../src/pages/AdapterDetailPage.tsx","../src/pages/AdaptersPage.tsx"],"names":["jsx","Show","jsxs","Progress","createEffect","Field","ErrorBoundary","createToaster","Fragment","Toaster","toast","Toast","classNames","DOMAIN_LABELS","DOMAIN_ICONS","DOMAIN_DESCRIPTIONS","getProvidersForDomain","createSignal","RadioGroup","For","createAdapters","createMemo","ADAPTER_DOMAINS","createAdapterStatus","createUniqueId","isAdaptersConfigured","getDomainConfig","ADAPTER_STATUSES","Dialog"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @module bridges\n * @package @geenius/adapters/solidjs-ark\n * @description Ark UI Solid bridge components for adapter loading, error, and\n * toast affordances. The bridge layer is additive; adapter contracts and\n * SolidJS primitives remain inherited from `@geenius/adapters/solidjs`.\n */\n\nimport { Field } from \"@ark-ui/solid/field\";\nimport { Progress } from \"@ark-ui/solid/progress\";\nimport { createToaster, Toast, Toaster } from \"@ark-ui/solid/toast\";\nimport { createEffect, ErrorBoundary, type JSX, Show } from \"solid-js\";\n\nexport type ToastBridgeType =\n  | \"error\"\n  | \"info\"\n  | \"loading\"\n  | \"success\"\n  | \"warning\";\nexport type ToastPlacement =\n  | \"top-start\"\n  | \"top\"\n  | \"top-end\"\n  | \"bottom-start\"\n  | \"bottom\"\n  | \"bottom-end\";\n\nexport interface ToastOptions {\n  id?: string;\n  title?: JSX.Element;\n  description?: JSX.Element;\n  duration?: number;\n  closable?: boolean;\n}\n\nexport interface ToastBridgeToaster {\n  error: (options: ToastOptions) => void;\n  info: (options: ToastOptions) => void;\n  loading: (options: ToastOptions) => void;\n  success: (options: ToastOptions) => void;\n  warning: (options: ToastOptions) => void;\n}\n\nconst defaultLoadingLabel = \"Loading adapter\";\nconst defaultErrorTitle = \"Adapter error\";\n\nfunction classNames(...classes: Array<string | undefined | false>): string {\n  return classes.filter(Boolean).join(\" \");\n}\n\nfunction clampProgress(value: number): number {\n  return Math.max(0, Math.min(100, value));\n}\n\nfunction errorMessage(error: unknown): string {\n  if (error instanceof Error) {\n    return error.message;\n  }\n\n  if (typeof error === \"string\") {\n    return error;\n  }\n\n  return \"The adapter bridge caught an unexpected error.\";\n}\n\nfunction emitToast(\n  toaster: ToastBridgeToaster,\n  type: ToastBridgeType,\n  options: ToastOptions,\n): void {\n  if (type === \"error\") {\n    toaster.error(options);\n    return;\n  }\n  if (type === \"loading\") {\n    toaster.loading(options);\n    return;\n  }\n  if (type === \"success\") {\n    toaster.success(options);\n    return;\n  }\n  if (type === \"warning\") {\n    toaster.warning(options);\n    return;\n  }\n\n  toaster.info(options);\n}\n\n/** Props for the Ark UI Solid loading bridge. */\nexport interface LoadingBridgeProps {\n  /** Whether the bridge should render the loading indicator. */\n  loading?: boolean;\n  /** Accessible label and visible text for the progress state. */\n  label?: string;\n  /** Optional determinate progress value from 0 to 100. */\n  value?: number;\n  /** Optional class merged into the Ark Progress root. */\n  class?: string;\n  /** Content rendered when `loading` is false. */\n  children?: JSX.Element;\n}\n\n/** Renders an Ark UI Progress primitive for async adapter loading states. */\nexport function LoadingBridge(props: LoadingBridgeProps): JSX.Element {\n  const label = () => props.label ?? defaultLoadingLabel;\n  const value = () =>\n    typeof props.value === \"number\" ? clampProgress(props.value) : undefined;\n\n  return (\n    <Show when={props.loading ?? true} fallback={props.children ?? null}>\n      <Progress.Root\n        value={value() ?? null}\n        max={100}\n        class={classNames(\n          \"gn-adapters-ark-loading inline-flex w-full flex-col gap-2\",\n          props.class,\n        )}\n        data-gn-adapters-bridge=\"loading\"\n      >\n        <div class=\"flex items-center justify-between gap-3 text-sm font-medium\">\n          <Progress.Label>{label()}</Progress.Label>\n          <Show when={value() !== undefined}>\n            <Progress.ValueText />\n          </Show>\n        </div>\n        <Progress.Track\n          aria-label={label()}\n          class=\"h-2 overflow-hidden rounded-full bg-muted\"\n        >\n          <Progress.Range class=\"h-full rounded-full bg-primary transition-[width]\" />\n        </Progress.Track>\n      </Progress.Root>\n    </Show>\n  );\n}\n\n/** Props for the Ark UI Solid error boundary bridge. */\nexport interface ErrorBoundaryBridgeProps {\n  /** Child tree protected by the SolidJS error boundary. */\n  children?: JSX.Element;\n  /** Optional externally supplied error, useful for async adapter failures. */\n  error?: unknown;\n  /** Heading rendered in the Ark field error surface. */\n  title?: string;\n  /** Optional class merged into the Ark Field root. */\n  class?: string;\n  /** Callback fired when the bridge observes an error. */\n  onError?: (error: unknown) => void;\n  /** Custom fallback renderer for teams that need a branded error surface. */\n  fallback?: (error: unknown, reset: () => void) => JSX.Element;\n}\n\nfunction ErrorFallback(props: {\n  error: unknown;\n  title?: string;\n  class?: string;\n  reset?: () => void;\n  onError?: (error: unknown) => void;\n}): JSX.Element {\n  createEffect(() => {\n    props.onError?.(props.error);\n  });\n\n  return (\n    <Field.Root\n      invalid\n      role=\"alert\"\n      class={classNames(\n        \"gn-adapters-ark-error rounded-md border border-destructive/30 bg-destructive/10 p-4 text-sm text-destructive\",\n        props.class,\n      )}\n      data-gn-adapters-bridge=\"error\"\n    >\n      <Field.Label class=\"font-semibold\">\n        {props.title ?? defaultErrorTitle}\n      </Field.Label>\n      <Field.ErrorText class=\"mt-1 block\">\n        {errorMessage(props.error)}\n      </Field.ErrorText>\n      <Show when={props.reset}>\n        {(reset) => (\n          <button\n            type=\"button\"\n            class=\"mt-3 inline-flex rounded-md border border-current px-3 py-1 text-xs font-medium\"\n            onClick={() => reset()()}\n          >\n            Retry\n          </button>\n        )}\n      </Show>\n    </Field.Root>\n  );\n}\n\nfunction CustomErrorFallback(props: {\n  error: unknown;\n  reset: () => void;\n  fallback: (error: unknown, reset: () => void) => JSX.Element;\n  onError?: (error: unknown) => void;\n}): JSX.Element {\n  createEffect(() => {\n    props.onError?.(props.error);\n  });\n\n  return <>{props.fallback(props.error, props.reset)}</>;\n}\n\n/** Wraps children in a SolidJS ErrorBoundary and renders failures with Ark UI Field primitives. */\nexport function ErrorBoundaryBridge(\n  props: ErrorBoundaryBridgeProps,\n): JSX.Element {\n  if (props.error !== undefined) {\n    return props.fallback ? (\n      <CustomErrorFallback\n        error={props.error}\n        reset={() => undefined}\n        fallback={props.fallback}\n        onError={props.onError}\n      />\n    ) : (\n      <ErrorFallback\n        error={props.error}\n        title={props.title}\n        class={props.class}\n        onError={props.onError}\n      />\n    );\n  }\n\n  return (\n    <ErrorBoundary\n      fallback={(error: unknown, reset) =>\n        props.fallback ? (\n          <CustomErrorFallback\n            error={error}\n            reset={reset}\n            fallback={props.fallback}\n            onError={props.onError}\n          />\n        ) : (\n          <ErrorFallback\n            error={error}\n            title={props.title}\n            class={props.class}\n            reset={reset}\n            onError={props.onError}\n          />\n        )\n      }\n    >\n      {props.children}\n    </ErrorBoundary>\n  );\n}\n\n/** Props for the Ark UI Solid toast bridge. */\nexport interface ToastBridgeProps {\n  /** Toast title emitted when the bridge is opened. */\n  title?: JSX.Element;\n  /** Toast body emitted when the bridge is opened. */\n  description?: JSX.Element;\n  /** Toast tone mapped to the Ark toaster store helpers. */\n  type?: ToastBridgeType;\n  /** Controls emission; defaults to true when title or description is present. */\n  open?: boolean;\n  /** Optional stable toast id for update/dedupe behavior. */\n  id?: string;\n  /** Toast auto-dismiss duration in milliseconds. */\n  duration?: number;\n  /** Whether Ark renders a close trigger for the toast. */\n  closable?: boolean;\n  /** Ark toaster placement. */\n  placement?: ToastPlacement;\n  /** Optional injected Ark toaster for app-level toast orchestration. */\n  toaster?: ToastBridgeToaster;\n  /** Optional class merged into the Ark Toaster region. */\n  class?: string;\n  /** Content rendered next to the toaster region. */\n  children?: JSX.Element;\n}\n\nconst toastToneClasses: Record<ToastBridgeType, string> = {\n  error: \"border-destructive/30 bg-destructive/10 text-destructive\",\n  info: \"border-border bg-background text-foreground\",\n  loading: \"border-border bg-background text-foreground\",\n  success: \"border-emerald-500/30 bg-emerald-50 text-emerald-950\",\n  warning: \"border-amber-500/40 bg-amber-50 text-amber-950\",\n};\n\nfunction isToastBridgeType(value: unknown): value is ToastBridgeType {\n  return typeof value === \"string\" && value in toastToneClasses;\n}\n\nfunction toastToneClass(value: unknown): string {\n  return toastToneClasses[isToastBridgeType(value) ? value : \"info\"];\n}\n\n/** Renders an Ark UI Toaster and optionally emits an adapter notification. */\nexport function ToastBridge(props: ToastBridgeProps): JSX.Element {\n  const arkToaster = createToaster({\n    placement: props.placement ?? \"bottom-end\",\n  });\n  const toaster = props.toaster ?? arkToaster;\n  let emittedKey: string | undefined;\n\n  createEffect(() => {\n    const shouldOpen =\n      props.open ??\n      (props.title !== undefined || props.description !== undefined);\n\n    if (!shouldOpen) {\n      return;\n    }\n\n    const type = props.type ?? \"info\";\n    const key = [\n      props.id ?? \"auto\",\n      type,\n      String(props.title ?? \"\"),\n      String(props.description ?? \"\"),\n    ].join(\":\");\n\n    if (emittedKey === key) {\n      return;\n    }\n\n    emittedKey = key;\n    emitToast(toaster, type, {\n      id: props.id ?? key,\n      title: props.title,\n      description: props.description,\n      duration: props.duration,\n      closable: props.closable ?? true,\n    });\n  });\n\n  return (\n    <>\n      {props.children}\n      <Show when={props.toaster === undefined}>\n        <Toaster\n          toaster={arkToaster}\n          class={classNames(\n            \"gn-adapters-ark-toaster fixed z-50 flex flex-col gap-2\",\n            props.class,\n          )}\n          data-gn-adapters-bridge=\"toast\"\n          data-gn-adapters-placement={props.placement ?? \"bottom-end\"}\n        >\n          {(toast) => (\n            <Toast.Root\n              class={classNames(\n                \"rounded-md border p-4 text-sm shadow-lg\",\n                toastToneClass(toast().type),\n              )}\n            >\n              <div class=\"grid gap-1\">\n                <Show when={toast().title}>\n                  <Toast.Title class=\"font-semibold\">\n                    {toast().title}\n                  </Toast.Title>\n                </Show>\n                <Show when={toast().description}>\n                  <Toast.Description class=\"text-muted-foreground\">\n                    {toast().description}\n                  </Toast.Description>\n                </Show>\n              </div>\n              <Show when={toast().closable}>\n                <Toast.CloseTrigger class=\"mt-3 text-xs font-medium\">\n                  Dismiss\n                </Toast.CloseTrigger>\n              </Show>\n            </Toast.Root>\n          )}\n        </Toaster>\n      </Show>\n    </>\n  );\n}\n","/**\n * @module classNames\n * @package @geenius/adapters/solidjs-ark\n * @description Small class-name combiner used by the Ark-native component\n * wrappers without adding another runtime dependency to the variant package.\n */\n\nexport function classNames(\n  ...classes: Array<string | false | null | undefined>\n): string {\n  return classes.filter(Boolean).join(\" \");\n}\n","/**\n * @module AdapterStatusBadge\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native SolidJS status badge for the adapter UI variant.\n */\n\nimport type { AdapterStatusType } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { classNames } from \"../lib/classNames\";\n\nconst STATUS_LABELS: Record<AdapterStatusType, string> = {\n  connected: \"Connected\",\n  disconnected: \"Disconnected\",\n  error: \"Error\",\n  initializing: \"Initializing\",\n};\n\nconst STATUS_CLASSES: Record<AdapterStatusType, string> = {\n  connected: \"border-emerald-500/30 bg-emerald-50 text-emerald-950\",\n  disconnected: \"border-slate-200 bg-slate-100 text-slate-600\",\n  error: \"border-red-500/30 bg-red-50 text-red-950\",\n  initializing: \"border-amber-500/40 bg-amber-50 text-amber-950\",\n};\n\nconst DOT_CLASSES: Record<AdapterStatusType, string> = {\n  connected: \"bg-emerald-500\",\n  disconnected: \"bg-slate-400\",\n  error: \"bg-red-500\",\n  initializing: \"bg-amber-500 animate-pulse motion-reduce:animate-none\",\n};\n\nconst SIZE_CLASSES = {\n  sm: \"px-2.5 py-0.5 text-[0.625rem]\",\n  md: \"px-3 py-1 text-xs\",\n} as const;\n\nconst DOT_SIZE_CLASSES = {\n  sm: \"h-1.5 w-1.5\",\n  md: \"h-2 w-2\",\n} as const;\n\n/**\n * Props for rendering the Ark UI Solid adapter status badge.\n *\n * @property status Shared adapter status vocabulary value to display.\n * @property showLabel Whether the human-readable label should be rendered.\n * @property size Visual size variant for the badge and status dot.\n * @property class Optional class name merged into the badge wrapper.\n */\nexport interface AdapterStatusBadgeProps {\n  status: AdapterStatusType;\n  showLabel?: boolean;\n  size?: \"sm\" | \"md\";\n  class?: string;\n}\n\n/** Renders a compact Ark-flavoured badge for adapter lifecycle state. */\nexport function AdapterStatusBadge(\n  props: AdapterStatusBadgeProps,\n): JSX.Element {\n  const size = () => props.size ?? \"sm\";\n\n  return (\n    <span\n      class={classNames(\n        \"inline-flex items-center gap-1.5 rounded-full border font-semibold uppercase transition-colors\",\n        STATUS_CLASSES[props.status],\n        SIZE_CLASSES[size()],\n        props.class,\n      )}\n      data-gn-adapters-ark-component=\"status-badge\"\n      data-status={props.status}\n    >\n      <span\n        aria-hidden=\"true\"\n        class={classNames(\n          \"rounded-full\",\n          DOT_CLASSES[props.status],\n          DOT_SIZE_CLASSES[size()],\n        )}\n      />\n      {props.showLabel !== false && <span>{STATUS_LABELS[props.status]}</span>}\n    </span>\n  );\n}\n","/**\n * @module AdapterCard\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native SolidJS adapter summary card for a single adapter\n * domain and provider status.\n */\n\nimport type { AdapterDomain, AdapterStatusInfo } from \"@geenius/adapters\";\nimport {\n  DOMAIN_DESCRIPTIONS,\n  DOMAIN_ICONS,\n  DOMAIN_LABELS,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { Show } from \"solid-js\";\nimport { classNames } from \"../lib/classNames\";\nimport { AdapterStatusBadge } from \"./AdapterStatusBadge\";\n\n/**\n * Props for rendering a single Ark Solid adapter summary card.\n *\n * @property domain Adapter domain represented by the card.\n * @property status Current provider health and metadata for the domain.\n * @property onClick Optional callback fired when the card is activated.\n * @property class Optional class name merged into the card container.\n */\nexport interface AdapterCardProps {\n  domain: AdapterDomain;\n  status: AdapterStatusInfo;\n  onClick?: () => void;\n  class?: string;\n}\n\n/** Renders an adapter domain summary with Ark variant data attributes. */\nexport function AdapterCard(props: AdapterCardProps): JSX.Element {\n  const label = () =>\n    `${DOMAIN_LABELS[props.domain]} adapter - ${props.status.status}`;\n  const className = () =>\n    classNames(\n      \"group relative flex w-full items-start gap-4 overflow-hidden rounded-md border border-slate-200 bg-white p-5 text-left text-slate-950 shadow-sm transition-colors\",\n      props.onClick\n        ? \"hover:border-slate-300 hover:bg-slate-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400/40\"\n        : \"cursor-default\",\n      props.class,\n    );\n\n  const content = () => (\n    <>\n      <div\n        aria-hidden=\"true\"\n        class=\"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-md border border-slate-200 bg-slate-100 text-2xl shadow-sm transition-transform duration-300 group-hover:scale-105\"\n      >\n        {DOMAIN_ICONS[props.domain]}\n      </div>\n      <div class=\"min-w-0 flex-1\">\n        <div class=\"flex items-center justify-between gap-2\">\n          <h3 class=\"truncate text-sm font-bold text-slate-950\">\n            {DOMAIN_LABELS[props.domain]}\n          </h3>\n          <AdapterStatusBadge status={props.status.status} />\n        </div>\n        <p class=\"mt-0.5 line-clamp-2 text-xs text-slate-500\">\n          {DOMAIN_DESCRIPTIONS[props.domain]}\n        </p>\n        <Show when={props.status.provider && props.status.provider !== \"none\"}>\n          <div class=\"mt-2 flex items-center gap-2\">\n            <span class=\"rounded-md border border-slate-200 bg-slate-100 px-2 py-0.5 text-[0.625rem] font-semibold text-slate-600\">\n              {props.status.provider}\n            </span>\n            <Show when={props.status.latency !== undefined}>\n              <span class=\"text-[0.625rem] text-slate-500\">\n                {props.status.latency}ms\n              </span>\n            </Show>\n          </div>\n        </Show>\n        <Show when={props.status.error}>\n          <p class=\"mt-1.5 truncate text-[0.625rem] text-red-700\">\n            {props.status.error}\n          </p>\n        </Show>\n      </div>\n    </>\n  );\n\n  if (!props.onClick) {\n    return (\n      <article\n        aria-label={label()}\n        class={className()}\n        data-gn-adapters-ark-component=\"adapter-card\"\n        data-status={props.status.status}\n      >\n        {content()}\n      </article>\n    );\n  }\n\n  return (\n    <button\n      aria-label={label()}\n      class={className()}\n      data-gn-adapters-ark-component=\"adapter-card\"\n      data-status={props.status.status}\n      onClick={props.onClick}\n      type=\"button\"\n    >\n      {content()}\n    </button>\n  );\n}\n","/**\n * @module AdapterConfigForm\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native SolidJS adapter configuration form using Ark Field\n * and RadioGroup primitives.\n */\n\nimport { Field } from \"@ark-ui/solid/field\";\nimport { RadioGroup } from \"@ark-ui/solid/radio-group\";\nimport type { AdapterDomain, DomainAdapterConfig } from \"@geenius/adapters\";\nimport { DOMAIN_LABELS, getProvidersForDomain } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { createEffect, createSignal, For, Show } from \"solid-js\";\nimport { classNames } from \"../lib/classNames\";\n\n/**\n * Props accepted by the Ark Solid adapter configuration form.\n *\n * @property domain Adapter domain being configured in the current dialog.\n * @property initialConfig Existing configuration values used to hydrate the form.\n * @property onSave Async or sync handler that persists the submitted configuration.\n * @property onCancel Optional callback invoked when the user dismisses the form.\n * @property class Optional class merged onto the form root.\n * @property titleId Optional identifier applied to the form title for dialog labelling.\n */\nexport interface AdapterConfigFormProps {\n  domain: AdapterDomain;\n  initialConfig?: DomainAdapterConfig;\n  onSave: (config: DomainAdapterConfig) => Promise<void> | void;\n  onCancel?: () => void;\n  class?: string;\n  titleId?: string;\n}\n\nfunction providerOptionClass(selected: boolean): string {\n  return classNames(\n    \"flex cursor-pointer items-start gap-3 rounded-md border p-4 text-left transition-colors\",\n    selected\n      ? \"border-slate-950 bg-slate-950 text-white shadow-sm\"\n      : \"border-slate-200 bg-white text-slate-950 hover:border-slate-300 hover:bg-slate-50\",\n  );\n}\n\nfunction tierClass(tier: \"pronto\" | \"lancio\" | \"studio\"): string {\n  if (tier === \"pronto\") {\n    return \"bg-emerald-100 text-emerald-900\";\n  }\n  if (tier === \"lancio\") {\n    return \"bg-amber-100 text-amber-950\";\n  }\n  return \"bg-slate-100 text-slate-600\";\n}\n\n/** Renders an Ark UI Solid provider and credential form. */\nexport function AdapterConfigForm(props: AdapterConfigFormProps): JSX.Element {\n  const providers = getProvidersForDomain(props.domain);\n  const [provider, setProvider] = createSignal(\n    props.initialConfig?.provider ?? providers[0]?.id ?? \"\",\n  );\n  const [apiKey, setApiKey] = createSignal(props.initialConfig?.apiKey ?? \"\");\n  const [baseUrl, setBaseUrl] = createSignal(\n    props.initialConfig?.baseUrl ?? \"\",\n  );\n  const [isSaving, setIsSaving] = createSignal(false);\n  const [error, setError] = createSignal<string | null>(null);\n  const selectedMeta = () => providers.find((entry) => entry.id === provider());\n\n  const needsApiKey = () => selectedMeta()?.requiresApiKey ?? false;\n  const needsBaseUrl = () => selectedMeta()?.requiresBaseUrl ?? false;\n\n  createEffect(() => {\n    if (!needsApiKey() && apiKey()) {\n      setApiKey(\"\");\n    }\n    if (!needsBaseUrl() && baseUrl()) {\n      setBaseUrl(\"\");\n    }\n  });\n\n  const handleSubmit = async (event: Event): Promise<void> => {\n    event.preventDefault();\n    setError(null);\n\n    if (!provider()) {\n      setError(\"Select a provider\");\n      return;\n    }\n\n    if (needsApiKey() && !apiKey().trim()) {\n      setError(\"API key is required\");\n      return;\n    }\n\n    setIsSaving(true);\n    try {\n      const config: DomainAdapterConfig = { provider: provider() };\n      if (needsApiKey() && apiKey().trim()) {\n        config.apiKey = apiKey().trim();\n      }\n      if (needsBaseUrl() && baseUrl().trim()) {\n        config.baseUrl = baseUrl().trim();\n      }\n      await props.onSave(config);\n    } catch {\n      setError(\"Failed to save\");\n    } finally {\n      setIsSaving(false);\n    }\n  };\n\n  return (\n    <form\n      class={classNames(\n        \"space-y-6 rounded-md border border-slate-200 bg-white p-6 text-slate-950 shadow-sm\",\n        props.class,\n      )}\n      data-gn-adapters-ark-component=\"adapter-config-form\"\n      noValidate\n      onSubmit={handleSubmit}\n    >\n      <div>\n        <h3 class=\"text-lg font-bold text-slate-950\" id={props.titleId}>\n          Configure {DOMAIN_LABELS[props.domain]}\n        </h3>\n        <p class=\"mt-1 text-sm text-slate-500\">\n          Select and configure your preferred provider.\n        </p>\n      </div>\n\n      <Show when={error()}>\n        <div\n          class=\"rounded-md border border-red-500/30 bg-red-50 px-4 py-3 text-sm text-red-950\"\n          role=\"alert\"\n        >\n          {error()}\n        </div>\n      </Show>\n\n      <RadioGroup.Root\n        class=\"space-y-3\"\n        onValueChange={(details) => {\n          if (details.value) {\n            setProvider(details.value);\n          }\n        }}\n        value={provider()}\n      >\n        <RadioGroup.Label class=\"block text-xs font-semibold uppercase text-slate-500\">\n          Provider\n        </RadioGroup.Label>\n        <div class=\"grid gap-2 sm:grid-cols-2\">\n          <For each={providers}>\n            {(providerMeta) => (\n              <RadioGroup.Item\n                class={providerOptionClass(provider() === providerMeta.id)}\n                onClick={() => setProvider(providerMeta.id)}\n                value={providerMeta.id}\n              >\n                <RadioGroup.ItemHiddenInput />\n                <RadioGroup.ItemControl class=\"mt-0.5 flex h-4 w-4 items-center justify-center rounded-full border border-current\">\n                  <RadioGroup.Indicator class=\"h-2 w-2 rounded-full bg-current\" />\n                </RadioGroup.ItemControl>\n                <RadioGroup.ItemText class=\"min-w-0 flex-1\">\n                  <span class=\"block text-sm font-bold\">\n                    {providerMeta.name}\n                  </span>\n                  <span class=\"mt-1 block text-xs leading-relaxed opacity-75\">\n                    {providerMeta.description}\n                  </span>\n                  <span\n                    class={classNames(\n                      \"mt-2 inline-flex rounded px-2 py-0.5 text-[0.5rem] font-bold uppercase\",\n                      tierClass(providerMeta.tier),\n                    )}\n                  >\n                    {providerMeta.tier}\n                  </span>\n                </RadioGroup.ItemText>\n              </RadioGroup.Item>\n            )}\n          </For>\n        </div>\n      </RadioGroup.Root>\n\n      <Show when={needsApiKey()}>\n        <Field.Root class=\"space-y-1.5\" required>\n          <Field.Label class=\"block text-xs font-semibold uppercase text-slate-500\">\n            API Key\n          </Field.Label>\n          <Field.Input\n            autocomplete=\"off\"\n            class=\"w-full rounded-md border border-slate-200 bg-white px-4 py-3 text-sm text-slate-950 shadow-sm outline-none transition-colors placeholder:text-slate-400 focus:border-slate-400 focus:ring-2 focus:ring-slate-400/20\"\n            onInput={(event) => setApiKey(event.currentTarget.value)}\n            placeholder={`Enter ${selectedMeta()?.name ?? provider() ?? \"provider\"} API key`}\n            type=\"password\"\n            value={apiKey()}\n          />\n        </Field.Root>\n      </Show>\n\n      <Show when={needsBaseUrl()}>\n        <Field.Root class=\"space-y-1.5\">\n          <Field.Label class=\"block text-xs font-semibold uppercase text-slate-500\">\n            Base URL\n          </Field.Label>\n          <Field.Input\n            class=\"w-full rounded-md border border-slate-200 bg-white px-4 py-3 text-sm text-slate-950 shadow-sm outline-none transition-colors placeholder:text-slate-400 focus:border-slate-400 focus:ring-2 focus:ring-slate-400/20\"\n            onInput={(event) => setBaseUrl(event.currentTarget.value)}\n            placeholder=\"https://...\"\n            type=\"url\"\n            value={baseUrl()}\n          />\n        </Field.Root>\n      </Show>\n\n      <div class=\"flex justify-end gap-3 pt-2\">\n        <Show when={props.onCancel !== undefined}>\n          <button\n            class=\"rounded-md px-5 py-2.5 text-sm font-semibold text-slate-500 transition-colors hover:text-slate-950\"\n            onClick={() => props.onCancel?.()}\n            type=\"button\"\n          >\n            Cancel\n          </button>\n        </Show>\n        <button\n          class=\"inline-flex items-center justify-center rounded-md border border-slate-950 bg-slate-950 px-8 py-3 text-sm font-bold text-white shadow-sm transition-colors hover:bg-slate-800 disabled:pointer-events-none disabled:opacity-50\"\n          disabled={isSaving() || !provider()}\n          type=\"submit\"\n        >\n          {isSaving() ? \"Saving...\" : \"Save Configuration\"}\n        </button>\n      </div>\n    </form>\n  );\n}\n","/**\n * @module AdapterList\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native searchable SolidJS adapter grid backed by the\n * shared SolidJS adapter provider state.\n */\n\nimport { Field } from \"@ark-ui/solid/field\";\nimport type { AdapterDomain, AdapterStatusType } from \"@geenius/adapters\";\nimport { ADAPTER_DOMAINS, DOMAIN_LABELS } from \"@geenius/adapters\";\nimport { createAdapters } from \"@geenius/adapters/solidjs\";\nimport type { JSX } from \"solid-js\";\nimport { createMemo, createSignal, For, Show } from \"solid-js\";\nimport { LoadingBridge } from \"../bridges\";\nimport { classNames } from \"../lib/classNames\";\nimport { AdapterCard } from \"./AdapterCard\";\n\n/**\n * Props for rendering the Ark Solid adapter list.\n *\n * @property onSelect Optional callback invoked when a domain card is selected.\n * @property filterStatus Optional status filter applied before rendering the grid.\n * @property class Optional class name merged into the outer wrapper.\n */\nexport interface AdapterListProps {\n  onSelect?: (domain: AdapterDomain) => void;\n  filterStatus?: AdapterStatusType;\n  class?: string;\n}\n\n/** Renders a searchable Ark Solid adapter list. */\nexport function AdapterList(props: AdapterListProps): JSX.Element {\n  const ctx = createAdapters();\n  const [search, setSearch] = createSignal(\"\");\n\n  const filtered = createMemo(() => {\n    let domains = [...ADAPTER_DOMAINS];\n    const query = search().toLowerCase();\n\n    if (query) {\n      domains = domains.filter((domain) => {\n        return (\n          (DOMAIN_LABELS[domain] ?? domain).toLowerCase().includes(query) ||\n          domain.includes(query) ||\n          (ctx.statuses[domain]?.provider?.toLowerCase().includes(query) ??\n            false)\n        );\n      });\n    }\n\n    if (props.filterStatus) {\n      domains = domains.filter(\n        (domain) => ctx.statuses[domain]?.status === props.filterStatus,\n      );\n    }\n\n    return domains;\n  });\n\n  return (\n    <Show\n      fallback={\n        <div\n          class={classNames(\"grid gap-3\", props.class)}\n          data-gn-adapters-ark-component=\"adapter-list\"\n        >\n          <LoadingBridge label=\"Loading adapters\" value={64} />\n        </div>\n      }\n      when={!ctx.isLoading}\n    >\n      <div class={props.class} data-gn-adapters-ark-component=\"adapter-list\">\n        <Field.Root class=\"mb-4\">\n          <Field.Label class=\"sr-only\">Search adapters</Field.Label>\n          <Field.Input\n            aria-label=\"Search adapters\"\n            class=\"w-full rounded-md border border-slate-200 bg-white px-4 py-3 text-sm text-slate-950 shadow-sm outline-none transition-colors placeholder:text-slate-400 focus:border-slate-400 focus:ring-2 focus:ring-slate-400/20\"\n            onInput={(event) => setSearch(event.currentTarget.value)}\n            placeholder=\"Search adapters...\"\n            type=\"search\"\n            value={search()}\n          />\n        </Field.Root>\n\n        <Show\n          fallback={\n            <div class=\"rounded-md border border-slate-200 bg-slate-50 p-8 text-center\">\n              <p class=\"text-sm font-medium text-slate-500\">\n                {search()\n                  ? \"No adapters match your search\"\n                  : \"No adapters configured\"}\n              </p>\n            </div>\n          }\n          when={filtered().length > 0}\n        >\n          <ul\n            aria-label=\"Adapter list\"\n            class=\"m-0 grid list-none gap-3 p-0 sm:grid-cols-2\"\n          >\n            <For each={filtered()}>\n              {(domain) => (\n                <li>\n                  <AdapterCard\n                    domain={domain}\n                    onClick={\n                      props.onSelect\n                        ? () => props.onSelect?.(domain)\n                        : undefined\n                    }\n                    status={ctx.statuses[domain]}\n                  />\n                </li>\n              )}\n            </For>\n          </ul>\n        </Show>\n      </div>\n    </Show>\n  );\n}\n","/**\n * @module AdapterDetailPage\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native SolidJS adapter detail page for a single provider\n * domain.\n */\n\nimport { Progress } from \"@ark-ui/solid/progress\";\nimport type { AdapterDomain } from \"@geenius/adapters\";\nimport {\n  DOMAIN_DESCRIPTIONS,\n  DOMAIN_ICONS,\n  DOMAIN_LABELS,\n  getProvidersForDomain,\n} from \"@geenius/adapters\";\nimport { createAdapterStatus } from \"@geenius/adapters/solidjs\";\nimport type { JSX } from \"solid-js\";\nimport { createSignal, For, Show } from \"solid-js\";\nimport { AdapterConfigForm } from \"../components/AdapterConfigForm\";\nimport { AdapterStatusBadge } from \"../components/AdapterStatusBadge\";\nimport { classNames } from \"../lib/classNames\";\n\n/**\n * Props for rendering the Ark Solid single-domain adapter detail page.\n *\n * @property domain Adapter domain whose provider details should be displayed.\n * @property onBack Optional callback for returning to the dashboard view.\n * @property class Optional class name merged into the page container.\n */\nexport interface AdapterDetailPageProps {\n  domain: AdapterDomain;\n  onBack?: () => void;\n  class?: string;\n}\n\n/** Renders the Ark Solid adapter detail page for one adapter domain. */\nexport function AdapterDetailPage(props: AdapterDetailPageProps): JSX.Element {\n  const status = createAdapterStatus(props.domain);\n  const providers = getProvidersForDomain(props.domain);\n  const [isEditing, setIsEditing] = createSignal(false);\n  const latency = () => status().latency ?? 0;\n  const latencyPercent = () => Math.min(100, (latency() / 1000) * 100);\n\n  return (\n    <div\n      class={classNames(\n        \"mx-auto max-w-3xl space-y-8 text-slate-950\",\n        props.class,\n      )}\n      data-gn-adapters-ark-page=\"adapter-detail\"\n    >\n      <Show when={props.onBack !== undefined}>\n        <button\n          class=\"inline-flex items-center gap-1.5 text-sm text-slate-500 transition-colors hover:text-slate-950\"\n          onClick={props.onBack}\n          type=\"button\"\n        >\n          Back to Adapters\n        </button>\n      </Show>\n\n      <div class=\"flex items-start gap-5\">\n        <div\n          aria-hidden=\"true\"\n          class=\"flex h-16 w-16 items-center justify-center rounded-md border border-slate-200 bg-white text-3xl shadow-sm\"\n        >\n          {DOMAIN_ICONS[props.domain]}\n        </div>\n        <div class=\"flex-1\">\n          <div class=\"flex flex-wrap items-center gap-3\">\n            <h1 class=\"text-2xl font-extrabold text-slate-950\">\n              {DOMAIN_LABELS[props.domain]}\n            </h1>\n            <AdapterStatusBadge status={status().status} />\n          </div>\n          <p class=\"mt-1 text-sm text-slate-500\">\n            {DOMAIN_DESCRIPTIONS[props.domain]}\n          </p>\n        </div>\n      </div>\n\n      <div class=\"rounded-md border border-slate-200 bg-white p-6 shadow-sm\">\n        <h2 class=\"mb-4 text-xs font-semibold uppercase text-slate-500\">\n          Current Status\n        </h2>\n        <div class=\"grid gap-4 sm:grid-cols-3\">\n          <div>\n            <p class=\"text-[0.625rem] uppercase text-slate-500\">Provider</p>\n            <p class=\"mt-0.5 text-sm font-semibold text-slate-950\">\n              {status().provider !== \"none\" ? status().provider : \"None\"}\n            </p>\n          </div>\n          <div>\n            <p class=\"text-[0.625rem] uppercase text-slate-500\">Status</p>\n            <p class=\"mt-0.5\">\n              <AdapterStatusBadge status={status().status} />\n            </p>\n          </div>\n          <div>\n            <p class=\"text-[0.625rem] uppercase text-slate-500\">Last Checked</p>\n            <p class=\"mt-0.5 text-sm text-slate-500\">\n              <Show fallback={\"Not checked\"} when={status().lastCheckedAt}>\n                {(lastCheckedAt) =>\n                  new Date(lastCheckedAt()).toLocaleTimeString()\n                }\n              </Show>\n            </p>\n          </div>\n        </div>\n\n        <Show when={status().error}>\n          <div class=\"mt-4 rounded-md border border-red-500/30 bg-red-50 px-4 py-3 text-sm text-red-950\">\n            <strong>Error:</strong> {status().error}\n          </div>\n        </Show>\n\n        <Show when={status().latency !== undefined}>\n          <Progress.Root class=\"mt-4\" max={100} value={latencyPercent()}>\n            <div class=\"mb-1 flex items-center justify-between gap-3\">\n              <Progress.Label class=\"text-[0.625rem] uppercase text-slate-500\">\n                Latency\n              </Progress.Label>\n              <span class=\"text-xs text-slate-500\">{latency()}ms</span>\n            </div>\n            <Progress.Track\n              aria-label={`${DOMAIN_LABELS[props.domain]} latency`}\n              class=\"h-2 w-full overflow-hidden rounded-full bg-slate-100\"\n            >\n              <Progress.Range\n                class={classNames(\n                  \"h-full rounded-full transition-all\",\n                  latency() < 100\n                    ? \"bg-emerald-500\"\n                    : latency() < 500\n                      ? \"bg-amber-500\"\n                      : \"bg-red-500\",\n                )}\n              />\n            </Progress.Track>\n          </Progress.Root>\n        </Show>\n      </div>\n\n      <div class=\"rounded-md border border-slate-200 bg-white p-6 shadow-sm\">\n        <div class=\"mb-4 flex items-center justify-between\">\n          <h2 class=\"text-xs font-semibold uppercase text-slate-500\">\n            Available Providers\n          </h2>\n          <span class=\"text-xs text-slate-500\">\n            {providers.length} providers\n          </span>\n        </div>\n        <div class=\"divide-y divide-slate-200\">\n          <For each={providers}>\n            {(provider) => (\n              <div class=\"flex items-center justify-between gap-4 py-3 first:pt-0 last:pb-0\">\n                <div>\n                  <p class=\"text-sm font-semibold text-slate-950\">\n                    {provider.name}\n                  </p>\n                  <p class=\"text-xs text-slate-500\">{provider.description}</p>\n                </div>\n                <span\n                  class={classNames(\n                    \"self-start rounded px-2 py-0.5 text-[0.625rem] font-bold uppercase\",\n                    provider.tier === \"pronto\"\n                      ? \"bg-emerald-100 text-emerald-900\"\n                      : provider.tier === \"lancio\"\n                        ? \"bg-amber-100 text-amber-950\"\n                        : \"bg-slate-100 text-slate-600\",\n                  )}\n                >\n                  {provider.tier}\n                </span>\n              </div>\n            )}\n          </For>\n        </div>\n      </div>\n\n      <Show\n        fallback={\n          <button\n            class=\"w-full rounded-md border border-dashed border-slate-200 bg-white/60 p-6 text-center text-sm text-slate-500 transition-colors hover:border-slate-400 hover:text-slate-950\"\n            onClick={() => setIsEditing(true)}\n            type=\"button\"\n          >\n            Configure {DOMAIN_LABELS[props.domain]} Adapter\n          </button>\n        }\n        when={isEditing()}\n      >\n        <AdapterConfigForm\n          domain={props.domain}\n          onCancel={() => setIsEditing(false)}\n          onSave={async () => {\n            setIsEditing(false);\n          }}\n        />\n      </Show>\n    </div>\n  );\n}\n","/**\n * @module AdaptersPage\n * @package @geenius/adapters/solidjs-ark\n * @description Ark-native SolidJS adapters overview page using Ark Dialog for\n * the configuration workflow.\n */\n\nimport { Dialog } from \"@ark-ui/solid/dialog\";\nimport type {\n  AdapterDomain,\n  AdapterStatusType,\n  DomainAdapterConfig,\n} from \"@geenius/adapters\";\nimport {\n  ADAPTER_DOMAINS,\n  ADAPTER_STATUSES,\n  DOMAIN_LABELS,\n  getDomainConfig,\n  isAdaptersConfigured,\n} from \"@geenius/adapters\";\nimport { createAdapters } from \"@geenius/adapters/solidjs\";\nimport type { JSX } from \"solid-js\";\nimport { createSignal, createUniqueId, For, Show } from \"solid-js\";\nimport { LoadingBridge } from \"../bridges\";\nimport { AdapterConfigForm } from \"../components/AdapterConfigForm\";\nimport { AdapterList } from \"../components/AdapterList\";\nimport { AdapterStatusBadge } from \"../components/AdapterStatusBadge\";\nimport { classNames } from \"../lib/classNames\";\n\ntype RegistryEntry = {\n  domain: AdapterDomain;\n  provider: string;\n  status: AdapterStatusType;\n};\n\n/**\n * Props accepted by the Ark Solid adapters overview page.\n *\n * @property onNavigateDetail Optional callback used instead of opening the inline modal.\n * @property onConfigure Optional callback invoked with submitted adapter configuration.\n * @property class Optional class merged onto the page root.\n * @property configByDomain Optional configuration snapshot used to hydrate modal forms.\n * @property registryEntries Optional adapter registry snapshot rendered above the grid.\n */\nexport interface AdaptersPageProps {\n  onNavigateDetail?: (domain: AdapterDomain) => void;\n  onConfigure?: (\n    domain: AdapterDomain,\n    config: DomainAdapterConfig,\n  ) => Promise<void> | void;\n  class?: string;\n  configByDomain?: Partial<Record<AdapterDomain, DomainAdapterConfig>>;\n  registryEntries?: RegistryEntry[];\n}\n\n/** Renders the Ark Solid adapter management dashboard. */\nexport function AdaptersPage(props: AdaptersPageProps): JSX.Element {\n  const ctx = createAdapters();\n  const [selectedDomain, setSelectedDomain] =\n    createSignal<AdapterDomain | null>(null);\n  const [filterStatus, setFilterStatus] = createSignal<\n    AdapterStatusType | undefined\n  >();\n  const modalTitleId = createUniqueId();\n  const registryEntries = () => props.registryEntries ?? [];\n\n  const connected = () =>\n    ADAPTER_DOMAINS.filter(\n      (domain) => ctx.statuses[domain]?.status === \"connected\",\n    ).length;\n  const errors = () =>\n    ADAPTER_DOMAINS.filter((domain) => ctx.statuses[domain]?.status === \"error\")\n      .length;\n  const initialConfigFor = (domain: AdapterDomain) =>\n    props.configByDomain?.[domain] ??\n    (isAdaptersConfigured() ? getDomainConfig(domain) : undefined) ??\n    undefined;\n\n  return (\n    <Show\n      fallback={\n        <div\n          class={classNames(\"mx-auto max-w-4xl\", props.class)}\n          data-gn-adapters-ark-page=\"adapters\"\n        >\n          <LoadingBridge class=\"min-h-72\" label=\"Loading adapters\" value={72} />\n        </div>\n      }\n      when={!ctx.isLoading}\n    >\n      <div\n        class={classNames(\n          \"mx-auto max-w-4xl space-y-8 text-slate-950\",\n          props.class,\n        )}\n        data-gn-adapters-ark-page=\"adapters\"\n      >\n        <header class=\"space-y-1\">\n          <h1 class=\"text-2xl font-extrabold text-slate-950\">Adapters</h1>\n          <p class=\"text-sm text-slate-500\">\n            Manage your infrastructure adapters - database, auth, AI, storage,\n            payments, and admin.\n          </p>\n        </header>\n\n        <section class=\"grid gap-3 sm:grid-cols-3\">\n          <div class=\"rounded-md border border-slate-200 bg-white p-4 shadow-sm\">\n            <p class=\"text-xs font-semibold uppercase text-slate-500\">Total</p>\n            <p class=\"mt-1 text-2xl font-extrabold text-slate-950\">\n              {ADAPTER_DOMAINS.length}\n            </p>\n            <p class=\"text-[0.625rem] text-slate-500\">adapter domains</p>\n          </div>\n          <div class=\"rounded-md border border-emerald-500/30 bg-emerald-50 p-4 shadow-sm\">\n            <p class=\"text-xs font-semibold uppercase text-emerald-900\">\n              Connected\n            </p>\n            <p class=\"mt-1 text-2xl font-extrabold text-emerald-950\">\n              {connected()}\n            </p>\n            <p class=\"text-[0.625rem] text-emerald-900/70\">active adapters</p>\n          </div>\n          <Show when={errors() > 0}>\n            <div class=\"rounded-md border border-red-500/30 bg-red-50 p-4 shadow-sm\">\n              <p class=\"text-xs font-semibold uppercase text-red-900\">Errors</p>\n              <p class=\"mt-1 text-2xl font-extrabold text-red-950\">\n                {errors()}\n              </p>\n              <p class=\"text-[0.625rem] text-red-900/70\">need attention</p>\n            </div>\n          </Show>\n        </section>\n\n        <Show when={registryEntries().length > 0}>\n          <section class=\"rounded-md border border-slate-200 bg-white p-4 shadow-sm\">\n            <div class=\"flex flex-wrap items-center justify-between gap-3\">\n              <div>\n                <p class=\"text-xs font-semibold uppercase text-slate-500\">\n                  Adapter Registry\n                </p>\n                <p class=\"text-sm text-slate-500\">\n                  Live adapter registry entries.\n                </p>\n              </div>\n              <div class=\"flex gap-3 text-xs text-slate-500\">\n                <span>{registryEntries().length} entries</span>\n              </div>\n            </div>\n            <div class=\"mt-4 grid gap-2 sm:grid-cols-2\">\n              <For each={registryEntries()}>\n                {(entry) => (\n                  <div class=\"rounded-md border border-slate-200 bg-slate-50 px-4 py-3\">\n                    <div class=\"flex items-center justify-between gap-3\">\n                      <div>\n                        <p class=\"text-sm font-semibold text-slate-950\">\n                          {entry.domain}\n                        </p>\n                        <p class=\"text-xs text-slate-500\">{entry.provider}</p>\n                      </div>\n                      <AdapterStatusBadge status={entry.status} />\n                    </div>\n                  </div>\n                )}\n              </For>\n            </div>\n          </section>\n        </Show>\n\n        <section class=\"flex flex-wrap items-center gap-2\">\n          <button\n            aria-pressed={!filterStatus()}\n            class={classNames(\n              \"rounded-md border px-3 py-1.5 text-xs font-semibold transition-colors\",\n              !filterStatus()\n                ? \"border-slate-950 bg-slate-950 text-white\"\n                : \"border-slate-200 bg-white text-slate-500 hover:text-slate-950\",\n            )}\n            onClick={() => setFilterStatus(undefined)}\n            type=\"button\"\n          >\n            All\n          </button>\n          <For each={[...ADAPTER_STATUSES]}>\n            {(status) => (\n              <button\n                aria-pressed={filterStatus() === status}\n                class={classNames(\n                  \"flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-xs font-semibold transition-colors\",\n                  filterStatus() === status\n                    ? \"border-slate-950 bg-slate-950 text-white\"\n                    : \"border-slate-200 bg-white text-slate-500 hover:text-slate-950\",\n                )}\n                onClick={() => setFilterStatus(status)}\n                type=\"button\"\n              >\n                <AdapterStatusBadge status={status} showLabel={false} />\n                {status}\n              </button>\n            )}\n          </For>\n        </section>\n\n        <AdapterList\n          filterStatus={filterStatus()}\n          onSelect={(domain) => {\n            if (props.onNavigateDetail) {\n              props.onNavigateDetail(domain);\n            } else {\n              setSelectedDomain(domain);\n            }\n          }}\n        />\n\n        <Show when={selectedDomain()}>\n          {(domain) => (\n            <Dialog.Root\n              modal\n              onOpenChange={(details) => {\n                if (!details.open) {\n                  setSelectedDomain(null);\n                }\n              }}\n              open\n            >\n              <Dialog.Backdrop class=\"fixed inset-0 z-50 bg-slate-950/40 backdrop-blur-sm\" />\n              <Dialog.Positioner class=\"fixed inset-0 z-50 flex items-center justify-center px-4 py-6\">\n                <Dialog.Content class=\"relative w-full max-w-lg outline-none\">\n                  <Dialog.Title class=\"sr-only\" id={modalTitleId}>\n                    Configure {DOMAIN_LABELS[domain()]}\n                  </Dialog.Title>\n                  <Dialog.CloseTrigger\n                    aria-label=\"Close adapter configuration\"\n                    class=\"absolute right-3 top-3 z-10 rounded-md border border-slate-200 bg-white px-2 py-1 text-xs font-semibold text-slate-500 shadow-sm hover:text-slate-950 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400/40\"\n                  >\n                    Close\n                  </Dialog.CloseTrigger>\n                  <AdapterConfigForm\n                    domain={domain()}\n                    initialConfig={initialConfigFor(domain())}\n                    onCancel={() => setSelectedDomain(null)}\n                    onSave={async (config) => {\n                      await props.onConfigure?.(domain(), config);\n                      setSelectedDomain(null);\n                    }}\n                    titleId={`${modalTitleId}-form`}\n                  />\n                </Dialog.Content>\n              </Dialog.Positioner>\n            </Dialog.Root>\n          )}\n        </Show>\n      </div>\n    </Show>\n  );\n}\n"]}