{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "softglass", "homepage": "https://github.com/ArdaDDemir/softglass", "items": [ { "name": "tokens", "type": "registry:style", "title": "Softglass Tokens", "description": "CSS engine + 6 languages (Aurora, Mist, Pearl, Obsidian, Noir, Ember), looks and motion recipes.", "files": [ { "path": "packages/tokens/src/base.css", "type": "registry:style", "target": "styles/softglass/base.css" }, { "path": "packages/tokens/src/themes/aurora.css", "type": "registry:style", "target": "styles/softglass/themes/aurora.css" }, { "path": "packages/tokens/src/themes/obsidian.css", "type": "registry:style", "target": "styles/softglass/themes/obsidian.css" }, { "path": "packages/tokens/src/themes/mist.css", "type": "registry:style", "target": "styles/softglass/themes/mist.css" }, { "path": "packages/tokens/src/themes/pearl.css", "type": "registry:style", "target": "styles/softglass/themes/pearl.css" }, { "path": "packages/tokens/src/themes/noir.css", "type": "registry:style", "target": "styles/softglass/themes/noir.css" }, { "path": "packages/tokens/src/themes/ember.css", "type": "registry:style", "target": "styles/softglass/themes/ember.css" }, { "path": "packages/tokens/src/looks-and-motion.css", "type": "registry:style", "target": "styles/softglass/looks-and-motion.css" }, { "path": "packages/tokens/src/motion-recipes.css", "type": "registry:style", "target": "styles/softglass/motion-recipes.css" }, { "path": "packages/tokens/src/index.css", "type": "registry:style", "target": "styles/softglass/index.css" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Soft pill button — primary solid, ghost glass.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/button.tsx", "type": "registry:ui", "target": "components/softglass/atoms/button.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Solid-surface input with label, hint, and error.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "textarea", "type": "registry:ui", "title": "Textarea", "description": "Multi-line field matching Input language.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/textarea.tsx", "type": "registry:ui", "target": "components/softglass/atoms/textarea.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Soft pill badge with semantic variants.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/badge.tsx", "type": "registry:ui", "target": "components/softglass/atoms/badge.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "Soft avatar with image or initials + group.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/avatar.tsx", "type": "registry:ui", "target": "components/softglass/atoms/avatar.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "switch", "type": "registry:ui", "title": "Switch", "description": "Accessible soft glass switch.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/switch.tsx", "type": "registry:ui", "target": "components/softglass/atoms/switch.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "Soft checkbox with looks + motion.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/checkbox.tsx", "type": "registry:ui", "target": "components/softglass/atoms/checkbox.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "radio", "type": "registry:ui", "title": "Radio", "description": "Radio + RadioGroup with looks.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/radio.tsx", "type": "registry:ui", "target": "components/softglass/atoms/radio.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "Custom glass listbox (not native OS menu).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/select.tsx", "type": "registry:ui", "target": "components/softglass/atoms/select.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "combobox", "type": "registry:ui", "title": "Combobox", "description": "Searchable single-select (type to filter).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/combobox.tsx", "type": "registry:ui", "target": "components/softglass/atoms/combobox.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "multi-select", "type": "registry:ui", "title": "Multi Select", "description": "Multi value select with chips; menu stays open while picking.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/multi-select.tsx", "type": "registry:ui", "target": "components/softglass/atoms/multi-select.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "calendar", "type": "registry:ui", "title": "Calendar", "description": "Inline day/month/year grid — single or range ISO dates.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/calendar.tsx", "type": "registry:ui", "target": "components/softglass/atoms/calendar.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "date-picker", "type": "registry:ui", "title": "Date Picker", "description": "Single or range ISO dates — portal panel over Calendar.", "registryDependencies": [ "tokens", "calendar" ], "files": [ { "path": "packages/ui/src/atoms/date-picker.tsx", "type": "registry:ui", "target": "components/softglass/atoms/date-picker.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "time-picker", "type": "registry:ui", "title": "Time Picker", "description": "HH:mm trigger + panel with TimeInput and presets.", "registryDependencies": [ "tokens", "time-input" ], "files": [ { "path": "packages/ui/src/atoms/time-picker.tsx", "type": "registry:ui", "target": "components/softglass/atoms/time-picker.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "Frost tooltip on hover/focus.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/tooltip.tsx", "type": "registry:ui", "target": "components/softglass/atoms/tooltip.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "alert", "type": "registry:ui", "title": "Alert", "description": "Inline callout — info / success / warning / danger.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/alert.tsx", "type": "registry:ui", "target": "components/softglass/atoms/alert.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "label", "type": "registry:ui", "title": "Label", "description": "Form label with required mark.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/label.tsx", "type": "registry:ui", "target": "components/softglass/atoms/label.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "form-field", "type": "registry:ui", "title": "FormField", "description": "Label + control + hint/error layout.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/form-field.tsx", "type": "registry:ui", "target": "components/softglass/atoms/form-field.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "spinner", "type": "registry:ui", "title": "Spinner", "description": "Loading spinner.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/spinner.tsx", "type": "registry:ui", "target": "components/softglass/atoms/spinner.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "skeleton", "type": "registry:ui", "title": "Skeleton", "description": "Loading placeholder block.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/skeleton.tsx", "type": "registry:ui", "target": "components/softglass/atoms/skeleton.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "separator", "type": "registry:ui", "title": "Separator", "description": "Horizontal or vertical rule.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/separator.tsx", "type": "registry:ui", "target": "components/softglass/atoms/separator.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "progress", "type": "registry:ui", "title": "Progress", "description": "Linear progress — determinate value or indeterminate.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/progress.tsx", "type": "registry:ui", "target": "components/softglass/atoms/progress.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "status-dot", "type": "registry:ui", "title": "Status Dot", "description": "Presence indicator — online / busy / offline / away + custom color.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/status-dot.tsx", "type": "registry:ui", "target": "components/softglass/atoms/status-dot.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "slider", "type": "registry:ui", "title": "Slider", "description": "Single-value range with label / hint / error.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/slider.tsx", "type": "registry:ui", "target": "components/softglass/atoms/slider.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "number-input", "type": "registry:ui", "title": "Number Input", "description": "Numeric field with steppers + field meta.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/number-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/number-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "file-field", "type": "registry:ui", "title": "File Field", "description": "Solid file picker with basic name list (no upload).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/file-field.tsx", "type": "registry:ui", "target": "components/softglass/atoms/file-field.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "visually-hidden", "type": "registry:ui", "title": "Visually Hidden", "description": "A11y helper — hide visually, keep for screen readers.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/visually-hidden.tsx", "type": "registry:ui", "target": "components/softglass/atoms/visually-hidden.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "close-button", "type": "registry:ui", "title": "Close Button", "description": "Shared dismiss control for chips and chrome.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/close-button.tsx", "type": "registry:ui", "target": "components/softglass/atoms/close-button.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "link", "type": "registry:ui", "title": "Link", "description": "Text link — href + optional external.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/link.tsx", "type": "registry:ui", "target": "components/softglass/atoms/link.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "chip", "type": "registry:ui", "title": "Chip", "description": "Selectable / removable pill (uses CloseButton).", "registryDependencies": [ "tokens", "close-button" ], "files": [ { "path": "packages/ui/src/atoms/chip.tsx", "type": "registry:ui", "target": "components/softglass/atoms/chip.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "password-input", "type": "registry:ui", "title": "Password Input", "description": "Password field with show / hide toggle.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/password-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/password-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "search-input", "type": "registry:ui", "title": "Search Input", "description": "Free-text search with clear (not Combobox).", "registryDependencies": [ "tokens", "close-button" ], "files": [ { "path": "packages/ui/src/atoms/search-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/search-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "circular-progress", "type": "registry:ui", "title": "Circular Progress", "description": "Ring progress — determinate or indeterminate.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/circular-progress.tsx", "type": "registry:ui", "target": "components/softglass/atoms/circular-progress.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "segmented-control", "type": "registry:ui", "title": "Segmented Control", "description": "Single-select segmented buttons (radiogroup).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/segmented-control.tsx", "type": "registry:ui", "target": "components/softglass/atoms/segmented-control.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "kbd", "type": "registry:ui", "title": "Kbd", "description": "Keyboard key glyph.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/kbd.tsx", "type": "registry:ui", "target": "components/softglass/atoms/kbd.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "code", "type": "registry:ui", "title": "Code", "description": "Inline or block monospace code.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/code.tsx", "type": "registry:ui", "target": "components/softglass/atoms/code.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "skip-link", "type": "registry:ui", "title": "Skip Link", "description": "Skip to content — visible on focus.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/skip-link.tsx", "type": "registry:ui", "target": "components/softglass/atoms/skip-link.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "pin-input", "type": "registry:ui", "title": "Pin Input", "description": "OTP / PIN cells with paste + keyboard.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/pin-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/pin-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "nav-link", "type": "registry:ui", "title": "Nav Link", "description": "Navigation link with active state.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/nav-link.tsx", "type": "registry:ui", "target": "components/softglass/atoms/nav-link.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "list-item", "type": "registry:ui", "title": "List Item", "description": "Leading / title / trailing row.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/list-item.tsx", "type": "registry:ui", "target": "components/softglass/atoms/list-item.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "copy-button", "type": "registry:ui", "title": "Copy Button", "description": "Copy to clipboard with brief feedback.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/copy-button.tsx", "type": "registry:ui", "target": "components/softglass/atoms/copy-button.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "character-count", "type": "registry:ui", "title": "Character Count", "description": "Field helper value or value/max.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/character-count.tsx", "type": "registry:ui", "target": "components/softglass/atoms/character-count.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "fieldset", "type": "registry:ui", "title": "Fieldset", "description": "Group related controls with legend.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/fieldset.tsx", "type": "registry:ui", "target": "components/softglass/atoms/fieldset.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "icon", "type": "registry:ui", "title": "Icon", "description": "Icon wrapper only — no icon pack.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/icon.tsx", "type": "registry:ui", "target": "components/softglass/atoms/icon.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "image", "type": "registry:ui", "title": "Image", "description": "Framed image with fallback.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/image.tsx", "type": "registry:ui", "target": "components/softglass/atoms/image.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "meter", "type": "registry:ui", "title": "Meter", "description": "Read-only scalar bar.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/meter.tsx", "type": "registry:ui", "target": "components/softglass/atoms/meter.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "time-input", "type": "registry:ui", "title": "Time Input", "description": "HH:mm native time skin (no TZ).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/time-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/time-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "client-only", "type": "registry:ui", "title": "Client Only", "description": "Render children after client mount.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/client-only.tsx", "type": "registry:ui", "target": "components/softglass/atoms/client-only.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "scroll-area", "type": "registry:ui", "title": "Scroll Area", "description": "Light overflow region.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/scroll-area.tsx", "type": "registry:ui", "target": "components/softglass/atoms/scroll-area.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "rating", "type": "registry:ui", "title": "Rating", "description": "Star rating control.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/rating.tsx", "type": "registry:ui", "target": "components/softglass/atoms/rating.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "aspect-ratio", "type": "registry:ui", "title": "Aspect Ratio", "description": "Lock child to aspect box.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/aspect-ratio.tsx", "type": "registry:ui", "target": "components/softglass/atoms/aspect-ratio.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "range-slider", "type": "registry:ui", "title": "Range Slider", "description": "Dual-thumb range control.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/range-slider.tsx", "type": "registry:ui", "target": "components/softglass/atoms/range-slider.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "toggle-group", "type": "registry:ui", "title": "Toggle Group", "description": "Single or multi select button group.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/toggle-group.tsx", "type": "registry:ui", "target": "components/softglass/atoms/toggle-group.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "count-badge", "type": "registry:ui", "title": "Count Badge", "description": "Compact numeric pill.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/count-badge.tsx", "type": "registry:ui", "target": "components/softglass/atoms/count-badge.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "color-swatch", "type": "registry:ui", "title": "Color Swatch", "description": "Clickable color chip.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/color-swatch.tsx", "type": "registry:ui", "target": "components/softglass/atoms/color-swatch.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "color-input", "type": "registry:ui", "title": "Color Input", "description": "Simple color picker + hex text.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/color-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/color-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "highlight", "type": "registry:ui", "title": "Highlight", "description": "Inline mark for emphasis.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/highlight.tsx", "type": "registry:ui", "target": "components/softglass/atoms/highlight.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "truncate", "type": "registry:ui", "title": "Truncate", "description": "Ellipsis overflow text.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/truncate.tsx", "type": "registry:ui", "target": "components/softglass/atoms/truncate.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "live-region", "type": "registry:ui", "title": "Live Region", "description": "aria-live status container.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/live-region.tsx", "type": "registry:ui", "target": "components/softglass/atoms/live-region.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "native-date-input", "type": "registry:ui", "title": "Native Date Input", "description": "Skinned native date field.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/native-date-input.tsx", "type": "registry:ui", "target": "components/softglass/atoms/native-date-input.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "text", "type": "registry:ui", "title": "Text / Heading", "description": "Lightweight text helpers.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/atoms/text.tsx", "type": "registry:ui", "target": "components/softglass/atoms/text.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Solid | glass | elevated surfaces.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/card.tsx", "type": "registry:ui", "target": "components/softglass/molecules/card.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Pill / underline / segmented tabs + keyboard.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/tabs.tsx", "type": "registry:ui", "target": "components/softglass/molecules/tabs.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "collapsible", "type": "registry:ui", "title": "Collapsible", "description": "Single disclosure panel — open / defaultOpen / onOpenChange.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/collapsible.tsx", "type": "registry:ui", "target": "components/softglass/molecules/collapsible.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "Single or multiple panels via items[] API.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/accordion.tsx", "type": "registry:ui", "target": "components/softglass/molecules/accordion.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "breadcrumb", "type": "registry:ui", "title": "Breadcrumb", "description": "Path trail — reuses Link; last item is current page.", "registryDependencies": [ "tokens", "link" ], "files": [ { "path": "packages/ui/src/molecules/breadcrumb.tsx", "type": "registry:ui", "target": "components/softglass/molecules/breadcrumb.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "pagination", "type": "registry:ui", "title": "Pagination", "description": "Page / pageCount / onPageChange — compact or full list.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/pagination.tsx", "type": "registry:ui", "target": "components/softglass/molecules/pagination.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "empty-state", "type": "registry:ui", "title": "Empty State", "description": "Zero-data surface — icon / title / description / actions.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/empty-state.tsx", "type": "registry:ui", "target": "components/softglass/molecules/empty-state.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "sheet", "type": "registry:ui", "title": "Sheet", "description": "Edge panel (Drawer) — left | right | bottom; portal + presence.", "registryDependencies": [ "tokens", "button" ], "files": [ { "path": "packages/ui/src/molecules/sheet.tsx", "type": "registry:ui", "target": "components/softglass/molecules/sheet.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" } ] }, { "name": "hover-card", "type": "registry:ui", "title": "Hover Card", "description": "Delayed preview panel — open/close delay; Popover family.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/hover-card.tsx", "type": "registry:ui", "target": "components/softglass/molecules/hover-card.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "stepper", "type": "registry:ui", "title": "Stepper", "description": "Wizard step indicator — steps[] + activeStep.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/stepper.tsx", "type": "registry:ui", "target": "components/softglass/molecules/stepper.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "toolbar", "type": "registry:ui", "title": "Toolbar", "description": "Action strip shell — compose Search / Button / Badge.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/toolbar.tsx", "type": "registry:ui", "target": "components/softglass/molecules/toolbar.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "list", "type": "registry:ui", "title": "List", "description": "ListItem host — density / dividers / looks.", "registryDependencies": [ "tokens", "list-item" ], "files": [ { "path": "packages/ui/src/molecules/list.tsx", "type": "registry:ui", "target": "components/softglass/molecules/list.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "data-table", "type": "registry:ui", "title": "Data Table", "description": "Product-list table — sort, selection, sticky header, density, looks.", "registryDependencies": [ "tokens", "checkbox", "empty-state" ], "files": [ { "path": "packages/ui/src/molecules/data-table.tsx", "type": "registry:ui", "target": "components/softglass/molecules/data-table.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "stat", "type": "registry:ui", "title": "Stat", "description": "Metric tile — label / value / hint / trend.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/stat.tsx", "type": "registry:ui", "target": "components/softglass/molecules/stat.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "modal", "type": "registry:ui", "title": "Modal", "description": "Portaled dialog, focus trap, enter/exit motion.", "registryDependencies": [ "tokens", "button" ], "files": [ { "path": "packages/ui/src/molecules/modal.tsx", "type": "registry:ui", "target": "components/softglass/molecules/modal.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" } ] }, { "name": "toast", "type": "registry:ui", "title": "Toast", "description": "ToastProvider + useToast stack.", "registryDependencies": [ "tokens", "button" ], "files": [ { "path": "packages/ui/src/molecules/toast.tsx", "type": "registry:ui", "target": "components/softglass/molecules/toast.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" } ] }, { "name": "popover", "type": "registry:ui", "title": "Popover", "description": "Anchored non-modal frost panel.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/popover.tsx", "type": "registry:ui", "target": "components/softglass/molecules/popover.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "dropdown-menu", "type": "registry:ui", "title": "Dropdown Menu", "description": "Action menu with items API + keyboard.", "registryDependencies": [ "tokens", "button" ], "files": [ { "path": "packages/ui/src/molecules/dropdown-menu.tsx", "type": "registry:ui", "target": "components/softglass/molecules/dropdown-menu.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" }, { "path": "packages/ui/src/lib/floating.ts", "type": "registry:lib", "target": "components/softglass/lib/floating.ts" }, { "path": "packages/ui/src/lib/use-floating-portal.ts", "type": "registry:lib", "target": "components/softglass/lib/use-floating-portal.ts" } ] }, { "name": "context-menu", "type": "registry:ui", "title": "Context Menu", "description": "Right-click / long-press action menu (same items language as DropdownMenu).", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/context-menu.tsx", "type": "registry:ui", "target": "components/softglass/molecules/context-menu.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" } ] }, { "name": "app-shell", "type": "registry:ui", "title": "AppShell", "description": "Header + collapsible sidebar + mobile Sheet nav.", "registryDependencies": [ "tokens", "button", "sheet" ], "files": [ { "path": "packages/ui/src/organisms/app-shell.tsx", "type": "registry:ui", "target": "components/softglass/organisms/app-shell.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "page-header", "type": "registry:ui", "title": "Page Header", "description": "Page chrome: breadcrumbs, title, description, actions.", "registryDependencies": [ "tokens", "breadcrumb" ], "files": [ { "path": "packages/ui/src/molecules/page-header.tsx", "type": "registry:ui", "target": "components/softglass/molecules/page-header.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "settings-section", "type": "registry:ui", "title": "Settings Section", "description": "Settings group: title, description, actions, form body.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/settings-section.tsx", "type": "registry:ui", "target": "components/softglass/molecules/settings-section.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" } ] }, { "name": "command-palette", "type": "registry:ui", "title": "Command Palette", "description": "Minimal command palette: search + list + keyboard select.", "registryDependencies": [ "tokens" ], "files": [ { "path": "packages/ui/src/molecules/command-palette.tsx", "type": "registry:ui", "target": "components/softglass/molecules/command-palette.tsx" }, { "path": "packages/ui/src/lib/cn.ts", "type": "registry:lib", "target": "components/softglass/lib/cn.ts" }, { "path": "packages/ui/src/lib/looks.ts", "type": "registry:lib", "target": "components/softglass/lib/looks.ts" }, { "path": "packages/ui/src/lib/motion.ts", "type": "registry:lib", "target": "components/softglass/lib/motion.ts" }, { "path": "packages/ui/src/lib/presence.ts", "type": "registry:lib", "target": "components/softglass/lib/presence.ts" } ] } ] }