{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "pixelbits",
  "homepage": "https://pixelbits.ali-moradi-develop.com",
  "items": [
    {
      "name": "pixelbits-base",
      "type": "registry:lib",
      "title": "Pixelbits base",
      "description": "Tokens, the Tailwind v4 theme, pixel CSS and the shared helpers. Import components/pixelbits/pixelbits.css after tailwindcss.",
      "dependencies": [
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "lib/anchor.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/anchor.ts"
        },
        {
          "path": "lib/icons.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/icons.tsx"
        },
        {
          "path": "lib/listbox.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/listbox.tsx"
        },
        {
          "path": "lib/motion.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/motion.ts"
        },
        {
          "path": "lib/slot.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/slot.tsx"
        },
        {
          "path": "lib/use-controllable.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/use-controllable.ts"
        },
        {
          "path": "lib/use-popup.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/lib/use-popup.ts"
        },
        {
          "path": "pixels/PixelSpinner.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/pixels/PixelSpinner.tsx"
        },
        {
          "path": "pixels/Pixels.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/pixels/Pixels.tsx"
        },
        {
          "path": "pixels/RollLabel.tsx",
          "type": "registry:lib",
          "target": "components/pixelbits/pixels/RollLabel.tsx"
        },
        {
          "path": "pixels/index.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/pixels/index.ts"
        },
        {
          "path": "pixels/noise.ts",
          "type": "registry:lib",
          "target": "components/pixelbits/pixels/noise.ts"
        },
        {
          "path": "pixelbits.css",
          "type": "registry:file",
          "target": "components/pixelbits/pixelbits.css"
        }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Stacked sections that expand and collapse. Built on native `<details>`/`<summary>`: keyboard, screen readers, find-in-page and printing work without JavaScript, and the component ships no client code.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/accordion.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/accordion.tsx"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "A 5 x 5 mirrored pixel pattern derived from `seed` (same seed, same pattern), drawn in the text color with one accent pixel. Used as the avatar fallback; also handy as a placeholder anywhere.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/avatar.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/avatar.tsx"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A short, non-interactive label for status or metadata. Text is set in the mono face.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/badge.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/badge.tsx"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "Where the page sits in the site: a navigation landmark with an ordered list; the last item is marked `aria-current=\"page\"`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/breadcrumb.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/breadcrumb.tsx"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "The kit's signature button: on hover or keyboard focus a grid of squares dissolves in behind the label, then the label switches to the ink color. The squares are created on the first interaction only.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/button.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/button.tsx"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "A container for one item: a project, a post, a product. Use it in two ways:",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/card.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/card.tsx"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A native checkbox, styled: it stays a real `<input type=\"checkbox\">`, so forms, keyboard and screen readers work without JavaScript. When checked, the box fills in three pixel steps.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json"
      ],
      "files": [
        {
          "path": "components/checkbox.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/checkbox.tsx"
        }
      ]
    },
    {
      "name": "combobox",
      "type": "registry:ui",
      "title": "Combobox",
      "description": "A text field with a filtered list of choices, for long lists where people type to search (people, countries, components). Follows the ARIA combobox pattern: focus stays in the input, arrows move through the list, Enter picks, Escape closes (and clears the text when already closed). Matching text is highlighted.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json",
        "https://pixelbits.ali-moradi-develop.com/r/input.json"
      ],
      "files": [
        {
          "path": "components/combobox.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/combobox.tsx"
        }
      ]
    },
    {
      "name": "command-palette",
      "type": "registry:ui",
      "title": "Command Palette",
      "description": "A searchable list of commands in a modal (⌘K). Typing filters by label, group and keywords (all words must match); arrows move, Enter runs, Escape closes. Focus stays in the search field (`aria-activedescendant`).",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/dialog.json"
      ],
      "files": [
        {
          "path": "components/command-palette.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/command-palette.tsx"
        }
      ]
    },
    {
      "name": "cursor-trail",
      "type": "registry:ui",
      "title": "Cursor Trail",
      "description": "Small pixel squares that trail the mouse: each one shrinks toward its center and fades out in pixel steps, snapped to a grid. Fast moves are filled in along the path, so the trail never breaks into gaps. One fixed `<canvas>` that only animates while squares are alive; off on touch screens and under reduced motion. Purely decorative.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/cursor-trail.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/cursor-trail.tsx"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A modal dialog on the native `<dialog>` element: the page behind becomes inert, focus is trapped and returns to the trigger, Escape closes it, and it sits in the top layer above everything. Page scrolling is locked while it is open.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/dialog.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/dialog.tsx"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "A menu of actions opened from a button (the ARIA menu button pattern). Keyboard: Enter, Space or arrows open it with focus on an item; arrows, Home/End and typing move; Enter or Space runs the item; Escape closes and returns focus to the trigger; Tab closes. The focused item fills with pixels.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/dropdown-menu.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/dropdown-menu.tsx"
        }
      ]
    },
    {
      "name": "field",
      "type": "registry:ui",
      "title": "Field",
      "description": "Label, control, helper text and error in one, with the accessibility wiring done: the label points at the control, the text is linked with `aria-describedby`, and an error sets `aria-invalid`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/field.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/field.tsx"
        }
      ]
    },
    {
      "name": "full-screen-menu",
      "type": "registry:ui",
      "title": "Full Screen Menu",
      "description": "The portfolio's full-screen menu: a modal of large cells; hovering or focusing a cell dissolves it to the ink color while its label rolls up. Built on a native `<dialog>` (focus trap, Escape, top layer), with links inside a `<nav>`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/full-screen-menu.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/full-screen-menu.tsx"
        }
      ]
    },
    {
      "name": "icon-button",
      "type": "registry:ui",
      "title": "Icon Button",
      "description": "A square button for a single icon, with the same variants and pixel dissolve as `Button`. Pass the icon (any SVG, e.g. from lucide-react) as the child; it is sized to the text.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/button.json"
      ],
      "files": [
        {
          "path": "components/icon-button.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/icon-button.tsx"
        }
      ]
    },
    {
      "name": "image-reveal",
      "type": "registry:ui",
      "title": "Image Reveal",
      "description": "An image that resolves from a coarse pixel mosaic to sharp, in a few stepped frames. One `<canvas>` over a normal `<img>` (so the image keeps its alt text, lazy loading and SEO); the canvas only draws and never reads pixels, so cross-origin images work. With reduced motion the image just appears.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/image-reveal.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/image-reveal.tsx"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A single-line text field. Inside a `Field` it picks up its id, label, description and error automatically. All native input props are passed to the `<input>`; the ref points at it too.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json"
      ],
      "files": [
        {
          "path": "components/input.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/input.tsx"
        }
      ]
    },
    {
      "name": "magnetic",
      "type": "registry:ui",
      "title": "Magnetic",
      "description": "Pulls its child toward the pointer when it comes close, and lets it spring back. Only on devices with a fine pointer and without reduced motion; the transform is set directly (no React render per frame).",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/magnetic.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/magnetic.tsx"
        }
      ]
    },
    {
      "name": "marquee",
      "type": "registry:ui",
      "title": "Marquee",
      "description": "An endless horizontal ticker (logos, keywords). CSS only: the content is rendered twice and translated; the copy is hidden from assistive technology, and edges fade out. Under reduced motion it stops and becomes scrollable.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/marquee.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/marquee.tsx"
        }
      ]
    },
    {
      "name": "number-ticker",
      "type": "registry:ui",
      "title": "Number Ticker",
      "description": "A number whose digits roll like a counter, in pixel steps. Each digit is a CSS-transformed column (no JavaScript animation); screen readers read the formatted value once. Reduced motion shows the value without rolling.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/number-ticker.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/number-ticker.tsx"
        }
      ]
    },
    {
      "name": "page-transition",
      "type": "registry:ui",
      "title": "Page Transition",
      "description": "A full-screen pixel dissolve between pages, drawn on one fixed `<canvas>` (not thousands of elements), started with `pixelTransition()`. Squares fill in a noisy left-to-right sweep, then clear the same way. Reduced motion turns it into a short plain fade.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/page-transition.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/page-transition.tsx"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Page navigation for long lists, in the kit's pixel style: square cells with cut pixel corners, the pixel dissolve on hover and focus, the current page filled with the accent, pixel arrows and a dotted gap. The current page is marked with `aria-current=\"page\"`; previous/next are disabled at the ends.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/pagination.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/pagination.tsx"
        }
      ]
    },
    {
      "name": "pixel-loader",
      "type": "registry:ui",
      "title": "Pixel Loader",
      "description": "Pixel loaders, CSS only, colored by `currentColor` with accent squares. Every animation starts mid-cycle, so a loader is already moving on its first frame. They slow down under reduced motion.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/pixel-loader.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/pixel-loader.tsx"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A small non-modal panel attached to a trigger, for extra details or quick actions. It sits in the top layer (never clipped) and closes on outside click, Escape, or the trigger. Focus stays where the user put it; use `Dialog` when the panel must be dealt with first.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/popover.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/popover.tsx"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "Shows how far a task has come. `role=\"progressbar\"` with the value exposed to screen readers; without a value it is indeterminate (a pixel band glides across). CSS only; the bar grows with a GPU transform.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/progress.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/progress.tsx"
        }
      ]
    },
    {
      "name": "radio",
      "type": "registry:ui",
      "title": "Radio",
      "description": "A set of `Radio` buttons where only one can be selected. Built on native radios, so arrow keys move the selection and forms submit the value.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/radio.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/radio.tsx"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "Pick one value from a short list. A button opens a listbox in the top layer (the native popover API, so it is never clipped by a parent; it closes on outside click, Escape and Tab). Keyboard: Enter, Space or arrows open; arrows, Home and End move; typing jumps to a matching option; Enter or Space picks.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json",
        "https://pixelbits.ali-moradi-develop.com/r/input.json"
      ],
      "files": [
        {
          "path": "components/select.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/select.tsx"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "A placeholder while content loads: a fine pixel texture with a soft light gliding across it. CSS only; the glide is a GPU transform that starts mid-sweep, so it never looks frozen. Hidden from screen readers; announce loading elsewhere (for example `aria-busy` on the region).",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/skeleton.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/skeleton.tsx"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A single-value slider. A native `<input type=\"range\">`, styled, so keyboard (arrows, Page Up/Down, Home/End), touch, forms and screen readers work out of the box. Give it a name with `Field`, `aria-label` or `aria-labelledby`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json"
      ],
      "files": [
        {
          "path": "components/slider.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/slider.tsx"
        }
      ]
    },
    {
      "name": "spotlight-card",
      "type": "registry:ui",
      "title": "Spotlight Card",
      "description": "A card with a soft accent glow (and a pixel grid) that follows the pointer. The position is written to CSS variables on pointer move, so React never re-renders; keyboard focus inside the card lights it from the center.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/spotlight-card.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/spotlight-card.tsx"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "An on/off switch for settings that apply at once. It is a native checkbox with `role=\"switch\"`; the square thumb moves in pixel steps.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json"
      ],
      "files": [
        {
          "path": "components/switch.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/switch.tsx"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A data table: semantic `<table>` markup with the kit's styling, in a container that scrolls horizontally on small screens. Compose it from `TableHeader`, `TableBody`, `TableRow`, `TableHead` and `TableCell`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/table.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/table.tsx"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Switch between views in the same place. Follows the ARIA tabs pattern: one tab stop, arrows (and Home/End) move and activate, panels are linked to their tabs.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/tabs.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/tabs.tsx"
        }
      ]
    },
    {
      "name": "tag",
      "type": "registry:ui",
      "title": "Tag",
      "description": "A token for applied filters, selected values or keywords, optionally removable.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/tag.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/tag.tsx"
        }
      ]
    },
    {
      "name": "text-link",
      "type": "registry:ui",
      "title": "Text Link",
      "description": "A text link. All native anchor props (`href`, `target`, `rel`…) are passed through. Named `TextLink` so it never clashes with Next.js `Link`: use both together with `asChild`.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/text-link.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/text-link.tsx"
        }
      ]
    },
    {
      "name": "text-scramble",
      "type": "registry:ui",
      "title": "Text Scramble",
      "description": "Text that decrypts from random glyphs, left to right, into the real words. The final text is laid out invisibly underneath, so the width never jumps; screen readers get the final text only. Frames update the DOM directly (no React render per frame). Reduced motion shows the text at once.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/text-scramble.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/text-scramble.tsx"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A multi-line text field with the same frame as `Input`. Works inside a `Field` like every kit control.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/field.json",
        "https://pixelbits.ali-moradi-develop.com/r/input.json"
      ],
      "files": [
        {
          "path": "components/textarea.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/textarea.tsx"
        }
      ]
    },
    {
      "name": "toast",
      "type": "registry:ui",
      "title": "Toast",
      "description": "The place where toasts appear. Mount it once, near the root of the app. It is a polite live region, so screen readers announce new toasts without interrupting, and it sits in the top layer (above open dialogs).",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/toast.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/toast.tsx"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A short label that appears on hover and on keyboard focus, linked to its element with `aria-describedby`. Escape hides it. Never put interactive content or essential information only in a tooltip.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "components/tooltip.tsx",
          "type": "registry:ui",
          "target": "components/pixelbits/ui/tooltip.tsx"
        }
      ]
    },
    {
      "name": "block-feature-grid",
      "type": "registry:block",
      "title": "Feature Grid",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "blocks/feature-grid.tsx",
          "type": "registry:block",
          "target": "components/pixelbits/blocks/feature-grid.tsx"
        }
      ]
    },
    {
      "name": "block-hero",
      "type": "registry:block",
      "title": "Hero",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/badge.json",
        "https://pixelbits.ali-moradi-develop.com/r/text-scramble.json"
      ],
      "files": [
        {
          "path": "blocks/hero.tsx",
          "type": "registry:block",
          "target": "components/pixelbits/blocks/hero.tsx"
        }
      ]
    },
    {
      "name": "block-pricing",
      "type": "registry:block",
      "title": "Pricing",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/badge.json",
        "https://pixelbits.ali-moradi-develop.com/r/button.json",
        "https://pixelbits.ali-moradi-develop.com/r/tabs.json"
      ],
      "files": [
        {
          "path": "blocks/pricing.tsx",
          "type": "registry:block",
          "target": "components/pixelbits/blocks/pricing.tsx"
        }
      ]
    },
    {
      "name": "block-site-footer",
      "type": "registry:block",
      "title": "Site Footer",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json"
      ],
      "files": [
        {
          "path": "blocks/site-footer.tsx",
          "type": "registry:block",
          "target": "components/pixelbits/blocks/site-footer.tsx"
        }
      ]
    },
    {
      "name": "block-site-header",
      "type": "registry:block",
      "title": "Site Header",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "https://pixelbits.ali-moradi-develop.com/r/pixelbits-base.json",
        "https://pixelbits.ali-moradi-develop.com/r/button.json",
        "https://pixelbits.ali-moradi-develop.com/r/full-screen-menu.json"
      ],
      "files": [
        {
          "path": "blocks/site-header.tsx",
          "type": "registry:block",
          "target": "components/pixelbits/blocks/site-header.tsx"
        }
      ]
    }
  ]
}
