From 621d267ea4ebf45aed5c79eb8e61ff771d5a1dc4 Mon Sep 17 00:00:00 2001 From: lionarius Date: Fri, 17 May 2024 23:46:21 +0300 Subject: [PATCH] initial commit --- .eslintignore | 13 +++++++ .eslintrc.cjs | 31 +++++++++++++++ .gitignore | 10 +++++ .npmrc | 1 + .prettierignore | 4 ++ .prettierrc | 8 ++++ README.md | 38 +++++++++++++++++++ bun.lockb | Bin 0 -> 126147 bytes components.json | 14 +++++++ package.json | 42 ++++++++++++++++++++ postcss.config.js | 6 +++ src/app.css | 78 ++++++++++++++++++++++++++++++++++++++ src/app.d.ts | 13 +++++++ src/app.html | 12 ++++++ src/lib/index.ts | 1 + src/lib/utils.ts | 62 ++++++++++++++++++++++++++++++ src/routes/+layout.svelte | 7 ++++ src/routes/+page.svelte | 2 + static/favicon.png | Bin 0 -> 1571 bytes svelte.config.js | 18 +++++++++ tailwind.config.ts | 64 +++++++++++++++++++++++++++++++ tsconfig.json | 19 ++++++++++ vite.config.ts | 6 +++ 23 files changed, 449 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 bun.lockb create mode 100644 components.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 src/app.css create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/lib/index.ts create mode 100644 src/lib/utils.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 static/favicon.png create mode 100644 svelte.config.js create mode 100644 tailwind.config.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..3897265 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..0b75758 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,31 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6635cf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..cc41cea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..8bc6e86 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..58960aaaec8dc77a70d8319e06066c755c54018d GIT binary patch literal 126147 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 OMVid`yD$F_|NJjm7oH#h literal 0 HcmV?d00001 diff --git a/components.json b/components.json new file mode 100644 index 0000000..dd16676 --- /dev/null +++ b/components.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "style": "default", + "tailwind": { + "config": "tailwind.config.ts", + "css": "src\\app.css", + "baseColor": "slate" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils" + }, + "typescript": true +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..2f95a54 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "nir-messenger", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@types/eslint": "^8.56.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "tailwindcss": "^3.4.1", + "postcss": "^8.4.33", + "autoprefixer": "^10.4.16", + "prettier-plugin-tailwindcss": "^0.5.1" + }, + "type": "module", + "dependencies": { + "clsx": "^2.1.1", + "tailwind-merge": "^2.3.0", + "tailwind-variants": "^0.2.1" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..0f77216 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..6ff7062 --- /dev/null +++ b/src/app.css @@ -0,0 +1,78 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: hsl(212.7,26.8%,83.9); + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..743f07b --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..8871245 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,62 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; +import { cubicOut } from "svelte/easing"; +import type { TransitionConfig } from "svelte/transition"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +type FlyAndScaleParams = { + y?: number; + x?: number; + start?: number; + duration?: number; +}; + +export const flyAndScale = ( + node: Element, + params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } +): TransitionConfig => { + const style = getComputedStyle(node); + const transform = style.transform === "none" ? "" : style.transform; + + const scaleConversion = ( + valueA: number, + scaleA: [number, number], + scaleB: [number, number] + ) => { + const [minA, maxA] = scaleA; + const [minB, maxB] = scaleB; + + const percentage = (valueA - minA) / (maxA - minA); + const valueB = percentage * (maxB - minB) + minB; + + return valueB; + }; + + const styleToString = ( + style: Record + ): string => { + return Object.keys(style).reduce((str, key) => { + if (style[key] === undefined) return str; + return str + `${key}:${style[key]};`; + }, ""); + }; + + return { + duration: params.duration ?? 200, + delay: 0, + css: (t) => { + const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); + const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); + const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); + + return styleToString({ + transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, + opacity: t + }); + }, + easing: cubicOut + }; +}; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..07b516b --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,7 @@ + + + + + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 0000000..5982b0a --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 zcmV+;2Hg3HP)Px)-AP12RCwC$UE6KzI1p6{F2N z1VK2vi|pOpn{~#djwYcWXTI_im_u^TJgMZ4JMOsSj!0ma>B?-(Hr@X&W@|R-$}W@Z zgj#$x=!~7LGqHW?IO8+*oE1MyDp!G=L0#^lUx?;!fXv@l^6SvTnf^ac{5OurzC#ZMYc20lI%HhX816AYVs1T3heS1*WaWH z%;x>)-J}YB5#CLzU@GBR6sXYrD>Vw(Fmt#|JP;+}<#6b63Ike{Fuo!?M{yEffez;| zp!PfsuaC)>h>-AdbnwN13g*1LowNjT5?+lFVd#9$!8Z9HA|$*6dQ8EHLu}U|obW6f z2%uGv?vr=KNq7YYa2Roj;|zooo<)lf=&2yxM@e`kM$CmCR#x>gI>I|*Ubr({5Y^rb zghxQU22N}F51}^yfDSt786oMTc!W&V;d?76)9KXX1 z+6Okem(d}YXmmOiZq$!IPk5t8nnS{%?+vDFz3BevmFNgpIod~R{>@#@5x9zJKEHLHv!gHeK~n)Ld!M8DB|Kfe%~123&Hz1Z(86nU7*G5chmyDe ziV7$pB7pJ=96hpxHv9rCR29%bLOXlKU<_13_M8x)6;P8E1Kz6G<&P?$P^%c!M5`2` zfY2zg;VK5~^>TJGQzc+33-n~gKt{{of8GzUkWmU110IgI0DLxRIM>0US|TsM=L|@F z0Bun8U!cRB7-2apz=y-7*UxOxz@Z0)@QM)9wSGki1AZ38ceG7Q72z5`i;i=J`ILzL z@iUO?SBBG-0cQuo+an4TsLy-g-x;8P4UVwk|D8{W@U1Zi z!M)+jqy@nQ$p?5tsHp-6J304Q={v-B>66$P0IDx&YT(`IcZ~bZfmn11#rXd7<5s}y zBi9eim&zQc0Dk|2>$bs0PnLmDfMP5lcXRY&cvJ=zKxI^f0%-d$tD!`LBf9^jMSYUA zI8U?CWdY@}cRq6{5~y+)#h1!*-HcGW@+gZ4B};0OnC~`xQOyH19z*TA!!BJ%9s0V3F?CAJ{hTd#*tf+ur-W9MOURF-@B77_-OshsY}6 zOXRY=5%C^*26z?l)1=$bz30!so5tfABdSYzO+H=CpV~aaUefmjvfZ3Ttu9W&W3Iu6 zROlh0MFA5h;my}8lB0tAV-Rvc2Zs_CCSJnx@d`**$idgy-iMob4dJWWw|21b4NB=LfsYp0Aeh{Ov)yztQi;eL4y5 zMi>8^SzKqk8~k?UiQK^^-5d8c%bV?$F8%X~czyiaKCI2=UH)", + input: "hsl(var(--input) / )", + ring: "hsl(var(--ring) / )", + background: "hsl(var(--background) / )", + foreground: "hsl(var(--foreground) / )", + primary: { + DEFAULT: "hsl(var(--primary) / )", + foreground: "hsl(var(--primary-foreground) / )" + }, + secondary: { + DEFAULT: "hsl(var(--secondary) / )", + foreground: "hsl(var(--secondary-foreground) / )" + }, + destructive: { + DEFAULT: "hsl(var(--destructive) / )", + foreground: "hsl(var(--destructive-foreground) / )" + }, + muted: { + DEFAULT: "hsl(var(--muted) / )", + foreground: "hsl(var(--muted-foreground) / )" + }, + accent: { + DEFAULT: "hsl(var(--accent) / )", + foreground: "hsl(var(--accent-foreground) / )" + }, + popover: { + DEFAULT: "hsl(var(--popover) / )", + foreground: "hsl(var(--popover-foreground) / )" + }, + card: { + DEFAULT: "hsl(var(--card) / )", + foreground: "hsl(var(--card-foreground) / )" + } + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)" + }, + fontFamily: { + sans: [...fontFamily.sans] + } + } + }, +}; + +export default config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..fc93cbd --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..bbf8c7d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()] +});