/** * Tabs - ported from Veryfront Studio `components/Tabs/Tabs.tsx`, with the * `motion/react` spring-slide forked out: the active pill is a static * background (no dependency, no layout animation), only the `transition-colors` * CSS that Studio already ships. Semantic classes remapped to veryfront's * `[var(--token)]` vocabulary. * * The selection MECHANICS (`role="tablist"` / `role="tab"`, `aria-selected`, * select-on-click) come from the active adapter's `tabs` slot * (`useAdapter().tabs`) - with no provider that is the zero-dependency builtin, * so behaviour and markup are unchanged. This skin owns only the API shape, the * `size` variant, and the visual look (including the active pill), which it * drives from the controlled `value` prop. * * Flat, prefixed exports (`Tabs` + `TabsItem`) to match the other `ui/` * primitives (`SelectItem`, `DialogTrigger`, …). Note: `cn` is clsx-only (no * tailwind-merge), so overriding a base utility via `className` needs the `!` * suffix (e.g. `px-8!`). * * Two sizes: * - `default` - filled track (`--input-bg`), 34/38px, accent pill. * - `sm` - flat, outlined, 32px, for panel headers. * * @example * ```tsx * import { Tabs, TabsItem } from "veryfront/ui"; * * function Example() { * const [tab, setTab] = React.useState("overview"); * return ( * * Overview * Activity * * ); * } * ``` * * @module react/components/ui/tabs */ import * as React from "react"; type TabsSize = "default" | "sm"; /** Props accepted by `` (the tablist container). */ export interface TabsProps extends Omit, "onChange"> { value: string; onValueChange: (value: string) => void; size?: TabsSize; children: React.ReactNode; } /** Tablist container - delegates selection to the adapter, owns the size + look. */ export declare const Tabs: any; /** Props accepted by ``. */ export interface TabsItemProps extends Omit, "value"> { value: string; href?: string; children: React.ReactNode; } /** * Individual tab - renders as a button, or an anchor when `href` is set. The * adapter's `tabs.Tab` supplies the `role="tab"` / `aria-selected` / `data-state` * mechanics and composes selection onto the caller's `onClick` (caller's runs * first, then the tab activates); this skin renders the visual pill and forwards * native props/ref. */ export declare const TabsItem: any; export {}; //# sourceMappingURL=tabs.d.ts.map