@fernir2/saas-kit-cli 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/base-repo/app-constants/aliases.cjs.js +1 -1
  2. package/base-repo/app-constants/aliases.js +1 -1
  3. package/level2/cli/create-saas-kit-app/bin/index.cjs.js +4 -4
  4. package/level2/cli/create-saas-kit-app/bin/index.js +3 -3
  5. package/level2/fd-toolbox/api/api-client.cjs.js +1 -1
  6. package/level2/fd-toolbox/api/api-client.js +1 -1
  7. package/level2/fd-toolbox/api/api-path-names.cjs.js +2 -2
  8. package/level2/fd-toolbox/api/api-paths.cjs.js +1 -1
  9. package/level2/fd-toolbox/api/api-paths.js +1 -1
  10. package/level2/fd-toolbox/api/base-api.cjs.js +1 -1
  11. package/level2/fd-toolbox/api/base-api.js +1 -1
  12. package/level2/fd-toolbox/auth/login-states.cjs.js +1 -1
  13. package/level2/fd-toolbox/auth/login-states.js +1 -1
  14. package/level2/fd-toolbox/auth/session-storage.cjs.js +1 -1
  15. package/level2/fd-toolbox/auth/session-storage.js +1 -1
  16. package/level2/fd-toolbox/auth/tokens.cjs.js +1 -1
  17. package/level2/fd-toolbox/auth/tokens.js +1 -1
  18. package/level2/fd-toolbox/constants/constants.cjs.js +1 -1
  19. package/level2/fd-toolbox/constants/constants.js +1 -1
  20. package/level2/fd-toolbox/enums/enums.cjs.js +1 -1
  21. package/level2/fd-toolbox/enums/enums.js +1 -1
  22. package/level2/fd-toolbox/errors/error-handler.cjs.js +1 -1
  23. package/level2/fd-toolbox/errors/error-handler.js +1 -1
  24. package/level2/fd-toolbox/errors/errors.cjs.js +1 -1
  25. package/level2/fd-toolbox/errors/errors.js +1 -1
  26. package/level2/fd-toolbox/errors/problem-details.cjs.js +1 -1
  27. package/level2/fd-toolbox/errors/problem-details.js +1 -1
  28. package/level2/fd-toolbox/functions/value-checking-functions.cjs.js +1 -1
  29. package/level2/fd-toolbox/functions/value-checking-functions.js +1 -1
  30. package/level2/fd-toolbox/http/url/urls.cjs.js +1 -1
  31. package/level2/fd-toolbox/http/url/urls.js +1 -1
  32. package/level2/fd-toolbox/infra/env-config.cjs.js +2 -2
  33. package/level2/fd-toolbox/infra/env-config.js +2 -2
  34. package/level2/fd-toolbox/infra/env-functions.cjs.js +1 -1
  35. package/level2/fd-toolbox/infra/env-functions.js +1 -1
  36. package/level2/fd-toolbox/infra/env-schema.cjs.js +2 -2
  37. package/level2/fd-toolbox/infra/env-schema.js +2 -2
  38. package/level2/fd-toolbox/infra/env-store.cjs.js +1 -1
  39. package/level2/fd-toolbox/infra/env-store.js +1 -1
  40. package/level2/fd-toolbox/lib/environments.cjs.js +1 -1
  41. package/level2/fd-toolbox/lib/environments.js +1 -1
  42. package/level2/fd-toolbox/lib/utils.cjs.js +1 -1
  43. package/level2/fd-toolbox/lib/utils.js +1 -1
  44. package/level2/fd-toolbox/local-storage/local-storage.cjs.js +1 -1
  45. package/level2/fd-toolbox/local-storage/local-storage.js +1 -1
  46. package/level2/fd-toolbox/logging/loggers.cjs.js +1 -1
  47. package/level2/fd-toolbox/logging/loggers.js +1 -1
  48. package/level2/fd-toolbox/notifications.cjs.js +2 -2
  49. package/level2/fd-toolbox/notifications.js +2 -2
  50. package/level2/fd-toolbox/odata/odata-constants.cjs.js +1 -1
  51. package/level2/fd-toolbox/odata/odata-constants.js +1 -1
  52. package/level2/fd-toolbox/odata/odatas.cjs.js +1 -1
  53. package/level2/fd-toolbox/odata/odatas.js +1 -1
  54. package/level2/fd-toolbox/odata/services/odata-filters.cjs.js +1 -1
  55. package/level2/fd-toolbox/odata/services/odata-filters.js +1 -1
  56. package/level2/fd-toolbox/paths/paths-names.cjs.js +2 -2
  57. package/level2/fd-toolbox/paths/paths-names.js +1 -1
  58. package/level2/fd-toolbox/routing/login-routers.cjs.js +1 -1
  59. package/level2/fd-toolbox/routing/login-routers.js +1 -1
  60. package/level2/fd-toolbox/routing/paths.cjs.js +1 -1
  61. package/level2/fd-toolbox/routing/paths.js +1 -1
  62. package/level2/fd-toolbox/strings/strings-constants.cjs.js +1 -1
  63. package/level2/fd-toolbox/strings/strings-constants.js +1 -1
  64. package/level2/fd-toolbox/strings/strings.cjs.js +1 -1
  65. package/level2/fd-toolbox/strings/strings.js +1 -1
  66. package/level2/fd-toolbox/types/ensure-type.cjs.js +1 -1
  67. package/level2/fd-toolbox/types/ensure-type.js +1 -1
  68. package/level2/fd-toolbox-core/core/name-of.cjs.js +1 -1
  69. package/level2/fd-toolbox-core/core/name-of.js +1 -1
  70. package/level2/fd-toolbox-core/types/resource-with-id.cjs.js +1 -1
  71. package/level2/fd-toolbox-core/types/resource-with-id.js +1 -1
  72. package/package.json +1 -1
  73. package/LICENSE +0 -45
  74. package/bin/index.js +0 -262
  75. package/cli/.gitlab-ci.yml +0 -15
  76. package/cli/.husky/commit-msg +0 -1
  77. package/cli/.husky/pre-commit +0 -2
  78. package/cli/README.md +0 -101
  79. package/cli/bin/index.ts +0 -359
  80. package/cli/constants/path.js +0 -54
  81. package/cli/drizzle.config.ts +0 -12
  82. package/cli/eslint.config.js +0 -10
  83. package/cli/global-setup.ts +0 -25
  84. package/cli/next.config.js +0 -55
  85. package/cli/npm-commands/gen-meta/index.ts +0 -3
  86. package/cli/npm-commands/gen-schema/index.ts +0 -5
  87. package/cli/npm-commands/migrate-db/index.ts +0 -5
  88. package/cli/npm-commands/migrate-db/migrate-db.ts +0 -15
  89. package/cli/npm-commands/seed-db/index.ts +0 -5
  90. package/cli/npm-commands/seed-db/seed-db.ts +0 -15
  91. package/cli/package-template.json +0 -61
  92. package/cli/playwright.config.ts +0 -34
  93. package/cli/postcss.config.mjs +0 -9
  94. package/cli/server.ts +0 -41
  95. package/cli/src/app/api/v1/[resourceName]/[id]/route.ts/route.ts +0 -11
  96. package/cli/src/app/api/v1/[resourceName]/route.ts/route.ts +0 -14
  97. package/cli/src/app/api/v1/[resourceName]/upsert/route.ts/route.ts +0 -3
  98. package/cli/src/app/api/v1/log/route.ts/route.ts +0 -7
  99. package/cli/src/app/api/v1/otheruser/[id]/route.ts/route.ts +0 -14
  100. package/cli/src/app/api/v1/otheruser/route.ts/route.ts +0 -7
  101. package/cli/src/app/api/v1/password/forgotpassword/route.ts/route.ts +0 -3
  102. package/cli/src/app/api/v1/password/resetpassword/route.ts/route.ts +0 -3
  103. package/cli/src/app/api/v1/payment/method/route.ts/route.ts +0 -4
  104. package/cli/src/app/api/v1/payment/route.ts/route.ts +0 -3
  105. package/cli/src/app/api/v1/payment/verify-fail/route.ts/route.ts +0 -3
  106. package/cli/src/app/api/v1/payment/verify-success/route.ts/route.ts +0 -3
  107. package/cli/src/app/api/v1/preload/route.ts/route.ts +0 -3
  108. package/cli/src/app/api/v1/searchable-resources/route.ts/route.ts +0 -11
  109. package/cli/src/app/api/v1/searchresult/route.ts/route.ts +0 -35
  110. package/cli/src/app/api/v1/sign-in/route.ts/route.ts +0 -3
  111. package/cli/src/app/api/v1/sign-out/route.ts/route.ts +0 -3
  112. package/cli/src/app/api/v1/sign-up/route.ts/route.ts +0 -3
  113. package/cli/src/app/api/v1/subscription/cancel/route.ts/route.ts +0 -3
  114. package/cli/src/app/api/v1/subscription/create/route.ts/route.ts +0 -3
  115. package/cli/src/app/api/v1/subscription/update/route.ts/route.ts +0 -3
  116. package/cli/src/app/api/v1/uimeta/route.ts/route.ts +0 -3
  117. package/cli/src/app/api/v1/uimetas/route.ts/route.ts +0 -3
  118. package/cli/src/app/api/v1/userpermission/route.ts/route.ts +0 -3
  119. package/cli/src/app/api/v1/visible-workspace/route.ts/route.ts +0 -5
  120. package/cli/src/app/api/v1/workspace/change/route.ts/route.ts +0 -5
  121. package/cli/src/app/favicon.ico +0 -0
  122. package/cli/src/app/globals.css +0 -1
  123. package/cli/src/app/layout.tsx +0 -44
  124. package/cli/src/app/page.tsx +0 -9
  125. package/cli/src/app/styles/common.css +0 -74
  126. package/cli/src/app/styles/rich-text-editor.css +0 -130
  127. package/cli/tailwind.config.ts +0 -13
  128. package/cli/tsconfig.declaration.json +0 -48
  129. package/cli/tsconfig.json +0 -65
  130. package/cli/tsconfig.server.json +0 -14
