@loworbitstudio/visor 0.1.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.3.0",
3
- "generated_at": "2026-04-13T18:22:40.356Z",
2
+ "version": "0.4.0",
3
+ "generated_at": "2026-04-21T17:12:43.539Z",
4
4
  "components": {
5
5
  "accessibility-specimen": {
6
6
  "category": "specimen",
@@ -220,13 +220,14 @@
220
220
  "default",
221
221
  "destructive",
222
222
  "success",
223
- "warning"
223
+ "warning",
224
+ "info"
224
225
  ]
225
226
  },
226
227
  "props": [
227
228
  {
228
229
  "name": "variant",
229
- "type": "'default' | 'destructive' | 'success' | 'warning'",
230
+ "type": "'default' | 'destructive' | 'success' | 'warning' | 'info'",
230
231
  "default": "default"
231
232
  }
232
233
  ],
@@ -334,13 +335,20 @@
334
335
  "default",
335
336
  "secondary",
336
337
  "outline",
337
- "destructive"
338
+ "destructive",
339
+ "success",
340
+ "warning",
341
+ "info",
342
+ "filled-destructive",
343
+ "filled-success",
344
+ "filled-warning",
345
+ "filled-info"
338
346
  ]
339
347
  },
340
348
  "props": [
341
349
  {
342
350
  "name": "variant",
343
- "type": "\"default\" | \"secondary\" | \"outline\" | \"destructive\"",
351
+ "type": "\"default\" | \"secondary\" | \"outline\" | \"destructive\" | \"success\" | \"warning\" | \"info\" | \"filled-destructive\" | \"filled-success\" | \"filled-warning\" | \"filled-info\"",
344
352
  "default": "\"default\""
345
353
  }
346
354
  ],
@@ -378,7 +386,7 @@
378
386
  "--text-success",
379
387
  "--text-warning"
380
388
  ],
381
- "example": "<Badge variant=\"default\">Active</Badge>\n<Badge variant=\"secondary\">Draft</Badge>\n<Badge variant=\"outline\">v2.1.0</Badge>\n<Badge variant=\"destructive\">Error</Badge>\n"
389
+ "example": "<Badge variant=\"default\">Active</Badge>\n<Badge variant=\"secondary\">Draft</Badge>\n<Badge variant=\"outline\">v2.1.0</Badge>\n<Badge variant=\"destructive\">Error</Badge>\n<Badge variant=\"success\">Published</Badge>\n<Badge variant=\"warning\">Pending</Badge>\n<Badge variant=\"info\">Beta</Badge>\n<Badge variant=\"filled-destructive\">Critical</Badge>\n"
382
390
  },
383
391
  "banner": {
384
392
  "category": "feedback",
@@ -5908,621 +5916,1834 @@
5908
5916
  "--text-primary"
5909
5917
  ],
5910
5918
  "example": "<TypeSpecimen token=\"--font-size-xl\" label=\"xl\" sizePx={20} sampleText=\"Subsection heading\" />\n"
