{"_id":"@anhpt2612/az-ui-lib","_rev":"2-a97521fcda43e86df7b49a214baa8bde","name":"@anhpt2612/az-ui-lib","dist-tags":{"latest":"1.1.0"},"versions":{"0.1.2":{"name":"@anhpt2612/az-ui-lib","version":"0.1.2","keywords":["react","components","ui","radix-ui","tailwindcss","typescript","component-library","design-system","accessibility","a11y"],"author":{"name":"anh.phan@knorex.com"},"license":"MIT","_id":"@anhpt2612/az-ui-lib@0.1.2","maintainers":[{"name":"anhpt2612","email":"phantheanh2612@gmail.com"}],"homepage":"https://github.com/yourusername/az-ui-lib#readme","bugs":{"url":"https://github.com/yourusername/az-ui-lib/issues"},"dist":{"shasum":"50d566d3039e59d611c822bef22c99586d9ac252","tarball":"https://registry.npmjs.org/@anhpt2612/az-ui-lib/-/az-ui-lib-0.1.2.tgz","fileCount":12,"integrity":"sha512-IYP0W3O1drtW+SYVVFxHNcMkUWzJuRw+IVAs6qCDS5stLwu+DK116oGOdXXkU1Fi/95OGyKhF7wf3KJI/VbW8A==","signatures":[{"sig":"MEUCIQC5PLwoCgcpiSA6+Qze6JTslmTNHjmrE9fAsHb3oaWQCwIgaEu1s/Yv680Bd8je7eq//oNqtT9ocIht/16VyT60Wu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41985},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./providers":{"types":"./dist/providers/index.d.ts","import":"./dist/providers/index.js","require":"./dist/providers/index.cjs"},"./package.json":"./package.json"},"gitHead":"7adabdf063742f7a0320e4e2795ff0599cf30247","private":false,"scripts":{"ci":"npm run type-check && npm run lint && npm run format:check && npm run test","dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","preview":"vite preview","release":"yarn build:lib && yarn version patch && yarn publish","test:ui":"vitest --ui","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib","storybook":"storybook dev -p 6006","type-check":"tsc --noEmit","format:check":"prettier --check .","release:major":"npm run build:lib && npm version major && npm publish","release:minor":"npm run build:lib && npm version minor && npm publish","prepublishOnly":"npm run build:lib","build-storybook":"storybook build"},"_npmUser":{"name":"anhpt2612","email":"phantheanh2612@gmail.com"},"repository":{"url":"git+https://github.com/yourusername/az-ui-lib.git","type":"git"},"_npmVersion":"11.6.1","description":"A modern React component library built with Radix UI and Tailwind CSS","directories":{},"_nodeVersion":"24.11.0","dependencies":{"clsx":"^2.1.1","react":"^19.2.0","shadcn":"^3.5.0","postcss":"^8.5.6","radix-ui":"^1.4.3","react-dom":"^19.2.0","lucide-react":"^0.552.0","react-router":"^7.9.5","tailwind-merge":"^3.3.1","tw-animate-css":"^1.4.0","react-router-dom":"^7.9.4","@tailwindcss/vite":"^4.1.16","@radix-ui/react-slot":"^1.2.3","@testing-library/dom":"^10.4.1","@radix-ui/react-popover":"^1.1.15","class-variance-authority":"^0.7.1","@radix-ui/react-dropdown-menu":"^2.1.16"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","eslint":"^9.38.0","rollup":"^4.45.3","vitest":"^4.0.4","globals":"^16.4.0","prettier":"^3.6.2","storybook":"^10.0.2","@eslint/js":"^9.38.0","playwright":"^1.56.1","typescript":"^5.9.3","@types/node":"^24.9.1","tailwindcss":"^4.1.16","@types/react":"^19.2.2","autoprefixer":"^10.4.21","@vitest/browser":"^4.0.4","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.2","@vitest/coverage-v8":"^4.0.4","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.0","eslint-plugin-import":"^2.32.0","@storybook/addon-a11y":"^10.0.2","@storybook/addon-docs":"^10.0.2","@storybook/react-vite":"^10.0.2","eslint-config-prettier":"^10.1.8","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-prettier":"^5.5.4","@storybook/addon-vitest":"^10.0.2","@types/react-router-dom":"^5.3.3","eslint-plugin-storybook":"^10.0.2","@chromatic-com/storybook":"^4.1.2","eslint-plugin-react-hooks":"^7.0.1","@storybook/addon-onboarding":"^10.0.2","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"node":"20.19.0 - 24.11.0","react":">=19.0.0","react-dom":">=19.0.0","react-router":">=7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/az-ui-lib_0.1.2_1764302280482_0.36327645431769096","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anhpt2612/az-ui-lib","private":false,"version":"1.1.0","type":"module","description":"A modern React component library built with Radix UI and Tailwind CSS","author":{"name":"anh.phan@knorex.com"},"license":"MIT","homepage":"https://github.com/yourusername/az-ui-lib#readme","repository":{"type":"git","url":"git+https://github.com/yourusername/az-ui-lib.git"},"bugs":{"url":"https://github.com/yourusername/az-ui-lib/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./components":{"types":"./dist/components/index.d.ts","import":"./dist/components/index.js","require":"./dist/components/index.cjs"},"./components/ui":{"types":"./dist/components/ui/index.d.ts","import":"./dist/components/ui/index.js","require":"./dist/components/ui/index.cjs"},"./services":{"types":"./dist/services/index.d.ts","import":"./dist/services/index.js","require":"./dist/services/index.cjs"},"./constants":{"types":"./dist/constants/index.d.ts","import":"./dist/constants/index.js","require":"./dist/constants/index.cjs"},"./providers":{"types":"./dist/providers/index.d.ts","import":"./dist/providers/index.js","require":"./dist/providers/index.cjs"},"./hooks":{"types":"./dist/hooks/index.d.ts","import":"./dist/hooks/index.js","require":"./dist/hooks/index.cjs"},"./types":{"types":"./dist/types/index.d.ts","import":"./dist/types/index.js","require":"./dist/types/index.cjs"},"./lib":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.cjs"},"./package.json":"./package.json"},"keywords":["react","components","ui","radix-ui","tailwindcss","typescript","component-library","design-system","accessibility","a11y"],"scripts":{"dev":"vite","build":"tsc -b && vite build","build:css":"tailwindcss -i ./src/styles/index.css -o ./dist/tailwind.css --minify","build:lib":"vite build --mode lib","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","type-check":"tsc --noEmit","preview":"vite preview","storybook":"storybook dev -p 6006","build-storybook":"storybook build","test":"vitest","test:ui":"vitest --ui","prepublishOnly":"npm run build:lib","release":"yarn build:lib && yarn version patch && yarn publish","ci":"npm run type-check && npm run lint && npm run format:check && npm run test","release:minor":"npm run build:lib && npm version minor && npm publish","release:major":"npm run build:lib && npm version major && npm publish"},"dependencies":{"@hookform/resolvers":"^5.2.2","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.8","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-slot":"^1.2.4","@tailwindcss/cli":"^4.1.18","@tailwindcss/vite":"^4.1.18","@tanstack/react-query":"^5.90.16","@tanstack/react-table":"^8.21.3","@testing-library/dom":"^10.4.1","axios":"^1.13.2","class-variance-authority":"^0.7.1","clsx":"^2.1.1","dayjs":"^1.11.19","lucide-react":"^0.562.0","numeral":"^2.0.6","postcss":"^8.5.6","radix-ui":"^1.4.3","react":">=19.0.0","react-dom":">=19.0.0","react-hook-form":"^7.70.0","react-router":">=7.0.0","react-router-dom":"^7.12.0","shadcn":"^3.6.3","sonner":"^2.0.7","tailwind-merge":"^3.4.0","tw-animate-css":"^1.4.0","validator":"^13.15.26","zod":"^4.3.5"},"peerDependencies":{"node":"20.19.0 - 24.11.0","react":">=19.0.0","react-dom":">=19.0.0","react-router":">=7.0.0"},"devDependencies":{"@chromatic-com/storybook":"^4.1.3","@eslint/js":"^9.39.2","@storybook/addon-a11y":"^10.1.11","@storybook/addon-docs":"^10.1.11","@storybook/addon-onboarding":"^10.1.11","@storybook/addon-vitest":"^10.1.11","@storybook/react-vite":"^10.1.11","@types/node":"^25.0.3","@types/numeral":"^2.0.5","@types/qs":"^6.14.0","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@types/react-router-dom":"^5.3.3","@vitejs/plugin-react":"^5.1.2","@vitest/browser":"^4.0.16","@vitest/coverage-v8":"^4.0.16","autoprefixer":"^10.4.23","eslint":"^9.39.2","eslint-config-prettier":"^10.1.8","eslint-plugin-import":"^2.32.0","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-prettier":"^5.5.4","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.26","eslint-plugin-storybook":"^10.1.11","globals":"^17.0.0","playwright":"^1.57.0","prettier":"^3.7.4","rollup":"^4.55.1","storybook":"^10.1.11","tailwindcss":"^4.1.18","typescript":"^5.9.3","typescript-eslint":"^8.52.0","vite":"^7.3.1","vite-plugin-dts":"^4.5.4","vite-tsconfig-paths":"^6.0.3","vitest":"^4.0.16"},"gitHead":"b94598c8f8fc1331072bad0b1b784b6505e6ecb9","_id":"@anhpt2612/az-ui-lib@1.1.0","_nodeVersion":"24.11.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-YXmy4EOQfVoOV1xoFK1l5dDvjiBWCLL6L7bdkIYko8m2R3V9gzTUBhVYaA5cndfADHad+DiLxWOEFBX8eFWtkw==","shasum":"bfd513bdf5acb7fbdcac44aca72afabeb8a2dbf5","tarball":"https://registry.npmjs.org/@anhpt2612/az-ui-lib/-/az-ui-lib-1.1.0.tgz","fileCount":18,"unpackedSize":1276085,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCRwaMvXzvqM4O57UBUlExkffMhZBEjAqTREXryiaHGXQIhAMQQCyD2zzPmH3Lx+isZe/4UcE5hIXPNoEXoiaGhAyt+"}]},"_npmUser":{"name":"anhpt2612","email":"phantheanh2612@gmail.com"},"directories":{},"maintainers":[{"name":"anhpt2612","email":"phantheanh2612@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/az-ui-lib_1.1.0_1767869780584_0.4264063846285999"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T03:58:00.338Z","modified":"2026-01-08T10:56:20.989Z","0.1.2":"2025-11-28T03:58:00.639Z","1.1.0":"2026-01-08T10:56:20.790Z"},"bugs":{"url":"https://github.com/yourusername/az-ui-lib/issues"},"author":{"name":"anh.phan@knorex.com"},"license":"MIT","homepage":"https://github.com/yourusername/az-ui-lib#readme","keywords":["react","components","ui","radix-ui","tailwindcss","typescript","component-library","design-system","accessibility","a11y"],"repository":{"type":"git","url":"git+https://github.com/yourusername/az-ui-lib.git"},"description":"A modern React component library built with Radix UI and Tailwind CSS","maintainers":[{"name":"anhpt2612","email":"phantheanh2612@gmail.com"}],"readme":"# AZ UI Library\n\nA modern React component library built with Radix UI and Tailwind CSS, designed\nfor building beautiful and accessible user interfaces.\n\n## Features\n\n- 🎨 **Built with Radix UI** - Unstyled, accessible components as foundation\n- 🎯 **Tailwind CSS** - Utility-first CSS framework for rapid styling\n- 📚 **Storybook** - Interactive component documentation and testing\n- 🔧 **TypeScript** - Full type safety and excellent developer experience\n- ⚡ **Vite** - Fast build tool and development server\n- 🧪 **Vitest** - Fast unit testing with browser support\n- 📦 **Tree-shakable** - Import only what you need\n\n## Installation\n\n```bash\nnpm install az-ui-lib\n# or\nyarn add az-ui-lib\n# or\npnpm add az-ui-lib\n```\n\n### Peer Dependencies\n\nMake sure you have React 19+ installed:\n\n```bash\nnpm install react react-dom\n```\n\n## Usage\n\n### Basic Setup\n\nFirst, import the CSS in your main application file:\n\n```tsx\n// In your main App.tsx or index.tsx\nimport 'az-ui-lib/styles.css';\n```\n\n### Using Components\n\n```tsx\nimport {\n  Button,\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from 'az-ui-lib';\n\nfunction App() {\n  return (\n    <Card className=\"w-[350px]\">\n      <CardHeader>\n        <CardTitle>Welcome</CardTitle>\n        <CardDescription>\n          This is a card component from AZ UI Library\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <p>Card content goes here</p>\n      </CardContent>\n      <CardFooter>\n        <Button variant=\"outline\">Cancel</Button>\n        <Button>Confirm</Button>\n      </CardFooter>\n    </Card>\n  );\n}\n```\n\n### Using Providers\n\nImport providers from the dedicated `/providers` entry point:\n\n```tsx\nimport { ThemeProvider, useTheme } from 'az-ui-lib/providers';\nimport { Button } from 'az-ui-lib';\n\nfunction ThemeToggle() {\n  const { theme, setTheme } = useTheme();\n\n  return (\n    <Button\n      variant=\"outline\"\n      onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}\n    >\n      Toggle theme (current: {theme})\n    </Button>\n  );\n}\n\nfunction App() {\n  return (\n    <ThemeProvider defaultTheme=\"light\" storageKey=\"my-app-theme\">\n      <div className=\"min-h-screen bg-background text-foreground\">\n        <ThemeToggle />\n        {/* Your other components */}\n      </div>\n    </ThemeProvider>\n  );\n}\n```\n\n### With Tailwind CSS (Recommended)\n\nIf you're using Tailwind CSS in your project, you can leverage the full design\nsystem:\n\n```tsx\nimport { Button } from 'az-ui-lib';\n\nfunction MyComponent() {\n  return (\n    <div className=\"p-4 bg-background\">\n      <Button className=\"mb-4\" variant=\"default\" size=\"lg\">\n        Large Button\n      </Button>\n      <Button variant=\"outline\" size=\"sm\">\n        Small Outline Button\n      </Button>\n    </div>\n  );\n}\n```\n\n## Available Components\n\n### Components\n\n- **Button** - Customizable button component with multiple variants (default,\n  secondary, outline, destructive, ghost, link)\n- **Card** - Flexible card container with Header, Content, Footer, Title, and\n  Description sub-components\n\n### Providers\n\n- **ThemeProvider** - Manages light/dark/system theme switching with\n  localStorage persistence\n  - `useTheme()` hook for accessing and updating the current theme\n  - Automatic system theme detection\n  - Customizable storage key and CSS attribute\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+\n- npm or yarn\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone <repository-url>\ncd az-ui-lib\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Start Storybook\nnpm run storybook\n```\n\n### Scripts\n\n- `npm run dev` - Start Vite development server\n- `npm run build` - Build the application\n- `npm run build:lib` - Build the library for production\n- `npm run storybook` - Start Storybook development server\n- `npm run build-storybook` - Build Storybook for production\n- `npm run test` - Run tests\n- `npm run lint` - Run ESLint\n\n## Building Components\n\nThis library follows a structured approach to component development:\n\n1. **Base on Radix UI** - Use Radix UI primitives for accessibility\n2. **Style with Tailwind** - Use utility classes and component variants\n3. **Export properly** - Add exports to `src/index.ts`\n4. **Document with Storybook** - Create stories for each component\n5. **Test thoroughly** - Write tests for component behavior\n\n### Example Component Structure\n\n```tsx\nimport * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '~/lib/utils';\n\nconst componentVariants = cva(\n  // base styles\n  'base classes',\n  {\n    variants: {\n      variant: {\n        default: 'default styles',\n        // other variants\n      },\n    },\n    defaultVariants: {\n      variant: 'default',\n    },\n  }\n);\n\nexport interface ComponentProps\n  extends\n    React.HTMLAttributes<HTMLElement>,\n    VariantProps<typeof componentVariants> {\n  asChild?: boolean;\n}\n\nconst Component = React.forwardRef<HTMLElement, ComponentProps>(\n  ({ className, variant, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : 'div';\n    return (\n      <Comp\n        className={cn(componentVariants({ variant, className }))}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\nComponent.displayName = 'Component';\n\nexport { Component, componentVariants };\n```\n\n## Publishing to NPM\n\nThis library is configured for easy publishing to NPM. Before publishing:\n\n### Prerequisites\n\n1. **Create an NPM account**: Sign up at [npmjs.com](https://www.npmjs.com/)\n2. **Login to NPM**: Run `npm login` in your terminal\n3. **Update package details**: Edit `package.json` to update:\n   - `name` - Choose a unique package name\n   - `author` - Add your name and email\n   - `repository` - Add your GitHub repository URL\n   - `homepage` - Add your project homepage\n\n### Publishing Steps\n\n1. **Build the library**:\n\n   ```bash\n   npm run build:lib\n   ```\n\n2. **Test the package locally** (optional):\n\n   ```bash\n   npm pack\n   # This creates a .tgz file you can test with npm install ./package-name.tgz\n   ```\n\n3. **Publish to NPM**:\n\n   ```bash\n   # For patch version (0.1.0 → 0.1.1)\n   npm run release\n\n   # For minor version (0.1.0 → 0.2.0)\n   npm run release:minor\n\n   # For major version (0.1.0 → 1.0.0)\n   npm run release:major\n\n   # Or manually\n   npm run build:lib\n   npm version patch  # or minor/major\n   npm publish\n   ```\n\n### Package Contents\n\nThe published package includes:\n\n- ✅ Compiled JavaScript (ES modules and CommonJS)\n- ✅ TypeScript declarations (`.d.ts` files)\n- ✅ README.md and LICENSE\n- ❌ Source code (excluded for smaller package size)\n- ❌ Development files (tests, stories, configs)\n\n### Usage After Publishing\n\nOnce published, users can install your library:\n\n```bash\nnpm install your-package-name\n```\n\nAnd use it in their projects:\n\n```tsx\nimport { Button, Card } from 'your-package-name';\n\n// Note: Users need to import Tailwind CSS separately\n// or set up their own styling system\n```\n\n## License\n\nMIT © [Your Name] ], languageOptions: { parserOptions: { project:\n['./tsconfig.node.json', './tsconfig.app.json'], tsconfigRootDir:\nimport.meta.dirname, }, // other options... }, }, ])\n\n````\n\nYou can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:\n\n```js\n// eslint.config.js\nimport reactX from 'eslint-plugin-react-x'\nimport reactDom from 'eslint-plugin-react-dom'\n\nexport default tseslint.config([\n  globalIgnores(['dist']),\n  {\n    files: ['**/*.{ts,tsx}'],\n    extends: [\n      // Other configs...\n      // Enable lint rules for React\n      reactX.configs['recommended-typescript'],\n      // Enable lint rules for React DOM\n      reactDom.configs.recommended,\n    ],\n    languageOptions: {\n      parserOptions: {\n        project: ['./tsconfig.node.json', './tsconfig.app.json'],\n        tsconfigRootDir: import.meta.dirname,\n      },\n      // other options...\n    },\n  },\n])\n````\n\n## VS Code + Tailwind IntelliSense (important)\n\nIf you use Tailwind CSS IntelliSense (v2/v4) in VS Code and you're working in a\nmonorepo or with TypeScript path aliases, you must ensure your TypeScript config\nexposes the correct root directories so the extension can resolve files and the\nTailwind config correctly.\n\nAdd `rootDirs` under `compilerOptions` in your `tsconfig.json` (or the config\nused by your editor) to point to your source folders. Example:\n\n```json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"~/*\": [\"src/*\"]\n    },\n    \"rootDirs\": [\"./src\"]\n  }\n}\n```\n\nWhy this matters\n\n- The Tailwind IntelliSense language server resolves imports and scans your\n  project to determine which classes are used. When the editor cannot resolve\n  your source layout (for example, because of path aliases or non-standard\n  folder layouts), IntelliSense can miss class names used in component helpers\n  like `cva`, `cn`, or `cx`.\n- Adding `rootDirs` helps the language server locate your files reliably so\n  class extraction and suggestions work consistently.\n\nAfter updating `tsconfig.json`, reload VS Code (Developer: Reload Window) and\nrestart the Tailwind language server (`Tailwind CSS: Restart Language Server`)\nto pick up the change.\n\n### VS Code workspace settings (important)\n\nIn addition to `tsconfig.json`, some VS Code settings help the Tailwind CSS\nIntelliSense extension detect classes inside helpers like `cva`, `cn`, or `cx`\nand work correctly with TypeScript path aliases. Create or update\n`.vscode/settings.json` in your project root with these recommended keys:\n\n```jsonc\n{\n  \"tailwindCSS.includeLanguages\": {\n    \"typescript\": \"html\",\n    \"typescriptreact\": \"html\",\n  },\n  \"tailwindCSS.classFunctions\": [\n    \"cva\",\n    \"cx\",\n    \"cn\",\n    \"twMerge\",\n    \"className\",\n    \"classNames\",\n  ],\n  \"tailwindCSS.experimental.classRegex\": [\n    [\"cva\\\\(\\\\s*\\\\[([^\\\\]]*)\\\\]\", \"[\\\\\\\"'`]([^\\\\\\\"'`]*)[\\\\\\\"'`]\"],\n    [\"cva\\\\(([^)]*)\\\\)\", \"[\\\\\\\"'`]([^\\\\\\\"'`]*)[\\\\\\\"'`]\"],\n    [\"cx\\\\(([^)]*)\\\\)\", \"[\\\\\\\"'`]([^\\\\\\\"'`]*)[\\\\\\\"'`]\"],\n    [\"cn\\\\(([^)]*)\\\\)\", \"[\\\\\\\"'`]([^\\\\\\\"'`]*)[\\\\\\\"'`]\"],\n  ],\n  \"tailwindCSS.suggestions\": true,\n  \"tailwindCSS.validate\": true,\n}\n```\n\nNotes:\n\n- `includeLanguages` maps TypeScript files to HTML parsing so the extension can\n  extract classes from JSX.\n- `classFunctions` tells the extension which helpers to inspect for classes.\n- `experimental.classRegex` adds custom regex patterns so the extension can find\n  class strings inside arrays and helper calls (common with `cva`). Adjust these\n  patterns if you use different helper names or structures.\n- After changing `.vscode/settings.json`, reload VS Code and run\n  `Tailwind CSS: Restart Language Server`.\n","readmeFilename":"README.md"}