{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "Odyssey UI",
  "homepage": "https://odysseyui.com",
  "items": [
    {
      "name": "index",
      "type": "registry:style",
      "dependencies": [
        "tw-animate-css",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "utils"
      ],
      "cssVars": {},
      "files": []
    },
    {
      "name": "components-ai-chat-container",
      "type": "registry:ui",
      "title": "Chat Container",
      "description": "A composable chat container with auto-scroll, empty state, animated messages, scroll-to-bottom button, and divider support.",
      "dependencies": [
        "motion",
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "scroll-area",
        "button"
      ],
      "files": [
        {
          "path": "registry/components/ai/chat-container/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/chat-container.tsx"
        }
      ]
    },
    {
      "name": "components-ai-message-bubble",
      "type": "registry:ui",
      "title": "Message Bubble",
      "description": "A composable chat message bubble with avatar, content, and timestamp sub-components. Role-aware layout for user and assistant messages.",
      "dependencies": [
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "avatar",
        "@odysseyui/components-ai-chat-container"
      ],
      "files": [
        {
          "path": "registry/components/ai/message-bubble/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/message-bubble.tsx"
        }
      ]
    },
    {
      "name": "components-ai-model-selector",
      "type": "registry:ui",
      "title": "Model Selector",
      "description": "A modal-based AI model picker with provider filtering, search, starred models, and capability badges.",
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "registryDependencies": [
        "dialog",
        "tooltip",
        "@odysseyui/components-texts-text-shimmer"
      ],
      "files": [
        {
          "path": "registry/components/ai/model-selector/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/model-selector.tsx"
        }
      ]
    },
    {
      "name": "components-ai-prompt-input",
      "type": "registry:ui",
      "title": "Prompt Input",
      "description": "Simple Prompt Interface input design.",
      "dependencies": [
        "@hugeicons/core-free-icons",
        "@hugeicons/react"
      ],
      "cssVars": {
        "light": {
          "blue-glossy": "linear-gradient(145deg, hsl(217 90% 54%) 0%, hsl(217 90% 34%) 25%, hsl(217 90% 62%) 50%, hsl(217 90% 38%) 75%, hsl(217 90% 48%) 100%)"
        }
      },
      "css": {
        "@utility bg-blue-glossy": {
          "background": "var(--blue-glossy)"
        }
      },
      "files": [
        {
          "path": "registry/components/ai/prompt-input/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/prompt-input.tsx"
        }
      ]
    },
    {
      "name": "components-ai-search-modal",
      "type": "registry:ui",
      "title": "Search Modal",
      "description": "A full-featured chat search modal with conversation preview, inline rename, delete, keyboard navigation, and time-grouped results.",
      "dependencies": [
        "motion",
        "@hugeicons/react",
        "@hugeicons/core-free-icons",
        "react-markdown",
        "remark-gfm",
        "rehype-highlight"
      ],
      "registryDependencies": [
        "button",
        "@odysseyui/components-primitives-avatar"
      ],
      "files": [
        {
          "path": "registry/components/ai/search-modal/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/search-modal.tsx"
        },
        {
          "path": "registry/components/ai/search-modal/markdown-renderer.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/markdown-renderer.tsx"
        }
      ]
    },
    {
      "name": "components-ai-steps",
      "type": "registry:ui",
      "title": "Steps",
      "description": "A collapsible AI tool-run steps component with animated shimmer trigger and a vertical progress bar.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "collapsible",
        "@odysseyui/components-texts-text-shimmer"
      ],
      "files": [
        {
          "path": "registry/components/ai/steps/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/steps.tsx"
        }
      ]
    },
    {
      "name": "components-ai-thought-chain",
      "type": "registry:ui",
      "title": "Thought Chain",
      "description": "An animated AI reasoning step-by-step thought chain component with collapsible steps and status indicators.",
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "registryDependencies": [
        "collapsible",
        "badge",
        "@odysseyui/components-texts-text-shimmer"
      ],
      "files": [
        {
          "path": "registry/components/ai/thought-chain/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/thought-chain.tsx"
        }
      ]
    },
    {
      "name": "components-ai-token-usage",
      "type": "registry:ui",
      "title": "Token Usage",
      "description": "A token usage card showing input/output counts, costs, proportion bar, and an interactive token breakdown with tooltips.",
      "dependencies": [
        "lucide-react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "card",
        "tooltip",
        "https://odysseyui.com/r/components-ui-badge.json"
      ],
      "files": [
        {
          "path": "registry/components/ai/token-usage/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/token-usage.tsx"
        }
      ]
    },
    {
      "name": "components-animate-avatar-group",
      "type": "registry:ui",
      "title": "Avatar Group",
      "description": "An animated avatar group that displays overlapping user images and smoothly shifts each avatar forward on hover to highlight it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-avatar-group"
      ],
      "files": [
        {
          "path": "registry/components/animate/avatar-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/animate/avatar-group.tsx"
        }
      ]
    },
    {
      "name": "components-animate-card-stroke",
      "type": "registry:ui",
      "title": "Card Stroke",
      "description": "A card component with animated SVG stroke and split-text reveal on hover.",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "path": "registry/components/animate/card-stroke/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/card-stroke.tsx"
        }
      ]
    },
    {
      "name": "components-animate-code",
      "type": "registry:ui",
      "title": "Code",
      "description": "A code component that animates the code as it is written.",
      "dependencies": [
        "next-themes"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-code-block",
        "@odysseyui/components-buttons-copy",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/components/animate/code/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/animate/code.tsx"
        }
      ]
    },
    {
      "name": "components-animate-code-block",
      "type": "registry:ui",
      "title": "Code Block",
      "description": "A styled code block frame component with language badge and optional copy functionality.",
      "dependencies": [
        "shiki"
      ],
      "registryDependencies": [
        "https://odysseyui.com/r/components-buttons-copy.json"
      ],
      "files": [
        {
          "path": "registry/components/animate/code-block/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/code-block.tsx"
        }
      ]
    },
    {
      "name": "components-animate-code-tabs",
      "type": "registry:ui",
      "title": "Code Tabs",
      "description": "A tabs component that displays code for different languages.",
      "dependencies": [
        "shiki"
      ],
      "registryDependencies": [
        "https://odysseyui.com/r/primitives-animate-tabs.json",
        "https://odysseyui.com/r/components-buttons-copy.json"
      ],
      "files": [
        {
          "path": "registry/components/animate/code-tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/components/animate/code-tabs.tsx"
        }
      ]
    },
    {
      "name": "components-animate-cursor",
      "type": "registry:ui",
      "title": "Cursor",
      "description": "An animated cursor component that allows you to customize both the cursor and cursor follow elements with smooth animations.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-cursor"
      ],
      "files": [
        {
          "path": "registry/components/animate/cursor/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/animate/cursor.tsx"
        }
      ]
    },
    {
      "name": "components-animate-footer",
      "type": "registry:ui",
      "title": "Footer ",
      "description": "A minimal footer design inspired by Dia browser.",
      "dependencies": [
        "gsap"
      ],
      "files": [
        {
          "path": "registry/components/animate/footer/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/footer.tsx"
        }
      ]
    },
    {
      "name": "components-animate-github-stars-wheel",
      "type": "registry:ui",
      "title": "GitHub Stars Wheel",
      "description": "A scrolling wheel that displays GitHub stars count.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-particles",
        "@odysseyui/primitives-texts-scrolling-number"
      ],
      "files": [
        {
          "path": "registry/components/animate/github-stars-wheel/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/animate/github-stars-wheel.tsx"
        }
      ]
    },
    {
      "name": "components-animate-tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "A set of layered sections of content—known as tab panels—that are displayed one at a time.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-tabs"
      ],
      "files": [
        {
          "path": "registry/components/animate/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/animate/tabs.tsx"
        }
      ]
    },
    {
      "name": "components-app-shells-app-shell-1",
      "type": "registry:ui",
      "title": "App Shell 1",
      "description": "Collapsible sidebar app shell with search command palette, breadcrumb page header, scrollable nav sections, and avatar-based user dropdown.",
      "dependencies": [
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "sidebar",
        "breadcrumb",
        "dropdown-menu",
        "separator",
        "dialog",
        "avatar",
        "@odysseyui/components-primitives-avatar"
      ],
      "files": [
        {
          "path": "registry/components/app-shells/app-shell-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/app-shell-1.tsx"
        },
        {
          "path": "registry/components/app-shells/app-shell-1/app-shell-1.config.ts",
          "type": "registry:ui",
          "target": "components/odysseyui/app-shell-1.config.ts"
        }
      ]
    },
    {
      "name": "components-app-shells-app-shell-2",
      "type": "registry:component",
      "title": "App Shell 2",
      "description": "A floating sidebar app shell with collapsible icon mode, searchable navigation, keyboard shortcuts modal, and user menu.",
      "dependencies": [
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "sidebar",
        "breadcrumb",
        "dropdown-menu",
        "separator",
        "dialog",
        "avatar",
        "@odysseyui/components-primitives-avatar"
      ],
      "files": [
        {
          "path": "registry/components/app-shells/app-shell-2/index.tsx",
          "target": "components/odysseyui/app-shell-2/index.tsx",
          "type": "registry:component"
        },
        {
          "path": "registry/components/app-shells/app-shell-2/app-shell-2.config.ts",
          "target": "components/odysseyui/app-shell-2/app-shell-2.config.ts",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "components-buttons-button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A button component with a variety of styles and animations.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-buttons-button"
      ],
      "files": [
        {
          "path": "registry/components/buttons/button/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/buttons/button.tsx"
        }
      ]
    },
    {
      "name": "components-buttons-copy",
      "type": "registry:ui",
      "title": "Copy Button",
      "description": "A copy button component with a variety of styles and animations.",
      "dependencies": [
        "motion",
        "lucide-react",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://odysseyui.com/r/primitives-buttons-button.json",
        "https://odysseyui.com/r/hooks-use-controlled-state.json"
      ],
      "files": [
        {
          "path": "registry/components/buttons/copy/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/components/buttons/copy.tsx"
        }
      ]
    },
    {
      "name": "components-buttons-github-stars",
      "type": "registry:ui",
      "title": "GitHub Stars Button",
      "description": "A clickable button that links to a GitHub repository and displays the number of stars.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-buttons-button",
        "@odysseyui/primitives-animate-github-stars"
      ],
      "files": [
        {
          "path": "registry/components/buttons/github-stars/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/buttons/github-stars.tsx"
        }
      ]
    },
    {
      "name": "components-buttons-icon",
      "type": "registry:ui",
      "title": "Icon Button",
      "description": "An icon button component with a variety of styles and animations.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-buttons-button",
        "@odysseyui/primitives-effects-particles"
      ],
      "files": [
        {
          "path": "registry/components/buttons/icon/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/buttons/icon.tsx"
        }
      ]
    },
    {
      "name": "components-buttons-smart-upload",
      "type": "registry:ui",
      "title": "Smart Upload",
      "description": "Turn file uploads into engaging moments with smooth animations and intuitive visual feedback",
      "dependencies": [
        "framer-motion",
        "@hugeicons/core-free-icons",
        "@hugeicons/react"
      ],
      "cssVars": {
        "light": {
          "green-metallic": "linear-gradient(145deg, hsl(145 70% 38%) 0%, hsl(145 70% 24%) 25%, hsl(145 70% 46%) 50%, hsl(145 70% 28%) 75%, hsl(145 70% 36%) 100%)"
        }
      },
      "css": {
        "@utility bg-green-metallic": {
          "background": "var(--green-metallic)"
        }
      },
      "files": [
        {
          "path": "registry/components/buttons/smart-upload/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/smart-upload.tsx"
        }
      ]
    },
    {
      "name": "components-buttons-theme-toggler",
      "type": "registry:ui",
      "title": "Theme Toggler Button",
      "description": "A button that toggles the theme gradually.",
      "dependencies": [
        "next-themes",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-theme-toggler",
        "@odysseyui/components-buttons-icon"
      ],
      "files": [
        {
          "path": "registry/components/buttons/theme-toggler/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/buttons/theme-toggler.tsx"
        }
      ]
    },
    {
      "name": "components-community-notification-list",
      "type": "registry:ui",
      "title": "Notification List",
      "description": "A fun notification list with animated stacking and cards that expand as you interact.",
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/components/community/notification-list/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/community/notification-list.tsx"
        }
      ]
    },
    {
      "name": "components-community-playful-todolist",
      "type": "registry:ui",
      "title": "Playful Todolist",
      "description": "A playful todolist component with animated wavy strikethroughs for each completed task.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-radix-checkbox"
      ],
      "files": [
        {
          "path": "registry/components/community/playful-todolist/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/community/playful-todolist.tsx"
        }
      ]
    },
    {
      "name": "components-faqs-faq-1",
      "type": "registry:ui",
      "title": "FAQ 1",
      "description": "Accordion-based FAQ section with a serif heading and divider separators.",
      "registryDependencies": [
        "accordion"
      ],
      "files": [
        {
          "path": "registry/components/faqs/faq-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/faq-1.tsx"
        }
      ]
    },
    {
      "name": "components-logoclouds-logocloud-1",
      "type": "registry:ui",
      "title": "Logo Cloud 1",
      "description": "Animated logo cloud with staggered fade-in and group cycling.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/logoclouds/logocloud-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/logocloud.tsx"
        }
      ]
    },
    {
      "name": "components-logoclouds-logocloud-2",
      "type": "registry:ui",
      "title": "Logo Cloud 2",
      "description": "Animated logo cloud that cycles groups of 3 logos with spring blur transitions.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/logoclouds/logocloud-2/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/logocloud-2.tsx"
        }
      ]
    },
    {
      "name": "components-logoclouds-logocloud-3",
      "type": "registry:ui",
      "title": "Logo Cloud 3",
      "description": "Infinite scrolling logo marquee with progressive blur edges and motion-powered animation.",
      "dependencies": [
        "motion",
        "react-use-measure"
      ],
      "files": [
        {
          "path": "registry/components/logoclouds/logocloud-3/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/logocloud-3.tsx"
        }
      ]
    },
    {
      "name": "components-logoclouds-logocloud-4",
      "type": "registry:ui",
      "title": "Logo Cloud 4",
      "description": "CSS-animated logo carousel that cycles groups with blur and slide transitions.",
      "files": [
        {
          "path": "registry/components/logoclouds/logocloud-4/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/logocloud-4.tsx"
        }
      ]
    },
    {
      "name": "components-logoclouds-logocloud-5",
      "type": "registry:ui",
      "title": "Logo Cloud 5",
      "description": "CSS marquee logo cloud with configurable direction, speed, gap, and fade edges.",
      "files": [
        {
          "path": "registry/components/logoclouds/logocloud-5/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/logocloud-5.tsx"
        }
      ]
    },
    {
      "name": "components-music-album-cards",
      "type": "registry:component",
      "title": "Album Cards",
      "description": "A stacked album card row where clicking a card ejects a spinning vinyl disc, with hover lift and neighbor dimming effects. Requires a /api/spotify route.",
      "dependencies": [
        "spotify-url-info"
      ],
      "css": {
        "@keyframes spin": {
          "from": {
            "transform": "rotate(0deg)"
          },
          "to": {
            "transform": "rotate(360deg)"
          }
        }
      },
      "files": [
        {
          "path": "registry/components/music/album-cards/index.tsx",
          "target": "components/odysseyui/album-cards.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "components-music-spotify-card",
      "type": "registry:component",
      "title": "Spotify Card",
      "description": "A horizontal Spotify music card with blurred album art background, vinyl record animation, seek bar, and playback controls. Requires a /api/spotify route.",
      "dependencies": [
        "spotify-url-info"
      ],
      "css": {
        ".spotify-seek": {
          "-webkit-appearance": "none",
          "appearance": "none",
          "height": "4px",
          "border-radius": "4px",
          "outline": "none",
          "cursor": "pointer",
          "transition": "opacity 0.15s",
          "&:disabled": {
            "cursor": "default",
            "opacity": "0.4"
          },
          "&::-webkit-slider-thumb": {
            "-webkit-appearance": "none",
            "appearance": "none",
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)",
            "margin-top": "-4px",
            "transition": "transform 0.15s"
          },
          "&:not(:disabled):hover::-webkit-slider-thumb": {
            "transform": "scale(1.25)"
          },
          "&::-moz-range-thumb": {
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "border": "none",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)"
          },
          "&::-moz-range-track": {
            "height": "2px",
            "border-radius": "1px"
          }
        },
        "@keyframes spin": {
          "from": {
            "transform": "rotate(0deg)"
          },
          "to": {
            "transform": "rotate(360deg)"
          }
        }
      },
      "files": [
        {
          "path": "registry/components/music/spotify-card/index.tsx",
          "target": "components/odysseyui/spotify-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "components-music-vertical-spotify-card-1",
      "type": "registry:component",
      "title": "Vertical Spotify Card 1",
      "description": "A vertical Spotify music card with a progressive blur album art background, seek bar, and transport controls. Requires a /api/spotify route.",
      "dependencies": [
        "spotify-url-info"
      ],
      "css": {
        ".spotify-seek": {
          "-webkit-appearance": "none",
          "appearance": "none",
          "height": "4px",
          "border-radius": "4px",
          "outline": "none",
          "cursor": "pointer",
          "transition": "opacity 0.15s",
          "&:disabled": {
            "cursor": "default",
            "opacity": "0.4"
          },
          "&::-webkit-slider-thumb": {
            "-webkit-appearance": "none",
            "appearance": "none",
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)",
            "margin-top": "-4px",
            "transition": "transform 0.15s"
          },
          "&:not(:disabled):hover::-webkit-slider-thumb": {
            "transform": "scale(1.25)"
          },
          "&::-moz-range-thumb": {
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "border": "none",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)"
          },
          "&::-moz-range-track": {
            "height": "2px",
            "border-radius": "1px"
          }
        },
        "@keyframes spin": {
          "from": {
            "transform": "rotate(0deg)"
          },
          "to": {
            "transform": "rotate(360deg)"
          }
        }
      },
      "files": [
        {
          "path": "registry/components/music/vertical-spotify-card-1/index.tsx",
          "target": "components/odysseyui/vertical-spotify-card-1.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "components-music-vertical-spotify-card-2",
      "type": "registry:component",
      "title": "Vertical Spotify Card 2",
      "description": "A vertical Spotify music card with a color-extracted blurred gradient background, album art, seek bar, and transport controls. Requires a /api/spotify route.",
      "dependencies": [
        "spotify-url-info"
      ],
      "css": {
        ".spotify-seek": {
          "-webkit-appearance": "none",
          "appearance": "none",
          "height": "4px",
          "border-radius": "4px",
          "outline": "none",
          "cursor": "pointer",
          "transition": "opacity 0.15s",
          "&:disabled": {
            "cursor": "default",
            "opacity": "0.4"
          },
          "&::-webkit-slider-thumb": {
            "-webkit-appearance": "none",
            "appearance": "none",
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)",
            "margin-top": "-4px",
            "transition": "transform 0.15s"
          },
          "&:not(:disabled):hover::-webkit-slider-thumb": {
            "transform": "scale(1.25)"
          },
          "&::-moz-range-thumb": {
            "width": "10px",
            "height": "10px",
            "border-radius": "50%",
            "background": "rgba(255, 255, 255, 0.9)",
            "border": "none",
            "box-shadow": "0 0 6px rgba(255, 255, 255, 0.55)"
          },
          "&::-moz-range-track": {
            "height": "2px",
            "border-radius": "1px"
          }
        },
        "@keyframes spin": {
          "from": {
            "transform": "rotate(0deg)"
          },
          "to": {
            "transform": "rotate(360deg)"
          }
        }
      },
      "files": [
        {
          "path": "registry/components/music/vertical-spotify-card-2/index.tsx",
          "target": "components/odysseyui/vertical-spotify-card-2.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "components-preloaders-greetings",
      "type": "registry:ui",
      "title": "Greeting Preloader",
      "description": "A greeting preloader that displays rapid greetings in different languages.",
      "dependencies": [
        "gsap",
        "framer-motion"
      ],
      "files": [
        {
          "path": "registry/components/preloaders/greetings/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/greetings-preloader.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-1",
      "type": "registry:ui",
      "title": "Pricing 1",
      "description": "Modern pricing grid with animated sliding numbers, billing toggle, and featured plan corner decorations.",
      "dependencies": [
        "motion",
        "react-use-measure"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-1.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-2",
      "type": "registry:ui",
      "title": "Pricing 2",
      "description": "Three-column pricing with gradient featured card and illustrated cursor decoration.",
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-2/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-2.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-3",
      "type": "registry:ui",
      "title": "Pricing 3",
      "description": "Asymmetric three-column pricing with elevated featured plan, amber badge, and security footer note.",
      "registryDependencies": [
        "button",
        "badge"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-3/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-3.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-4",
      "type": "registry:ui",
      "title": "Pricing 4",
      "description": "Pastel pricing cards with animated billing toggle, tag badges, and info rows.",
      "dependencies": [
        "motion",
        "react-use-measure"
      ],
      "registryDependencies": [
        "button",
        "badge"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-4/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-4.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-5",
      "type": "registry:ui",
      "title": "Pricing 5",
      "description": "Horizontal list-style pricing layout with accent icon blobs, strikethrough original prices, and optional recommended badge.",
      "registryDependencies": [
        "button",
        "badge"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-5/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-5.tsx"
        }
      ]
    },
    {
      "name": "components-pricings-pricing-6",
      "type": "registry:ui",
      "title": "Pricing 6",
      "description": "Tabbed individuals/teams pricing grid with coloured card backdrops, Avatar orbs, grain texture overlays, and feature checklists.",
      "dependencies": [
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "button",
        "@odysseyui/components-primitives-avatar"
      ],
      "files": [
        {
          "path": "registry/components/pricings/pricing-6/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/pricing-6.tsx"
        }
      ]
    },
    {
      "name": "components-primitives-avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "An animated AI orb avatar with blinking eyes, 12 color presets, 3 sizes, and 3 shapes (circle, square, squircle).",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/primitives/avatar/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/avatar.tsx"
        }
      ]
    },
    {
      "name": "components-primitives-tree-filter",
      "type": "registry:ui",
      "title": "Tree Filter",
      "description": "Animated tree-structured filter with nested checkboxes, search, and group cycling.",
      "dependencies": [
        "motion",
        "@hugeicons/react",
        "@hugeicons/core-free-icons"
      ],
      "registryDependencies": [
        "collapsible"
      ],
      "files": [
        {
          "path": "registry/components/primitives/tree-filter/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/tree-filter.tsx"
        }
      ]
    },
    {
      "name": "components-radix-checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-radix-checkbox"
      ],
      "files": [
        {
          "path": "registry/components/radix/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/radix/checkbox.tsx"
        }
      ]
    },
    {
      "name": "components-radix-dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-radix-dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/components/radix/dropdown-menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/radix/dropdown-menu.tsx"
        }
      ]
    },
    {
      "name": "components-radix-hover-card",
      "type": "registry:ui",
      "title": "Hover Card",
      "description": "For sighted users to preview content available behind a link.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-hover-card"
      ],
      "files": [
        {
          "path": "registry/components/radix/hover-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/components/radix/hover-card.tsx"
        }
      ]
    },
    {
      "name": "components-texts-text-highlighter",
      "type": "registry:ui",
      "title": "Text Highlighter",
      "description": "Rough-notation powered text annotations — highlight, underline, box, circle, and more.",
      "dependencies": [
        "motion",
        "rough-notation"
      ],
      "files": [
        {
          "path": "registry/components/texts/text-highlighter/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/text-highlighter.tsx"
        }
      ]
    },
    {
      "name": "components-texts-text-reveal",
      "type": "registry:ui",
      "title": "Text Reveal",
      "description": "Scramble-reveal animation that decodes characters progressively into the final text.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/texts/text-reveal/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/text-reveal.tsx"
        }
      ]
    },
    {
      "name": "components-texts-text-shimmer",
      "type": "registry:ui",
      "title": "Text Shimmer",
      "description": "Sleek text shimmer effect.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/texts/text-shimmer/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/text-shimmer.tsx"
        }
      ]
    },
    {
      "name": "components-texts-text-shimmer-wave",
      "type": "registry:ui",
      "title": "Text Shimmer Wave",
      "description": "3D wave shimmer effect that ripples through each character sequentially.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/texts/text-shimmer-wave/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/text-shimmer-wave.tsx"
        }
      ]
    },
    {
      "name": "components-texts-typewriter",
      "type": "registry:ui",
      "title": "Typewriter",
      "description": "Animated typewriter effect with multi-sequence support, natural variance, delete animation, and auto-loop.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/texts/typewriter/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/typewriter.tsx"
        }
      ]
    },
    {
      "name": "components-ui-badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A badge component with semantic and color variants built on Base UI.",
      "dependencies": [
        "@base-ui-components/react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "registry/components/ui/badge/index.tsx",
          "type": "registry:ui",
          "target": "components/ui/badge.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-chat-container",
      "type": "registry:ui",
      "title": "Chat Container Demo",
      "description": "Demo of the Chat Container component.",
      "registryDependencies": [
        "odyssey/components-ai-chat-container"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/chat-container/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/chat-container.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-message-bubble",
      "type": "registry:ui",
      "title": "Message Bubble Demo",
      "description": "Demo of the Message Bubble component inside a Chat Container.",
      "registryDependencies": [
        "odyssey/components-ai-message-bubble",
        "odyssey/components-ai-chat-container"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/message-bubble/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/message-bubble.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-model-selector",
      "type": "registry:ui",
      "title": "Model Selector Demo",
      "description": "Demo of the AI model selector modal component.",
      "registryDependencies": [
        "odyssey/components-ai-model-selector"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/model-selector/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/model-selector.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-prompt-input",
      "type": "registry:ui",
      "title": "Prompt Input Demo",
      "description": "Demo of the AI prompt input interface.",
      "registryDependencies": [
        "odyssey/components-ai-prompt-input"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/prompt-input/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/prompt-input.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-search-modal",
      "type": "registry:ui",
      "title": "Search Modal Demo",
      "description": "Demo of the Search Modal component.",
      "registryDependencies": [
        "odyssey/components-ai-search-modal"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/search-modal/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/search-modal.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-steps",
      "type": "registry:ui",
      "title": "Steps Demo",
      "description": "Demo of the AI steps tool-run component.",
      "registryDependencies": [
        "odyssey/components-ai-steps"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/steps/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/steps.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-thought-chain",
      "type": "registry:ui",
      "title": "Thought Chain Demo",
      "description": "Demo of the AI thought chain reasoning component.",
      "registryDependencies": [
        "odyssey/components-ai-thought-chain"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/thought-chain/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/thought-chain.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ai-token-usage",
      "type": "registry:ui",
      "title": "Token Usage Demo",
      "description": "Demo of the Token Usage component.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-ai-token-usage.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/ai/token-usage/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ai/token-usage.tsx"
        }
      ]
    },
    {
      "name": "demo-components-animate-avatar-group",
      "type": "registry:ui",
      "title": "Avatar Group Demo",
      "description": "Demo showing a avatar group.",
      "registryDependencies": [
        "@odysseyui/components-animate-avatar-group"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/avatar-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/avatar-group.tsx"
        }
      ]
    },
    {
      "name": "demo-components-animate-card-stroke",
      "type": "registry:ui",
      "title": "Card Stroke Demo",
      "description": "Demo of the card stroke animation.",
      "registryDependencies": [
        "@odysseyui/components-animate-card-stroke"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/card-stroke/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/card-stroke.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CardStroke": {
            "title": {
              "value": "Card Title"
            },
            "description": {
              "value": "A small two line paragraph passed by prop."
            },
            "accentStrokeColor": {
              "value": "#E0E0E0"
            },
            "baseStrokeColor": {
              "value": "#2B7FFF"
            },
            "textColor": {
              "value": "#F5F5F5"
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-code",
      "type": "registry:ui",
      "title": "Code Demo",
      "description": "Demo showing a code.",
      "registryDependencies": [
        "@odysseyui/components-animate-code"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/code/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/code.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CodeBlock": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "duration": {
              "value": 10000,
              "min": 0,
              "max": 30000,
              "step": 1000
            },
            "writing": {
              "value": true
            },
            "cursor": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-code-block",
      "type": "registry:ui",
      "title": "Code Block Demo",
      "description": "Demo showing a code block frame with a Python snippet.",
      "registryDependencies": [
        "odyssey/components-animate-code-block"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/code-block/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/animate/code-block.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CodeFrame": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "duration": {
              "value": 5000,
              "min": 500,
              "max": 30000,
              "step": 500
            },
            "typeEffect": {
              "value": true
            },
            "theme": {
              "value": "one-dark-pro",
              "options": {
                "One Dark Pro": "one-dark-pro",
                "GitHub Dark": "github-dark",
                "GitHub Light": "github-light",
                "Dracula": "dracula",
                "Nord": "nord",
                "Monokai": "monokai",
                "Tokyo Night": "tokyo-night",
                "Solarized Dark": "solarized-dark"
              }
            },
            "language": {
              "value": "react",
              "options": {
                "React": "react",
                "Python": "python",
                "JavaScript": "javascript",
                "Java": "java"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-code-tabs",
      "type": "registry:ui",
      "title": "Code Tabs Demo",
      "description": "Demo showing a code tabs.",
      "registryDependencies": [
        "@odysseyui/components-animate-code-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/code-tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/code-tabs.tsx"
        }
      ]
    },
    {
      "name": "demo-components-animate-cursor",
      "type": "registry:ui",
      "title": "Cursor Demo",
      "description": "Demo showing a cursor.",
      "registryDependencies": [
        "@odysseyui/components-animate-cursor"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/cursor/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/cursor.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CursorProvider": {
            "global": {
              "value": false
            },
            "enableCursor": {
              "value": true
            },
            "enableCursorFollow": {
              "value": true
            }
          },
          "CursorFollow": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "right": "right",
                "bottom": "bottom",
                "left": "left"
              }
            },
            "sideOffset": {
              "value": 15
            },
            "align": {
              "value": "end",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 5
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-footer",
      "type": "registry:ui",
      "title": "Footer  Demo",
      "description": "Demo of the dia browser inspired footer.",
      "registryDependencies": [
        "odyssey/components-animate-footer"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/footer/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/animate/footer.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Footer": {
            "theme": {
              "value": "dia-browser",
              "options": {
                "Dia Browser": "dia-browser",
                "Ocean": "ocean",
                "Amber": "amber",
                "Emerald": "emerald",
                "Violet": "violet",
                "Rose": "rose"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-github-stars-wheel",
      "type": "registry:ui",
      "title": "Animate GitHub Stars Wheel Demo",
      "description": "Demo showing an animated github stars wheel.",
      "registryDependencies": [
        "@odysseyui/components-animate-github-stars-wheel"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/github-stars-wheel/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/github-stars-wheel.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "GitHubStarsWheel": {
            "direction": {
              "value": "btt",
              "options": {
                "btt": "btt",
                "ttb": "ttb",
                "ltr": "ltr",
                "rtl": "rtl"
              }
            },
            "delay": {
              "value": 1000,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "step": {
              "value": 10,
              "min": 10,
              "max": 1000,
              "step": 10
            }
          }
        }
      }
    },
    {
      "name": "demo-components-animate-tabs",
      "type": "registry:ui",
      "title": "Animate Tabs Demo",
      "description": "Demo showing an animated tabs.",
      "registryDependencies": [
        "@odysseyui/components-animate-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/components/animate/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/animate/tabs.tsx"
        }
      ]
    },
    {
      "name": "demo-components-app-shells-app-shell-1",
      "type": "registry:ui",
      "title": "App Shell 1 Demo",
      "description": "Demo of the collapsible sidebar app shell with breadcrumb header and dashboard placeholder.",
      "registryDependencies": [
        "odyssey/components-app-shells-app-shell-1"
      ],
      "files": [
        {
          "path": "registry/demo/components/app-shells/app-shell-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/app-shells/app-shell-1.tsx"
        }
      ]
    },
    {
      "name": "demo-components-app-shells-app-shell-2",
      "type": "registry:component",
      "title": "App Shell 2 Demo",
      "description": "Demo for App Shell 2",
      "registryDependencies": [
        "odyssey/components-app-shells-app-shell-2"
      ],
      "files": [
        {
          "path": "registry/demo/components/app-shells/app-shell-2/index.tsx",
          "target": "components/odysseyui/demo/app-shell-2-demo.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "demo-components-buttons-button",
      "type": "registry:ui",
      "title": "Button Demo",
      "description": "Demo showing a button.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/components-buttons-button"
      ],
      "files": [
        {
          "path": "registry/demo/components/buttons/button/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/buttons/button.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Button": {
            "variant": {
              "value": "default",
              "options": {
                "default": "default",
                "accent": "accent",
                "destructive": "destructive",
                "outline": "outline",
                "secondary": "secondary",
                "ghost": "ghost",
                "link": "link"
              }
            },
            "size": {
              "value": "default",
              "options": {
                "default": "default",
                "sm": "sm",
                "lg": "lg",
                "icon": "icon",
                "icon-sm": "icon-sm",
                "icon-lg": "icon-lg"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-buttons-copy",
      "type": "registry:ui",
      "title": "Copy Button Demo",
      "description": "Demo showing a copy button.",
      "registryDependencies": [
        "@odysseyui/components-buttons-copy"
      ],
      "files": [
        {
          "path": "registry/demo/components/buttons/copy/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/buttons/copy.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CopyButton": {
            "variant": {
              "value": "default",
              "options": {
                "default": "default",
                "accent": "accent",
                "destructive": "destructive",
                "outline": "outline",
                "secondary": "secondary",
                "ghost": "ghost",
                "link": "link"
              }
            },
            "size": {
              "value": "default",
              "options": {
                "default": "default",
                "xs": "xs",
                "sm": "sm",
                "lg": "lg"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-buttons-github-stars",
      "type": "registry:ui",
      "title": "GitHub Stars Button Demo",
      "description": "Demo showing a GitHub stars button.",
      "registryDependencies": [
        "@odysseyui/components-buttons-github-stars"
      ],
      "files": [
        {
          "path": "registry/demo/components/buttons/github-stars/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/buttons/github-stars.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "GitHubStarsButton": {
            "variant": {
              "value": "default",
              "options": {
                "default": "default",
                "accent": "accent",
                "outline": "outline",
                "ghost": "ghost"
              }
            },
            "size": {
              "value": "default",
              "options": {
                "default": "default",
                "sm": "sm",
                "lg": "lg"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-buttons-smart-upload",
      "type": "registry:ui",
      "title": "Smart Upload Demo",
      "description": "Demo of the Smart File Uploader.",
      "registryDependencies": [
        "odyssey/components-buttons-smart-upload"
      ],
      "files": [
        {
          "path": "registry/demo/components/buttons/smart-upload/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/buttons/smart-upload.tsx"
        }
      ]
    },
    {
      "name": "demo-components-buttons-theme-toggler",
      "type": "registry:ui",
      "title": "Theme Toggler Button Demo",
      "description": "Demo showing a theme toggler button.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/components-buttons-theme-toggler"
      ],
      "files": [
        {
          "path": "registry/demo/components/buttons/theme-toggler/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/buttons/theme-toggler.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ThemeTogglerButton": {
            "variant": {
              "value": "default",
              "options": {
                "default": "default",
                "accent": "accent",
                "outline": "outline",
                "ghost": "ghost"
              }
            },
            "size": {
              "value": "default",
              "options": {
                "default": "default",
                "sm": "sm",
                "lg": "lg"
              }
            },
            "direction": {
              "value": "ltr",
              "options": {
                "btt": "btt",
                "ttb": "ttb",
                "ltr": "ltr",
                "rtl": "rtl"
              }
            },
            "system": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-components-community-notification-list",
      "type": "registry:ui",
      "title": "Notification List Demo",
      "description": "Demo showing a notification list.",
      "registryDependencies": [
        "@odysseyui/components-community-notification-list"
      ],
      "files": [
        {
          "path": "registry/demo/components/community/notification-list/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/community/notification-list.tsx"
        }
      ]
    },
    {
      "name": "demo-components-community-playful-todolist",
      "type": "registry:ui",
      "title": "Playful Todolist Demo",
      "description": "Demo showing a playful todolist.",
      "registryDependencies": [
        "@odysseyui/components-community-playful-todolist"
      ],
      "files": [
        {
          "path": "registry/demo/components/community/playful-todolist/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/community/playful-todolist.tsx"
        }
      ]
    },
    {
      "name": "demo-components-faqs-faq-1",
      "type": "registry:ui",
      "title": "FAQ 1 Demo",
      "description": "Demo of the accordion FAQ section.",
      "registryDependencies": [
        "odyssey/components-faqs-faq-1"
      ],
      "files": [
        {
          "path": "registry/demo/components/faqs/faq-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/faqs/faq-1.tsx"
        }
      ]
    },
    {
      "name": "demo-components-logoclouds-logocloud-1",
      "type": "registry:ui",
      "title": "Logo Cloud 1 Demo",
      "description": "Demo of the animated logo cloud with group cycling.",
      "registryDependencies": [
        "odyssey/components-logoclouds-logocloud-1"
      ],
      "files": [
        {
          "path": "registry/demo/components/logoclouds/logocloud-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/logoclouds/logocloud-1.tsx"
        }
      ]
    },
    {
      "name": "demo-components-logoclouds-logocloud-2",
      "type": "registry:ui",
      "title": "Logo Cloud 2 Demo",
      "description": "Demo of the logo cloud that cycles groups of 3 with spring blur transitions.",
      "registryDependencies": [
        "odyssey/components-logoclouds-logocloud-2"
      ],
      "files": [
        {
          "path": "registry/demo/components/logoclouds/logocloud-2/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/logoclouds/logocloud-2.tsx"
        }
      ]
    },
    {
      "name": "demo-components-logoclouds-logocloud-3",
      "type": "registry:ui",
      "title": "Logo Cloud 3 Demo",
      "description": "Demo of the infinite scrolling logo marquee with progressive blur edges.",
      "registryDependencies": [
        "odyssey/components-logoclouds-logocloud-3"
      ],
      "files": [
        {
          "path": "registry/demo/components/logoclouds/logocloud-3/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/logoclouds/logocloud-3.tsx"
        }
      ]
    },
    {
      "name": "demo-components-logoclouds-logocloud-4",
      "type": "registry:ui",
      "title": "Logo Cloud 4 Demo",
      "description": "Demo of the CSS-animated logo carousel with blur and slide transitions.",
      "registryDependencies": [
        "odyssey/components-logoclouds-logocloud-4"
      ],
      "files": [
        {
          "path": "registry/demo/components/logoclouds/logocloud-4/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/logoclouds/logocloud-4.tsx"
        }
      ]
    },
    {
      "name": "demo-components-logoclouds-logocloud-5",
      "type": "registry:ui",
      "title": "Logo Cloud 5 Demo",
      "description": "Demo of the CSS marquee logo cloud with direction, speed, gap, and fade controls.",
      "registryDependencies": [
        "odyssey/components-logoclouds-logocloud-5"
      ],
      "files": [
        {
          "path": "registry/demo/components/logoclouds/logocloud-5/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/logoclouds/logocloud-5.tsx"
        }
      ]
    },
    {
      "name": "demo-components-music-album-cards",
      "type": "registry:component",
      "title": "Album Cards Demo",
      "description": "Demo for Album Cards",
      "registryDependencies": [
        "odyssey/components-music-album-cards"
      ],
      "files": [
        {
          "path": "registry/demo/components/music/album-cards/index.tsx",
          "target": "components/odysseyui/demo/album-cards-demo.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "demo-components-music-spotify-card",
      "type": "registry:component",
      "title": "Spotify Card Demo",
      "description": "Demo for Spotify Card",
      "registryDependencies": [
        "odyssey/components-music-spotify-card"
      ],
      "files": [
        {
          "path": "registry/demo/components/music/spotify-card/index.tsx",
          "target": "components/odysseyui/demo/spotify-card-demo.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "demo-components-music-vertical-spotify-card-1",
      "type": "registry:component",
      "title": "Vertical Spotify Card 1 Demo",
      "description": "Demo for Vertical Spotify Card 1",
      "registryDependencies": [
        "odyssey/components-music-vertical-spotify-card-1"
      ],
      "files": [
        {
          "path": "registry/demo/components/music/vertical-spotify-card-1/index.tsx",
          "target": "components/odysseyui/demo/vertical-spotify-card-1-demo.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "demo-components-music-vertical-spotify-card-2",
      "type": "registry:component",
      "title": "Vertical Spotify Card 2 Demo",
      "description": "Demo for Vertical Spotify Card 2",
      "registryDependencies": [
        "odyssey/components-music-vertical-spotify-card-2"
      ],
      "files": [
        {
          "path": "registry/demo/components/music/vertical-spotify-card-2/index.tsx",
          "target": "components/odysseyui/demo/vertical-spotify-card-2-demo.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "demo-components-preloaders-greetings",
      "type": "registry:ui",
      "title": "Greeting Preloader Demo",
      "description": "Demo of a greeting preloader that displays rapid greetings in different languages.",
      "dependencies": [
        "gsap",
        "framer-motion"
      ],
      "files": [
        {
          "path": "registry/demo/components/preloaders/greetings/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/preloaders/greetings-preloader.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-1",
      "type": "registry:ui",
      "title": "Pricing 1 Demo",
      "description": "Demo of the animated sliding number pricing grid.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-1"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-1/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-1.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-2",
      "type": "registry:ui",
      "title": "Pricing 2 Demo",
      "description": "Demo of the gradient featured card pricing section.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-2"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-2/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-2.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-3",
      "type": "registry:ui",
      "title": "Pricing 3 Demo",
      "description": "Demo of the asymmetric three-column pricing layout.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-3"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-3/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-3.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-4",
      "type": "registry:ui",
      "title": "Pricing 4 Demo",
      "description": "Demo of the pastel pricing cards with animated billing toggle.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-4"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-4/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-4.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-5",
      "type": "registry:ui",
      "title": "Pricing 5 Demo",
      "description": "Demo of the horizontal list-style pricing layout.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-5"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-5/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-5.tsx"
        }
      ]
    },
    {
      "name": "demo-components-pricings-pricing-6",
      "type": "registry:ui",
      "title": "Pricing 6 Demo",
      "description": "Demo of the tabbed individuals/teams pricing grid.",
      "registryDependencies": [
        "odyssey/components-pricings-pricing-6"
      ],
      "files": [
        {
          "path": "registry/demo/components/pricings/pricing-6/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/pricings/pricing-6.tsx"
        }
      ]
    },
    {
      "name": "demo-components-primitives-avatar",
      "type": "registry:ui",
      "title": "Avatar Demo",
      "description": "Demo showcasing all colors, sizes, and shapes of the Avatar component.",
      "registryDependencies": [
        "odyssey/components-primitives-avatar"
      ],
      "files": [
        {
          "path": "registry/demo/components/primitives/avatar/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/primitives/avatar.tsx"
        }
      ]
    },
    {
      "name": "demo-components-primitives-tree-filter",
      "type": "registry:ui",
      "title": "Tree Filter Demo",
      "description": "Demo of the animated tree filter with nested checkboxes and search.",
      "registryDependencies": [
        "odyssey/components-primitives-tree-filter"
      ],
      "files": [
        {
          "path": "registry/demo/components/primitives/tree-filter/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/primitives/tree-filter.tsx"
        }
      ]
    },
    {
      "name": "demo-components-radix-checkbox",
      "type": "registry:ui",
      "title": "Checkbox Demo",
      "description": "Demo showing a checkbox.",
      "registryDependencies": [
        "@odysseyui/components-radix-checkbox"
      ],
      "files": [
        {
          "path": "registry/demo/components/radix/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/radix/checkbox.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Checkbox": {
            "checked": {
              "value": false,
              "options": {
                "true": true,
                "false": false,
                "indeterminate": "indeterminate"
              }
            },
            "variant": {
              "value": "default",
              "options": {
                "default": "default",
                "accent": "accent"
              }
            },
            "size": {
              "value": "default",
              "options": {
                "default": "default",
                "sm": "sm",
                "lg": "lg"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-radix-hover-card",
      "type": "registry:ui",
      "title": "Hover Card Demo",
      "description": "Demo showing a hover card.",
      "registryDependencies": [
        "@odysseyui/components-radix-hover-card"
      ],
      "files": [
        {
          "path": "registry/demo/components/radix/hover-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/components/radix/hover-card.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "HoverCardContent": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-components-texts-text-highlighter",
      "type": "registry:ui",
      "title": "Text Highlighter Demo",
      "description": "Demo of the TextHighlighter component showcasing all annotation types.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-texts-text-highlighter.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/texts/text-highlighter/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/texts/text-highlighter.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TextHighlighter": {
            "action": {
              "value": "highlight",
              "options": {
                "highlight": "highlight",
                "underline": "underline",
                "box": "box",
                "circle": "circle",
                "strike-through": "strike-through",
                "crossed-off": "crossed-off",
                "bracket": "bracket"
              }
            },
            "color": {
              "value": "#51A2FF"
            },
            "strokeWidth": {
              "value": 1.5,
              "min": 0.5,
              "max": 5,
              "step": 0.5
            },
            "animationDuration": {
              "value": 600,
              "min": 100,
              "max": 2000,
              "step": 100
            },
            "iterations": {
              "value": 2,
              "min": 1,
              "max": 5,
              "step": 1
            },
            "padding": {
              "value": 2,
              "min": 0,
              "max": 20,
              "step": 1
            },
            "multiline": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-components-texts-text-reveal",
      "type": "registry:ui",
      "title": "Text Reveal Demo",
      "description": "Demo of the Text Reveal scramble animation component.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-texts-text-reveal.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/texts/text-reveal/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/texts/text-reveal.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TextReveal": {
            "children": {
              "value": "Odyssey UI"
            },
            "speed": {
              "value": 20,
              "min": 5,
              "max": 200,
              "step": 5
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 5,
              "step": 0.1
            },
            "triggerOnView": {
              "value": false
            },
            "once": {
              "value": true
            },
            "preset": {
              "value": "default"
            }
          }
        }
      }
    },
    {
      "name": "demo-components-texts-text-shimmer",
      "type": "registry:ui",
      "title": "Text Shimmer Demo",
      "description": "Demo of text shimmer.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-texts-text-shimmer.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/texts/text-shimmer/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/texts/text-shimmer.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ShimmerText": {
            "text": {
              "value": "Odyssey UI"
            },
            "duration": {
              "value": 1,
              "min": 0.1,
              "max": 5,
              "step": 0.1
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3,
              "step": 0.1
            },
            "spread": {
              "value": 2,
              "min": 1,
              "max": 10,
              "step": 1
            },
            "repeat": {
              "value": true
            },
            "repeatDelay": {
              "value": 0.5,
              "min": 0,
              "max": 5,
              "step": 0.1
            },
            "startOnView": {
              "value": true
            },
            "once": {
              "value": false
            },
            "color": {
              "value": "#888888"
            },
            "shimmerColor": {
              "value": "#ffffff"
            }
          }
        }
      }
    },
    {
      "name": "demo-components-texts-text-shimmer-wave",
      "type": "registry:ui",
      "title": "Text Shimmer Wave Demo",
      "description": "Demo of the Text Shimmer Wave component.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-texts-text-shimmer-wave.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/texts/text-shimmer-wave/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/texts/text-shimmer-wave.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TextShimmerWave": {
            "children": {
              "value": "Odyssey UI"
            },
            "duration": {
              "value": 1,
              "min": 0.1,
              "max": 5,
              "step": 0.1
            },
            "zDistance": {
              "value": 10,
              "min": 0,
              "max": 50,
              "step": 1
            },
            "xDistance": {
              "value": 2,
              "min": -20,
              "max": 20,
              "step": 1
            },
            "yDistance": {
              "value": -2,
              "min": -20,
              "max": 20,
              "step": 1
            },
            "spread": {
              "value": 1,
              "min": 0.1,
              "max": 3,
              "step": 0.1
            },
            "scaleDistance": {
              "value": 1.1,
              "min": 1,
              "max": 2,
              "step": 0.05
            },
            "rotateYDistance": {
              "value": 10,
              "min": 0,
              "max": 90,
              "step": 1
            },
            "color": {
              "value": "#a1a1aa"
            },
            "shimmerColor": {
              "value": "#ffffff"
            }
          }
        }
      }
    },
    {
      "name": "demo-components-texts-typewriter",
      "type": "registry:ui",
      "title": "Typewriter Demo",
      "description": "Demo of the Typewriter component with multi-sequence type and delete animation.",
      "registryDependencies": [
        "https://odysseyui.com/r/components-texts-typewriter.json"
      ],
      "files": [
        {
          "path": "registry/demo/components/texts/typewriter/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/texts/typewriter.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Typewriter": {
            "typingSpeed": {
              "value": 100,
              "min": 20,
              "max": 300,
              "step": 10
            },
            "deleteSpeed": {
              "value": 40,
              "min": 10,
              "max": 200,
              "step": 5
            },
            "pauseBeforeDelete": {
              "value": 1600,
              "min": 200,
              "max": 4000,
              "step": 100
            },
            "loopDelay": {
              "value": 1200,
              "min": 200,
              "max": 4000,
              "step": 100
            },
            "autoLoop": {
              "value": true
            },
            "naturalVariance": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-components-ui-badge",
      "type": "registry:ui",
      "title": "Badge Demo",
      "description": "Demo showcasing all badge variants.",
      "registryDependencies": [
        "odyssey/components-ui-badge"
      ],
      "files": [
        {
          "path": "registry/demo/components/ui/badge/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ui/badge.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ui-badge-colors",
      "type": "registry:ui",
      "title": "Badge Colors Demo",
      "description": "Demo showcasing all badge color variants.",
      "registryDependencies": [
        "odyssey/components-ui-badge"
      ],
      "files": [
        {
          "path": "registry/demo/components/ui/badge-colors/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ui/badge-colors.tsx"
        }
      ]
    },
    {
      "name": "demo-components-ui-button",
      "type": "registry:ui",
      "title": "Button Demo",
      "description": "Demo showcasing all button variants including the odysseyui variant.",
      "registryDependencies": [
        "odyssey/components-buttons-button"
      ],
      "files": [
        {
          "path": "registry/demo/components/ui/button/index.tsx",
          "type": "registry:ui",
          "target": "components/odyssey/demo/ui/button.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-avatar-group",
      "type": "registry:ui",
      "title": "Animate Avatar Group Demo",
      "description": "Demo showing an animated avatar group.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-avatar-group"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/avatar-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/avatar-group.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-code-block",
      "type": "registry:ui",
      "title": "Animate Code Block Demo",
      "description": "Demo showing an animated code block.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-code-block"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/code-block/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/code-block.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CodeBlock": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "duration": {
              "value": 10000,
              "min": 0,
              "max": 30000,
              "step": 1000
            },
            "writing": {
              "value": true
            },
            "cursor": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-animate-cursor",
      "type": "registry:ui",
      "title": "Animate Cursor Demo",
      "description": "Demo showing an animated cursor.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-cursor"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/cursor/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/cursor.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CursorProvider": {
            "global": {
              "value": false
            },
            "enableCursor": {
              "value": true
            },
            "enableCursorFollow": {
              "value": true
            }
          },
          "CursorFollow": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "right": "right",
                "bottom": "bottom",
                "left": "left"
              }
            },
            "sideOffset": {
              "value": 15
            },
            "align": {
              "value": "end",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 5
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-animate-github-stars",
      "type": "registry:ui",
      "title": "GitHub Stars Demo",
      "description": "Demo showing an animated github stars counter.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-github-stars"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/github-stars/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/github-stars.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-pinned-list",
      "type": "registry:ui",
      "title": "Animate Pinned List Demo",
      "description": "Demo showing an animated pinned list.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-pinned-list"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/pinned-list/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/pinned-list.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-scroll-progress",
      "type": "registry:ui",
      "title": "Animate Scroll Progress Demo",
      "description": "Demo showing an animated scroll progress.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-scroll-progress"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/scroll-progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/scroll-progress.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ScrollProgressProvider": {
            "global": {
              "value": false
            },
            "direction": {
              "value": "vertical",
              "options": {
                "horizontal": "horizontal",
                "vertical": "vertical"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-animate-spring",
      "type": "registry:ui",
      "title": "Animate Spring Demo",
      "description": "Demo showing an animated spring.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-spring"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/spring/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/spring.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-tabs",
      "type": "registry:ui",
      "title": "Animate Tabs Demo",
      "description": "Demo showing an animated tabs.",
      "registryDependencies": [
        "@odysseyui/primitives-animate-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/tabs.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-animate-tooltip",
      "type": "registry:ui",
      "title": "Animate Tooltip Demo",
      "description": "Demo showing an animated tooltip.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-tooltip"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/animate/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/animate/tooltip.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TooltipProvider": {
            "openDelay": {
              "value": 700
            },
            "closeDelay": {
              "value": 300
            }
          },
          "Tooltip": {
            "side": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 0
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          },
          "TooltipArrow": {
            "withTransition": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-accordion",
      "type": "registry:ui",
      "title": "Base Accordion Demo",
      "description": "Demo showing an animated base accordion.",
      "registryDependencies": [
        "@odysseyui/primitives-base-accordion"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/accordion/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/accordion.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Accordion": {
            "openMultiple": {
              "value": false
            }
          },
          "AccordionPanel": {
            "keepRendered": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-alert-dialog",
      "type": "registry:ui",
      "title": "Base Alert Dialog Demo",
      "description": "Demo showing an animated base alert dialog.",
      "registryDependencies": [
        "@odysseyui/primitives-base-alert-dialog"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/alert-dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/alert-dialog.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "AlertDialogPopup": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-checkbox",
      "type": "registry:ui",
      "title": "Base Checkbox Demo",
      "description": "Demo showing an animated base checkbox.",
      "registryDependencies": [
        "@odysseyui/primitives-base-checkbox"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/checkbox.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Checkbox": {
            "indeterminate": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-collapsible",
      "type": "registry:ui",
      "title": "Base Collapsible Demo",
      "description": "Demo showing an animated base collapsible.",
      "registryDependencies": [
        "@odysseyui/primitives-base-collapsible"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/collapsible/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/collapsible.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CollapsiblePanel": {
            "keepRendered": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-dialog",
      "type": "registry:ui",
      "title": "Base Dialog Demo",
      "description": "Demo showing an animated base dialog.",
      "registryDependencies": [
        "@odysseyui/primitives-base-dialog"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/dialog.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "DialogPopup": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-files",
      "type": "registry:ui",
      "title": "Base Files Demo",
      "description": "Demo showing an animated base files.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-base-files"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/files/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/files.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-base-menu",
      "type": "registry:ui",
      "title": "Base Menu Demo",
      "description": "Demo showing an animated base menu.",
      "registryDependencies": [
        "@odysseyui/primitives-base-menu"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/menu.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "MenuPositioner": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right",
                "inline-start": "inline-start",
                "inline-end": "inline-end"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-popover",
      "type": "registry:ui",
      "title": "Base Popover Demo",
      "description": "Demo showing an animated base popover.",
      "registryDependencies": [
        "@odysseyui/primitives-base-popover"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/popover.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "PopoverPositioner": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right",
                "inline-start": "inline-start",
                "inline-end": "inline-end"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-preview-card",
      "type": "registry:ui",
      "title": "Base Preview Card Demo",
      "description": "Demo showing an animated base preview card.",
      "registryDependencies": [
        "@odysseyui/primitives-base-preview-card"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/preview-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/preview-card.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "PreviewCardPositioner": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right",
                "inline-start": "inline-start",
                "inline-end": "inline-end"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-progress",
      "type": "registry:ui",
      "title": "Base Progress Demo",
      "description": "Demo showing an animated base progress.",
      "registryDependencies": [
        "@odysseyui/primitives-base-progress"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/progress.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-base-radio",
      "type": "registry:ui",
      "title": "Base Radio Demo",
      "description": "Demo showing an animated base radio.",
      "registryDependencies": [
        "@odysseyui/primitives-base-radio"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/radio/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/radio.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-base-switch",
      "type": "registry:ui",
      "title": "Base Switch Demo",
      "description": "Demo showing an animated base switch.",
      "registryDependencies": [
        "@odysseyui/primitives-base-switch"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/switch.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-base-tabs",
      "type": "registry:ui",
      "title": "Base Tabs Demo",
      "description": "Demo showing an animated base tabs.",
      "registryDependencies": [
        "@odysseyui/primitives-base-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/tabs.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TabsPanels": {
            "mode": {
              "value": "auto-height",
              "options": {
                "auto-height": "auto-height",
                "layout": "layout"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-toggle",
      "type": "registry:ui",
      "title": "Base Toggle Demo",
      "description": "Demo showing an animated base toggle.",
      "registryDependencies": [
        "@odysseyui/primitives-base-toggle"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/toggle/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/toggle.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-base-toggle-group",
      "type": "registry:ui",
      "title": "Base Toggle Group Demo",
      "description": "Demo showing an animated base toggle group.",
      "registryDependencies": [
        "@odysseyui/primitives-base-toggle-group"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/toggle-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/toggle-group.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ToggleGroup": {
            "toggleMultiple": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-base-tooltip",
      "type": "registry:ui",
      "title": "Base Tooltip Demo",
      "description": "Demo showing an animated base tooltip.",
      "registryDependencies": [
        "@odysseyui/primitives-base-tooltip"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/base/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/base/tooltip.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TooltipPositioner": {
            "side": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right",
                "inline-start": "inline-start",
                "inline-end": "inline-end"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-buttons-button",
      "type": "registry:ui",
      "title": "Button Demo",
      "description": "Demo showing a button.",
      "registryDependencies": [
        "@odysseyui/primitives-buttons-button"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/buttons/button/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/buttons/button.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Button": {
            "hoverScale": {
              "value": 1.05,
              "min": 0,
              "max": 2,
              "step": 0.05
            },
            "tapScale": {
              "value": 0.95,
              "min": 0,
              "max": 2,
              "step": 0.05
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-buttons-flip",
      "type": "registry:ui",
      "title": "Flip Button Demo",
      "description": "Demo showing an animated flip button.",
      "registryDependencies": [
        "@odysseyui/primitives-buttons-flip"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/buttons/flip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/buttons/flip.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "FlipButton": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "right": "right",
                "bottom": "bottom",
                "left": "left"
              }
            },
            "tapScale": {
              "value": 0.95,
              "min": 0,
              "max": 2,
              "step": 0.05
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-buttons-liquid",
      "type": "registry:ui",
      "title": "Liquid Button Demo",
      "description": "Demo showing an animated liquid button.",
      "registryDependencies": [
        "@odysseyui/primitives-buttons-liquid"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/buttons/liquid/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/buttons/liquid.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "LiquidButton": {
            "delay": {
              "value": 0.3,
              "min": 0.1,
              "max": 0.5,
              "step": 0.05
            },
            "fillHeight": {
              "value": 3,
              "min": 0,
              "max": 10,
              "step": 1
            },
            "hoverScale": {
              "value": 1.05,
              "min": 0,
              "max": 2,
              "step": 0.05
            },
            "tapScale": {
              "value": 0.95,
              "min": 0,
              "max": 2,
              "step": 0.05
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-buttons-ripple",
      "type": "registry:ui",
      "title": "Ripple Button Demo",
      "description": "Demo showing a ripple button.",
      "registryDependencies": [
        "@odysseyui/primitives-buttons-ripple"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/buttons/ripple/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/buttons/ripple.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "RippleButton": {
            "hoverScale": {
              "value": 1.05,
              "min": 0,
              "max": 2,
              "step": 0.05
            },
            "tapScale": {
              "value": 0.95,
              "min": 0,
              "max": 2,
              "step": 0.05
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-auto-height",
      "type": "registry:ui",
      "title": "Auto Height Demo",
      "description": "Demo showing an animated auto height.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-auto-height"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/auto-height/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/auto-height.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-effects-blur",
      "type": "registry:ui",
      "title": "Blur Demo",
      "description": "Demo showing an animated blur.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-blur"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/blur/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/blur.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Blur": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "initialBlur": {
              "value": 10,
              "min": 0,
              "max": 50,
              "step": 1
            },
            "blur": {
              "value": 0,
              "min": 0,
              "max": 50,
              "step": 1
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-click",
      "type": "registry:ui",
      "title": "Click Demo",
      "description": "Demo showing an animated click.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-click"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/click/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/click.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Click": {
            "global": {
              "value": false
            },
            "variant": {
              "value": "ring",
              "options": {
                "ripple": "ripple",
                "ring": "ring",
                "crosshair": "crosshair",
                "burst": "burst",
                "particles": "particles"
              }
            },
            "duration": {
              "value": 400,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "size": {
              "value": 100,
              "min": 0,
              "max": 300,
              "step": 10
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-effect",
      "type": "registry:ui",
      "title": "Effect Demo",
      "description": "Demo showing an animated effect.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-effect"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/effect/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/effect.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Effect": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "blur": {
              "value": true
            },
            "slide": {
              "value": true
            },
            "fade": {
              "value": true
            },
            "zoom": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-fade",
      "type": "registry:ui",
      "title": "Fade Demo",
      "description": "Demo showing an animated fade.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-fade"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/fade/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/fade.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Fade": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "initialOpacity": {
              "value": 0,
              "min": 0,
              "max": 1,
              "step": 0.1
            },
            "opacity": {
              "value": 1,
              "min": 0,
              "max": 1,
              "step": 0.1
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-highlight",
      "type": "registry:ui",
      "title": "Highlight Demo",
      "description": "Demo showing an animated highlight.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/highlight/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/highlight.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Highlight": {
            "mode": {
              "value": "children",
              "options": {
                "children": "children",
                "parent": "parent"
              }
            },
            "exitDelay": {
              "value": 200,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "hover": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-image-zoom",
      "type": "registry:ui",
      "title": "Image Zoom Demo",
      "description": "Demo showing a image zoom effect.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-image-zoom"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/image-zoom/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/image-zoom.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-effects-magnetic",
      "type": "registry:ui",
      "title": "Magnetic Demo",
      "description": "Demo showing a magnetic effect.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-magnetic"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/magnetic/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/magnetic.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Magnetic": {
            "onlyOnHover": {
              "value": false
            },
            "strength": {
              "value": 0.5,
              "min": 0,
              "max": 1,
              "step": 0.05
            },
            "range": {
              "value": 120
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-particles",
      "type": "registry:ui",
      "title": "Particles Demo",
      "description": "Demo showing an animated particles.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-particles"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/particles/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/particles.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ParticlesEffect": {
            "side": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 0,
              "min": 0,
              "max": 50,
              "step": 1
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0,
              "min": -50,
              "max": 50,
              "step": 1
            },
            "count": {
              "value": 6,
              "min": 1,
              "max": 30,
              "step": 1
            },
            "radius": {
              "value": 30,
              "min": 10,
              "max": 100,
              "step": 1
            },
            "spread": {
              "value": 360,
              "min": 0,
              "max": 1000,
              "step": 1
            },
            "duration": {
              "value": 0.8,
              "min": 0.1,
              "max": 2,
              "step": 0.1
            },
            "holdDelay": {
              "value": 0.05,
              "min": 0,
              "max": 0.2,
              "step": 0.01
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-shine",
      "type": "registry:ui",
      "title": "Shine Demo",
      "description": "Demo showing an animated shine.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-shine"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/shine/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/shine.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Slide": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "duration": {
              "value": 1200,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "loop": {
              "value": true
            },
            "loopDelay": {
              "value": 500,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "deg": {
              "value": -15,
              "min": -50,
              "max": 50,
              "step": 5
            },
            "enable": {
              "value": true
            },
            "enableOnHover": {
              "value": false
            },
            "enableOnTap": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-slide",
      "type": "registry:ui",
      "title": "Slide Demo",
      "description": "Demo showing an animated slide.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-slide"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/slide/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/slide.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Slide": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "direction": {
              "value": "up",
              "options": {
                "up": "up",
                "down": "down",
                "left": "left",
                "right": "right"
              }
            },
            "offset": {
              "value": 100,
              "min": 0,
              "max": 1000,
              "step": 10
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-theme-toggler",
      "type": "registry:ui",
      "title": "Theme Toggler Demo",
      "description": "Demo showing a theme toggler.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-theme-toggler"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/theme-toggler/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/theme-toggler.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ThemeToggler": {
            "direction": {
              "value": "ltr",
              "options": {
                "btt": "btt",
                "ttb": "ttb",
                "ltr": "ltr",
                "rtl": "rtl"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-tilt",
      "type": "registry:ui",
      "title": "Tilt Demo",
      "description": "Demo showing an animated tilt.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-tilt"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/tilt/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/tilt.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Tilt": {
            "maxTilt": {
              "value": 10,
              "min": 0,
              "max": 50,
              "step": 1
            },
            "perspective": {
              "value": 800,
              "min": 200,
              "max": 5000,
              "step": 10
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-effects-zoom",
      "type": "registry:ui",
      "title": "Zoom Demo",
      "description": "Demo showing an animated zoom.",
      "registryDependencies": [
        "@odysseyui/primitives-effects-zoom"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/effects/zoom/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/effects/zoom.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Zoom": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "initialScale": {
              "value": 0.5,
              "min": 0,
              "max": 1,
              "step": 0.1
            },
            "scale": {
              "value": 1,
              "min": 0,
              "max": 1,
              "step": 0.1
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-headless-checkbox",
      "type": "registry:ui",
      "title": "Headless Checkbox Demo",
      "description": "Demo showing an animated headless checkbox.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-checkbox"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/checkbox.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Checkbox": {
            "indeterminate": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-headless-dialog",
      "type": "registry:ui",
      "title": "Headless Dialog Demo",
      "description": "Demo showing an animated headless dialog.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-dialog"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/dialog.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "DialogPanel": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-headless-disclosure",
      "type": "registry:ui",
      "title": "Headless Disclosure Demo",
      "description": "Demo showing an animated headless disclosure.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-disclosure"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/disclosure/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/disclosure.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "DisclosurePanel": {
            "keepRendered": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-headless-popover",
      "type": "registry:ui",
      "title": "Headless Popover Demo",
      "description": "Demo showing an animated headless popover.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-popover"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/popover.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "PopoverPanel": {
            "anchor": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right",
                "top start": "top start",
                "top end": "top end",
                "bottom start": "bottom start",
                "bottom end": "bottom end",
                "left start": "left start",
                "left end": "left end",
                "right start": "right start",
                "right end": "right end"
              }
            },
            "gap": {
              "value": 4
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-headless-switch",
      "type": "registry:ui",
      "title": "Headless Switch Demo",
      "description": "Demo showing an animated headless switch.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-switch"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/switch.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-headless-tabs",
      "type": "registry:ui",
      "title": "Headless Tabs Demo",
      "description": "Demo showing an animated headless tabs.",
      "registryDependencies": [
        "@odysseyui/primitives-headless-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/headless/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/headless/tabs.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TabsPanels": {
            "mode": {
              "value": "auto-height",
              "options": {
                "auto-height": "auto-height",
                "layout": "layout"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-accordion",
      "type": "registry:ui",
      "title": "Radix Accordion Demo",
      "description": "Demo showing an animated radix accordion.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-accordion"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/accordion/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/accordion.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Accordion": {
            "multiple": {
              "value": false
            },
            "collapsible": {
              "value": true
            }
          },
          "AccordionContent": {
            "keepRendered": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-alert-dialog",
      "type": "registry:ui",
      "title": "Radix Alert Dialog Demo",
      "description": "Demo showing an animated radix alert dialog.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-alert-dialog"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/alert-dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/alert-dialog.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "AlertDialogContent": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-checkbox",
      "type": "registry:ui",
      "title": "Radix Checkbox Demo",
      "description": "Demo showing an animated radix checkbox.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-checkbox"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/checkbox.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Checkbox": {
            "checked": {
              "value": false,
              "options": {
                "true": true,
                "false": false,
                "indeterminate": "indeterminate"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-collapsible",
      "type": "registry:ui",
      "title": "Radix Collapsible Demo",
      "description": "Demo showing an animated radix collapsible.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-collapsible"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/collapsible/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/collapsible.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CollapsibleContent": {
            "keepRendered": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-dialog",
      "type": "registry:ui",
      "title": "Radix Dialog Demo",
      "description": "Demo showing an animated radix dialog.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-dialog"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/dialog.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "DialogContent": {
            "from": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-dropdown-menu",
      "type": "registry:ui",
      "title": "Radix Dropdown Menu Demo",
      "description": "Demo showing an animated radix dropdown menu.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/dropdown-menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/dropdown-menu.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "DropdownMenuContent": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-files",
      "type": "registry:ui",
      "title": "Radix Files Demo",
      "description": "Demo showing an animated radix files.",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-radix-files"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/files/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/files.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-radix-hover-card",
      "type": "registry:ui",
      "title": "Radix Hover Card Demo",
      "description": "Demo showing an animated radix hover card.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-hover-card"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/hover-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/hover-card.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "HoverCardContent": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-popover",
      "type": "registry:ui",
      "title": "Radix Popover Demo",
      "description": "Demo showing an animated radix popover.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-popover"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/popover.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "PopoverContent": {
            "side": {
              "value": "bottom",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-progress",
      "type": "registry:ui",
      "title": "Radix Progress Demo",
      "description": "Demo showing an animated radix progress.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-progress"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/progress.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-radix-radio-group",
      "type": "registry:ui",
      "title": "Radix Radio Group Demo",
      "description": "Demo showing an animated radix radio group.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-radio-group"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/radio-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/radio-group.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-radix-sheet",
      "type": "registry:ui",
      "title": "Radix Sheet Demo",
      "description": "Demo showing an animated radix sheet.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-sheet"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/sheet/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/sheet.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "SheetContent": {
            "side": {
              "value": "right",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-switch",
      "type": "registry:ui",
      "title": "Radix Switch Demo",
      "description": "Demo showing an animated radix switch.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-switch"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/switch.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-radix-tabs",
      "type": "registry:ui",
      "title": "Radix Tabs Demo",
      "description": "Demo showing an animated radix tabs.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/tabs.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TabsPanels": {
            "mode": {
              "value": "auto-height",
              "options": {
                "auto-height": "auto-height",
                "layout": "layout"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-toggle",
      "type": "registry:ui",
      "title": "Radix Toggle Demo",
      "description": "Demo showing an animated radix toggle.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-toggle"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/toggle/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/toggle.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-radix-toggle-group",
      "type": "registry:ui",
      "title": "Radix Toggle Group Demo",
      "description": "Demo showing an animated radix toggle group.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-toggle-group"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/toggle-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/toggle-group.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ToggleGroup": {
            "type": {
              "value": "single",
              "options": {
                "single": "single",
                "multiple": "multiple"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-radix-tooltip",
      "type": "registry:ui",
      "title": "Radix Tooltip Demo",
      "description": "Demo showing an animated radix tooltip.",
      "registryDependencies": [
        "@odysseyui/primitives-radix-tooltip"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/radix/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/radix/tooltip.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TooltipContent": {
            "side": {
              "value": "top",
              "options": {
                "top": "top",
                "bottom": "bottom",
                "left": "left",
                "right": "right"
              }
            },
            "sideOffset": {
              "value": 4
            },
            "align": {
              "value": "center",
              "options": {
                "start": "start",
                "center": "center",
                "end": "end"
              }
            },
            "alignOffset": {
              "value": 0
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-counting-number",
      "type": "registry:ui",
      "title": "Counting Number Demo",
      "description": "Demo showing an animated counting number.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-counting-number"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/counting-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/counting-number.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "CountingNumber": {
            "number": {
              "value": 2025
            },
            "fromNumber": {
              "value": 0
            },
            "padStart": {
              "value": false
            },
            "decimalSeparator": {
              "value": "."
            },
            "decimalPlaces": {
              "value": 0
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-gradient",
      "type": "registry:ui",
      "title": "Gradient Text Demo",
      "description": "Demo showing an animated gradient text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-gradient"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/gradient/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/gradient.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "GradientText": {
            "neon": {
              "value": false
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-highlight",
      "type": "registry:ui",
      "title": "Highlight Text Demo",
      "description": "Demo showing an animated highlight text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-highlight"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/highlight/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/highlight.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "HighlightText": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-morphing",
      "type": "registry:ui",
      "title": "Morphing Text Demo",
      "description": "Demo showing an animated morphing text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-morphing"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/morphing/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/morphing.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "MorphingText": {
            "loop": {
              "value": true
            },
            "holdDelay": {
              "value": 2500,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-rolling",
      "type": "registry:ui",
      "title": "Rolling Text Demo",
      "description": "Demo showing an animated rolling text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-rolling"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/rolling/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/rolling.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "RollingText": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-rotating",
      "type": "registry:ui",
      "title": "Rotating Text Demo",
      "description": "Demo showing an animated rotating text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-rotating"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/rotating/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/rotating.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "RotatingText": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "y": {
              "value": -50,
              "min": -100,
              "max": 100,
              "step": 10
            },
            "duration": {
              "value": 2000,
              "min": 1000,
              "max": 5000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-scrolling-number",
      "type": "registry:ui",
      "title": "Scrolling Number Demo",
      "description": "Demo showing an animated scrolling number.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-scrolling-number"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/scrolling-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/scrolling-number.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ScrollingNumberContainer": {
            "direction": {
              "value": "btt",
              "options": {
                "btt": "btt",
                "ttb": "ttb",
                "ltr": "ltr",
                "rtl": "rtl"
              }
            }
          },
          "ScrollingNumber": {
            "delay": {
              "value": 1000,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-shimmering",
      "type": "registry:ui",
      "title": "Shimmering Text Demo",
      "description": "Demo showing an animated shimmering text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-shimmering"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/shimmering/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/shimmering.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ShimmeringText": {
            "wave": {
              "value": false
            },
            "duration": {
              "value": 1,
              "min": 0.1,
              "max": 3,
              "step": 0.1
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-sliding-number",
      "type": "registry:ui",
      "title": "Sliding Number Demo",
      "description": "Demo showing an animated sliding number.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-sliding-number"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/sliding-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/sliding-number.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "SlidingNumber": {
            "number": {
              "value": 2025
            },
            "fromNumber": {
              "value": true
            },
            "padStart": {
              "value": true
            },
            "decimalSeparator": {
              "value": ","
            },
            "decimalPlaces": {
              "value": 0
            },
            "thousandSeparator": {
              "value": "."
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-splitting",
      "type": "registry:ui",
      "title": "Splitting Text Demo",
      "description": "Demo showing an animated splitting text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-splitting"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/splitting/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/splitting.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "SplittingText": {
            "type": {
              "value": "chars",
              "options": {
                "chars": "chars",
                "words": "words",
                "lines": "lines"
              }
            },
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "animation": {
              "value": "default",
              "options": {
                "default": "default",
                "vibe": "vibe",
                "writing": "writing"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-texts-splitting-example",
      "type": "registry:ui",
      "title": "Splitting Text Demo",
      "description": "Demo showing an animated splitting text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-splitting"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/splitting-example/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/splitting-example.tsx"
        }
      ]
    },
    {
      "name": "demo-primitives-texts-typing",
      "type": "registry:ui",
      "title": "Typing Text Demo",
      "description": "Demo showing an animated typing text.",
      "registryDependencies": [
        "@odysseyui/primitives-texts-typing"
      ],
      "files": [
        {
          "path": "registry/demo/primitives/texts/typing/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/demo/primitives/texts/typing.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "TypingText": {
            "delay": {
              "value": 0,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "holdDelay": {
              "value": 1000,
              "min": 0,
              "max": 3000,
              "step": 100
            },
            "loop": {
              "value": false
            },
            "cursor": {
              "value": true
            }
          }
        }
      }
    },
    {
      "name": "hooks-use-auto-height",
      "type": "registry:hook",
      "title": "useAutoHeight",
      "description": "A hook that allows you to automatically adjust the height of an element based on its content.",
      "files": [
        {
          "path": "registry/hooks/use-auto-height/index.tsx",
          "type": "registry:hook",
          "target": "hooks/use-auto-height.tsx"
        }
      ]
    },
    {
      "name": "hooks-use-controlled-state",
      "type": "registry:hook",
      "title": "useControlledState",
      "description": "A hook that allows you to control a state.",
      "files": [
        {
          "path": "registry/hooks/use-controlled-state/index.tsx",
          "type": "registry:hook",
          "target": "hooks/use-controlled-state.tsx"
        }
      ]
    },
    {
      "name": "hooks-use-data-state",
      "type": "registry:hook",
      "title": "useDataState",
      "description": "A hook that allows you to get the data-state of an element.",
      "files": [
        {
          "path": "registry/hooks/use-data-state/index.tsx",
          "type": "registry:hook",
          "target": "hooks/use-data-state.tsx"
        }
      ]
    },
    {
      "name": "hooks-use-is-in-view",
      "type": "registry:hook",
      "title": "useIsInView",
      "description": "A hook that allows you to check if an element is in view.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/hooks/use-is-in-view/index.tsx",
          "type": "registry:hook",
          "target": "hooks/use-is-in-view.tsx"
        }
      ]
    },
    {
      "name": "hooks-use-motion-value-state",
      "type": "registry:hook",
      "title": "useMotionValueState",
      "description": "A hook that allows you to use a motion value state.",
      "files": [
        {
          "path": "registry/hooks/use-motion-value-state/index.tsx",
          "type": "registry:hook",
          "target": "hooks/use-motion-value-state.tsx"
        }
      ]
    },
    {
      "name": "icons-alarm-clock",
      "type": "registry:ui",
      "title": "Alarm Clock Icon",
      "description": "Alarm clock icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/alarm-clock/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/alarm-clock.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "morning"
        ]
      }
    },
    {
      "name": "icons-arrow-right",
      "type": "registry:ui",
      "title": "Arrow Right Icon",
      "description": "Arrow right icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/arrow-right/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/arrow-right.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "arrow",
          "right",
          "forward",
          "next",
          "direction",
          "east",
          "->"
        ]
      }
    },
    {
      "name": "icons-audio-lines",
      "type": "registry:ui",
      "title": "Audio Lines Icon",
      "description": "Audio Lines icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/audio-lines/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/audio-lines.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "graphic equaliser",
          "sound",
          "noise",
          "listen",
          "hearing",
          "hertz",
          "frequency",
          "wavelength",
          "vibrate",
          "sine",
          "synthesizer",
          "synthesiser",
          "levels",
          "track",
          "music",
          "playback",
          "radio",
          "broadcast",
          "airwaves",
          "voice",
          "vocals",
          "singer",
          "song"
        ]
      }
    },
    {
      "name": "icons-battery-full",
      "type": "registry:ui",
      "title": "Battery Full Icon",
      "description": "Battery Full icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/battery-full/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/battery-full.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "power",
          "electricity",
          "energy",
          "accumulator",
          "charge"
        ]
      }
    },
    {
      "name": "icons-bell-ring",
      "type": "registry:ui",
      "title": "Bell Ring Icon",
      "description": "Bell ring icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/bell-ring/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/bell-ring.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "alarm",
          "notification",
          "sound",
          "reminder"
        ]
      }
    },
    {
      "name": "icons-clock",
      "type": "registry:ui",
      "title": "Clock Icon",
      "description": "Clock icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/clock/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/clock.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "clock",
          "time",
          "watch",
          "alarm",
          "timer"
        ]
      }
    },
    {
      "name": "icons-disc-3",
      "type": "registry:ui",
      "title": "Disc 3 Icon",
      "description": "Disc 3 icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/disc-3/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/disc-3.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "album",
          "vinyl",
          "record",
          "cd",
          "dvd",
          "format",
          "dj",
          "spin",
          "rotate",
          "rpm"
        ]
      }
    },
    {
      "name": "icons-icon",
      "type": "registry:ui",
      "title": "Icon",
      "description": "Base component to use animated icons.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view",
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/icons/icon/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/icon.tsx"
        }
      ]
    },
    {
      "name": "icons-loader",
      "type": "registry:ui",
      "title": "Loader Icon",
      "description": "Loader icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/loader/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/loader.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "loading",
          "wait",
          "busy",
          "progress",
          "throbber",
          "spinner",
          "spinning"
        ]
      }
    },
    {
      "name": "icons-menu",
      "type": "registry:ui",
      "title": "Menu Icon",
      "description": "Menu icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/menu.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "bars",
          "navigation",
          "hamburger",
          "options"
        ]
      }
    },
    {
      "name": "icons-party-popper",
      "type": "registry:ui",
      "title": "Party Popper Icon",
      "description": "Party popper icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/party-popper/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/party-popper.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "emoji",
          "congratulations",
          "celebration",
          "party",
          "tada",
          " 🎉",
          "🎊",
          "excitement",
          "exciting",
          "excites",
          "confetti"
        ]
      }
    },
    {
      "name": "icons-settings",
      "type": "registry:ui",
      "title": "Settings Icon",
      "description": "Settings icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/settings/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/settings.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "cog",
          "edit",
          "gear",
          "preferences"
        ]
      }
    },
    {
      "name": "icons-trash-2",
      "type": "registry:ui",
      "title": "Trash 2 Icon",
      "description": "Trash 2 icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/trash-2/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/trash-2.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "garbage",
          "delete",
          "remove",
          "bin"
        ]
      }
    },
    {
      "name": "icons-user",
      "type": "registry:ui",
      "title": "User Icon",
      "description": "User icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/user/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/user.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "person",
          "account",
          "contact"
        ]
      }
    },
    {
      "name": "icons-wifi",
      "type": "registry:ui",
      "title": "Wifi Icon",
      "description": "Wifi icon component.",
      "registryDependencies": [
        "@odysseyui/icons-icon"
      ],
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/icons/wifi/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/icons/wifi.tsx"
        }
      ],
      "meta": {
        "keywords": [
          "connection",
          "signal",
          "wireless"
        ]
      }
    },
    {
      "name": "lib-get-strict-context",
      "type": "registry:lib",
      "title": "getStrictContext",
      "description": "A hook that allows you to create a strict context.",
      "files": [
        {
          "path": "registry/lib/get-strict-context/index.tsx",
          "type": "registry:lib",
          "target": "lib/get-strict-context.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-avatar-group",
      "type": "registry:ui",
      "title": "Avatar Group",
      "description": "An animated avatar group that displays overlapping user images and smoothly shifts each avatar forward on hover to highlight it.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-tooltip"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/avatar-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/avatar-group.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-code-block",
      "type": "registry:ui",
      "title": "Code Block",
      "description": "A code block component that animates the code as it is written.",
      "dependencies": [
        "shiki"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/code-block/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/code-block.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-cursor",
      "type": "registry:ui",
      "title": "Cursor",
      "description": "An animated cursor component that allows you to customize both the cursor and cursor follow elements with smooth animations.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/cursor/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/cursor.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-github-stars",
      "type": "registry:ui",
      "title": "Github Stars",
      "description": "A component that animates a number of stars, smoothly animating number transitions using the SlidingNumber component.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/primitives-texts-sliding-number",
        "@odysseyui/primitives-effects-particles",
        "@odysseyui/hooks-use-is-in-view",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/github-stars/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/github-stars.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-pinned-list",
      "type": "registry:ui",
      "title": "Pin List",
      "description": "A pin list component that allows you to pin items to the top of the list.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/pinned-list/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/pinned-list.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-scroll-progress",
      "type": "registry:ui",
      "title": "Scroll Progress",
      "description": "A scroll progress component that allows you to track the progress of a scrollable element.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-motion-value-state"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/scroll-progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/scroll-progress.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-slot",
      "type": "registry:ui",
      "title": "Animate Slot",
      "description": "A slot component that allows you to use motion components with any element.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/slot/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/slot.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-spring",
      "type": "registry:ui",
      "title": "Spring",
      "description": "A flexible, animated spring component that attaches a draggable element to its origin with a spring line.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-motion-value-state"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/spring/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/spring.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "A set of layered sections of content—known as tab panels—that are displayed one at a time.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/tabs.tsx"
        }
      ]
    },
    {
      "name": "primitives-animate-tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "An animated tooltip that shows contextual info on hover or focus and smoothly glides to the next element without disappearing between transitions.",
      "dependencies": [
        "motion",
        "@floating-ui/react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/animate/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/animate/tooltip.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-accordion",
      "type": "registry:ui",
      "title": "Base Accordion",
      "description": "An easily stylable accordion component.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/accordion/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/accordion.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-alert-dialog",
      "type": "registry:ui",
      "title": "Base Alert Dialog",
      "description": "A dialog that requires user response to proceed.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/base/alert-dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/alert-dialog.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-checkbox",
      "type": "registry:ui",
      "title": "Base Checkbox",
      "description": "An easily stylable checkbox component.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/checkbox.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-collapsible",
      "type": "registry:ui",
      "title": "Base Collapsible",
      "description": "A collapsible panel controlled by a button.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/collapsible/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/collapsible.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-dialog",
      "type": "registry:ui",
      "title": "Base Dialog",
      "description": "A popup that opens on top of the entire page.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/base/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/dialog.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-files",
      "type": "registry:ui",
      "title": "Files",
      "description": "A component that allows you to display a list of files and folders.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-base-accordion",
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/files/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/files.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-menu",
      "type": "registry:ui",
      "title": "Base Menu",
      "description": "A list of actions in a dropdown, enhanced with keyboard navigation.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/hooks-use-data-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/menu.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-popover",
      "type": "registry:ui",
      "title": "Base Popover",
      "description": "An accessible popup anchored to a button.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/popover.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-preview-card",
      "type": "registry:ui",
      "title": "Base Preview Card",
      "description": "A popup that appears when a link is hovered, showing a preview for sighted users.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/preview-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/preview-card.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-progress",
      "type": "registry:ui",
      "title": "Base Progress",
      "description": "Displays the status of a task that takes a long time.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/primitives-texts-counting-number"
      ],
      "files": [
        {
          "path": "registry/primitives/base/progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/progress.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-radio",
      "type": "registry:ui",
      "title": "Base Radio",
      "description": "An easily stylable radio button component.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/radio/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/radio.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-switch",
      "type": "registry:ui",
      "title": "Base Switch",
      "description": "A control that indicates whether a setting is on or off.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/switch.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-tabs",
      "type": "registry:ui",
      "title": "Base Tabs",
      "description": "A component for toggling between related panels on the same page.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-auto-height",
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/tabs.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-toggle",
      "type": "registry:ui",
      "title": "Base Toggle",
      "description": "A two-state button that can be on or off.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/toggle/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/toggle.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-toggle-group",
      "type": "registry:ui",
      "title": "Base Toggle Group",
      "description": "Provides a shared state to a series of toggle buttons.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/primitives-effects-highlight"
      ],
      "files": [
        {
          "path": "registry/primitives/base/toggle-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/toggle-group.tsx"
        }
      ]
    },
    {
      "name": "primitives-base-tooltip",
      "type": "registry:ui",
      "title": "Base Tooltip",
      "description": "A popup that appears when an element is hovered or focused, showing a hint for sighted users.",
      "dependencies": [
        "motion",
        "@base-ui-components/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/base/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/base/tooltip.tsx"
        }
      ]
    },
    {
      "name": "primitives-buttons-button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A simple button that animates on hover and tap.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/buttons/button/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/buttons/button.tsx"
        }
      ]
    },
    {
      "name": "primitives-buttons-flip",
      "type": "registry:ui",
      "title": "Flip Button",
      "description": "A button that flips between two states on hover.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/buttons/flip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/buttons/flip.tsx"
        }
      ]
    },
    {
      "name": "primitives-buttons-liquid",
      "type": "registry:ui",
      "title": "Liquid Button",
      "description": "A button that fills on hover.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/buttons/liquid/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/buttons/liquid.tsx"
        }
      ]
    },
    {
      "name": "primitives-buttons-ripple",
      "type": "registry:ui",
      "title": "Ripple Button",
      "description": "A button that animates on tap with a ripple effect.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/buttons/ripple/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/buttons/ripple.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-auto-height",
      "type": "registry:ui",
      "title": "Auto Height",
      "description": "An effect that automatically adjusts the height of an element based on its content.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-auto-height"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/auto-height/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/auto-height.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-blur",
      "type": "registry:ui",
      "title": "Blur",
      "description": "An effect that allows you to animate elements with a blur effect on first view or load.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/blur/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/blur.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-click",
      "type": "registry:ui",
      "title": "Click",
      "description": "An effect that creates animated effects at the click position, adding interactive feedback to user actions.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/click/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/click.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-effect",
      "type": "registry:ui",
      "title": "Effect",
      "description": "An effect that allows you to animate elements on first view or load.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/effect/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/effect.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-fade",
      "type": "registry:ui",
      "title": "Fade",
      "description": "An effect that allows you to animate elements with a fade effect on first view or load.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/fade/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/fade.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-highlight",
      "type": "registry:ui",
      "title": "Highlight",
      "description": "A highlight effect that allows you to highlight elements on hover, click or with a controlled value.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/highlight/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/highlight.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-image-zoom",
      "type": "registry:ui",
      "title": "Image Zoom",
      "description": "An effect that allows you to zoom in on an image on hover.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/image-zoom/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/image-zoom.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-magnetic",
      "type": "registry:ui",
      "title": "Magnetic",
      "description": "A magnetic effect that clings to the cursor, creating a magnetic attraction effect.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/magnetic/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/magnetic.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-particles",
      "type": "registry:ui",
      "title": "Particles",
      "description": "A particles effect that creates a particle system.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/particles/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/particles.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-shine",
      "type": "registry:ui",
      "title": "Shine",
      "description": "An animated light sweep effect with configurable timing, colors, and triggers (hover, tap, or continuous).",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/shine/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/shine.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-slide",
      "type": "registry:ui",
      "title": "Slide",
      "description": "An effect that allows you to animate elements with a slide effect on first view or load.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/slide/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/slide.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-theme-toggler",
      "type": "registry:ui",
      "title": "Theme Toggler",
      "description": "An effect that allows you to toggle the theme gradually.",
      "files": [
        {
          "path": "registry/primitives/effects/theme-toggler/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/theme-toggler.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-tilt",
      "type": "registry:ui",
      "title": "Tilt",
      "description": "An effect that allows you to animate elements with a tilt effect on mouse hover.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/tilt/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/tilt.tsx"
        }
      ]
    },
    {
      "name": "primitives-effects-zoom",
      "type": "registry:ui",
      "title": "Zoom",
      "description": "An effect that allows you to animate elements with a zoom effect on first view or load.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-animate-slot",
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/effects/zoom/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/effects/zoom.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-checkbox",
      "type": "registry:ui",
      "title": "Headless Checkbox",
      "description": "Checkboxes provide the same functionality as native HTML checkboxes, without any of the styling, giving you a clean slate to design them however you'd like.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/checkbox.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-dialog",
      "type": "registry:ui",
      "title": "Headless Dialog",
      "description": "A fully-managed, renderless dialog component jam-packed with accessibility and keyboard features, perfect for building completely custom dialogs and alerts.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/dialog.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-disclosure",
      "type": "registry:ui",
      "title": "Headless Disclosure",
      "description": "A simple, accessible foundation for building custom UIs that show and hide content, like togglable accordion panels.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/disclosure/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/disclosure.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-popover",
      "type": "registry:ui",
      "title": "Headless Popover",
      "description": "Popovers are perfect for floating panels with arbitrary content like navigation menus, mobile menus and flyout menus.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/popover.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-switch",
      "type": "registry:ui",
      "title": "Headless Switch",
      "description": "Switches are a pleasant interface for toggling a value between two states, and offer the same semantics and keyboard navigation as native checkbox elements.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/switch.tsx"
        }
      ]
    },
    {
      "name": "primitives-headless-tabs",
      "type": "registry:ui",
      "title": "Headless Tabs",
      "description": "Easily create accessible, fully customizable tab interfaces, with robust focus management and keyboard navigation support.",
      "dependencies": [
        "motion",
        "@headlessui/react"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/primitives-effects-auto-height"
      ],
      "files": [
        {
          "path": "registry/primitives/headless/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/headless/switch.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-accordion",
      "type": "registry:ui",
      "title": "Radix Accordion",
      "description": "A vertically stacked set of interactive headings that each reveal an associated section of content.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/accordion/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/accordion.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-alert-dialog",
      "type": "registry:ui",
      "title": "Radix Alert Dialog",
      "description": "A modal dialog that interrupts the user with important content and expects a response.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/alert-dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/alert-dialog.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-checkbox",
      "type": "registry:ui",
      "title": "Radix Checkbox",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/checkbox/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/checkbox.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-collapsible",
      "type": "registry:ui",
      "title": "Radix Collapsible",
      "description": "An interactive component which expands/collapses a panel.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/collapsible/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/collapsible.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-dialog",
      "type": "registry:ui",
      "title": "Radix Dialog",
      "description": "A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/dialog/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/dialog.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-dropdown-menu",
      "type": "registry:ui",
      "title": "Radix Dropdown Menu",
      "description": "Displays a menu to the user — such as a set of actions or functions — triggered by a button.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/hooks-use-data-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/dropdown-menu/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/dropdown-menu.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-files",
      "type": "registry:ui",
      "title": "Files",
      "description": "A component that allows you to display a list of files and folders.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-radix-accordion",
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/files/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/files.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-hover-card",
      "type": "registry:ui",
      "title": "Radix Hover Card",
      "description": "For sighted users to preview content available behind a link.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/hover-card/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/hover-card.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-popover",
      "type": "registry:ui",
      "title": "Radix Popover",
      "description": "Displays rich content in a portal, triggered by a button.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/popover/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/popover.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-progress",
      "type": "registry:ui",
      "title": "Radix Progress",
      "description": "Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/progress/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/progress.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-radio-group",
      "type": "registry:ui",
      "title": "Radix Radio Group",
      "description": "A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/radio-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/radio-group.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-sheet",
      "type": "registry:ui",
      "title": "Radix Sheet",
      "description": "Extends the Dialog component to display content that complements the main content of the screen.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/sheet/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/sheet.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-switch",
      "type": "registry:ui",
      "title": "Radix Switch",
      "description": "A control that allows the user to toggle between checked and not checked.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/switch/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/switch.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-tabs",
      "type": "registry:ui",
      "title": "Radix Tabs",
      "description": "A set of layered sections of content—known as tab panels—that are displayed one at a time.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/primitives-effects-auto-height",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/tabs.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-toggle",
      "type": "registry:ui",
      "title": "Radix Toggle",
      "description": "A two-state button that can be either on or off.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/toggle/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/toggle.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-toggle-group",
      "type": "registry:ui",
      "title": "Radix Toggle Group",
      "description": "A set of two-state buttons that can be toggled on or off.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/primitives-effects-highlight",
        "@odysseyui/lib-get-strict-context",
        "@odysseyui/hooks-use-controlled-state"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/toggle-group/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/toggle-group.tsx"
        }
      ]
    },
    {
      "name": "primitives-radix-tooltip",
      "type": "registry:ui",
      "title": "Radix Tooltip",
      "description": "A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.",
      "dependencies": [
        "motion",
        "radix-ui"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-controlled-state",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/radix/tooltip/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/radix/tooltip.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-counting-number",
      "type": "registry:ui",
      "title": "Counting Number",
      "description": "A counting number animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/counting-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/counting-number.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-gradient",
      "type": "registry:ui",
      "title": "Gradient Text",
      "description": "A gradient text animation.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/gradient/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/gradient.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-highlight",
      "type": "registry:ui",
      "title": "Highlight Text",
      "description": "A highlight text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/highlight/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/highlight.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-morphing",
      "type": "registry:ui",
      "title": "Morphing Text",
      "description": "A text component that smoothly morphs characters to transition between strings.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/morphing/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/morphing.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-rolling",
      "type": "registry:ui",
      "title": "Rolling Text",
      "description": "A rolling text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/rolling/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/rolling.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-rotating",
      "type": "registry:ui",
      "title": "Rotating Text",
      "description": "A rotating text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/rotating/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/rotating.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-scrolling-number",
      "type": "registry:ui",
      "title": "Scrolling Number",
      "description": "A scrolling number animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/scrolling-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/scrolling-number.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-shimmering",
      "type": "registry:ui",
      "title": "Shimmering Text",
      "description": "A shimmering text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/shimmering/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/shimmering.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-sliding-number",
      "type": "registry:ui",
      "title": "Sliding Number",
      "description": "A sliding number animation.",
      "dependencies": [
        "motion",
        "react-use-measure"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/sliding-number/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/sliding-number.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-splitting",
      "type": "registry:ui",
      "title": "Splitting Text",
      "description": "A splitting text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/splitting/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/splitting.tsx"
        }
      ]
    },
    {
      "name": "primitives-texts-typing",
      "type": "registry:ui",
      "title": "Typing Text",
      "description": "A typing text animation.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@odysseyui/hooks-use-is-in-view",
        "@odysseyui/lib-get-strict-context"
      ],
      "files": [
        {
          "path": "registry/primitives/texts/typing/index.tsx",
          "type": "registry:ui",
          "target": "components/odysseyui/primitives/texts/typing.tsx"
        }
      ]
    }
  ]
}