Spaces:
Running
Running
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;
|