From 75da183c6c4ab19febf3150a7034172cd70a15ea Mon Sep 17 00:00:00 2001 From: Nazar Kornienko Date: Mon, 28 Oct 2024 18:20:17 +0100 Subject: [PATCH] v1.3.0-canary.7 --- .env.example | 42 +- .gitattributes | 171 - .gitignore | 2 + .npmrc | 1 - .putout.json | 731 - license => LICENSE.md | 4 +- README.md | 10 +- addons/cluster/components/Onboarding.md | 43 - addons/cluster/components/Onboarding.tsx | 206 - .../cluster/components/ui/cluster-readme.tsx | 6 - .../cluster/temp/![delete-in-1.3.0]!/.gitkeep | 0 addons/cluster/temp/.lintstagedrc.json.txt | 12 - addons/cluster/temp/.madrun.js.txt | 21 - addons/cluster/temp/.npmcheckrc.txt | 38 - addons/cluster/temp/.prettierignore.txt | 22 - .../temp/.react-19-only/BoardList.tsx.txt | 80 - .../temp/.react-19-only/CreateBoard.tsx.txt | 29 - .../temp/.react-19-only/EditableText.tsx.txt | 89 - .../.react-19-only/ReactActionState.tsx.txt | 182 - .../.react-19-only/RxjsSignalsTest.tsx.txt | 52 - .../temp/.react-19-only/SignIn.tsx.txt | 126 - .../temp/.react-19-only/SubmitButton.tsx.txt | 57 - .../cluster/temp/.react-19-only/board.tsx.txt | 121 - .../.react-19-only/boards-auth-action.ts.txt | 318 - .../.react-19-only/boards/[id]/page.tsx.txt | 35 - .../cluster/temp/.react-19-only/card.tsx.txt | 255 - .../temp/.react-19-only/column.tsx.txt | 347 - addons/cluster/temp/.storybook/main.ts.txt | 23 - addons/cluster/temp/.swcrc.txt | 40 - addons/cluster/temp/.thing/WT.md.txt | 7 - .../.thing/hooks/discord_webhook.json.txt | 35 - .../.thing/hooks/github_pr_opened.json.txt | 532 - .../hooks/stripe_payment_failed.json.txt | 408 - .../hooks/stripe_payment_succeeded.json.txt | 218 - .../temp/.tokenami/tokenami.config.ts.txt | 73 - .../temp/.tokenami/tokenami.env.ci.d.ts.txt | 8 - .../temp/.tokenami/tokenami.env.d.ts.txt | 21 - .../temp/CartSheetClientEdition.tsx.txt | 184 - .../temp/ComboboxOld/ComboboxContext.tsx.txt | 56 - .../temp/ComboboxOld/ComboboxHandler.tsx.txt | 91 - .../temp/ComboboxOld/ComboboxOld.tsx.txt | 77 - .../temp/ComboboxOld/ProductList.tsx.txt | 47 - .../temp/ComboboxOld/ThemeCommands.tsx.txt | 52 - addons/cluster/temp/__fs.ts.txt | 63 - addons/cluster/temp/__i18n.deprecated.txt | 57 - addons/cluster/temp/__middleware.ts.txt | 70 - addons/cluster/temp/__rest.tsx.txt | 15 - addons/cluster/temp/__trpc.ts.txt | 177 - addons/cluster/temp/academy-crypto.ts.txt | 59 - addons/cluster/temp/academy-handler.ts.txt | 25 - addons/cluster/temp/academy-hash.ts.txt | 37 - addons/cluster/temp/app.await.txt | 249 - addons/cluster/temp/app.ts.txt | 311 - addons/cluster/temp/auth-newest.txt | 276 - addons/cluster/temp/auth-server.ts.txt | 228 - addons/cluster/temp/auth.ts.txt | 101 - addons/cluster/temp/auth/adapter.ts.txt | 94 - addons/cluster/temp/auth/config.ts.txt | 55 - addons/cluster/temp/auth/config2.ts.txt | 39 - addons/cluster/temp/auth/temp.txt | 172 - addons/cluster/temp/ava.config.js.txt | 31 - addons/cluster/temp/babel.config.txt | 17 - addons/cluster/temp/biome-new.json.txt | 184 - addons/cluster/temp/biome.json.txt | 31 - addons/cluster/temp/commitlint.config.cjs.txt | 24 - .../cluster/temp/config/json/appts.json.txt | 13 - addons/cluster/temp/cors.js.txt | 80 - addons/cluster/temp/csp.js.txt | 243 - addons/cluster/temp/dep-pkg.txt | 323 - addons/cluster/temp/drizzle.config.txt | 216 - addons/cluster/temp/error.tsx.txt | 91 - .../temp/eslint.config.deprecated.a.txt | 741 - .../temp/eslint.config.deprecated.b.txt | 2300 -- .../temp/eslint.config.deprecated.c.txt | 105 - addons/cluster/temp/exporter.txt | 117 - addons/cluster/temp/extend.txt | 66 - addons/cluster/temp/features.tsx.txt | 376 - addons/cluster/temp/h-variants.tsx.txt | 47 - addons/cluster/temp/instrumentation.ts.txt | 26 - addons/cluster/temp/intl.ts.txt | 56 - addons/cluster/temp/jest.config.txt | 36 - addons/cluster/temp/jest.setup.ts.txt | 17 - addons/cluster/temp/json.ts.txt | 177 - addons/cluster/temp/liveblocks-room.tsx.txt | 37 - .../cluster/temp/liveblocks-showdown.tsx.txt | 289 - .../temp/liveblocks-users-online.tsx.txt | 58 - .../temp/liveblocks-visitors-cursors.tsx.txt | 152 - addons/cluster/temp/liveblocks.config.ts.txt | 141 - addons/cluster/temp/locale-layout.tsx.txt | 90 - .../localization-gsap-useeffect-error.txt | 548 - .../temp/localization-useeffect-error.txt | 337 - addons/cluster/temp/manifest.ts.txt | 45 - addons/cluster/temp/mdx-components.tsx.txt | 34 - addons/cluster/temp/mdx-components.txt | 121 - addons/cluster/temp/media.ts.txt | 64 - addons/cluster/temp/middleware-new.ts.txt | 264 - addons/cluster/temp/middleware.ts.txt | 198 - addons/cluster/temp/middleware2.ts.txt | 125 - addons/cluster/temp/middleware3.ts.txt | 47 - addons/cluster/temp/middleware4.ts.txt | 190 - addons/cluster/temp/mw.ts.txt | 155 - addons/cluster/temp/navigation.ts.txt | 170 - addons/cluster/temp/navigation2.txt | 52 - addons/cluster/temp/next-intl.d.ts.txt | 14 - addons/cluster/temp/next.config.js.txt | 257 - addons/cluster/temp/no-restricted-imports.txt | 119 - addons/cluster/temp/not-found.tsx.txt | 93 - addons/cluster/temp/page.tsx.txt | 42 - addons/cluster/temp/planetscale.txt | 136 - addons/cluster/temp/playwright.config.ts.txt | 28 - addons/cluster/temp/populate-user-auth.ts.txt | 288 - addons/cluster/temp/prettier.config.cjs.txt | 56 - addons/cluster/temp/python-helpers.ts.txt | 76 - addons/cluster/temp/python-shell.ts.txt | 77 - addons/cluster/temp/python.main.txt | 168 - .../cluster/temp/reliverse-addons-index.txt | 110 - addons/cluster/temp/robots.ts.txt | 19 - addons/cluster/temp/rs-canary.ts.txt | 112 - .../server-action/check-user-button.tsx.txt | 23 - .../clerk-user-button-server.tsx.txt | 18 - .../cluster/temp/server-action/client.tsx.txt | 11 - .../cluster/temp/server-action/page.tsx.txt | 9 - addons/cluster/temp/sitemap.ts.txt | 63 - addons/cluster/temp/socials.ts.txt | 96 - addons/cluster/temp/stripe-helpers.ts.txt | 44 - addons/cluster/temp/stripe-route.ts.txt | 475 - addons/cluster/temp/stylelint.config.js.txt | 11 - addons/cluster/temp/test.ts.txt | 19 - .../cluster/temp/tests/ava/ava-test-a.ts.txt | 16 - .../cluster/temp/tests/ava/ava-test-b.ts.txt | 22 - .../tests/ava/swc/tests/ava/ava-test-a.js.txt | 9 - .../tests/ava/swc/tests/ava/ava-test-b.js.txt | 16 - .../cluster/temp/tests/jest/cart.test.ts.txt | 83 - addons/cluster/temp/tokens.css.txt | 41 - addons/cluster/temp/types-info.ts.txt | 61 - addons/cluster/temp/typestat.json.txt | 37 - addons/cluster/temp/typestat2.json.txt | 36 - .../cluster/temp/unused-lang-switcher.tsx.txt | 41 - addons/cluster/temp/use-swr/Pokemon.tsx.txt | 29 - addons/cluster/temp/use-swr/page.tsx.txt | 25 - addons/cluster/temp/use-swr/use-swr.ts.txt | 11 - addons/cluster/temp/useSiteNavigation.ts.txt | 97 - addons/cluster/temp/wallaby.cjs.txt | 31 - addons/cluster/temp/warn-gen.ts.txt | 2 - addons/cluster/temp/warn-push.ts.txt | 2 - addons/cluster/temp/zip-helpers.ts.txt | 358 - .../temp/zustand-locale-layout.tsx.txt | 162 - addons/scripts/manager.ts | 155 - .../scripts/reliverse/academy/achievements.ts | 116 - .../reliverse/academy/checkJsonFiles.ts | 249 - addons/scripts/reliverse/academy/config.json | 3 - .../reliverse/academy/data/players.json | 23 - .../reliverse/academy/data/progress.json | 24 - .../academy/data/schema-players.json | 61 - .../academy/data/schema-progress.json | 22 - .../scripts/reliverse/academy/fileHandler.ts | 43 - .../reliverse/academy/fileProcessor.ts | 75 - addons/scripts/reliverse/academy/game.ts | 332 - addons/scripts/reliverse/academy/index.ts | 125 - addons/scripts/reliverse/academy/leaders.ts | 37 - addons/scripts/reliverse/academy/player.ts | 113 - .../reliverse/academy/questions/bonus.json | 123 - .../reliverse/academy/questions/eslint.json | 550 - .../academy/questions/javascript.json | 286 - .../reliverse/academy/questions/react.json | 197 - .../academy/questions/reliverse.json | 772 - .../academy/questions/typescript.json | 262 - addons/scripts/reliverse/academy/schema.json | 47 - addons/scripts/reliverse/academy/settings.ts | 30 - addons/scripts/reliverse/academy/types.ts | 35 - addons/scripts/reliverse/disabler/index.ts | 442 - addons/scripts/reliverse/gitutils/index.ts | 1 - .../scripts/reliverse/gitutils/utils/index.ts | 3 - .../reliverse/gitutils/utils/release.ts | 35 - .../scripts/reliverse/gitutils/utils/shell.ts | 36 - .../reliverse/presets/drizzle/index.ts | 5 - addons/scripts/reliverse/presets/index.ts | 40 - .../scripts/reliverse/presets/utils/index.ts | 1 - .../scripts/reliverse/presets/utils/vscode.ts | 69 - .../presets/vscode/default/extensions.json | 23 - .../presets/vscode/default/launch.json | 74 - .../presets/vscode/default/settings.json | 454 - .../scripts/reliverse/presets/vscode/index.ts | 37 - .../presets/vscode/minimal/extensions.json | 8 - .../presets/vscode/minimal/launch.json | 74 - .../presets/vscode/minimal/settings.json | 343 - .../presets/vscode/nothing/extensions.json | 3 - .../presets/vscode/nothing/launch.json | 6 - .../presets/vscode/nothing/settings.json | 22 - .../presets/vscode/ultimate/extensions.json | 31 - .../presets/vscode/ultimate/launch.json | 74 - .../presets/vscode/ultimate/settings.json | 487 - addons/scripts/reliverse/quotes/index.ts | 132 - addons/scripts/reliverse/quotes/lines.ts | 101 - addons/scripts/reliverse/quotes/more.ts | 52 - addons/scripts/reliverse/quotes/types.ts | 1 - .../scripts/reliverse/relicon/crud/index.ts | 84 - .../scripts/reliverse/relicon/crud/prompts.ts | 17 - addons/scripts/reliverse/relicon/index.ts | 94 - .../setup/configs/.putout.recommended.json | 731 - .../setup/configs/.putout.rules-disabled.json | 731 - .../setup/configs/biome.recommended.json | 92 - .../setup/configs/biome.rules-disabled.json | 191 - .../relicon/setup/configs/env.recommended.ts | 206 - .../setup/configs/env.rules-disabled.ts | 200 - .../setup/configs/eslint.config.medium.ts | 1239 - .../setup/configs/eslint.config.minimal.ts | 94 - .../configs/eslint.config.rules-disabled.ts | 2507 -- .../setup/configs/eslint.config.ultimate.ts | 2507 -- .../setup/configs/knip.recommended.json | 322 - .../setup/configs/knip.rules-disabled.json | 10 - .../setup/configs/next.config.minimal.ts | 73 - .../setup/configs/next.config.recommended.ts | 146 - .../setup/configs/ts.config.default.json | 55 - .../setup/configs/ts.config.minimal.json | 34 - .../scripts/reliverse/relicon/setup/index.ts | 155 - .../reliverse/relicon/setup/prompt/appts.ts | 224 - .../reliverse/relicon/setup/prompt/biome.ts | 72 - .../reliverse/relicon/setup/prompt/env.ts | 210 - .../reliverse/relicon/setup/prompt/envjs.ts | 105 - .../reliverse/relicon/setup/prompt/eslint.ts | 99 - .../reliverse/relicon/setup/prompt/index.ts | 13 - .../reliverse/relicon/setup/prompt/knip.ts | 72 - .../reliverse/relicon/setup/prompt/nextjs.ts | 114 - .../reliverse/relicon/setup/prompt/putout.ts | 75 - .../scripts/reliverse/relicon/setup/types.ts | 39 - .../scripts/reliverse/relimter/astx/index.ts | 53 - .../astx/tasks/block-to-line-comments.ts | 6 - .../reliverse/relimter/astx/tasks/index.ts | 4 - addons/scripts/reliverse/relimter/canary.ts | 109 - .../reliverse/relimter/codeup/index.ts | 91 - .../reliverse/relimter/codeup/tasks/index.ts | 91 - .../reliverse/relimter/codeup/types.ts | 11 - .../core/env/check-missing-variables.ts | 64 - .../core/env/check-unexpected-variables.ts | 75 - .../core/env/components/MissingVariables.tsx | 162 - .../reliverse/relimter/core/env/env-loader.ts | 26 - .../relimter/core/env/get-missing.ts | 78 - .../reliverse/relimter/core/env/helpers.ts | 10 - .../reliverse/relimter/core/env/index.ts | 33 - .../relimter/core/env/log-messages.ts | 74 - .../scripts/reliverse/relimter/core/index.ts | 46 - .../core/tasks/! USE AT OWN RISK !/.gitkeep | 0 .../core/tasks/comments-transformer.ts | 345 - .../core/tasks/console-consola-switcher.ts | 104 - .../reliverse/relimter/core/tasks/convert.ts | 20 - .../relimter/core/tasks/db-compare.ts | 25 - .../reliverse/relimter/core/tasks/index.ts | 91 - .../core/tasks/islands-to-components.ts | 229 - .../core/tasks/linebreak-crlf-to-lf.ts | 49 - .../core/tasks/move-eslint-disable-to-top.ts | 70 - .../core/tasks/no-unresolved-links.ts | 113 - .../core/tasks/patch-gitignore-file.ts | 61 - .../relimter/core/tasks/removeEmptyLines.ts | 100 - .../reliverse/relimter/core/tasks/seed-db.ts | 26 - .../reliverse/relimter/core/tasks/switcher.ts | 9 - .../reliverse/relimter/eslint/index.ts | 46 - .../reliverse/relimter/eslint/tasks/index.ts | 43 - addons/scripts/reliverse/relimter/index.ts | 143 - .../reliverse/relimter/magicast/index.ts | 46 - .../relimter/magicast/tasks/index.ts | 5 - .../magicast/tasks/switch-drizzle-driver.ts | 11 - .../relimter/magicast/tasks/tests/index.ts | 21 - .../reliverse/relimter/putout/index.ts | 46 - .../reliverse/relimter/putout/tasks/canary.ts | 91 - .../reliverse/relimter/putout/tasks/index.ts | 10 - .../python/data/find-eslint-dep-rules.json | 634 - .../python/data/script-manager-filter.json | 41 - .../reliverse/relimter/python/index.py | 377 - .../python/tasks/! USE AT OWN RISK !/.gitkeep | 0 .../python/tasks/add-missing-ref-import.py | 50 - .../python/tasks/add-missing-url-import.py | 50 - .../python/tasks/avoid-hard-coded-numbers.py | 129 - .../tasks/barrel-files-to-direct-paths.py | 121 - .../python/tasks/barrel-shadcn-primitives.py | 76 - .../python/tasks/block-to-line-comments.py | 98 - .../python/tasks/check-non-existing-paths.py | 75 - .../python/tasks/check-path-existence.py | 63 - .../python/tasks/correct-comments-location.py | 60 - .../python/tasks/crypto-to-uncrypto.py | 68 - .../python/tasks/cspell-remove-unused.py | 47 - .../relimter/python/tasks/database-compare.py | 66 - .../relimter/python/tasks/database-convert.py | 39 - .../relimter/python/tasks/error-to-modern.py | 118 - .../relimter/python/tasks/eslint-find-off.py | 34 - .../python/tasks/extract-pages-keywords.py | 109 - .../python/tasks/find-deprecated-code.py | 105 - .../python/tasks/find-eslint-dep-rules.py | 64 - .../python/tasks/fix-import-paths-case.py | 45 - .../relimter/python/tasks/fix-type-imports.py | 50 - .../python/tasks/fix-use-directives.py | 51 - .../relimter/python/tasks/fs-to-fs-extra.py | 81 - .../relimter/python/tasks/import-comments.py | 42 - .../python/tasks/improve-seo-indexing.py | 104 - .../python/tasks/islands-to-components.py | 168 - .../python/tasks/json-parse-to-destr.py | 90 - .../python/tasks/json-to-superjson.py | 71 - .../python/tasks/knip-remove-ignores.py | 37 - .../python/tasks/linebreak-crlf-to-lf.py | 34 - .../python/tasks/list-disable-directives.py | 185 - .../python/tasks/list-variables-types.py | 234 - .../relimter/python/tasks/math-to-mathjs.py | 155 - .../tasks/migrate-from-barrel-fix-imports.py | 78 - .../python/tasks/move-use-client-to-top.py | 39 - .../relimter/python/tasks/named-imports.py | 64 - .../python/tasks/node-fetch-native.py | 104 - .../relimter/python/tasks/parse-content.py | 116 - .../relimter/python/tasks/path-to-pathe.py | 94 - .../python/tasks/print-project-tree.py | 126 - .../python/tasks/relimter-template-script.py | 4 - .../tasks/remove-duplicates-comments.py | 59 - .../python/tasks/remove-empty-lines.py | 114 - .../python/tasks/remove-unused-cn-imports.py | 54 - .../python/tasks/replace-icon-imports.py | 141 - .../python/tasks/save-file-multiple-times.py | 56 - .../python/tasks/search-used-brands.py | 155 - .../python/tasks/tags-to-components.py | 87 - .../python/tasks/toggle-all-eslint-rules.py | 31 - .../transform-classnames-cn-to-string.py | 56 - .../transform-classnames-string-to-cn.py | 68 - .../relimter/python/tasks/types-info.py | 68 - addons/scripts/reliverse/remotion/Content.tsx | 193 - addons/scripts/reliverse/remotion/Main.tsx | 52 - addons/scripts/reliverse/remotion/Root.tsx | 57 - addons/scripts/reliverse/remotion/cache.ts | 88 - .../scripts/reliverse/remotion/constants.ts | 14 - .../scripts/reliverse/remotion/fetch-data.ts | 83 - .../scripts/reliverse/remotion/gh-styles.css | 326 - addons/scripts/reliverse/remotion/index.ts | 5 - addons/scripts/reliverse/remotion/repo.tsx | 159 - addons/scripts/reliverse/remotion/utils.ts | 110 - .../scripts/reliverse/remotion/via-graphql.ts | 152 - addons/scripts/reliverse/remotion/via-rest.ts | 67 - .../reliverse/remotion/wait-for-no-input.ts | 26 - addons/scripts/reliverse/template/index.ts | 75 - addons/scripts/utils/addon.ts | 190 - addons/scripts/utils/index.ts | 1 - addons/scripts/utils/pm.ts | 93 - addons/scripts/utils/types/index.ts | 1 - biome.json | 21 +- bun.lockb | Bin 0 -> 608273 bytes components.json | 18 +- cspell.json | 868 - drizzle.config.ts | 20 +- eslint.config.js | 2472 +- eslint.setup.ts | 135 - knip.json | 335 - messages/{default => }/de-DE.json | 2 +- messages/ecommerce/de-DE.json | 604 - messages/ecommerce/en-US.json | 604 - messages/ecommerce/es-ES.json | 604 - messages/ecommerce/fa-IR.json | 604 - messages/ecommerce/fr-FR.json | 604 - messages/ecommerce/hi-IN.json | 604 - messages/ecommerce/it-IT.json | 604 - messages/ecommerce/pl-PL.json | 604 - messages/ecommerce/tr-TR.json | 604 - messages/ecommerce/uk-UA.json | 604 - messages/ecommerce/zh-CN.json | 604 - messages/{default => }/en-US.json | 2 +- messages/{default => }/es-ES.json | 2 +- messages/{default => }/fa-IR.json | 2 +- messages/{default => }/fr-FR.json | 2 +- messages/{default => }/hi-IN.json | 0 messages/{default => }/it-IT.json | 2 +- messages/ms-MY.json | 604 + messages/{default => }/pl-PL.json | 2 +- messages/{default => }/tr-TR.json | 2 +- messages/{default => }/uk-UA.json | 2 +- messages/{default => }/zh-CN.json | 2 +- next.config.js | 147 +- package.json | 454 +- packageJson.ts | 1481 - pnpm-lock.yaml | 28166 ---------------- postcss.config.js | 1 + public/images/auth-layout.webp | Bin 0 -> 173464 bytes public/images/avatar/logo.webp | Bin 0 -> 6496 bytes public/images/categories/backpack-one.webp | Bin 0 -> 71808 bytes public/images/categories/backpack-two.webp | Bin 0 -> 39406 bytes public/images/categories/bearing-one.webp | Bin 0 -> 10342 bytes public/images/categories/clothing-one.webp | Bin 0 -> 42596 bytes public/images/categories/deck-one.webp | Bin 0 -> 38770 bytes public/images/categories/griptape-one.webp | Bin 0 -> 96384 bytes public/images/categories/hardware-one.webp | Bin 0 -> 28046 bytes public/images/categories/shoes-one.webp | Bin 0 -> 62642 bytes public/images/categories/shoes-two.webp | Bin 0 -> 49350 bytes public/images/categories/skateboard-one.webp | Bin 0 -> 53646 bytes public/images/categories/skateboard-two.webp | Bin 0 -> 89336 bytes public/images/categories/tool-one.webp | Bin 0 -> 12540 bytes public/images/categories/truck-one.webp | Bin 0 -> 30566 bytes public/images/categories/wheel-one.webp | Bin 0 -> 15086 bytes public/og-old.png | Bin 2202788 -> 104681 bytes public/og.png | Bin 104681 -> 2202788 bytes public/screenshot-dark-old.png | Bin 331402 -> 158528 bytes public/screenshot-dark-very-old.png | Bin 0 -> 331402 bytes public/screenshot-dark.png | Bin 158528 -> 106435 bytes public/screenshot-light-old.png | Bin 331402 -> 149918 bytes public/screenshot-light-very-old.png | Bin 0 -> 331402 bytes public/screenshot-light.png | Bin 149918 -> 106825 bytes public/site.webmanifest | 14 + pyproject.toml | 0 reliverse.addons.ts | 66 - reliverse.config.ts | 53 - reliverse.i18n.ts | 82 - reliverse.info.ts | 108 - reliverse.setup.ts | 4 - reliverse.themes.ts | 10 - remotion.config.ts | 5 - reset.d.ts | 2 - src/app.ts | 226 - .../(auth)/_components/logout-buttons.tsx | 49 + .../(auth)/_components/oauth-signin.tsx | 68 + .../reset-password-confirm-form.tsx | 157 + .../_components/reset-password-form.tsx | 95 + .../(auth)/_components/signin-form.tsx | 113 + .../(auth)/_components/signup-form.tsx | 111 + .../(auth)/_components/sso-callback.tsx | 30 + .../(auth)/_components/verify-email-form.tsx | 101 + src/app/[locale]/(auth)/layout.tsx | 49 + .../(auth)/signin/[[...signin]]/page.tsx | 71 + .../[[...reset-password]]/page.tsx | 36 + .../confirm/[[...confirm]]/page.tsx | 36 + .../(auth)/signout/[[...signout]]/page.tsx | 30 + .../(auth)/signup/[[...signup]]/page.tsx | 62 + .../verify-email/[[...verify-email]]/page.tsx | 36 + .../sso-callback/[[...sso-callback]]/page.tsx | 13 + src/app/[locale]/(checkout)/cart/layout.tsx | 22 + .../{ => (checkout)}/cart/loading.tsx | 64 +- src/app/[locale]/(checkout)/cart/page.tsx | 72 + .../(checkout)/checkout/[storeId]/error.tsx | 26 + .../(checkout)/checkout/[storeId]/loading.tsx | 78 + .../(checkout)/checkout/[storeId]/page.tsx | 173 + .../checkout/[storeId]/success/loading.tsx | 58 +- .../checkout/[storeId]/success/page.tsx | 164 + .../[locale]/(checkout)/checkout/layout.tsx | 15 + .../[[...rest]]/_components/user-profile.tsx | 29 + .../account/[[...rest]]}/loading.tsx | 16 +- .../dashboard/account/[[...rest]]/page.tsx | 35 + .../billing/_components/billing-skeleton.tsx | 68 + .../dashboard/billing/_components/billing.tsx | 136 + .../(dashboard)/dashboard/billing/page.tsx | 72 + .../[locale]/(dashboard)/dashboard/layout.tsx | 119 + .../purchases/[purchaseId]/loading.tsx | 42 + .../dashboard/purchases/[purchaseId]/page.tsx | 112 + .../(dashboard)/dashboard/purchases/page.tsx | 146 + .../update-notification-form-skeleton.tsx} | 13 +- .../_components/update-notification-form.tsx} | 89 +- .../(dashboard)/dashboard/settings/page.tsx | 75 + .../_components/create-store-dialog.tsx | 228 + .../_components/create-store-form.tsx | 78 + .../_components/dashboard-header.tsx | 28 + .../_components/dashboard-sidebar-sheet.tsx | 64 + .../_components/dashboard-sidebar.tsx | 85 + .../[storeId]/_components/store-switcher.tsx | 162 + .../_components/storeSwitcherActions.ts | 27 + .../analytics/_components/overview-card.tsx | 49 + .../analytics/_components/sales-chart.tsx | 28 + .../stores/[storeId]/analytics/page.tsx | 238 + .../[storeId]/customers/[customerId]/page.tsx | 168 + .../stores/[storeId]/customers/page.tsx | 150 + .../dashboard/stores/[storeId]/error.tsx | 28 + .../dashboard/stores/[storeId]/layout.tsx | 32 + .../dashboard/stores/[storeId]/loading.tsx | 10 +- .../dashboard/stores/[storeId]/not-found.tsx | 15 + .../[storeId]/orders/[orderId]/loading.tsx | 34 + .../[storeId]/orders/[orderId]/page.tsx | 90 + .../stores/[storeId]/orders/page.tsx | 158 + .../dashboard/stores/[storeId]/page.tsx | 233 + .../_components/update-product-form.tsx | 339 + .../products/[productId]/loading.tsx} | 4 +- .../products/[productId]/not-found.tsx | 23 + .../[storeId]/products/[productId]/page.tsx | 65 + .../new/_components/create-product-form.tsx | 337 + .../[storeId]/products/new/loading.tsx} | 4 +- .../stores/[storeId]/products/new/page.tsx | 53 + .../stores/[storeId]/products/page.tsx | 158 + .../update-notification-form-skeleton.tsx | 21 + .../_components/update-notification-form.tsx | 151 + .../stores/[storeId]/settings/page.tsx | 76 + .../(dashboard)/dashboard/stores/loading.tsx | 25 + .../(dashboard)/dashboard/stores/page.tsx | 38 + .../onboarding/_components/connect-stripe.tsx | 74 + .../onboarding/_components/create-store.tsx | 101 + .../onboarding/_components/intro.tsx | 82 + .../onboarding/_components/onboarding.tsx | 28 + .../onboarding/_components/step-header.tsx | 31 + .../[locale]/(dashboard)/onboarding/page.tsx | 38 + .../(content)/[...slug]/not-found.tsx.txt | 15 + .../(lobby)/(content)/[...slug]/page.tsx.txt | 117 + .../(content)/blog/[...slug]/loading.tsx | 43 + .../(content)/blog/[...slug]/not-found.tsx | 15 + .../(lobby)/(content)/blog/[...slug]/page.tsx | 179 + .../blog/_components/post-card-skeleton.tsx | 18 + .../(content)/blog/_components/post-card.tsx | 46 + .../[locale]/(lobby)/(content)/blog/page.tsx | 50 + .../(lobby)/@modal/(.)preview/layout.tsx | 11 + .../product/[productId]/loading.tsx | 29 + .../product/[productId]/not-found.tsx | 15 + .../(.)preview/product/[productId]/page.tsx | 98 + src/app/[locale]/(lobby)/@modal/default.tsx | 3 + .../_components/category-card-skeleton.tsx | 16 + .../(lobby)/_components/category-card.tsx | 59 + .../(lobby)/_components/lobby-skeleton.tsx | 86 + .../[locale]/(lobby)/_components/lobby.tsx | 133 + .../[locale]/(lobby)/build-a-board/page.tsx | 106 + .../[category]/[subcategory]/page.tsx | 75 + .../collections/[category]/loading.tsx} | 2 +- .../(lobby)/collections/[category]/page.tsx | 52 + src/app/[locale]/(lobby)/layout.tsx | 23 + src/app/[locale]/(lobby)/page.tsx | 32 + .../preview/product}/[productId]/page.tsx | 4 +- .../_components/add-to-cart-form.tsx | 186 + .../update-product-rating-button.tsx | 59 + .../(lobby)/product/[productId]/loading.tsx | 90 + .../(lobby)/product/[productId]/not-found.tsx | 15 + .../(lobby)/product/[productId]/page.tsx | 187 + src/app/[locale]/(lobby)/products/loading.tsx | 25 + src/app/[locale]/(lobby)/products/page.tsx | 40 + src/app/[locale]/(lobby)/stores/loading.tsx | 25 + src/app/[locale]/(lobby)/stores/page.tsx | 38 + src/app/[locale]/about/layout.tsx | 9 - src/app/[locale]/about/page.tsx | 69 - .../[locale]/auth/block/[[...block]]/page.tsx | 21 - src/app/[locale]/auth/layout.tsx | 34 - src/app/[locale]/auth/page.tsx | 13 - .../auth/sign-in/[[...sign-in]]/page.tsx | 108 - .../auth/sign-in/[[...sign-in]]/page.txt | 124 - src/app/[locale]/auth/sign-in/layout.tsx | 9 - .../sign-in/recover/[[...recover]]/page.tsx | 33 - .../recover/step-two/[[...step-two]]/page.tsx | 33 - .../auth/sign-out/[[...sign-out]]/page.tsx | 52 - src/app/[locale]/auth/sign-out/layout.tsx | 9 - src/app/[locale]/auth/sign-out/loading.tsx | 28 - .../auth/sign-sso/[[...sign-sso]]/page.tsx | 14 - .../auth/sign-up/[[...sign-up]]/page.tsx | 108 - .../auth/sign-up/[[...sign-up]]/page.txt | 59 - src/app/[locale]/auth/sign-up/layout.tsx | 9 - .../verify-email/[[...verify-email]]/page.tsx | 33 - src/app/[locale]/blog/layout.tsx | 15 - src/app/[locale]/blog/page.tsx | 47 - src/app/[locale]/cart/layout.tsx | 25 - src/app/[locale]/cart/page.tsx | 34 - src/app/[locale]/cart/page.txt | 128 - .../[category]/[subcategory]/page.tsx | 48 - .../[category]/[subcategory]/page.tsx.txt | 114 - .../[locale]/categories/[category]/page.tsx | 47 - .../categories/[category]/page.tsx.txt | 119 - src/app/[locale]/categories/layout.tsx | 15 - .../[locale]/checkout/[storeId]/layout.tsx | 23 - .../[locale]/checkout/[storeId]/loading.tsx | 163 - src/app/[locale]/checkout/[storeId]/page.tsx | 279 - .../checkout/[storeId]/success/page.tsx | 200 - src/app/[locale]/checkout/layout.tsx | 9 - src/app/[locale]/contact/layout.tsx | 9 - src/app/[locale]/contact/page.tsx | 27 - src/app/[locale]/custom/clothing/page.tsx | 165 - src/app/[locale]/custom/layout.tsx | 15 - .../dashboard/account/manage/loading.tsx | 36 - .../dashboard/account/manage/page.tsx | 49 - src/app/[locale]/dashboard/account/page.tsx | 79 - .../dashboard/admin/countries/page.tsx | 16 - src/app/[locale]/dashboard/admin/layout.tsx | 23 - src/app/[locale]/dashboard/admin/page.tsx | 124 - .../features/api-from-client/page.tsx | 30 - .../features/api-from-server/page.tsx | 21 - .../features/api-from-server/result/page.tsx | 11 - .../playground/features/protected/page.tsx | 19 - .../dashboard/admin/playground/layout.tsx | 9 - .../dashboard/admin/playground/loading.tsx | 7 - .../dashboard/admin/playground/page.tsx | 46 - .../[locale]/dashboard/billing/PlanCard.tsx | 128 - .../[locale]/dashboard/billing/example.tsx | 319 - .../[locale]/dashboard/billing/loading.tsx | 104 - src/app/[locale]/dashboard/billing/page.tsx | 53 - .../[locale]/dashboard/billing/page.tsx.txt | 174 - src/app/[locale]/dashboard/layout.tsx | 86 - .../dashboard/onboarding/OnboardContent.tsx | 22 - .../[locale]/dashboard/onboarding/page.mdx | 53 - src/app/[locale]/dashboard/page.tsx | 59 - .../[locale]/dashboard/purchases/loading.tsx | 36 - src/app/[locale]/dashboard/purchases/page.tsx | 46 - src/app/[locale]/dashboard/settings/page.tsx | 87 - .../stores/[storeId]/analytics/page.tsx.txt | 121 - .../dashboard/stores/[storeId]/layout.tsx | 78 - .../stores/[storeId]/orders/page.tsx.txt | 38 - .../dashboard/stores/[storeId]/page.tsx.txt | 272 - .../products/[productId]/page.tsx.txt | 71 - .../products/[productId]/page2.tsx.txt | 3 - .../stores/[storeId]/products/loading.tsx | 11 - .../[storeId]/products/new/page.tsx.txt | 49 - .../stores/[storeId]/products/page.tsx.txt | 143 - src/app/[locale]/dashboard/stores/layout.tsx | 9 - src/app/[locale]/dashboard/stores/loading.tsx | 74 - .../[locale]/dashboard/stores/new/page.tsx | 69 - src/app/[locale]/dashboard/stores/page.tsx | 86 - .../[locale]/dashboard/stores/page.tsx.txt | 148 - src/app/[locale]/donate/avatar.tsx | 53 - src/app/[locale]/donate/page.tsx | 439 - src/app/[locale]/donate/sponsors.tsx | 223 - src/app/[locale]/error.tsx | 10 +- .../[locale]/error/[[...error]]/client.tsx | 31 - src/app/[locale]/error/[[...error]]/page.tsx | 71 - src/app/[locale]/error/layout.tsx | 9 - src/app/[locale]/favicon.ico | Bin 0 -> 15406 bytes src/app/[locale]/layout.tsx | 231 +- src/app/[locale]/legal/layout.tsx | 38 - src/app/[locale]/legal/policy/page.mdx | 77 - src/app/[locale]/legal/policy/page.tsx.txt | 21 - src/app/[locale]/legal/privacy/page.mdx | 139 - src/app/[locale]/legal/privacy/page.tsx.txt | 40 - src/app/[locale]/not-found.tsx | 8 +- src/app/[locale]/page.tsx | 65 - src/app/[locale]/pathnames/page.tsx | 28 - .../playground/clerk/dashboard/page.tsx | 79 - src/app/[locale]/playground/clerk/page.tsx | 207 - src/app/[locale]/playground/novu/page.tsx | 7 - src/app/[locale]/preview/layout.tsx | 15 - .../[locale]/pricing/components/client.tsx | 166 - .../pricing/components/sub-actions.ts | 58 - .../[locale]/pricing/components/subscribe.tsx | 121 - .../[locale]/pricing/components/upgrade.tsx | 339 - src/app/[locale]/pricing/layout.tsx | 9 - src/app/[locale]/pricing/page.tsx | 44 - .../product/[productId]/components/client.tsx | 73 - .../[locale]/product/[productId]/loading.tsx | 150 - src/app/[locale]/product/[productId]/page.tsx | 273 - src/app/[locale]/product/layout.tsx | 15 - src/app/[locale]/products/layout.tsx | 13 - .../[locale]/products/old-temp/loading.tsx | 67 - src/app/[locale]/products/old-temp/page.tsx | 103 - src/app/[locale]/products/page.tsx | 36 - .../[locale]/sign-in/[[...sign-in]]/page.tsx | 9 - .../[locale]/sign-up/[[...sign-up]]/page.tsx | 9 - src/app/[locale]/store/[storeId]/loading.tsx | 159 - src/app/[locale]/store/[storeId]/page.tsx | 146 - src/app/[locale]/store/layout.tsx | 15 - .../[locale]/user/preferences/email/page.tsx | 12 - src/app/[locale]/user/preferences/layout.tsx | 9 - src/app/[locale]/user/preferences/page.tsx | 12 - src/app/api/auth/[...nextauth]/route.ts | 3 - src/app/api/cms/create/component/route.ts.txt | 73 - src/app/api/cms/create/page/route.ts.txt | 62 - src/app/api/email/newsletter/route.ts | 78 + src/app/api/mail/subscribe/route.ts | 122 - src/app/api/novu/route.ts.txt | 8 - src/app/api/og/route.tsx | 92 + src/app/api/ping/route.ts | 25 - src/app/api/revalidate/[tag]/route.ts | 23 + src/app/api/revalidate/route.ts | 12 + src/app/api/trpc.zip | Bin 850 -> 0 bytes src/app/api/uploadthing/core.ts | 44 + src/app/api/uploadthing/route.ts | 3 +- src/app/api/webhooks.zip | Bin 4674 -> 0 bytes src/app/api/webhooks/stripe/route.ts | 237 + src/app/icon.png | Bin 0 -> 2124 bytes src/app/layout.tsx | 52 +- src/app/not-found.tsx | 2 +- src/app/page.tsx | 14 - .../app/robots.ts | 8 +- src/app/robots.txt | 2 - src/app/sitemap.ts | 31 +- src/assets/data/products.json | 252 +- src/auth/authjs.ts | 98 - src/auth/clerk.ts | 85 - src/auth/migrate.ts | 14 - src/auth/provider.ts | 34 - src/components/Account/ActionButton.tsx | 38 - .../Account/AuthPagesContentClient.tsx | 281 - .../Account/AuthPagesContentServer.tsx | 250 - src/components/Account/AuthProvider.tsx | 17 - src/components/Account/AuthRequired.tsx | 19 - src/components/Account/AuthjsButtons.tsx | 24 - src/components/Account/AuthjsUser.tsx | 31 - src/components/Account/AuthjsV5Test.tsx | 107 - .../Account/Clerk/ClerkCodeSwitcher.tsx | 74 - src/components/Account/Clerk/ClerkFooter.tsx | 183 - .../Account/Clerk/ClerkLearnMore.tsx | 88 - src/components/Account/Clerk/ClerkLogo.tsx | 30 - .../Account/Clerk/ClerkNextLogo.tsx | 82 - .../Account/Clerk/ClerkUserDetails.tsx | 244 - src/components/Account/Guest/UserNotFound.tsx | 22 - src/components/Account/LogoutButtons.tsx | 92 - src/components/Account/MailAuthUser.tsx | 14 - src/components/Account/SessionData.tsx | 49 - src/components/Account/SigninLink.tsx | 26 - src/components/Account/SsoCallback.tsx | 30 - src/components/Account/UserButton.tsx | 67 - src/components/Account/UserLogin.tsx | 34 - .../SidebarLayouts/SidebarWithHeader.tsx | 16 - .../NavWithCompactPageHeader.tsx | 15 - .../WithSecondaryNavigation.tsx | 15 - .../VerticalNavigation/WithIcons.tsx | 12 - .../Application/ReliverseToolbar.tsx | 63 - .../Application/UploadThing/MultiUploader.tsx | 71 - src/components/Charts/AppStatsChart.tsx | 79 - src/components/Checkout/CheckoutButton.tsx | 96 - src/components/Checkout/CheckoutShell.tsx | 53 - src/components/Checkout/UpdateCart.tsx | 136 - src/components/Commerce/Cart/CartDialog.tsx | 153 - src/components/Commerce/CommerceDashboard.tsx | 51 - .../Commerce/FeaturedStoreItems.tsx | 213 - src/components/Commerce/PricingModules.tsx | 107 - src/components/Commerce/Subcategories.tsx | 32 - src/components/Common/Icons/SVG.module.css | 45 - src/components/Common/Icons/SVG.tsx | 151 - src/components/Common/LocaleSwitcher.tsx | 150 - src/components/Common/PageLayout.tsx | 25 - src/components/Common/client-button.tsx | 11 - src/components/Common/copy-button.tsx | 41 - src/components/Common/creating.tsx | 77 - src/components/Common/cursor.tsx | 38 - src/components/Common/fake-loading.tsx | 287 - src/components/Common/features.tsx | 108 - src/components/Common/file-dialog.tsx | 437 - src/components/Common/funding.tsx | 123 - src/components/Common/generate.tsx | 57 - src/components/Common/loading-button.tsx | 66 - src/components/Common/locale-flag-icon.tsx | 51 - src/components/Common/loglib-analytics.tsx | 17 - src/components/Common/message.tsx | 40 - src/components/Common/mode-toggle.tsx | 69 - src/components/Common/multi-select.tsx | 192 - src/components/Common/placeholders.tsx | 45 - src/components/Common/product-context.tsx | 13 - .../Common/product-image-carousel.tsx | 226 - src/components/Common/products.tsx | 522 - src/components/Common/stars.tsx | 67 - src/components/Common/stores.tsx | 199 - .../Common/stripe-button-connect.tsx | 51 - src/components/Common/tailwind-indicator.tsx | 98 - src/components/Common/temp-compiler-fix.tsx | 9 - src/components/Common/text-cts.tsx | 17 - src/components/Common/zoom-image.tsx | 12 - src/components/Content/ClerkPageOauth.tsx | 104 - src/components/Content/ProviderButton.tsx | 51 - src/components/Content/UserContent.tsx | 48 - src/components/Data/CreateTodo.tsx.txt | 53 - src/components/Data/RenderCountComp.tsx | 16 - src/components/Data/RenderCountData.tsx | 48 - .../Emails/NewsletterWelcomeEmail.tsx | 185 - src/components/Emails/Onboarding.tsx | 24 - src/components/Emails/ResendTemplateEmail.tsx | 13 - src/components/Forms/CartAddForm.tsx | 163 - src/components/Forms/ContactForm.tsx | 109 - .../Forms/Context/GuestAddFormContext.tsx | 45 - src/components/Forms/GuestAddForm.tsx | 70 - src/components/Forms/JoinNewsletterForm.tsx | 153 - src/components/Forms/PlanManageForm.tsx | 172 - src/components/Forms/PostAddForm.tsx.txt | 37 - src/components/Forms/ProductAddForm.tsx | 340 - src/components/Forms/ProductUpdForm.tsx | 366 - src/components/Forms/StoreAddForm.tsx | 123 - src/components/Marketing/BottomSection.tsx | 45 - .../Banners/privacy-notice-right-aligned.tsx | 16 - .../Elements/Banners/with-button-animated.tsx | 132 - .../Elements/Banners/with-button.tsx | 155 - .../stacked-with-footer-actions.tsx | 16 - .../Elements/Headers/WithLeftAlignedNav.tsx | 17 - src/components/Marketing/HeroSection.tsx | 65 - src/components/Marketing/MainSection.tsx | 42 - .../Marketing/Marketing/HeroSection.tsx | 55 - src/components/Modules/Analytics.tsx | 9 - src/components/Modules/Cards/CheckoutCard.tsx | 96 - src/components/Modules/Cards/ErrorCard.tsx | 95 - src/components/Modules/Cards/MdxCard.tsx | 58 - src/components/Modules/Cards/ProductCard.tsx | 164 - src/components/Modules/Cards/SkeletonCard.tsx | 22 - .../Modules/Cards/StoreCardDashboard.tsx | 73 - .../Modules/Cards/StoreCardDefault.tsx | 55 - .../Modules/DataTable/DataTable.tsx | 336 - .../DataTable/DataTableColumnHeader.tsx | 108 - .../Modules/DataTable/DataTableLoading.tsx | 143 - .../Modules/DataTable/DataTableToolbar.tsx | 150 - src/components/Modules/DataTable/Options.tsx | 67 - src/components/Modules/DebounceInput.tsx | 52 - src/components/Modules/HText.tsx | 42 - src/components/Modules/Markdown/CodeBlock.tsx | 24 - src/components/Modules/ModeToggle.tsx | 95 - src/components/Modules/ThemeToggle.tsx | 41 - src/components/Modules/Zustand/ZuClock.tsx | 52 - src/components/Modules/Zustand/ZuCounter.tsx | 35 - src/components/Modules/Zustand/ZuProvider.tsx | 43 - src/components/Modules/Zustand/zu-interval.ts | 28 - src/components/Modules/Zustand/zu-store.ts | 66 - src/components/Navigation/CarouselCards.tsx | 52 - src/components/Navigation/CustomLink.tsx | 50 - src/components/Navigation/DonateLink.tsx | 48 - src/components/Navigation/LocaleSwitcher.tsx | 63 - src/components/Navigation/MainMenu.tsx | 209 - src/components/Navigation/Menubar.tsx | 313 - src/components/Navigation/MobileMenu.tsx | 187 - src/components/Navigation/NavMenu.tsx | 208 - src/components/Navigation/NavMenuClient.tsx | 91 - src/components/Navigation/PageNavMenu.tsx | 135 - .../Navigation/Pagination/Breadcrumbs.tsx | 72 - .../Navigation/Pagination/ProductPager.tsx | 89 - .../Navigation/Pagination/StorePager.tsx | 84 - .../Navigation/Pagination/StoreSwitcher.tsx | 149 - .../Navigation/Pagination/StoreTabs.tsx | 65 - src/components/Navigation/SidebarNav.tsx | 214 - src/components/Navigation/SiteFooter.tsx | 158 - src/components/Navigation/SiteHeader.tsx | 112 - src/components/Navigation/UserMenu.tsx | 156 - src/components/Playground/Privileges.tsx | 46 - src/components/Products/Catalogue.tsx | 7 - src/components/Providers/AuthProvider.tsx | 70 - src/components/Providers/FlowbiteTheme.tsx | 87 - src/components/Providers/NextintlProvider.tsx | 46 - src/components/Providers/SessionProvider.tsx | 4 - src/components/Providers/ThemeProvider.tsx | 33 - src/components/Providers/Tooltip.tsx | 45 - .../Sections/Questions/AccordionSection.tsx | 91 - .../Questions/AccordionSectionFlowbite.tsx | 50 - .../Switchers/ThemesGeneralSwitcher.tsx | 117 - src/components/Wrappers/DialogShell.tsx | 60 - src/components/Wrappers/GeneralShell.tsx | 13 - src/components/Wrappers/OrdersTableShell.tsx | 102 - src/components/Wrappers/PageLayout.tsx | 43 - src/components/Wrappers/ShellVariants.tsx | 60 - src/components/alert-card.tsx | 61 + src/components/analytics.tsx | 11 + src/components/blur-image.tsx | 29 + ...product-building.tsx => board-builder.tsx} | 294 +- .../cart-line-items.tsx} | 87 +- src/components/checkout/cart-sheet.tsx | 121 + src/components/checkout/checkout-card.tsx | 71 + .../checkout-form.tsx} | 111 +- src/components/checkout/checkout-shell.tsx | 65 + src/components/checkout/update-cart.tsx | 111 + .../verify-order-form.tsx} | 50 +- src/components/client-button.tsx | 10 + .../connect-store-to-stripe-button.tsx | 56 + src/components/content-section.tsx | 74 + src/components/copy-button.tsx | 36 + .../data-table/data-table-column-header.tsx | 110 + .../data-table-faceted-filter.tsx} | 92 +- .../data-table-pagination.tsx} | 82 +- .../data-table/data-table-skeleton.tsx | 167 + .../data-table/data-table-toolbar.tsx | 101 + .../data-table/data-table-view-options.tsx | 62 + src/components/data-table/data-table.tsx | 93 + src/components/date-range-picker.tsx | 160 + src/components/debounce-input.tsx | 49 + src/components/dialog-shell.tsx | 58 + .../emails/newsletter-welcome-email.tsx | 132 + src/components/empty-card.tsx | 39 + src/components/error-card.tsx | 72 + .../{Common => }/faceted-filter.tsx | 76 +- src/components/file-uploader.tsx | 316 + src/components/files.tsx | 54 + src/components/grid-pattern.tsx | 65 + src/components/icons.tsx | 330 + src/components/join-newsletter-form.tsx | 115 + src/components/{ui => }/kbd.tsx | 37 +- src/components/layouts/auth-dropdown.tsx | 156 + src/components/layouts/main-nav.tsx | 145 + src/components/layouts/mobile-nav.tsx | 136 + src/components/layouts/mode-toggle.tsx | 54 + src/components/layouts/sidebar-nav.tsx | 67 + src/components/layouts/sidebar-provider.tsx | 38 + src/components/layouts/site-footer.tsx | 87 + src/components/layouts/site-header.tsx | 30 + src/components/loading-button.tsx | 72 + src/components/manage-plan-form.tsx | 62 + .../Markdown/Callout.tsx => mdx/callout.tsx} | 12 +- src/components/mdx/code-block.tsx | 74 + src/components/mdx/link-badge.tsx | 24 + src/components/mdx/mdx-card.tsx | 42 + src/components/mdx/mdx-image.tsx | 17 + .../MdxPager.tsx => mdx/mdx-pager.tsx} | 53 +- src/components/metrics-card.tsx | 116 + src/components/motion.tsx | 54 + src/components/multi-select.tsx | 159 + src/components/page-header.tsx | 111 + ...nationButton.tsx => pagination-button.tsx} | 130 +- .../{Common => }/password-input.tsx | 37 +- src/components/placeholder-image.tsx | 44 + src/components/product-card-skeleton.tsx | 39 + src/components/product-card.tsx | 148 + src/components/product-image-carousel.tsx | 178 + ...uctsCombobox.tsx => products-combobox.tsx} | 87 +- src/components/products.tsx | 499 + .../{Common/provider.tsx => providers.tsx} | 7 +- src/components/radial-gradient.tsx | 68 + src/components/rate-limit-alert.tsx | 63 + src/components/rating.tsx | 24 + src/components/seed-products-button.tsx | 44 + src/components/shell.tsx | 37 + src/components/store-card-skeleton.tsx | 19 + src/components/store-card.tsx | 96 + src/components/store-tabs.tsx | 87 + src/components/stores.tsx | 157 + src/components/tables/customers-table.tsx | 124 + src/components/tables/orders-table.tsx | 171 + .../products-table.tsx} | 261 +- src/components/tables/purchases-table.tsx | 178 + src/components/tailwind-indicator.tsx | 18 + src/components/textarea-autosize.tsx | 28 + src/components/ui/accordion.tsx | 63 +- src/components/ui/alert-dialog.tsx | 136 +- src/components/ui/alert.tsx | 66 +- src/components/ui/avatar.tsx | 50 +- src/components/ui/badge.tsx | 58 +- src/components/ui/breadcrumb.tsx | 93 +- src/components/ui/button.tsx | 86 +- src/components/ui/calendar.tsx | 100 +- src/components/ui/card.tsx | 97 +- src/components/ui/carousel.tsx | 185 +- src/components/ui/chart.tsx | 420 - src/components/ui/checkbox.tsx | 26 +- src/components/ui/command.tsx | 184 +- src/components/ui/dialog.tsx | 127 +- src/components/ui/drawer.tsx | 119 +- src/components/ui/dropdown-menu.tsx | 187 +- src/components/ui/dropdown.tsx | 280 - src/components/ui/form.tsx | 172 +- src/components/ui/grid.tsx | 34 - src/components/ui/heading.tsx | 59 - src/components/ui/hover-card.tsx | 42 +- src/components/ui/icon.tsx | 35 - src/components/ui/input-otp.tsx | 76 +- src/components/ui/input.tsx | 55 +- src/components/ui/label.tsx | 27 +- src/components/ui/link.tsx | 117 - src/components/ui/main.tsx | 58 - src/components/ui/navigation-menu.tsx | 138 +- src/components/ui/pagination.tsx | 76 +- src/components/ui/paragraph.tsx | 57 - src/components/ui/password.tsx | 58 - src/components/ui/popover.tsx | 42 +- src/components/ui/popup.tsx | 38 - src/components/ui/progress.tsx | 15 +- src/components/ui/scroll-area.tsx | 36 +- src/components/ui/section.tsx | 77 - src/components/ui/select.tsx | 120 +- src/components/ui/separator.tsx | 21 +- src/components/ui/sheet.tsx | 162 +- src/components/ui/skeleton.tsx | 11 +- src/components/ui/slider.tsx | 46 +- src/components/ui/span.tsx | 53 - src/components/ui/switch.tsx | 38 +- src/components/ui/table.tsx | 105 +- src/components/ui/tabs.tsx | 60 +- src/components/ui/text-area.tsx | 33 - src/components/ui/textarea.tsx | 23 +- src/components/ui/toast.tsx | 194 - src/components/ui/toaster.tsx | 51 +- src/components/ui/tooltip.tsx | 35 +- src/components/usage-card.tsx | 66 + src/{constants => config}/dashboard.ts | 20 +- src/{constants => config}/pricing.ts | 46 +- src/{constants => config}/product.ts | 6 +- src/{constants => config}/query.ts | 32 +- src/{constants => config}/site.ts | 179 +- src/constants/math.ts | 1 - src/constants/metadata.ts | 15 - src/constants/nav-items.ts | 59 - src/constants/products.ts | 221 - src/constants/stores.ts | 37 - src/content/authors/sadmann7.mdx | 6 +- src/content/blog/art-of-skateboarding.mdx | 2 +- .../blog/coolest-skateboard-tricks.mdx | 2 +- src/content/blog/influences-of-thps.mdx | 2 +- src/content/blog/skateboarding-styles.mdx | 2 +- src/content/pages/about.mdx | 23 +- src/content/pages/contact.mdx | 12 +- src/content/pages/privacy.mdx | 6 +- src/content/pages/terms.mdx | 52 +- src/core/adm/actions.ts | 78 - src/core/auth/authjs/auth-old.ts | 107 - .../authjs/components/sign-out-button.tsx | 20 - .../clerkjs/components/user-profile-clerk.tsx | 54 - src/core/auth/clerkjs/other/checks.tsx | 0 src/core/mail/resend.ts | 43 - src/core/mail/templates/onboard.tsx | 121 - .../novu/emails/novu-onboarding-email.tsx.txt | 178 - .../welcome-onboarding-email/schemas.ts.txt | 65 - .../welcome-onboarding-email/types.ts.txt | 7 - .../welcome-onboarding-email/workflow.ts.txt | 26 - src/core/stripe/connect.ts | 8 - src/core/stripe/getting.ts | 20 - src/core/stripe/handlers.ts | 197 - src/core/stripe/loading.ts | 17 - src/core/stripe/stripe.ts | 205 - src/core/stripe/subs.ts | 40 - src/core/stripe/zod.ts | 22 - src/core/wn/config.ts | 0 src/core/wn/winston.ts | 0 src/data/other/boards.ts | 98 - src/data/other/countries/countries.json | 1614 - src/data/other/countries/currencies.json | 3513 -- .../other/countries/typescript/countries.ts | 1815 - .../countries/typescript/getAllCountries.ts | 16 - .../typescript/getCountriesByCallingCode.ts | 24 - .../typescript/getCountriesByName.ts | 20 - .../countries/typescript/getCountryByCca2.ts | 21 - .../typescript/getCountryByPhoneNumber.ts | 68 - .../other/countries/typescript/inputMask.ts | 66 - .../countries/typescript/test/CountryList.tsx | 93 - src/data/other/countries/typescript/types.ts | 14 - src/db.ts | 21 - src/db/extends.ts | 19 - src/db/index.ts | 47 + src/db/migrate.ts | 12 +- src/db/neon.ts | 37 - src/db/schema.ts | 1023 - src/db/schema/addresses.ts | 22 + src/db/schema/carts.ts | 21 + src/db/schema/categories.ts | 27 + src/db/schema/customers.ts | 40 + src/db/schema/index.ts | 14 + src/db/schema/notifications.ts | 22 + src/db/schema/orders.ts | 49 + src/db/schema/payments.ts | 41 + src/db/schema/products.ts | 88 + src/db/schema/stocks.ts | 40 + src/db/schema/stores.ts | 52 + src/db/schema/subcategories.ts | 38 + src/db/schema/tags.ts | 81 + src/db/schema/users.ts | 50 + src/db/schema/utils.ts | 11 + src/db/schema/variants.ts | 121 + src/db/seed.ts | 83 +- src/db/utils.ts | 115 +- src/env.js | 247 +- src/hooks/use-at-bottom.ts | 6 +- src/hooks/use-callback-ref.ts | 15 +- src/hooks/use-click-outside.ts | 21 +- src/hooks/use-clipboard.ts | 60 - src/hooks/use-controllable-state.ts | 63 +- src/hooks/use-data-table.ts | 169 +- src/hooks/use-debounce.ts | 8 +- src/hooks/use-enter-submit.ts | 9 +- src/hooks/use-ids.ts | 12 - src/hooks/use-interval.ts | 42 - src/hooks/use-local-storage.ts | 45 - src/hooks/use-media-query.ts | 7 +- src/hooks/use-mounted.ts | 6 +- src/hooks/use-on-mount.ts | 8 - src/hooks/use-optimistic-board.ts | 137 - src/hooks/use-optimistic.ts | 8 +- src/hooks/use-promise.ts | 57 - src/hooks/use-render-count.ts | 29 - src/hooks/use-toast.ts | 204 - src/hooks/use-upload-file.ts | 53 +- src/hooks/use-url-state.ts | 39 - src/i18n.ts | 20 - src/i18n/i18n.ts.txt | 53 + src/{navigation.ts => i18n/navigation.ts.txt} | 2 + src/i18n/request.ts | 17 + src/i18n/routing.ts | 27 + src/images/logo.png | Bin 251073 -> 0 bytes src/images/sign-in@2xrl.webp | Bin 19090 -> 0 bytes src/images/sign-up@2xrl.webp | Bin 24172 -> 0 bytes src/images/user-button-2@2xrl.webp | Bin 9424 -> 0 bytes src/images/user-button@2xrl.webp | Bin 17560 -> 0 bytes src/images/verify@2xrl.webp | Bin 17812 -> 0 bytes src/{server => lib}/actions/cart.ts | 72 +- src/{server => lib}/actions/notification.ts | 31 +- src/{server => lib}/actions/order.ts | 145 +- src/{server => lib}/actions/product.ts | 58 +- src/lib/actions/seed.ts | 153 + src/{server => lib}/actions/store.ts | 38 +- src/{server => lib}/actions/stripe.ts | 139 +- src/lib/auth.ts | 80 + src/{server/helpers => lib}/checkout.ts | 17 +- src/{server/helpers => lib}/constants.ts | 6 +- src/{server/helpers => lib}/export.ts | 25 +- src/{server/helpers => lib}/fonts.ts | 6 + .../helpers => lib}/generate-pattern.ts | 11 +- src/lib/get-stripe.ts | 13 + src/lib/handle-error.ts | 25 + src/lib/id.ts | 133 + src/{server/helpers => lib}/motion.ts | 15 +- src/{server/helpers => lib}/openai.ts | 0 src/{server => lib}/queries/github.ts | 6 +- src/{server => lib}/queries/notification.ts | 12 +- src/{server => lib}/queries/product.ts | 49 +- src/{server => lib}/queries/store.ts | 38 +- src/{server => lib}/queries/user.ts | 41 +- src/{server/helpers => lib}/rate-limit.ts | 6 +- src/lib/resend.ts | 4 + src/lib/stripe.ts | 7 + src/{server/helpers => lib}/subscription.ts | 13 +- src/lib/uploadthing.ts | 6 + src/{server/helpers => lib}/utils.ts | 65 +- src/{server => lib}/validations/auth.ts | 8 +- src/{server => lib}/validations/cart.ts | 11 +- .../validations/notification.ts | 8 +- .../deprecated => lib/validations}/og.ts | 4 +- src/{server => lib}/validations/order.ts | 2 +- src/{server => lib}/validations/params.ts | 14 +- .../deprecated => lib/validations}/product.ts | 43 +- src/{server => lib}/validations/store.ts | 16 +- src/{server => lib}/validations/stripe.ts | 26 +- src/mdx-components.tsx | 271 +- src/middleware.ts | 72 +- src/server/actions/deprecated/cart.ts | 415 - src/server/actions/deprecated/generate.ts | 60 - src/server/actions/deprecated/notification.ts | 69 - src/server/actions/deprecated/order.ts | 183 - src/server/actions/deprecated/post.ts.txt | 12 - src/server/actions/deprecated/product-old.ts | 357 - src/server/actions/deprecated/product.ts | 202 - src/server/actions/deprecated/signin.ts | 9 - src/server/actions/deprecated/store.ts | 225 - .../deprecated/stripe/createAccountLink.ts | 81 - .../stripe/createAccountLinkAction.ts | 81 - .../stripe/createCheckoutSession.ts | 96 - .../deprecated/stripe/createPaymentIntent.ts | 90 - .../deprecated/stripe/getPaymentIntent.ts | 67 - .../deprecated/stripe/getPaymentIntents.ts | 56 - .../actions/deprecated/stripe/getPlan.ts | 87 - .../actions/deprecated/stripe/getPlanOld.ts | 86 - .../actions/deprecated/stripe/getPlans.ts | 68 - .../deprecated/stripe/getStripeAccount.ts | 98 - .../stripe/manageDowngradeToStarter.ts | 47 - .../deprecated/stripe/manageSubscription.ts | 86 - src/server/actions/seed.ts | 114 - src/server/helpers/api-error.ts | 19 - src/server/helpers/auth-error.ts | 26 - src/server/helpers/cart.ts | 111 - src/server/helpers/clerk.ts | 36 - src/server/helpers/client.ts | 45 - src/server/helpers/currency.ts | 28 - src/server/helpers/error-message.ts | 27 - src/server/helpers/error-response.ts | 82 - src/server/helpers/field-error-zod.ts | 86 - src/server/helpers/get-stripe.ts | 20 - src/server/helpers/handle-error.ts | 25 - src/server/helpers/handler.ts | 55 - src/server/helpers/id.ts | 51 - src/server/helpers/modern-error.ts | 15 - src/server/helpers/modern-errors-plugin.ts | 106 - src/server/helpers/mw.ts | 19 - src/server/helpers/nextjs-error.ts | 16 - src/server/helpers/notification.ts | 44 - src/server/helpers/pattern.ts | 501 - src/server/helpers/plan.ts | 51 - src/server/helpers/product.ts | 320 - src/server/helpers/query.ts | 13 - src/server/helpers/resend.ts | 5 - src/server/helpers/store.ts | 206 - src/server/helpers/string.ts | 7 - src/server/helpers/stripe.ts | 8 - src/server/helpers/unauthorized-error.ts | 10 - src/server/helpers/uploadthing-core.ts | 112 - src/server/helpers/uploadthing-react.ts | 14 - src/server/helpers/uploadthing.ts | 6 - src/server/helpers/utapi.ts | 3 - src/server/helpers/validation-error.ts | 10 - src/server/validations/deprecated/auth.ts | 50 - src/server/validations/deprecated/cart.ts | 53 - .../validations/deprecated/notification.ts | 26 - src/server/validations/deprecated/order.ts | 22 - .../validations/deprecated/parameters.ts | 50 - .../validations/deprecated/product-old.ts | 60 - src/server/validations/deprecated/store.ts | 31 - src/server/validations/deprecated/user.ts | 5 - src/server/validations/og.ts | 8 - src/server/validations/product.ts | 80 - src/styles/fonts/CalSans-SemiBold.ttf | Bin 148964 -> 0 bytes src/styles/fonts/CalSans-SemiBold.woff | Bin 52504 -> 0 bytes src/styles/fonts/CalSans-SemiBold.woff2 | Bin 40932 -> 0 bytes src/styles/fonts/FiraSans-Regular.ttf | Bin 440984 -> 0 bytes src/styles/fonts/GeistMonoVF.woff | Bin 67864 -> 0 bytes src/styles/fonts/GeistVF.woff | Bin 66268 -> 0 bytes src/styles/fonts/Inter-Bold.ttf | Bin 316100 -> 0 bytes src/styles/fonts/Inter-Regular.ttf | Bin 309828 -> 0 bytes src/styles/fonts/Twemoji-Flags.woff2 | Bin 78292 -> 0 bytes src/styles/globals.css | 103 +- src/styles/globals.css.txt | 182 - src/styles/markdown.css | 100 - src/styles/mdx.css.txt | 74 - src/types/api.ts | 15 - src/types/array.ts | 2 - src/types/auth.ts | 68 - src/types/config.ts | 0 src/types/id.ts | 15 - src/types/index.ts | 92 + src/types/keys.ts | 19 - src/types/locale.ts | 15 - src/types/meta.ts | 1 - src/types/nav.ts | 37 - src/types/next.ts | 14 - src/types/plan.ts | 46 - src/types/pm.ts | 5 - src/types/store.ts | 53 - src/types/string.ts | 14 - src/types/stripe.ts | 3 - src/types/table.ts | 13 - src/types/with.ts | 36 - src/utils/array.ts | 9 - src/utils/cn.ts | 11 - src/utils/date.ts | 11 - src/utils/equal.ts | 4 - src/utils/gen.ts | 50 - src/utils/keys.ts | 65 - src/utils/math.ts | 15 - src/utils/misc.ts | 44 - src/utils/number.ts | 91 - src/utils/path.ts | 33 - src/utils/string.ts | 19 - src/utils/throw.ts | 14 - tailwind.config.ts | 288 +- tsconfig.json | 24 +- turbo.disabled.json | 29 - turbo.scripts.json | 8 - typestat.json | 40 - unlighthouse.config.ts | 36 + 1210 files changed, 20041 insertions(+), 132366 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .npmrc delete mode 100644 .putout.json rename license => LICENSE.md (97%) delete mode 100644 addons/cluster/components/Onboarding.md delete mode 100644 addons/cluster/components/Onboarding.tsx delete mode 100644 addons/cluster/components/ui/cluster-readme.tsx delete mode 100644 addons/cluster/temp/![delete-in-1.3.0]!/.gitkeep delete mode 100644 addons/cluster/temp/.lintstagedrc.json.txt delete mode 100644 addons/cluster/temp/.madrun.js.txt delete mode 100644 addons/cluster/temp/.npmcheckrc.txt delete mode 100644 addons/cluster/temp/.prettierignore.txt delete mode 100644 addons/cluster/temp/.react-19-only/BoardList.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/CreateBoard.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/EditableText.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/ReactActionState.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/RxjsSignalsTest.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/SignIn.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/SubmitButton.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/board.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/boards-auth-action.ts.txt delete mode 100644 addons/cluster/temp/.react-19-only/boards/[id]/page.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/card.tsx.txt delete mode 100644 addons/cluster/temp/.react-19-only/column.tsx.txt delete mode 100644 addons/cluster/temp/.storybook/main.ts.txt delete mode 100644 addons/cluster/temp/.swcrc.txt delete mode 100644 addons/cluster/temp/.thing/WT.md.txt delete mode 100644 addons/cluster/temp/.thing/hooks/discord_webhook.json.txt delete mode 100644 addons/cluster/temp/.thing/hooks/github_pr_opened.json.txt delete mode 100644 addons/cluster/temp/.thing/hooks/stripe_payment_failed.json.txt delete mode 100644 addons/cluster/temp/.thing/hooks/stripe_payment_succeeded.json.txt delete mode 100644 addons/cluster/temp/.tokenami/tokenami.config.ts.txt delete mode 100644 addons/cluster/temp/.tokenami/tokenami.env.ci.d.ts.txt delete mode 100644 addons/cluster/temp/.tokenami/tokenami.env.d.ts.txt delete mode 100644 addons/cluster/temp/CartSheetClientEdition.tsx.txt delete mode 100644 addons/cluster/temp/ComboboxOld/ComboboxContext.tsx.txt delete mode 100644 addons/cluster/temp/ComboboxOld/ComboboxHandler.tsx.txt delete mode 100644 addons/cluster/temp/ComboboxOld/ComboboxOld.tsx.txt delete mode 100644 addons/cluster/temp/ComboboxOld/ProductList.tsx.txt delete mode 100644 addons/cluster/temp/ComboboxOld/ThemeCommands.tsx.txt delete mode 100644 addons/cluster/temp/__fs.ts.txt delete mode 100644 addons/cluster/temp/__i18n.deprecated.txt delete mode 100644 addons/cluster/temp/__middleware.ts.txt delete mode 100644 addons/cluster/temp/__rest.tsx.txt delete mode 100644 addons/cluster/temp/__trpc.ts.txt delete mode 100644 addons/cluster/temp/academy-crypto.ts.txt delete mode 100644 addons/cluster/temp/academy-handler.ts.txt delete mode 100644 addons/cluster/temp/academy-hash.ts.txt delete mode 100644 addons/cluster/temp/app.await.txt delete mode 100644 addons/cluster/temp/app.ts.txt delete mode 100644 addons/cluster/temp/auth-newest.txt delete mode 100644 addons/cluster/temp/auth-server.ts.txt delete mode 100644 addons/cluster/temp/auth.ts.txt delete mode 100644 addons/cluster/temp/auth/adapter.ts.txt delete mode 100644 addons/cluster/temp/auth/config.ts.txt delete mode 100644 addons/cluster/temp/auth/config2.ts.txt delete mode 100644 addons/cluster/temp/auth/temp.txt delete mode 100644 addons/cluster/temp/ava.config.js.txt delete mode 100644 addons/cluster/temp/babel.config.txt delete mode 100644 addons/cluster/temp/biome-new.json.txt delete mode 100644 addons/cluster/temp/biome.json.txt delete mode 100644 addons/cluster/temp/commitlint.config.cjs.txt delete mode 100644 addons/cluster/temp/config/json/appts.json.txt delete mode 100644 addons/cluster/temp/cors.js.txt delete mode 100644 addons/cluster/temp/csp.js.txt delete mode 100644 addons/cluster/temp/dep-pkg.txt delete mode 100644 addons/cluster/temp/drizzle.config.txt delete mode 100644 addons/cluster/temp/error.tsx.txt delete mode 100644 addons/cluster/temp/eslint.config.deprecated.a.txt delete mode 100644 addons/cluster/temp/eslint.config.deprecated.b.txt delete mode 100644 addons/cluster/temp/eslint.config.deprecated.c.txt delete mode 100644 addons/cluster/temp/exporter.txt delete mode 100644 addons/cluster/temp/extend.txt delete mode 100644 addons/cluster/temp/features.tsx.txt delete mode 100644 addons/cluster/temp/h-variants.tsx.txt delete mode 100644 addons/cluster/temp/instrumentation.ts.txt delete mode 100644 addons/cluster/temp/intl.ts.txt delete mode 100644 addons/cluster/temp/jest.config.txt delete mode 100644 addons/cluster/temp/jest.setup.ts.txt delete mode 100644 addons/cluster/temp/json.ts.txt delete mode 100644 addons/cluster/temp/liveblocks-room.tsx.txt delete mode 100644 addons/cluster/temp/liveblocks-showdown.tsx.txt delete mode 100644 addons/cluster/temp/liveblocks-users-online.tsx.txt delete mode 100644 addons/cluster/temp/liveblocks-visitors-cursors.tsx.txt delete mode 100644 addons/cluster/temp/liveblocks.config.ts.txt delete mode 100644 addons/cluster/temp/locale-layout.tsx.txt delete mode 100644 addons/cluster/temp/localization-gsap-useeffect-error.txt delete mode 100644 addons/cluster/temp/localization-useeffect-error.txt delete mode 100644 addons/cluster/temp/manifest.ts.txt delete mode 100644 addons/cluster/temp/mdx-components.tsx.txt delete mode 100644 addons/cluster/temp/mdx-components.txt delete mode 100644 addons/cluster/temp/media.ts.txt delete mode 100644 addons/cluster/temp/middleware-new.ts.txt delete mode 100644 addons/cluster/temp/middleware.ts.txt delete mode 100644 addons/cluster/temp/middleware2.ts.txt delete mode 100644 addons/cluster/temp/middleware3.ts.txt delete mode 100644 addons/cluster/temp/middleware4.ts.txt delete mode 100644 addons/cluster/temp/mw.ts.txt delete mode 100644 addons/cluster/temp/navigation.ts.txt delete mode 100644 addons/cluster/temp/navigation2.txt delete mode 100644 addons/cluster/temp/next-intl.d.ts.txt delete mode 100644 addons/cluster/temp/next.config.js.txt delete mode 100644 addons/cluster/temp/no-restricted-imports.txt delete mode 100644 addons/cluster/temp/not-found.tsx.txt delete mode 100644 addons/cluster/temp/page.tsx.txt delete mode 100644 addons/cluster/temp/planetscale.txt delete mode 100644 addons/cluster/temp/playwright.config.ts.txt delete mode 100644 addons/cluster/temp/populate-user-auth.ts.txt delete mode 100644 addons/cluster/temp/prettier.config.cjs.txt delete mode 100644 addons/cluster/temp/python-helpers.ts.txt delete mode 100644 addons/cluster/temp/python-shell.ts.txt delete mode 100644 addons/cluster/temp/python.main.txt delete mode 100644 addons/cluster/temp/reliverse-addons-index.txt delete mode 100644 addons/cluster/temp/robots.ts.txt delete mode 100644 addons/cluster/temp/rs-canary.ts.txt delete mode 100644 addons/cluster/temp/server-action/check-user-button.tsx.txt delete mode 100644 addons/cluster/temp/server-action/clerk-user-button-server.tsx.txt delete mode 100644 addons/cluster/temp/server-action/client.tsx.txt delete mode 100644 addons/cluster/temp/server-action/page.tsx.txt delete mode 100644 addons/cluster/temp/sitemap.ts.txt delete mode 100644 addons/cluster/temp/socials.ts.txt delete mode 100644 addons/cluster/temp/stripe-helpers.ts.txt delete mode 100644 addons/cluster/temp/stripe-route.ts.txt delete mode 100644 addons/cluster/temp/stylelint.config.js.txt delete mode 100644 addons/cluster/temp/test.ts.txt delete mode 100644 addons/cluster/temp/tests/ava/ava-test-a.ts.txt delete mode 100644 addons/cluster/temp/tests/ava/ava-test-b.ts.txt delete mode 100644 addons/cluster/temp/tests/ava/swc/tests/ava/ava-test-a.js.txt delete mode 100644 addons/cluster/temp/tests/ava/swc/tests/ava/ava-test-b.js.txt delete mode 100644 addons/cluster/temp/tests/jest/cart.test.ts.txt delete mode 100644 addons/cluster/temp/tokens.css.txt delete mode 100644 addons/cluster/temp/types-info.ts.txt delete mode 100644 addons/cluster/temp/typestat.json.txt delete mode 100644 addons/cluster/temp/typestat2.json.txt delete mode 100644 addons/cluster/temp/unused-lang-switcher.tsx.txt delete mode 100644 addons/cluster/temp/use-swr/Pokemon.tsx.txt delete mode 100644 addons/cluster/temp/use-swr/page.tsx.txt delete mode 100644 addons/cluster/temp/use-swr/use-swr.ts.txt delete mode 100644 addons/cluster/temp/useSiteNavigation.ts.txt delete mode 100644 addons/cluster/temp/wallaby.cjs.txt delete mode 100644 addons/cluster/temp/warn-gen.ts.txt delete mode 100644 addons/cluster/temp/warn-push.ts.txt delete mode 100644 addons/cluster/temp/zip-helpers.ts.txt delete mode 100644 addons/cluster/temp/zustand-locale-layout.tsx.txt delete mode 100644 addons/scripts/manager.ts delete mode 100644 addons/scripts/reliverse/academy/achievements.ts delete mode 100644 addons/scripts/reliverse/academy/checkJsonFiles.ts delete mode 100644 addons/scripts/reliverse/academy/config.json delete mode 100644 addons/scripts/reliverse/academy/data/players.json delete mode 100644 addons/scripts/reliverse/academy/data/progress.json delete mode 100644 addons/scripts/reliverse/academy/data/schema-players.json delete mode 100644 addons/scripts/reliverse/academy/data/schema-progress.json delete mode 100644 addons/scripts/reliverse/academy/fileHandler.ts delete mode 100644 addons/scripts/reliverse/academy/fileProcessor.ts delete mode 100644 addons/scripts/reliverse/academy/game.ts delete mode 100644 addons/scripts/reliverse/academy/index.ts delete mode 100644 addons/scripts/reliverse/academy/leaders.ts delete mode 100644 addons/scripts/reliverse/academy/player.ts delete mode 100644 addons/scripts/reliverse/academy/questions/bonus.json delete mode 100644 addons/scripts/reliverse/academy/questions/eslint.json delete mode 100644 addons/scripts/reliverse/academy/questions/javascript.json delete mode 100644 addons/scripts/reliverse/academy/questions/react.json delete mode 100644 addons/scripts/reliverse/academy/questions/reliverse.json delete mode 100644 addons/scripts/reliverse/academy/questions/typescript.json delete mode 100644 addons/scripts/reliverse/academy/schema.json delete mode 100644 addons/scripts/reliverse/academy/settings.ts delete mode 100644 addons/scripts/reliverse/academy/types.ts delete mode 100644 addons/scripts/reliverse/disabler/index.ts delete mode 100644 addons/scripts/reliverse/gitutils/index.ts delete mode 100644 addons/scripts/reliverse/gitutils/utils/index.ts delete mode 100644 addons/scripts/reliverse/gitutils/utils/release.ts delete mode 100644 addons/scripts/reliverse/gitutils/utils/shell.ts delete mode 100644 addons/scripts/reliverse/presets/drizzle/index.ts delete mode 100644 addons/scripts/reliverse/presets/index.ts delete mode 100644 addons/scripts/reliverse/presets/utils/index.ts delete mode 100644 addons/scripts/reliverse/presets/utils/vscode.ts delete mode 100644 addons/scripts/reliverse/presets/vscode/default/extensions.json delete mode 100644 addons/scripts/reliverse/presets/vscode/default/launch.json delete mode 100644 addons/scripts/reliverse/presets/vscode/default/settings.json delete mode 100644 addons/scripts/reliverse/presets/vscode/index.ts delete mode 100644 addons/scripts/reliverse/presets/vscode/minimal/extensions.json delete mode 100644 addons/scripts/reliverse/presets/vscode/minimal/launch.json delete mode 100644 addons/scripts/reliverse/presets/vscode/minimal/settings.json delete mode 100644 addons/scripts/reliverse/presets/vscode/nothing/extensions.json delete mode 100644 addons/scripts/reliverse/presets/vscode/nothing/launch.json delete mode 100644 addons/scripts/reliverse/presets/vscode/nothing/settings.json delete mode 100644 addons/scripts/reliverse/presets/vscode/ultimate/extensions.json delete mode 100644 addons/scripts/reliverse/presets/vscode/ultimate/launch.json delete mode 100644 addons/scripts/reliverse/presets/vscode/ultimate/settings.json delete mode 100644 addons/scripts/reliverse/quotes/index.ts delete mode 100644 addons/scripts/reliverse/quotes/lines.ts delete mode 100644 addons/scripts/reliverse/quotes/more.ts delete mode 100644 addons/scripts/reliverse/quotes/types.ts delete mode 100644 addons/scripts/reliverse/relicon/crud/index.ts delete mode 100644 addons/scripts/reliverse/relicon/crud/prompts.ts delete mode 100644 addons/scripts/reliverse/relicon/index.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/.putout.recommended.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/.putout.rules-disabled.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/biome.recommended.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/biome.rules-disabled.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/env.recommended.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/env.rules-disabled.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/eslint.config.medium.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/eslint.config.minimal.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/eslint.config.rules-disabled.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/eslint.config.ultimate.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/knip.recommended.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/knip.rules-disabled.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/next.config.minimal.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/next.config.recommended.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/ts.config.default.json delete mode 100644 addons/scripts/reliverse/relicon/setup/configs/ts.config.minimal.json delete mode 100644 addons/scripts/reliverse/relicon/setup/index.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/appts.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/biome.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/env.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/envjs.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/eslint.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/index.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/knip.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/nextjs.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/prompt/putout.ts delete mode 100644 addons/scripts/reliverse/relicon/setup/types.ts delete mode 100644 addons/scripts/reliverse/relimter/astx/index.ts delete mode 100644 addons/scripts/reliverse/relimter/astx/tasks/block-to-line-comments.ts delete mode 100644 addons/scripts/reliverse/relimter/astx/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/canary.ts delete mode 100644 addons/scripts/reliverse/relimter/codeup/index.ts delete mode 100644 addons/scripts/reliverse/relimter/codeup/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/codeup/types.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/check-missing-variables.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/check-unexpected-variables.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx delete mode 100644 addons/scripts/reliverse/relimter/core/env/env-loader.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/get-missing.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/helpers.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/index.ts delete mode 100644 addons/scripts/reliverse/relimter/core/env/log-messages.ts delete mode 100644 addons/scripts/reliverse/relimter/core/index.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/! USE AT OWN RISK !/.gitkeep delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/comments-transformer.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/console-consola-switcher.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/convert.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/db-compare.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/islands-to-components.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/linebreak-crlf-to-lf.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/move-eslint-disable-to-top.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/no-unresolved-links.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/patch-gitignore-file.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/removeEmptyLines.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/seed-db.ts delete mode 100644 addons/scripts/reliverse/relimter/core/tasks/switcher.ts delete mode 100644 addons/scripts/reliverse/relimter/eslint/index.ts delete mode 100644 addons/scripts/reliverse/relimter/eslint/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/index.ts delete mode 100644 addons/scripts/reliverse/relimter/magicast/index.ts delete mode 100644 addons/scripts/reliverse/relimter/magicast/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/magicast/tasks/switch-drizzle-driver.ts delete mode 100644 addons/scripts/reliverse/relimter/magicast/tasks/tests/index.ts delete mode 100644 addons/scripts/reliverse/relimter/putout/index.ts delete mode 100644 addons/scripts/reliverse/relimter/putout/tasks/canary.ts delete mode 100644 addons/scripts/reliverse/relimter/putout/tasks/index.ts delete mode 100644 addons/scripts/reliverse/relimter/python/data/find-eslint-dep-rules.json delete mode 100644 addons/scripts/reliverse/relimter/python/data/script-manager-filter.json delete mode 100644 addons/scripts/reliverse/relimter/python/index.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/! USE AT OWN RISK !/.gitkeep delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/add-missing-ref-import.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/add-missing-url-import.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/avoid-hard-coded-numbers.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/barrel-files-to-direct-paths.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/barrel-shadcn-primitives.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/block-to-line-comments.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/check-non-existing-paths.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/check-path-existence.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/correct-comments-location.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/crypto-to-uncrypto.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/cspell-remove-unused.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/database-compare.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/database-convert.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/error-to-modern.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/eslint-find-off.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/extract-pages-keywords.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/find-deprecated-code.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/find-eslint-dep-rules.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/fix-import-paths-case.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/fix-type-imports.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/fix-use-directives.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/fs-to-fs-extra.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/import-comments.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/improve-seo-indexing.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/islands-to-components.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/json-parse-to-destr.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/json-to-superjson.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/knip-remove-ignores.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/linebreak-crlf-to-lf.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/list-disable-directives.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/list-variables-types.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/math-to-mathjs.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/migrate-from-barrel-fix-imports.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/move-use-client-to-top.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/named-imports.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/node-fetch-native.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/parse-content.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/path-to-pathe.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/print-project-tree.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/relimter-template-script.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/remove-duplicates-comments.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/remove-empty-lines.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/remove-unused-cn-imports.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/replace-icon-imports.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/save-file-multiple-times.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/search-used-brands.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/tags-to-components.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/toggle-all-eslint-rules.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/transform-classnames-cn-to-string.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/transform-classnames-string-to-cn.py delete mode 100644 addons/scripts/reliverse/relimter/python/tasks/types-info.py delete mode 100644 addons/scripts/reliverse/remotion/Content.tsx delete mode 100644 addons/scripts/reliverse/remotion/Main.tsx delete mode 100644 addons/scripts/reliverse/remotion/Root.tsx delete mode 100644 addons/scripts/reliverse/remotion/cache.ts delete mode 100644 addons/scripts/reliverse/remotion/constants.ts delete mode 100644 addons/scripts/reliverse/remotion/fetch-data.ts delete mode 100644 addons/scripts/reliverse/remotion/gh-styles.css delete mode 100644 addons/scripts/reliverse/remotion/index.ts delete mode 100644 addons/scripts/reliverse/remotion/repo.tsx delete mode 100644 addons/scripts/reliverse/remotion/utils.ts delete mode 100644 addons/scripts/reliverse/remotion/via-graphql.ts delete mode 100644 addons/scripts/reliverse/remotion/via-rest.ts delete mode 100644 addons/scripts/reliverse/remotion/wait-for-no-input.ts delete mode 100644 addons/scripts/reliverse/template/index.ts delete mode 100644 addons/scripts/utils/addon.ts delete mode 100644 addons/scripts/utils/index.ts delete mode 100644 addons/scripts/utils/pm.ts delete mode 100644 addons/scripts/utils/types/index.ts create mode 100644 bun.lockb delete mode 100644 cspell.json delete mode 100644 eslint.setup.ts delete mode 100644 knip.json rename messages/{default => }/de-DE.json (99%) delete mode 100644 messages/ecommerce/de-DE.json delete mode 100644 messages/ecommerce/en-US.json delete mode 100644 messages/ecommerce/es-ES.json delete mode 100644 messages/ecommerce/fa-IR.json delete mode 100644 messages/ecommerce/fr-FR.json delete mode 100644 messages/ecommerce/hi-IN.json delete mode 100644 messages/ecommerce/it-IT.json delete mode 100644 messages/ecommerce/pl-PL.json delete mode 100644 messages/ecommerce/tr-TR.json delete mode 100644 messages/ecommerce/uk-UA.json delete mode 100644 messages/ecommerce/zh-CN.json rename messages/{default => }/en-US.json (99%) rename messages/{default => }/es-ES.json (99%) rename messages/{default => }/fa-IR.json (99%) rename messages/{default => }/fr-FR.json (99%) rename messages/{default => }/hi-IN.json (100%) rename messages/{default => }/it-IT.json (99%) create mode 100644 messages/ms-MY.json rename messages/{default => }/pl-PL.json (99%) rename messages/{default => }/tr-TR.json (99%) rename messages/{default => }/uk-UA.json (99%) rename messages/{default => }/zh-CN.json (99%) delete mode 100644 packageJson.ts delete mode 100644 pnpm-lock.yaml create mode 100644 public/images/auth-layout.webp create mode 100644 public/images/avatar/logo.webp create mode 100644 public/images/categories/backpack-one.webp create mode 100644 public/images/categories/backpack-two.webp create mode 100644 public/images/categories/bearing-one.webp create mode 100644 public/images/categories/clothing-one.webp create mode 100644 public/images/categories/deck-one.webp create mode 100644 public/images/categories/griptape-one.webp create mode 100644 public/images/categories/hardware-one.webp create mode 100644 public/images/categories/shoes-one.webp create mode 100644 public/images/categories/shoes-two.webp create mode 100644 public/images/categories/skateboard-one.webp create mode 100644 public/images/categories/skateboard-two.webp create mode 100644 public/images/categories/tool-one.webp create mode 100644 public/images/categories/truck-one.webp create mode 100644 public/images/categories/wheel-one.webp create mode 100644 public/screenshot-dark-very-old.png create mode 100644 public/screenshot-light-very-old.png create mode 100644 public/site.webmanifest delete mode 100644 pyproject.toml delete mode 100644 reliverse.addons.ts delete mode 100644 reliverse.config.ts delete mode 100644 reliverse.i18n.ts delete mode 100644 reliverse.info.ts delete mode 100644 reliverse.setup.ts delete mode 100644 reliverse.themes.ts delete mode 100644 remotion.config.ts delete mode 100644 src/app.ts create mode 100644 src/app/[locale]/(auth)/_components/logout-buttons.tsx create mode 100644 src/app/[locale]/(auth)/_components/oauth-signin.tsx create mode 100644 src/app/[locale]/(auth)/_components/reset-password-confirm-form.tsx create mode 100644 src/app/[locale]/(auth)/_components/reset-password-form.tsx create mode 100644 src/app/[locale]/(auth)/_components/signin-form.tsx create mode 100644 src/app/[locale]/(auth)/_components/signup-form.tsx create mode 100644 src/app/[locale]/(auth)/_components/sso-callback.tsx create mode 100644 src/app/[locale]/(auth)/_components/verify-email-form.tsx create mode 100644 src/app/[locale]/(auth)/layout.tsx create mode 100644 src/app/[locale]/(auth)/signin/[[...signin]]/page.tsx create mode 100644 src/app/[locale]/(auth)/signin/reset-password/[[...reset-password]]/page.tsx create mode 100644 src/app/[locale]/(auth)/signin/reset-password/confirm/[[...confirm]]/page.tsx create mode 100644 src/app/[locale]/(auth)/signout/[[...signout]]/page.tsx create mode 100644 src/app/[locale]/(auth)/signup/[[...signup]]/page.tsx create mode 100644 src/app/[locale]/(auth)/signup/verify-email/[[...verify-email]]/page.tsx create mode 100644 src/app/[locale]/(auth)/sso-callback/[[...sso-callback]]/page.tsx create mode 100644 src/app/[locale]/(checkout)/cart/layout.tsx rename src/app/[locale]/{ => (checkout)}/cart/loading.tsx (58%) create mode 100644 src/app/[locale]/(checkout)/cart/page.tsx create mode 100644 src/app/[locale]/(checkout)/checkout/[storeId]/error.tsx create mode 100644 src/app/[locale]/(checkout)/checkout/[storeId]/loading.tsx create mode 100644 src/app/[locale]/(checkout)/checkout/[storeId]/page.tsx rename src/app/[locale]/{ => (checkout)}/checkout/[storeId]/success/loading.tsx (60%) create mode 100644 src/app/[locale]/(checkout)/checkout/[storeId]/success/page.tsx create mode 100644 src/app/[locale]/(checkout)/checkout/layout.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/account/[[...rest]]/_components/user-profile.tsx rename src/app/[locale]/{dashboard/account => (dashboard)/dashboard/account/[[...rest]]}/loading.tsx (76%) create mode 100644 src/app/[locale]/(dashboard)/dashboard/account/[[...rest]]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/billing/_components/billing-skeleton.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/billing/_components/billing.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/billing/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/layout.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/purchases/[purchaseId]/loading.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/purchases/[purchaseId]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/purchases/page.tsx rename src/{components/Skeletons/Forms/UpdateNotificationFormSkeleton.tsx => app/[locale]/(dashboard)/dashboard/settings/_components/update-notification-form-skeleton.tsx} (59%) rename src/{components/Forms/UpdateNotificationForm.tsx => app/[locale]/(dashboard)/dashboard/settings/_components/update-notification-form.tsx} (65%) create mode 100644 src/app/[locale]/(dashboard)/dashboard/settings/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/create-store-dialog.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/create-store-form.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/dashboard-header.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/dashboard-sidebar-sheet.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/dashboard-sidebar.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/store-switcher.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/_components/storeSwitcherActions.ts create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/analytics/_components/overview-card.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/analytics/_components/sales-chart.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/analytics/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/customers/[customerId]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/customers/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/error.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/layout.tsx rename src/app/[locale]/{ => (dashboard)}/dashboard/stores/[storeId]/loading.tsx (88%) create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/not-found.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/orders/[orderId]/loading.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/orders/[orderId]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/orders/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/[productId]/_components/update-product-form.tsx rename src/app/[locale]/{dashboard/stores/[storeId]/products/[productId]/loading.tsx.txt => (dashboard)/dashboard/stores/[storeId]/products/[productId]/loading.tsx} (89%) create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/[productId]/not-found.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/[productId]/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/new/_components/create-product-form.tsx rename src/app/[locale]/{dashboard/stores/[storeId]/products/new/loading.tsx.txt => (dashboard)/dashboard/stores/[storeId]/products/new/loading.tsx} (88%) create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/new/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/products/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/settings/_components/update-notification-form-skeleton.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/settings/_components/update-notification-form.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/[storeId]/settings/page.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/loading.tsx create mode 100644 src/app/[locale]/(dashboard)/dashboard/stores/page.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/_components/connect-stripe.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/_components/create-store.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/_components/intro.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/_components/onboarding.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/_components/step-header.tsx create mode 100644 src/app/[locale]/(dashboard)/onboarding/page.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/[...slug]/not-found.tsx.txt create mode 100644 src/app/[locale]/(lobby)/(content)/[...slug]/page.tsx.txt create mode 100644 src/app/[locale]/(lobby)/(content)/blog/[...slug]/loading.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/blog/[...slug]/not-found.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/blog/[...slug]/page.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/blog/_components/post-card-skeleton.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/blog/_components/post-card.tsx create mode 100644 src/app/[locale]/(lobby)/(content)/blog/page.tsx create mode 100644 src/app/[locale]/(lobby)/@modal/(.)preview/layout.tsx create mode 100644 src/app/[locale]/(lobby)/@modal/(.)preview/product/[productId]/loading.tsx create mode 100644 src/app/[locale]/(lobby)/@modal/(.)preview/product/[productId]/not-found.tsx create mode 100644 src/app/[locale]/(lobby)/@modal/(.)preview/product/[productId]/page.tsx create mode 100644 src/app/[locale]/(lobby)/@modal/default.tsx create mode 100644 src/app/[locale]/(lobby)/_components/category-card-skeleton.tsx create mode 100644 src/app/[locale]/(lobby)/_components/category-card.tsx create mode 100644 src/app/[locale]/(lobby)/_components/lobby-skeleton.tsx create mode 100644 src/app/[locale]/(lobby)/_components/lobby.tsx create mode 100644 src/app/[locale]/(lobby)/build-a-board/page.tsx create mode 100644 src/app/[locale]/(lobby)/collections/[category]/[subcategory]/page.tsx rename src/app/[locale]/{categories/[category]/loading.tsx.txt => (lobby)/collections/[category]/loading.tsx} (53%) create mode 100644 src/app/[locale]/(lobby)/collections/[category]/page.tsx create mode 100644 src/app/[locale]/(lobby)/layout.tsx create mode 100644 src/app/[locale]/(lobby)/page.tsx rename src/app/[locale]/{preview => (lobby)/preview/product}/[productId]/page.tsx (87%) create mode 100644 src/app/[locale]/(lobby)/product/[productId]/_components/add-to-cart-form.tsx create mode 100644 src/app/[locale]/(lobby)/product/[productId]/_components/update-product-rating-button.tsx create mode 100644 src/app/[locale]/(lobby)/product/[productId]/loading.tsx create mode 100644 src/app/[locale]/(lobby)/product/[productId]/not-found.tsx create mode 100644 src/app/[locale]/(lobby)/product/[productId]/page.tsx create mode 100644 src/app/[locale]/(lobby)/products/loading.tsx create mode 100644 src/app/[locale]/(lobby)/products/page.tsx create mode 100644 src/app/[locale]/(lobby)/stores/loading.tsx create mode 100644 src/app/[locale]/(lobby)/stores/page.tsx delete mode 100644 src/app/[locale]/about/layout.tsx delete mode 100644 src/app/[locale]/about/page.tsx delete mode 100644 src/app/[locale]/auth/block/[[...block]]/page.tsx delete mode 100644 src/app/[locale]/auth/layout.tsx delete mode 100644 src/app/[locale]/auth/page.tsx delete mode 100644 src/app/[locale]/auth/sign-in/[[...sign-in]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-in/[[...sign-in]]/page.txt delete mode 100644 src/app/[locale]/auth/sign-in/layout.tsx delete mode 100644 src/app/[locale]/auth/sign-in/recover/[[...recover]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-in/recover/step-two/[[...step-two]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-out/[[...sign-out]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-out/layout.tsx delete mode 100644 src/app/[locale]/auth/sign-out/loading.tsx delete mode 100644 src/app/[locale]/auth/sign-sso/[[...sign-sso]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-up/[[...sign-up]]/page.tsx delete mode 100644 src/app/[locale]/auth/sign-up/[[...sign-up]]/page.txt delete mode 100644 src/app/[locale]/auth/sign-up/layout.tsx delete mode 100644 src/app/[locale]/auth/sign-up/verify-email/[[...verify-email]]/page.tsx delete mode 100644 src/app/[locale]/blog/layout.tsx delete mode 100644 src/app/[locale]/blog/page.tsx delete mode 100644 src/app/[locale]/cart/layout.tsx delete mode 100644 src/app/[locale]/cart/page.tsx delete mode 100644 src/app/[locale]/cart/page.txt delete mode 100644 src/app/[locale]/categories/[category]/[subcategory]/page.tsx delete mode 100644 src/app/[locale]/categories/[category]/[subcategory]/page.tsx.txt delete mode 100644 src/app/[locale]/categories/[category]/page.tsx delete mode 100644 src/app/[locale]/categories/[category]/page.tsx.txt delete mode 100644 src/app/[locale]/categories/layout.tsx delete mode 100644 src/app/[locale]/checkout/[storeId]/layout.tsx delete mode 100644 src/app/[locale]/checkout/[storeId]/loading.tsx delete mode 100644 src/app/[locale]/checkout/[storeId]/page.tsx delete mode 100644 src/app/[locale]/checkout/[storeId]/success/page.tsx delete mode 100644 src/app/[locale]/checkout/layout.tsx delete mode 100644 src/app/[locale]/contact/layout.tsx delete mode 100644 src/app/[locale]/contact/page.tsx delete mode 100644 src/app/[locale]/custom/clothing/page.tsx delete mode 100644 src/app/[locale]/custom/layout.tsx delete mode 100644 src/app/[locale]/dashboard/account/manage/loading.tsx delete mode 100644 src/app/[locale]/dashboard/account/manage/page.tsx delete mode 100644 src/app/[locale]/dashboard/account/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/countries/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/layout.tsx delete mode 100644 src/app/[locale]/dashboard/admin/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/features/api-from-client/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/features/api-from-server/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/features/api-from-server/result/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/features/protected/page.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/layout.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/loading.tsx delete mode 100644 src/app/[locale]/dashboard/admin/playground/page.tsx delete mode 100644 src/app/[locale]/dashboard/billing/PlanCard.tsx delete mode 100644 src/app/[locale]/dashboard/billing/example.tsx delete mode 100644 src/app/[locale]/dashboard/billing/loading.tsx delete mode 100644 src/app/[locale]/dashboard/billing/page.tsx delete mode 100644 src/app/[locale]/dashboard/billing/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/layout.tsx delete mode 100644 src/app/[locale]/dashboard/onboarding/OnboardContent.tsx delete mode 100644 src/app/[locale]/dashboard/onboarding/page.mdx delete mode 100644 src/app/[locale]/dashboard/page.tsx delete mode 100644 src/app/[locale]/dashboard/purchases/loading.tsx delete mode 100644 src/app/[locale]/dashboard/purchases/page.tsx delete mode 100644 src/app/[locale]/dashboard/settings/page.tsx delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/analytics/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/layout.tsx delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/orders/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/products/[productId]/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/products/[productId]/page2.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/products/loading.tsx delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/products/new/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/[storeId]/products/page.tsx.txt delete mode 100644 src/app/[locale]/dashboard/stores/layout.tsx delete mode 100644 src/app/[locale]/dashboard/stores/loading.tsx delete mode 100644 src/app/[locale]/dashboard/stores/new/page.tsx delete mode 100644 src/app/[locale]/dashboard/stores/page.tsx delete mode 100644 src/app/[locale]/dashboard/stores/page.tsx.txt delete mode 100644 src/app/[locale]/donate/avatar.tsx delete mode 100644 src/app/[locale]/donate/page.tsx delete mode 100644 src/app/[locale]/donate/sponsors.tsx delete mode 100644 src/app/[locale]/error/[[...error]]/client.tsx delete mode 100644 src/app/[locale]/error/[[...error]]/page.tsx delete mode 100644 src/app/[locale]/error/layout.tsx create mode 100644 src/app/[locale]/favicon.ico delete mode 100644 src/app/[locale]/legal/layout.tsx delete mode 100644 src/app/[locale]/legal/policy/page.mdx delete mode 100644 src/app/[locale]/legal/policy/page.tsx.txt delete mode 100644 src/app/[locale]/legal/privacy/page.mdx delete mode 100644 src/app/[locale]/legal/privacy/page.tsx.txt delete mode 100644 src/app/[locale]/page.tsx delete mode 100644 src/app/[locale]/pathnames/page.tsx delete mode 100644 src/app/[locale]/playground/clerk/dashboard/page.tsx delete mode 100644 src/app/[locale]/playground/clerk/page.tsx delete mode 100644 src/app/[locale]/playground/novu/page.tsx delete mode 100644 src/app/[locale]/preview/layout.tsx delete mode 100644 src/app/[locale]/pricing/components/client.tsx delete mode 100644 src/app/[locale]/pricing/components/sub-actions.ts delete mode 100644 src/app/[locale]/pricing/components/subscribe.tsx delete mode 100644 src/app/[locale]/pricing/components/upgrade.tsx delete mode 100644 src/app/[locale]/pricing/layout.tsx delete mode 100644 src/app/[locale]/pricing/page.tsx delete mode 100644 src/app/[locale]/product/[productId]/components/client.tsx delete mode 100644 src/app/[locale]/product/[productId]/loading.tsx delete mode 100644 src/app/[locale]/product/[productId]/page.tsx delete mode 100644 src/app/[locale]/product/layout.tsx delete mode 100644 src/app/[locale]/products/layout.tsx delete mode 100644 src/app/[locale]/products/old-temp/loading.tsx delete mode 100644 src/app/[locale]/products/old-temp/page.tsx delete mode 100644 src/app/[locale]/products/page.tsx delete mode 100644 src/app/[locale]/sign-in/[[...sign-in]]/page.tsx delete mode 100644 src/app/[locale]/sign-up/[[...sign-up]]/page.tsx delete mode 100644 src/app/[locale]/store/[storeId]/loading.tsx delete mode 100644 src/app/[locale]/store/[storeId]/page.tsx delete mode 100644 src/app/[locale]/store/layout.tsx delete mode 100644 src/app/[locale]/user/preferences/email/page.tsx delete mode 100644 src/app/[locale]/user/preferences/layout.tsx delete mode 100644 src/app/[locale]/user/preferences/page.tsx delete mode 100644 src/app/api/auth/[...nextauth]/route.ts delete mode 100644 src/app/api/cms/create/component/route.ts.txt delete mode 100644 src/app/api/cms/create/page/route.ts.txt create mode 100644 src/app/api/email/newsletter/route.ts delete mode 100644 src/app/api/mail/subscribe/route.ts delete mode 100644 src/app/api/novu/route.ts.txt create mode 100644 src/app/api/og/route.tsx delete mode 100644 src/app/api/ping/route.ts create mode 100644 src/app/api/revalidate/[tag]/route.ts create mode 100644 src/app/api/revalidate/route.ts delete mode 100644 src/app/api/trpc.zip create mode 100644 src/app/api/uploadthing/core.ts delete mode 100644 src/app/api/webhooks.zip create mode 100644 src/app/api/webhooks/stripe/route.ts create mode 100644 src/app/icon.png rename addons/cluster/temp/__robots.deprecated.txt => src/app/robots.ts (51%) delete mode 100644 src/app/robots.txt delete mode 100644 src/auth/authjs.ts delete mode 100644 src/auth/clerk.ts delete mode 100644 src/auth/migrate.ts delete mode 100644 src/auth/provider.ts delete mode 100644 src/components/Account/ActionButton.tsx delete mode 100644 src/components/Account/AuthPagesContentClient.tsx delete mode 100644 src/components/Account/AuthPagesContentServer.tsx delete mode 100644 src/components/Account/AuthProvider.tsx delete mode 100644 src/components/Account/AuthRequired.tsx delete mode 100644 src/components/Account/AuthjsButtons.tsx delete mode 100644 src/components/Account/AuthjsUser.tsx delete mode 100644 src/components/Account/AuthjsV5Test.tsx delete mode 100644 src/components/Account/Clerk/ClerkCodeSwitcher.tsx delete mode 100644 src/components/Account/Clerk/ClerkFooter.tsx delete mode 100644 src/components/Account/Clerk/ClerkLearnMore.tsx delete mode 100644 src/components/Account/Clerk/ClerkLogo.tsx delete mode 100644 src/components/Account/Clerk/ClerkNextLogo.tsx delete mode 100644 src/components/Account/Clerk/ClerkUserDetails.tsx delete mode 100644 src/components/Account/Guest/UserNotFound.tsx delete mode 100644 src/components/Account/LogoutButtons.tsx delete mode 100644 src/components/Account/MailAuthUser.tsx delete mode 100644 src/components/Account/SessionData.tsx delete mode 100644 src/components/Account/SigninLink.tsx delete mode 100644 src/components/Account/SsoCallback.tsx delete mode 100644 src/components/Account/UserButton.tsx delete mode 100644 src/components/Account/UserLogin.tsx delete mode 100644 src/components/Application/ApplicationShells/SidebarLayouts/SidebarWithHeader.tsx delete mode 100644 src/components/Application/ApplicationShells/StackedLayouts/NavWithCompactPageHeader.tsx delete mode 100644 src/components/Application/Navigation/SidebarNavigation/WithSecondaryNavigation.tsx delete mode 100644 src/components/Application/Navigation/VerticalNavigation/WithIcons.tsx delete mode 100644 src/components/Application/ReliverseToolbar.tsx delete mode 100644 src/components/Application/UploadThing/MultiUploader.tsx delete mode 100644 src/components/Charts/AppStatsChart.tsx delete mode 100644 src/components/Checkout/CheckoutButton.tsx delete mode 100644 src/components/Checkout/CheckoutShell.tsx delete mode 100644 src/components/Checkout/UpdateCart.tsx delete mode 100644 src/components/Commerce/Cart/CartDialog.tsx delete mode 100644 src/components/Commerce/CommerceDashboard.tsx delete mode 100644 src/components/Commerce/FeaturedStoreItems.tsx delete mode 100644 src/components/Commerce/PricingModules.tsx delete mode 100644 src/components/Commerce/Subcategories.tsx delete mode 100644 src/components/Common/Icons/SVG.module.css delete mode 100644 src/components/Common/Icons/SVG.tsx delete mode 100644 src/components/Common/LocaleSwitcher.tsx delete mode 100644 src/components/Common/PageLayout.tsx delete mode 100644 src/components/Common/client-button.tsx delete mode 100644 src/components/Common/copy-button.tsx delete mode 100644 src/components/Common/creating.tsx delete mode 100644 src/components/Common/cursor.tsx delete mode 100644 src/components/Common/fake-loading.tsx delete mode 100644 src/components/Common/features.tsx delete mode 100644 src/components/Common/file-dialog.tsx delete mode 100644 src/components/Common/funding.tsx delete mode 100644 src/components/Common/generate.tsx delete mode 100644 src/components/Common/loading-button.tsx delete mode 100644 src/components/Common/locale-flag-icon.tsx delete mode 100644 src/components/Common/loglib-analytics.tsx delete mode 100644 src/components/Common/message.tsx delete mode 100644 src/components/Common/mode-toggle.tsx delete mode 100644 src/components/Common/multi-select.tsx delete mode 100644 src/components/Common/placeholders.tsx delete mode 100644 src/components/Common/product-context.tsx delete mode 100644 src/components/Common/product-image-carousel.tsx delete mode 100644 src/components/Common/products.tsx delete mode 100644 src/components/Common/stars.tsx delete mode 100644 src/components/Common/stores.tsx delete mode 100644 src/components/Common/stripe-button-connect.tsx delete mode 100644 src/components/Common/tailwind-indicator.tsx delete mode 100644 src/components/Common/temp-compiler-fix.tsx delete mode 100644 src/components/Common/text-cts.tsx delete mode 100644 src/components/Common/zoom-image.tsx delete mode 100644 src/components/Content/ClerkPageOauth.tsx delete mode 100644 src/components/Content/ProviderButton.tsx delete mode 100644 src/components/Content/UserContent.tsx delete mode 100644 src/components/Data/CreateTodo.tsx.txt delete mode 100644 src/components/Data/RenderCountComp.tsx delete mode 100644 src/components/Data/RenderCountData.tsx delete mode 100644 src/components/Emails/NewsletterWelcomeEmail.tsx delete mode 100644 src/components/Emails/Onboarding.tsx delete mode 100644 src/components/Emails/ResendTemplateEmail.tsx delete mode 100644 src/components/Forms/CartAddForm.tsx delete mode 100644 src/components/Forms/ContactForm.tsx delete mode 100644 src/components/Forms/Context/GuestAddFormContext.tsx delete mode 100644 src/components/Forms/GuestAddForm.tsx delete mode 100644 src/components/Forms/JoinNewsletterForm.tsx delete mode 100644 src/components/Forms/PlanManageForm.tsx delete mode 100644 src/components/Forms/PostAddForm.tsx.txt delete mode 100644 src/components/Forms/ProductAddForm.tsx delete mode 100644 src/components/Forms/ProductUpdForm.tsx delete mode 100644 src/components/Forms/StoreAddForm.tsx delete mode 100644 src/components/Marketing/BottomSection.tsx delete mode 100644 src/components/Marketing/Elements/Banners/privacy-notice-right-aligned.tsx delete mode 100644 src/components/Marketing/Elements/Banners/with-button-animated.tsx delete mode 100644 src/components/Marketing/Elements/Banners/with-button.tsx delete mode 100644 src/components/Marketing/Elements/FlyoutMenus/stacked-with-footer-actions.tsx delete mode 100644 src/components/Marketing/Elements/Headers/WithLeftAlignedNav.tsx delete mode 100644 src/components/Marketing/HeroSection.tsx delete mode 100644 src/components/Marketing/MainSection.tsx delete mode 100644 src/components/Marketing/Marketing/HeroSection.tsx delete mode 100644 src/components/Modules/Analytics.tsx delete mode 100644 src/components/Modules/Cards/CheckoutCard.tsx delete mode 100644 src/components/Modules/Cards/ErrorCard.tsx delete mode 100644 src/components/Modules/Cards/MdxCard.tsx delete mode 100644 src/components/Modules/Cards/ProductCard.tsx delete mode 100644 src/components/Modules/Cards/SkeletonCard.tsx delete mode 100644 src/components/Modules/Cards/StoreCardDashboard.tsx delete mode 100644 src/components/Modules/Cards/StoreCardDefault.tsx delete mode 100644 src/components/Modules/DataTable/DataTable.tsx delete mode 100644 src/components/Modules/DataTable/DataTableColumnHeader.tsx delete mode 100644 src/components/Modules/DataTable/DataTableLoading.tsx delete mode 100644 src/components/Modules/DataTable/DataTableToolbar.tsx delete mode 100644 src/components/Modules/DataTable/Options.tsx delete mode 100644 src/components/Modules/DebounceInput.tsx delete mode 100644 src/components/Modules/HText.tsx delete mode 100644 src/components/Modules/Markdown/CodeBlock.tsx delete mode 100644 src/components/Modules/ModeToggle.tsx delete mode 100644 src/components/Modules/ThemeToggle.tsx delete mode 100644 src/components/Modules/Zustand/ZuClock.tsx delete mode 100644 src/components/Modules/Zustand/ZuCounter.tsx delete mode 100644 src/components/Modules/Zustand/ZuProvider.tsx delete mode 100644 src/components/Modules/Zustand/zu-interval.ts delete mode 100644 src/components/Modules/Zustand/zu-store.ts delete mode 100644 src/components/Navigation/CarouselCards.tsx delete mode 100644 src/components/Navigation/CustomLink.tsx delete mode 100644 src/components/Navigation/DonateLink.tsx delete mode 100644 src/components/Navigation/LocaleSwitcher.tsx delete mode 100644 src/components/Navigation/MainMenu.tsx delete mode 100644 src/components/Navigation/Menubar.tsx delete mode 100644 src/components/Navigation/MobileMenu.tsx delete mode 100644 src/components/Navigation/NavMenu.tsx delete mode 100644 src/components/Navigation/NavMenuClient.tsx delete mode 100644 src/components/Navigation/PageNavMenu.tsx delete mode 100644 src/components/Navigation/Pagination/Breadcrumbs.tsx delete mode 100644 src/components/Navigation/Pagination/ProductPager.tsx delete mode 100644 src/components/Navigation/Pagination/StorePager.tsx delete mode 100644 src/components/Navigation/Pagination/StoreSwitcher.tsx delete mode 100644 src/components/Navigation/Pagination/StoreTabs.tsx delete mode 100644 src/components/Navigation/SidebarNav.tsx delete mode 100644 src/components/Navigation/SiteFooter.tsx delete mode 100644 src/components/Navigation/SiteHeader.tsx delete mode 100644 src/components/Navigation/UserMenu.tsx delete mode 100644 src/components/Playground/Privileges.tsx delete mode 100644 src/components/Products/Catalogue.tsx delete mode 100644 src/components/Providers/AuthProvider.tsx delete mode 100644 src/components/Providers/FlowbiteTheme.tsx delete mode 100644 src/components/Providers/NextintlProvider.tsx delete mode 100644 src/components/Providers/SessionProvider.tsx delete mode 100644 src/components/Providers/ThemeProvider.tsx delete mode 100644 src/components/Providers/Tooltip.tsx delete mode 100644 src/components/Sections/Questions/AccordionSection.tsx delete mode 100644 src/components/Sections/Questions/AccordionSectionFlowbite.tsx delete mode 100644 src/components/Switchers/ThemesGeneralSwitcher.tsx delete mode 100644 src/components/Wrappers/DialogShell.tsx delete mode 100644 src/components/Wrappers/GeneralShell.tsx delete mode 100644 src/components/Wrappers/OrdersTableShell.tsx delete mode 100644 src/components/Wrappers/PageLayout.tsx delete mode 100644 src/components/Wrappers/ShellVariants.tsx create mode 100644 src/components/alert-card.tsx create mode 100644 src/components/analytics.tsx create mode 100644 src/components/blur-image.tsx rename src/components/{Common/product-building.tsx => board-builder.tsx} (50%) rename src/components/{Checkout/CartLineItems.tsx => checkout/cart-line-items.tsx} (63%) create mode 100644 src/components/checkout/cart-sheet.tsx create mode 100644 src/components/checkout/checkout-card.tsx rename src/components/{Forms/CheckoutForm.tsx => checkout/checkout-form.tsx} (52%) create mode 100644 src/components/checkout/checkout-shell.tsx create mode 100644 src/components/checkout/update-cart.tsx rename src/components/{Checkout/VerifyOrderForm.tsx => checkout/verify-order-form.tsx} (60%) create mode 100644 src/components/client-button.tsx create mode 100644 src/components/connect-store-to-stripe-button.tsx create mode 100644 src/components/content-section.tsx create mode 100644 src/components/copy-button.tsx create mode 100644 src/components/data-table/data-table-column-header.tsx rename src/components/{Modules/DataTable/Faceted.tsx => data-table/data-table-faceted-filter.tsx} (64%) rename src/components/{Modules/DataTable/DataTablePagination.tsx => data-table/data-table-pagination.tsx} (69%) create mode 100644 src/components/data-table/data-table-skeleton.tsx create mode 100644 src/components/data-table/data-table-toolbar.tsx create mode 100644 src/components/data-table/data-table-view-options.tsx create mode 100644 src/components/data-table/data-table.tsx create mode 100644 src/components/date-range-picker.tsx create mode 100644 src/components/debounce-input.tsx create mode 100644 src/components/dialog-shell.tsx create mode 100644 src/components/emails/newsletter-welcome-email.tsx create mode 100644 src/components/empty-card.tsx create mode 100644 src/components/error-card.tsx rename src/components/{Common => }/faceted-filter.tsx (75%) create mode 100644 src/components/file-uploader.tsx create mode 100644 src/components/files.tsx create mode 100644 src/components/grid-pattern.tsx create mode 100644 src/components/icons.tsx create mode 100644 src/components/join-newsletter-form.tsx rename src/components/{ui => }/kbd.tsx (53%) create mode 100644 src/components/layouts/auth-dropdown.tsx create mode 100644 src/components/layouts/main-nav.tsx create mode 100644 src/components/layouts/mobile-nav.tsx create mode 100644 src/components/layouts/mode-toggle.tsx create mode 100644 src/components/layouts/sidebar-nav.tsx create mode 100644 src/components/layouts/sidebar-provider.tsx create mode 100644 src/components/layouts/site-footer.tsx create mode 100644 src/components/layouts/site-header.tsx create mode 100644 src/components/loading-button.tsx create mode 100644 src/components/manage-plan-form.tsx rename src/components/{Modules/Markdown/Callout.tsx => mdx/callout.tsx} (55%) create mode 100644 src/components/mdx/code-block.tsx create mode 100644 src/components/mdx/link-badge.tsx create mode 100644 src/components/mdx/mdx-card.tsx create mode 100644 src/components/mdx/mdx-image.tsx rename src/components/{Navigation/Pagination/MdxPager.tsx => mdx/mdx-pager.tsx} (56%) create mode 100644 src/components/metrics-card.tsx create mode 100644 src/components/motion.tsx create mode 100644 src/components/multi-select.tsx create mode 100644 src/components/page-header.tsx rename src/components/{Navigation/Pagination/PaginationButton.tsx => pagination-button.tsx} (68%) rename src/components/{Common => }/password-input.tsx (51%) create mode 100644 src/components/placeholder-image.tsx create mode 100644 src/components/product-card-skeleton.tsx create mode 100644 src/components/product-card.tsx create mode 100644 src/components/product-image-carousel.tsx rename src/components/{Navigation/ProductsCombobox.tsx => products-combobox.tsx} (65%) create mode 100644 src/components/products.tsx rename src/components/{Common/provider.tsx => providers.tsx} (66%) create mode 100644 src/components/radial-gradient.tsx create mode 100644 src/components/rate-limit-alert.tsx create mode 100644 src/components/rating.tsx create mode 100644 src/components/seed-products-button.tsx create mode 100644 src/components/shell.tsx create mode 100644 src/components/store-card-skeleton.tsx create mode 100644 src/components/store-card.tsx create mode 100644 src/components/store-tabs.tsx create mode 100644 src/components/stores.tsx create mode 100644 src/components/tables/customers-table.tsx create mode 100644 src/components/tables/orders-table.tsx rename src/components/{Wrappers/ProductsTableShell.tsx => tables/products-table.tsx} (53%) create mode 100644 src/components/tables/purchases-table.tsx create mode 100644 src/components/tailwind-indicator.tsx create mode 100644 src/components/textarea-autosize.tsx delete mode 100644 src/components/ui/chart.tsx delete mode 100644 src/components/ui/dropdown.tsx delete mode 100644 src/components/ui/grid.tsx delete mode 100644 src/components/ui/heading.tsx delete mode 100644 src/components/ui/icon.tsx delete mode 100644 src/components/ui/link.tsx delete mode 100644 src/components/ui/main.tsx delete mode 100644 src/components/ui/paragraph.tsx delete mode 100644 src/components/ui/password.tsx delete mode 100644 src/components/ui/popup.tsx delete mode 100644 src/components/ui/section.tsx delete mode 100644 src/components/ui/span.tsx delete mode 100644 src/components/ui/text-area.tsx delete mode 100644 src/components/ui/toast.tsx create mode 100644 src/components/usage-card.tsx rename src/{constants => config}/dashboard.ts (82%) rename src/{constants => config}/pricing.ts (76%) rename src/{constants => config}/product.ts (96%) rename src/{constants => config}/query.ts (100%) rename src/{constants => config}/site.ts (56%) delete mode 100644 src/constants/math.ts delete mode 100644 src/constants/metadata.ts delete mode 100644 src/constants/nav-items.ts delete mode 100644 src/constants/products.ts delete mode 100644 src/constants/stores.ts delete mode 100644 src/core/adm/actions.ts delete mode 100644 src/core/auth/authjs/auth-old.ts delete mode 100644 src/core/auth/authjs/components/sign-out-button.tsx delete mode 100644 src/core/auth/clerkjs/components/user-profile-clerk.tsx delete mode 100644 src/core/auth/clerkjs/other/checks.tsx delete mode 100644 src/core/mail/resend.ts delete mode 100644 src/core/mail/templates/onboard.tsx delete mode 100644 src/core/novu/emails/novu-onboarding-email.tsx.txt delete mode 100644 src/core/novu/workflows/welcome-onboarding-email/schemas.ts.txt delete mode 100644 src/core/novu/workflows/welcome-onboarding-email/types.ts.txt delete mode 100644 src/core/novu/workflows/welcome-onboarding-email/workflow.ts.txt delete mode 100644 src/core/stripe/connect.ts delete mode 100644 src/core/stripe/getting.ts delete mode 100644 src/core/stripe/handlers.ts delete mode 100644 src/core/stripe/loading.ts delete mode 100644 src/core/stripe/stripe.ts delete mode 100644 src/core/stripe/subs.ts delete mode 100644 src/core/stripe/zod.ts delete mode 100644 src/core/wn/config.ts delete mode 100644 src/core/wn/winston.ts delete mode 100644 src/data/other/boards.ts delete mode 100644 src/data/other/countries/countries.json delete mode 100644 src/data/other/countries/currencies.json delete mode 100644 src/data/other/countries/typescript/countries.ts delete mode 100644 src/data/other/countries/typescript/getAllCountries.ts delete mode 100644 src/data/other/countries/typescript/getCountriesByCallingCode.ts delete mode 100644 src/data/other/countries/typescript/getCountriesByName.ts delete mode 100644 src/data/other/countries/typescript/getCountryByCca2.ts delete mode 100644 src/data/other/countries/typescript/getCountryByPhoneNumber.ts delete mode 100644 src/data/other/countries/typescript/inputMask.ts delete mode 100644 src/data/other/countries/typescript/test/CountryList.tsx delete mode 100644 src/data/other/countries/typescript/types.ts delete mode 100644 src/db.ts delete mode 100644 src/db/extends.ts create mode 100644 src/db/index.ts delete mode 100644 src/db/neon.ts delete mode 100644 src/db/schema.ts create mode 100644 src/db/schema/addresses.ts create mode 100644 src/db/schema/carts.ts create mode 100644 src/db/schema/categories.ts create mode 100644 src/db/schema/customers.ts create mode 100644 src/db/schema/index.ts create mode 100644 src/db/schema/notifications.ts create mode 100644 src/db/schema/orders.ts create mode 100644 src/db/schema/payments.ts create mode 100644 src/db/schema/products.ts create mode 100644 src/db/schema/stocks.ts create mode 100644 src/db/schema/stores.ts create mode 100644 src/db/schema/subcategories.ts create mode 100644 src/db/schema/tags.ts create mode 100644 src/db/schema/users.ts create mode 100644 src/db/schema/utils.ts create mode 100644 src/db/schema/variants.ts delete mode 100644 src/hooks/use-clipboard.ts delete mode 100644 src/hooks/use-ids.ts delete mode 100644 src/hooks/use-interval.ts delete mode 100644 src/hooks/use-local-storage.ts delete mode 100644 src/hooks/use-on-mount.ts delete mode 100644 src/hooks/use-optimistic-board.ts delete mode 100644 src/hooks/use-promise.ts delete mode 100644 src/hooks/use-render-count.ts delete mode 100644 src/hooks/use-toast.ts delete mode 100644 src/hooks/use-url-state.ts delete mode 100644 src/i18n.ts create mode 100644 src/i18n/i18n.ts.txt rename src/{navigation.ts => i18n/navigation.ts.txt} (93%) create mode 100644 src/i18n/request.ts create mode 100644 src/i18n/routing.ts delete mode 100644 src/images/logo.png delete mode 100644 src/images/sign-in@2xrl.webp delete mode 100644 src/images/sign-up@2xrl.webp delete mode 100644 src/images/user-button-2@2xrl.webp delete mode 100644 src/images/user-button@2xrl.webp delete mode 100644 src/images/verify@2xrl.webp rename src/{server => lib}/actions/cart.ts (89%) rename src/{server => lib}/actions/notification.ts (68%) rename src/{server => lib}/actions/order.ts (89%) rename src/{server => lib}/actions/product.ts (81%) create mode 100644 src/lib/actions/seed.ts rename src/{server => lib}/actions/store.ts (79%) rename src/{server => lib}/actions/stripe.ts (89%) create mode 100644 src/lib/auth.ts rename src/{server/helpers => lib}/checkout.ts (82%) rename src/{server/helpers => lib}/constants.ts (100%) rename src/{server/helpers => lib}/export.ts (84%) rename src/{server/helpers => lib}/fonts.ts (56%) rename src/{server/helpers => lib}/generate-pattern.ts (99%) create mode 100644 src/lib/get-stripe.ts create mode 100644 src/lib/handle-error.ts create mode 100644 src/lib/id.ts rename src/{server/helpers => lib}/motion.ts (79%) rename src/{server/helpers => lib}/openai.ts (100%) rename src/{server => lib}/queries/github.ts (82%) rename src/{server => lib}/queries/notification.ts (97%) rename src/{server => lib}/queries/product.ts (93%) rename src/{server => lib}/queries/store.ts (93%) rename src/{server => lib}/queries/user.ts (81%) rename src/{server/helpers => lib}/rate-limit.ts (99%) create mode 100644 src/lib/resend.ts create mode 100644 src/lib/stripe.ts rename src/{server/helpers => lib}/subscription.ts (51%) create mode 100644 src/lib/uploadthing.ts rename src/{server/helpers => lib}/utils.ts (57%) rename src/{server => lib}/validations/auth.ts (100%) rename src/{server => lib}/validations/cart.ts (99%) rename src/{server => lib}/validations/notification.ts (99%) rename src/{server/validations/deprecated => lib/validations}/og.ts (100%) rename src/{server => lib}/validations/order.ts (100%) rename src/{server => lib}/validations/params.ts (97%) rename src/{server/validations/deprecated => lib/validations}/product.ts (95%) rename src/{server => lib}/validations/store.ts (96%) rename src/{server => lib}/validations/stripe.ts (94%) delete mode 100644 src/server/actions/deprecated/cart.ts delete mode 100644 src/server/actions/deprecated/generate.ts delete mode 100644 src/server/actions/deprecated/notification.ts delete mode 100644 src/server/actions/deprecated/order.ts delete mode 100644 src/server/actions/deprecated/post.ts.txt delete mode 100644 src/server/actions/deprecated/product-old.ts delete mode 100644 src/server/actions/deprecated/product.ts delete mode 100644 src/server/actions/deprecated/signin.ts delete mode 100644 src/server/actions/deprecated/store.ts delete mode 100644 src/server/actions/deprecated/stripe/createAccountLink.ts delete mode 100644 src/server/actions/deprecated/stripe/createAccountLinkAction.ts delete mode 100644 src/server/actions/deprecated/stripe/createCheckoutSession.ts delete mode 100644 src/server/actions/deprecated/stripe/createPaymentIntent.ts delete mode 100644 src/server/actions/deprecated/stripe/getPaymentIntent.ts delete mode 100644 src/server/actions/deprecated/stripe/getPaymentIntents.ts delete mode 100644 src/server/actions/deprecated/stripe/getPlan.ts delete mode 100644 src/server/actions/deprecated/stripe/getPlanOld.ts delete mode 100644 src/server/actions/deprecated/stripe/getPlans.ts delete mode 100644 src/server/actions/deprecated/stripe/getStripeAccount.ts delete mode 100644 src/server/actions/deprecated/stripe/manageDowngradeToStarter.ts delete mode 100644 src/server/actions/deprecated/stripe/manageSubscription.ts delete mode 100644 src/server/actions/seed.ts delete mode 100644 src/server/helpers/api-error.ts delete mode 100644 src/server/helpers/auth-error.ts delete mode 100644 src/server/helpers/cart.ts delete mode 100644 src/server/helpers/clerk.ts delete mode 100644 src/server/helpers/client.ts delete mode 100644 src/server/helpers/currency.ts delete mode 100644 src/server/helpers/error-message.ts delete mode 100644 src/server/helpers/error-response.ts delete mode 100644 src/server/helpers/field-error-zod.ts delete mode 100644 src/server/helpers/get-stripe.ts delete mode 100644 src/server/helpers/handle-error.ts delete mode 100644 src/server/helpers/handler.ts delete mode 100644 src/server/helpers/id.ts delete mode 100644 src/server/helpers/modern-error.ts delete mode 100644 src/server/helpers/modern-errors-plugin.ts delete mode 100644 src/server/helpers/mw.ts delete mode 100644 src/server/helpers/nextjs-error.ts delete mode 100644 src/server/helpers/notification.ts delete mode 100644 src/server/helpers/pattern.ts delete mode 100644 src/server/helpers/plan.ts delete mode 100644 src/server/helpers/product.ts delete mode 100644 src/server/helpers/query.ts delete mode 100644 src/server/helpers/resend.ts delete mode 100644 src/server/helpers/store.ts delete mode 100644 src/server/helpers/string.ts delete mode 100644 src/server/helpers/stripe.ts delete mode 100644 src/server/helpers/unauthorized-error.ts delete mode 100644 src/server/helpers/uploadthing-core.ts delete mode 100644 src/server/helpers/uploadthing-react.ts delete mode 100644 src/server/helpers/uploadthing.ts delete mode 100644 src/server/helpers/utapi.ts delete mode 100644 src/server/helpers/validation-error.ts delete mode 100644 src/server/validations/deprecated/auth.ts delete mode 100644 src/server/validations/deprecated/cart.ts delete mode 100644 src/server/validations/deprecated/notification.ts delete mode 100644 src/server/validations/deprecated/order.ts delete mode 100644 src/server/validations/deprecated/parameters.ts delete mode 100644 src/server/validations/deprecated/product-old.ts delete mode 100644 src/server/validations/deprecated/store.ts delete mode 100644 src/server/validations/deprecated/user.ts delete mode 100644 src/server/validations/og.ts delete mode 100644 src/server/validations/product.ts delete mode 100644 src/styles/fonts/CalSans-SemiBold.ttf delete mode 100644 src/styles/fonts/CalSans-SemiBold.woff delete mode 100644 src/styles/fonts/CalSans-SemiBold.woff2 delete mode 100644 src/styles/fonts/FiraSans-Regular.ttf delete mode 100644 src/styles/fonts/GeistMonoVF.woff delete mode 100644 src/styles/fonts/GeistVF.woff delete mode 100644 src/styles/fonts/Inter-Bold.ttf delete mode 100644 src/styles/fonts/Inter-Regular.ttf delete mode 100644 src/styles/fonts/Twemoji-Flags.woff2 delete mode 100644 src/styles/globals.css.txt delete mode 100644 src/styles/markdown.css delete mode 100644 src/styles/mdx.css.txt delete mode 100644 src/types/api.ts delete mode 100644 src/types/array.ts delete mode 100644 src/types/auth.ts delete mode 100644 src/types/config.ts delete mode 100644 src/types/id.ts create mode 100644 src/types/index.ts delete mode 100644 src/types/keys.ts delete mode 100644 src/types/locale.ts delete mode 100644 src/types/meta.ts delete mode 100644 src/types/nav.ts delete mode 100644 src/types/next.ts delete mode 100644 src/types/plan.ts delete mode 100644 src/types/pm.ts delete mode 100644 src/types/store.ts delete mode 100644 src/types/string.ts delete mode 100644 src/types/stripe.ts delete mode 100644 src/types/table.ts delete mode 100644 src/types/with.ts delete mode 100644 src/utils/array.ts delete mode 100644 src/utils/cn.ts delete mode 100644 src/utils/date.ts delete mode 100644 src/utils/equal.ts delete mode 100644 src/utils/gen.ts delete mode 100644 src/utils/keys.ts delete mode 100644 src/utils/math.ts delete mode 100644 src/utils/misc.ts delete mode 100644 src/utils/number.ts delete mode 100644 src/utils/path.ts delete mode 100644 src/utils/string.ts delete mode 100644 src/utils/throw.ts delete mode 100644 turbo.disabled.json delete mode 100644 turbo.scripts.json delete mode 100644 typestat.json create mode 100644 unlighthouse.config.ts diff --git a/.env.example b/.env.example index cab26a4a..f01d9ca6 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -# || 🔥 [Important note]: Please note that currently, v1.2.6 requires specifying Clerk, as its API has changed. +# || 🔥 [Important note]: Please note that currently, v1.3.0-canary.7 requires specifying Clerk, as its API has changed. # || We are working on making Clerk optional again. However, all other environment variables are optional. # || If this statement is incorrect, meaning something is broken somewhere, please let us know. # || https://github.com/blefnk/relivator-nextjs-template @@ -20,15 +20,17 @@ NEXT_PUBLIC_APP_URL="http://localhost:3000" # || When the following connection string is set, you can run "pnpm db:push" to create/update the database tables. # || If you've just created the database, please give your provider a moment for the database to be fully created. +# Type here any word, e.g. your project name, you want to prepend to your database table names +NEXT_PUBLIC_DATABASE_PREFIX="relivator" + # Database (https://neon.tech) (it's recommended to check 'Pooled connection' to get the production URL) DATABASE_URL="" -# || DATABASE URL EXAMPLES (pg: try 'postgresql://' if 'postgres://' does not work) +# || DATABASE URL EXAMPLES (pg: try 'postgres://' if 'postgresql://' does not work) # || --------------------------------------------------------------- -# || - Postgres ➞ Neon ➞ postgresql://database_owner:password@hostname/database?sslmode=require -# || - Postgres ➞ Planetscale ➞ mysql://username:password@hostname/database?ssl={"rejectUnauthorized":true} -# || - Postgres ➞ Private ➞ postgres://username:password@127.0.0.1:5432/db -# || - Postgres ➞ Railway ➞ postgres://root:password@hostname:36906/railway +# || - Postgres ➞ Neon (recommended for most users) ➞ postgresql://database_owner:password@hostname/database?sslmode=require +# || - Postgres ➞ Private (not tested yet with latest Relivator version) ➞ postgresql://username:password@127.0.0.1:5432/db +# || - Postgres ➞ Railway (not tested yet with latest Relivator version) ➞ postgresql://root:password@hostname:36906/railway # || --------------------------------------------------------------- # || We are using Drizzle and Neon as default database provider @@ -43,9 +45,8 @@ DATABASE_URL="" # AUTHENTICATION # ==================================================== -# || Please visit `reliverse.config.ts` and set the `authProvider` -# || to either "clerk" or "authjs". Fake session data will be assigned -# || to your users if DATABASE_URL or authProvider are not set. +# || Fake session data will be assigned to your users +# || if DATABASE_URL or Clerk api keys are not set. # Required for both "authjs" and "clerk" authProviders. # https://authjs.dev/guides/environment-variables @@ -69,6 +70,8 @@ AUTH_GOOGLE_ID="" # Ensure the domain is connected in production (for PageSpeed Insights). NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="" CLERK_SECRET_KEY="" +NEXT_PUBLIC_CLERK_SIGN_IN_URL="/signin" +NEXT_PUBLIC_CLERK_SIGN_UP_URL="/signup" # Additional optional feature, to enable visit: # Clerk Dashboard > [app] > Organizations Settings NEXT_PUBLIC_ORGANIZATIONS_ENABLED="false" @@ -90,13 +93,19 @@ NEXT_PUBLIC_ORGANIZATIONS_ENABLED="false" # For API keys: https://dashboard.stripe.com/test/apikeys NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="" STRIPE_SECRET_KEY="" +STRIPE_API_KEY="" # Please read the instructions at the end of the file. STRIPE_WEBHOOK_SIGNING_SECRET="" +STRIPE_WEBHOOK_SECRET="" # For product setup: https://dashboard.stripe.com/test/products STRIPE_PROFESSIONAL_SUBSCRIPTION_PRICE_ID="" STRIPE_ENTERPRISE_SUBSCRIPTION_PRICE_ID="" +# Stripe Product and Price IDs for your created products +# found at https://dashboard.stripe.com/test/products +STRIPE_STD_MONTHLY_PRICE_ID="" +STRIPE_PRO_MONTHLY_PRICE_ID="" # ==================================================== # RELIVERSE ADDONS @@ -146,9 +155,12 @@ UPLOADTHING_APP_ID="" # Email System Configuration # Get API keys: https://resend.com NEXT_PUBLIC_RESEND_API_KEY="" - # Set email: https://resend.com/domains or use Resend's test email NEXT_PUBLIC_RESEND_EMAIL_FROM="onboarding@resend.dev" +# We need to register a domain with Resend to send emails from +# Register a domain at https://resend.com/domains +# Or we can use this email provided by resend for only testing: "onboarding@resend.dev" +EMAIL_FROM_ADDRESS="onboarding@resend.dev" # https://novu.co NOVU_SECRET_KEY="" @@ -162,6 +174,12 @@ NOVU_BRIDGE_URL="" # || Never share or commit the .env file. It has been added to .gitignore. # || When adding new variables, update the schema in the /src/env.js file. +# upstash +# https://YOUR_UPSTASH_REDIS_REST_URL +UPSTASH_REDIS_REST_URL="" +# ••••••••••••• +UPSTASH_REDIS_REST_TOKEN="" + # Loglib Analytics (https://loglib.io) LOGLIB_ID="" @@ -188,10 +206,10 @@ DEMO_NOTES_ENABLED="false" # 3. Open 3 terminals: # - Terminal 1: "pnpm dev" # - Terminal 2: "stripe login" -# - Terminal 3: "pnpm stripe:listen" +# - Terminal 3: "pnpm dev:stripe" or "pnpm stripe:listen" # 4. Copy the signing secret from the terminal and paste it into STRIPE_WEBHOOK_SIGNING_SECRET. # 5. Run "stripe trigger payment_intent.succeeded", wait for it to complete, then click Done. -# Keep "pnpm stripe:listen" enabled when testing Stripe on localhost. +# Keep "pnpm dev:stripe" or "pnpm stripe:listen" enabled when testing Stripe on localhost. # Test data: 4242424242424242 | 12/34 | 567 # [STRIPE WEBHOOK FOR PRODUCTION] diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 0a574740..00000000 --- a/.gitattributes +++ /dev/null @@ -1,171 +0,0 @@ -* text=auto -*.bash text eol=lf -*.bat text eol=crlf -*.cmd text eol=crlf -*.coffee text -*.css text diff=css -*.htm text diff=html -*.html text diff=html -*.inc text -*.ini text -*.js text eol=lf -*.mjs text eol=lf -*.cjs text eol=lf -*.json text eol=lf -*.jsx text eol=lf -*.less text -*.ls text -*.map text -diff -*.od text -*.onlydata text -*.php text diff=php -*.pl text -*.ps1 text eol=crlf -*.py text diff=python eol=lf -*.rb text diff=ruby eol=lf -*.sass text -*.scm text -*.scss text diff=css -*.sh text eol=lf -.husky/* text eol=lf -*.sql text eol=lf -*.styl text -*.tag text -*.ts text eol=lf -*.tsx text eol=lf -*.xml text -*.xhtml text diff=html -Dockerfile text -*.ipynb text eol=lf -*.markdown text diff=markdown -*.md text diff=markdown eol=lf -*.mdwn text diff=markdown -*.mdown text diff=markdown -*.mkd text diff=markdown -*.mkdn text diff=markdown -*.mdtxt text -*.mdtext text -*.txt text -AUTHORS text -CHANGELOG text eol=lf -CHANGES text -CONTRIBUTING text eol=lf -COPYING text -copyright text -*COPYRIGHT* text -INSTALL text -license text eol=lf -LICENSE text eol=lf -NEWS text -readme text eol=lf -*README* text eol=lf -TODO text eol=lf -*.astro text eol=lf -*.dot text -*.ejs text -*.erb text -*.haml text -*.handlebars text eol=lf -*.hbs text eol=lf -*.hbt text -*.jade text -*.latte text -*.mustache text -*.njk text -*.phtml text -*.svelte text eol=lf -*.tmpl text -*.tpl text -*.twig text -*.vue text eol=lf -*.cnf text -*.conf text -*.config text eol=lf -.editorconfig text eol=lf -.env text eol=lf -.gitattributes text eol=lf -.gitconfig text -.htaccess text -*.lock text -diff -package.json text eol=lf -package-lock.json text eol=lf -diff -pnpm-lock.yaml text eol=lf -diff -.prettierrc text eol=lf -yarn.lock text -diff -*.toml text eol=lf -*.yaml text eol=lf -*.yml text eol=lf -browserslist text -Makefile text -makefile text -tsconfig.json linguist-language=JSON-with-Comments -Procfile text -*.ai binary -*.bmp binary -*.eps binary -*.gif binary -*.gifv binary -*.ico binary -*.jng binary -*.jp2 binary -*.jpg binary -*.jpeg binary -*.jpx binary -*.jxr binary -*.pdf binary -*.png binary -*.psb binary -*.psd binary -*.svg text -*.svgz binary -*.tif binary -*.tiff binary -*.wbmp binary -*.webp binary -*.kar binary -*.m4a binary -*.mid binary -*.midi binary -*.mp3 binary -*.ogg binary -*.ra binary -*.3gpp binary -*.3gp binary -*.as binary -*.asf binary -*.asx binary -*.avi binary -*.fla binary -*.flv binary -*.m4v binary -*.mng binary -*.mov binary -*.mp4 binary -*.mpeg binary -*.mpg binary -*.ogv binary -*.swc binary -*.swf binary -*.webm binary -*.7z binary -*.gz binary -*.jar binary -*.rar binary -*.tar binary -*.zip binary -*.ttf binary -*.eot binary -*.otf binary -*.woff binary -*.woff2 binary -*.exe binary -*.pyc binary -**/.yarn/releases/** binary -**/.yarn/plugins/** binary -*.*rc text eol=lf -*.*ignore text eol=lf -dist/* binary - -public/generated/**/*.json linguist-generated=true -src/manifest.json linguist-generated=true -*-mp3.js binary diff --git a/.gitignore b/.gitignore index ffa7f689..e80a8be5 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,7 @@ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json __pycache__/ *.py[oc] *.egg-info/ +.now/ .venv/ .ruff_cache/ .wheels/ @@ -100,3 +101,4 @@ coverage/ .million/ .vercel .env*.local +.unlighthouse diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 41583e36..00000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -@jsr:registry=https://npm.jsr.io diff --git a/.putout.json b/.putout.json deleted file mode 100644 index 4cc4af10..00000000 --- a/.putout.json +++ /dev/null @@ -1,731 +0,0 @@ -{ - "parser": "babel", - "printer": "putout", - "formatter": [ - "progress-bar", - { - "minCount": 10 - } - ], - "processors": [ - ["javascript", "on"], - ["json", "on"], - ["markdown", "on"], - ["ignore", "on"], - ["yaml", "on"], - ["css", "off"], - ["filesystem", "on"] - ], - "match": { - "*.{mjs,ts,tsx,mts}": { - "nodejs/remove-useless-strict-mode": "on", - "nodejs/add-missing-strict-mode": "off" - }, - "*.{jsx,js,cjs}": { - "nodejs/add-missing-strict-mode": "off", - "nodejs/remove-useless-strict-mode": "on" - }, - "{.,}putout.json": { - "putout-config": "on" - }, - ".madrun.{js,cjs,mjs}": { - "madrun": "on" - }, - "setupTests.*": { - "remove-empty/import": "off" - }, - ".filesystem.json": { - "filesystem": "on", - "nodejs/cjs-file": "on", - "nodejs/mjs-file": "on", - "nodejs/rename-file-cjs-to-js": "on", - "nodejs/rename-file-mjs-to-js": "on", - "package-json/find-file": "on", - "typescript": "on", - "typescript/cts-file": "on", - "typescript/mts-file": "on", - "typescript/rename-file-cts-to-ts": "on", - "typescript/rename-file-mts-to-ts": "on" - }, - "*.md": { - "convert-assignment-to-declaration": "off", - "conditions/apply-consistent-blocks": "off", - "conditions/convert-comparison-to-boolean": "off", - "conditions/remove-constant": "off", - "maybe": "off", - "convert-quotes-to-backticks": "off", - "remove-unused-expressions": "off", - "remove-unused-variables": "off", - "remove-useless-escape": "off", - "remove-useless-variables": "off", - "remove-useless-return": "off", - "remove-empty": "off", - "for-of/remove-unused-variables": "off", - "remove-console": "off", - "remove-unreachable-code": "off", - "declare": "off", - "nodejs/declare": "off" - }, - "*.svelte": { - "remove-unused-variables": "off" - }, - "{*rc,*.{json,yml}}": { - "convert-quotes-to-backticks": "off", - "remove-useless-escape": "off", - "math/apply-numeric-separators": "off" - }, - ".github/**/*.yml": { - "github": "on", - "github/set-node-versions": [ - "off", - { - "versions": ["18.x", "20.x", "22.x"] - } - ], - "remove-useless-escape": "off" - }, - ".gitignore": { - "gitignore": "on" - }, - ".npmignore": { - "npmignore": "on" - }, - ".{nyc,c8}rc.json": { - "coverage": "on" - }, - ".*ignore": { - "convert-quotes-to-backticks": "off" - }, - "webpack.config.js": { - "webpack": "on" - }, - "browserlist": { - ".browserlistrc": "on" - }, - ".eslintrc{*,.json}": { - "eslint": "on", - "eslint/convert-require-to-import": "off", - "eslint/apply-match-to-flat": "off" - }, - "eslint.config.*": { - "eslint": "on", - "putout/convert-match-to-function": "off" - }, - "package.json": { - "package-json": "on" - }, - "bin": { - "nodejs/remove-process-exit": "off", - "nodejs/convert-top-level-return": "on", - "remove-console": "off", - "remove-empty/import": "off" - }, - "{test,*.spec.{js,mjs,cjs}}": { - "tape": "on" - }, - "*.mjs": { - "nodejs/convert-commonjs-to-esm": "on", - "tape/convert-mock-require-to-mock-import": "on" - }, - "*.mts": { - "typescript/convert-commonjs-to-esm": "on" - }, - "*.cts": { - "typescript/convert-esm-to-commonjs": "on" - }, - "*.cjs": { - "nodejs/convert-esm-to-commonjs": "on" - }, - "*.{ts,tsx,mts,cts,md{ts},md{tsx}}": { - "typescript": "on" - }, - "*.d.ts": { - "declare": "off" - } - }, - "ignore": [ - "**/.git", - "**/.idea", - "**/.next", - "**/.nyc_output", - "**/.pnp.*", - "**/.venv", - "**/.yarn", - "**/*.gif", - "**/*.jpeg", - "**/*.lock", - "**/*.png", - "**/build", - "**/dist", - "**/next-env.d.ts", - "**/node_modules", - "**/package-lock.json", - "**/pnpm-lock.yaml", - "**/python", - "**/reset.d.ts", - "**/yarn-error.log", - "addons/.output", - "addons/cluster/reliverse/ui/cluster-readme.tsx", - "addons/scripts/reliverse/academy/fileHandler.ts", - "addons/scripts/reliverse/academy/leaders.ts", - "addons/scripts/reliverse/relicon/setup/prompt/appts.ts", - "addons/scripts/reliverse/relicon/setup/prompt/canary/json.ts", - "addons/scripts/reliverse/relimter/core/env/components/MissingVariables.tsx", - "addons/scripts/reliverse/relimter/putout/tasks/index.ts", - "src/app/[locale]/blog/new/**/*.tsx", - "src/components/Common/loading-button.tsx", - "src/components/Common/password-input.tsx", - "src/components/Navigation/SiteHeader.tsx", - "src/components/primitives", - "src/components/Providers/AuthjsClerkProvider.tsx", - "src/data/other/countries/typescript/inputMask.ts", - "src/db", - "src/server/media.ts", - "src/server/string.ts", - "src/utils/errors/helpers/field.ts", - "src/utils/id.ts" - ], - "rules": { - "apply-at": "on", - "apply-destructuring/array": "on", - "apply-destructuring/falsy": "on", - "apply-destructuring/object": "on", - "apply-montag": "on", - "apply-optional-chaining/assign": "off", - "apply-optional-chaining/use": "off", - "apply-overrides": "on", - "browserlist": "on", - "browserlist/remove-node-versions": "on", - "conditions/add-return": "on", - "conditions/apply-comparison-order": "on", - "conditions/apply-consistent-blocks": "off", - "conditions/apply-if": "on", - "conditions/convert-comparison-to-boolean": "on", - "conditions/convert-equal-to-strict-equal": "on", - "conditions/evaluate": "on", - "conditions/merge-if-statements": "on", - "conditions/remove-boolean": "off", - "conditions/remove-constant": "off", - "conditions/remove-same-values-condition": "off", - "conditions/remove-useless-else": "off", - "conditions/remove-zero": "off", - "conditions/simplify": "on", - "convert-array-copy-to-slice": "off", - "convert-optional-to-logical/call": "off", - "convert-quotes-to-backticks": "off", - "convert-template-to-string": "on", - "convert-to-arrow-function": "on", - "coverage": "off", - "eslint": "on", - "filesystem": "on", - "for-of/for-each": "on", - "for-of/map": "on", - "for-of/reduce": "on", - "github": "on", - "github/add-continue-on-error-to-add-and-commit": "on", - "github/add-continue-on-error-to-coveralls": "on", - "github/convert-npm-to-bun": "off", - "github/install-bun": "off", - "github/install-rust": "off", - "github/set-node-versions": "off", - "github/update-actions": "on", - "gitignore": "on", - "group-imports-by-source": "off", - "typescript/apply-as-type-assertion": "on", - "typescript/apply-type-guards": "off", - "typescript/apply-utility-types": "on", - "typescript/convert-commonjs-to-esm": "off", - "typescript/convert-esm-to-commonjs": "off", - "typescript/convert-generic-to-shorthand": "on", - "typescript/cts-file": "on", - "typescript/mts-file": "on", - "typescript/remove-duplicates-exports": "off", - "typescript/remove-duplicates-from-union": "off", - "typescript/remove-duplicates-interface-keys": "off", - "typescript/remove-getter-arguments": "off", - "typescript/remove-setter-return-type": "off", - "typescript/remove-unused-types": "off", - "typescript/remove-useless-mapped-types": "off", - "typescript/remove-useless-parens": "off", - "typescript/remove-useless-promise": "off", - "typescript/remove-useless-types-from-constants": "off", - "typescript/remove-useless-types": "off", - "typescript/rename-file-cts-to-ts": "on", - "typescript/rename-file-mts-to-ts": "on", - "typescript/find-file": [ - "on", - { - "ignore": [] - } - ], - "convert-apply-to-spread": "on", - "convert-arguments-to-rest": "on", - "convert-assignment-to-declaration": "on", - "convert-concat-to-flat": "on", - "convert-index-of-to-includes": "on", - "declare-before-reference": "on", - "declare-imports-first": "on", - "declare": "on", - "eslint/add-putout": "off", - "eslint/apply-dir-to-flat": "on", - "eslint/apply-match-to-flat": "on", - "eslint/apply-safe-align": "on", - "eslint/convert-export-match-to-declaration": "on", - "eslint/convert-files-to-array": "on", - "eslint/convert-ide-to-safe": "on", - "eslint/convert-node-to-n": "on", - "eslint/convert-require-to-import": "on", - "eslint/declare": "on", - "eslint/move-putout-to-end-of-extends": "on", - "eslint/remove-no-missing": "off", - "eslint/remove-no-unpublished-require": "off", - "logical-expressions/convert-bitwise-to-logical": "on", - "logical-expressions/remove-boolean": "off", - "logical-expressions/remove-duplicates": "off", - "logical-expressions/simplify": "on", - "madrun": "off", - "math/apply-numeric-separators": "off", - "math/apply-exponentiation": "on", - "montag/apply": "on", - "new/add-missing": "on", - "new/remove-useless": "off", - "nodejs/cjs-file": "off", - "nodejs/convert-commonjs-to-esm": "off", - "nodejs/convert-esm-to-commonjs": "off", - "nodejs/mjs-file": "off", - "nodejs/rename-file-cjs-to-js": "off", - "promises/add-missing-async": "on", - "promises/add-missing-await": "on", - "promises/apply-await-import": "on", - "putout/add-await-to-progress": "on", - "putout/add-index-to-import": "on", - "putout/add-places-to-compare-places": "on", - "putout/add-test-args": "on", - "putout/add-track-file": "on", - "putout/add-traverse-args": "on", - "putout/apply-async-formatter": "on", - "putout/apply-create-test": "on", - "putout/apply-declare": "on", - "putout/apply-for-of-to-track-file": "on", - "putout/apply-insert-after": "on", - "putout/apply-insert-before": "on", - "putout/apply-namespace-specifier": "on", - "putout/apply-processors-destructuring": "on", - "putout/apply-remove": "off", - "putout/apply-rename": "on", - "putout/apply-short-processors": "on", - "putout/check-match": "on", - "remove-empty/block": "off", - "remove-empty/static-block": "off", - "remove-nested-blocks": "off", - "simplify-assignment": "on", - "webpack/apply-externals": "on", - "webpack/convert-loader-to-use": "on", - "webpack/convert-node-to-resolve-fallback": "on", - "webpack/convert-query-loader-to-use": "on", - "putout/check-replace-code": [ - "on", - { - "once": true - } - ], - "filesystem/bundle": "off", - "filesystem/remove-vim-swap-file": "on", - "madrun/add-fix-lint": "off", - "madrun/add-function": "off", - "madrun/add-run": "off", - "putout/convert-add-argument-to-add-args": "on", - "putout/convert-babel-types": "on", - "putout/convert-destructuring-to-identifier": "on", - "putout/convert-dirname-to-url": "off", - "putout/convert-get-rule-to-require": "on", - "putout/convert-match-to-function": "on", - "putout/convert-method-to-property": "on", - "putout/convert-node-to-path-in-get-template-values": "on", - "putout/convert-number-to-numeric": "on", - "putout/convert-process-to-find": "on", - "putout/convert-progress-to-track-file": "on", - "putout/convert-putout-test-to-create-test": "on", - "putout/convert-replace-to-function": "on", - "putout/convert-replace-with-multiple": "on", - "putout/convert-replace-with": "on", - "putout/convert-report-to-function": "on", - "putout/convert-to-no-transform-code": "on", - "putout/convert-traverse-to-include": "on", - "putout/convert-traverse-to-replace": "on", - "putout/convert-traverse-to-scan": "on", - "putout/convert-url-to-dirname": "on", - "putout/create-test": "on", - "filesystem/read-all-files": [ - "off", - { - "mask": "*" - } - ], - "extract-object-properties/equal-deep": "on", - "extract-object-properties/not-equal-deep": "on", - "extract-sequence-expressions": "on", - "filesystem/convert-simple-filesystem-to-filesystem": "off", - "filesystem/move-referenced-file": "off", - "filesystem/remove-files": "off", - "filesystem/rename-file": "off", - "filesystem/rename-referenced-file": "off", - "filesystem/rename-spec-to-test": "off", - "filesystem/rename-test-to-spec": "off", - "filesystem/write-all-files": "off", - "reuse-duplicate-init": "on", - "filesystem/replace-cwd": [ - "off", - { - "from": "/home/relivator-nextjs-template", - "to": "/" - } - ], - "filesystem/convert-json-to-js": [ - "off", - { - "filename": "package.json" - } - ], - "filesystem/convert-js-to-json": [ - "off", - { - "filename": "package.js" - } - ], - "for-of/add-missing-declaration": "on", - "for-of/for-in": "on", - "for-of/remove-unused-variables": "off", - "for-of/remove-useless-array-from": "off", - "for-of/remove-useless": "off", - "madrun/add-cut-env": "off", - "for-of/remove-useless-variables": [ - "off", - { - "maxProperties": 4 - } - ], - "eslint/convert-plugins-array-to-object": "off", - "eslint/convert-rc-to-flat": "on", - "eslint/remove-no-unsupported-features": "off", - "eslint/remove-overrides-with-empty-rules": "off", - "eslint/remove-useless-slice": "off", - "for-of/for": "on", - "generators/add-missing-star": "on", - "generators/convert-multiple-to-generator": "on", - "madrun/call-run": "off", - "madrun/convert-args-to-scripts": "off", - "madrun/convert-cut-env-to-run": "off", - "madrun/convert-nyc-to-c8": "off", - "madrun/convert-run-argument": "off", - "madrun/convert-run-to-cut-env": "off", - "madrun/convert-to-async": "off", - "madrun/remove-check-duplicates-from-test": "off", - "madrun/remove-useless-array-in-run": "off", - "madrun/remove-useless-string-conversion": "off", - "madrun/rename-eslint-to-putout": "off", - "madrun/rename-series-to-run": "off", - "madrun/set-lint-dot": "off", - "madrun/set-report-lcov": "off", - "math/apply-multiplication": "on", - "math/convert-sqrt-to-hypot": "on", - "math/declare": "on", - "nodejs/add-node-prefix": "off", - "nodejs/rename-file-mjs-to-js": "off", - "package-json/add-type": "on", - "package-json/find-file": "on", - "package-json/remove-commit-type": "off", - "tape/apply-stub": "off", - "tape/jest": "off", - "package-json/remove-nyc": "on", - "promises/apply-top-level-await": "on", - "promises/apply-with-resolvers": "on", - "promises/convert-new-promise-to-async": "on", - "promises/convert-reject-to-throw": "on", - "promises/remove-useless-async": "off", - "promises/remove-useless-await": "off", - "promises/remove-useless-resolve": "off", - "promises/remove-useless-variables": "off", - "putout-config/convert-boolean-to-string": "on", - "putout-config/move-formatter-up": "on", - "putout-config/remove-empty": "off", - "putout/declare": "off", - "putout/includer": "on", - "putout/move-require-on-top-level": "on", - "putout/remove-empty-array-from-process": "off", - "putout/remove-unused-get-properties-argument": "off", - "putout/replace-test-message": "on", - "putout/shorten-imports": "on", - "putout/simplify-replace-template": "on", - "types/apply-is-array": "on", - "types/convert-typeof-to-istype": "off", - "types/declare": "on", - "types/remove-double-negations": "off", - "types/remove-useless-conversion": "off", - "types/remove-useless-typeof": "off", - "npmignore": [ - "off", - { - "dismiss": [ - ".nyc_output", - ".putoutcache", - "*.swp", - "coverage", - "*.config.*" - ] - } - ], - "maybe/array": "on", - "maybe/declare": "on", - "maybe/empty-array": "on", - "maybe/fn": "on", - "maybe/noop": "off", - "montag/declare": "on", - "nodejs/add-missing-strict-mode": "on", - "nodejs/convert-buffer-to-buffer-alloc": "on", - "nodejs/convert-dirname-to-url": "off", - "nodejs/convert-fs-promises": "on", - "nodejs/convert-promisify-to-fs-promises": "on", - "nodejs/convert-top-level-return": "on", - "nodejs/convert-url-to-dirname": "on", - "nodejs/declare-after-require": "on", - "nodejs/declare": "off", - "nodejs/remove-process-exit": "off", - "nodejs/remove-useless-promisify": "off", - "nodejs/remove-useless-strict-mode": "off", - "regexp/apply-ends-with": "on", - "regexp/apply-literal-notation": "on", - "regexp/apply-starts-with": "on", - "regexp/convert-replace-to-replace-all": "on", - "regexp/convert-to-string": "on", - "regexp/optimize": "on", - "regexp/remove-useless-group": "off", - "regexp/remove-useless-regexp": "off", - "remove-console": "off", - "remove-debugger": "off", - "remove-duplicate-case": "off", - "remove-duplicate-keys": "off", - "remove-empty/argument": "off", - "remove-empty/export": "off", - "remove-empty/nested-pattern": "off", - "remove-empty/pattern": "off", - "remove-iife": "off", - "remove-unreachable-code": "off", - "remove-unreferenced-variables": "off", - "remove-unused-expressions": "off", - "remove-unused-private-fields": "off", - "remove-unused-variables": "off", - "remove-useless-arguments/arguments": "off", - "remove-useless-arguments/destructuring": "off", - "remove-useless-arguments/method": "off", - "remove-useless-array-constructor": "off", - "remove-useless-array-entries": "off", - "remove-useless-array": "off", - "remove-useless-assign": "off", - "remove-useless-continue": "off", - "remove-useless-escape": "off", - "remove-useless-functions": "off", - "remove-useless-map": "off", - "remove-useless-operand": "off", - "remove-useless-replace": "off", - "remove-useless-return": "off", - "remove-useless-spread/array": "off", - "remove-useless-spread/nested": "off", - "remove-useless-spread/object": "off", - "remove-useless-template-expressions": "off", - "remove-useless-variables/await": "off", - "remove-useless-variables/declaration": "off", - "remove-useless-variables/destruct": "off", - "remove-useless-variables/duplicate": "off", - "remove-useless-variables/remove": "off", - "remove-useless-variables/rename": "off", - "simplify-boolean-return": "on", - "simplify-ternary/spread": "on", - "simplify-ternary/value": "on", - "try-catch/args": "on", - "try-catch/async": "on", - "try-catch/await": "on", - "try-catch/declare": "on", - "try-catch/expand-arguments": "on", - "try-catch/sync": "on", - "remove-empty/import": [ - "off", - { - "ignore": [] - } - ], - "apply-dot-notation": "on", - "apply-early-return": "on", - "apply-flat-map": "on", - "apply-nullish-coalescing": "off", - "apply-starts-with": "on", - "apply-template-literals": "on", - "convert-assignment-to-arrow-function": "on", - "convert-assignment-to-comparison": "on", - "convert-const-to-let": "on", - "convert-label-to-object": "on", - "convert-object-assign-to-merge-spread": "on", - "convert-object-entries-to-array-entries": "on", - "convert-optional-to-logical/assign": "on", - "convert-throw": "on", - "merge-destructuring-properties": "on", - "merge-duplicate-functions": "on", - "merge-duplicate-imports/join": "off", - "merge-duplicate-imports/rename": "off", - "nodejs/convert-exports-to-module-exports": "on", - "package-json": "on", - "putout-config": "on", - "putout": "on", - "sort-imports-by-specifiers": "off", - "split-assignment-expressions": "on", - "split-nested-destructuring": "on", - "split-variable-declarations": "on", - "tape": "on", - "types/convert-typeof-to-is-type": "off", - "typescript": "on", - "webpack": "on", - "apply-shorthand-properties": [ - "off", - { - "ignore": [] - } - ], - "convert-assert-to-with": "on", - "convert-is-nan-to-number-is-nan": "on", - "nextjs/convert-page-to-head": "on", - "nextjs/create-app-directory": "on", - "nextjs/move-404-to-not-found": "on", - "nextjs/remove-a-from-link": "off", - "nextjs/update-tsconfig-file": "on", - "nextjs/update-tsconfig": "off", - "react-hook-form/v5-remove-value-from-control": "off", - "react-hook-form/v6-apply-clear-errors": "on", - "react-hook-form/v6-convert-as-to-render": "on", - "react-hook-form/v6-convert-form-context-to-form-provider": "on", - "react-hook-form/v6-convert-trigger-validation-to-trigger": "on", - "react-hook-form/v7-apply-form-state": "on", - "react-hooks/apply-short-fragment": "on", - "react-hooks/convert-class-to-function": "on", - "react-hooks/convert-component-to-use-state": "on", - "react-hooks/convert-import-component-to-use-state": "on", - "react-hooks/convert-state-to-hooks": "on", - "react-hooks/declare": "on", - "react-hooks/remove-bind": "off", - "react-hooks/remove-react": "off", - "react-hooks/remove-this": "off", - "react-hooks/rename-method-under-score": "on", - "react/apply-create-root": "off", - "react/remove-implicit-ref-return": "off", - "react/remove-useless-forward-ref": "off", - "react/remove-useless-provider": "off" - }, - "plugins": [ - "apply-at", - "apply-destructuring", - "apply-dot-notation", - "apply-early-return", - "apply-flat-map", - "apply-montag", - "apply-nullish-coalescing", - "apply-optional-chaining", - "apply-overrides", - "apply-shorthand-properties", - "apply-starts-with", - "apply-template-literals", - "browserlist", - "conditions", - "convert-apply-to-spread", - "convert-arguments-to-rest", - "convert-array-copy-to-slice", - "convert-assert-to-with", - "convert-assignment-to-arrow-function", - "convert-assignment-to-comparison", - "convert-assignment-to-declaration", - "convert-concat-to-flat", - "convert-const-to-let", - "convert-index-of-to-includes", - "convert-is-nan-to-number-is-nan", - "convert-label-to-object", - "convert-object-assign-to-merge-spread", - "convert-object-entries-to-array-entries", - "convert-optional-to-logical", - "convert-quotes-to-backticks", - "convert-template-to-string", - "convert-throw", - "convert-to-arrow-function", - "coverage", - "declare-before-reference", - "declare-imports-first", - "declare", - "eslint", - "extract-object-properties", - "extract-sequence-expressions", - "filesystem", - "for-of", - "generators", - "github", - "gitignore", - "group-imports-by-source", - "logical-expressions", - "madrun", - "math", - "maybe", - "merge-destructuring-properties", - "merge-duplicate-functions", - "merge-duplicate-imports", - "montag", - "new", - "nextjs", - "nodejs", - "npmignore", - "package-json", - "promises", - "putout-config", - "putout", - "react-hook-form", - "react-hooks", - "react", - "regexp", - "remove-console", - "remove-debugger", - "remove-duplicate-case", - "remove-duplicate-keys", - "remove-empty", - "remove-iife", - "remove-nested-blocks", - "remove-unreachable-code", - "remove-unreferenced-variables", - "remove-unused-expressions", - "remove-unused-private-fields", - "remove-unused-variables", - "remove-useless-arguments", - "remove-useless-array-constructor", - "remove-useless-array-entries", - "remove-useless-array", - "remove-useless-assign", - "remove-useless-constructor", - "remove-useless-continue", - "remove-useless-escape", - "remove-useless-functions", - "remove-useless-map", - "remove-useless-operand", - "remove-useless-replace", - "remove-useless-return", - "remove-useless-spread", - "remove-useless-template-expressions", - "remove-useless-variables", - "reuse-duplicate-init", - "simplify-assignment", - "simplify-boolean-return", - "simplify-ternary", - "sort-imports-by-specifiers", - "split-assignment-expressions", - "split-nested-destructuring", - "split-variable-declarations", - "tape", - "try-catch", - "types", - "typescript", - "webpack" - ] -} diff --git a/license b/LICENSE.md similarity index 97% rename from license rename to LICENSE.md index 8913bcae..fc803c40 100644 --- a/license +++ b/LICENSE.md @@ -17,5 +17,5 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c1cf44c0..d13d2c9b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Relivator 1.2.6: Next.js 15, React 19, TailwindCSS Template +# Relivator 1.3.0-canary.7: Next.js 15 eCommerce Template We are currently migrating the documentation from the existing Relivator README.md to the official, newly launched [Relivator & Reliverse Docs website (https://reliverse.org)](https://reliverse.org). The content will be organized into appropriate sections on the new site. During the migration, some elements might not function properly. The current README.md will contain only minimal information. Please let us know if you encounter any issues. @@ -765,15 +765,15 @@ W.I.P. — Use `pnpm css` to watch for [CSS tokens](https://blog.devgenius.io/li **Package Manager Compatibility:** -`Relivator` can already harness some fantastic **[`Bun`](https://bun.sh)** features. For this starter, we currently recommend using `pnpm`. Full pnpm support and compatibility will be shipped as soon as [Reliverse](https://github.com/blefnk/reliverse)'s [Versator](https://github.com/blefnk/versator) achieves full similarity with Relivator. *Section expansion coming soon.* +`Relivator` can already harness some fantastic **[`Bun`](https://bun.sh)** features. For this starter, we currently recommend using `pnpm`. Full pnpm support and compatibility will be shipped as soon as [Reliverse](https://github.com/blefnk/reliverse)'s [Relivator](https://github.com/blefnk/relivator) achieves full similarity with Relivator. *Section expansion coming soon.* **Recommended Things to Learn:** 1. [The Detailed Git Guide](https://github.com/blefnk/relivator-nextjs-template/blob/main/.github/GITGUIDE.md) by [Nazar Kornienko @Blefnk](https://github.com/blefnk) -2. [Introduction to Next.js and React](https://youtube.com/watch?v=h2BcitZPMn4) by [Lee Robinson](https://twitter.com/leeerob) +2. [Introduction to Next.js and React](https://youtube.com/watch?v=h2BcitZPMn4) by [Lee Robinson](https://x.com/leeerob) 3. [Relivator: Next.js 15 Starter (Release Announce of Relivator on Medium)](https://cutt.ly/awf6fScS) by [Nazar Kornienko @Blefnk](https://github.com/blefnk) 4. [Welcome to the Wild World of TypeScript, Mate! Is it scary?](https://cutt.ly/CwjVPUNu) by [Nazar Kornienko @Blefnk](https://github.com/blefnk) -5. [React: Common Mistakes in 2023](https://docs.google.com/presentation/d/1kuBeSh-yTrL031IlmuwrZ8LvavOGzSbo) by [Cory House](https://twitter.com/housecor) +5. [React: Common Mistakes in 2023](https://docs.google.com/presentation/d/1kuBeSh-yTrL031IlmuwrZ8LvavOGzSbo) by [Cory House](https://x.com/housecor) 6. [Thoughts on Next.js 13, Server Actions, Drizzle, Neon, Clerk, and More](https://github.com/Apestein/nextflix/blob/main/README.md#overall-thoughts) by [@Apestein](https://github.com/Apestein) 7. [Huge Next-Multilingual Readme About i18n](https://github.com/Avansai/next-multilingual#readme) by [@Avansai](https://github.com/Avansai) 8. [Applying Design Principles in React](https://blog.openreplay.com/applying-design-principles-in-react) by [Jeremiah (Jerry) Ezekwu](https://blog.openreplay.com/authors/jeremiah-\(jerry\)-ezekwu/) @@ -898,7 +898,7 @@ Alternatively, check the GitHub docs on [how to create a pull request](https://h - [ ] 90. Consider adding Facebook's [StyleX](https://stylexjs.com/blog/introducing-stylex). However, StyleX currently requires setting up Babel/Webpack in the project, which we avoid to maintain full Turbopack support. As a suitable alternative, consider jjenzz's [Tokenami](https://github.com/tokenami/tokenami#readme) or [Panda CSS](https://panda-css.com) by Chakra. Possibly, we can make a choice between them all while bootstrapping the project with Reliverse CLI. These libraries help with avoiding the deprecated [initial idea](https://stylexjs.com/blog/introducing-stylex/#the-origins-of-stylex) for [CSS-in-JS](https://medium.com/dailyjs/what-is-actually-css-in-js-f2f529a2757). Learn more [here](https://github.com/reactwg/react-18/discussions/110) and in [Next.js docs](https://nextjs.org/docs/app/building-the-application/styling/css-in-js). - [ ] 91. Confirm the project is free from duplicates, like files, components, etc. - [ ] 92. Conduct useful tests, including possible stress tests, to simulate and assess app performance under high-traffic conditions. -- [ ] 93. Comprehensively configure RSCs and all other new Next.js 13-15 features. Seamlessly move data fetching between both client-side and server-side by using [useSWR](https://twitter.com/shuding_/status/1794461568505352693). +- [ ] 93. Comprehensively configure RSCs and all other new Next.js 13-15 features. Seamlessly move data fetching between both client-side and server-side by using [useSWR](https://x.com/shuding_/status/1794461568505352693). - [ ] 94. Complete the BA11YC (Bleverse Accessibility Convention) checklist; which may relay on the following principle in the future: [DesignPrototype](https://uiprep.com/blog/ultimate-guide-to-prototyping-in-figma)-[CodePrototype](https://medium.com/@joomiguelcunha/the-power-of-prototyping-code-55f4ed485a30)-CodeTests-HqDesign-[TDD](https://en.wikipedia.org/wiki/Test-driven_development)-HqCode-[CI](https://en.wikipedia.org/wiki/CI/CD). - [ ] 95. Complete parts of the [BA11YC (Bleverse Accessibility Convention) checklist](https://github.com/bs-oss/BA11YC). This includes using software [Design Patterns](https://refactoring.guru/design-patterns/what-is-pattern) for code refactoring. - [ ] 96. Check all components with side-effects for re-rendering, it is recommended to re-render each component a maximum of 2 times ([good video about it (in Ukrainian)](https://youtu.be/uH9uMH2e5Ts)). diff --git a/addons/cluster/components/Onboarding.md b/addons/cluster/components/Onboarding.md deleted file mode 100644 index a8221497..00000000 --- a/addons/cluster/components/Onboarding.md +++ /dev/null @@ -1,43 +0,0 @@ -# Developer Onboarding - -🚀 Yay! Congrats on the installation! If you like it, please [give us a star on GitHub](https://github.com/blefnk/relivator-nextjs-template)! 🙏 - -Welcome to Relivator 1.2.6, a project created by @blefnk Nazar Kornienko. - -**This replacement system is still under development and may not be finalized. Please check back later. For now, you can use this folder to simply store files that you don't want to be overwritten during an upgrade.** - -## Draft Description - -You are reading the `onboard.md` file in the `cluster` folder. You can read more about this folder at the end of this onboarding tutorial. Thank you for installing Relivator! - -## Recommended Steps - -1. **Explore the App**: Click on everything you see in the app to learn how it works. -2. **Read the Documentation**: Go to [Relivator's README.md](../../README.md) and read the latest documentation. -3. **Understand the Cluster Folder**: Read the `The Cluster Folder` section below. Create your own components there or anywhere you prefer. -4. **Join Our Community**: Join the project's Discord server. -5. **Contribute**: Contribute to the project or create a new issue and grab some cool gifts. - -## The Cluster Folder - -The `cluster` folder is intended for your custom components and files. Storing them here ensures they will not be overwritten when new Relivator updates are released. - -You can also use the `cluster` folder to override the default components and files that come with Relivator. This is useful if you want to make global changes to the default components and files provided by Relivator, but do not want to touch the original files. - -For example, if you want to override the default `Onboarding.tsx` file (originally located in `src\components\Emails\Onboarding.tsx`), you can place an `Onboarding.tsx` file in the `cluster` folder. The `Onboarding.tsx` file in the `cluster` folder will override the default `Onboarding.tsx` file that comes with Relivator. Currently you need manually change paths! 😉 - -The same applies to any other component or file that you want to override. Ensure you replace the paths in the original files with the paths to the `cluster` folder when overriding the original components and files. - -Additionally, you can easily migrate to Relivator by placing specific parts or the entire current React project in this folder and then incrementally adapting it to work with Relivator. - -## Have Any Questions or Issues? - -If you have any questions or issues regarding this project, please contact us: - -- By visiting our Discord server -- By email: blefnk@gmail.com -- By creating a new issue - -## P.S - -You may not need this folder in the future. We have a great idea for 1.3.x, we have something incredible coming! Stay tuned for more details! diff --git a/addons/cluster/components/Onboarding.tsx b/addons/cluster/components/Onboarding.tsx deleted file mode 100644 index 77d26953..00000000 --- a/addons/cluster/components/Onboarding.tsx +++ /dev/null @@ -1,206 +0,0 @@ -import Image from "next/image"; - -import { Separator } from "~/components/ui/separator"; -import { Head } from "@react-email/head"; -import { Html } from "@react-email/html"; -import { Img } from "@react-email/img"; -import { Tailwind } from "@react-email/tailwind"; - -// This replacement system is still under development and may not be finalized. Please check back later. -// For now, you can use this folder to simply store files that you don't want to be overwritten during an upgrade. -export default function Onboarding() { - return ( - <> - -
-

- Welcome to the Cluster Directory Onboarding! -

-

- Hello! This is an example custom component in the - 'addons\cluster\reliverse\components\Onboarding.tsx' directory. Please - open 'Onboarding.tsx' and the 'Onboarding.md' file to lean more. - Original file is located at 'src/components/Emails/Onboarding.tsx'. -

- {/*

Getting Started:

-
    -
  1. - Open the 'Onboarding.md' file to get an overview of the onboarding - process. Edit 'src/cluster/Onboarding.tsx' file. -
  2. -
  3. - Follow the instructions in the 'README.md' and 'Onboard.md' file to - complete the initial setup. -
  4. -
*/} -

- README.md RQA (Reliverse Questions Answers) (FAQ): -

-

- Reliverse has prepared 30+ interesting questions and answers for you, - like the ones below. Just find the appropriate section in the - README.md file and enjoy! -

-

- RQ29: Should I modify the components by - [shadcn/ui](https://ui.shadcn.com) (as of Relivator 1.2.6, they are - located in the "addons/components/ui" folder)? RA29: You may lose your - changes if @shadcn or - [Reliverse](https://github.com/orgs/reliverse/repositories) update any - of these components in the release of Relivator 1.3.x+. Therefore, the - best option currently is to use, for example, the - "addons/cluster/reliverse/shadcn/ui" folder, where you can have files - that you can safely overwrite the original files with, ensuring you do - not lose your changes. As an example, this folder already contains a - `cluster-readme.tsx` file, which only re-exports the original - `button.tsx` file. So, you can create a `button.tsx` file here and - copy and paste that line into your newly created file. Alternatively, - you can duplicate the code from the original file and make any - modifications you want. Use `Cmd/Ctrl+Shift+H` and simply replace - `addons/components/ui` with `addons/cluster/reliverse/shadcn/ui` (the - difference is only in the words "browser" and "cluster"). - `addons/cluster` is your house; feel free to do anything you want - here, mess it up or tidy it up as you wish. This is your own house, - and no one has the right to take it away from you. -

-
-

- RA29: You may lose your changes if @shadcn or - [Reliverse](https://github.com/orgs/reliverse/repositories) update any - of these components in the release of Relivator 1.3.x+. Therefore, the - best option currently is to use, for example, the - "addons/cluster/reliverse/shadcn/ui" folder, where you can have files - that you can safely overwrite the original files with, ensuring you do - not lose your changes. As an example, this folder already contains a - `cluster-readme.tsx` file, which only re-exports the original - `button.tsx` file. So, you can create a `button.tsx` file here and - copy and paste that line into your newly created file. Alternatively, - you can duplicate the code from the original file and make any - modifications you want. Use `Cmd/Ctrl+Shift+H` and simply replace - `addons/components/ui` with `addons/cluster/reliverse/shadcn/ui` (the - difference is only in the words "browser" and "cluster"). - `addons/cluster` is your house; feel free to do anything you want - here, mess it up or tidy it up as you wish. This is your own house, - and no one has the right to take it away from you. -

-
- - ); -} - -export function Onboard({ firstName = "FirstName" }) { - return ( - - - - Relivator Logo -

Welcome {firstName},

-

- Ready to revolutionize the web development journey? the decision to - join us at our Relivator introduction event on the "Bleverse Conf: - Spring 2024" is the first step towards mastering Next.js 15 and - beyond. We're excited to unveil the capabilities and innovations of - Relivator to you. -

-
    -
  • - 🚀 Relivator - Next.js Redefined: -
    - Dive into the advanced features of Relivator, including its seamless - integration with Stripe, responsive Tailwind design, and powerful - Drizzle ORM for database management. -
  • -
  • - - 💡 Mastering Modern Web Development: - -
    - Learn how Relivator leverages React 19 and Next.js 15 to provide an - enhanced development experience, from server components to advanced - hooks. -
  • -
  • - - 🌐 Seamless Database and Authentication Integration: - -
    - Discover how Relivator simplifies the integration of databases - (MySQL and PostgreSQL) and authentication systems (NextAuth.js and - Clerk), tailoring them to the project’s needs. -
  • -
  • - - 🎨 Crafting Aesthetic UI with Ease: - -
    - Explore the elegant and functional UI components built on top of - Flowbite and Shadcn UI, styled with Radix and Tailwind CSS for a - modern aesthetic. -
  • -
-

Event Details:

-
    -
  • Date: [Event Date (TBD)]
  • -
  • Time: [Event Time (TBD)]
  • -
  • Location: [Event Link (TBD)]
  • -
  • Don't miss out, reserve the spot now!
  • -
  • *TBD - To Be Determined
  • -
- -

🌟 Join 15 minutes early to network! 🌟

-

- Embark on a transformative journey with Relivator, Bleverse, and with - our friends and partners. This event is not just an introduction, it's - a gateway to the future of web development. -
-
- We're thrilled to have you with us on this adventure. -
-
- Warm Regards, -
-
- Nazar Kornienko
Reliverse & Bleverse Creator -

-
- - ); -} - -export function OnboardSample({ firstName = "FirstName" }) { - return ( -
- Relivator Logo - asa -

Hello {firstName}, welcome to Relivator!

-

- We're excited to introduce you to the world of advanced web development - with Relivator. It's a game-changer! -

-
- ); -} diff --git a/addons/cluster/components/ui/cluster-readme.tsx b/addons/cluster/components/ui/cluster-readme.tsx deleted file mode 100644 index 14d249e3..00000000 --- a/addons/cluster/components/ui/cluster-readme.tsx +++ /dev/null @@ -1,6 +0,0 @@ -// !! export { Button } from "@/components/ui/button"; -// eslint-disable-next-line @stylistic/max-len -// Try not to modify the original shadcn components manually (only @reliverse/addons-relimter codemods scripts are allowed to modify them). If you want to change shadcn components, for example, the `Button`, then do it in this file. This way, you can safely make changes without losing your work when updates are released in the future. If you don't want to change anything about the Button, just leave this re-export as it is. -// ?| README.md: -// RQ29: Should I modify the components by [shadcn/ui](https://ui.shadcn.com) (as of Relivator 1.2.6, they are located in the "addons/components/ui" folder)? -// RA29: You may lose your changes if @shadcn or [Reliverse](https://github.com/orgs/reliverse/repositories) update any of these components in the release of Relivator 1.3.x+. Therefore, the best option currently is to use, for example, the "addons/cluster/reliverse/shadcn/ui" folder, where you can have files that you can safely overwrite the original files with, ensuring you do not lose your changes. As an example, this folder already contains a `cluster-readme.tsx` file, which only re-exports the original `button.tsx` file. So, you can create a `button.tsx` file here and copy and paste that line into your newly created file. Alternatively, you can duplicate the code from the original file and make any modifications you want. Use `Cmd/Ctrl+Shift+H` and simply replace `addons/components/ui` with `addons/cluster/reliverse/shadcn/ui` (the difference is only in the words "browser" and "cluster"). `addons/cluster` is your house; feel free to do anything you want here, mess it up or tidy it up as you wish. This is your own house, and no one has the right to take it away from you. diff --git a/addons/cluster/temp/![delete-in-1.3.0]!/.gitkeep b/addons/cluster/temp/![delete-in-1.3.0]!/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/addons/cluster/temp/.lintstagedrc.json.txt b/addons/cluster/temp/.lintstagedrc.json.txt deleted file mode 100644 index 6e2d7daa..00000000 --- a/addons/cluster/temp/.lintstagedrc.json.txt +++ /dev/null @@ -1,12 +0,0 @@ -// 🔴 DEPRECATED AND POSSIBLY WILL BE REMOVED IN RELIVATOR 1.3.0 🔴 || -// Starting Relivator 1.3.0, it can be added by using pnpm reliverse || -// ================================================================= || - -{ - "**/*.{js,jsx,cjs,mjs,ts,tsx,md,mdx}": [ - "eslint --fix", - "prettier --check --write" - ], - "**/*.{json,yml}": ["prettier --check --write"], - "**/*.css": ["prettier --write"] -} diff --git a/addons/cluster/temp/.madrun.js.txt b/addons/cluster/temp/.madrun.js.txt deleted file mode 100644 index c6357c74..00000000 --- a/addons/cluster/temp/.madrun.js.txt +++ /dev/null @@ -1,21 +0,0 @@ -import { cutEnv, run } from "madrun"; - -const env = { - CI: 1, -}; - -export default { - "env:lint": () => [env, "putout .vscode/presets"], - "fix:lint": async () => - await run("lint", "--fix", { - NODE_ENV: "development", - }), - lint: () => "putout .vscode/presets", - "lint:env": () => [ - "putout .vscode/presets", - { - CI: 1, - }, - ], - "lint:no-env": async () => await cutEnv("lint:env"), -}; diff --git a/addons/cluster/temp/.npmcheckrc.txt b/addons/cluster/temp/.npmcheckrc.txt deleted file mode 100644 index d0571cfb..00000000 --- a/addons/cluster/temp/.npmcheckrc.txt +++ /dev/null @@ -1,38 +0,0 @@ -// 🔴 DEPRECATED AND POSSIBLY WILL BE REMOVED IN RELIVATOR 1.3.0 🔴 || -// Starting Relivator 1.3.0, it can be added by using pnpm reliverse || -// ================================================================= || - -{ - "depcheck": { - "ignoreMatches": [ - "~", - "@clerk/localizations", - "@clerk/nextjs", - "@clerk/themes", - "@clerk/types", - "@cspell/dict-companies", - "@cspell/dict-de-de", - "@cspell/dict-es-es", - "@cspell/dict-fr-fr", - "@cspell/dict-fullstack", - "@cspell/dict-it-it", - "@cspell/dict-markdown", - "@cspell/dict-npm", - "@cspell/dict-pl_pl", - "@cspell/dict-tr-tr", - "@cspell/dict-typescript", - "@cspell/dict-uk-ua", - "@tanstack/react-query", - "@types/node", - "autoprefixer", - "cspell", - "dotenv", - "flag-icons", - "drizzle.config", - "eslint-interactive", - "international-types", - "next-international", - "postcss" - ] - } -} diff --git a/addons/cluster/temp/.prettierignore.txt b/addons/cluster/temp/.prettierignore.txt deleted file mode 100644 index 9ccf128f..00000000 --- a/addons/cluster/temp/.prettierignore.txt +++ /dev/null @@ -1,22 +0,0 @@ -// 🔴 DEPRECATED AND POSSIBLY WILL BE REMOVED IN RELIVATOR 1.3.0 🔴 || -// Starting Relivator 1.3.0, it can be added by using pnpm reliverse || -// ================================================================= || - -# @see https://prettier.io/docs/en/ignore.html - -# dependencies -/node_modules - -# next.js -/.next -/out - -# production -/build -/dist - -# typescript -next-env.d.ts - -# project -/drizzle diff --git a/addons/cluster/temp/.react-19-only/BoardList.tsx.txt b/addons/cluster/temp/.react-19-only/BoardList.tsx.txt deleted file mode 100644 index 5906b1ab..00000000 --- a/addons/cluster/temp/.react-19-only/BoardList.tsx.txt +++ /dev/null @@ -1,80 +0,0 @@ -import Link from "next/link"; - -import { Skeleton } from "@radix-ui/themes"; -import { PlusIcon } from "lucide-react"; - -import { getUserBoards } from "~/data/other/boards"; -import { genRandomName } from "~/utils"; - -// import { CreateBoard } from "~/components/Playground/Boards/CreateBoard"; -export async function BoardList() { - const boards = await getUserBoards(); - - return ( -
-
- The boards - {/* */} -
- {boards.length === 0 && ( - No boards yet - )} - {boards.length > 0 && ( -
    - {boards.map((board) => ( -
  • - - - {board.name} - -
  • - ))} -
- )} -
- ); -} - -// Loading component with its display name -const BoardListLoading = () => ( -
- {/* TODO: Make the Skeleton brighter than default on dark background */} -
- - The boards - - - - -
-
    -
  • - - - - - {genRandomName()} - - - -
  • -
-
-); - -// Set the display name to avoid ESLint warning -BoardListLoading.displayName = "BoardListLoading"; - -BoardList.Loading = BoardListLoading; - -export default BoardList; diff --git a/addons/cluster/temp/.react-19-only/CreateBoard.tsx.txt b/addons/cluster/temp/.react-19-only/CreateBoard.tsx.txt deleted file mode 100644 index a8072ca3..00000000 --- a/addons/cluster/temp/.react-19-only/CreateBoard.tsx.txt +++ /dev/null @@ -1,29 +0,0 @@ -"use client"; - -import { useActionState } from "react"; - -import type { MakeAction } from "@/server/reliverse/actions/auth"; - -import { createBoard } from "@/server/reliverse/actions/auth"; -import { faker } from "@faker-js/faker"; -import { PlusIcon } from "lucide-react"; - -import { SubmitButton } from "~/components/Playground/Boards/SubmitButton"; -import { genRandomName } from "~/utils"; - -export function CreateBoard() { - const [, dispatch] = useActionState( - createBoard as MakeAction, // eslint-disable-next-line unicorn/no-useless-undefined - undefined, - ); - - return ( -
- - - - - -
- ); -} diff --git a/addons/cluster/temp/.react-19-only/EditableText.tsx.txt b/addons/cluster/temp/.react-19-only/EditableText.tsx.txt deleted file mode 100644 index 8a9de7e8..00000000 --- a/addons/cluster/temp/.react-19-only/EditableText.tsx.txt +++ /dev/null @@ -1,89 +0,0 @@ -import type { ReactNode } from "react"; -import { useOptimistic, useRef, useState } from "react"; -import { flushSync } from "react-dom"; - -type EditableTextProps = { - buttonClassName: string; - buttonLabel: string; - children: ReactNode; - fieldName: string; - inputClassName: string; - inputLabel: string; - value: string; - onSubmit: () => void; -}; - -export function EditableText(props: EditableTextProps) { - const [value, updateValue] = useOptimistic( - props.value, - (_, next: string) => next, - ); - - const [edit, setEdit] = useState(false); - const inputRef = useRef(null); - const buttonRef = useRef(null); - - const submit = (form: FormData | HTMLFormElement) => { - const fd = form instanceof FormData ? form : new FormData(form); - const value = fd.get(props.fieldName) as string; - - if (value && value !== props.value) { - props.onSubmit(); - updateValue(value); - } - - flushSync(() => { - setEdit(false); - }); - buttonRef.current && buttonRef.current.focus(); - }; - - return edit ? ( -
- {props.children} - { - if ( - inputRef.current && - inputRef.current.value !== value && - inputRef.current.value.trim() !== "" - ) { - submit(event.currentTarget.form!); - } - - setEdit(false); - }} - onKeyDown={(event) => { - if (event.key === "Escape") { - flushSync(() => { - setEdit(false); - }); - buttonRef.current && buttonRef.current.focus(); - } - }} - ref={inputRef} - required - type="text" - /> -
- ) : ( - - ); -} diff --git a/addons/cluster/temp/.react-19-only/ReactActionState.tsx.txt b/addons/cluster/temp/.react-19-only/ReactActionState.tsx.txt deleted file mode 100644 index c2e32857..00000000 --- a/addons/cluster/temp/.react-19-only/ReactActionState.tsx.txt +++ /dev/null @@ -1,182 +0,0 @@ -"use client"; - -import { useActionState, useOptimistic } from "react"; - -import { redirect } from "next/navigation"; - -import { Button } from "@/browser/reliverse/ui/Button"; -import { RedirectType } from "next/dist/client/components/redirect"; - -// TODO: This file is currently excluded in Million Lint config -export function UseActionStateExample() { - return ( -
-

