virastack 0.0.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +94 -18
- package/bin/virastack.js +7 -0
- package/package.json +43 -9
- package/src/commands/add.js +64 -0
- package/src/commands/init.js +286 -0
- package/src/i18n.js +231 -0
- package/src/index.js +64 -0
- package/src/utils/args.js +60 -0
- package/src/utils/copy-template.js +81 -0
- package/src/utils/exec.js +29 -0
- package/src/utils/git.js +38 -0
- package/src/utils/is-online.js +14 -0
- package/src/utils/package-info.js +12 -0
- package/src/utils/package-manager.js +33 -0
- package/src/utils/setup-env.js +25 -0
- package/src/utils/telemetry.js +86 -0
- package/src/utils/tools.js +48 -0
- package/src/utils/update-package-json.js +44 -0
- package/src/utils/update-readme.js +25 -0
- package/src/utils/validate-project-name.js +26 -0
- package/templates/nextjs/.changeset/README.md +8 -0
- package/templates/nextjs/.changeset/config.json +11 -0
- package/templates/nextjs/.env.example +6 -0
- package/templates/nextjs/.env.local +6 -0
- package/templates/nextjs/.eslintcache +1 -0
- package/templates/nextjs/.github/workflows/ci.yml +41 -0
- package/templates/nextjs/.husky/commit-msg +1 -0
- package/templates/nextjs/.husky/pre-commit +1 -0
- package/templates/nextjs/.husky/pre-push +1 -0
- package/templates/nextjs/.prettierignore +6 -0
- package/templates/nextjs/.prettierrc +42 -0
- package/templates/nextjs/.vscode/extensions.json +7 -0
- package/templates/nextjs/.vscode/settings.json +20 -0
- package/templates/nextjs/LICENSE +21 -0
- package/templates/nextjs/README.md +202 -0
- package/templates/nextjs/_gitignore +45 -0
- package/templates/nextjs/commitlint.config.js +6 -0
- package/templates/nextjs/eslint.config.mjs +27 -0
- package/templates/nextjs/knip.config.js +25 -0
- package/templates/nextjs/next-env.d.ts +6 -0
- package/templates/nextjs/next.config.ts +39 -0
- package/templates/nextjs/package.json +115 -0
- package/templates/nextjs/pnpm-lock.yaml +6467 -0
- package/templates/nextjs/pnpm-workspace.yaml +3 -0
- package/templates/nextjs/postcss.config.mjs +7 -0
- package/templates/nextjs/public/favicon.ico +0 -0
- package/templates/nextjs/public/llms.txt +96 -0
- package/templates/nextjs/public/logo.png +0 -0
- package/templates/nextjs/public/logo.webp +0 -0
- package/templates/nextjs/public/og.png +0 -0
- package/templates/nextjs/src/app/error.tsx +34 -0
- package/templates/nextjs/src/app/favicon.ico +0 -0
- package/templates/nextjs/src/app/global-error.tsx +32 -0
- package/templates/nextjs/src/app/layout.tsx +37 -0
- package/templates/nextjs/src/app/loading.tsx +12 -0
- package/templates/nextjs/src/app/manifest.ts +22 -0
- package/templates/nextjs/src/app/not-found.tsx +18 -0
- package/templates/nextjs/src/app/page.tsx +5 -0
- package/templates/nextjs/src/app/robots.ts +13 -0
- package/templates/nextjs/src/app/sitemap.ts +14 -0
- package/templates/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
- package/templates/nextjs/src/components/ui/avatar.tsx +54 -0
- package/templates/nextjs/src/components/ui/button.tsx +46 -0
- package/templates/nextjs/src/components/ui/dialog.tsx +107 -0
- package/templates/nextjs/src/components/ui/field.tsx +24 -0
- package/templates/nextjs/src/components/ui/index.ts +27 -0
- package/templates/nextjs/src/components/ui/input.tsx +23 -0
- package/templates/nextjs/src/components/ui/label.tsx +17 -0
- package/templates/nextjs/src/components/ui/skeleton.tsx +13 -0
- package/templates/nextjs/src/components/ui/table.tsx +94 -0
- package/templates/nextjs/src/components/ui/tabs.tsx +46 -0
- package/templates/nextjs/src/config/seo.config.ts +37 -0
- package/templates/nextjs/src/config/site.config.ts +15 -0
- package/templates/nextjs/src/constants/index.ts +5 -0
- package/templates/nextjs/src/env.ts +41 -0
- package/templates/nextjs/src/features/landing/api/get-users.api.ts +7 -0
- package/templates/nextjs/src/features/landing/api/index.ts +2 -0
- package/templates/nextjs/src/features/landing/api/query-keys.ts +7 -0
- package/templates/nextjs/src/features/landing/components/CartDemo.tsx +66 -0
- package/templates/nextjs/src/features/landing/components/Features.tsx +39 -0
- package/templates/nextjs/src/features/landing/components/Hero.tsx +65 -0
- package/templates/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
- package/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx +62 -0
- package/templates/nextjs/src/features/landing/components/Reveal.tsx +83 -0
- package/templates/nextjs/src/features/landing/components/Showcase.tsx +66 -0
- package/templates/nextjs/src/features/landing/components/UsersDemo.tsx +188 -0
- package/templates/nextjs/src/features/landing/data/features.data.tsx +47 -0
- package/templates/nextjs/src/features/landing/data/index.ts +1 -0
- package/templates/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
- package/templates/nextjs/src/features/landing/helpers/index.ts +7 -0
- package/templates/nextjs/src/features/landing/helpers/motion.ts +21 -0
- package/templates/nextjs/src/features/landing/hooks/index.ts +1 -0
- package/templates/nextjs/src/features/landing/hooks/use-users.ts +16 -0
- package/templates/nextjs/src/features/landing/icons/index.ts +6 -0
- package/templates/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
- package/templates/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
- package/templates/nextjs/src/features/landing/icons/react.tsx +20 -0
- package/templates/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
- package/templates/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
- package/templates/nextjs/src/features/landing/icons/typescript.tsx +16 -0
- package/templates/nextjs/src/features/landing/index.ts +1 -0
- package/templates/nextjs/src/features/landing/schemas/index.ts +1 -0
- package/templates/nextjs/src/features/landing/schemas/project.schema.ts +7 -0
- package/templates/nextjs/src/features/landing/stores/counter.store.ts +18 -0
- package/templates/nextjs/src/features/landing/stores/index.ts +1 -0
- package/templates/nextjs/src/features/landing/types/index.ts +1 -0
- package/templates/nextjs/src/features/landing/types/user.types.ts +9 -0
- package/templates/nextjs/src/helpers/format-date.ts +13 -0
- package/templates/nextjs/src/helpers/index.ts +1 -0
- package/templates/nextjs/src/hooks/index.ts +5 -0
- package/templates/nextjs/src/lib/api.ts +97 -0
- package/templates/nextjs/src/lib/query-client.ts +18 -0
- package/templates/nextjs/src/lib/utils.ts +12 -0
- package/templates/nextjs/src/providers/Providers.tsx +15 -0
- package/templates/nextjs/src/providers/QueryProvider.tsx +19 -0
- package/templates/nextjs/src/providers/ThemeProvider.tsx +9 -0
- package/templates/nextjs/src/providers/index.ts +1 -0
- package/templates/nextjs/src/proxy.ts +6 -0
- package/templates/nextjs/src/schemas/index.ts +5 -0
- package/templates/nextjs/src/stores/index.ts +5 -0
- package/templates/nextjs/src/styles/tailwind.css +122 -0
- package/templates/nextjs/src/types/site-config.types.ts +10 -0
- package/templates/nextjs/tsconfig.json +45 -0
- package/templates/nextjs/tsconfig.tsbuildinfo +1 -0
- package/templates/tanstack/.changeset/README.md +8 -0
- package/templates/tanstack/.changeset/config.json +11 -0
- package/templates/tanstack/.env.example +6 -0
- package/templates/tanstack/.env.local +6 -0
- package/templates/tanstack/.eslintcache +1 -0
- package/templates/tanstack/.github/workflows/ci.yml +41 -0
- package/templates/tanstack/.husky/commit-msg +1 -0
- package/templates/tanstack/.husky/pre-commit +1 -0
- package/templates/tanstack/.husky/pre-push +1 -0
- package/templates/tanstack/.prettierignore +7 -0
- package/templates/tanstack/.prettierrc +41 -0
- package/templates/tanstack/.vscode/extensions.json +7 -0
- package/templates/tanstack/.vscode/settings.json +22 -0
- package/templates/tanstack/LICENSE +21 -0
- package/templates/tanstack/README.md +204 -0
- package/templates/tanstack/_gitignore +52 -0
- package/templates/tanstack/commitlint.config.js +6 -0
- package/templates/tanstack/eslint.config.js +28 -0
- package/templates/tanstack/knip.config.js +22 -0
- package/templates/tanstack/package.json +130 -0
- package/templates/tanstack/pnpm-lock.yaml +5835 -0
- package/templates/tanstack/pnpm-workspace.yaml +3 -0
- package/templates/tanstack/public/favicon.ico +0 -0
- package/templates/tanstack/public/llms.txt +86 -0
- package/templates/tanstack/public/logo.png +0 -0
- package/templates/tanstack/public/logo.webp +0 -0
- package/templates/tanstack/public/og.png +0 -0
- package/templates/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
- package/templates/tanstack/src/components/shared/NotFound.tsx +18 -0
- package/templates/tanstack/src/components/shared/Pending.tsx +13 -0
- package/templates/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
- package/templates/tanstack/src/components/ui/avatar.tsx +52 -0
- package/templates/tanstack/src/components/ui/button.tsx +47 -0
- package/templates/tanstack/src/components/ui/dialog.tsx +107 -0
- package/templates/tanstack/src/components/ui/field.tsx +24 -0
- package/templates/tanstack/src/components/ui/index.ts +27 -0
- package/templates/tanstack/src/components/ui/input.tsx +23 -0
- package/templates/tanstack/src/components/ui/label.tsx +17 -0
- package/templates/tanstack/src/components/ui/skeleton.tsx +13 -0
- package/templates/tanstack/src/components/ui/table.tsx +94 -0
- package/templates/tanstack/src/components/ui/tabs.tsx +46 -0
- package/templates/tanstack/src/config/seo.config.ts +52 -0
- package/templates/tanstack/src/config/site.config.ts +15 -0
- package/templates/tanstack/src/constants/index.ts +5 -0
- package/templates/tanstack/src/env.ts +47 -0
- package/templates/tanstack/src/features/landing/api/get-users.api.ts +7 -0
- package/templates/tanstack/src/features/landing/api/index.ts +2 -0
- package/templates/tanstack/src/features/landing/api/query-keys.ts +7 -0
- package/templates/tanstack/src/features/landing/components/CartDemo.tsx +66 -0
- package/templates/tanstack/src/features/landing/components/Features.tsx +39 -0
- package/templates/tanstack/src/features/landing/components/Hero.tsx +63 -0
- package/templates/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
- package/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx +63 -0
- package/templates/tanstack/src/features/landing/components/Reveal.tsx +83 -0
- package/templates/tanstack/src/features/landing/components/Showcase.tsx +66 -0
- package/templates/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
- package/templates/tanstack/src/features/landing/data/features.data.tsx +45 -0
- package/templates/tanstack/src/features/landing/data/index.ts +1 -0
- package/templates/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
- package/templates/tanstack/src/features/landing/helpers/index.ts +7 -0
- package/templates/tanstack/src/features/landing/helpers/motion.ts +21 -0
- package/templates/tanstack/src/features/landing/hooks/index.ts +1 -0
- package/templates/tanstack/src/features/landing/hooks/use-users.ts +19 -0
- package/templates/tanstack/src/features/landing/icons/index.ts +5 -0
- package/templates/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
- package/templates/tanstack/src/features/landing/icons/react.tsx +20 -0
- package/templates/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
- package/templates/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
- package/templates/tanstack/src/features/landing/icons/typescript.tsx +16 -0
- package/templates/tanstack/src/features/landing/index.ts +1 -0
- package/templates/tanstack/src/features/landing/schemas/index.ts +1 -0
- package/templates/tanstack/src/features/landing/schemas/project.schema.ts +7 -0
- package/templates/tanstack/src/features/landing/stores/counter.store.ts +18 -0
- package/templates/tanstack/src/features/landing/stores/index.ts +1 -0
- package/templates/tanstack/src/features/landing/types/index.ts +1 -0
- package/templates/tanstack/src/features/landing/types/user.types.ts +9 -0
- package/templates/tanstack/src/helpers/format-date.ts +13 -0
- package/templates/tanstack/src/helpers/index.ts +1 -0
- package/templates/tanstack/src/hooks/index.ts +5 -0
- package/templates/tanstack/src/lib/api.ts +97 -0
- package/templates/tanstack/src/lib/query-client.ts +18 -0
- package/templates/tanstack/src/lib/utils.ts +13 -0
- package/templates/tanstack/src/providers/Providers.tsx +12 -0
- package/templates/tanstack/src/providers/ThemeProvider.tsx +98 -0
- package/templates/tanstack/src/providers/devtools.tsx +6 -0
- package/templates/tanstack/src/providers/index.ts +1 -0
- package/templates/tanstack/src/providers/root-provider.ts +9 -0
- package/templates/tanstack/src/routeTree.gen.ts +123 -0
- package/templates/tanstack/src/router.tsx +27 -0
- package/templates/tanstack/src/routes/__root.tsx +78 -0
- package/templates/tanstack/src/routes/index.tsx +13 -0
- package/templates/tanstack/src/routes/robots[.]txt.ts +21 -0
- package/templates/tanstack/src/routes/site[.]webmanifest.ts +32 -0
- package/templates/tanstack/src/routes/sitemap[.]xml.ts +27 -0
- package/templates/tanstack/src/schemas/index.ts +5 -0
- package/templates/tanstack/src/start.ts +20 -0
- package/templates/tanstack/src/stores/index.ts +5 -0
- package/templates/tanstack/src/styles/tailwind.css +123 -0
- package/templates/tanstack/src/types/site-config.types.ts +10 -0
- package/templates/tanstack/tsconfig.json +25 -0
- package/templates/tanstack/tsr.config.json +3 -0
- package/templates/tanstack/vite.config.ts +12 -0
- package/templates-i18n/nextjs/.changeset/README.md +8 -0
- package/templates-i18n/nextjs/.changeset/config.json +11 -0
- package/templates-i18n/nextjs/.env.example +6 -0
- package/templates-i18n/nextjs/.eslintcache +1 -0
- package/templates-i18n/nextjs/.github/workflows/ci.yml +41 -0
- package/templates-i18n/nextjs/.husky/commit-msg +1 -0
- package/templates-i18n/nextjs/.husky/pre-commit +1 -0
- package/templates-i18n/nextjs/.husky/pre-push +1 -0
- package/templates-i18n/nextjs/.prettierignore +6 -0
- package/templates-i18n/nextjs/.prettierrc +42 -0
- package/templates-i18n/nextjs/.vscode/extensions.json +7 -0
- package/templates-i18n/nextjs/.vscode/settings.json +20 -0
- package/templates-i18n/nextjs/LICENSE +21 -0
- package/templates-i18n/nextjs/README.md +202 -0
- package/templates-i18n/nextjs/_gitignore +45 -0
- package/templates-i18n/nextjs/commitlint.config.js +6 -0
- package/templates-i18n/nextjs/eslint.config.mjs +27 -0
- package/templates-i18n/nextjs/knip.config.js +29 -0
- package/templates-i18n/nextjs/next-env.d.ts +6 -0
- package/templates-i18n/nextjs/next.config.ts +42 -0
- package/templates-i18n/nextjs/package.json +117 -0
- package/templates-i18n/nextjs/pnpm-lock.yaml +6854 -0
- package/templates-i18n/nextjs/pnpm-workspace.yaml +3 -0
- package/templates-i18n/nextjs/postcss.config.mjs +7 -0
- package/templates-i18n/nextjs/public/favicon.ico +0 -0
- package/templates-i18n/nextjs/public/llms.txt +96 -0
- package/templates-i18n/nextjs/public/logo.png +0 -0
- package/templates-i18n/nextjs/public/logo.webp +0 -0
- package/templates-i18n/nextjs/public/og.png +0 -0
- package/templates-i18n/nextjs/src/app/[locale]/error.tsx +34 -0
- package/templates-i18n/nextjs/src/app/[locale]/layout.tsx +60 -0
- package/templates-i18n/nextjs/src/app/[locale]/loading.tsx +12 -0
- package/templates-i18n/nextjs/src/app/[locale]/not-found.tsx +18 -0
- package/templates-i18n/nextjs/src/app/[locale]/page.tsx +10 -0
- package/templates-i18n/nextjs/src/app/favicon.ico +0 -0
- package/templates-i18n/nextjs/src/app/global-error.tsx +32 -0
- package/templates-i18n/nextjs/src/app/manifest.ts +22 -0
- package/templates-i18n/nextjs/src/app/robots.ts +13 -0
- package/templates-i18n/nextjs/src/app/sitemap.ts +14 -0
- package/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx +48 -0
- package/templates-i18n/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
- package/templates-i18n/nextjs/src/components/ui/avatar.tsx +54 -0
- package/templates-i18n/nextjs/src/components/ui/button.tsx +46 -0
- package/templates-i18n/nextjs/src/components/ui/dialog.tsx +107 -0
- package/templates-i18n/nextjs/src/components/ui/field.tsx +24 -0
- package/templates-i18n/nextjs/src/components/ui/index.ts +27 -0
- package/templates-i18n/nextjs/src/components/ui/input.tsx +23 -0
- package/templates-i18n/nextjs/src/components/ui/label.tsx +17 -0
- package/templates-i18n/nextjs/src/components/ui/skeleton.tsx +13 -0
- package/templates-i18n/nextjs/src/components/ui/table.tsx +94 -0
- package/templates-i18n/nextjs/src/components/ui/tabs.tsx +46 -0
- package/templates-i18n/nextjs/src/config/seo.config.ts +37 -0
- package/templates-i18n/nextjs/src/config/site.config.ts +15 -0
- package/templates-i18n/nextjs/src/constants/index.ts +5 -0
- package/templates-i18n/nextjs/src/env.ts +41 -0
- package/templates-i18n/nextjs/src/features/landing/api/get-users.api.ts +7 -0
- package/templates-i18n/nextjs/src/features/landing/api/index.ts +2 -0
- package/templates-i18n/nextjs/src/features/landing/api/query-keys.ts +7 -0
- package/templates-i18n/nextjs/src/features/landing/components/CartDemo.tsx +68 -0
- package/templates-i18n/nextjs/src/features/landing/components/Features.tsx +84 -0
- package/templates-i18n/nextjs/src/features/landing/components/Hero.tsx +76 -0
- package/templates-i18n/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
- package/templates-i18n/nextjs/src/features/landing/components/ProjectFormDemo.tsx +64 -0
- package/templates-i18n/nextjs/src/features/landing/components/Reveal.tsx +83 -0
- package/templates-i18n/nextjs/src/features/landing/components/Showcase.tsx +83 -0
- package/templates-i18n/nextjs/src/features/landing/components/UsersDemo.tsx +191 -0
- package/templates-i18n/nextjs/src/features/landing/data/features.data.tsx +47 -0
- package/templates-i18n/nextjs/src/features/landing/data/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
- package/templates-i18n/nextjs/src/features/landing/helpers/index.ts +7 -0
- package/templates-i18n/nextjs/src/features/landing/helpers/motion.ts +21 -0
- package/templates-i18n/nextjs/src/features/landing/hooks/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/hooks/use-users.ts +16 -0
- package/templates-i18n/nextjs/src/features/landing/icons/index.ts +6 -0
- package/templates-i18n/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
- package/templates-i18n/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
- package/templates-i18n/nextjs/src/features/landing/icons/react.tsx +20 -0
- package/templates-i18n/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
- package/templates-i18n/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
- package/templates-i18n/nextjs/src/features/landing/icons/typescript.tsx +16 -0
- package/templates-i18n/nextjs/src/features/landing/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/schemas/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/schemas/project.schema.ts +9 -0
- package/templates-i18n/nextjs/src/features/landing/stores/counter.store.ts +18 -0
- package/templates-i18n/nextjs/src/features/landing/stores/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/types/index.ts +1 -0
- package/templates-i18n/nextjs/src/features/landing/types/user.types.ts +9 -0
- package/templates-i18n/nextjs/src/helpers/format-date.ts +13 -0
- package/templates-i18n/nextjs/src/helpers/index.ts +1 -0
- package/templates-i18n/nextjs/src/hooks/index.ts +5 -0
- package/templates-i18n/nextjs/src/i18n/request.ts +16 -0
- package/templates-i18n/nextjs/src/i18n/routing.ts +11 -0
- package/templates-i18n/nextjs/src/lib/api.ts +97 -0
- package/templates-i18n/nextjs/src/lib/query-client.ts +18 -0
- package/templates-i18n/nextjs/src/lib/utils.ts +12 -0
- package/templates-i18n/nextjs/src/messages/en.json +55 -0
- package/templates-i18n/nextjs/src/messages/tr.json +55 -0
- package/templates-i18n/nextjs/src/providers/Providers.tsx +15 -0
- package/templates-i18n/nextjs/src/providers/QueryProvider.tsx +19 -0
- package/templates-i18n/nextjs/src/providers/ThemeProvider.tsx +9 -0
- package/templates-i18n/nextjs/src/providers/index.ts +1 -0
- package/templates-i18n/nextjs/src/proxy.ts +16 -0
- package/templates-i18n/nextjs/src/schemas/index.ts +5 -0
- package/templates-i18n/nextjs/src/stores/index.ts +5 -0
- package/templates-i18n/nextjs/src/styles/tailwind.css +122 -0
- package/templates-i18n/nextjs/src/types/site-config.types.ts +10 -0
- package/templates-i18n/nextjs/tsconfig.json +45 -0
- package/templates-i18n/nextjs/tsconfig.tsbuildinfo +1 -0
- package/templates-i18n/tanstack/.changeset/README.md +8 -0
- package/templates-i18n/tanstack/.changeset/config.json +11 -0
- package/templates-i18n/tanstack/.env.example +6 -0
- package/templates-i18n/tanstack/.eslintcache +1 -0
- package/templates-i18n/tanstack/.github/workflows/ci.yml +41 -0
- package/templates-i18n/tanstack/.husky/commit-msg +1 -0
- package/templates-i18n/tanstack/.husky/pre-commit +1 -0
- package/templates-i18n/tanstack/.husky/pre-push +1 -0
- package/templates-i18n/tanstack/.prettierignore +7 -0
- package/templates-i18n/tanstack/.prettierrc +41 -0
- package/templates-i18n/tanstack/.vscode/extensions.json +7 -0
- package/templates-i18n/tanstack/.vscode/settings.json +22 -0
- package/templates-i18n/tanstack/LICENSE +21 -0
- package/templates-i18n/tanstack/README.md +204 -0
- package/templates-i18n/tanstack/_gitignore +52 -0
- package/templates-i18n/tanstack/commitlint.config.js +6 -0
- package/templates-i18n/tanstack/eslint.config.js +29 -0
- package/templates-i18n/tanstack/knip.config.js +26 -0
- package/templates-i18n/tanstack/messages/en.json +65 -0
- package/templates-i18n/tanstack/messages/tr.json +65 -0
- package/templates-i18n/tanstack/package.json +132 -0
- package/templates-i18n/tanstack/pnpm-lock.yaml +5998 -0
- package/templates-i18n/tanstack/pnpm-workspace.yaml +3 -0
- package/templates-i18n/tanstack/project.inlang/README.md +157 -0
- package/templates-i18n/tanstack/project.inlang/settings.json +9 -0
- package/templates-i18n/tanstack/public/favicon.ico +0 -0
- package/templates-i18n/tanstack/public/llms.txt +86 -0
- package/templates-i18n/tanstack/public/logo.png +0 -0
- package/templates-i18n/tanstack/public/logo.webp +0 -0
- package/templates-i18n/tanstack/public/og.png +0 -0
- package/templates-i18n/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
- package/templates-i18n/tanstack/src/components/shared/LanguageSwitcher.tsx +57 -0
- package/templates-i18n/tanstack/src/components/shared/NotFound.tsx +18 -0
- package/templates-i18n/tanstack/src/components/shared/Pending.tsx +13 -0
- package/templates-i18n/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
- package/templates-i18n/tanstack/src/components/ui/avatar.tsx +52 -0
- package/templates-i18n/tanstack/src/components/ui/button.tsx +47 -0
- package/templates-i18n/tanstack/src/components/ui/dialog.tsx +107 -0
- package/templates-i18n/tanstack/src/components/ui/field.tsx +24 -0
- package/templates-i18n/tanstack/src/components/ui/index.ts +27 -0
- package/templates-i18n/tanstack/src/components/ui/input.tsx +23 -0
- package/templates-i18n/tanstack/src/components/ui/label.tsx +17 -0
- package/templates-i18n/tanstack/src/components/ui/skeleton.tsx +13 -0
- package/templates-i18n/tanstack/src/components/ui/table.tsx +94 -0
- package/templates-i18n/tanstack/src/components/ui/tabs.tsx +46 -0
- package/templates-i18n/tanstack/src/config/seo.config.ts +52 -0
- package/templates-i18n/tanstack/src/config/site.config.ts +15 -0
- package/templates-i18n/tanstack/src/constants/index.ts +5 -0
- package/templates-i18n/tanstack/src/env.ts +47 -0
- package/templates-i18n/tanstack/src/features/landing/api/get-users.api.ts +7 -0
- package/templates-i18n/tanstack/src/features/landing/api/index.ts +2 -0
- package/templates-i18n/tanstack/src/features/landing/api/query-keys.ts +7 -0
- package/templates-i18n/tanstack/src/features/landing/components/CartDemo.tsx +67 -0
- package/templates-i18n/tanstack/src/features/landing/components/Features.tsx +79 -0
- package/templates-i18n/tanstack/src/features/landing/components/Hero.tsx +68 -0
- package/templates-i18n/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
- package/templates-i18n/tanstack/src/features/landing/components/ProjectFormDemo.tsx +64 -0
- package/templates-i18n/tanstack/src/features/landing/components/Reveal.tsx +83 -0
- package/templates-i18n/tanstack/src/features/landing/components/Showcase.tsx +81 -0
- package/templates-i18n/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
- package/templates-i18n/tanstack/src/features/landing/data/features.data.tsx +45 -0
- package/templates-i18n/tanstack/src/features/landing/data/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
- package/templates-i18n/tanstack/src/features/landing/helpers/index.ts +7 -0
- package/templates-i18n/tanstack/src/features/landing/helpers/motion.ts +21 -0
- package/templates-i18n/tanstack/src/features/landing/hooks/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/hooks/use-users.ts +19 -0
- package/templates-i18n/tanstack/src/features/landing/icons/index.ts +5 -0
- package/templates-i18n/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
- package/templates-i18n/tanstack/src/features/landing/icons/react.tsx +20 -0
- package/templates-i18n/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
- package/templates-i18n/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
- package/templates-i18n/tanstack/src/features/landing/icons/typescript.tsx +16 -0
- package/templates-i18n/tanstack/src/features/landing/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/schemas/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/schemas/project.schema.ts +10 -0
- package/templates-i18n/tanstack/src/features/landing/stores/counter.store.ts +18 -0
- package/templates-i18n/tanstack/src/features/landing/stores/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/types/index.ts +1 -0
- package/templates-i18n/tanstack/src/features/landing/types/user.types.ts +9 -0
- package/templates-i18n/tanstack/src/helpers/format-date.ts +13 -0
- package/templates-i18n/tanstack/src/helpers/index.ts +1 -0
- package/templates-i18n/tanstack/src/hooks/index.ts +5 -0
- package/templates-i18n/tanstack/src/lib/api.ts +97 -0
- package/templates-i18n/tanstack/src/lib/query-client.ts +18 -0
- package/templates-i18n/tanstack/src/lib/utils.ts +13 -0
- package/templates-i18n/tanstack/src/paraglide/README.md +162 -0
- package/templates-i18n/tanstack/src/providers/Providers.tsx +12 -0
- package/templates-i18n/tanstack/src/providers/ThemeProvider.tsx +98 -0
- package/templates-i18n/tanstack/src/providers/devtools.tsx +6 -0
- package/templates-i18n/tanstack/src/providers/index.ts +1 -0
- package/templates-i18n/tanstack/src/providers/root-provider.ts +9 -0
- package/templates-i18n/tanstack/src/routeTree.gen.ts +179 -0
- package/templates-i18n/tanstack/src/router.tsx +27 -0
- package/templates-i18n/tanstack/src/routes/$lang/index.tsx +13 -0
- package/templates-i18n/tanstack/src/routes/$lang.tsx +22 -0
- package/templates-i18n/tanstack/src/routes/__root.tsx +80 -0
- package/templates-i18n/tanstack/src/routes/index.tsx +13 -0
- package/templates-i18n/tanstack/src/routes/robots[.]txt.ts +21 -0
- package/templates-i18n/tanstack/src/routes/site[.]webmanifest.ts +32 -0
- package/templates-i18n/tanstack/src/routes/sitemap[.]xml.ts +27 -0
- package/templates-i18n/tanstack/src/schemas/index.ts +5 -0
- package/templates-i18n/tanstack/src/server.ts +10 -0
- package/templates-i18n/tanstack/src/start.ts +20 -0
- package/templates-i18n/tanstack/src/stores/index.ts +5 -0
- package/templates-i18n/tanstack/src/styles/tailwind.css +123 -0
- package/templates-i18n/tanstack/src/types/site-config.types.ts +10 -0
- package/templates-i18n/tanstack/tsconfig.json +26 -0
- package/templates-i18n/tanstack/tsr.config.json +3 -0
- package/templates-i18n/tanstack/vite.config.ts +31 -0
- package/index.js +0 -3
- package/public/start.jpg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/commitlint.config.js":"1","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/eslint.config.mjs":"2","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/knip.config.js":"3","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/next.config.ts":"4","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/postcss.config.mjs":"5","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/error.tsx":"6","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/layout.tsx":"7","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/loading.tsx":"8","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/not-found.tsx":"9","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/page.tsx":"10","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/global-error.tsx":"11","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/manifest.ts":"12","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/robots.ts":"13","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/sitemap.ts":"14","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx":"15","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/shared/ThemeToggle.tsx":"16","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/avatar.tsx":"17","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/button.tsx":"18","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/dialog.tsx":"19","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/field.tsx":"20","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/index.ts":"21","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/input.tsx":"22","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/label.tsx":"23","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/skeleton.tsx":"24","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/table.tsx":"25","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/tabs.tsx":"26","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/config/seo.config.ts":"27","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/config/site.config.ts":"28","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/constants/index.ts":"29","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/env.ts":"30","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/get-users.api.ts":"31","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/index.ts":"32","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/query-keys.ts":"33","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/CartDemo.tsx":"34","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Features.tsx":"35","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Hero.tsx":"36","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/LandingPage.tsx":"37","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/ProjectFormDemo.tsx":"38","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Reveal.tsx":"39","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Showcase.tsx":"40","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/UsersDemo.tsx":"41","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/data/features.data.tsx":"42","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/data/index.ts":"43","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/get-initials.ts":"44","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/index.ts":"45","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/motion.ts":"46","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/hooks/index.ts":"47","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/hooks/use-users.ts":"48","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/index.ts":"49","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/nextjs.tsx":"50","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/react-hook-form.tsx":"51","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/react.tsx":"52","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/tailwind.tsx":"53","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/tanstack.tsx":"54","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/typescript.tsx":"55","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/index.ts":"56","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/schemas/index.ts":"57","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/schemas/project.schema.ts":"58","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/stores/counter.store.ts":"59","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/stores/index.ts":"60","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/types/index.ts":"61","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/types/user.types.ts":"62","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/helpers/format-date.ts":"63","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/helpers/index.ts":"64","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/hooks/index.ts":"65","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/i18n/request.ts":"66","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/i18n/routing.ts":"67","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/api.ts":"68","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/query-client.ts":"69","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/utils.ts":"70","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/Providers.tsx":"71","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/QueryProvider.tsx":"72","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/ThemeProvider.tsx":"73","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/index.ts":"74","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/proxy.ts":"75","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/schemas/index.ts":"76","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/stores/index.ts":"77","/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/types/site-config.types.ts":"78"},{"size":129,"mtime":1784724501000,"results":"79","hashOfConfig":"80"},{"size":686,"mtime":1784724501000,"results":"81","hashOfConfig":"80"},{"size":816,"mtime":1785169070017,"results":"82","hashOfConfig":"80"},{"size":1148,"mtime":1785102111876,"results":"83","hashOfConfig":"84"},{"size":94,"mtime":1784718957000,"results":"85","hashOfConfig":"80"},{"size":946,"mtime":1784724501000,"results":"86","hashOfConfig":"84"},{"size":1464,"mtime":1785163708288,"results":"87","hashOfConfig":"84"},{"size":390,"mtime":1784724501000,"results":"88","hashOfConfig":"84"},{"size":652,"mtime":1784724501000,"results":"89","hashOfConfig":"84"},{"size":291,"mtime":1785163708304,"results":"90","hashOfConfig":"84"},{"size":841,"mtime":1785104632995,"results":"91","hashOfConfig":"84"},{"size":500,"mtime":1784850863000,"results":"92","hashOfConfig":"84"},{"size":277,"mtime":1784724501000,"results":"93","hashOfConfig":"84"},{"size":298,"mtime":1784724501000,"results":"94","hashOfConfig":"84"},{"size":1438,"mtime":1785163708339,"results":"95","hashOfConfig":"84"},{"size":816,"mtime":1785178283251,"results":"96","hashOfConfig":"84"},{"size":1653,"mtime":1784844376000,"results":"97","hashOfConfig":"84"},{"size":1798,"mtime":1784724501000,"results":"98","hashOfConfig":"84"},{"size":3186,"mtime":1784724501000,"results":"99","hashOfConfig":"84"},{"size":570,"mtime":1784844670000,"results":"100","hashOfConfig":"84"},{"size":775,"mtime":1784844515000,"results":"101","hashOfConfig":"84"},{"size":926,"mtime":1784724501000,"results":"102","hashOfConfig":"84"},{"size":430,"mtime":1784724501000,"results":"103","hashOfConfig":"84"},{"size":304,"mtime":1784724501000,"results":"104","hashOfConfig":"84"},{"size":2820,"mtime":1784844955000,"results":"105","hashOfConfig":"84"},{"size":1515,"mtime":1784724501000,"results":"106","hashOfConfig":"84"},{"size":1002,"mtime":1784850859000,"results":"107","hashOfConfig":"84"},{"size":535,"mtime":1784852972000,"results":"108","hashOfConfig":"84"},{"size":156,"mtime":1784848451000,"results":"109","hashOfConfig":"84"},{"size":1281,"mtime":1785162800942,"results":"110","hashOfConfig":"84"},{"size":233,"mtime":1784852534000,"results":"111","hashOfConfig":"84"},{"size":127,"mtime":1784852535000,"results":"112","hashOfConfig":"84"},{"size":301,"mtime":1784852534000,"results":"113","hashOfConfig":"84"},{"size":2404,"mtime":1785163708496,"results":"114","hashOfConfig":"84"},{"size":2769,"mtime":1785163708507,"results":"115","hashOfConfig":"84"},{"size":2936,"mtime":1785163708521,"results":"116","hashOfConfig":"84"},{"size":472,"mtime":1785058808000,"results":"117","hashOfConfig":"84"},{"size":2034,"mtime":1785163708534,"results":"118","hashOfConfig":"84"},{"size":2020,"mtime":1784848449000,"results":"119","hashOfConfig":"84"},{"size":3238,"mtime":1785163708552,"results":"120","hashOfConfig":"84"},{"size":6570,"mtime":1785163708572,"results":"121","hashOfConfig":"84"},{"size":1585,"mtime":1785058808000,"results":"122","hashOfConfig":"84"},{"size":66,"mtime":1784848481000,"results":"123","hashOfConfig":"84"},{"size":354,"mtime":1784848482000,"results":"124","hashOfConfig":"84"},{"size":192,"mtime":1784848482000,"results":"125","hashOfConfig":"84"},{"size":696,"mtime":1784849743000,"results":"126","hashOfConfig":"84"},{"size":63,"mtime":1784848503000,"results":"127","hashOfConfig":"84"},{"size":410,"mtime":1784852536000,"results":"128","hashOfConfig":"84"},{"size":402,"mtime":1784848418000,"results":"129","hashOfConfig":"84"},{"size":1971,"mtime":1784848418000,"results":"130","hashOfConfig":"84"},{"size":1973,"mtime":1784848418000,"results":"131","hashOfConfig":"84"},{"size":6639,"mtime":1784848418000,"results":"132","hashOfConfig":"84"},{"size":807,"mtime":1784848418000,"results":"133","hashOfConfig":"84"},{"size":12913,"mtime":1784848427000,"results":"134","hashOfConfig":"84"},{"size":1892,"mtime":1784848418000,"results":"135","hashOfConfig":"84"},{"size":73,"mtime":1784848503000,"results":"136","hashOfConfig":"84"},{"size":97,"mtime":1785163638569,"results":"137","hashOfConfig":"84"},{"size":332,"mtime":1785163708670,"results":"138","hashOfConfig":"84"},{"size":478,"mtime":1784724501000,"results":"139","hashOfConfig":"84"},{"size":75,"mtime":1784848436000,"results":"140","hashOfConfig":"84"},{"size":65,"mtime":1784848474000,"results":"141","hashOfConfig":"84"},{"size":127,"mtime":1784853202000,"results":"142","hashOfConfig":"84"},{"size":411,"mtime":1784724501000,"results":"143","hashOfConfig":"84"},{"size":52,"mtime":1784724501000,"results":"144","hashOfConfig":"84"},{"size":144,"mtime":1784848450000,"results":"145","hashOfConfig":"84"},{"size":402,"mtime":1785163708714,"results":"146","hashOfConfig":"84"},{"size":354,"mtime":1785174272423,"results":"147","hashOfConfig":"84"},{"size":2960,"mtime":1784724501000,"results":"148","hashOfConfig":"84"},{"size":465,"mtime":1784724501000,"results":"149","hashOfConfig":"84"},{"size":353,"mtime":1784724501000,"results":"150","hashOfConfig":"84"},{"size":496,"mtime":1784724501000,"results":"151","hashOfConfig":"84"},{"size":533,"mtime":1784844398000,"results":"152","hashOfConfig":"84"},{"size":303,"mtime":1785178190019,"results":"153","hashOfConfig":"84"},{"size":51,"mtime":1784724501000,"results":"154","hashOfConfig":"84"},{"size":447,"mtime":1785163708781,"results":"155","hashOfConfig":"84"},{"size":154,"mtime":1784848451000,"results":"156","hashOfConfig":"84"},{"size":154,"mtime":1784848451000,"results":"157","hashOfConfig":"84"},{"size":160,"mtime":1784724501000,"results":"158","hashOfConfig":"84"},{"filePath":"159","messages":"160","suppressedMessages":"161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"18fg6fv",{"filePath":"162","messages":"163","suppressedMessages":"164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"165","messages":"166","suppressedMessages":"167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","suppressedMessages":"170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"5rtamk",{"filePath":"171","messages":"172","suppressedMessages":"173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","suppressedMessages":"176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"177","messages":"178","suppressedMessages":"179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","suppressedMessages":"182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"183","messages":"184","suppressedMessages":"185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","suppressedMessages":"188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"189","messages":"190","suppressedMessages":"191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"297","messages":"298","suppressedMessages":"299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"300","messages":"301","suppressedMessages":"302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"303","messages":"304","suppressedMessages":"305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","suppressedMessages":"308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"309","messages":"310","suppressedMessages":"311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"312","messages":"313","suppressedMessages":"314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"315","messages":"316","suppressedMessages":"317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"318","messages":"319","suppressedMessages":"320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"321","messages":"322","suppressedMessages":"323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"324","messages":"325","suppressedMessages":"326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"327","messages":"328","suppressedMessages":"329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"330","messages":"331","suppressedMessages":"332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"333","messages":"334","suppressedMessages":"335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"336","messages":"337","suppressedMessages":"338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"339","messages":"340","suppressedMessages":"341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"342","messages":"343","suppressedMessages":"344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"345","messages":"346","suppressedMessages":"347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"348","messages":"349","suppressedMessages":"350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"351","messages":"352","suppressedMessages":"353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"354","messages":"355","suppressedMessages":"356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"357","messages":"358","suppressedMessages":"359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"360","messages":"361","suppressedMessages":"362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"363","messages":"364","suppressedMessages":"365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"366","messages":"367","suppressedMessages":"368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"369","messages":"370","suppressedMessages":"371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"372","messages":"373","suppressedMessages":"374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"375","messages":"376","suppressedMessages":"377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"378","messages":"379","suppressedMessages":"380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"381","messages":"382","suppressedMessages":"383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"384","messages":"385","suppressedMessages":"386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"387","messages":"388","suppressedMessages":"389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"390","messages":"391","suppressedMessages":"392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/commitlint.config.js",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/eslint.config.mjs",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/knip.config.js",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/next.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/postcss.config.mjs",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/error.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/layout.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/loading.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/not-found.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/[locale]/page.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/global-error.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/manifest.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/robots.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/app/sitemap.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/shared/ThemeToggle.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/avatar.tsx",[],["393"],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/button.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/dialog.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/field.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/input.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/label.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/skeleton.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/table.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/components/ui/tabs.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/config/seo.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/config/site.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/constants/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/env.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/get-users.api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/api/query-keys.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/CartDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Features.tsx",[],["394"],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Hero.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/LandingPage.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/ProjectFormDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Reveal.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/Showcase.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/components/UsersDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/data/features.data.tsx",[],["395"],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/data/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/get-initials.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/helpers/motion.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/hooks/use-users.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/nextjs.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/react-hook-form.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/react.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/tailwind.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/tanstack.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/icons/typescript.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/schemas/project.schema.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/stores/counter.store.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/types/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/features/landing/types/user.types.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/helpers/format-date.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/i18n/request.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/i18n/routing.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/query-client.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/lib/utils.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/Providers.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/QueryProvider.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/ThemeProvider.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/providers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/proxy.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates-i18n/nextjs/src/types/site-config.types.ts",[],[],{"ruleId":"396","severity":1,"message":"397","line":27,"column":5,"nodeType":"398","endLine":35,"endColumn":7,"suppressions":"399"},{"ruleId":"396","severity":1,"message":"397","line":46,"column":13,"nodeType":"398","endLine":46,"endColumn":77,"suppressions":"400"},{"ruleId":"396","severity":1,"message":"397","line":45,"column":11,"nodeType":"398","endLine":45,"endColumn":75,"suppressions":"401"},"@next/next/no-img-element","Using `<img>` could result in slower LCP and higher bandwidth. Consider using `<Image />` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element","JSXOpeningElement",["402"],["403"],["404"],{"kind":"405","justification":"406"},{"kind":"405","justification":"407"},{"kind":"405","justification":"407"},"directive","intentional for flexible avatar sources",""]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Install pnpm
|
|
18
|
+
uses: pnpm/action-setup@v4
|
|
19
|
+
with:
|
|
20
|
+
version: 10
|
|
21
|
+
|
|
22
|
+
- name: Setup Node.js
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: 22
|
|
26
|
+
cache: "pnpm"
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: pnpm install --frozen-lockfile
|
|
30
|
+
|
|
31
|
+
- name: Typecheck
|
|
32
|
+
run: pnpm run typecheck
|
|
33
|
+
|
|
34
|
+
- name: Lint
|
|
35
|
+
run: pnpm run lint:ci
|
|
36
|
+
|
|
37
|
+
- name: Knip
|
|
38
|
+
run: pnpm run knip
|
|
39
|
+
|
|
40
|
+
- name: Build
|
|
41
|
+
run: pnpm run build
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npx --no -- commitlint --edit "$1"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npx --no -- lint-staged
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npm run typecheck && npm run lint:ci
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"singleQuote": false,
|
|
3
|
+
"trailingComma": "all",
|
|
4
|
+
"printWidth": 100,
|
|
5
|
+
"plugins": ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"],
|
|
6
|
+
"tailwindFunctions": ["cn", "clsx", "cva"],
|
|
7
|
+
"tailwindStylesheet": "./src/styles/tailwind.css",
|
|
8
|
+
"importOrder": [
|
|
9
|
+
"^react$",
|
|
10
|
+
"^next($|/)",
|
|
11
|
+
"",
|
|
12
|
+
"^@tanstack/.*",
|
|
13
|
+
"^zustand($|/)",
|
|
14
|
+
"^lucide-react($|/)",
|
|
15
|
+
"<THIRD_PARTY_MODULES>",
|
|
16
|
+
"",
|
|
17
|
+
"^@/types($|/)",
|
|
18
|
+
"^@/constants($|/)",
|
|
19
|
+
"^@/schemas($|/)",
|
|
20
|
+
"^@/config($|/)",
|
|
21
|
+
"^@/env($|/)",
|
|
22
|
+
"",
|
|
23
|
+
"^@/assets($|/)",
|
|
24
|
+
"^@/styles($|/)",
|
|
25
|
+
"^@/lib($|/)",
|
|
26
|
+
"^@/helpers($|/)",
|
|
27
|
+
"",
|
|
28
|
+
"^@/providers($|/)",
|
|
29
|
+
"^@/stores($|/)",
|
|
30
|
+
"^@/hooks($|/)",
|
|
31
|
+
"^@/data($|/)",
|
|
32
|
+
"",
|
|
33
|
+
"^@/components($|/)",
|
|
34
|
+
"^@/layout($|/)",
|
|
35
|
+
"^@/features($|/)",
|
|
36
|
+
"^@/ui($|/)",
|
|
37
|
+
"^@/.*",
|
|
38
|
+
"",
|
|
39
|
+
"^[./]"
|
|
40
|
+
],
|
|
41
|
+
"importOrderParserPlugins": ["typescript", "jsx"]
|
|
42
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
3
|
+
"editor.formatOnSave": true,
|
|
4
|
+
"editor.codeActionsOnSave": {
|
|
5
|
+
"source.fixAll.eslint": "explicit"
|
|
6
|
+
},
|
|
7
|
+
"typescript.tsdk": "node_modules/typescript/lib",
|
|
8
|
+
"files.exclude": {
|
|
9
|
+
"**/.git": true,
|
|
10
|
+
"**/.svn": true,
|
|
11
|
+
"**/.hg": true,
|
|
12
|
+
"**/.DS_Store": true,
|
|
13
|
+
"**/Thumbs.db": true,
|
|
14
|
+
"**/.cache": true,
|
|
15
|
+
"**/.next": true,
|
|
16
|
+
"**/build": true,
|
|
17
|
+
"**/dist": true,
|
|
18
|
+
"**/node_modules": true
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026-present Ömer Gülçiçek (ViraStack)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<a href="https://github.com/virastack/start" target="_blank" rel="noreferrer">
|
|
4
|
+
<picture>
|
|
5
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/virastack/start/main/assets/logo-dark.png">
|
|
6
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/virastack/start/main/assets/logo-light.png">
|
|
7
|
+
<img src="https://raw.githubusercontent.com/virastack/start/main/assets/logo-light.png" alt="ViraStack Start" height="120" style="max-width: 100%;" />
|
|
8
|
+
</picture>
|
|
9
|
+
</a>
|
|
10
|
+
|
|
11
|
+
# ViraStack Start — Next.js Edition
|
|
12
|
+
|
|
13
|
+
_The Next.js boilerplate that feels effortless._
|
|
14
|
+
|
|
15
|
+
[](https://virastack.com)
|
|
16
|
+
[](https://www.npmjs.com/package/virastack)
|
|
17
|
+
[](https://www.npmjs.com/package/virastack)
|
|
18
|
+
[](package.json)
|
|
19
|
+
[](LICENSE)
|
|
20
|
+
[](https://github.com/virastack/start/actions/workflows/ci.yml)
|
|
21
|
+
[](https://x.com/virastack)
|
|
22
|
+
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
**Docs:** [See the docs](https://www.virastack.com/nextjs-boilerplate/)
|
|
28
|
+
|
|
29
|
+
**Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
|
|
30
|
+
|
|
31
|
+
Production-grade Next.js starter with feature-sliced architecture, strict TypeScript, and a pre-configured [**ViraStack AI**](https://github.com/virastack/ai) layer — so you and your coding agents ship consistent code from day one.
|
|
32
|
+
|
|
33
|
+
## Why ViraStack
|
|
34
|
+
|
|
35
|
+
- **Opinionated, not opaque** — clear folder rules and placement conventions; nothing important is hidden behind magic
|
|
36
|
+
- **Agent-ready by default** — `AGENTS.md`, Cursor rules, `llms.txt`, and design skills ship with every project
|
|
37
|
+
- **Own your UI** — Base UI primitives in `components/ui` (shadcn-style), fully editable
|
|
38
|
+
- **State triad** — TanStack Query (server), Zustand (client), nuqs (URL) — each with a dedicated job
|
|
39
|
+
- **DX that sticks** — ESLint, Prettier, Knip, Husky, Commitlint, and GitHub Actions CI out of the box
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
**Included**
|
|
44
|
+
|
|
45
|
+
- ⚡ **Next.js 16** — App Router, Turbopack, React Compiler
|
|
46
|
+
- ⚛️ **React 19** + TypeScript strict (`noUncheckedIndexedAccess`)
|
|
47
|
+
- 🎨 **Tailwind CSS 4** + Base UI primitives
|
|
48
|
+
- 🔄 **TanStack Query** · **Zustand** · **nuqs**
|
|
49
|
+
- 📋 **React Hook Form** + **Zod** — validated forms end to end
|
|
50
|
+
- 🤖 **ViraStack AI** — agent context, scoped rules, design skills
|
|
51
|
+
- ✅ **Quality built in** — ESLint, Prettier, Knip, Husky, Commitlint, CI (typecheck → lint → knip → build)
|
|
52
|
+
|
|
53
|
+
**Optional / bring your own**
|
|
54
|
+
|
|
55
|
+
- Auth, database, i18n, analytics, and monitoring — wire them in when you need them; the architecture is ready
|
|
56
|
+
|
|
57
|
+
## Getting started
|
|
58
|
+
|
|
59
|
+
**Quick Start & Setup:** Please follow the instructions in the main [ViraStack Start README](https://github.com/virastack/start#quick-start).
|
|
60
|
+
|
|
61
|
+
Once your project is scaffolded, start the development server:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pnpm dev
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Open [http://localhost:3000](http://localhost:3000). The home route renders `LandingPage` from `src/features/landing` — a full demo of the stack (theme toggle, TanStack Query, Zustand, Zod forms, nuqs). Delete that feature when you are ready to build.
|
|
68
|
+
|
|
69
|
+
## Environment variables
|
|
70
|
+
|
|
71
|
+
Validated in `src/env.ts`. Scaffolded projects already have `.env.local`.
|
|
72
|
+
|
|
73
|
+
| Variable | Scope | Description |
|
|
74
|
+
| :--------------------- | :----- | :------------------------------------------------------------ |
|
|
75
|
+
| `NEXT_PUBLIC_APP_URL` | Public | Canonical app URL (default `http://localhost:3000`) |
|
|
76
|
+
| `NEXT_PUBLIC_APP_NAME` | Public | Product name shown in UI/metadata (default `ViraStack Start`) |
|
|
77
|
+
|
|
78
|
+
`NODE_ENV` is set by Next.js — do not define it manually. Add new vars in both `.env.example` and `src/env.ts`.
|
|
79
|
+
|
|
80
|
+
## Scripts
|
|
81
|
+
|
|
82
|
+
| Script | Description |
|
|
83
|
+
| :------------------------------ | :------------------------------------------- |
|
|
84
|
+
| `dev` | Start the dev server (Turbopack) |
|
|
85
|
+
| `build` | Production build |
|
|
86
|
+
| `start` | Serve the production build |
|
|
87
|
+
| `analyze` | Build with bundle analyzer |
|
|
88
|
+
| `lint` / `lint:fix` / `lint:ci` | ESLint (+ format check in CI) |
|
|
89
|
+
| `format` / `format:check` | Prettier |
|
|
90
|
+
| `typecheck` | `tsc --noEmit` |
|
|
91
|
+
| `knip` | Find unused files, exports, and dependencies |
|
|
92
|
+
|
|
93
|
+
CI runs the same gates: typecheck → lint → knip → build (see `.github/workflows/ci.yml`).
|
|
94
|
+
|
|
95
|
+
## Project structure
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
src/
|
|
99
|
+
├── app/ # Routes, layouts, metadata (App Router only)
|
|
100
|
+
├── features/
|
|
101
|
+
│ └── landing/ # Demo feature (canonical folder layout)
|
|
102
|
+
│ ├── api/
|
|
103
|
+
│ ├── components/ # Hero, Features, Showcase, demos, LandingPage
|
|
104
|
+
│ ├── constants/
|
|
105
|
+
│ ├── data/
|
|
106
|
+
│ ├── helpers/
|
|
107
|
+
│ ├── hooks/
|
|
108
|
+
│ ├── icons/ # Brand SVGs used only by the landing demo
|
|
109
|
+
│ ├── schemas/
|
|
110
|
+
│ ├── stores/
|
|
111
|
+
│ ├── types/
|
|
112
|
+
│ └── index.ts
|
|
113
|
+
├── components/
|
|
114
|
+
│ ├── ui/ # Base UI primitives (Button, Dialog, Tabs, …)
|
|
115
|
+
│ ├── layout/ # Header, Footer (reusable chrome)
|
|
116
|
+
│ └── shared/ # Cross-feature components (ThemeToggle, …)
|
|
117
|
+
├── hooks/ # Shared hooks (promote via Rule of Three)
|
|
118
|
+
├── stores/
|
|
119
|
+
├── schemas/
|
|
120
|
+
├── providers/
|
|
121
|
+
├── lib/ # api.ts, query-client.ts, utils
|
|
122
|
+
├── config/
|
|
123
|
+
├── constants/
|
|
124
|
+
├── helpers/
|
|
125
|
+
├── types/
|
|
126
|
+
├── styles/
|
|
127
|
+
└── env.ts
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The bundled `landing` feature follows the ViraStack AI feature tree and is meant to be deleted when you start building.
|
|
131
|
+
|
|
132
|
+
**Quick start (strip the demo)**
|
|
133
|
+
|
|
134
|
+
1. Delete `src/features/landing`
|
|
135
|
+
2. Replace `src/app/page.tsx` with your own page
|
|
136
|
+
3. Keep `components/layout` Header/Footer if you still want site chrome — pass `links` only when you need nav items
|
|
137
|
+
|
|
138
|
+
**Rules of thumb**
|
|
139
|
+
|
|
140
|
+
- Default scope is `features/[feature]/` — promote to global `src/` only when a second feature needs it
|
|
141
|
+
- No cross-feature imports; share via `components/`, `lib/`, `hooks/`, etc.
|
|
142
|
+
- Path aliases are mandatory; parent-relative imports (`../`) are forbidden
|
|
143
|
+
|
|
144
|
+
See [`docs/architecture-guide.md`](docs/architecture-guide.md) for placement rules and import conventions.
|
|
145
|
+
|
|
146
|
+
## Customization
|
|
147
|
+
|
|
148
|
+
Search the repo for `FIXME:` to find the first things to own:
|
|
149
|
+
|
|
150
|
+
| File | What to change |
|
|
151
|
+
| :---------------------------- | :--------------------------------------- |
|
|
152
|
+
| `src/config/site.config.ts` | Site name, description, metadata |
|
|
153
|
+
| `next.config.ts` | Remote image domains and Next.js options |
|
|
154
|
+
| `src/lib/api.ts` | Auth header / API client wiring |
|
|
155
|
+
| `src/env.ts` + `.env.example` | New environment variables |
|
|
156
|
+
| `public/` | Favicon and static assets |
|
|
157
|
+
|
|
158
|
+
You own every file — trim demos, rename features, keep only what you need.
|
|
159
|
+
|
|
160
|
+
## ViraStack AI
|
|
161
|
+
|
|
162
|
+
Developed with [**ViraStack AI**](https://github.com/virastack/ai) — an AI-native architecture kit that ships agent context into every project:
|
|
163
|
+
|
|
164
|
+
| File | Purpose |
|
|
165
|
+
| :---------------- | :------------------------------- |
|
|
166
|
+
| `AGENTS.md` | Agent operating guide |
|
|
167
|
+
| `CLAUDE.md` | Claude Code entry point |
|
|
168
|
+
| `.cursor/rules/` | Scoped coding rules |
|
|
169
|
+
| `public/llms.txt` | Machine-readable project summary |
|
|
170
|
+
| `.agents/skills/` | Design-taste skills |
|
|
171
|
+
|
|
172
|
+
Install or refresh rules: `npx @virastack/ai init`
|
|
173
|
+
|
|
174
|
+
## Deployment
|
|
175
|
+
|
|
176
|
+
Optimized for [Vercel](https://vercel.com/):
|
|
177
|
+
|
|
178
|
+
1. Push the repo and import the project in Vercel (or your host of choice)
|
|
179
|
+
2. Set `NEXT_PUBLIC_APP_URL` and `NEXT_PUBLIC_APP_NAME` from `.env.example`
|
|
180
|
+
3. Run `pnpm analyze` locally before shipping if bundle size matters
|
|
181
|
+
4. Deploy — `pnpm build` / `pnpm start` work the same on any Node host
|
|
182
|
+
|
|
183
|
+
## Philosophy
|
|
184
|
+
|
|
185
|
+
- Minimal surface, strong conventions
|
|
186
|
+
- Agent-first documentation lives next to the code
|
|
187
|
+
- Own your UI and architecture — no locked black boxes
|
|
188
|
+
- Production-ready DX without forcing auth/db opinions until you need them
|
|
189
|
+
|
|
190
|
+
## Contributing
|
|
191
|
+
|
|
192
|
+
Ideas and bug reports welcome — open an [issue](https://github.com/virastack/start/issues).
|
|
193
|
+
|
|
194
|
+
PRs that improve DX, architecture docs, or the landing showcase are especially appreciated.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
<div align="center">
|
|
199
|
+
|
|
200
|
+
Bootstrapped with [**ViraStack Start**](https://github.com/virastack/start) · Built by <a href="https://omergulcicek.com">Ömer Gülçiçek</a> · <a href="LICENSE">MIT Licensed</a>
|
|
201
|
+
|
|
202
|
+
</div>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# dependencies
|
|
2
|
+
/node_modules
|
|
3
|
+
/.pnp
|
|
4
|
+
.pnp.*
|
|
5
|
+
.yarn/*
|
|
6
|
+
!.yarn/patches
|
|
7
|
+
!.yarn/plugins
|
|
8
|
+
!.yarn/releases
|
|
9
|
+
!.yarn/versions
|
|
10
|
+
|
|
11
|
+
# testing
|
|
12
|
+
/coverage
|
|
13
|
+
|
|
14
|
+
# next.js
|
|
15
|
+
/.next/
|
|
16
|
+
/out/
|
|
17
|
+
|
|
18
|
+
# production
|
|
19
|
+
/build
|
|
20
|
+
|
|
21
|
+
# misc
|
|
22
|
+
.DS_Store
|
|
23
|
+
*.pem
|
|
24
|
+
|
|
25
|
+
# debug
|
|
26
|
+
npm-debug.log*
|
|
27
|
+
yarn-debug.log*
|
|
28
|
+
yarn-error.log*
|
|
29
|
+
.pnpm-debug.log*
|
|
30
|
+
|
|
31
|
+
# env files
|
|
32
|
+
.env*
|
|
33
|
+
!.env.example
|
|
34
|
+
|
|
35
|
+
# vercel
|
|
36
|
+
.vercel
|
|
37
|
+
|
|
38
|
+
# typescript
|
|
39
|
+
*.tsbuildinfo
|
|
40
|
+
next-env.d.ts
|
|
41
|
+
|
|
42
|
+
# cache / tooling
|
|
43
|
+
.eslintcache
|
|
44
|
+
.knip
|
|
45
|
+
.turbo
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import nextVitals from "eslint-config-next/core-web-vitals";
|
|
2
|
+
import nextTs from "eslint-config-next/typescript";
|
|
3
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
4
|
+
|
|
5
|
+
const eslintConfig = defineConfig([
|
|
6
|
+
...nextVitals,
|
|
7
|
+
...nextTs,
|
|
8
|
+
{
|
|
9
|
+
rules: {
|
|
10
|
+
"@typescript-eslint/no-unused-vars": [
|
|
11
|
+
"warn",
|
|
12
|
+
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
|
|
13
|
+
],
|
|
14
|
+
"no-console": ["warn", { allow: ["warn", "error"] }],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
// Override default ignores of eslint-config-next.
|
|
18
|
+
globalIgnores([
|
|
19
|
+
// Default ignores of eslint-config-next:
|
|
20
|
+
".next/**",
|
|
21
|
+
"out/**",
|
|
22
|
+
"build/**",
|
|
23
|
+
"next-env.d.ts",
|
|
24
|
+
]),
|
|
25
|
+
]);
|
|
26
|
+
|
|
27
|
+
export default eslintConfig;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** @type {import('knip').KnipConfig} */
|
|
2
|
+
const config = {
|
|
3
|
+
entry: [
|
|
4
|
+
"src/app/**/{page,layout,template,default,loading,not-found,error,global-error}.{ts,tsx}",
|
|
5
|
+
"src/app/**/{sitemap,robots,manifest}.{ts,tsx}",
|
|
6
|
+
],
|
|
7
|
+
project: ["src/**/*.{ts,tsx,js,jsx}"],
|
|
8
|
+
ignore: [
|
|
9
|
+
"src/components/ui/**",
|
|
10
|
+
// Shared-layer barrels reserved for Rule-of-Three promotions
|
|
11
|
+
"src/hooks/index.ts",
|
|
12
|
+
"src/stores/index.ts",
|
|
13
|
+
"src/schemas/index.ts",
|
|
14
|
+
"src/constants/index.ts",
|
|
15
|
+
"src/features/**/data/index.ts",
|
|
16
|
+
"src/features/**/data/*.data.tsx",
|
|
17
|
+
"src/features/**/schemas/index.ts",
|
|
18
|
+
"src/i18n/routing.ts",
|
|
19
|
+
],
|
|
20
|
+
ignoreDependencies: ["tailwindcss", "tw-animate-css"],
|
|
21
|
+
rules: {
|
|
22
|
+
dependencies: "error",
|
|
23
|
+
exports: "warn",
|
|
24
|
+
types: "warn",
|
|
25
|
+
files: "warn",
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
module.exports = config;
|