# @fayegram-ai/faye-ui/contracts

Public exports and dependency-resolved component properties, with usage and rendering guidance.

## Import

```tsx
import { assertIdentifier, isRecord, assertRecord } from '@fayegram-ai/faye-ui/contracts';
```

[Usage and behavior guide](/docs/customization/) · [API JSON](/api/packages/contracts/index.json)

This entry has no declared client boundary; individual exported behavior still follows its rendering contract.

## Public exports

| Name | Kind | Resolved declaration type |
|---|---|---|
| `assertIdentifier` | value | `(value: unknown, path: string) => asserts value is string` |
| `isRecord` | value | `(value: unknown) => value is Record<string, unknown>` |
| `assertRecord` | value | `(value: unknown, path: string) => asserts value is Record<string, unknown>` |
| `validateTokenContract` | value | `(schema: TokenContract) => TokenContract` |
| `assertPortable` | value | `(value: unknown, maxBytes?: number) => asserts value is JsonValue` |
| `parsePortable` | value | `(source: string, maxBytes?: number) => JsonValue` |
| `deepFreeze` | value | `<T>(value: T) => Readonly<T>` |
| `canonicalJson` | value | `(value: unknown) => string` |
| `validateDescriptor` | value | `(value: ComponentDescriptor) => ComponentDescriptor` |
| `resolveAccessibility` | value | `(...sources: readonly (AccessibilityOptions \| undefined)[]) => AccessibilityPreferences` |
| `accessibilityAttributes` | value | `(options?: AccessibilityOptions) => { readonly "data-faye-ui-focus": "auto" \| "always"; readonly "data-faye-ui-hints": "auto" \| "always"; readonly "data-faye-ui-contrast": "system" \| "more"; }` |
| `InteractionOptions` | type | `InteractionOptions` |
| `InteractionVariant` | type | `InteractionVariant` |
| `InteractionLevel` | type | `InteractionLevel` |
| `TrackInteractionEffect` | type | `TrackInteractionEffect` |
| `InteractionVariantOverrides` | type | `InteractionVariantOverrides` |
| `IconAttribute` | type | `IconAttribute` |
| `IconAttributes` | type | `Readonly<Record<string, IconAttribute>>` |
| `IconNode` | type | `IconNode` |
| `IconDefinition` | type | `IconDefinition` |
| `SCHEMA_VERSION` | value | `1` |
| `Scheme` | type | `Scheme` |
| `ColorPreference` | type | `ColorPreference` |
| `Density` | type | `Density` |
| `Direction` | type | `Direction` |
| `TokenType` | type | `TokenType` |
| `TokenValue` | type | `TokenValue` |
| `TokenReference` | type | `TokenReference` |
| `TokenDefinition` | type | `TokenDefinition` |
| `TokenSet` | type | `Readonly<Record<string, TokenDefinition>>` |
| `TokenSpec` | type | `TokenSpec` |
| `TokenContract` | type | `Readonly<Record<string, TokenSpec>>` |
| `ThemeAxis` | type | `ThemeAxis` |
| `ThemeAxes` | type | `Readonly<Record<string, ThemeAxis>>` |
| `ThemeCondition` | type | `ThemeCondition` |
| `ThemeDefinition` | type | `ThemeDefinition` |
| `ResolvedTheme` | type | `ResolvedTheme` |
| `JsonPrimitive` | type | `JsonPrimitive` |
| `JsonValue` | type | `JsonValue` |
| `StyleValue` | type | `StyleValue` |
| `Declarations` | type | `Readonly<Record<string, StyleValue>>` |
| `PseudoState` | type | `PseudoState` |
| `ComponentDescriptor` | type | `ComponentDescriptor` |
| `StyleRule` | type | `StyleRule` |
| `ComponentSheet` | type | `ComponentSheet` |
| `SheetPatch` | type | `SheetPatch` |
| `ComponentProfile` | type | `ComponentProfile` |
| `CompiledSheet` | type | `CompiledSheet` |
| `ExtensionDescriptor` | type | `ExtensionDescriptor` |
| `ContractError` | value | `typeof ContractError` |
| `AccessibilityOptions` | type | `AccessibilityOptions` |
| `AccessibilityPreferences` | type | `Readonly<Required<AccessibilityOptions>>` |
| `defaultAccessibility` | value | `Readonly<Required<AccessibilityOptions>>` |



## Defaults and customization

Defaults and native behavior are documented in the linked family guide. This reference does not infer a default from an optional property.

Use semantic tokens, public part hooks and customization sheets. Keep visual configuration separate from application state.

## State, events and accessibility

For interactive controls, pair a controlled value/open prop with its corresponding change callback; default props initialize uncontrolled state. Keep application validation and submission policy explicit. Name controls with visible labels, name icon-only actions on the button, and preserve focus and dismissal behavior when replacing parts. Use native form names and submit/reset types where supported. See the usage guide for component-specific behavior and live examples.

## Declaration authority

Generated from `packages/faye-ui/dist/contracts/index.d.ts` after the semantic package build. Common native/React attributes are intentionally omitted from property tables. Generic overloads, discriminated unions and complete inherited attributes remain authoritative in installed TypeScript declarations. [React DOM attributes](https://react.dev/reference/react-dom/components/common) and [Base UI component contracts](https://base-ui.com/react/overview/quick-start) describe the inherited foundations.