5911
- }
5912
- },
5913
- "blocks": {
5914
- "admin-dashboard": {
5915
- "category": "admin",
5916
- "description": "Drop-in admin overview composition — PageHeader, responsive stat grid, optional secondary region, and ActivityFeed with empty-state fallback. Composes existing admin compounds, nothing to configure.",
5917
- "components_used": [
5918
- "page-header",
5919
- "stat-card",
5920
- "activity-feed",
5921
- "empty-state"
5922
- ],
5919
+ },
5920
+ "deck-card-grid": {
5921
+ "category": "deck",
5922
+ "description": "CSS grid layout for decks that arranges card children in 2–5 columns with staggered entrance animations.",
5923
5923
  "when_to_use": [
5924
- "Landing page for an admin or back-office app",
5925
- "Overview-at-a-glance screens mixing KPIs and recent events",
5926
- "Any dashboard needing a title, metrics, and a recent-activity feed"
5924
+ "Content slides displaying a grid of feature cards, team members, or value props",
5925
+ "Any slide where multiple items should appear in equal-width columns with staggered animation"
5927
5926
  ],
5928
5927
  "when_not_to_use": [
5929
- "Data-heavy list or table pages (use admin-list-page)",
5930
- "Detail / edit screens for a single record (use admin-detail-drawer)",
5931
- "Settings forms (use admin-settings-page)"
5932
- ]
5933
- },
5934
- "admin-detail-drawer": {
5935
- "category": "admin",
5936
- "description": "Right-side slide-out panel for viewing or editing a single record. Composes Sheet with a sticky save/cancel footer, async save handler with pending state, an unsaved-changes guard powered by ConfirmDialog, and sm/md/lg/xl width variants.",
5937
- "components_used": [
5938
- "sheet",
5939
- "button",
5940
- "confirm-dialog"
5928
+ "Outside of a <Slide> (stagger animation timing won't be synchronized)",
5929
+ "Grids needing unequal column widths or complex alignment"
5941
5930
  ],
5942
- "when_to_use": [
5943
- "Inline editing of a single record from a list or dashboard",
5944
- "Click-a-row, edit-its-details-without-leaving-the-page patterns",
5945
- "Detail panels where protecting against accidental close is important"
5931
+ "props": [
5932
+ {
5933
+ "name": "columns",
5934
+ "type": "2 | 3 | 4 | 5",
5935
+ "default": 3,
5936
+ "description": "Number of equal-width columns"
5937
+ }
5946
5938
  ],
5947
- "when_not_to_use": [
5948
- "Full-page single-record editors (use admin-tabbed-editor)",
5949
- "Multi-step forms (use admin-wizard)",
5950
- "Simple confirmation prompts (use ConfirmDialog directly)"
5951
- ]
5952
- },
5953
- "admin-list-page": {
5954
- "category": "admin",
5955
- "description": "CRUD list archetype composing PageHeader, FilterBar, DataTable, BulkActionBar, and EmptyState into a single drop-in page. Generic over row data type, supports controlled and uncontrolled search/selection/sorting/pagination, exposes a bulk actions slot that appears only when rows are selected.",
5956
- "components_used": [
5957
- "page-header",
5958
- "filter-bar",
5959
- "data-table",
5960
- "bulk-action-bar",
5961
- "empty-state"
5939
+ "dependencies": [
5940
+ "@loworbitstudio/visor-core"
5962
5941
  ],
5942
+ "tokens_used": [],
5943
+ "example": "<CardGrid columns={3}>\n <FeatureCard title=\"Speed\" description=\"...\" />\n <FeatureCard title=\"Quality\" description=\"...\" />\n <FeatureCard title=\"Scale\" description=\"...\" />\n</CardGrid>\n"
5944
+ },
5945
+ "deck-carousel-gallery": {
5946
+ "category": "deck",
5947
+ "description": "Inline image gallery for slides that opens a full-screen lightbox on click. Renders images in an equal-width horizontal row.",
5963
5948
  "when_to_use": [
5964
- "List-all pages for users, orders, invoices, or projects",
5965
- "Any CRUD index view needing search, filters, and sortable/paginated rows",
5966
- "Pages that need bulk actions (archive, delete, export) on selected rows"
5949
+ "Slides showcasing work samples, screenshots, or photos in a horizontal strip",
5950
+ "Any slide where clicking an image should open it full-screen for closer inspection"
5967
5951
  ],
5968
5952
  "when_not_to_use": [
5969
- "Overview dashboards with KPIs and activity feeds (use admin-dashboard)",
5970
- "Single-record detail or edit screens (use admin-detail-drawer)",
5971
- "Settings or preferences forms (use admin-settings-page)"
5972
- ]
5973
- },
5974
- "admin-settings-page": {
5975
- "category": "admin",
5976
- "description": "Long scrollable settings archetype with labeled sections and an optional sticky left-side nav that sync-scrolls via intersection observer. Supports two mutually-exclusive modes — a single global sticky save/cancel footer (default) or per-section save/revert footer rows. Composes PageHeader, Separator, Heading, Text, Button, and ConfirmDialog.",
5977
- "components_used": [
5978
- "page-header",
5979
- "separator",
5980
- "heading",
5981
- "text",
5982
- "button",
5983
- "confirm-dialog"
5953
+ "Long image sets (more than ~5 images causes the row to become too narrow)",
5954
+ "Slides where images should be decorative only with no lightbox interaction"
5955
+ ],
5956
+ "props": [
5957
+ {
5958
+ "name": "slides",
5959
+ "type": "GallerySlide[]",
5960
+ "description": "Array of { src, alt, caption? } objects"
5961
+ }
5962
+ ],
5963
+ "dependencies": [
5964
+ "@loworbitstudio/visor-core",
5965
+ "lightbox"
5984
5966
  ],
5967
+ "tokens_used": [],
5968
+ "example": "<CarouselGallery\n slides={[\n { src: \"/work/a.jpg\", alt: \"Project Alpha\", caption: \"Alpha\" },\n { src: \"/work/b.jpg\", alt: \"Project Beta\", caption: \"Beta\" },\n { src: \"/work/c.jpg\", alt: \"Project Gamma\", caption: \"Gamma\" },\n ]}\n/>\n"
5969
+ },
5970
+ "deck-closing-slide": {
5971
+ "category": "deck",
5972
+ "description": "Dark closing slide with centered tagline, subtitle, divider, and optional body text. The standard last slide for presentations.",
5985
5973
  "when_to_use": [
5986
- "Application or workspace settings pages organized into labeled sections",
5987
- "Profile pages, account pages, billing pages, team pages — anywhere long scrolling form content needs wayfinding",
5988
- "Pages where some sections commit independently (per-section mode) or where all edits commit together (global mode)"
5974
+ "Final slide of any deck (thank-you, call-to-action, or contact information)",
5975
+ "Any deck that needs a simple, impactful closing screen"
5989
5976
  ],
5990
5977
  "when_not_to_use": [
5991
- "Editors where each tab replaces the previous panel entirely (use admin-tabbed-editor)",
5992
- "Inline single-record edits (use admin-detail-drawer)",
5993
- "Multi-step flows with a linear progression (use admin-wizard)"
5994
- ]
5995
- },
5996
- "admin-shell": {
5997
- "category": "admin",
5998
- "description": "Foundational admin layout with sidebar, topbar, and main content area. Slot-driven for logo, navigation, breadcrumbs, user menu, and status indicators.",
5999
- "components_used": [
6000
- "breadcrumb",
6001
- "dropdown-menu",
6002
- "sidebar"
5978
+ "Mid-deck transitions (use a standard dark Slide instead)",
5979
+ "Closing slides that require complex custom content (build from Slide directly)"
5980
+ ],
5981
+ "props": [
5982
+ {
5983
+ "name": "id",
5984
+ "type": "string",
5985
+ "default": "s-close"
5986
+ },
5987
+ {
5988
+ "name": "tagline",
5989
+ "type": "string",
5990
+ "default": "Thank you."
5991
+ },
5992
+ {
5993
+ "name": "subtitle",
5994
+ "type": "string",
5995
+ "description": "Short line below the tagline"
5996
+ },
5997
+ {
5998
+ "name": "body",
5999
+ "type": "string",
6000
+ "description": "Paragraph below the divider"
6001
+ },
6002
+ {
6003
+ "name": "extra",
6004
+ "type": "ReactNode",
6005
+ "description": "Custom content rendered below body (CTAs, links, etc.)"
6006
+ }
6007
+ ],
6008
+ "dependencies": [
6009
+ "@loworbitstudio/visor-core"
6003
6010
  ],
6011
+ "tokens_used": [],
6012
+ "example": "<ClosingSlide\n tagline=\"Let's build something.\"\n subtitle=\"We'd love to hear from you.\"\n body=\"hello@loworbit.studio\"\n/>\n"
6013
+ },
6014
+ "deck-concept-slide": {
6015
+ "category": "deck",
6016
+ "description": "Slide with a looping background video and overlay, for showcasing concepts, product demos, or motion design. Content is layered above the video.",
6004
6017
  "when_to_use": [
6005
- "Internal admin tools and back-office apps",
6006
- "Dashboards with persistent side navigation",
6007
- "CRUD-heavy applications needing a consistent chrome",
6008
- "Any multi-page admin area requiring breadcrumbs and a user menu"
6018
+ "Slides where a video loop reinforces the concept being presented",
6019
+ "Product or feature showcases where motion adds context",
6020
+ "Visual storytelling slides where a static image would be insufficient"
6009
6021
  ],
6010
6022
  "when_not_to_use": [
6011
- "Public marketing pages (use hero-section, cta-section, footer-section)",
6012
- "Authentication screens (use login-form)",
6013
- "Full-bleed canvas experiences without chrome"
6014
- ]
6015
- },
6016
- "admin-tabbed-editor": {
6017
- "category": "admin",
6018
- "description": "Full-page editor with horizontal tabs, tab-scoped content panels, and a sticky save/cancel footer. Composes PageHeader, Tabs, Button, and ConfirmDialog. Tab switching and cancel are protected by an unsaved-changes guard, save supports async with pending state.",
6019
- "components_used": [
6020
- "page-header",
6021
- "tabs",
6022
- "button",
6023
- "confirm-dialog"
6023
+ "Slides where the video is primary content (use Slide with an embedded player)",
6024
+ "Environments where autoplay may be blocked (the video is decorative, content still renders)"
6025
+ ],
6026
+ "props": [
6027
+ {
6028
+ "name": "id",
6029
+ "type": "string",
6030
+ "description": "Unique slide identifier"
6031
+ },
6032
+ {
6033
+ "name": "theme",
6034
+ "type": "'light' | 'dark'",
6035
+ "default": "light"
6036
+ },
6037
+ {
6038
+ "name": "video",
6039
+ "type": "string",
6040
+ "description": "Video source URL (mp4)"
6041
+ },
6042
+ {
6043
+ "name": "poster",
6044
+ "type": "string",
6045
+ "description": "Poster image shown before video loads"
6046
+ }
6047
+ ],
6048
+ "dependencies": [
6049
+ "@loworbitstudio/visor-core"
6024
6050
  ],
6051
+ "tokens_used": [],
6052
+ "example": "<ConceptSlide\n id=\"s-concept\"\n theme=\"dark\"\n video=\"/video/demo.mp4\"\n poster=\"/video/demo-poster.jpg\"\n>\n <SlideHeader subtitle=\"Concept\" title=\"Reimagined\" />\n</ConceptSlide>\n"
6053
+ },
6054
+ "deck-context": {
6055
+ "category": "deck",
6056
+ "description": "React context provider that exposes slide navigation methods (goTo, navigateTo) to all descendants within a deck.",
6025
6057
  "when_to_use": [
6026
- "Full-page record editors where settings span multiple logical sections",
6027
- "Profile editors, settings pages, resource configuration pages",
6028
- "Any editor that benefits from a single global save across multiple tab panels"
6058
+ "Building custom deck controls that need to programmatically navigate slides",
6059
+ "Creating slide-aware child components that respond to navigation events",
6060
+ "Any component inside <DeckLayout> that calls useDeck()"
6029
6061
  ],
6030
6062
  "when_not_to_use": [
6031
- "Inline single-record edits (use admin-detail-drawer)",
6032
- "Multi-step forms with a linear progression (use admin-wizard)",
6033
- "Pages without meaningful grouping (use a plain form)"
6034
- ]
6035
- },
6036
- "admin-wizard": {
6037
- "category": "admin",
6038
- "description": "Guided multi-step flow composing PageHeader, Stepper, and Button into a drop-in wizard with per-step async validation, final submit handler, horizontal or vertical stepper orientation, optional click-to-jump stepper navigation to completed steps, and a cancel guard via ConfirmDialog. Only the active step's content is mounted.",
6039
- "components_used": [
6040
- "page-header",
6041
- "stepper",
6042
- "button",
6043
- "confirm-dialog"
6063
+ "Outside of a <DeckLayout> wrapper (useDeck() will throw)",
6064
+ "Direct consumers of deck state prefer useDeck() hook instead of referencing the context directly"
6044
6065
  ],
6066
+ "props": [
6067
+ {
6068
+ "name": "value",
6069
+ "type": "DeckContextValue",
6070
+ "description": "{ goTo: (index: number) => void; navigateTo: (id: string) => void }"
6071
+ }
6072
+ ],
6073
+ "dependencies": [
6074
+ "react",
6075
+ "@loworbitstudio/visor-core"
6076
+ ],
6077
+ "tokens_used": [],
6078
+ "example": "// Consumed via useDeck() inside any child of <DeckLayout>\nfunction MyControl() {\n const { goTo, navigateTo } = useDeck()\n return <button onClick={() => navigateTo(\"s-intro\")}>Go to Intro</button>\n}\n"
6079
+ },
6080
+ "deck-footer": {
6081
+ "category": "deck",
6082
+ "description": "Dark closing footer slide with brand lockup, optional link columns, and a copyright bar. Appears as the last scrollable section in a deck.",
6045
6083
  "when_to_use": [
6046
- "Multi-step create flows onboarding, account setup, content creation",
6047
- "Guided configuration where each step depends on decisions made earlier",
6048
- "Any linear progression where the user should see clear progress and can step back to revise earlier answers"
6084
+ "As the final section of a deck (after the last content slide or ClosingSlide)",
6085
+ "Decks that need categorized navigation links below the closing content",
6086
+ "Branded presentations requiring a footer with company identity and copyright"
6049
6087
  ],
6050
6088
  "when_not_to_use": [
6051
- "Long scrollable settings pages (use admin-settings-page)",
6052
- "Editors where each tab is an independent view of the same record (use admin-tabbed-editor)",
6053
- "Single-record inline edits (use admin-detail-drawer)"
6054
- ]
6055
- },
6056
- "configuration-panel": {
6057
- "category": "configuration",
6058
- "description": "A floating, glassmorphic configuration panel for organizing controls into labeled sections. Supports collapse animation, positional anchoring, and responsive stacking. Composed from Visor form components.",
6059
- "components_used": [
6060
- "separator"
6089
+ "Decks built with DeckRenderer (showFooter=true handles this automatically)",
6090
+ "Short decks where a full branded footer would feel disproportionate"
6091
+ ],
6092
+ "props": [
6093
+ {
6094
+ "name": "description",
6095
+ "type": "string",
6096
+ "description": "Brand tagline or short company description"
6097
+ },
6098
+ {
6099
+ "name": "columns",
6100
+ "type": "DeckFooterColumn[]",
6101
+ "description": "Optional link columns — each { title, links: { label, slide?, href?, accent? }[] }"
6102
+ },
6103
+ {
6104
+ "name": "brandName",
6105
+ "type": "string",
6106
+ "default": "Low Orbit Studio"
6107
+ }
6108
+ ],
6109
+ "dependencies": [
6110
+ "@loworbitstudio/visor-core"
6111
+ ],
6112
+ "tokens_used": [
6113
+ "--color-accent",
6114
+ "--color-primary-900",
6115
+ "--motion-duration-fast",
6116
+ "--motion-easing-standard",
6117
+ "--spacing-1",
6118
+ "--spacing-12",
6119
+ "--spacing-4",
6120
+ "--spacing-6",
6121
+ "--spacing-8",
6122
+ "--text-on-dark",
6123
+ "--text-on-dark-secondary"
6061
6124
  ],
6125
+ "example": "<DeckFooter\n description=\"Design systems for the modern web.\"\n brandName=\"Low Orbit Studio\"\n columns={[\n {\n title: \"Sections\",\n links: [\n { label: \"Vision\", slide: \"s-vision\" },\n { label: \"Services\", slide: \"s-services\" },\n ],\n },\n ]}\n/>\n"
6126
+ },
6127
+ "deck-layout": {
6128
+ "category": "deck",
6129
+ "description": "Full-viewport scroll-snapping container that orchestrates keyboard navigation, wheel navigation, intersection-based animation, and dot-nav rendering for a deck of slides.",
6062
6130
  "when_to_use": [
6063
- "Building control panels for interactive visualizations",
6064
- "Settings or configuration UIs that float over content",
6065
- "Any grouped-controls panel needing glassmorphic styling"
6131
+ "Wrapping all <Slide> and <DeckFooter> components in a presentation",
6132
+ "Building a custom deck layout without using DeckRenderer"
6066
6133
  ],
6067
6134
  "when_not_to_use": [
6068
- "Static forms that live inline in page flow (use Card instead)",
6069
- "Simple single-control toggles (use individual form components)"
6070
- ]
6071
- },
6072
- "cta-section": {
6073
- "category": "marketing",
6074
- "description": "A centered call-to-action section composing Heading, Text, and Button.",
6075
- "components_used": [
6076
- "heading",
6077
- "text",
6078
- "button"
6135
+ "When DeckRenderer covers your needs (it wraps DeckLayout automatically)",
6136
+ "Standard page layouts this component is presentation-only"
6137
+ ],
6138
+ "props": [
6139
+ {
6140
+ "name": "slideTitles",
6141
+ "type": "string[]",
6142
+ "description": "Slide titles passed to DotNav for tooltip labels"
6143
+ },
6144
+ {
6145
+ "name": "controls",
6146
+ "type": "(props: { containerRef, currentIndex, variant }) => ReactNode",
6147
+ "description": "Optional render prop for custom controls (e.g., export button)"
6148
+ }
6149
+ ],
6150
+ "dependencies": [
6151
+ "@loworbitstudio/visor-core"
6079
6152
  ],
6153
+ "tokens_used": [],
6154
+ "example": "<DeckLayout slideTitles={[\"Intro\", \"Problem\", \"Solution\", \"Thank You\"]}>\n <Slide id=\"s-intro\" theme=\"dark\"><HeroSlide ... /></Slide>\n <Slide id=\"s-problem\" theme=\"light\"><SlideHeader ... /></Slide>\n <Slide id=\"s-solution\" theme=\"light\"><SlideHeader ... /></Slide>\n <ClosingSlide />\n <DeckFooter description=\"...\" />\n</DeckLayout>\n"
6155
+ },
6156
+ "deck-renderer": {
6157
+ "category": "deck",
6158
+ "description": "High-level declarative deck builder. Accepts a DeckRegistry configuration and renders the full slide stack with optional TOC slide, footer, and fullscreen mode.",
6080
6159
  "when_to_use": [
6081
- "Marketing landing pages",
6082
- "Conversion sections",
6083
- "Upgrade prompts"
6160
+ "Building a complete presentation from a declarative registry config",
6161
+ "Decks that need auto-generated TOC slides or footer sections",
6162
+ "Presentations that should support fullscreen mode with a trigger button"
6084
6163
  ],
6085
6164
  "when_not_to_use": [
6086
- "Inline CTAs within content (use Button directly)"
6087
- ]
6088
- },
6089
- "design-system-deck": {
6090
- "category": "documentation",
6091
- "description": "A complete, registry-driven design system presentation deck. Composes all slide components into a DeckRenderer with TOC, dot navigation, keyboard nav, and fullscreen support. Responds dynamically to the active theme.",
6092
- "components_used": [
6093
- "alert",
6094
- "badge",
6095
- "button",
6096
- "card",
6097
- "checkbox",
6098
- "deck-renderer",
6099
- "heading",
6100
- "input",
6101
- "label",
6102
- "progress",
6103
- "radio-group",
6104
- "select",
6105
- "separator",
6106
- "slide",
6107
- "slide-header",
6108
- "switch",
6109
- "tabs",
6110
- "text",
6111
- "toggle-group"
6165
+ "Decks that require fully custom slide ordering or non-registry components (use DeckLayout directly)",
6166
+ "When you need fine-grained control over every slide's position in the sequence"
6112
6167
  ],
6113
- "when_to_use": [
6114
- "Presenting a design system as a navigable deck",
6115
- "Previewing a theme's full token coverage in slide format",
6116
- "Design system documentation and onboarding"
6168
+ "props": [
6169
+ {
6170
+ "name": "registry",
6171
+ "type": "DeckRegistry",
6172
+ "description": "Declarative slide registry: { description, slides: SlideEntry[], sections: DeckSection[] }"
6173
+ },
6174
+ {
6175
+ "name": "showTOC",
6176
+ "type": "boolean",
6177
+ "default": false,
6178
+ "description": "Insert an auto-generated TOC slide after the first slide"
6179
+ },
6180
+ {
6181
+ "name": "tocImage",
6182
+ "type": "string",
6183
+ "description": "Optional background image for the TOC slide"
6184
+ },
6185
+ {
6186
+ "name": "showFooter",
6187
+ "type": "boolean",
6188
+ "default": true
6189
+ },
6190
+ {
6191
+ "name": "brandName",
6192
+ "type": "string",
6193
+ "description": "Brand name for the footer (default \"Low Orbit Studio\")"
6194
+ },
6195
+ {
6196
+ "name": "fullscreen",
6197
+ "type": "boolean",
6198
+ "default": false,
6199
+ "description": "Wrap the deck in a FullscreenOverlay with a trigger button"
6200
+ },
6201
+ {
6202
+ "name": "fullscreenLabel",
6203
+ "type": "string",
6204
+ "default": "Fullscreen"
6205
+ }
6117
6206
  ],
6118
- "when_not_to_use": [
6119
- "Production user-facing pages",
6120
- "When a flat specimen view is preferred (use design-system-specimen instead)"
6121
- ]
6122
- },
6123
- "design-system-specimen": {
6124
- "category": "documentation",
6125
- "description": "Live interactive showcase of the full Visor token system and component library. Responds dynamically to the active theme.",
6126
- "components_used": [
6127
- "alert",
6128
- "badge",
6129
- "button",
6130
- "card",
6131
- "checkbox",
6132
- "heading",
6133
- "input",
6134
- "label",
6135
- "progress",
6136
- "radio-group",
6137
- "select",
6138
- "separator",
6139
- "slider",
6140
- "switch",
6141
- "tabs",
6142
- "text",
6143
- "textarea",
6144
- "toggle-group"
6207
+ "dependencies": [
6208
+ "@loworbitstudio/visor-core"
6145
6209
  ],
6146
- "when_to_use": [
6147
- "Previewing a theme's full token coverage",
6148
- "Validating design system consistency across components",
6149
- "Design system documentation and onboarding"
6210
+ "tokens_used": [
6211
+ "--border-default",
6212
+ "--border-hover",
6213
+ "--focus-ring-color",
6214
+ "--focus-ring-offset",
6215
+ "--focus-ring-width",
6216
+ "--font-size-sm",
6217
+ "--motion-duration-fast",
6218
+ "--motion-easing-default",
6219
+ "--radius-md",
6220
+ "--spacing-2",
6221
+ "--spacing-4",
6222
+ "--surface-card",
6223
+ "--surface-card-hover",
6224
+ "--text-primary"
6150
6225
  ],
6151
- "when_not_to_use": [
6152
- "Production user-facing pages"
6153
- ]
6226
+ "example": "const registry: DeckRegistry = {\n description: \"Low Orbit Studio — 2026 Overview\",\n slides: [\n { id: \"s-hero\", title: \"Intro\", component: HeroSlide },\n { id: \"s-services\", title: \"Services\", component: ServicesSlide },\n ],\n sections: [],\n}\n\n<DeckRenderer registry={registry} showTOC showFooter fullscreen />\n"
6154
6227
  },
6155
- "features-grid": {
6156
- "category": "marketing",
6157
- "description": "A responsive grid of feature cards with icons, titles, and descriptions. Demonstrates Card + icon composition in a configurable grid layout.",
6158
- "components_used": [
6159
- "card",
6160
- "heading",
6161
- "text"
6162
- ],
6228
+ "deck-dot-nav": {
6229
+ "category": "deck",
6230
+ "description": "Fixed-position dot navigation indicator for decks. Shows one dot per slide with hover tooltips and keyboard-accessible click targets.",
6163
6231
  "when_to_use": [
6164
- "Product feature showcases",
6165
- "Service offering grids",
6166
- "Capability overviews"
6232
+ "Inside <DeckLayout> as the primary slide position indicator",
6233
+ "Any deck that needs visible slide progress with tooltip labels"
6167
6234
  ],
6168
6235
  "when_not_to_use": [
6169
- "Icon-only grids without descriptions (use icon-grid specimen)",
6170
- "Single feature highlights"
6171
- ]
6172
- },
6173
- "footer-section": {
6174
- "category": "marketing",
6175
- "description": "A multi-column responsive footer with link groups, logo area, and copyright.",
6176
- "components_used": [
6177
- "heading",
6178
- "text",
6179
- "separator"
6180
- ],
6181
- "when_to_use": [
6182
- "Website footers",
6183
- "Landing page footers",
6184
- "App marketing site footers"
6236
+ "Outside of a deck (dots are meaningless without a scroll-snap container)",
6237
+ "Decks with more than ~12 slides (dots become visually crowded)"
6185
6238
  ],
6186
- "when_not_to_use": [
6187
- "In-app footers (typically minimal)",
6188
- "Presentation footers (use deck-footer)"
6189
- ]
6190
- },
6191
- "hero-section": {
6192
- "category": "marketing",
6193
- "description": "A full-width hero section with background media support, heading, subheading, and call-to-action button.",
6194
- "components_used": [
6195
- "heading",
6196
- "text",
6197
- "button"
6239
+ "props": [
6240
+ {
6241
+ "name": "slideCount",
6242
+ "type": "number",
6243
+ "description": "Total number of slides"
6244
+ },
6245
+ {
6246
+ "name": "currentIndex",
6247
+ "type": "number",
6248
+ "description": "Zero-based index of the active slide"
6249
+ },
6250
+ {
6251
+ "name": "onDotClick",
6252
+ "type": "(index: number) => void",
6253
+ "description": "Callback when a dot is clicked"
6254
+ },
6255
+ {
6256
+ "name": "variant",
6257
+ "type": "'light' | 'dark'",
6258
+ "default": "light"
6259
+ },
6260
+ {
6261
+ "name": "titles",
6262
+ "type": "string[]",
6263
+ "description": "Optional slide titles shown as tooltips on hover"
6264
+ }
6198
6265
  ],
6199
- "when_to_use": [
6200
- "Marketing landing page hero",
6201
- "Product launch pages",
6202
- "App landing pages"
6266
+ "dependencies": [
6267
+ "@loworbitstudio/visor-core"
6203
6268
  ],
6204
- "when_not_to_use": [
6205
- "Presentation slides (use deck hero-slide)",
6206
- "Content sections without full-viewport height"
6207
- ]
6269
+ "tokens_used": [],
6270
+ "example": "<DotNav\n slideCount={5}\n currentIndex={0}\n onDotClick={(i) => goTo(i)}\n variant=\"dark\"\n titles={[\"Intro\", \"Problem\", \"Solution\", \"Roadmap\", \"Thank You\"]}\n/>\n"
6208
6271
  },
6209
- "login-form": {
6210
- "category": "authentication",
6211
- "description": "A login form block using Visor form components (Button, Input, Label, Card).",
6212
- "components_used": [
6213
- "button",
6214
- "input",
6215
- "field",
6216
- "card"
6217
- ],
6272
+ "deck-hero-slide": {
6273
+ "category": "deck",
6274
+ "description": "Full-viewport opening slide with badge, animated title, subtitle, and divider. Supports hero image overlay and split logo layout.",
6218
6275
  "when_to_use": [
6219
- "Authentication pages",
6220
- "Sign-in screens",
6221
- "Demo login flows"
6276
+ "First slide of a presentation deck (title / opening)",
6277
+ "Any slide that functions as a visual cover with a large heading and minimal body text",
6278
+ "Brand presentations where a logo lockup is needed alongside text (split layout)"
6222
6279
  ],
6223
6280
  "when_not_to_use": [
6224
- "Registration forms (extend with additional fields)",
6225
- "OAuth-only flows with no email/password fields"
6226
- ]
6227
- },
6228
- "pricing-section": {
6229
- "category": "marketing",
6230
- "description": "A responsive pricing tier grid with feature lists, highlighted plan, and per-tier CTAs.",
6231
- "components_used": [
6232
- "card",
6233
- "badge",
6234
- "button",
6235
- "separator",
6236
- "heading",
6237
- "text"
6238
- ],
6239
- "when_to_use": [
6240
- "SaaS pricing pages",
6241
- "Product comparison grids",
6242
- "Subscription tier displays"
6281
+ "Mid-deck content slides (use Slide + SlideHeader instead)",
6282
+ "Slides with more than a short tagline and subtitle"
6243
6283
  ],
6244
- "when_not_to_use": [
6245
- "Single product pricing (use Card directly)",
6246
- "Feature comparison tables without pricing"
6247
- ]
6248
- },
6249
- "sphere-playground": {
6250
- "category": "visual-elements",
6251
- "description": "An interactive demo composing the Sphere visualization with a Configuration Panel for real-time parameter control. The signature showcase for Visual Elements.",
6252
- "components_used": [
6253
- "sphere",
6254
- "configuration-panel",
6255
- "slider-control",
6256
- "toggle-group"
6284
+ "props": [
6285
+ {
6286
+ "name": "id",
6287
+ "type": "string",
6288
+ "description": "Unique slide identifier"
6289
+ },
6290
+ {
6291
+ "name": "badge",
6292
+ "type": "string",
6293
+ "description": "Short label displayed above the title (e.g. company name or date)"
6294
+ },
6295
+ {
6296
+ "name": "title",
6297
+ "type": "string",
6298
+ "description": "Main heading (mutually exclusive with titleContent)"
6299
+ },
6300
+ {
6301
+ "name": "titleContent",
6302
+ "type": "ReactNode",
6303
+ "description": "Custom JSX heading (overrides title string)"
6304
+ },
6305
+ {
6306
+ "name": "subtitle",
6307
+ "type": "string",
6308
+ "description": "Tagline below the title"
6309
+ },
6310
+ {
6311
+ "name": "heroImage",
6312
+ "type": "string",
6313
+ "description": "URL for a full-bleed background image with overlay"
6314
+ },
6315
+ {
6316
+ "name": "logo",
6317
+ "type": "string",
6318
+ "description": "Logo image URL (activates split layout when heroImage is absent)"
6319
+ },
6320
+ {
6321
+ "name": "description",
6322
+ "type": "string",
6323
+ "description": "Optional short description paragraph"
6324
+ }
6257
6325
  ],
6258
- "when_to_use": [
6259
- "Showcasing the Sphere component with interactive controls",
6260
- "Building immersive GPU-accelerated visual demos",
6261
- "Demonstrating Visor's visual element capabilities"
6326
+ "dependencies": [
6327
+ "@loworbitstudio/visor-core"
6262
6328
  ],
6263
- "when_not_to_use": [
6264
- "Embedding a sphere without controls use the Sphere component directly",
6265
- "Building a custom control panel — use ConfigurationPanel independently"
6266
- ]
6329
+ "tokens_used": [],
6330
+ "example": "<HeroSlide\n id=\"s-hero\"\n badge=\"Low Orbit Studio\"\n title=\"Building the Future\"\n subtitle=\"Design systems that scale.\"\n heroImage=\"/images/hero-bg.jpg\"\n/>\n"
6267
6331
  },
6268
- "steps-section": {
6269
- "category": "marketing",
6270
- "description": "A numbered process section with auto-numbered steps and connector lines. Suitable for \"how it works\" sections and onboarding flows.",
6271
- "components_used": [
6272
- "heading",
6273
- "text"
6274
- ],
6332
+ "slide": {
6333
+ "category": "deck",
6334
+ "description": "Full-viewport slide section with theme, layout mode, hero image, and background image support. The fundamental building block of every deck.",
6275
6335
  "when_to_use": [
6276
- "How it works sections",
6277
- "Onboarding flow overviews",
6278
- "Process explanations"
6336
+ "Every slide in a presentation deck",
6337
+ "Slides with dark or light themes requiring theme-scoped children",
6338
+ "Hero slides with a full-bleed background image and overlay",
6339
+ "Photo-mode slides with a full-bleed image behind content"
6279
6340
  ],
6280
6341
  "when_not_to_use": [
6281
- "Detailed multi-step wizards (use stepper/form)",
6282
- "Vertical timelines with dates (use timeline component)"
6283
- ]
6284
- },
6285
- "testimonial-section": {
6286
- "category": "marketing",
6287
- "description": "A social proof section with testimonial quotes, avatars, and attribution. Supports single centered layout or responsive grid for multiple testimonials.",
6288
- "components_used": [
6289
- "card",
6290
- "avatar",
6291
- "text",
6292
- "heading",
6293
- "separator"
6342
+ "Outside of a <DeckLayout> (keyboard navigation and scroll snapping won't function)",
6343
+ "Standalone page sections not part of a deck presentation"
6344
+ ],
6345
+ "variants": {
6346
+ "theme": [
6347
+ "light",
6348
+ "dark"
6349
+ ],
6350
+ "layout": [
6351
+ "default",
6352
+ "center",
6353
+ "flush",
6354
+ "hero",
6355
+ "photo",
6356
+ "bgImage"
6357
+ ]
6358
+ },
6359
+ "props": [
6360
+ {
6361
+ "name": "id",
6362
+ "type": "string",
6363
+ "description": "Unique slide identifier used for navigateTo() deep-linking"
6364
+ },
6365
+ {
6366
+ "name": "theme",
6367
+ "type": "'light' | 'dark'",
6368
+ "default": "light"
6369
+ },
6370
+ {
6371
+ "name": "dotNavTheme",
6372
+ "type": "'light' | 'dark'",
6373
+ "description": "Overrides dot-nav color detection independently of slide theme"
6374
+ },
6375
+ {
6376
+ "name": "center",
6377
+ "type": "boolean",
6378
+ "default": false,
6379
+ "description": "Center all content vertically and horizontally"
6380
+ },
6381
+ {
6382
+ "name": "flush",
6383
+ "type": "boolean",
6384
+ "default": false,
6385
+ "description": "Remove default padding"
6386
+ },
6387
+ {
6388
+ "name": "hero",
6389
+ "type": "boolean",
6390
+ "default": false,
6391
+ "description": "Enable hero image mode with content layered above"
6392
+ },
6393
+ {
6394
+ "name": "heroImage",
6395
+ "type": "string",
6396
+ "description": "URL for the hero background image (requires hero=true)"
6397
+ },
6398
+ {
6399
+ "name": "bgImage",
6400
+ "type": "string",
6401
+ "description": "URL for a full-bleed background image"
6402
+ },
6403
+ {
6404
+ "name": "photo",
6405
+ "type": "boolean",
6406
+ "default": false,
6407
+ "description": "Full-bleed photo mode"
6408
+ }
6409
+ ],
6410
+ "dependencies": [
6411
+ "@loworbitstudio/visor-core"
6412
+ ],
6413
+ "tokens_used": [
6414
+ "--color-primary-900",
6415
+ "--motion-duration-normal",
6416
+ "--motion-easing-standard",
6417
+ "--surface-page",
6418
+ "--text-on-dark",
6419
+ "--text-primary"
6294
6420
  ],
6421
+ "example": "<Slide id=\"s-intro\" theme=\"dark\" hero heroImage=\"/hero.jpg\">\n <SlideHeader subtitle=\"Welcome\" title=\"Our Vision\" />\n</Slide>\n"
6422
+ },
6423
+ "deck-slide-header": {
6424
+ "category": "deck",
6425
+ "description": "Slide section header with animated subtitle, title, and optional description. Used at the top of content slides to establish section context.",
6295
6426
  "when_to_use": [
6296
- "Customer testimonials",
6297
- "Social proof sections",
6298
- "Review showcases"
6427
+ "Opening content slides where a section title and subtitle are needed",
6428
+ "Any slide that requires a consistent heading hierarchy with staggered entrance animations"
6299
6429
  ],
6300
6430
  "when_not_to_use": [
6301
- "Product reviews with ratings (extend with star component)",
6302
- "User-generated content feeds"
6303
- ]
6304
- }
6305
- },
6306
- "hooks": {
6307
- "use-media-query": {
6308
- "description": "SSR-safe hook that returns whether a CSS media query matches."
6309
- },
6310
- "use-debounce": {
6311
- "description": "Debounces a value by delaying updates until after a specified delay. Useful for search inputs and high-frequency events."
6312
- },
6313
- "use-click-outside": {
6314
- "description": "Fires a callback when a click or touch event occurs outside the referenced element. Useful for closing dropdowns and popovers."
6315
- },
6316
- "use-currency": {
6317
- "description": "Detects user locale and returns currency symbol and price formatter for USD, EUR, and GBP."
6318
- },
6319
- "use-local-storage": {
6320
- "description": "Persists state to localStorage with SSR safety, functional updates, and cross-tab synchronisation."
6321
- },
6322
- "use-intersection-observer": {
6323
- "description": "Tracks whether an element is visible within the viewport using IntersectionObserver. Supports one-shot mode for lazy loading."
6324
- },
6325
- "use-keyboard-shortcut": {
6326
- "description": "Fires a callback when a specific keyboard shortcut is pressed, with support for modifier keys (Meta, Ctrl, Shift, Alt)."
6327
- },
6328
- "use-focus-trap": {
6329
- "description": "Traps keyboard focus within a container element. Used for accessible modals, drawers, and dialogs."
6330
- },
6331
- "use-previous": {
6332
- "description": "Returns the previous value of a variable from the last render. Useful for comparing values across renders."
6333
- },
6334
- "use-boolean": {
6335
- "description": "Manages a boolean state with stable toggle, setTrue, and setFalse helpers. Useful for open/close and show/hide patterns."
6336
- },
6337
- "use-intersection-animation": {
6338
- "description": "Observes section visibility via IntersectionObserver and updates the active index for scroll-driven animations."
6431
+ "Hero slides (use HeroSlide which has its own heading layout)",
6432
+ "Slides where the heading needs custom layout or typography"
6433
+ ],
6434
+ "props": [
6435
+ {
6436
+ "name": "subtitle",
6437
+ "type": "string",
6438
+ "description": "Section label displayed above the title"
6439
+ },
6440
+ {
6441
+ "name": "title",
6442
+ "type": "string",
6443
+ "description": "Main heading text"
6444
+ },
6445
+ {
6446
+ "name": "description",
6447
+ "type": "string",
6448
+ "description": "Optional paragraph below the title"
6449
+ }
6450
+ ],
6451
+ "dependencies": [
6452
+ "@loworbitstudio/visor-core"
6453
+ ],
6454
+ "tokens_used": [],
6455
+ "example": "<SlideHeader\n subtitle=\"Phase 1\"\n title=\"Discovery & Research\"\n description=\"Understanding the problem space before committing to solutions.\"\n/>\n"
6339
6456
  },
6340
- "use-keyboard-nav": {
6341
- "description": "Handles Arrow Up/Down and Home/End keyboard navigation to move between indexed sections or slides."
6457
+ "slide-theme-context": {
6458
+ "category": "deck",
6459
+ "description": "React context provider that propagates the active slide theme (\"light\" | \"dark\") to child components within a slide.",
6460
+ "when_to_use": [
6461
+ "Building slide sub-components that need to adapt styling to the parent slide's theme",
6462
+ "Any component inside a <Slide> that calls useSlideTheme()"
6463
+ ],
6464
+ "when_not_to_use": [
6465
+ "Outside of a <Slide> wrapper (returns \"light\" as default, not an error, but context is meaningless)",
6466
+ "Choosing between light/dark themes — that is controlled by the slide's theme prop"
6467
+ ],
6468
+ "props": [
6469
+ {
6470
+ "name": "theme",
6471
+ "type": "'light' | 'dark'",
6472
+ "description": "Theme variant propagated to all slide descendants"
6473
+ }
6474
+ ],
6475
+ "dependencies": [
6476
+ "react",
6477
+ "@loworbitstudio/visor-core"
6478
+ ],
6479
+ "tokens_used": [],
6480
+ "example": "// Consumed via useSlideTheme() inside any child of <Slide>\nfunction SlideCard() {\n const theme = useSlideTheme()\n return <div data-theme={theme}>...</div>\n}\n"
6342
6481
  },
6343
- "use-slide-engine": {
6344
- "description": "Provides smooth programmatic scrolling between indexed sections with a scrolling-lock guard to prevent observer conflicts."
6482
+ "deck-toc-slide": {
6483
+ "category": "deck",
6484
+ "description": "Auto-generated table of contents slide with clickable section + item links for deep navigation. Rendered automatically by DeckRenderer when showTOC is true.",
6485
+ "when_to_use": [
6486
+ "Decks with 3+ sections where an upfront overview helps orientation",
6487
+ "Any deck where users need to jump non-linearly to specific slides"
6488
+ ],
6489
+ "when_not_to_use": [
6490
+ "Short decks (under 6 slides) where a TOC adds noise",
6491
+ "Decks built with DeckRenderer (showTOC=true handles this automatically)"
6492
+ ],
6493
+ "props": [
6494
+ {
6495
+ "name": "sections",
6496
+ "type": "TOCSection[]",
6497
+ "description": "Array of { section: string; items: { id: string; title: string }[] }"
6498
+ },
6499
+ {
6500
+ "name": "backgroundImage",
6501
+ "type": "string",
6502
+ "description": "Optional background image (activates dark theme on the slide)"
6503
+ },
6504
+ {
6505
+ "name": "id",
6506
+ "type": "string",
6507
+ "default": "s-toc"
6508
+ }
6509
+ ],
6510
+ "dependencies": [
6511
+ "@loworbitstudio/visor-core"
6512
+ ],
6513
+ "tokens_used": [],
6514
+ "example": "<TOCSlide\n sections={[\n {\n section: \"Strategy\",\n items: [\n { id: \"s-vision\", title: \"Vision\" },\n { id: \"s-goals\", title: \"Goals\" },\n ],\n },\n ]}\n/>\n"
6345
6515
  },
6346
- "use-wheel-nav": {
6347
- "description": "Converts vertical wheel events into discrete index-based navigation with debounced throttling."
6516
+ "sphere": {
6517
+ "category": "visual-elements",
6518
+ "description": "GPU-accelerated particle sphere visualization with 256K particles, custom GLSL shaders, 6 geometry modes, 5 color schemes, and think-mode animation effects.",
6519
+ "when_to_use": [
6520
+ "Ambient background visualization (hero sections, landing pages)",
6521
+ "AI thinking/processing indicator",
6522
+ "Decorative visual element on dark backgrounds",
6523
+ "Data visualization with particle-based aesthetics"
6524
+ ],
6525
+ "when_not_to_use": [
6526
+ "Small UI components or icons (too heavy — requires Three.js)",
6527
+ "Pages where bundle size is critical (~150KB gzipped for Three.js)",
6528
+ "Content-heavy pages where animation would distract"
6529
+ ],
6530
+ "props": [
6531
+ {
6532
+ "name": "mode",
6533
+ "type": "'sphere' | 'curl' | 'turing' | 'lorenz' | 'tendrils'",
6534
+ "default": "sphere",
6535
+ "description": "Geometry mode for particle distribution"
6536
+ },
6537
+ {
6538
+ "name": "colorScheme",
6539
+ "type": "'solar' | 'aqua' | 'ember' | 'aurora' | 'ghost'",
6540
+ "default": "solar",
6541
+ "description": "Named color scheme"
6542
+ },
6543
+ {
6544
+ "name": "colors",
6545
+ "type": "GradientColors",
6546
+ "description": "Custom 5-stop gradient (overrides colorScheme)"
6547
+ },
6548
+ {
6549
+ "name": "particleCount",
6550
+ "type": "number",
6551
+ "default": 256000
6552
+ },
6553
+ {
6554
+ "name": "speed",
6555
+ "type": "number",
6556
+ "default": 1,
6557
+ "description": "Animation speed multiplier"
6558
+ },
6559
+ {
6560
+ "name": "waves",
6561
+ "type": "number",
6562
+ "default": 1,
6563
+ "description": "Wave displacement multiplier"
6564
+ },
6565
+ {
6566
+ "name": "dotSize",
6567
+ "type": "number",
6568
+ "default": 1,
6569
+ "description": "Particle dot size multiplier"
6570
+ },
6571
+ {
6572
+ "name": "blur",
6573
+ "type": "number",
6574
+ "default": 0.5,
6575
+ "description": "Softness (0 = hard dots, 1 = full glow)"
6576
+ },
6577
+ {
6578
+ "name": "thinkIntensity",
6579
+ "type": "number",
6580
+ "default": 0,
6581
+ "description": "Think-mode intensity (0-1)"
6582
+ },
6583
+ {
6584
+ "name": "thinkEffects",
6585
+ "type": "SphereThinkEffects",
6586
+ "description": "Which think-mode effects are enabled"
6587
+ },
6588
+ {
6589
+ "name": "orbitControls",
6590
+ "type": "boolean",
6591
+ "default": true,
6592
+ "description": "Enable drag-to-rotate"
6593
+ },
6594
+ {
6595
+ "name": "autoRotate",
6596
+ "type": "boolean",
6597
+ "default": true
6598
+ }
6599
+ ],
6600
+ "dependencies": [
6601
+ "three",
6602
+ "@loworbitstudio/visor-core"
6603
+ ],
6604
+ "tokens_used": [],
6605
+ "example": "<Sphere\n mode=\"sphere\"\n colorScheme=\"solar\"\n speed={1}\n style={{ width: \"100%\", height: \"400px\" }}\n/>\n"
6348
6606
  }
6349
6607
  },
6350
- "patterns": {
6351
- "auth-flow": {
6352
- "description": "Login, registration, and password recovery pages sharing a centered card layout.",
6608
+ "blocks": {
6609
+ "admin-dashboard": {
6610
+ "category": "admin",
6611
+ "description": "Drop-in admin overview composition — PageHeader, responsive stat grid, optional secondary region, and ActivityFeed with empty-state fallback. Composes existing admin compounds, nothing to configure.",
6353
6612
  "components_used": [
6354
- "card",
6355
- "input",
6356
- "button",
6357
- "field",
6358
- "alert",
6359
- "tabs"
6613
+ "page-header",
6614
+ "stat-card",
6615
+ "activity-feed",
6616
+ "empty-state"
6360
6617
  ],
6361
6618
  "when_to_use": [
6362
- "Sign-in and sign-up pages",
6363
- "Forgot password and reset password flows",
6364
- "Invitation acceptance screens"
6619
+ "Landing page for an admin or back-office app",
6620
+ "Overview-at-a-glance screens mixing KPIs and recent events",
6621
+ "Any dashboard needing a title, metrics, and a recent-activity feed"
6622
+ ],
6623
+ "when_not_to_use": [
6624
+ "Data-heavy list or table pages (use admin-list-page)",
6625
+ "Detail / edit screens for a single record (use admin-detail-drawer)",
6626
+ "Settings forms (use admin-settings-page)"
6365
6627
  ]
6366
6628
  },
6367
- "crud-table": {
6368
- "description": "Data table with row actions, confirmation dialog, and pagination for managing collections of records.",
6629
+ "admin-detail-drawer": {
6630
+ "category": "admin",
6631
+ "description": "Right-side slide-out panel for viewing or editing a single record. Composes Sheet with a sticky save/cancel footer, async save handler with pending state, an unsaved-changes guard powered by ConfirmDialog, and sm/md/lg/xl width variants.",
6369
6632
  "components_used": [
6370
- "table",
6633
+ "sheet",
6371
6634
  "button",
6372
- "dropdown-menu",
6373
- "dialog",
6374
- "alert",
6375
- "pagination",
6376
- "badge"
6635
+ "confirm-dialog"
6377
6636
  ],
6378
6637
  "when_to_use": [
6379
- "Admin pages listing and managing resources (users, orders, products)",
6380
- "Any collection view with create, read, update, delete operations",
6381
- "Data tables needing row-level actions and bulk operations"
6638
+ "Inline editing of a single record from a list or dashboard",
6639
+ "Click-a-row, edit-its-details-without-leaving-the-page patterns",
6640
+ "Detail panels where protecting against accidental close is important"
6641
+ ],
6642
+ "when_not_to_use": [
6643
+ "Full-page single-record editors (use admin-tabbed-editor)",
6644
+ "Multi-step forms (use admin-wizard)",
6645
+ "Simple confirmation prompts (use ConfirmDialog directly)"
6382
6646
  ]
6383
6647
  },
6384
- "dashboard-layout": {
6385
- "description": "App shell with collapsible sidebar navigation, top navbar, and content area with cards and tabs.",
6648
+ "admin-list-page": {
6649
+ "category": "admin",
6650
+ "description": "CRUD list archetype composing PageHeader, FilterBar, DataTable, BulkActionBar, and EmptyState into a single drop-in page. Generic over row data type, supports controlled and uncontrolled search/selection/sorting/pagination, exposes a bulk actions slot that appears only when rows are selected.",
6386
6651
  "components_used": [
6387
- "sidebar",
6388
- "navbar",
6389
- "card",
6390
- "tabs",
6391
- "separator",
6392
- "scroll-area"
6652
+ "page-header",
6653
+ "filter-bar",
6654
+ "data-table",
6655
+ "bulk-action-bar",
6656
+ "empty-state"
6393
6657
  ],
6394
6658
  "when_to_use": [
6395
- "Admin dashboards and internal tools",
6396
- "Multi-section apps with persistent navigation",
6397
- "Content-heavy layouts needing sidebar + main area structure"
6659
+ "List-all pages for users, orders, invoices, or projects",
6660
+ "Any CRUD index view needing search, filters, and sortable/paginated rows",
6661
+ "Pages that need bulk actions (archive, delete, export) on selected rows"
6662
+ ],
6663
+ "when_not_to_use": [
6664
+ "Overview dashboards with KPIs and activity feeds (use admin-dashboard)",
6665
+ "Single-record detail or edit screens (use admin-detail-drawer)",
6666
+ "Settings or preferences forms (use admin-settings-page)"
6398
6667
  ]
6399
6668
  },
6400
- "data-table-with-filters": {
6401
- "description": "Filterable data table with a toolbar for search, category filters, and column sorting.",
6669
+ "admin-settings-page": {
6670
+ "category": "admin",
6671
+ "description": "Long scrollable settings archetype with labeled sections and an optional sticky left-side nav that sync-scrolls via intersection observer. Supports two mutually-exclusive modes — a single global sticky save/cancel footer (default) or per-section save/revert footer rows. Composes PageHeader, Separator, Heading, Text, Button, and ConfirmDialog.",
6402
6672
  "components_used": [
6403
- "table",
6404
- "input",
6405
- "select",
6673
+ "page-header",
6674
+ "separator",
6675
+ "heading",
6676
+ "text",
6406
6677
  "button",
6407
- "badge",
6678
+ "confirm-dialog"
6679
+ ],
6680
+ "when_to_use": [
6681
+ "Application or workspace settings pages organized into labeled sections",
6682
+ "Profile pages, account pages, billing pages, team pages — anywhere long scrolling form content needs wayfinding",
6683
+ "Pages where some sections commit independently (per-section mode) or where all edits commit together (global mode)"
6684
+ ],
6685
+ "when_not_to_use": [
6686
+ "Editors where each tab replaces the previous panel entirely (use admin-tabbed-editor)",
6687
+ "Inline single-record edits (use admin-detail-drawer)",
6688
+ "Multi-step flows with a linear progression (use admin-wizard)"
6689
+ ]
6690
+ },
6691
+ "admin-shell": {
6692
+ "category": "admin",
6693
+ "description": "Foundational admin layout with sidebar, topbar, and main content area. Slot-driven for logo, navigation, breadcrumbs, user menu, and status indicators.",
6694
+ "components_used": [
6695
+ "breadcrumb",
6408
6696
  "dropdown-menu",
6409
- "pagination"
6697
+ "sidebar"
6410
6698
  ],
6411
6699
  "when_to_use": [
6412
- "Data-heavy pages where users need to find specific records",
6413
- "Admin dashboards with sortable, filterable lists",
6414
- "Search result pages with faceted filtering"
6700
+ "Internal admin tools and back-office apps",
6701
+ "Dashboards with persistent side navigation",
6702
+ "CRUD-heavy applications needing a consistent chrome",
6703
+ "Any multi-page admin area requiring breadcrumbs and a user menu"
6704
+ ],
6705
+ "when_not_to_use": [
6706
+ "Public marketing pages (use hero-section, cta-section, footer-section)",
6707
+ "Authentication screens (use login-form)",
6708
+ "Full-bleed canvas experiences without chrome"
6415
6709
  ]
6416
6710
  },
6417
- "empty-state": {
6418
- "description": "Placeholder shown when a page, list, or search has no content to display.",
6711
+ "admin-tabbed-editor": {
6712
+ "category": "admin",
6713
+ "description": "Full-page editor with horizontal tabs, tab-scoped content panels, and a sticky save/cancel footer. Composes PageHeader, Tabs, Button, and ConfirmDialog. Tab switching and cancel are protected by an unsaved-changes guard, save supports async with pending state.",
6419
6714
  "components_used": [
6420
- "card",
6715
+ "page-header",
6716
+ "tabs",
6421
6717
  "button",
6422
- "heading",
6423
- "text"
6718
+ "confirm-dialog"
6424
6719
  ],
6425
6720
  "when_to_use": [
6426
- "Empty lists or tables (no data yet)",
6427
- "Search results returning zero matches",
6428
- "First-time user onboarding (no content created yet)",
6429
- "Error states where content failed to load"
6721
+ "Full-page record editors where settings span multiple logical sections",
6722
+ "Profile editors, settings pages, resource configuration pages",
6723
+ "Any editor that benefits from a single global save across multiple tab panels"
6724
+ ],
6725
+ "when_not_to_use": [
6726
+ "Inline single-record edits (use admin-detail-drawer)",
6727
+ "Multi-step forms with a linear progression (use admin-wizard)",
6728
+ "Pages without meaningful grouping (use a plain form)"
6430
6729
  ]
6431
6730
  },
6432
- "form-with-validation": {
6433
- "description": "Standard form layout with field-level validation and submission handling.",
6731
+ "admin-wizard": {
6732
+ "category": "admin",
6733
+ "description": "Guided multi-step flow composing PageHeader, Stepper, and Button into a drop-in wizard with per-step async validation, final submit handler, horizontal or vertical stepper orientation, optional click-to-jump stepper navigation to completed steps, and a cancel guard via ConfirmDialog. Only the active step's content is mounted.",
6434
6734
  "components_used": [
6435
- "field",
6436
- "input",
6437
- "label",
6438
- "textarea",
6735
+ "page-header",
6736
+ "stepper",
6439
6737
  "button",
6440
- "alert"
6738
+ "confirm-dialog"
6441
6739
  ],
6442
6740
  "when_to_use": [
6443
- "Any form collecting user input (settings, profile, onboarding)",
6444
- "Forms needing inline validation feedback",
6445
- "Multi-field forms with consistent spacing and error display"
6741
+ "Multi-step create flows onboarding, account setup, content creation",
6742
+ "Guided configuration where each step depends on decisions made earlier",
6743
+ "Any linear progression where the user should see clear progress and can step back to revise earlier answers"
6744
+ ],
6745
+ "when_not_to_use": [
6746
+ "Long scrollable settings pages (use admin-settings-page)",
6747
+ "Editors where each tab is an independent view of the same record (use admin-tabbed-editor)",
6748
+ "Single-record inline edits (use admin-detail-drawer)"
6446
6749
  ]
6447
6750
  },
6448
- "settings-page": {
6449
- "description": "Multi-section settings page with sidebar navigation, grouped form fields, and save actions.",
6751
+ "configuration-panel": {
6752
+ "category": "configuration",
6753
+ "description": "A floating, glassmorphic configuration panel for organizing controls into labeled sections. Supports collapse animation, positional anchoring, and responsive stacking. Composed from Visor form components.",
6754
+ "components_used": [
6755
+ "separator"
6756
+ ],
6757
+ "when_to_use": [
6758
+ "Building control panels for interactive visualizations",
6759
+ "Settings or configuration UIs that float over content",
6760
+ "Any grouped-controls panel needing glassmorphic styling"
6761
+ ],
6762
+ "when_not_to_use": [
6763
+ "Static forms that live inline in page flow (use Card instead)",
6764
+ "Simple single-control toggles (use individual form components)"
6765
+ ]
6766
+ },
6767
+ "cta-section": {
6768
+ "category": "marketing",
6769
+ "description": "A centered call-to-action section composing Heading, Text, and Button.",
6770
+ "components_used": [
6771
+ "heading",
6772
+ "text",
6773
+ "button"
6774
+ ],
6775
+ "when_to_use": [
6776
+ "Marketing landing pages",
6777
+ "Conversion sections",
6778
+ "Upgrade prompts"
6779
+ ],
6780
+ "when_not_to_use": [
6781
+ "Inline CTAs within content (use Button directly)"
6782
+ ]
6783
+ },
6784
+ "design-system-deck": {
6785
+ "category": "documentation",
6786
+ "description": "A complete, registry-driven design system presentation deck. Composes all slide components into a DeckRenderer with TOC, dot navigation, keyboard nav, and fullscreen support. Responds dynamically to the active theme.",
6450
6787
  "components_used": [
6788
+ "alert",
6789
+ "badge",
6790
+ "button",
6451
6791
  "card",
6792
+ "checkbox",
6793
+ "deck-renderer",
6794
+ "heading",
6452
6795
  "input",
6453
- "textarea",
6796
+ "label",
6797
+ "progress",
6798
+ "radio-group",
6454
6799
  "select",
6800
+ "separator",
6801
+ "slide",
6802
+ "slide-header",
6455
6803
  "switch",
6804
+ "tabs",
6805
+ "text",
6806
+ "toggle-group"
6807
+ ],
6808
+ "when_to_use": [
6809
+ "Presenting a design system as a navigable deck",
6810
+ "Previewing a theme's full token coverage in slide format",
6811
+ "Design system documentation and onboarding"
6812
+ ],
6813
+ "when_not_to_use": [
6814
+ "Production user-facing pages",
6815
+ "When a flat specimen view is preferred (use design-system-specimen instead)"
6816
+ ]
6817
+ },
6818
+ "design-system-specimen": {
6819
+ "category": "documentation",
6820
+ "description": "Live interactive showcase of the full Visor token system and component library. Responds dynamically to the active theme.",
6821
+ "components_used": [
6822
+ "alert",
6823
+ "badge",
6456
6824
  "button",
6457
- "field",
6458
- "fieldset",
6825
+ "card",
6826
+ "checkbox",
6827
+ "heading",
6828
+ "input",
6829
+ "label",
6830
+ "progress",
6831
+ "radio-group",
6832
+ "select",
6459
6833
  "separator",
6834
+ "slider",
6835
+ "switch",
6460
6836
  "tabs",
6461
- "avatar"
6837
+ "text",
6838
+ "textarea",
6839
+ "toggle-group"
6462
6840
  ],
6463
6841
  "when_to_use": [
6464
- "User profile and account settings",
6465
- "Application preferences and configuration",
6466
- "Team or organization settings"
6842
+ "Previewing a theme's full token coverage",
6843
+ "Validating design system consistency across components",
6844
+ "Design system documentation and onboarding"
6845
+ ],
6846
+ "when_not_to_use": [
6847
+ "Production user-facing pages"
6467
6848
  ]
6468
- }
6469
- },
6470
- "categories": {
6471
- "specimen": [
6472
- "accessibility-specimen",
6473
- "color-bar",
6474
- "color-swatch",
6475
- "elevation-card",
6476
- "font-showcase",
6477
- "icon-grid",
6478
- "motion-specimen",
6479
- "opacity-bar",
6480
- "radius-scale",
6481
- "spacing-scale",
6482
- "surface-row",
6483
- "type-specimen"
6484
- ],
6485
- "data-display": [
6486
- "accordion",
6487
- "avatar",
6488
- "badge",
6489
- "card",
6490
- "chart",
6491
- "table",
6492
- "timeline"
6493
- ],
6494
- "admin": [
6495
- "activity-feed",
6496
- "bulk-action-bar",
6497
- "confirm-dialog",
6498
- "data-table",
6499
- "empty-state",
6500
- "filter-bar",
6501
- "kbd",
6502
- "stat-card",
6503
- "status-badge"
6504
- ],
6505
- "feedback": [
6506
- "alert",
6507
- "banner",
6508
- "popover",
6509
- "progress",
6510
- "skeleton",
6511
- "toast",
6512
- "tooltip"
6513
- ],
6514
- "navigation": [
6515
- "breadcrumb",
6516
- "command",
6517
- "navbar",
6518
- "page-header",
6519
- "pagination",
6520
- "stepper",
6521
- "tabs"
6522
- ],
6523
- "form": [
6524
- "button",
6525
- "calendar",
6849
+ },
6850
+ "features-grid": {
6851
+ "category": "marketing",
6852
+ "description": "A responsive grid of feature cards with icons, titles, and descriptions. Demonstrates Card + icon composition in a configurable grid layout.",
6853
+ "components_used": [
6854
+ "card",
6855
+ "heading",
6856
+ "text"
6857
+ ],
6858
+ "when_to_use": [
6859
+ "Product feature showcases",
6860
+ "Service offering grids",
6861
+ "Capability overviews"
6862
+ ],
6863
+ "when_not_to_use": [
6864
+ "Icon-only grids without descriptions (use icon-grid specimen)",
6865
+ "Single feature highlights"
6866
+ ]
6867
+ },
6868
+ "footer-section": {
6869
+ "category": "marketing",
6870
+ "description": "A multi-column responsive footer with link groups, logo area, and copyright.",
6871
+ "components_used": [
6872
+ "heading",
6873
+ "text",
6874
+ "separator"
6875
+ ],
6876
+ "when_to_use": [
6877
+ "Website footers",
6878
+ "Landing page footers",
6879
+ "App marketing site footers"
6880
+ ],
6881
+ "when_not_to_use": [
6882
+ "In-app footers (typically minimal)",
6883
+ "Presentation footers (use deck-footer)"
6884
+ ]
6885
+ },
6886
+ "hero-section": {
6887
+ "category": "marketing",
6888
+ "description": "A full-width hero section with background media support, heading, subheading, and call-to-action button.",
6889
+ "components_used": [
6890
+ "heading",
6891
+ "text",
6892
+ "button"
6893
+ ],
6894
+ "when_to_use": [
6895
+ "Marketing landing page hero",
6896
+ "Product launch pages",
6897
+ "App landing pages"
6898
+ ],
6899
+ "when_not_to_use": [
6900
+ "Presentation slides (use deck hero-slide)",
6901
+ "Content sections without full-viewport height"
6902
+ ]
6903
+ },
6904
+ "login-form": {
6905
+ "category": "authentication",
6906
+ "description": "A login form block using Visor form components (Button, Input, Label, Card).",
6907
+ "components_used": [
6908
+ "button",
6909
+ "input",
6910
+ "field",
6911
+ "card"
6912
+ ],
6913
+ "when_to_use": [
6914
+ "Authentication pages",
6915
+ "Sign-in screens",
6916
+ "Demo login flows"
6917
+ ],
6918
+ "when_not_to_use": [
6919
+ "Registration forms (extend with additional fields)",
6920
+ "OAuth-only flows with no email/password fields"
6921
+ ]
6922
+ },
6923
+ "pricing-section": {
6924
+ "category": "marketing",
6925
+ "description": "A responsive pricing tier grid with feature lists, highlighted plan, and per-tier CTAs.",
6926
+ "components_used": [
6927
+ "card",
6928
+ "badge",
6929
+ "button",
6930
+ "separator",
6931
+ "heading",
6932
+ "text"
6933
+ ],
6934
+ "when_to_use": [
6935
+ "SaaS pricing pages",
6936
+ "Product comparison grids",
6937
+ "Subscription tier displays"
6938
+ ],
6939
+ "when_not_to_use": [
6940
+ "Single product pricing (use Card directly)",
6941
+ "Feature comparison tables without pricing"
6942
+ ]
6943
+ },
6944
+ "sphere-playground": {
6945
+ "category": "visual-elements",
6946
+ "description": "An interactive demo composing the Sphere visualization with a Configuration Panel for real-time parameter control. The signature showcase for Visual Elements.",
6947
+ "components_used": [
6948
+ "sphere",
6949
+ "configuration-panel",
6950
+ "slider-control",
6951
+ "toggle-group"
6952
+ ],
6953
+ "when_to_use": [
6954
+ "Showcasing the Sphere component with interactive controls",
6955
+ "Building immersive GPU-accelerated visual demos",
6956
+ "Demonstrating Visor's visual element capabilities"
6957
+ ],
6958
+ "when_not_to_use": [
6959
+ "Embedding a sphere without controls — use the Sphere component directly",
6960
+ "Building a custom control panel — use ConfigurationPanel independently"
6961
+ ]
6962
+ },
6963
+ "steps-section": {
6964
+ "category": "marketing",
6965
+ "description": "A numbered process section with auto-numbered steps and connector lines. Suitable for \"how it works\" sections and onboarding flows.",
6966
+ "components_used": [
6967
+ "heading",
6968
+ "text"
6969
+ ],
6970
+ "when_to_use": [
6971
+ "How it works sections",
6972
+ "Onboarding flow overviews",
6973
+ "Process explanations"
6974
+ ],
6975
+ "when_not_to_use": [
6976
+ "Detailed multi-step wizards (use stepper/form)",
6977
+ "Vertical timelines with dates (use timeline component)"
6978
+ ]
6979
+ },
6980
+ "testimonial-section": {
6981
+ "category": "marketing",
6982
+ "description": "A social proof section with testimonial quotes, avatars, and attribution. Supports single centered layout or responsive grid for multiple testimonials.",
6983
+ "components_used": [
6984
+ "card",
6985
+ "avatar",
6986
+ "text",
6987
+ "heading",
6988
+ "separator"
6989
+ ],
6990
+ "when_to_use": [
6991
+ "Customer testimonials",
6992
+ "Social proof sections",
6993
+ "Review showcases"
6994
+ ],
6995
+ "when_not_to_use": [
6996
+ "Product reviews with ratings (extend with star component)",
6997
+ "User-generated content feeds"
6998
+ ]
6999
+ }
7000
+ },
7001
+ "hooks": {
7002
+ "use-media-query": {
7003
+ "description": "SSR-safe hook that returns whether a CSS media query matches.",
7004
+ "params": [
7005
+ {
7006
+ "name": "query",
7007
+ "type": "string",
7008
+ "required": true,
7009
+ "description": "CSS media query string (e.g. \"(min-width: 768px)\")."
7010
+ }
7011
+ ],
7012
+ "returns": [
7013
+ {
7014
+ "name": "matches",
7015
+ "type": "boolean",
7016
+ "description": "Whether the media query currently matches. SSR-safe (defaults to false)."
7017
+ }
7018
+ ]
7019
+ },
7020
+ "use-debounce": {
7021
+ "description": "Debounces a value by delaying updates until after a specified delay. Useful for search inputs and high-frequency events.",
7022
+ "params": [
7023
+ {
7024
+ "name": "value",
7025
+ "type": "T",
7026
+ "required": true,
7027
+ "description": "The value to debounce."
7028
+ },
7029
+ {
7030
+ "name": "delay",
7031
+ "type": "number",
7032
+ "required": true,
7033
+ "description": "Delay in milliseconds before the debounced value updates."
7034
+ }
7035
+ ],
7036
+ "returns": [
7037
+ {
7038
+ "name": "debouncedValue",
7039
+ "type": "T",
7040
+ "description": "The debounced value, updated only after the delay elapses with no new changes."
7041
+ }
7042
+ ]
7043
+ },
7044
+ "use-click-outside": {
7045
+ "description": "Fires a callback when a click or touch event occurs outside the referenced element. Useful for closing dropdowns and popovers.",
7046
+ "params": [
7047
+ {
7048
+ "name": "ref",
7049
+ "type": "RefObject<T extends HTMLElement>",
7050
+ "required": true,
7051
+ "description": "Ref to the element that defines the \"inside\" boundary."
7052
+ },
7053
+ {
7054
+ "name": "handler",
7055
+ "type": "(event: MouseEvent | TouchEvent) => void",
7056
+ "required": true,
7057
+ "description": "Callback invoked when a click/touch lands outside the ref element."
7058
+ }
7059
+ ]
7060
+ },
7061
+ "use-currency": {
7062
+ "description": "Detects user locale and returns currency symbol and price formatter for USD, EUR, and GBP.",
7063
+ "returns": [
7064
+ {
7065
+ "name": "currency",
7066
+ "type": "'usd' | 'eur' | 'gbp'",
7067
+ "description": "Detected currency code based on browser locale."
7068
+ },
7069
+ {
7070
+ "name": "symbol",
7071
+ "type": "string",
7072
+ "description": "Currency symbol ($, EUR, or GBP)."
7073
+ },
7074
+ {
7075
+ "name": "formatPrice",
7076
+ "type": "(prices: Record<Currency, number>) => string",
7077
+ "description": "Formats a price object into a localized string using the detected currency."
7078
+ }
7079
+ ]
7080
+ },
7081
+ "use-local-storage": {
7082
+ "description": "Persists state to localStorage with SSR safety, functional updates, and cross-tab synchronisation.",
7083
+ "params": [
7084
+ {
7085
+ "name": "key",
7086
+ "type": "string",
7087
+ "required": true,
7088
+ "description": "The localStorage key to read from and write to."
7089
+ },
7090
+ {
7091
+ "name": "initialValue",
7092
+ "type": "T",
7093
+ "required": true,
7094
+ "description": "Default value used when no stored value exists or localStorage is unavailable."
7095
+ }
7096
+ ],
7097
+ "returns": [
7098
+ {
7099
+ "name": "storedValue",
7100
+ "type": "T",
7101
+ "description": "Current value from localStorage (or the initial value as fallback)."
7102
+ },
7103
+ {
7104
+ "name": "setValue",
7105
+ "type": "(value: T | ((prev: T) => T)) => void",
7106
+ "description": "Updates the stored value. Accepts a direct value or an updater function."
7107
+ },
7108
+ {
7109
+ "name": "removeValue",
7110
+ "type": "() => void",
7111
+ "description": "Removes the key from localStorage and resets to the initial value."
7112
+ }
7113
+ ]
7114
+ },
7115
+ "use-intersection-observer": {
7116
+ "description": "Tracks whether an element is visible within the viewport using IntersectionObserver. Supports one-shot mode for lazy loading.",
7117
+ "params": [
7118
+ {
7119
+ "name": "once",
7120
+ "type": "boolean",
7121
+ "required": false,
7122
+ "default": "false",
7123
+ "description": "If true, stops observing after the element first intersects."
7124
+ },
7125
+ {
7126
+ "name": "threshold",
7127
+ "type": "number | number[]",
7128
+ "required": false,
7129
+ "default": "0",
7130
+ "description": "IntersectionObserver visibility threshold."
7131
+ },
7132
+ {
7133
+ "name": "root",
7134
+ "type": "Element | null",
7135
+ "required": false,
7136
+ "default": "null",
7137
+ "description": "Scroll container to use as the intersection root."
7138
+ },
7139
+ {
7140
+ "name": "rootMargin",
7141
+ "type": "string",
7142
+ "required": false,
7143
+ "default": "\"0%\"",
7144
+ "description": "Margin around the root for expanding or shrinking the intersection area."
7145
+ }
7146
+ ],
7147
+ "returns": [
7148
+ {
7149
+ "name": "ref",
7150
+ "type": "React.RefObject<Element | null>",
7151
+ "description": "Ref to attach to the element you want to observe."
7152
+ },
7153
+ {
7154
+ "name": "isIntersecting",
7155
+ "type": "boolean",
7156
+ "description": "Whether the observed element is currently intersecting."
7157
+ },
7158
+ {
7159
+ "name": "entry",
7160
+ "type": "IntersectionObserverEntry | null",
7161
+ "description": "The raw IntersectionObserverEntry, or null before first observation."
7162
+ }
7163
+ ]
7164
+ },
7165
+ "use-keyboard-shortcut": {
7166
+ "description": "Fires a callback when a specific keyboard shortcut is pressed, with support for modifier keys (Meta, Ctrl, Shift, Alt).",
7167
+ "params": [
7168
+ {
7169
+ "name": "key",
7170
+ "type": "string",
7171
+ "required": true,
7172
+ "description": "The key to listen for (case-insensitive, e.g. \"k\", \"Escape\")."
7173
+ },
7174
+ {
7175
+ "name": "callback",
7176
+ "type": "(event: KeyboardEvent) => void",
7177
+ "required": true,
7178
+ "description": "Function invoked when the shortcut is triggered."
7179
+ },
7180
+ {
7181
+ "name": "options",
7182
+ "type": "KeyboardShortcutOptions",
7183
+ "required": false,
7184
+ "description": "Modifier and target configuration."
7185
+ },
7186
+ {
7187
+ "name": "options.meta",
7188
+ "type": "boolean",
7189
+ "required": false,
7190
+ "default": "false",
7191
+ "description": "Whether the Meta (Cmd/Win) key must be held."
7192
+ },
7193
+ {
7194
+ "name": "options.ctrl",
7195
+ "type": "boolean",
7196
+ "required": false,
7197
+ "default": "false",
7198
+ "description": "Whether the Ctrl key must be held."
7199
+ },
7200
+ {
7201
+ "name": "options.shift",
7202
+ "type": "boolean",
7203
+ "required": false,
7204
+ "default": "false",
7205
+ "description": "Whether the Shift key must be held."
7206
+ },
7207
+ {
7208
+ "name": "options.alt",
7209
+ "type": "boolean",
7210
+ "required": false,
7211
+ "default": "false",
7212
+ "description": "Whether the Alt/Option key must be held."
7213
+ },
7214
+ {
7215
+ "name": "options.target",
7216
+ "type": "EventTarget | null",
7217
+ "required": false,
7218
+ "default": "document",
7219
+ "description": "Element to attach the listener to."
7220
+ },
7221
+ {
7222
+ "name": "options.preventDefault",
7223
+ "type": "boolean",
7224
+ "required": false,
7225
+ "default": "false",
7226
+ "description": "Whether to prevent the default browser action."
7227
+ }
7228
+ ]
7229
+ },
7230
+ "use-focus-trap": {
7231
+ "description": "Traps keyboard focus within a container element. Used for accessible modals, drawers, and dialogs.",
7232
+ "params": [
7233
+ {
7234
+ "name": "ref",
7235
+ "type": "RefObject<HTMLElement | null>",
7236
+ "required": true,
7237
+ "description": "Ref to the container element that traps focus."
7238
+ },
7239
+ {
7240
+ "name": "enabled",
7241
+ "type": "boolean",
7242
+ "required": false,
7243
+ "default": "true",
7244
+ "description": "Whether the focus trap is active."
7245
+ }
7246
+ ]
7247
+ },
7248
+ "use-previous": {
7249
+ "description": "Returns the previous value of a variable from the last render. Useful for comparing values across renders.",
7250
+ "params": [
7251
+ {
7252
+ "name": "value",
7253
+ "type": "T",
7254
+ "required": true,
7255
+ "description": "The value to track across renders."
7256
+ }
7257
+ ],
7258
+ "returns": [
7259
+ {
7260
+ "name": "previousValue",
7261
+ "type": "T | undefined",
7262
+ "description": "The value from the previous render, or undefined on the first render."
7263
+ }
7264
+ ]
7265
+ },
7266
+ "use-boolean": {
7267
+ "description": "Manages a boolean state with stable toggle, setTrue, and setFalse helpers. Useful for open/close and show/hide patterns.",
7268
+ "params": [
7269
+ {
7270
+ "name": "initialValue",
7271
+ "type": "boolean",
7272
+ "required": false,
7273
+ "default": "false",
7274
+ "description": "Initial boolean state value."
7275
+ }
7276
+ ],
7277
+ "returns": [
7278
+ {
7279
+ "name": "value",
7280
+ "type": "boolean",
7281
+ "description": "Current boolean state."
7282
+ },
7283
+ {
7284
+ "name": "setTrue",
7285
+ "type": "() => void",
7286
+ "description": "Sets state to true."
7287
+ },
7288
+ {
7289
+ "name": "setFalse",
7290
+ "type": "() => void",
7291
+ "description": "Sets state to false."
7292
+ },
7293
+ {
7294
+ "name": "toggle",
7295
+ "type": "() => void",
7296
+ "description": "Toggles state between true and false."
7297
+ },
7298
+ {
7299
+ "name": "setValue",
7300
+ "type": "(value: boolean) => void",
7301
+ "description": "Sets state to an explicit boolean value."
7302
+ }
7303
+ ]
7304
+ },
7305
+ "use-intersection-animation": {
7306
+ "description": "Observes section visibility via IntersectionObserver and updates the active index for scroll-driven animations.",
7307
+ "params": [
7308
+ {
7309
+ "name": "sectionsRef",
7310
+ "type": "React.RefObject<HTMLElement[]>",
7311
+ "required": true,
7312
+ "description": "Ref to an array of section elements to observe."
7313
+ },
7314
+ {
7315
+ "name": "currentIndexRef",
7316
+ "type": "React.MutableRefObject<number>",
7317
+ "required": true,
7318
+ "description": "Mutable ref holding the current visible section index."
7319
+ },
7320
+ {
7321
+ "name": "setCurrentIndex",
7322
+ "type": "(index: number) => void",
7323
+ "required": true,
7324
+ "description": "State setter called when the visible section changes."
7325
+ },
7326
+ {
7327
+ "name": "isScrollingRef",
7328
+ "type": "React.MutableRefObject<boolean>",
7329
+ "required": false,
7330
+ "description": "Ref indicating programmatic scrolling is in progress; suppresses index updates when true."
7331
+ },
7332
+ {
7333
+ "name": "threshold",
7334
+ "type": "number",
7335
+ "required": false,
7336
+ "default": "0.4",
7337
+ "description": "IntersectionObserver visibility threshold (0 to 1)."
7338
+ }
7339
+ ]
7340
+ },
7341
+ "use-keyboard-nav": {
7342
+ "description": "Handles Arrow Up/Down and Home/End keyboard navigation to move between indexed sections or slides.",
7343
+ "params": [
7344
+ {
7345
+ "name": "containerRef",
7346
+ "type": "React.RefObject<HTMLElement | null>",
7347
+ "required": false,
7348
+ "description": "Container element to listen on. Falls back to document if not provided."
7349
+ },
7350
+ {
7351
+ "name": "goTo",
7352
+ "type": "(index: number) => void",
7353
+ "required": true,
7354
+ "description": "Navigation function that scrolls to the given section index."
7355
+ },
7356
+ {
7357
+ "name": "currentIndexRef",
7358
+ "type": "React.MutableRefObject<number>",
7359
+ "required": true,
7360
+ "description": "Mutable ref holding the current section index."
7361
+ },
7362
+ {
7363
+ "name": "totalSectionsRef",
7364
+ "type": "React.MutableRefObject<number>",
7365
+ "required": true,
7366
+ "description": "Mutable ref holding the total number of sections."
7367
+ }
7368
+ ]
7369
+ },
7370
+ "use-slide-engine": {
7371
+ "description": "Provides smooth programmatic scrolling between indexed sections with a scrolling-lock guard to prevent observer conflicts.",
7372
+ "params": [
7373
+ {
7374
+ "name": "containerRef",
7375
+ "type": "React.RefObject<HTMLElement | null>",
7376
+ "required": false,
7377
+ "description": "Container element that scrolls. Falls back to scrollIntoView if not provided."
7378
+ },
7379
+ {
7380
+ "name": "sectionsRef",
7381
+ "type": "React.RefObject<HTMLElement[]>",
7382
+ "required": true,
7383
+ "description": "Ref to an array of section elements that can be navigated."
7384
+ },
7385
+ {
7386
+ "name": "currentIndexRef",
7387
+ "type": "React.MutableRefObject<number>",
7388
+ "required": true,
7389
+ "description": "Mutable ref holding the current section index."
7390
+ },
7391
+ {
7392
+ "name": "setCurrentIndex",
7393
+ "type": "(index: number) => void",
7394
+ "required": false,
7395
+ "description": "State setter called when navigation occurs."
7396
+ }
7397
+ ],
7398
+ "returns": [
7399
+ {
7400
+ "name": "goTo",
7401
+ "type": "(index: number) => void",
7402
+ "description": "Scrolls to the section at the given index with smooth animation."
7403
+ },
7404
+ {
7405
+ "name": "navigateTo",
7406
+ "type": "(id: string) => void",
7407
+ "description": "Scrolls to a section by its DOM element id."
7408
+ },
7409
+ {
7410
+ "name": "isScrollingRef",
7411
+ "type": "React.MutableRefObject<boolean>",
7412
+ "description": "Ref indicating whether a programmatic scroll is in progress."
7413
+ }
7414
+ ]
7415
+ },
7416
+ "use-wheel-nav": {
7417
+ "description": "Converts vertical wheel events into discrete index-based navigation with debounced throttling.",
7418
+ "params": [
7419
+ {
7420
+ "name": "containerRef",
7421
+ "type": "React.RefObject<HTMLElement | null>",
7422
+ "required": false,
7423
+ "description": "Container element to listen on. Falls back to document if not provided."
7424
+ },
7425
+ {
7426
+ "name": "goTo",
7427
+ "type": "(index: number) => void",
7428
+ "required": true,
7429
+ "description": "Navigation function that scrolls to the given section index."
7430
+ },
7431
+ {
7432
+ "name": "currentIndexRef",
7433
+ "type": "React.MutableRefObject<number>",
7434
+ "required": true,
7435
+ "description": "Mutable ref holding the current section index."
7436
+ }
7437
+ ]
7438
+ }
7439
+ },
7440
+ "patterns": {
7441
+ "auth-flow": {
7442
+ "description": "Login, registration, and password recovery pages sharing a centered card layout.",
7443
+ "components_used": [
7444
+ "card",
7445
+ "input",
7446
+ "button",
7447
+ "field",
7448
+ "alert",
7449
+ "tabs"
7450
+ ],
7451
+ "when_to_use": [
7452
+ "Sign-in and sign-up pages",
7453
+ "Forgot password and reset password flows",
7454
+ "Invitation acceptance screens"
7455
+ ]
7456
+ },
7457
+ "card-grid": {
7458
+ "description": "A responsive grid of content cards with skeleton loading states, status badges, action buttons, pagination, and an empty-state fallback.",
7459
+ "components_used": [
7460
+ "card",
7461
+ "badge",
7462
+ "button",
7463
+ "skeleton",
7464
+ "empty-state",
7465
+ "pagination"
7466
+ ],
7467
+ "when_to_use": [
7468
+ "Displaying a collection of items as visual tiles (projects, products, team members)",
7469
+ "When a table layout is too data-dense and card previews are more scannable",
7470
+ "Catalog or gallery pages with paginated content"
7471
+ ]
7472
+ },
7473
+ "crud-table": {
7474
+ "description": "Data table with row actions, confirmation dialog, and pagination for managing collections of records.",
7475
+ "components_used": [
7476
+ "table",
7477
+ "button",
7478
+ "dropdown-menu",
7479
+ "dialog",
7480
+ "alert",
7481
+ "pagination",
7482
+ "badge"
7483
+ ],
7484
+ "when_to_use": [
7485
+ "Admin pages listing and managing resources (users, orders, products)",
7486
+ "Any collection view with create, read, update, delete operations",
7487
+ "Data tables needing row-level actions and bulk operations"
7488
+ ]
7489
+ },
7490
+ "dashboard-layout": {
7491
+ "description": "App shell with collapsible sidebar navigation, top navbar, and content area with cards and tabs.",
7492
+ "components_used": [
7493
+ "sidebar",
7494
+ "navbar",
7495
+ "card",
7496
+ "tabs",
7497
+ "separator",
7498
+ "scroll-area"
7499
+ ],
7500
+ "when_to_use": [
7501
+ "Admin dashboards and internal tools",
7502
+ "Multi-section apps with persistent navigation",
7503
+ "Content-heavy layouts needing sidebar + main area structure"
7504
+ ]
7505
+ },
7506
+ "data-table-row-actions": {
7507
+ "description": "A data table with per-row action menus, bulk selection with a bulk action bar, confirmation dialogs, and toast feedback for destructive operations.",
7508
+ "components_used": [
7509
+ "data-table",
7510
+ "dropdown-menu",
7511
+ "dialog",
7512
+ "confirm-dialog",
7513
+ "toast",
7514
+ "bulk-action-bar"
7515
+ ],
7516
+ "when_to_use": [
7517
+ "Admin lists where rows have contextual actions (edit, archive, delete)",
7518
+ "When supporting both single-row and bulk operations on the same table",
7519
+ "Any CRUD interface where destructive actions require confirmation"
7520
+ ]
7521
+ },
7522
+ "data-table-with-filters": {
7523
+ "description": "Filterable data table with a toolbar for search, category filters, and column sorting.",
7524
+ "components_used": [
7525
+ "table",
7526
+ "input",
7527
+ "select",
7528
+ "button",
7529
+ "badge",
7530
+ "dropdown-menu",
7531
+ "pagination"
7532
+ ],
7533
+ "when_to_use": [
7534
+ "Data-heavy pages where users need to find specific records",
7535
+ "Admin dashboards with sortable, filterable lists",
7536
+ "Search result pages with faceted filtering"
7537
+ ]
7538
+ },
7539
+ "empty-state": {
7540
+ "description": "Placeholder shown when a page, list, or search has no content to display.",
7541
+ "components_used": [
7542
+ "card",
7543
+ "button",
7544
+ "heading",
7545
+ "text"
7546
+ ],
7547
+ "when_to_use": [
7548
+ "Empty lists or tables (no data yet)",
7549
+ "Search results returning zero matches",
7550
+ "First-time user onboarding (no content created yet)",
7551
+ "Error states where content failed to load"
7552
+ ]
7553
+ },
7554
+ "form-with-validation": {
7555
+ "description": "Standard form layout with field-level validation and submission handling.",
7556
+ "components_used": [
7557
+ "field",
7558
+ "input",
7559
+ "label",
7560
+ "textarea",
7561
+ "button",
7562
+ "alert"
7563
+ ],
7564
+ "when_to_use": [
7565
+ "Any form collecting user input (settings, profile, onboarding)",
7566
+ "Forms needing inline validation feedback",
7567
+ "Multi-field forms with consistent spacing and error display"
7568
+ ]
7569
+ },
7570
+ "modal-form": {
7571
+ "description": "A dialog-based form pattern for creating or editing entities inline without navigating away.",
7572
+ "components_used": [
7573
+ "dialog",
7574
+ "field",
7575
+ "input",
7576
+ "label",
7577
+ "textarea",
7578
+ "button",
7579
+ "alert"
7580
+ ],
7581
+ "when_to_use": [
7582
+ "Creating or editing a record without leaving the current page",
7583
+ "Collecting a small set of inputs (fewer than 8 fields)",
7584
+ "When the action is contextual to the parent list or table"
7585
+ ]
7586
+ },
7587
+ "notification-center": {
7588
+ "description": "A popover-based notification hub with a command palette for filtering and bulk-managing alerts, toasts, and system messages.",
7589
+ "components_used": [
7590
+ "toast",
7591
+ "command",
7592
+ "button",
7593
+ "badge",
7594
+ "scroll-area"
7595
+ ],
7596
+ "when_to_use": [
7597
+ "Apps with persistent in-app notifications or activity alerts",
7598
+ "When users need to review, dismiss, or act on multiple notifications at once",
7599
+ "Combining real-time toast feedback with a browsable notification history"
7600
+ ]
7601
+ },
7602
+ "onboarding-flow": {
7603
+ "description": "A step-by-step welcome flow that collects user preferences and setup choices using progress tracking, cards, and inline forms with checkbox selections.",
7604
+ "components_used": [
7605
+ "stepper",
7606
+ "progress",
7607
+ "card",
7608
+ "button",
7609
+ "field",
7610
+ "input",
7611
+ "checkbox",
7612
+ "alert"
7613
+ ],
7614
+ "when_to_use": [
7615
+ "First-run experiences after account creation",
7616
+ "Feature setup flows where configuration choices shape the initial workspace",
7617
+ "Product tours that collect preferences before showing the main dashboard"
7618
+ ]
7619
+ },
7620
+ "responsive-sidebar-layout": {
7621
+ "description": "A full-app shell that renders a persistent sidebar on desktop and a Sheet-based drawer on mobile, sharing the same navigation content.",
7622
+ "components_used": [
7623
+ "sidebar",
7624
+ "sheet",
7625
+ "navbar",
7626
+ "button",
7627
+ "separator",
7628
+ "scroll-area"
7629
+ ],
7630
+ "when_to_use": [
7631
+ "Any multi-section app needing sidebar navigation that must work on mobile",
7632
+ "When the desktop sidebar should collapse to a drawer without duplicating nav markup",
7633
+ "Admin tools, dashboards, or SaaS apps requiring a responsive shell"
7634
+ ]
7635
+ },
7636
+ "search-results": {
7637
+ "description": "A search UI combining a type-ahead input, command palette, and filterable result cards with empty-state fallback.",
7638
+ "components_used": [
7639
+ "search-input",
7640
+ "command",
7641
+ "combobox",
7642
+ "card",
7643
+ "badge",
7644
+ "empty-state"
7645
+ ],
7646
+ "when_to_use": [
7647
+ "Search pages where users need to filter and browse a large dataset",
7648
+ "When combining free-text search with faceted category filters",
7649
+ "Directory, catalog, or discovery interfaces with card-based result display"
7650
+ ]
7651
+ },
7652
+ "settings-page": {
7653
+ "description": "Multi-section settings page with sidebar navigation, grouped form fields, and save actions.",
7654
+ "components_used": [
7655
+ "card",
7656
+ "input",
7657
+ "textarea",
7658
+ "select",
7659
+ "switch",
7660
+ "button",
7661
+ "field",
7662
+ "fieldset",
7663
+ "separator",
7664
+ "tabs",
7665
+ "avatar"
7666
+ ],
7667
+ "when_to_use": [
7668
+ "User profile and account settings",
7669
+ "Application preferences and configuration",
7670
+ "Team or organization settings"
7671
+ ]
7672
+ },
7673
+ "wizard-flow": {
7674
+ "description": "A multi-step guided flow with per-step validation, progress tracking, and a linear navigation structure for complex data collection.",
7675
+ "components_used": [
7676
+ "stepper",
7677
+ "field",
7678
+ "input",
7679
+ "button",
7680
+ "alert",
7681
+ "progress",
7682
+ "separator"
7683
+ ],
7684
+ "when_to_use": [
7685
+ "Onboarding flows, setup wizards, or checkout sequences",
7686
+ "When a single long form would overwhelm the user — break into logical steps",
7687
+ "Flows where earlier steps gate or inform later steps"
7688
+ ]
7689
+ }
7690
+ },
7691
+ "categories": {
7692
+ "specimen": [
7693
+ "accessibility-specimen",
7694
+ "color-bar",
7695
+ "color-swatch",
7696
+ "elevation-card",
7697
+ "font-showcase",
7698
+ "icon-grid",
7699
+ "motion-specimen",
7700
+ "opacity-bar",
7701
+ "radius-scale",
7702
+ "spacing-scale",
7703
+ "surface-row",
7704
+ "type-specimen"
7705
+ ],
7706
+ "data-display": [
7707
+ "accordion",
7708
+ "avatar",
7709
+ "badge",
7710
+ "card",
7711
+ "chart",
7712
+ "table",
7713
+ "timeline"
7714
+ ],
7715
+ "admin": [
7716
+ "activity-feed",
7717
+ "bulk-action-bar",
7718
+ "confirm-dialog",
7719
+ "data-table",
7720
+ "empty-state",
7721
+ "filter-bar",
7722
+ "kbd",
7723
+ "stat-card",
7724
+ "status-badge"
7725
+ ],
7726
+ "feedback": [
7727
+ "alert",
7728
+ "banner",
7729
+ "popover",
7730
+ "progress",
7731
+ "skeleton",
7732
+ "toast",
7733
+ "tooltip"
7734
+ ],
7735
+ "navigation": [
7736
+ "breadcrumb",
7737
+ "command",
7738
+ "navbar",
7739
+ "page-header",
7740
+ "pagination",
7741
+ "stepper",
7742
+ "tabs"
7743
+ ],
7744
+ "form": [
7745
+ "button",
7746
+ "calendar",
6526
7747
  "checkbox",
6527
7748
  "combobox",
6528
7749
  "date-picker",
@@ -6551,25 +7772,2141 @@
6551
7772
  "image",
6552
7773
  "lightbox"
6553
7774
  ],
6554
- "typography": [
6555
- "code-block",
6556
- "heading",
6557
- "text"
7775
+ "typography": [
7776
+ "code-block",
7777
+ "heading",
7778
+ "text"
7779
+ ],
7780
+ "layout": [
7781
+ "collapsible",
7782
+ "scroll-area",
7783
+ "separator",
7784
+ "sidebar"
7785
+ ],
7786
+ "overlay": [
7787
+ "context-menu",
7788
+ "dialog",
7789
+ "dropdown-menu",
7790
+ "fullscreen-overlay",
7791
+ "hover-card",
7792
+ "menubar",
7793
+ "sheet"
7794
+ ],
7795
+ "deck": [
7796
+ "deck-card-grid",
7797
+ "deck-carousel-gallery",
7798
+ "deck-closing-slide",
7799
+ "deck-concept-slide",
7800
+ "deck-context",
7801
+ "deck-dot-nav",
7802
+ "deck-footer",
7803
+ "deck-hero-slide",
7804
+ "deck-layout",
7805
+ "deck-renderer",
7806
+ "deck-slide-header",
7807
+ "deck-toc-slide",
7808
+ "slide",
7809
+ "slide-theme-context"
7810
+ ],
7811
+ "visual-elements": [
7812
+ "sphere"
7813
+ ]
7814
+ },
7815
+ "tokens": {
7816
+ "primitives": [
7817
+ {
7818
+ "name": "--color-neutral-50",
7819
+ "tier": "primitive",
7820
+ "description": "Primitive color: neutral-50",
7821
+ "defaultLight": "#f9fafb",
7822
+ "defaultDark": "#f9fafb"
7823
+ },
7824
+ {
7825
+ "name": "--color-neutral-100",
7826
+ "tier": "primitive",
7827
+ "description": "Primitive color: neutral-100",
7828
+ "defaultLight": "#f3f4f6",
7829
+ "defaultDark": "#f3f4f6"
7830
+ },
7831
+ {
7832
+ "name": "--color-neutral-200",
7833
+ "tier": "primitive",
7834
+ "description": "Primitive color: neutral-200",
7835
+ "defaultLight": "#e5e7eb",
7836
+ "defaultDark": "#e5e7eb"
7837
+ },
7838
+ {
7839
+ "name": "--color-neutral-300",
7840
+ "tier": "primitive",
7841
+ "description": "Primitive color: neutral-300",
7842
+ "defaultLight": "#d1d5db",
7843
+ "defaultDark": "#d1d5db"
7844
+ },
7845
+ {
7846
+ "name": "--color-neutral-400",
7847
+ "tier": "primitive",
7848
+ "description": "Primitive color: neutral-400",
7849
+ "defaultLight": "#9ca3af",
7850
+ "defaultDark": "#9ca3af"
7851
+ },
7852
+ {
7853
+ "name": "--color-neutral-500",
7854
+ "tier": "primitive",
7855
+ "description": "Primitive color: neutral-500",
7856
+ "defaultLight": "#6b7280",
7857
+ "defaultDark": "#6b7280"
7858
+ },
7859
+ {
7860
+ "name": "--color-neutral-600",
7861
+ "tier": "primitive",
7862
+ "description": "Primitive color: neutral-600",
7863
+ "defaultLight": "#4b5563",
7864
+ "defaultDark": "#4b5563"
7865
+ },
7866
+ {
7867
+ "name": "--color-neutral-700",
7868
+ "tier": "primitive",
7869
+ "description": "Primitive color: neutral-700",
7870
+ "defaultLight": "#374151",
7871
+ "defaultDark": "#374151"
7872
+ },
7873
+ {
7874
+ "name": "--color-neutral-800",
7875
+ "tier": "primitive",
7876
+ "description": "Primitive color: neutral-800",
7877
+ "defaultLight": "#1f2937",
7878
+ "defaultDark": "#1f2937"
7879
+ },
7880
+ {
7881
+ "name": "--color-neutral-900",
7882
+ "tier": "primitive",
7883
+ "description": "Primitive color: neutral-900",
7884
+ "defaultLight": "#111827",
7885
+ "defaultDark": "#111827"
7886
+ },
7887
+ {
7888
+ "name": "--color-neutral-950",
7889
+ "tier": "primitive",
7890
+ "description": "Primitive color: neutral-950",
7891
+ "defaultLight": "#030712",
7892
+ "defaultDark": "#030712"
7893
+ },
7894
+ {
7895
+ "name": "--color-white",
7896
+ "tier": "primitive",
7897
+ "description": "Primitive color: white",
7898
+ "defaultLight": "#ffffff",
7899
+ "defaultDark": "#ffffff"
7900
+ },
7901
+ {
7902
+ "name": "--color-black",
7903
+ "tier": "primitive",
7904
+ "description": "Primitive color: black",
7905
+ "defaultLight": "#000000",
7906
+ "defaultDark": "#000000"
7907
+ },
7908
+ {
7909
+ "name": "--color-primary-50",
7910
+ "tier": "primitive",
7911
+ "description": "Primitive color: primary-50",
7912
+ "defaultLight": "#eff6ff",
7913
+ "defaultDark": "#eff6ff"
7914
+ },
7915
+ {
7916
+ "name": "--color-primary-100",
7917
+ "tier": "primitive",
7918
+ "description": "Primitive color: primary-100",
7919
+ "defaultLight": "#dbeafe",
7920
+ "defaultDark": "#dbeafe"
7921
+ },
7922
+ {
7923
+ "name": "--color-primary-200",
7924
+ "tier": "primitive",
7925
+ "description": "Primitive color: primary-200",
7926
+ "defaultLight": "#bfdbfe",
7927
+ "defaultDark": "#bfdbfe"
7928
+ },
7929
+ {
7930
+ "name": "--color-primary-300",
7931
+ "tier": "primitive",
7932
+ "description": "Primitive color: primary-300",
7933
+ "defaultLight": "#93c5fd",
7934
+ "defaultDark": "#93c5fd"
7935
+ },
7936
+ {
7937
+ "name": "--color-primary-400",
7938
+ "tier": "primitive",
7939
+ "description": "Primitive color: primary-400",
7940
+ "defaultLight": "#60a5fa",
7941
+ "defaultDark": "#60a5fa"
7942
+ },
7943
+ {
7944
+ "name": "--color-primary-500",
7945
+ "tier": "primitive",
7946
+ "description": "Primitive color: primary-500",
7947
+ "defaultLight": "#3b82f6",
7948
+ "defaultDark": "#3b82f6"
7949
+ },
7950
+ {
7951
+ "name": "--color-primary-600",
7952
+ "tier": "primitive",
7953
+ "description": "Primitive color: primary-600",
7954
+ "defaultLight": "#2563eb",
7955
+ "defaultDark": "#2563eb"
7956
+ },
7957
+ {
7958
+ "name": "--color-primary-700",
7959
+ "tier": "primitive",
7960
+ "description": "Primitive color: primary-700",
7961
+ "defaultLight": "#1d4ed8",
7962
+ "defaultDark": "#1d4ed8"
7963
+ },
7964
+ {
7965
+ "name": "--color-primary-800",
7966
+ "tier": "primitive",
7967
+ "description": "Primitive color: primary-800",
7968
+ "defaultLight": "#1e40af",
7969
+ "defaultDark": "#1e40af"
7970
+ },
7971
+ {
7972
+ "name": "--color-primary-900",
7973
+ "tier": "primitive",
7974
+ "description": "Primitive color: primary-900",
7975
+ "defaultLight": "#1e3a8a",
7976
+ "defaultDark": "#1e3a8a"
7977
+ },
7978
+ {
7979
+ "name": "--color-success-50",
7980
+ "tier": "primitive",
7981
+ "description": "Primitive color: success-50",
7982
+ "defaultLight": "#f0fdf4",
7983
+ "defaultDark": "#f0fdf4"
7984
+ },
7985
+ {
7986
+ "name": "--color-success-100",
7987
+ "tier": "primitive",
7988
+ "description": "Primitive color: success-100",
7989
+ "defaultLight": "#dcfce7",
7990
+ "defaultDark": "#dcfce7"
7991
+ },
7992
+ {
7993
+ "name": "--color-success-500",
7994
+ "tier": "primitive",
7995
+ "description": "Primitive color: success-500",
7996
+ "defaultLight": "#22c55e",
7997
+ "defaultDark": "#22c55e"
7998
+ },
7999
+ {
8000
+ "name": "--color-success-600",
8001
+ "tier": "primitive",
8002
+ "description": "Primitive color: success-600",
8003
+ "defaultLight": "#16a34a",
8004
+ "defaultDark": "#16a34a"
8005
+ },
8006
+ {
8007
+ "name": "--color-success-700",
8008
+ "tier": "primitive",
8009
+ "description": "Primitive color: success-700",
8010
+ "defaultLight": "#15803d",
8011
+ "defaultDark": "#15803d"
8012
+ },
8013
+ {
8014
+ "name": "--color-success-900",
8015
+ "tier": "primitive",
8016
+ "description": "Primitive color: success-900",
8017
+ "defaultLight": "#14532d",
8018
+ "defaultDark": "#14532d"
8019
+ },
8020
+ {
8021
+ "name": "--color-warning-50",
8022
+ "tier": "primitive",
8023
+ "description": "Primitive color: warning-50",
8024
+ "defaultLight": "#fffbeb",
8025
+ "defaultDark": "#fffbeb"
8026
+ },
8027
+ {
8028
+ "name": "--color-warning-100",
8029
+ "tier": "primitive",
8030
+ "description": "Primitive color: warning-100",
8031
+ "defaultLight": "#fef3c7",
8032
+ "defaultDark": "#fef3c7"
8033
+ },
8034
+ {
8035
+ "name": "--color-warning-500",
8036
+ "tier": "primitive",
8037
+ "description": "Primitive color: warning-500",
8038
+ "defaultLight": "#f59e0b",
8039
+ "defaultDark": "#f59e0b"
8040
+ },
8041
+ {
8042
+ "name": "--color-warning-600",
8043
+ "tier": "primitive",
8044
+ "description": "Primitive color: warning-600",
8045
+ "defaultLight": "#d97706",
8046
+ "defaultDark": "#d97706"
8047
+ },
8048
+ {
8049
+ "name": "--color-warning-700",
8050
+ "tier": "primitive",
8051
+ "description": "Primitive color: warning-700",
8052
+ "defaultLight": "#b45309",
8053
+ "defaultDark": "#b45309"
8054
+ },
8055
+ {
8056
+ "name": "--color-warning-900",
8057
+ "tier": "primitive",
8058
+ "description": "Primitive color: warning-900",
8059
+ "defaultLight": "#78350f",
8060
+ "defaultDark": "#78350f"
8061
+ },
8062
+ {
8063
+ "name": "--color-error-50",
8064
+ "tier": "primitive",
8065
+ "description": "Primitive color: error-50",
8066
+ "defaultLight": "#fef2f2",
8067
+ "defaultDark": "#fef2f2"
8068
+ },
8069
+ {
8070
+ "name": "--color-error-100",
8071
+ "tier": "primitive",
8072
+ "description": "Primitive color: error-100",
8073
+ "defaultLight": "#fee2e2",
8074
+ "defaultDark": "#fee2e2"
8075
+ },
8076
+ {
8077
+ "name": "--color-error-500",
8078
+ "tier": "primitive",
8079
+ "description": "Primitive color: error-500",
8080
+ "defaultLight": "#ef4444",
8081
+ "defaultDark": "#ef4444"
8082
+ },
8083
+ {
8084
+ "name": "--color-error-600",
8085
+ "tier": "primitive",
8086
+ "description": "Primitive color: error-600",
8087
+ "defaultLight": "#dc2626",
8088
+ "defaultDark": "#dc2626"
8089
+ },
8090
+ {
8091
+ "name": "--color-error-700",
8092
+ "tier": "primitive",
8093
+ "description": "Primitive color: error-700",
8094
+ "defaultLight": "#b91c1c",
8095
+ "defaultDark": "#b91c1c"
8096
+ },
8097
+ {
8098
+ "name": "--color-error-900",
8099
+ "tier": "primitive",
8100
+ "description": "Primitive color: error-900",
8101
+ "defaultLight": "#7f1d1d",
8102
+ "defaultDark": "#7f1d1d"
8103
+ },
8104
+ {
8105
+ "name": "--color-info-50",
8106
+ "tier": "primitive",
8107
+ "description": "Primitive color: info-50",
8108
+ "defaultLight": "#f0f9ff",
8109
+ "defaultDark": "#f0f9ff"
8110
+ },
8111
+ {
8112
+ "name": "--color-info-100",
8113
+ "tier": "primitive",
8114
+ "description": "Primitive color: info-100",
8115
+ "defaultLight": "#e0f2fe",
8116
+ "defaultDark": "#e0f2fe"
8117
+ },
8118
+ {
8119
+ "name": "--color-info-500",
8120
+ "tier": "primitive",
8121
+ "description": "Primitive color: info-500",
8122
+ "defaultLight": "#0ea5e9",
8123
+ "defaultDark": "#0ea5e9"
8124
+ },
8125
+ {
8126
+ "name": "--color-info-600",
8127
+ "tier": "primitive",
8128
+ "description": "Primitive color: info-600",
8129
+ "defaultLight": "#0284c7",
8130
+ "defaultDark": "#0284c7"
8131
+ },
8132
+ {
8133
+ "name": "--color-info-700",
8134
+ "tier": "primitive",
8135
+ "description": "Primitive color: info-700",
8136
+ "defaultLight": "#0369a1",
8137
+ "defaultDark": "#0369a1"
8138
+ },
8139
+ {
8140
+ "name": "--color-info-900",
8141
+ "tier": "primitive",
8142
+ "description": "Primitive color: info-900",
8143
+ "defaultLight": "#0c4a6e",
8144
+ "defaultDark": "#0c4a6e"
8145
+ },
8146
+ {
8147
+ "name": "--spacing-0",
8148
+ "tier": "primitive",
8149
+ "description": "Primitive spacing: 0px",
8150
+ "defaultLight": "0",
8151
+ "defaultDark": "0"
8152
+ },
8153
+ {
8154
+ "name": "--spacing-1",
8155
+ "tier": "primitive",
8156
+ "description": "Primitive spacing: 4px",
8157
+ "defaultLight": "0.25rem",
8158
+ "defaultDark": "0.25rem"
8159
+ },
8160
+ {
8161
+ "name": "--spacing-2",
8162
+ "tier": "primitive",
8163
+ "description": "Primitive spacing: 8px",
8164
+ "defaultLight": "0.5rem",
8165
+ "defaultDark": "0.5rem"
8166
+ },
8167
+ {
8168
+ "name": "--spacing-3",
8169
+ "tier": "primitive",
8170
+ "description": "Primitive spacing: 12px",
8171
+ "defaultLight": "0.75rem",
8172
+ "defaultDark": "0.75rem"
8173
+ },
8174
+ {
8175
+ "name": "--spacing-3_5",
8176
+ "tier": "primitive",
8177
+ "description": "Primitive spacing: 14px",
8178
+ "defaultLight": "0.875rem",
8179
+ "defaultDark": "0.875rem"
8180
+ },
8181
+ {
8182
+ "name": "--spacing-4",
8183
+ "tier": "primitive",
8184
+ "description": "Primitive spacing: 16px",
8185
+ "defaultLight": "1rem",
8186
+ "defaultDark": "1rem"
8187
+ },
8188
+ {
8189
+ "name": "--spacing-4_5",
8190
+ "tier": "primitive",
8191
+ "description": "Primitive spacing: 18px",
8192
+ "defaultLight": "1.125rem",
8193
+ "defaultDark": "1.125rem"
8194
+ },
8195
+ {
8196
+ "name": "--spacing-5",
8197
+ "tier": "primitive",
8198
+ "description": "Primitive spacing: 20px",
8199
+ "defaultLight": "1.25rem",
8200
+ "defaultDark": "1.25rem"
8201
+ },
8202
+ {
8203
+ "name": "--spacing-6",
8204
+ "tier": "primitive",
8205
+ "description": "Primitive spacing: 24px",
8206
+ "defaultLight": "1.5rem",
8207
+ "defaultDark": "1.5rem"
8208
+ },
8209
+ {
8210
+ "name": "--spacing-8",
8211
+ "tier": "primitive",
8212
+ "description": "Primitive spacing: 32px",
8213
+ "defaultLight": "2rem",
8214
+ "defaultDark": "2rem"
8215
+ },
8216
+ {
8217
+ "name": "--spacing-10",
8218
+ "tier": "primitive",
8219
+ "description": "Primitive spacing: 40px",
8220
+ "defaultLight": "2.5rem",
8221
+ "defaultDark": "2.5rem"
8222
+ },
8223
+ {
8224
+ "name": "--spacing-12",
8225
+ "tier": "primitive",
8226
+ "description": "Primitive spacing: 48px",
8227
+ "defaultLight": "3rem",
8228
+ "defaultDark": "3rem"
8229
+ },
8230
+ {
8231
+ "name": "--spacing-16",
8232
+ "tier": "primitive",
8233
+ "description": "Primitive spacing: 64px",
8234
+ "defaultLight": "4rem",
8235
+ "defaultDark": "4rem"
8236
+ },
8237
+ {
8238
+ "name": "--spacing-20",
8239
+ "tier": "primitive",
8240
+ "description": "Primitive spacing: 80px",
8241
+ "defaultLight": "5rem",
8242
+ "defaultDark": "5rem"
8243
+ },
8244
+ {
8245
+ "name": "--spacing-24",
8246
+ "tier": "primitive",
8247
+ "description": "Primitive spacing: 96px",
8248
+ "defaultLight": "6rem",
8249
+ "defaultDark": "6rem"
8250
+ },
8251
+ {
8252
+ "name": "--radius-none",
8253
+ "tier": "primitive",
8254
+ "description": "Primitive border radius: none",
8255
+ "defaultLight": "0",
8256
+ "defaultDark": "0"
8257
+ },
8258
+ {
8259
+ "name": "--radius-sm",
8260
+ "tier": "primitive",
8261
+ "description": "Primitive border radius: sm",
8262
+ "defaultLight": "0.125rem",
8263
+ "defaultDark": "0.125rem"
8264
+ },
8265
+ {
8266
+ "name": "--radius-md",
8267
+ "tier": "primitive",
8268
+ "description": "Primitive border radius: md",
8269
+ "defaultLight": "0.25rem",
8270
+ "defaultDark": "0.25rem"
8271
+ },
8272
+ {
8273
+ "name": "--radius-lg",
8274
+ "tier": "primitive",
8275
+ "description": "Primitive border radius: lg",
8276
+ "defaultLight": "0.5rem",
8277
+ "defaultDark": "0.5rem"
8278
+ },
8279
+ {
8280
+ "name": "--radius-xl",
8281
+ "tier": "primitive",
8282
+ "description": "Primitive border radius: xl",
8283
+ "defaultLight": "0.75rem",
8284
+ "defaultDark": "0.75rem"
8285
+ },
8286
+ {
8287
+ "name": "--radius-2xl",
8288
+ "tier": "primitive",
8289
+ "description": "Primitive border radius: 2xl",
8290
+ "defaultLight": "1rem",
8291
+ "defaultDark": "1rem"
8292
+ },
8293
+ {
8294
+ "name": "--radius-3xl",
8295
+ "tier": "primitive",
8296
+ "description": "Primitive border radius: 3xl",
8297
+ "defaultLight": "1.5rem",
8298
+ "defaultDark": "1.5rem"
8299
+ },
8300
+ {
8301
+ "name": "--radius-full",
8302
+ "tier": "primitive",
8303
+ "description": "Primitive border radius: full",
8304
+ "defaultLight": "9999px",
8305
+ "defaultDark": "9999px"
8306
+ },
8307
+ {
8308
+ "name": "--border-width-1",
8309
+ "tier": "primitive",
8310
+ "description": "Primitive border width: 1px",
8311
+ "defaultLight": "1px",
8312
+ "defaultDark": "1px"
8313
+ },
8314
+ {
8315
+ "name": "--border-width-2",
8316
+ "tier": "primitive",
8317
+ "description": "Primitive border width: 2px",
8318
+ "defaultLight": "2px",
8319
+ "defaultDark": "2px"
8320
+ },
8321
+ {
8322
+ "name": "--border-width-3",
8323
+ "tier": "primitive",
8324
+ "description": "Primitive border width: 3px",
8325
+ "defaultLight": "3px",
8326
+ "defaultDark": "3px"
8327
+ },
8328
+ {
8329
+ "name": "--border-width-4",
8330
+ "tier": "primitive",
8331
+ "description": "Primitive border width: 4px",
8332
+ "defaultLight": "4px",
8333
+ "defaultDark": "4px"
8334
+ },
8335
+ {
8336
+ "name": "--font-size-xs",
8337
+ "tier": "primitive",
8338
+ "description": "Primitive font size: 12px",
8339
+ "defaultLight": "0.75rem",
8340
+ "defaultDark": "0.75rem"
8341
+ },
8342
+ {
8343
+ "name": "--font-size-sm",
8344
+ "tier": "primitive",
8345
+ "description": "Primitive font size: 14px",
8346
+ "defaultLight": "0.875rem",
8347
+ "defaultDark": "0.875rem"
8348
+ },
8349
+ {
8350
+ "name": "--font-size-base",
8351
+ "tier": "primitive",
8352
+ "description": "Primitive font size: 16px",
8353
+ "defaultLight": "1rem",
8354
+ "defaultDark": "1rem"
8355
+ },
8356
+ {
8357
+ "name": "--font-size-lg",
8358
+ "tier": "primitive",
8359
+ "description": "Primitive font size: 18px",
8360
+ "defaultLight": "1.125rem",
8361
+ "defaultDark": "1.125rem"
8362
+ },
8363
+ {
8364
+ "name": "--font-size-xl",
8365
+ "tier": "primitive",
8366
+ "description": "Primitive font size: 20px",
8367
+ "defaultLight": "1.25rem",
8368
+ "defaultDark": "1.25rem"
8369
+ },
8370
+ {
8371
+ "name": "--font-size-2xl",
8372
+ "tier": "primitive",
8373
+ "description": "Primitive font size: 24px",
8374
+ "defaultLight": "1.5rem",
8375
+ "defaultDark": "1.5rem"
8376
+ },
8377
+ {
8378
+ "name": "--font-size-3xl",
8379
+ "tier": "primitive",
8380
+ "description": "Primitive font size: 30px",
8381
+ "defaultLight": "1.875rem",
8382
+ "defaultDark": "1.875rem"
8383
+ },
8384
+ {
8385
+ "name": "--font-size-4xl",
8386
+ "tier": "primitive",
8387
+ "description": "Primitive font size: 36px",
8388
+ "defaultLight": "2.25rem",
8389
+ "defaultDark": "2.25rem"
8390
+ },
8391
+ {
8392
+ "name": "--font-weight-normal",
8393
+ "tier": "primitive",
8394
+ "description": "Primitive font weight: 400",
8395
+ "defaultLight": "400",
8396
+ "defaultDark": "400"
8397
+ },
8398
+ {
8399
+ "name": "--font-weight-medium",
8400
+ "tier": "primitive",
8401
+ "description": "Primitive font weight: 500",
8402
+ "defaultLight": "500",
8403
+ "defaultDark": "500"
8404
+ },
8405
+ {
8406
+ "name": "--font-weight-semibold",
8407
+ "tier": "primitive",
8408
+ "description": "Primitive font weight: 600",
8409
+ "defaultLight": "600",
8410
+ "defaultDark": "600"
8411
+ },
8412
+ {
8413
+ "name": "--font-weight-bold",
8414
+ "tier": "primitive",
8415
+ "description": "Primitive font weight: 700",
8416
+ "defaultLight": "700",
8417
+ "defaultDark": "700"
8418
+ },
8419
+ {
8420
+ "name": "--line-height-none",
8421
+ "tier": "primitive",
8422
+ "description": "Primitive line height: 1",
8423
+ "defaultLight": "1",
8424
+ "defaultDark": "1"
8425
+ },
8426
+ {
8427
+ "name": "--line-height-tight",
8428
+ "tier": "primitive",
8429
+ "description": "Primitive line height: 1.25",
8430
+ "defaultLight": "1.25",
8431
+ "defaultDark": "1.25"
8432
+ },
8433
+ {
8434
+ "name": "--line-height-snug",
8435
+ "tier": "primitive",
8436
+ "description": "Primitive line height: 1.375",
8437
+ "defaultLight": "1.375",
8438
+ "defaultDark": "1.375"
8439
+ },
8440
+ {
8441
+ "name": "--line-height-normal",
8442
+ "tier": "primitive",
8443
+ "description": "Primitive line height: 1.5",
8444
+ "defaultLight": "1.5",
8445
+ "defaultDark": "1.5"
8446
+ },
8447
+ {
8448
+ "name": "--line-height-relaxed",
8449
+ "tier": "primitive",
8450
+ "description": "Primitive line height: 1.625",
8451
+ "defaultLight": "1.625",
8452
+ "defaultDark": "1.625"
8453
+ },
8454
+ {
8455
+ "name": "--line-height-loose",
8456
+ "tier": "primitive",
8457
+ "description": "Primitive line height: 2",
8458
+ "defaultLight": "2",
8459
+ "defaultDark": "2"
8460
+ },
8461
+ {
8462
+ "name": "--shadow-xs",
8463
+ "tier": "primitive",
8464
+ "description": "Primitive shadow: xs",
8465
+ "defaultLight": "inset 0 1px 2px 0 rgba(0, 0, 0, 0.06)",
8466
+ "defaultDark": "inset 0 1px 2px 0 rgba(0, 0, 0, 0.15)"
8467
+ },
8468
+ {
8469
+ "name": "--shadow-sm",
8470
+ "tier": "primitive",
8471
+ "description": "Primitive shadow: sm",
8472
+ "defaultLight": "0 1px 2px 0 rgba(0, 0, 0, 0.05)",
8473
+ "defaultDark": "0 1px 2px 0 rgba(0, 0, 0, 0.25)"
8474
+ },
8475
+ {
8476
+ "name": "--shadow-md",
8477
+ "tier": "primitive",
8478
+ "description": "Primitive shadow: md",
8479
+ "defaultLight": "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
8480
+ "defaultDark": "0 4px 6px -1px rgba(0, 0, 0, 0.35), 0 2px 4px -2px rgba(0, 0, 0, 0.3)"
8481
+ },
8482
+ {
8483
+ "name": "--shadow-lg",
8484
+ "tier": "primitive",
8485
+ "description": "Primitive shadow: lg",
8486
+ "defaultLight": "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)",
8487
+ "defaultDark": "0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.35)"
8488
+ },
8489
+ {
8490
+ "name": "--shadow-xl",
8491
+ "tier": "primitive",
8492
+ "description": "Primitive shadow: xl",
8493
+ "defaultLight": "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
8494
+ "defaultDark": "0 20px 25px -5px rgba(0, 0, 0, 0.45), 0 8px 10px -6px rgba(0, 0, 0, 0.4)"
8495
+ },
8496
+ {
8497
+ "name": "--z-base",
8498
+ "tier": "primitive",
8499
+ "description": "Primitive z-index: base",
8500
+ "defaultLight": "0",
8501
+ "defaultDark": "0"
8502
+ },
8503
+ {
8504
+ "name": "--z-raised",
8505
+ "tier": "primitive",
8506
+ "description": "Primitive z-index: raised",
8507
+ "defaultLight": "1",
8508
+ "defaultDark": "1"
8509
+ },
8510
+ {
8511
+ "name": "--z-dropdown",
8512
+ "tier": "primitive",
8513
+ "description": "Primitive z-index: dropdown",
8514
+ "defaultLight": "1000",
8515
+ "defaultDark": "1000"
8516
+ },
8517
+ {
8518
+ "name": "--z-sticky",
8519
+ "tier": "primitive",
8520
+ "description": "Primitive z-index: sticky",
8521
+ "defaultLight": "1100",
8522
+ "defaultDark": "1100"
8523
+ },
8524
+ {
8525
+ "name": "--z-modal",
8526
+ "tier": "primitive",
8527
+ "description": "Primitive z-index: modal",
8528
+ "defaultLight": "1300",
8529
+ "defaultDark": "1300"
8530
+ },
8531
+ {
8532
+ "name": "--z-popover",
8533
+ "tier": "primitive",
8534
+ "description": "Primitive z-index: popover",
8535
+ "defaultLight": "1400",
8536
+ "defaultDark": "1400"
8537
+ },
8538
+ {
8539
+ "name": "--z-toast",
8540
+ "tier": "primitive",
8541
+ "description": "Primitive z-index: toast",
8542
+ "defaultLight": "1500",
8543
+ "defaultDark": "1500"
8544
+ },
8545
+ {
8546
+ "name": "--font-sans",
8547
+ "tier": "primitive",
8548
+ "description": "Primitive font family: sans",
8549
+ "defaultLight": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif",
8550
+ "defaultDark": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif"
8551
+ },
8552
+ {
8553
+ "name": "--font-mono",
8554
+ "tier": "primitive",
8555
+ "description": "Primitive font family: mono",
8556
+ "defaultLight": "\"SF Mono\", \"Fira Code\", \"Fira Mono\", \"Roboto Mono\", monospace",
8557
+ "defaultDark": "\"SF Mono\", \"Fira Code\", \"Fira Mono\", \"Roboto Mono\", monospace"
8558
+ },
8559
+ {
8560
+ "name": "--overlay-bg",
8561
+ "tier": "primitive",
8562
+ "description": "Primitive overlay: bg",
8563
+ "defaultLight": "rgba(0, 0, 0, 0.5)",
8564
+ "defaultDark": "rgba(0, 0, 0, 0.5)"
8565
+ },
8566
+ {
8567
+ "name": "--focus-ring-width",
8568
+ "tier": "primitive",
8569
+ "description": "Primitive focus ring width",
8570
+ "defaultLight": "2px",
8571
+ "defaultDark": "2px"
8572
+ },
8573
+ {
8574
+ "name": "--focus-ring-offset",
8575
+ "tier": "primitive",
8576
+ "description": "Primitive focus ring offset",
8577
+ "defaultLight": "2px",
8578
+ "defaultDark": "2px"
8579
+ },
8580
+ {
8581
+ "name": "--motion-duration-100",
8582
+ "tier": "primitive",
8583
+ "description": "Primitive motion duration: 100ms",
8584
+ "defaultLight": "100ms",
8585
+ "defaultDark": "100ms"
8586
+ },
8587
+ {
8588
+ "name": "--motion-duration-150",
8589
+ "tier": "primitive",
8590
+ "description": "Primitive motion duration: 150ms",
8591
+ "defaultLight": "150ms",
8592
+ "defaultDark": "150ms"
8593
+ },
8594
+ {
8595
+ "name": "--motion-duration-200",
8596
+ "tier": "primitive",
8597
+ "description": "Primitive motion duration: 200ms",
8598
+ "defaultLight": "200ms",
8599
+ "defaultDark": "200ms"
8600
+ },
8601
+ {
8602
+ "name": "--motion-duration-300",
8603
+ "tier": "primitive",
8604
+ "description": "Primitive motion duration: 300ms",
8605
+ "defaultLight": "300ms",
8606
+ "defaultDark": "300ms"
8607
+ },
8608
+ {
8609
+ "name": "--motion-duration-500",
8610
+ "tier": "primitive",
8611
+ "description": "Primitive motion duration: 500ms",
8612
+ "defaultLight": "500ms",
8613
+ "defaultDark": "500ms"
8614
+ },
8615
+ {
8616
+ "name": "--motion-duration-800",
8617
+ "tier": "primitive",
8618
+ "description": "Primitive motion duration: 800ms",
8619
+ "defaultLight": "800ms",
8620
+ "defaultDark": "800ms"
8621
+ },
8622
+ {
8623
+ "name": "--motion-easing-linear",
8624
+ "tier": "primitive",
8625
+ "description": "Primitive motion easing: linear",
8626
+ "defaultLight": "linear",
8627
+ "defaultDark": "linear"
8628
+ },
8629
+ {
8630
+ "name": "--motion-easing-ease-in",
8631
+ "tier": "primitive",
8632
+ "description": "Primitive motion easing: ease-in",
8633
+ "defaultLight": "cubic-bezier(0.4, 0, 1, 1)",
8634
+ "defaultDark": "cubic-bezier(0.4, 0, 1, 1)"
8635
+ },
8636
+ {
8637
+ "name": "--motion-easing-ease-out",
8638
+ "tier": "primitive",
8639
+ "description": "Primitive motion easing: ease-out",
8640
+ "defaultLight": "cubic-bezier(0, 0, 0.2, 1)",
8641
+ "defaultDark": "cubic-bezier(0, 0, 0.2, 1)"
8642
+ },
8643
+ {
8644
+ "name": "--motion-easing-ease-in-out",
8645
+ "tier": "primitive",
8646
+ "description": "Primitive motion easing: ease-in-out",
8647
+ "defaultLight": "cubic-bezier(0.4, 0, 0.2, 1)",
8648
+ "defaultDark": "cubic-bezier(0.4, 0, 0.2, 1)"
8649
+ },
8650
+ {
8651
+ "name": "--motion-easing-spring",
8652
+ "tier": "primitive",
8653
+ "description": "Primitive motion easing: spring",
8654
+ "defaultLight": "cubic-bezier(0.34, 1.56, 0.64, 1)",
8655
+ "defaultDark": "cubic-bezier(0.34, 1.56, 0.64, 1)"
8656
+ }
8657
+ ],
8658
+ "semantic": [
8659
+ {
8660
+ "name": "--text-primary",
8661
+ "tier": "semantic",
8662
+ "description": "Semantic text: primary",
8663
+ "defaultLight": "var(--color-neutral-900)",
8664
+ "defaultDark": "var(--color-neutral-900)"
8665
+ },
8666
+ {
8667
+ "name": "--text-secondary",
8668
+ "tier": "semantic",
8669
+ "description": "Semantic text: secondary",
8670
+ "defaultLight": "var(--color-neutral-600)",
8671
+ "defaultDark": "var(--color-neutral-600)"
8672
+ },
8673
+ {
8674
+ "name": "--text-tertiary",
8675
+ "tier": "semantic",
8676
+ "description": "Semantic text: tertiary",
8677
+ "defaultLight": "var(--color-neutral-400)",
8678
+ "defaultDark": "var(--color-neutral-400)"
8679
+ },
8680
+ {
8681
+ "name": "--text-disabled",
8682
+ "tier": "semantic",
8683
+ "description": "Semantic text: disabled",
8684
+ "defaultLight": "var(--color-neutral-300)",
8685
+ "defaultDark": "var(--color-neutral-300)"
8686
+ },
8687
+ {
8688
+ "name": "--text-inverse",
8689
+ "tier": "semantic",
8690
+ "description": "Semantic text: inverse",
8691
+ "defaultLight": "var(--color-white)",
8692
+ "defaultDark": "var(--color-white)"
8693
+ },
8694
+ {
8695
+ "name": "--text-inverse-secondary",
8696
+ "tier": "semantic",
8697
+ "description": "Semantic text: inverse-secondary",
8698
+ "defaultLight": "var(--color-neutral-200)",
8699
+ "defaultDark": "var(--color-neutral-200)"
8700
+ },
8701
+ {
8702
+ "name": "--text-link",
8703
+ "tier": "semantic",
8704
+ "description": "Semantic text: link",
8705
+ "defaultLight": "var(--color-primary-600)",
8706
+ "defaultDark": "var(--color-primary-600)"
8707
+ },
8708
+ {
8709
+ "name": "--text-link-hover",
8710
+ "tier": "semantic",
8711
+ "description": "Semantic text: link-hover",
8712
+ "defaultLight": "var(--color-primary-700)",
8713
+ "defaultDark": "var(--color-primary-700)"
8714
+ },
8715
+ {
8716
+ "name": "--text-success",
8717
+ "tier": "semantic",
8718
+ "description": "Semantic text: success",
8719
+ "defaultLight": "var(--color-success-700)",
8720
+ "defaultDark": "var(--color-success-700)"
8721
+ },
8722
+ {
8723
+ "name": "--text-warning",
8724
+ "tier": "semantic",
8725
+ "description": "Semantic text: warning",
8726
+ "defaultLight": "var(--color-warning-700)",
8727
+ "defaultDark": "var(--color-warning-700)"
8728
+ },
8729
+ {
8730
+ "name": "--text-error",
8731
+ "tier": "semantic",
8732
+ "description": "Semantic text: error",
8733
+ "defaultLight": "var(--color-error-700)",
8734
+ "defaultDark": "var(--color-error-700)"
8735
+ },
8736
+ {
8737
+ "name": "--text-info",
8738
+ "tier": "semantic",
8739
+ "description": "Semantic text: info",
8740
+ "defaultLight": "var(--color-info-700)",
8741
+ "defaultDark": "var(--color-info-700)"
8742
+ },
8743
+ {
8744
+ "name": "--surface-page",
8745
+ "tier": "semantic",
8746
+ "description": "Semantic surface: page",
8747
+ "defaultLight": "var(--color-white)",
8748
+ "defaultDark": "var(--color-white)"
8749
+ },
8750
+ {
8751
+ "name": "--surface-card",
8752
+ "tier": "semantic",
8753
+ "description": "Semantic surface: card",
8754
+ "defaultLight": "var(--color-white)",
8755
+ "defaultDark": "var(--color-white)"
8756
+ },
8757
+ {
8758
+ "name": "--surface-subtle",
8759
+ "tier": "semantic",
8760
+ "description": "Semantic surface: subtle",
8761
+ "defaultLight": "var(--color-neutral-50)",
8762
+ "defaultDark": "var(--color-neutral-50)"
8763
+ },
8764
+ {
8765
+ "name": "--surface-muted",
8766
+ "tier": "semantic",
8767
+ "description": "Semantic surface: muted",
8768
+ "defaultLight": "var(--color-neutral-100)",
8769
+ "defaultDark": "var(--color-neutral-100)"
8770
+ },
8771
+ {
8772
+ "name": "--surface-overlay",
8773
+ "tier": "semantic",
8774
+ "description": "Semantic surface: overlay",
8775
+ "defaultLight": "var(--color-neutral-900)",
8776
+ "defaultDark": "var(--color-neutral-900)"
8777
+ },
8778
+ {
8779
+ "name": "--surface-popover",
8780
+ "tier": "semantic",
8781
+ "description": "Semantic surface: popover",
8782
+ "defaultLight": "var(--color-white)",
8783
+ "defaultDark": "var(--color-white)"
8784
+ },
8785
+ {
8786
+ "name": "--surface-interactive-default",
8787
+ "tier": "semantic",
8788
+ "description": "Semantic surface: interactive-default",
8789
+ "defaultLight": "var(--color-white)",
8790
+ "defaultDark": "var(--color-white)"
8791
+ },
8792
+ {
8793
+ "name": "--surface-interactive-hover",
8794
+ "tier": "semantic",
8795
+ "description": "Semantic surface: interactive-hover",
8796
+ "defaultLight": "var(--color-neutral-50)",
8797
+ "defaultDark": "var(--color-neutral-50)"
8798
+ },
8799
+ {
8800
+ "name": "--surface-interactive-active",
8801
+ "tier": "semantic",
8802
+ "description": "Semantic surface: interactive-active",
8803
+ "defaultLight": "var(--color-neutral-100)",
8804
+ "defaultDark": "var(--color-neutral-100)"
8805
+ },
8806
+ {
8807
+ "name": "--surface-interactive-disabled",
8808
+ "tier": "semantic",
8809
+ "description": "Semantic surface: interactive-disabled",
8810
+ "defaultLight": "var(--color-neutral-50)",
8811
+ "defaultDark": "var(--color-neutral-50)"
8812
+ },
8813
+ {
8814
+ "name": "--surface-accent-subtle",
8815
+ "tier": "semantic",
8816
+ "description": "Semantic surface: accent-subtle",
8817
+ "defaultLight": "var(--color-primary-50)",
8818
+ "defaultDark": "var(--color-primary-50)"
8819
+ },
8820
+ {
8821
+ "name": "--surface-accent-default",
8822
+ "tier": "semantic",
8823
+ "description": "Semantic surface: accent-default",
8824
+ "defaultLight": "var(--color-primary-500)",
8825
+ "defaultDark": "var(--color-primary-500)"
8826
+ },
8827
+ {
8828
+ "name": "--surface-accent-strong",
8829
+ "tier": "semantic",
8830
+ "description": "Semantic surface: accent-strong",
8831
+ "defaultLight": "var(--color-primary-600)",
8832
+ "defaultDark": "var(--color-primary-600)"
8833
+ },
8834
+ {
8835
+ "name": "--surface-success-subtle",
8836
+ "tier": "semantic",
8837
+ "description": "Semantic surface: success-subtle",
8838
+ "defaultLight": "var(--color-success-50)",
8839
+ "defaultDark": "var(--color-success-50)"
8840
+ },
8841
+ {
8842
+ "name": "--surface-success-default",
8843
+ "tier": "semantic",
8844
+ "description": "Semantic surface: success-default",
8845
+ "defaultLight": "var(--color-success-500)",
8846
+ "defaultDark": "var(--color-success-500)"
8847
+ },
8848
+ {
8849
+ "name": "--surface-warning-subtle",
8850
+ "tier": "semantic",
8851
+ "description": "Semantic surface: warning-subtle",
8852
+ "defaultLight": "var(--color-warning-50)",
8853
+ "defaultDark": "var(--color-warning-50)"
8854
+ },
8855
+ {
8856
+ "name": "--surface-warning-default",
8857
+ "tier": "semantic",
8858
+ "description": "Semantic surface: warning-default",
8859
+ "defaultLight": "var(--color-warning-500)",
8860
+ "defaultDark": "var(--color-warning-500)"
8861
+ },
8862
+ {
8863
+ "name": "--surface-error-subtle",
8864
+ "tier": "semantic",
8865
+ "description": "Semantic surface: error-subtle",
8866
+ "defaultLight": "var(--color-error-50)",
8867
+ "defaultDark": "var(--color-error-50)"
8868
+ },
8869
+ {
8870
+ "name": "--surface-error-default",
8871
+ "tier": "semantic",
8872
+ "description": "Semantic surface: error-default",
8873
+ "defaultLight": "var(--color-error-500)",
8874
+ "defaultDark": "var(--color-error-500)"
8875
+ },
8876
+ {
8877
+ "name": "--surface-info-subtle",
8878
+ "tier": "semantic",
8879
+ "description": "Semantic surface: info-subtle",
8880
+ "defaultLight": "var(--color-info-50)",
8881
+ "defaultDark": "var(--color-info-50)"
8882
+ },
8883
+ {
8884
+ "name": "--surface-info-default",
8885
+ "tier": "semantic",
8886
+ "description": "Semantic surface: info-default",
8887
+ "defaultLight": "var(--color-info-500)",
8888
+ "defaultDark": "var(--color-info-500)"
8889
+ },
8890
+ {
8891
+ "name": "--border-default",
8892
+ "tier": "semantic",
8893
+ "description": "Semantic border: default",
8894
+ "defaultLight": "var(--color-neutral-200)",
8895
+ "defaultDark": "var(--color-neutral-200)"
8896
+ },
8897
+ {
8898
+ "name": "--border-muted",
8899
+ "tier": "semantic",
8900
+ "description": "Semantic border: muted",
8901
+ "defaultLight": "var(--color-neutral-100)",
8902
+ "defaultDark": "var(--color-neutral-100)"
8903
+ },
8904
+ {
8905
+ "name": "--border-strong",
8906
+ "tier": "semantic",
8907
+ "description": "Semantic border: strong",
8908
+ "defaultLight": "var(--color-neutral-300)",
8909
+ "defaultDark": "var(--color-neutral-300)"
8910
+ },
8911
+ {
8912
+ "name": "--border-focus",
8913
+ "tier": "semantic",
8914
+ "description": "Semantic border: focus",
8915
+ "defaultLight": "var(--color-primary-500)",
8916
+ "defaultDark": "var(--color-primary-500)"
8917
+ },
8918
+ {
8919
+ "name": "--border-disabled",
8920
+ "tier": "semantic",
8921
+ "description": "Semantic border: disabled",
8922
+ "defaultLight": "var(--color-neutral-100)",
8923
+ "defaultDark": "var(--color-neutral-100)"
8924
+ },
8925
+ {
8926
+ "name": "--border-input",
8927
+ "tier": "semantic",
8928
+ "description": "Semantic border: input",
8929
+ "defaultLight": "var(--color-neutral-200)",
8930
+ "defaultDark": "var(--color-neutral-200)"
8931
+ },
8932
+ {
8933
+ "name": "--border-success",
8934
+ "tier": "semantic",
8935
+ "description": "Semantic border: success",
8936
+ "defaultLight": "var(--color-success-500)",
8937
+ "defaultDark": "var(--color-success-500)"
8938
+ },
8939
+ {
8940
+ "name": "--border-warning",
8941
+ "tier": "semantic",
8942
+ "description": "Semantic border: warning",
8943
+ "defaultLight": "var(--color-warning-500)",
8944
+ "defaultDark": "var(--color-warning-500)"
8945
+ },
8946
+ {
8947
+ "name": "--border-error",
8948
+ "tier": "semantic",
8949
+ "description": "Semantic border: error",
8950
+ "defaultLight": "var(--color-error-500)",
8951
+ "defaultDark": "var(--color-error-500)"
8952
+ },
8953
+ {
8954
+ "name": "--border-info",
8955
+ "tier": "semantic",
8956
+ "description": "Semantic border: info",
8957
+ "defaultLight": "var(--color-info-500)",
8958
+ "defaultDark": "var(--color-info-500)"
8959
+ },
8960
+ {
8961
+ "name": "--interactive-primary-bg",
8962
+ "tier": "semantic",
8963
+ "description": "Semantic interactive: primary-bg",
8964
+ "defaultLight": "var(--color-primary-600)",
8965
+ "defaultDark": "var(--color-primary-600)"
8966
+ },
8967
+ {
8968
+ "name": "--interactive-primary-bg-hover",
8969
+ "tier": "semantic",
8970
+ "description": "Semantic interactive: primary-bg-hover",
8971
+ "defaultLight": "var(--color-primary-700)",
8972
+ "defaultDark": "var(--color-primary-700)"
8973
+ },
8974
+ {
8975
+ "name": "--interactive-primary-bg-active",
8976
+ "tier": "semantic",
8977
+ "description": "Semantic interactive: primary-bg-active",
8978
+ "defaultLight": "var(--color-primary-800)",
8979
+ "defaultDark": "var(--color-primary-800)"
8980
+ },
8981
+ {
8982
+ "name": "--interactive-primary-text",
8983
+ "tier": "semantic",
8984
+ "description": "Semantic interactive: primary-text",
8985
+ "defaultLight": "var(--color-white)",
8986
+ "defaultDark": "var(--color-white)"
8987
+ },
8988
+ {
8989
+ "name": "--interactive-secondary-bg",
8990
+ "tier": "semantic",
8991
+ "description": "Semantic interactive: secondary-bg",
8992
+ "defaultLight": "var(--color-white)",
8993
+ "defaultDark": "var(--color-white)"
8994
+ },
8995
+ {
8996
+ "name": "--interactive-secondary-bg-hover",
8997
+ "tier": "semantic",
8998
+ "description": "Semantic interactive: secondary-bg-hover",
8999
+ "defaultLight": "var(--color-neutral-50)",
9000
+ "defaultDark": "var(--color-neutral-50)"
9001
+ },
9002
+ {
9003
+ "name": "--interactive-secondary-bg-active",
9004
+ "tier": "semantic",
9005
+ "description": "Semantic interactive: secondary-bg-active",
9006
+ "defaultLight": "var(--color-neutral-100)",
9007
+ "defaultDark": "var(--color-neutral-100)"
9008
+ },
9009
+ {
9010
+ "name": "--interactive-secondary-text",
9011
+ "tier": "semantic",
9012
+ "description": "Semantic interactive: secondary-text",
9013
+ "defaultLight": "var(--color-neutral-900)",
9014
+ "defaultDark": "var(--color-neutral-900)"
9015
+ },
9016
+ {
9017
+ "name": "--interactive-secondary-border",
9018
+ "tier": "semantic",
9019
+ "description": "Semantic interactive: secondary-border",
9020
+ "defaultLight": "var(--color-neutral-300)",
9021
+ "defaultDark": "var(--color-neutral-300)"
9022
+ },
9023
+ {
9024
+ "name": "--interactive-destructive-bg",
9025
+ "tier": "semantic",
9026
+ "description": "Semantic interactive: destructive-bg",
9027
+ "defaultLight": "var(--color-error-600)",
9028
+ "defaultDark": "var(--color-error-600)"
9029
+ },
9030
+ {
9031
+ "name": "--interactive-destructive-bg-hover",
9032
+ "tier": "semantic",
9033
+ "description": "Semantic interactive: destructive-bg-hover",
9034
+ "defaultLight": "var(--color-error-700)",
9035
+ "defaultDark": "var(--color-error-700)"
9036
+ },
9037
+ {
9038
+ "name": "--interactive-destructive-text",
9039
+ "tier": "semantic",
9040
+ "description": "Semantic interactive: destructive-text",
9041
+ "defaultLight": "var(--color-white)",
9042
+ "defaultDark": "var(--color-white)"
9043
+ },
9044
+ {
9045
+ "name": "--interactive-ghost-bg",
9046
+ "tier": "semantic",
9047
+ "description": "Semantic interactive: ghost-bg",
9048
+ "defaultLight": "var(--color-white)",
9049
+ "defaultDark": "var(--color-white)"
9050
+ },
9051
+ {
9052
+ "name": "--interactive-ghost-bg-hover",
9053
+ "tier": "semantic",
9054
+ "description": "Semantic interactive: ghost-bg-hover",
9055
+ "defaultLight": "var(--color-neutral-100)",
9056
+ "defaultDark": "var(--color-neutral-100)"
9057
+ },
9058
+ {
9059
+ "name": "--component-xs",
9060
+ "tier": "semantic",
9061
+ "description": "Semantic spacing: component-xs",
9062
+ "defaultLight": "var(--spacing-1)",
9063
+ "defaultDark": "var(--spacing-1)"
9064
+ },
9065
+ {
9066
+ "name": "--component-sm",
9067
+ "tier": "semantic",
9068
+ "description": "Semantic spacing: component-sm",
9069
+ "defaultLight": "var(--spacing-2)",
9070
+ "defaultDark": "var(--spacing-2)"
9071
+ },
9072
+ {
9073
+ "name": "--component-md",
9074
+ "tier": "semantic",
9075
+ "description": "Semantic spacing: component-md",
9076
+ "defaultLight": "var(--spacing-4)",
9077
+ "defaultDark": "var(--spacing-4)"
9078
+ },
9079
+ {
9080
+ "name": "--component-lg",
9081
+ "tier": "semantic",
9082
+ "description": "Semantic spacing: component-lg",
9083
+ "defaultLight": "var(--spacing-6)",
9084
+ "defaultDark": "var(--spacing-6)"
9085
+ },
9086
+ {
9087
+ "name": "--component-xl",
9088
+ "tier": "semantic",
9089
+ "description": "Semantic spacing: component-xl",
9090
+ "defaultLight": "var(--spacing-8)",
9091
+ "defaultDark": "var(--spacing-8)"
9092
+ },
9093
+ {
9094
+ "name": "--layout-sm",
9095
+ "tier": "semantic",
9096
+ "description": "Semantic spacing: layout-sm",
9097
+ "defaultLight": "var(--spacing-4)",
9098
+ "defaultDark": "var(--spacing-4)"
9099
+ },
9100
+ {
9101
+ "name": "--layout-md",
9102
+ "tier": "semantic",
9103
+ "description": "Semantic spacing: layout-md",
9104
+ "defaultLight": "var(--spacing-8)",
9105
+ "defaultDark": "var(--spacing-8)"
9106
+ },
9107
+ {
9108
+ "name": "--layout-lg",
9109
+ "tier": "semantic",
9110
+ "description": "Semantic spacing: layout-lg",
9111
+ "defaultLight": "var(--spacing-12)",
9112
+ "defaultDark": "var(--spacing-12)"
9113
+ },
9114
+ {
9115
+ "name": "--layout-xl",
9116
+ "tier": "semantic",
9117
+ "description": "Semantic spacing: layout-xl",
9118
+ "defaultLight": "var(--spacing-16)",
9119
+ "defaultDark": "var(--spacing-16)"
9120
+ },
9121
+ {
9122
+ "name": "--layout-2xl",
9123
+ "tier": "semantic",
9124
+ "description": "Semantic spacing: layout-2xl",
9125
+ "defaultLight": "var(--spacing-24)",
9126
+ "defaultDark": "var(--spacing-24)"
9127
+ },
9128
+ {
9129
+ "name": "--motion-duration-fast",
9130
+ "tier": "semantic",
9131
+ "description": "Semantic motion duration: fast",
9132
+ "defaultLight": "var(--motion-duration-100)",
9133
+ "defaultDark": "var(--motion-duration-100)"
9134
+ },
9135
+ {
9136
+ "name": "--motion-duration-normal",
9137
+ "tier": "semantic",
9138
+ "description": "Semantic motion duration: normal",
9139
+ "defaultLight": "var(--motion-duration-200)",
9140
+ "defaultDark": "var(--motion-duration-200)"
9141
+ },
9142
+ {
9143
+ "name": "--motion-duration-slow",
9144
+ "tier": "semantic",
9145
+ "description": "Semantic motion duration: slow",
9146
+ "defaultLight": "var(--motion-duration-500)",
9147
+ "defaultDark": "var(--motion-duration-500)"
9148
+ },
9149
+ {
9150
+ "name": "--motion-easing-default",
9151
+ "tier": "semantic",
9152
+ "description": "Semantic motion easing: default",
9153
+ "defaultLight": "var(--motion-easing-ease-in-out)",
9154
+ "defaultDark": "var(--motion-easing-ease-in-out)"
9155
+ },
9156
+ {
9157
+ "name": "--motion-easing-enter",
9158
+ "tier": "semantic",
9159
+ "description": "Semantic motion easing: enter",
9160
+ "defaultLight": "var(--motion-easing-ease-out)",
9161
+ "defaultDark": "var(--motion-easing-ease-out)"
9162
+ },
9163
+ {
9164
+ "name": "--motion-easing-exit",
9165
+ "tier": "semantic",
9166
+ "description": "Semantic motion easing: exit",
9167
+ "defaultLight": "var(--motion-easing-ease-in)",
9168
+ "defaultDark": "var(--motion-easing-ease-in)"
9169
+ },
9170
+ {
9171
+ "name": "--motion-easing-spring",
9172
+ "tier": "semantic",
9173
+ "description": "Semantic motion easing: spring",
9174
+ "defaultLight": "var(--motion-easing-spring)",
9175
+ "defaultDark": "var(--motion-easing-spring)"
9176
+ },
9177
+ {
9178
+ "name": "--font-body",
9179
+ "tier": "semantic",
9180
+ "description": "Semantic typography: font-body",
9181
+ "defaultLight": "var(--font-sans)",
9182
+ "defaultDark": "var(--font-sans)"
9183
+ },
9184
+ {
9185
+ "name": "--font-heading",
9186
+ "tier": "semantic",
9187
+ "description": "Semantic typography: font-heading",
9188
+ "defaultLight": "var(--font-sans)",
9189
+ "defaultDark": "var(--font-sans)"
9190
+ },
9191
+ {
9192
+ "name": "--font-mono",
9193
+ "tier": "semantic",
9194
+ "description": "Semantic typography: font-mono",
9195
+ "defaultLight": "var(--font-mono)",
9196
+ "defaultDark": "var(--font-mono)"
9197
+ },
9198
+ {
9199
+ "name": "--size-body",
9200
+ "tier": "semantic",
9201
+ "description": "Semantic typography: size-body",
9202
+ "defaultLight": "var(--font-size-base)",
9203
+ "defaultDark": "var(--font-size-base)"
9204
+ },
9205
+ {
9206
+ "name": "--size-body-sm",
9207
+ "tier": "semantic",
9208
+ "description": "Semantic typography: size-body-sm",
9209
+ "defaultLight": "var(--font-size-sm)",
9210
+ "defaultDark": "var(--font-size-sm)"
9211
+ },
9212
+ {
9213
+ "name": "--size-label",
9214
+ "tier": "semantic",
9215
+ "description": "Semantic typography: size-label",
9216
+ "defaultLight": "var(--font-size-sm)",
9217
+ "defaultDark": "var(--font-size-sm)"
9218
+ },
9219
+ {
9220
+ "name": "--size-caption",
9221
+ "tier": "semantic",
9222
+ "description": "Semantic typography: size-caption",
9223
+ "defaultLight": "var(--font-size-xs)",
9224
+ "defaultDark": "var(--font-size-xs)"
9225
+ },
9226
+ {
9227
+ "name": "--size-heading-sm",
9228
+ "tier": "semantic",
9229
+ "description": "Semantic typography: size-heading-sm",
9230
+ "defaultLight": "var(--font-size-lg)",
9231
+ "defaultDark": "var(--font-size-lg)"
9232
+ },
9233
+ {
9234
+ "name": "--size-heading-md",
9235
+ "tier": "semantic",
9236
+ "description": "Semantic typography: size-heading-md",
9237
+ "defaultLight": "var(--font-size-xl)",
9238
+ "defaultDark": "var(--font-size-xl)"
9239
+ },
9240
+ {
9241
+ "name": "--size-heading-lg",
9242
+ "tier": "semantic",
9243
+ "description": "Semantic typography: size-heading-lg",
9244
+ "defaultLight": "var(--font-size-2xl)",
9245
+ "defaultDark": "var(--font-size-2xl)"
9246
+ },
9247
+ {
9248
+ "name": "--size-heading-xl",
9249
+ "tier": "semantic",
9250
+ "description": "Semantic typography: size-heading-xl",
9251
+ "defaultLight": "var(--font-size-3xl)",
9252
+ "defaultDark": "var(--font-size-3xl)"
9253
+ },
9254
+ {
9255
+ "name": "--weight-body",
9256
+ "tier": "semantic",
9257
+ "description": "Semantic typography: weight-body",
9258
+ "defaultLight": "var(--font-weight-normal)",
9259
+ "defaultDark": "var(--font-weight-normal)"
9260
+ },
9261
+ {
9262
+ "name": "--weight-label",
9263
+ "tier": "semantic",
9264
+ "description": "Semantic typography: weight-label",
9265
+ "defaultLight": "var(--font-weight-medium)",
9266
+ "defaultDark": "var(--font-weight-medium)"
9267
+ },
9268
+ {
9269
+ "name": "--weight-heading",
9270
+ "tier": "semantic",
9271
+ "description": "Semantic typography: weight-heading",
9272
+ "defaultLight": "var(--font-weight-semibold)",
9273
+ "defaultDark": "var(--font-weight-semibold)"
9274
+ },
9275
+ {
9276
+ "name": "--weight-strong",
9277
+ "tier": "semantic",
9278
+ "description": "Semantic typography: weight-strong",
9279
+ "defaultLight": "var(--font-weight-bold)",
9280
+ "defaultDark": "var(--font-weight-bold)"
9281
+ },
9282
+ {
9283
+ "name": "--skeleton-from",
9284
+ "tier": "semantic",
9285
+ "description": "Semantic skeleton shimmer: from",
9286
+ "defaultLight": "var(--surface-muted)",
9287
+ "defaultDark": "var(--surface-muted)"
9288
+ },
9289
+ {
9290
+ "name": "--skeleton-to",
9291
+ "tier": "semantic",
9292
+ "description": "Semantic skeleton shimmer: to",
9293
+ "defaultLight": "var(--surface-subtle)",
9294
+ "defaultDark": "var(--surface-subtle)"
9295
+ },
9296
+ {
9297
+ "name": "--chart-1",
9298
+ "tier": "semantic",
9299
+ "description": "Semantic chart color 1",
9300
+ "defaultLight": "var(--color-primary-500)",
9301
+ "defaultDark": "var(--color-primary-500)"
9302
+ },
9303
+ {
9304
+ "name": "--chart-2",
9305
+ "tier": "semantic",
9306
+ "description": "Semantic chart color 2",
9307
+ "defaultLight": "var(--color-success-500)",
9308
+ "defaultDark": "var(--color-success-500)"
9309
+ },
9310
+ {
9311
+ "name": "--chart-3",
9312
+ "tier": "semantic",
9313
+ "description": "Semantic chart color 3",
9314
+ "defaultLight": "var(--color-warning-500)",
9315
+ "defaultDark": "var(--color-warning-500)"
9316
+ },
9317
+ {
9318
+ "name": "--chart-4",
9319
+ "tier": "semantic",
9320
+ "description": "Semantic chart color 4",
9321
+ "defaultLight": "var(--color-info-500)",
9322
+ "defaultDark": "var(--color-info-500)"
9323
+ },
9324
+ {
9325
+ "name": "--chart-5",
9326
+ "tier": "semantic",
9327
+ "description": "Semantic chart color 5",
9328
+ "defaultLight": "var(--color-error-500)",
9329
+ "defaultDark": "var(--color-error-500)"
9330
+ },
9331
+ {
9332
+ "name": "--sidebar-bg",
9333
+ "tier": "semantic",
9334
+ "description": "Semantic sidebar: bg",
9335
+ "defaultLight": "var(--color-neutral-50)",
9336
+ "defaultDark": "var(--color-neutral-50)"
9337
+ },
9338
+ {
9339
+ "name": "--sidebar-text",
9340
+ "tier": "semantic",
9341
+ "description": "Semantic sidebar: text",
9342
+ "defaultLight": "var(--color-neutral-700)",
9343
+ "defaultDark": "var(--color-neutral-700)"
9344
+ },
9345
+ {
9346
+ "name": "--sidebar-primary-bg",
9347
+ "tier": "semantic",
9348
+ "description": "Semantic sidebar: primary-bg",
9349
+ "defaultLight": "var(--color-primary-600)",
9350
+ "defaultDark": "var(--color-primary-600)"
9351
+ },
9352
+ {
9353
+ "name": "--sidebar-primary-text",
9354
+ "tier": "semantic",
9355
+ "description": "Semantic sidebar: primary-text",
9356
+ "defaultLight": "var(--color-white)",
9357
+ "defaultDark": "var(--color-white)"
9358
+ },
9359
+ {
9360
+ "name": "--sidebar-accent-bg",
9361
+ "tier": "semantic",
9362
+ "description": "Semantic sidebar: accent-bg",
9363
+ "defaultLight": "var(--color-neutral-100)",
9364
+ "defaultDark": "var(--color-neutral-100)"
9365
+ },
9366
+ {
9367
+ "name": "--sidebar-accent-text",
9368
+ "tier": "semantic",
9369
+ "description": "Semantic sidebar: accent-text",
9370
+ "defaultLight": "var(--color-neutral-900)",
9371
+ "defaultDark": "var(--color-neutral-900)"
9372
+ },
9373
+ {
9374
+ "name": "--sidebar-border",
9375
+ "tier": "semantic",
9376
+ "description": "Semantic sidebar: border",
9377
+ "defaultLight": "var(--color-neutral-200)",
9378
+ "defaultDark": "var(--color-neutral-200)"
9379
+ },
9380
+ {
9381
+ "name": "--sidebar-ring",
9382
+ "tier": "semantic",
9383
+ "description": "Semantic sidebar: ring",
9384
+ "defaultLight": "var(--color-primary-500)",
9385
+ "defaultDark": "var(--color-primary-500)"
9386
+ },
9387
+ {
9388
+ "name": "--sidebar-text-muted",
9389
+ "tier": "semantic",
9390
+ "description": "Semantic sidebar: text-muted",
9391
+ "defaultLight": "var(--color-neutral-500)",
9392
+ "defaultDark": "var(--color-neutral-500)"
9393
+ }
6558
9394
  ],
6559
- "layout": [
6560
- "collapsible",
6561
- "scroll-area",
6562
- "separator",
6563
- "sidebar"
9395
+ "adaptive": [
9396
+ {
9397
+ "name": "--text-primary",
9398
+ "tier": "adaptive",
9399
+ "description": "Adaptive text: primary",
9400
+ "defaultLight": "#111827",
9401
+ "defaultDark": "#f9fafb"
9402
+ },
9403
+ {
9404
+ "name": "--text-secondary",
9405
+ "tier": "adaptive",
9406
+ "description": "Adaptive text: secondary",
9407
+ "defaultLight": "#4b5563",
9408
+ "defaultDark": "#9ca3af"
9409
+ },
9410
+ {
9411
+ "name": "--text-tertiary",
9412
+ "tier": "adaptive",
9413
+ "description": "Adaptive text: tertiary",
9414
+ "defaultLight": "#9ca3af",
9415
+ "defaultDark": "#6b7280"
9416
+ },
9417
+ {
9418
+ "name": "--text-disabled",
9419
+ "tier": "adaptive",
9420
+ "description": "Adaptive text: disabled",
9421
+ "defaultLight": "#d1d5db",
9422
+ "defaultDark": "#4b5563"
9423
+ },
9424
+ {
9425
+ "name": "--text-inverse",
9426
+ "tier": "adaptive",
9427
+ "description": "Adaptive text: inverse",
9428
+ "defaultLight": "#ffffff",
9429
+ "defaultDark": "#111827"
9430
+ },
9431
+ {
9432
+ "name": "--text-inverse-secondary",
9433
+ "tier": "adaptive",
9434
+ "description": "Adaptive text: inverse-secondary",
9435
+ "defaultLight": "#e5e7eb",
9436
+ "defaultDark": "#374151"
9437
+ },
9438
+ {
9439
+ "name": "--text-link",
9440
+ "tier": "adaptive",
9441
+ "description": "Adaptive text: link",
9442
+ "defaultLight": "#2563eb",
9443
+ "defaultDark": "#60a5fa"
9444
+ },
9445
+ {
9446
+ "name": "--text-link-hover",
9447
+ "tier": "adaptive",
9448
+ "description": "Adaptive text: link-hover",
9449
+ "defaultLight": "#1d4ed8",
9450
+ "defaultDark": "#93c5fd"
9451
+ },
9452
+ {
9453
+ "name": "--text-success",
9454
+ "tier": "adaptive",
9455
+ "description": "Adaptive text: success",
9456
+ "defaultLight": "#15803d",
9457
+ "defaultDark": "#22c55e"
9458
+ },
9459
+ {
9460
+ "name": "--text-warning",
9461
+ "tier": "adaptive",
9462
+ "description": "Adaptive text: warning",
9463
+ "defaultLight": "#b45309",
9464
+ "defaultDark": "#f59e0b"
9465
+ },
9466
+ {
9467
+ "name": "--text-error",
9468
+ "tier": "adaptive",
9469
+ "description": "Adaptive text: error",
9470
+ "defaultLight": "#b91c1c",
9471
+ "defaultDark": "#ef4444"
9472
+ },
9473
+ {
9474
+ "name": "--text-info",
9475
+ "tier": "adaptive",
9476
+ "description": "Adaptive text: info",
9477
+ "defaultLight": "#0369a1",
9478
+ "defaultDark": "#0ea5e9"
9479
+ },
9480
+ {
9481
+ "name": "--surface-page",
9482
+ "tier": "adaptive",
9483
+ "description": "Adaptive surface: page",
9484
+ "defaultLight": "#ffffff",
9485
+ "defaultDark": "#030712"
9486
+ },
9487
+ {
9488
+ "name": "--surface-card",
9489
+ "tier": "adaptive",
9490
+ "description": "Adaptive surface: card",
9491
+ "defaultLight": "#ffffff",
9492
+ "defaultDark": "#111827"
9493
+ },
9494
+ {
9495
+ "name": "--surface-subtle",
9496
+ "tier": "adaptive",
9497
+ "description": "Adaptive surface: subtle",
9498
+ "defaultLight": "#f9fafb",
9499
+ "defaultDark": "#1f2937"
9500
+ },
9501
+ {
9502
+ "name": "--surface-muted",
9503
+ "tier": "adaptive",
9504
+ "description": "Adaptive surface: muted",
9505
+ "defaultLight": "#f3f4f6",
9506
+ "defaultDark": "#374151"
9507
+ },
9508
+ {
9509
+ "name": "--surface-overlay",
9510
+ "tier": "adaptive",
9511
+ "description": "Adaptive surface: overlay",
9512
+ "defaultLight": "#111827",
9513
+ "defaultDark": "#030712"
9514
+ },
9515
+ {
9516
+ "name": "--surface-popover",
9517
+ "tier": "adaptive",
9518
+ "description": "Adaptive surface: popover",
9519
+ "defaultLight": "#ffffff",
9520
+ "defaultDark": "#111827"
9521
+ },
9522
+ {
9523
+ "name": "--surface-interactive-default",
9524
+ "tier": "adaptive",
9525
+ "description": "Adaptive surface: interactive-default",
9526
+ "defaultLight": "#ffffff",
9527
+ "defaultDark": "#1f2937"
9528
+ },
9529
+ {
9530
+ "name": "--surface-interactive-hover",
9531
+ "tier": "adaptive",
9532
+ "description": "Adaptive surface: interactive-hover",
9533
+ "defaultLight": "#f9fafb",
9534
+ "defaultDark": "#374151"
9535
+ },
9536
+ {
9537
+ "name": "--surface-interactive-active",
9538
+ "tier": "adaptive",
9539
+ "description": "Adaptive surface: interactive-active",
9540
+ "defaultLight": "#f3f4f6",
9541
+ "defaultDark": "#4b5563"
9542
+ },
9543
+ {
9544
+ "name": "--surface-interactive-disabled",
9545
+ "tier": "adaptive",
9546
+ "description": "Adaptive surface: interactive-disabled",
9547
+ "defaultLight": "#f9fafb",
9548
+ "defaultDark": "#1f2937"
9549
+ },
9550
+ {
9551
+ "name": "--surface-accent-subtle",
9552
+ "tier": "adaptive",
9553
+ "description": "Adaptive surface: accent-subtle",
9554
+ "defaultLight": "#eff6ff",
9555
+ "defaultDark": "#1e3a8a"
9556
+ },
9557
+ {
9558
+ "name": "--surface-accent-default",
9559
+ "tier": "adaptive",
9560
+ "description": "Adaptive surface: accent-default",
9561
+ "defaultLight": "#3b82f6",
9562
+ "defaultDark": "#3b82f6"
9563
+ },
9564
+ {
9565
+ "name": "--surface-accent-strong",
9566
+ "tier": "adaptive",
9567
+ "description": "Adaptive surface: accent-strong",
9568
+ "defaultLight": "#2563eb",
9569
+ "defaultDark": "#60a5fa"
9570
+ },
9571
+ {
9572
+ "name": "--surface-success-subtle",
9573
+ "tier": "adaptive",
9574
+ "description": "Adaptive surface: success-subtle",
9575
+ "defaultLight": "#f0fdf4",
9576
+ "defaultDark": "#14532d"
9577
+ },
9578
+ {
9579
+ "name": "--surface-success-default",
9580
+ "tier": "adaptive",
9581
+ "description": "Adaptive surface: success-default",
9582
+ "defaultLight": "#22c55e",
9583
+ "defaultDark": "#22c55e"
9584
+ },
9585
+ {
9586
+ "name": "--surface-warning-subtle",
9587
+ "tier": "adaptive",
9588
+ "description": "Adaptive surface: warning-subtle",
9589
+ "defaultLight": "#fffbeb",
9590
+ "defaultDark": "#78350f"
9591
+ },
9592
+ {
9593
+ "name": "--surface-warning-default",
9594
+ "tier": "adaptive",
9595
+ "description": "Adaptive surface: warning-default",
9596
+ "defaultLight": "#f59e0b",
9597
+ "defaultDark": "#f59e0b"
9598
+ },
9599
+ {
9600
+ "name": "--surface-error-subtle",
9601
+ "tier": "adaptive",
9602
+ "description": "Adaptive surface: error-subtle",
9603
+ "defaultLight": "#fef2f2",
9604
+ "defaultDark": "#7f1d1d"
9605
+ },
9606
+ {
9607
+ "name": "--surface-error-default",
9608
+ "tier": "adaptive",
9609
+ "description": "Adaptive surface: error-default",
9610
+ "defaultLight": "#ef4444",
9611
+ "defaultDark": "#ef4444"
9612
+ },
9613
+ {
9614
+ "name": "--surface-info-subtle",
9615
+ "tier": "adaptive",
9616
+ "description": "Adaptive surface: info-subtle",
9617
+ "defaultLight": "#f0f9ff",
9618
+ "defaultDark": "#0c4a6e"
9619
+ },
9620
+ {
9621
+ "name": "--surface-info-default",
9622
+ "tier": "adaptive",
9623
+ "description": "Adaptive surface: info-default",
9624
+ "defaultLight": "#0ea5e9",
9625
+ "defaultDark": "#0ea5e9"
9626
+ },
9627
+ {
9628
+ "name": "--border-default",
9629
+ "tier": "adaptive",
9630
+ "description": "Adaptive border: default",
9631
+ "defaultLight": "#e5e7eb",
9632
+ "defaultDark": "#374151"
9633
+ },
9634
+ {
9635
+ "name": "--border-muted",
9636
+ "tier": "adaptive",
9637
+ "description": "Adaptive border: muted",
9638
+ "defaultLight": "#f3f4f6",
9639
+ "defaultDark": "#1f2937"
9640
+ },
9641
+ {
9642
+ "name": "--border-strong",
9643
+ "tier": "adaptive",
9644
+ "description": "Adaptive border: strong",
9645
+ "defaultLight": "#d1d5db",
9646
+ "defaultDark": "#4b5563"
9647
+ },
9648
+ {
9649
+ "name": "--border-focus",
9650
+ "tier": "adaptive",
9651
+ "description": "Adaptive border: focus",
9652
+ "defaultLight": "#3b82f6",
9653
+ "defaultDark": "#60a5fa"
9654
+ },
9655
+ {
9656
+ "name": "--border-disabled",
9657
+ "tier": "adaptive",
9658
+ "description": "Adaptive border: disabled",
9659
+ "defaultLight": "#f3f4f6",
9660
+ "defaultDark": "#1f2937"
9661
+ },
9662
+ {
9663
+ "name": "--border-input",
9664
+ "tier": "adaptive",
9665
+ "description": "Adaptive border: input",
9666
+ "defaultLight": "#e5e7eb",
9667
+ "defaultDark": "#374151"
9668
+ },
9669
+ {
9670
+ "name": "--border-success",
9671
+ "tier": "adaptive",
9672
+ "description": "Adaptive border: success",
9673
+ "defaultLight": "#22c55e",
9674
+ "defaultDark": "#22c55e"
9675
+ },
9676
+ {
9677
+ "name": "--border-warning",
9678
+ "tier": "adaptive",
9679
+ "description": "Adaptive border: warning",
9680
+ "defaultLight": "#f59e0b",
9681
+ "defaultDark": "#f59e0b"
9682
+ },
9683
+ {
9684
+ "name": "--border-error",
9685
+ "tier": "adaptive",
9686
+ "description": "Adaptive border: error",
9687
+ "defaultLight": "#ef4444",
9688
+ "defaultDark": "#ef4444"
9689
+ },
9690
+ {
9691
+ "name": "--border-info",
9692
+ "tier": "adaptive",
9693
+ "description": "Adaptive border: info",
9694
+ "defaultLight": "#0ea5e9",
9695
+ "defaultDark": "#0ea5e9"
9696
+ },
9697
+ {
9698
+ "name": "--interactive-primary-bg",
9699
+ "tier": "adaptive",
9700
+ "description": "Adaptive interactive: primary-bg",
9701
+ "defaultLight": "#2563eb",
9702
+ "defaultDark": "#3b82f6"
9703
+ },
9704
+ {
9705
+ "name": "--interactive-primary-bg-hover",
9706
+ "tier": "adaptive",
9707
+ "description": "Adaptive interactive: primary-bg-hover",
9708
+ "defaultLight": "#1d4ed8",
9709
+ "defaultDark": "#60a5fa"
9710
+ },
9711
+ {
9712
+ "name": "--interactive-primary-bg-active",
9713
+ "tier": "adaptive",
9714
+ "description": "Adaptive interactive: primary-bg-active",
9715
+ "defaultLight": "#1e40af",
9716
+ "defaultDark": "#93c5fd"
9717
+ },
9718
+ {
9719
+ "name": "--interactive-primary-text",
9720
+ "tier": "adaptive",
9721
+ "description": "Adaptive interactive: primary-text",
9722
+ "defaultLight": "#ffffff",
9723
+ "defaultDark": "#ffffff"
9724
+ },
9725
+ {
9726
+ "name": "--interactive-secondary-bg",
9727
+ "tier": "adaptive",
9728
+ "description": "Adaptive interactive: secondary-bg",
9729
+ "defaultLight": "#ffffff",
9730
+ "defaultDark": "#1f2937"
9731
+ },
9732
+ {
9733
+ "name": "--interactive-secondary-bg-hover",
9734
+ "tier": "adaptive",
9735
+ "description": "Adaptive interactive: secondary-bg-hover",
9736
+ "defaultLight": "#f9fafb",
9737
+ "defaultDark": "#374151"
9738
+ },
9739
+ {
9740
+ "name": "--interactive-secondary-bg-active",
9741
+ "tier": "adaptive",
9742
+ "description": "Adaptive interactive: secondary-bg-active",
9743
+ "defaultLight": "#f3f4f6",
9744
+ "defaultDark": "#4b5563"
9745
+ },
9746
+ {
9747
+ "name": "--interactive-secondary-text",
9748
+ "tier": "adaptive",
9749
+ "description": "Adaptive interactive: secondary-text",
9750
+ "defaultLight": "#111827",
9751
+ "defaultDark": "#f9fafb"
9752
+ },
9753
+ {
9754
+ "name": "--interactive-secondary-border",
9755
+ "tier": "adaptive",
9756
+ "description": "Adaptive interactive: secondary-border",
9757
+ "defaultLight": "#d1d5db",
9758
+ "defaultDark": "#4b5563"
9759
+ },
9760
+ {
9761
+ "name": "--interactive-destructive-bg",
9762
+ "tier": "adaptive",
9763
+ "description": "Adaptive interactive: destructive-bg",
9764
+ "defaultLight": "#dc2626",
9765
+ "defaultDark": "#ef4444"
9766
+ },
9767
+ {
9768
+ "name": "--interactive-destructive-bg-hover",
9769
+ "tier": "adaptive",
9770
+ "description": "Adaptive interactive: destructive-bg-hover",
9771
+ "defaultLight": "#b91c1c",
9772
+ "defaultDark": "#dc2626"
9773
+ },
9774
+ {
9775
+ "name": "--interactive-destructive-text",
9776
+ "tier": "adaptive",
9777
+ "description": "Adaptive interactive: destructive-text",
9778
+ "defaultLight": "#ffffff",
9779
+ "defaultDark": "#ffffff"
9780
+ },
9781
+ {
9782
+ "name": "--interactive-ghost-bg",
9783
+ "tier": "adaptive",
9784
+ "description": "Adaptive interactive: ghost-bg",
9785
+ "defaultLight": "#ffffff",
9786
+ "defaultDark": "#1f2937"
9787
+ },
9788
+ {
9789
+ "name": "--interactive-ghost-bg-hover",
9790
+ "tier": "adaptive",
9791
+ "description": "Adaptive interactive: ghost-bg-hover",
9792
+ "defaultLight": "#f3f4f6",
9793
+ "defaultDark": "#374151"
9794
+ },
9795
+ {
9796
+ "name": "--skeleton-from",
9797
+ "tier": "adaptive",
9798
+ "description": "Adaptive skeleton shimmer: from",
9799
+ "defaultLight": "#f3f4f6",
9800
+ "defaultDark": "#1f2937"
9801
+ },
9802
+ {
9803
+ "name": "--skeleton-to",
9804
+ "tier": "adaptive",
9805
+ "description": "Adaptive skeleton shimmer: to",
9806
+ "defaultLight": "#e5e7eb",
9807
+ "defaultDark": "#374151"
9808
+ },
9809
+ {
9810
+ "name": "--chart-1",
9811
+ "tier": "adaptive",
9812
+ "description": "Adaptive chart color 1",
9813
+ "defaultLight": "#3b82f6",
9814
+ "defaultDark": "#60a5fa"
9815
+ },
9816
+ {
9817
+ "name": "--chart-2",
9818
+ "tier": "adaptive",
9819
+ "description": "Adaptive chart color 2",
9820
+ "defaultLight": "#22c55e",
9821
+ "defaultDark": "#22c55e"
9822
+ },
9823
+ {
9824
+ "name": "--chart-3",
9825
+ "tier": "adaptive",
9826
+ "description": "Adaptive chart color 3",
9827
+ "defaultLight": "#f59e0b",
9828
+ "defaultDark": "#f59e0b"
9829
+ },
9830
+ {
9831
+ "name": "--chart-4",
9832
+ "tier": "adaptive",
9833
+ "description": "Adaptive chart color 4",
9834
+ "defaultLight": "#0ea5e9",
9835
+ "defaultDark": "#0ea5e9"
9836
+ },
9837
+ {
9838
+ "name": "--chart-5",
9839
+ "tier": "adaptive",
9840
+ "description": "Adaptive chart color 5",
9841
+ "defaultLight": "#ef4444",
9842
+ "defaultDark": "#ef4444"
9843
+ },
9844
+ {
9845
+ "name": "--sidebar-bg",
9846
+ "tier": "adaptive",
9847
+ "description": "Adaptive sidebar: bg",
9848
+ "defaultLight": "#f9fafb",
9849
+ "defaultDark": "#111827"
9850
+ },
9851
+ {
9852
+ "name": "--sidebar-text",
9853
+ "tier": "adaptive",
9854
+ "description": "Adaptive sidebar: text",
9855
+ "defaultLight": "#374151",
9856
+ "defaultDark": "#d1d5db"
9857
+ },
9858
+ {
9859
+ "name": "--sidebar-primary-bg",
9860
+ "tier": "adaptive",
9861
+ "description": "Adaptive sidebar: primary-bg",
9862
+ "defaultLight": "#2563eb",
9863
+ "defaultDark": "#3b82f6"
9864
+ },
9865
+ {
9866
+ "name": "--sidebar-primary-text",
9867
+ "tier": "adaptive",
9868
+ "description": "Adaptive sidebar: primary-text",
9869
+ "defaultLight": "#ffffff",
9870
+ "defaultDark": "#ffffff"
9871
+ },
9872
+ {
9873
+ "name": "--sidebar-accent-bg",
9874
+ "tier": "adaptive",
9875
+ "description": "Adaptive sidebar: accent-bg",
9876
+ "defaultLight": "#f3f4f6",
9877
+ "defaultDark": "#1f2937"
9878
+ },
9879
+ {
9880
+ "name": "--sidebar-accent-text",
9881
+ "tier": "adaptive",
9882
+ "description": "Adaptive sidebar: accent-text",
9883
+ "defaultLight": "#111827",
9884
+ "defaultDark": "#f9fafb"
9885
+ },
9886
+ {
9887
+ "name": "--sidebar-border",
9888
+ "tier": "adaptive",
9889
+ "description": "Adaptive sidebar: border",
9890
+ "defaultLight": "#e5e7eb",
9891
+ "defaultDark": "#374151"
9892
+ },
9893
+ {
9894
+ "name": "--sidebar-ring",
9895
+ "tier": "adaptive",
9896
+ "description": "Adaptive sidebar: ring",
9897
+ "defaultLight": "#3b82f6",
9898
+ "defaultDark": "#60a5fa"
9899
+ },
9900
+ {
9901
+ "name": "--sidebar-text-muted",
9902
+ "tier": "adaptive",
9903
+ "description": "Adaptive sidebar: text-muted",
9904
+ "defaultLight": "#6b7280",
9905
+ "defaultDark": "#9ca3af"
9906
+ }
6564
9907
  ],
6565
- "overlay": [
6566
- "context-menu",
6567
- "dialog",
6568
- "dropdown-menu",
6569
- "fullscreen-overlay",
6570
- "hover-card",
6571
- "menubar",
6572
- "sheet"
6573
- ]
9908
+ "summary": {
9909
+ "total": 298
9910
+ }
6574
9911
  }
6575
9912
  }