// The public surface of @ultimat3/ui. Explicit exports only — this list is the
// design system's contract, and anything not named here is internal.
// Ambient declarations are not reachable through imports, so a consuming app's
// program would never load them — every `*.module.scss` import in this package
// would be TS2307 there. The reference pulls the contract along with the entry.
///
// Bare, and above every re-export: `theme/ambient.ts` registers the server's `useUi()` reader at
// import, and a bundler may drop a re-exported module whose binding nobody used. A browser build
// resolves this specifier to `theme/ambient.browser.ts` through `package.json`'s `browser` field,
// so an island never carries the i18n barrel for it (issue #490).
import './theme/ambient';
export type {
FocusTrap,
LiveRegionAttrs,
Politeness,
RovingOptions,
RovingOrientation,
} from './a11y';
export {
announce,
ariaBool,
FOCUSABLE_SELECTOR,
focusableWithin,
focusTrap,
LIVE_REGION_LEVELS,
liveRegionAttrs,
resetUseIdCounter,
rovingTabindex,
useId,
} from './a11y';
export type { AccordionItem, AccordionProps } from './components/Accordion';
// --- components --------------------------------------------------------------
export { Accordion } from './components/Accordion';
export type { AlertProps } from './components/Alert';
export { Alert } from './components/Alert';
export type { AppShellProps } from './components/AppShell';
export { AppShell } from './components/AppShell';
export type { AsyncRegionProps } from './components/AsyncRegion';
// --- async regions: the one four-way decision, and the component that renders it --------------
export { AsyncRegion } from './components/AsyncRegion';
export type { AvatarProps } from './components/Avatar';
export { Avatar, initialsOf } from './components/Avatar';
export type { AccordionSection } from './components/accordion-view';
export type { ShellIds, ShellLandmark, ShellSlots } from './components/app-shell-view';
export { shellIds } from './components/app-shell-view';
export type {
AsyncBranch,
AsyncFlags,
ReserveBox,
} from './components/async-branch';
export {
asyncBranch,
asyncStateOf,
isBusyBranch,
isEmptyData,
reserveBlockSize,
} from './components/async-branch';
export type { BadgeProps } from './components/Badge';
export { Badge } from './components/Badge';
export type { BarChartProps } from './components/BarChart';
export { BarChart } from './components/BarChart';
export type { BreadcrumbItem, BreadcrumbProps } from './components/Breadcrumb';
export { Breadcrumb } from './components/Breadcrumb';
export type { ButtonProps } from './components/Button';
export { Button } from './components/Button';
export type { BarRect, ChartPoint } from './components/bar-chart-view';
export { barRects } from './components/bar-chart-view';
export type { CardProps, Elevation } from './components/Card';
export { Card } from './components/Card';
export type { ChartFrameProps, ChartLegendItem } from './components/ChartFrame';
export { ChartFrame } from './components/ChartFrame';
export type { CheckboxProps } from './components/Checkbox';
export { Checkbox } from './components/Checkbox';
export type { ComboboxProps } from './components/Combobox';
export { Combobox } from './components/Combobox';
export type { CommandPaletteLabels, CommandPaletteProps } from './components/CommandPalette';
export { CommandPalette } from './components/CommandPalette';
export type { ContainerProps, ContainerSize } from './components/Container';
export { Container } from './components/Container';
export type { CopyButtonProps } from './components/CopyButton';
export { COPIED_MS, CopyButton } from './components/CopyButton';
export type {
ChartSeries,
ChartTable,
ChartTableInput,
ChartTableRow,
MarkerShape,
SeriesStyle,
} from './components/chart-frame-view';
export { CHART_SERIES_SLOTS, chartTable, seriesStyle } from './components/chart-frame-view';
export type { NiceScale, NiceTicksOptions } from './components/chart-ticks-view';
export { niceTicks } from './components/chart-ticks-view';
export type { ComboboxOption } from './components/combobox-filter';
export { filterOptions, normalizeQuery } from './components/combobox-filter';
export type { CommandPaletteItem, PaletteKeyAction } from './components/command-palette-view';
export {
filterItems,
keyAction,
settleActive,
stepActive,
} from './components/command-palette-view';
export type {
Column,
DataTableCallbackProps,
DataTableLinkProps,
DataTableNarrow,
DataTableProps,
} from './components/DataTable';
export { DataTable } from './components/DataTable';
export type { DateTimeProps } from './components/DateTime';
export { DateTime } from './components/DateTime';
export type { DialogProps } from './components/Dialog';
export { Dialog } from './components/Dialog';
export type { DividerProps } from './components/Divider';
export { Divider } from './components/Divider';
export type { DonutChartProps, DonutSegment } from './components/DonutChart';
export { DonutChart } from './components/DonutChart';
export type { DrawerProps, DrawerSide } from './components/Drawer';
export { Drawer } from './components/Drawer';
export type { DropzoneProps } from './components/Dropzone';
export { Dropzone } from './components/Dropzone';
export type { ColumnPriority } from './components/data-table-view';
export type {
DateStyle,
DateTimeFormatter,
DateTimeView,
DateTimeViewOptions,
TimeInput,
} from './components/date-time-view';
export { dateTimeView, toDate, toInstant, toIsoInstant } from './components/date-time-view';
export type { EmptyStateProps } from './components/EmptyState';
export { EmptyState } from './components/EmptyState';
export type { ErrorStateProps } from './components/ErrorState';
export { ErrorState, errorParts } from './components/ErrorState';
export type { FieldControl, FieldProps } from './components/Field';
export { Field } from './components/Field';
export type { FileInputProps } from './components/FileInput';
export { FileInput } from './components/FileInput';
export type { FormProps } from './components/Form';
export { Form } from './components/Form';
export type {
FileCandidate,
FileRejection,
FileRejectionReason,
FileSelection,
FileSelectionLimits,
FileTarget,
} from './components/file-input-view';
export {
formatFileSize,
selectFiles,
} from './components/file-input-view';
export type { GaugeProps } from './components/Gauge';
export { Gauge } from './components/Gauge';
export type { GridProps } from './components/Grid';
export { Grid } from './components/Grid';
export type { HeadingLevel, HeadingTag } from './components/heading-level';
export { HEADING_LEVELS, headingTag, nextHeadingLevel } from './components/heading-level';
export type { IconProps } from './components/Icon';
// --- icons: the glyphs themselves are per-icon modules, `@ultimat3/ui/icons/` ---------
export { Icon } from './components/Icon';
export type { IconButtonProps } from './components/IconButton';
export { IconButton } from './components/IconButton';
export type { ImageBaseProps, ImageDimensions, ImageProps } from './components/Image';
export { Image } from './components/Image';
export type { InfiniteScrollProps } from './components/InfiniteScroll';
export { InfiniteScroll } from './components/InfiniteScroll';
export type { InlineBarProps } from './components/InlineBar';
export { InlineBar } from './components/InlineBar';
export type { InputProps, InputType } from './components/Input';
export { Input } from './components/Input';
export type { IconElement, IconGlyph, IconTag } from './components/icon-glyph';
export { ICON_TAGS, iconElements } from './components/icon-glyph';
export type {
ImageAspectRatio,
ImageBox,
ImageLoadingHints,
ImageSourceSet,
ImageSources,
ImageVariant,
} from './components/image-source';
export { boxFor, reservedRatio, sourceSetsFor, variantSrcset } from './components/image-source';
export type { LoadMoreInput, LoadMoreState } from './components/infinite-scroll-view';
export type { KbdProps } from './components/Kbd';
export { Kbd } from './components/Kbd';
export type { AreaChartProps, LineChartProps } from './components/LineChart';
export { AreaChart, LineChart } from './components/LineChart';
export type { ButtonLinkProps, LinkProps, TextLinkProps } from './components/Link';
export { Link } from './components/Link';
export type { LocaleSwitcherProps } from './components/LocaleSwitcher';
export { LocaleSwitcher, localeLabel } from './components/LocaleSwitcher';
export type { LinkTarget } from './components/link-target';
export type { MenuItem, MenuProps } from './components/Menu';
export { Menu } from './components/Menu';
export type { MeterProps } from './components/Meter';
export { Meter } from './components/Meter';
export type { MoneyProps } from './components/Money';
export { Money } from './components/Money';
export type { MoneyFormatter, MoneyInput, MoneyViewOptions } from './components/money-view';
// --- formatting cores (pure, renderer-free) ----------------------------------
export { moneyText, toMoney } from './components/money-view';
export type { PageHeaderProps } from './components/PageHeader';
export { PageHeader } from './components/PageHeader';
export type {
PaginationCallbackProps,
PaginationLinkProps,
PaginationProps,
} from './components/Pagination';
export { Pagination } from './components/Pagination';
export type { Placement, PopoverProps } from './components/Popover';
export { Popover } from './components/Popover';
export type { QrCodeProps } from './components/QrCode';
export { QrCode } from './components/QrCode';
export type { QrMatrix } from './components/qr-matrix';
export { encodeQr } from './components/qr-matrix';
export type { RadioOption, RadioProps } from './components/Radio';
export { Radio } from './components/Radio';
export type { RelativeTimeProps } from './components/RelativeTime';
export { RelativeTime } from './components/RelativeTime';
export type { RelativeTimeOptions } from './components/relative-time-view';
export type { SectionProps } from './components/Section';
export { Section } from './components/Section';
export type { SelectOption, SelectProps } from './components/Select';
export { Select } from './components/Select';
export type { SkeletonProps } from './components/Skeleton';
export { Skeleton } from './components/Skeleton';
export type { SparklineProps } from './components/Sparkline';
export { Sparkline } from './components/Sparkline';
export type { SpinnerProps } from './components/Spinner';
export { Spinner } from './components/Spinner';
export type { StackProps } from './components/Stack';
export { Stack } from './components/Stack';
export type { StatTileProps } from './components/StatTile';
export { StatTile } from './components/StatTile';
export type { SwitchProps } from './components/Switch';
export { Switch } from './components/Switch';
export type { SortDirection, SortState } from './components/sort-state';
export type { SparkPoint } from './components/sparkline-view';
export { sparklinePath } from './components/sparkline-view';
export type { StatDelta, StatTrend } from './components/stat-delta';
export { deltaOf } from './components/stat-delta';
export type { TableProps } from './components/Table';
export { Table } from './components/Table';
export type { TabItem, TabsProps } from './components/Tabs';
export { Tabs } from './components/Tabs';
export type { TextProps, TextSize, TextTone, TextWeight } from './components/Text';
export { TEXT_TONES, Text } from './components/Text';
export type { TextareaProps } from './components/Textarea';
export { Textarea } from './components/Textarea';
export type { ThemeChoice, ThemeToggleProps } from './components/ThemeToggle';
export { ThemeToggle } from './components/ThemeToggle';
export type { ToastPlacement, ToastProps, ToastRegionProps } from './components/Toast';
export { Toast, ToastRegion } from './components/Toast';
export type { ToasterProps } from './components/Toaster';
export { Toaster } from './components/Toaster';
export type { ToolbarProps } from './components/Toolbar';
export { Toolbar } from './components/Toolbar';
export type { TooltipProps } from './components/Tooltip';
export { Tooltip } from './components/Tooltip';
export type { Align, ButtonVariant, Size, SpaceStep, Tone } from './components/variants';
// --- variants ----------------------------------------------------------------
export { BUTTON_VARIANTS, SIZES, TONES } from './components/variants';
export type { ClassValue } from './cx';
// --- helpers -----------------------------------------------------------------
export { cx } from './cx';
export type { Debounced } from './debounce';
export { DEBOUNCE_DEFAULT_MS, debounce } from './debounce';
export type { UiErrorCode } from './errors';
export {
conflictingFieldNameError,
insufficientContrastError,
invalidBrandTokenError,
invalidFieldPathError,
invalidGlyphError,
invalidIconDataError,
invalidThemeError,
invalidValueError,
providerNeedsRuntimeError,
runtimeMissingError,
UI_ERROR_CODES,
UiError,
unknownTokenError,
} from './errors';
// --- forms: the binding between an action's input schema and Field's error slot ---------------
export type { FieldPathSegment, IssuePathSegment } from './form/field-path';
export { fieldSelector, formatFieldPath, MAX_FIELD_INDEX, parseFieldPath } from './form/field-path';
export type { FormBinding, FormBindingOptions } from './form/form-binding';
export { formBinding } from './form/form-binding';
export type {
FormIssue,
FormSchema,
FormValidationIssue,
FormValidationResult,
} from './form/form-issue';
export { issuesFromRejection, issuesFromValidation } from './form/form-issue';
export type { FormErrors, FormState, FormStatus } from './form/form-state';
export {
errorOf,
firstInvalidField,
IDLE_FORM_STATE,
NO_FORM_ERRORS,
} from './form/form-state';
export type { FormTouch } from './form/form-touch';
export {
isFormDirty,
markDirty,
markTouched,
NO_FORM_TOUCH,
} from './form/form-touch';
export { valuesOfForm } from './form/form-values';
export { useForm } from './form/use-form';
export type { UiKey } from './i18n-keys';
export { UI_KEYS } from './i18n-keys';
export type { ArrowKeyElement, RovingItem } from './roving';
export {
handlesOwnArrowKeys,
MENU_ITEM_SELECTOR,
TAB_SELECTOR,
tabStopIndex,
} from './roving';
export { ambientUiContext } from './theme/ambient';
export type { Brand, BrandInput, FontSlot } from './theme/brand';
export { brandStyleCspSource, brandStyleTag, defineTheme, FONT_SLOTS } from './theme/brand';
export type { Direction, UiContextValue } from './theme/context';
export {
defaultUiContext,
fallbackTranslator,
UI_DEFAULT_CURRENCY,
UI_DEFAULT_LOCALE,
UI_DEFAULT_TIME_ZONE,
uiContext,
useUi,
} from './theme/context';
export { INERT_SOLID_RUNTIME } from './theme/inert-runtime';
export type { ThemePreset } from './theme/preset-shape';
export type { ThemePresetName } from './theme/presets';
export { THEME_PRESET_NAMES, THEME_PRESETS } from './theme/presets';
export type { UiProviderProps } from './theme/provider';
export { UiProvider } from './theme/provider';
// The slot is its own module so that registering a runtime does not drag `errors.ts` — and with it
// @ultimat3/core's error registry — into an island chunk. `barrel-bytes.test.ts` holds the ceiling.
export { hasSolidRuntime, setSolidRuntime } from './theme/runtime-slot';
export type { Accessor, Setter, SolidContext, SolidRuntime } from './theme/solid-adapter';
export { solid } from './theme/solid-adapter';
export type { ThemeEnv } from './theme/theme';
// --- theme -------------------------------------------------------------------
export {
browserThemeEnv,
clearTheme,
defaultTheme,
initTheme,
isTheme,
osTheme,
resolveTheme,
setTheme,
storedTheme,
THEME_ATTRIBUTE,
THEME_DEFAULT_ATTRIBUTE,
THEME_MEDIA_QUERY,
toggleTheme,
watchOsTheme,
} from './theme/theme';
export type {
ToastAction,
ToastDwell,
ToastHold,
ToastInput,
ToastItem,
ToastQueue,
} from './toast/toast-state';
// --- toasts: the queue behind ToastRegion ------------------------------------
export {
TOAST_DWELL_MS,
TOAST_MAX_VISIBLE,
} from './toast/toast-state';
export type { ToastEnv, ToastStore } from './toast/toast-store';
export { browserToastEnv, INERT_TOAST_ENV, toastStore } from './toast/toast-store';
export { useToasts } from './toast/use-toasts';
export type { ColourVision } from './tokens/colour-vision';
export {
CHART_DISTINCT_MIN,
COLOUR_VISIONS,
closestChartPair,
colourDistance,
simulateColourVision,
} from './tokens/colour-vision';
export type { Channels } from './tokens/contrast';
export {
AA_LARGE,
AA_TEXT,
contrastRatio,
meetsContrast,
relativeLuminance,
roleContrast,
} from './tokens/contrast';
export type { ContrastPair } from './tokens/contrast-pairs';
export { CONTRAST_PAIRS } from './tokens/contrast-pairs';
export type { ChartRole, ColorRole, RadiusName, ShadowName, Theme } from './tokens/tokens';
// --- tokens ------------------------------------------------------------------
export {
assertColorRole,
breakpointTokens,
CHART_ROLES,
COLOR_ROLES,
color,
colorRgb,
colorTokens,
colorVar,
durationTokens,
easingTokens,
fontSizeTokens,
fontWeightTokens,
lineHeightTokens,
radiusTokens,
SHADOW_NAMES,
shadowTokens,
spaceTokens,
strokeTokens,
touchTokens,
zTokens,
} from './tokens/tokens';
export { uiCatalog } from './ui-catalog';