{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "sellbase",
  "homepage": "https://jlgavel011.github.io/sellbase",
  "items": [
    {
      "name": "theme",
      "type": "registry:component",
      "title": "theme",
      "description": "CSS variables every component uses. Import it once in your global CSS.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/sellbase/theme.css",
          "type": "registry:file",
          "target": "components/sellbase/theme.css"
        }
      ]
    },
    {
      "name": "icons",
      "type": "registry:component",
      "title": "icons",
      "description": "Inline SVG icons (cart, close, calendar, truck, download, image) used by the other components.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "components/sellbase/icons.tsx",
          "type": "registry:file",
          "target": "components/sellbase/icons.tsx"
        }
      ]
    },
    {
      "name": "product-card",
      "type": "registry:component",
      "title": "product-card",
      "description": "One product tile with image, title and price.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json",
        "https://jlgavel011.github.io/sellbase/r/icons.json"
      ],
      "files": [
        {
          "path": "components/sellbase/product-card.tsx",
          "type": "registry:file",
          "target": "components/sellbase/product-card.tsx"
        }
      ]
    },
    {
      "name": "product-grid",
      "type": "registry:component",
      "title": "product-grid",
      "description": "Responsive grid of active products, optionally one collection.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/product-card.json"
      ],
      "files": [
        {
          "path": "components/sellbase/product-grid.tsx",
          "type": "registry:file",
          "target": "components/sellbase/product-grid.tsx"
        }
      ]
    },
    {
      "name": "product-carousel",
      "type": "registry:component",
      "title": "product-carousel",
      "description": "Horizontal row of products (a collection or the latest), with arrow buttons.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/product-card.json"
      ],
      "files": [
        {
          "path": "components/sellbase/product-carousel.tsx",
          "type": "registry:file",
          "target": "components/sellbase/product-carousel.tsx"
        }
      ]
    },
    {
      "name": "variant-picker",
      "type": "registry:component",
      "title": "variant-picker",
      "description": "Option chips (Talla, Color…) built from the variants; marks sold-out combinations; keyboard friendly.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/variant-picker.tsx",
          "type": "registry:file",
          "target": "components/sellbase/variant-picker.tsx"
        }
      ]
    },
    {
      "name": "booking-picker",
      "type": "registry:component",
      "title": "booking-picker",
      "description": "Day and time picker for services, in the store time zone.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/booking-picker.tsx",
          "type": "registry:file",
          "target": "components/sellbase/booking-picker.tsx"
        }
      ]
    },
    {
      "name": "product-detail",
      "type": "registry:component",
      "title": "product-detail",
      "description": "Product page: gallery, variant picker, availability and add to cart.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json",
        "https://jlgavel011.github.io/sellbase/r/booking-picker.json",
        "https://jlgavel011.github.io/sellbase/r/variant-picker.json"
      ],
      "files": [
        {
          "path": "components/sellbase/product-detail.tsx",
          "type": "registry:file",
          "target": "components/sellbase/product-detail.tsx"
        }
      ]
    },
    {
      "name": "product-seo",
      "type": "registry:component",
      "title": "product-seo",
      "description": "schema.org Product/Offer JSON-LD for product pages (search engines show price and stock).",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json"
      ],
      "files": [
        {
          "path": "components/sellbase/product-seo.tsx",
          "type": "registry:file",
          "target": "components/sellbase/product-seo.tsx"
        }
      ]
    },
    {
      "name": "discount-input",
      "type": "registry:component",
      "title": "discount-input",
      "description": "Discount code field with the server's explanation when a code does not apply.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/discount-input.tsx",
          "type": "registry:file",
          "target": "components/sellbase/discount-input.tsx"
        }
      ]
    },
    {
      "name": "cart-lines",
      "type": "registry:component",
      "title": "cart-lines",
      "description": "Cart lines with quantity controls and the totals computed by the server (used by cart-drawer and cart-page).",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/cart-lines.tsx",
          "type": "registry:file",
          "target": "components/sellbase/cart-lines.tsx"
        }
      ]
    },
    {
      "name": "cart-drawer",
      "type": "registry:component",
      "title": "cart-drawer",
      "description": "Cart button with count and a side panel with lines, discount code and totals (focus-trapped, Escape closes).",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/cart-lines.json",
        "https://jlgavel011.github.io/sellbase/r/discount-input.json",
        "https://jlgavel011.github.io/sellbase/r/icons.json"
      ],
      "files": [
        {
          "path": "components/sellbase/cart-drawer.tsx",
          "type": "registry:file",
          "target": "components/sellbase/cart-drawer.tsx"
        }
      ]
    },
    {
      "name": "cart-page",
      "type": "registry:component",
      "title": "cart-page",
      "description": "Full cart page (e.g. /carrito) with lines, discount code, totals and checkout button.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/cart-lines.json",
        "https://jlgavel011.github.io/sellbase/r/discount-input.json"
      ],
      "files": [
        {
          "path": "components/sellbase/cart-page.tsx",
          "type": "registry:file",
          "target": "components/sellbase/cart-page.tsx"
        }
      ]
    },
    {
      "name": "checkout",
      "type": "registry:component",
      "title": "checkout",
      "description": "Checkout form: email, address, shipping option, summary and redirect to pay.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/checkout.tsx",
          "type": "registry:file",
          "target": "components/sellbase/checkout.tsx"
        }
      ]
    },
    {
      "name": "order-status",
      "type": "registry:component",
      "title": "order-status",
      "description": "Return page after paying (confirming → paid, with the order summary) and \"where is my order?\" lookup.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json",
        "https://jlgavel011.github.io/sellbase/r/icons.json"
      ],
      "files": [
        {
          "path": "components/sellbase/order-status.tsx",
          "type": "registry:file",
          "target": "components/sellbase/order-status.tsx"
        }
      ]
    },
    {
      "name": "download-page",
      "type": "registry:component",
      "title": "download-page",
      "description": "Page for download links: file, downloads left, expiry, and friendly expired/used states.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "files": [
        {
          "path": "components/sellbase/download-page.tsx",
          "type": "registry:file",
          "target": "components/sellbase/download-page.tsx"
        }
      ]
    },
    {
      "name": "provider",
      "type": "registry:component",
      "title": "provider",
      "description": "SellbaseStoreProvider: connects the storefront components to your Sellbase API.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/theme.json"
      ],
      "envVars": {
        "NEXT_PUBLIC_SELLBASE_URL": "http://127.0.0.1:54321/functions/v1/sellbase-api",
        "NEXT_PUBLIC_SUPABASE_ANON_KEY": ""
      },
      "docs": "Sellbase storefront components need the Sellbase backend in your Supabase: run `npx sellbase init --yes`. Wrap the app in SellbaseStoreProvider (components/sellbase/provider.tsx) and import components/sellbase/theme.css in your global CSS. Guide: https://jlgavel011.github.io/sellbase/guides/nextjs-supabase-ecommerce.html",
      "files": [
        {
          "path": "components/sellbase/provider.tsx",
          "type": "registry:file",
          "target": "components/sellbase/provider.tsx"
        }
      ]
    },
    {
      "name": "store",
      "type": "registry:block",
      "title": "Sellbase store",
      "description": "Everything for a storefront: provider, theme, product grid, carousel and detail, SEO, cart drawer and page, checkout and order status.",
      "dependencies": [
        "@sellbase/react"
      ],
      "registryDependencies": [
        "https://jlgavel011.github.io/sellbase/r/provider.json",
        "https://jlgavel011.github.io/sellbase/r/theme.json",
        "https://jlgavel011.github.io/sellbase/r/product-grid.json",
        "https://jlgavel011.github.io/sellbase/r/product-carousel.json",
        "https://jlgavel011.github.io/sellbase/r/product-detail.json",
        "https://jlgavel011.github.io/sellbase/r/product-seo.json",
        "https://jlgavel011.github.io/sellbase/r/cart-drawer.json",
        "https://jlgavel011.github.io/sellbase/r/cart-page.json",
        "https://jlgavel011.github.io/sellbase/r/checkout.json",
        "https://jlgavel011.github.io/sellbase/r/order-status.json"
      ],
      "files": []
    }
  ]
}