{"version":3,"sources":["../src/lib/cx.ts","../src/components/AdapterStatusBadge.tsx","../src/components/AdapterCard.tsx","../src/components/AdapterConfigForm.tsx","../src/provider/index.tsx","../src/primitives/index.ts","../src/components/AdapterList.tsx","../src/pages/PageBoundaryFallback.tsx","../src/pages/AdapterDetailPage.tsx","../src/pages/AdaptersPage.tsx"],"names":["jsx","jsxs","DOMAIN_LABELS","Fragment","DOMAIN_ICONS","DOMAIN_DESCRIPTIONS","Show","getProvidersForDomain","createMemo","createSignal","createEffect","For","createContext","ADAPTER_DOMAINS","createLocalStorageDbAdapter","createLocalStorageAuthAdapter","createLocalStorageAiAdapter","createLocalStorageFileAdapter","createLocalStorageAdminAdapter","createConsoleLoggerAdapter","createLocalStoragePaymentsAdapter","createNoopPaymentsAdapter","adapters","isAdaptersConfigured","getDomainConfig","AdapterError","createStore","onMount","onCleanup","AdapterContextError","useContext","ErrorBoundary","createUniqueId","ADAPTER_STATUSES"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @module cx\n * @package @geenius/adapters/solidjs-css\n * @description Provides the lightweight class name composition helper used by\n * the SolidJS CSS variant. The helper keeps conditional CSS class assembly\n * terse without introducing Tailwind-specific dependencies.\n *\n * @param classes Class name strings where falsy values are ignored\n * @returns A space-delimited class name string containing only truthy values\n *\n * @example\n * ```ts\n * cx('button', 'button-primary') // 'button button-primary'\n * cx('button', isActive() && 'button-active') // 'button button-active' or 'button'\n * cx('base', null, undefined, false, 'modifier') // 'base modifier'\n * ```\n */\nexport function cx(...classes: (string | false | null | undefined)[]): string {\n  return classes.filter(Boolean).join(\" \");\n}\n","/**\n * @module AdapterStatusBadge\n * @package @geenius/adapters/solidjs-css\n * @description Renders the vanilla CSS adapter status badge for the SolidJS\n * CSS variant. The badge exposes the shared adapter status vocabulary in a\n * compact, themeable visual treatment.\n */\n\nimport type { AdapterStatusType } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { cx } from \"../lib/cx\";\n\nconst LABELS: Record<AdapterStatusType, string> = {\n  connected: \"Connected\",\n  disconnected: \"Disconnected\",\n  error: \"Error\",\n  initializing: \"Initializing\",\n};\n\n/**\n * Props for rendering the SolidJS CSS 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 class Optional class name merged into the badge wrapper.\n */\nexport interface AdapterStatusBadgeProps {\n  status: AdapterStatusType;\n  showLabel?: boolean;\n  class?: string;\n}\n\n/**\n * Renders a compact SolidJS CSS badge for the current adapter lifecycle state.\n *\n * @param props Badge props including the status token and optional label visibility.\n * @returns A styled badge element that mirrors the shared adapter status taxonomy.\n */\nexport function AdapterStatusBadge(\n  props: AdapterStatusBadgeProps,\n): JSX.Element {\n  if (props.showLabel === false) {\n    return (\n      <span\n        class={cx(\n          \"gn-adapters-badge\",\n          `gn-adapters-badge--${props.status}`,\n          props.class,\n        )}\n        aria-label={LABELS[props.status]}\n        role=\"img\"\n      >\n        <span aria-hidden=\"true\" class=\"gn-adapters-badge__dot\" />\n      </span>\n    );\n  }\n\n  return (\n    <span\n      class={cx(\n        \"gn-adapters-badge\",\n        `gn-adapters-badge--${props.status}`,\n        props.class,\n      )}\n    >\n      <span class=\"gn-adapters-badge__dot\" />\n      <span>{LABELS[props.status]}</span>\n    </span>\n  );\n}\n","/**\n * @module AdapterCard\n * @package @geenius/adapters/solidjs-css\n * @description Renders the vanilla CSS adapter summary card for the SolidJS\n * CSS variant. The card surfaces provider status, latency, and domain metadata\n * for one adapter domain in the dashboard views.\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 { cx } from \"../lib/cx\";\nimport { AdapterStatusBadge } from \"./AdapterStatusBadge\";\n\n/**\n * Props for rendering a single adapter summary card in the SolidJS CSS dashboard grid.\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/**\n * Renders a clickable SolidJS CSS summary card for one adapter domain.\n *\n * @param props Card props including the adapter domain, status payload, and click handler.\n * @returns A button element styled by the vanilla CSS variant.\n */\nexport function AdapterCard(props: AdapterCardProps): JSX.Element {\n  const ariaLabel = () =>\n    `${DOMAIN_LABELS[props.domain]} adapter - ${props.status.status}`;\n\n  const body = (\n    <>\n      <div aria-hidden=\"true\" class=\"gn-adapters-card__icon\">\n        {DOMAIN_ICONS[props.domain]}\n      </div>\n      <div class=\"gn-adapters-card__body\">\n        <div class=\"gn-adapters-card__header\">\n          <h3 class=\"gn-adapters-card__name\">{DOMAIN_LABELS[props.domain]}</h3>\n          <AdapterStatusBadge status={props.status.status} />\n        </div>\n        <p class=\"gn-adapters-card__desc\">\n          {DOMAIN_DESCRIPTIONS[props.domain]}\n        </p>\n        <Show when={props.status.provider && props.status.provider !== \"none\"}>\n          <div class=\"gn-adapters-card__meta\">\n            <span class=\"gn-adapters-card__provider\">\n              {props.status.provider}\n            </span>\n            <Show when={props.status.latency != null}>\n              <span class=\"gn-adapters-card__latency\">\n                {props.status.latency}ms\n              </span>\n            </Show>\n          </div>\n        </Show>\n        <Show when={props.status.error}>\n          <p class=\"gn-adapters-card__error\">{props.status.error}</p>\n        </Show>\n      </div>\n    </>\n  );\n\n  // Static branch (no click handler): render an <article>, not a focusable\n  // no-op button. Matches the SolidJS and React-CSS reference behavior and\n  // UI_PROTOCOL §7 (don't expose decorative elements as buttons).\n  if (!props.onClick) {\n    return (\n      <article\n        aria-label={ariaLabel()}\n        class={cx(\"gn-adapters-card\", props.class)}\n      >\n        {body}\n      </article>\n    );\n  }\n\n  return (\n    <button\n      type=\"button\"\n      onClick={() => props.onClick?.()}\n      class={cx(\"gn-adapters-card\", props.class)}\n      aria-label={ariaLabel()}\n    >\n      {body}\n    </button>\n  );\n}\n","/**\n * @module AdapterConfigForm\n * @package @geenius/adapters/solidjs-css\n * @description Renders the vanilla CSS adapter configuration form for the\n * SolidJS CSS variant. The component keeps provider selection and credential\n * inputs local while delegating persistence to the caller.\n */\n\nimport type { AdapterDomain, DomainAdapterConfig } from \"@geenius/adapters\";\nimport { DOMAIN_LABELS, getProvidersForDomain } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { createEffect, createMemo, createSignal, For, Show } from \"solid-js\";\nimport { cx } from \"../lib/cx\";\n\ninterface ProviderOptionField {\n  key: string;\n  label: string;\n  description: string;\n  placeholder?: string;\n  inputMode?: \"text\" | \"numeric\";\n}\n\nconst PROVIDER_OPTION_FIELDS: Partial<\n  Record<AdapterDomain, Record<string, ProviderOptionField[]>>\n> = {\n  db: {\n    convex: [\n      {\n        key: \"deployment\",\n        label: \"Deployment\",\n        description: \"Convex deployment or project slug.\",\n        placeholder: \"team:project\",\n      },\n    ],\n    neon: [\n      {\n        key: \"database\",\n        label: \"Database\",\n        description: \"Database name or branch label for downstream wiring.\",\n        placeholder: \"main\",\n      },\n    ],\n    cloudflareKV: [\n      {\n        key: \"namespace\",\n        label: \"KV Namespace\",\n        description: \"Worker binding name used by the downstream KV adapter.\",\n        placeholder: \"ADAPTERS_KV\",\n      },\n      {\n        key: \"defaultTtlSeconds\",\n        label: \"Default TTL Seconds\",\n        description: \"Optional TTL for cache/session style records.\",\n        placeholder: \"300\",\n        inputMode: \"numeric\",\n      },\n    ],\n    memory: [\n      {\n        key: \"seed\",\n        label: \"Fixture Seed\",\n        description: \"Optional deterministic seed for local test data.\",\n        placeholder: \"demo\",\n      },\n    ],\n  },\n};\n\nconst LAUNCH_DB_PROVIDER_IDS = new Set([\n  \"convex\",\n  \"neon\",\n  \"cloudflareKV\",\n  \"memory\",\n]);\n\nfunction getSelectableProviders(domain: AdapterDomain) {\n  const providers = getProvidersForDomain(domain);\n  if (domain !== \"db\") return providers;\n  return providers.filter(\n    (entry) =>\n      entry.id === \"localStorage\" || LAUNCH_DB_PROVIDER_IDS.has(entry.id),\n  );\n}\n\nfunction getOptionFields(\n  domain: AdapterDomain,\n  provider: string,\n): ProviderOptionField[] {\n  return PROVIDER_OPTION_FIELDS[domain]?.[provider] ?? [];\n}\n\nfunction stringifyOptionValue(value: unknown): string {\n  if (value === undefined || value === null) {\n    return \"\";\n  }\n  return String(value);\n}\n\nfunction coerceOptionValue(field: ProviderOptionField, value: string): unknown {\n  const trimmed = value.trim();\n  if (trimmed === \"\") {\n    return \"\";\n  }\n  if (field.inputMode !== \"numeric\") {\n    return trimmed;\n  }\n  const numeric = Number(trimmed);\n  return Number.isFinite(numeric) ? numeric : trimmed;\n}\n\nfunction validateOptionValues(\n  domain: AdapterDomain,\n  provider: string,\n  optionValues: Record<string, string>,\n): string | null {\n  if (domain === \"db\" && provider === \"cloudflareKV\") {\n    if (!optionValues.namespace?.trim()) {\n      return \"KV namespace is required\";\n    }\n    const ttlValue = optionValues.defaultTtlSeconds?.trim();\n    if (ttlValue) {\n      const ttlSeconds = Number(ttlValue);\n      if (!Number.isInteger(ttlSeconds) || ttlSeconds <= 0) {\n        return \"Default TTL seconds must be a positive integer\";\n      }\n    }\n  }\n\n  for (const field of getOptionFields(domain, provider)) {\n    if (field.inputMode !== \"numeric\") continue;\n    const raw = optionValues[field.key]?.trim();\n    if (!raw) continue;\n    if (!Number.isFinite(Number(raw))) {\n      return `${field.label} must be a number`;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Props accepted by the SolidJS CSS 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\n/**\n * Renders the adapter configuration workflow for a single adapter domain.\n *\n * @param props Component props controlling the selected domain and form callbacks\n * @returns A provider chooser and credential form styled with the CSS variant\n * @example\n * ```tsx\n * <AdapterConfigForm\n *   domain=\"auth\"\n *   onSave={async (config) => saveConfig('auth', config)}\n *   onCancel={() => setOpen(false)}\n * />\n * ```\n */\nexport function AdapterConfigForm(props: AdapterConfigFormProps): JSX.Element {\n  // Derive the selectable provider list reactively so prop-driven domain\n  // changes flip the chooser, hydrated value, and provider-specific option\n  // fields together instead of pinning to the initial domain.\n  const providers = createMemo(() => getSelectableProviders(props.domain));\n  const initialProviderId = (): string =>\n    providers().find((entry) => entry.id === props.initialConfig?.provider)\n      ?.id ??\n    providers()[0]?.id ??\n    \"\";\n\n  const [provider, setProvider] = createSignal(initialProviderId());\n  const [apiKey, setApiKey] = createSignal(props.initialConfig?.apiKey ?? \"\");\n  const [baseUrl, setBaseUrl] = createSignal(\n    props.initialConfig?.baseUrl ?? \"\",\n  );\n  const [optionValues, setOptionValues] = createSignal<Record<string, string>>(\n    Object.fromEntries(\n      Object.entries(props.initialConfig?.options ?? {}).map(([key, value]) => [\n        key,\n        stringifyOptionValue(value),\n      ]),\n    ),\n  );\n  const [isSaving, setIsSaving] = createSignal(false);\n  const [error, setError] = createSignal<string | null>(null);\n  const selectedMeta = () =>\n    providers().find((entry) => entry.id === provider());\n\n  const needsApiKey = () => selectedMeta()?.requiresApiKey ?? false;\n  const needsBaseUrl = () => selectedMeta()?.requiresBaseUrl ?? false;\n  const optionFields = (): ProviderOptionField[] =>\n    getOptionFields(props.domain, provider());\n\n  // Reset provider-specific state whenever the domain or initialConfig\n  // changes so stale credentials/options can't leak from a prior domain.\n  createEffect(() => {\n    const domainKey = props.domain;\n    const config = props.initialConfig;\n    void domainKey;\n    void config;\n    const list = providers();\n    const nextProvider =\n      list.find((entry) => entry.id === config?.provider)?.id ??\n      list[0]?.id ??\n      \"\";\n    setProvider(nextProvider);\n    setApiKey(config?.apiKey ?? \"\");\n    setBaseUrl(config?.baseUrl ?? \"\");\n    setOptionValues(\n      Object.fromEntries(\n        Object.entries(config?.options ?? {}).map(([key, value]) => [\n          key,\n          stringifyOptionValue(value),\n        ]),\n      ),\n    );\n    setError(null);\n  });\n\n  createEffect(() => {\n    if (!needsApiKey() && apiKey()) {\n      setApiKey(\"\");\n    }\n    if (!needsBaseUrl() && baseUrl()) {\n      setBaseUrl(\"\");\n    }\n  });\n\n  const handleProviderChange = (nextProvider: string): void => {\n    if (nextProvider === provider()) return;\n    setProvider(nextProvider);\n    setApiKey(\"\");\n    setBaseUrl(\"\");\n    setOptionValues({});\n  };\n\n  const handleSubmit = async (event: Event): Promise<void> => {\n    event.preventDefault();\n    setError(null);\n    if (!provider()) {\n      setError(\"Select a provider\");\n      return;\n    }\n    if (needsApiKey() && !apiKey().trim()) {\n      setError(\"API key is required\");\n      return;\n    }\n    if (needsBaseUrl() && !baseUrl().trim()) {\n      setError(\"Base URL is required\");\n      return;\n    }\n    const optionError = validateOptionValues(\n      props.domain,\n      provider(),\n      optionValues(),\n    );\n    if (optionError) {\n      setError(optionError);\n      return;\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      const fields = optionFields();\n      const current = optionValues();\n      const options = Object.fromEntries(\n        fields\n          .map((field) => [\n            field.key,\n            coerceOptionValue(field, current[field.key] ?? \"\"),\n          ])\n          .filter(([, value]) => value !== \"\"),\n      );\n      if (Object.keys(options).length > 0) {\n        config.options = options;\n      }\n      await props.onSave(config);\n    } catch (err) {\n      setError(err instanceof Error ? err.message : \"Failed to save\");\n    } finally {\n      setIsSaving(false);\n    }\n  };\n\n  return (\n    <form\n      onSubmit={handleSubmit}\n      class={cx(\"gn-adapters-form\", props.class)}\n      noValidate\n    >\n      <h3 id={props.titleId} class=\"gn-adapters-form__title\">\n        Configure {DOMAIN_LABELS[props.domain]}\n      </h3>\n      <p class=\"gn-adapters-form__subtitle\">\n        Select and configure your preferred provider.\n      </p>\n\n      <Show when={error()}>\n        <div\n          class=\"gn-adapters-alert gn-adapters-alert--error gn-adapters-alert--spaced\"\n          role=\"alert\"\n        >\n          {error()}\n        </div>\n      </Show>\n\n      <fieldset class=\"gn-adapters-field gn-adapters-field--provider\">\n        <legend class=\"gn-adapters-field__label\">Provider</legend>\n        <div class=\"gn-adapters-provider-grid\">\n          <For each={providers()}>\n            {(p) => (\n              <label\n                class={cx(\n                  \"gn-adapters-provider-option\",\n                  provider() === p.id &&\n                    \"gn-adapters-provider-option--selected\",\n                )}\n              >\n                <input\n                  type=\"radio\"\n                  name={`gn-adapters-${props.domain}-provider`}\n                  value={p.id}\n                  checked={provider() === p.id}\n                  onChange={() => handleProviderChange(p.id)}\n                  class=\"gn-adapters-provider-option__input\"\n                />\n                <span class=\"gn-adapters-provider-option__name\">{p.name}</span>\n                <span class=\"gn-adapters-provider-option__desc\">\n                  {p.description}\n                </span>\n                <span\n                  class={cx(\n                    \"gn-adapters-tier-badge\",\n                    `gn-adapters-tier-badge--${p.tier}`,\n                  )}\n                >\n                  {p.tier}\n                </span>\n              </label>\n            )}\n          </For>\n        </div>\n      </fieldset>\n\n      <Show when={needsApiKey()}>\n        <div class=\"gn-adapters-field\">\n          <label\n            class=\"gn-adapters-field__label\"\n            for={`gn-adapters-${props.domain}-apiKey`}\n          >\n            API Key\n          </label>\n          <input\n            id={`gn-adapters-${props.domain}-apiKey`}\n            type=\"password\"\n            value={apiKey()}\n            onInput={(e) => setApiKey(e.currentTarget.value)}\n            placeholder={`Enter ${selectedMeta()?.name ?? provider()} API key`}\n            class=\"gn-adapters-field__input\"\n            autocomplete=\"off\"\n            required\n            aria-invalid={\n              error() === \"API key is required\" ? \"true\" : undefined\n            }\n          />\n        </div>\n      </Show>\n\n      <Show when={needsBaseUrl()}>\n        <div class=\"gn-adapters-field\">\n          <label\n            class=\"gn-adapters-field__label\"\n            for={`gn-adapters-${props.domain}-url`}\n          >\n            Base URL\n          </label>\n          <input\n            id={`gn-adapters-${props.domain}-url`}\n            type=\"url\"\n            value={baseUrl()}\n            onInput={(e) => setBaseUrl(e.currentTarget.value)}\n            placeholder=\"https://...\"\n            class=\"gn-adapters-field__input\"\n            required\n            aria-invalid={\n              error() === \"Base URL is required\" ? \"true\" : undefined\n            }\n          />\n        </div>\n      </Show>\n\n      <For each={optionFields()}>\n        {(field) => (\n          <div class=\"gn-adapters-field\">\n            <label\n              class=\"gn-adapters-field__label\"\n              for={`gn-adapters-${props.domain}-${field.key}`}\n            >\n              {field.label}\n            </label>\n            <input\n              id={`gn-adapters-${props.domain}-${field.key}`}\n              type=\"text\"\n              inputMode={field.inputMode}\n              value={optionValues()[field.key] ?? \"\"}\n              onInput={(e) => {\n                const next = e.currentTarget.value;\n                setOptionValues((current) => ({\n                  ...current,\n                  [field.key]: next,\n                }));\n              }}\n              placeholder={field.placeholder}\n              class=\"gn-adapters-field__input\"\n              aria-describedby={`gn-adapters-${props.domain}-${field.key}-hint`}\n            />\n            <p\n              id={`gn-adapters-${props.domain}-${field.key}-hint`}\n              class=\"gn-adapters-field__hint\"\n            >\n              {field.description}\n            </p>\n          </div>\n        )}\n      </For>\n\n      <div class=\"gn-adapters-actions\">\n        <Show when={props.onCancel}>\n          <button\n            type=\"button\"\n            onClick={() => props.onCancel?.()}\n            class=\"gn-adapters-btn gn-adapters-btn--ghost\"\n          >\n            Cancel\n          </button>\n        </Show>\n        <button\n          type=\"submit\"\n          disabled={isSaving() || !provider()}\n          class=\"gn-adapters-btn gn-adapters-btn--primary\"\n        >\n          {isSaving() ? \"Saving...\" : \"Save Configuration\"}\n        </button>\n      </div>\n    </form>\n  );\n}\n","/**\n * @module index\n * @package @geenius/adapters/solidjs-css\n * @description Implements the SolidJS CSS adapter provider and context access\n * helpers. This module keeps the SolidJS CSS runtime self-contained while\n * relying only on the shared framework-agnostic adapter contract.\n */\n\nimport type {\n  AdapterDomain,\n  AdapterStatusInfo,\n  AdminAdapter,\n  AiAdapter,\n  AuthAdapter,\n  DbAdapter,\n  FileStorageAdapter,\n  LoggerAdapter,\n  PaymentsAdapter,\n} from \"@geenius/adapters\";\nimport {\n  ADAPTER_DOMAINS,\n  AdapterContextError,\n  AdapterError,\n  createConsoleLoggerAdapter,\n  createLocalStorageAdminAdapter,\n  createLocalStorageAiAdapter,\n  createLocalStorageAuthAdapter,\n  createLocalStorageDbAdapter,\n  createLocalStorageFileAdapter,\n  createLocalStoragePaymentsAdapter,\n  createNoopPaymentsAdapter,\n  DOMAIN_LABELS,\n  getDomainConfig,\n  isAdaptersConfigured,\n} from \"@geenius/adapters\";\nimport type { Context } from \"solid-js\";\nimport {\n  createContext,\n  createSignal,\n  onCleanup,\n  onMount,\n  useContext,\n} from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\n/**\n * Map from adapter domain identifier to its concrete adapter interface.\n *\n * Used as the canonical typing for the SolidJS CSS adapter registry; each\n * key corresponds to a supported domain and its value is the contract every\n * provider implementation for that domain must satisfy.\n */\nexport interface AdapterDomainMap {\n  db: DbAdapter;\n  auth: AuthAdapter;\n  payments: PaymentsAdapter;\n  ai: AiAdapter;\n  storage: FileStorageAdapter;\n  admin: AdminAdapter;\n  logger: LoggerAdapter;\n}\n\n/**\n * Union of supported adapter domain identifiers derived from {@link AdapterDomainMap}.\n */\nexport type AdapterDomainKey = keyof AdapterDomainMap;\n\n/**\n * SolidJS CSS adapter bag keyed by domain.\n *\n * @property db Database adapter implementation when configured.\n * @property auth Authentication adapter implementation when configured.\n * @property payments Payments adapter implementation when configured.\n * @property ai AI adapter implementation when configured.\n * @property storage File-storage adapter implementation when configured.\n * @property admin Admin adapter implementation when configured.\n * @property logger Logger adapter implementation when configured.\n */\nexport interface AdapterSet extends Partial<AdapterDomainMap> {\n  fileStorage?: FileStorageAdapter;\n}\n\n/** Registry shape accepted by the public SolidJS CSS provider. */\nexport type AdapterRegistry = AdapterSet;\n\n/**\n * SolidJS CSS adapter context value exposed to primitives and provider consumers.\n *\n * @property adapters Adapter bag passed into the provider.\n * @property statuses Current status record for each adapter domain.\n * @property getAdapter Returns a configured adapter for a specific domain or throws when missing.\n * @property isReady Reports whether a domain is configured and connected.\n * @property isLoading Indicates whether initial health checks are still running.\n */\nexport interface AdapterContextValue {\n  adapters: AdapterSet;\n  statuses: Record<AdapterDomain, AdapterStatusInfo>;\n  getAdapter: <K extends AdapterDomainKey>(domain: K) => AdapterDomainMap[K];\n  isReady: (domain: AdapterDomain) => boolean;\n  isLoading: boolean;\n}\n\nconst AdapterContext: Context<AdapterContextValue | undefined> =\n  createContext<AdapterContextValue>();\ntype ProviderChildren = Parameters<\n  typeof AdapterContext.Provider\n>[0][\"children\"];\ntype ProviderElement = import(\"solid-js\").JSX.Element;\n\n/**\n * Map of domain-specific health probes supplied by the host app.\n *\n * When a domain has a custom probe, the provider calls it instead of the\n * built-in probe during the health-check lifecycle. The probe receives the\n * adapter instance for its domain and the full adapter bag.\n */\nexport type AdapterHealthProbeMap = Partial<{\n  [D in AdapterDomainKey]: (\n    adapter: AdapterDomainMap[D],\n    adapters: AdapterSet,\n  ) => Promise<void> | void;\n}>;\n\n/**\n * Props accepted by the SolidJS CSS adapter provider.\n *\n * @property adapters Optional adapter bag made available to descendant primitives and components.\n * @property registry Optional registry alias for adapter overrides.\n * @property db Optional direct database adapter override.\n * @property auth Optional direct authentication adapter override.\n * @property payments Optional direct payments adapter override.\n * @property ai Optional direct AI adapter override.\n * @property storage Optional direct file-storage adapter override.\n * @property fileStorage Optional slot-API alias for the file-storage adapter.\n * @property admin Optional direct admin adapter override.\n * @property logger Optional direct logger adapter override.\n * @property children Solid subtree that should receive adapter context.\n * @property healthCheck Whether the provider should probe configured adapters on mount.\n * @property healthProbes Optional domain-specific health probes supplied by the host app.\n * @property statusOverrides Optional deterministic status overrides for tests and previews.\n * @property onError Optional typed error callback invoked when provider lifecycle checks fail.\n */\nexport interface AdapterProviderProps extends Partial<AdapterDomainMap> {\n  adapters?: AdapterSet;\n  registry?: Partial<AdapterRegistry>;\n  fileStorage?: FileStorageAdapter;\n  children: ProviderChildren;\n  healthCheck?: boolean;\n  healthProbes?: AdapterHealthProbeMap;\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>;\n  onError?: (error: AdapterError) => void;\n}\n\n/**\n * Plural alias for {@link AdapterProviderProps}; preserved for naming parity\n * with sibling framework cells that historically exported the plural form.\n */\nexport type AdaptersProviderProps = AdapterProviderProps;\n\ninterface ResolvedAdapterSet {\n  adapters: AdapterSet;\n  fallbackDomains: ReadonlySet<AdapterDomainKey>;\n}\n\nconst ADAPTER_DOMAIN_KEYS = ADAPTER_DOMAINS as readonly AdapterDomainKey[];\n\nconst DEFAULT_PROVIDER_BY_DOMAIN: Record<AdapterDomainKey, string> = {\n  db: \"localStorage\",\n  auth: \"localStorage\",\n  payments: \"localStorage\",\n  ai: \"localStorage\",\n  storage: \"localStorage\",\n  admin: \"localStorage\",\n  logger: \"console\",\n};\n\nfunction createDefaultAdapters(): AdapterDomainMap {\n  return {\n    db: createLocalStorageDbAdapter(),\n    auth: createLocalStorageAuthAdapter(),\n    payments: createDefaultPaymentsAdapter(),\n    ai: createLocalStorageAiAdapter(),\n    storage: createLocalStorageFileAdapter(),\n    admin: createLocalStorageAdminAdapter(),\n    logger: createConsoleLoggerAdapter(),\n  };\n}\n\nfunction createDefaultPaymentsAdapter(): PaymentsAdapter {\n  try {\n    return createLocalStoragePaymentsAdapter();\n  } catch {\n    return createNoopPaymentsAdapter();\n  }\n}\n\nfunction setResolvedAdapter(\n  adapters: AdapterSet,\n  fallbackDomains: Set<AdapterDomainKey>,\n  domain: AdapterDomainKey,\n  adapter: AdapterDomainMap[AdapterDomainKey] | undefined,\n): void {\n  if (adapter === undefined) {\n    return;\n  }\n\n  const writableAdapters = adapters as Partial<\n    Record<AdapterDomainKey, AdapterDomainMap[AdapterDomainKey]>\n  >;\n  writableAdapters[domain] = adapter;\n  fallbackDomains.delete(domain);\n}\n\nfunction resolveAdapterSet(props: AdapterProviderProps): ResolvedAdapterSet {\n  const defaults = createDefaultAdapters();\n  const fallbackDomains = new Set<AdapterDomainKey>(ADAPTER_DOMAIN_KEYS);\n  const adapters: AdapterSet = {\n    ...defaults,\n    fileStorage: defaults.storage,\n  };\n\n  const applyAdapterBag = (bag: AdapterSet | undefined): void => {\n    if (bag === undefined) {\n      return;\n    }\n\n    for (const domain of ADAPTER_DOMAIN_KEYS) {\n      setResolvedAdapter(adapters, fallbackDomains, domain, bag[domain]);\n    }\n\n    setResolvedAdapter(adapters, fallbackDomains, \"storage\", bag.fileStorage);\n  };\n\n  applyAdapterBag(props.registry);\n  applyAdapterBag(props.adapters);\n  setResolvedAdapter(adapters, fallbackDomains, \"db\", props.db);\n  setResolvedAdapter(adapters, fallbackDomains, \"auth\", props.auth);\n  setResolvedAdapter(adapters, fallbackDomains, \"payments\", props.payments);\n  setResolvedAdapter(adapters, fallbackDomains, \"ai\", props.ai);\n  setResolvedAdapter(adapters, fallbackDomains, \"storage\", props.storage);\n  setResolvedAdapter(adapters, fallbackDomains, \"storage\", props.fileStorage);\n  setResolvedAdapter(adapters, fallbackDomains, \"admin\", props.admin);\n  setResolvedAdapter(adapters, fallbackDomains, \"logger\", props.logger);\n\n  adapters.fileStorage = adapters.storage;\n  return { adapters, fallbackDomains };\n}\n\nfunction getInitialProviderName(\n  domain: AdapterDomainKey,\n  adapters: AdapterSet,\n  fallbackDomains: ReadonlySet<AdapterDomainKey>,\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>,\n): string {\n  const overrideProvider = statusOverrides?.[domain]?.provider;\n  if (overrideProvider !== undefined) {\n    return overrideProvider;\n  }\n\n  if (!adapters[domain]) {\n    return \"none\";\n  }\n\n  if (fallbackDomains.has(domain)) {\n    return DEFAULT_PROVIDER_BY_DOMAIN[domain];\n  }\n\n  if (!isAdaptersConfigured()) {\n    return \"configured\";\n  }\n\n  return getDomainConfig(domain)?.provider ?? \"configured\";\n}\n\nfunction createInitialStatus(\n  domain: AdapterDomainKey,\n  adapters: AdapterSet,\n  fallbackDomains: ReadonlySet<AdapterDomainKey>,\n  healthCheck: boolean,\n  statusOverrides?: Partial<Record<AdapterDomain, Partial<AdapterStatusInfo>>>,\n): AdapterStatusInfo {\n  const adapter = adapters[domain];\n  return {\n    domain,\n    provider: getInitialProviderName(\n      domain,\n      adapters,\n      fallbackDomains,\n      statusOverrides,\n    ),\n    status: adapter\n      ? healthCheck\n        ? \"initializing\"\n        : \"connected\"\n      : \"disconnected\",\n    lastCheckedAt: Date.now(),\n    ...statusOverrides?.[domain],\n  };\n}\n\nfunction toAdapterError(domain: AdapterDomain, error: unknown): AdapterError {\n  if (error instanceof AdapterError) {\n    return error;\n  }\n\n  const message =\n    error instanceof Error ? error.message : \"Health check failed\";\n  return new AdapterError(message, domain, \"SERVICE_ERROR\", error);\n}\n\nasync function probeAdapterDomain(\n  domain: AdapterDomainKey,\n  adapters: AdapterSet,\n  healthProbes?: AdapterHealthProbeMap,\n): Promise<{ connected: true } | { connected: false; error: string }> {\n  const customProbe = healthProbes?.[domain];\n  if (customProbe) {\n    await customProbe(adapters[domain] as never, adapters);\n    return { connected: true };\n  }\n\n  switch (domain) {\n    case \"db\":\n      await adapters.db?.count(\"__geenius_adapter_healthcheck\");\n      return adapters.db\n        ? { connected: true }\n        : { connected: false, error: \"DB adapter is not configured.\" };\n    case \"auth\":\n      await adapters.auth?.getSession();\n      return adapters.auth\n        ? { connected: true }\n        : { connected: false, error: \"Auth adapter is not configured.\" };\n    case \"payments\":\n      await adapters.payments?.getPlans();\n      return adapters.payments\n        ? { connected: true }\n        : { connected: false, error: \"Payments adapter is not configured.\" };\n    case \"storage\":\n      await adapters.storage?.list(\"__geenius_adapter_healthcheck\");\n      return adapters.storage\n        ? { connected: true }\n        : { connected: false, error: \"Storage adapter is not configured.\" };\n    case \"admin\":\n      await adapters.admin?.getMetrics();\n      return adapters.admin\n        ? { connected: true }\n        : { connected: false, error: \"Admin adapter is not configured.\" };\n    case \"logger\":\n      await adapters.logger?.child({ healthCheck: true });\n      return adapters.logger\n        ? { connected: true }\n        : { connected: false, error: \"Logger adapter is not configured.\" };\n    case \"ai\":\n      await adapters.ai?.complete(\"__geenius_adapter_healthcheck\", {\n        maxTokens: 1,\n        temperature: 0,\n      });\n      return adapters.ai\n        ? { connected: true }\n        : { connected: false, error: \"AI adapter is not configured.\" };\n  }\n}\n\n/**\n * Provides the SolidJS CSS adapter context and optional health-check lifecycle.\n *\n * @param props Provider props including the adapter bag, child tree, and optional health-check settings.\n * @returns A SolidJS context provider that exposes adapters and derived status metadata.\n */\nexport function AdapterProvider(props: AdapterProviderProps): ProviderElement {\n  const resolved = resolveAdapterSet(props);\n  const adapters = resolved.adapters;\n  const healthCheckEnabled = props.healthCheck ?? false;\n  const initialStatuses: Record<AdapterDomain, AdapterStatusInfo> = {\n    db: createInitialStatus(\n      \"db\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    auth: createInitialStatus(\n      \"auth\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    payments: createInitialStatus(\n      \"payments\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    ai: createInitialStatus(\n      \"ai\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    storage: createInitialStatus(\n      \"storage\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    admin: createInitialStatus(\n      \"admin\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n    logger: createInitialStatus(\n      \"logger\",\n      adapters,\n      resolved.fallbackDomains,\n      healthCheckEnabled,\n      props.statusOverrides,\n    ),\n  };\n\n  const [statuses, setStatuses] = createStore(initialStatuses);\n  const [isLoading, setIsLoading] = createSignal(healthCheckEnabled);\n\n  onMount(async () => {\n    if (!props.healthCheck) {\n      return;\n    }\n\n    let cancelled = false;\n    setIsLoading(true);\n    onCleanup(() => {\n      cancelled = true;\n    });\n\n    const checks = ADAPTER_DOMAIN_KEYS.map(async (domain) => {\n      const adapter = adapters[domain];\n      if (!adapter) {\n        return;\n      }\n\n      try {\n        if (cancelled) {\n          return;\n        }\n\n        setStatuses(domain, \"status\", \"initializing\");\n\n        const result = await probeAdapterDomain(\n          domain,\n          adapters,\n          props.healthProbes,\n        );\n        if (cancelled) {\n          return;\n        }\n\n        if (!result.connected) {\n          setStatuses(domain, \"status\", \"disconnected\");\n          setStatuses(domain, \"error\", result.error);\n          setStatuses(domain, \"lastCheckedAt\", Date.now());\n          return;\n        }\n\n        setStatuses(domain, \"status\", \"connected\");\n        setStatuses(domain, \"error\", undefined);\n        setStatuses(domain, \"lastCheckedAt\", Date.now());\n      } catch (error) {\n        const adapterError = toAdapterError(domain, error);\n        props.onError?.(adapterError);\n\n        if (cancelled) {\n          return;\n        }\n\n        setStatuses(domain, \"status\", \"error\");\n        setStatuses(domain, \"error\", adapterError.message);\n        setStatuses(domain, \"lastCheckedAt\", Date.now());\n      }\n    });\n\n    await Promise.allSettled(checks);\n    if (!cancelled) {\n      setIsLoading(false);\n    }\n  });\n\n  const getAdapter = <K extends AdapterDomainKey>(\n    domain: K,\n  ): AdapterDomainMap[K] => {\n    const adapter = adapters[domain] as AdapterDomainMap[K] | undefined;\n    if (adapter === undefined) {\n      throw new AdapterContextError(\n        `${DOMAIN_LABELS[domain]} adapter not configured in <AdapterProvider>`,\n        \"ADAPTER_NOT_CONFIGURED\",\n      );\n    }\n\n    return adapter;\n  };\n\n  const isReady = (domain: AdapterDomain): boolean => {\n    const domainKey = domain as AdapterDomainKey;\n    return !!adapters[domainKey] && statuses[domain]?.status === \"connected\";\n  };\n\n  const value: AdapterContextValue = {\n    adapters,\n    statuses,\n    getAdapter,\n    isReady,\n    get isLoading() {\n      return isLoading();\n    },\n  };\n\n  return (\n    <AdapterContext.Provider value={value}>\n      {props.children}\n    </AdapterContext.Provider>\n  );\n}\n\n/**\n * Plural provider alias matching the public SolidJS CSS contract.\n */\nexport const AdaptersProvider = AdapterProvider;\n\n/**\n * Reads the SolidJS CSS adapter context from the nearest provider.\n *\n * @returns The active adapter context value with adapters, statuses, and readiness helpers.\n * @throws {AdapterContextError} When called outside of an `<AdapterProvider>` tree.\n */\nexport function useAdapterContext(): AdapterContextValue {\n  const context = useContext(AdapterContext);\n  if (!context) {\n    throw new AdapterContextError(\n      \"useAdapterContext must be used within <AdapterProvider>\",\n      \"MISSING_CONTEXT\",\n    );\n  }\n\n  return context;\n}\n","/**\n * @module index\n * @package @geenius/adapters/solidjs-css\n * @description Defines the SolidJS CSS adapter primitives for reading adapter\n * instances and adapter status state from the SolidJS CSS provider context.\n * These primitives keep the SolidJS CSS runtime self-contained and on the\n * public contract.\n */\n\nimport type {\n  AdapterDomain,\n  AdapterStatusInfo,\n  AdminAdapter,\n  AiAdapter,\n  AuthAdapter,\n  DbAdapter,\n  FileStorageAdapter,\n  LoggerAdapter,\n  PaymentsAdapter,\n} from \"@geenius/adapters\";\nimport { createMemo } from \"solid-js\";\nimport { useAdapterContext } from \"../provider\";\n\n/**\n * Reads the configured database adapter from the current SolidJS CSS adapter context.\n *\n * @returns The active database adapter implementation for the provider tree.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createDb(): DbAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"db\");\n}\n\n/**\n * Reads the configured authentication adapter from the current SolidJS CSS context.\n *\n * @returns The active authentication adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createAuth(): AuthAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"auth\");\n}\n\n/**\n * Reads the configured authentication adapter from the current SolidJS CSS context.\n * Alias for {@link createAuth} matching the React `useAuthAdapter` convention.\n *\n * @returns The active authentication adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createAuthAdapter(): AuthAdapter {\n  return createAuth();\n}\n\n/**\n * Reads the configured payments adapter from the current SolidJS CSS context.\n *\n * @returns The active payments adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createPayments(): PaymentsAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"payments\");\n}\n\n/**\n * Reads the configured AI adapter from the current SolidJS CSS context.\n *\n * @returns The active AI adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createAi(): AiAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"ai\");\n}\n\n/**\n * Reads the configured file-storage adapter from the current SolidJS CSS context.\n *\n * @returns The active file-storage adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createStorage(): FileStorageAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"storage\");\n}\n\n/**\n * Reads the configured file-storage adapter using the explicit file-storage primitive name.\n *\n * @returns The active file-storage adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createFileStorage(): FileStorageAdapter {\n  return createStorage();\n}\n\n/**\n * Reads the configured admin adapter from the current SolidJS CSS context.\n *\n * @returns The active admin adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createAdmin(): AdminAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"admin\");\n}\n\n/**\n * Reads the configured logger adapter from the current SolidJS CSS context.\n *\n * @returns The active logger adapter implementation.\n * @throws {AdapterContextError} When the provider or adapter is unavailable.\n */\nexport function createLogger(): LoggerAdapter {\n  const context = useAdapterContext();\n  return context.getAdapter(\"logger\");\n}\n\n/**\n * Returns the full adapter status record from the current SolidJS CSS context.\n *\n * @returns A status object keyed by adapter domain.\n */\nexport function createAdapterStatuses(): Record<\n  AdapterDomain,\n  AdapterStatusInfo\n> {\n  const context = useAdapterContext();\n  return context.statuses;\n}\n\n/**\n * Creates a memoized reader for a single adapter domain status.\n *\n * @param domain Adapter domain whose status should be observed.\n * @returns A getter that always reflects the latest status for that domain.\n */\nexport function createAdapterStatus(\n  domain: AdapterDomain,\n): () => AdapterStatusInfo {\n  const context = useAdapterContext();\n  return createMemo(() => context.statuses[domain]);\n}\n\n/**\n * Creates a memoized readiness reader for a single adapter domain.\n *\n * @param domain Adapter domain to inspect.\n * @returns A getter that reports whether the domain is ready for use.\n */\nexport function createIsAdapterReady(domain: AdapterDomain): () => boolean {\n  const context = useAdapterContext();\n  return createMemo(() => context.isReady(domain));\n}\n\n/**\n * Accesses every adapter and status helper from the current provider context.\n *\n * @returns A stable object exposing adapters, statuses, and loading helpers.\n */\nexport function createAdapters(): {\n  db: DbAdapter | undefined;\n  auth: AuthAdapter | undefined;\n  payments: PaymentsAdapter | undefined;\n  ai: AiAdapter | undefined;\n  storage: FileStorageAdapter | undefined;\n  fileStorage: FileStorageAdapter | undefined;\n  admin: AdminAdapter | undefined;\n  logger: LoggerAdapter | undefined;\n  statuses: Record<AdapterDomain, AdapterStatusInfo>;\n  isLoading: boolean;\n  isReady: (domain: AdapterDomain) => boolean;\n} {\n  const context = useAdapterContext();\n\n  return {\n    db: context.adapters.db,\n    auth: context.adapters.auth,\n    payments: context.adapters.payments,\n    ai: context.adapters.ai,\n    storage: context.adapters.storage,\n    fileStorage: context.adapters.fileStorage ?? context.adapters.storage,\n    admin: context.adapters.admin,\n    logger: context.adapters.logger,\n    statuses: context.statuses,\n    get isLoading() {\n      return context.isLoading;\n    },\n    isReady: context.isReady,\n  };\n}\n","/**\n * @module AdapterList\n * @package @geenius/adapters/solidjs-css\n * @description Renders the searchable adapter grid for the SolidJS CSS\n * variant. The list consumes provider status from context and delegates\n * selection events to the hosting page or dashboard shell.\n */\n\nimport type { AdapterDomain, AdapterStatusType } from \"@geenius/adapters\";\nimport { ADAPTER_DOMAINS, DOMAIN_LABELS } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport { createMemo, createSignal, For, Show } from \"solid-js\";\nimport { cx } from \"../lib/cx\";\nimport { createAdapters } from \"../primitives\";\nimport { AdapterCard } from \"./AdapterCard\";\n\n/**\n * Props for rendering the SolidJS CSS adapter list and optional status filter controls.\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/**\n * Renders the searchable SolidJS CSS adapter list backed by shared provider state.\n *\n * @param props List props including selection callback, status filtering, and wrapper class names.\n * @returns The adapter grid or an empty state when no entries are available.\n */\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 q = search().toLowerCase();\n    if (q) {\n      domains = domains.filter((d) => {\n        return (\n          (DOMAIN_LABELS[d] ?? d).toLowerCase().includes(q) ||\n          d.includes(q) ||\n          (ctx.statuses[d]?.provider?.toLowerCase().includes(q) ?? false)\n        );\n      });\n    }\n    if (props.filterStatus) {\n      domains = domains.filter(\n        (d) => ctx.statuses[d]?.status === props.filterStatus,\n      );\n    }\n    return domains;\n  });\n\n  return (\n    <Show\n      when={!ctx.isLoading}\n      fallback={\n        <div\n          class={cx(props.class)}\n          role=\"status\"\n          aria-label=\"Loading adapters\"\n        >\n          <div class=\"gn-adapters-grid\">\n            <For each={[1, 2, 3, 4]}>\n              {() => (\n                <div class=\"gn-adapters-skeleton gn-adapters-skeleton--card\" />\n              )}\n            </For>\n          </div>\n        </div>\n      }\n    >\n      <div class={cx(props.class)}>\n        <input\n          type=\"text\"\n          value={search()}\n          onInput={(e) => setSearch(e.currentTarget.value)}\n          placeholder=\"Search adapters...\"\n          class=\"gn-adapters-search\"\n          aria-label=\"Search adapters\"\n        />\n\n        <Show\n          when={filtered().length > 0}\n          fallback={\n            <div class=\"gn-adapters-empty\">\n              <p class=\"gn-adapters-empty__text\">\n                {search()\n                  ? \"No adapters match your search\"\n                  : \"No adapters configured\"}\n              </p>\n              <Show when={search()}>\n                <button\n                  class=\"gn-adapters-btn gn-adapters-btn--primary\"\n                  onClick={() => setSearch(\"\")}\n                  type=\"button\"\n                >\n                  Clear search\n                </button>\n              </Show>\n            </div>\n          }\n        >\n          <ul class=\"gn-adapters-grid\" aria-label=\"Adapter list\">\n            <For each={filtered()}>\n              {(domain) => (\n                <li>\n                  <AdapterCard\n                    domain={domain}\n                    status={ctx.statuses[domain]}\n                    onClick={() => props.onSelect?.(domain)}\n                  />\n                </li>\n              )}\n            </For>\n          </ul>\n        </Show>\n      </div>\n    </Show>\n  );\n}\n","/**\n * @module PageBoundaryFallback\n * @package @geenius/adapters/solidjs-css\n * @description Shared page-level error recovery UI for SolidJS CSS adapter pages.\n */\n\nimport type { JSX } from \"solid-js\";\nimport { cx } from \"../lib/cx\";\n\ninterface PageBoundaryFallbackProps {\n  class?: string;\n  error: unknown;\n  onRetry: () => void;\n  title: string;\n}\n\nfunction getErrorMessage(error: unknown): string {\n  if (error instanceof Error && error.message.trim().length > 0) {\n    return error.message;\n  }\n\n  if (typeof error === \"string\" && error.trim().length > 0) {\n    return error;\n  }\n\n  return \"The adapter page could not finish rendering.\";\n}\n\nexport function PageBoundaryFallback(\n  props: PageBoundaryFallbackProps,\n): JSX.Element {\n  return (\n    <div\n      class={cx(\"gn-adapters-page\", \"gn-adapters-page--narrow\", props.class)}\n    >\n      <div\n        class=\"gn-adapters-alert gn-adapters-alert--error gn-adapters-alert--spaced\"\n        role=\"alert\"\n        aria-live=\"assertive\"\n      >\n        <strong>{props.title}</strong>\n        <p>{getErrorMessage(props.error)}</p>\n        <button\n          type=\"button\"\n          class=\"gn-adapters-btn gn-adapters-btn--primary\"\n          onClick={() => props.onRetry()}\n        >\n          Retry\n        </button>\n      </div>\n    </div>\n  );\n}\n","/**\n * @module AdapterDetailPage\n * @package @geenius/adapters/solidjs-css\n * @description Renders the single-domain adapter detail view for the SolidJS\n * CSS variant. The page surfaces current provider health, available providers,\n * and inline configuration for one adapter domain.\n */\n\nimport type { AdapterDomain, DomainAdapterConfig } from \"@geenius/adapters\";\nimport {\n  DOMAIN_DESCRIPTIONS,\n  DOMAIN_ICONS,\n  DOMAIN_LABELS,\n  getProvidersForDomain,\n} from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport {\n  createMemo,\n  createSignal,\n  createUniqueId,\n  ErrorBoundary,\n  For,\n  Show,\n} from \"solid-js\";\nimport { AdapterConfigForm } from \"../components/AdapterConfigForm\";\nimport { AdapterStatusBadge } from \"../components/AdapterStatusBadge\";\nimport { cx } from \"../lib/cx\";\nimport { createAdapters } from \"../primitives\";\nimport { useAdapterContext } from \"../provider\";\nimport { PageBoundaryFallback } from \"./PageBoundaryFallback\";\n\n/**\n * Props for rendering the SolidJS CSS 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 onConfigure Optional callback used to persist submitted provider configuration.\n * @property initialConfig Existing configuration value used to hydrate the inline form.\n * @property class Optional class name merged into the page container.\n */\nexport interface AdapterDetailPageProps {\n  domain: AdapterDomain;\n  onBack?: () => void;\n  onConfigure?: (\n    domain: AdapterDomain,\n    config: DomainAdapterConfig,\n  ) => Promise<void> | void;\n  initialConfig?: DomainAdapterConfig;\n  class?: string;\n}\n\n/**\n * Renders the SolidJS CSS adapter detail page for one adapter domain.\n *\n * @param props Page props including the selected domain and optional back-navigation handler.\n * @returns The detail view with provider health, available providers, and configuration affordances.\n */\nexport function AdapterDetailPage(props: AdapterDetailPageProps): JSX.Element {\n  return (\n    <ErrorBoundary\n      fallback={(error, reset) => (\n        <PageBoundaryFallback\n          class={props.class}\n          error={error}\n          onRetry={reset}\n          title={`${DOMAIN_LABELS[props.domain]} adapter failed to load`}\n        />\n      )}\n    >\n      <AdapterDetailPageContent {...props} />\n    </ErrorBoundary>\n  );\n}\n\nfunction AdapterDetailPageContent(props: AdapterDetailPageProps): JSX.Element {\n  const adapters = createAdapters();\n  const context = useAdapterContext();\n  // Re-read status and provider list reactively against `props.domain` so the\n  // detail page does not stay pinned to the domain it mounted with.\n  const status = createMemo(() => context.statuses[props.domain]);\n  const providers = createMemo(() => getProvidersForDomain(props.domain));\n  const [isEditing, setIsEditing] = createSignal(false);\n  const latency = () => status().latency ?? 0;\n  const label = (): string => DOMAIN_LABELS[props.domain] ?? props.domain;\n  const latencyLabelId = createUniqueId();\n\n  return (\n    <div\n      class={cx(\n        \"gn-adapters-page\",\n        \"gn-adapters-page--narrow\",\n        adapters.isLoading ? \"gn-adapters-page--loading\" : \"\",\n        props.class,\n      )}\n    >\n      <Show\n        when={!adapters.isLoading}\n        fallback={\n          <div\n            aria-busy=\"true\"\n            aria-label={`Loading ${label()} adapter`}\n            class=\"gn-adapters-loading\"\n            role=\"status\"\n          >\n            <div class=\"gn-adapters-skeleton gn-adapters-skeleton--subtitle\" />\n            <div class=\"gn-adapters-skeleton gn-adapters-skeleton--hero\" />\n            <div class=\"gn-adapters-skeleton gn-adapters-skeleton--panel\" />\n          </div>\n        }\n      >\n        <Show when={props.onBack}>\n          <button\n            type=\"button\"\n            onClick={() => props.onBack?.()}\n            class=\"gn-adapters-back-button\"\n          >\n            ← Back to Adapters\n          </button>\n        </Show>\n\n        <div class=\"gn-adapters-detail__header\">\n          <div aria-hidden=\"true\" class=\"gn-adapters-detail__icon\">\n            {DOMAIN_ICONS[props.domain]}\n          </div>\n          <div class=\"gn-adapters-detail__body\">\n            <div class=\"gn-adapters-detail__title-row\">\n              <h1 class=\"gn-adapters-page__title\">{label()}</h1>\n              <AdapterStatusBadge status={status().status} />\n            </div>\n            <p class=\"gn-adapters-page__subtitle\">\n              {DOMAIN_DESCRIPTIONS[props.domain]}\n            </p>\n          </div>\n        </div>\n\n        <div class=\"gn-adapters-summary__card\">\n          <h2 class=\"gn-adapters-summary__label\">Current Status</h2>\n          <div class=\"gn-adapters-detail__status-grid\">\n            <div>\n              <p class=\"gn-adapters-detail__label\">Provider</p>\n              <p class=\"gn-adapters-detail__value\">\n                {status().provider !== \"none\" ? status().provider : \"None\"}\n              </p>\n            </div>\n            <div>\n              <p class=\"gn-adapters-detail__label\">Status</p>\n              <div class=\"gn-adapters-detail__value\">\n                <AdapterStatusBadge status={status().status} />\n              </div>\n            </div>\n            <div>\n              <p class=\"gn-adapters-detail__label\">Last Checked</p>\n              <p class=\"gn-adapters-detail__value\">\n                <Show when={status().lastCheckedAt} fallback={\"Not checked\"}>\n                  {(lastCheckedAt) =>\n                    new Date(lastCheckedAt()).toLocaleTimeString()\n                  }\n                </Show>\n              </p>\n            </div>\n          </div>\n          <Show when={status().error}>\n            <div\n              class=\"gn-adapters-alert gn-adapters-alert--error gn-adapters-alert--spaced\"\n              role=\"alert\"\n            >\n              <strong>Error:</strong> {status().error}\n            </div>\n          </Show>\n          <Show when={status().latency != null}>\n            <div class=\"gn-adapters-detail__latency\">\n              <p class=\"gn-adapters-detail__label\" id={latencyLabelId}>\n                Latency\n              </p>\n              <meter\n                aria-labelledby={latencyLabelId}\n                aria-valuetext={`${latency()} milliseconds`}\n                class={cx(\n                  \"gn-adapters-detail__meter\",\n                  latency() < 100\n                    ? \"gn-adapters-detail__meter--fast\"\n                    : latency() < 500\n                      ? \"gn-adapters-detail__meter--medium\"\n                      : \"gn-adapters-detail__meter--slow\",\n                )}\n                max={1000}\n                min={0}\n                value={Math.min(1000, latency())}\n              />\n              <p class=\"gn-adapters-detail__value gn-adapters-detail__value--subtle\">\n                {latency()}ms\n              </p>\n            </div>\n          </Show>\n        </div>\n\n        <div class=\"gn-adapters-summary__card\">\n          <div class=\"gn-adapters-detail__section-header\">\n            <h2 class=\"gn-adapters-summary__label\">Available Providers</h2>\n            <span class=\"gn-adapters-detail__count\">\n              {providers().length} providers\n            </span>\n          </div>\n          <div class=\"gn-adapters-provider-list\">\n            <For each={providers()}>\n              {(p) => (\n                <div class=\"gn-adapters-provider-list__item\">\n                  <div>\n                    <p class=\"gn-adapters-detail__value gn-adapters-detail__value--strong\">\n                      {p.name}\n                    </p>\n                    <p class=\"gn-adapters-detail__label\">{p.description}</p>\n                  </div>\n                  <span\n                    class={cx(\n                      \"gn-adapters-tier-badge\",\n                      `gn-adapters-tier-badge--${p.tier}`,\n                    )}\n                  >\n                    {p.tier}\n                  </span>\n                </div>\n              )}\n            </For>\n          </div>\n        </div>\n\n        <Show\n          when={isEditing()}\n          fallback={\n            <button\n              type=\"button\"\n              onClick={() => setIsEditing(true)}\n              class=\"gn-adapters-card gn-adapters-card--action\"\n            >\n              Configure {label()} Adapter\n            </button>\n          }\n        >\n          <AdapterConfigForm\n            domain={props.domain}\n            initialConfig={props.initialConfig}\n            onSave={async (config) => {\n              await props.onConfigure?.(props.domain, config);\n              setIsEditing(false);\n            }}\n            onCancel={() => setIsEditing(false)}\n          />\n        </Show>\n      </Show>\n    </div>\n  );\n}\n","/**\n * @module AdaptersPage\n * @package @geenius/adapters/solidjs-css\n * @description Renders the vanilla CSS adapters overview for the SolidJS CSS\n * package. The page summarizes adapter health, supports status filtering, and\n * provides an accessible modal workflow for configuring each adapter domain.\n */\n\nimport type {\n  AdapterDomain,\n  AdapterStatusType,\n  DomainAdapterConfig,\n} from \"@geenius/adapters\";\nimport { ADAPTER_DOMAINS, ADAPTER_STATUSES } from \"@geenius/adapters\";\nimport type { JSX } from \"solid-js\";\nimport {\n  createEffect,\n  createSignal,\n  createUniqueId,\n  ErrorBoundary,\n  For,\n  onCleanup,\n  Show,\n} from \"solid-js\";\nimport { AdapterConfigForm } from \"../components/AdapterConfigForm\";\nimport { AdapterList } from \"../components/AdapterList\";\nimport { AdapterStatusBadge } from \"../components/AdapterStatusBadge\";\nimport { cx } from \"../lib/cx\";\nimport { createAdapters } from \"../primitives\";\nimport { PageBoundaryFallback } from \"./PageBoundaryFallback\";\n\nconst DIALOG_FOCUSABLE_SELECTORS =\n  'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\ntype RegistryEntry = {\n  domain: AdapterDomain;\n  provider: string;\n  status: AdapterStatusType;\n};\n\n/**\n * Props accepted by the SolidJS CSS 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. Mirrors the SolidJS reference; lets the consumer persist values per-domain.\n * @property configByDomain Existing per-domain configuration values used to hydrate modal forms.\n * @property class Optional class merged onto the page root\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  configByDomain?: Partial<Record<AdapterDomain, DomainAdapterConfig>>;\n  class?: string;\n  registryEntries?: RegistryEntry[];\n}\n\n/**\n * Returns focusable descendants for an active dialog container.\n *\n * @param container Dialog container used to scope the focus trap\n * @returns Interactive descendants that should participate in tab order\n */\nfunction getDialogFocusableElements(container: HTMLElement): HTMLElement[] {\n  return Array.from(\n    container.querySelectorAll<HTMLElement>(DIALOG_FOCUSABLE_SELECTORS),\n  );\n}\n\n/**\n * Renders the adapter management dashboard for the SolidJS CSS variant.\n *\n * @param props Page props controlling navigation overrides and registry data\n * @returns A dashboard with status filters, adapter cards, and a modal editor\n * @example\n * ```tsx\n * <AdaptersPage onNavigateDetail={(domain) => navigate(`/adapters/${domain}`)} />\n * ```\n */\nexport function AdaptersPage(props: AdaptersPageProps): JSX.Element {\n  return (\n    <ErrorBoundary\n      fallback={(error, reset) => (\n        <PageBoundaryFallback\n          class={props.class}\n          error={error}\n          onRetry={reset}\n          title=\"Adapters failed to load\"\n        />\n      )}\n    >\n      <AdaptersPageContent {...props} />\n    </ErrorBoundary>\n  );\n}\n\nfunction AdaptersPageContent(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  let modalRef: HTMLDivElement | undefined;\n  const registryEntries = () => props.registryEntries ?? [];\n\n  const connected = () =>\n    ADAPTER_DOMAINS.filter((d) => ctx.statuses[d]?.status === \"connected\")\n      .length;\n  const errors = () =>\n    ADAPTER_DOMAINS.filter((d) => ctx.statuses[d]?.status === \"error\").length;\n\n  createEffect(() => {\n    if (!selectedDomain() || !modalRef) {\n      return;\n    }\n\n    const dialog = modalRef;\n    const ownerDocument = dialog.ownerDocument;\n    const ownerWindow = ownerDocument.defaultView;\n    const HTMLElementCtor = ownerWindow?.HTMLElement;\n    const previousActiveElement =\n      HTMLElementCtor && ownerDocument.activeElement instanceof HTMLElementCtor\n        ? ownerDocument.activeElement\n        : null;\n    const focusableElements = getDialogFocusableElements(dialog);\n    const firstFocusableElement = focusableElements[0];\n    const lastFocusableElement = focusableElements.at(-1);\n\n    (firstFocusableElement ?? dialog).focus();\n\n    const handleKeyDown = (event: KeyboardEvent): void => {\n      if (event.key === \"Escape\") {\n        event.preventDefault();\n        setSelectedDomain(null);\n        return;\n      }\n\n      if (event.key !== \"Tab\") {\n        return;\n      }\n\n      const activeElement = ownerDocument.activeElement;\n\n      if (!firstFocusableElement || !lastFocusableElement) {\n        event.preventDefault();\n        dialog.focus();\n        return;\n      }\n\n      if (event.shiftKey && activeElement === firstFocusableElement) {\n        event.preventDefault();\n        lastFocusableElement.focus();\n        return;\n      }\n\n      if (!event.shiftKey && activeElement === lastFocusableElement) {\n        event.preventDefault();\n        firstFocusableElement.focus();\n      }\n    };\n\n    ownerDocument.addEventListener(\"keydown\", handleKeyDown);\n\n    onCleanup(() => {\n      ownerDocument.removeEventListener(\"keydown\", handleKeyDown);\n      previousActiveElement?.focus();\n    });\n  });\n\n  return (\n    <Show\n      when={!ctx.isLoading}\n      fallback={\n        <div\n          class={cx(\n            \"gn-adapters-page\",\n            \"gn-adapters-page--wide\",\n            \"gn-adapters-page--loading\",\n            props.class,\n          )}\n          role=\"status\"\n          aria-label=\"Loading adapters\"\n        >\n          <div class=\"gn-adapters-loading\">\n            <div class=\"gn-adapters-skeleton gn-adapters-skeleton--title\" />\n            <div class=\"gn-adapters-skeleton gn-adapters-skeleton--subtitle\" />\n            <div class=\"gn-adapters-summary\">\n              <For each={[1, 2, 3]}>\n                {() => (\n                  <div class=\"gn-adapters-skeleton gn-adapters-skeleton--summary\" />\n                )}\n              </For>\n            </div>\n            <div class=\"gn-adapters-grid\">\n              <For each={[1, 2, 3, 4]}>\n                {() => (\n                  <div class=\"gn-adapters-skeleton gn-adapters-skeleton--card\" />\n                )}\n              </For>\n            </div>\n          </div>\n        </div>\n      }\n    >\n      <div\n        class={cx(\"gn-adapters-page\", \"gn-adapters-page--wide\", props.class)}\n      >\n        <div class=\"gn-adapters-page__header\">\n          <h1 class=\"gn-adapters-page__title\">Adapters</h1>\n          <p class=\"gn-adapters-page__subtitle\">\n            Manage your infrastructure adapters - database, auth, AI, storage,\n            payments, and admin.\n          </p>\n        </div>\n\n        <div class=\"gn-adapters-summary\">\n          <div class=\"gn-adapters-summary__card\">\n            <p class=\"gn-adapters-summary__label\">Total</p>\n            <p class=\"gn-adapters-summary__value\">{ADAPTER_DOMAINS.length}</p>\n            <p class=\"gn-adapters-summary__desc\">adapter domains</p>\n          </div>\n          <div class=\"gn-adapters-summary__card gn-adapters-summary__card--success\">\n            <p class=\"gn-adapters-summary__label\">Connected</p>\n            <p class=\"gn-adapters-summary__value\">{connected()}</p>\n            <p class=\"gn-adapters-summary__desc\">active adapters</p>\n          </div>\n          <Show when={errors() > 0}>\n            <div class=\"gn-adapters-summary__card gn-adapters-summary__card--error\">\n              <p class=\"gn-adapters-summary__label\">Errors</p>\n              <p class=\"gn-adapters-summary__value\">{errors()}</p>\n              <p class=\"gn-adapters-summary__desc\">need attention</p>\n            </div>\n          </Show>\n        </div>\n\n        <Show when={registryEntries().length > 0}>\n          <section class=\"gn-adapters-registry\">\n            <div class=\"gn-adapters-registry__header\">\n              <div>\n                <p class=\"gn-adapters-registry__label\">Adapter Registry</p>\n                <p class=\"gn-adapters-registry__desc\">\n                  Live adapter registry entries.\n                </p>\n              </div>\n              <div class=\"gn-adapters-registry__stats\">\n                <span>{registryEntries().length} entries</span>\n              </div>\n            </div>\n            <div class=\"gn-adapters-registry__grid\">\n              <For each={registryEntries()}>\n                {(entry) => (\n                  <div class=\"gn-adapters-registry__item\">\n                    <div class=\"gn-adapters-registry__info\">\n                      <p class=\"gn-adapters-registry__domain\">{entry.domain}</p>\n                      <p class=\"gn-adapters-registry__provider\">\n                        {entry.provider}\n                      </p>\n                    </div>\n                    <AdapterStatusBadge status={entry.status} />\n                  </div>\n                )}\n              </For>\n            </div>\n          </section>\n        </Show>\n\n        <div class=\"gn-adapters-filters\">\n          <button\n            type=\"button\"\n            class={cx(\n              \"gn-adapters-filter-btn\",\n              !filterStatus() && \"gn-adapters-filter-btn--active\",\n            )}\n            onClick={() => setFilterStatus(undefined)}\n            aria-pressed={!filterStatus()}\n          >\n            All\n          </button>\n          <For each={[...ADAPTER_STATUSES]}>\n            {(s) => (\n              <button\n                type=\"button\"\n                class={cx(\n                  \"gn-adapters-filter-btn\",\n                  filterStatus() === s && \"gn-adapters-filter-btn--active\",\n                )}\n                onClick={() => setFilterStatus(s)}\n                aria-pressed={filterStatus() === s}\n              >\n                <AdapterStatusBadge status={s} showLabel={false} /> {s}\n              </button>\n            )}\n          </For>\n        </div>\n\n        <AdapterList\n          onSelect={(domain) => {\n            if (props.onNavigateDetail) props.onNavigateDetail(domain);\n            else setSelectedDomain(domain);\n          }}\n          filterStatus={filterStatus()}\n        />\n\n        <Show when={selectedDomain()}>\n          {(domain) => (\n            <div class=\"gn-adapters-modal-overlay\">\n              <button\n                type=\"button\"\n                aria-label=\"Close adapter configuration\"\n                class=\"gn-adapters-modal-backdrop\"\n                onClick={() => setSelectedDomain(null)}\n              />\n              <div\n                ref={(element) => {\n                  modalRef = element;\n                }}\n                class=\"gn-adapters-modal\"\n                role=\"dialog\"\n                aria-modal=\"true\"\n                aria-labelledby={modalTitleId}\n                tabIndex={-1}\n              >\n                <AdapterConfigForm\n                  domain={domain()}\n                  titleId={modalTitleId}\n                  initialConfig={props.configByDomain?.[domain()]}\n                  onSave={async (config) => {\n                    // Forward the submitted config to the consumer before\n                    // closing the modal — matches the SolidJS reference.\n                    await props.onConfigure?.(domain(), config);\n                    setSelectedDomain(null);\n                  }}\n                  onCancel={() => setSelectedDomain(null)}\n                />\n              </div>\n            </div>\n          )}\n        </Show>\n      </div>\n    </Show>\n  );\n}\n"]}