Example Coming Soon...

-
-

useActionState

- -
-
-

useActionState: Submit And Redirect

- -
-
-

useFormStatus

- -
-
-

useOptimistic

- -
-
- ); -} - -// async function increment(previousState: number, formData: FormData) { -function increment(previousState: number) { - return previousState + 1; -} - -function SimpleUseActionState() { - const [state, formAction] = useActionState(increment, 0); - - return ( -
- {state} - -
- ); -} - -type FormTheNameProps = { - name: string; -}; - -type ReturnResponse = { - message: string; - ok: boolean; -}; - -async function updateName(props: FormTheNameProps): Promise { - await new Promise((resolve) => setTimeout(resolve, 1000)); - - if (props.name.length < 3) { - return { - message: "Name is too short", - ok: false, - }; - } - - return { - message: "Name updated", - ok: true, - }; -} - -const parseFormData = (formData: FormData) => { - const name = formData.get("name") as string; - - return { - name, - }; -}; - -function FormTheName() { - const [res, submitAction, isPending] = useActionState< - null | ReturnResponse, - FormData - >(async (_, formData) => { - const error = await updateName(parseFormData(formData)); - - if (!error.ok) { - return error; - } - - return redirect("/res", RedirectType.push); - }, null); - - return ( -
- - - {isPending &&

Submitting...

} - {} - {res &&

{res.message}

} -
- ); -} - -function FormUseFormStatus() { - // const status = useFormStatus(); - // function Submit() { - // return ( - //
- // - // {status.pending &&

Submitting...

} - //
- // ); - // } - // const action = async () => { - // await new Promise((resolve) => setTimeout(resolve, 1000)); - // }; - return ( - <> - {/*
- - */} - Soon... - - ); -} - -const FormUseOptimistic = () => { - const [name, setName] = useOptimistic("name"); - const [res, submitAction, isPending] = useActionState< - null | ReturnResponse, - FormData - >( - async (_, formData) => { - const props = parseFormData(formData); - - setName(props.name); - const error = await updateName(props); - - if (!error.ok) { - return error; - } - - // redirect to /res without 3rd argument - // redirect("/res", RedirectType.push); - return null; - }, - null, // redirect to /res - "/res", - ); - - return ( -
-

Current Name: {name}

- - - {isPending &&

Submitting...

} - {} - {res &&

{res.message}

} -
- ); -}; diff --git a/addons/cluster/temp/.react-19-only/RxjsSignalsTest.tsx.txt b/addons/cluster/temp/.react-19-only/RxjsSignalsTest.tsx.txt deleted file mode 100644 index d8bc2e01..00000000 --- a/addons/cluster/temp/.react-19-only/RxjsSignalsTest.tsx.txt +++ /dev/null @@ -1,52 +0,0 @@ -import type { ReactElement } from "react"; -import { useEffect, useState } from "react"; - -// 🔴 DEPRECATED AND POSSIBLY WILL BE REMOVED IN RELIVATOR 1.3.0 🔴 || -// ================================================================= || -const Clock = ({ - onChange, -}: { - onChange: (n: number) => void; -}): ReactElement => { - useEffect(() => { - let tick = 0; - const interval = setInterval(() => { - onChange(++tick); - }, 1000); - - return () => { - clearInterval(interval); - }; - }, []); - - return
Clock is ticking
; -}; - -const ClockWatcher = ({ - ticks, -}: { - ticks: number; -}) =>
Ticks: {ticks}
; - -export const ParentTestComponent = () => { - const [ticks, setTicks] = useState(0); - - return ( -
-
- React FGR sample - { - setTicks(n); - }} - /> - -
-
- ); -}; diff --git a/addons/cluster/temp/.react-19-only/SignIn.tsx.txt b/addons/cluster/temp/.react-19-only/SignIn.tsx.txt deleted file mode 100644 index d1373a34..00000000 --- a/addons/cluster/temp/.react-19-only/SignIn.tsx.txt +++ /dev/null @@ -1,126 +0,0 @@ -"use client"; - -import { useActionState, useEffect } from "react"; - -import { - signInWithCredentials, - signInWithGithub, -} from "@/server/reliverse/actions/auth"; -import consola from "consola"; -import { Columns4, Github } from "lucide-react"; -import { signIn } from "next-auth/webauthn"; -import tryToCatch from "try-to-catch"; - -import { PasskeySVG } from "~/components/Common/Icons/SVG"; -import { SubmitButton } from "~/components/Playground/Boards/SubmitButton"; - -export function SignInForm(props: { - githubEnabled: boolean; -}) { - // @ts-expect-error TODO: Fix ts - const [error, dispatch] = useActionState(signInWithCredentials); - - useEffect(() => { - if (error) { - consola.error(error.error); - } - }, [error]); - - // @ts-expect-error TODO: Fix ts - const [, dispatchPasskey] = useActionState(async () => { - await tryToCatch(signIn, "passkey"); - consola.error("Failed to sign in with passkey"); - }); - - return ( -
-
- - Sign in -
-
- - - Sign in -
-
- - or - -
-
-
- } - > - Sign in with GitHub - -
-
- - - Sign in with Passkey - -
-
-
- ); -} - -export function AddPassKey() { - // @ts-expect-error TODO: Fix ts - const [, dispatch] = useActionState(async () => { - await tryToCatch(signIn, "passkey", { - action: "register", - }); - consola.error("Failed to register passkey"); - }); - - return ( -
- - - Add Passkey - -
- ); -} diff --git a/addons/cluster/temp/.react-19-only/SubmitButton.tsx.txt b/addons/cluster/temp/.react-19-only/SubmitButton.tsx.txt deleted file mode 100644 index cb807609..00000000 --- a/addons/cluster/temp/.react-19-only/SubmitButton.tsx.txt +++ /dev/null @@ -1,57 +0,0 @@ -"use client"; - -import type { ButtonHTMLAttributes, ReactNode } from "react"; -import { useFormStatus } from "react-dom"; - -import { Spinner } from "@radix-ui/themes"; -import { twMerge } from "tailwind-merge"; - -// import { createRoot } from "react-dom/client"; -const isString = (a: unknown): a is string => typeof a === "string"; - -type SubmitButtonProps = { - children: ReactNode; - icon?: ReactNode; - type?: never; -} & ButtonHTMLAttributes; - -export function SubmitButton(props: SubmitButtonProps) { - const { pending } = useFormStatus(); - - return ( - - ); -} diff --git a/addons/cluster/temp/.react-19-only/board.tsx.txt b/addons/cluster/temp/.react-19-only/board.tsx.txt deleted file mode 100644 index e2ee3b8d..00000000 --- a/addons/cluster/temp/.react-19-only/board.tsx.txt +++ /dev/null @@ -1,121 +0,0 @@ -"use client"; - -import { useRef } from "react"; - -// import type { BoardWithColumns } from "~/data/other/boards"; -// import type { MakeAction } from "@/server/reliverse/actions/auth"; -// import { useActionState, useRef, useState } from "react"; -// import { AlertDialog, Button, IconButton, Popover } from "@radix-ui/themes"; -// import { ArrowLeft, PaletteIcon, Trash2Icon } from "lucide-react"; -// import Link from "next/link"; -// import { -// Column, -// NewColumn, -// } from "~/components/Application/Experimental/Admin/column"; -// import { EditableText } from "~/components/Playground/Boards/EditableText"; -// import { useOptimisticBoard } from "~/hooks/react-client/useOptimisticBoard"; -// import { -// deleteBoard, -// updateBoardColor, -// updateBoardName, -// } from "@/server/reliverse/actions/auth"; -// export function Board(props: { -// board: BoardWithColumns; -// }) { -export function Board() { - // scroll right when new columns are added - const scrollContainerRef = useRef(null); - - // const columnRef = useCallback( - // (node: HTMLElement | null) => { - // if (node && scrollContainerRef.current) { - // scrollContainerRef.current.scrollLeft = - // scrollContainerRef.current.scrollWidth; - // } - // }, - // [scrollContainerRef], - // ); - // const { board, columns, optimisticUpdate } = useOptimisticBoard(props.board); - // const { board, optimisticUpdate } = useOptimisticBoard(props.board); - return ( -
- {/* - optimisticUpdate({ - color, - intent: "updClr", - }) - } - /> */} -
- {/* TODO: fix admin board */} - {/* {[...columns.values()].map((col) => ( - - optimisticUpdate({ - columnId: col.id, - intent: "addItm", - ...itm, - }) - } // @ts-expect-error TODO: Fix ts - onCardDelete={(id) => - optimisticUpdate({ - id, - columnId: col.id, - intent: "delItm", - }) - } // @ts-expect-error TODO: Fix ts - onCardMove={(id, toColumnId, order) => - optimisticUpdate({ - id, - order, - intent: "moveItm", - toColumnId, - }) - } - onDelete={() => - optimisticUpdate({ - id: col.id, - intent: "delCol", - }) - } - ref={columnRef} - /> - ))} */} - {/* - optimisticUpdate({ - intent: "addCol", - ...col, - }) - } - /> */} -
-
- ); // eslint-disable-next-line @stylistic/max-len -} // function useDebounce(// function_: (...arguments_: A) => R,// delay = 100,// ) {// const ref = useRef>();// return (...arguments_: A) => {// clearTimeout(ref.current);// ref.current = setTimeout(() => function_(...arguments_), delay);// };// }// function BoardToolbar(props: {// id: string;// name: string;// color: string;// optUpdateColor: (color: string) => void;// }) {// const { id, name } = props;// // @ts-expect-error TODO: Fix ts// const [, dispatch] = useActionState(// updateBoardColor as MakeAction,// );// const formRef = useRef(null);// const [color, setColor] = useState(props.color);// const updateColor = useDebounce((color: string) => {// setColor(color);// formRef.current && formRef.current.requestSubmit();// });// return (//
//

