diff --git a/eslint.config.js b/eslint.config.js index 0014edd..4816f0a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -22,7 +22,8 @@ export default defineConfig( rules: { // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects. // see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors - 'no-undef': 'off' + 'no-undef': 'off', + 'svelte/no-navigation-without-resolve': 'off' } }, { diff --git a/package.json b/package.json index cef5236..2773e9e 100644 --- a/package.json +++ b/package.json @@ -34,5 +34,9 @@ "typescript": "^6.0.2", "typescript-eslint": "^8.58.1", "vite": "^8.0.7" + }, + "dependencies": { + "clsx": "^2.1.1", + "tailwind-merge": "^3.6.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6e31fc5..ccd7d4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,13 @@ settings: importers: .: + dependencies: + clsx: + specifier: ^2.1.1 + version: 2.1.1 + tailwind-merge: + specifier: ^3.6.0 + version: 3.6.0 devDependencies: '@eslint/compat': specifier: ^2.0.4 @@ -1254,6 +1261,9 @@ packages: resolution: {integrity: sha512-fTjjT8cHLDwigcu2j3pv7Jq04LklXevPB8uBgyHNiTXv+RMNvVnrjS4UEYrLMkhuq1vpCodHjiW+z/95SDs/fg==} engines: {node: '>=18'} + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + tailwindcss@4.3.0: resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} @@ -2409,6 +2419,8 @@ snapshots: transitivePeerDependencies: - '@typescript-eslint/types' + tailwind-merge@3.6.0: {} + tailwindcss@4.3.0: {} tapable@2.3.3: {} diff --git a/src/lib/components/DashboardMockup.svelte b/src/lib/components/DashboardMockup.svelte new file mode 100644 index 0000000..125095a --- /dev/null +++ b/src/lib/components/DashboardMockup.svelte @@ -0,0 +1,138 @@ + + +
+
+ +
+
+
+
+
+
+ FLAMY TRADE +
+ + +
+ {#each signals as signal, i (signal.sym)} +
+ +
+ + {signal.sym} + +
+ + {dirLabel[signal.dir]} + + {signal.conf} +
+
+ + +
+ +
+ + +
+ {#each getLevels(signal) as level (level.label)} +
+ {level.label} + {level.val} +
+ {/each} +
+
+ {/each} +
+
+
diff --git a/src/lib/components/DashboardStatus.svelte b/src/lib/components/DashboardStatus.svelte new file mode 100644 index 0000000..b402a35 --- /dev/null +++ b/src/lib/components/DashboardStatus.svelte @@ -0,0 +1,134 @@ + + + diff --git a/src/lib/components/layout/Footer.svelte b/src/lib/components/layout/Footer.svelte new file mode 100644 index 0000000..f1c32ad --- /dev/null +++ b/src/lib/components/layout/Footer.svelte @@ -0,0 +1,77 @@ + + + diff --git a/src/lib/components/layout/Header.svelte b/src/lib/components/layout/Header.svelte new file mode 100644 index 0000000..d2a8960 --- /dev/null +++ b/src/lib/components/layout/Header.svelte @@ -0,0 +1,32 @@ + + +
+
+ Flamy Trade + + +
+
diff --git a/src/lib/components/ui/Button.svelte b/src/lib/components/ui/Button.svelte new file mode 100644 index 0000000..3b9f982 --- /dev/null +++ b/src/lib/components/ui/Button.svelte @@ -0,0 +1,31 @@ + + + + {@render children()} + + {#if variant === 'primary'} + Перейти + {/if} + diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..7637fb9 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from 'clsx'; +import { twMerge } from 'tailwind-merge'; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..e72a629 --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,12 @@ + + +
+

+ Страница не найдена + Возможно стр +

+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 0d8eb03..11a3483 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,9 +1,22 @@ - + + + + + + + + +
{@render children()} +