diff --git a/.gitea/workflows/qs.yml b/.gitea/workflows/qs.yml index 35863d9..fa5acac 100644 --- a/.gitea/workflows/qs.yml +++ b/.gitea/workflows/qs.yml @@ -20,8 +20,8 @@ jobs: working-directory: app/frontend run: "node ../node_modules/typescript/bin/tsc --noEmit" - name: "Stylelint" - working-directory: app/frontend/styles - run: "node ../../node_modules/stylelint/bin/stylelint.mjs ." + working-directory: app/frontend + run: "node ../node_modules/stylelint/bin/stylelint.mjs ." - name: "ESLint" working-directory: app run: "node node_modules/eslint/bin/eslint.js frontend" diff --git a/app/Justfile b/Justfile similarity index 96% rename from app/Justfile rename to Justfile index 1ed58d2..7b9f242 100644 --- a/app/Justfile +++ b/Justfile @@ -1,8 +1,8 @@ _default: @bin/just/choose.sh {{ source_file() }} choose -mod backend -mod frontend +mod backend 'app/backend/mod.just' +mod frontend 'app/frontend/mod.just' alias i := install alias start := up diff --git a/app/assets/icons/symfony.svg b/app/assets/icons/symfony.svg new file mode 100644 index 0000000..93fb329 --- /dev/null +++ b/app/assets/icons/symfony.svg @@ -0,0 +1 @@ + diff --git a/app/backend/TestController.php b/app/backend/TestController.php index 1ec6b80..b62038a 100644 --- a/app/backend/TestController.php +++ b/app/backend/TestController.php @@ -27,7 +27,7 @@ final readonly class TestController { return new Response( $this->twig->render( - 'base.html.twig' + 'sites/index.html.twig' ) ); } diff --git a/app/backend/mod.just b/app/backend/mod.just index 1418d9d..279ee7a 100644 --- a/app/backend/mod.just +++ b/app/backend/mod.just @@ -1,17 +1,19 @@ __default: - @../bin/just/choose.sh {{ source_file() }} choose + @../../bin/just/choose.sh {{ source_file() }} choose # Checks whether the requriements are met [group('main')] check: #!/bin/bash - source ../bin/just/colors.sh - source ../bin/just/check.sh + source ../../bin/just/colors.sh + source ../../bin/just/check.sh printf "${BLUE_BG}${BLACK_FG} Checking Backend Requirements ${CLEAR}\n" cd .. check_cmd "php" "Php" check_cmd "composer" "Composer" + check_cmd "symfony" "Symfony cli" + current_composer_version=$(composer --version 2>/dev/null | awk '{print $3}' | cut -d '.' -f 1) if [ "${current_composer_version}" = "2" ]; then printf >&2 "${GREEN_FG}✔ Composer${BLUE_FG} Version ${GREEN_FG}${current_composer_version}${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n" @@ -19,8 +21,6 @@ check: printf >&2 "${RED_FG}✘ Wrong Composer Version${YELLOW_FG} is installed!\n Version ${RED_FG}2${YELLOW_FG} is ${RED_FG}required${YELLOW_FG}.\n" error = 1 fi - - check_cmd "symfony" "Symfony cli" required_php_version=$(cat .php-version) current_php_version=$(symfony php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;") if [ "${current_php_version}" = "${required_php_version}" ]; then @@ -34,7 +34,12 @@ check: check "[ $(php -m | grep -c pdo_mysql) -eq 1 ]" "Php Mysql PDO" check_cmd "docker" "Docker" - check "$(docker compose version >/dev/null 2>&1)" "Docker Compose" + if [[ "$(docker compose version 2>&1)" == "Docker Compose version v"* ]]; then + printf >&2 "${GREEN_FG}✔ Docker Compose${BLUE_FG} is ${GREEN_FG}installed${BLUE_FG}.\n" + else + printf >&2 "${RED_FG}✘ Docker Compose${YELLOW_FG} is ${RED_FG}not installed${YELLOW_FG}! \n" + error=1 + fi if ((error > 0 )); then exit 1 diff --git a/app/composer.json b/app/composer.json index 649acd3..fdeaf29 100644 --- a/app/composer.json +++ b/app/composer.json @@ -23,11 +23,14 @@ "symfony/flex": "^2", "symfony/form": "7.1.*", "symfony/framework-bundle": "7.1.*", + "symfony/http-client": "7.1.*", "symfony/monolog-bundle": "^3.0", "symfony/runtime": "7.1.*", - "symfony/stimulus-bundle": "^2.12", + "symfony/stimulus-bundle": "^2.18", "symfony/twig-bundle": "7.1.*", "symfony/uid": "7.1.*", + "symfony/ux-icons": "^2.18", + "symfony/ux-twig-component": "*", "symfony/validator": "7.1.*", "symfony/webpack-encore-bundle": "^2.1", "symfony/yaml": "7.1.*", diff --git a/app/composer.lock b/app/composer.lock index 1e05384..e050de0 100644 --- a/app/composer.lock +++ b/app/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ee85551bd6012966efcff3c2d44a4b98", + "content-hash": "21f94f5ff4dac04b4bfc19b949fcea8c", "packages": [ { "name": "dflydev/dot-access-data", @@ -3675,6 +3675,178 @@ ], "time": "2024-06-28T08:00:31+00:00" }, + { + "name": "symfony/http-client", + "version": "v7.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/90ace27d17ccc9afc6f7ec0081e8529fb0e29425", + "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3.4.1", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-28T08:00:31+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "20414d96f391677bf80078aa55baece78b82647d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, { "name": "symfony/http-foundation", "version": "v7.1.1", @@ -5786,6 +5958,177 @@ ], "time": "2024-05-31T14:57:53+00:00" }, + { + "name": "symfony/ux-icons", + "version": "v2.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-icons.git", + "reference": "a00140b15feb16a0d991ee04e115f2a15b0d9941" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-icons/zipball/a00140b15feb16a0d991ee04e115f2a15b0d9941", + "reference": "a00140b15feb16a0d991ee04e115f2a15b0d9941", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0" + }, + "conflict": { + "symfony/flex": "<1.13" + }, + "require-dev": { + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "6.4|^7.0", + "symfony/phpunit-bridge": "^6.3|^7.0", + "symfony/ux-twig-component": "^2.14", + "zenstruck/console-test": "^1.5" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "name": "symfony/ux", + "url": "https://github.com/symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\Icons\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Bond", + "email": "kevinbond@gmail.com" + }, + { + "name": "Simon André", + "email": "smn.andre@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Renders local and remote SVG icons in your Twig templates.", + "homepage": "https://symfony.com", + "keywords": [ + "icons", + "svg", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-icons/tree/v2.18.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-07T23:22:02+00:00" + }, + { + "name": "symfony/ux-twig-component", + "version": "v2.18.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-twig-component.git", + "reference": "c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7", + "reference": "c5ba36dc0f55b75d4c6d7dc546dfdbe4002f82e7", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "twig/twig": "^3.8" + }, + "conflict": { + "symfony/config": "<5.4.0" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^6.0|^7.0", + "symfony/stimulus-bundle": "^2.9.1", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/webpack-encore-bundle": "^1.15" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "name": "symfony/ux", + "url": "https://github.com/symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\TwigComponent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Twig components for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "components", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-twig-component/tree/v2.18.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-06-11T18:51:33+00:00" + }, { "name": "symfony/validator", "version": "v7.1.2", diff --git a/app/config/bundles.php b/app/config/bundles.php index bb709fe..b1ab137 100644 --- a/app/config/bundles.php +++ b/app/config/bundles.php @@ -16,4 +16,6 @@ return [ Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], Presta\SitemapBundle\PrestaSitemapBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], + Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], + Symfony\UX\Icons\UXIconsBundle::class => ['all' => true], ]; diff --git a/app/config/packages/twig_component.yaml b/app/config/packages/twig_component.yaml new file mode 100644 index 0000000..2b203cd --- /dev/null +++ b/app/config/packages/twig_component.yaml @@ -0,0 +1,5 @@ +twig_component: + anonymous_template_directory: 'components/' + defaults: + # Namespace & directory for components + App\Components\: 'components/' diff --git a/app/config/routes.yaml b/app/config/routes.yaml index e1710e3..1bd9ebd 100644 --- a/app/config/routes.yaml +++ b/app/config/routes.yaml @@ -7,9 +7,9 @@ controllers: presta_sitemap: resource: "@PrestaSitemapBundle/config/routing.yml" -when@dev: - test_style: - path: /test/styles - controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController - defaults: - template: 'test/styles.html.twig' +#when@dev: +# test_style: +# path: /test/styles +# controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController +# defaults: +# template: 'test/styles.html.twig' diff --git a/app/frontend/.eslintrc.json b/app/frontend/.eslintrc.json index e228e47..1833da0 100644 --- a/app/frontend/.eslintrc.json +++ b/app/frontend/.eslintrc.json @@ -12,6 +12,12 @@ "ecmaVersion": "latest", "sourceType": "module" }, + "overrides": [ + { + "files": ["*.svelte"], + "parser": "svelte-eslint-parser" + } + ], "plugins": [ "@typescript-eslint" ], diff --git a/app/frontend/styles/.stylelintrc.json b/app/frontend/.stylelintrc.json similarity index 78% rename from app/frontend/styles/.stylelintrc.json rename to app/frontend/.stylelintrc.json index f3b76d3..ad3ac12 100644 --- a/app/frontend/styles/.stylelintrc.json +++ b/app/frontend/.stylelintrc.json @@ -1,7 +1,6 @@ { "extends": [ - "stylelint-config-standard-scss", - "stylelint-config-tailwindcss/scss" + "stylelint-config-standard-scss" ], "plugins": [ "stylelint-scss" diff --git a/app/frontend/app.ts b/app/frontend/app.ts index 9d189f3..be2d5c7 100644 --- a/app/frontend/app.ts +++ b/app/frontend/app.ts @@ -1,3 +1 @@ -import '@styles/app.scss'; import '@pkg/stimulus'; -import '@pkg/flowbite'; diff --git a/app/frontend/constants/http.ts b/app/frontend/constants/http.ts deleted file mode 100644 index 177d9e5..0000000 --- a/app/frontend/constants/http.ts +++ /dev/null @@ -1,5 +0,0 @@ -declare enum HttpCodes { - OK = 200 -} - -export {HttpCodes}; diff --git a/app/frontend/constants/theme.ts b/app/frontend/constants/theme.ts deleted file mode 100644 index f724249..0000000 --- a/app/frontend/constants/theme.ts +++ /dev/null @@ -1,8 +0,0 @@ -const THEME_LOCAL_STORAGE_ID = 'theme'; - -enum Theme { - LIGHT = 'light', - DARK = 'dark' -} - -export {THEME_LOCAL_STORAGE_ID, Theme}; diff --git a/app/frontend/controllers.json b/app/frontend/controllers/controllers.json similarity index 100% rename from app/frontend/controllers.json rename to app/frontend/controllers/controllers.json diff --git a/app/frontend/controllers/hello_controller.ts b/app/frontend/controllers/hello_controller.ts deleted file mode 100644 index 861e403..0000000 --- a/app/frontend/controllers/hello_controller.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {Controller} from '@hotwired/stimulus'; - -export default class extends Controller { - - static targets: Array = ['container']; - declare readonly containerTarget: HTMLElement; - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - afterLoad(identifier: string, application: HTMLElement): void { - console.log(this.containerTarget); - } -} diff --git a/app/frontend/domain/theme.ts b/app/frontend/domain/theme.ts deleted file mode 100644 index 40c7070..0000000 --- a/app/frontend/domain/theme.ts +++ /dev/null @@ -1,40 +0,0 @@ -import {Theme, THEME_LOCAL_STORAGE_ID} from '@const/theme'; - -const DARK_MODE_QUERY: MediaQueryList = window.matchMedia('(prefers-color-scheme: dark)'); - -function initTheme(): void { - handleTheme(DARK_MODE_QUERY.matches); - DARK_MODE_QUERY.addEventListener('change', handleThemeChange); -} - -function handleThemeChange(e: MediaQueryListEvent): void { - handleTheme(e.matches); -} - -function handleTheme(prefersDark: boolean): void { - const theme = localStorage[THEME_LOCAL_STORAGE_ID]; - if (theme === Theme.DARK) { - document.documentElement.classList.add(Theme.DARK); - console.log('explicit dark'); - } else if (!(THEME_LOCAL_STORAGE_ID in localStorage) && prefersDark) { - document.documentElement.classList.add(Theme.DARK); - console.log('implicit dark'); - } else { - document.documentElement.classList.remove(Theme.DARK); - console.log('light'); - } -} - -export {initTheme}; - -// On page load or when changing themes, best to add inline in `head` to avoid FOUC - - -// Whenever the user explicitly chooses light mode -//localStorage.theme = 'light'; - -// Whenever the user explicitly chooses dark mode -//localStorage.theme = 'dark'; - -// Whenever the user explicitly chooses to respect the OS preference -//localStorage.removeItem('theme'); diff --git a/app/frontend/mod.just b/app/frontend/mod.just index d4c9dc8..bcc527c 100644 --- a/app/frontend/mod.just +++ b/app/frontend/mod.just @@ -1,14 +1,15 @@ __default: - @../bin/just/choose.sh {{ source_file() }} choose + @../../bin/just/choose.sh {{ source_file() }} choose # Checks whether the requriements are met [group('main')] check: #!/bin/bash - source ../bin/just/colors.sh - source ../bin/just/check.sh + source ../../bin/just/colors.sh + source ../../bin/just/check.sh printf "${BLUE_BG}${BLACK_FG} Checking Frontend Requirements ${CLEAR}\n" + check_cmd "screen" "screen" check_cmd "volta" "Volta" check_cmd "node" "Node" check_cmd "npm" "NPM" @@ -39,7 +40,7 @@ session_name := "euph-website_frontend" [group('main')] up: halt #!/bin/bash - source ../bin/just/colors.sh + source ../../bin/just/colors.sh cd .. && screen -dmS {{ session_name }} npm run watch >> /dev/null if [ $? -eq 0 ]; then printf "${GREEN_FG}Frontend was started${CLEAR}\n" @@ -51,7 +52,7 @@ up: halt [group('main')] halt: #!/bin/bash - source ../bin/just/colors.sh + source ../../bin/just/colors.sh screen -XS {{ session_name }} quit >> /dev/null if [ $? -eq 0 ]; then printf "${GREEN_FG}Frontend was stopped${CLEAR}\n" @@ -60,7 +61,7 @@ halt: [group('main')] attach: #!/bin/bash - source ../bin/just/colors.sh + source ../../bin/just/colors.sh if screen -ls | grep -q {{ session_name }}; then screen -r {{ session_name }} else diff --git a/app/frontend/packages/flowbite.ts b/app/frontend/packages/flowbite.ts deleted file mode 100644 index 8b51c09..0000000 --- a/app/frontend/packages/flowbite.ts +++ /dev/null @@ -1,4 +0,0 @@ -import 'flowbite'; -import {initFlowbite} from 'flowbite'; - -initFlowbite(); diff --git a/app/frontend/styles/app.scss b/app/frontend/styles/app.scss deleted file mode 100644 index 4553c1f..0000000 --- a/app/frontend/styles/app.scss +++ /dev/null @@ -1,24 +0,0 @@ -@import "components/header"; -@import "components/burger-menu"; -@tailwind base; -@tailwind components; -@tailwind utilities; - -hr { - @apply h-px my-2 border-0; - @apply bg-gray-300 dark:bg-gray-500; -} - -.app { - &__text { - @apply text-gray-900 dark:text-gray-100 - } - - &__text-bold { - @apply app__text font-bold - } - - &__text-light { - @apply text-gray-500 dark:text-gray-300 font-light - } -} diff --git a/app/frontend/styles/components/burger-menu.scss b/app/frontend/styles/components/burger-menu.scss deleted file mode 100644 index a53be92..0000000 --- a/app/frontend/styles/components/burger-menu.scss +++ /dev/null @@ -1,79 +0,0 @@ -#burger-menu { - @apply fixed top-0 right-0 h-screen overflow-y-auto z-40; - @apply flex flex-col p-2 gap-2 w-64; - @apply bg-gray-100 dark:bg-gray-700; - - - &__button-open { - @apply ml-auto h-full aspect-square; - } - - &__button-close { - @apply h-8 w-8 absolute right-2 aspect-square; - } - - &__user-section { - @apply flex flex-col items-center; - @apply text-black dark:text-white; - } - - &__user-picture-wrapper { - @apply w-1/3 aspect-square mx-auto; - } - - &__user-name { - @apply app__text-bold text-xl; - @apply h-6; - } - - &__user-email { - @apply app__text-light text-base; - @apply h-6; - } - - &__user-info { - @apply app__text-light text-base; - @apply h-6; - } - - &__user-actions { - @apply inline-flex mt-2; - - button { - @apply inline-flex p-1; - @apply bg-transparent; - @apply app__text text-sm; - @apply border border-r-0 border-gray-900 dark:border-white; - - &:first-of-type { - @apply rounded-s-lg; - } - - &:last-of-type { - @apply rounded-e-lg border-r; - } - } - } - - &__login { - @apply flex p-2 gap-2 items-center justify-center; - @apply rounded-lg bg-blue-500 app__text; - } - - &__nav { - @apply text-lg app__text; - - &-list { - @apply flex flex-col gap-2; - } - - &-item { - @apply h-8; - } - - &-link { - @apply flex p-1 gap-2 items-center; - @apply rounded-md hover:bg-gray-200 dark:hover:bg-gray-600; - } - } -} diff --git a/app/frontend/styles/components/header.scss b/app/frontend/styles/components/header.scss deleted file mode 100644 index 40637c4..0000000 --- a/app/frontend/styles/components/header.scss +++ /dev/null @@ -1,17 +0,0 @@ -#header { - @apply flex h-12 p-2 gap-2 items-center; - @apply bg-gray-300 dark:bg-gray-700; - - &__logo { - @apply h-full dark:hidden; - } - - &__logo-dark { - @apply h-full hidden dark:block; - } - - &__logo-text { - @apply text-lg text-center text-black dark:text-white; - } - -} diff --git a/app/frontend/templates/base.html.twig b/app/frontend/templates/base.html.twig index 12c356b..cb37b51 100644 --- a/app/frontend/templates/base.html.twig +++ b/app/frontend/templates/base.html.twig @@ -15,14 +15,14 @@ + {{ encore_entry_link_tags('app') }} - {{ encore_entry_script_tags('theme') }} {{ encore_entry_script_tags('app') }} {% block title %}Euph{% endblock %} - -{% include 'components/header.html.twig' %} + + {% block body %}{% endblock %} diff --git a/app/frontend/templates/components/Header.html.twig b/app/frontend/templates/components/Header.html.twig new file mode 100644 index 0000000..a6eb886 --- /dev/null +++ b/app/frontend/templates/components/Header.html.twig @@ -0,0 +1,4 @@ +
+ +

