Spaces:
Sleeping
Sleeping
Nguyen Thanh Hoang
Hoang Nguyen
commited on
feature/homepage (#1)
Browse files* feat(homepage): implement banner section
* feat(homepage): add 2 sections in homepage
---------
Co-authored-by: Hoang Nguyen <hoangnt@inspirelab.vn>
- next.config.ts +20 -16
- package-lock.json +41 -220
- package.json +4 -0
- src/app/[locale]/(auth)/(center)/layout.tsx +0 -15
- src/app/[locale]/(auth)/(center)/sign-in/[[...sign-in]]/page.tsx +0 -29
- src/app/[locale]/(auth)/(center)/sign-up/[[...sign-up]]/page.tsx +0 -29
- src/app/[locale]/(auth)/dashboard/layout.tsx +0 -59
- src/app/[locale]/(auth)/dashboard/page.tsx +0 -24
- src/app/[locale]/(auth)/dashboard/user-profile/[[...user-profile]]/page.tsx +0 -32
- src/app/[locale]/(auth)/layout.tsx +0 -41
- src/app/[locale]/(marketing)/about/page.tsx +0 -54
- src/app/[locale]/(marketing)/api/counter/route.ts +0 -35
- src/app/[locale]/(marketing)/counter/page.tsx +0 -59
- src/app/[locale]/(marketing)/layout.tsx +0 -96
- src/app/[locale]/(marketing)/page.tsx +0 -120
- src/app/[locale]/(marketing)/portfolio/[slug]/page.tsx +0 -71
- src/app/[locale]/(marketing)/portfolio/page.tsx +0 -76
- src/app/[locale]/layout.tsx +0 -102
- src/app/layout.tsx +36 -0
- src/app/page.tsx +15 -0
- src/components/CounterForm.tsx +0 -63
- src/components/CurrentCount.tsx +0 -26
- src/components/DemoBadge.tsx +0 -12
- src/components/DemoBanner.tsx +0 -9
- src/components/Hello.tsx +0 -30
- src/components/LocaleSwitcher.tsx +0 -32
- src/components/Navbar.tsx +44 -0
- src/components/Sponsors.tsx +0 -115
- src/components/atoms/Badge/index.tsx +29 -0
- src/components/atoms/Button/index.tsx +52 -0
- src/components/atoms/Card/index.tsx +33 -0
- src/components/atoms/Input/index.tsx +29 -0
- src/components/atoms/index.ts +4 -0
- src/components/homepage/AnnouncementBanner.tsx +56 -0
- src/components/homepage/CustomizationSection.tsx +57 -0
- src/components/homepage/FeatureSection.tsx +73 -0
- src/middleware.ts +0 -55
- src/styles/global.css +70 -0
- src/utils/Helpers.ts +8 -0
- tailwind.config.ts +57 -3
next.config.ts
CHANGED
|
@@ -1,26 +1,30 @@
|
|
| 1 |
-
import withBundleAnalyzer from '@next/bundle-analyzer';
|
| 2 |
import { withSentryConfig } from '@sentry/nextjs';
|
| 3 |
-
import createNextIntlPlugin from 'next-intl/plugin';
|
| 4 |
import './src/libs/Env';
|
| 5 |
|
| 6 |
-
const withNextIntl = createNextIntlPlugin('./src/libs/i18n.ts');
|
| 7 |
|
| 8 |
-
const bundleAnalyzer = withBundleAnalyzer({
|
| 9 |
-
|
| 10 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
/** @type {import('next').NextConfig} */
|
| 13 |
export default withSentryConfig(
|
| 14 |
-
|
| 15 |
-
withNextIntl({
|
| 16 |
-
eslint: {
|
| 17 |
-
dirs: ['.'],
|
| 18 |
-
},
|
| 19 |
-
poweredByHeader: false,
|
| 20 |
-
reactStrictMode: true,
|
| 21 |
-
serverExternalPackages: ['@electric-sql/pglite'],
|
| 22 |
-
}),
|
| 23 |
-
),
|
| 24 |
{
|
| 25 |
// For all available options, see:
|
| 26 |
// https://github.com/getsentry/sentry-webpack-plugin#options
|
|
|
|
| 1 |
+
// import withBundleAnalyzer from '@next/bundle-analyzer';
|
| 2 |
import { withSentryConfig } from '@sentry/nextjs';
|
| 3 |
+
// import createNextIntlPlugin from 'next-intl/plugin';
|
| 4 |
import './src/libs/Env';
|
| 5 |
|
| 6 |
+
// const withNextIntl = createNextIntlPlugin('./src/libs/i18n.ts');
|
| 7 |
|
| 8 |
+
// const bundleAnalyzer = withBundleAnalyzer({
|
| 9 |
+
// enabled: process.env.ANALYZE === 'true',
|
| 10 |
+
// });
|
| 11 |
+
|
| 12 |
+
const nextConfig = {
|
| 13 |
+
images: {
|
| 14 |
+
remotePatterns: [
|
| 15 |
+
{
|
| 16 |
+
protocol: 'https',
|
| 17 |
+
hostname: '**',
|
| 18 |
+
port: '',
|
| 19 |
+
pathname: '**',
|
| 20 |
+
},
|
| 21 |
+
],
|
| 22 |
+
},
|
| 23 |
+
};
|
| 24 |
|
| 25 |
/** @type {import('next').NextConfig} */
|
| 26 |
export default withSentryConfig(
|
| 27 |
+
nextConfig,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
{
|
| 29 |
// For all available options, see:
|
| 30 |
// https://github.com/getsentry/sentry-webpack-plugin#options
|
package-lock.json
CHANGED
|
@@ -17,7 +17,10 @@
|
|
| 17 |
"@sentry/nextjs": "^8.43.0",
|
| 18 |
"@spotlightjs/spotlight": "^2.7.0",
|
| 19 |
"@t3-oss/env-nextjs": "^0.11.1",
|
|
|
|
|
|
|
| 20 |
"drizzle-orm": "^0.38.0",
|
|
|
|
| 21 |
"next": "^15.1.0",
|
| 22 |
"next-intl": "^3.26.0",
|
| 23 |
"pg": "^8.13.1",
|
|
@@ -26,6 +29,7 @@
|
|
| 26 |
"react": "19.0.0",
|
| 27 |
"react-dom": "19.0.0",
|
| 28 |
"react-hook-form": "^7.54.0",
|
|
|
|
| 29 |
"zod": "^3.24.0"
|
| 30 |
},
|
| 31 |
"devDependencies": {
|
|
@@ -13920,6 +13924,17 @@
|
|
| 13920 |
"integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
|
| 13921 |
"license": "MIT"
|
| 13922 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13923 |
"node_modules/clean-css": {
|
| 13924 |
"version": "5.3.3",
|
| 13925 |
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
|
|
@@ -14243,6 +14258,14 @@
|
|
| 14243 |
"node": ">=0.8"
|
| 14244 |
}
|
| 14245 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14246 |
"node_modules/co": {
|
| 14247 |
"version": "4.6.0",
|
| 14248 |
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
|
@@ -24792,6 +24815,14 @@
|
|
| 24792 |
"yallist": "^3.0.2"
|
| 24793 |
}
|
| 24794 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24795 |
"node_modules/luxon": {
|
| 24796 |
"version": "3.3.0",
|
| 24797 |
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz",
|
|
@@ -27030,7 +27061,6 @@
|
|
| 27030 |
},
|
| 27031 |
"node_modules/npm/node_modules/@isaacs/cliui": {
|
| 27032 |
"version": "8.0.2",
|
| 27033 |
-
"dev": true,
|
| 27034 |
"inBundle": true,
|
| 27035 |
"license": "ISC",
|
| 27036 |
"dependencies": {
|
|
@@ -27047,7 +27077,6 @@
|
|
| 27047 |
},
|
| 27048 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
|
| 27049 |
"version": "6.1.0",
|
| 27050 |
-
"dev": true,
|
| 27051 |
"inBundle": true,
|
| 27052 |
"license": "MIT",
|
| 27053 |
"engines": {
|
|
@@ -27059,13 +27088,11 @@
|
|
| 27059 |
},
|
| 27060 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
|
| 27061 |
"version": "9.2.2",
|
| 27062 |
-
"dev": true,
|
| 27063 |
"inBundle": true,
|
| 27064 |
"license": "MIT"
|
| 27065 |
},
|
| 27066 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
|
| 27067 |
"version": "5.1.2",
|
| 27068 |
-
"dev": true,
|
| 27069 |
"inBundle": true,
|
| 27070 |
"license": "MIT",
|
| 27071 |
"dependencies": {
|
|
@@ -27082,7 +27109,6 @@
|
|
| 27082 |
},
|
| 27083 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
|
| 27084 |
"version": "7.1.0",
|
| 27085 |
-
"dev": true,
|
| 27086 |
"inBundle": true,
|
| 27087 |
"license": "MIT",
|
| 27088 |
"dependencies": {
|
|
@@ -27097,7 +27123,6 @@
|
|
| 27097 |
},
|
| 27098 |
"node_modules/npm/node_modules/@isaacs/fs-minipass": {
|
| 27099 |
"version": "4.0.1",
|
| 27100 |
-
"dev": true,
|
| 27101 |
"inBundle": true,
|
| 27102 |
"license": "ISC",
|
| 27103 |
"dependencies": {
|
|
@@ -27109,13 +27134,11 @@
|
|
| 27109 |
},
|
| 27110 |
"node_modules/npm/node_modules/@isaacs/string-locale-compare": {
|
| 27111 |
"version": "1.1.0",
|
| 27112 |
-
"dev": true,
|
| 27113 |
"inBundle": true,
|
| 27114 |
"license": "ISC"
|
| 27115 |
},
|
| 27116 |
"node_modules/npm/node_modules/@npmcli/agent": {
|
| 27117 |
"version": "3.0.0",
|
| 27118 |
-
"dev": true,
|
| 27119 |
"inBundle": true,
|
| 27120 |
"license": "ISC",
|
| 27121 |
"dependencies": {
|
|
@@ -27131,7 +27154,6 @@
|
|
| 27131 |
},
|
| 27132 |
"node_modules/npm/node_modules/@npmcli/arborist": {
|
| 27133 |
"version": "8.0.0",
|
| 27134 |
-
"dev": true,
|
| 27135 |
"inBundle": true,
|
| 27136 |
"license": "ISC",
|
| 27137 |
"dependencies": {
|
|
@@ -27180,7 +27202,6 @@
|
|
| 27180 |
},
|
| 27181 |
"node_modules/npm/node_modules/@npmcli/config": {
|
| 27182 |
"version": "9.0.0",
|
| 27183 |
-
"dev": true,
|
| 27184 |
"inBundle": true,
|
| 27185 |
"license": "ISC",
|
| 27186 |
"dependencies": {
|
|
@@ -27199,7 +27220,6 @@
|
|
| 27199 |
},
|
| 27200 |
"node_modules/npm/node_modules/@npmcli/fs": {
|
| 27201 |
"version": "4.0.0",
|
| 27202 |
-
"dev": true,
|
| 27203 |
"inBundle": true,
|
| 27204 |
"license": "ISC",
|
| 27205 |
"dependencies": {
|
|
@@ -27211,7 +27231,6 @@
|
|
| 27211 |
},
|
| 27212 |
"node_modules/npm/node_modules/@npmcli/git": {
|
| 27213 |
"version": "6.0.1",
|
| 27214 |
-
"dev": true,
|
| 27215 |
"inBundle": true,
|
| 27216 |
"license": "ISC",
|
| 27217 |
"dependencies": {
|
|
@@ -27231,7 +27250,6 @@
|
|
| 27231 |
},
|
| 27232 |
"node_modules/npm/node_modules/@npmcli/installed-package-contents": {
|
| 27233 |
"version": "3.0.0",
|
| 27234 |
-
"dev": true,
|
| 27235 |
"inBundle": true,
|
| 27236 |
"license": "ISC",
|
| 27237 |
"dependencies": {
|
|
@@ -27247,7 +27265,6 @@
|
|
| 27247 |
},
|
| 27248 |
"node_modules/npm/node_modules/@npmcli/map-workspaces": {
|
| 27249 |
"version": "4.0.2",
|
| 27250 |
-
"dev": true,
|
| 27251 |
"inBundle": true,
|
| 27252 |
"license": "ISC",
|
| 27253 |
"dependencies": {
|
|
@@ -27262,7 +27279,6 @@
|
|
| 27262 |
},
|
| 27263 |
"node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
|
| 27264 |
"version": "8.0.1",
|
| 27265 |
-
"dev": true,
|
| 27266 |
"inBundle": true,
|
| 27267 |
"license": "ISC",
|
| 27268 |
"dependencies": {
|
|
@@ -27278,7 +27294,6 @@
|
|
| 27278 |
},
|
| 27279 |
"node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": {
|
| 27280 |
"version": "20.0.0",
|
| 27281 |
-
"dev": true,
|
| 27282 |
"inBundle": true,
|
| 27283 |
"license": "ISC",
|
| 27284 |
"dependencies": {
|
|
@@ -27309,7 +27324,6 @@
|
|
| 27309 |
},
|
| 27310 |
"node_modules/npm/node_modules/@npmcli/name-from-folder": {
|
| 27311 |
"version": "3.0.0",
|
| 27312 |
-
"dev": true,
|
| 27313 |
"inBundle": true,
|
| 27314 |
"license": "ISC",
|
| 27315 |
"engines": {
|
|
@@ -27318,7 +27332,6 @@
|
|
| 27318 |
},
|
| 27319 |
"node_modules/npm/node_modules/@npmcli/node-gyp": {
|
| 27320 |
"version": "4.0.0",
|
| 27321 |
-
"dev": true,
|
| 27322 |
"inBundle": true,
|
| 27323 |
"license": "ISC",
|
| 27324 |
"engines": {
|
|
@@ -27327,7 +27340,6 @@
|
|
| 27327 |
},
|
| 27328 |
"node_modules/npm/node_modules/@npmcli/package-json": {
|
| 27329 |
"version": "6.1.0",
|
| 27330 |
-
"dev": true,
|
| 27331 |
"inBundle": true,
|
| 27332 |
"license": "ISC",
|
| 27333 |
"dependencies": {
|
|
@@ -27345,7 +27357,6 @@
|
|
| 27345 |
},
|
| 27346 |
"node_modules/npm/node_modules/@npmcli/promise-spawn": {
|
| 27347 |
"version": "8.0.2",
|
| 27348 |
-
"dev": true,
|
| 27349 |
"inBundle": true,
|
| 27350 |
"license": "ISC",
|
| 27351 |
"dependencies": {
|
|
@@ -27357,7 +27368,6 @@
|
|
| 27357 |
},
|
| 27358 |
"node_modules/npm/node_modules/@npmcli/query": {
|
| 27359 |
"version": "4.0.0",
|
| 27360 |
-
"dev": true,
|
| 27361 |
"inBundle": true,
|
| 27362 |
"license": "ISC",
|
| 27363 |
"dependencies": {
|
|
@@ -27369,7 +27379,6 @@
|
|
| 27369 |
},
|
| 27370 |
"node_modules/npm/node_modules/@npmcli/redact": {
|
| 27371 |
"version": "3.0.0",
|
| 27372 |
-
"dev": true,
|
| 27373 |
"inBundle": true,
|
| 27374 |
"license": "ISC",
|
| 27375 |
"engines": {
|
|
@@ -27378,7 +27387,6 @@
|
|
| 27378 |
},
|
| 27379 |
"node_modules/npm/node_modules/@npmcli/run-script": {
|
| 27380 |
"version": "9.0.2",
|
| 27381 |
-
"dev": true,
|
| 27382 |
"inBundle": true,
|
| 27383 |
"license": "ISC",
|
| 27384 |
"dependencies": {
|
|
@@ -27395,17 +27403,14 @@
|
|
| 27395 |
},
|
| 27396 |
"node_modules/npm/node_modules/@pkgjs/parseargs": {
|
| 27397 |
"version": "0.11.0",
|
| 27398 |
-
"dev": true,
|
| 27399 |
"inBundle": true,
|
| 27400 |
"license": "MIT",
|
| 27401 |
-
"optional": true,
|
| 27402 |
"engines": {
|
| 27403 |
"node": ">=14"
|
| 27404 |
}
|
| 27405 |
},
|
| 27406 |
"node_modules/npm/node_modules/@sigstore/protobuf-specs": {
|
| 27407 |
"version": "0.3.2",
|
| 27408 |
-
"dev": true,
|
| 27409 |
"inBundle": true,
|
| 27410 |
"license": "Apache-2.0",
|
| 27411 |
"engines": {
|
|
@@ -27414,7 +27419,6 @@
|
|
| 27414 |
},
|
| 27415 |
"node_modules/npm/node_modules/@sigstore/tuf": {
|
| 27416 |
"version": "3.0.0",
|
| 27417 |
-
"dev": true,
|
| 27418 |
"inBundle": true,
|
| 27419 |
"license": "Apache-2.0",
|
| 27420 |
"dependencies": {
|
|
@@ -27427,7 +27431,6 @@
|
|
| 27427 |
},
|
| 27428 |
"node_modules/npm/node_modules/@tufjs/canonical-json": {
|
| 27429 |
"version": "2.0.0",
|
| 27430 |
-
"dev": true,
|
| 27431 |
"inBundle": true,
|
| 27432 |
"license": "MIT",
|
| 27433 |
"engines": {
|
|
@@ -27436,7 +27439,6 @@
|
|
| 27436 |
},
|
| 27437 |
"node_modules/npm/node_modules/abbrev": {
|
| 27438 |
"version": "3.0.0",
|
| 27439 |
-
"dev": true,
|
| 27440 |
"inBundle": true,
|
| 27441 |
"license": "ISC",
|
| 27442 |
"engines": {
|
|
@@ -27445,7 +27447,6 @@
|
|
| 27445 |
},
|
| 27446 |
"node_modules/npm/node_modules/agent-base": {
|
| 27447 |
"version": "7.1.1",
|
| 27448 |
-
"dev": true,
|
| 27449 |
"inBundle": true,
|
| 27450 |
"license": "MIT",
|
| 27451 |
"dependencies": {
|
|
@@ -27457,7 +27458,6 @@
|
|
| 27457 |
},
|
| 27458 |
"node_modules/npm/node_modules/aggregate-error": {
|
| 27459 |
"version": "3.1.0",
|
| 27460 |
-
"dev": true,
|
| 27461 |
"inBundle": true,
|
| 27462 |
"license": "MIT",
|
| 27463 |
"dependencies": {
|
|
@@ -27470,7 +27470,6 @@
|
|
| 27470 |
},
|
| 27471 |
"node_modules/npm/node_modules/ansi-regex": {
|
| 27472 |
"version": "5.0.1",
|
| 27473 |
-
"dev": true,
|
| 27474 |
"inBundle": true,
|
| 27475 |
"license": "MIT",
|
| 27476 |
"engines": {
|
|
@@ -27479,7 +27478,6 @@
|
|
| 27479 |
},
|
| 27480 |
"node_modules/npm/node_modules/ansi-styles": {
|
| 27481 |
"version": "6.2.1",
|
| 27482 |
-
"dev": true,
|
| 27483 |
"inBundle": true,
|
| 27484 |
"license": "MIT",
|
| 27485 |
"engines": {
|
|
@@ -27491,25 +27489,21 @@
|
|
| 27491 |
},
|
| 27492 |
"node_modules/npm/node_modules/aproba": {
|
| 27493 |
"version": "2.0.0",
|
| 27494 |
-
"dev": true,
|
| 27495 |
"inBundle": true,
|
| 27496 |
"license": "ISC"
|
| 27497 |
},
|
| 27498 |
"node_modules/npm/node_modules/archy": {
|
| 27499 |
"version": "1.0.0",
|
| 27500 |
-
"dev": true,
|
| 27501 |
"inBundle": true,
|
| 27502 |
"license": "MIT"
|
| 27503 |
},
|
| 27504 |
"node_modules/npm/node_modules/balanced-match": {
|
| 27505 |
"version": "1.0.2",
|
| 27506 |
-
"dev": true,
|
| 27507 |
"inBundle": true,
|
| 27508 |
"license": "MIT"
|
| 27509 |
},
|
| 27510 |
"node_modules/npm/node_modules/bin-links": {
|
| 27511 |
"version": "5.0.0",
|
| 27512 |
-
"dev": true,
|
| 27513 |
"inBundle": true,
|
| 27514 |
"license": "ISC",
|
| 27515 |
"dependencies": {
|
|
@@ -27525,7 +27519,6 @@
|
|
| 27525 |
},
|
| 27526 |
"node_modules/npm/node_modules/binary-extensions": {
|
| 27527 |
"version": "2.3.0",
|
| 27528 |
-
"dev": true,
|
| 27529 |
"inBundle": true,
|
| 27530 |
"license": "MIT",
|
| 27531 |
"engines": {
|
|
@@ -27537,7 +27530,6 @@
|
|
| 27537 |
},
|
| 27538 |
"node_modules/npm/node_modules/brace-expansion": {
|
| 27539 |
"version": "2.0.1",
|
| 27540 |
-
"dev": true,
|
| 27541 |
"inBundle": true,
|
| 27542 |
"license": "MIT",
|
| 27543 |
"dependencies": {
|
|
@@ -27546,7 +27538,6 @@
|
|
| 27546 |
},
|
| 27547 |
"node_modules/npm/node_modules/cacache": {
|
| 27548 |
"version": "19.0.1",
|
| 27549 |
-
"dev": true,
|
| 27550 |
"inBundle": true,
|
| 27551 |
"license": "ISC",
|
| 27552 |
"dependencies": {
|
|
@@ -27569,7 +27560,6 @@
|
|
| 27569 |
},
|
| 27570 |
"node_modules/npm/node_modules/cacache/node_modules/chownr": {
|
| 27571 |
"version": "3.0.0",
|
| 27572 |
-
"dev": true,
|
| 27573 |
"inBundle": true,
|
| 27574 |
"license": "BlueOak-1.0.0",
|
| 27575 |
"engines": {
|
|
@@ -27578,7 +27568,6 @@
|
|
| 27578 |
},
|
| 27579 |
"node_modules/npm/node_modules/cacache/node_modules/minizlib": {
|
| 27580 |
"version": "3.0.1",
|
| 27581 |
-
"dev": true,
|
| 27582 |
"inBundle": true,
|
| 27583 |
"license": "MIT",
|
| 27584 |
"dependencies": {
|
|
@@ -27591,7 +27580,6 @@
|
|
| 27591 |
},
|
| 27592 |
"node_modules/npm/node_modules/cacache/node_modules/mkdirp": {
|
| 27593 |
"version": "3.0.1",
|
| 27594 |
-
"dev": true,
|
| 27595 |
"inBundle": true,
|
| 27596 |
"license": "MIT",
|
| 27597 |
"bin": {
|
|
@@ -27606,7 +27594,6 @@
|
|
| 27606 |
},
|
| 27607 |
"node_modules/npm/node_modules/cacache/node_modules/p-map": {
|
| 27608 |
"version": "7.0.2",
|
| 27609 |
-
"dev": true,
|
| 27610 |
"inBundle": true,
|
| 27611 |
"license": "MIT",
|
| 27612 |
"engines": {
|
|
@@ -27618,7 +27605,6 @@
|
|
| 27618 |
},
|
| 27619 |
"node_modules/npm/node_modules/cacache/node_modules/tar": {
|
| 27620 |
"version": "7.4.3",
|
| 27621 |
-
"dev": true,
|
| 27622 |
"inBundle": true,
|
| 27623 |
"license": "ISC",
|
| 27624 |
"dependencies": {
|
|
@@ -27635,7 +27621,6 @@
|
|
| 27635 |
},
|
| 27636 |
"node_modules/npm/node_modules/cacache/node_modules/yallist": {
|
| 27637 |
"version": "5.0.0",
|
| 27638 |
-
"dev": true,
|
| 27639 |
"inBundle": true,
|
| 27640 |
"license": "BlueOak-1.0.0",
|
| 27641 |
"engines": {
|
|
@@ -27644,7 +27629,6 @@
|
|
| 27644 |
},
|
| 27645 |
"node_modules/npm/node_modules/chalk": {
|
| 27646 |
"version": "5.3.0",
|
| 27647 |
-
"dev": true,
|
| 27648 |
"inBundle": true,
|
| 27649 |
"license": "MIT",
|
| 27650 |
"engines": {
|
|
@@ -27656,7 +27640,6 @@
|
|
| 27656 |
},
|
| 27657 |
"node_modules/npm/node_modules/chownr": {
|
| 27658 |
"version": "2.0.0",
|
| 27659 |
-
"dev": true,
|
| 27660 |
"inBundle": true,
|
| 27661 |
"license": "ISC",
|
| 27662 |
"engines": {
|
|
@@ -27665,7 +27648,6 @@
|
|
| 27665 |
},
|
| 27666 |
"node_modules/npm/node_modules/ci-info": {
|
| 27667 |
"version": "4.1.0",
|
| 27668 |
-
"dev": true,
|
| 27669 |
"funding": [
|
| 27670 |
{
|
| 27671 |
"type": "github",
|
|
@@ -27680,7 +27662,6 @@
|
|
| 27680 |
},
|
| 27681 |
"node_modules/npm/node_modules/cidr-regex": {
|
| 27682 |
"version": "4.1.1",
|
| 27683 |
-
"dev": true,
|
| 27684 |
"inBundle": true,
|
| 27685 |
"license": "BSD-2-Clause",
|
| 27686 |
"dependencies": {
|
|
@@ -27692,7 +27673,6 @@
|
|
| 27692 |
},
|
| 27693 |
"node_modules/npm/node_modules/clean-stack": {
|
| 27694 |
"version": "2.2.0",
|
| 27695 |
-
"dev": true,
|
| 27696 |
"inBundle": true,
|
| 27697 |
"license": "MIT",
|
| 27698 |
"engines": {
|
|
@@ -27701,7 +27681,6 @@
|
|
| 27701 |
},
|
| 27702 |
"node_modules/npm/node_modules/cli-columns": {
|
| 27703 |
"version": "4.0.0",
|
| 27704 |
-
"dev": true,
|
| 27705 |
"inBundle": true,
|
| 27706 |
"license": "MIT",
|
| 27707 |
"dependencies": {
|
|
@@ -27714,7 +27693,6 @@
|
|
| 27714 |
},
|
| 27715 |
"node_modules/npm/node_modules/cmd-shim": {
|
| 27716 |
"version": "7.0.0",
|
| 27717 |
-
"dev": true,
|
| 27718 |
"inBundle": true,
|
| 27719 |
"license": "ISC",
|
| 27720 |
"engines": {
|
|
@@ -27723,7 +27701,6 @@
|
|
| 27723 |
},
|
| 27724 |
"node_modules/npm/node_modules/color-convert": {
|
| 27725 |
"version": "2.0.1",
|
| 27726 |
-
"dev": true,
|
| 27727 |
"inBundle": true,
|
| 27728 |
"license": "MIT",
|
| 27729 |
"dependencies": {
|
|
@@ -27735,19 +27712,16 @@
|
|
| 27735 |
},
|
| 27736 |
"node_modules/npm/node_modules/color-name": {
|
| 27737 |
"version": "1.1.4",
|
| 27738 |
-
"dev": true,
|
| 27739 |
"inBundle": true,
|
| 27740 |
"license": "MIT"
|
| 27741 |
},
|
| 27742 |
"node_modules/npm/node_modules/common-ancestor-path": {
|
| 27743 |
"version": "1.0.1",
|
| 27744 |
-
"dev": true,
|
| 27745 |
"inBundle": true,
|
| 27746 |
"license": "ISC"
|
| 27747 |
},
|
| 27748 |
"node_modules/npm/node_modules/cross-spawn": {
|
| 27749 |
"version": "7.0.6",
|
| 27750 |
-
"dev": true,
|
| 27751 |
"inBundle": true,
|
| 27752 |
"license": "MIT",
|
| 27753 |
"dependencies": {
|
|
@@ -27761,7 +27735,6 @@
|
|
| 27761 |
},
|
| 27762 |
"node_modules/npm/node_modules/cross-spawn/node_modules/which": {
|
| 27763 |
"version": "2.0.2",
|
| 27764 |
-
"dev": true,
|
| 27765 |
"inBundle": true,
|
| 27766 |
"license": "ISC",
|
| 27767 |
"dependencies": {
|
|
@@ -27776,7 +27749,6 @@
|
|
| 27776 |
},
|
| 27777 |
"node_modules/npm/node_modules/cssesc": {
|
| 27778 |
"version": "3.0.0",
|
| 27779 |
-
"dev": true,
|
| 27780 |
"inBundle": true,
|
| 27781 |
"license": "MIT",
|
| 27782 |
"bin": {
|
|
@@ -27788,7 +27760,6 @@
|
|
| 27788 |
},
|
| 27789 |
"node_modules/npm/node_modules/debug": {
|
| 27790 |
"version": "4.3.7",
|
| 27791 |
-
"dev": true,
|
| 27792 |
"inBundle": true,
|
| 27793 |
"license": "MIT",
|
| 27794 |
"dependencies": {
|
|
@@ -27805,7 +27776,6 @@
|
|
| 27805 |
},
|
| 27806 |
"node_modules/npm/node_modules/diff": {
|
| 27807 |
"version": "5.2.0",
|
| 27808 |
-
"dev": true,
|
| 27809 |
"inBundle": true,
|
| 27810 |
"license": "BSD-3-Clause",
|
| 27811 |
"engines": {
|
|
@@ -27814,29 +27784,24 @@
|
|
| 27814 |
},
|
| 27815 |
"node_modules/npm/node_modules/eastasianwidth": {
|
| 27816 |
"version": "0.2.0",
|
| 27817 |
-
"dev": true,
|
| 27818 |
"inBundle": true,
|
| 27819 |
"license": "MIT"
|
| 27820 |
},
|
| 27821 |
"node_modules/npm/node_modules/emoji-regex": {
|
| 27822 |
"version": "8.0.0",
|
| 27823 |
-
"dev": true,
|
| 27824 |
"inBundle": true,
|
| 27825 |
"license": "MIT"
|
| 27826 |
},
|
| 27827 |
"node_modules/npm/node_modules/encoding": {
|
| 27828 |
"version": "0.1.13",
|
| 27829 |
-
"dev": true,
|
| 27830 |
"inBundle": true,
|
| 27831 |
"license": "MIT",
|
| 27832 |
-
"optional": true,
|
| 27833 |
"dependencies": {
|
| 27834 |
"iconv-lite": "^0.6.2"
|
| 27835 |
}
|
| 27836 |
},
|
| 27837 |
"node_modules/npm/node_modules/env-paths": {
|
| 27838 |
"version": "2.2.1",
|
| 27839 |
-
"dev": true,
|
| 27840 |
"inBundle": true,
|
| 27841 |
"license": "MIT",
|
| 27842 |
"engines": {
|
|
@@ -27845,19 +27810,16 @@
|
|
| 27845 |
},
|
| 27846 |
"node_modules/npm/node_modules/err-code": {
|
| 27847 |
"version": "2.0.3",
|
| 27848 |
-
"dev": true,
|
| 27849 |
"inBundle": true,
|
| 27850 |
"license": "MIT"
|
| 27851 |
},
|
| 27852 |
"node_modules/npm/node_modules/exponential-backoff": {
|
| 27853 |
"version": "3.1.1",
|
| 27854 |
-
"dev": true,
|
| 27855 |
"inBundle": true,
|
| 27856 |
"license": "Apache-2.0"
|
| 27857 |
},
|
| 27858 |
"node_modules/npm/node_modules/fastest-levenshtein": {
|
| 27859 |
"version": "1.0.16",
|
| 27860 |
-
"dev": true,
|
| 27861 |
"inBundle": true,
|
| 27862 |
"license": "MIT",
|
| 27863 |
"engines": {
|
|
@@ -27866,7 +27828,6 @@
|
|
| 27866 |
},
|
| 27867 |
"node_modules/npm/node_modules/foreground-child": {
|
| 27868 |
"version": "3.3.0",
|
| 27869 |
-
"dev": true,
|
| 27870 |
"inBundle": true,
|
| 27871 |
"license": "ISC",
|
| 27872 |
"dependencies": {
|
|
@@ -27882,7 +27843,6 @@
|
|
| 27882 |
},
|
| 27883 |
"node_modules/npm/node_modules/fs-minipass": {
|
| 27884 |
"version": "3.0.3",
|
| 27885 |
-
"dev": true,
|
| 27886 |
"inBundle": true,
|
| 27887 |
"license": "ISC",
|
| 27888 |
"dependencies": {
|
|
@@ -27894,7 +27854,6 @@
|
|
| 27894 |
},
|
| 27895 |
"node_modules/npm/node_modules/glob": {
|
| 27896 |
"version": "10.4.5",
|
| 27897 |
-
"dev": true,
|
| 27898 |
"inBundle": true,
|
| 27899 |
"license": "ISC",
|
| 27900 |
"dependencies": {
|
|
@@ -27914,13 +27873,11 @@
|
|
| 27914 |
},
|
| 27915 |
"node_modules/npm/node_modules/graceful-fs": {
|
| 27916 |
"version": "4.2.11",
|
| 27917 |
-
"dev": true,
|
| 27918 |
"inBundle": true,
|
| 27919 |
"license": "ISC"
|
| 27920 |
},
|
| 27921 |
"node_modules/npm/node_modules/hosted-git-info": {
|
| 27922 |
"version": "8.0.2",
|
| 27923 |
-
"dev": true,
|
| 27924 |
"inBundle": true,
|
| 27925 |
"license": "ISC",
|
| 27926 |
"dependencies": {
|
|
@@ -27932,13 +27889,11 @@
|
|
| 27932 |
},
|
| 27933 |
"node_modules/npm/node_modules/http-cache-semantics": {
|
| 27934 |
"version": "4.1.1",
|
| 27935 |
-
"dev": true,
|
| 27936 |
"inBundle": true,
|
| 27937 |
"license": "BSD-2-Clause"
|
| 27938 |
},
|
| 27939 |
"node_modules/npm/node_modules/http-proxy-agent": {
|
| 27940 |
"version": "7.0.2",
|
| 27941 |
-
"dev": true,
|
| 27942 |
"inBundle": true,
|
| 27943 |
"license": "MIT",
|
| 27944 |
"dependencies": {
|
|
@@ -27951,7 +27906,6 @@
|
|
| 27951 |
},
|
| 27952 |
"node_modules/npm/node_modules/https-proxy-agent": {
|
| 27953 |
"version": "7.0.5",
|
| 27954 |
-
"dev": true,
|
| 27955 |
"inBundle": true,
|
| 27956 |
"license": "MIT",
|
| 27957 |
"dependencies": {
|
|
@@ -27964,10 +27918,8 @@
|
|
| 27964 |
},
|
| 27965 |
"node_modules/npm/node_modules/iconv-lite": {
|
| 27966 |
"version": "0.6.3",
|
| 27967 |
-
"dev": true,
|
| 27968 |
"inBundle": true,
|
| 27969 |
"license": "MIT",
|
| 27970 |
-
"optional": true,
|
| 27971 |
"dependencies": {
|
| 27972 |
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 27973 |
},
|
|
@@ -27977,7 +27929,6 @@
|
|
| 27977 |
},
|
| 27978 |
"node_modules/npm/node_modules/ignore-walk": {
|
| 27979 |
"version": "7.0.0",
|
| 27980 |
-
"dev": true,
|
| 27981 |
"inBundle": true,
|
| 27982 |
"license": "ISC",
|
| 27983 |
"dependencies": {
|
|
@@ -27989,7 +27940,6 @@
|
|
| 27989 |
},
|
| 27990 |
"node_modules/npm/node_modules/imurmurhash": {
|
| 27991 |
"version": "0.1.4",
|
| 27992 |
-
"dev": true,
|
| 27993 |
"inBundle": true,
|
| 27994 |
"license": "MIT",
|
| 27995 |
"engines": {
|
|
@@ -27998,7 +27948,6 @@
|
|
| 27998 |
},
|
| 27999 |
"node_modules/npm/node_modules/indent-string": {
|
| 28000 |
"version": "4.0.0",
|
| 28001 |
-
"dev": true,
|
| 28002 |
"inBundle": true,
|
| 28003 |
"license": "MIT",
|
| 28004 |
"engines": {
|
|
@@ -28007,7 +27956,6 @@
|
|
| 28007 |
},
|
| 28008 |
"node_modules/npm/node_modules/ini": {
|
| 28009 |
"version": "5.0.0",
|
| 28010 |
-
"dev": true,
|
| 28011 |
"inBundle": true,
|
| 28012 |
"license": "ISC",
|
| 28013 |
"engines": {
|
|
@@ -28016,7 +27964,6 @@
|
|
| 28016 |
},
|
| 28017 |
"node_modules/npm/node_modules/init-package-json": {
|
| 28018 |
"version": "7.0.2",
|
| 28019 |
-
"dev": true,
|
| 28020 |
"inBundle": true,
|
| 28021 |
"license": "ISC",
|
| 28022 |
"dependencies": {
|
|
@@ -28034,7 +27981,6 @@
|
|
| 28034 |
},
|
| 28035 |
"node_modules/npm/node_modules/ip-address": {
|
| 28036 |
"version": "9.0.5",
|
| 28037 |
-
"dev": true,
|
| 28038 |
"inBundle": true,
|
| 28039 |
"license": "MIT",
|
| 28040 |
"dependencies": {
|
|
@@ -28047,7 +27993,6 @@
|
|
| 28047 |
},
|
| 28048 |
"node_modules/npm/node_modules/ip-regex": {
|
| 28049 |
"version": "5.0.0",
|
| 28050 |
-
"dev": true,
|
| 28051 |
"inBundle": true,
|
| 28052 |
"license": "MIT",
|
| 28053 |
"engines": {
|
|
@@ -28059,7 +28004,6 @@
|
|
| 28059 |
},
|
| 28060 |
"node_modules/npm/node_modules/is-cidr": {
|
| 28061 |
"version": "5.1.0",
|
| 28062 |
-
"dev": true,
|
| 28063 |
"inBundle": true,
|
| 28064 |
"license": "BSD-2-Clause",
|
| 28065 |
"dependencies": {
|
|
@@ -28071,7 +28015,6 @@
|
|
| 28071 |
},
|
| 28072 |
"node_modules/npm/node_modules/is-fullwidth-code-point": {
|
| 28073 |
"version": "3.0.0",
|
| 28074 |
-
"dev": true,
|
| 28075 |
"inBundle": true,
|
| 28076 |
"license": "MIT",
|
| 28077 |
"engines": {
|
|
@@ -28080,13 +28023,11 @@
|
|
| 28080 |
},
|
| 28081 |
"node_modules/npm/node_modules/isexe": {
|
| 28082 |
"version": "2.0.0",
|
| 28083 |
-
"dev": true,
|
| 28084 |
"inBundle": true,
|
| 28085 |
"license": "ISC"
|
| 28086 |
},
|
| 28087 |
"node_modules/npm/node_modules/jackspeak": {
|
| 28088 |
"version": "3.4.3",
|
| 28089 |
-
"dev": true,
|
| 28090 |
"inBundle": true,
|
| 28091 |
"license": "BlueOak-1.0.0",
|
| 28092 |
"dependencies": {
|
|
@@ -28101,13 +28042,11 @@
|
|
| 28101 |
},
|
| 28102 |
"node_modules/npm/node_modules/jsbn": {
|
| 28103 |
"version": "1.1.0",
|
| 28104 |
-
"dev": true,
|
| 28105 |
"inBundle": true,
|
| 28106 |
"license": "MIT"
|
| 28107 |
},
|
| 28108 |
"node_modules/npm/node_modules/json-parse-even-better-errors": {
|
| 28109 |
"version": "4.0.0",
|
| 28110 |
-
"dev": true,
|
| 28111 |
"inBundle": true,
|
| 28112 |
"license": "MIT",
|
| 28113 |
"engines": {
|
|
@@ -28116,7 +28055,6 @@
|
|
| 28116 |
},
|
| 28117 |
"node_modules/npm/node_modules/json-stringify-nice": {
|
| 28118 |
"version": "1.1.4",
|
| 28119 |
-
"dev": true,
|
| 28120 |
"inBundle": true,
|
| 28121 |
"license": "ISC",
|
| 28122 |
"funding": {
|
|
@@ -28125,7 +28063,6 @@
|
|
| 28125 |
},
|
| 28126 |
"node_modules/npm/node_modules/jsonparse": {
|
| 28127 |
"version": "1.3.1",
|
| 28128 |
-
"dev": true,
|
| 28129 |
"engines": [
|
| 28130 |
"node >= 0.2.0"
|
| 28131 |
],
|
|
@@ -28134,19 +28071,16 @@
|
|
| 28134 |
},
|
| 28135 |
"node_modules/npm/node_modules/just-diff": {
|
| 28136 |
"version": "6.0.2",
|
| 28137 |
-
"dev": true,
|
| 28138 |
"inBundle": true,
|
| 28139 |
"license": "MIT"
|
| 28140 |
},
|
| 28141 |
"node_modules/npm/node_modules/just-diff-apply": {
|
| 28142 |
"version": "5.5.0",
|
| 28143 |
-
"dev": true,
|
| 28144 |
"inBundle": true,
|
| 28145 |
"license": "MIT"
|
| 28146 |
},
|
| 28147 |
"node_modules/npm/node_modules/libnpmaccess": {
|
| 28148 |
"version": "9.0.0",
|
| 28149 |
-
"dev": true,
|
| 28150 |
"inBundle": true,
|
| 28151 |
"license": "ISC",
|
| 28152 |
"dependencies": {
|
|
@@ -28159,7 +28093,6 @@
|
|
| 28159 |
},
|
| 28160 |
"node_modules/npm/node_modules/libnpmdiff": {
|
| 28161 |
"version": "7.0.0",
|
| 28162 |
-
"dev": true,
|
| 28163 |
"inBundle": true,
|
| 28164 |
"license": "ISC",
|
| 28165 |
"dependencies": {
|
|
@@ -28178,7 +28111,6 @@
|
|
| 28178 |
},
|
| 28179 |
"node_modules/npm/node_modules/libnpmexec": {
|
| 28180 |
"version": "9.0.0",
|
| 28181 |
-
"dev": true,
|
| 28182 |
"inBundle": true,
|
| 28183 |
"license": "ISC",
|
| 28184 |
"dependencies": {
|
|
@@ -28199,7 +28131,6 @@
|
|
| 28199 |
},
|
| 28200 |
"node_modules/npm/node_modules/libnpmfund": {
|
| 28201 |
"version": "6.0.0",
|
| 28202 |
-
"dev": true,
|
| 28203 |
"inBundle": true,
|
| 28204 |
"license": "ISC",
|
| 28205 |
"dependencies": {
|
|
@@ -28211,7 +28142,6 @@
|
|
| 28211 |
},
|
| 28212 |
"node_modules/npm/node_modules/libnpmhook": {
|
| 28213 |
"version": "11.0.0",
|
| 28214 |
-
"dev": true,
|
| 28215 |
"inBundle": true,
|
| 28216 |
"license": "ISC",
|
| 28217 |
"dependencies": {
|
|
@@ -28224,7 +28154,6 @@
|
|
| 28224 |
},
|
| 28225 |
"node_modules/npm/node_modules/libnpmorg": {
|
| 28226 |
"version": "7.0.0",
|
| 28227 |
-
"dev": true,
|
| 28228 |
"inBundle": true,
|
| 28229 |
"license": "ISC",
|
| 28230 |
"dependencies": {
|
|
@@ -28237,7 +28166,6 @@
|
|
| 28237 |
},
|
| 28238 |
"node_modules/npm/node_modules/libnpmpack": {
|
| 28239 |
"version": "8.0.0",
|
| 28240 |
-
"dev": true,
|
| 28241 |
"inBundle": true,
|
| 28242 |
"license": "ISC",
|
| 28243 |
"dependencies": {
|
|
@@ -28252,7 +28180,6 @@
|
|
| 28252 |
},
|
| 28253 |
"node_modules/npm/node_modules/libnpmpublish": {
|
| 28254 |
"version": "10.0.1",
|
| 28255 |
-
"dev": true,
|
| 28256 |
"inBundle": true,
|
| 28257 |
"license": "ISC",
|
| 28258 |
"dependencies": {
|
|
@@ -28271,7 +28198,6 @@
|
|
| 28271 |
},
|
| 28272 |
"node_modules/npm/node_modules/libnpmsearch": {
|
| 28273 |
"version": "8.0.0",
|
| 28274 |
-
"dev": true,
|
| 28275 |
"inBundle": true,
|
| 28276 |
"license": "ISC",
|
| 28277 |
"dependencies": {
|
|
@@ -28283,7 +28209,6 @@
|
|
| 28283 |
},
|
| 28284 |
"node_modules/npm/node_modules/libnpmteam": {
|
| 28285 |
"version": "7.0.0",
|
| 28286 |
-
"dev": true,
|
| 28287 |
"inBundle": true,
|
| 28288 |
"license": "ISC",
|
| 28289 |
"dependencies": {
|
|
@@ -28296,7 +28221,6 @@
|
|
| 28296 |
},
|
| 28297 |
"node_modules/npm/node_modules/libnpmversion": {
|
| 28298 |
"version": "7.0.0",
|
| 28299 |
-
"dev": true,
|
| 28300 |
"inBundle": true,
|
| 28301 |
"license": "ISC",
|
| 28302 |
"dependencies": {
|
|
@@ -28312,13 +28236,11 @@
|
|
| 28312 |
},
|
| 28313 |
"node_modules/npm/node_modules/lru-cache": {
|
| 28314 |
"version": "10.4.3",
|
| 28315 |
-
"dev": true,
|
| 28316 |
"inBundle": true,
|
| 28317 |
"license": "ISC"
|
| 28318 |
},
|
| 28319 |
"node_modules/npm/node_modules/make-fetch-happen": {
|
| 28320 |
"version": "14.0.3",
|
| 28321 |
-
"dev": true,
|
| 28322 |
"inBundle": true,
|
| 28323 |
"license": "ISC",
|
| 28324 |
"dependencies": {
|
|
@@ -28340,7 +28262,6 @@
|
|
| 28340 |
},
|
| 28341 |
"node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": {
|
| 28342 |
"version": "1.0.0",
|
| 28343 |
-
"dev": true,
|
| 28344 |
"inBundle": true,
|
| 28345 |
"license": "MIT",
|
| 28346 |
"engines": {
|
|
@@ -28349,7 +28270,6 @@
|
|
| 28349 |
},
|
| 28350 |
"node_modules/npm/node_modules/minimatch": {
|
| 28351 |
"version": "9.0.5",
|
| 28352 |
-
"dev": true,
|
| 28353 |
"inBundle": true,
|
| 28354 |
"license": "ISC",
|
| 28355 |
"dependencies": {
|
|
@@ -28364,7 +28284,6 @@
|
|
| 28364 |
},
|
| 28365 |
"node_modules/npm/node_modules/minipass": {
|
| 28366 |
"version": "7.1.2",
|
| 28367 |
-
"dev": true,
|
| 28368 |
"inBundle": true,
|
| 28369 |
"license": "ISC",
|
| 28370 |
"engines": {
|
|
@@ -28373,7 +28292,6 @@
|
|
| 28373 |
},
|
| 28374 |
"node_modules/npm/node_modules/minipass-collect": {
|
| 28375 |
"version": "2.0.1",
|
| 28376 |
-
"dev": true,
|
| 28377 |
"inBundle": true,
|
| 28378 |
"license": "ISC",
|
| 28379 |
"dependencies": {
|
|
@@ -28385,7 +28303,6 @@
|
|
| 28385 |
},
|
| 28386 |
"node_modules/npm/node_modules/minipass-fetch": {
|
| 28387 |
"version": "4.0.0",
|
| 28388 |
-
"dev": true,
|
| 28389 |
"inBundle": true,
|
| 28390 |
"license": "MIT",
|
| 28391 |
"dependencies": {
|
|
@@ -28402,7 +28319,6 @@
|
|
| 28402 |
},
|
| 28403 |
"node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": {
|
| 28404 |
"version": "3.0.1",
|
| 28405 |
-
"dev": true,
|
| 28406 |
"inBundle": true,
|
| 28407 |
"license": "MIT",
|
| 28408 |
"dependencies": {
|
|
@@ -28415,7 +28331,6 @@
|
|
| 28415 |
},
|
| 28416 |
"node_modules/npm/node_modules/minipass-flush": {
|
| 28417 |
"version": "1.0.5",
|
| 28418 |
-
"dev": true,
|
| 28419 |
"inBundle": true,
|
| 28420 |
"license": "ISC",
|
| 28421 |
"dependencies": {
|
|
@@ -28427,7 +28342,6 @@
|
|
| 28427 |
},
|
| 28428 |
"node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
|
| 28429 |
"version": "3.3.6",
|
| 28430 |
-
"dev": true,
|
| 28431 |
"inBundle": true,
|
| 28432 |
"license": "ISC",
|
| 28433 |
"dependencies": {
|
|
@@ -28439,7 +28353,6 @@
|
|
| 28439 |
},
|
| 28440 |
"node_modules/npm/node_modules/minipass-pipeline": {
|
| 28441 |
"version": "1.2.4",
|
| 28442 |
-
"dev": true,
|
| 28443 |
"inBundle": true,
|
| 28444 |
"license": "ISC",
|
| 28445 |
"dependencies": {
|
|
@@ -28451,7 +28364,6 @@
|
|
| 28451 |
},
|
| 28452 |
"node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
|
| 28453 |
"version": "3.3.6",
|
| 28454 |
-
"dev": true,
|
| 28455 |
"inBundle": true,
|
| 28456 |
"license": "ISC",
|
| 28457 |
"dependencies": {
|
|
@@ -28463,7 +28375,6 @@
|
|
| 28463 |
},
|
| 28464 |
"node_modules/npm/node_modules/minipass-sized": {
|
| 28465 |
"version": "1.0.3",
|
| 28466 |
-
"dev": true,
|
| 28467 |
"inBundle": true,
|
| 28468 |
"license": "ISC",
|
| 28469 |
"dependencies": {
|
|
@@ -28475,7 +28386,6 @@
|
|
| 28475 |
},
|
| 28476 |
"node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
|
| 28477 |
"version": "3.3.6",
|
| 28478 |
-
"dev": true,
|
| 28479 |
"inBundle": true,
|
| 28480 |
"license": "ISC",
|
| 28481 |
"dependencies": {
|
|
@@ -28487,7 +28397,6 @@
|
|
| 28487 |
},
|
| 28488 |
"node_modules/npm/node_modules/minizlib": {
|
| 28489 |
"version": "2.1.2",
|
| 28490 |
-
"dev": true,
|
| 28491 |
"inBundle": true,
|
| 28492 |
"license": "MIT",
|
| 28493 |
"dependencies": {
|
|
@@ -28500,7 +28409,6 @@
|
|
| 28500 |
},
|
| 28501 |
"node_modules/npm/node_modules/minizlib/node_modules/minipass": {
|
| 28502 |
"version": "3.3.6",
|
| 28503 |
-
"dev": true,
|
| 28504 |
"inBundle": true,
|
| 28505 |
"license": "ISC",
|
| 28506 |
"dependencies": {
|
|
@@ -28512,7 +28420,6 @@
|
|
| 28512 |
},
|
| 28513 |
"node_modules/npm/node_modules/mkdirp": {
|
| 28514 |
"version": "1.0.4",
|
| 28515 |
-
"dev": true,
|
| 28516 |
"inBundle": true,
|
| 28517 |
"license": "MIT",
|
| 28518 |
"bin": {
|
|
@@ -28524,13 +28431,11 @@
|
|
| 28524 |
},
|
| 28525 |
"node_modules/npm/node_modules/ms": {
|
| 28526 |
"version": "2.1.3",
|
| 28527 |
-
"dev": true,
|
| 28528 |
"inBundle": true,
|
| 28529 |
"license": "MIT"
|
| 28530 |
},
|
| 28531 |
"node_modules/npm/node_modules/mute-stream": {
|
| 28532 |
"version": "2.0.0",
|
| 28533 |
-
"dev": true,
|
| 28534 |
"inBundle": true,
|
| 28535 |
"license": "ISC",
|
| 28536 |
"engines": {
|
|
@@ -28539,7 +28444,6 @@
|
|
| 28539 |
},
|
| 28540 |
"node_modules/npm/node_modules/node-gyp": {
|
| 28541 |
"version": "11.0.0",
|
| 28542 |
-
"dev": true,
|
| 28543 |
"inBundle": true,
|
| 28544 |
"license": "MIT",
|
| 28545 |
"dependencies": {
|
|
@@ -28563,7 +28467,6 @@
|
|
| 28563 |
},
|
| 28564 |
"node_modules/npm/node_modules/node-gyp/node_modules/chownr": {
|
| 28565 |
"version": "3.0.0",
|
| 28566 |
-
"dev": true,
|
| 28567 |
"inBundle": true,
|
| 28568 |
"license": "BlueOak-1.0.0",
|
| 28569 |
"engines": {
|
|
@@ -28572,7 +28475,6 @@
|
|
| 28572 |
},
|
| 28573 |
"node_modules/npm/node_modules/node-gyp/node_modules/minizlib": {
|
| 28574 |
"version": "3.0.1",
|
| 28575 |
-
"dev": true,
|
| 28576 |
"inBundle": true,
|
| 28577 |
"license": "MIT",
|
| 28578 |
"dependencies": {
|
|
@@ -28585,7 +28487,6 @@
|
|
| 28585 |
},
|
| 28586 |
"node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": {
|
| 28587 |
"version": "3.0.1",
|
| 28588 |
-
"dev": true,
|
| 28589 |
"inBundle": true,
|
| 28590 |
"license": "MIT",
|
| 28591 |
"bin": {
|
|
@@ -28600,7 +28501,6 @@
|
|
| 28600 |
},
|
| 28601 |
"node_modules/npm/node_modules/node-gyp/node_modules/tar": {
|
| 28602 |
"version": "7.4.3",
|
| 28603 |
-
"dev": true,
|
| 28604 |
"inBundle": true,
|
| 28605 |
"license": "ISC",
|
| 28606 |
"dependencies": {
|
|
@@ -28617,7 +28517,6 @@
|
|
| 28617 |
},
|
| 28618 |
"node_modules/npm/node_modules/node-gyp/node_modules/yallist": {
|
| 28619 |
"version": "5.0.0",
|
| 28620 |
-
"dev": true,
|
| 28621 |
"inBundle": true,
|
| 28622 |
"license": "BlueOak-1.0.0",
|
| 28623 |
"engines": {
|
|
@@ -28626,7 +28525,6 @@
|
|
| 28626 |
},
|
| 28627 |
"node_modules/npm/node_modules/nopt": {
|
| 28628 |
"version": "8.0.0",
|
| 28629 |
-
"dev": true,
|
| 28630 |
"inBundle": true,
|
| 28631 |
"license": "ISC",
|
| 28632 |
"dependencies": {
|
|
@@ -28641,7 +28539,6 @@
|
|
| 28641 |
},
|
| 28642 |
"node_modules/npm/node_modules/nopt/node_modules/abbrev": {
|
| 28643 |
"version": "2.0.0",
|
| 28644 |
-
"dev": true,
|
| 28645 |
"inBundle": true,
|
| 28646 |
"license": "ISC",
|
| 28647 |
"engines": {
|
|
@@ -28650,7 +28547,6 @@
|
|
| 28650 |
},
|
| 28651 |
"node_modules/npm/node_modules/normalize-package-data": {
|
| 28652 |
"version": "7.0.0",
|
| 28653 |
-
"dev": true,
|
| 28654 |
"inBundle": true,
|
| 28655 |
"license": "BSD-2-Clause",
|
| 28656 |
"dependencies": {
|
|
@@ -28664,7 +28560,6 @@
|
|
| 28664 |
},
|
| 28665 |
"node_modules/npm/node_modules/npm-audit-report": {
|
| 28666 |
"version": "6.0.0",
|
| 28667 |
-
"dev": true,
|
| 28668 |
"inBundle": true,
|
| 28669 |
"license": "ISC",
|
| 28670 |
"engines": {
|
|
@@ -28673,7 +28568,6 @@
|
|
| 28673 |
},
|
| 28674 |
"node_modules/npm/node_modules/npm-bundled": {
|
| 28675 |
"version": "4.0.0",
|
| 28676 |
-
"dev": true,
|
| 28677 |
"inBundle": true,
|
| 28678 |
"license": "ISC",
|
| 28679 |
"dependencies": {
|
|
@@ -28685,7 +28579,6 @@
|
|
| 28685 |
},
|
| 28686 |
"node_modules/npm/node_modules/npm-install-checks": {
|
| 28687 |
"version": "7.1.1",
|
| 28688 |
-
"dev": true,
|
| 28689 |
"inBundle": true,
|
| 28690 |
"license": "BSD-2-Clause",
|
| 28691 |
"dependencies": {
|
|
@@ -28697,7 +28590,6 @@
|
|
| 28697 |
},
|
| 28698 |
"node_modules/npm/node_modules/npm-normalize-package-bin": {
|
| 28699 |
"version": "4.0.0",
|
| 28700 |
-
"dev": true,
|
| 28701 |
"inBundle": true,
|
| 28702 |
"license": "ISC",
|
| 28703 |
"engines": {
|
|
@@ -28706,7 +28598,6 @@
|
|
| 28706 |
},
|
| 28707 |
"node_modules/npm/node_modules/npm-package-arg": {
|
| 28708 |
"version": "12.0.0",
|
| 28709 |
-
"dev": true,
|
| 28710 |
"inBundle": true,
|
| 28711 |
"license": "ISC",
|
| 28712 |
"dependencies": {
|
|
@@ -28721,7 +28612,6 @@
|
|
| 28721 |
},
|
| 28722 |
"node_modules/npm/node_modules/npm-packlist": {
|
| 28723 |
"version": "9.0.0",
|
| 28724 |
-
"dev": true,
|
| 28725 |
"inBundle": true,
|
| 28726 |
"license": "ISC",
|
| 28727 |
"dependencies": {
|
|
@@ -28733,7 +28623,6 @@
|
|
| 28733 |
},
|
| 28734 |
"node_modules/npm/node_modules/npm-pick-manifest": {
|
| 28735 |
"version": "10.0.0",
|
| 28736 |
-
"dev": true,
|
| 28737 |
"inBundle": true,
|
| 28738 |
"license": "ISC",
|
| 28739 |
"dependencies": {
|
|
@@ -28748,7 +28637,6 @@
|
|
| 28748 |
},
|
| 28749 |
"node_modules/npm/node_modules/npm-profile": {
|
| 28750 |
"version": "11.0.1",
|
| 28751 |
-
"dev": true,
|
| 28752 |
"inBundle": true,
|
| 28753 |
"license": "ISC",
|
| 28754 |
"dependencies": {
|
|
@@ -28761,7 +28649,6 @@
|
|
| 28761 |
},
|
| 28762 |
"node_modules/npm/node_modules/npm-registry-fetch": {
|
| 28763 |
"version": "18.0.2",
|
| 28764 |
-
"dev": true,
|
| 28765 |
"inBundle": true,
|
| 28766 |
"license": "ISC",
|
| 28767 |
"dependencies": {
|
|
@@ -28780,7 +28667,6 @@
|
|
| 28780 |
},
|
| 28781 |
"node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": {
|
| 28782 |
"version": "3.0.1",
|
| 28783 |
-
"dev": true,
|
| 28784 |
"inBundle": true,
|
| 28785 |
"license": "MIT",
|
| 28786 |
"dependencies": {
|
|
@@ -28793,7 +28679,6 @@
|
|
| 28793 |
},
|
| 28794 |
"node_modules/npm/node_modules/npm-user-validate": {
|
| 28795 |
"version": "3.0.0",
|
| 28796 |
-
"dev": true,
|
| 28797 |
"inBundle": true,
|
| 28798 |
"license": "BSD-2-Clause",
|
| 28799 |
"engines": {
|
|
@@ -28802,7 +28687,6 @@
|
|
| 28802 |
},
|
| 28803 |
"node_modules/npm/node_modules/p-map": {
|
| 28804 |
"version": "4.0.0",
|
| 28805 |
-
"dev": true,
|
| 28806 |
"inBundle": true,
|
| 28807 |
"license": "MIT",
|
| 28808 |
"dependencies": {
|
|
@@ -28817,13 +28701,11 @@
|
|
| 28817 |
},
|
| 28818 |
"node_modules/npm/node_modules/package-json-from-dist": {
|
| 28819 |
"version": "1.0.1",
|
| 28820 |
-
"dev": true,
|
| 28821 |
"inBundle": true,
|
| 28822 |
"license": "BlueOak-1.0.0"
|
| 28823 |
},
|
| 28824 |
"node_modules/npm/node_modules/pacote": {
|
| 28825 |
"version": "19.0.1",
|
| 28826 |
-
"dev": true,
|
| 28827 |
"inBundle": true,
|
| 28828 |
"license": "ISC",
|
| 28829 |
"dependencies": {
|
|
@@ -28854,7 +28736,6 @@
|
|
| 28854 |
},
|
| 28855 |
"node_modules/npm/node_modules/parse-conflict-json": {
|
| 28856 |
"version": "4.0.0",
|
| 28857 |
-
"dev": true,
|
| 28858 |
"inBundle": true,
|
| 28859 |
"license": "ISC",
|
| 28860 |
"dependencies": {
|
|
@@ -28868,7 +28749,6 @@
|
|
| 28868 |
},
|
| 28869 |
"node_modules/npm/node_modules/path-key": {
|
| 28870 |
"version": "3.1.1",
|
| 28871 |
-
"dev": true,
|
| 28872 |
"inBundle": true,
|
| 28873 |
"license": "MIT",
|
| 28874 |
"engines": {
|
|
@@ -28877,7 +28757,6 @@
|
|
| 28877 |
},
|
| 28878 |
"node_modules/npm/node_modules/path-scurry": {
|
| 28879 |
"version": "1.11.1",
|
| 28880 |
-
"dev": true,
|
| 28881 |
"inBundle": true,
|
| 28882 |
"license": "BlueOak-1.0.0",
|
| 28883 |
"dependencies": {
|
|
@@ -28893,7 +28772,6 @@
|
|
| 28893 |
},
|
| 28894 |
"node_modules/npm/node_modules/postcss-selector-parser": {
|
| 28895 |
"version": "6.1.2",
|
| 28896 |
-
"dev": true,
|
| 28897 |
"inBundle": true,
|
| 28898 |
"license": "MIT",
|
| 28899 |
"dependencies": {
|
|
@@ -28906,7 +28784,6 @@
|
|
| 28906 |
},
|
| 28907 |
"node_modules/npm/node_modules/proc-log": {
|
| 28908 |
"version": "5.0.0",
|
| 28909 |
-
"dev": true,
|
| 28910 |
"inBundle": true,
|
| 28911 |
"license": "ISC",
|
| 28912 |
"engines": {
|
|
@@ -28915,7 +28792,6 @@
|
|
| 28915 |
},
|
| 28916 |
"node_modules/npm/node_modules/proggy": {
|
| 28917 |
"version": "3.0.0",
|
| 28918 |
-
"dev": true,
|
| 28919 |
"inBundle": true,
|
| 28920 |
"license": "ISC",
|
| 28921 |
"engines": {
|
|
@@ -28924,7 +28800,6 @@
|
|
| 28924 |
},
|
| 28925 |
"node_modules/npm/node_modules/promise-all-reject-late": {
|
| 28926 |
"version": "1.0.1",
|
| 28927 |
-
"dev": true,
|
| 28928 |
"inBundle": true,
|
| 28929 |
"license": "ISC",
|
| 28930 |
"funding": {
|
|
@@ -28933,7 +28808,6 @@
|
|
| 28933 |
},
|
| 28934 |
"node_modules/npm/node_modules/promise-call-limit": {
|
| 28935 |
"version": "3.0.2",
|
| 28936 |
-
"dev": true,
|
| 28937 |
"inBundle": true,
|
| 28938 |
"license": "ISC",
|
| 28939 |
"funding": {
|
|
@@ -28942,13 +28816,11 @@
|
|
| 28942 |
},
|
| 28943 |
"node_modules/npm/node_modules/promise-inflight": {
|
| 28944 |
"version": "1.0.1",
|
| 28945 |
-
"dev": true,
|
| 28946 |
"inBundle": true,
|
| 28947 |
"license": "ISC"
|
| 28948 |
},
|
| 28949 |
"node_modules/npm/node_modules/promise-retry": {
|
| 28950 |
"version": "2.0.1",
|
| 28951 |
-
"dev": true,
|
| 28952 |
"inBundle": true,
|
| 28953 |
"license": "MIT",
|
| 28954 |
"dependencies": {
|
|
@@ -28961,7 +28833,6 @@
|
|
| 28961 |
},
|
| 28962 |
"node_modules/npm/node_modules/promzard": {
|
| 28963 |
"version": "2.0.0",
|
| 28964 |
-
"dev": true,
|
| 28965 |
"inBundle": true,
|
| 28966 |
"license": "ISC",
|
| 28967 |
"dependencies": {
|
|
@@ -28973,7 +28844,6 @@
|
|
| 28973 |
},
|
| 28974 |
"node_modules/npm/node_modules/qrcode-terminal": {
|
| 28975 |
"version": "0.12.0",
|
| 28976 |
-
"dev": true,
|
| 28977 |
"inBundle": true,
|
| 28978 |
"bin": {
|
| 28979 |
"qrcode-terminal": "bin/qrcode-terminal.js"
|
|
@@ -28981,7 +28851,6 @@
|
|
| 28981 |
},
|
| 28982 |
"node_modules/npm/node_modules/read": {
|
| 28983 |
"version": "4.0.0",
|
| 28984 |
-
"dev": true,
|
| 28985 |
"inBundle": true,
|
| 28986 |
"license": "ISC",
|
| 28987 |
"dependencies": {
|
|
@@ -28993,7 +28862,6 @@
|
|
| 28993 |
},
|
| 28994 |
"node_modules/npm/node_modules/read-cmd-shim": {
|
| 28995 |
"version": "5.0.0",
|
| 28996 |
-
"dev": true,
|
| 28997 |
"inBundle": true,
|
| 28998 |
"license": "ISC",
|
| 28999 |
"engines": {
|
|
@@ -29002,7 +28870,6 @@
|
|
| 29002 |
},
|
| 29003 |
"node_modules/npm/node_modules/read-package-json-fast": {
|
| 29004 |
"version": "4.0.0",
|
| 29005 |
-
"dev": true,
|
| 29006 |
"inBundle": true,
|
| 29007 |
"license": "ISC",
|
| 29008 |
"dependencies": {
|
|
@@ -29015,7 +28882,6 @@
|
|
| 29015 |
},
|
| 29016 |
"node_modules/npm/node_modules/retry": {
|
| 29017 |
"version": "0.12.0",
|
| 29018 |
-
"dev": true,
|
| 29019 |
"inBundle": true,
|
| 29020 |
"license": "MIT",
|
| 29021 |
"engines": {
|
|
@@ -29024,7 +28890,6 @@
|
|
| 29024 |
},
|
| 29025 |
"node_modules/npm/node_modules/rimraf": {
|
| 29026 |
"version": "5.0.10",
|
| 29027 |
-
"dev": true,
|
| 29028 |
"inBundle": true,
|
| 29029 |
"license": "ISC",
|
| 29030 |
"dependencies": {
|
|
@@ -29039,14 +28904,11 @@
|
|
| 29039 |
},
|
| 29040 |
"node_modules/npm/node_modules/safer-buffer": {
|
| 29041 |
"version": "2.1.2",
|
| 29042 |
-
"dev": true,
|
| 29043 |
"inBundle": true,
|
| 29044 |
-
"license": "MIT"
|
| 29045 |
-
"optional": true
|
| 29046 |
},
|
| 29047 |
"node_modules/npm/node_modules/semver": {
|
| 29048 |
"version": "7.6.3",
|
| 29049 |
-
"dev": true,
|
| 29050 |
"inBundle": true,
|
| 29051 |
"license": "ISC",
|
| 29052 |
"bin": {
|
|
@@ -29058,7 +28920,6 @@
|
|
| 29058 |
},
|
| 29059 |
"node_modules/npm/node_modules/shebang-command": {
|
| 29060 |
"version": "2.0.0",
|
| 29061 |
-
"dev": true,
|
| 29062 |
"inBundle": true,
|
| 29063 |
"license": "MIT",
|
| 29064 |
"dependencies": {
|
|
@@ -29070,7 +28931,6 @@
|
|
| 29070 |
},
|
| 29071 |
"node_modules/npm/node_modules/shebang-regex": {
|
| 29072 |
"version": "3.0.0",
|
| 29073 |
-
"dev": true,
|
| 29074 |
"inBundle": true,
|
| 29075 |
"license": "MIT",
|
| 29076 |
"engines": {
|
|
@@ -29079,7 +28939,6 @@
|
|
| 29079 |
},
|
| 29080 |
"node_modules/npm/node_modules/signal-exit": {
|
| 29081 |
"version": "4.1.0",
|
| 29082 |
-
"dev": true,
|
| 29083 |
"inBundle": true,
|
| 29084 |
"license": "ISC",
|
| 29085 |
"engines": {
|
|
@@ -29091,7 +28950,6 @@
|
|
| 29091 |
},
|
| 29092 |
"node_modules/npm/node_modules/sigstore": {
|
| 29093 |
"version": "3.0.0",
|
| 29094 |
-
"dev": true,
|
| 29095 |
"inBundle": true,
|
| 29096 |
"license": "Apache-2.0",
|
| 29097 |
"dependencies": {
|
|
@@ -29108,7 +28966,6 @@
|
|
| 29108 |
},
|
| 29109 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": {
|
| 29110 |
"version": "3.0.0",
|
| 29111 |
-
"dev": true,
|
| 29112 |
"inBundle": true,
|
| 29113 |
"license": "Apache-2.0",
|
| 29114 |
"dependencies": {
|
|
@@ -29120,7 +28977,6 @@
|
|
| 29120 |
},
|
| 29121 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": {
|
| 29122 |
"version": "2.0.0",
|
| 29123 |
-
"dev": true,
|
| 29124 |
"inBundle": true,
|
| 29125 |
"license": "Apache-2.0",
|
| 29126 |
"engines": {
|
|
@@ -29129,7 +28985,6 @@
|
|
| 29129 |
},
|
| 29130 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": {
|
| 29131 |
"version": "3.0.0",
|
| 29132 |
-
"dev": true,
|
| 29133 |
"inBundle": true,
|
| 29134 |
"license": "Apache-2.0",
|
| 29135 |
"dependencies": {
|
|
@@ -29146,7 +29001,6 @@
|
|
| 29146 |
},
|
| 29147 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": {
|
| 29148 |
"version": "2.0.0",
|
| 29149 |
-
"dev": true,
|
| 29150 |
"inBundle": true,
|
| 29151 |
"license": "Apache-2.0",
|
| 29152 |
"dependencies": {
|
|
@@ -29160,7 +29014,6 @@
|
|
| 29160 |
},
|
| 29161 |
"node_modules/npm/node_modules/smart-buffer": {
|
| 29162 |
"version": "4.2.0",
|
| 29163 |
-
"dev": true,
|
| 29164 |
"inBundle": true,
|
| 29165 |
"license": "MIT",
|
| 29166 |
"engines": {
|
|
@@ -29170,7 +29023,6 @@
|
|
| 29170 |
},
|
| 29171 |
"node_modules/npm/node_modules/socks": {
|
| 29172 |
"version": "2.8.3",
|
| 29173 |
-
"dev": true,
|
| 29174 |
"inBundle": true,
|
| 29175 |
"license": "MIT",
|
| 29176 |
"dependencies": {
|
|
@@ -29184,7 +29036,6 @@
|
|
| 29184 |
},
|
| 29185 |
"node_modules/npm/node_modules/socks-proxy-agent": {
|
| 29186 |
"version": "8.0.4",
|
| 29187 |
-
"dev": true,
|
| 29188 |
"inBundle": true,
|
| 29189 |
"license": "MIT",
|
| 29190 |
"dependencies": {
|
|
@@ -29198,7 +29049,6 @@
|
|
| 29198 |
},
|
| 29199 |
"node_modules/npm/node_modules/spdx-correct": {
|
| 29200 |
"version": "3.2.0",
|
| 29201 |
-
"dev": true,
|
| 29202 |
"inBundle": true,
|
| 29203 |
"license": "Apache-2.0",
|
| 29204 |
"dependencies": {
|
|
@@ -29208,7 +29058,6 @@
|
|
| 29208 |
},
|
| 29209 |
"node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": {
|
| 29210 |
"version": "3.0.1",
|
| 29211 |
-
"dev": true,
|
| 29212 |
"inBundle": true,
|
| 29213 |
"license": "MIT",
|
| 29214 |
"dependencies": {
|
|
@@ -29218,13 +29067,11 @@
|
|
| 29218 |
},
|
| 29219 |
"node_modules/npm/node_modules/spdx-exceptions": {
|
| 29220 |
"version": "2.5.0",
|
| 29221 |
-
"dev": true,
|
| 29222 |
"inBundle": true,
|
| 29223 |
"license": "CC-BY-3.0"
|
| 29224 |
},
|
| 29225 |
"node_modules/npm/node_modules/spdx-expression-parse": {
|
| 29226 |
"version": "4.0.0",
|
| 29227 |
-
"dev": true,
|
| 29228 |
"inBundle": true,
|
| 29229 |
"license": "MIT",
|
| 29230 |
"dependencies": {
|
|
@@ -29234,19 +29081,16 @@
|
|
| 29234 |
},
|
| 29235 |
"node_modules/npm/node_modules/spdx-license-ids": {
|
| 29236 |
"version": "3.0.20",
|
| 29237 |
-
"dev": true,
|
| 29238 |
"inBundle": true,
|
| 29239 |
"license": "CC0-1.0"
|
| 29240 |
},
|
| 29241 |
"node_modules/npm/node_modules/sprintf-js": {
|
| 29242 |
"version": "1.1.3",
|
| 29243 |
-
"dev": true,
|
| 29244 |
"inBundle": true,
|
| 29245 |
"license": "BSD-3-Clause"
|
| 29246 |
},
|
| 29247 |
"node_modules/npm/node_modules/ssri": {
|
| 29248 |
"version": "12.0.0",
|
| 29249 |
-
"dev": true,
|
| 29250 |
"inBundle": true,
|
| 29251 |
"license": "ISC",
|
| 29252 |
"dependencies": {
|
|
@@ -29258,7 +29102,6 @@
|
|
| 29258 |
},
|
| 29259 |
"node_modules/npm/node_modules/string-width": {
|
| 29260 |
"version": "4.2.3",
|
| 29261 |
-
"dev": true,
|
| 29262 |
"inBundle": true,
|
| 29263 |
"license": "MIT",
|
| 29264 |
"dependencies": {
|
|
@@ -29273,7 +29116,6 @@
|
|
| 29273 |
"node_modules/npm/node_modules/string-width-cjs": {
|
| 29274 |
"name": "string-width",
|
| 29275 |
"version": "4.2.3",
|
| 29276 |
-
"dev": true,
|
| 29277 |
"inBundle": true,
|
| 29278 |
"license": "MIT",
|
| 29279 |
"dependencies": {
|
|
@@ -29287,7 +29129,6 @@
|
|
| 29287 |
},
|
| 29288 |
"node_modules/npm/node_modules/strip-ansi": {
|
| 29289 |
"version": "6.0.1",
|
| 29290 |
-
"dev": true,
|
| 29291 |
"inBundle": true,
|
| 29292 |
"license": "MIT",
|
| 29293 |
"dependencies": {
|
|
@@ -29300,7 +29141,6 @@
|
|
| 29300 |
"node_modules/npm/node_modules/strip-ansi-cjs": {
|
| 29301 |
"name": "strip-ansi",
|
| 29302 |
"version": "6.0.1",
|
| 29303 |
-
"dev": true,
|
| 29304 |
"inBundle": true,
|
| 29305 |
"license": "MIT",
|
| 29306 |
"dependencies": {
|
|
@@ -29312,7 +29152,6 @@
|
|
| 29312 |
},
|
| 29313 |
"node_modules/npm/node_modules/supports-color": {
|
| 29314 |
"version": "9.4.0",
|
| 29315 |
-
"dev": true,
|
| 29316 |
"inBundle": true,
|
| 29317 |
"license": "MIT",
|
| 29318 |
"engines": {
|
|
@@ -29324,7 +29163,6 @@
|
|
| 29324 |
},
|
| 29325 |
"node_modules/npm/node_modules/tar": {
|
| 29326 |
"version": "6.2.1",
|
| 29327 |
-
"dev": true,
|
| 29328 |
"inBundle": true,
|
| 29329 |
"license": "ISC",
|
| 29330 |
"dependencies": {
|
|
@@ -29341,7 +29179,6 @@
|
|
| 29341 |
},
|
| 29342 |
"node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
|
| 29343 |
"version": "2.1.0",
|
| 29344 |
-
"dev": true,
|
| 29345 |
"inBundle": true,
|
| 29346 |
"license": "ISC",
|
| 29347 |
"dependencies": {
|
|
@@ -29353,7 +29190,6 @@
|
|
| 29353 |
},
|
| 29354 |
"node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
|
| 29355 |
"version": "3.3.6",
|
| 29356 |
-
"dev": true,
|
| 29357 |
"inBundle": true,
|
| 29358 |
"license": "ISC",
|
| 29359 |
"dependencies": {
|
|
@@ -29365,7 +29201,6 @@
|
|
| 29365 |
},
|
| 29366 |
"node_modules/npm/node_modules/tar/node_modules/minipass": {
|
| 29367 |
"version": "5.0.0",
|
| 29368 |
-
"dev": true,
|
| 29369 |
"inBundle": true,
|
| 29370 |
"license": "ISC",
|
| 29371 |
"engines": {
|
|
@@ -29374,19 +29209,16 @@
|
|
| 29374 |
},
|
| 29375 |
"node_modules/npm/node_modules/text-table": {
|
| 29376 |
"version": "0.2.0",
|
| 29377 |
-
"dev": true,
|
| 29378 |
"inBundle": true,
|
| 29379 |
"license": "MIT"
|
| 29380 |
},
|
| 29381 |
"node_modules/npm/node_modules/tiny-relative-date": {
|
| 29382 |
"version": "1.3.0",
|
| 29383 |
-
"dev": true,
|
| 29384 |
"inBundle": true,
|
| 29385 |
"license": "MIT"
|
| 29386 |
},
|
| 29387 |
"node_modules/npm/node_modules/treeverse": {
|
| 29388 |
"version": "3.0.0",
|
| 29389 |
-
"dev": true,
|
| 29390 |
"inBundle": true,
|
| 29391 |
"license": "ISC",
|
| 29392 |
"engines": {
|
|
@@ -29395,7 +29227,6 @@
|
|
| 29395 |
},
|
| 29396 |
"node_modules/npm/node_modules/tuf-js": {
|
| 29397 |
"version": "3.0.1",
|
| 29398 |
-
"dev": true,
|
| 29399 |
"inBundle": true,
|
| 29400 |
"license": "MIT",
|
| 29401 |
"dependencies": {
|
|
@@ -29409,7 +29240,6 @@
|
|
| 29409 |
},
|
| 29410 |
"node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": {
|
| 29411 |
"version": "3.0.1",
|
| 29412 |
-
"dev": true,
|
| 29413 |
"inBundle": true,
|
| 29414 |
"license": "MIT",
|
| 29415 |
"dependencies": {
|
|
@@ -29422,7 +29252,6 @@
|
|
| 29422 |
},
|
| 29423 |
"node_modules/npm/node_modules/unique-filename": {
|
| 29424 |
"version": "4.0.0",
|
| 29425 |
-
"dev": true,
|
| 29426 |
"inBundle": true,
|
| 29427 |
"license": "ISC",
|
| 29428 |
"dependencies": {
|
|
@@ -29434,7 +29263,6 @@
|
|
| 29434 |
},
|
| 29435 |
"node_modules/npm/node_modules/unique-slug": {
|
| 29436 |
"version": "5.0.0",
|
| 29437 |
-
"dev": true,
|
| 29438 |
"inBundle": true,
|
| 29439 |
"license": "ISC",
|
| 29440 |
"dependencies": {
|
|
@@ -29446,13 +29274,11 @@
|
|
| 29446 |
},
|
| 29447 |
"node_modules/npm/node_modules/util-deprecate": {
|
| 29448 |
"version": "1.0.2",
|
| 29449 |
-
"dev": true,
|
| 29450 |
"inBundle": true,
|
| 29451 |
"license": "MIT"
|
| 29452 |
},
|
| 29453 |
"node_modules/npm/node_modules/validate-npm-package-license": {
|
| 29454 |
"version": "3.0.4",
|
| 29455 |
-
"dev": true,
|
| 29456 |
"inBundle": true,
|
| 29457 |
"license": "Apache-2.0",
|
| 29458 |
"dependencies": {
|
|
@@ -29462,7 +29288,6 @@
|
|
| 29462 |
},
|
| 29463 |
"node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
|
| 29464 |
"version": "3.0.1",
|
| 29465 |
-
"dev": true,
|
| 29466 |
"inBundle": true,
|
| 29467 |
"license": "MIT",
|
| 29468 |
"dependencies": {
|
|
@@ -29472,7 +29297,6 @@
|
|
| 29472 |
},
|
| 29473 |
"node_modules/npm/node_modules/validate-npm-package-name": {
|
| 29474 |
"version": "6.0.0",
|
| 29475 |
-
"dev": true,
|
| 29476 |
"inBundle": true,
|
| 29477 |
"license": "ISC",
|
| 29478 |
"engines": {
|
|
@@ -29481,13 +29305,11 @@
|
|
| 29481 |
},
|
| 29482 |
"node_modules/npm/node_modules/walk-up-path": {
|
| 29483 |
"version": "3.0.1",
|
| 29484 |
-
"dev": true,
|
| 29485 |
"inBundle": true,
|
| 29486 |
"license": "ISC"
|
| 29487 |
},
|
| 29488 |
"node_modules/npm/node_modules/which": {
|
| 29489 |
"version": "5.0.0",
|
| 29490 |
-
"dev": true,
|
| 29491 |
"inBundle": true,
|
| 29492 |
"license": "ISC",
|
| 29493 |
"dependencies": {
|
|
@@ -29502,7 +29324,6 @@
|
|
| 29502 |
},
|
| 29503 |
"node_modules/npm/node_modules/which/node_modules/isexe": {
|
| 29504 |
"version": "3.1.1",
|
| 29505 |
-
"dev": true,
|
| 29506 |
"inBundle": true,
|
| 29507 |
"license": "ISC",
|
| 29508 |
"engines": {
|
|
@@ -29511,7 +29332,6 @@
|
|
| 29511 |
},
|
| 29512 |
"node_modules/npm/node_modules/wrap-ansi": {
|
| 29513 |
"version": "8.1.0",
|
| 29514 |
-
"dev": true,
|
| 29515 |
"inBundle": true,
|
| 29516 |
"license": "MIT",
|
| 29517 |
"dependencies": {
|
|
@@ -29529,7 +29349,6 @@
|
|
| 29529 |
"node_modules/npm/node_modules/wrap-ansi-cjs": {
|
| 29530 |
"name": "wrap-ansi",
|
| 29531 |
"version": "7.0.0",
|
| 29532 |
-
"dev": true,
|
| 29533 |
"inBundle": true,
|
| 29534 |
"license": "MIT",
|
| 29535 |
"dependencies": {
|
|
@@ -29546,7 +29365,6 @@
|
|
| 29546 |
},
|
| 29547 |
"node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
|
| 29548 |
"version": "4.3.0",
|
| 29549 |
-
"dev": true,
|
| 29550 |
"inBundle": true,
|
| 29551 |
"license": "MIT",
|
| 29552 |
"dependencies": {
|
|
@@ -29561,7 +29379,6 @@
|
|
| 29561 |
},
|
| 29562 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
|
| 29563 |
"version": "6.1.0",
|
| 29564 |
-
"dev": true,
|
| 29565 |
"inBundle": true,
|
| 29566 |
"license": "MIT",
|
| 29567 |
"engines": {
|
|
@@ -29573,13 +29390,11 @@
|
|
| 29573 |
},
|
| 29574 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
|
| 29575 |
"version": "9.2.2",
|
| 29576 |
-
"dev": true,
|
| 29577 |
"inBundle": true,
|
| 29578 |
"license": "MIT"
|
| 29579 |
},
|
| 29580 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
|
| 29581 |
"version": "5.1.2",
|
| 29582 |
-
"dev": true,
|
| 29583 |
"inBundle": true,
|
| 29584 |
"license": "MIT",
|
| 29585 |
"dependencies": {
|
|
@@ -29596,7 +29411,6 @@
|
|
| 29596 |
},
|
| 29597 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
|
| 29598 |
"version": "7.1.0",
|
| 29599 |
-
"dev": true,
|
| 29600 |
"inBundle": true,
|
| 29601 |
"license": "MIT",
|
| 29602 |
"dependencies": {
|
|
@@ -29611,7 +29425,6 @@
|
|
| 29611 |
},
|
| 29612 |
"node_modules/npm/node_modules/write-file-atomic": {
|
| 29613 |
"version": "6.0.0",
|
| 29614 |
-
"dev": true,
|
| 29615 |
"inBundle": true,
|
| 29616 |
"license": "ISC",
|
| 29617 |
"dependencies": {
|
|
@@ -29624,7 +29437,6 @@
|
|
| 29624 |
},
|
| 29625 |
"node_modules/npm/node_modules/yallist": {
|
| 29626 |
"version": "4.0.0",
|
| 29627 |
-
"dev": true,
|
| 29628 |
"inBundle": true,
|
| 29629 |
"license": "ISC"
|
| 29630 |
},
|
|
@@ -36154,6 +35966,15 @@
|
|
| 36154 |
"dev": true,
|
| 36155 |
"license": "0BSD"
|
| 36156 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36157 |
"node_modules/tailwindcss": {
|
| 36158 |
"version": "3.4.16",
|
| 36159 |
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz",
|
|
|
|
| 17 |
"@sentry/nextjs": "^8.43.0",
|
| 18 |
"@spotlightjs/spotlight": "^2.7.0",
|
| 19 |
"@t3-oss/env-nextjs": "^0.11.1",
|
| 20 |
+
"class-variance-authority": "^0.7.1",
|
| 21 |
+
"clsx": "^2.1.1",
|
| 22 |
"drizzle-orm": "^0.38.0",
|
| 23 |
+
"lucide-react": "^0.474.0",
|
| 24 |
"next": "^15.1.0",
|
| 25 |
"next-intl": "^3.26.0",
|
| 26 |
"pg": "^8.13.1",
|
|
|
|
| 29 |
"react": "19.0.0",
|
| 30 |
"react-dom": "19.0.0",
|
| 31 |
"react-hook-form": "^7.54.0",
|
| 32 |
+
"tailwind-merge": "^2.6.0",
|
| 33 |
"zod": "^3.24.0"
|
| 34 |
},
|
| 35 |
"devDependencies": {
|
|
|
|
| 13924 |
"integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==",
|
| 13925 |
"license": "MIT"
|
| 13926 |
},
|
| 13927 |
+
"node_modules/class-variance-authority": {
|
| 13928 |
+
"version": "0.7.1",
|
| 13929 |
+
"resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
|
| 13930 |
+
"integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
|
| 13931 |
+
"dependencies": {
|
| 13932 |
+
"clsx": "^2.1.1"
|
| 13933 |
+
},
|
| 13934 |
+
"funding": {
|
| 13935 |
+
"url": "https://polar.sh/cva"
|
| 13936 |
+
}
|
| 13937 |
+
},
|
| 13938 |
"node_modules/clean-css": {
|
| 13939 |
"version": "5.3.3",
|
| 13940 |
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
|
|
|
|
| 14258 |
"node": ">=0.8"
|
| 14259 |
}
|
| 14260 |
},
|
| 14261 |
+
"node_modules/clsx": {
|
| 14262 |
+
"version": "2.1.1",
|
| 14263 |
+
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
|
| 14264 |
+
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
|
| 14265 |
+
"engines": {
|
| 14266 |
+
"node": ">=6"
|
| 14267 |
+
}
|
| 14268 |
+
},
|
| 14269 |
"node_modules/co": {
|
| 14270 |
"version": "4.6.0",
|
| 14271 |
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
|
|
|
| 24815 |
"yallist": "^3.0.2"
|
| 24816 |
}
|
| 24817 |
},
|
| 24818 |
+
"node_modules/lucide-react": {
|
| 24819 |
+
"version": "0.474.0",
|
| 24820 |
+
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.474.0.tgz",
|
| 24821 |
+
"integrity": "sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA==",
|
| 24822 |
+
"peerDependencies": {
|
| 24823 |
+
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
| 24824 |
+
}
|
| 24825 |
+
},
|
| 24826 |
"node_modules/luxon": {
|
| 24827 |
"version": "3.3.0",
|
| 24828 |
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz",
|
|
|
|
| 27061 |
},
|
| 27062 |
"node_modules/npm/node_modules/@isaacs/cliui": {
|
| 27063 |
"version": "8.0.2",
|
|
|
|
| 27064 |
"inBundle": true,
|
| 27065 |
"license": "ISC",
|
| 27066 |
"dependencies": {
|
|
|
|
| 27077 |
},
|
| 27078 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
|
| 27079 |
"version": "6.1.0",
|
|
|
|
| 27080 |
"inBundle": true,
|
| 27081 |
"license": "MIT",
|
| 27082 |
"engines": {
|
|
|
|
| 27088 |
},
|
| 27089 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
|
| 27090 |
"version": "9.2.2",
|
|
|
|
| 27091 |
"inBundle": true,
|
| 27092 |
"license": "MIT"
|
| 27093 |
},
|
| 27094 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
|
| 27095 |
"version": "5.1.2",
|
|
|
|
| 27096 |
"inBundle": true,
|
| 27097 |
"license": "MIT",
|
| 27098 |
"dependencies": {
|
|
|
|
| 27109 |
},
|
| 27110 |
"node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
|
| 27111 |
"version": "7.1.0",
|
|
|
|
| 27112 |
"inBundle": true,
|
| 27113 |
"license": "MIT",
|
| 27114 |
"dependencies": {
|
|
|
|
| 27123 |
},
|
| 27124 |
"node_modules/npm/node_modules/@isaacs/fs-minipass": {
|
| 27125 |
"version": "4.0.1",
|
|
|
|
| 27126 |
"inBundle": true,
|
| 27127 |
"license": "ISC",
|
| 27128 |
"dependencies": {
|
|
|
|
| 27134 |
},
|
| 27135 |
"node_modules/npm/node_modules/@isaacs/string-locale-compare": {
|
| 27136 |
"version": "1.1.0",
|
|
|
|
| 27137 |
"inBundle": true,
|
| 27138 |
"license": "ISC"
|
| 27139 |
},
|
| 27140 |
"node_modules/npm/node_modules/@npmcli/agent": {
|
| 27141 |
"version": "3.0.0",
|
|
|
|
| 27142 |
"inBundle": true,
|
| 27143 |
"license": "ISC",
|
| 27144 |
"dependencies": {
|
|
|
|
| 27154 |
},
|
| 27155 |
"node_modules/npm/node_modules/@npmcli/arborist": {
|
| 27156 |
"version": "8.0.0",
|
|
|
|
| 27157 |
"inBundle": true,
|
| 27158 |
"license": "ISC",
|
| 27159 |
"dependencies": {
|
|
|
|
| 27202 |
},
|
| 27203 |
"node_modules/npm/node_modules/@npmcli/config": {
|
| 27204 |
"version": "9.0.0",
|
|
|
|
| 27205 |
"inBundle": true,
|
| 27206 |
"license": "ISC",
|
| 27207 |
"dependencies": {
|
|
|
|
| 27220 |
},
|
| 27221 |
"node_modules/npm/node_modules/@npmcli/fs": {
|
| 27222 |
"version": "4.0.0",
|
|
|
|
| 27223 |
"inBundle": true,
|
| 27224 |
"license": "ISC",
|
| 27225 |
"dependencies": {
|
|
|
|
| 27231 |
},
|
| 27232 |
"node_modules/npm/node_modules/@npmcli/git": {
|
| 27233 |
"version": "6.0.1",
|
|
|
|
| 27234 |
"inBundle": true,
|
| 27235 |
"license": "ISC",
|
| 27236 |
"dependencies": {
|
|
|
|
| 27250 |
},
|
| 27251 |
"node_modules/npm/node_modules/@npmcli/installed-package-contents": {
|
| 27252 |
"version": "3.0.0",
|
|
|
|
| 27253 |
"inBundle": true,
|
| 27254 |
"license": "ISC",
|
| 27255 |
"dependencies": {
|
|
|
|
| 27265 |
},
|
| 27266 |
"node_modules/npm/node_modules/@npmcli/map-workspaces": {
|
| 27267 |
"version": "4.0.2",
|
|
|
|
| 27268 |
"inBundle": true,
|
| 27269 |
"license": "ISC",
|
| 27270 |
"dependencies": {
|
|
|
|
| 27279 |
},
|
| 27280 |
"node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
|
| 27281 |
"version": "8.0.1",
|
|
|
|
| 27282 |
"inBundle": true,
|
| 27283 |
"license": "ISC",
|
| 27284 |
"dependencies": {
|
|
|
|
| 27294 |
},
|
| 27295 |
"node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": {
|
| 27296 |
"version": "20.0.0",
|
|
|
|
| 27297 |
"inBundle": true,
|
| 27298 |
"license": "ISC",
|
| 27299 |
"dependencies": {
|
|
|
|
| 27324 |
},
|
| 27325 |
"node_modules/npm/node_modules/@npmcli/name-from-folder": {
|
| 27326 |
"version": "3.0.0",
|
|
|
|
| 27327 |
"inBundle": true,
|
| 27328 |
"license": "ISC",
|
| 27329 |
"engines": {
|
|
|
|
| 27332 |
},
|
| 27333 |
"node_modules/npm/node_modules/@npmcli/node-gyp": {
|
| 27334 |
"version": "4.0.0",
|
|
|
|
| 27335 |
"inBundle": true,
|
| 27336 |
"license": "ISC",
|
| 27337 |
"engines": {
|
|
|
|
| 27340 |
},
|
| 27341 |
"node_modules/npm/node_modules/@npmcli/package-json": {
|
| 27342 |
"version": "6.1.0",
|
|
|
|
| 27343 |
"inBundle": true,
|
| 27344 |
"license": "ISC",
|
| 27345 |
"dependencies": {
|
|
|
|
| 27357 |
},
|
| 27358 |
"node_modules/npm/node_modules/@npmcli/promise-spawn": {
|
| 27359 |
"version": "8.0.2",
|
|
|
|
| 27360 |
"inBundle": true,
|
| 27361 |
"license": "ISC",
|
| 27362 |
"dependencies": {
|
|
|
|
| 27368 |
},
|
| 27369 |
"node_modules/npm/node_modules/@npmcli/query": {
|
| 27370 |
"version": "4.0.0",
|
|
|
|
| 27371 |
"inBundle": true,
|
| 27372 |
"license": "ISC",
|
| 27373 |
"dependencies": {
|
|
|
|
| 27379 |
},
|
| 27380 |
"node_modules/npm/node_modules/@npmcli/redact": {
|
| 27381 |
"version": "3.0.0",
|
|
|
|
| 27382 |
"inBundle": true,
|
| 27383 |
"license": "ISC",
|
| 27384 |
"engines": {
|
|
|
|
| 27387 |
},
|
| 27388 |
"node_modules/npm/node_modules/@npmcli/run-script": {
|
| 27389 |
"version": "9.0.2",
|
|
|
|
| 27390 |
"inBundle": true,
|
| 27391 |
"license": "ISC",
|
| 27392 |
"dependencies": {
|
|
|
|
| 27403 |
},
|
| 27404 |
"node_modules/npm/node_modules/@pkgjs/parseargs": {
|
| 27405 |
"version": "0.11.0",
|
|
|
|
| 27406 |
"inBundle": true,
|
| 27407 |
"license": "MIT",
|
|
|
|
| 27408 |
"engines": {
|
| 27409 |
"node": ">=14"
|
| 27410 |
}
|
| 27411 |
},
|
| 27412 |
"node_modules/npm/node_modules/@sigstore/protobuf-specs": {
|
| 27413 |
"version": "0.3.2",
|
|
|
|
| 27414 |
"inBundle": true,
|
| 27415 |
"license": "Apache-2.0",
|
| 27416 |
"engines": {
|
|
|
|
| 27419 |
},
|
| 27420 |
"node_modules/npm/node_modules/@sigstore/tuf": {
|
| 27421 |
"version": "3.0.0",
|
|
|
|
| 27422 |
"inBundle": true,
|
| 27423 |
"license": "Apache-2.0",
|
| 27424 |
"dependencies": {
|
|
|
|
| 27431 |
},
|
| 27432 |
"node_modules/npm/node_modules/@tufjs/canonical-json": {
|
| 27433 |
"version": "2.0.0",
|
|
|
|
| 27434 |
"inBundle": true,
|
| 27435 |
"license": "MIT",
|
| 27436 |
"engines": {
|
|
|
|
| 27439 |
},
|
| 27440 |
"node_modules/npm/node_modules/abbrev": {
|
| 27441 |
"version": "3.0.0",
|
|
|
|
| 27442 |
"inBundle": true,
|
| 27443 |
"license": "ISC",
|
| 27444 |
"engines": {
|
|
|
|
| 27447 |
},
|
| 27448 |
"node_modules/npm/node_modules/agent-base": {
|
| 27449 |
"version": "7.1.1",
|
|
|
|
| 27450 |
"inBundle": true,
|
| 27451 |
"license": "MIT",
|
| 27452 |
"dependencies": {
|
|
|
|
| 27458 |
},
|
| 27459 |
"node_modules/npm/node_modules/aggregate-error": {
|
| 27460 |
"version": "3.1.0",
|
|
|
|
| 27461 |
"inBundle": true,
|
| 27462 |
"license": "MIT",
|
| 27463 |
"dependencies": {
|
|
|
|
| 27470 |
},
|
| 27471 |
"node_modules/npm/node_modules/ansi-regex": {
|
| 27472 |
"version": "5.0.1",
|
|
|
|
| 27473 |
"inBundle": true,
|
| 27474 |
"license": "MIT",
|
| 27475 |
"engines": {
|
|
|
|
| 27478 |
},
|
| 27479 |
"node_modules/npm/node_modules/ansi-styles": {
|
| 27480 |
"version": "6.2.1",
|
|
|
|
| 27481 |
"inBundle": true,
|
| 27482 |
"license": "MIT",
|
| 27483 |
"engines": {
|
|
|
|
| 27489 |
},
|
| 27490 |
"node_modules/npm/node_modules/aproba": {
|
| 27491 |
"version": "2.0.0",
|
|
|
|
| 27492 |
"inBundle": true,
|
| 27493 |
"license": "ISC"
|
| 27494 |
},
|
| 27495 |
"node_modules/npm/node_modules/archy": {
|
| 27496 |
"version": "1.0.0",
|
|
|
|
| 27497 |
"inBundle": true,
|
| 27498 |
"license": "MIT"
|
| 27499 |
},
|
| 27500 |
"node_modules/npm/node_modules/balanced-match": {
|
| 27501 |
"version": "1.0.2",
|
|
|
|
| 27502 |
"inBundle": true,
|
| 27503 |
"license": "MIT"
|
| 27504 |
},
|
| 27505 |
"node_modules/npm/node_modules/bin-links": {
|
| 27506 |
"version": "5.0.0",
|
|
|
|
| 27507 |
"inBundle": true,
|
| 27508 |
"license": "ISC",
|
| 27509 |
"dependencies": {
|
|
|
|
| 27519 |
},
|
| 27520 |
"node_modules/npm/node_modules/binary-extensions": {
|
| 27521 |
"version": "2.3.0",
|
|
|
|
| 27522 |
"inBundle": true,
|
| 27523 |
"license": "MIT",
|
| 27524 |
"engines": {
|
|
|
|
| 27530 |
},
|
| 27531 |
"node_modules/npm/node_modules/brace-expansion": {
|
| 27532 |
"version": "2.0.1",
|
|
|
|
| 27533 |
"inBundle": true,
|
| 27534 |
"license": "MIT",
|
| 27535 |
"dependencies": {
|
|
|
|
| 27538 |
},
|
| 27539 |
"node_modules/npm/node_modules/cacache": {
|
| 27540 |
"version": "19.0.1",
|
|
|
|
| 27541 |
"inBundle": true,
|
| 27542 |
"license": "ISC",
|
| 27543 |
"dependencies": {
|
|
|
|
| 27560 |
},
|
| 27561 |
"node_modules/npm/node_modules/cacache/node_modules/chownr": {
|
| 27562 |
"version": "3.0.0",
|
|
|
|
| 27563 |
"inBundle": true,
|
| 27564 |
"license": "BlueOak-1.0.0",
|
| 27565 |
"engines": {
|
|
|
|
| 27568 |
},
|
| 27569 |
"node_modules/npm/node_modules/cacache/node_modules/minizlib": {
|
| 27570 |
"version": "3.0.1",
|
|
|
|
| 27571 |
"inBundle": true,
|
| 27572 |
"license": "MIT",
|
| 27573 |
"dependencies": {
|
|
|
|
| 27580 |
},
|
| 27581 |
"node_modules/npm/node_modules/cacache/node_modules/mkdirp": {
|
| 27582 |
"version": "3.0.1",
|
|
|
|
| 27583 |
"inBundle": true,
|
| 27584 |
"license": "MIT",
|
| 27585 |
"bin": {
|
|
|
|
| 27594 |
},
|
| 27595 |
"node_modules/npm/node_modules/cacache/node_modules/p-map": {
|
| 27596 |
"version": "7.0.2",
|
|
|
|
| 27597 |
"inBundle": true,
|
| 27598 |
"license": "MIT",
|
| 27599 |
"engines": {
|
|
|
|
| 27605 |
},
|
| 27606 |
"node_modules/npm/node_modules/cacache/node_modules/tar": {
|
| 27607 |
"version": "7.4.3",
|
|
|
|
| 27608 |
"inBundle": true,
|
| 27609 |
"license": "ISC",
|
| 27610 |
"dependencies": {
|
|
|
|
| 27621 |
},
|
| 27622 |
"node_modules/npm/node_modules/cacache/node_modules/yallist": {
|
| 27623 |
"version": "5.0.0",
|
|
|
|
| 27624 |
"inBundle": true,
|
| 27625 |
"license": "BlueOak-1.0.0",
|
| 27626 |
"engines": {
|
|
|
|
| 27629 |
},
|
| 27630 |
"node_modules/npm/node_modules/chalk": {
|
| 27631 |
"version": "5.3.0",
|
|
|
|
| 27632 |
"inBundle": true,
|
| 27633 |
"license": "MIT",
|
| 27634 |
"engines": {
|
|
|
|
| 27640 |
},
|
| 27641 |
"node_modules/npm/node_modules/chownr": {
|
| 27642 |
"version": "2.0.0",
|
|
|
|
| 27643 |
"inBundle": true,
|
| 27644 |
"license": "ISC",
|
| 27645 |
"engines": {
|
|
|
|
| 27648 |
},
|
| 27649 |
"node_modules/npm/node_modules/ci-info": {
|
| 27650 |
"version": "4.1.0",
|
|
|
|
| 27651 |
"funding": [
|
| 27652 |
{
|
| 27653 |
"type": "github",
|
|
|
|
| 27662 |
},
|
| 27663 |
"node_modules/npm/node_modules/cidr-regex": {
|
| 27664 |
"version": "4.1.1",
|
|
|
|
| 27665 |
"inBundle": true,
|
| 27666 |
"license": "BSD-2-Clause",
|
| 27667 |
"dependencies": {
|
|
|
|
| 27673 |
},
|
| 27674 |
"node_modules/npm/node_modules/clean-stack": {
|
| 27675 |
"version": "2.2.0",
|
|
|
|
| 27676 |
"inBundle": true,
|
| 27677 |
"license": "MIT",
|
| 27678 |
"engines": {
|
|
|
|
| 27681 |
},
|
| 27682 |
"node_modules/npm/node_modules/cli-columns": {
|
| 27683 |
"version": "4.0.0",
|
|
|
|
| 27684 |
"inBundle": true,
|
| 27685 |
"license": "MIT",
|
| 27686 |
"dependencies": {
|
|
|
|
| 27693 |
},
|
| 27694 |
"node_modules/npm/node_modules/cmd-shim": {
|
| 27695 |
"version": "7.0.0",
|
|
|
|
| 27696 |
"inBundle": true,
|
| 27697 |
"license": "ISC",
|
| 27698 |
"engines": {
|
|
|
|
| 27701 |
},
|
| 27702 |
"node_modules/npm/node_modules/color-convert": {
|
| 27703 |
"version": "2.0.1",
|
|
|
|
| 27704 |
"inBundle": true,
|
| 27705 |
"license": "MIT",
|
| 27706 |
"dependencies": {
|
|
|
|
| 27712 |
},
|
| 27713 |
"node_modules/npm/node_modules/color-name": {
|
| 27714 |
"version": "1.1.4",
|
|
|
|
| 27715 |
"inBundle": true,
|
| 27716 |
"license": "MIT"
|
| 27717 |
},
|
| 27718 |
"node_modules/npm/node_modules/common-ancestor-path": {
|
| 27719 |
"version": "1.0.1",
|
|
|
|
| 27720 |
"inBundle": true,
|
| 27721 |
"license": "ISC"
|
| 27722 |
},
|
| 27723 |
"node_modules/npm/node_modules/cross-spawn": {
|
| 27724 |
"version": "7.0.6",
|
|
|
|
| 27725 |
"inBundle": true,
|
| 27726 |
"license": "MIT",
|
| 27727 |
"dependencies": {
|
|
|
|
| 27735 |
},
|
| 27736 |
"node_modules/npm/node_modules/cross-spawn/node_modules/which": {
|
| 27737 |
"version": "2.0.2",
|
|
|
|
| 27738 |
"inBundle": true,
|
| 27739 |
"license": "ISC",
|
| 27740 |
"dependencies": {
|
|
|
|
| 27749 |
},
|
| 27750 |
"node_modules/npm/node_modules/cssesc": {
|
| 27751 |
"version": "3.0.0",
|
|
|
|
| 27752 |
"inBundle": true,
|
| 27753 |
"license": "MIT",
|
| 27754 |
"bin": {
|
|
|
|
| 27760 |
},
|
| 27761 |
"node_modules/npm/node_modules/debug": {
|
| 27762 |
"version": "4.3.7",
|
|
|
|
| 27763 |
"inBundle": true,
|
| 27764 |
"license": "MIT",
|
| 27765 |
"dependencies": {
|
|
|
|
| 27776 |
},
|
| 27777 |
"node_modules/npm/node_modules/diff": {
|
| 27778 |
"version": "5.2.0",
|
|
|
|
| 27779 |
"inBundle": true,
|
| 27780 |
"license": "BSD-3-Clause",
|
| 27781 |
"engines": {
|
|
|
|
| 27784 |
},
|
| 27785 |
"node_modules/npm/node_modules/eastasianwidth": {
|
| 27786 |
"version": "0.2.0",
|
|
|
|
| 27787 |
"inBundle": true,
|
| 27788 |
"license": "MIT"
|
| 27789 |
},
|
| 27790 |
"node_modules/npm/node_modules/emoji-regex": {
|
| 27791 |
"version": "8.0.0",
|
|
|
|
| 27792 |
"inBundle": true,
|
| 27793 |
"license": "MIT"
|
| 27794 |
},
|
| 27795 |
"node_modules/npm/node_modules/encoding": {
|
| 27796 |
"version": "0.1.13",
|
|
|
|
| 27797 |
"inBundle": true,
|
| 27798 |
"license": "MIT",
|
|
|
|
| 27799 |
"dependencies": {
|
| 27800 |
"iconv-lite": "^0.6.2"
|
| 27801 |
}
|
| 27802 |
},
|
| 27803 |
"node_modules/npm/node_modules/env-paths": {
|
| 27804 |
"version": "2.2.1",
|
|
|
|
| 27805 |
"inBundle": true,
|
| 27806 |
"license": "MIT",
|
| 27807 |
"engines": {
|
|
|
|
| 27810 |
},
|
| 27811 |
"node_modules/npm/node_modules/err-code": {
|
| 27812 |
"version": "2.0.3",
|
|
|
|
| 27813 |
"inBundle": true,
|
| 27814 |
"license": "MIT"
|
| 27815 |
},
|
| 27816 |
"node_modules/npm/node_modules/exponential-backoff": {
|
| 27817 |
"version": "3.1.1",
|
|
|
|
| 27818 |
"inBundle": true,
|
| 27819 |
"license": "Apache-2.0"
|
| 27820 |
},
|
| 27821 |
"node_modules/npm/node_modules/fastest-levenshtein": {
|
| 27822 |
"version": "1.0.16",
|
|
|
|
| 27823 |
"inBundle": true,
|
| 27824 |
"license": "MIT",
|
| 27825 |
"engines": {
|
|
|
|
| 27828 |
},
|
| 27829 |
"node_modules/npm/node_modules/foreground-child": {
|
| 27830 |
"version": "3.3.0",
|
|
|
|
| 27831 |
"inBundle": true,
|
| 27832 |
"license": "ISC",
|
| 27833 |
"dependencies": {
|
|
|
|
| 27843 |
},
|
| 27844 |
"node_modules/npm/node_modules/fs-minipass": {
|
| 27845 |
"version": "3.0.3",
|
|
|
|
| 27846 |
"inBundle": true,
|
| 27847 |
"license": "ISC",
|
| 27848 |
"dependencies": {
|
|
|
|
| 27854 |
},
|
| 27855 |
"node_modules/npm/node_modules/glob": {
|
| 27856 |
"version": "10.4.5",
|
|
|
|
| 27857 |
"inBundle": true,
|
| 27858 |
"license": "ISC",
|
| 27859 |
"dependencies": {
|
|
|
|
| 27873 |
},
|
| 27874 |
"node_modules/npm/node_modules/graceful-fs": {
|
| 27875 |
"version": "4.2.11",
|
|
|
|
| 27876 |
"inBundle": true,
|
| 27877 |
"license": "ISC"
|
| 27878 |
},
|
| 27879 |
"node_modules/npm/node_modules/hosted-git-info": {
|
| 27880 |
"version": "8.0.2",
|
|
|
|
| 27881 |
"inBundle": true,
|
| 27882 |
"license": "ISC",
|
| 27883 |
"dependencies": {
|
|
|
|
| 27889 |
},
|
| 27890 |
"node_modules/npm/node_modules/http-cache-semantics": {
|
| 27891 |
"version": "4.1.1",
|
|
|
|
| 27892 |
"inBundle": true,
|
| 27893 |
"license": "BSD-2-Clause"
|
| 27894 |
},
|
| 27895 |
"node_modules/npm/node_modules/http-proxy-agent": {
|
| 27896 |
"version": "7.0.2",
|
|
|
|
| 27897 |
"inBundle": true,
|
| 27898 |
"license": "MIT",
|
| 27899 |
"dependencies": {
|
|
|
|
| 27906 |
},
|
| 27907 |
"node_modules/npm/node_modules/https-proxy-agent": {
|
| 27908 |
"version": "7.0.5",
|
|
|
|
| 27909 |
"inBundle": true,
|
| 27910 |
"license": "MIT",
|
| 27911 |
"dependencies": {
|
|
|
|
| 27918 |
},
|
| 27919 |
"node_modules/npm/node_modules/iconv-lite": {
|
| 27920 |
"version": "0.6.3",
|
|
|
|
| 27921 |
"inBundle": true,
|
| 27922 |
"license": "MIT",
|
|
|
|
| 27923 |
"dependencies": {
|
| 27924 |
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 27925 |
},
|
|
|
|
| 27929 |
},
|
| 27930 |
"node_modules/npm/node_modules/ignore-walk": {
|
| 27931 |
"version": "7.0.0",
|
|
|
|
| 27932 |
"inBundle": true,
|
| 27933 |
"license": "ISC",
|
| 27934 |
"dependencies": {
|
|
|
|
| 27940 |
},
|
| 27941 |
"node_modules/npm/node_modules/imurmurhash": {
|
| 27942 |
"version": "0.1.4",
|
|
|
|
| 27943 |
"inBundle": true,
|
| 27944 |
"license": "MIT",
|
| 27945 |
"engines": {
|
|
|
|
| 27948 |
},
|
| 27949 |
"node_modules/npm/node_modules/indent-string": {
|
| 27950 |
"version": "4.0.0",
|
|
|
|
| 27951 |
"inBundle": true,
|
| 27952 |
"license": "MIT",
|
| 27953 |
"engines": {
|
|
|
|
| 27956 |
},
|
| 27957 |
"node_modules/npm/node_modules/ini": {
|
| 27958 |
"version": "5.0.0",
|
|
|
|
| 27959 |
"inBundle": true,
|
| 27960 |
"license": "ISC",
|
| 27961 |
"engines": {
|
|
|
|
| 27964 |
},
|
| 27965 |
"node_modules/npm/node_modules/init-package-json": {
|
| 27966 |
"version": "7.0.2",
|
|
|
|
| 27967 |
"inBundle": true,
|
| 27968 |
"license": "ISC",
|
| 27969 |
"dependencies": {
|
|
|
|
| 27981 |
},
|
| 27982 |
"node_modules/npm/node_modules/ip-address": {
|
| 27983 |
"version": "9.0.5",
|
|
|
|
| 27984 |
"inBundle": true,
|
| 27985 |
"license": "MIT",
|
| 27986 |
"dependencies": {
|
|
|
|
| 27993 |
},
|
| 27994 |
"node_modules/npm/node_modules/ip-regex": {
|
| 27995 |
"version": "5.0.0",
|
|
|
|
| 27996 |
"inBundle": true,
|
| 27997 |
"license": "MIT",
|
| 27998 |
"engines": {
|
|
|
|
| 28004 |
},
|
| 28005 |
"node_modules/npm/node_modules/is-cidr": {
|
| 28006 |
"version": "5.1.0",
|
|
|
|
| 28007 |
"inBundle": true,
|
| 28008 |
"license": "BSD-2-Clause",
|
| 28009 |
"dependencies": {
|
|
|
|
| 28015 |
},
|
| 28016 |
"node_modules/npm/node_modules/is-fullwidth-code-point": {
|
| 28017 |
"version": "3.0.0",
|
|
|
|
| 28018 |
"inBundle": true,
|
| 28019 |
"license": "MIT",
|
| 28020 |
"engines": {
|
|
|
|
| 28023 |
},
|
| 28024 |
"node_modules/npm/node_modules/isexe": {
|
| 28025 |
"version": "2.0.0",
|
|
|
|
| 28026 |
"inBundle": true,
|
| 28027 |
"license": "ISC"
|
| 28028 |
},
|
| 28029 |
"node_modules/npm/node_modules/jackspeak": {
|
| 28030 |
"version": "3.4.3",
|
|
|
|
| 28031 |
"inBundle": true,
|
| 28032 |
"license": "BlueOak-1.0.0",
|
| 28033 |
"dependencies": {
|
|
|
|
| 28042 |
},
|
| 28043 |
"node_modules/npm/node_modules/jsbn": {
|
| 28044 |
"version": "1.1.0",
|
|
|
|
| 28045 |
"inBundle": true,
|
| 28046 |
"license": "MIT"
|
| 28047 |
},
|
| 28048 |
"node_modules/npm/node_modules/json-parse-even-better-errors": {
|
| 28049 |
"version": "4.0.0",
|
|
|
|
| 28050 |
"inBundle": true,
|
| 28051 |
"license": "MIT",
|
| 28052 |
"engines": {
|
|
|
|
| 28055 |
},
|
| 28056 |
"node_modules/npm/node_modules/json-stringify-nice": {
|
| 28057 |
"version": "1.1.4",
|
|
|
|
| 28058 |
"inBundle": true,
|
| 28059 |
"license": "ISC",
|
| 28060 |
"funding": {
|
|
|
|
| 28063 |
},
|
| 28064 |
"node_modules/npm/node_modules/jsonparse": {
|
| 28065 |
"version": "1.3.1",
|
|
|
|
| 28066 |
"engines": [
|
| 28067 |
"node >= 0.2.0"
|
| 28068 |
],
|
|
|
|
| 28071 |
},
|
| 28072 |
"node_modules/npm/node_modules/just-diff": {
|
| 28073 |
"version": "6.0.2",
|
|
|
|
| 28074 |
"inBundle": true,
|
| 28075 |
"license": "MIT"
|
| 28076 |
},
|
| 28077 |
"node_modules/npm/node_modules/just-diff-apply": {
|
| 28078 |
"version": "5.5.0",
|
|
|
|
| 28079 |
"inBundle": true,
|
| 28080 |
"license": "MIT"
|
| 28081 |
},
|
| 28082 |
"node_modules/npm/node_modules/libnpmaccess": {
|
| 28083 |
"version": "9.0.0",
|
|
|
|
| 28084 |
"inBundle": true,
|
| 28085 |
"license": "ISC",
|
| 28086 |
"dependencies": {
|
|
|
|
| 28093 |
},
|
| 28094 |
"node_modules/npm/node_modules/libnpmdiff": {
|
| 28095 |
"version": "7.0.0",
|
|
|
|
| 28096 |
"inBundle": true,
|
| 28097 |
"license": "ISC",
|
| 28098 |
"dependencies": {
|
|
|
|
| 28111 |
},
|
| 28112 |
"node_modules/npm/node_modules/libnpmexec": {
|
| 28113 |
"version": "9.0.0",
|
|
|
|
| 28114 |
"inBundle": true,
|
| 28115 |
"license": "ISC",
|
| 28116 |
"dependencies": {
|
|
|
|
| 28131 |
},
|
| 28132 |
"node_modules/npm/node_modules/libnpmfund": {
|
| 28133 |
"version": "6.0.0",
|
|
|
|
| 28134 |
"inBundle": true,
|
| 28135 |
"license": "ISC",
|
| 28136 |
"dependencies": {
|
|
|
|
| 28142 |
},
|
| 28143 |
"node_modules/npm/node_modules/libnpmhook": {
|
| 28144 |
"version": "11.0.0",
|
|
|
|
| 28145 |
"inBundle": true,
|
| 28146 |
"license": "ISC",
|
| 28147 |
"dependencies": {
|
|
|
|
| 28154 |
},
|
| 28155 |
"node_modules/npm/node_modules/libnpmorg": {
|
| 28156 |
"version": "7.0.0",
|
|
|
|
| 28157 |
"inBundle": true,
|
| 28158 |
"license": "ISC",
|
| 28159 |
"dependencies": {
|
|
|
|
| 28166 |
},
|
| 28167 |
"node_modules/npm/node_modules/libnpmpack": {
|
| 28168 |
"version": "8.0.0",
|
|
|
|
| 28169 |
"inBundle": true,
|
| 28170 |
"license": "ISC",
|
| 28171 |
"dependencies": {
|
|
|
|
| 28180 |
},
|
| 28181 |
"node_modules/npm/node_modules/libnpmpublish": {
|
| 28182 |
"version": "10.0.1",
|
|
|
|
| 28183 |
"inBundle": true,
|
| 28184 |
"license": "ISC",
|
| 28185 |
"dependencies": {
|
|
|
|
| 28198 |
},
|
| 28199 |
"node_modules/npm/node_modules/libnpmsearch": {
|
| 28200 |
"version": "8.0.0",
|
|
|
|
| 28201 |
"inBundle": true,
|
| 28202 |
"license": "ISC",
|
| 28203 |
"dependencies": {
|
|
|
|
| 28209 |
},
|
| 28210 |
"node_modules/npm/node_modules/libnpmteam": {
|
| 28211 |
"version": "7.0.0",
|
|
|
|
| 28212 |
"inBundle": true,
|
| 28213 |
"license": "ISC",
|
| 28214 |
"dependencies": {
|
|
|
|
| 28221 |
},
|
| 28222 |
"node_modules/npm/node_modules/libnpmversion": {
|
| 28223 |
"version": "7.0.0",
|
|
|
|
| 28224 |
"inBundle": true,
|
| 28225 |
"license": "ISC",
|
| 28226 |
"dependencies": {
|
|
|
|
| 28236 |
},
|
| 28237 |
"node_modules/npm/node_modules/lru-cache": {
|
| 28238 |
"version": "10.4.3",
|
|
|
|
| 28239 |
"inBundle": true,
|
| 28240 |
"license": "ISC"
|
| 28241 |
},
|
| 28242 |
"node_modules/npm/node_modules/make-fetch-happen": {
|
| 28243 |
"version": "14.0.3",
|
|
|
|
| 28244 |
"inBundle": true,
|
| 28245 |
"license": "ISC",
|
| 28246 |
"dependencies": {
|
|
|
|
| 28262 |
},
|
| 28263 |
"node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": {
|
| 28264 |
"version": "1.0.0",
|
|
|
|
| 28265 |
"inBundle": true,
|
| 28266 |
"license": "MIT",
|
| 28267 |
"engines": {
|
|
|
|
| 28270 |
},
|
| 28271 |
"node_modules/npm/node_modules/minimatch": {
|
| 28272 |
"version": "9.0.5",
|
|
|
|
| 28273 |
"inBundle": true,
|
| 28274 |
"license": "ISC",
|
| 28275 |
"dependencies": {
|
|
|
|
| 28284 |
},
|
| 28285 |
"node_modules/npm/node_modules/minipass": {
|
| 28286 |
"version": "7.1.2",
|
|
|
|
| 28287 |
"inBundle": true,
|
| 28288 |
"license": "ISC",
|
| 28289 |
"engines": {
|
|
|
|
| 28292 |
},
|
| 28293 |
"node_modules/npm/node_modules/minipass-collect": {
|
| 28294 |
"version": "2.0.1",
|
|
|
|
| 28295 |
"inBundle": true,
|
| 28296 |
"license": "ISC",
|
| 28297 |
"dependencies": {
|
|
|
|
| 28303 |
},
|
| 28304 |
"node_modules/npm/node_modules/minipass-fetch": {
|
| 28305 |
"version": "4.0.0",
|
|
|
|
| 28306 |
"inBundle": true,
|
| 28307 |
"license": "MIT",
|
| 28308 |
"dependencies": {
|
|
|
|
| 28319 |
},
|
| 28320 |
"node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": {
|
| 28321 |
"version": "3.0.1",
|
|
|
|
| 28322 |
"inBundle": true,
|
| 28323 |
"license": "MIT",
|
| 28324 |
"dependencies": {
|
|
|
|
| 28331 |
},
|
| 28332 |
"node_modules/npm/node_modules/minipass-flush": {
|
| 28333 |
"version": "1.0.5",
|
|
|
|
| 28334 |
"inBundle": true,
|
| 28335 |
"license": "ISC",
|
| 28336 |
"dependencies": {
|
|
|
|
| 28342 |
},
|
| 28343 |
"node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
|
| 28344 |
"version": "3.3.6",
|
|
|
|
| 28345 |
"inBundle": true,
|
| 28346 |
"license": "ISC",
|
| 28347 |
"dependencies": {
|
|
|
|
| 28353 |
},
|
| 28354 |
"node_modules/npm/node_modules/minipass-pipeline": {
|
| 28355 |
"version": "1.2.4",
|
|
|
|
| 28356 |
"inBundle": true,
|
| 28357 |
"license": "ISC",
|
| 28358 |
"dependencies": {
|
|
|
|
| 28364 |
},
|
| 28365 |
"node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
|
| 28366 |
"version": "3.3.6",
|
|
|
|
| 28367 |
"inBundle": true,
|
| 28368 |
"license": "ISC",
|
| 28369 |
"dependencies": {
|
|
|
|
| 28375 |
},
|
| 28376 |
"node_modules/npm/node_modules/minipass-sized": {
|
| 28377 |
"version": "1.0.3",
|
|
|
|
| 28378 |
"inBundle": true,
|
| 28379 |
"license": "ISC",
|
| 28380 |
"dependencies": {
|
|
|
|
| 28386 |
},
|
| 28387 |
"node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
|
| 28388 |
"version": "3.3.6",
|
|
|
|
| 28389 |
"inBundle": true,
|
| 28390 |
"license": "ISC",
|
| 28391 |
"dependencies": {
|
|
|
|
| 28397 |
},
|
| 28398 |
"node_modules/npm/node_modules/minizlib": {
|
| 28399 |
"version": "2.1.2",
|
|
|
|
| 28400 |
"inBundle": true,
|
| 28401 |
"license": "MIT",
|
| 28402 |
"dependencies": {
|
|
|
|
| 28409 |
},
|
| 28410 |
"node_modules/npm/node_modules/minizlib/node_modules/minipass": {
|
| 28411 |
"version": "3.3.6",
|
|
|
|
| 28412 |
"inBundle": true,
|
| 28413 |
"license": "ISC",
|
| 28414 |
"dependencies": {
|
|
|
|
| 28420 |
},
|
| 28421 |
"node_modules/npm/node_modules/mkdirp": {
|
| 28422 |
"version": "1.0.4",
|
|
|
|
| 28423 |
"inBundle": true,
|
| 28424 |
"license": "MIT",
|
| 28425 |
"bin": {
|
|
|
|
| 28431 |
},
|
| 28432 |
"node_modules/npm/node_modules/ms": {
|
| 28433 |
"version": "2.1.3",
|
|
|
|
| 28434 |
"inBundle": true,
|
| 28435 |
"license": "MIT"
|
| 28436 |
},
|
| 28437 |
"node_modules/npm/node_modules/mute-stream": {
|
| 28438 |
"version": "2.0.0",
|
|
|
|
| 28439 |
"inBundle": true,
|
| 28440 |
"license": "ISC",
|
| 28441 |
"engines": {
|
|
|
|
| 28444 |
},
|
| 28445 |
"node_modules/npm/node_modules/node-gyp": {
|
| 28446 |
"version": "11.0.0",
|
|
|
|
| 28447 |
"inBundle": true,
|
| 28448 |
"license": "MIT",
|
| 28449 |
"dependencies": {
|
|
|
|
| 28467 |
},
|
| 28468 |
"node_modules/npm/node_modules/node-gyp/node_modules/chownr": {
|
| 28469 |
"version": "3.0.0",
|
|
|
|
| 28470 |
"inBundle": true,
|
| 28471 |
"license": "BlueOak-1.0.0",
|
| 28472 |
"engines": {
|
|
|
|
| 28475 |
},
|
| 28476 |
"node_modules/npm/node_modules/node-gyp/node_modules/minizlib": {
|
| 28477 |
"version": "3.0.1",
|
|
|
|
| 28478 |
"inBundle": true,
|
| 28479 |
"license": "MIT",
|
| 28480 |
"dependencies": {
|
|
|
|
| 28487 |
},
|
| 28488 |
"node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": {
|
| 28489 |
"version": "3.0.1",
|
|
|
|
| 28490 |
"inBundle": true,
|
| 28491 |
"license": "MIT",
|
| 28492 |
"bin": {
|
|
|
|
| 28501 |
},
|
| 28502 |
"node_modules/npm/node_modules/node-gyp/node_modules/tar": {
|
| 28503 |
"version": "7.4.3",
|
|
|
|
| 28504 |
"inBundle": true,
|
| 28505 |
"license": "ISC",
|
| 28506 |
"dependencies": {
|
|
|
|
| 28517 |
},
|
| 28518 |
"node_modules/npm/node_modules/node-gyp/node_modules/yallist": {
|
| 28519 |
"version": "5.0.0",
|
|
|
|
| 28520 |
"inBundle": true,
|
| 28521 |
"license": "BlueOak-1.0.0",
|
| 28522 |
"engines": {
|
|
|
|
| 28525 |
},
|
| 28526 |
"node_modules/npm/node_modules/nopt": {
|
| 28527 |
"version": "8.0.0",
|
|
|
|
| 28528 |
"inBundle": true,
|
| 28529 |
"license": "ISC",
|
| 28530 |
"dependencies": {
|
|
|
|
| 28539 |
},
|
| 28540 |
"node_modules/npm/node_modules/nopt/node_modules/abbrev": {
|
| 28541 |
"version": "2.0.0",
|
|
|
|
| 28542 |
"inBundle": true,
|
| 28543 |
"license": "ISC",
|
| 28544 |
"engines": {
|
|
|
|
| 28547 |
},
|
| 28548 |
"node_modules/npm/node_modules/normalize-package-data": {
|
| 28549 |
"version": "7.0.0",
|
|
|
|
| 28550 |
"inBundle": true,
|
| 28551 |
"license": "BSD-2-Clause",
|
| 28552 |
"dependencies": {
|
|
|
|
| 28560 |
},
|
| 28561 |
"node_modules/npm/node_modules/npm-audit-report": {
|
| 28562 |
"version": "6.0.0",
|
|
|
|
| 28563 |
"inBundle": true,
|
| 28564 |
"license": "ISC",
|
| 28565 |
"engines": {
|
|
|
|
| 28568 |
},
|
| 28569 |
"node_modules/npm/node_modules/npm-bundled": {
|
| 28570 |
"version": "4.0.0",
|
|
|
|
| 28571 |
"inBundle": true,
|
| 28572 |
"license": "ISC",
|
| 28573 |
"dependencies": {
|
|
|
|
| 28579 |
},
|
| 28580 |
"node_modules/npm/node_modules/npm-install-checks": {
|
| 28581 |
"version": "7.1.1",
|
|
|
|
| 28582 |
"inBundle": true,
|
| 28583 |
"license": "BSD-2-Clause",
|
| 28584 |
"dependencies": {
|
|
|
|
| 28590 |
},
|
| 28591 |
"node_modules/npm/node_modules/npm-normalize-package-bin": {
|
| 28592 |
"version": "4.0.0",
|
|
|
|
| 28593 |
"inBundle": true,
|
| 28594 |
"license": "ISC",
|
| 28595 |
"engines": {
|
|
|
|
| 28598 |
},
|
| 28599 |
"node_modules/npm/node_modules/npm-package-arg": {
|
| 28600 |
"version": "12.0.0",
|
|
|
|
| 28601 |
"inBundle": true,
|
| 28602 |
"license": "ISC",
|
| 28603 |
"dependencies": {
|
|
|
|
| 28612 |
},
|
| 28613 |
"node_modules/npm/node_modules/npm-packlist": {
|
| 28614 |
"version": "9.0.0",
|
|
|
|
| 28615 |
"inBundle": true,
|
| 28616 |
"license": "ISC",
|
| 28617 |
"dependencies": {
|
|
|
|
| 28623 |
},
|
| 28624 |
"node_modules/npm/node_modules/npm-pick-manifest": {
|
| 28625 |
"version": "10.0.0",
|
|
|
|
| 28626 |
"inBundle": true,
|
| 28627 |
"license": "ISC",
|
| 28628 |
"dependencies": {
|
|
|
|
| 28637 |
},
|
| 28638 |
"node_modules/npm/node_modules/npm-profile": {
|
| 28639 |
"version": "11.0.1",
|
|
|
|
| 28640 |
"inBundle": true,
|
| 28641 |
"license": "ISC",
|
| 28642 |
"dependencies": {
|
|
|
|
| 28649 |
},
|
| 28650 |
"node_modules/npm/node_modules/npm-registry-fetch": {
|
| 28651 |
"version": "18.0.2",
|
|
|
|
| 28652 |
"inBundle": true,
|
| 28653 |
"license": "ISC",
|
| 28654 |
"dependencies": {
|
|
|
|
| 28667 |
},
|
| 28668 |
"node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": {
|
| 28669 |
"version": "3.0.1",
|
|
|
|
| 28670 |
"inBundle": true,
|
| 28671 |
"license": "MIT",
|
| 28672 |
"dependencies": {
|
|
|
|
| 28679 |
},
|
| 28680 |
"node_modules/npm/node_modules/npm-user-validate": {
|
| 28681 |
"version": "3.0.0",
|
|
|
|
| 28682 |
"inBundle": true,
|
| 28683 |
"license": "BSD-2-Clause",
|
| 28684 |
"engines": {
|
|
|
|
| 28687 |
},
|
| 28688 |
"node_modules/npm/node_modules/p-map": {
|
| 28689 |
"version": "4.0.0",
|
|
|
|
| 28690 |
"inBundle": true,
|
| 28691 |
"license": "MIT",
|
| 28692 |
"dependencies": {
|
|
|
|
| 28701 |
},
|
| 28702 |
"node_modules/npm/node_modules/package-json-from-dist": {
|
| 28703 |
"version": "1.0.1",
|
|
|
|
| 28704 |
"inBundle": true,
|
| 28705 |
"license": "BlueOak-1.0.0"
|
| 28706 |
},
|
| 28707 |
"node_modules/npm/node_modules/pacote": {
|
| 28708 |
"version": "19.0.1",
|
|
|
|
| 28709 |
"inBundle": true,
|
| 28710 |
"license": "ISC",
|
| 28711 |
"dependencies": {
|
|
|
|
| 28736 |
},
|
| 28737 |
"node_modules/npm/node_modules/parse-conflict-json": {
|
| 28738 |
"version": "4.0.0",
|
|
|
|
| 28739 |
"inBundle": true,
|
| 28740 |
"license": "ISC",
|
| 28741 |
"dependencies": {
|
|
|
|
| 28749 |
},
|
| 28750 |
"node_modules/npm/node_modules/path-key": {
|
| 28751 |
"version": "3.1.1",
|
|
|
|
| 28752 |
"inBundle": true,
|
| 28753 |
"license": "MIT",
|
| 28754 |
"engines": {
|
|
|
|
| 28757 |
},
|
| 28758 |
"node_modules/npm/node_modules/path-scurry": {
|
| 28759 |
"version": "1.11.1",
|
|
|
|
| 28760 |
"inBundle": true,
|
| 28761 |
"license": "BlueOak-1.0.0",
|
| 28762 |
"dependencies": {
|
|
|
|
| 28772 |
},
|
| 28773 |
"node_modules/npm/node_modules/postcss-selector-parser": {
|
| 28774 |
"version": "6.1.2",
|
|
|
|
| 28775 |
"inBundle": true,
|
| 28776 |
"license": "MIT",
|
| 28777 |
"dependencies": {
|
|
|
|
| 28784 |
},
|
| 28785 |
"node_modules/npm/node_modules/proc-log": {
|
| 28786 |
"version": "5.0.0",
|
|
|
|
| 28787 |
"inBundle": true,
|
| 28788 |
"license": "ISC",
|
| 28789 |
"engines": {
|
|
|
|
| 28792 |
},
|
| 28793 |
"node_modules/npm/node_modules/proggy": {
|
| 28794 |
"version": "3.0.0",
|
|
|
|
| 28795 |
"inBundle": true,
|
| 28796 |
"license": "ISC",
|
| 28797 |
"engines": {
|
|
|
|
| 28800 |
},
|
| 28801 |
"node_modules/npm/node_modules/promise-all-reject-late": {
|
| 28802 |
"version": "1.0.1",
|
|
|
|
| 28803 |
"inBundle": true,
|
| 28804 |
"license": "ISC",
|
| 28805 |
"funding": {
|
|
|
|
| 28808 |
},
|
| 28809 |
"node_modules/npm/node_modules/promise-call-limit": {
|
| 28810 |
"version": "3.0.2",
|
|
|
|
| 28811 |
"inBundle": true,
|
| 28812 |
"license": "ISC",
|
| 28813 |
"funding": {
|
|
|
|
| 28816 |
},
|
| 28817 |
"node_modules/npm/node_modules/promise-inflight": {
|
| 28818 |
"version": "1.0.1",
|
|
|
|
| 28819 |
"inBundle": true,
|
| 28820 |
"license": "ISC"
|
| 28821 |
},
|
| 28822 |
"node_modules/npm/node_modules/promise-retry": {
|
| 28823 |
"version": "2.0.1",
|
|
|
|
| 28824 |
"inBundle": true,
|
| 28825 |
"license": "MIT",
|
| 28826 |
"dependencies": {
|
|
|
|
| 28833 |
},
|
| 28834 |
"node_modules/npm/node_modules/promzard": {
|
| 28835 |
"version": "2.0.0",
|
|
|
|
| 28836 |
"inBundle": true,
|
| 28837 |
"license": "ISC",
|
| 28838 |
"dependencies": {
|
|
|
|
| 28844 |
},
|
| 28845 |
"node_modules/npm/node_modules/qrcode-terminal": {
|
| 28846 |
"version": "0.12.0",
|
|
|
|
| 28847 |
"inBundle": true,
|
| 28848 |
"bin": {
|
| 28849 |
"qrcode-terminal": "bin/qrcode-terminal.js"
|
|
|
|
| 28851 |
},
|
| 28852 |
"node_modules/npm/node_modules/read": {
|
| 28853 |
"version": "4.0.0",
|
|
|
|
| 28854 |
"inBundle": true,
|
| 28855 |
"license": "ISC",
|
| 28856 |
"dependencies": {
|
|
|
|
| 28862 |
},
|
| 28863 |
"node_modules/npm/node_modules/read-cmd-shim": {
|
| 28864 |
"version": "5.0.0",
|
|
|
|
| 28865 |
"inBundle": true,
|
| 28866 |
"license": "ISC",
|
| 28867 |
"engines": {
|
|
|
|
| 28870 |
},
|
| 28871 |
"node_modules/npm/node_modules/read-package-json-fast": {
|
| 28872 |
"version": "4.0.0",
|
|
|
|
| 28873 |
"inBundle": true,
|
| 28874 |
"license": "ISC",
|
| 28875 |
"dependencies": {
|
|
|
|
| 28882 |
},
|
| 28883 |
"node_modules/npm/node_modules/retry": {
|
| 28884 |
"version": "0.12.0",
|
|
|
|
| 28885 |
"inBundle": true,
|
| 28886 |
"license": "MIT",
|
| 28887 |
"engines": {
|
|
|
|
| 28890 |
},
|
| 28891 |
"node_modules/npm/node_modules/rimraf": {
|
| 28892 |
"version": "5.0.10",
|
|
|
|
| 28893 |
"inBundle": true,
|
| 28894 |
"license": "ISC",
|
| 28895 |
"dependencies": {
|
|
|
|
| 28904 |
},
|
| 28905 |
"node_modules/npm/node_modules/safer-buffer": {
|
| 28906 |
"version": "2.1.2",
|
|
|
|
| 28907 |
"inBundle": true,
|
| 28908 |
+
"license": "MIT"
|
|
|
|
| 28909 |
},
|
| 28910 |
"node_modules/npm/node_modules/semver": {
|
| 28911 |
"version": "7.6.3",
|
|
|
|
| 28912 |
"inBundle": true,
|
| 28913 |
"license": "ISC",
|
| 28914 |
"bin": {
|
|
|
|
| 28920 |
},
|
| 28921 |
"node_modules/npm/node_modules/shebang-command": {
|
| 28922 |
"version": "2.0.0",
|
|
|
|
| 28923 |
"inBundle": true,
|
| 28924 |
"license": "MIT",
|
| 28925 |
"dependencies": {
|
|
|
|
| 28931 |
},
|
| 28932 |
"node_modules/npm/node_modules/shebang-regex": {
|
| 28933 |
"version": "3.0.0",
|
|
|
|
| 28934 |
"inBundle": true,
|
| 28935 |
"license": "MIT",
|
| 28936 |
"engines": {
|
|
|
|
| 28939 |
},
|
| 28940 |
"node_modules/npm/node_modules/signal-exit": {
|
| 28941 |
"version": "4.1.0",
|
|
|
|
| 28942 |
"inBundle": true,
|
| 28943 |
"license": "ISC",
|
| 28944 |
"engines": {
|
|
|
|
| 28950 |
},
|
| 28951 |
"node_modules/npm/node_modules/sigstore": {
|
| 28952 |
"version": "3.0.0",
|
|
|
|
| 28953 |
"inBundle": true,
|
| 28954 |
"license": "Apache-2.0",
|
| 28955 |
"dependencies": {
|
|
|
|
| 28966 |
},
|
| 28967 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": {
|
| 28968 |
"version": "3.0.0",
|
|
|
|
| 28969 |
"inBundle": true,
|
| 28970 |
"license": "Apache-2.0",
|
| 28971 |
"dependencies": {
|
|
|
|
| 28977 |
},
|
| 28978 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": {
|
| 28979 |
"version": "2.0.0",
|
|
|
|
| 28980 |
"inBundle": true,
|
| 28981 |
"license": "Apache-2.0",
|
| 28982 |
"engines": {
|
|
|
|
| 28985 |
},
|
| 28986 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": {
|
| 28987 |
"version": "3.0.0",
|
|
|
|
| 28988 |
"inBundle": true,
|
| 28989 |
"license": "Apache-2.0",
|
| 28990 |
"dependencies": {
|
|
|
|
| 29001 |
},
|
| 29002 |
"node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": {
|
| 29003 |
"version": "2.0.0",
|
|
|
|
| 29004 |
"inBundle": true,
|
| 29005 |
"license": "Apache-2.0",
|
| 29006 |
"dependencies": {
|
|
|
|
| 29014 |
},
|
| 29015 |
"node_modules/npm/node_modules/smart-buffer": {
|
| 29016 |
"version": "4.2.0",
|
|
|
|
| 29017 |
"inBundle": true,
|
| 29018 |
"license": "MIT",
|
| 29019 |
"engines": {
|
|
|
|
| 29023 |
},
|
| 29024 |
"node_modules/npm/node_modules/socks": {
|
| 29025 |
"version": "2.8.3",
|
|
|
|
| 29026 |
"inBundle": true,
|
| 29027 |
"license": "MIT",
|
| 29028 |
"dependencies": {
|
|
|
|
| 29036 |
},
|
| 29037 |
"node_modules/npm/node_modules/socks-proxy-agent": {
|
| 29038 |
"version": "8.0.4",
|
|
|
|
| 29039 |
"inBundle": true,
|
| 29040 |
"license": "MIT",
|
| 29041 |
"dependencies": {
|
|
|
|
| 29049 |
},
|
| 29050 |
"node_modules/npm/node_modules/spdx-correct": {
|
| 29051 |
"version": "3.2.0",
|
|
|
|
| 29052 |
"inBundle": true,
|
| 29053 |
"license": "Apache-2.0",
|
| 29054 |
"dependencies": {
|
|
|
|
| 29058 |
},
|
| 29059 |
"node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": {
|
| 29060 |
"version": "3.0.1",
|
|
|
|
| 29061 |
"inBundle": true,
|
| 29062 |
"license": "MIT",
|
| 29063 |
"dependencies": {
|
|
|
|
| 29067 |
},
|
| 29068 |
"node_modules/npm/node_modules/spdx-exceptions": {
|
| 29069 |
"version": "2.5.0",
|
|
|
|
| 29070 |
"inBundle": true,
|
| 29071 |
"license": "CC-BY-3.0"
|
| 29072 |
},
|
| 29073 |
"node_modules/npm/node_modules/spdx-expression-parse": {
|
| 29074 |
"version": "4.0.0",
|
|
|
|
| 29075 |
"inBundle": true,
|
| 29076 |
"license": "MIT",
|
| 29077 |
"dependencies": {
|
|
|
|
| 29081 |
},
|
| 29082 |
"node_modules/npm/node_modules/spdx-license-ids": {
|
| 29083 |
"version": "3.0.20",
|
|
|
|
| 29084 |
"inBundle": true,
|
| 29085 |
"license": "CC0-1.0"
|
| 29086 |
},
|
| 29087 |
"node_modules/npm/node_modules/sprintf-js": {
|
| 29088 |
"version": "1.1.3",
|
|
|
|
| 29089 |
"inBundle": true,
|
| 29090 |
"license": "BSD-3-Clause"
|
| 29091 |
},
|
| 29092 |
"node_modules/npm/node_modules/ssri": {
|
| 29093 |
"version": "12.0.0",
|
|
|
|
| 29094 |
"inBundle": true,
|
| 29095 |
"license": "ISC",
|
| 29096 |
"dependencies": {
|
|
|
|
| 29102 |
},
|
| 29103 |
"node_modules/npm/node_modules/string-width": {
|
| 29104 |
"version": "4.2.3",
|
|
|
|
| 29105 |
"inBundle": true,
|
| 29106 |
"license": "MIT",
|
| 29107 |
"dependencies": {
|
|
|
|
| 29116 |
"node_modules/npm/node_modules/string-width-cjs": {
|
| 29117 |
"name": "string-width",
|
| 29118 |
"version": "4.2.3",
|
|
|
|
| 29119 |
"inBundle": true,
|
| 29120 |
"license": "MIT",
|
| 29121 |
"dependencies": {
|
|
|
|
| 29129 |
},
|
| 29130 |
"node_modules/npm/node_modules/strip-ansi": {
|
| 29131 |
"version": "6.0.1",
|
|
|
|
| 29132 |
"inBundle": true,
|
| 29133 |
"license": "MIT",
|
| 29134 |
"dependencies": {
|
|
|
|
| 29141 |
"node_modules/npm/node_modules/strip-ansi-cjs": {
|
| 29142 |
"name": "strip-ansi",
|
| 29143 |
"version": "6.0.1",
|
|
|
|
| 29144 |
"inBundle": true,
|
| 29145 |
"license": "MIT",
|
| 29146 |
"dependencies": {
|
|
|
|
| 29152 |
},
|
| 29153 |
"node_modules/npm/node_modules/supports-color": {
|
| 29154 |
"version": "9.4.0",
|
|
|
|
| 29155 |
"inBundle": true,
|
| 29156 |
"license": "MIT",
|
| 29157 |
"engines": {
|
|
|
|
| 29163 |
},
|
| 29164 |
"node_modules/npm/node_modules/tar": {
|
| 29165 |
"version": "6.2.1",
|
|
|
|
| 29166 |
"inBundle": true,
|
| 29167 |
"license": "ISC",
|
| 29168 |
"dependencies": {
|
|
|
|
| 29179 |
},
|
| 29180 |
"node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
|
| 29181 |
"version": "2.1.0",
|
|
|
|
| 29182 |
"inBundle": true,
|
| 29183 |
"license": "ISC",
|
| 29184 |
"dependencies": {
|
|
|
|
| 29190 |
},
|
| 29191 |
"node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
|
| 29192 |
"version": "3.3.6",
|
|
|
|
| 29193 |
"inBundle": true,
|
| 29194 |
"license": "ISC",
|
| 29195 |
"dependencies": {
|
|
|
|
| 29201 |
},
|
| 29202 |
"node_modules/npm/node_modules/tar/node_modules/minipass": {
|
| 29203 |
"version": "5.0.0",
|
|
|
|
| 29204 |
"inBundle": true,
|
| 29205 |
"license": "ISC",
|
| 29206 |
"engines": {
|
|
|
|
| 29209 |
},
|
| 29210 |
"node_modules/npm/node_modules/text-table": {
|
| 29211 |
"version": "0.2.0",
|
|
|
|
| 29212 |
"inBundle": true,
|
| 29213 |
"license": "MIT"
|
| 29214 |
},
|
| 29215 |
"node_modules/npm/node_modules/tiny-relative-date": {
|
| 29216 |
"version": "1.3.0",
|
|
|
|
| 29217 |
"inBundle": true,
|
| 29218 |
"license": "MIT"
|
| 29219 |
},
|
| 29220 |
"node_modules/npm/node_modules/treeverse": {
|
| 29221 |
"version": "3.0.0",
|
|
|
|
| 29222 |
"inBundle": true,
|
| 29223 |
"license": "ISC",
|
| 29224 |
"engines": {
|
|
|
|
| 29227 |
},
|
| 29228 |
"node_modules/npm/node_modules/tuf-js": {
|
| 29229 |
"version": "3.0.1",
|
|
|
|
| 29230 |
"inBundle": true,
|
| 29231 |
"license": "MIT",
|
| 29232 |
"dependencies": {
|
|
|
|
| 29240 |
},
|
| 29241 |
"node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": {
|
| 29242 |
"version": "3.0.1",
|
|
|
|
| 29243 |
"inBundle": true,
|
| 29244 |
"license": "MIT",
|
| 29245 |
"dependencies": {
|
|
|
|
| 29252 |
},
|
| 29253 |
"node_modules/npm/node_modules/unique-filename": {
|
| 29254 |
"version": "4.0.0",
|
|
|
|
| 29255 |
"inBundle": true,
|
| 29256 |
"license": "ISC",
|
| 29257 |
"dependencies": {
|
|
|
|
| 29263 |
},
|
| 29264 |
"node_modules/npm/node_modules/unique-slug": {
|
| 29265 |
"version": "5.0.0",
|
|
|
|
| 29266 |
"inBundle": true,
|
| 29267 |
"license": "ISC",
|
| 29268 |
"dependencies": {
|
|
|
|
| 29274 |
},
|
| 29275 |
"node_modules/npm/node_modules/util-deprecate": {
|
| 29276 |
"version": "1.0.2",
|
|
|
|
| 29277 |
"inBundle": true,
|
| 29278 |
"license": "MIT"
|
| 29279 |
},
|
| 29280 |
"node_modules/npm/node_modules/validate-npm-package-license": {
|
| 29281 |
"version": "3.0.4",
|
|
|
|
| 29282 |
"inBundle": true,
|
| 29283 |
"license": "Apache-2.0",
|
| 29284 |
"dependencies": {
|
|
|
|
| 29288 |
},
|
| 29289 |
"node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": {
|
| 29290 |
"version": "3.0.1",
|
|
|
|
| 29291 |
"inBundle": true,
|
| 29292 |
"license": "MIT",
|
| 29293 |
"dependencies": {
|
|
|
|
| 29297 |
},
|
| 29298 |
"node_modules/npm/node_modules/validate-npm-package-name": {
|
| 29299 |
"version": "6.0.0",
|
|
|
|
| 29300 |
"inBundle": true,
|
| 29301 |
"license": "ISC",
|
| 29302 |
"engines": {
|
|
|
|
| 29305 |
},
|
| 29306 |
"node_modules/npm/node_modules/walk-up-path": {
|
| 29307 |
"version": "3.0.1",
|
|
|
|
| 29308 |
"inBundle": true,
|
| 29309 |
"license": "ISC"
|
| 29310 |
},
|
| 29311 |
"node_modules/npm/node_modules/which": {
|
| 29312 |
"version": "5.0.0",
|
|
|
|
| 29313 |
"inBundle": true,
|
| 29314 |
"license": "ISC",
|
| 29315 |
"dependencies": {
|
|
|
|
| 29324 |
},
|
| 29325 |
"node_modules/npm/node_modules/which/node_modules/isexe": {
|
| 29326 |
"version": "3.1.1",
|
|
|
|
| 29327 |
"inBundle": true,
|
| 29328 |
"license": "ISC",
|
| 29329 |
"engines": {
|
|
|
|
| 29332 |
},
|
| 29333 |
"node_modules/npm/node_modules/wrap-ansi": {
|
| 29334 |
"version": "8.1.0",
|
|
|
|
| 29335 |
"inBundle": true,
|
| 29336 |
"license": "MIT",
|
| 29337 |
"dependencies": {
|
|
|
|
| 29349 |
"node_modules/npm/node_modules/wrap-ansi-cjs": {
|
| 29350 |
"name": "wrap-ansi",
|
| 29351 |
"version": "7.0.0",
|
|
|
|
| 29352 |
"inBundle": true,
|
| 29353 |
"license": "MIT",
|
| 29354 |
"dependencies": {
|
|
|
|
| 29365 |
},
|
| 29366 |
"node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
|
| 29367 |
"version": "4.3.0",
|
|
|
|
| 29368 |
"inBundle": true,
|
| 29369 |
"license": "MIT",
|
| 29370 |
"dependencies": {
|
|
|
|
| 29379 |
},
|
| 29380 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
|
| 29381 |
"version": "6.1.0",
|
|
|
|
| 29382 |
"inBundle": true,
|
| 29383 |
"license": "MIT",
|
| 29384 |
"engines": {
|
|
|
|
| 29390 |
},
|
| 29391 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
|
| 29392 |
"version": "9.2.2",
|
|
|
|
| 29393 |
"inBundle": true,
|
| 29394 |
"license": "MIT"
|
| 29395 |
},
|
| 29396 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
|
| 29397 |
"version": "5.1.2",
|
|
|
|
| 29398 |
"inBundle": true,
|
| 29399 |
"license": "MIT",
|
| 29400 |
"dependencies": {
|
|
|
|
| 29411 |
},
|
| 29412 |
"node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
|
| 29413 |
"version": "7.1.0",
|
|
|
|
| 29414 |
"inBundle": true,
|
| 29415 |
"license": "MIT",
|
| 29416 |
"dependencies": {
|
|
|
|
| 29425 |
},
|
| 29426 |
"node_modules/npm/node_modules/write-file-atomic": {
|
| 29427 |
"version": "6.0.0",
|
|
|
|
| 29428 |
"inBundle": true,
|
| 29429 |
"license": "ISC",
|
| 29430 |
"dependencies": {
|
|
|
|
| 29437 |
},
|
| 29438 |
"node_modules/npm/node_modules/yallist": {
|
| 29439 |
"version": "4.0.0",
|
|
|
|
| 29440 |
"inBundle": true,
|
| 29441 |
"license": "ISC"
|
| 29442 |
},
|
|
|
|
| 35966 |
"dev": true,
|
| 35967 |
"license": "0BSD"
|
| 35968 |
},
|
| 35969 |
+
"node_modules/tailwind-merge": {
|
| 35970 |
+
"version": "2.6.0",
|
| 35971 |
+
"resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
|
| 35972 |
+
"integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==",
|
| 35973 |
+
"funding": {
|
| 35974 |
+
"type": "github",
|
| 35975 |
+
"url": "https://github.com/sponsors/dcastil"
|
| 35976 |
+
}
|
| 35977 |
+
},
|
| 35978 |
"node_modules/tailwindcss": {
|
| 35979 |
"version": "3.4.16",
|
| 35980 |
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz",
|
package.json
CHANGED
|
@@ -36,7 +36,10 @@
|
|
| 36 |
"@sentry/nextjs": "^8.43.0",
|
| 37 |
"@spotlightjs/spotlight": "^2.7.0",
|
| 38 |
"@t3-oss/env-nextjs": "^0.11.1",
|
|
|
|
|
|
|
| 39 |
"drizzle-orm": "^0.38.0",
|
|
|
|
| 40 |
"next": "^15.1.0",
|
| 41 |
"next-intl": "^3.26.0",
|
| 42 |
"pg": "^8.13.1",
|
|
@@ -45,6 +48,7 @@
|
|
| 45 |
"react": "19.0.0",
|
| 46 |
"react-dom": "19.0.0",
|
| 47 |
"react-hook-form": "^7.54.0",
|
|
|
|
| 48 |
"zod": "^3.24.0"
|
| 49 |
},
|
| 50 |
"devDependencies": {
|
|
|
|
| 36 |
"@sentry/nextjs": "^8.43.0",
|
| 37 |
"@spotlightjs/spotlight": "^2.7.0",
|
| 38 |
"@t3-oss/env-nextjs": "^0.11.1",
|
| 39 |
+
"class-variance-authority": "^0.7.1",
|
| 40 |
+
"clsx": "^2.1.1",
|
| 41 |
"drizzle-orm": "^0.38.0",
|
| 42 |
+
"lucide-react": "^0.474.0",
|
| 43 |
"next": "^15.1.0",
|
| 44 |
"next-intl": "^3.26.0",
|
| 45 |
"pg": "^8.13.1",
|
|
|
|
| 48 |
"react": "19.0.0",
|
| 49 |
"react-dom": "19.0.0",
|
| 50 |
"react-hook-form": "^7.54.0",
|
| 51 |
+
"tailwind-merge": "^2.6.0",
|
| 52 |
"zod": "^3.24.0"
|
| 53 |
},
|
| 54 |
"devDependencies": {
|
src/app/[locale]/(auth)/(center)/layout.tsx
DELETED
|
@@ -1,15 +0,0 @@
|
|
| 1 |
-
import { setRequestLocale } from 'next-intl/server';
|
| 2 |
-
|
| 3 |
-
export default async function CenteredLayout(props: {
|
| 4 |
-
children: React.ReactNode;
|
| 5 |
-
params: Promise<{ locale: string }>;
|
| 6 |
-
}) {
|
| 7 |
-
const { locale } = await props.params;
|
| 8 |
-
setRequestLocale(locale);
|
| 9 |
-
|
| 10 |
-
return (
|
| 11 |
-
<div className="flex min-h-screen items-center justify-center">
|
| 12 |
-
{props.children}
|
| 13 |
-
</div>
|
| 14 |
-
);
|
| 15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/(center)/sign-in/[[...sign-in]]/page.tsx
DELETED
|
@@ -1,29 +0,0 @@
|
|
| 1 |
-
import { getI18nPath } from '@/utils/Helpers';
|
| 2 |
-
import { SignIn } from '@clerk/nextjs';
|
| 3 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 4 |
-
|
| 5 |
-
type ISignInPageProps = {
|
| 6 |
-
params: Promise<{ locale: string }>;
|
| 7 |
-
};
|
| 8 |
-
|
| 9 |
-
export async function generateMetadata(props: ISignInPageProps) {
|
| 10 |
-
const { locale } = await props.params;
|
| 11 |
-
const t = await getTranslations({
|
| 12 |
-
locale,
|
| 13 |
-
namespace: 'SignIn',
|
| 14 |
-
});
|
| 15 |
-
|
| 16 |
-
return {
|
| 17 |
-
title: t('meta_title'),
|
| 18 |
-
description: t('meta_description'),
|
| 19 |
-
};
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
export default async function SignInPage(props: ISignInPageProps) {
|
| 23 |
-
const { locale } = await props.params;
|
| 24 |
-
setRequestLocale(locale);
|
| 25 |
-
|
| 26 |
-
return (
|
| 27 |
-
<SignIn path={getI18nPath('/sign-in', locale)} />
|
| 28 |
-
);
|
| 29 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/(center)/sign-up/[[...sign-up]]/page.tsx
DELETED
|
@@ -1,29 +0,0 @@
|
|
| 1 |
-
import { getI18nPath } from '@/utils/Helpers';
|
| 2 |
-
import { SignUp } from '@clerk/nextjs';
|
| 3 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 4 |
-
|
| 5 |
-
type ISignUpPageProps = {
|
| 6 |
-
params: Promise<{ locale: string }>;
|
| 7 |
-
};
|
| 8 |
-
|
| 9 |
-
export async function generateMetadata(props: ISignUpPageProps) {
|
| 10 |
-
const { locale } = await props.params;
|
| 11 |
-
const t = await getTranslations({
|
| 12 |
-
locale,
|
| 13 |
-
namespace: 'SignUp',
|
| 14 |
-
});
|
| 15 |
-
|
| 16 |
-
return {
|
| 17 |
-
title: t('meta_title'),
|
| 18 |
-
description: t('meta_description'),
|
| 19 |
-
};
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
export default async function SignUpPage(props: ISignUpPageProps) {
|
| 23 |
-
const { locale } = await props.params;
|
| 24 |
-
setRequestLocale(locale);
|
| 25 |
-
|
| 26 |
-
return (
|
| 27 |
-
<SignUp path={getI18nPath('/sign-up', locale)} />
|
| 28 |
-
);
|
| 29 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/dashboard/layout.tsx
DELETED
|
@@ -1,59 +0,0 @@
|
|
| 1 |
-
import { LocaleSwitcher } from '@/components/LocaleSwitcher';
|
| 2 |
-
import { BaseTemplate } from '@/templates/BaseTemplate';
|
| 3 |
-
import { SignOutButton } from '@clerk/nextjs';
|
| 4 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 5 |
-
import Link from 'next/link';
|
| 6 |
-
|
| 7 |
-
export default async function DashboardLayout(props: {
|
| 8 |
-
children: React.ReactNode;
|
| 9 |
-
params: Promise<{ locale: string }>;
|
| 10 |
-
}) {
|
| 11 |
-
const { locale } = await props.params;
|
| 12 |
-
setRequestLocale(locale);
|
| 13 |
-
const t = await getTranslations({
|
| 14 |
-
locale,
|
| 15 |
-
namespace: 'DashboardLayout',
|
| 16 |
-
});
|
| 17 |
-
|
| 18 |
-
return (
|
| 19 |
-
<BaseTemplate
|
| 20 |
-
leftNav={(
|
| 21 |
-
<>
|
| 22 |
-
<li>
|
| 23 |
-
<Link
|
| 24 |
-
href="/dashboard/"
|
| 25 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 26 |
-
>
|
| 27 |
-
{t('dashboard_link')}
|
| 28 |
-
</Link>
|
| 29 |
-
</li>
|
| 30 |
-
<li>
|
| 31 |
-
<Link
|
| 32 |
-
href="/dashboard/user-profile/"
|
| 33 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 34 |
-
>
|
| 35 |
-
{t('user_profile_link')}
|
| 36 |
-
</Link>
|
| 37 |
-
</li>
|
| 38 |
-
</>
|
| 39 |
-
)}
|
| 40 |
-
rightNav={(
|
| 41 |
-
<>
|
| 42 |
-
<li>
|
| 43 |
-
<SignOutButton>
|
| 44 |
-
<button className="border-none text-gray-700 hover:text-gray-900" type="button">
|
| 45 |
-
{t('sign_out')}
|
| 46 |
-
</button>
|
| 47 |
-
</SignOutButton>
|
| 48 |
-
</li>
|
| 49 |
-
|
| 50 |
-
<li>
|
| 51 |
-
<LocaleSwitcher />
|
| 52 |
-
</li>
|
| 53 |
-
</>
|
| 54 |
-
)}
|
| 55 |
-
>
|
| 56 |
-
{props.children}
|
| 57 |
-
</BaseTemplate>
|
| 58 |
-
);
|
| 59 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/dashboard/page.tsx
DELETED
|
@@ -1,24 +0,0 @@
|
|
| 1 |
-
import { Hello } from '@/components/Hello';
|
| 2 |
-
import { getTranslations } from 'next-intl/server';
|
| 3 |
-
|
| 4 |
-
export async function generateMetadata(props: {
|
| 5 |
-
params: Promise<{ locale: string }>;
|
| 6 |
-
}) {
|
| 7 |
-
const { locale } = await props.params;
|
| 8 |
-
const t = await getTranslations({
|
| 9 |
-
locale,
|
| 10 |
-
namespace: 'Dashboard',
|
| 11 |
-
});
|
| 12 |
-
|
| 13 |
-
return {
|
| 14 |
-
title: t('meta_title'),
|
| 15 |
-
};
|
| 16 |
-
}
|
| 17 |
-
|
| 18 |
-
export default function Dashboard() {
|
| 19 |
-
return (
|
| 20 |
-
<div className="py-5 [&_p]:my-6">
|
| 21 |
-
<Hello />
|
| 22 |
-
</div>
|
| 23 |
-
);
|
| 24 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/dashboard/user-profile/[[...user-profile]]/page.tsx
DELETED
|
@@ -1,32 +0,0 @@
|
|
| 1 |
-
import { getI18nPath } from '@/utils/Helpers';
|
| 2 |
-
import { UserProfile } from '@clerk/nextjs';
|
| 3 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 4 |
-
|
| 5 |
-
type IUserProfilePageProps = {
|
| 6 |
-
params: Promise<{ locale: string }>;
|
| 7 |
-
};
|
| 8 |
-
|
| 9 |
-
export async function generateMetadata(props: IUserProfilePageProps) {
|
| 10 |
-
const { locale } = await props.params;
|
| 11 |
-
const t = await getTranslations({
|
| 12 |
-
locale,
|
| 13 |
-
namespace: 'UserProfile',
|
| 14 |
-
});
|
| 15 |
-
|
| 16 |
-
return {
|
| 17 |
-
title: t('meta_title'),
|
| 18 |
-
};
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
-
export default async function UserProfilePage(props: IUserProfilePageProps) {
|
| 22 |
-
const { locale } = await props.params;
|
| 23 |
-
setRequestLocale(locale);
|
| 24 |
-
|
| 25 |
-
return (
|
| 26 |
-
<div className="my-6 -ml-16">
|
| 27 |
-
<UserProfile
|
| 28 |
-
path={getI18nPath('/dashboard/user-profile', locale)}
|
| 29 |
-
/>
|
| 30 |
-
</div>
|
| 31 |
-
);
|
| 32 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(auth)/layout.tsx
DELETED
|
@@ -1,41 +0,0 @@
|
|
| 1 |
-
import { routing } from '@/libs/i18nNavigation';
|
| 2 |
-
import { enUS, frFR } from '@clerk/localizations';
|
| 3 |
-
import { ClerkProvider } from '@clerk/nextjs';
|
| 4 |
-
import { setRequestLocale } from 'next-intl/server';
|
| 5 |
-
|
| 6 |
-
export default async function AuthLayout(props: {
|
| 7 |
-
children: React.ReactNode;
|
| 8 |
-
params: Promise<{ locale: string }>;
|
| 9 |
-
}) {
|
| 10 |
-
const { locale } = await props.params;
|
| 11 |
-
setRequestLocale(locale);
|
| 12 |
-
let clerkLocale = enUS;
|
| 13 |
-
let signInUrl = '/sign-in';
|
| 14 |
-
let signUpUrl = '/sign-up';
|
| 15 |
-
let dashboardUrl = '/dashboard';
|
| 16 |
-
let afterSignOutUrl = '/';
|
| 17 |
-
|
| 18 |
-
if (locale === 'fr') {
|
| 19 |
-
clerkLocale = frFR;
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
if (locale !== routing.defaultLocale) {
|
| 23 |
-
signInUrl = `/${locale}${signInUrl}`;
|
| 24 |
-
signUpUrl = `/${locale}${signUpUrl}`;
|
| 25 |
-
dashboardUrl = `/${locale}${dashboardUrl}`;
|
| 26 |
-
afterSignOutUrl = `/${locale}${afterSignOutUrl}`;
|
| 27 |
-
}
|
| 28 |
-
|
| 29 |
-
return (
|
| 30 |
-
<ClerkProvider
|
| 31 |
-
localization={clerkLocale}
|
| 32 |
-
signInUrl={signInUrl}
|
| 33 |
-
signUpUrl={signUpUrl}
|
| 34 |
-
signInFallbackRedirectUrl={dashboardUrl}
|
| 35 |
-
signUpFallbackRedirectUrl={dashboardUrl}
|
| 36 |
-
afterSignOutUrl={afterSignOutUrl}
|
| 37 |
-
>
|
| 38 |
-
{props.children}
|
| 39 |
-
</ClerkProvider>
|
| 40 |
-
);
|
| 41 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/about/page.tsx
DELETED
|
@@ -1,54 +0,0 @@
|
|
| 1 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 2 |
-
import Image from 'next/image';
|
| 3 |
-
|
| 4 |
-
type IAboutProps = {
|
| 5 |
-
params: Promise<{ slug: string; locale: string }>;
|
| 6 |
-
};
|
| 7 |
-
|
| 8 |
-
export async function generateMetadata(props: IAboutProps) {
|
| 9 |
-
const { locale } = await props.params;
|
| 10 |
-
const t = await getTranslations({
|
| 11 |
-
locale,
|
| 12 |
-
namespace: 'About',
|
| 13 |
-
});
|
| 14 |
-
|
| 15 |
-
return {
|
| 16 |
-
title: t('meta_title'),
|
| 17 |
-
description: t('meta_description'),
|
| 18 |
-
};
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
-
export default async function About(props: IAboutProps) {
|
| 22 |
-
const { locale } = await props.params;
|
| 23 |
-
setRequestLocale(locale);
|
| 24 |
-
const t = await getTranslations({
|
| 25 |
-
locale,
|
| 26 |
-
namespace: 'About',
|
| 27 |
-
});
|
| 28 |
-
|
| 29 |
-
return (
|
| 30 |
-
<>
|
| 31 |
-
<p>{t('about_paragraph')}</p>
|
| 32 |
-
|
| 33 |
-
<div className="mt-2 text-center text-sm">
|
| 34 |
-
{`${t('translation_powered_by')} `}
|
| 35 |
-
<a
|
| 36 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 37 |
-
href="https://l.crowdin.com/next-js"
|
| 38 |
-
>
|
| 39 |
-
Crowdin
|
| 40 |
-
</a>
|
| 41 |
-
</div>
|
| 42 |
-
|
| 43 |
-
<a href="https://l.crowdin.com/next-js">
|
| 44 |
-
<Image
|
| 45 |
-
className="mx-auto mt-2"
|
| 46 |
-
src="/assets/images/crowdin-dark.png"
|
| 47 |
-
alt="Crowdin Translation Management System"
|
| 48 |
-
width={128}
|
| 49 |
-
height={26}
|
| 50 |
-
/>
|
| 51 |
-
</a>
|
| 52 |
-
</>
|
| 53 |
-
);
|
| 54 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/api/counter/route.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
| 1 |
-
import { db } from '@/libs/DB';
|
| 2 |
-
import { logger } from '@/libs/Logger';
|
| 3 |
-
import { counterSchema } from '@/models/Schema';
|
| 4 |
-
import { CounterValidation } from '@/validations/CounterValidation';
|
| 5 |
-
import { sql } from 'drizzle-orm';
|
| 6 |
-
import { headers } from 'next/headers';
|
| 7 |
-
import { NextResponse } from 'next/server';
|
| 8 |
-
|
| 9 |
-
export const PUT = async (request: Request) => {
|
| 10 |
-
const json = await request.json();
|
| 11 |
-
const parse = CounterValidation.safeParse(json);
|
| 12 |
-
|
| 13 |
-
if (!parse.success) {
|
| 14 |
-
return NextResponse.json(parse.error.format(), { status: 422 });
|
| 15 |
-
}
|
| 16 |
-
|
| 17 |
-
// `x-e2e-random-id` is used for end-to-end testing to make isolated requests
|
| 18 |
-
// The default value is 0 when there is no `x-e2e-random-id` header
|
| 19 |
-
const id = Number((await headers()).get('x-e2e-random-id')) ?? 0;
|
| 20 |
-
|
| 21 |
-
const count = await db
|
| 22 |
-
.insert(counterSchema)
|
| 23 |
-
.values({ id, count: parse.data.increment })
|
| 24 |
-
.onConflictDoUpdate({
|
| 25 |
-
target: counterSchema.id,
|
| 26 |
-
set: { count: sql`${counterSchema.count} + ${parse.data.increment}` },
|
| 27 |
-
})
|
| 28 |
-
.returning();
|
| 29 |
-
|
| 30 |
-
logger.info('Counter has been incremented');
|
| 31 |
-
|
| 32 |
-
return NextResponse.json({
|
| 33 |
-
count: count[0]?.count,
|
| 34 |
-
});
|
| 35 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/counter/page.tsx
DELETED
|
@@ -1,59 +0,0 @@
|
|
| 1 |
-
import { CounterForm } from '@/components/CounterForm';
|
| 2 |
-
import { CurrentCount } from '@/components/CurrentCount';
|
| 3 |
-
import { useTranslations } from 'next-intl';
|
| 4 |
-
import { getTranslations } from 'next-intl/server';
|
| 5 |
-
import Image from 'next/image';
|
| 6 |
-
import { Suspense } from 'react';
|
| 7 |
-
|
| 8 |
-
export async function generateMetadata(props: {
|
| 9 |
-
params: Promise<{ locale: string }>;
|
| 10 |
-
}) {
|
| 11 |
-
const { locale } = await props.params;
|
| 12 |
-
const t = await getTranslations({
|
| 13 |
-
locale,
|
| 14 |
-
namespace: 'Counter',
|
| 15 |
-
});
|
| 16 |
-
|
| 17 |
-
return {
|
| 18 |
-
title: t('meta_title'),
|
| 19 |
-
description: t('meta_description'),
|
| 20 |
-
};
|
| 21 |
-
}
|
| 22 |
-
|
| 23 |
-
export default function Counter() {
|
| 24 |
-
const t = useTranslations('Counter');
|
| 25 |
-
|
| 26 |
-
return (
|
| 27 |
-
<>
|
| 28 |
-
<CounterForm />
|
| 29 |
-
|
| 30 |
-
<div className="mt-3">
|
| 31 |
-
<Suspense fallback={<p>{t('loading_counter')}</p>}>
|
| 32 |
-
<CurrentCount />
|
| 33 |
-
</Suspense>
|
| 34 |
-
</div>
|
| 35 |
-
|
| 36 |
-
<div className="mt-5 text-center text-sm">
|
| 37 |
-
{`${t('security_powered_by')} `}
|
| 38 |
-
<a
|
| 39 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 40 |
-
href="https://launch.arcjet.com/Q6eLbRE"
|
| 41 |
-
>
|
| 42 |
-
Arcjet
|
| 43 |
-
</a>
|
| 44 |
-
</div>
|
| 45 |
-
|
| 46 |
-
<a
|
| 47 |
-
href="https://launch.arcjet.com/Q6eLbRE"
|
| 48 |
-
>
|
| 49 |
-
<Image
|
| 50 |
-
className="mx-auto mt-2"
|
| 51 |
-
src="/assets/images/arcjet-light.svg"
|
| 52 |
-
alt="Arcjet"
|
| 53 |
-
width={128}
|
| 54 |
-
height={38}
|
| 55 |
-
/>
|
| 56 |
-
</a>
|
| 57 |
-
</>
|
| 58 |
-
);
|
| 59 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/layout.tsx
DELETED
|
@@ -1,96 +0,0 @@
|
|
| 1 |
-
import { DemoBanner } from '@/components/DemoBanner';
|
| 2 |
-
import { LocaleSwitcher } from '@/components/LocaleSwitcher';
|
| 3 |
-
import { BaseTemplate } from '@/templates/BaseTemplate';
|
| 4 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 5 |
-
import Link from 'next/link';
|
| 6 |
-
|
| 7 |
-
export default async function Layout(props: {
|
| 8 |
-
children: React.ReactNode;
|
| 9 |
-
params: Promise<{ locale: string }>;
|
| 10 |
-
}) {
|
| 11 |
-
const { locale } = await props.params;
|
| 12 |
-
setRequestLocale(locale);
|
| 13 |
-
const t = await getTranslations({
|
| 14 |
-
locale,
|
| 15 |
-
namespace: 'RootLayout',
|
| 16 |
-
});
|
| 17 |
-
|
| 18 |
-
return (
|
| 19 |
-
<>
|
| 20 |
-
<DemoBanner />
|
| 21 |
-
<BaseTemplate
|
| 22 |
-
leftNav={(
|
| 23 |
-
<>
|
| 24 |
-
<li>
|
| 25 |
-
<Link
|
| 26 |
-
href="/"
|
| 27 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 28 |
-
>
|
| 29 |
-
{t('home_link')}
|
| 30 |
-
</Link>
|
| 31 |
-
</li>
|
| 32 |
-
<li>
|
| 33 |
-
<Link
|
| 34 |
-
href="/about/"
|
| 35 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 36 |
-
>
|
| 37 |
-
{t('about_link')}
|
| 38 |
-
</Link>
|
| 39 |
-
</li>
|
| 40 |
-
<li>
|
| 41 |
-
<Link
|
| 42 |
-
href="/counter/"
|
| 43 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 44 |
-
>
|
| 45 |
-
{t('counter_link')}
|
| 46 |
-
</Link>
|
| 47 |
-
</li>
|
| 48 |
-
<li>
|
| 49 |
-
<Link
|
| 50 |
-
href="/portfolio/"
|
| 51 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 52 |
-
>
|
| 53 |
-
{t('portfolio_link')}
|
| 54 |
-
</Link>
|
| 55 |
-
</li>
|
| 56 |
-
<li>
|
| 57 |
-
<a
|
| 58 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 59 |
-
href="https://github.com/ixartz/Next-js-Boilerplate"
|
| 60 |
-
>
|
| 61 |
-
GitHub
|
| 62 |
-
</a>
|
| 63 |
-
</li>
|
| 64 |
-
</>
|
| 65 |
-
)}
|
| 66 |
-
rightNav={(
|
| 67 |
-
<>
|
| 68 |
-
<li>
|
| 69 |
-
<Link
|
| 70 |
-
href="/sign-in/"
|
| 71 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 72 |
-
>
|
| 73 |
-
{t('sign_in_link')}
|
| 74 |
-
</Link>
|
| 75 |
-
</li>
|
| 76 |
-
|
| 77 |
-
<li>
|
| 78 |
-
<Link
|
| 79 |
-
href="/sign-up/"
|
| 80 |
-
className="border-none text-gray-700 hover:text-gray-900"
|
| 81 |
-
>
|
| 82 |
-
{t('sign_up_link')}
|
| 83 |
-
</Link>
|
| 84 |
-
</li>
|
| 85 |
-
|
| 86 |
-
<li>
|
| 87 |
-
<LocaleSwitcher />
|
| 88 |
-
</li>
|
| 89 |
-
</>
|
| 90 |
-
)}
|
| 91 |
-
>
|
| 92 |
-
<div className="py-5 text-xl [&_p]:my-6">{props.children}</div>
|
| 93 |
-
</BaseTemplate>
|
| 94 |
-
</>
|
| 95 |
-
);
|
| 96 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/page.tsx
DELETED
|
@@ -1,120 +0,0 @@
|
|
| 1 |
-
import { Sponsors } from '@/components/Sponsors';
|
| 2 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 3 |
-
|
| 4 |
-
type IIndexProps = {
|
| 5 |
-
params: Promise<{ locale: string }>;
|
| 6 |
-
};
|
| 7 |
-
|
| 8 |
-
export async function generateMetadata(props: IIndexProps) {
|
| 9 |
-
const { locale } = await props.params;
|
| 10 |
-
const t = await getTranslations({
|
| 11 |
-
locale,
|
| 12 |
-
namespace: 'Index',
|
| 13 |
-
});
|
| 14 |
-
|
| 15 |
-
return {
|
| 16 |
-
title: t('meta_title'),
|
| 17 |
-
description: t('meta_description'),
|
| 18 |
-
};
|
| 19 |
-
}
|
| 20 |
-
|
| 21 |
-
export default async function Index(props: IIndexProps) {
|
| 22 |
-
const { locale } = await props.params;
|
| 23 |
-
setRequestLocale(locale);
|
| 24 |
-
const t = await getTranslations({
|
| 25 |
-
locale,
|
| 26 |
-
namespace: 'Index',
|
| 27 |
-
});
|
| 28 |
-
|
| 29 |
-
return (
|
| 30 |
-
<>
|
| 31 |
-
<p>
|
| 32 |
-
{`Follow `}
|
| 33 |
-
<a
|
| 34 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 35 |
-
href="https://twitter.com/ixartz"
|
| 36 |
-
target="_blank"
|
| 37 |
-
rel="noreferrer noopener"
|
| 38 |
-
>
|
| 39 |
-
@Ixartz on Twitter
|
| 40 |
-
</a>
|
| 41 |
-
{` for updates and more information about the boilerplate.`}
|
| 42 |
-
</p>
|
| 43 |
-
<h2 className="mt-5 text-2xl font-bold">
|
| 44 |
-
Boilerplate Code for Your Next.js Project with Tailwind CSS
|
| 45 |
-
</h2>
|
| 46 |
-
<p className="text-base">
|
| 47 |
-
Next.js Boilerplate is a developer-friendly starter code for Next.js projects, built with Tailwind CSS and TypeScript.
|
| 48 |
-
{' '}
|
| 49 |
-
<span role="img" aria-label="zap">
|
| 50 |
-
⚡️
|
| 51 |
-
</span>
|
| 52 |
-
{' '}
|
| 53 |
-
Designed with developer experience in mind, it includes:
|
| 54 |
-
</p>
|
| 55 |
-
<ul className="mt-3 text-base">
|
| 56 |
-
<li>🚀 Next.js with App Router support</li>
|
| 57 |
-
<li>🔥 TypeScript for type checking</li>
|
| 58 |
-
<li>💎 Tailwind CSS integration</li>
|
| 59 |
-
<li>
|
| 60 |
-
🔒 Authentication with
|
| 61 |
-
{' '}
|
| 62 |
-
<a
|
| 63 |
-
className="font-bold text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 64 |
-
href="https://clerk.com?utm_source=github&utm_medium=sponsorship&utm_campaign=nextjs-boilerplate"
|
| 65 |
-
>
|
| 66 |
-
Clerk
|
| 67 |
-
</a>
|
| 68 |
-
{' '}
|
| 69 |
-
(includes passwordless, social, and multi-factor auth)
|
| 70 |
-
</li>
|
| 71 |
-
<li>📦 ORM with DrizzleORM (PostgreSQL, SQLite, MySQL support)</li>
|
| 72 |
-
<li>
|
| 73 |
-
🌐 Multi-language support (i18n) with next-intl and
|
| 74 |
-
{' '}
|
| 75 |
-
<a
|
| 76 |
-
className="font-bold text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 77 |
-
href="https://l.crowdin.com/next-js"
|
| 78 |
-
>
|
| 79 |
-
Crowdin
|
| 80 |
-
</a>
|
| 81 |
-
</li>
|
| 82 |
-
<li>🔴 Form handling (React Hook Form) and validation (Zod)</li>
|
| 83 |
-
<li>📏 Linting and formatting (ESLint, Prettier)</li>
|
| 84 |
-
<li>🦊 Git hooks and commit linting (Husky, Commitlint)</li>
|
| 85 |
-
<li>🦺 Testing suite (Vitest, React Testing Library, Playwright)</li>
|
| 86 |
-
<li>🎉 Storybook for UI development</li>
|
| 87 |
-
<li>
|
| 88 |
-
🚨 Error monitoring (
|
| 89 |
-
<a
|
| 90 |
-
className="font-bold text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 91 |
-
href="https://sentry.io/for/nextjs/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo"
|
| 92 |
-
>
|
| 93 |
-
Sentry
|
| 94 |
-
</a>
|
| 95 |
-
) and logging (Pino.js)
|
| 96 |
-
</li>
|
| 97 |
-
<li>🖥️ Monitoring as Code (Checkly)</li>
|
| 98 |
-
<li>
|
| 99 |
-
🔐 Security and bot protection (
|
| 100 |
-
<a
|
| 101 |
-
className="font-bold text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 102 |
-
href="https://launch.arcjet.com/Q6eLbRE"
|
| 103 |
-
>
|
| 104 |
-
Arcjet
|
| 105 |
-
</a>
|
| 106 |
-
)
|
| 107 |
-
</li>
|
| 108 |
-
<li>🤖 SEO optimization (metadata, JSON-LD, Open Graph tags)</li>
|
| 109 |
-
<li>⚙️ Development tools (VSCode config, bundler analyzer, changelog generation)</li>
|
| 110 |
-
</ul>
|
| 111 |
-
<p className="text-base">
|
| 112 |
-
Our sponsors' exceptional support has made this project possible.
|
| 113 |
-
Their services integrate seamlessly with the boilerplate, and we
|
| 114 |
-
recommend trying them out.
|
| 115 |
-
</p>
|
| 116 |
-
<h2 className="mt-5 text-2xl font-bold">{t('sponsors_title')}</h2>
|
| 117 |
-
<Sponsors />
|
| 118 |
-
</>
|
| 119 |
-
);
|
| 120 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/portfolio/[slug]/page.tsx
DELETED
|
@@ -1,71 +0,0 @@
|
|
| 1 |
-
import { routing } from '@/libs/i18nNavigation';
|
| 2 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 3 |
-
import Image from 'next/image';
|
| 4 |
-
|
| 5 |
-
type IPortfolioDetailProps = {
|
| 6 |
-
params: Promise<{ slug: string; locale: string }>;
|
| 7 |
-
};
|
| 8 |
-
|
| 9 |
-
export function generateStaticParams() {
|
| 10 |
-
return routing.locales
|
| 11 |
-
.map(locale =>
|
| 12 |
-
Array.from(Array.from({ length: 6 }).keys()).map(elt => ({
|
| 13 |
-
slug: `${elt}`,
|
| 14 |
-
locale,
|
| 15 |
-
})),
|
| 16 |
-
)
|
| 17 |
-
.flat(1);
|
| 18 |
-
}
|
| 19 |
-
|
| 20 |
-
export async function generateMetadata(props: IPortfolioDetailProps) {
|
| 21 |
-
const { locale, slug } = await props.params;
|
| 22 |
-
const t = await getTranslations({
|
| 23 |
-
locale,
|
| 24 |
-
namespace: 'PortfolioSlug',
|
| 25 |
-
});
|
| 26 |
-
|
| 27 |
-
return {
|
| 28 |
-
title: t('meta_title', { slug }),
|
| 29 |
-
description: t('meta_description', { slug }),
|
| 30 |
-
};
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
export default async function PortfolioDetail(props: IPortfolioDetailProps) {
|
| 34 |
-
const { locale, slug } = await props.params;
|
| 35 |
-
setRequestLocale(locale);
|
| 36 |
-
const t = await getTranslations({
|
| 37 |
-
locale,
|
| 38 |
-
namespace: 'PortfolioSlug',
|
| 39 |
-
});
|
| 40 |
-
|
| 41 |
-
return (
|
| 42 |
-
<>
|
| 43 |
-
<h1 className="capitalize">{t('header', { slug })}</h1>
|
| 44 |
-
<p>{t('content')}</p>
|
| 45 |
-
|
| 46 |
-
<div className="mt-5 text-center text-sm">
|
| 47 |
-
{`${t('log_management_powered_by')} `}
|
| 48 |
-
<a
|
| 49 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 50 |
-
href="https://betterstack.com/?utm_source=github&utm_medium=sponsorship&utm_campaign=next-js-boilerplate"
|
| 51 |
-
>
|
| 52 |
-
Better Stack
|
| 53 |
-
</a>
|
| 54 |
-
</div>
|
| 55 |
-
|
| 56 |
-
<a
|
| 57 |
-
href="https://betterstack.com/?utm_source=github&utm_medium=sponsorship&utm_campaign=next-js-boilerplate"
|
| 58 |
-
>
|
| 59 |
-
<Image
|
| 60 |
-
className="mx-auto mt-2"
|
| 61 |
-
src="/assets/images/better-stack-dark.png"
|
| 62 |
-
alt="Better Stack"
|
| 63 |
-
width={128}
|
| 64 |
-
height={22}
|
| 65 |
-
/>
|
| 66 |
-
</a>
|
| 67 |
-
</>
|
| 68 |
-
);
|
| 69 |
-
};
|
| 70 |
-
|
| 71 |
-
export const dynamicParams = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/(marketing)/portfolio/page.tsx
DELETED
|
@@ -1,76 +0,0 @@
|
|
| 1 |
-
import { getTranslations, setRequestLocale } from 'next-intl/server';
|
| 2 |
-
import Image from 'next/image';
|
| 3 |
-
import Link from 'next/link';
|
| 4 |
-
|
| 5 |
-
type IPortfolioProps = {
|
| 6 |
-
params: Promise<{ locale: string }>;
|
| 7 |
-
};
|
| 8 |
-
|
| 9 |
-
export async function generateMetadata(props: IPortfolioProps) {
|
| 10 |
-
const { locale } = await props.params;
|
| 11 |
-
const t = await getTranslations({
|
| 12 |
-
locale,
|
| 13 |
-
namespace: 'Portfolio',
|
| 14 |
-
});
|
| 15 |
-
|
| 16 |
-
return {
|
| 17 |
-
title: t('meta_title'),
|
| 18 |
-
description: t('meta_description'),
|
| 19 |
-
};
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
export default async function Portfolio(props: IPortfolioProps) {
|
| 23 |
-
const { locale } = await props.params;
|
| 24 |
-
setRequestLocale(locale);
|
| 25 |
-
const t = await getTranslations({
|
| 26 |
-
locale,
|
| 27 |
-
namespace: 'Portfolio',
|
| 28 |
-
});
|
| 29 |
-
|
| 30 |
-
return (
|
| 31 |
-
<>
|
| 32 |
-
<p>{t('presentation')}</p>
|
| 33 |
-
|
| 34 |
-
<div className="grid grid-cols-1 justify-items-start gap-3 md:grid-cols-2 xl:grid-cols-3">
|
| 35 |
-
{Array.from(Array.from({ length: 6 }).keys()).map(elt => (
|
| 36 |
-
<Link
|
| 37 |
-
className="hover:text-blue-700"
|
| 38 |
-
key={elt}
|
| 39 |
-
href={`/portfolio/${elt}`}
|
| 40 |
-
>
|
| 41 |
-
{t('portfolio_name', { name: elt })}
|
| 42 |
-
</Link>
|
| 43 |
-
))}
|
| 44 |
-
</div>
|
| 45 |
-
|
| 46 |
-
<div className="mt-5 text-center text-sm">
|
| 47 |
-
{`${t('error_reporting_powered_by')} `}
|
| 48 |
-
<a
|
| 49 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 50 |
-
href="https://sentry.io/for/nextjs/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo"
|
| 51 |
-
>
|
| 52 |
-
Sentry
|
| 53 |
-
</a>
|
| 54 |
-
{` - ${t('coverage_powered_by')} `}
|
| 55 |
-
<a
|
| 56 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 57 |
-
href="https://about.codecov.io/codecov-free-trial/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo"
|
| 58 |
-
>
|
| 59 |
-
Codecov
|
| 60 |
-
</a>
|
| 61 |
-
</div>
|
| 62 |
-
|
| 63 |
-
<a
|
| 64 |
-
href="https://sentry.io/for/nextjs/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo"
|
| 65 |
-
>
|
| 66 |
-
<Image
|
| 67 |
-
className="mx-auto mt-2"
|
| 68 |
-
src="/assets/images/sentry-dark.png"
|
| 69 |
-
alt="Sentry"
|
| 70 |
-
width={128}
|
| 71 |
-
height={38}
|
| 72 |
-
/>
|
| 73 |
-
</a>
|
| 74 |
-
</>
|
| 75 |
-
);
|
| 76 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/[locale]/layout.tsx
DELETED
|
@@ -1,102 +0,0 @@
|
|
| 1 |
-
import type { Metadata } from 'next';
|
| 2 |
-
import { DemoBadge } from '@/components/DemoBadge';
|
| 3 |
-
import arcjet, { detectBot, request } from '@/libs/Arcjet';
|
| 4 |
-
import { Env } from '@/libs/Env';
|
| 5 |
-
import { routing } from '@/libs/i18nNavigation';
|
| 6 |
-
import { NextIntlClientProvider } from 'next-intl';
|
| 7 |
-
import { getMessages, setRequestLocale } from 'next-intl/server';
|
| 8 |
-
import { notFound } from 'next/navigation';
|
| 9 |
-
import '@/styles/global.css';
|
| 10 |
-
|
| 11 |
-
export const metadata: Metadata = {
|
| 12 |
-
icons: [
|
| 13 |
-
{
|
| 14 |
-
rel: 'apple-touch-icon',
|
| 15 |
-
url: '/apple-touch-icon.png',
|
| 16 |
-
},
|
| 17 |
-
{
|
| 18 |
-
rel: 'icon',
|
| 19 |
-
type: 'image/png',
|
| 20 |
-
sizes: '32x32',
|
| 21 |
-
url: '/favicon-32x32.png',
|
| 22 |
-
},
|
| 23 |
-
{
|
| 24 |
-
rel: 'icon',
|
| 25 |
-
type: 'image/png',
|
| 26 |
-
sizes: '16x16',
|
| 27 |
-
url: '/favicon-16x16.png',
|
| 28 |
-
},
|
| 29 |
-
{
|
| 30 |
-
rel: 'icon',
|
| 31 |
-
url: '/favicon.ico',
|
| 32 |
-
},
|
| 33 |
-
],
|
| 34 |
-
};
|
| 35 |
-
|
| 36 |
-
export function generateStaticParams() {
|
| 37 |
-
return routing.locales.map(locale => ({ locale }));
|
| 38 |
-
}
|
| 39 |
-
|
| 40 |
-
// Improve security with Arcjet
|
| 41 |
-
const aj = arcjet.withRule(
|
| 42 |
-
detectBot({
|
| 43 |
-
mode: 'LIVE',
|
| 44 |
-
// Block all bots except the following
|
| 45 |
-
allow: [
|
| 46 |
-
// See https://docs.arcjet.com/bot-protection/identifying-bots
|
| 47 |
-
'CATEGORY:SEARCH_ENGINE', // Allow search engines
|
| 48 |
-
'CATEGORY:PREVIEW', // Allow preview links to show OG images
|
| 49 |
-
'CATEGORY:MONITOR', // Allow uptime monitoring services
|
| 50 |
-
],
|
| 51 |
-
}),
|
| 52 |
-
);
|
| 53 |
-
|
| 54 |
-
export default async function RootLayout(props: {
|
| 55 |
-
children: React.ReactNode;
|
| 56 |
-
params: Promise<{ locale: string }>;
|
| 57 |
-
}) {
|
| 58 |
-
const { locale } = await props.params;
|
| 59 |
-
|
| 60 |
-
if (!routing.locales.includes(locale)) {
|
| 61 |
-
notFound();
|
| 62 |
-
}
|
| 63 |
-
|
| 64 |
-
setRequestLocale(locale);
|
| 65 |
-
|
| 66 |
-
// Verify the request with Arcjet
|
| 67 |
-
if (Env.ARCJET_KEY) {
|
| 68 |
-
const req = await request();
|
| 69 |
-
const decision = await aj.protect(req);
|
| 70 |
-
|
| 71 |
-
// These errors are handled by the global error boundary, but you could also
|
| 72 |
-
// redirect or show a custom error page
|
| 73 |
-
if (decision.isDenied()) {
|
| 74 |
-
if (decision.reason.isBot()) {
|
| 75 |
-
throw new Error('No bots allowed');
|
| 76 |
-
}
|
| 77 |
-
|
| 78 |
-
throw new Error('Access denied');
|
| 79 |
-
}
|
| 80 |
-
}
|
| 81 |
-
|
| 82 |
-
// Using internationalization in Client Components
|
| 83 |
-
const messages = await getMessages();
|
| 84 |
-
|
| 85 |
-
// The `suppressHydrationWarning` attribute in <body> is used to prevent hydration errors caused by Sentry Overlay,
|
| 86 |
-
// which dynamically adds a `style` attribute to the body tag.
|
| 87 |
-
|
| 88 |
-
return (
|
| 89 |
-
<html lang={locale}>
|
| 90 |
-
<body suppressHydrationWarning>
|
| 91 |
-
<NextIntlClientProvider
|
| 92 |
-
locale={locale}
|
| 93 |
-
messages={messages}
|
| 94 |
-
>
|
| 95 |
-
{props.children}
|
| 96 |
-
|
| 97 |
-
<DemoBadge />
|
| 98 |
-
</NextIntlClientProvider>
|
| 99 |
-
</body>
|
| 100 |
-
</html>
|
| 101 |
-
);
|
| 102 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/layout.tsx
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import type { Metadata } from 'next';
|
| 2 |
+
import { Navbar } from '@/components/Navbar';
|
| 3 |
+
import { isDevMode } from '@/utils/Helpers';
|
| 4 |
+
import { Inter, Outfit } from 'next/font/google';
|
| 5 |
+
import '../styles/global.css';
|
| 6 |
+
|
| 7 |
+
const inter = Inter({
|
| 8 |
+
subsets: ['latin'],
|
| 9 |
+
variable: '--font-sans',
|
| 10 |
+
});
|
| 11 |
+
|
| 12 |
+
// Use Outfit from Google Fonts instead of Cal Sans
|
| 13 |
+
const outfit = Outfit({
|
| 14 |
+
subsets: ['latin'],
|
| 15 |
+
variable: '--font-heading',
|
| 16 |
+
});
|
| 17 |
+
|
| 18 |
+
export const metadata: Metadata = {
|
| 19 |
+
title: 'X-App',
|
| 20 |
+
description: 'A clone of Jan.ai built with Next.js and Tailwind CSS',
|
| 21 |
+
};
|
| 22 |
+
|
| 23 |
+
export default function RootLayout({
|
| 24 |
+
children,
|
| 25 |
+
}: {
|
| 26 |
+
children: React.ReactNode;
|
| 27 |
+
}) {
|
| 28 |
+
return (
|
| 29 |
+
<html lang="en" suppressHydrationWarning>
|
| 30 |
+
<body className={`${inter.variable} ${outfit.variable} font-sans antialiased`} suppressHydrationWarning={isDevMode}>
|
| 31 |
+
<Navbar />
|
| 32 |
+
{children}
|
| 33 |
+
</body>
|
| 34 |
+
</html>
|
| 35 |
+
);
|
| 36 |
+
}
|
src/app/page.tsx
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { AnnouncementBanner } from '@/components/homepage/AnnouncementBanner';
|
| 2 |
+
import { CustomizationSection } from '@/components/homepage/CustomizationSection';
|
| 3 |
+
import { FeaturesSection } from '@/components/homepage/FeatureSection';
|
| 4 |
+
|
| 5 |
+
export default function Home() {
|
| 6 |
+
return (
|
| 7 |
+
<main className="flex min-h-screen flex-col">
|
| 8 |
+
<div className="flex-1 space-y-16 pb-8 pt-20 md:pb-12 md:pt-24 lg:py-32">
|
| 9 |
+
<AnnouncementBanner />
|
| 10 |
+
<FeaturesSection />
|
| 11 |
+
<CustomizationSection />
|
| 12 |
+
</div>
|
| 13 |
+
</main>
|
| 14 |
+
);
|
| 15 |
+
}
|
src/components/CounterForm.tsx
DELETED
|
@@ -1,63 +0,0 @@
|
|
| 1 |
-
'use client';
|
| 2 |
-
|
| 3 |
-
import type { z } from 'zod';
|
| 4 |
-
import { CounterValidation } from '@/validations/CounterValidation';
|
| 5 |
-
import { zodResolver } from '@hookform/resolvers/zod';
|
| 6 |
-
import { useTranslations } from 'next-intl';
|
| 7 |
-
import { useRouter } from 'next/navigation';
|
| 8 |
-
import { useForm } from 'react-hook-form';
|
| 9 |
-
|
| 10 |
-
export const CounterForm = () => {
|
| 11 |
-
const t = useTranslations('CounterForm');
|
| 12 |
-
const form = useForm<z.infer<typeof CounterValidation>>({
|
| 13 |
-
resolver: zodResolver(CounterValidation),
|
| 14 |
-
defaultValues: {
|
| 15 |
-
increment: 0,
|
| 16 |
-
},
|
| 17 |
-
});
|
| 18 |
-
const router = useRouter();
|
| 19 |
-
|
| 20 |
-
const handleIncrement = form.handleSubmit(async (data) => {
|
| 21 |
-
await fetch(`/api/counter`, {
|
| 22 |
-
method: 'PUT',
|
| 23 |
-
headers: {
|
| 24 |
-
'Content-Type': 'application/json',
|
| 25 |
-
},
|
| 26 |
-
body: JSON.stringify(data),
|
| 27 |
-
});
|
| 28 |
-
|
| 29 |
-
form.reset();
|
| 30 |
-
router.refresh();
|
| 31 |
-
});
|
| 32 |
-
|
| 33 |
-
return (
|
| 34 |
-
<form onSubmit={handleIncrement}>
|
| 35 |
-
<p>{t('presentation')}</p>
|
| 36 |
-
<div>
|
| 37 |
-
<label className="text-sm font-bold text-gray-700" htmlFor="increment">
|
| 38 |
-
{t('label_increment')}
|
| 39 |
-
<input
|
| 40 |
-
id="increment"
|
| 41 |
-
type="number"
|
| 42 |
-
className="ml-2 w-32 appearance-none rounded border px-2 py-1 text-sm leading-tight text-gray-700 focus:outline-none focus:ring focus:ring-blue-300/50"
|
| 43 |
-
{...form.register('increment')}
|
| 44 |
-
/>
|
| 45 |
-
</label>
|
| 46 |
-
|
| 47 |
-
{form.formState.errors.increment?.message && (
|
| 48 |
-
<div className="my-2 text-xs italic text-red-500">{form.formState.errors.increment?.message}</div>
|
| 49 |
-
)}
|
| 50 |
-
</div>
|
| 51 |
-
|
| 52 |
-
<div className="mt-2">
|
| 53 |
-
<button
|
| 54 |
-
className="rounded bg-blue-500 px-5 py-1 font-bold text-white hover:bg-blue-600 focus:outline-none focus:ring focus:ring-blue-300/50 disabled:pointer-events-none disabled:opacity-50"
|
| 55 |
-
type="submit"
|
| 56 |
-
disabled={form.formState.isSubmitting}
|
| 57 |
-
>
|
| 58 |
-
{t('button_increment')}
|
| 59 |
-
</button>
|
| 60 |
-
</div>
|
| 61 |
-
</form>
|
| 62 |
-
);
|
| 63 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/CurrentCount.tsx
DELETED
|
@@ -1,26 +0,0 @@
|
|
| 1 |
-
import { db } from '@/libs/DB';
|
| 2 |
-
import { logger } from '@/libs/Logger';
|
| 3 |
-
import { counterSchema } from '@/models/Schema';
|
| 4 |
-
import { eq } from 'drizzle-orm';
|
| 5 |
-
import { getTranslations } from 'next-intl/server';
|
| 6 |
-
import { headers } from 'next/headers';
|
| 7 |
-
|
| 8 |
-
export const CurrentCount = async () => {
|
| 9 |
-
const t = await getTranslations('CurrentCount');
|
| 10 |
-
|
| 11 |
-
// `x-e2e-random-id` is used for end-to-end testing to make isolated requests
|
| 12 |
-
// The default value is 0 when there is no `x-e2e-random-id` header
|
| 13 |
-
const id = Number((await headers()).get('x-e2e-random-id')) ?? 0;
|
| 14 |
-
const result = await db.query.counterSchema.findMany({
|
| 15 |
-
where: eq(counterSchema.id, id),
|
| 16 |
-
});
|
| 17 |
-
const count = result[0]?.count ?? 0;
|
| 18 |
-
|
| 19 |
-
logger.info('Counter fetched successfully');
|
| 20 |
-
|
| 21 |
-
return (
|
| 22 |
-
<div>
|
| 23 |
-
{t('count', { count })}
|
| 24 |
-
</div>
|
| 25 |
-
);
|
| 26 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/DemoBadge.tsx
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
export const DemoBadge = () => (
|
| 2 |
-
<div className="fixed bottom-0 right-20 z-10">
|
| 3 |
-
<a
|
| 4 |
-
href="https://github.com/ixartz/Next-js-Boilerplate"
|
| 5 |
-
>
|
| 6 |
-
<div className="rounded-md bg-gray-900 px-3 py-2 font-semibold text-gray-100">
|
| 7 |
-
<span className="text-gray-500">Demo of</span>
|
| 8 |
-
{` Next.js Boilerplate`}
|
| 9 |
-
</div>
|
| 10 |
-
</a>
|
| 11 |
-
</div>
|
| 12 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/DemoBanner.tsx
DELETED
|
@@ -1,9 +0,0 @@
|
|
| 1 |
-
import Link from 'next/link';
|
| 2 |
-
|
| 3 |
-
export const DemoBanner = () => (
|
| 4 |
-
<div className="sticky top-0 z-50 bg-gray-900 p-4 text-center text-lg font-semibold text-gray-100 [&_a:hover]:text-indigo-500 [&_a]:text-fuchsia-500">
|
| 5 |
-
Live Demo of Next.js Boilerplate -
|
| 6 |
-
{' '}
|
| 7 |
-
<Link href="/sign-up">Explore the Authentication</Link>
|
| 8 |
-
</div>
|
| 9 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/Hello.tsx
DELETED
|
@@ -1,30 +0,0 @@
|
|
| 1 |
-
import { currentUser } from '@clerk/nextjs/server';
|
| 2 |
-
import { getTranslations } from 'next-intl/server';
|
| 3 |
-
import { Sponsors } from './Sponsors';
|
| 4 |
-
|
| 5 |
-
export const Hello = async () => {
|
| 6 |
-
const t = await getTranslations('Dashboard');
|
| 7 |
-
const user = await currentUser();
|
| 8 |
-
|
| 9 |
-
return (
|
| 10 |
-
<>
|
| 11 |
-
<p>
|
| 12 |
-
{`👋 `}
|
| 13 |
-
{t('hello_message', { email: user?.emailAddresses[0]?.emailAddress })}
|
| 14 |
-
</p>
|
| 15 |
-
<p>
|
| 16 |
-
{t.rich('alternative_message', {
|
| 17 |
-
url: () => (
|
| 18 |
-
<a
|
| 19 |
-
className="text-blue-700 hover:border-b-2 hover:border-blue-700"
|
| 20 |
-
href="https://nextjs-boilerplate.com/pro-saas-starter-kit"
|
| 21 |
-
>
|
| 22 |
-
Next.js Boilerplate SaaS
|
| 23 |
-
</a>
|
| 24 |
-
),
|
| 25 |
-
})}
|
| 26 |
-
</p>
|
| 27 |
-
<Sponsors />
|
| 28 |
-
</>
|
| 29 |
-
);
|
| 30 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/LocaleSwitcher.tsx
DELETED
|
@@ -1,32 +0,0 @@
|
|
| 1 |
-
'use client';
|
| 2 |
-
|
| 3 |
-
import type { ChangeEventHandler } from 'react';
|
| 4 |
-
import { routing, usePathname } from '@/libs/i18nNavigation';
|
| 5 |
-
import { useLocale } from 'next-intl';
|
| 6 |
-
import { useRouter } from 'next/navigation';
|
| 7 |
-
|
| 8 |
-
export const LocaleSwitcher = () => {
|
| 9 |
-
const router = useRouter();
|
| 10 |
-
const pathname = usePathname();
|
| 11 |
-
const locale = useLocale();
|
| 12 |
-
|
| 13 |
-
const handleChange: ChangeEventHandler<HTMLSelectElement> = (event) => {
|
| 14 |
-
router.push(`/${event.target.value}${pathname}`);
|
| 15 |
-
router.refresh();
|
| 16 |
-
};
|
| 17 |
-
|
| 18 |
-
return (
|
| 19 |
-
<select
|
| 20 |
-
defaultValue={locale}
|
| 21 |
-
onChange={handleChange}
|
| 22 |
-
className="border border-gray-300 font-medium focus:outline-none focus-visible:ring"
|
| 23 |
-
aria-label="lang-switcher"
|
| 24 |
-
>
|
| 25 |
-
{routing.locales.map(elt => (
|
| 26 |
-
<option key={elt} value={elt}>
|
| 27 |
-
{elt.toUpperCase()}
|
| 28 |
-
</option>
|
| 29 |
-
))}
|
| 30 |
-
</select>
|
| 31 |
-
);
|
| 32 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/Navbar.tsx
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
'use client';
|
| 2 |
+
import { Button, Input } from '@/components/atoms';
|
| 3 |
+
import { Search, Settings } from 'lucide-react';
|
| 4 |
+
import Link from 'next/link';
|
| 5 |
+
|
| 6 |
+
export function Navbar() {
|
| 7 |
+
return (
|
| 8 |
+
<nav className="fixed top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
|
| 9 |
+
<div className="container flex h-14 items-center">
|
| 10 |
+
<div className="mr-4 flex items-center gap-2">
|
| 11 |
+
<span className="text-xl">👋</span>
|
| 12 |
+
<Link href="/" className="font-semibold">
|
| 13 |
+
Jan
|
| 14 |
+
</Link>
|
| 15 |
+
</div>
|
| 16 |
+
|
| 17 |
+
<div className="flex items-center gap-6 text-sm">
|
| 18 |
+
<Link href="/documentation" className="hover:text-foreground/80">
|
| 19 |
+
Documentation
|
| 20 |
+
</Link>
|
| 21 |
+
<Link href="/changelog" className="hover:text-foreground/80">
|
| 22 |
+
Changelog
|
| 23 |
+
</Link>
|
| 24 |
+
<Link href="/about" className="hover:text-foreground/80">
|
| 25 |
+
About
|
| 26 |
+
</Link>
|
| 27 |
+
</div>
|
| 28 |
+
|
| 29 |
+
<div className="ml-auto flex items-center gap-4">
|
| 30 |
+
<div className="relative w-64">
|
| 31 |
+
<Search className="absolute left-2 top-2.5 size-4 text-muted-foreground" />
|
| 32 |
+
<Input placeholder="Search documentation..." className="pl-8" />
|
| 33 |
+
</div>
|
| 34 |
+
<Link href="/blog" className="hover:text-foreground/80">
|
| 35 |
+
Blog
|
| 36 |
+
</Link>
|
| 37 |
+
<Button variant="ghost" size="icon">
|
| 38 |
+
<Settings className="size-5" />
|
| 39 |
+
</Button>
|
| 40 |
+
</div>
|
| 41 |
+
</div>
|
| 42 |
+
</nav>
|
| 43 |
+
);
|
| 44 |
+
}
|
src/components/Sponsors.tsx
DELETED
|
@@ -1,115 +0,0 @@
|
|
| 1 |
-
/* eslint-disable react-dom/no-unsafe-target-blank */
|
| 2 |
-
import Image from 'next/image';
|
| 3 |
-
|
| 4 |
-
export const Sponsors = () => (
|
| 5 |
-
<table className="border-collapse">
|
| 6 |
-
<tbody>
|
| 7 |
-
<tr className="h-56">
|
| 8 |
-
<td className="border-2 border-gray-300 p-3">
|
| 9 |
-
<a
|
| 10 |
-
href="https://clerk.com?utm_source=github&utm_medium=sponsorship&utm_campaign=nextjs-boilerplate"
|
| 11 |
-
target="_blank"
|
| 12 |
-
rel="noopener"
|
| 13 |
-
>
|
| 14 |
-
<Image
|
| 15 |
-
src="/assets/images/clerk-logo-dark.png"
|
| 16 |
-
alt="Clerk – Authentication & User Management for Next.js"
|
| 17 |
-
width={260}
|
| 18 |
-
height={224}
|
| 19 |
-
/>
|
| 20 |
-
</a>
|
| 21 |
-
</td>
|
| 22 |
-
<td className="border-2 border-gray-300 p-3">
|
| 23 |
-
<a href="https://l.crowdin.com/next-js" target="_blank" rel="noopener">
|
| 24 |
-
<Image
|
| 25 |
-
src="/assets/images/crowdin-dark.png"
|
| 26 |
-
alt="Crowdin"
|
| 27 |
-
width={260}
|
| 28 |
-
height={224}
|
| 29 |
-
/>
|
| 30 |
-
</a>
|
| 31 |
-
</td>
|
| 32 |
-
<td className="border-2 border-gray-300 p-3">
|
| 33 |
-
<a
|
| 34 |
-
href="https://sentry.io/for/nextjs/?utm_source=github&utm_medium=paid-community&utm_campaign=general-fy25q1-nextjs&utm_content=github-banner-nextjsboilerplate-logo"
|
| 35 |
-
target="_blank"
|
| 36 |
-
rel="noopener"
|
| 37 |
-
>
|
| 38 |
-
<Image
|
| 39 |
-
src="/assets/images/sentry-dark.png"
|
| 40 |
-
alt="Sentry"
|
| 41 |
-
width={260}
|
| 42 |
-
height={224}
|
| 43 |
-
/>
|
| 44 |
-
</a>
|
| 45 |
-
</td>
|
| 46 |
-
</tr>
|
| 47 |
-
<tr className="h-56">
|
| 48 |
-
<td className="border-2 border-gray-300 p-3">
|
| 49 |
-
<a href="https://launch.arcjet.com/Q6eLbRE">
|
| 50 |
-
<Image
|
| 51 |
-
src="/assets/images/arcjet-light.svg"
|
| 52 |
-
alt="Arcjet"
|
| 53 |
-
width={260}
|
| 54 |
-
height={224}
|
| 55 |
-
/>
|
| 56 |
-
</a>
|
| 57 |
-
</td>
|
| 58 |
-
<td className="border-2 border-gray-300 p-3">
|
| 59 |
-
<a
|
| 60 |
-
href="https://posthog.com/?utm_source=github&utm_medium=sponsorship&utm_campaign=next-js-boilerplate"
|
| 61 |
-
target="_blank"
|
| 62 |
-
rel="noopener"
|
| 63 |
-
>
|
| 64 |
-
<Image
|
| 65 |
-
src="https://posthog.com/brand/posthog-logo.svg"
|
| 66 |
-
alt="PostHog"
|
| 67 |
-
width={260}
|
| 68 |
-
height={224}
|
| 69 |
-
/>
|
| 70 |
-
</a>
|
| 71 |
-
</td>
|
| 72 |
-
<td className="border-2 border-gray-300 p-3">
|
| 73 |
-
<a
|
| 74 |
-
href="https://betterstack.com/?utm_source=github&utm_medium=sponsorship&utm_campaign=next-js-boilerplate"
|
| 75 |
-
target="_blank"
|
| 76 |
-
rel="noopener"
|
| 77 |
-
>
|
| 78 |
-
<Image
|
| 79 |
-
src="/assets/images/better-stack-dark.png"
|
| 80 |
-
alt="Better Stack"
|
| 81 |
-
width={260}
|
| 82 |
-
height={224}
|
| 83 |
-
/>
|
| 84 |
-
</a>
|
| 85 |
-
</td>
|
| 86 |
-
</tr>
|
| 87 |
-
<tr className="h-56">
|
| 88 |
-
<td className="border-2 border-gray-300 p-3">
|
| 89 |
-
<a
|
| 90 |
-
href="https://www.checklyhq.com/?utm_source=github&utm_medium=sponsorship&utm_campaign=next-js-boilerplate"
|
| 91 |
-
target="_blank"
|
| 92 |
-
rel="noopener"
|
| 93 |
-
>
|
| 94 |
-
<Image
|
| 95 |
-
src="/assets/images/checkly-logo-light.png"
|
| 96 |
-
alt="Checkly"
|
| 97 |
-
width={260}
|
| 98 |
-
height={224}
|
| 99 |
-
/>
|
| 100 |
-
</a>
|
| 101 |
-
</td>
|
| 102 |
-
<td className="border-2 border-gray-300 p-3">
|
| 103 |
-
<a href="https://nextjs-boilerplate.com/pro-saas-starter-kit">
|
| 104 |
-
<Image
|
| 105 |
-
src="/assets/images/nextjs-boilerplate-saas.png"
|
| 106 |
-
alt="Next.js SaaS Boilerplate"
|
| 107 |
-
width={260}
|
| 108 |
-
height={224}
|
| 109 |
-
/>
|
| 110 |
-
</a>
|
| 111 |
-
</td>
|
| 112 |
-
</tr>
|
| 113 |
-
</tbody>
|
| 114 |
-
</table>
|
| 115 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/components/atoms/Badge/index.tsx
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import type * as React from 'react';
|
| 2 |
+
import { cn } from '@/utils/Helpers';
|
| 3 |
+
import { cva, type VariantProps } from 'class-variance-authority';
|
| 4 |
+
|
| 5 |
+
const badgeVariants = cva(
|
| 6 |
+
'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',
|
| 7 |
+
{
|
| 8 |
+
variants: {
|
| 9 |
+
variant: {
|
| 10 |
+
default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',
|
| 11 |
+
secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
| 12 |
+
destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',
|
| 13 |
+
outline: 'text-foreground',
|
| 14 |
+
},
|
| 15 |
+
},
|
| 16 |
+
defaultVariants: {
|
| 17 |
+
variant: 'default',
|
| 18 |
+
},
|
| 19 |
+
},
|
| 20 |
+
);
|
| 21 |
+
|
| 22 |
+
export type BadgeProps = {} & React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof badgeVariants>;
|
| 23 |
+
|
| 24 |
+
function Badge({ className, variant, ...props }: BadgeProps) {
|
| 25 |
+
return <div className={cn(badgeVariants({ variant }), className)} {...props} />;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
// eslint-disable-next-line react-refresh/only-export-components
|
| 29 |
+
export { Badge, badgeVariants };
|
src/components/atoms/Button/index.tsx
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* eslint-disable react-refresh/only-export-components */
|
| 2 |
+
import { cn } from '@/utils/Helpers';
|
| 3 |
+
import { cva, type VariantProps } from 'class-variance-authority';
|
| 4 |
+
import { type ButtonHTMLAttributes, type FC, memo, type PropsWithChildren, type Ref } from 'react';
|
| 5 |
+
|
| 6 |
+
const buttonVariants = cva(
|
| 7 |
+
'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',
|
| 8 |
+
{
|
| 9 |
+
variants: {
|
| 10 |
+
variant: {
|
| 11 |
+
default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
|
| 12 |
+
destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
|
| 13 |
+
outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
|
| 14 |
+
secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
|
| 15 |
+
ghost: 'hover:bg-accent hover:text-accent-foreground',
|
| 16 |
+
link: 'text-primary underline-offset-4 hover:underline',
|
| 17 |
+
},
|
| 18 |
+
size: {
|
| 19 |
+
default: 'h-9 px-4 py-2',
|
| 20 |
+
sm: 'h-8 rounded-md px-3 text-xs',
|
| 21 |
+
lg: 'h-10 rounded-md px-8',
|
| 22 |
+
icon: 'size-9',
|
| 23 |
+
},
|
| 24 |
+
},
|
| 25 |
+
defaultVariants: {
|
| 26 |
+
variant: 'default',
|
| 27 |
+
size: 'default',
|
| 28 |
+
},
|
| 29 |
+
},
|
| 30 |
+
);
|
| 31 |
+
|
| 32 |
+
export type ButtonProps = {
|
| 33 |
+
className?: string;
|
| 34 |
+
ref?: Ref<HTMLButtonElement> ;
|
| 35 |
+
} & PropsWithChildren & ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof buttonVariants> & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className'>;
|
| 36 |
+
|
| 37 |
+
const Button: FC<ButtonProps> = memo(({
|
| 38 |
+
className = '',
|
| 39 |
+
variant,
|
| 40 |
+
size,
|
| 41 |
+
children = null,
|
| 42 |
+
ref,
|
| 43 |
+
...rest
|
| 44 |
+
}) => {
|
| 45 |
+
return (
|
| 46 |
+
<button className={cn(buttonVariants({ variant, size, className }))} type="button" {...rest} ref={ref}>{children}</button>
|
| 47 |
+
);
|
| 48 |
+
});
|
| 49 |
+
|
| 50 |
+
Button.displayName = 'Button';
|
| 51 |
+
|
| 52 |
+
export { Button, buttonVariants };
|
src/components/atoms/Card/index.tsx
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { cn } from '@/utils/Helpers';
|
| 2 |
+
import * as React from 'react';
|
| 3 |
+
|
| 4 |
+
const Card = ({ ref, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.RefObject<HTMLDivElement> }) => (
|
| 5 |
+
<div ref={ref} className={cn('rounded-lg border bg-card text-card-foreground shadow-sm', className)} {...props} />
|
| 6 |
+
);
|
| 7 |
+
Card.displayName = 'Card';
|
| 8 |
+
|
| 9 |
+
const CardHeader = ({ ref, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref: React.RefObject<HTMLDivElement> }) => (
|
| 10 |
+
<div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />
|
| 11 |
+
);
|
| 12 |
+
CardHeader.displayName = 'CardHeader';
|
| 13 |
+
|
| 14 |
+
const CardTitle = ({ ref, className, ...props }: React.HTMLAttributes<HTMLHeadingElement> & { ref: React.RefObject<HTMLParagraphElement> }) => (
|
| 15 |
+
// eslint-disable-next-line jsx-a11y/heading-has-content
|
| 16 |
+
<h3 ref={ref} className={cn('text-2xl font-semibold leading-none tracking-tight', className)} {...props} />
|
| 17 |
+
);
|
| 18 |
+
CardTitle.displayName = 'CardTitle';
|
| 19 |
+
|
| 20 |
+
const CardDescription = ({ ref, className, ...props }: React.HTMLAttributes<HTMLParagraphElement> & { ref: React.RefObject<HTMLParagraphElement> }) => (
|
| 21 |
+
<p ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />
|
| 22 |
+
);
|
| 23 |
+
CardDescription.displayName = 'CardDescription';
|
| 24 |
+
|
| 25 |
+
const CardContent = ({ ref, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref?: React.RefObject<HTMLDivElement> }) => <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />;
|
| 26 |
+
CardContent.displayName = 'CardContent';
|
| 27 |
+
|
| 28 |
+
const CardFooter = ({ ref, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { ref: React.RefObject<HTMLDivElement> }) => (
|
| 29 |
+
<div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />
|
| 30 |
+
);
|
| 31 |
+
CardFooter.displayName = 'CardFooter';
|
| 32 |
+
|
| 33 |
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
src/components/atoms/Input/index.tsx
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { cn } from '@/utils/Helpers';
|
| 2 |
+
import { type FC, type InputHTMLAttributes, memo, type Ref } from 'react';
|
| 3 |
+
|
| 4 |
+
type InputProps = {
|
| 5 |
+
className?: string;
|
| 6 |
+
placeholder?: string;
|
| 7 |
+
ref?: Ref<HTMLInputElement> ;
|
| 8 |
+
} & InputHTMLAttributes<HTMLInputElement> & Omit<InputHTMLAttributes<HTMLInputElement>, 'className'>;
|
| 9 |
+
|
| 10 |
+
const Input: FC<InputProps> = memo(({
|
| 11 |
+
className = '',
|
| 12 |
+
placeholder = '',
|
| 13 |
+
ref,
|
| 14 |
+
...rest
|
| 15 |
+
}) => {
|
| 16 |
+
const baseClassName = `flex h-9 w-full rounded-md border border-input
|
| 17 |
+
bg-background px-3 py-1 text-sm shadow-sm transition-colors
|
| 18 |
+
file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground
|
| 19 |
+
focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring
|
| 20 |
+
disabled:cursor-not-allowed disabled:opacity-50`;
|
| 21 |
+
|
| 22 |
+
return (
|
| 23 |
+
<input className={cn(baseClassName, className)} placeholder={placeholder} {...rest} ref={ref} />
|
| 24 |
+
);
|
| 25 |
+
});
|
| 26 |
+
|
| 27 |
+
Input.displayName = 'Input';
|
| 28 |
+
|
| 29 |
+
export { Input };
|
src/components/atoms/index.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export { Badge } from './Badge';
|
| 2 |
+
export { Button } from './Button';
|
| 3 |
+
export * from './Card';
|
| 4 |
+
export { Input } from './Input';
|
src/components/homepage/AnnouncementBanner.tsx
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Badge, Button } from '@/components/atoms';
|
| 2 |
+
import { ChevronDown, Download } from 'lucide-react';
|
| 3 |
+
import Image from 'next/image';
|
| 4 |
+
|
| 5 |
+
export function AnnouncementBanner() {
|
| 6 |
+
return (
|
| 7 |
+
<>
|
| 8 |
+
<div className="container flex flex-col items-center gap-4 text-center">
|
| 9 |
+
<Badge className="rounded-lg" variant="secondary">
|
| 10 |
+
NEW
|
| 11 |
+
{' '}
|
| 12 |
+
<span className="mx-1">+</span>
|
| 13 |
+
{' '}
|
| 14 |
+
v0.5.14 is now live on GitHub. Check it out!
|
| 15 |
+
</Badge>
|
| 16 |
+
|
| 17 |
+
<span className="text-4xl">❝</span>
|
| 18 |
+
|
| 19 |
+
<h1 className="font-heading text-3xl sm:text-5xl md:text-6xl lg:text-7xl">
|
| 20 |
+
Chat with AI
|
| 21 |
+
<br />
|
| 22 |
+
without privacy concerns
|
| 23 |
+
</h1>
|
| 24 |
+
|
| 25 |
+
<p className="max-w-2xl leading-normal text-muted-foreground sm:text-xl sm:leading-8">
|
| 26 |
+
Jan is an open source ChatGPT-alternative that runs 100% offline.
|
| 27 |
+
</p>
|
| 28 |
+
|
| 29 |
+
<div className="space-y-4">
|
| 30 |
+
<Button className="h-11 px-8" size="lg">
|
| 31 |
+
<Download className="mr-2 size-4" />
|
| 32 |
+
Download for Windows
|
| 33 |
+
<ChevronDown className="ml-2 size-4" />
|
| 34 |
+
</Button>
|
| 35 |
+
<p className="text-xs text-muted-foreground">
|
| 36 |
+
<span className="font-semibold text-yellow-500">2.5M+</span>
|
| 37 |
+
{' '}
|
| 38 |
+
downloads | Free & Open Source
|
| 39 |
+
</p>
|
| 40 |
+
</div>
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
<div className="container">
|
| 44 |
+
<div className="relative mx-auto aspect-video max-w-5xl overflow-hidden rounded-xl border bg-background shadow-xl">
|
| 45 |
+
<Image
|
| 46 |
+
src="https://sjc.microlink.io/-ax0tIqUfnMYpO1Y6sFNuRcGN_Oe6cQwpzrnQR5q5pzkpfA29UGKZ228lDnpeQCpNANORBcNBmQgFoOtLn18vw.jpeg"
|
| 47 |
+
alt="Jan AI Interface"
|
| 48 |
+
fill
|
| 49 |
+
className="object-cover"
|
| 50 |
+
priority
|
| 51 |
+
/>
|
| 52 |
+
</div>
|
| 53 |
+
</div>
|
| 54 |
+
</>
|
| 55 |
+
);
|
| 56 |
+
}
|
src/components/homepage/CustomizationSection.tsx
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Badge, Card } from '@/components/atoms';
|
| 2 |
+
import Image from 'next/image';
|
| 3 |
+
|
| 4 |
+
export function CustomizationSection() {
|
| 5 |
+
return (
|
| 6 |
+
<section className="container space-y-16 py-24">
|
| 7 |
+
<div className="space-y-4 text-center">
|
| 8 |
+
<h2 className="font-heading text-4xl md:text-5xl lg:text-6xl">Highly Customizable</h2>
|
| 9 |
+
<p className="text-xl text-muted-foreground">Customize Jan to match your needs and preferences.</p>
|
| 10 |
+
</div>
|
| 11 |
+
|
| 12 |
+
<div className="grid gap-8 md:grid-cols-2">
|
| 13 |
+
{/* Assistants & Memory Card */}
|
| 14 |
+
<Card className="space-y-4 p-6">
|
| 15 |
+
<div className="space-y-2">
|
| 16 |
+
<div className="flex items-center gap-2">
|
| 17 |
+
<h3 className="text-2xl font-semibold">Assistants & Memory</h3>
|
| 18 |
+
<Badge variant="secondary" className="bg-blue-100 text-blue-700 hover:bg-blue-100">
|
| 19 |
+
Coming Soon
|
| 20 |
+
</Badge>
|
| 21 |
+
</div>
|
| 22 |
+
<p className="text-muted-foreground">
|
| 23 |
+
Create personalized AI assistants that remember your conversations and execute specific tasks across your
|
| 24 |
+
systems.
|
| 25 |
+
</p>
|
| 26 |
+
</div>
|
| 27 |
+
|
| 28 |
+
<Image
|
| 29 |
+
src="https://jan.ai/assets/images/homepage/assistant-light.png"
|
| 30 |
+
alt="App Screenshot Feature"
|
| 31 |
+
width={800}
|
| 32 |
+
height={800}
|
| 33 |
+
className="object-contain"
|
| 34 |
+
/>
|
| 35 |
+
</Card>
|
| 36 |
+
|
| 37 |
+
{/* Extensions Card */}
|
| 38 |
+
<Card className="space-y-4 p-6">
|
| 39 |
+
<div className="space-y-2">
|
| 40 |
+
<h3 className="text-2xl font-semibold">Extensions</h3>
|
| 41 |
+
<p className="text-muted-foreground">
|
| 42 |
+
Customize Jan with Extensions, that range from Cloud AI connectors, tools, data connectors.
|
| 43 |
+
</p>
|
| 44 |
+
</div>
|
| 45 |
+
|
| 46 |
+
<Image
|
| 47 |
+
src="https://jan.ai/assets/images/homepage/extension-light.png"
|
| 48 |
+
alt="App Screenshot Feature"
|
| 49 |
+
width={800}
|
| 50 |
+
height={800}
|
| 51 |
+
className="object-contain"
|
| 52 |
+
/>
|
| 53 |
+
</Card>
|
| 54 |
+
</div>
|
| 55 |
+
</section>
|
| 56 |
+
);
|
| 57 |
+
}
|
src/components/homepage/FeatureSection.tsx
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Badge } from '@/components/atoms';
|
| 2 |
+
import { Cloud, FileText, Grid, MessageCircle, Server } from 'lucide-react';
|
| 3 |
+
import Image from 'next/image';
|
| 4 |
+
|
| 5 |
+
const features = [
|
| 6 |
+
{
|
| 7 |
+
number: '01',
|
| 8 |
+
title: 'Chat with AI',
|
| 9 |
+
description: 'Ask your questions, brainstorm, and learn from the AI running on your device to be more productive.',
|
| 10 |
+
icon: MessageCircle,
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
number: '02',
|
| 14 |
+
title: 'Model Hub',
|
| 15 |
+
description: 'Access and manage various AI models directly from your device.',
|
| 16 |
+
icon: Grid,
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
number: '03',
|
| 20 |
+
title: 'Connect to Cloud AIs',
|
| 21 |
+
description: 'Seamlessly integrate with cloud-based AI services when needed.',
|
| 22 |
+
icon: Cloud,
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
number: '04',
|
| 26 |
+
title: 'Local API Server',
|
| 27 |
+
description: 'Run your own API server locally for complete control and privacy.',
|
| 28 |
+
icon: Server,
|
| 29 |
+
},
|
| 30 |
+
{
|
| 31 |
+
number: '05',
|
| 32 |
+
title: 'Chat with your files',
|
| 33 |
+
description: 'Interact with your documents and files using natural language.',
|
| 34 |
+
icon: FileText,
|
| 35 |
+
experimental: true,
|
| 36 |
+
},
|
| 37 |
+
];
|
| 38 |
+
|
| 39 |
+
export function FeaturesSection() {
|
| 40 |
+
return (
|
| 41 |
+
<section className="container space-y-16 py-24">
|
| 42 |
+
<h2 className="font-heading text-4xl md:text-5xl lg:text-6xl">Features</h2>
|
| 43 |
+
|
| 44 |
+
<div className="grid items-start gap-8 lg:grid-cols-2">
|
| 45 |
+
<div className="space-y-8">
|
| 46 |
+
{features.map(feature => (
|
| 47 |
+
<div key={feature.number} className="flex items-center gap-4">
|
| 48 |
+
<div className="font-heading text-3xl text-muted-foreground/50">{feature.number}</div>
|
| 49 |
+
<div className="space-y-2">
|
| 50 |
+
<div className="flex items-center gap-2">
|
| 51 |
+
<h3 className="text-xl font-semibold">{feature.title}</h3>
|
| 52 |
+
{feature.experimental && (
|
| 53 |
+
<Badge variant="secondary" className="text-xs">
|
| 54 |
+
Experimental
|
| 55 |
+
</Badge>
|
| 56 |
+
)}
|
| 57 |
+
</div>
|
| 58 |
+
<p className="text-muted-foreground">{feature.description}</p>
|
| 59 |
+
</div>
|
| 60 |
+
</div>
|
| 61 |
+
))}
|
| 62 |
+
</div>
|
| 63 |
+
|
| 64 |
+
<Image
|
| 65 |
+
src="https://jan.ai/assets/images/homepage/features01.png"
|
| 66 |
+
alt="App Screenshot Feature"
|
| 67 |
+
width={800}
|
| 68 |
+
height={800}
|
| 69 |
+
/>
|
| 70 |
+
</div>
|
| 71 |
+
</section>
|
| 72 |
+
);
|
| 73 |
+
}
|
src/middleware.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
| 1 |
-
import type { NextFetchEvent, NextRequest } from 'next/server';
|
| 2 |
-
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';
|
| 3 |
-
import createMiddleware from 'next-intl/middleware';
|
| 4 |
-
import { routing } from './libs/i18nNavigation';
|
| 5 |
-
|
| 6 |
-
const intlMiddleware = createMiddleware(routing);
|
| 7 |
-
|
| 8 |
-
const isProtectedRoute = createRouteMatcher([
|
| 9 |
-
'/dashboard(.*)',
|
| 10 |
-
'/:locale/dashboard(.*)',
|
| 11 |
-
]);
|
| 12 |
-
|
| 13 |
-
const isAuthPage = createRouteMatcher([
|
| 14 |
-
'/sign-in(.*)',
|
| 15 |
-
'/:locale/sign-in(.*)',
|
| 16 |
-
'/sign-up(.*)',
|
| 17 |
-
'/:locale/sign-up(.*)',
|
| 18 |
-
]);
|
| 19 |
-
|
| 20 |
-
export default function middleware(
|
| 21 |
-
request: NextRequest,
|
| 22 |
-
event: NextFetchEvent,
|
| 23 |
-
) {
|
| 24 |
-
// Run Clerk middleware only when it's necessary
|
| 25 |
-
if (
|
| 26 |
-
isAuthPage(request) || isProtectedRoute(request)
|
| 27 |
-
) {
|
| 28 |
-
return clerkMiddleware(async (auth, req) => {
|
| 29 |
-
if (isProtectedRoute(req)) {
|
| 30 |
-
const locale
|
| 31 |
-
= req.nextUrl.pathname.match(/(\/.*)\/dashboard/)?.at(1) ?? '';
|
| 32 |
-
|
| 33 |
-
const signInUrl = new URL(`${locale}/sign-in`, req.url);
|
| 34 |
-
|
| 35 |
-
await auth.protect({
|
| 36 |
-
// `unauthenticatedUrl` is needed to avoid error: "Unable to find `next-intl` locale because the middleware didn't run on this request"
|
| 37 |
-
unauthenticatedUrl: signInUrl.toString(),
|
| 38 |
-
});
|
| 39 |
-
}
|
| 40 |
-
|
| 41 |
-
return intlMiddleware(req);
|
| 42 |
-
})(request, event);
|
| 43 |
-
}
|
| 44 |
-
|
| 45 |
-
return intlMiddleware(request);
|
| 46 |
-
}
|
| 47 |
-
|
| 48 |
-
export const config = {
|
| 49 |
-
matcher: [
|
| 50 |
-
// Skip Next.js internals and all static files, unless found in search params
|
| 51 |
-
'/((?!_next|monitoring|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)',
|
| 52 |
-
// Always run for API routes
|
| 53 |
-
'/(api|trpc)(.*)',
|
| 54 |
-
],
|
| 55 |
-
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/styles/global.css
CHANGED
|
@@ -1,3 +1,73 @@
|
|
| 1 |
@tailwind base;
|
| 2 |
@tailwind components;
|
| 3 |
@tailwind utilities;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
@tailwind base;
|
| 2 |
@tailwind components;
|
| 3 |
@tailwind utilities;
|
| 4 |
+
|
| 5 |
+
@layer base {
|
| 6 |
+
:root {
|
| 7 |
+
/* Font */
|
| 8 |
+
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
| 9 |
+
--font-heading: 'Cal Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
|
| 10 |
+
sans-serif;
|
| 11 |
+
|
| 12 |
+
/* Colors */
|
| 13 |
+
--background: 0 0% 100%;
|
| 14 |
+
--foreground: 0 0% 3.9%;
|
| 15 |
+
|
| 16 |
+
--card: 0 0% 100%;
|
| 17 |
+
--card-foreground: 0 0% 3.9%;
|
| 18 |
+
|
| 19 |
+
--popover: 0 0% 100%;
|
| 20 |
+
--popover-foreground: 0 0% 3.9%;
|
| 21 |
+
|
| 22 |
+
--primary: 0 0% 9%;
|
| 23 |
+
--primary-foreground: 0 0% 98%;
|
| 24 |
+
|
| 25 |
+
--secondary: 0 0% 96.1%;
|
| 26 |
+
--secondary-foreground: 0 0% 9%;
|
| 27 |
+
|
| 28 |
+
--muted: 0 0% 96.1%;
|
| 29 |
+
--muted-foreground: 0 0% 45.1%;
|
| 30 |
+
|
| 31 |
+
--accent: 0 0% 96.1%;
|
| 32 |
+
--accent-foreground: 0 0% 9%;
|
| 33 |
+
|
| 34 |
+
--destructive: 0 84.2% 60.2%;
|
| 35 |
+
--destructive-foreground: 0 0% 98%;
|
| 36 |
+
|
| 37 |
+
--border: 0 0% 89.8%;
|
| 38 |
+
--input: 0 0% 89.8%;
|
| 39 |
+
--ring: 0 0% 3.9%;
|
| 40 |
+
|
| 41 |
+
--radius: 0.5rem;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
.dark {
|
| 45 |
+
--background: 0 0% 3.9%;
|
| 46 |
+
--foreground: 0 0% 98%;
|
| 47 |
+
|
| 48 |
+
--card: 0 0% 3.9%;
|
| 49 |
+
--card-foreground: 0 0% 98%;
|
| 50 |
+
|
| 51 |
+
--popover: 0 0% 3.9%;
|
| 52 |
+
--popover-foreground: 0 0% 98%;
|
| 53 |
+
|
| 54 |
+
--primary: 0 0% 98%;
|
| 55 |
+
--primary-foreground: 0 0% 9%;
|
| 56 |
+
|
| 57 |
+
--secondary: 0 0% 14.9%;
|
| 58 |
+
--secondary-foreground: 0 0% 98%;
|
| 59 |
+
|
| 60 |
+
--muted: 0 0% 14.9%;
|
| 61 |
+
--muted-foreground: 0 0% 63.9%;
|
| 62 |
+
|
| 63 |
+
--accent: 0 0% 14.9%;
|
| 64 |
+
--accent-foreground: 0 0% 98%;
|
| 65 |
+
|
| 66 |
+
--destructive: 0 62.8% 30.6%;
|
| 67 |
+
--destructive-foreground: 0 0% 98%;
|
| 68 |
+
|
| 69 |
+
--border: 0 0% 14.9%;
|
| 70 |
+
--input: 0 0% 14.9%;
|
| 71 |
+
--ring: 0 0% 83.1%;
|
| 72 |
+
}
|
| 73 |
+
}
|
src/utils/Helpers.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
| 1 |
import { routing } from '@/libs/i18nNavigation';
|
|
|
|
|
|
|
| 2 |
|
| 3 |
export const getBaseUrl = () => {
|
| 4 |
if (process.env.NEXT_PUBLIC_APP_URL) {
|
|
@@ -26,3 +28,9 @@ export const getI18nPath = (url: string, locale: string) => {
|
|
| 26 |
|
| 27 |
return `/${locale}${url}`;
|
| 28 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import { routing } from '@/libs/i18nNavigation';
|
| 2 |
+
import { type ClassValue, clsx } from 'clsx';
|
| 3 |
+
import { twMerge } from 'tailwind-merge';
|
| 4 |
|
| 5 |
export const getBaseUrl = () => {
|
| 6 |
if (process.env.NEXT_PUBLIC_APP_URL) {
|
|
|
|
| 28 |
|
| 29 |
return `/${locale}${url}`;
|
| 30 |
};
|
| 31 |
+
|
| 32 |
+
export function cn(...inputs: ClassValue[]) {
|
| 33 |
+
return twMerge(clsx(inputs));
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
export const isDevMode = process.env.NODE_ENV !== 'production';
|
tailwind.config.ts
CHANGED
|
@@ -1,9 +1,63 @@
|
|
| 1 |
import type { Config } from 'tailwindcss';
|
| 2 |
|
| 3 |
-
|
| 4 |
-
|
|
|
|
| 5 |
theme: {
|
| 6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
},
|
| 8 |
plugins: [],
|
| 9 |
} satisfies Config;
|
|
|
|
|
|
|
|
|
| 1 |
import type { Config } from 'tailwindcss';
|
| 2 |
|
| 3 |
+
const config = {
|
| 4 |
+
darkMode: ['class'],
|
| 5 |
+
content: ['./pages/**/*.{ts,tsx}', './components/**/*.{ts,tsx}', './app/**/*.{ts,tsx}', './src/**/*.{ts,tsx}'],
|
| 6 |
theme: {
|
| 7 |
+
container: {
|
| 8 |
+
center: true,
|
| 9 |
+
padding: '2rem',
|
| 10 |
+
screens: {
|
| 11 |
+
'2xl': '1400px',
|
| 12 |
+
},
|
| 13 |
+
},
|
| 14 |
+
extend: {
|
| 15 |
+
fontFamily: {
|
| 16 |
+
heading: ['var(--font-heading)', 'sans-serif'],
|
| 17 |
+
},
|
| 18 |
+
colors: {
|
| 19 |
+
border: 'hsl(var(--border))',
|
| 20 |
+
input: 'hsl(var(--input))',
|
| 21 |
+
ring: 'hsl(var(--ring))',
|
| 22 |
+
background: 'hsl(var(--background))',
|
| 23 |
+
foreground: 'hsl(var(--foreground))',
|
| 24 |
+
primary: {
|
| 25 |
+
DEFAULT: 'hsl(var(--primary))',
|
| 26 |
+
foreground: 'hsl(var(--primary-foreground))',
|
| 27 |
+
},
|
| 28 |
+
secondary: {
|
| 29 |
+
DEFAULT: 'hsl(var(--secondary))',
|
| 30 |
+
foreground: 'hsl(var(--secondary-foreground))',
|
| 31 |
+
},
|
| 32 |
+
destructive: {
|
| 33 |
+
DEFAULT: 'hsl(var(--destructive))',
|
| 34 |
+
foreground: 'hsl(var(--destructive-foreground))',
|
| 35 |
+
},
|
| 36 |
+
muted: {
|
| 37 |
+
DEFAULT: 'hsl(var(--muted))',
|
| 38 |
+
foreground: 'hsl(var(--muted-foreground))',
|
| 39 |
+
},
|
| 40 |
+
accent: {
|
| 41 |
+
DEFAULT: 'hsl(var(--accent))',
|
| 42 |
+
foreground: 'hsl(var(--accent-foreground))',
|
| 43 |
+
},
|
| 44 |
+
popover: {
|
| 45 |
+
DEFAULT: 'hsl(var(--popover))',
|
| 46 |
+
foreground: 'hsl(var(--popover-foreground))',
|
| 47 |
+
},
|
| 48 |
+
card: {
|
| 49 |
+
DEFAULT: 'hsl(var(--card))',
|
| 50 |
+
foreground: 'hsl(var(--card-foreground))',
|
| 51 |
+
},
|
| 52 |
+
},
|
| 53 |
+
borderRadius: {
|
| 54 |
+
lg: 'var(--radius)',
|
| 55 |
+
md: 'calc(var(--radius) - 2px)',
|
| 56 |
+
sm: 'calc(var(--radius) - 4px)',
|
| 57 |
+
},
|
| 58 |
+
},
|
| 59 |
},
|
| 60 |
plugins: [],
|
| 61 |
} satisfies Config;
|
| 62 |
+
|
| 63 |
+
export default config;
|