// // // // // // @ts-expect-error TODO: Fix ts// updateBoardName({// boardId: id,// newName,// })// }// value={name}// >// // //

//
// // // // // // // //
{// props.optUpdateColor(fd.get("newColor") as string);// // @ts-expect-error TODO: fix// dispatch(fd);// }}// ref={formRef}// >// // updateColor(event_.target.value)}// type="color"// value={color}// />//
//
//
// // // // // // // // Delete board// // Are you sure? The board and all of it's content will be deleted// permanently. This action cannot be undone.// //
// // // // {/* @ts-expect-error TODO: fix */}//
// // // // //
//
//
//
//
//
// );// } diff --git a/addons/cluster/temp/.react-19-only/boards-auth-action.ts.txt b/addons/cluster/temp/.react-19-only/boards-auth-action.ts.txt deleted file mode 100644 index 2e5e181d..00000000 --- a/addons/cluster/temp/.react-19-only/boards-auth-action.ts.txt +++ /dev/null @@ -1,318 +0,0 @@ -import { revalidatePath, revalidateTag } from "next/cache"; - -import { protectedAction, protectedBoardAction } from "@/server/reliverse/trpc"; -import { and, count, eq } from "drizzle-orm"; -import { isRedirectError } from "next/dist/client/components/redirect"; -import { AuthError } from "next-auth"; -import { signIn } from "next-auth/react"; -import tryToCatch from "try-to-catch"; -import { z } from "zod"; - -import { authjs } from "~/auth/authjs"; -import { db } from "~/db"; -import { - boards, - columns, - createBoardSchema, - createColumnSchema, - createItemSchema, - items, -} from "~/db/schema"; -import { genId } from "~/db/utils"; - -// Temporary little type to cast a trpc -// action when passing the action to `useActionState` -// @example useActionState(createBoard as MakeAction) -export type MakeAction = T extends (...arguments_: any[]) => any ? T : never; - -export const createBoard = protectedAction - .input( - createBoardSchema.superRefine(async (test, context) => { - const { id: userId } = await authjs(); - - const board = await db.query.boards.findFirst({ - where: (fields) => - and(eq(fields.name, test.name), eq(fields.ownerId, userId)), - }); - - if (board) { - context.addIssue({ - code: "custom", - message: `Board ${test.name} already exists`, - path: ["name"], - }); - } - }), - ) - .mutation(async ({ ctx, input }) => { - const id = genId("board"); - - await db.insert(boards).values({ - ...input, - id, - ownerId: ctx.user.id, - }); - - revalidatePath("/"); - revalidateTag("user_boards"); - - // @ts-expect-error TODO: fix - return redirect(`/boards/${id}`); - }); - -export const deleteBoard = protectedBoardAction.mutation(async ({ input }) => { - await Promise.all([ - db.delete(items).where(eq(items.boardId, input.boardId)), - db.delete(columns).where(eq(columns.boardId, input.boardId)), - db.delete(boards).where(eq(boards.id, input.boardId)), - ]); - - revalidateTag("user_boards"); - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - - // @ts-expect-error TODO: fix - return redirect("/"); -}); - -export const updateBoardName = protectedBoardAction - .input( - z.object({ - newName: z.string(), - }), - ) - .mutation(async ({ input }) => { - await db - .update(boards) - .set({ - name: input.newName, - }) - .where(eq(boards.id, input.boardId)); - - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - revalidateTag("user_boards"); - }); - -export const updateBoardColor = protectedBoardAction - .input( - z.object({ - newColor: z.string().regex(/^#[\da-f]{6}$/i), - }), - ) - .mutation(async ({ input }) => { - await db - .update(boards) - .set({ - color: input.newColor, - }) - .where(eq(boards.id, input.boardId)); - - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - revalidateTag("user_boards"); - }); - -export const createColumn = protectedBoardAction - .input(createColumnSchema) - .mutation(async ({ ctx, input }) => { - try { - // Fetch the current order count and provide a default value if undefined - const res = await db - .select({ - order: count(), - }) - .from(columns) - .where(eq(columns.boardId, input.boardId)); - - const order = res[0]?.order || 0; - - await db.insert(columns).values({ - id: input.id, - - name: input.name, - boardId: input.boardId, - - // order: sql`SELECT (COUNT(*) + 1) FROM ${columns} WHERE ${columns.boardId} = ${input.boardId}`, - order: order + 1, - }); - - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - - return { - ok: true as const, - }; - } catch (error) { - ctx.log.error("Error creating column", error); - - return { - error: "Internal server error", - ok: false as const, - }; - } - }); - -export const updateColumnName = protectedBoardAction - .input( - z.object({ - columnId: z.string(), - newName: z.string(), - }), - ) - .mutation( - async ({ input }) => { - await db - .update(columns) - .set({ - name: input.newName, - }) - .where(eq(columns.id, input.columnId)); - - revalidatePath(`/boards/${input.boardId}`); - }, - - // revalidateTag('board_details') - ); - -export const deleteColumn = protectedBoardAction - .input( - z.object({ - columnId: z.string(), - }), - ) - .mutation(async ({ ctx, input }) => { - try { - await Promise.all([ - db.delete(items).where(eq(items.columnId, input.columnId)), - db.delete(columns).where(eq(columns.id, input.columnId)), - ]); - - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - - return { - ok: true as const, - }; - } catch (error) { - ctx.log.error("Error deleting column", error); - - return { - error: "Internal server error", - ok: false as const, - }; - } - }); - -export const createItem = protectedBoardAction - .input(createItemSchema) - .mutation(async ({ ctx, input }) => { - try { - await db.insert(items).values({ - id: input.id, - boardId: input.boardId, - columnId: input.columnId, - order: input.order, - title: input.title, - }); - - revalidatePath(`/boards/${input.boardId}`); - - // revalidateTag('board_details') - - return { - ok: true as const, - }; - } catch (error) { - ctx.log.error("Error creating item", error); - - return { - error: "Internal server error", - ok: false as const, - }; - } - }); - -export const moveItem = protectedBoardAction - .input( - z.object({ - id: z.string(), - columnId: z.string(), - order: z.number(), - }), - ) - .mutation( - async ({ input }) => { - await db - .update(items) - .set({ - columnId: input.columnId, - order: input.order, - }) - .where(eq(items.id, input.id)); - - revalidatePath(`/boards/${input.boardId}`); - }, - - // revalidateTag('board_details') - ); - -export const deleteItem = protectedBoardAction - .input( - z.object({ - id: z.string(), - }), - ) - .mutation( - async ({ input }) => { - await db.delete(items).where(eq(items.id, input.id)); - - revalidatePath(`/boards/${input.boardId}`); - }, - - // revalidateTag('board_details') - ); - -export async function signInWithCredentials( - _previousState: - | { - error: string; - } - | undefined, - formData: FormData, -) { - // @ts-expect-error TODO: fix - const [error] = await tryToCatch(signIn, "credentials", formData); - - if (error) { - if (isRedirectError(error)) { - throw error; - } - - if (error instanceof AuthError) { - // eslint-disable-next-line sonarjs/no-small-switch - switch (error.type) { - case "CredentialsSignin": - return { - error: "Invalid credentials.", - }; - - default: - return { - error: "Something went wrong.", - }; - } - } - - throw error; - } -} - -export async function signInWithGithub() { - await signIn("github"); -} diff --git a/addons/cluster/temp/.react-19-only/boards/[id]/page.tsx.txt b/addons/cluster/temp/.react-19-only/boards/[id]/page.tsx.txt deleted file mode 100644 index bbf4cf88..00000000 --- a/addons/cluster/temp/.react-19-only/boards/[id]/page.tsx.txt +++ /dev/null @@ -1,35 +0,0 @@ -import Link from "next/link"; - -import { Board } from "~/components/Application/Experimental/Admin/board"; -import { getBoardWithItems } from "~/data/other/boards"; - -export default async function BoardPage(props: { - params: { - id: string; - }; -}) { - const board = await getBoardWithItems(props.params.id); - - if (!board) { - return ( -
-

Board not found

-

- This board either does not exist, or you are not authorized to access - it.{" "} - - Go back home - -

-
- ); - } - - // return ; - return ; -} diff --git a/addons/cluster/temp/.react-19-only/card.tsx.txt b/addons/cluster/temp/.react-19-only/card.tsx.txt deleted file mode 100644 index 846e0f67..00000000 --- a/addons/cluster/temp/.react-19-only/card.tsx.txt +++ /dev/null @@ -1,255 +0,0 @@ -import type { Ref } from "react"; -import { - startTransition, - useActionState, - useEffect, - useRef, - useState, -} from "react"; - -import type { MakeAction } from "@/server/reliverse/actions/auth"; - -import { - createItem, - deleteItem, - moveItem, -} from "@/server/reliverse/actions/auth"; -import { Button, TextArea } from "@radix-ui/themes"; -import consola from "consola"; -import { Trash2Icon } from "lucide-react"; -import { customAlphabet } from "nanoid"; -import { twMerge } from "tailwind-merge"; - -import { - createTransfer, - invariant, - isCardTransfer, - parseTransfer, -} from "~/utils"; - -type AcceptDrop = "bottom" | "none" | "top"; - -export const Card = ({ - id, - boardId, - columnId, - content, - order, - ref, - title, - ...props -}: { - boardId: string; - columnId: string; - content?: string; - id: string; - order: number; - ref: Ref; - title: string; -} & { - props: { - nextOrder: number; - previousOrder: number; - onDelete: () => void; - onMove: (id: string, columnId: string, order: number) => void; - }; - onMove: (id: string, columnId: string, order: number) => void; -}) => { - const [acceptDrop, setAcceptDrop] = useState("none"); - - return ( -
  • { - setAcceptDrop("none"); - }} - onDragOver={(event) => { - if (isCardTransfer(event)) { - event.preventDefault(); - event.stopPropagation(); - const rect = event.currentTarget.getBoundingClientRect(); - const midpoint = (rect.top + rect.bottom) / 2; - - setAcceptDrop(event.clientY <= midpoint ? "top" : "bottom"); - } - }} - onDrop={async (event) => { - event.stopPropagation(); - - const transfer = parseTransfer(event.dataTransfer); - const droppedOrder = - acceptDrop === "top" - ? // @ts-expect-error TODO: fix - props.previousOrder - : // @ts-expect-error TODO: fix - props.nextOrder; - - const moveOrder = (droppedOrder + order) / 2; - - startTransition(() => { - props.onMove(transfer.id, columnId, moveOrder); - }); - await moveItem({ - id: transfer.id, - boardId, - columnId, - order: moveOrder, - }); - - setAcceptDrop("none"); - }} - ref={ref} - > -
    { - event.dataTransfer.effectAllowed = "move"; - createTransfer(event.dataTransfer, { - id, - title, - }); - }} - > -

    {title}

    -
    {content || <> }
    -
    { - // @ts-expect-error TODO: fix - props.onDelete(); - // @ts-expect-error TODO: fix - await deleteItem(fd); - }} - > - - - -
    -
    -
  • - ); -}; - -type NewCardProps = { - boardId: string; - columnId: string; - nextOrder: number; - onComplete: () => void; - onCreate: (item: { - id: string; - order: number; - title: string; - }) => void; -}; - -function genId(prefix: string) { - const nanoid = customAlphabet("0123456789abcdefghijklmnopqrstuvwxyz", 10); - - return [prefix, nanoid()].join("_"); -} - -export function NewCard({ - boardId, - columnId, - nextOrder, - onComplete, - onCreate, -}: NewCardProps) { - // @ts-expect-error TODO: fix ts - const [state, dispatch] = useActionState( - createItem as MakeAction, - ); - - const textAreaRef = useRef(null); - const buttonRef = useRef(null); - - useEffect(() => { - if (state?.error) { - consola.error(state.error); - } - }, [state]); - - return ( -
    { - invariant(textAreaRef.current); - // @ts-expect-error TODO: fix - textAreaRef.current.value = ""; - // @ts-expect-error TODO: fix - onCreate(Object.fromEntries(fd.entries())); - // @ts-expect-error TODO: fix ts - dispatch(fd); - }} - className="flex flex-col gap-2 px-2 pb-2 pt-1" - onBlur={(event) => { - if (!event.currentTarget.contains(event.relatedTarget)) { - onComplete(); - } - }} - > - - - - -