create-aron-app 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -31
- package/dist/index.js +39 -115
- package/package.json +7 -4
- package/templates/.cursor/rules/backend.mdc +112 -0
- package/templates/.cursor/rules/coding_standards.mdc +145 -0
- package/templates/.cursor/rules/frontend_architecture.mdc +334 -0
- package/templates/.github/workflows/ci.yml +40 -0
- package/templates/apps/api/_generated/api.d.ts +57 -0
- package/templates/apps/api/_generated/api.js +23 -0
- package/templates/apps/api/_generated/dataModel.d.ts +60 -0
- package/templates/apps/api/_generated/server.d.ts +143 -0
- package/templates/apps/api/_generated/server.js +93 -0
- package/templates/apps/api/http.ts +16 -0
- package/templates/apps/web/.env.example +10 -0
- package/templates/apps/web/.react-router/types/+future.ts +9 -0
- package/templates/apps/web/.react-router/types/+routes.ts +76 -0
- package/templates/apps/web/.react-router/types/+server-build.d.ts +18 -0
- package/templates/apps/web/.react-router/types/src/+types/root.ts +59 -0
- package/templates/apps/web/.react-router/types/src/routes/(auth)/+types/layout.ts +62 -0
- package/templates/apps/web/.react-router/types/src/routes/(auth)/sign-in/+types/index.ts +65 -0
- package/templates/apps/web/.react-router/types/src/routes/(dashboard)/(todos)/+types/[id].ts +68 -0
- package/templates/apps/web/.react-router/types/src/routes/(dashboard)/(todos)/+types/index.ts +68 -0
- package/templates/apps/web/.react-router/types/src/routes/(dashboard)/(todos)/+types/layout.ts +65 -0
- package/templates/apps/web/.react-router/types/src/routes/(dashboard)/+types/index.ts +65 -0
- package/templates/apps/web/.react-router/types/src/routes/(dashboard)/+types/layout.ts +62 -0
- package/templates/{react-router → apps/web}/project.json +9 -2
- package/templates/{react-router → apps/web}/react-router.config.ts +1 -1
- package/templates/apps/web/src/app.css +3 -0
- package/templates/{react-router → apps/web}/src/components/error_boundary.tsx +1 -1
- package/templates/apps/web/src/libs/convex_query_client.ts +11 -0
- package/templates/apps/web/src/libs/react_query_client.ts +17 -0
- package/templates/apps/web/src/libs/server/auth.ts +32 -0
- package/templates/apps/web/src/libs/server/protected.ts +17 -0
- package/templates/apps/web/src/providers/api_auth_provider.tsx +26 -0
- package/templates/apps/web/src/providers/global_provider.tsx +28 -0
- package/templates/apps/web/src/providers/navigation_loading_bar_provider.tsx +72 -0
- package/templates/apps/web/src/root.tsx +68 -0
- package/templates/{react-router/src/routes/auth → apps/web/src/routes/(auth)}/layout.tsx +1 -1
- package/templates/apps/web/src/routes/(dashboard)/(todos)/[id].tsx +33 -0
- package/templates/apps/web/src/routes/(dashboard)/(todos)/index.tsx +26 -0
- package/templates/apps/web/src/routes/(dashboard)/(todos)/layout.tsx +9 -0
- package/templates/apps/web/src/routes/(dashboard)/index.tsx +20 -0
- package/templates/apps/web/src/routes/(dashboard)/layout.tsx +20 -0
- package/templates/apps/web/src/routes.ts +14 -0
- package/templates/apps/web/src/surfaces/home/bootstrap.ts +9 -0
- package/templates/apps/web/src/surfaces/home/home.tsx +25 -0
- package/templates/apps/web/src/surfaces/home/install.tsx +17 -0
- package/templates/apps/web/src/surfaces/home/layout.tsx +35 -0
- package/templates/apps/web/src/surfaces/home/main/create.tsx +32 -0
- package/templates/apps/web/src/surfaces/sidebar/install.tsx +19 -0
- package/templates/apps/web/src/surfaces/sidebar/layout.tsx +119 -0
- package/templates/apps/web/src/surfaces/sidebar/nav_main/create.tsx +31 -0
- package/templates/apps/web/src/surfaces/sidebar/nav_main/nav_main.tsx +42 -0
- package/templates/apps/web/src/surfaces/sidebar/sidebar.tsx +18 -0
- package/templates/apps/web/src/surfaces/sidebar/user_menu/create.tsx +26 -0
- package/templates/{react-router/src/layouts/sidebar/sidebar_aside → apps/web/src/surfaces/sidebar/user_menu}/user_menu.tsx +13 -9
- package/templates/apps/web/src/surfaces/todos/all_todos/all_todos.tsx +25 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/all_todos_controller.ts +47 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/bootstrap.ts +21 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/header/create.tsx +21 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/install.tsx +20 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/layout.tsx +35 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/main/create.tsx +47 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/main/main.tsx +68 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/main/new_todo_sheet/create.tsx +54 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/main/new_todo_sheet/new_todo_sheet.tsx +97 -0
- package/templates/apps/web/src/surfaces/todos/all_todos/main/new_todo_sheet/schema.ts +11 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/bootstrap.ts +35 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/header/create.tsx +24 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/header/header.tsx +25 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/install.tsx +27 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/layout.tsx +45 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/main/create.tsx +35 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/main/main.tsx +47 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/single_todo.tsx +27 -0
- package/templates/apps/web/src/surfaces/todos/single_todo/single_todo_controller.ts +16 -0
- package/templates/{react-router → apps/web}/vite.config.ts +27 -3
- package/templates/{_base/biome.json → biome.json} +12 -0
- package/templates/bun.lock +1917 -0
- package/templates/{_base/emails → emails}/project.json +1 -1
- package/templates/package.json +91 -0
- package/templates/{_base/shared → shared}/assets/src/styles/global.css +14 -8
- package/templates/shared/ui/src/base/collapsible.tsx +31 -0
- package/templates/shared/ui/src/base/hover-card.tsx +42 -0
- package/templates/shared/ui/src/base/input-group.tsx +168 -0
- package/templates/shared/ui/src/base/panel.tsx +93 -0
- package/templates/{_base/shared → shared}/ui/src/hooks/use_mobile.tsx +1 -1
- package/templates/{_base/shared → shared}/ui/src/hooks/use_query_params.tsx +6 -7
- package/templates/{_base/shared → shared}/ui/tsconfig.json +1 -1
- package/templates/shared/utils/src/convex.ts +4 -0
- package/templates/{_base/tsconfig.base.json → tsconfig.base.json} +2 -1
- package/templates/_base/.cursor/commands/builder.md +0 -0
- package/templates/_base/.cursor/rules/api_architecture.mdc +0 -268
- package/templates/_base/.cursor/rules/coding_standards.mdc +0 -64
- package/templates/_base/.cursor/rules/convex_rules.mdc +0 -675
- package/templates/_base/.cursor/rules/frontend_rules.mdc +0 -268
- package/templates/_base/.env.convex.example +0 -3
- package/templates/_base/.github/workflows/ci.yml +0 -29
- package/templates/_base/_gitignore +0 -58
- package/templates/_base/package.json +0 -73
- package/templates/_base/shared/utils/src/convex.ts +0 -3
- package/templates/nextjs/.env.example +0 -8
- package/templates/nextjs/index.d.ts +0 -6
- package/templates/nextjs/next-env.d.ts +0 -5
- package/templates/nextjs/next.config.js +0 -22
- package/templates/nextjs/postcss.config.js +0 -17
- package/templates/nextjs/project.json +0 -22
- package/templates/nextjs/src/app/(auth)/layout.tsx +0 -21
- package/templates/nextjs/src/app/(auth)/not-allowed/page.tsx +0 -22
- package/templates/nextjs/src/app/(auth)/sign-in/[[...sign-in]]/page.tsx +0 -15
- package/templates/nextjs/src/app/(dashboard)/layout.tsx +0 -27
- package/templates/nextjs/src/app/(dashboard)/page.tsx +0 -5
- package/templates/nextjs/src/app/(dashboard)/todos/[id]/page.tsx +0 -23
- package/templates/nextjs/src/app/(dashboard)/todos/page.tsx +0 -16
- package/templates/nextjs/src/app/app.css +0 -3
- package/templates/nextjs/src/app/layout.tsx +0 -26
- package/templates/nextjs/src/convex.ts +0 -11
- package/templates/nextjs/src/middleware.ts +0 -18
- package/templates/nextjs/src/providers/convex_provider.tsx +0 -44
- package/templates/nextjs/src/surfaces/home_surface.tsx +0 -22
- package/templates/nextjs/src/surfaces/todos/all_todos_surface.tsx +0 -97
- package/templates/nextjs/src/surfaces/todos/create_todo_sheet.tsx +0 -107
- package/templates/nextjs/src/surfaces/todos/single_todo_surface.tsx +0 -90
- package/templates/nextjs/src/ui/sidebar/nav_link.tsx +0 -36
- package/templates/nextjs/src/ui/sidebar/sidebar.tsx +0 -125
- package/templates/nextjs/src/utils/font.ts +0 -9
- package/templates/nextjs/tsconfig.json +0 -42
- package/templates/react-router/.env.example +0 -8
- package/templates/react-router/src/app.css +0 -3
- package/templates/react-router/src/layouts/sidebar/sidebar_aside/sidebar_aside.tsx +0 -76
- package/templates/react-router/src/layouts/sidebar/sidebar_layout.tsx +0 -22
- package/templates/react-router/src/providers/api_auth_provider.tsx +0 -38
- package/templates/react-router/src/root.tsx +0 -37
- package/templates/react-router/src/routes/index.tsx +0 -9
- package/templates/react-router/src/routes/layout.tsx +0 -26
- package/templates/react-router/src/routes/todos/[id].tsx +0 -22
- package/templates/react-router/src/routes/todos/index.tsx +0 -13
- package/templates/react-router/src/routes.ts +0 -12
- package/templates/react-router/src/surfaces/home_surface.tsx +0 -20
- package/templates/react-router/src/surfaces/todos/all_todos_surface.tsx +0 -87
- package/templates/react-router/src/surfaces/todos/create_todo_sheet.tsx +0 -102
- package/templates/react-router/src/surfaces/todos/single_todo_surface.tsx +0 -81
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/scripts/api-specs-context.sh +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/scripts/execute-request.sh +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/scripts/extract-endpoint-detail.sh +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/scripts/extract-tag-endpoints.sh +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-backend-api/scripts/extract-tags.js +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/core-2/custom-sign-in.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/core-2/custom-sign-up.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/core-3/custom-sign-in.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/core-3/custom-sign-up.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-custom-ui/core-3/show-component.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/references/api-routes.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/references/caching-auth.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/references/middleware-strategies.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/references/server-actions.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-nextjs-patterns/references/server-vs-client.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/clerk/clerk-webhooks/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/SKILL.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/agents/openai.yml +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/assets/shadcn-small.png +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/assets/shadcn.png +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/cli.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/customization.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/evals/evals.json +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/mcp.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/rules/base-vs-radix.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/rules/composition.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/rules/forms.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/rules/icons.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/agents/skills/shadcn/rules/styling.md +0 -0
- /package/templates/{_base/.cursor → .cursor}/commands/pr.md +0 -0
- /package/templates/{_base/.nvmrc → .nvmrc} +0 -0
- /package/templates/{_base/.vscode → .vscode}/settings.json +0 -0
- /package/templates/{_base/apps → apps}/api/auth.config.ts +0 -0
- /package/templates/{_base/apps → apps}/api/functions.ts +0 -0
- /package/templates/{_base/apps → apps}/api/project.json +0 -0
- /package/templates/{_base/apps → apps}/api/schema.ts +0 -0
- /package/templates/{_base/apps → apps}/api/todos/crud.ts +0 -0
- /package/templates/{_base/apps → apps}/api/todos/schema.ts +0 -0
- /package/templates/{_base/apps → apps}/api/todos/types.ts +0 -0
- /package/templates/{_base/apps → apps}/api/tsconfig.json +0 -0
- /package/templates/{_base/apps → apps}/api/types.ts +0 -0
- /package/templates/{react-router → apps/web}/postcss.config.js +0 -0
- /package/templates/{react-router → apps/web}/public/favicon.ico +0 -0
- /package/templates/{react-router/src/routes/auth/sign-in.tsx → apps/web/src/routes/(auth)/sign-in/index.tsx} +0 -0
- /package/templates/{react-router → apps/web}/tsconfig.json +0 -0
- /package/templates/{_base/convex.json → convex.json} +0 -0
- /package/templates/{_base/emails → emails}/tsconfig.json +0 -0
- /package/templates/{_base/emails → emails}/welcome_email.tsx +0 -0
- /package/templates/{_base/nx.json → nx.json} +0 -0
- /package/templates/{_base/scripts → scripts}/sync_convex_env.ts +0 -0
- /package/templates/{_base/shared → shared}/assets/image.d.ts +0 -0
- /package/templates/{_base/shared → shared}/assets/tsconfig.json +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/alert_dialog.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/badge.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/basic_data_table.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/button.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/button_group.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/card.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/checkbox.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/command.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/dialog.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/dropdown_menu.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/form.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/input.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/label.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/popover.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/radio_group.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/resizable.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/scroll_area.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/select.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/separator.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/sheet.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/side_bar.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/skeleton.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/spinner.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/switch.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/table.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/text_area.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/tooltip.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/base/utils.ts +0 -0
- /package/templates/{_base/shared → shared}/ui/src/hooks/use_keyboard_press.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/hooks/use_keyboard_release.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/hooks/use_mouse_click.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/hooks/use_mouse_location.tsx +0 -0
- /package/templates/{_base/shared → shared}/ui/src/hooks/use_outside_click.tsx +0 -0
- /package/templates/{_base/shared → shared}/utils/src/time.ts +0 -0
- /package/templates/{_base/shared → shared}/utils/tsconfig.json +0 -0
- /package/templates/{_base/skills-lock.json → skills-lock.json} +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@/source",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": true,
|
|
7
|
+
"scripts": {},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@clerk/react-router": "^3.0.4",
|
|
10
|
+
"@convex-dev/react-query": "^0.0.0-alpha.8",
|
|
11
|
+
"@hookform/resolvers": "^3.9.1",
|
|
12
|
+
"@radix-ui/react-accordion": "^1.2.2",
|
|
13
|
+
"@radix-ui/react-alert-dialog": "^1.1.4",
|
|
14
|
+
"@radix-ui/react-aspect-ratio": "^1.1.1",
|
|
15
|
+
"@radix-ui/react-checkbox": "^1.1.3",
|
|
16
|
+
"@radix-ui/react-collapsible": "^1.1.2",
|
|
17
|
+
"@radix-ui/react-dropdown-menu": "^2.1.4",
|
|
18
|
+
"@radix-ui/react-hover-card": "^1.1.4",
|
|
19
|
+
"@radix-ui/react-label": "^2.1.1",
|
|
20
|
+
"@radix-ui/react-popover": "^1.1.4",
|
|
21
|
+
"@radix-ui/react-progress": "^1.1.1",
|
|
22
|
+
"@radix-ui/react-radio-group": "^1.2.2",
|
|
23
|
+
"@radix-ui/react-scroll-area": "^1.2.2",
|
|
24
|
+
"@radix-ui/react-select": "^2.1.4",
|
|
25
|
+
"@radix-ui/react-separator": "^1.1.1",
|
|
26
|
+
"@radix-ui/react-slider": "^1.2.2",
|
|
27
|
+
"@radix-ui/react-switch": "^1.1.2",
|
|
28
|
+
"@radix-ui/react-tabs": "^1.1.2",
|
|
29
|
+
"@radix-ui/react-tooltip": "^1.1.6",
|
|
30
|
+
"@react-router/node": "^7.13.1",
|
|
31
|
+
"@react-router/serve": "^7.13.1",
|
|
32
|
+
"@stepperize/react": "^5.1.5",
|
|
33
|
+
"@tailwindcss/typography": "^0.5.16",
|
|
34
|
+
"@tanstack/react-query": "^5.66.0",
|
|
35
|
+
"@tanstack/react-store": "^0.7.0",
|
|
36
|
+
"@tanstack/react-table": "^8.20.6",
|
|
37
|
+
"class-variance-authority": "^0.7.1",
|
|
38
|
+
"cmdk": "^1.0.4",
|
|
39
|
+
"convex": "^1.28.0",
|
|
40
|
+
"convex-ents": "^0.16.0",
|
|
41
|
+
"convex-helpers": "^0.1.114",
|
|
42
|
+
"dayjs": "^1.11.13",
|
|
43
|
+
"hono": "^4.12.9",
|
|
44
|
+
"isbot": "^5",
|
|
45
|
+
"lodash-es": "^4.17.21",
|
|
46
|
+
"lucide-react": "^0.469.0",
|
|
47
|
+
"mobx": "^6.15.0",
|
|
48
|
+
"mobx-react": "^9.2.1",
|
|
49
|
+
"mobx-react-lite": "^4.1.1",
|
|
50
|
+
"nanoid": "^5.1.6",
|
|
51
|
+
"react": "19.0.0",
|
|
52
|
+
"react-dom": "19.0.0",
|
|
53
|
+
"react-hook-form": "^7.54.2",
|
|
54
|
+
"react-resizable-panels": "^4.7.2",
|
|
55
|
+
"react-router": "^7.5.0",
|
|
56
|
+
"react-top-loading-bar": "^3.0.0",
|
|
57
|
+
"sharp": "^0.33.5",
|
|
58
|
+
"sonner": "^2.0.1",
|
|
59
|
+
"ts-essentials": "^10.1.1",
|
|
60
|
+
"tw-animate-css": "^1.3.8",
|
|
61
|
+
"zod": "^3"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@biomejs/biome": "^2.2.3",
|
|
65
|
+
"@nx/js": "20.6.2",
|
|
66
|
+
"@nx/workspace": "20.6.2",
|
|
67
|
+
"@react-router/dev": "^7.5.0",
|
|
68
|
+
"@swc-node/register": "~1.9.1",
|
|
69
|
+
"@swc/core": "~1.5.7",
|
|
70
|
+
"@swc/helpers": "~0.5.11",
|
|
71
|
+
"@tailwindcss/postcss": "^4.1.11",
|
|
72
|
+
"@tailwindcss/vite": "^4.1.11",
|
|
73
|
+
"@types/react": "^19.0.0",
|
|
74
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
75
|
+
"@types/react-dom": "19.0.0",
|
|
76
|
+
"autoprefixer": "10.4.13",
|
|
77
|
+
"nx": "20.6.2",
|
|
78
|
+
"postcss": "8.4.38",
|
|
79
|
+
"tailwind-merge": "^3.0.2",
|
|
80
|
+
"tailwindcss": "^4.1.13",
|
|
81
|
+
"tailwindcss-animate": "^1.0.7",
|
|
82
|
+
"tslib": "^2.3.0",
|
|
83
|
+
"typescript": "~5.7.2",
|
|
84
|
+
"vite": "^6.3.2",
|
|
85
|
+
"vite-plugin-devtools-json": "^1.0.0",
|
|
86
|
+
"vite-tsconfig-paths": "^5.1.4"
|
|
87
|
+
},
|
|
88
|
+
"workspaces": [
|
|
89
|
+
"apps/*"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
:root {
|
|
6
6
|
--spacing: 0.222222rem;
|
|
7
7
|
--radius: 0.625rem;
|
|
8
|
-
|
|
9
8
|
--background: oklch(1 0 0);
|
|
10
9
|
--foreground: oklch(0.145 0 0);
|
|
11
10
|
--card: oklch(1 0 0);
|
|
@@ -29,17 +28,22 @@
|
|
|
29
28
|
--chart-3: oklch(0.398 0.07 227.392);
|
|
30
29
|
--chart-4: oklch(0.828 0.189 84.429);
|
|
31
30
|
--chart-5: oklch(0.769 0.188 70.08);
|
|
32
|
-
--sidebar: oklch(0.
|
|
33
|
-
--sidebar-foreground: oklch(0.
|
|
34
|
-
--sidebar-primary: oklch(0.
|
|
35
|
-
--sidebar-primary-foreground: oklch(
|
|
36
|
-
--sidebar-accent: oklch(0.
|
|
37
|
-
--sidebar-accent-foreground: oklch(0.
|
|
38
|
-
--sidebar-border: oklch(0.
|
|
31
|
+
--sidebar: oklch(0.25 0 0);
|
|
32
|
+
--sidebar-foreground: oklch(0.95 0 0);
|
|
33
|
+
--sidebar-primary: oklch(0.5 0.15 250);
|
|
34
|
+
--sidebar-primary-foreground: oklch(1 0 0);
|
|
35
|
+
--sidebar-accent: oklch(0.3 0 0);
|
|
36
|
+
--sidebar-accent-foreground: oklch(0.95 0 0);
|
|
37
|
+
--sidebar-border: oklch(0.3 0 0);
|
|
39
38
|
--sidebar-ring: oklch(0.708 0 0);
|
|
39
|
+
--sidebar-muted-foreground: oklch(0.6 0 0);
|
|
40
|
+
--sidebar-brand: oklch(0.5 0.15 250);
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
@theme inline {
|
|
44
|
+
--font-sans:
|
|
45
|
+
"Geist", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
|
46
|
+
"Segoe UI Symbol", "Noto Color Emoji";
|
|
43
47
|
--font-heading: var(--font-heading);
|
|
44
48
|
--font-body: var(--font-body);
|
|
45
49
|
--color-background: var(--background);
|
|
@@ -69,5 +73,7 @@
|
|
|
69
73
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
70
74
|
--color-sidebar-border: var(--sidebar-border);
|
|
71
75
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
76
|
+
--color-sidebar-muted-foreground: var(--sidebar-muted-foreground);
|
|
77
|
+
--color-sidebar-brand: var(--sidebar-brand);
|
|
72
78
|
}
|
|
73
79
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Collapsible as CollapsiblePrimitive } from "radix-ui"
|
|
2
|
+
|
|
3
|
+
function Collapsible({
|
|
4
|
+
...props
|
|
5
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
|
|
6
|
+
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function CollapsibleTrigger({
|
|
10
|
+
...props
|
|
11
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
|
|
12
|
+
return (
|
|
13
|
+
<CollapsiblePrimitive.CollapsibleTrigger
|
|
14
|
+
data-slot="collapsible-trigger"
|
|
15
|
+
{...props}
|
|
16
|
+
/>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function CollapsibleContent({
|
|
21
|
+
...props
|
|
22
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
|
|
23
|
+
return (
|
|
24
|
+
<CollapsiblePrimitive.CollapsibleContent
|
|
25
|
+
data-slot="collapsible-content"
|
|
26
|
+
{...props}
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent }
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { HoverCard as HoverCardPrimitive } from "radix-ui"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/ui/base/utils"
|
|
5
|
+
|
|
6
|
+
function HoverCard({
|
|
7
|
+
...props
|
|
8
|
+
}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {
|
|
9
|
+
return <HoverCardPrimitive.Root data-slot="hover-card" {...props} />
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function HoverCardTrigger({
|
|
13
|
+
...props
|
|
14
|
+
}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {
|
|
15
|
+
return (
|
|
16
|
+
<HoverCardPrimitive.Trigger data-slot="hover-card-trigger" {...props} />
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function HoverCardContent({
|
|
21
|
+
className,
|
|
22
|
+
align = "center",
|
|
23
|
+
sideOffset = 4,
|
|
24
|
+
...props
|
|
25
|
+
}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {
|
|
26
|
+
return (
|
|
27
|
+
<HoverCardPrimitive.Portal data-slot="hover-card-portal">
|
|
28
|
+
<HoverCardPrimitive.Content
|
|
29
|
+
data-slot="hover-card-content"
|
|
30
|
+
align={align}
|
|
31
|
+
sideOffset={sideOffset}
|
|
32
|
+
className={cn(
|
|
33
|
+
"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
34
|
+
className
|
|
35
|
+
)}
|
|
36
|
+
{...props}
|
|
37
|
+
/>
|
|
38
|
+
</HoverCardPrimitive.Portal>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { HoverCard, HoverCardTrigger, HoverCardContent }
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
3
|
+
|
|
4
|
+
import { cn } from "@/ui/base/utils"
|
|
5
|
+
import { Button } from "@/ui/base/button"
|
|
6
|
+
import { Input } from "@/ui/base/input"
|
|
7
|
+
import { Textarea } from "@/ui/base/textarea"
|
|
8
|
+
|
|
9
|
+
function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
10
|
+
return (
|
|
11
|
+
<div
|
|
12
|
+
data-slot="input-group"
|
|
13
|
+
role="group"
|
|
14
|
+
className={cn(
|
|
15
|
+
"group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30",
|
|
16
|
+
"h-9 min-w-0 has-[>textarea]:h-auto",
|
|
17
|
+
|
|
18
|
+
// Variants based on alignment.
|
|
19
|
+
"has-[>[data-align=inline-start]]:[&>input]:pl-2",
|
|
20
|
+
"has-[>[data-align=inline-end]]:[&>input]:pr-2",
|
|
21
|
+
"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
|
|
22
|
+
"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
|
|
23
|
+
|
|
24
|
+
// Focus state.
|
|
25
|
+
"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
|
|
26
|
+
|
|
27
|
+
// Error state.
|
|
28
|
+
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
|
|
29
|
+
|
|
30
|
+
className
|
|
31
|
+
)}
|
|
32
|
+
{...props}
|
|
33
|
+
/>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const inputGroupAddonVariants = cva(
|
|
38
|
+
"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
|
|
39
|
+
{
|
|
40
|
+
variants: {
|
|
41
|
+
align: {
|
|
42
|
+
"inline-start":
|
|
43
|
+
"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
|
|
44
|
+
"inline-end":
|
|
45
|
+
"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
|
|
46
|
+
"block-start":
|
|
47
|
+
"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
|
|
48
|
+
"block-end":
|
|
49
|
+
"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
defaultVariants: {
|
|
53
|
+
align: "inline-start",
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
function InputGroupAddon({
|
|
59
|
+
className,
|
|
60
|
+
align = "inline-start",
|
|
61
|
+
...props
|
|
62
|
+
}: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>) {
|
|
63
|
+
return (
|
|
64
|
+
<div
|
|
65
|
+
role="group"
|
|
66
|
+
data-slot="input-group-addon"
|
|
67
|
+
data-align={align}
|
|
68
|
+
className={cn(inputGroupAddonVariants({ align }), className)}
|
|
69
|
+
onClick={(e) => {
|
|
70
|
+
if ((e.target as HTMLElement).closest("button")) {
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus()
|
|
74
|
+
}}
|
|
75
|
+
{...props}
|
|
76
|
+
/>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const inputGroupButtonVariants = cva(
|
|
81
|
+
"flex items-center gap-2 text-sm shadow-none",
|
|
82
|
+
{
|
|
83
|
+
variants: {
|
|
84
|
+
size: {
|
|
85
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
|
|
86
|
+
sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
|
|
87
|
+
"icon-xs":
|
|
88
|
+
"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
89
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
defaultVariants: {
|
|
93
|
+
size: "xs",
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
function InputGroupButton({
|
|
99
|
+
className,
|
|
100
|
+
type = "button",
|
|
101
|
+
variant = "ghost",
|
|
102
|
+
size = "xs",
|
|
103
|
+
...props
|
|
104
|
+
}: Omit<React.ComponentProps<typeof Button>, "size"> &
|
|
105
|
+
VariantProps<typeof inputGroupButtonVariants>) {
|
|
106
|
+
return (
|
|
107
|
+
<Button
|
|
108
|
+
type={type}
|
|
109
|
+
data-size={size}
|
|
110
|
+
variant={variant}
|
|
111
|
+
className={cn(inputGroupButtonVariants({ size }), className)}
|
|
112
|
+
{...props}
|
|
113
|
+
/>
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function InputGroupText({ className, ...props }: React.ComponentProps<"span">) {
|
|
118
|
+
return (
|
|
119
|
+
<span
|
|
120
|
+
className={cn(
|
|
121
|
+
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
122
|
+
className
|
|
123
|
+
)}
|
|
124
|
+
{...props}
|
|
125
|
+
/>
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function InputGroupInput({
|
|
130
|
+
className,
|
|
131
|
+
...props
|
|
132
|
+
}: React.ComponentProps<"input">) {
|
|
133
|
+
return (
|
|
134
|
+
<Input
|
|
135
|
+
data-slot="input-group-control"
|
|
136
|
+
className={cn(
|
|
137
|
+
"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
138
|
+
className
|
|
139
|
+
)}
|
|
140
|
+
{...props}
|
|
141
|
+
/>
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function InputGroupTextarea({
|
|
146
|
+
className,
|
|
147
|
+
...props
|
|
148
|
+
}: React.ComponentProps<"textarea">) {
|
|
149
|
+
return (
|
|
150
|
+
<Textarea
|
|
151
|
+
data-slot="input-group-control"
|
|
152
|
+
className={cn(
|
|
153
|
+
"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
154
|
+
className
|
|
155
|
+
)}
|
|
156
|
+
{...props}
|
|
157
|
+
/>
|
|
158
|
+
)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
InputGroup,
|
|
163
|
+
InputGroupAddon,
|
|
164
|
+
InputGroupButton,
|
|
165
|
+
InputGroupText,
|
|
166
|
+
InputGroupInput,
|
|
167
|
+
InputGroupTextarea,
|
|
168
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) SalesStar Limited 2026.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type * as React from "react";
|
|
6
|
+
|
|
7
|
+
import { cn } from "@/ui/base/utils";
|
|
8
|
+
import { useMobile } from "@/ui/hooks/use_mobile";
|
|
9
|
+
|
|
10
|
+
type PanelProps = {
|
|
11
|
+
open: boolean;
|
|
12
|
+
onOpenChange: (open: boolean) => void;
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
side?: "left" | "right";
|
|
15
|
+
width?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const Panel = ({
|
|
20
|
+
open,
|
|
21
|
+
onOpenChange,
|
|
22
|
+
children,
|
|
23
|
+
side = "right",
|
|
24
|
+
width = "20rem",
|
|
25
|
+
className,
|
|
26
|
+
}: PanelProps) => {
|
|
27
|
+
const isMobile = useMobile();
|
|
28
|
+
|
|
29
|
+
if (isMobile) {
|
|
30
|
+
return null;
|
|
31
|
+
// <Sheet open={open} onOpenChange={onOpenChange}>
|
|
32
|
+
// <SheetContent
|
|
33
|
+
// side={side}
|
|
34
|
+
// style={{ width } as React.CSSProperties}
|
|
35
|
+
// className={cn(
|
|
36
|
+
// "p-0 data-[state=open]:duration-700 data-[state=closed]:duration-500",
|
|
37
|
+
// className,
|
|
38
|
+
// )}
|
|
39
|
+
// >
|
|
40
|
+
// <div className="flex h-full flex-col overflow-auto">{children}</div>
|
|
41
|
+
// </SheetContent>
|
|
42
|
+
// </Sheet>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<aside
|
|
47
|
+
style={open ? { width } : { width: 0 }}
|
|
48
|
+
className={cn(
|
|
49
|
+
"bg-background text-foreground flex h-full flex-col shrink-0 border-border transition-[width] duration-500 ease-in-out",
|
|
50
|
+
side === "right" ? "border-l" : "border-r",
|
|
51
|
+
open ? "overflow-auto" : "overflow-hidden invisible",
|
|
52
|
+
)}
|
|
53
|
+
>
|
|
54
|
+
{open && (
|
|
55
|
+
<div className={cn("flex h-full w-full flex-col overflow-auto", className)}>{children}</div>
|
|
56
|
+
)}
|
|
57
|
+
</aside>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
type PanelHeaderProps = React.ComponentProps<"div">;
|
|
62
|
+
const PanelHeader = ({ className, ...props }: PanelHeaderProps) => {
|
|
63
|
+
return (
|
|
64
|
+
<div data-slot="panel-header" className={cn("flex flex-col gap-2 p-4", className)} {...props} />
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
type PanelContentProps = React.ComponentProps<"div">;
|
|
69
|
+
const PanelContent = ({ className, ...props }: PanelContentProps) => {
|
|
70
|
+
return (
|
|
71
|
+
<div
|
|
72
|
+
data-slot="panel-content"
|
|
73
|
+
className={cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto", className)}
|
|
74
|
+
{...props}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
type PanelFooterProps = React.ComponentProps<"div">;
|
|
80
|
+
const PanelFooter = ({ className, ...props }: PanelFooterProps) => {
|
|
81
|
+
return (
|
|
82
|
+
<div data-slot="panel-footer" className={cn("flex flex-col gap-2 p-4", className)} {...props} />
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
type PanelGroupProps = React.ComponentProps<"div">;
|
|
87
|
+
const PanelGroup = ({ className, ...props }: PanelGroupProps) => {
|
|
88
|
+
return (
|
|
89
|
+
<div data-slot="panel-group" className={cn("flex flex-col gap-2", className)} {...props} />
|
|
90
|
+
);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export { Panel, PanelContent, PanelFooter, PanelGroup, PanelHeader };
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { useCallback } from "react";
|
|
6
|
-
import {
|
|
7
|
-
import { useRouter } from "next/navigation";
|
|
6
|
+
import { useLocation, useNavigate, useSearchParams } from "react-router";
|
|
8
7
|
|
|
9
8
|
export const useQueryParams = () => {
|
|
10
|
-
const
|
|
11
|
-
const pathname =
|
|
12
|
-
const searchParams = useSearchParams();
|
|
9
|
+
const navigate = useNavigate();
|
|
10
|
+
const { pathname } = useLocation();
|
|
11
|
+
const [searchParams] = useSearchParams();
|
|
13
12
|
|
|
14
13
|
return useCallback(
|
|
15
14
|
(paths: Record<string, string | null>) => {
|
|
@@ -26,8 +25,8 @@ export const useQueryParams = () => {
|
|
|
26
25
|
|
|
27
26
|
const path = pathname + "?" + params.toString();
|
|
28
27
|
|
|
29
|
-
return
|
|
28
|
+
return navigate(path);
|
|
30
29
|
},
|
|
31
|
-
[searchParams],
|
|
30
|
+
[navigate, pathname, searchParams],
|
|
32
31
|
);
|
|
33
32
|
};
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"@/ui/*": ["./shared/ui/src/*"],
|
|
22
22
|
"@/utils/*": ["./shared/utils/src/*"],
|
|
23
23
|
"@/emails/*": ["./emails/*"],
|
|
24
|
-
"@/web/*": ["./apps/web/src/*"]
|
|
24
|
+
"@/web/*": ["./apps/web/src/*"],
|
|
25
|
+
"@/router/*": ["./apps/web/.react-router/types/*"],
|
|
25
26
|
}
|
|
26
27
|
},
|
|
27
28
|
"exclude": ["node_modules", "dist", "build", "public"],
|
|
File without changes
|