{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "acme", "homepage": "https://acme.com", "items": [ { "name": "colors", "type": "registry:lib", "title": "Colors", "description": "Masai LMS V11 Tailwind color scales (primary/gray/blue/red/orange/yellow/green/teal/indigo/purple/pink, shades 50-900).", "files": [ { "path": "registry/styles/masai-colors.css", "type": "registry:lib", "target": "src/lib/masai-colors.css" } ] }, { "name": "typography", "type": "registry:lib", "title": "Typography", "description": "Masai LMS V11 typography classes: h1-h6, s1-s3, b1/b2/b3 (md/regular), caption, t1, t2.", "files": [ { "path": "registry/styles/masai-typography.css", "type": "registry:lib", "target": "src/lib/masai-typography.css" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "Badge card component with locked/unlocked states that opens in a modal or bottom drawer.", "dependencies": [ "@radix-ui/react-dialog", "lucide-react" ], "files": [ { "path": "registry/components/badge.tsx", "type": "registry:ui" } ] }, { "name": "masai-breadcrumb", "type": "registry:ui", "title": "Masai Breadcrumb", "description": "Accessible breadcrumb navigation (nav + ordered list): optional href per segment, chevron separators, Masai typography tokens.", "dependencies": ["lucide-react"], "files": [ { "path": "registry/components/masai-breadcrumb.tsx", "type": "registry:ui" } ] }, { "name": "masai-button", "type": "registry:ui", "title": "Masai Button", "description": "Reusable CTA button with primary/secondary/tertiary/link types, icon support, and sm/md/lg sizes.", "dependencies": ["class-variance-authority"], "files": [ { "path": "registry/components/masai-button.tsx", "type": "registry:ui" } ] }, { "name": "masai-radio-button", "type": "registry:ui", "title": "Masai Radio Button", "description": "Standalone radio button with default and default-with-label variants in regular/large sizes.", "dependencies": ["@radix-ui/react-radio-group"], "files": [ { "path": "registry/components/masai-radio-button.tsx", "type": "registry:ui" } ] }, { "name": "masai-radio-group", "type": "registry:ui", "title": "Masai Radio Group", "description": "Composed radio group built with Radix; includes standalone Masai radio button component on install.", "dependencies": ["@radix-ui/react-radio-group"], "files": [ { "path": "registry/components/masai-radio-button.tsx", "type": "registry:ui" }, { "path": "registry/components/masai-radio-group.tsx", "type": "registry:ui" } ] }, { "name": "masai-checkbox", "type": "registry:ui", "title": "Masai Checkbox", "description": "Standalone checkbox with default and default-with-label variants in regular/large sizes.", "dependencies": ["@radix-ui/react-checkbox", "lucide-react"], "files": [ { "path": "registry/components/masai-checkbox.tsx", "type": "registry:ui" } ] }, { "name": "masai-checkbox-group", "type": "registry:ui", "title": "Masai Checkbox Group", "description": "Composed checkbox group built with Radix; includes standalone Masai checkbox component on install.", "dependencies": ["@radix-ui/react-checkbox", "lucide-react"], "files": [ { "path": "registry/components/masai-checkbox.tsx", "type": "registry:ui" }, { "path": "registry/components/masai-checkbox-group.tsx", "type": "registry:ui" } ] }, { "name": "masai-dropdown-checkbox-filter", "type": "registry:ui", "title": "Masai Dropdown Checkbox Filter", "description": "Radix dropdown with multi-select checkbox rows; controlled selected values surfaced to parent via onValueChange.", "dependencies": ["@radix-ui/react-dropdown-menu", "lucide-react"], "files": [ { "path": "registry/components/masai-dropdown-checkbox-filter.tsx", "type": "registry:ui" } ] }, { "name": "masai-chips", "type": "registry:ui", "title": "Masai Chips", "description": "Masai chips component with regular/large sizes and default/left-icon/right-icon/icon-only variants.", "dependencies": ["class-variance-authority"], "files": [ { "path": "registry/components/masai-chips.tsx", "type": "registry:ui" } ] }, { "name": "masai-pagination", "type": "registry:ui", "title": "Masai Pagination", "description": "Pagination control with prev/next chevrons, numbered pages, ellipsis truncation, and regular/large sizes.", "dependencies": ["class-variance-authority", "lucide-react"], "files": [ { "path": "registry/components/masai-pagination.tsx", "type": "registry:ui" } ] }, { "name": "masai-tab", "type": "registry:ui", "title": "Masai Tab", "description": "Single outlined tab item with default/selected states, optional left/right icons, and regular/large sizes.", "dependencies": ["class-variance-authority"], "files": [ { "path": "registry/components/masai-tab.tsx", "type": "registry:ui" } ] }, { "name": "masai-input", "type": "registry:ui", "title": "Masai Input", "description": "Outlined text field with optional left/right icons and size tokens (regular today).", "dependencies": ["class-variance-authority"], "files": [ { "path": "registry/components/masai-input.tsx", "type": "registry:ui" } ] }, { "name": "masai-date-selection", "type": "registry:ui", "title": "Masai Date Selection", "description": "Native date field with optional label, rounded shell, and calendar affordance (single variation; extensible later).", "dependencies": ["lucide-react"], "files": [ { "path": "registry/components/masai-date-selection.tsx", "type": "registry:ui" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "Tooltip with direction (top/bottom/left/right) and optional CTA action.", "dependencies": ["@radix-ui/react-tooltip"], "files": [ { "path": "registry/components/tooltip.tsx", "type": "registry:ui" } ] }, { "name": "toast", "type": "registry:ui", "title": "Toast", "description": "Toast component with success/info/alert/generic variants and optional CTA.", "dependencies": ["@phosphor-icons/react"], "files": [ { "path": "registry/components/toast.tsx", "type": "registry:ui" } ] }, { "name": "club-card", "type": "registry:block", "title": "Club Card", "description": "Club card with CTA that opens a responsive drawer (right on desktop, bottom on mobile).", "dependencies": [ "@radix-ui/react-dialog", "@phosphor-icons/react", "lucide-react", "react-markdown", "remark-gfm", "rehype-raw", "rehype-sanitize" ], "files": [ { "path": "registry/components/club-card/index.ts", "type": "registry:block" }, { "path": "registry/components/club-card/index.tsx", "type": "registry:block" }, { "path": "registry/components/club-card/club-card-preview.tsx", "type": "registry:block" }, { "path": "registry/components/club-card/club-card-drawer.tsx", "type": "registry:block" }, { "path": "registry/components/club-card/rich-content.tsx", "type": "registry:block" }, { "path": "registry/components/club-card/types.ts", "type": "registry:block" }, { "path": "registry/components/shared/card-cta-button.tsx", "type": "registry:block" } ] }, { "name": "event-card", "type": "registry:block", "title": "Event Card", "description": "Event card with CTA that opens a responsive drawer (right on desktop, bottom on mobile).", "dependencies": [ "@radix-ui/react-dialog", "@phosphor-icons/react", "lucide-react", "react-markdown", "remark-gfm", "rehype-raw", "rehype-sanitize" ], "files": [ { "path": "registry/components/event-card/index.ts", "type": "registry:block" }, { "path": "registry/components/event-card/index.tsx", "type": "registry:block" }, { "path": "registry/components/event-card/event-card-preview.tsx", "type": "registry:block" }, { "path": "registry/components/event-card/event-card-drawer.tsx", "type": "registry:block" }, { "path": "registry/components/event-card/rich-content.tsx", "type": "registry:block" }, { "path": "registry/components/event-card/types.ts", "type": "registry:block" }, { "path": "registry/components/shared/card-cta-button.tsx", "type": "registry:block" } ] }, { "name": "documentation-provider", "type": "registry:ui", "title": "Documentation Provider", "description": "Info icon trigger with a right drawer that renders API content as GitHub-flavored markdown (images, tables, fenced code) and safe HTML (e.g. video).", "dependencies": [ "@radix-ui/react-dialog", "lucide-react", "react-markdown", "remark-gfm", "rehype-raw", "rehype-sanitize" ], "files": [ { "path": "registry/components/documentation-provider.tsx", "type": "registry:ui" }, { "path": "registry/components/documentation-provider/markdown.tsx", "type": "registry:ui" }, { "path": "registry/components/documentation-provider/api.ts", "type": "registry:ui" }, { "path": "registry/components/documentation-provider/types.ts", "type": "registry:ui" }, { "path": "registry/components/documentation-provider/use-documentation.ts", "type": "registry:ui" } ] }, { "name": "discussion-post-card", "type": "registry:block", "title": "Discussion Post Card", "description": "Discussion post card with voting, bookmarking, rich-text content, and a responsive replies drawer.", "dependencies": [ "@radix-ui/react-dialog", "lucide-react", "dompurify", "@tiptap/react", "@tiptap/starter-kit" ], "files": [ { "path": "registry/components/discussion-post-card/index.ts", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/discussion-post-card.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/discussion-post-card-preview.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/discussion-post-card-drawer.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/discussion-post-card-composer.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/rich-text-editor.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/rich-text-content.tsx", "type": "registry:block" }, { "path": "registry/components/discussion-post-card/types.ts", "type": "registry:block" } ] }, { "name": "masai-drawer", "type": "registry:ui", "title": "Masai Drawer", "description": "Controlled drawer component with bottom/right/left directions and swipe-close behavior on mobile.", "dependencies": ["vaul", "lucide-react"], "files": [ { "path": "registry/components/masai-drawer.tsx", "type": "registry:ui" } ] }, { "name": "scrolling-banner", "type": "registry:block", "title": "Scrolling Banner", "description": "Auto-scrolling latest updates notice board with heading, content, and CTA per item.", "dependencies": [ "react-markdown", "remark-gfm" ], "files": [ { "path": "registry/components/scrolling-banner/index.ts", "type": "registry:block" }, { "path": "registry/components/scrolling-banner/index.tsx", "type": "registry:block" }, { "path": "registry/components/scrolling-banner/types.ts", "type": "registry:block" } ] }, { "name": "navbar", "type": "registry:block", "title": "Navbar", "description": "Top navigation with logo, primary links, trailing actions, and profile dropdown.", "dependencies": ["@radix-ui/react-dropdown-menu"], "files": [ { "path": "registry/components/navbar/index.ts", "type": "registry:block" }, { "path": "registry/components/navbar/index.tsx", "type": "registry:block" }, { "path": "lib/layout.ts", "type": "registry:lib" }, { "path": "registry/components/navbar/types.ts", "type": "registry:block" }, { "path": "registry/components/navbar/navbar-anchor.tsx", "type": "registry:block" }, { "path": "registry/components/navbar/navbar-logo.tsx", "type": "registry:block" }, { "path": "registry/components/navbar/navbar-nav-items.tsx", "type": "registry:block" }, { "path": "registry/components/navbar/navbar-profile-menu.tsx", "type": "registry:block" }, { "path": "registry/components/navbar/navbar-trailing-actions.tsx", "type": "registry:block" } ] }, { "name": "tab-navbar", "type": "registry:block", "title": "Tab Navbar", "description": "Bottom-style row of icon + label tabs with parent-controlled active state and per-item click handlers.", "files": [ { "path": "registry/components/tab-navbar/index.ts", "type": "registry:block" }, { "path": "registry/components/tab-navbar/index.tsx", "type": "registry:block" }, { "path": "registry/components/tab-navbar/types.ts", "type": "registry:block" } ] }, { "name": "meeting-room", "type": "registry:block", "title": "Meeting Room", "description": "Meeting shell, participant tiles, grid, controls, and IvsMeetingLive (Amazon IVS Real-Time stage UI).", "dependencies": ["lucide-react", "amazon-ivs-web-broadcast"], "files": [ { "path": "registry/components/meeting-room/index.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/meeting-room.tsx", "type": "registry:block" }, { "path": "registry/components/meeting-room/types.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/meeting-participant-tile.tsx", "type": "registry:block" }, { "path": "registry/components/meeting-room/meeting-video-grid.tsx", "type": "registry:block" }, { "path": "registry/components/meeting-room/meeting-controls-bar.tsx", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/ivs-meeting-live.tsx", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/minimal-user-stage-strategy.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/minimal-display-stage-strategy.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/meeting-active-speaker.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/media-quality.ts", "type": "registry:block" }, { "path": "registry/components/meeting-room/ivs/meeting-tile-analyze-audio.ts", "type": "registry:block" } ] } ] }