The umbrella is the **intersection**, not the union: a name is on it only when both renderers
publish it under the same name and the same contract. The list is declared once, in
`PORTABLE_API` in `@asheeui/core`, and both umbrella entries are generated from it, so the two
branches cannot differ.

There are **182 names** (90 from `@asheeui/core`, 92 from the branch
renderer), plus the platform-specific `AsheeConfig` alias.

## What is not here

A name only one renderer has is not on the umbrella. It stays with the renderer that owns it,
so a shared file that imports it is a compile error on the platform that lacks it — which is
the point. The compatibility matrix (`@asheeui/core/dev`) records the classification, and the
umbrella guard (`pnpm check:umbrella`) fails when the list and the matrix disagree.

```ts
import { Breadcrumb } from "@asheeui/web";        // web-only
import { RowList, TabBar } from "@asheeui/native"; // native-only
```

The section kit is on its own subpath, because it is composition vocabulary rather than the
component inventory: `ActionGroup` and `SectionHeading` come from `asheeui/section-kit`. The
web-only `SkipLink` stays on `@asheeui/web/section-kit`.

## Adding a name

A name becomes portable in three steps: both renderers publish it, the matrix classifies it
`shared` or `shared-api`, and the name is added to `PORTABLE_API` with its `kind` and `source`.
The generator writes it into both umbrella entries, and the guard fails until the two agree.
Editing this page is not one of the steps: rerun `node scripts/build-portable-surface.mjs`.

## Components

Render on both platforms under the same name and the same props.

| Name | Published by | Support |
| --- | --- | --- |
| `Accordion` | the renderer | shared-api |
| `Alert` | the renderer | shared |
| `AuthLayout` | the renderer | shared-api |
| `Autocomplete` | the renderer | shared-api |
| `Avatar` | the renderer | shared |
| `Badge` | the renderer | shared |
| `Button` | the renderer | shared |
| `CTA` | the renderer | shared-api |
| `Calendar` | the renderer | shared-api |
| `Card` | the renderer | shared |
| `Carousel` | the renderer | shared-api |
| `Centered` | the renderer | shared-api |
| `Chip` | the renderer | shared |
| `Clipboard` | the renderer | shared-api |
| `Container` | the renderer | shared-api |
| `CopyButton` | the renderer | shared |
| `DataTable` | the renderer | shared-api |
| `DocsLayout` | the renderer | shared-api |
| `Drawer` | the renderer | shared-api |
| `Dropdown` | the renderer | shared |
| `Dropmenu` | the renderer | shared-api |
| `EmptyState` | the renderer | shared |
| `ErrorState` | the renderer | shared |
| `FeatureGrid` | the renderer | shared-api |
| `FileUpload` | the renderer | shared-api |
| `Footer` | the renderer | shared-api |
| `Form` | the renderer | shared |
| `Grid` | the renderer | shared-api |
| `HStack` | the renderer | shared |
| `Hero` | the renderer | shared-api |
| `Image` | the renderer | shared |
| `Input` | the renderer | shared |
| `Link` | the renderer | shared-api |
| `LoadingState` | the renderer | shared |
| `MarketingLayout` | the renderer | shared-api |
| `Marquee` | the renderer | shared-api |
| `Modal` | the renderer | shared-api |
| `MultiSelect` | the renderer | shared-api |
| `Navbar` | the renderer | shared-api |
| `Page` | the renderer | shared-api |
| `PageContent` | the renderer | shared |
| `PageFooter` | the renderer | shared |
| `PageHeader` | the renderer | shared |
| `Pagination` | the renderer | shared-api |
| `PasswordInput` | the renderer | shared |
| `PinInput` | the renderer | shared |
| `PricingCard` | the renderer | shared-api |
| `Radio` | the renderer | shared |
| `RadioGroup` | the renderer | shared |
| `SearchInput` | the renderer | shared |
| `Section` | the renderer | shared |
| `Sidebar` | the renderer | shared-api |
| `SidebarLayout` | the renderer | shared-api |
| `Skeleton` | the renderer | shared |
| `Spinner` | the renderer | shared |
| `Split` | the renderer | shared-api |
| `Stack` | the renderer | shared |
| `Stepper` | the renderer | shared |
| `Switch` | the renderer | shared |
| `Table` | the renderer | shared-api |
| `Tabs` | the renderer | shared-api |
| `Testimonials` | the renderer | shared-api |
| `Text` | the renderer | shared-api |
| `Textarea` | the renderer | shared |
| `ToastItem` | the renderer | shared |
| `Tooltip` | the renderer | shared-api |
| `Typography` | the renderer | shared-api |
| `VStack` | the renderer | shared |

