import type * as React from 'react'; import type { RadiusToken, SpaceToken } from './tokens.js'; export type MaterialVariant = 'regular' | 'clear' | 'identity'; export type Thickness = 'thin' | 'regular' | 'thick'; export type Layer = 'chrome' | 'overlay' | 'transient' | 'content'; export type LayerAttr = Layer | 'scrim'; export type ContentMaterial = 'content-raised' | 'content-sunken'; export type Backdrop = 'light' | 'dark' | 'media' | 'auto'; export type Tier = 'lightweight' | 'standard' | 'enhanced' | 'cinematic'; export type DomTier = Exclude; export type Engine = 'chromium' | 'webkit' | 'gecko' | 'unknown'; export type Transparency = 'glass' | 'tinted' | 'solid'; export type Shape = 'fixed' | 'capsule' | 'concentric'; export type EdgeStyle = 'soft' | 'hard'; export interface MaterialRole { layer?: Layer; variant?: MaterialVariant; thickness?: Thickness; content?: ContentMaterial; shape?: Shape; fallbackRadius?: RadiusToken; interactive?: boolean; prominent?: boolean; /** * Enhanced-tier edge refraction (bezel-band lens, D-05). Inert unless the provider mounted * `LensDefs` and the enhanced selector matches; ignored with a dev warning on non-chrome layers. * @preview Ships inert until L8 certification passes at RC-1; otherwise promoted in 5.1 (REQ-MAT-36). */ refraction?: boolean; allowNested?: boolean; } /** C-1 (v1.2): no className key. Material CSS keys on [data-ag-surface]; materialProps() returns data-ag-* attributes only. */ export interface MaterialAttributes { 'data-ag-surface': ''; 'data-ag-layer': Layer; 'data-ag-variant'?: MaterialVariant; 'data-ag-thickness'?: Thickness; 'data-ag-content'?: ContentMaterial; 'data-ag-shape'?: Shape; 'data-ag-interactive'?: ''; 'data-ag-prominent'?: ''; 'data-ag-refraction'?: ''; 'data-ag-allow-nested'?: ''; } export type MaterialPropsFn = (role: MaterialRole) => MaterialAttributes; export type UseMaterialTier = () => Tier; export interface SurfaceProps extends MaterialRole, Omit, 'content'> { render?: React.ReactElement; ref?: React.Ref; } export interface SurfaceGroupProps { spacing?: SpaceToken; children: React.ReactNode; className?: string; /** * Group-level enhanced-tier refraction (writes `data-ag-refraction`). * @preview Ships inert until L8 certification passes at RC-1; otherwise promoted in 5.1 (REQ-MAT-36). */ refraction?: boolean; } export interface EnvironmentProps { backdrop: Backdrop; image?: string; video?: string; children: React.ReactNode; className?: string; } export interface ScrollEdgeProps { edge: 'top' | 'bottom'; edgeStyle?: EdgeStyle; } export interface ConcentricFrameProps { radius: RadiusToken; inset: SpaceToken; children: React.ReactNode; } /** S-02: class grammar. Library CSS keys only on these, data-ag-* and STATE_ATTRIBUTES (data-state plus, since v1.2 C-2, the Base UI / component state attributes listed there). Since v1.2 (C-1) no material rule keys on SURFACE_CLASS: Surface/SurfaceGroup still add it as a consumer styling hook, materialProps() never emits it. */ export declare const SURFACE_CLASS: "ag-surface"; export type ComponentClass = `ag-${K}`; export type PartClass = `ag-${K}__${P}`; /** S-01: attribute registry. Setter = the stream allowed to emit the attribute in dist/. */ export declare const AG_ATTRIBUTES: { readonly 'data-ag-surface': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-layer': { readonly setter: "MAT"; readonly values: readonly ["chrome", "overlay", "transient", "content", "scrim"]; }; readonly 'data-ag-variant': { readonly setter: "MAT"; readonly values: readonly ["regular", "clear", "identity"]; }; readonly 'data-ag-thickness': { readonly setter: "MAT"; readonly values: readonly ["thin", "regular", "thick"]; }; readonly 'data-ag-content': { readonly setter: "MAT"; readonly values: readonly ["content-raised", "content-sunken"]; }; readonly 'data-ag-shape': { readonly setter: "MAT"; readonly values: readonly ["fixed", "capsule", "concentric"]; }; readonly 'data-ag-interactive': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-prominent': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-refraction': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-allow-nested': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-group': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-backdrop': { readonly setter: "ANY"; readonly values: readonly ["light", "dark", "media", "auto"]; }; readonly 'data-ag-engine': { readonly setter: "MAT"; readonly values: readonly ["chromium", "webkit", "gecko", "unknown"]; }; readonly 'data-ag-tier': { readonly setter: "MAT"; readonly values: readonly ["lightweight", "standard", "enhanced"]; }; readonly 'data-ag-scheme': { readonly setter: "MAT"; readonly values: readonly ["light", "dark"]; }; readonly 'data-ag-contrast': { readonly setter: "MAT"; readonly values: readonly ["standard", "more"]; }; readonly 'data-ag-transparency': { readonly setter: "MAT"; readonly values: readonly ["glass", "tinted", "solid"]; }; readonly 'data-ag-motion': { readonly setter: "MAT"; readonly values: readonly ["full", "calm", "none"]; }; readonly 'data-ag-density': { readonly setter: "MAT"; readonly values: readonly ["compact", "regular", "spacious"]; }; readonly 'data-ag-animating': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-part': { readonly setter: "ANY"; readonly values: "kebab-case part name (S-33)"; }; readonly 'data-ag-preview': { readonly setter: "MAT"; readonly values: readonly ["v5"]; readonly branch: "release/4.x"; }; readonly 'data-ag-root': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-provider': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-portal-root': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-layer-root': { readonly setter: "MAT"; readonly values: readonly ["overlay", "transient", "toast"]; }; readonly 'data-ag-announcer': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-obscured': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-focusable': { readonly setter: "ANY"; readonly values: readonly [""]; }; readonly 'data-ag-scroll-container': { readonly setter: "ANY"; readonly values: readonly [""]; }; readonly 'data-ag-continuous': { readonly setter: "MAT"; readonly values: readonly ["on"]; }; readonly 'data-ag-offscreen': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-vt': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-vt-participant': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-vt-settled': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-pointer-light': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-highlights': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-size': { readonly setter: "CMP|SURF"; readonly values: readonly ["sm", "md", "lg"]; }; readonly 'data-ag-intent': { readonly setter: "CMP|SURF"; readonly values: readonly ["neutral", "info", "success", "warning", "danger"]; }; readonly 'data-ag-overlay': { readonly setter: "CMP"; readonly values: readonly ["dialog", "alert-dialog", "sheet", "popover", "menu", "tooltip", "toast", "select", "combobox", "preview-card"]; }; readonly 'data-ag-overlay-depth': { readonly setter: "CMP"; readonly values: "integer >= 0"; }; readonly 'data-ag-nested-open': { readonly setter: "CMP"; readonly values: readonly [""]; }; readonly 'data-ag-media-root': { readonly setter: "SURF"; readonly values: readonly [""]; }; readonly 'data-ag-media-tone': { readonly setter: "SURF"; readonly values: readonly ["light", "dark"]; }; readonly 'data-ag-backdrop-preset': { readonly setter: "SURF"; readonly values: readonly ["aurora", "mesh", "photo", "video", "grain"]; }; readonly 'data-ag-palette': { readonly setter: "SURF"; readonly values: "preset palette id"; }; readonly 'data-ag-slot': { readonly setter: "SURF"; readonly values: "AppShell slot name, declared in AppShell.meta.ts"; }; readonly 'data-ag-sidebar': { readonly setter: "SURF"; readonly values: readonly ["expanded", "collapsed", "rail"]; }; readonly 'data-ag-sidebar-side': { readonly setter: "SURF"; readonly values: readonly ["start", "end"]; }; readonly 'data-ag-layout': { readonly setter: "SURF"; readonly values: readonly ["auto", "desktop", "mobile"]; }; readonly 'data-ag-placement': { readonly setter: "SURF"; readonly values: readonly ["inline", "overlay"]; }; readonly 'data-ag-appearance': { readonly setter: "CMP|SURF"; readonly values: "component-specific non-material look (e.g. sidebar|inset|floating, underline|pill), declared in meta; Sheet popup value full-height is read by the MAT floor (C-2)"; }; readonly 'data-ag-inspector': { readonly setter: "SURF"; readonly values: readonly ["open", "closed"]; }; readonly 'data-ag-pinned-edge': { readonly setter: "SURF"; readonly values: readonly ["start", "end", "top"]; }; readonly 'data-ag-theme': { readonly setter: "ANY"; readonly values: "theme id: a preset id or the id passed to createGlassTheme/createBrandTheme; on the element that scopes that theme cssText"; }; readonly 'data-ag-shadcn-source': { readonly setter: "ANY"; readonly values: readonly [""]; }; readonly 'data-ag-scroll-locked': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-hit-clamp': { readonly setter: "ANY"; readonly values: readonly ["start", "end", "both", "none"]; }; readonly 'data-ag-focus-inset': { readonly setter: "ANY"; readonly values: readonly [""]; }; readonly 'data-ag-lens-defs': { readonly setter: "MAT"; readonly values: readonly [""]; }; readonly 'data-ag-sizeclass': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-radius': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-spacing': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-inset': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-edge': { readonly setter: "MAT"; readonly values: readonly ["top", "bottom"]; }; readonly 'data-ag-edge-style': { readonly setter: "MAT"; readonly values: readonly ["soft", "hard"]; }; readonly 'data-ag-lens-ready': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-full-height': { readonly setter: "MAT"; readonly values: "private"; }; readonly 'data-ag-story-content': { readonly setter: "QUAL"; readonly values: "story-only"; }; readonly 'data-ag-story-kind': { readonly setter: "QUAL"; readonly values: readonly ["lab", "component", "matrix", "scene", "showcase"]; }; readonly 'data-ag-cert-ready': { readonly setter: "QUAL"; readonly values: "story-only"; }; readonly 'data-ag-lab-override': { readonly setter: "QUAL"; readonly values: "story-only"; }; readonly 'data-ag-state-cell': { readonly setter: "QUAL"; readonly values: "story-only"; }; readonly 'data-ag-seed': { readonly setter: "CONTRACT"; readonly values: "seed-only; banned in dist/ (ยง1.2 R5)"; }; }; export type AgAttribute = keyof typeof AG_ATTRIBUTES; /** Banned forever (D-20 and erratum to CTL): */ export declare const BANNED_ATTRIBUTES: readonly ["data-ag-material", "data-ag-button-variant", "data-meets-wcag"]; /** S-02 / C-2 (v1.2): the only non-data-ag attributes library CSS may select. Base UI or the CMP/SURF component writes them (setter ANY); MAT CSS only reads them. aria-* entries are matched with an explicit value, e.g. [aria-disabled="true"]. */ export declare const STATE_ATTRIBUTES: readonly ["data-state", "data-disabled", "data-pressed", "data-selected", "data-loading", "data-drop-target", "data-open", "data-expanded", "data-side", "data-starting-style", "data-ending-style", "data-dragging", "data-overlay-top", "aria-disabled", "aria-pressed", "aria-selected", "aria-busy"]; //# sourceMappingURL=material.d.ts.map