@@ -1,61 +0,0 @@
1
- {
2
- "version": "0.1.0",
3
- "private": true,
4
- "type": "module",
5
- "scripts": {
6
- "dev": "npx tsx --tsconfig tsconfig.server.json server.ts",
7
- "build": "next build && tsc --project tsconfig.server.json",
8
- "lint": "eslint -c eslint.config.js",
9
- "gen-schema": "npx tsx tools/npm-commands/gen-schema/index.ts",
10
- "gen-meta": "npx tsx tools/npm-commands/gen-meta/index.ts",
11
- "init-db": "npm run migrate-db && npm run seed-db",
12
- "setup": "npm run gen-meta && npm run gen-schema && npm run init-db",
13
- "start": "npm run setup && npm run dev",
14
- "prod": "npm run setup && npm run build && npx tsx server.ts",
15
- "migrate-db": "npx tsx tools/npm-commands/migrate-db/index.ts",
16
- "seed-db": "npx tsx tools/npm-commands/seed-db/index.ts"
17
- },
18
- "dependencies": {
19
- "@fernir2/saas-kit": "0.0.144",
20
- "@node-rs/argon2": "2.0.2",
21
- "drizzle-orm": "0.41.0",
22
- "eslint-plugin-github": "6.0.0",
23
- "eslint-plugin-import": "2.32.0",
24
- "eslint-plugin-sonarjs": "3.0.5",
25
- "geist": "1.3.1",
26
- "next": "15.4.5",
27
- "quill": "2.0.3",
28
- "react": "18",
29
- "react-dom": "18",
30
- "socket.io-client": "4.8.1",
31
- "tailwindcss-animate": "1.0.7"
32
- },
33
- "devDependencies": {
34
- "playwright": "1.52.0",
35
- "@eslint/eslintrc": "3.3.1",
36
- "@eslint/js": "9.35.0",
37
- "@types/node": "24.5.1",
38
- "@types/react": "18",
39
- "@types/react-dom": "18",
40
- "@typescript-eslint/eslint-plugin": "8.43.0",
41
- "@typescript-eslint/eslint-plugin-tslint": "7.0.2",
42
- "@typescript-eslint/parser": "8.43.0",
43
- "drizzle-kit": "0.28.1",
44
- "eslint": "9.35.0",
45
- "eslint-config-next": "15.5.2",
46
- "eslint-config-prettier": "9.1.0",
47
- "eslint-plugin-react": "7.37.5",
48
- "eslint-plugin-react-compiler": "19.1.0-rc.2",
49
- "eslint-plugin-react-hooks": "5.2.0",
50
- "eslint-plugin-react-refresh": "0.4.20",
51
- "eslint-plugin-tailwindcss": "3.18.2",
52
- "husky": "9.1.7",
53
- "postcss": "8",
54
- "prettier": "3.6.2",
55
- "prettier-plugin-tailwindcss": "0.6.14",
56
- "tailwindcss": "3.4.1",
57
- "tsx": "4.19.1",
58
- "typescript": "5.9.2",
59
- "esbuild": "0.19.12"
60
- }
61
- }
@@ -1,34 +0,0 @@
1
- import { defineConfig, devices } from "playwright/test";
2
- import { getDotenvConfig } from "@fernir2/saas-kit";
3
-
4
- getDotenvConfig();
5
-
6
- const baseUrl = "http://localhost:8080/";
7
-
8
- export default defineConfig({
9
- timeout: 120000,
10
- testDir: "test/",
11
- fullyParallel: true,
12
- globalSetup: "./global-setup.ts",
13
- workers: undefined,
14
- reporter: "html",
15
- use: {
16
- baseURL: baseUrl,
17
- trace: "on-first-retry",
18
- },
19
- projects: [
20
- {
21
- name: "chromium",
22
- use: { ...devices["Desktop Chrome"] },
23
- },
24
- ],
25
- webServer: {
26
- command: "npm run prod",
27
- url: baseUrl,
28
- reuseExistingServer: true,
29
- timeout: 120000,
30
- env: {
31
- NODE_ENV: "test",
32
- },
33
- },
34
- });
@@ -1,9 +0,0 @@
1
- /** @type {import('postcss-load-config').Config} */
2
- const config = {
3
- plugins: {
4
- tailwindcss: {},
5
- autoprefixer: {},
6
- },
7
- };
8
-
9
- export default config;
package/cli/server.ts DELETED
@@ -1,41 +0,0 @@
1
- import { createServer } from "node:http";
2
- import { parse } from "url";
3
- import next from "next";
4
- import {
5
- checkAndHandleWebSocketRequest,
6
- initSocket,
7
- initializeInternalMetaCache,
8
- } from "@fernir2/saas-kit/server";
9
- import { envSettingKeys, getNumberEnvSetting, isDev } from "@fernir2/saas-kit";
10
-
11
- const dev = isDev();
12
- const port = getNumberEnvSetting(envSettingKeys.fdPort) ?? 3000;
13
-
14
- const app = next({ dev, port });
15
- const nextRequestHandler = app.getRequestHandler();
16
-
17
- async function run() {
18
- await app.prepare();
19
-
20
- const httpServer = createServer((req, res) => {
21
- checkAndHandleWebSocketRequest(req, res);
22
-
23
- const parsedUrl = parse(req.url!, true);
24
- nextRequestHandler(req, res, parsedUrl);
25
- });
26
-
27
- initSocket(httpServer);
28
-
29
- httpServer
30
- .once("error", (err) => {
31
- console.error(err);
32
- process.exit(1);
33
- })
34
- .listen(port, () => {
35
- console.log(`> Ready on http://localhost:${port}`);
36
- });
37
-
38
- await initializeInternalMetaCache();
39
- }
40
-
41
- run();
@@ -1,11 +0,0 @@
1
- import {
2
- deleteResourceByIdRoute,
3
- getResourceByIdRoute,
4
- putResourceByIdRoute,
5
- } from "@meta/server/basic-crud/crud-api";
6
-
7
- export const GET = getResourceByIdRoute;
8
-
9
- export const PUT = putResourceByIdRoute;
10
-
11
- export const DELETE = deleteResourceByIdRoute;
@@ -1,14 +0,0 @@
1
- import {
2
- deleteResourceRoute,
3
- getResourceRoute,
4
- postResourceRoute,
5
- putResourceRoute,
6
- } from "@meta/server/basic-crud/crud-api";
7
-
8
- export const PUT = putResourceRoute;
9
-
10
- export const GET = getResourceRoute;
11
-
12
- export const POST = postResourceRoute;
13
-
14
- export const DELETE = deleteResourceRoute;
@@ -1,3 +0,0 @@
1
- import { upsertResourceRoute } from "@meta/server/basic-crud/crud-api";
2
-
3
- export const POST = upsertResourceRoute;
@@ -1,7 +0,0 @@
1
- import { logDeleteRoute, logGetRoute, logPostRoute } from "@server/fd/fd-toolbox-web/logging/log-api";
2
-
3
- export const POST = logPostRoute;
4
-
5
- export const GET = logGetRoute;
6
-
7
- export const DELETE = logDeleteRoute;
@@ -1,14 +0,0 @@
1
- import {
2
- otheruserIdGetRoute,
3
- otheruserIdPostRoute,
4
- otheruserIdPutRoute,
5
- otheruserIdDeleteRoute,
6
- } from "@server/otheruser/id/otheruser-id-api";
7
-
8
- export const GET = otheruserIdGetRoute;
9
-
10
- export const POST = otheruserIdPostRoute;
11
-
12
- export const PUT = otheruserIdPutRoute;
13
-
14
- export const DELETE = otheruserIdDeleteRoute;
@@ -1,7 +0,0 @@
1
- import { otheruserGetRoute, otheruserPostRoute, otheruserPutRoute } from "@server/otheruser/otheruser-api";
2
-
3
- export const POST = otheruserPostRoute;
4
-
5
- export const PUT = otheruserPutRoute;
6
-
7
- export const GET = otheruserGetRoute;
@@ -1,3 +0,0 @@
1
- import { forgotpasswordPostRoute } from "@server/password/forgotpassword/forgotpassword-api";
2
-
3
- export const POST = forgotpasswordPostRoute;
@@ -1,3 +0,0 @@
1
- import { resetpasswordPostRoute } from "@server/password/resetpassword/resetpassword-api";
2
-
3
- export const POST = resetpasswordPostRoute;
@@ -1,4 +0,0 @@
1
- import { paymentMethodGetRoute, paymentMethodPutRoute } from "@server/payment/method/payment-method-api";
2
-
3
- export const PUT = paymentMethodPutRoute;
4
- export const GET = paymentMethodGetRoute;
@@ -1,3 +0,0 @@
1
- import { registerPaymentCustomerAndCreateWorkspaceSubscriptionApi } from "@server/payments/payments/payments-api";
2
-
3
- export const POST = registerPaymentCustomerAndCreateWorkspaceSubscriptionApi;
@@ -1,3 +0,0 @@
1
- import { paymentVerifyFailPostRoute } from "@server/payment/verify-fail/payment-verify-fail-api";
2
-
3
- export const POST = paymentVerifyFailPostRoute;
@@ -1,3 +0,0 @@
1
- import { paymentVerifySuccessPostRoute } from "@server/payment/verify-success/payment-verify-success";
2
-
3
- export const POST = paymentVerifySuccessPostRoute;
@@ -1,3 +0,0 @@
1
- import { preloadApi } from "@server/fd/fd-toolbox-web/controllers/preload-api";
2
-
3
- export const GET = preloadApi;
@@ -1,11 +0,0 @@
1
- import { getSearchableResources } from "@meta/server/resources/searchable-resources";
2
- import { apiBadRequestResponse, apiOkResponse } from "@meta/server/web/responses";
3
- import { httpApiWrapper } from "@meta/server/web/http-api-wrapper";
4
-
5
- export const GET = httpApiWrapper(async () => {
6
- const resourceNames = Array.from((await getSearchableResources()).keys());
7
-
8
- if (!resourceNames) return apiBadRequestResponse([]);
9
-
10
- return apiOkResponse(resourceNames);
11
- });
@@ -1,35 +0,0 @@
1
- import { SearchResult } from "@fd-app-toolbox/resources/search-result.resource";
2
- import { searchResultParams } from "@fd-toolbox/constants/search-result-constants";
3
- import { getSearchableResourceResult, getSearchScreensResult } from "@server/search/search-result";
4
- import { SearchableResourceResult } from "@fd-app-toolbox/models/searchable-resource-result";
5
- import { ScreensResult } from "@fd-app-toolbox/models/screens-result";
6
- import { httpApiWrapper } from "@meta/server/web/http-api-wrapper";
7
- import { apiOkResponse } from "@meta/server/web/responses";
8
- import { isPromiseFulfilled } from "@fd-toolbox/lib/utils";
9
-
10
- export const GET = httpApiWrapper(async (req: Request) => {
11
- const url = new URL(req.url);
12
- const querySearch = url.searchParams.get(searchResultParams.querySearch) ?? "";
13
- const filterSearchParam = url.searchParams.get(searchResultParams.filterSearch);
14
-
15
- const filterSearch = filterSearchParam ? filterSearchParam.split(",") : [];
16
-
17
- const searchResourceResultPromise = getSearchableResourceResult(
18
- querySearch,
19
- filterSearch,
20
- ) satisfies Promise<SearchableResourceResult[]>;
21
-
22
- const searchScreensResultPromise = getSearchScreensResult(querySearch, filterSearch) satisfies Promise<
23
- ScreensResult[]
24
- >;
25
-
26
- const [searchResourceResult, searchScreensResult] = await Promise.allSettled([
27
- searchResourceResultPromise,
28
- searchScreensResultPromise,
29
- ]);
30
-
31
- return apiOkResponse<SearchResult>({
32
- searchableResources: isPromiseFulfilled(searchResourceResult) ? searchResourceResult.value : [],
33
- screens: isPromiseFulfilled(searchScreensResult) ? searchScreensResult.value : [],
34
- });
35
- });
@@ -1,3 +0,0 @@
1
- import { signInApi } from "@server/auth/sign-in-api";
2
-
3
- export const POST = signInApi;
@@ -1,3 +0,0 @@
1
- import { signOutGetRoute } from "@server/auth/sign-out-api";
2
-
3
- export const GET = signOutGetRoute;
@@ -1,3 +0,0 @@
1
- import { signUpApi } from "@server/auth/sign-up-api";
2
-
3
- export const POST = signUpApi;
@@ -1,3 +0,0 @@
1
- import { subscriptionCancelPostRoute } from "@server/subscription/cancel/subscription-cancel-api";
2
-
3
- export const POST = subscriptionCancelPostRoute;
@@ -1,3 +0,0 @@
1
- import { subscriptionCreatePostRoute } from "@server/subscription/create/subscription-create-api";
2
-
3
- export const POST = subscriptionCreatePostRoute;
@@ -1,3 +0,0 @@
1
- import { subscriptionUpdatePostRoute } from "@server/subscription/update/subscription-update-api";
2
-
3
- export const POST = subscriptionUpdatePostRoute;
@@ -1,3 +0,0 @@
1
- import { uiMetaRoute } from "@meta/server/ui/ui-metas-api";
2
-
3
- export const GET = uiMetaRoute;
@@ -1,3 +0,0 @@
1
- import { uiMetasRoute } from "@meta/server/ui/ui-metas-api";
2
-
3
- export const GET = uiMetasRoute;
@@ -1,3 +0,0 @@
1
- import { permissionRoute } from "@server/fd/fd-toolbox-web/permissions/permission-api";
2
-
3
- export const GET = permissionRoute;
@@ -1,5 +0,0 @@
1
- import { visibleWorkspaceGetRoute, visibleWorkspacePostRoute } from "@server/workspace/visible-workspace-api";
2
-
3
- export const POST = visibleWorkspacePostRoute;
4
-
5
- export const GET = visibleWorkspaceGetRoute;
@@ -1,5 +0,0 @@
1
- import { workspaceGetRoute, workspacePostRoute } from "@server/workspace/workspace-api";
2
-
3
- export const GET = workspaceGetRoute;
4
-
5
- export const POST = workspacePostRoute;
Binary file
@@ -1 +0,0 @@
1
- @import "@fernir2/saas-kit/styles";
@@ -1,44 +0,0 @@
1
- import { FdHtmlMetadata } from "@meta/client/framework";
2
- import { GeistSans } from "geist/font/sans";
3
- import "src/app/globals.css";
4
- import { cn } from "@fd-toolbox/lib/utils";
5
- import Favicon from "src/app/favicon.ico";
6
- import { FdToaster } from "@fd-component-toolbox/toaster/FdToaster";
7
- import { ReactNode } from "react";
8
- import { FdProviders } from "@client/components/providers/FdProviders";
9
- import { setSidebarResourceNames } from "@fd-app-toolbox/layout/sidebar/sidebar-resource-names-cache";
10
- import { defaultGlobalConfig } from "@meta/providers/global-provider/default-config";
11
- import { setMultiListEditResourceConfigs } from "@/app/config/multi-list-config";
12
- import { setResourceListConfigs } from "@packages/level2/client/pages/view-page/resource-list-configs";
13
- import { setEditResourceConfigs } from "@packages/level2/meta/edit-resource/config/fd-edit-resource-configs";
14
-
15
- export const metadata: FdHtmlMetadata = {
16
- title: "SaaS Kit",
17
- icons: [{ rel: "icon", url: Favicon.src }],
18
- };
19
-
20
- export default async function RootLayout({ children }: { children: ReactNode }) {
21
- const sidebarResourceNames: string[] = [];
22
-
23
- setSidebarResourceNames(sidebarResourceNames);
24
- await setMultiListEditResourceConfigs();
25
- await setResourceListConfigs();
26
- setEditResourceConfigs();
27
-
28
- return (
29
- <html lang="en">
30
- <body className={cn(GeistSans.className, "h-screen text-sm")}>
31
- <div className="flex h-full flex-col">
32
- <FdProviders
33
- globalConfig={{
34
- ...defaultGlobalConfig,
35
- }}
36
- >
37
- {children}
38
- </FdProviders>
39
- </div>
40
- <FdToaster />
41
- </body>
42
- </html>
43
- );
44
- }
@@ -1,9 +0,0 @@
1
- import { fdRedirect } from "@fd-toolbox/server/framework";
2
- import { getResourceListUrl } from "@meta/services/meta-navigations";
3
- import { resourceNames } from "@fd-toolbox/resources/resource-names";
4
-
5
- export default function Home() {
6
- const afterLoginUrl = getResourceListUrl(resourceNames.contact);
7
-
8
- fdRedirect(afterLoginUrl);
9
- }
@@ -1,74 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- @layer base {
6
- * {
7
- @apply border-border;
8
- }
9
- body {
10
- @apply bg-background text-foreground;
11
- }
12
- }
13
-
14
- @supports not (-webkit-appearance: none) {
15
- * {
16
- scrollbar-width: thin;
17
- scrollbar-color: hsl(var(--fd-toolbar)) hsl(var(--background));
18
- }
19
- }
20
-
21
- @supports (-webkit-appearance: none) {
22
- *::-webkit-scrollbar {
23
- width: 15px;
24
- height: 15px;
25
- }
26
-
27
- *::-webkit-scrollbar-track {
28
- background: hsl(var(--background));
29
- }
30
-
31
- *::-webkit-scrollbar-thumb {
32
- width: 9px;
33
- height: 9px;
34
- background: hsl(var(--fd-toolbar));
35
- border-radius: var(--radius);
36
- border: 3px solid hsl(var(--background));
37
- }
38
-
39
- *::-webkit-scrollbar-thumb:hover {
40
- background: hsl(var(--fd-toolbar-hover));
41
- }
42
-
43
- *::-webkit-scrollbar-button {
44
- display: none;
45
- }
46
- }
47
-
48
- .scrollbar-hidden {
49
- -ms-overflow-style: none;
50
- scrollbar-width: none;
51
- }
52
-
53
- @media (max-width: 426px) {
54
- html,
55
- body {
56
- overflow: auto;
57
- -ms-overflow-style: none;
58
- scrollbar-width: none;
59
- }
60
-
61
- body::-webkit-scrollbar,
62
- body *::-webkit-scrollbar {
63
- display: none;
64
- }
65
- }
66
-
67
- @layer base {
68
- input:-webkit-autofill,
69
- input:-webkit-autofill:hover,
70
- input:-webkit-autofill:focus {
71
- -webkit-box-shadow: 0 0 0px 1000px hsl(var(--background)) inset;
72
- -webkit-text-fill-color: hsl(var(--foreground));
73
- }
74
- }
@@ -1,130 +0,0 @@
1
- div.ql-toolbar.ql-snow {
2
- padding: 0.5rem 0.75rem;
3
- border-top-right-radius: var(--radius);
4
- border-top-left-radius: var(--radius);
5
- border: 1px solid hsl(var(--border));
6
- }
7
-
8
- .ql-toolbar.ql-snow .ql-picker-label {
9
- padding-left: 0;
10
- border: none;
11
- }
12
-
13
- .ql-toolbar.ql-snow .ql-picker-label::before {
14
- font-family: "__GeistSans_3a0388", serif;
15
- }
16
-
17
- .ql-editor {
18
- font-size: 14px;
19
- padding: 10px 12px;
20
- }
21
-
22
- div.ql-container.ql-snow {
23
- height: max-content;
24
- border: 1px solid hsl(var(--border));
25
- border-bottom-right-radius: var(--radius);
26
- border-bottom-left-radius: var(--radius);
27
- }
28
-
29
- .ql-tooltip {
30
- display: none;
31
- }
32
-
33
- .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
34
- z-index: 11;
35
- }
36
-
37
- .ql-picker-label,
38
- .ql-picker-label .ql-stroke {
39
- color: hsl(var(--popover-foreground));
40
- stroke: hsl(var(--popover-foreground));
41
- fill: hsl(var(--popover-foreground));
42
- }
43
-
44
- .ql-toolbar .ql-formats button {
45
- color: hsl(var(--popover-foreground));
46
- }
47
-
48
- .ql-toolbar .ql-formats button .ql-stroke {
49
- stroke: hsl(var(--popover-foreground));
50
- }
51
-
52
- .ql-toolbar .ql-formats button .ql-fill {
53
- fill: hsl(var(--popover-foreground));
54
- }
55
-
56
- .ql-toolbar .ql-active,
57
- .ql-toolbar .ql-active .ql-stroke,
58
- .ql-toolbar .ql-active .ql-fill {
59
- color: hsl(var(--popover-foreground));
60
- fill: none;
61
- stroke: none;
62
- }
63
-
64
- .ql-snow .ql-picker {
65
- font-weight: 400;
66
- }
67
-
68
- .ql-editor.ql-blank::before {
69
- left: 12px;
70
- right: 12px;
71
- color: hsl(var(--muted-foreground));
72
- }
73
-
74
- .ql-toolbar .ql-formats button:hover .ql-stroke,
75
- .ql-toolbar .ql-picker .ql-picker-label:hover .ql-stroke,
76
- .ql-toolbar .ql-picker .ql-picker-label.ql-active .ql-stroke,
77
- .ql-toolbar .ql-formats button.ql-active .ql-stroke {
78
- stroke: hsl(var(--foreground));
79
- stroke-width: 2;
80
- }
81
-
82
- .ql-toolbar .ql-formats button:hover .ql-fill,
83
- .ql-toolbar .ql-formats button.ql-active .ql-fill {
84
- fill: hsl(var(--foreground));
85
- }
86
-
87
- .ql-toolbar .ql-picker .ql-picker-label:hover::before,
88
- .ql-toolbar .ql-picker .ql-picker-label.ql-active::before,
89
- .ql-picker .ql-picker-options .ql-picker-item.ql-selected::before {
90
- color: hsl(var(--foreground));
91
- font-weight: 600;
92
- }
93
-
94
- .ql-snow .ql-picker-options .ql-picker-item:hover {
95
- border-radius: 0.375rem;
96
- background: hsl(var(--muted) / 0.5);
97
- }
98
-
99
- .ql-toolbar .ql-formats button .ql-stroke,
100
- .ql-toolbar .ql-picker .ql-picker-label .ql-stroke {
101
- stroke: hsl(var(--foreground));
102
- stroke-width: 1.2;
103
- }
104
-
105
- .ql-toolbar .ql-formats button .ql-fill {
106
- fill: hsl(var(--foreground));
107
- }
108
-
109
- .ql-toolbar .ql-picker .ql-picker-label::before,
110
- .ql-picker .ql-picker-options .ql-picker-item::before {
111
- color: hsl(var(--foreground));
112
- font-weight: 400;
113
- }
114
-
115
- .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
116
- min-width: 12rem;
117
- z-index: 50;
118
- margin-right: 1rem;
119
- border-radius: 0.375rem;
120
- background-color: hsl(var(--background));
121
- border: 1px solid hsl(var(--border));
122
- box-shadow: 0rem 0rem 0.1rem 0.01rem hsl(var(--fd-toolbar-shadow));
123
- outline: none;
124
- pointer-events: auto;
125
- }
126
-
127
- .ql-snow .ql-picker-options .ql-picker-item {
128
- width: 100%;
129
- padding: 0.5rem 0.75rem;
130
- }
@@ -1,13 +0,0 @@
1
- import { getTailwindConfig } from "@fernir2/saas-kit";
2
-
3
- const config = getTailwindConfig();
4
-
5
- config.content = [
6
- "./pages/**/*.{ts,tsx}",
7
- "./components/**/*.{ts,tsx}",
8
- "./app/**/*.{ts,tsx}",
9
- "./src/**/*.{ts,tsx}",
10
- "./node_modules/@fernir2/saas-kit/src/**/*.{js,ts,jsx,tsx}",
11
- ];
12
-
13
- export default config;