This is Header

+
diff --git a/app/frontend/templates/components/burger-menu.html.twig b/app/frontend/templates/components/burger-menu.html.twig deleted file mode 100644 index 83d6e3e..0000000 --- a/app/frontend/templates/components/burger-menu.html.twig +++ /dev/null @@ -1,71 +0,0 @@ - -
- -
-
- {% include 'icons/user-placeholder.svg.twig' with {'class': 'h-full w-full'} %} -
- {% if logged_in %} - Username - username@email.com -
- {{ _self.user_action('Profile', 'user') }} - {{ _self.user_action('Settings', 'settings') }} - {{ _self.user_action('Logout', 'logout') }} -
- {% else %} - not logged in - {% endif %} -
- {% if not logged_in %} -
- - {% include 'icons/euphcloud.svg.twig' with {'class': 'w-6 h-6'} %} - Login with Euphcloud - - {% endif %} -
- -
- -{% macro user_action(name, icon) %} - -{% endmacro %} - -{% macro nav_item(name, href, icon) %} -
  • - - {% include 'icons/' ~ icon ~ '.svg.twig' with {'class': 'h-6 w-6'} %} - {{ name }} - -
  • -{% endmacro %} diff --git a/app/frontend/templates/components/header.html.twig b/app/frontend/templates/components/header.html.twig deleted file mode 100644 index b2de304..0000000 --- a/app/frontend/templates/components/header.html.twig +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/app/frontend/templates/icons/bars.svg.twig b/app/frontend/templates/icons/bars.svg.twig deleted file mode 100644 index 24f49af..0000000 --- a/app/frontend/templates/icons/bars.svg.twig +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/app/frontend/templates/icons/close.svg.twig b/app/frontend/templates/icons/close.svg.twig deleted file mode 100644 index da43584..0000000 --- a/app/frontend/templates/icons/close.svg.twig +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/app/frontend/templates/icons/euphcloud.svg.twig b/app/frontend/templates/icons/euphcloud.svg.twig deleted file mode 100644 index 347cfc2..0000000 --- a/app/frontend/templates/icons/euphcloud.svg.twig +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/app/frontend/templates/icons/logout.svg.twig b/app/frontend/templates/icons/logout.svg.twig deleted file mode 100644 index d346f36..0000000 --- a/app/frontend/templates/icons/logout.svg.twig +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/app/frontend/templates/icons/settings.svg.twig b/app/frontend/templates/icons/settings.svg.twig deleted file mode 100644 index bfbcdbc..0000000 --- a/app/frontend/templates/icons/settings.svg.twig +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/app/frontend/templates/icons/user-placeholder.svg.twig b/app/frontend/templates/icons/user-placeholder.svg.twig deleted file mode 100644 index 18afcc6..0000000 --- a/app/frontend/templates/icons/user-placeholder.svg.twig +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/app/frontend/templates/icons/user.svg.twig b/app/frontend/templates/icons/user.svg.twig deleted file mode 100644 index c0f8235..0000000 --- a/app/frontend/templates/icons/user.svg.twig +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/app/frontend/templates/sites/index.html.twig b/app/frontend/templates/sites/index.html.twig new file mode 100644 index 0000000..3a4a600 --- /dev/null +++ b/app/frontend/templates/sites/index.html.twig @@ -0,0 +1,4 @@ +{% extends 'base.html.twig' %} +{% block body %} +

    A Phrase

    +{% endblock %} diff --git a/app/frontend/templates/test/styles.twig b/app/frontend/templates/test/styles.twig deleted file mode 100644 index 6c6c11d..0000000 --- a/app/frontend/templates/test/styles.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block body %} -

    H1 Hello World

    -

    H2 Hello World

    -

    H3 Hello World

    -

    H4 Hello World

    -
    H5 Hello World
    -
    H6 Hello World
    -

    P Lorem ipsum dolor sit amet, consectetur adipisicing elit. - Ad consectetur consequuntur culpa debitis dignissimos - dolore est ex illo iure maxime, molestiae pariatur recusandae, - reiciendis saepe similique temporibus voluptatum? Eos, - repudiandae! -

    - A Link - - - - - - - -{% endblock %} diff --git a/app/frontend/theme.ts b/app/frontend/theme.ts deleted file mode 100644 index 7f3974a..0000000 --- a/app/frontend/theme.ts +++ /dev/null @@ -1,3 +0,0 @@ -import {initTheme} from '@domain/theme'; - -initTheme(); diff --git a/app/frontend/tsconfig.json b/app/frontend/tsconfig.json index 3d85e89..9de23d3 100644 --- a/app/frontend/tsconfig.json +++ b/app/frontend/tsconfig.json @@ -13,8 +13,8 @@ "~*": [ ".*" ], - "@styles/*": [ - "./styles/*" + "@components/*": [ + "./templates/components/*" ], "@controllers/*": [ "./controllers/*" @@ -22,12 +22,6 @@ "@pkg/*": [ "./packages/*" ], - "@domain/*": [ - "./domain/*" - ], - "@const/*": [ - "./constants/*" - ], "#types/*": [ "./types/*" ] diff --git a/app/package-lock.json b/app/package-lock.json index c16d601..b51b304 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -5,10 +5,6 @@ "packages": { "": { "license": "UNLICENSED", - "dependencies": { - "easymde": "^2.18.0", - "flowbite": "^2.4.1" - }, "devDependencies": { "@babel/core": "^7.23.3", "@babel/eslint-parser": "^7.23.3", @@ -27,19 +23,13 @@ "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^9.0.0", "ignore-loader": "^0.1.2", - "jquery": "^3.7.1", - "junit-report-merger": "^6.0.3", - "postcss": "^8.4.39", - "postcss-loader": "^7.3.4", "prettier": "^2.8.8", "regenerator-runtime": "^0.13.9", "sass": "^1.69.4", "sass-loader": "^13.3.2", "stylelint": "^16.2.1", "stylelint-config-standard-scss": "^13.0.0", - "stylelint-config-tailwindcss": "^0.0.7", "stylelint-scss": "^6.3.1", - "tailwindcss": "^3.4.4", "ts-loader": "^9.5.0", "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "^5.2.2", @@ -57,18 +47,6 @@ "node": ">=0.10.0" } }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -2260,54 +2238,6 @@ "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" } }, - "node_modules/@oozcitak/dom": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", - "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", - "dev": true, - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/url": "1.0.4", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/infra": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", - "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", - "dev": true, - "dependencies": { - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@oozcitak/url": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", - "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", - "dev": true, - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/util": { - "version": "8.3.8", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", - "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", - "dev": true, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2322,56 +2252,12 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -2696,14 +2582,6 @@ "@types/node": "*" } }, - "node_modules/@types/codemirror": { - "version": "5.60.15", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", - "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", - "dependencies": { - "@types/tern": "*" - } - }, "node_modules/@types/connect": { "version": "3.4.37", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", @@ -2761,7 +2639,8 @@ "node_modules/@types/estree": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==" + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.20", @@ -2842,11 +2721,6 @@ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, - "node_modules/@types/marked": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz", - "integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==" - }, "node_modules/@types/mime": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", @@ -2886,11 +2760,6 @@ "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", "dev": true }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" - }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -2942,14 +2811,6 @@ "@types/node": "*" } }, - "node_modules/@types/tern": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", - "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", - "dependencies": { - "@types/estree": "*" - } - }, "node_modules/@types/webpack-env": { "version": "1.18.3", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.3.tgz", @@ -3650,12 +3511,6 @@ "node": ">=4" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -3669,12 +3524,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3947,13 +3796,13 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -3961,7 +3810,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -4023,12 +3872,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4494,17 +4343,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -4515,14 +4353,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4549,15 +4392,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4757,19 +4591,6 @@ "node": ">=6" } }, - "node_modules/codemirror": { - "version": "5.65.16", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", - "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==" - }, - "node_modules/codemirror-spell-checker": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/codemirror-spell-checker/-/codemirror-spell-checker-1.1.2.tgz", - "integrity": "sha512-2Tl6n0v+GJRsC9K3MLCdLaMOmvWL0uukajNJseorZJsslaxZyZMgENocPU8R0DyoTAiKsyqiemSOZo7kjGV0LQ==", - "dependencies": { - "typo-js": "*" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -4981,9 +4802,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -5433,6 +5254,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -5450,17 +5272,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -5527,12 +5352,6 @@ "node": ">= 0.8.0" } }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -5545,12 +5364,6 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -5663,18 +5476,6 @@ "node": ">= 4.0.0" } }, - "node_modules/easymde": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/easymde/-/easymde-2.18.0.tgz", - "integrity": "sha512-IxVVUxNWIoXLeqtBU4BLc+eS/ScYhT1Dcb6yF5Wchoj1iXAV+TIIDWx+NCaZhY7RcSHqDPKllbYq7nwGKILnoA==", - "dependencies": { - "@types/codemirror": "^5.60.4", - "@types/marked": "^4.0.7", - "codemirror": "^5.63.1", - "codemirror-spell-checker": "1.1.2", - "marked": "^4.1.0" - } - }, "node_modules/eazy-logger": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", @@ -5906,6 +5707,27 @@ "stackframe": "^1.3.4" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", @@ -6249,19 +6071,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -6313,11 +6122,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -6375,17 +6179,17 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -6537,9 +6341,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -6657,29 +6461,10 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, - "node_modules/flowbite": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/flowbite/-/flowbite-2.4.1.tgz", - "integrity": "sha512-I++vDsSOOlzHNuxY2OcFMNVC4CNzpPU2K14YHJ81cYrANXdzgizqniMB/1KQ219x8fqw+S0msY9Q45ZSXDqAPw==", - "dependencies": { - "@popperjs/core": "^2.9.3", - "flowbite-datepicker": "^1.3.0", - "mini-svg-data-uri": "^1.4.3" - } - }, - "node_modules/flowbite-datepicker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flowbite-datepicker/-/flowbite-datepicker-1.3.0.tgz", - "integrity": "sha512-CLVqzuoE2vkUvWYK/lJ6GzT0be5dlTbH3uuhVwyB67+PjqJWABm2wv68xhBf5BqjpBxvTSQ3mrmLHpPJ2tvrSQ==", - "dependencies": { - "@rollup/plugin-node-resolve": "^15.2.3", - "flowbite": "^2.0.0" - } - }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -6912,10 +6697,25 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6939,16 +6739,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7136,21 +6940,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -7175,6 +6979,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -7575,24 +7380,11 @@ "node": ">=8" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -7645,11 +7437,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7919,16 +7706,12 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "optional": true, + "peer": true, "bin": { "jiti": "bin/jiti.js" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8007,33 +7790,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/junit-report-merger": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-6.0.3.tgz", - "integrity": "sha512-gtGHrq+otZLtSP1FPDSKYiFkDayCoEx1wslgzodLVxckwL8XgdbQlko1mz9wdXqieeniCQjkJFrTtqDEsTWzTQ==", - "dev": true, - "dependencies": { - "commander": "~11.1.0", - "fast-glob": "~3.3.0", - "xmlbuilder2": "3.1.1" - }, - "bin": { - "jrm": "cli.js", - "junit-report-merger": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/junit-report-merger/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -8314,17 +8070,6 @@ "yallist": "^3.0.2" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -8531,14 +8276,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -8600,17 +8337,6 @@ "multicast-dns": "cli.js" } }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -8769,20 +8495,14 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8966,12 +8686,6 @@ "node": ">=6" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9047,7 +8761,8 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-scurry": { "version": "1.11.1", @@ -9099,6 +8814,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -9136,15 +8852,6 @@ "node": ">=0.10.0" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", @@ -9373,106 +9080,13 @@ "postcss": "^8.2.15" } }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "dev": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "cosmiconfig": "^8.3.5", "jiti": "^1.20.0", @@ -9495,6 +9109,8 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -9521,6 +9137,8 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "optional": true, + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -9691,25 +9309,6 @@ "postcss": "^8.1.0" } }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, "node_modules/postcss-normalize-charset": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", @@ -10123,9 +9722,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -10146,24 +9745,6 @@ "node": ">= 0.8" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -10320,6 +9901,7 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -10742,15 +10324,17 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10811,14 +10395,18 @@ "dev": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11014,12 +10602,6 @@ "wbuf": "^1.7.3" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -11310,16 +10892,6 @@ } } }, - "node_modules/stylelint-config-tailwindcss": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/stylelint-config-tailwindcss/-/stylelint-config-tailwindcss-0.0.7.tgz", - "integrity": "sha512-n2dCWH+0ppr0/by4EYCLWW7g5LU+l4UzUIsYS7xbVHqvm9UWa7UhltNdNiz5NmLF/FmbJR4Yd/v9DuUGvLw1Tg==", - "dev": true, - "peerDependencies": { - "stylelint": ">=13.13.1", - "tailwindcss": ">=2.2.16" - } - }, "node_modules/stylelint-scss": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.3.1.tgz", @@ -11538,96 +11110,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -11678,6 +11160,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -11833,55 +11316,6 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", - "dev": 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.21.0", - "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.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -11993,27 +11427,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -12089,12 +11502,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, "node_modules/ts-loader": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", @@ -12375,11 +11782,6 @@ "node": ">=14.17" } }, - "node_modules/typo-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.2.3.tgz", - "integrity": "sha512-67Hyl94beZX8gmTap7IDPrG5hy2cHftgsCAcGvE1tzuxGT+kRB+zSBin0wIMwysYw8RUCBCvv9UfQl8TNM75dA==" - }, "node_modules/ua-parser-js": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", @@ -12662,9 +12064,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { "colorette": "^2.0.10", @@ -13131,43 +12533,6 @@ } } }, - "node_modules/xmlbuilder2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", - "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", - "dev": true, - "dependencies": { - "@oozcitak/dom": "1.15.10", - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8", - "js-yaml": "3.14.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/xmlbuilder2/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/xmlbuilder2/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -13239,6 +12604,22 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "vendor/symfony/ux-svelte/assets": { + "name": "@symfony/ux-svelte", + "version": "1.0.0", + "extraneous": true, + "license": "MIT", + "devDependencies": { + "@hotwired/stimulus": "^3.0.0", + "@sveltejs/vite-plugin-svelte": "^2.4.6", + "@types/webpack-env": "^1.16", + "svelte": "^3.0 || ^4.0" + }, + "peerDependencies": { + "@hotwired/stimulus": "^3.0.0", + "svelte": "^3.0 || ^4.0" + } } } } diff --git a/app/package.json b/app/package.json index fd87afe..e6513ed 100644 --- a/app/package.json +++ b/app/package.json @@ -8,12 +8,8 @@ "build": "encore production --progress", "lint:ts": "cd frontend && eslint .", "lint:ts:fix": "cd frontend && eslint . --fix", - "lint:scss": "cd frontend/styles && stylelint .", - "lint:scss:fix": "cd frontend/styles && stylelint . --fix" - }, - "dependencies": { - "easymde": "^2.18.0", - "flowbite": "^2.4.1" + "lint:scss": "cd frontend && stylelint .", + "lint:scss:fix": "cd frontend && stylelint . --fix" }, "devDependencies": { "@babel/core": "^7.23.3", @@ -33,19 +29,13 @@ "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^9.0.0", "ignore-loader": "^0.1.2", - "jquery": "^3.7.1", - "junit-report-merger": "^6.0.3", - "postcss": "^8.4.39", - "postcss-loader": "^7.3.4", "prettier": "^2.8.8", "regenerator-runtime": "^0.13.9", "sass": "^1.69.4", "sass-loader": "^13.3.2", "stylelint": "^16.2.1", "stylelint-config-standard-scss": "^13.0.0", - "stylelint-config-tailwindcss": "^0.0.7", "stylelint-scss": "^6.3.1", - "tailwindcss": "^3.4.4", "ts-loader": "^9.5.0", "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "^5.2.2", diff --git a/app/postcss.config.js b/app/postcss.config.js deleted file mode 100644 index 33ad091..0000000 --- a/app/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/app/symfony.lock b/app/symfony.lock index 6645b3c..144ca1d 100644 --- a/app/symfony.lock +++ b/app/symfony.lock @@ -249,6 +249,42 @@ "config/packages/uid.yaml" ] }, + "symfony/ux-icons": { + "version": "2.18", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.17", + "ref": "803a3bbd5893f9584969ab8670290cdfb6a0a5b5" + }, + "files": [ + "assets/icons/symfony.svg" + ] + }, + "symfony/ux-svelte": { + "version": "2.18", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.9", + "ref": "4a6ee82d817d4e9be8d4a861476a112011d701e1" + }, + "files": [ + "assets/svelte/controllers/Hello.svelte" + ] + }, + "symfony/ux-twig-component": { + "version": "2.18", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.13", + "ref": "67814b5f9794798b885cec9d3f48631424449a01" + }, + "files": [ + "config/packages/twig_component.yaml" + ] + }, "symfony/validator": { "version": "6.3", "recipe": { diff --git a/app/tailwind.config.js b/app/tailwind.config.js deleted file mode 100644 index df0c883..0000000 --- a/app/tailwind.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - "./frontend/**/*.ts", - "./frontend/templates/**/*.html.twig", - "./node_modules/flowbite/**/*.js" - ], - theme: { - extend: { - - }, - }, - plugins: [ - require('flowbite/plugin') - ], - darkMode: 'selector' -} - diff --git a/app/webpack.config.js b/app/webpack.config.js index bd8d5dc..50c3e71 100644 --- a/app/webpack.config.js +++ b/app/webpack.config.js @@ -14,16 +14,9 @@ Encore .setPublicPath('/build') .copyFiles({ from: './assets/', - to: '../[path][name].[ext]', - pattern: /\.(?!scss|stylelint.*|json|woff).*$/ + to: '../[path][name].[ext]' }) - - // Code Entries .addEntry('app', './frontend/app.ts') - .addEntry('theme', './frontend/theme.ts') - - // Style Entries - //.addStyleEntry('name', './frontend/styles/name.scss') // Webpack .splitEntryChunks() @@ -38,9 +31,8 @@ Encore config.useBuiltIns = 'usage'; config.corejs = '3.23'; }) - .enableStimulusBridge('./frontend/controllers.json') + .enableStimulusBridge('./frontend/controllers/controllers.json') .enableSassLoader() - .enablePostCssLoader() .enableTypeScriptLoader(function tsconfigCallback(tsConfig) { tsConfig.configFile = TS_CONFIG_PATH; }) diff --git a/app/bin/deploy.sh b/bin/deploy.sh similarity index 100% rename from app/bin/deploy.sh rename to bin/deploy.sh diff --git a/bin/just/.gitignore b/bin/just/.gitignore new file mode 100644 index 0000000..ceddaa3 --- /dev/null +++ b/bin/just/.gitignore @@ -0,0 +1 @@ +.cache/ diff --git a/app/bin/just/check.sh b/bin/just/check.sh similarity index 84% rename from app/bin/just/check.sh rename to bin/just/check.sh index d377ad5..83f97ad 100644 --- a/app/bin/just/check.sh +++ b/bin/just/check.sh @@ -9,5 +9,5 @@ check() { } check_cmd() { - check "$(command -v $1 >/dev/null 2>&1)" $2 + check "$(command -v $1 >/dev/null 2>&1)" "$2" } diff --git a/app/bin/just/choose.sh b/bin/just/choose.sh similarity index 64% rename from app/bin/just/choose.sh rename to bin/just/choose.sh index eec0dad..29738a3 100755 --- a/app/bin/just/choose.sh +++ b/bin/just/choose.sh @@ -9,9 +9,9 @@ function preview() { if [[ -z "$recipe" ]] || echo $recipe | grep -q "^\["; then printf "${RED_FG}Select this to Exit${CLEAR}" elif [[ "$content" == *" ..." ]]; then - just_wrapper --list $recipe | highlight --out-format xterm256 --syntax conf + hash_highlight "$(just_wrapper --list $recipe)" "conf" else - just_wrapper --show $recipe | highlight --out-format xterm256 --syntax sh + hash_highlight "$(just_wrapper --show $recipe)" "sh" fi } @@ -33,7 +33,19 @@ function choose_truncate() { function choose_list() { just_wrapper -l --no-aliases --list-heading="" | awk '{$1=$1};1' } - +function hash_highlight() { + cache_dir="$(dirname ${BASH_SOURCE[0]})/.cache" + hash=$(echo $1 | md5sum | cut -d ' ' -f1) + file="$cache_dir/$hash" + if [[ -e $file ]]; then + cat $file + else + mkdir -p $cache_dir + data=$(printf "$1" | highlight --out-format xterm256 --syntax "$2") + printf "$data" + printf "$data" > $file + fi +} case "$action" in *choose) choose;; *preview) preview;; diff --git a/app/bin/just/colors.sh b/bin/just/colors.sh similarity index 100% rename from app/bin/just/colors.sh rename to bin/just/colors.sh