@nomad-e/bluma-cli 0.14.1 → 0.16.0
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/config/native_tools.json +15 -3
- package/dist/main.js +0 -1
- package/dist/scaffold/.eslintrc.json +3 -0
- package/dist/scaffold/app/globals.css +46 -0
- package/dist/scaffold/app/layout.tsx +19 -0
- package/dist/scaffold/app/page.tsx +124 -0
- package/dist/scaffold/components/ui/README.md +12 -0
- package/dist/scaffold/components/ui/accordion.jsx +42 -0
- package/dist/scaffold/components/ui/alert-dialog.jsx +80 -0
- package/dist/scaffold/components/ui/alert.jsx +33 -0
- package/dist/scaffold/components/ui/aspect-ratio.jsx +5 -0
- package/dist/scaffold/components/ui/avatar.jsx +28 -0
- package/dist/scaffold/components/ui/badge.jsx +24 -0
- package/dist/scaffold/components/ui/breadcrumb.jsx +72 -0
- package/dist/scaffold/components/ui/button.jsx +40 -0
- package/dist/scaffold/components/ui/calendar.jsx +56 -0
- package/dist/scaffold/components/ui/card.jsx +38 -0
- package/dist/scaffold/components/ui/carousel.jsx +168 -0
- package/dist/scaffold/components/ui/chart.jsx +76 -0
- package/dist/scaffold/components/ui/checkbox.jsx +22 -0
- package/dist/scaffold/components/ui/collapsible.jsx +7 -0
- package/dist/scaffold/components/ui/command.jsx +100 -0
- package/dist/scaffold/components/ui/context-menu.jsx +137 -0
- package/dist/scaffold/components/ui/dialog.jsx +72 -0
- package/dist/scaffold/components/ui/drawer.jsx +68 -0
- package/dist/scaffold/components/ui/dropdown-menu.jsx +143 -0
- package/dist/scaffold/components/ui/form.jsx +88 -0
- package/dist/scaffold/components/ui/hover-card.jsx +22 -0
- package/dist/scaffold/components/ui/input-otp.jsx +49 -0
- package/dist/scaffold/components/ui/input.jsx +19 -0
- package/dist/scaffold/components/ui/label.jsx +15 -0
- package/dist/scaffold/components/ui/menubar.jsx +161 -0
- package/dist/scaffold/components/ui/navigation-menu.jsx +95 -0
- package/dist/scaffold/components/ui/pagination.jsx +77 -0
- package/dist/scaffold/components/ui/popover.jsx +25 -0
- package/dist/scaffold/components/ui/progress.jsx +19 -0
- package/dist/scaffold/components/ui/radio-group.jsx +29 -0
- package/dist/scaffold/components/ui/resizable.jsx +27 -0
- package/dist/scaffold/components/ui/scroll-area.jsx +31 -0
- package/dist/scaffold/components/ui/select.jsx +117 -0
- package/dist/scaffold/components/ui/separator.jsx +22 -0
- package/dist/scaffold/components/ui/sheet.jsx +81 -0
- package/dist/scaffold/components/ui/skeleton.jsx +7 -0
- package/dist/scaffold/components/ui/slider.jsx +19 -0
- package/dist/scaffold/components/ui/sonner.jsx +22 -0
- package/dist/scaffold/components/ui/switch.jsx +23 -0
- package/dist/scaffold/components/ui/table.jsx +61 -0
- package/dist/scaffold/components/ui/tabs.jsx +43 -0
- package/dist/scaffold/components/ui/textarea.jsx +18 -0
- package/dist/scaffold/components/ui/toast.jsx +85 -0
- package/dist/scaffold/components/ui/toaster.jsx +33 -0
- package/dist/scaffold/components/ui/toggle-group.jsx +41 -0
- package/dist/scaffold/components/ui/toggle.jsx +30 -0
- package/dist/scaffold/components/ui/tooltip.jsx +22 -0
- package/dist/scaffold/hooks/use-toast.ts +101 -0
- package/dist/scaffold/lib/utils.ts +6 -0
- package/dist/scaffold/next.config.js +5 -0
- package/dist/scaffold/next.config.mjs +15 -0
- package/dist/scaffold/next.config.ts +19 -0
- package/dist/scaffold/package.json +70 -0
- package/dist/scaffold/postcss.config.js +6 -0
- package/dist/scaffold/tailwind.config.ts +57 -0
- package/dist/scaffold/tsconfig.json +20 -0
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Toast,
|
|
3
|
+
ToastClose,
|
|
4
|
+
ToastDescription,
|
|
5
|
+
ToastProvider,
|
|
6
|
+
ToastTitle,
|
|
7
|
+
ToastViewport,
|
|
8
|
+
} from '@/components/ui/toast';
|
|
9
|
+
import { useToast } from '@/hooks/use-toast';
|
|
10
|
+
|
|
11
|
+
function Toaster() {
|
|
12
|
+
const { toasts } = useToast();
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<ToastProvider>
|
|
16
|
+
{toasts.map(function ({ id, title, description, action, open, onOpenChange, ...props }) {
|
|
17
|
+
return (
|
|
18
|
+
<Toast key={id} open={open} onOpenChange={onOpenChange} {...props}>
|
|
19
|
+
<div className="grid gap-1">
|
|
20
|
+
{title && <ToastTitle>{title}</ToastTitle>}
|
|
21
|
+
{description && <ToastDescription>{description}</ToastDescription>}
|
|
22
|
+
</div>
|
|
23
|
+
{action}
|
|
24
|
+
<ToastClose />
|
|
25
|
+
</Toast>
|
|
26
|
+
);
|
|
27
|
+
})}
|
|
28
|
+
<ToastViewport />
|
|
29
|
+
</ToastProvider>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { Toaster };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
3
|
+
import { cn } from '@/lib/utils';
|
|
4
|
+
import { toggleVariants } from '@/components/ui/toggle';
|
|
5
|
+
|
|
6
|
+
const ToggleGroupContext = React.createContext({ size: 'default', variant: 'default' });
|
|
7
|
+
|
|
8
|
+
const ToggleGroup = React.forwardRef(({ className, variant, size, children, ...props }, ref) => (
|
|
9
|
+
<ToggleGroupPrimitive.Root
|
|
10
|
+
ref={ref}
|
|
11
|
+
className={cn('flex items-center justify-center gap-1', className)}
|
|
12
|
+
{...props}
|
|
13
|
+
>
|
|
14
|
+
<ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>
|
|
15
|
+
</ToggleGroupPrimitive.Root>
|
|
16
|
+
));
|
|
17
|
+
|
|
18
|
+
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
19
|
+
|
|
20
|
+
const ToggleGroupItem = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
21
|
+
const context = React.useContext(ToggleGroupContext);
|
|
22
|
+
return (
|
|
23
|
+
<ToggleGroupPrimitive.Item
|
|
24
|
+
ref={ref}
|
|
25
|
+
className={cn(
|
|
26
|
+
toggleVariants({
|
|
27
|
+
variant: context.variant,
|
|
28
|
+
size: context.size,
|
|
29
|
+
}),
|
|
30
|
+
className
|
|
31
|
+
)}
|
|
32
|
+
{...props}
|
|
33
|
+
>
|
|
34
|
+
{children}
|
|
35
|
+
</ToggleGroupPrimitive.Item>
|
|
36
|
+
);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
40
|
+
|
|
41
|
+
export { ToggleGroup, ToggleGroupItem };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { cn } from '@/lib/utils';
|
|
5
|
+
|
|
6
|
+
const toggleVariants = cva(
|
|
7
|
+
'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
default: 'bg-transparent',
|
|
12
|
+
outline: 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',
|
|
13
|
+
},
|
|
14
|
+
size: {
|
|
15
|
+
default: 'h-10 px-3',
|
|
16
|
+
sm: 'h-9 px-2.5',
|
|
17
|
+
lg: 'h-11 px-5',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: { variant: 'default', size: 'default' },
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const Toggle = React.forwardRef(({ className, variant, size, ...props }, ref) => (
|
|
25
|
+
<TogglePrimitive.Root ref={ref} className={cn(toggleVariants({ variant, size, className }))} {...props} />
|
|
26
|
+
));
|
|
27
|
+
|
|
28
|
+
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
29
|
+
|
|
30
|
+
export { Toggle, toggleVariants };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
3
|
+
import { cn } from '@/lib/utils';
|
|
4
|
+
|
|
5
|
+
const TooltipProvider = TooltipPrimitive.Provider;
|
|
6
|
+
const Tooltip = TooltipPrimitive.Root;
|
|
7
|
+
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
8
|
+
|
|
9
|
+
const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (
|
|
10
|
+
<TooltipPrimitive.Content
|
|
11
|
+
ref={ref}
|
|
12
|
+
sideOffset={sideOffset}
|
|
13
|
+
className={cn(
|
|
14
|
+
'z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md',
|
|
15
|
+
className
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
/>
|
|
19
|
+
));
|
|
20
|
+
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
21
|
+
|
|
22
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// @ts-nocheck — shadcn toast hook (JS port); app code is typed separately.
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
|
|
4
|
+
const TOAST_LIMIT = 20;
|
|
5
|
+
const TOAST_REMOVE_DELAY = 1000;
|
|
6
|
+
|
|
7
|
+
let count = 0;
|
|
8
|
+
function genId() {
|
|
9
|
+
count = (count + 1) % Number.MAX_SAFE_INTEGER;
|
|
10
|
+
return count.toString();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const toastTimeouts = new Map();
|
|
14
|
+
|
|
15
|
+
const addToRemoveQueue = (toastId) => {
|
|
16
|
+
if (toastTimeouts.has(toastId)) return;
|
|
17
|
+
const timeout = setTimeout(() => {
|
|
18
|
+
toastTimeouts.delete(toastId);
|
|
19
|
+
dispatch({ type: 'REMOVE_TOAST', toastId });
|
|
20
|
+
}, TOAST_REMOVE_DELAY);
|
|
21
|
+
toastTimeouts.set(toastId, timeout);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const listeners = [];
|
|
25
|
+
let memoryState = { toasts: [] };
|
|
26
|
+
|
|
27
|
+
function dispatch(action) {
|
|
28
|
+
memoryState = reducer(memoryState, action);
|
|
29
|
+
listeners.forEach((listener) => listener(memoryState));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function reducer(state, action) {
|
|
33
|
+
switch (action.type) {
|
|
34
|
+
case 'ADD_TOAST':
|
|
35
|
+
return {
|
|
36
|
+
...state,
|
|
37
|
+
toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
|
|
38
|
+
};
|
|
39
|
+
case 'UPDATE_TOAST':
|
|
40
|
+
return {
|
|
41
|
+
...state,
|
|
42
|
+
toasts: state.toasts.map((t) => (t.id === action.toast.id ? { ...t, ...action.toast } : t)),
|
|
43
|
+
};
|
|
44
|
+
case 'DISMISS_TOAST': {
|
|
45
|
+
const { toastId } = action;
|
|
46
|
+
if (toastId) addToRemoveQueue(toastId);
|
|
47
|
+
else state.toasts.forEach((t) => addToRemoveQueue(t.id));
|
|
48
|
+
return {
|
|
49
|
+
...state,
|
|
50
|
+
toasts: state.toasts.map((t) =>
|
|
51
|
+
t.id === toastId || toastId === undefined ? { ...t, open: false } : t
|
|
52
|
+
),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
case 'REMOVE_TOAST':
|
|
56
|
+
if (action.toastId === undefined) return { ...state, toasts: [] };
|
|
57
|
+
return { ...state, toasts: state.toasts.filter((t) => t.id !== action.toastId) };
|
|
58
|
+
default:
|
|
59
|
+
return state;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function toastFn(props) {
|
|
64
|
+
const id = genId();
|
|
65
|
+
const update = (p) => dispatch({ type: 'UPDATE_TOAST', toast: { ...p, id } });
|
|
66
|
+
const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });
|
|
67
|
+
|
|
68
|
+
dispatch({
|
|
69
|
+
type: 'ADD_TOAST',
|
|
70
|
+
toast: {
|
|
71
|
+
...props,
|
|
72
|
+
id,
|
|
73
|
+
open: true,
|
|
74
|
+
onOpenChange: (open) => {
|
|
75
|
+
if (!open) dismiss();
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
return { id, dismiss, update };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function useToast() {
|
|
84
|
+
const [state, setState] = React.useState(memoryState);
|
|
85
|
+
|
|
86
|
+
React.useEffect(() => {
|
|
87
|
+
listeners.push(setState);
|
|
88
|
+
return () => {
|
|
89
|
+
const i = listeners.indexOf(setState);
|
|
90
|
+
if (i > -1) listeners.splice(i, 1);
|
|
91
|
+
};
|
|
92
|
+
}, []);
|
|
93
|
+
|
|
94
|
+
return {
|
|
95
|
+
...state,
|
|
96
|
+
toast: toastFn,
|
|
97
|
+
dismiss: (toastId) => dispatch({ type: 'DISMISS_TOAST', toastId }),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export { useToast, toastFn as toast };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
|
|
4
|
+
const appRoot = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
|
|
6
|
+
/** @type {import('next').NextConfig} */
|
|
7
|
+
const nextConfig = {
|
|
8
|
+
output: 'standalone',
|
|
9
|
+
reactStrictMode: true,
|
|
10
|
+
experimental: {
|
|
11
|
+
outputFileTracingRoot: appRoot,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default nextConfig;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NextConfig } from 'next';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
const appRoot = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* FactorAI deployer injects basePath here before build.
|
|
9
|
+
* Keep output: 'standalone' — required for PM2 / Unix socket runtime.
|
|
10
|
+
*/
|
|
11
|
+
const nextConfig: NextConfig = {
|
|
12
|
+
output: 'standalone',
|
|
13
|
+
reactStrictMode: true,
|
|
14
|
+
experimental: {
|
|
15
|
+
outputFileTracingRoot: appRoot,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default nextConfig;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{NAME}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev",
|
|
7
|
+
"build": "next build",
|
|
8
|
+
"start": "next start",
|
|
9
|
+
"lint": "next lint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"next": "14.2.28",
|
|
13
|
+
"react": "^18.2.0",
|
|
14
|
+
"react-dom": "^18.2.0",
|
|
15
|
+
"@hookform/resolvers": "^5.2.2",
|
|
16
|
+
"@radix-ui/react-accordion": "^1.2.12",
|
|
17
|
+
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
18
|
+
"@radix-ui/react-aspect-ratio": "^1.1.8",
|
|
19
|
+
"@radix-ui/react-avatar": "^1.1.11",
|
|
20
|
+
"@radix-ui/react-checkbox": "^1.3.3",
|
|
21
|
+
"@radix-ui/react-collapsible": "^1.1.12",
|
|
22
|
+
"@radix-ui/react-context-menu": "^2.2.16",
|
|
23
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
24
|
+
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
25
|
+
"@radix-ui/react-hover-card": "^1.1.15",
|
|
26
|
+
"@radix-ui/react-label": "^2.1.8",
|
|
27
|
+
"@radix-ui/react-menubar": "^1.1.16",
|
|
28
|
+
"@radix-ui/react-navigation-menu": "^1.2.14",
|
|
29
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
30
|
+
"@radix-ui/react-progress": "^1.1.8",
|
|
31
|
+
"@radix-ui/react-radio-group": "^1.3.8",
|
|
32
|
+
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
33
|
+
"@radix-ui/react-select": "^2.2.6",
|
|
34
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
35
|
+
"@radix-ui/react-slider": "^1.3.6",
|
|
36
|
+
"@radix-ui/react-slot": "^1.2.3",
|
|
37
|
+
"@radix-ui/react-switch": "^1.2.6",
|
|
38
|
+
"@radix-ui/react-tabs": "^1.1.13",
|
|
39
|
+
"@radix-ui/react-toast": "^1.2.15",
|
|
40
|
+
"@radix-ui/react-toggle": "^1.1.10",
|
|
41
|
+
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
42
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
43
|
+
"class-variance-authority": "^0.7.1",
|
|
44
|
+
"clsx": "^2.1.1",
|
|
45
|
+
"cmdk": "^1.1.1",
|
|
46
|
+
"date-fns": "^4.1.0",
|
|
47
|
+
"embla-carousel-react": "^8.6.0",
|
|
48
|
+
"input-otp": "^1.4.2",
|
|
49
|
+
"lucide-react": "^0.460.0",
|
|
50
|
+
"react-day-picker": "^9.14.0",
|
|
51
|
+
"react-hook-form": "^7.72.0",
|
|
52
|
+
"react-resizable-panels": "^4.8.0",
|
|
53
|
+
"recharts": "^2.15.4",
|
|
54
|
+
"sonner": "^2.0.7",
|
|
55
|
+
"tailwind-merge": "^2.2.0",
|
|
56
|
+
"vaul": "^1.1.2",
|
|
57
|
+
"zod": "^3.23.0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/node": "^20.11.0",
|
|
61
|
+
"@types/react": "^18.2.0",
|
|
62
|
+
"@types/react-dom": "^18.2.0",
|
|
63
|
+
"typescript": "^5.3.0",
|
|
64
|
+
"tailwindcss": "^3.4.0",
|
|
65
|
+
"postcss": "^8.4.0",
|
|
66
|
+
"autoprefixer": "^10.4.0",
|
|
67
|
+
"eslint": "^8.56.0",
|
|
68
|
+
"eslint-config-next": "14.2.28"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Config } from 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
const config: Config = {
|
|
4
|
+
darkMode: 'class',
|
|
5
|
+
content: [
|
|
6
|
+
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
|
7
|
+
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
|
8
|
+
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
|
9
|
+
],
|
|
10
|
+
theme: {
|
|
11
|
+
extend: {
|
|
12
|
+
colors: {
|
|
13
|
+
background: 'hsl(var(--background))',
|
|
14
|
+
foreground: 'hsl(var(--foreground))',
|
|
15
|
+
card: {
|
|
16
|
+
DEFAULT: 'hsl(var(--card))',
|
|
17
|
+
foreground: 'hsl(var(--card-foreground))',
|
|
18
|
+
},
|
|
19
|
+
popover: {
|
|
20
|
+
DEFAULT: 'hsl(var(--popover))',
|
|
21
|
+
foreground: 'hsl(var(--popover-foreground))',
|
|
22
|
+
},
|
|
23
|
+
primary: {
|
|
24
|
+
DEFAULT: 'hsl(var(--primary))',
|
|
25
|
+
foreground: 'hsl(var(--primary-foreground))',
|
|
26
|
+
},
|
|
27
|
+
secondary: {
|
|
28
|
+
DEFAULT: 'hsl(var(--secondary))',
|
|
29
|
+
foreground: 'hsl(var(--secondary-foreground))',
|
|
30
|
+
},
|
|
31
|
+
muted: {
|
|
32
|
+
DEFAULT: 'hsl(var(--muted))',
|
|
33
|
+
foreground: 'hsl(var(--muted-foreground))',
|
|
34
|
+
},
|
|
35
|
+
accent: {
|
|
36
|
+
DEFAULT: 'hsl(var(--accent))',
|
|
37
|
+
foreground: 'hsl(var(--accent-foreground))',
|
|
38
|
+
},
|
|
39
|
+
destructive: {
|
|
40
|
+
DEFAULT: 'hsl(var(--destructive))',
|
|
41
|
+
foreground: 'hsl(var(--destructive-foreground))',
|
|
42
|
+
},
|
|
43
|
+
border: 'hsl(var(--border))',
|
|
44
|
+
input: 'hsl(var(--input))',
|
|
45
|
+
ring: 'hsl(var(--ring))',
|
|
46
|
+
},
|
|
47
|
+
borderRadius: {
|
|
48
|
+
lg: 'var(--radius)',
|
|
49
|
+
md: 'calc(var(--radius) - 2px)',
|
|
50
|
+
sm: 'calc(var(--radius) - 4px)',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
plugins: [],
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export default config;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"lib": ["dom", "dom.iterable", "esnext"],
|
|
4
|
+
"allowJs": true,
|
|
5
|
+
"skipLibCheck": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noEmit": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"module": "esnext",
|
|
10
|
+
"moduleResolution": "bundler",
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"isolatedModules": true,
|
|
13
|
+
"jsx": "preserve",
|
|
14
|
+
"incremental": true,
|
|
15
|
+
"plugins": [{ "name": "next" }],
|
|
16
|
+
"paths": { "@/*": ["./*"] }
|
|
17
|
+
},
|
|
18
|
+
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
|
|
19
|
+
"exclude": ["node_modules", ".next"]
|
|
20
|
+
}
|