## Providers

Wrap an application once; both renderers read the same provider.

| Name | Published by | Support |
| --- | --- | --- |
| `AsheeUIProvider` | the renderer | shared |
| `ToastProvider` | the renderer | shared-api |

## Hooks

Read state the same way on both platforms.

| Name | Published by | Support |
| --- | --- | --- |
| `useAshee` | the renderer | shared |
| `useAsheeConfig` | the renderer | shared |
| `useBreakpoint` | the renderer | shared |
| `usePrefersReducedMotion` | the renderer | shared |
| `useReduceMotion` | the renderer | shared |
| `useSidebarCollapse` | the renderer | shared |
| `useTheme` | the renderer | shared |
| `useToast` | the renderer | shared |

## Helpers

A pure function both renderers publish.

| Name | Published by | Support |
| --- | --- | --- |
| `cn` | the renderer | shared |
| `mergeObject` | `@asheeui/core` | shared |
| `resolveAnimate` | the renderer | shared |
| `resolveBreakpoint` | `@asheeui/core` | shared |
| `resolveCardVariant` | `@asheeui/core` | shared |
| `resolveCascade` | `@asheeui/core` | shared |
| `resolveClassKey` | `@asheeui/core` | shared |
| `resolveConfigCascade` | `@asheeui/core` | shared |
| `resolveGridColumns` | `@asheeui/core` | shared |
| `resolveRadiusKey` | `@asheeui/core` | shared |

## Constants

A value both platforms name.

| Name | Published by | Support |
| --- | --- | --- |
| `AsheeConfigContext` | the renderer | shared |
| `SidebarCollapseContext` | the renderer | shared |
| `THEME_STORAGE_KEY` | `@asheeui/core` | shared |
| `ToastContext` | the renderer | shared |
| `themeController` | the renderer | shared |

## Types

The vocabulary a shared file types its props with.

