{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "emboss",
  "homepage": "https://embossui.vercel.app",
  "items": [
    {
      "name": "tokens",
      "type": "registry:theme",
      "title": "Emboss Tokens",
      "description": "The Emboss design tokens: a light-vector-derived elevation system, oklch surfaces and ink locked by contrast tests, machined radii, and spring-matched easings for both color schemes.",
      "cssVars": {
        "theme": {
          "color-surface-0": "var(--surface-0)",
          "color-surface-1": "var(--surface-1)",
          "color-surface-2": "var(--surface-2)",
          "color-surface-3": "var(--surface-3)",
          "color-well": "var(--well-bg)",
          "color-well-deep": "var(--well-deep-bg)",
          "color-ink": "var(--ink)",
          "color-ink-muted": "var(--ink-muted)",
          "color-ink-faint": "var(--ink-faint)",
          "color-ink-inverse": "var(--ink-inverse)",
          "color-accent": "var(--accent)",
          "color-accent-deep": "var(--accent-deep)",
          "color-accent-fg": "var(--accent-fg)",
          "color-accent-ink": "var(--accent-ink)",
          "color-accent-surface": "var(--accent-surface)",
          "color-positive": "var(--positive)",
          "color-positive-fg": "var(--positive-fg)",
          "color-positive-surface": "var(--positive-surface)",
          "color-warning": "var(--warning)",
          "color-warning-fg": "var(--warning-fg)",
          "color-warning-surface": "var(--warning-surface)",
          "color-danger": "var(--danger)",
          "color-danger-fg": "var(--danger-fg)",
          "color-danger-surface": "var(--danger-surface)",
          "color-info": "var(--info)",
          "color-info-fg": "var(--info-fg)",
          "color-info-surface": "var(--info-surface)",
          "color-focus": "var(--focus)",
          "color-edge-line": "var(--edge-line)",
          "color-edge-strong": "var(--edge-strong)",
          "shadow-deboss-2": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 2.5px * var(--depth)) calc(var(--away-y) * 2.5px * var(--depth)) calc(4px * var(--depth)) 0 var(--well-shade), inset calc(var(--away-x) * 1px * var(--depth)) calc(var(--away-y) * 1px * var(--depth)) calc(8px * var(--depth)) 0 var(--well-shade), inset calc(var(--light-x) * 1px) calc(var(--light-y) * 1px) 0 0 var(--well-glint), calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--lip)",
          "shadow-deboss-1": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1.5px * var(--depth)) calc(var(--away-y) * 1.5px * var(--depth)) calc(2px * var(--depth)) 0 var(--well-shade), inset calc(var(--light-x) * 1px) calc(var(--light-y) * 1px) 0 0 var(--well-glint), calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--lip)",
          "shadow-flush": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi)",
          "shadow-emboss-1": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi), inset calc(var(--light-x) * 1px) calc(var(--light-y) * 1px) 0 0 var(--edge-lo), calc(var(--away-x) * 1.5px * var(--depth)) calc(var(--away-y) * 1.5px * var(--depth)) calc(2px * var(--depth)) -1px var(--umbra), calc(var(--away-x) * 4px * var(--depth)) calc(var(--away-y) * 4px * var(--depth)) calc(8px * var(--depth)) -2px var(--penumbra)",
          "shadow-emboss-2": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi), inset calc(var(--light-x) * 1px) calc(var(--light-y) * 1px) 0 0 var(--edge-lo), calc(var(--away-x) * 3px * var(--depth)) calc(var(--away-y) * 3px * var(--depth)) calc(4px * var(--depth)) -1px var(--umbra), calc(var(--away-x) * 8px * var(--depth)) calc(var(--away-y) * 8px * var(--depth)) calc(12px * var(--depth)) -2px var(--penumbra)",
          "shadow-emboss-3": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi), inset calc(var(--light-x) * 1px) calc(var(--light-y) * 1px) 0 0 var(--edge-lo), calc(var(--away-x) * 4.5px * var(--depth)) calc(var(--away-y) * 4.5px * var(--depth)) calc(6px * var(--depth)) -1px var(--umbra), calc(var(--away-x) * 12px * var(--depth)) calc(var(--away-y) * 12px * var(--depth)) calc(16px * var(--depth)) -2px var(--penumbra)",
          "shadow-float-1": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi), calc(var(--away-x) * 2px * var(--depth)) calc(var(--away-y) * 2px * var(--depth)) calc(4px * var(--depth)) -1px var(--umbra), calc(var(--away-x) * 8px * var(--depth)) calc(var(--away-y) * 8px * var(--depth)) calc(24px * var(--depth)) -4px var(--penumbra), 0 0 1px var(--penumbra)",
          "shadow-float-2": "0 0 0 1px var(--edge-line), inset calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 0 var(--edge-hi), calc(var(--away-x) * 4px * var(--depth)) calc(var(--away-y) * 4px * var(--depth)) calc(8px * var(--depth)) -2px var(--umbra), calc(var(--away-x) * 16px * var(--depth)) calc(var(--away-y) * 16px * var(--depth)) calc(48px * var(--depth)) -8px var(--penumbra), 0 0 1px var(--penumbra)",
          "radius-2xs": "calc(0.125rem * var(--radius-scale))",
          "radius-xs": "calc(0.25rem * var(--radius-scale))",
          "radius-sm": "calc(0.375rem * var(--radius-scale))",
          "radius-md": "calc(0.5rem * var(--radius-scale))",
          "radius-lg": "calc(0.75rem * var(--radius-scale))",
          "radius-xl": "calc(1rem * var(--radius-scale))",
          "radius-2xl": "calc(1rem * var(--radius-scale))",
          "radius-3xl": "calc(1rem * var(--radius-scale))",
          "font-sans": "var(--font-instrument-sans, \"Instrument Sans\"), ui-sans-serif, system-ui, sans-serif",
          "font-mono": "var(--font-jetbrains-mono, \"JetBrains Mono\"), ui-monospace, \"SF Mono\", Menlo, monospace",
          "text-label": "0.6875rem",
          "text-label--line-height": "1rem",
          "text-label--letter-spacing": "0.08em",
          "ease-press": "cubic-bezier(0.2, 0.8, 0.3, 1)",
          "ease-release": "linear( 0, 0.0829, 0.2663, 0.4771, 0.671, 0.8266, 0.9377, 1.0078, 1.045, 1.0585, 1.0571, 1.0477, 1.0354, 1.0233, 1.0132, 1.0057, 1.0007, 0.9979, 0.9967, 0.9965, 0.9969, 0.9976, 0.9984, 1 )",
          "duration-release": "481ms",
          "ease-settle": "linear( 0, 0.0768, 0.2458, 0.4404, 0.6215, 0.7702, 0.8812, 0.9566, 1.0027, 1.0268, 1.0359, 1.0357, 1.0307, 1.0237, 1.0167, 1.0107, 1.006, 1.0027, 1.0005, 0.9993, 0.9988, 0.9987, 0.9988, 1 )",
          "duration-settle": "428ms",
          "ease-float": "linear( 0, 0.0543, 0.1788, 0.3309, 0.4835, 0.6212, 0.7369, 0.8286, 0.8975, 0.9468, 0.98, 1.0009, 1.0126, 1.018, 1.0193, 1.0181, 1.0156, 1.0127, 1.0097, 1.0071, 1.0049, 1.0032, 1.0019, 1 )",
          "duration-float": "466ms",
          "duration-press": "80ms",
          "animate-depth-pulse": "emboss-depth-pulse 1.6s ease-in-out infinite",
          "animate-sheen": "emboss-sheen 1.8s ease-in-out infinite",
          "animate-progress-sweep": "emboss-progress-sweep 1.4s ease-in-out infinite"
        },
        "light": {
          "light-x": "-0.45",
          "light-y": "-0.89",
          "light-strength": "1",
          "depth": "1",
          "away-x": "calc(var(--light-x) * -1)",
          "away-y": "calc(var(--light-y) * -1)",
          "color-scheme": "light",
          "radius-scale": "1",
          "accent-h": "45",
          "edge-line": "oklch(0.8 0.008 250)",
          "edge-strong": "oklch(0.585 0.012 250)",
          "edge-hi": "oklch(1 0 0 / calc(0.9 * var(--light-strength)))",
          "edge-lo": "oklch(0.25 0.012 250 / calc(0.1 * var(--light-strength)))",
          "umbra": "oklch(0.22 0.012 250 / calc(0.24 * var(--light-strength)))",
          "penumbra": "oklch(0.22 0.012 250 / calc(0.12 * var(--light-strength)))",
          "well-shade": "oklch(0.2 0.012 250 / calc(0.22 * var(--light-strength)))",
          "well-glint": "oklch(1 0 0 / calc(0.7 * var(--light-strength)))",
          "lip": "oklch(1 0 0 / calc(0.55 * var(--light-strength)))",
          "surface-0": "oklch(0.955 0.004 250)",
          "surface-1": "oklch(0.975 0.004 250)",
          "surface-2": "oklch(0.99 0.003 250)",
          "surface-3": "oklch(1 0 0)",
          "well-bg": "oklch(0.93 0.005 250)",
          "well-deep-bg": "oklch(0.905 0.006 250)",
          "ink": "oklch(0.21 0.015 255)",
          "ink-muted": "oklch(0.45 0.02 255)",
          "ink-faint": "oklch(0.49 0.02 255)",
          "ink-inverse": "oklch(0.97 0.005 250)",
          "accent": "oklch(0.66 0.19 var(--accent-h))",
          "accent-deep": "oklch(0.6 0.19 var(--accent-h))",
          "accent-fg": "oklch(0.16 0.02 var(--accent-h))",
          "accent-ink": "oklch(0.5 0.15 var(--accent-h))",
          "accent-surface": "oklch(0.94 0.04 var(--accent-h))",
          "positive": "oklch(0.5 0.13 152)",
          "positive-fg": "oklch(0.985 0.01 152)",
          "positive-surface": "oklch(0.95 0.035 152)",
          "warning": "oklch(0.78 0.14 80)",
          "warning-fg": "oklch(0.25 0.06 80)",
          "warning-surface": "oklch(0.96 0.05 90)",
          "danger": "oklch(0.48 0.17 27)",
          "danger-fg": "oklch(0.985 0.01 27)",
          "danger-surface": "oklch(0.95 0.03 27)",
          "info": "oklch(0.5 0.12 252)",
          "info-fg": "oklch(0.985 0.01 252)",
          "info-surface": "oklch(0.95 0.03 252)",
          "focus": "oklch(0.55 0.16 225)",
          "control-sm": "2rem",
          "control-md": "2.25rem",
          "control-lg": "2.75rem"
        },
        "dark": {
          "color-scheme": "dark",
          "edge-line": "oklch(0.34 0.01 250)",
          "edge-strong": "oklch(0.58 0.014 250)",
          "edge-hi": "oklch(1 0 0 / calc(0.14 * var(--light-strength)))",
          "edge-lo": "oklch(0 0 0 / calc(0.5 * var(--light-strength)))",
          "umbra": "oklch(0 0 0 / calc(0.6 * var(--light-strength)))",
          "penumbra": "oklch(0 0 0 / calc(0.35 * var(--light-strength)))",
          "well-shade": "oklch(0 0 0 / calc(0.55 * var(--light-strength)))",
          "well-glint": "oklch(1 0 0 / calc(0.1 * var(--light-strength)))",
          "lip": "oklch(1 0 0 / calc(0.08 * var(--light-strength)))",
          "surface-0": "oklch(0.205 0.01 250)",
          "surface-1": "oklch(0.24 0.011 250)",
          "surface-2": "oklch(0.275 0.012 250)",
          "surface-3": "oklch(0.31 0.012 250)",
          "well-bg": "oklch(0.17 0.01 250)",
          "well-deep-bg": "oklch(0.15 0.01 250)",
          "ink": "oklch(0.93 0.008 255)",
          "ink-muted": "oklch(0.74 0.012 255)",
          "ink-faint": "oklch(0.69 0.015 255)",
          "ink-inverse": "oklch(0.21 0.015 255)",
          "accent-ink": "oklch(0.78 0.12 var(--accent-h))",
          "accent-surface": "oklch(0.3 0.06 var(--accent-h))",
          "positive-surface": "oklch(0.3 0.05 152)",
          "warning-surface": "oklch(0.3 0.05 90)",
          "danger-surface": "oklch(0.3 0.05 27)",
          "info-surface": "oklch(0.3 0.05 252)",
          "focus": "oklch(0.75 0.13 220)"
        }
      },
      "css": {
        "@keyframes emboss-depth-pulse": {
          "0%, 100%": {
            "opacity": "1"
          },
          "50%": {
            "opacity": "0"
          }
        },
        "@keyframes emboss-sheen": {
          "0%": {
            "transform": "translateX(-100%)"
          },
          "100%": {
            "transform": "translateX(100%)"
          }
        },
        "@keyframes emboss-progress-sweep": {
          "0%": {
            "translate": "-110% 0"
          },
          "100%": {
            "translate": "260% 0"
          }
        },
        "@layer base": {
          "*": {
            "border-color": "var(--edge-line)"
          },
          "body": {
            "background-color": "var(--surface-0)",
            "color": "var(--ink)"
          },
          "::selection": {
            "background-color": "var(--accent)",
            "color": "var(--accent-fg)"
          }
        },
        "@utility text-engraved": {
          "text-shadow": "calc(var(--away-x) * 1px) calc(var(--away-y) * 1px) 0 var(--edge-hi)"
        },
        "@utility focus-ring": {
          "outline": "2px solid transparent",
          "outline-offset": "2px",
          "&:focus-visible": {
            "outline-color": "var(--focus)"
          }
        },
        "@utility hit-area": {
          "position": "relative",
          "&::after": {
            "content": "\"\"",
            "position": "absolute",
            "left": "50%",
            "top": "50%",
            "width": "max(100%, 2.75rem)",
            "height": "max(100%, 2.75rem)",
            "transform": "translate(-50%, -50%)"
          }
        },
        "[data-light-dragging] *, [data-light-dragging] *::before, [data-light-dragging] *::after": {
          "transition": "none"
        },
        "@media (prefers-reduced-motion: reduce)": {
          "*, *::before, *::after": {
            "animation-duration": "0.01ms",
            "animation-iteration-count": "1",
            "transition-duration": "0.01ms",
            "scroll-behavior": "auto"
          }
        }
      },
      "docs": "Design tokens were merged into your CSS. Components read the --light-*, --depth, surface, and ink variables; dark mode uses the .dark class. Outside shadcn-initialized projects, enable class-based dark mode with: @custom-variant dark (&:where(.dark, .dark *));"
    },
    {
      "name": "style",
      "type": "registry:style",
      "extends": "none",
      "title": "Emboss Style",
      "description": "Initializes a project with the Emboss base: design tokens, the cn utility, and the dependencies shared by the tactile-depth component set.",
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority",
        "clsx",
        "tailwind-merge",
        "motion"
      ],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ]
    },
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Utils",
      "description": "The cn class-name utility combining clsx with tailwind-merge so consumer classes always win over component defaults.",
      "dependencies": ["clsx", "tailwind-merge"],
      "files": [
        {
          "path": "lib/utils.ts",
          "type": "registry:lib",
          "target": "lib/utils.ts"
        }
      ]
    },
    {
      "name": "springs",
      "type": "registry:lib",
      "title": "Springs",
      "description": "Named spring presets — press, release, settle, float, and detent — shared by every animated Emboss component so motion stays physically consistent.",
      "dependencies": [],
      "files": [
        {
          "path": "registry/emboss/lib/springs.ts",
          "type": "registry:lib",
          "target": "lib/springs.ts"
        }
      ]
    },
    {
      "name": "use-press",
      "type": "registry:hook",
      "title": "usePress",
      "description": "Press-physics state hook with pointer and keyboard parity. Sets data-pressed during a press and releases cancel-safely on pointer-up anywhere, key-up, or blur.",
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/emboss/hooks/use-press.ts",
          "type": "registry:hook",
          "target": "hooks/use-press.ts"
        }
      ]
    },
    {
      "name": "use-light-source",
      "type": "registry:hook",
      "title": "useLightSource",
      "description": "Drives the global light source behind every Emboss shadow. Writes the light vector inside a requestAnimationFrame loop so an entire page re-lights without React re-renders.",
      "registryDependencies": ["https://embossui.vercel.app/r/tokens.json"],
      "files": [
        {
          "path": "registry/emboss/hooks/use-light-source.ts",
          "type": "registry:hook",
          "target": "hooks/use-light-source.ts"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A momentary push button that rests embossed, depresses to flush while held, and springs back with a machined overshoot. Server-safe — the press physics are pure CSS; links can wear buttonVariants.",
      "categories": ["actions"],
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:ui",
      "title": "Kbd",
      "description": "A machined keycap for keyboard shortcuts: a semantic kbd element with a raised, lit-from-above profile that re-lights with the global light source.",
      "categories": ["actions"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/kbd.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "A surface for grouped content with three seatings: raised off the page, flush with it, or recessed into a well for stats and readouts. Composed of header, title, description, content, and footer parts.",
      "categories": ["display"],
      "dependencies": ["class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A recessed text well. Focus brightens the floor of the well and powers the focus ring; invalid state deepens the recess and inks the text in danger. Composes with Base UI Field for form wiring.",
      "categories": ["forms"],
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "A console slide switch with a sprung thumb that travels a milled channel, plus engraved I/O glyphs so state never relies on color and position alone. Controlled and uncontrolled, keyboard operable, form-ready.",
      "categories": ["forms"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Layered panels switched by a recessed rail of triggers. The active tab rises out of the rail like a key sitting proud in a milled slot; full arrow-key navigation comes from the underlying primitive.",
      "categories": ["navigation"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/tabs.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A multi-line recessed well with focus brightening and content-based growth in supporting browsers. Same depth grammar as the single-line input.",
      "categories": ["forms"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/textarea.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A small machined well that fills and rises when checked, with check and indeterminate glyphs so state reads through color, shape, and depth together. Controlled, uncontrolled, and form-ready.",
      "categories": ["forms"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "description": "Recessed circular wells where the selected option seats an embossed accent pin. Arrow keys rove between options; selection follows the roving focus.",
      "categories": ["forms"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/radio-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A picker with an embossed trigger and a floating option list; the highlighted option momentarily presses into the surface as you traverse. Full listbox keyboard behavior from the underlying primitive.",
      "categories": ["forms"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A fader with a milled channel, an embossed accent fill, and a thumb that lifts to a higher elevation while dragged. Keyboard steps, Home/End, and vertical orientation included.",
      "categories": ["forms", "hardware"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/slider.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:ui",
      "title": "Input OTP",
      "description": "A one-time-code field rendered as a row of milled cells over a single real input, so paste, autofill, and screen readers behave like a normal text field.",
      "categories": ["forms"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/input-otp.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A floating micro-plate that labels a control on hover or focus. Ink-inverse surface, mono shortcut hints, and a pure-CSS rise along the light vector.",
      "categories": ["overlay"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/tooltip.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A floating panel anchored to its trigger, with title and description wired for assistive tech. Rises to float elevation with the spring-matched ease.",
      "categories": ["overlay"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/popover.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A modal plate at the highest float elevation. Opening physically recesses the page behind a darkened backdrop; focus is trapped and returned on close.",
      "categories": ["overlay"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "An edge-anchored tray that slides in from any side and hovers above the page with a live penumbra. Built on the dialog primitive with full focus management.",
      "categories": ["overlay"],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "A floating menu of actions with submenus, checkbox and radio items. The highlighted row presses momentarily into the surface; destructive items carry danger ink.",
      "categories": ["overlay"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/dropdown-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toast",
      "type": "registry:ui",
      "title": "Toast",
      "description": "Floating notification plates with an imperative handle: call toast.add from anywhere and the mounted Toaster renders it. Timers, swipe, and live-region announcements included.",
      "categories": ["overlay"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/toast.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "A filtering command list with combobox semantics: focus stays in the input while a virtual highlight walks the visible options. Groups hide themselves when empty.",
      "categories": ["overlay"],
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/command.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "An etched part-number chip in neutral, semantic, and outline tints. State is always carried by the label text, never by tint alone.",
      "categories": ["display"],
      "dependencies": ["class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "A machined score line — a hairline groove whose catch-light follows the global light source. Horizontal or vertical, semantic by default.",
      "categories": ["display"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "A debossed empty pocket awaiting content, with a slow light sheen sweeping across it. Under reduced motion the recessed shape alone reads as a placeholder.",
      "categories": ["display"],
      "dependencies": [],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A semantic table with engraved hairline rules, an etched header strip, and hover rows that tint before they ever rely on depth.",
      "categories": ["display"],
      "dependencies": [],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/table.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Disclosure rows machined into one housing: closed items sit flush and the open panel recesses into the chassis with a sprung height transition.",
      "categories": ["display"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/accordion.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "A portrait set into a machined bezel — the image sits debossed inside the ring and the fallback engraves mono initials. Three sizes.",
      "categories": ["display"],
      "dependencies": ["@base-ui/react", "class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/avatar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "A trail of locations where the current page sits gently debossed — latched into the chassis — and carries aria-current for assistive tech.",
      "categories": ["navigation"],
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/breadcrumb.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Page navigation where the current page is a latched, pressed-in key with tabular numerals; previous and next read as momentary controls.",
      "categories": ["navigation"],
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/pagination.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "segmented-control",
      "type": "registry:ui",
      "title": "Segmented Control",
      "description": "A bank of positions milled into one housing. Exactly one segment is always engaged: a debossed carriage sits latched under it and glides between positions with a sprung settle.",
      "categories": ["navigation"],
      "dependencies": ["@base-ui/react", "motion"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json",
        "https://embossui.vercel.app/r/springs.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/segmented-control.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "A milled channel filling with accent. Indeterminate state runs a sweep along the channel instead of pretending to know the total.",
      "categories": ["hardware"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/progress.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "stepper",
      "type": "registry:ui",
      "title": "Stepper",
      "description": "A machined number input: a mono readout milled into the chassis flanked by keycap buttons that auto-repeat when held, with a drag-to-scrub readout.",
      "categories": ["hardware"],
      "dependencies": ["@base-ui/react", "lucide-react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/stepper.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "knob",
      "type": "registry:ui",
      "title": "Knob",
      "description": "A rotary control machined into a recess. Drag vertically to turn it, pro-audio style, or drive it entirely from the keyboard with fine and coarse steps; the cap settles with a sprung detent.",
      "categories": ["hardware"],
      "dependencies": ["motion"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json",
        "https://embossui.vercel.app/r/springs.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/knob.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "meter",
      "type": "registry:ui",
      "title": "Meter",
      "description": "A level meter milled into the chassis: safe, warning, and danger zones are painted into the channel and a shutter covers what the value has not reached.",
      "categories": ["hardware"],
      "dependencies": ["@base-ui/react"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/meter.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "chat-message",
      "type": "registry:ui",
      "title": "Chat Message",
      "description": "A conversation surface with physical turn-taking: user messages are plates placed onto the surface, assistant messages are milled into it, and the log is a polite live region.",
      "categories": ["ai"],
      "dependencies": ["class-variance-authority"],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/chat-message.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "thinking-indicator",
      "type": "registry:ui",
      "title": "Thinking Indicator",
      "description": "A working state machined into the surface: three pockets breathe between recessed and flush while the assistant thinks, announced through a status region with visible text.",
      "categories": ["ai"],
      "dependencies": [],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/thinking-indicator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "streaming-text",
      "type": "registry:ui",
      "title": "Streaming Text",
      "description": "Token-streaming text whose tail fades as if still being machined, with a blinking caret slab and aria-busy semantics — no per-character animation, no layout thrash.",
      "categories": ["ai"],
      "dependencies": [],
      "registryDependencies": [
        "https://embossui.vercel.app/r/tokens.json",
        "https://embossui.vercel.app/r/utils.json"
      ],
      "files": [
        {
          "path": "registry/emboss/ui/streaming-text.tsx",
          "type": "registry:ui"
        }
      ]
    }
  ]
}
