From 4d682e073fec72e69ed511b06b4972d43b2c1815 Mon Sep 17 00:00:00 2001 From: seriousm4x Date: Sat, 22 Jul 2023 10:27:31 +0200 Subject: [PATCH] first commit for tailwind rewrite - uses daisyUI - signup, login and logout is done (need some more testing) --- frontend/.eslintignore | 3 +- frontend/.eslintrc.cjs | 49 +- frontend/.gitignore | 10 + frontend/.husky/.gitignore | 1 + frontend/.husky/pre-commit | 4 +- frontend/.npmrc | 1 + frontend/.prettierrc | 13 +- frontend/package.json | 47 ++ frontend/pnpm-lock.yaml | 794 ++++++++++-------- frontend/postcss.config.js | 6 + frontend/src/app.css | 3 + frontend/src/app.d.ts | 12 + frontend/src/app.html | 19 +- frontend/src/components/DeviceCard.svelte | 163 ---- frontend/src/components/DeviceForm.svelte | 418 --------- frontend/src/components/Login.svelte | 237 ------ frontend/src/components/Navbar.svelte | 146 ---- frontend/src/components/Transition.svelte | 10 - .../src/components/UnauthorizedMsg.svelte | 16 - frontend/src/lib/components/Navbar.svelte | 55 ++ frontend/src/lib/helpers/forms.ts | 7 + frontend/src/lib/stores/pocketbase.ts | 13 + frontend/src/lib/stores/settings.ts | 5 + frontend/src/lib/types/settings.ts | 11 + frontend/src/routes/+layout.js | 2 - frontend/src/routes/+layout.svelte | 191 ++--- frontend/src/routes/+page.svelte | 95 --- frontend/src/routes/device/[id]/+page.js | 4 - frontend/src/routes/device/[id]/+page.svelte | 22 - frontend/src/routes/login/+page.svelte | 101 +++ frontend/src/routes/settings/+page.svelte | 478 ----------- frontend/src/routes/welcome/+page.svelte | 181 ++++ frontend/src/scss/main.scss | 162 ---- frontend/src/sorts.js | 17 - frontend/src/stores/pocketbase.ts | 23 - frontend/src/stores/theme.ts | 5 - frontend/svelte.config.js | 27 +- frontend/tailwind.config.js | 9 + frontend/tsconfig.json | 17 + frontend/{vite.config.js => vite.config.ts} | 3 +- 40 files changed, 1039 insertions(+), 2341 deletions(-) create mode 100644 frontend/.gitignore create mode 100644 frontend/.husky/.gitignore create mode 100644 frontend/postcss.config.js create mode 100644 frontend/src/app.css create mode 100644 frontend/src/app.d.ts delete mode 100644 frontend/src/components/DeviceCard.svelte delete mode 100644 frontend/src/components/DeviceForm.svelte delete mode 100644 frontend/src/components/Login.svelte delete mode 100644 frontend/src/components/Navbar.svelte delete mode 100644 frontend/src/components/Transition.svelte delete mode 100644 frontend/src/components/UnauthorizedMsg.svelte create mode 100644 frontend/src/lib/components/Navbar.svelte create mode 100644 frontend/src/lib/helpers/forms.ts create mode 100644 frontend/src/lib/stores/pocketbase.ts create mode 100644 frontend/src/lib/stores/settings.ts create mode 100644 frontend/src/lib/types/settings.ts delete mode 100644 frontend/src/routes/+layout.js delete mode 100644 frontend/src/routes/device/[id]/+page.js delete mode 100644 frontend/src/routes/device/[id]/+page.svelte create mode 100644 frontend/src/routes/login/+page.svelte delete mode 100644 frontend/src/routes/settings/+page.svelte create mode 100644 frontend/src/routes/welcome/+page.svelte delete mode 100644 frontend/src/scss/main.scss delete mode 100644 frontend/src/sorts.js delete mode 100644 frontend/src/stores/pocketbase.ts delete mode 100644 frontend/src/stores/theme.ts create mode 100644 frontend/tailwind.config.js create mode 100644 frontend/tsconfig.json rename frontend/{vite.config.js => vite.config.ts} (69%) diff --git a/frontend/.eslintignore b/frontend/.eslintignore index da81b5c3..38972655 100644 --- a/frontend/.eslintignore +++ b/frontend/.eslintignore @@ -4,11 +4,10 @@ node_modules /.svelte-kit /package .env -.env.\* +.env.* !.env.example # Ignore files for PNPM, NPM and YARN - pnpm-lock.yaml package-lock.json yarn.lock diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs index 6e28e4a7..ebc19589 100644 --- a/frontend/.eslintrc.cjs +++ b/frontend/.eslintrc.cjs @@ -1,23 +1,30 @@ module.exports = { - root: true, - extends: ['plugin:svelte/recommended', 'prettier'], - parser: '@typescript-eslint/parser', - overrides: [ - { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - parser: '@typescript-eslint/parser' - } - } - ], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020 - }, - env: { - browser: true, - es2017: true, - node: true - } + 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/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 00000000..6635cf55 --- /dev/null +++ b/frontend/.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/frontend/.husky/.gitignore b/frontend/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/frontend/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/frontend/.husky/pre-commit b/frontend/.husky/pre-commit index 3712cb79..b7c75677 100755 --- a/frontend/.husky/pre-commit +++ b/frontend/.husky/pre-commit @@ -1,4 +1,4 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" cd frontend && npx lint-staged diff --git a/frontend/.npmrc b/frontend/.npmrc index b6f27f13..0c05da45 100644 --- a/frontend/.npmrc +++ b/frontend/.npmrc @@ -1 +1,2 @@ engine-strict=true +resolution-mode=highest diff --git a/frontend/.prettierrc b/frontend/.prettierrc index a2f32312..a77fddea 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,8 +1,9 @@ { - "useTabs": false, - "tabWidth": 4, - "singleQuote": true, - "trailingComma": "none", - "semi": true, - "printWidth": 100 + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "pluginSearchDirs": ["."], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/frontend/package.json b/frontend/package.json index 84fb6a8a..938b1877 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,4 +1,5 @@ { +<<<<<<< HEAD "name": "frontend", "version": "0.0.1", "private": true, @@ -41,4 +42,50 @@ "*.{js,svelte}": "eslint --fix --ignore-path ../.gitignore .", "*.{js,css,md,svelte,scss}": "prettier --write --ignore-path ../.gitignore --plugin-search-dir=. ." } +======= + "name": "upsnap-frontend", + "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": "eslint --fix --cache --ignore-path ../.gitignore .", + "format": "prettier --write --cache --cache-strategy content --ignore-path ../.gitignore --plugin-search-dir=. .", + "prepare": "husky install" + }, + "devDependencies": { + "@sveltejs/adapter-static": "^2.0.0", + "@sveltejs/kit": "^1.20.4", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.4.14", + "daisyui": "^3.3.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.30.0", + "husky": "^8.0.0", + "postcss": "^8.4.27", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.10.1", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", + "tailwindcss": "^3.3.3", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2" + }, + "type": "module", + "lint-staged": { + "*.{js,svelte}": "eslint --fix --cache --ignore-path ../.gitignore .", + "*.{js,css,md,svelte,scss}": "prettier --write --cache --cache-strategy content --ignore-path ../.gitignore --plugin-search-dir=. ." + }, + "dependencies": { + "@fortawesome/free-solid-svg-icons": "^6.4.0", + "pocketbase": "^0.15.3", + "svelte-fa": "^3.0.4" + } +>>>>>>> 5340d83 (first commit for tailwind rewrite) } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 13e744f6..dcbb9995 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: dependencies: '@fortawesome/free-solid-svg-icons': +<<<<<<< HEAD specifier: ^6.4.2 version: 6.4.2 '@popperjs/core': @@ -23,56 +24,101 @@ dependencies: sass: specifier: ^1.64.2 version: 1.64.2 +======= + specifier: ^6.4.0 + version: 6.4.0 + pocketbase: + specifier: ^0.15.3 + version: 0.15.3 +>>>>>>> 5340d83 (first commit for tailwind rewrite) svelte-fa: specifier: ^3.0.4 version: 3.0.4 devDependencies: '@sveltejs/adapter-static': +<<<<<<< HEAD specifier: ^2.0.3 version: 2.0.3(@sveltejs/kit@1.22.5) '@sveltejs/kit': specifier: ^1.22.5 version: 1.22.5(svelte@4.1.2)(vite@4.4.9) +======= + specifier: ^2.0.0 + version: 2.0.2(@sveltejs/kit@1.22.3) + '@sveltejs/kit': + specifier: ^1.20.4 + version: 1.22.3(svelte@4.1.1)(vite@4.4.6) +>>>>>>> 5340d83 (first commit for tailwind rewrite) '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 + specifier: ^5.45.0 version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^5.62.0 + specifier: ^5.45.0 version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.27) + daisyui: + specifier: ^3.3.1 + version: 3.3.1 eslint: - specifier: ^8.45.0 + specifier: ^8.28.0 version: 8.45.0 eslint-config-prettier: - specifier: ^8.8.0 + specifier: ^8.5.0 version: 8.8.0(eslint@8.45.0) eslint-plugin-svelte: +<<<<<<< HEAD specifier: ^2.32.4 version: 2.32.4(eslint@8.45.0)(svelte@4.1.2) +======= + specifier: ^2.30.0 + version: 2.32.4(eslint@8.45.0)(svelte@4.1.1) +>>>>>>> 5340d83 (first commit for tailwind rewrite) husky: - specifier: ^8.0.3 + specifier: ^8.0.0 version: 8.0.3 - lint-staged: - specifier: ^13.2.3 - version: 13.2.3 + postcss: + specifier: ^8.4.27 + version: 8.4.27 prettier: - specifier: ^2.8.8 + specifier: ^2.8.0 version: 2.8.8 prettier-plugin-svelte: specifier: ^2.10.1 version: 2.10.1(prettier@2.8.8)(svelte@4.1.2) svelte: +<<<<<<< HEAD specifier: ^4.1.2 version: 4.1.2 svelte-preprocess: specifier: ^5.0.4 version: 5.0.4(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)(typescript@5.1.6) +======= + specifier: ^4.0.5 + version: 4.1.1 + svelte-check: + specifier: ^3.4.3 + version: 3.4.6(postcss@8.4.27)(svelte@4.1.1) + tailwindcss: + specifier: ^3.3.3 + version: 3.3.3 + tslib: + specifier: ^2.4.1 + version: 2.6.0 +>>>>>>> 5340d83 (first commit for tailwind rewrite) typescript: - specifier: ^5.1.6 + specifier: ^5.0.0 version: 5.1.6 vite: +<<<<<<< HEAD specifier: ^4.4.9 version: 4.4.9(sass@1.64.2) +======= + specifier: ^4.4.2 + version: 4.4.6 +>>>>>>> 5340d83 (first commit for tailwind rewrite) packages: @@ -81,6 +127,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -89,13 +140,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/runtime@7.22.6: - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - /@esbuild/android-arm64@0.18.15: resolution: {integrity: sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww==} engines: {node: '>=12'} @@ -424,12 +468,17 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true +<<<<<<< HEAD /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false /@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.22.5): resolution: {integrity: sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==} +======= + /@sveltejs/adapter-static@2.0.2(@sveltejs/kit@1.22.3): + resolution: {integrity: sha512-9wYtf6s6ew7DHUHMrt55YpD1FgV7oWql2IGsW5BXquLxqcY9vjrqCFo0TzzDpo+ZPZkW/v77k0eOP6tsAb8HmQ==} +>>>>>>> 5340d83 (first commit for tailwind rewrite) peerDependencies: '@sveltejs/kit': ^1.5.0 dependencies: @@ -456,9 +505,15 @@ packages: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 +<<<<<<< HEAD svelte: 4.1.2 undici: 5.23.0 vite: 4.4.9(sass@1.64.2) +======= + svelte: 4.1.1 + undici: 5.22.1 + vite: 4.4.6 +>>>>>>> 5340d83 (first commit for tailwind rewrite) transitivePeerDependencies: - supports-color dev: true @@ -473,8 +528,13 @@ packages: dependencies: '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.1.2)(vite@4.4.9) debug: 4.3.4 +<<<<<<< HEAD svelte: 4.1.2 vite: 4.4.9(sass@1.64.2) +======= + svelte: 4.1.1 + vite: 4.4.6 +>>>>>>> 5340d83 (first commit for tailwind rewrite) transitivePeerDependencies: - supports-color dev: true @@ -491,10 +551,17 @@ packages: deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.1 +<<<<<<< HEAD svelte: 4.1.2 svelte-hmr: 0.15.2(svelte@4.1.2) vite: 4.4.9(sass@1.64.2) vitefu: 0.2.4(vite@4.4.9) +======= + svelte: 4.1.1 + svelte-hmr: 0.15.2(svelte@4.1.1) + vite: 4.4.6 + vitefu: 0.2.4(vite@4.4.6) +>>>>>>> 5340d83 (first commit for tailwind rewrite) transitivePeerDependencies: - supports-color dev: true @@ -663,14 +730,6 @@ packages: hasBin: true dev: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -680,23 +739,11 @@ packages: uri-js: 4.4.1 dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -704,9 +751,8 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true /anymatch@3.1.3: @@ -715,6 +761,11 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -731,9 +782,20 @@ packages: engines: {node: '>=8'} dev: true - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + /autoprefixer@10.4.14(postcss@8.4.27): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.9 + caniuse-lite: 1.0.30001517 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.27 + postcss-value-parser: 4.2.0 dev: true /axobject-query@3.2.1: @@ -749,6 +811,7 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} +<<<<<<< HEAD /bootstrap@5.3.1(@popperjs/core@2.11.8): resolution: {integrity: sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g==} @@ -757,6 +820,9 @@ packages: dependencies: '@popperjs/core': 2.11.8 dev: false +======= + dev: true +>>>>>>> 5340d83 (first commit for tailwind rewrite) /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -770,6 +836,18 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true + + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001517 + electron-to-chromium: 1.4.468 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: true /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -787,6 +865,15 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /caniuse-lite@1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -795,11 +882,6 @@ packages: supports-color: 7.2.0 dev: true - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -813,33 +895,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: true - - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 dev: true /code-red@1.0.3: @@ -863,13 +918,13 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} dev: true /concat-map@0.0.1: @@ -890,6 +945,13 @@ packages: which: 2.0.2 dev: true + /css-selector-tokenizer@0.8.0: + resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} + dependencies: + cssesc: 3.0.0 + fastparse: 1.1.2 + dev: true + /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -904,12 +966,18 @@ packages: hasBin: true dev: true - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + /daisyui@3.3.1: + resolution: {integrity: sha512-0PVNl+0r2Ie+FRkDNQABYcv8qLc0bt0lhUfSf8PxGocqpDsCB6cNQ5k8jOlnZIjUhc1EXMIDPU9r0pVrfRGftw==} + engines: {node: '>=16.9.0'} dependencies: - '@babel/runtime': 7.22.6 - dev: false + colord: 2.9.3 + css-selector-tokenizer: 0.8.0 + postcss: 8.4.27 + postcss-js: 4.0.1(postcss@8.4.27) + tailwindcss: 3.3.3 + transitivePeerDependencies: + - ts-node + dev: true /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -946,6 +1014,10 @@ packages: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: true + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -953,6 +1025,10 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -960,16 +1036,8 @@ packages: esutils: 2.0.3 dev: true - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /electron-to-chromium@1.4.468: + resolution: {integrity: sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==} dev: true /es6-promise@3.3.1: @@ -1006,6 +1074,11 @@ packages: '@esbuild/win32-x64': 0.18.15 dev: true + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1163,21 +1236,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1201,6 +1259,10 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fastparse@1.1.2: + resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} + dev: true + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -1219,6 +1281,7 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -1240,6 +1303,10 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /fraction.js@4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1249,11 +1316,11 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true /glob-parent@5.1.2: @@ -1261,6 +1328,7 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -1269,6 +1337,17 @@ packages: is-glob: 4.0.3 dev: true + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1312,9 +1391,11 @@ packages: engines: {node: '>=8'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 dev: true /husky@8.0.3: @@ -1328,9 +1409,6 @@ packages: engines: {node: '>= 4'} dev: true - /immutable@4.3.1: - resolution: {integrity: sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==} - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -1344,11 +1422,6 @@ packages: engines: {node: '>=0.8.19'} dev: true - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -1365,19 +1438,17 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} dev: true /is-glob@4.0.3: @@ -1385,10 +1456,12 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} @@ -1401,15 +1474,15 @@ packages: '@types/estree': 1.0.1 dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /jiti@1.19.1: + resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} + hasBin: true + dev: true + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1447,46 +1520,8 @@ packages: engines: {node: '>=10'} dev: true - /lint-staged@13.2.3: - resolution: {integrity: sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - chalk: 5.2.0 - cli-truncate: 3.1.0 - commander: 10.0.1 - debug: 4.3.4 - execa: 7.1.1 - lilconfig: 2.1.0 - listr2: 5.0.8 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.3 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.1 - transitivePeerDependencies: - - enquirer - - supports-color - dev: true - - /listr2@5.0.8: - resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==} - engines: {node: ^14.13.1 || >=16.0.0} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true /locate-character@3.0.0: @@ -1504,16 +1539,6 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - dev: true - /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -1539,10 +1564,6 @@ packages: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1562,16 +1583,6 @@ packages: hasBin: true dev: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -1608,6 +1619,14 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1622,19 +1641,28 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 dev: true - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} dev: true /once@1.4.0: @@ -1643,20 +1671,6 @@ packages: wrappy: 1.0.2 dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -1683,13 +1697,6 @@ packages: p-limit: 3.1.0 dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: true - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1712,9 +1719,8 @@ packages: engines: {node: '>=8'} dev: true - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true /path-type@4.0.0: @@ -1737,17 +1743,44 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true - /pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} dev: true /pocketbase@0.15.3: resolution: {integrity: sha512-sjM0XO4wHUlVZs94VhRJi4FeYtbLqvxFbRDJlfjFb/4FkxypbGwxLM4HDAEr8q6jdreuxAM1/n/b5HB1GjQ1Vg==} dev: false + /postcss-import@15.1.0(postcss@8.4.27): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.2 + dev: true + + /postcss-js@4.0.1(postcss@8.4.27): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.27 + dev: true + /postcss-load-config@3.1.4(postcss@8.4.27): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -1765,6 +1798,33 @@ packages: yaml: 1.10.2 dev: true + /postcss-load-config@4.0.1(postcss@8.4.27): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.27 + yaml: 2.3.1 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.27): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.27 + postcss-selector-parser: 6.0.13 + dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.27): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} @@ -1791,6 +1851,10 @@ packages: util-deprecate: 1.0.2 dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss@8.4.27: resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} @@ -1830,27 +1894,31 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify@1.0.4: @@ -1858,10 +1926,6 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true - /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true @@ -1890,12 +1954,6 @@ packages: queue-microtask: 1.2.3 dev: true - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.0 - dev: true - /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -1912,6 +1970,7 @@ packages: rimraf: 2.7.1 dev: true +<<<<<<< HEAD /sass@1.64.2: resolution: {integrity: sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==} engines: {node: '>=14.0.0'} @@ -1921,6 +1980,8 @@ packages: immutable: 4.3.1 source-map-js: 1.0.2 +======= +>>>>>>> 5340d83 (first commit for tailwind rewrite) /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -1945,10 +2006,6 @@ packages: engines: {node: '>=8'} dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} @@ -1963,32 +2020,6 @@ packages: engines: {node: '>=8'} dev: true - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true @@ -2002,35 +2033,13 @@ packages: /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + dev: true /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: true - /string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2038,18 +2047,6 @@ packages: ansi-regex: 5.0.1 dev: true - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -2062,6 +2059,20 @@ packages: engines: {node: '>=8'} dev: true + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2069,7 +2080,43 @@ packages: has-flag: 4.0.0 dev: true +<<<<<<< HEAD /svelte-eslint-parser@0.32.2(svelte@4.1.2): +======= + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /svelte-check@3.4.6(postcss@8.4.27)(svelte@4.1.1): + resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + chokidar: 3.5.3 + fast-glob: 3.3.0 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.1.1 + svelte-preprocess: 5.0.4(postcss@8.4.27)(svelte@4.1.1)(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-eslint-parser@0.32.2(svelte@4.1.1): +>>>>>>> 5340d83 (first commit for tailwind rewrite) resolution: {integrity: sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2099,7 +2146,11 @@ packages: svelte: 4.1.2 dev: true +<<<<<<< HEAD /svelte-preprocess@5.0.4(postcss@8.4.27)(sass@1.64.2)(svelte@4.1.2)(typescript@5.1.6): +======= + /svelte-preprocess@5.0.4(postcss@8.4.27)(svelte@4.1.1)(typescript@5.1.6): +>>>>>>> 5340d83 (first commit for tailwind rewrite) resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -2141,7 +2192,10 @@ packages: detect-indent: 6.1.0 magic-string: 0.27.0 postcss: 8.4.27 +<<<<<<< HEAD sass: 1.64.2 +======= +>>>>>>> 5340d83 (first commit for tailwind rewrite) sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.1.2 @@ -2167,12 +2221,52 @@ packages: periscopic: 3.1.0 dev: true + /tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.0 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.19.1 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.27 + postcss-import: 15.1.0(postcss@8.4.27) + postcss-js: 4.0.1(postcss@8.4.27) + postcss-load-config: 4.0.1(postcss@8.4.27) + postcss-nested: 6.0.1(postcss@8.4.27) + postcss-selector-parser: 6.0.13 + resolve: 1.22.2 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 dev: true /to-regex-range@5.0.1: @@ -2180,12 +2274,17 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} dev: true + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -2216,11 +2315,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} @@ -2234,6 +2328,17 @@ packages: busboy: 1.6.0 dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.9 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2244,8 +2349,13 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true +<<<<<<< HEAD /vite@4.4.9(sass@1.64.2): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} +======= + /vite@4.4.6: + resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==} +>>>>>>> 5340d83 (first commit for tailwind rewrite) engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2274,8 +2384,12 @@ packages: dependencies: esbuild: 0.18.15 postcss: 8.4.27 +<<<<<<< HEAD rollup: 3.27.2 sass: 1.64.2 +======= + rollup: 3.26.3 +>>>>>>> 5340d83 (first commit for tailwind rewrite) optionalDependencies: fsevents: 2.3.2 dev: true @@ -2288,7 +2402,11 @@ packages: vite: optional: true dependencies: +<<<<<<< HEAD vite: 4.4.9(sass@1.64.2) +======= + vite: 4.4.6 +>>>>>>> 5340d83 (first commit for tailwind rewrite) dev: true /which@2.0.2: @@ -2299,24 +2417,6 @@ packages: isexe: 2.0.0 dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 00000000..0f772168 --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/frontend/src/app.css b/frontend/src/app.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/frontend/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts new file mode 100644 index 00000000..f59b884c --- /dev/null +++ b/frontend/src/app.d.ts @@ -0,0 +1,12 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } +} + +export {}; diff --git a/frontend/src/app.html b/frontend/src/app.html index a1c1328b..93249954 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -1,12 +1,11 @@ - - - - - %sveltekit.head% - - - -
%sveltekit.body%
- + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ diff --git a/frontend/src/components/DeviceCard.svelte b/frontend/src/components/DeviceCard.svelte deleted file mode 100644 index 0f6a02cd..00000000 --- a/frontend/src/components/DeviceCard.svelte +++ /dev/null @@ -1,163 +0,0 @@ - - -
-
-
-
-
- {#if device.status === 'offline'} - wake()} - on:keydown={() => wake()} - > -
- -
-
- {:else if device.status === 'online'} - {#if device.shutdown_cmd !== ''} - shutdown()} - on:keydown={() => shutdown()} - > -
- -
-
- {:else} - -
- -
-
- {/if} - {:else if device.status === 'pending'} -
- Loading... -
- {/if} -
-
- - - -
-
- {#if device.link} -

- {device.name} -

- {:else} -

{device.name}

- {/if} -

{device.ip}

- {#if device?.expand?.ports} -
- {#each device.expand.ports.sort(sortPorts) as port} -

- {port.name} - ({port.number}) -

- {/each} -
- {/if} - {#if device.wake_cron !== ''} - - - {device.wake_cron} - - {/if} - {#if device.shutdown_cron !== ''} - - - {device.shutdown_cron} - - {/if} - {#if device.password !== ''} - - - - {/if} -

- {formatDistance(parseISO(device.updated), now, { - includeSeconds: true, - addSuffix: true - })} -

-
-
-
diff --git a/frontend/src/components/DeviceForm.svelte b/frontend/src/components/DeviceForm.svelte deleted file mode 100644 index 8fdf6a8a..00000000 --- a/frontend/src/components/DeviceForm.svelte +++ /dev/null @@ -1,418 +0,0 @@ - - -
-

{mode === 'add' ? 'Add new device' : device.name}

-
-
-
-
Required:
-
- Name - -
-
- IP - -
-
- MAC - -
-
- Netmask - -
-
Optional:
- {#if device?.expand?.ports} - {#each device.expand.ports as port, idx} -
- Port - - - -
- {/each} - {/if} -
- Port - - - -
-
- Link - -
-
- Wake Cron(1) - -
- - -
-
-
- Shutdown Cron(1) - -
- - -
-
-
- Shutdown Cmd(2) - -
-
- Password(3) - - -
- {#if groups} -
Groups:
-
- {#each $groups as grp} - toggleGroup(grp.id)} - on:keydown={() => toggleGroup(grp.id)}>{grp.name} - {/each} -
- {/if} - -
-
-
-
-
Optional:
-

- (1) Learn more about the correct syntax for cron on - wikipedia - or refer to the - package documentation -

-

- (2) Shell command to be executed. "net rpc", "sshpass" and "curl" are available. - e.g.: -

-
    -
  • - Windows: net rpc shutdown -I 192.168.1.13 -U "user%password" -
  • -
  • - Linux: sshpass -p your_password ssh -o "StrictHostKeyChecking=no" - user@hostname "sudo poweroff" -
  • -
-

- (3) Some network cards have the option to set a password for magic packets, also - called "SecureON". Password can only be 0, 4 or 6 characters in length. -

-
- {#if mode === 'edit'} -
- -
- {/if} -
-
-
diff --git a/frontend/src/components/Login.svelte b/frontend/src/components/Login.svelte deleted file mode 100644 index 8ba2131e..00000000 --- a/frontend/src/components/Login.svelte +++ /dev/null @@ -1,237 +0,0 @@ - - -
-
-
- -

- {$settings_public.setup_completed === true ? 'Login' : 'Register'} -

-
-
-
- -
-
- - diff --git a/frontend/src/components/Navbar.svelte b/frontend/src/components/Navbar.svelte deleted file mode 100644 index cbc77d38..00000000 --- a/frontend/src/components/Navbar.svelte +++ /dev/null @@ -1,146 +0,0 @@ - - - diff --git a/frontend/src/components/Transition.svelte b/frontend/src/components/Transition.svelte deleted file mode 100644 index 43b302bd..00000000 --- a/frontend/src/components/Transition.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -{#key url} -
- -
-{/key} diff --git a/frontend/src/components/UnauthorizedMsg.svelte b/frontend/src/components/UnauthorizedMsg.svelte deleted file mode 100644 index e5c94e03..00000000 --- a/frontend/src/components/UnauthorizedMsg.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -{#if isUser} -
-
-
- Logged in as read only user. To make changes, please log in as admin. -
-
-
-{/if} diff --git a/frontend/src/lib/components/Navbar.svelte b/frontend/src/lib/components/Navbar.svelte new file mode 100644 index 00000000..0bc36492 --- /dev/null +++ b/frontend/src/lib/components/Navbar.svelte @@ -0,0 +1,55 @@ + + + diff --git a/frontend/src/lib/helpers/forms.ts b/frontend/src/lib/helpers/forms.ts new file mode 100644 index 00000000..8c7c54d9 --- /dev/null +++ b/frontend/src/lib/helpers/forms.ts @@ -0,0 +1,7 @@ +export function toggleVisibility(el: HTMLInputElement) { + if (el.type === 'password') { + el.type = 'text'; + } else { + el.type = 'password'; + } +} diff --git a/frontend/src/lib/stores/pocketbase.ts b/frontend/src/lib/stores/pocketbase.ts new file mode 100644 index 00000000..7b0751c8 --- /dev/null +++ b/frontend/src/lib/stores/pocketbase.ts @@ -0,0 +1,13 @@ +import { writable } from 'svelte/store'; +import PocketBase from 'pocketbase'; +import type AdminAuthResponse from 'pocketbase'; + +// set backend url based on environment +export const backendUrl = import.meta.env.DEV ? 'http://127.0.0.1:8090' : ''; + +// connect to backend +const pb = new PocketBase(backendUrl); +pb.autoCancellation(false); + +// export stores +export const pocketbase = writable(pb); diff --git a/frontend/src/lib/stores/settings.ts b/frontend/src/lib/stores/settings.ts new file mode 100644 index 00000000..249ca8b1 --- /dev/null +++ b/frontend/src/lib/stores/settings.ts @@ -0,0 +1,5 @@ +import { writable } from 'svelte/store'; +import type { SettingsPublic, SettingsPrivate } from '$lib/types/settings'; + +export const settingsPub = writable(); +export const settingsPriv = writable(); diff --git a/frontend/src/lib/types/settings.ts b/frontend/src/lib/types/settings.ts new file mode 100644 index 00000000..dc9a1876 --- /dev/null +++ b/frontend/src/lib/types/settings.ts @@ -0,0 +1,11 @@ +export type SettingsPublic = { + collectionId: string; + favicon: string; + setup_completed: boolean; + website_title: string; +}; + +export type SettingsPrivate = { + interval: number; + scan_range: string; +}; diff --git a/frontend/src/routes/+layout.js b/frontend/src/routes/+layout.js deleted file mode 100644 index ba58d860..00000000 --- a/frontend/src/routes/+layout.js +++ /dev/null @@ -1,2 +0,0 @@ -export const prerender = true; -export const trailingSlash = 'always'; diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 79dcee28..85a4b471 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -1,148 +1,67 @@ - - - + -{#if isAuth} - - - - -{:else} - +{#if $pocketbase.authStore.isValid} + {/if} - + diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 840a5601..e69de29b 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -1,95 +0,0 @@ - - -
- {#if Object.keys($devices).length > 0} - {#if devicesWithoutGroups.length > 0} -
- {#each devicesWithoutGroups.sort(sortDevices) as device} - - {/each} -
- {/if} - - {#each Object.keys(devicesWithGroup).sort(sortGroups) as grp} -

{grp}

-
- {#each devicesWithGroup[grp] as device} - - {/each} -
- {/each} - {:else} -
-

No devices

-

- Go to settings to add devices... -

-
- {/if} -
diff --git a/frontend/src/routes/device/[id]/+page.js b/frontend/src/routes/device/[id]/+page.js deleted file mode 100644 index 370a3f61..00000000 --- a/frontend/src/routes/device/[id]/+page.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('./$types').PageLoad} */ -export function load({ params }) { - return { params }; -} diff --git a/frontend/src/routes/device/[id]/+page.svelte b/frontend/src/routes/device/[id]/+page.svelte deleted file mode 100644 index b1c4c04b..00000000 --- a/frontend/src/routes/device/[id]/+page.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -{#if device} -
- - -
-{/if} diff --git a/frontend/src/routes/login/+page.svelte b/frontend/src/routes/login/+page.svelte new file mode 100644 index 00000000..5112caf2 --- /dev/null +++ b/frontend/src/routes/login/+page.svelte @@ -0,0 +1,101 @@ + + +
+
+
+
+
+
+
Gopher
+

Welcome

+
+
+ + + + + {#if errorMsg !== ''} +
+ + {errorMsg} +
+ {/if} +
+ +
+
+
+
+
+
+
diff --git a/frontend/src/routes/settings/+page.svelte b/frontend/src/routes/settings/+page.svelte deleted file mode 100644 index a9b30069..00000000 --- a/frontend/src/routes/settings/+page.svelte +++ /dev/null @@ -1,478 +0,0 @@ - - -
- -
-
-
-
-

Ping interval

-

Sets the interval in which the devices are pinged.

-
- Cron - -
-

Title

-

Sets the title of the website and in the browser tab.

-
- Title - -
-

Icon

- -
- -
- - -
-
-
-
-
-
Ping interval:
-

- Leave blank to use default value of "@every 3s". Learn more about the correct syntax for cron on - wikipedia - or refer to the - package documentation -

-
Icon:
-

- Supported file types are - .ico, - .png, - .svg, - .gif and - .jpg/.jpeg. -

-
-
-
- -
-
- -
-
-
-

Manage Groups

-

- {#each $groups as grp} -

- {grp.name} - deleteGroup(grp.id)} - on:keydown={() => deleteGroup(grp.id)} - role="button" - tabindex="0" - > - - -
- {/each} -

-
- Add new group - - -
-
-
-
-
-
-
-

Network scan

-

Set the network address to scan.

-
-
- IP range - -
- -
-
-
-
-

- For network scan to work, you need to run UpSnap as root/admin and have nmap - installed and available in your $PATH. (For docker users, thats already the - case and you don't need to do anything.) -

-
-
-
- {#if scannedDevices.devices} -
-
-
Name
-
IP
-
MAC
-
MAC Vendor
-
Netmask
-
Add
-
- {#each scannedDevices?.devices as device} -
-
-
- {device.name} -
-
- {device.ip} -
-
- {device.mac} -
-
- {device.mac_vendor} -
-
- {scannedDevices.netmask} -
-
- -
-
- {/each} -
- - {/if} -
-

- {#if version !== undefined} - UpSnap version: {version} - {:else} - UpSnap version: (untracked) - {/if} -

-
- - diff --git a/frontend/src/routes/welcome/+page.svelte b/frontend/src/routes/welcome/+page.svelte new file mode 100644 index 00000000..1e8a3724 --- /dev/null +++ b/frontend/src/routes/welcome/+page.svelte @@ -0,0 +1,181 @@ + + +
+
+
+
+ {#if $settingsPub?.setup_completed} +
Gopher
+
+

I didn't expect you here! 🧐

+

You are already done with the setup! Nothing to do.

+
+ +
+
+ {:else if stepsCompleted === 0} +
Gopher
+
+

Welcome to UpSnap 🥳

+

Please complete the following steps to finish the setup.

+
+ +
+
+ {:else if stepsCompleted === 1} +
+
+
Gopher
+

Create an admin account

+
+
+ + + + + + + {#if errorMsg !== ''} +
+ + {errorMsg} +
+ {/if} +
+ +
+
+
+ {:else if stepsCompleted === 2} +
Gopher
+
+

You are all set! 🎉

+

Go ahead and add some devices to your dashboard.

+
+ +
+
+ {/if} +
+ {#if !$settingsPub?.setup_completed} +
    +
  • Welcome
  • +
  • 0}>Create account
  • +
  • 1}>Done
  • +
+ {/if} +
+
+
diff --git a/frontend/src/scss/main.scss b/frontend/src/scss/main.scss deleted file mode 100644 index 69e365c1..00000000 --- a/frontend/src/scss/main.scss +++ /dev/null @@ -1,162 +0,0 @@ -// import bootstrap functions and variables -@import '../../node_modules/bootstrap/scss/functions'; -@import '../../node_modules/bootstrap/scss/variables'; -@import '../../node_modules/bootstrap/scss/variables-dark'; - -// custom colors -$gray-1000: #111; -$grays: ( - '100': $gray-100, - '200': $gray-200, - '300': $gray-300, - '400': $gray-400, - '500': $gray-500, - '600': $gray-600, - '700': $gray-700, - '800': $gray-800, - '900': $gray-900, - '1000': $gray-1000 -) !default; - -$body-bg-dark: $gray-1000; -$dropdown-link-active-bg: $gray-1000; -$dropdown-min-width: 0; -$form-check-input-checked-bg-color: $orange-300; -$form-check-input-checked-border-color: $orange-500; -$input-focus-border-color: $gray-500; -$input-focus-box-shadow: $gray-900; - -// import rest -@import '../../node_modules/bootstrap/scss/maps'; -@import '../../node_modules/bootstrap/scss/mixins'; -@import '../../node_modules/bootstrap/scss/root'; -@import '../../node_modules/bootstrap/scss/utilities'; -@import '../../node_modules/bootstrap/scss/reboot'; -@import '../../node_modules/bootstrap/scss/type'; -@import '../../node_modules/bootstrap/scss/images'; -@import '../../node_modules/bootstrap/scss/containers'; -@import '../../node_modules/bootstrap/scss/grid'; -@import '../../node_modules/bootstrap/scss/helpers'; -@import '../../node_modules/bootstrap/scss/card'; -@import '../../node_modules/bootstrap/scss/nav'; -@import '../../node_modules/bootstrap/scss/navbar'; -@import '../../node_modules/bootstrap/scss/forms'; -@import '../../node_modules/bootstrap/scss/dropdown'; -@import '../../node_modules/bootstrap/scss/buttons'; -@import '../../node_modules/bootstrap/scss/spinners'; -@import '../../node_modules/bootstrap/scss/badge'; -@import '../../node_modules/bootstrap/scss/transitions'; - -@import '../../node_modules/bootstrap/scss/utilities/api'; - -section { - padding: 1rem; - margin: 1rem 0; - border-radius: 1rem; -} - -.nav-link { - padding: 0.3rem 0.6rem !important; - border-radius: 0.4rem; - - &.active { - background-color: $gray-300; - } -} - -.navbar-toggler { - &:focus { - box-shadow: none !important; - } -} - -.btn { - border-radius: 0.5rem; -} - -.text-success, -.port-up { - color: $teal-500 !important; -} - -.text-warning { - color: $yellow !important; -} - -.text-danger, -.port-down { - color: #ef476f !important; -} - -.callout { - padding: 1rem; - border-radius: 0.3rem; - margin: 1rem 0; - - &.callout-info { - background-color: #1177b21f; - border-left: 0.5rem solid #1177b21f; - } - - &.callout-danger { - background-color: #ef476f1f; - border-left: 0.5rem solid #ef476f1f; - } -} - -.dropdown-item { - border-radius: 0.5rem; -} - -.power-hover { - &:hover { - filter: drop-shadow(0px 0px 10px rgb(155, 155, 155)); - transition: all 0.1s; - } -} - -.ellipsis { - width: 1rem; - display: block; -} - -html[data-bs-theme='light'] { - html, - body { - background: #f0f1f2; - } - - section, - .card, - .login { - background: #ffffff; - } -} - -html[data-bs-theme='dark'] { - html, - body { - background: #131316; - } - - section, - .card, - .login { - background: #25252b; - } - - .nav-link, - .dropdown-menu { - &.active { - background-color: $gray-800; - } - } - - .dropdown-menu { - background-color: $gray-800; - } -} - -.cursor-pointer { - cursor: pointer; -} diff --git a/frontend/src/sorts.js b/frontend/src/sorts.js deleted file mode 100644 index 77bc2877..00000000 --- a/frontend/src/sorts.js +++ /dev/null @@ -1,17 +0,0 @@ -export function sortDevices(a, b) { - return a.name.localeCompare(b.name, undefined, { - numeric: true, - sensitivity: 'base' - }); -} - -export function sortGroups(a, b) { - return a.localeCompare(b, undefined, { - numeric: true, - sensitivity: 'base' - }); -} - -export function sortPorts(a, b) { - return a.number - b.number; -} diff --git a/frontend/src/stores/pocketbase.ts b/frontend/src/stores/pocketbase.ts deleted file mode 100644 index dd3f736e..00000000 --- a/frontend/src/stores/pocketbase.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { writable } from 'svelte/store'; -import PocketBase from 'pocketbase'; - -// set backend url based on environment -let backend_url = import.meta.env.DEV ? 'http://127.0.0.1:8090' : '/'; - -// get default values for stores -const pb = new PocketBase(backend_url); -pb.autoCancellation(false); - -// export stores -export const pocketbase = writable(pb); -export const settings_private = writable({ - interal: '', - scan_range: '' -}); -export const settings_public = writable({ - website_title: '', - favicon: '' -}); -export const devices = writable({}); -export const groups = writable([]); -export const authorizedStore = writable(false); diff --git a/frontend/src/stores/theme.ts b/frontend/src/stores/theme.ts deleted file mode 100644 index 305ab4fa..00000000 --- a/frontend/src/stores/theme.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { writable } from 'svelte/store'; - -export const theme = writable(); -if (typeof window !== 'undefined') - [theme.set(localStorage.getItem('theme') ? localStorage.getItem('theme') : 'auto')]; diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js index 492f6094..1f68cd2f 100644 --- a/frontend/svelte.config.js +++ b/frontend/svelte.config.js @@ -1,25 +1,18 @@ import adapter from '@sveltejs/adapter-static'; -import preprocess from 'svelte-preprocess'; -import path from 'path'; +import { vitePreprocess } from '@sveltejs/kit/vite'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://github.com/sveltejs/svelte-preprocess - // for more information about preprocessors - preprocess: preprocess(), + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), - kit: { - adapter: adapter({ - fallback: 'index.html' - }), - alias: { - '@components': path.resolve('./src/components'), - '@stores': path.resolve('./src/stores') - }, - prerender: { - entries: ['/device/[id]', '/settings', '/'] - } - } + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } }; export default config; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js new file mode 100644 index 00000000..56a93861 --- /dev/null +++ b/frontend/tailwind.config.js @@ -0,0 +1,9 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/**/*.{html,js,svelte,ts}'], + theme: { + extend: {} + }, + plugins: [require('daisyui')], + daisyui: {} +}; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 00000000..6ae0c8c4 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // 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/frontend/vite.config.js b/frontend/vite.config.ts similarity index 69% rename from frontend/vite.config.js rename to frontend/vite.config.ts index 5218dda3..bbf8c7da 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.ts @@ -2,6 +2,5 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; export default defineConfig({ - plugins: [sveltekit()], - envPrefix: 'UPSNAP' + plugins: [sveltekit()] });