| Name | Published by | Support |
| --- | --- | --- |
| `AccordionItem` | `@asheeui/core` | shared |
| `AccordionSizeKey` | `@asheeui/core` | shared |
| `AccordionVariant` | `@asheeui/core` | shared |
| `AsheeColorRegistry` | `@asheeui/core` | shared |
| `AsheeUIProviderProps` | the renderer | shared |
| `AuthLayoutAlign` | `@asheeui/core` | shared |
| `AuthLayoutMediaPosition` | `@asheeui/core` | shared |
| `BreakpointName` | `@asheeui/core` | shared |
| `BreakpointState` | `@asheeui/core` | shared |
| `CardImageLoading` | `@asheeui/core` | shared |
| `CardImagePosition` | `@asheeui/core` | shared |
| `CardVariant` | `@asheeui/core` | shared |
| `CarouselItem` | `@asheeui/core` | shared |
| `CarouselVariant` | `@asheeui/core` | shared |
| `CenteredAxis` | `@asheeui/core` | shared |
| `ClipboardState` | the renderer | shared |
| `Color` | `@asheeui/core` | shared |
| `ColorVariant` | `@asheeui/core` | shared |
| `ColumnDef` | `@asheeui/core` | shared |
| `ContainerSize` | `@asheeui/core` | shared |
| `CtaPanel` | `@asheeui/core` | shared |
| `DrawerConfigOptions` | `@asheeui/core` | shared |
| `DrawerPlacement` | `@asheeui/core` | shared |
| `DrawerSize` | `@asheeui/core` | shared |
| `ErrorStateRole` | `@asheeui/core` | shared |
| `ExternalConfig` | `@asheeui/core` | shared |
| `FeatureGridLink` | the renderer | shared |
| `FeatureItem` | `@asheeui/core` | shared |
| `FooterGroup` | `@asheeui/core` | shared |
| `FooterLink` | the renderer | shared |
| `FooterLinkItem` | `@asheeui/core` | shared |
| `FooterVariant` | `@asheeui/core` | shared |
| `GridAlign` | `@asheeui/core` | shared |
| `GridColumns` | `@asheeui/core` | shared |
| `HeroAlign` | `@asheeui/core` | shared |
| `HeroMediaPosition` | `@asheeui/core` | shared |
| `ImageFit` | `@asheeui/core` | shared |
| `ImageRatioKey` | `@asheeui/core` | shared |
| `LinkSubstitution` | `@asheeui/core` | shared |
| `LinkUnderline` | `@asheeui/core` | shared |
| `LinkVariant` | `@asheeui/core` | shared |
| `MarketingLayoutBackground` | `@asheeui/core` | shared |
| `MarqueeAxis` | `@asheeui/core` | shared |
| `MarqueeDirection` | `@asheeui/core` | shared |
| `MarqueeSpeedPreset` | `@asheeui/core` | shared |
| `ModalPosition` | `@asheeui/core` | shared |
| `ModalSizeKey` | `@asheeui/core` | shared |
| `NavbarAlign` | `@asheeui/core` | shared |
| `NavbarLink` | `@asheeui/core` | shared |
| `NavbarLinkItem` | `@asheeui/core` | shared |
| `NavbarPosition` | `@asheeui/core` | shared |
| `NavbarVariant` | `@asheeui/core` | shared |
| `PaginationLink` | the renderer | shared |
| `PricingCardVariant` | `@asheeui/core` | shared |
| `PricingFeatureItem` | `@asheeui/core` | shared |
| `Radius` | `@asheeui/core` | shared |
| `SidebarCollapse` | the renderer | shared |
| `SidebarItem` | `@asheeui/core` | shared |
| `SidebarItems` | `@asheeui/core` | shared |
| `SidebarLayoutSide` | `@asheeui/core` | shared |
| `SidebarLayoutWidth` | `@asheeui/core` | shared |
| `SidebarLinkSubstitution` | `@asheeui/core` | shared |
| `SidebarSection` | `@asheeui/core` | shared |
| `SidebarSizeKey` | `@asheeui/core` | shared |
| `SidebarVariant` | `@asheeui/core` | shared |
| `Size` | `@asheeui/core` | shared |
| `Space` | `@asheeui/core` | shared |
| `SplitAlign` | `@asheeui/core` | shared |
| `SplitRatio` | `@asheeui/core` | shared |
| `SplitStackAt` | `@asheeui/core` | shared |
| `StackAlign` | `@asheeui/core` | shared |
| `StackDirection` | `@asheeui/core` | shared |
| `StackJustify` | `@asheeui/core` | shared |
| `StepperStep` | the renderer | shared |
| `Substitution` | `@asheeui/core` | shared |
| `TabItem` | `@asheeui/core` | shared |
| `TableVariant` | `@asheeui/core` | shared |
| `TabsVariant` | `@asheeui/core` | shared |
| `TestimonialItem` | `@asheeui/core` | shared |
| `ThemeName` | `@asheeui/core` | shared |
| `ThemeSelection` | `@asheeui/core` | shared |
| `ToastContextType` | the renderer | shared |
| `ToastItemData` | `@asheeui/core` | shared |
| `ToastPlacement` | `@asheeui/core` | shared |
| `ToastShowOptions` | `@asheeui/core` | shared |
| `ToastType` | `@asheeui/core` | shared |
| `TooltipPlacement` | `@asheeui/core` | shared |
| `TooltipSizeKey` | `@asheeui/core` | shared |
| `Variant` | `@asheeui/core` | shared |

---

Generated from `PORTABLE_API` by `scripts/build-portable-surface.mjs`. Do not edit by hand.
