create-lego-one 2.0.9 → 2.0.12
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/dist/index.cjs +145 -0
- package/dist/index.cjs.map +1 -1
- package/package.json +5 -3
- package/template/host/e2e/auth.spec.ts +38 -0
- package/template/host/e2e/layout.spec.ts +38 -0
- package/template/host/modern.config.ts +19 -0
- package/template/host/package.json +71 -0
- package/template/host/playwright.config.ts +34 -0
- package/template/host/postcss.config.mjs +6 -0
- package/template/host/src/App.tsx +6 -0
- package/template/host/src/bootstrap.tsx +74 -0
- package/template/host/src/global.css +59 -0
- package/template/host/src/index.ts +2 -0
- package/template/host/src/kernel/__tests__/lib-utils.test.ts +32 -0
- package/template/host/src/kernel/__tests__/rbac-hooks.test.tsx +114 -0
- package/template/host/src/kernel/__tests__/rbac-utils.test.ts +108 -0
- package/template/host/src/kernel/auth/ProtectedRoute.tsx +41 -0
- package/template/host/src/kernel/auth/components/LoginForm.tsx +97 -0
- package/template/host/src/kernel/auth/components/LogoutButton.tsx +79 -0
- package/template/host/src/kernel/auth/hooks.ts +174 -0
- package/template/host/src/kernel/auth/index.ts +5 -0
- package/template/host/src/kernel/auth/schemas.ts +27 -0
- package/template/host/src/kernel/auth/service.ts +197 -0
- package/template/host/src/kernel/auth/types.ts +36 -0
- package/template/host/src/kernel/channels/ChannelBus.ts +181 -0
- package/template/host/src/kernel/channels/ChannelProvider.tsx +57 -0
- package/template/host/src/kernel/channels/events.ts +27 -0
- package/template/host/src/kernel/channels/hooks.ts +168 -0
- package/template/host/src/kernel/channels/index.ts +6 -0
- package/template/host/src/kernel/channels/integrations/ToastIntegration.tsx +60 -0
- package/template/host/src/kernel/channels/plugin-hooks.ts +72 -0
- package/template/host/src/kernel/channels/types.ts +112 -0
- package/template/host/src/kernel/components/__tests__/Badge.test.tsx +35 -0
- package/template/host/src/kernel/components/__tests__/Button.test.tsx +63 -0
- package/template/host/src/kernel/components/__tests__/Input.test.tsx +64 -0
- package/template/host/src/kernel/components/index.ts +32 -0
- package/template/host/src/kernel/components/ui/alert.tsx +58 -0
- package/template/host/src/kernel/components/ui/avatar.tsx +47 -0
- package/template/host/src/kernel/components/ui/badge.tsx +35 -0
- package/template/host/src/kernel/components/ui/button.tsx +50 -0
- package/template/host/src/kernel/components/ui/card.tsx +78 -0
- package/template/host/src/kernel/components/ui/dialog.tsx +116 -0
- package/template/host/src/kernel/components/ui/dropdown-menu.tsx +192 -0
- package/template/host/src/kernel/components/ui/index.ts +7 -0
- package/template/host/src/kernel/components/ui/input.tsx +24 -0
- package/template/host/src/kernel/components/ui/label.tsx +21 -0
- package/template/host/src/kernel/components/ui/popover.tsx +28 -0
- package/template/host/src/kernel/components/ui/progress.tsx +25 -0
- package/template/host/src/kernel/components/ui/scroll-area.tsx +45 -0
- package/template/host/src/kernel/components/ui/select.tsx +155 -0
- package/template/host/src/kernel/components/ui/separator.tsx +28 -0
- package/template/host/src/kernel/components/ui/skeleton.tsx +15 -0
- package/template/host/src/kernel/components/ui/switch.tsx +26 -0
- package/template/host/src/kernel/components/ui/table.tsx +116 -0
- package/template/host/src/kernel/components/ui/tabs.tsx +52 -0
- package/template/host/src/kernel/components/ui/toast.tsx +126 -0
- package/template/host/src/kernel/components/ui/toaster.tsx +34 -0
- package/template/host/src/kernel/components/ui/tooltip.tsx +27 -0
- package/template/host/src/kernel/components/ui/use-toast.ts +183 -0
- package/template/host/src/kernel/index.ts +48 -0
- package/template/host/src/kernel/lib/cn.ts +1 -0
- package/template/host/src/kernel/lib/utils.ts +36 -0
- package/template/host/src/kernel/plugins/Slot.tsx +41 -0
- package/template/host/src/kernel/plugins/SlotProvider.tsx +88 -0
- package/template/host/src/kernel/plugins/index.ts +23 -0
- package/template/host/src/kernel/plugins/loader.ts +122 -0
- package/template/host/src/kernel/plugins/schemas.ts +54 -0
- package/template/host/src/kernel/plugins/store.ts +185 -0
- package/template/host/src/kernel/plugins/types.ts +103 -0
- package/template/host/src/kernel/providers/PocketBaseProvider.tsx +70 -0
- package/template/host/src/kernel/providers/QueryProvider.tsx +28 -0
- package/template/host/src/kernel/providers/ThemeProvider.tsx +25 -0
- package/template/host/src/kernel/providers/index.ts +3 -0
- package/template/host/src/kernel/rbac/components/OrganizationSelector.tsx +69 -0
- package/template/host/src/kernel/rbac/components/PermissionGate.tsx +43 -0
- package/template/host/src/kernel/rbac/hooks.ts +379 -0
- package/template/host/src/kernel/rbac/index.ts +6 -0
- package/template/host/src/kernel/rbac/service.ts +504 -0
- package/template/host/src/kernel/rbac/types.ts +164 -0
- package/template/host/src/kernel/rbac/utils.ts +34 -0
- package/template/host/src/kernel/shared-state/bridge.ts +31 -0
- package/template/host/src/kernel/shared-state/index.ts +3 -0
- package/template/host/src/kernel/shared-state/store.ts +62 -0
- package/template/host/src/kernel/shared-state/types.ts +60 -0
- package/template/host/src/kernel/use-migrations.ts +72 -0
- package/template/host/src/layout/MobileMenu.tsx +61 -0
- package/template/host/src/layout/Shell.tsx +42 -0
- package/template/host/src/layout/Sidebar.tsx +178 -0
- package/template/host/src/layout/Topbar.tsx +50 -0
- package/template/host/src/layout/index.ts +4 -0
- package/template/host/src/lib/pocketbase/client.ts +38 -0
- package/template/host/src/lib/pocketbase/collections/audit_logs.ts +87 -0
- package/template/host/src/lib/pocketbase/collections/index.ts +19 -0
- package/template/host/src/lib/pocketbase/collections/organizations.ts +63 -0
- package/template/host/src/lib/pocketbase/collections/permissions.ts +57 -0
- package/template/host/src/lib/pocketbase/collections/roles.ts +55 -0
- package/template/host/src/lib/pocketbase/collections/todos.ts +74 -0
- package/template/host/src/lib/pocketbase/collections/user_roles.ts +57 -0
- package/template/host/src/lib/pocketbase/collections/users.ts +43 -0
- package/template/host/src/lib/pocketbase/index.ts +5 -0
- package/template/host/src/lib/pocketbase/migrations.ts +44 -0
- package/template/host/src/lib/pocketbase/seed/permissions.ts +8 -0
- package/template/host/src/lib/pocketbase/seed/roles.ts +22 -0
- package/template/host/src/lib/pocketbase/seed.ts +113 -0
- package/template/host/src/lib/pocketbase/types.ts +102 -0
- package/template/host/src/modern.runtime.ts +26 -0
- package/template/host/src/plugins.d.ts +9 -0
- package/template/host/src/providers/PocketBaseProvider.tsx +30 -0
- package/template/host/src/routes/_.tsx +6 -0
- package/template/host/src/routes/dashboard._.tsx +41 -0
- package/template/host/src/routes/index.tsx +93 -0
- package/template/host/src/routes/login.tsx +36 -0
- package/template/host/src/saas.config.ts +52 -0
- package/template/host/src/test/setup.ts +65 -0
- package/template/host/src/test/utils.tsx +69 -0
- package/template/host/src/test/vitest-globals.d.ts +19 -0
- package/template/host/src/vite-env.d.ts +16 -0
- package/template/host/tailwind.config.ts +77 -0
- package/template/host/tsconfig.json +19 -0
- package/template/host/vitest.config.ts +30 -0
- package/template/package.json +44 -0
- package/template/packages/plugins/@lego/plugin-dashboard/modern.config.ts +19 -0
- package/template/packages/plugins/@lego/plugin-dashboard/package.json +35 -0
- package/template/packages/plugins/@lego/plugin-dashboard/postcss.config.mjs +6 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/App.tsx +27 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/components/ActivityFeed.tsx +63 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/components/QuickActionSlot.tsx +11 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/components/QuickActions.tsx +68 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/components/SidebarWidget.tsx +35 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/components/StatCard.tsx +47 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/global.css +24 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useChannelIntegration.ts +43 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useDashboardStats.ts +65 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/usePocketBase.ts +47 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useRecentActivity.ts +55 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/lib/utils.ts +6 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/pages/DashboardPage.tsx +105 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/plugin.config.ts +121 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/plugin.ts +18 -0
- package/template/packages/plugins/@lego/plugin-dashboard/src/vite-env.d.ts +32 -0
- package/template/packages/plugins/@lego/plugin-dashboard/tailwind.config.ts +35 -0
- package/template/packages/plugins/@lego/plugin-dashboard/tsconfig.json +18 -0
- package/template/packages/plugins/@lego/plugin-todo/modern.config.ts +18 -0
- package/template/packages/plugins/@lego/plugin-todo/package.json +41 -0
- package/template/packages/plugins/@lego/plugin-todo/postcss.config.mjs +6 -0
- package/template/packages/plugins/@lego/plugin-todo/src/App.tsx +12 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/SidebarWidget.tsx +16 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/TodoDialog.tsx +55 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/TodoFilters.tsx +79 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/TodoForm.tsx +94 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/TodoItem.tsx +121 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/TodoList.tsx +41 -0
- package/template/packages/plugins/@lego/plugin-todo/src/components/index.ts +6 -0
- package/template/packages/plugins/@lego/plugin-todo/src/global.css +59 -0
- package/template/packages/plugins/@lego/plugin-todo/src/hooks/useCreateTodo.ts +62 -0
- package/template/packages/plugins/@lego/plugin-todo/src/hooks/useDeleteTodo.ts +46 -0
- package/template/packages/plugins/@lego/plugin-todo/src/hooks/usePocketBase.ts +38 -0
- package/template/packages/plugins/@lego/plugin-todo/src/hooks/useTodos.ts +64 -0
- package/template/packages/plugins/@lego/plugin-todo/src/hooks/useUpdateTodo.ts +35 -0
- package/template/packages/plugins/@lego/plugin-todo/src/index.tsx +5 -0
- package/template/packages/plugins/@lego/plugin-todo/src/lib/utils.ts +20 -0
- package/template/packages/plugins/@lego/plugin-todo/src/pages/TodoPage.tsx +89 -0
- package/template/packages/plugins/@lego/plugin-todo/src/plugin.config.ts +104 -0
- package/template/packages/plugins/@lego/plugin-todo/src/plugin.ts +13 -0
- package/template/packages/plugins/@lego/plugin-todo/src/schemas.ts +37 -0
- package/template/packages/plugins/@lego/plugin-todo/src/types.ts +42 -0
- package/template/packages/plugins/@lego/plugin-todo/src/vite-env.d.ts +31 -0
- package/template/packages/plugins/@lego/plugin-todo/tailwind.config.ts +51 -0
- package/template/packages/plugins/@lego/plugin-todo/tsconfig.json +18 -0
- package/template/pnpm-workspace.yaml +4 -0
- package/template/tsconfig.json +8 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { ReactNode, ComponentType } from 'react';
|
|
2
|
+
import { SidebarWidget } from './components/SidebarWidget';
|
|
3
|
+
|
|
4
|
+
// Local type definitions for plugin config
|
|
5
|
+
interface PluginManifest {
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
displayName: string;
|
|
9
|
+
description: string;
|
|
10
|
+
author: string;
|
|
11
|
+
permissions: string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface SlotInjection {
|
|
15
|
+
slot: string;
|
|
16
|
+
component: ReactNode | ComponentType<any>;
|
|
17
|
+
order?: number;
|
|
18
|
+
props?: Record<string, unknown>;
|
|
19
|
+
condition?: () => boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface RouteConfig {
|
|
23
|
+
path: string;
|
|
24
|
+
component: () => Promise<{ default: ComponentType<any> }>;
|
|
25
|
+
protected?: boolean;
|
|
26
|
+
permissions?: string[];
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface PluginSetting {
|
|
30
|
+
key: string;
|
|
31
|
+
type: 'boolean' | 'string' | 'number' | 'select';
|
|
32
|
+
label: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
defaultValue?: unknown;
|
|
35
|
+
options?: { label: string; value: string }[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface PluginConfig {
|
|
39
|
+
manifest: PluginManifest;
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
slots: SlotInjection[];
|
|
42
|
+
routes?: RouteConfig[];
|
|
43
|
+
settings?: PluginSetting[];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Todo plugin configuration
|
|
48
|
+
*/
|
|
49
|
+
export const pluginConfig: PluginConfig = {
|
|
50
|
+
manifest: {
|
|
51
|
+
name: '@lego/plugin-todo',
|
|
52
|
+
version: '1.0.0',
|
|
53
|
+
displayName: 'Todo',
|
|
54
|
+
description: 'Task management with full CRUD functionality',
|
|
55
|
+
author: 'Lego-One',
|
|
56
|
+
permissions: ['todos.manage'],
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
enabled: true,
|
|
60
|
+
|
|
61
|
+
slots: [
|
|
62
|
+
{
|
|
63
|
+
slot: 'sidebar:nav',
|
|
64
|
+
component: SidebarWidget,
|
|
65
|
+
order: 60, // After Dashboard
|
|
66
|
+
props: {
|
|
67
|
+
to: '/todos',
|
|
68
|
+
icon: 'CheckSquare',
|
|
69
|
+
label: 'Todos',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
|
|
74
|
+
routes: [
|
|
75
|
+
{
|
|
76
|
+
path: '/todos',
|
|
77
|
+
component: () => import('./pages/TodoPage').then(m => ({ default: m.TodoPage })),
|
|
78
|
+
protected: true,
|
|
79
|
+
permissions: ['todos.read'],
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
|
|
83
|
+
settings: [
|
|
84
|
+
{
|
|
85
|
+
key: 'defaultPriority',
|
|
86
|
+
type: 'select',
|
|
87
|
+
label: 'Default Priority',
|
|
88
|
+
description: 'Default priority for new todos',
|
|
89
|
+
defaultValue: 'medium',
|
|
90
|
+
options: [
|
|
91
|
+
{ label: 'Low', value: 'low' },
|
|
92
|
+
{ label: 'Medium', value: 'medium' },
|
|
93
|
+
{ label: 'High', value: 'high' },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: 'showCompleted',
|
|
98
|
+
type: 'boolean',
|
|
99
|
+
label: 'Show Completed',
|
|
100
|
+
description: 'Show completed todos in the list',
|
|
101
|
+
defaultValue: true,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Todo form validation schema
|
|
5
|
+
*/
|
|
6
|
+
export const todoFormSchema = z.object({
|
|
7
|
+
title: z.string()
|
|
8
|
+
.min(1, 'Title is required')
|
|
9
|
+
.max(200, 'Title must be less than 200 characters'),
|
|
10
|
+
description: z.string()
|
|
11
|
+
.max(1000, 'Description must be less than 1000 characters')
|
|
12
|
+
.optional(),
|
|
13
|
+
priority: z.enum(['low', 'medium', 'high'], {
|
|
14
|
+
required_error: 'Priority is required',
|
|
15
|
+
}),
|
|
16
|
+
dueDate: z.string().optional(),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type TodoFormInput = z.infer<typeof todoFormSchema>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Todo update schema (all fields optional)
|
|
23
|
+
*/
|
|
24
|
+
export const todoUpdateSchema = z.object({
|
|
25
|
+
title: z.string()
|
|
26
|
+
.min(1, 'Title is required')
|
|
27
|
+
.max(200, 'Title must be less than 200 characters')
|
|
28
|
+
.optional(),
|
|
29
|
+
description: z.string()
|
|
30
|
+
.max(1000, 'Description must be less than 1000 characters')
|
|
31
|
+
.optional(),
|
|
32
|
+
completed: z.boolean().optional(),
|
|
33
|
+
priority: z.enum(['low', 'medium', 'high']).optional(),
|
|
34
|
+
dueDate: z.string().optional(),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export type TodoUpdateInput = z.infer<typeof todoUpdateSchema>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo item from PocketBase
|
|
3
|
+
*/
|
|
4
|
+
export interface Todo {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
completed: boolean;
|
|
9
|
+
priority: 'low' | 'medium' | 'high';
|
|
10
|
+
dueDate?: string;
|
|
11
|
+
organizationId: string;
|
|
12
|
+
ownerId: string;
|
|
13
|
+
created: string;
|
|
14
|
+
updated: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Todo form data
|
|
19
|
+
*/
|
|
20
|
+
export interface TodoFormData {
|
|
21
|
+
title: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
priority: 'low' | 'medium' | 'high';
|
|
24
|
+
dueDate?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Todo filter options
|
|
29
|
+
*/
|
|
30
|
+
export interface TodoFilters {
|
|
31
|
+
status?: 'all' | 'active' | 'completed';
|
|
32
|
+
priority?: 'all' | 'low' | 'medium' | 'high';
|
|
33
|
+
search?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Todo list item with expand
|
|
38
|
+
*/
|
|
39
|
+
export interface TodoWithOwner extends Todo {
|
|
40
|
+
ownerName?: string;
|
|
41
|
+
ownerEmail?: string;
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
2
|
+
|
|
3
|
+
declare global {
|
|
4
|
+
interface ImportMetaEnv {
|
|
5
|
+
readonly VITE_POCKETBASE_URL: string;
|
|
6
|
+
}
|
|
7
|
+
interface ImportMeta {
|
|
8
|
+
readonly env: ImportMetaEnv;
|
|
9
|
+
}
|
|
10
|
+
interface Window {
|
|
11
|
+
__LEGO_KERNEL_STATE__?: {
|
|
12
|
+
user?: {
|
|
13
|
+
id: string;
|
|
14
|
+
email: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
} | null;
|
|
17
|
+
organization?: {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
slug: string;
|
|
21
|
+
} | null;
|
|
22
|
+
isAuthenticated: boolean;
|
|
23
|
+
};
|
|
24
|
+
__LEGO_CHANNEL_BUS__?: {
|
|
25
|
+
publish: (channel: string, message: any) => void;
|
|
26
|
+
subscribe: (channel: string, callback: (data: any) => void) => () => void;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Config } from 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
darkMode: ['class'],
|
|
5
|
+
content: ['./src/**/*.{ts,tsx}'],
|
|
6
|
+
theme: {
|
|
7
|
+
extend: {
|
|
8
|
+
colors: {
|
|
9
|
+
border: 'hsl(var(--border))',
|
|
10
|
+
input: 'hsl(var(--input))',
|
|
11
|
+
ring: 'hsl(var(--ring))',
|
|
12
|
+
background: 'hsl(var(--background))',
|
|
13
|
+
foreground: 'hsl(var(--foreground))',
|
|
14
|
+
primary: {
|
|
15
|
+
DEFAULT: 'hsl(var(--primary))',
|
|
16
|
+
foreground: 'hsl(var(--primary-foreground))',
|
|
17
|
+
},
|
|
18
|
+
secondary: {
|
|
19
|
+
DEFAULT: 'hsl(var(--secondary))',
|
|
20
|
+
foreground: 'hsl(var(--secondary-foreground))',
|
|
21
|
+
},
|
|
22
|
+
destructive: {
|
|
23
|
+
DEFAULT: 'hsl(var(--destructive))',
|
|
24
|
+
foreground: 'hsl(var(--destructive-foreground))',
|
|
25
|
+
},
|
|
26
|
+
muted: {
|
|
27
|
+
DEFAULT: 'hsl(var(--muted))',
|
|
28
|
+
foreground: 'hsl(var(--muted-foreground))',
|
|
29
|
+
},
|
|
30
|
+
accent: {
|
|
31
|
+
DEFAULT: 'hsl(var(--accent))',
|
|
32
|
+
foreground: 'hsl(var(--accent-foreground))',
|
|
33
|
+
},
|
|
34
|
+
card: {
|
|
35
|
+
DEFAULT: 'hsl(var(--card))',
|
|
36
|
+
foreground: 'hsl(var(--card-foreground))',
|
|
37
|
+
},
|
|
38
|
+
popover: {
|
|
39
|
+
DEFAULT: 'hsl(var(--popover))',
|
|
40
|
+
foreground: 'hsl(var(--popover-foreground))',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
borderRadius: {
|
|
44
|
+
lg: 'var(--radius)',
|
|
45
|
+
md: 'calc(var(--radius) - 2px)',
|
|
46
|
+
sm: 'calc(var(--radius) - 4px)',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
plugins: [],
|
|
51
|
+
} satisfies Config;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"jsx": "react-jsx",
|
|
4
|
+
"strict": true,
|
|
5
|
+
"esModuleInterop": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"module": "esnext",
|
|
8
|
+
"moduleResolution": "bundler",
|
|
9
|
+
"resolveJsonModule": true,
|
|
10
|
+
"isolatedModules": true,
|
|
11
|
+
"types": ["vite/client"],
|
|
12
|
+
"paths": {
|
|
13
|
+
"@/*": ["./src/*"]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"include": ["src"],
|
|
17
|
+
"exclude": ["node_modules", "dist"]
|
|
18
|
+
}
|