{
  "$schema": "https://zuilib.com/r/schema.json",
  "name": "zui",
  "package": "@zuilib/components",
  "version": "0.1.0",
  "homepage": "https://zuilib.com",
  "items": [
    {
      "version": "0.1.0",
      "name": "zui-styles",
      "type": "theme",
      "title": "ZUI styles",
      "description": "The stylesheet entry every ZUI component needs: the tokens (Tailwind @theme mapping, custom properties, keyframes) plus the component css Tailwind utilities cannot express (the slider track and thumb).",
      "dependencies": [],
      "registryDependencies": [
        "zui-tokens"
      ],
      "docs": "Add to your global stylesheet, after tailwindcss:\n  @import \"tailwindcss\";\n  @import \"./styles/zui/zui.css\";\n(adjust the relative path to where styles/zui/ landed). Dark mode: toggle the `dark` class on <html>.",
      "files": [
        {
          "path": "src/styles/slider.css",
          "target": "styles/zui/slider.css",
          "sha256": "ecdf7ff82ed8d0c8daebc9821e8b459a56424b475f9b8ed41ec6b590dd3a87b9"
        },
        {
          "path": "registry/zui.css",
          "target": "styles/zui/zui.css",
          "sha256": "2867f7db299309d6c90f79a55a503de54d0bf7da949a440707a66393c737cc62"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "zui-tokens",
      "type": "theme",
      "title": "ZUI tokens",
      "description": "The token contract of @zuilib/tokens: every custom property (colour, radius, type, control density, motion) with light and dark values, the keyframes and animation classes, plus the Tailwind v4 @theme mapping and base styles.",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "Tokens installed under styles/zui/. With Tailwind v4, import them after tailwindcss in your global stylesheet:\n  @import \"tailwindcss\";\n  @import \"./styles/zui/tailwind.css\";\n  @import \"./styles/zui/tokens.css\";\nWithout Tailwind, import styles/zui/tokens.css alone. Retheme by overriding the custom properties on :root or on any subtree.",
      "meta": {
        "package": "@zuilib/tokens"
      },
      "files": [
        {
          "path": "../tokens/src/light-tokens.css",
          "target": "styles/zui/light-tokens.css",
          "sha256": "d83e7f045ce44a97f6a9579d4ad9124b2228ddf83d0e616175d11e5da44c23cc"
        },
        {
          "path": "../tokens/src/dark-tokens.css",
          "target": "styles/zui/dark-tokens.css",
          "sha256": "cd320797a471735d308ea2517954315e0f4a78faee6b390a5d33b962119dfdb6"
        },
        {
          "path": "../tokens/src/keyframes.css",
          "target": "styles/zui/keyframes.css",
          "sha256": "b9d9608c5f17667b7bd92c16ee66d712be5536d687040c126ac0bf9934c805d0"
        },
        {
          "path": "../tokens/src/animations.css",
          "target": "styles/zui/animations.css",
          "sha256": "e2aa31ef17e52426ca41da2d159c471d730b471afd6dc8765ff2b71929a8f867"
        },
        {
          "path": "../tokens/src/theme.css",
          "target": "styles/zui/theme.css",
          "sha256": "ba7d16f3727699dd943b911db01f4430cb4f2335cd87750c3db3ea573f8c03ce"
        },
        {
          "path": "../tokens/src/base.css",
          "target": "styles/zui/base.css",
          "sha256": "4f1065a8af9a1f5e4f832c7b6ebadb98556176742d8227a970c5514ccaf96e4c"
        },
        {
          "path": "../tokens/src/tokens.css",
          "target": "styles/zui/tokens.css",
          "sha256": "82512328e6a4aa82ff7d6cd2eba348cc9a530d7688c133a900299ec7e350d86c"
        },
        {
          "path": "../tokens/src/tailwind.css",
          "target": "styles/zui/tailwind.css",
          "sha256": "c7aa2327fa85deea0f960bc6aa7c1d9289bc212c4972e7fc15bef896b8815637"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "accordion",
      "type": "component",
      "title": "Accordion",
      "description": "Single / multiple expandable items (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Accordion from '@/components/zui/accordion'",
      "meta": {
        "subpath": "@zuilib/components/accordion",
        "exportName": "Accordion"
      },
      "files": [
        {
          "path": "src/accordion.tsx",
          "target": "components/zui/accordion.tsx",
          "sha256": "17d56eee4e133698ad9fc58083da6dff5ffb642838b19c2e66fe55fddfe11f51"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "ai-button",
      "type": "component",
      "title": "AIButton",
      "description": "Button with sparkle / generating state",
      "dependencies": [],
      "registryDependencies": [
        "button",
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import AIButton from '@/components/zui/ai-button'",
      "meta": {
        "subpath": "@zuilib/components/ai-button",
        "exportName": "AIButton"
      },
      "files": [
        {
          "path": "src/ai-button.tsx",
          "target": "components/zui/ai-button.tsx",
          "sha256": "63c848625129ea086b5ad41ab22709634411b6eea0c2d556cf113533f6e30efd"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "alert",
      "type": "component",
      "title": "Alert",
      "description": "Inline status message, dismissible (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Alert from '@/components/zui/alert'",
      "meta": {
        "subpath": "@zuilib/components/alert",
        "exportName": "Alert"
      },
      "files": [
        {
          "path": "src/alert.tsx",
          "target": "components/zui/alert.tsx",
          "sha256": "9517df939a6f2573cf0d01d75843ef267433354f2585ced5cd7c2e136606bee6"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "avatar",
      "type": "component",
      "title": "Avatar",
      "description": "Image with initials fallback and status; `Avatar.Group`",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Avatar from '@/components/zui/avatar'",
      "meta": {
        "subpath": "@zuilib/components/avatar",
        "exportName": "Avatar"
      },
      "files": [
        {
          "path": "src/avatar.tsx",
          "target": "components/zui/avatar.tsx",
          "sha256": "a041c99c8e868579a243c54d63d340c4f4f8edfced0282b31492348ca212b8c9"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "badge",
      "type": "component",
      "title": "Badge",
      "description": "Label / tag, removable",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Badge from '@/components/zui/badge'",
      "meta": {
        "subpath": "@zuilib/components/badge",
        "exportName": "Badge"
      },
      "files": [
        {
          "path": "src/badge.tsx",
          "target": "components/zui/badge.tsx",
          "sha256": "9ec90bc3203c350c73844010537d24c23bfa0760d90d6bfb5b481bc186e7f880"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "button",
      "type": "component",
      "title": "Button",
      "description": "Primary actions",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-reset",
        "lib-sizes",
        "lib-spinner",
        "zui-styles"
      ],
      "docs": "import Button from '@/components/zui/button'",
      "meta": {
        "subpath": "@zuilib/components/button",
        "exportName": "Button"
      },
      "files": [
        {
          "path": "src/button.tsx",
          "target": "components/zui/button.tsx",
          "sha256": "97b1d5273664a15ff83c1d1fd77281e91989e537eaf578f54725850b2920a552"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "card",
      "type": "component",
      "title": "Card",
      "description": "Surface with header / content / footer (compound parts as statics)",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Card from '@/components/zui/card'",
      "meta": {
        "subpath": "@zuilib/components/card",
        "exportName": "Card"
      },
      "files": [
        {
          "path": "src/card.tsx",
          "target": "components/zui/card.tsx",
          "sha256": "b5640e3d9cda276cdd881c364ea9ad4dd868aed89f4c2961fba2915d0a6d4968"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "checkbox",
      "type": "component",
      "title": "Checkbox",
      "description": "Boolean / indeterminate toggle",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-reset",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Checkbox from '@/components/zui/checkbox'",
      "meta": {
        "subpath": "@zuilib/components/checkbox",
        "exportName": "Checkbox"
      },
      "files": [
        {
          "path": "src/checkbox.tsx",
          "target": "components/zui/checkbox.tsx",
          "sha256": "dcc5af8f0d5dded21dbbff567d272228588ed24cb34572bfa8a5dd5524440535"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "code",
      "type": "component",
      "title": "Code",
      "description": "Inline code or code block",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "zui-styles"
      ],
      "docs": "import Code from '@/components/zui/code'",
      "meta": {
        "subpath": "@zuilib/components/code",
        "exportName": "Code"
      },
      "files": [
        {
          "path": "src/code.tsx",
          "target": "components/zui/code.tsx",
          "sha256": "013a0b344df8c5e3453be81574cc71443df76d464282712b17d44e747cdd76c8"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "combobox",
      "type": "component",
      "title": "Combobox",
      "description": "Searchable single- or multi-select (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-form-variants",
        "lib-icons",
        "lib-popover-panel",
        "lib-reset",
        "lib-sizes",
        "lib-spinner",
        "zui-styles"
      ],
      "docs": "import Combobox from '@/components/zui/combobox'",
      "meta": {
        "subpath": "@zuilib/components/combobox",
        "exportName": "Combobox"
      },
      "files": [
        {
          "path": "src/combobox.tsx",
          "target": "components/zui/combobox.tsx",
          "sha256": "95cb5a31da724b5eb481b39cdd876db0f35c84749255eceba734598795572a8d"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "container",
      "type": "component",
      "title": "Container",
      "description": "Centred max-width wrapper",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Container from '@/components/zui/container'",
      "meta": {
        "subpath": "@zuilib/components/container",
        "exportName": "Container"
      },
      "files": [
        {
          "path": "src/container.tsx",
          "target": "components/zui/container.tsx",
          "sha256": "544a4380cb8d66120ff412ad21153a5d2cb99e7fdd5f33d4559c1b25f607d600"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "description",
      "type": "component",
      "title": "Description",
      "description": "Helper text",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-form-item-context",
        "zui-styles"
      ],
      "docs": "import Description from '@/components/zui/description'",
      "meta": {
        "subpath": "@zuilib/components/description",
        "exportName": "Description"
      },
      "files": [
        {
          "path": "src/description.tsx",
          "target": "components/zui/description.tsx",
          "sha256": "590c207f63f61e39d4824fd7dcb2b0ef069eb8579b8e77acc69dad735f2e23f0"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "dialog",
      "type": "component",
      "title": "Dialog",
      "description": "Modal dialog (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-popover-panel",
        "lib-reset",
        "lib-transitions",
        "zui-styles"
      ],
      "docs": "import Dialog from '@/components/zui/dialog'",
      "meta": {
        "subpath": "@zuilib/components/dialog",
        "exportName": "Dialog"
      },
      "files": [
        {
          "path": "src/dialog.tsx",
          "target": "components/zui/dialog.tsx",
          "sha256": "857206cbe9671c2790900bbc906b9e8899698a057a3dcee52f15a4e200a5fc12"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "disclosure",
      "type": "component",
      "title": "Disclosure",
      "description": "Collapsible section",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Disclosure from '@/components/zui/disclosure'",
      "meta": {
        "subpath": "@zuilib/components/disclosure",
        "exportName": "Disclosure"
      },
      "files": [
        {
          "path": "src/disclosure.tsx",
          "target": "components/zui/disclosure.tsx",
          "sha256": "ffe254d10010afa48c161c00a4e19c6393d36f3d1f5cfd0455c17103a6f366f3"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "drawer",
      "type": "component",
      "title": "Drawer",
      "description": "Side / top / bottom sheet (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "lib-reset",
        "lib-transitions",
        "zui-styles"
      ],
      "docs": "import Drawer from '@/components/zui/drawer'",
      "meta": {
        "subpath": "@zuilib/components/drawer",
        "exportName": "Drawer"
      },
      "files": [
        {
          "path": "src/drawer.tsx",
          "target": "components/zui/drawer.tsx",
          "sha256": "18f730e1400bc56971bb50b5bdf28745a9fad855b7fd393f9ebcccb583cafd3a"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "empty-state",
      "type": "component",
      "title": "EmptyState",
      "description": "Icon + title + description + actions",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import EmptyState from '@/components/zui/empty-state'",
      "meta": {
        "subpath": "@zuilib/components/empty-state",
        "exportName": "EmptyState"
      },
      "files": [
        {
          "path": "src/empty-state.tsx",
          "target": "components/zui/empty-state.tsx",
          "sha256": "cdc05fa072db2ef8df50cb23f0d7a6e05c32834ee247d5d7edae48b2ac5ad928"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "fieldset",
      "type": "component",
      "title": "Fieldset",
      "description": "Grouped fields with legend",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Fieldset from '@/components/zui/fieldset'",
      "meta": {
        "subpath": "@zuilib/components/fieldset",
        "exportName": "Fieldset"
      },
      "files": [
        {
          "path": "src/fieldset.tsx",
          "target": "components/zui/fieldset.tsx",
          "sha256": "4de639e4ad30cbb3a52f4ca5983bcea35577962f5f508d759b0c797a56f92718"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "file-upload",
      "type": "component",
      "title": "FileUpload",
      "description": "Drop zone + file list",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "button",
        "lib-cn",
        "lib-form-item-context",
        "lib-icons",
        "lib-sizes",
        "message",
        "zui-styles"
      ],
      "docs": "import FileUpload from '@/components/zui/file-upload'",
      "meta": {
        "subpath": "@zuilib/components/file-upload",
        "exportName": "FileUpload"
      },
      "files": [
        {
          "path": "src/file-upload.tsx",
          "target": "components/zui/file-upload.tsx",
          "sha256": "d8df164680ffad4e3d4d8174cce90882817c92be5320a1b8216fb959a6f2a028"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "form-item",
      "type": "component",
      "title": "FormItem",
      "description": "Field wrapper (Headless UI `Field`): wires label / description / control ids",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-form-item-context",
        "zui-styles"
      ],
      "docs": "import FormItem from '@/components/zui/form-item'",
      "meta": {
        "subpath": "@zuilib/components/form-item",
        "exportName": "FormItem"
      },
      "files": [
        {
          "path": "src/form-item.tsx",
          "target": "components/zui/form-item.tsx",
          "sha256": "ddd4e3bc97a6bc77fb9fdd2445628a7cf26bd4f5bac06d3f4a096772730753b3"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "heading",
      "type": "component",
      "title": "Heading",
      "description": "`h1`–`h6` on the type scale",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Heading from '@/components/zui/heading'",
      "meta": {
        "subpath": "@zuilib/components/heading",
        "exportName": "Heading"
      },
      "files": [
        {
          "path": "src/heading.tsx",
          "target": "components/zui/heading.tsx",
          "sha256": "ec22a247645432e7a45c6eb4167f651a0962c8f97077f9c1e5189701fef5b728"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "input",
      "type": "component",
      "title": "Input",
      "description": "Text input",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-control-frame",
        "lib-focus",
        "lib-form-variants",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Input from '@/components/zui/input'",
      "meta": {
        "subpath": "@zuilib/components/input",
        "exportName": "Input"
      },
      "files": [
        {
          "path": "src/input.tsx",
          "target": "components/zui/input.tsx",
          "sha256": "e2e85bcebc48c2176ad6b20c6a3d9c7296fd20db7c248d59085d32716aff706e"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "kbd",
      "type": "component",
      "title": "Kbd",
      "description": "Keyboard key / shortcut",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Kbd from '@/components/zui/kbd'",
      "meta": {
        "subpath": "@zuilib/components/kbd",
        "exportName": "Kbd"
      },
      "files": [
        {
          "path": "src/kbd.tsx",
          "target": "components/zui/kbd.tsx",
          "sha256": "a71efd8c9edf84766896bc3ad58560bdaf82d3de0a4eac757c53624fa3386c85"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "label",
      "type": "component",
      "title": "Label",
      "description": "Accessible label",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-form-item-context",
        "zui-styles"
      ],
      "docs": "import Label from '@/components/zui/label'",
      "meta": {
        "subpath": "@zuilib/components/label",
        "exportName": "Label"
      },
      "files": [
        {
          "path": "src/label.tsx",
          "target": "components/zui/label.tsx",
          "sha256": "042d83068a9b5d6a579e4b3cc4a838ff73c443f66b18bf3baedea6588a28a76b"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "listbox",
      "type": "component",
      "title": "Listbox",
      "description": "Single- or multi-select dropdown (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-form-variants",
        "lib-icons",
        "lib-popover-panel",
        "lib-reset",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Listbox from '@/components/zui/listbox'",
      "meta": {
        "subpath": "@zuilib/components/listbox",
        "exportName": "Listbox"
      },
      "files": [
        {
          "path": "src/listbox.tsx",
          "target": "components/zui/listbox.tsx",
          "sha256": "1d4245a001aa5cbfcabedd31af6949d9b0d9420d481ae459c91937c929d5180e"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "menu",
      "type": "component",
      "title": "Menu",
      "description": "Dropdown action menu (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "button",
        "lib-cn",
        "lib-icons",
        "lib-popover-panel",
        "lib-reset",
        "lib-sizes",
        "lib-transitions",
        "zui-styles"
      ],
      "docs": "import Menu from '@/components/zui/menu'",
      "meta": {
        "subpath": "@zuilib/components/menu",
        "exportName": "Menu"
      },
      "files": [
        {
          "path": "src/menu.tsx",
          "target": "components/zui/menu.tsx",
          "sha256": "45574409289dab5bf49a6e921819d0c7d4042d895dce2d6d8d8109204ea52427"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "message",
      "type": "component",
      "title": "Message",
      "description": "Validation / error text",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-form-item-context",
        "zui-styles"
      ],
      "docs": "import Message from '@/components/zui/message'",
      "meta": {
        "subpath": "@zuilib/components/message",
        "exportName": "Message"
      },
      "files": [
        {
          "path": "src/message.tsx",
          "target": "components/zui/message.tsx",
          "sha256": "91113a1ddf2fe82a4b721a0215e1432ede8f42d37c0a1d1f194c8a8f570d7ba9"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "number-input",
      "type": "component",
      "title": "NumberInput",
      "description": "Input with stepper, clamping and number formatting",
      "dependencies": [],
      "registryDependencies": [
        "input",
        "lib-cn",
        "lib-form-item-context",
        "lib-icons",
        "lib-reset",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import NumberInput from '@/components/zui/number-input'",
      "meta": {
        "subpath": "@zuilib/components/number-input",
        "exportName": "NumberInput"
      },
      "files": [
        {
          "path": "src/number-input.tsx",
          "target": "components/zui/number-input.tsx",
          "sha256": "09974e8e6b9766be166f5d16e75d2e59b8ff37e6de86110f86385e0228092437"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "pin-input",
      "type": "component",
      "title": "PinInput",
      "description": "One-time-code / PIN cells",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-form-variants",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import PinInput from '@/components/zui/pin-input'",
      "meta": {
        "subpath": "@zuilib/components/pin-input",
        "exportName": "PinInput"
      },
      "files": [
        {
          "path": "src/pin-input.tsx",
          "target": "components/zui/pin-input.tsx",
          "sha256": "0bdebf87dd4ce4d432bfb173550f80e588c91db4feb81ca0a8e09099521c286f"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "popover",
      "type": "component",
      "title": "Popover",
      "description": "Anchored floating panel (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-popover-panel",
        "lib-reset",
        "lib-transitions",
        "zui-styles"
      ],
      "docs": "import Popover from '@/components/zui/popover'",
      "meta": {
        "subpath": "@zuilib/components/popover",
        "exportName": "Popover"
      },
      "files": [
        {
          "path": "src/popover.tsx",
          "target": "components/zui/popover.tsx",
          "sha256": "6ffa7ca49437b80ed9f4bb5ee6a139747ce330a29c88f4abff68660793f26cdb"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "progress",
      "type": "component",
      "title": "Progress",
      "description": "Determinate / indeterminate progress bar",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Progress from '@/components/zui/progress'",
      "meta": {
        "subpath": "@zuilib/components/progress",
        "exportName": "Progress"
      },
      "files": [
        {
          "path": "src/progress.tsx",
          "target": "components/zui/progress.tsx",
          "sha256": "920620a862eb86e92c6e8d7292e8e63f8536e5424f10ac167d21ff2b86a584e9"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "radio-group",
      "type": "component",
      "title": "RadioGroup",
      "description": "Radio options, card or list (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import RadioGroup from '@/components/zui/radio-group'",
      "meta": {
        "subpath": "@zuilib/components/radio-group",
        "exportName": "RadioGroup"
      },
      "files": [
        {
          "path": "src/radio-group.tsx",
          "target": "components/zui/radio-group.tsx",
          "sha256": "518e7b3246a7cf8fcdf5551d30ef5a9ceb7fb291e7be4f3ed9b890e2c0294cce"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "rich-textarea",
      "type": "component",
      "title": "RichTextArea",
      "description": "Textarea with label, description, error, char count",
      "dependencies": [],
      "registryDependencies": [
        "description",
        "form-item",
        "label",
        "lib-cn",
        "message",
        "textarea",
        "zui-styles"
      ],
      "docs": "import RichTextArea from '@/components/zui/rich-textarea'",
      "meta": {
        "subpath": "@zuilib/components/rich-textarea",
        "exportName": "RichTextArea"
      },
      "files": [
        {
          "path": "src/rich-textarea.tsx",
          "target": "components/zui/rich-textarea.tsx",
          "sha256": "ee3e7ff72a4b0941de77dcb24f015562c6984e82f0a2cd89d39ffc6a132d5dd2"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "search-input",
      "type": "component",
      "title": "SearchInput",
      "description": "Search field with clear button and loading state",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "input",
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-icons",
        "lib-reset",
        "lib-sizes",
        "lib-spinner",
        "zui-styles"
      ],
      "docs": "import SearchInput from '@/components/zui/search-input'",
      "meta": {
        "subpath": "@zuilib/components/search-input",
        "exportName": "SearchInput"
      },
      "files": [
        {
          "path": "src/search-input.tsx",
          "target": "components/zui/search-input.tsx",
          "sha256": "104b628a41d3bb31758fe2977ba3f4f6cd619b296c28709d400c49c2668cd47a"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "select",
      "type": "component",
      "title": "Select",
      "description": "Native `<select>`",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-variants",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Select from '@/components/zui/select'",
      "meta": {
        "subpath": "@zuilib/components/select",
        "exportName": "Select"
      },
      "files": [
        {
          "path": "src/select.tsx",
          "target": "components/zui/select.tsx",
          "sha256": "7ba6cadb1e5ef50fd06c5abcf27395903f61838022de0e400dd0450a2c446b7d"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "separator",
      "type": "component",
      "title": "Separator",
      "description": "Horizontal / vertical rule, optional label",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Separator from '@/components/zui/separator'",
      "meta": {
        "subpath": "@zuilib/components/separator",
        "exportName": "Separator"
      },
      "files": [
        {
          "path": "src/separator.tsx",
          "target": "components/zui/separator.tsx",
          "sha256": "970ac1022c9e086c63394f4e1857e6b1367c523c6fa97e662ceb11a2e0d97af2"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "skeleton",
      "type": "component",
      "title": "Skeleton",
      "description": "Loading placeholder",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Skeleton from '@/components/zui/skeleton'",
      "meta": {
        "subpath": "@zuilib/components/skeleton",
        "exportName": "Skeleton"
      },
      "files": [
        {
          "path": "src/skeleton.tsx",
          "target": "components/zui/skeleton.tsx",
          "sha256": "637a25b0419fbc6564d5131dc658ab508468b18705e9d5d9c40aa06c63a3abbd"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "slider",
      "type": "component",
      "title": "Slider",
      "description": "Native range input with label, value read-out and marks",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-control-frame",
        "lib-form-item-context",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Slider from '@/components/zui/slider'",
      "meta": {
        "subpath": "@zuilib/components/slider",
        "exportName": "Slider"
      },
      "files": [
        {
          "path": "src/slider.tsx",
          "target": "components/zui/slider.tsx",
          "sha256": "b866dacb789bfcf7edb2e03628ee0e32268f89477bf06ffabcb5b39b9d7e7957"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "spinner",
      "type": "component",
      "title": "Spinner",
      "description": "Loading indicator with live-region label",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-sizes",
        "lib-spinner",
        "zui-styles"
      ],
      "docs": "import Spinner from '@/components/zui/spinner'",
      "meta": {
        "subpath": "@zuilib/components/spinner",
        "exportName": "Spinner"
      },
      "files": [
        {
          "path": "src/spinner.tsx",
          "target": "components/zui/spinner.tsx",
          "sha256": "0d883f2aea736697d0eaa3612bf78e670923c5ad2de3573c1d7bf3ed1a7f30dc"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "stack",
      "type": "component",
      "title": "Stack",
      "description": "Flex row / column with gap and dividers",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Stack from '@/components/zui/stack'",
      "meta": {
        "subpath": "@zuilib/components/stack",
        "exportName": "Stack"
      },
      "files": [
        {
          "path": "src/stack.tsx",
          "target": "components/zui/stack.tsx",
          "sha256": "8cc88ecf6f3b658e74ad9012f10a18450633859c91288e8333015ef4c4b754d8"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "step-indicator",
      "type": "component",
      "title": "StepIndicator",
      "description": "Multi-step progress",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-icons",
        "zui-styles"
      ],
      "docs": "import StepIndicator from '@/components/zui/step-indicator'",
      "meta": {
        "subpath": "@zuilib/components/step-indicator",
        "exportName": "StepIndicator"
      },
      "files": [
        {
          "path": "src/step-indicator.tsx",
          "target": "components/zui/step-indicator.tsx",
          "sha256": "0aa4016d1f699811eb24db4eb982ad0332d56963ef09496d16394385daecfb76"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "switch",
      "type": "component",
      "title": "Switch",
      "description": "Boolean toggle",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-form-item-context",
        "lib-reset",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Switch from '@/components/zui/switch'",
      "meta": {
        "subpath": "@zuilib/components/switch",
        "exportName": "Switch"
      },
      "files": [
        {
          "path": "src/switch.tsx",
          "target": "components/zui/switch.tsx",
          "sha256": "03a9ba4da59418e4f9c164968449c76b71de4882a1646f4b7ba2e4a199f6fe8d"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "table",
      "type": "component",
      "title": "Table",
      "description": "Styled table primitives (compound parts as statics), no TanStack; data grids live in the separate `@zuilib/table` package",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-reset",
        "zui-styles"
      ],
      "docs": "import Table from '@/components/zui/table'",
      "meta": {
        "subpath": "@zuilib/components/table",
        "exportName": "Table"
      },
      "files": [
        {
          "path": "src/table.tsx",
          "target": "components/zui/table.tsx",
          "sha256": "67c1679a3713bccbecc4a6caec6fc9dcf37d36dea69de5efe836516778f11781"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "tabs",
      "type": "component",
      "title": "Tabs",
      "description": "Tab list + panels (compound parts as statics)",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-focus",
        "lib-reset",
        "lib-sizes",
        "zui-styles"
      ],
      "docs": "import Tabs from '@/components/zui/tabs'",
      "meta": {
        "subpath": "@zuilib/components/tabs",
        "exportName": "Tabs"
      },
      "files": [
        {
          "path": "src/tabs.tsx",
          "target": "components/zui/tabs.tsx",
          "sha256": "8a31cca29a815c3affb4d5d82303267296f0aa4501392f4b830c6e239554e433"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "text",
      "type": "component",
      "title": "Text",
      "description": "Body text with size / weight / colour variants",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Text from '@/components/zui/text'",
      "meta": {
        "subpath": "@zuilib/components/text",
        "exportName": "Text"
      },
      "files": [
        {
          "path": "src/text.tsx",
          "target": "components/zui/text.tsx",
          "sha256": "6417cc52315a811fc27b688919d5cd977fd350fa07208954a8bdb248dac40daf"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "textarea",
      "type": "component",
      "title": "Textarea",
      "description": "Multiline text",
      "dependencies": [
        "@headlessui/react@^2.2.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "lib-control-frame",
        "lib-focus",
        "lib-form-variants",
        "zui-styles"
      ],
      "docs": "import Textarea from '@/components/zui/textarea'",
      "meta": {
        "subpath": "@zuilib/components/textarea",
        "exportName": "Textarea"
      },
      "files": [
        {
          "path": "src/textarea.tsx",
          "target": "components/zui/textarea.tsx",
          "sha256": "c2309ec8948881f5b127f4acb5dd87b36b7a19d60ad7ac3e560dc7c77aeff00e"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "tooltip",
      "type": "component",
      "title": "Tooltip",
      "description": "Hover / focus tooltip (floating-ui)",
      "dependencies": [
        "@floating-ui/react@^0.26.0"
      ],
      "registryDependencies": [
        "lib-cn",
        "zui-styles"
      ],
      "docs": "import Tooltip from '@/components/zui/tooltip'",
      "meta": {
        "subpath": "@zuilib/components/tooltip",
        "exportName": "Tooltip"
      },
      "files": [
        {
          "path": "src/tooltip.tsx",
          "target": "components/zui/tooltip.tsx",
          "sha256": "fc0b26cbb5739ab1174917121e672605e96893a2ef711caa9fe621afa5894554"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-cn",
      "type": "lib",
      "title": "lib/cn",
      "description": "`clsx` + `tailwind-merge` helper",
      "dependencies": [
        "clsx@^2.1.1",
        "tailwind-merge@3.4.0"
      ],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/cn'",
      "meta": {
        "subpath": "@zuilib/components/lib/cn",
        "exportName": "cn"
      },
      "files": [
        {
          "path": "src/lib/cn.ts",
          "target": "components/zui/lib/cn.ts",
          "sha256": "746e4d9beb1a5b6f0e047ec19d5f1c542c9f8117f4ea7c80d7b9bd0fe2128e91"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-control-frame",
      "type": "lib",
      "title": "lib/control-frame",
      "description": "`splitControlProps()` / `splitHoverHandlers()` for frame + native-element controls",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/control-frame'",
      "meta": {
        "subpath": "@zuilib/components/lib/control-frame",
        "exportName": "lib/control-frame"
      },
      "files": [
        {
          "path": "src/lib/control-frame.ts",
          "target": "components/zui/lib/control-frame.ts",
          "sha256": "cf3e29961269a295a126810dab47f0286f57f67b62d0df2613b26e8a41cfaf56"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-focus",
      "type": "lib",
      "title": "lib/focus",
      "description": "`focusRingClasses`, `focusRingInsetClasses`, `dataFocusRingClasses`, `dataFocusRingInsetClasses`, `focusOutlineInsetClasses`, `fieldFocusRingClasses`: the shared focus-ring class strings",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/focus'",
      "meta": {
        "subpath": "@zuilib/components/lib/focus",
        "exportName": "lib/focus"
      },
      "files": [
        {
          "path": "src/lib/focus.ts",
          "target": "components/zui/lib/focus.ts",
          "sha256": "a9536a05ed803f9a2e801991d2a5fcf8cb94ce64a5611a9cca909ee24b96a882"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-form-item-context",
      "type": "lib",
      "title": "lib/form-item-context",
      "description": "`useFormItem()`, `FormItemContext`, `formItemStateAttributes()` for custom controls inside a `FormItem`",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/form-item-context'",
      "meta": {
        "subpath": "@zuilib/components/lib/form-item-context",
        "exportName": "lib/form-item-context"
      },
      "files": [
        {
          "path": "src/lib/form-item-context.ts",
          "target": "components/zui/lib/form-item-context.ts",
          "sha256": "08a607cd99b932816d8accc7cbb05b25d624bbf94886a92e7a81c2b651b9c52a"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-form-variants",
      "type": "lib",
      "title": "lib/form-variants",
      "description": "`formVariantClasses`, `formStateClasses`, `useResolvedFormState()` (the field frame styles)",
      "dependencies": [],
      "registryDependencies": [
        "lib-form-item-context"
      ],
      "docs": "import { … } from '@/components/zui/lib/form-variants'",
      "meta": {
        "subpath": "@zuilib/components/lib/form-variants",
        "exportName": "lib/form-variants"
      },
      "files": [
        {
          "path": "src/lib/form-variants.ts",
          "target": "components/zui/lib/form-variants.ts",
          "sha256": "ad6cb5fda2d07021285202332505e2efc766c7d9b70f1a5d673b8595a10c49ba"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-icons",
      "type": "lib",
      "title": "lib/icons",
      "description": "`ChevronDownIcon`, `CheckIcon`, `XIcon`, `SearchIcon`, `InfoIcon` / `SuccessIcon` / `WarningIcon` / `ErrorIcon` (+ `statusIcons`): the glyphs the components share",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn"
      ],
      "docs": "import { … } from '@/components/zui/lib/icons'",
      "meta": {
        "subpath": "@zuilib/components/lib/icons",
        "exportName": "lib/icons"
      },
      "files": [
        {
          "path": "src/lib/icons.tsx",
          "target": "components/zui/lib/icons.tsx",
          "sha256": "50c692a089bb004ac56f84f3b1f21092938f3423cffa5e32e72f3af1cb6809ed"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-popover-panel",
      "type": "lib",
      "title": "lib/popover-panel",
      "description": "`popoverSurfaceClasses`, `popoverPanelClassName()`, the anchor classes and the option-row classes Listbox / Combobox / Menu / Popover / Dialog share",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn"
      ],
      "docs": "import { … } from '@/components/zui/lib/popover-panel'",
      "meta": {
        "subpath": "@zuilib/components/lib/popover-panel",
        "exportName": "lib/popover-panel"
      },
      "files": [
        {
          "path": "src/lib/popover-panel.ts",
          "target": "components/zui/lib/popover-panel.ts",
          "sha256": "38215f0dc8a19554f0529315386ea1b571459787249acec6948fde77b40439f3"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-reset",
      "type": "lib",
      "title": "lib/reset",
      "description": "`nativeControlResetClasses`: zeroes the user-agent styles of a native `<button>` (padding, border, background, font) so button-rendered parts look the same without Tailwind's preflight. Put it first in `cn()`",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/reset'",
      "meta": {
        "subpath": "@zuilib/components/lib/reset",
        "exportName": "lib/reset"
      },
      "files": [
        {
          "path": "src/lib/reset.ts",
          "target": "components/zui/lib/reset.ts",
          "sha256": "ede72e75452efe404017fcec7b69caf6d511f557c40511ac72a2807a81126470"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-sizes",
      "type": "lib",
      "title": "lib/sizes",
      "description": "`ControlSize`, `controlSizeClasses`, `iconSizeClasses`, … the shared size maps",
      "dependencies": [],
      "registryDependencies": [],
      "docs": "import { … } from '@/components/zui/lib/sizes'",
      "meta": {
        "subpath": "@zuilib/components/lib/sizes",
        "exportName": "lib/sizes"
      },
      "files": [
        {
          "path": "src/lib/sizes.ts",
          "target": "components/zui/lib/sizes.ts",
          "sha256": "e7da23e5882702272ada66d5b12d5f36c4b923f48eb0b9f1f3ed3d8026f9ee53"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-spinner",
      "type": "lib",
      "title": "lib/spinner",
      "description": "Indeterminate spinner icon (also a named export)",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn"
      ],
      "docs": "import { … } from '@/components/zui/lib/spinner'",
      "meta": {
        "subpath": "@zuilib/components/lib/spinner",
        "exportName": "Spinner"
      },
      "files": [
        {
          "path": "src/lib/spinner.tsx",
          "target": "components/zui/lib/spinner.tsx",
          "sha256": "7bce255a8d89c669c5ae49278efe4b82325719ba3a782885a9f8036bb76d78b4"
        }
      ]
    },
    {
      "version": "0.1.0",
      "name": "lib-transitions",
      "type": "lib",
      "title": "lib/transitions",
      "description": "`fadeTransitionClasses`, `scaleFadeTransitionClasses`, `slideTransitionClasses()`: the `data-[closed]` enter / leave recipes for Headless UI's `transition` prop",
      "dependencies": [],
      "registryDependencies": [
        "lib-cn"
      ],
      "docs": "import { … } from '@/components/zui/lib/transitions'",
      "meta": {
        "subpath": "@zuilib/components/lib/transitions",
        "exportName": "lib/transitions"
      },
      "files": [
        {
          "path": "src/lib/transitions.ts",
          "target": "components/zui/lib/transitions.ts",
          "sha256": "60276ab1e5e368d72c094872f111a4fe4e406c6d527f565ad99093288a3aabbc"
        }
      ]
    }
  ]
}
