{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "ui", "homepage": "https://github.com/b4r7x/diffgazer/tree/main/libs/ui", "items": [ { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "Collapsible content sections with single or multiple open items", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "controllable-state", "icons", "@diffgazer-keys/navigation", "utils", "composed-refs", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/accordion/index.ts", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/accordion-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/accordion/use-accordion-state.ts", "type": "registry:ui" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Terminal-inspired button with variants", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "spinner", "utils", "focus-outline"], "meta": { "client": true }, "files": [ { "path": "registry/ui/button/index.ts", "type": "registry:ui" }, { "path": "registry/ui/button/button.tsx", "type": "registry:ui" } ] }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "Terminal-inspired avatar with image support, monospace initials fallback, and group stacking with overflow.", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "overflow", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/avatar/index.ts", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-variants.ts", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-image.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-fallback.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-indicator.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/avatar-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/avatar/use-image-status.ts", "type": "registry:ui" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Terminal-styled badge for labels and status indicators", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/badge/index.ts", "type": "registry:ui" }, { "path": "registry/ui/badge/badge.tsx", "type": "registry:ui" } ] }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Terminal-styled text input", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "input-variants", "utils", "composed-refs"], "meta": { "client": true }, "files": [ { "path": "registry/ui/input/index.ts", "type": "registry:ui" }, { "path": "registry/ui/input/input.tsx", "type": "registry:ui" }, { "path": "registry/ui/input/input-group.tsx", "type": "registry:ui" } ] }, { "name": "field", "type": "registry:ui", "title": "Field", "description": "Form field primitives for labels, controls, descriptions, and validation messages", "dependencies": [], "registryDependencies": ["theme", "aria", "composed-refs", "label", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/field/index.ts", "type": "registry:ui" }, { "path": "registry/ui/field/field-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/field/field-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/field/field-control.tsx", "type": "registry:ui" }, { "path": "registry/ui/field/field-description.tsx", "type": "registry:ui" }, { "path": "registry/ui/field/field-error.tsx", "type": "registry:ui" }, { "path": "registry/ui/field/field.tsx", "type": "registry:ui" } ] }, { "name": "textarea", "type": "registry:ui", "title": "Textarea", "description": "Terminal-styled multi-line text area with directional resize handles", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "input-variants", "utils", "composed-refs"], "meta": { "client": true }, "files": [ { "path": "registry/ui/textarea/index.ts", "type": "registry:ui" }, { "path": "registry/ui/textarea/textarea.tsx", "type": "registry:ui" }, { "path": "registry/ui/textarea/textarea-resizer.tsx", "type": "registry:ui" }, { "path": "registry/ui/textarea/use-textarea-resize.ts", "type": "registry:ui" } ] }, { "name": "callout", "type": "registry:ui", "title": "Callout", "description": "Highlighted message block for tips, warnings, and errors", "registryDependencies": [ "theme", "controllable-state", "accessible-text", "@diffgazer-keys/focus-restore", "@diffgazer-keys/focusable", "utils", "composed-refs", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/callout/index.ts", "type": "registry:ui" }, { "path": "registry/ui/callout/callout-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout-icon.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout-dismiss.tsx", "type": "registry:ui" }, { "path": "registry/ui/callout/callout.css", "type": "registry:style", "target": "~/styles/callout.css" } ] }, { "name": "portal", "type": "registry:ui", "title": "Portal", "description": "Renders children into a DOM node outside the parent hierarchy", "dependencies": [], "registryDependencies": [], "meta": { "client": true, "hidden": true }, "files": [ { "path": "registry/ui/shared/portal.tsx", "type": "registry:ui" }, { "path": "registry/ui/shared/portal-context.tsx", "type": "registry:ui" } ] }, { "name": "trigger-interop", "type": "registry:ui", "title": "Trigger Interop", "description": "Shared native trigger detection and event-handler merging helpers", "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/shared/trigger-interop.ts", "type": "registry:ui" } ] }, { "name": "overlay-surface", "type": "registry:ui", "title": "Overlay Surface", "description": "Shared elevation grammar for the overlay family, in an anchored and a modal tier", "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/shared/overlay-surface.ts", "type": "registry:ui" } ] }, { "name": "overlay-hints", "type": "registry:ui", "title": "Overlay Hints", "description": "Shared keyboard hint bar for overlay footers, collapsing at coarse pointer", "registryDependencies": ["kbd", "utils"], "meta": { "client": true, "hidden": true }, "files": [ { "path": "registry/ui/shared/overlay-hints.tsx", "type": "registry:ui" }, { "path": "registry/ui/shared/overlay-hints.css", "type": "registry:style", "target": "~/styles/overlay-hints.css" } ] }, { "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "Terminal-styled checkbox with bracket notation", "dependencies": [], "registryDependencies": [ "theme", "aria", "controllable-state", "form-reset", "@diffgazer-keys/navigation", "fieldset-disabled", "selectable-collection", "selectable-variants", "selectable-glyph", "utils", "composed-refs" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/checkbox/index.ts", "type": "registry:ui" }, { "path": "registry/ui/checkbox/checkbox.tsx", "type": "registry:ui" }, { "path": "registry/ui/checkbox/checkbox-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/checkbox/checkbox-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/checkbox/checkbox-group-context.tsx", "type": "registry:ui" } ] }, { "name": "icons", "type": "registry:ui", "title": "Icons", "description": "SVG icon components: directional chevron with rotation animation.", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/icons/index.ts", "type": "registry:ui" }, { "path": "registry/ui/icons/chevron.tsx", "type": "registry:ui" } ] }, { "name": "radio", "type": "registry:ui", "title": "Radio", "description": "Terminal-styled radio and radio group for single-selection with bracket notation", "dependencies": [], "registryDependencies": [ "theme", "aria", "controllable-state", "form-reset", "@diffgazer-keys/navigation", "fieldset-disabled", "selectable-collection", "selectable-variants", "selectable-glyph", "utils", "composed-refs" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/radio/index.ts", "type": "registry:ui" }, { "path": "registry/ui/radio/radio-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/radio/radio.tsx", "type": "registry:ui" }, { "path": "registry/ui/radio/radio-group-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/radio/radio-group-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/radio/use-radio-group-form.ts", "type": "registry:ui" }, { "path": "registry/ui/radio/use-radio-group-navigation.ts", "type": "registry:ui" } ] }, { "name": "panel", "type": "registry:ui", "title": "Panel", "description": "Card-like container with composable header, title, description, content, row, and footer primitives", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "aria", "corner-label-variants", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/panel/index.ts", "type": "registry:ui" }, { "path": "registry/ui/panel/panel.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-description.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-row.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-footer.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/panel/panel.css", "type": "registry:style", "target": "~/styles/panel.css" } ] }, { "name": "status-indicator", "type": "registry:ui", "title": "Status Indicator", "description": "Pulsing status dot with monospace label for terminal chrome", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/status-indicator/index.ts", "type": "registry:ui" }, { "path": "registry/ui/status-indicator/status-indicator.tsx", "type": "registry:ui" } ] }, { "name": "scroll-area", "type": "registry:ui", "title": "Scroll Area", "description": "Custom scrollable area with styled scrollbars", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils", "focus-outline", "composed-refs"], "meta": { "client": true }, "files": [ { "path": "registry/ui/scroll-area/index.ts", "type": "registry:ui" }, { "path": "registry/ui/scroll-area/scroll-area.tsx", "type": "registry:ui" } ] }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Simple bordered card primitives with floating border labels and semantic HTML support", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "corner-label-variants", "utils", "focus-outline"], "meta": { "client": false }, "files": [ { "path": "registry/ui/card/index.ts", "type": "registry:ui" }, { "path": "registry/ui/card/card.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-action.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-description.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/card/card-footer.tsx", "type": "registry:ui" } ] }, { "name": "block-bar", "type": "registry:ui", "title": "Block Bar", "description": "Segmented block-character bar for data visualization with multi-segment support", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/block-bar/index.ts", "type": "registry:ui" }, { "path": "registry/ui/block-bar/block-bar.tsx", "type": "registry:ui" }, { "path": "registry/ui/block-bar/block-bar-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/block-bar/block-bar-segment.tsx", "type": "registry:ui" } ] }, { "name": "section-header", "type": "registry:ui", "title": "Section Header", "description": "Section heading with terminal-style decoration", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/section-header/index.ts", "type": "registry:ui" }, { "path": "registry/ui/section-header/section-header.tsx", "type": "registry:ui" } ] }, { "name": "empty-state", "type": "registry:ui", "title": "Empty State", "description": "Placeholder for empty content areas", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/empty-state/index.ts", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state.tsx", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state-icon.tsx", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state-message.tsx", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state-description.tsx", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state-actions.tsx", "type": "registry:ui" }, { "path": "registry/ui/empty-state/empty-state-hint.tsx", "type": "registry:ui" } ] }, { "name": "key-value", "type": "registry:ui", "title": "Key Value", "description": "Compound component for labeled data display. KeyValue wraps KeyValue.Item rows in a semantic description list.", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/key-value/index.ts", "type": "registry:ui" }, { "path": "registry/ui/key-value/key-value.tsx", "type": "registry:ui" }, { "path": "registry/ui/key-value/key-value-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/key-value/key-value-context.tsx", "type": "registry:ui" } ] }, { "name": "label", "type": "registry:ui", "title": "Label", "description": "Styled label with optional form control wrapping and orientation support.", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/label/index.ts", "type": "registry:ui" }, { "path": "registry/ui/label/label.tsx", "type": "registry:ui" } ] }, { "name": "overflow", "type": "registry:ui", "title": "Overflow", "description": "Container-aware overflow handling for items (dynamic fitting with indicator) and text (line clamping with tooltip).", "dependencies": [], "registryDependencies": [ "theme", "tooltip", "overflow-detection", "overflow-items", "utils", "composed-refs" ], "meta": { "client": true }, "files": [ { "path": "registry/ui/overflow/index.ts", "type": "registry:ui" }, { "path": "registry/ui/overflow/overflow.tsx", "type": "registry:ui" }, { "path": "registry/ui/overflow/overflow-text.tsx", "type": "registry:ui" }, { "path": "registry/ui/overflow/overflow-items.tsx", "type": "registry:ui" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "Minimal tooltip with hover delay and terminal styling. Built on Popover primitive with all 4-side positioning. Compound API (Trigger + Content) or shorthand content prop.", "dependencies": [], "registryDependencies": ["theme", "popover", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/tooltip/index.ts", "type": "registry:ui" }, { "path": "registry/ui/tooltip/tooltip.tsx", "type": "registry:ui" }, { "path": "registry/ui/tooltip/tooltip-content.tsx", "type": "registry:ui" } ] }, { "name": "dialog", "type": "registry:ui", "title": "Dialog", "description": "Modal dialog with compound components", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "button", "accessible-text", "controllable-state", "@diffgazer-keys/focus-restore", "@diffgazer-keys/scroll-lock", "dialog-shell", "portal", "kbd", "aria", "utils", "composed-refs", "trigger-interop", "overlay-surface", "overlay-hints", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/dialog/index.ts", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-description.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-body.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-footer.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-keyboard-hints.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-close.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-close-icon.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-action.tsx", "type": "registry:ui" }, { "path": "registry/ui/dialog/dialog-trigger.tsx", "type": "registry:ui" } ] }, { "name": "dialog-shell", "type": "registry:ui", "title": "Dialog Shell", "description": "Native dialog element wrapper with presence animations and backdrop handling", "dependencies": [], "registryDependencies": [ "presence", "@diffgazer-keys/focus-trap", "aria", "composed-refs", "top-layer-stack" ], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/shared/dialog-shell.tsx", "type": "registry:ui" }, { "path": "registry/ui/shared/dialog.css", "type": "registry:style", "target": "~/styles/dialog.css" } ] }, { "name": "kbd", "type": "registry:ui", "title": "Kbd", "description": "Keyboard shortcut indicator", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/kbd/index.ts", "type": "registry:ui" }, { "path": "registry/ui/kbd/kbd.tsx", "type": "registry:ui" }, { "path": "registry/ui/kbd/kbd-group.tsx", "type": "registry:ui" } ] }, { "name": "divider", "type": "registry:ui", "title": "Divider", "description": "Line separator with horizontal and vertical orientation, default and spaced variants.", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/divider/index.ts", "type": "registry:ui" }, { "path": "registry/ui/divider/divider.tsx", "type": "registry:ui" } ] }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Terminal-styled tabbed interface", "registryDependencies": [ "theme", "aria", "controllable-state", "@diffgazer-keys/navigation", "floating-indicator", "segmented-variants", "selectable-collection", "utils", "composed-refs", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/tabs/index.ts", "type": "registry:ui" }, { "path": "registry/ui/tabs/tabs.tsx", "type": "registry:ui" }, { "path": "registry/ui/tabs/tabs-list.tsx", "type": "registry:ui" }, { "path": "registry/ui/tabs/tabs-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/tabs/tabs-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/tabs/tabs-context.tsx", "type": "registry:ui" } ] }, { "name": "menu", "type": "registry:ui", "title": "Menu", "description": "Terminal-styled selection list with keyboard navigation", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "icons", "listbox", "selectable-collection", "outside-click", "utils", "floating-panel", "composed-refs", "overlay-surface", "is-mobile" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/menu/index.ts", "type": "registry:ui" }, { "path": "registry/ui/menu/menu.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-item-variants.ts", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-item-layouts.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-divider.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-item-checkbox.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-item-radio.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/use-menu-item-interactions.ts", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-sub.tsx", "type": "registry:ui" }, { "path": "registry/ui/menu/menu-stack.tsx", "type": "registry:ui" } ] }, { "name": "navigation-list", "type": "registry:ui", "title": "Navigation List", "description": "Terminal-styled navigation sidebar list", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "listbox", "selectable-collection", "badge", "utils", "icons", "aria", "composed-refs", "marker-rail" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/navigation-list/index.ts", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-status.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-badge.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-subtitle.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-meta.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-item-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-group-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/navigation-list/navigation-list-progress.tsx", "type": "registry:ui" } ] }, { "name": "toast", "type": "registry:ui", "title": "Toast", "description": "Terminal-styled toast notification system", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "outside-click", "spinner", "utils", "@diffgazer-keys/focus-restore", "@diffgazer-keys/navigation", "top-layer-stack", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/toast/index.ts", "type": "registry:ui" }, { "path": "registry/ui/toast/toast.tsx", "type": "registry:ui" }, { "path": "registry/ui/toast/toast-container.tsx", "type": "registry:ui" }, { "path": "registry/ui/toast/toast-variants.ts", "type": "registry:ui" }, { "path": "registry/ui/toast/toast-store.ts", "type": "registry:ui" }, { "path": "registry/ui/toast/toast-timers.ts", "type": "registry:ui" }, { "path": "registry/ui/toast/countdown.tsx", "type": "registry:ui" }, { "path": "registry/ui/toast/use-dismiss.ts", "type": "registry:ui" }, { "path": "registry/ui/toast/use-container.ts", "type": "registry:ui" } ] }, { "name": "stepper", "type": "registry:ui", "title": "Stepper", "description": "Step-by-step progress indicator", "meta": { "client": true }, "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "badge", "controllable-state", "selectable-collection", "step-status", "stepper-variants", "utils", "composed-refs" ], "files": [ { "path": "registry/ui/stepper/index.ts", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper.tsx", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/stepper/use-stepper-state.ts", "type": "registry:ui" }, { "path": "registry/ui/stepper/use-step-collection.ts", "type": "registry:ui" }, { "path": "registry/ui/stepper/step-navigation.ts", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper-step.tsx", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/stepper/stepper-substep.tsx", "type": "registry:ui" } ] }, { "name": "search-input", "type": "registry:ui", "title": "Search Input", "description": "Terminal-styled search input with / prefix and keyboard callbacks.", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "controllable-state", "form-reset", "input-variants", "utils", "composed-refs", "focus-outline" ], "meta": { "client": true }, "files": [ { "path": "registry/ui/search-input/index.ts", "type": "registry:ui" }, { "path": "registry/ui/search-input/search-input.tsx", "type": "registry:ui" } ] }, { "name": "toggle-group", "type": "registry:ui", "title": "Toggle Group", "description": "Compound toggle button group for single selection with keyboard navigation", "registryDependencies": [ "theme", "@diffgazer-keys/navigation", "controllable-state", "form-reset", "floating-indicator", "selectable-collection", "segmented-variants", "utils", "composed-refs" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/toggle-group/index.ts", "type": "registry:ui" }, { "path": "registry/ui/toggle-group/toggle-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/toggle-group/toggle-group-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/toggle-group/toggle-group-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/toggle-group/create-toggle-group.tsx", "type": "registry:ui" } ] }, { "name": "code-block", "type": "registry:ui", "title": "Code Block", "description": "Code display with three visual variants (hairline, bare, terminal), per-line diff/highlight states, and optional copy button. Add ui/code-block-highlight separately for lowlight syntax coloring.", "registryDependencies": [ "theme", "scroll-area", "accessible-text", "utils", "copy-to-clipboard" ], "meta": { "client": true }, "files": [ { "path": "registry/ui/code-block/index.ts", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-line.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block-copy-button.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/inline-code.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/code-block.css", "type": "registry:style", "target": "~/styles/code-block.css" } ] }, { "name": "diff-view", "type": "registry:ui", "title": "Diff View", "description": "Diff viewer with unified and side-by-side modes. Accepts unified diff strings or before/after text. Keyboard navigation between hunks with j/k.", "dependencies": [], "registryDependencies": ["theme", "diff", "@diffgazer-keys/navigation"], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/diff-view/index.ts", "type": "registry:ui" }, { "path": "registry/ui/diff-view/diff-view.tsx", "type": "registry:ui" }, { "path": "registry/ui/diff-view/diff-view-line.tsx", "type": "registry:ui" }, { "path": "registry/ui/diff-view/diff-view-unified.tsx", "type": "registry:ui" }, { "path": "registry/ui/diff-view/diff-view-split.tsx", "type": "registry:ui" }, { "path": "registry/ui/diff-view/diff-view.css", "type": "registry:style", "target": "~/styles/diff-view.css" } ] }, { "name": "horizontal-stepper", "type": "registry:ui", "title": "Horizontal Stepper", "description": "Horizontal step-by-step progress indicator", "meta": { "client": true }, "registryDependencies": [ "theme", "step-status", "stepper-variants", "horizontal-stepper-variants", "selectable-glyph", "utils" ], "files": [ { "path": "registry/ui/horizontal-stepper/index.ts", "type": "registry:ui" }, { "path": "registry/ui/horizontal-stepper/horizontal-stepper.tsx", "type": "registry:ui" }, { "path": "registry/ui/horizontal-stepper/horizontal-stepper-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/horizontal-stepper/horizontal-stepper-step.tsx", "type": "registry:ui" } ] }, { "name": "command-palette", "type": "registry:ui", "title": "Command Palette", "description": "Terminal-inspired command palette with search, keyboard navigation, grouped items, frame and density variants, and optional auto-coloring via the /highlight subpath", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "controllable-state", "@diffgazer-keys/focus-restore", "@diffgazer-keys/navigation", "dialog-shell", "portal", "search", "selectable-collection", "kbd", "utils", "composed-refs", "dom-id", "@diffgazer-keys/scroll-lock", "overlay-hints" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/command-palette/index.ts", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-input.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-count.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-list.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-group.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-empty.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-footer.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette-highlight.tsx", "type": "registry:ui" }, { "path": "registry/ui/command-palette/highlight.ts", "type": "registry:ui" }, { "path": "registry/ui/command-palette/use-command-palette-state.ts", "type": "registry:ui" }, { "path": "registry/ui/command-palette/use-item-registry.ts", "type": "registry:ui" }, { "path": "registry/ui/command-palette/command-palette.css", "type": "registry:style", "target": "~/styles/command-palette.css" } ] }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "Searchable dropdown for single or multiple selection", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "aria", "controllable-state", "@diffgazer-keys/navigation", "floating-panel", "form-reset", "icons", "outside-click", "overflow", "search", "typeahead", "typeahead-buffer", "utils", "composed-refs", "dom-id", "overlay-surface", "focus-outline" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/select/index.ts", "type": "registry:ui" }, { "path": "registry/ui/select/select.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/selection.ts", "type": "registry:ui" }, { "path": "registry/ui/select/select-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/visible-options.ts", "type": "registry:ui" }, { "path": "registry/ui/select/use-typeahead.ts", "type": "registry:ui" }, { "path": "registry/ui/select/searchable-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-search.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-value.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-tags.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-empty.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/select-form-mirror.tsx", "type": "registry:ui" }, { "path": "registry/ui/select/use-select-state.ts", "type": "registry:ui" }, { "path": "registry/ui/select/use-content-navigation.ts", "type": "registry:ui" } ] }, { "name": "spinner", "type": "registry:ui", "title": "Spinner", "description": "Terminal-inspired TUI spinner with four animation styles including a pixel snake, braille, dots, and pulse", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": true }, "files": [ { "path": "registry/ui/spinner/index.ts", "type": "registry:ui" }, { "path": "registry/ui/spinner/spinner.tsx", "type": "registry:ui" }, { "path": "registry/ui/spinner/use-animation.ts", "type": "registry:ui" }, { "path": "registry/ui/spinner/spinner-snake-grid.tsx", "type": "registry:ui" }, { "path": "registry/ui/spinner/spinner.css", "type": "registry:style", "target": "~/styles/spinner.css" } ] }, { "name": "sidebar", "type": "registry:ui", "title": "Sidebar", "description": "Compound sidebar navigation component", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "icons", "controllable-state", "@diffgazer-keys/navigation", "dialog", "sidebar-variants", "sidebar-intent", "is-mobile", "utils", "composed-refs" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/sidebar/index.ts", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-provider.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-header.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-section.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-section-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-section-title.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-section-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-item-label.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-item-badge.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar-footer.tsx", "type": "registry:ui" }, { "path": "registry/ui/sidebar/sidebar.css", "type": "registry:style", "target": "~/styles/sidebar.css" } ] }, { "name": "pager", "type": "registry:ui", "title": "Pager", "description": "Previous/next page navigation for sequential content", "dependencies": [], "registryDependencies": ["theme", "utils", "focus-outline"], "meta": { "client": true }, "files": [ { "path": "registry/ui/pager/index.ts", "type": "registry:ui" }, { "path": "registry/ui/pager/pager.tsx", "type": "registry:ui" }, { "path": "registry/ui/pager/pager-link.tsx", "type": "registry:ui" } ] }, { "name": "logo", "type": "registry:ui", "title": "Logo", "description": "Static text logo primitive. Precompute ASCII art and pass it as asciiText. Add ui/logo-figlet separately for runtime figlet rendering.", "dependencies": [], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/logo/index.ts", "type": "registry:ui" }, { "path": "registry/ui/logo/logo.tsx", "type": "registry:ui" } ] }, { "name": "logo-figlet", "type": "registry:ui", "title": "Logo Figlet", "description": "Optional figlet helpers for Logo. Requires the figlet npm package.", "dependencies": ["figlet"], "registryDependencies": ["logo"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/logo/figlet.ts", "type": "registry:ui" }, { "path": "registry/ui/logo/figlet-text.ts", "type": "registry:ui" } ] }, { "name": "code-block-highlight", "type": "registry:ui", "title": "Code Block Highlight", "description": "Optional lowlight-powered syntax highlighting helpers for CodeBlock.", "dependencies": ["lowlight"], "registryDependencies": ["code-block"], "meta": { "client": true, "hidden": true }, "files": [ { "path": "registry/ui/code-block/code-block-highlight.tsx", "type": "registry:ui" }, { "path": "registry/ui/code-block/highlight.ts", "type": "registry:ui" } ] }, { "name": "breadcrumbs", "type": "registry:ui", "title": "Breadcrumbs", "description": "Compound breadcrumb navigation with auto-separator and composable parts", "dependencies": [], "registryDependencies": ["theme", "utils", "focus-outline"], "meta": { "client": true }, "files": [ { "path": "registry/ui/breadcrumbs/index.ts", "type": "registry:ui" }, { "path": "registry/ui/breadcrumbs/breadcrumbs.tsx", "type": "registry:ui" }, { "path": "registry/ui/breadcrumbs/breadcrumbs-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/breadcrumbs/breadcrumbs-item.tsx", "type": "registry:ui" }, { "path": "registry/ui/breadcrumbs/breadcrumbs-link.tsx", "type": "registry:ui" }, { "path": "registry/ui/breadcrumbs/breadcrumbs-ellipsis.tsx", "type": "registry:ui" } ] }, { "name": "toc", "type": "registry:ui", "title": "TOC", "description": "Headless-friendly table of contents primitives for section navigation", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils", "marker-rail", "focus-outline"], "meta": { "client": false }, "files": [ { "path": "registry/ui/toc/index.ts", "type": "registry:ui" }, { "path": "registry/ui/toc/toc.tsx", "type": "registry:ui" }, { "path": "registry/ui/toc/toc-list.tsx", "type": "registry:ui" }, { "path": "registry/ui/toc/toc-item.tsx", "type": "registry:ui" } ] }, { "name": "typography", "type": "registry:ui", "title": "Typography", "description": "Terminal-styled typography wrapper for consistent text styling", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/typography/index.ts", "type": "registry:ui" }, { "path": "registry/ui/typography/typography.tsx", "type": "registry:ui" } ] }, { "name": "controllable-state", "type": "registry:hook", "title": "Controllable State", "description": "Controlled/uncontrolled state hook \u2014 manages value, defaultValue, and onChange for any component that supports both modes.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-controllable-state.ts", "type": "registry:hook" } ] }, { "name": "form-reset", "type": "registry:hook", "title": "Form Reset", "description": "Resets uncontrolled custom control state when a parent native form is reset.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-form-reset.ts", "type": "registry:hook" } ] }, { "name": "floating-indicator", "type": "registry:hook", "title": "Floating Indicator", "description": "Measures the rect of an active child inside a container so a single sliding indicator (segmented pill, tab marker) can transform between siblings via ResizeObserver + MutationObserver.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-floating-indicator.ts", "type": "registry:hook" } ] }, { "name": "active-heading", "type": "registry:hook", "title": "Active Heading", "description": "Configurable active heading detection for table of contents with top-line or viewport-center activation, optional bottom lock, and precise scrollTo offsets.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-active-heading.ts", "type": "registry:hook" } ] }, { "name": "overflow-detection", "type": "registry:hook", "title": "Overflow Detection", "description": "Detects whether an element's content overflows its container using ResizeObserver. Supports horizontal, vertical, and both directions.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-overflow-detection.ts", "type": "registry:hook" } ] }, { "name": "overflow-items", "type": "registry:hook", "title": "Overflow Items", "description": "Measures how many items fit in a container and tracks the overflow count. Uses ResizeObserver for automatic recalculation.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-overflow-items.ts", "type": "registry:hook" } ] }, { "name": "outside-click", "type": "registry:hook", "title": "Outside Click", "description": "Detect clicks outside a referenced element", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-outside-click.ts", "type": "registry:hook" }, { "path": "registry/lib/overlay-dismiss-stack.ts", "type": "registry:lib" } ] }, { "name": "presence", "type": "registry:hook", "title": "Presence", "description": "Hook for animating mount/unmount transitions with CSS animations. Keeps element in DOM during exit animation, removes after completion.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-presence.ts", "type": "registry:hook" } ] }, { "name": "theme", "type": "registry:theme", "title": "@diffgazer/ui Theme", "description": "Terminal-inspired theme variables and base styles", "dependencies": [], "registryDependencies": [], "files": [ { "path": "styles/theme-base.css", "type": "registry:style", "target": "~/styles/theme-base.css" }, { "path": "styles/theme.css", "type": "registry:style", "target": "~/styles/theme.css" }, { "path": "styles/styles.css", "type": "registry:style", "target": "~/styles/styles.css" } ] }, { "name": "diff", "type": "registry:lib", "title": "Diff Utilities", "description": "Pure functions for parsing unified diffs, computing diffs from text, and word-level diff highlighting. No React dependency.", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/diff/index.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/parse.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/compute.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/word.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/split.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/lcs.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/pairs.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/resolve.ts", "type": "registry:lib" }, { "path": "registry/lib/diff/identity.ts", "type": "registry:lib" } ] }, { "name": "compose-refs", "type": "registry:lib", "title": "Compose Refs", "description": "Utility to compose multiple React refs into a single ref callback. Use when a component needs an internal ref and must also forward an external ref prop (React 19 ref-as-prop pattern).", "meta": { "client": false }, "files": [ { "path": "registry/lib/compose-refs.ts", "type": "registry:lib" } ] }, { "name": "composed-refs", "type": "registry:hook", "title": "Composed Refs", "description": "Cached companion to composeRefs: returns a stable RefCallback so React does not detach/re-attach the composed refs every commit. Use at component call sites instead of calling composeRefs inline during render.", "registryDependencies": ["compose-refs"], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-composed-refs.ts", "type": "registry:hook" } ] }, { "name": "copy-to-clipboard", "type": "registry:hook", "title": "Copy to Clipboard", "description": "Copy-to-clipboard state machine: writes text to the clipboard and exposes an idle \u2192 copied | failed status that resets after a delay (default 2000ms), with timer cleanup on unmount.", "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-copy-to-clipboard.ts", "type": "registry:hook" } ] }, { "name": "utils", "type": "registry:lib", "title": "Utilities", "description": "Shared cn() class-name merge utility (clsx + tailwind-merge).", "dependencies": ["clsx", "tailwind-merge"], "meta": { "client": false }, "files": [ { "path": "registry/lib/utils.ts", "type": "registry:lib" } ] }, { "name": "aria", "type": "registry:lib", "title": "ARIA Utilities", "description": "Shared ARIA helpers for form controls: resolveAriaInvalid, isAriaInvalid, mergeIds, isHTMLElementForContainer, isHTMLDialogElement.", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/aria.ts", "type": "registry:lib" } ] }, { "name": "top-layer-stack", "type": "registry:lib", "title": "Top Layer Stack", "description": "Per-document top-layer election with a React hook for tracking the active element.", "meta": { "client": true, "hidden": true }, "files": [ { "path": "registry/lib/top-layer-stack.ts", "type": "registry:lib" }, { "path": "registry/hooks/use-top-layer-position.ts", "type": "registry:hook" } ] }, { "name": "accessible-text", "type": "registry:lib", "title": "Accessible Text", "description": "Detects whether React children contain text that can contribute to a control's accessible name.", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/accessible-text.ts", "type": "registry:lib" } ] }, { "name": "typeahead", "type": "registry:lib", "title": "Typeahead", "description": "Cycling-prefix typeahead search shared by listbox/menu/select composites.", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/typeahead.ts", "type": "registry:lib" } ] }, { "name": "selectable-variants", "type": "registry:lib", "title": "Selectable Variants", "description": "Shared CVA variant definitions for selectable items (checkbox, radio, etc.)", "dependencies": ["class-variance-authority"], "registryDependencies": ["marker-rail"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/selectable-variants.ts", "type": "registry:lib" } ] }, { "name": "selectable-glyph", "type": "registry:lib", "title": "Selectable Glyph", "description": "Splits a bracket glyph into dim chrome and a full-contrast mark", "dependencies": [], "registryDependencies": ["utils"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/selectable-glyph.tsx", "type": "registry:lib" } ] }, { "name": "marker-rail", "type": "registry:lib", "title": "Marker Rail", "description": "Shared left-rail mark for the selected row, with an inverted-row variant", "dependencies": [], "registryDependencies": [], "meta": { "client": false }, "files": [ { "path": "registry/lib/marker-rail.ts", "type": "registry:lib" } ] }, { "name": "focus-outline", "type": "registry:lib", "title": "Focus Outline", "description": "Shared keyboard-focus outline mark, with inset and virtual-highlight variants", "dependencies": [], "registryDependencies": [], "meta": { "client": false }, "files": [ { "path": "registry/lib/focus-outline.ts", "type": "registry:lib" } ] }, { "name": "corner-label-variants", "type": "registry:lib", "title": "Corner Label Variants", "description": "Shared CVA variant definitions for floating corner labels (card, panel).", "dependencies": ["class-variance-authority"], "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/corner-label-variants.ts", "type": "registry:lib" } ] }, { "name": "segmented-variants", "type": "registry:lib", "title": "Segmented Variants", "description": "Shared CVA + sliding-indicator class names and bracket markers for segmented controls (Tabs, ToggleGroup).", "dependencies": ["class-variance-authority"], "registryDependencies": ["focus-outline"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/segmented-variants.ts", "type": "registry:lib" }, { "path": "registry/lib/segmented-brackets.tsx", "type": "registry:lib" } ] }, { "name": "selectable-collection", "type": "registry:lib", "title": "Selectable Collection", "description": "Shared selectable item collection and DOM-order utilities for compound selection components.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/focusable"], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/lib/selectable-collection.ts", "type": "registry:lib" }, { "path": "registry/lib/selectable-collection-observer.ts", "type": "registry:lib" }, { "path": "registry/lib/selectable-group.ts", "type": "registry:lib" } ] }, { "name": "fieldset-disabled", "type": "registry:lib", "title": "Fieldset Disabled", "description": "Tracks native disabled-fieldset inheritance for a control element, including the first-legend exception.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/focusable"], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/lib/fieldset-disabled.ts", "type": "registry:lib" } ] }, { "name": "dom-id", "type": "registry:lib", "title": "DOM ID", "description": "Base36 encoding for stable DOM id parts.", "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/dom-id.ts", "type": "registry:lib" } ] }, { "name": "input-variants", "type": "registry:lib", "title": "Input Variants", "description": "Shared CVA variant definitions for input-family components (input, textarea)", "dependencies": ["class-variance-authority"], "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/input-variants.ts", "type": "registry:lib" } ] }, { "name": "step-status", "type": "registry:lib", "title": "Step Status", "description": "Shared StepStatus type for stepper components (pending, active, completed, error, skipped, disabled).", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/step-status.ts", "type": "registry:lib" } ] }, { "name": "stepper-variants", "type": "registry:lib", "title": "Stepper Variants", "description": "Shared CVA visual contracts, indicator glyph dictionaries, and keyframe CSS for vertical and horizontal stepper variants.", "dependencies": ["class-variance-authority"], "registryDependencies": ["step-status", "focus-outline"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/stepper-variants.ts", "type": "registry:lib" }, { "path": "registry/ui/shared/stepper.css", "type": "registry:style", "target": "~/styles/stepper.css" } ] }, { "name": "horizontal-stepper-variants", "type": "registry:ui", "title": "Horizontal Stepper Variants", "description": "Shared CVA visual contracts and indicator glyph dictionaries for horizontal stepper variants.", "dependencies": ["class-variance-authority"], "registryDependencies": ["step-status"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/horizontal-stepper/horizontal-stepper-variants.ts", "type": "registry:ui" } ] }, { "name": "sidebar-variants", "type": "registry:ui", "title": "Sidebar Variants", "description": "Shared CVA visual contracts for the Sidebar primitive (container + item, five active-marker variants).", "dependencies": ["class-variance-authority"], "registryDependencies": ["marker-rail", "focus-outline"], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/sidebar/sidebar-variants.ts", "type": "registry:ui" } ] }, { "name": "sidebar-intent", "type": "registry:ui", "title": "Sidebar Intent", "description": "Sidebar item intent type and built-in dictionary mapping nav values to intent (info/success/warning/danger/accent/neutral).", "dependencies": [], "registryDependencies": [], "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/ui/sidebar/sidebar-intent.ts", "type": "registry:ui" } ] }, { "name": "is-mobile", "type": "registry:hook", "title": "Is Mobile", "description": "matchMedia-backed hook that returns true when the viewport is narrower than a breakpoint (default 1024px).", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-is-mobile.ts", "type": "registry:hook" } ] }, { "name": "use-navigation", "type": "registry:hook", "title": "useNavigation", "description": "Client re-export of @diffgazer/keys useNavigation for registry consumers.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/navigation"], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/use-navigation.ts", "type": "registry:hook" } ] }, { "name": "use-focusable", "type": "registry:hook", "title": "Focusable Utilities", "description": "Re-export of @diffgazer/keys focusable utilities for registry consumers.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/focusable"], "meta": { "client": false, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/utils/focusable.ts", "type": "registry:hook" } ] }, { "name": "use-focus-restore", "type": "registry:hook", "title": "useFocusRestore", "description": "Client re-export of @diffgazer/keys useFocusRestore for registry consumers.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/focus-restore"], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/use-focus-restore.ts", "type": "registry:hook" } ] }, { "name": "use-focus-trap", "type": "registry:hook", "title": "useFocusTrap", "description": "Client re-export of @diffgazer/keys useFocusTrap for registry consumers.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/focus-trap"], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/use-focus-trap.ts", "type": "registry:hook" } ] }, { "name": "use-scroll-lock", "type": "registry:hook", "title": "useScrollLock", "description": "Client re-export of @diffgazer/keys useScrollLock for registry consumers.", "dependencies": [], "registryDependencies": ["@diffgazer-keys/scroll-lock"], "meta": { "client": true, "hidden": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/use-scroll-lock.ts", "type": "registry:hook" } ] }, { "name": "search", "type": "registry:lib", "title": "Search Utilities", "description": "Case-insensitive search matching utility for filtering items by text query.", "meta": { "client": false, "hidden": true }, "files": [ { "path": "registry/lib/search.ts", "type": "registry:lib" } ] }, { "name": "floating-position", "type": "registry:hook", "title": "Floating Position", "description": "Positioning engine for floating elements with 4-side placement, flip, shift, and collision detection. Zero dependencies.", "dependencies": [], "registryDependencies": [], "meta": { "client": true }, "files": [ { "path": "registry/hooks/use-floating-position.ts", "type": "registry:hook" }, { "path": "registry/lib/floating-position.ts", "type": "registry:lib" }, { "path": "registry/lib/floating-position-constants.ts", "type": "registry:lib" } ] }, { "name": "floating-panel", "type": "registry:ui", "title": "Floating Panel", "description": "Headless floating surface primitive. Composes Portal, presence, and floating-position to render an anchored, animated panel with data-state, data-side, data-align, and data-positioned attributes plus a transform-origin custom property. Used by Popover, Select, and other anchored surfaces.", "dependencies": [], "registryDependencies": [ "theme", "portal", "presence", "floating-position", "utils", "composed-refs" ], "meta": { "client": true }, "files": [ { "path": "registry/ui/floating-panel/index.ts", "type": "registry:ui" }, { "path": "registry/ui/floating-panel/floating-panel.tsx", "type": "registry:ui" } ] }, { "name": "listbox", "type": "registry:hook", "title": "Listbox", "description": "Shared listbox state and keyboard navigation hook. Manages selection, highlight, and container ARIA props for listbox-pattern components.", "dependencies": [], "registryDependencies": [ "controllable-state", "@diffgazer-keys/navigation", "composed-refs", "typeahead", "typeahead-buffer" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/hooks/use-listbox.ts", "type": "registry:hook" }, { "path": "registry/lib/listbox-children.ts", "type": "registry:lib" }, { "path": "registry/lib/listbox-dom.ts", "type": "registry:lib" }, { "path": "registry/lib/listbox-metadata.ts", "type": "registry:lib" } ] }, { "name": "typeahead-buffer", "type": "registry:hook", "title": "Typeahead Buffer", "description": "Small typeahead query buffer for composite widgets that reset typed search after a short idle window.", "dependencies": [], "registryDependencies": [], "meta": { "client": true, "hidden": true }, "files": [ { "path": "registry/hooks/use-typeahead-buffer.ts", "type": "registry:hook" } ] }, { "name": "popover", "type": "registry:ui", "title": "Popover", "description": "Floating content anchored to a trigger element. Supports click-to-open (popover) and hover (tooltip) modes with full 4-side positioning, flip, shift, and collision detection.", "dependencies": [], "registryDependencies": [ "theme", "aria", "controllable-state", "floating-panel", "outside-click", "@diffgazer-keys/focusable", "utils", "composed-refs", "trigger-interop", "overlay-surface" ], "meta": { "client": true, "optionalIntegrations": ["keyboard-navigation"] }, "files": [ { "path": "registry/ui/popover/index.ts", "type": "registry:ui" }, { "path": "registry/ui/popover/popover.tsx", "type": "registry:ui" }, { "path": "registry/ui/popover/popover-context.tsx", "type": "registry:ui" }, { "path": "registry/ui/popover/popover-trigger.tsx", "type": "registry:ui" }, { "path": "registry/ui/popover/popover-content.tsx", "type": "registry:ui" }, { "path": "registry/ui/popover/use-behavior.ts", "type": "registry:ui" }, { "path": "registry/ui/popover/use-auto-focus.ts", "type": "registry:ui" }, { "path": "registry/ui/popover/use-content-dismissal.ts", "type": "registry:ui" } ] }, { "name": "switch", "type": "registry:ui", "title": "Switch", "description": "Terminal-styled binary toggle switch", "dependencies": ["class-variance-authority"], "registryDependencies": [ "theme", "aria", "controllable-state", "form-reset", "fieldset-disabled", "selectable-variants", "utils", "composed-refs", "focus-outline" ], "meta": { "client": true }, "files": [ { "path": "registry/ui/switch/index.ts", "type": "registry:ui" }, { "path": "registry/ui/switch/switch.tsx", "type": "registry:ui" } ] }, { "name": "progress", "type": "registry:ui", "title": "Progress", "description": "Horizontal progress bar with determinate and indeterminate modes", "dependencies": ["class-variance-authority"], "registryDependencies": ["theme", "utils"], "meta": { "client": false }, "files": [ { "path": "registry/ui/progress/index.ts", "type": "registry:ui" }, { "path": "registry/ui/progress/progress.tsx", "type": "registry:ui" }, { "path": "registry/ui/progress/progress.css", "type": "registry:style", "target": "~/styles/progress.css" } ] }, { "name": "skeleton", "type": "registry:ui", "title": "Skeleton", "description": "Loading placeholder drawn as a strip of character cells with a scan sweep", "dependencies": [], "registryDependencies": ["theme"], "meta": { "client": false }, "files": [ { "path": "registry/ui/skeleton/index.ts", "type": "registry:ui" }, { "path": "registry/ui/skeleton/skeleton.tsx", "type": "registry:ui" }, { "path": "registry/ui/skeleton/skeleton.css", "type": "registry:style", "target": "~/styles/skeleton.css" } ] } ] }