diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..744c7d6 --- /dev/null +++ b/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [], + "plugins": [ + [ + "prismjs", + { + "languages": ["html", "markdown", "markup"], + "theme": "okaidia", + "css": false + } + ] + ] +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..3c174b3 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,70 @@ +{ + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module", + "ecmaFeatures": {} + }, + "rules": { + "constructor-super": 2, + "for-direction": 2, + "getter-return": 2, + "no-case-declarations": 2, + "no-class-assign": 2, + "no-compare-neg-zero": 2, + "no-cond-assign": 2, + "no-console": 1, + "no-const-assign": 2, + "no-constant-condition": 2, + "no-control-regex": 1, + "no-debugger": 2, + "no-delete-var": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty": 2, + "no-empty-character-class": 2, + "no-empty-pattern": 2, + "no-ex-assign": 2, + "no-extra-boolean-cast": 2, + "no-extra-semi": 2, + "no-fallthrough": 2, + "no-func-assign": 2, + "no-global-assign": 2, + "no-inner-declarations": 2, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-mixed-spaces-and-tabs": 2, + "no-new-symbol": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-self-assign": 2, + "no-sparse-arrays": 2, + "no-this-before-super": 2, + "no-undef": 2, + "no-unexpected-multiline": 2, + "no-unreachable": 2, + "no-unsafe-finally": 2, + "no-unsafe-negation": 2, + "no-unused-labels": 2, + "no-unused-vars": 1, + "no-useless-escape": 1, + "require-yield": 2, + "use-isnan": 2, + "valid-typeof": 2, + "no-duplicate-imports": 2 + }, + "env": { + "node": true, + "browser": true, + "es6": true + }, + "globals": { + "_": false, + "hljs": false, + "Sortable": false, + "Prism": false + } +} diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php new file mode 100644 index 0000000..cd8588c --- /dev/null +++ b/.php-cs-fixer.php @@ -0,0 +1,74 @@ +setRiskyAllowed(true) + ->setRules([ + '@PSR12' => true, + 'array_indentation' => true, + 'array_syntax' => [ + 'syntax' => 'short', + ], + 'combine_consecutive_unsets' => true, + 'method_chaining_indentation' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'const' => 'none', + 'method' => 'one', + 'property' => 'none', + 'trait_import' => 'none', + ], + ], + 'multiline_whitespace_before_semicolons' => [ + 'strategy' => 'no_multi_line', + ], + 'single_quote' => false, + + 'binary_operator_spaces' => [ + 'default' => 'single_space', + 'operators' => [ + '=' => 'align_single_space_minimal', + '=>' => 'align_single_space_minimal', + ], + ], + 'braces' => [ + 'allow_single_line_closure' => true, + ], + 'concat_space' => [ + 'spacing' => 'one', + ], + 'declare_equal_normalize' => true, + 'function_typehint_space' => true, + 'single_line_comment_style' => [ + 'comment_types' => [ + 'hash', + ], + ], + 'include' => true, + 'lowercase_cast' => true, + 'no_extra_blank_lines' => [ + 'tokens' => [ + 'curly_brace_block', + 'extra', + 'parenthesis_brace_block', + 'throw', + ] + ], + 'no_multiline_whitespace_around_double_arrow' => true, + 'no_spaces_around_offset' => true, + 'no_unused_imports' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'object_operator_without_whitespace' => true, + 'single_blank_line_before_namespace' => true, + 'ternary_operator_spaces' => true, + 'trim_array_spaces' => true, + 'unary_operator_spaces' => true, + 'whitespace_after_comma_in_array' => true, + 'single_line_after_imports' => true, + 'ordered_imports' => [ + 'sort_algorithm' => 'none', + ], + //Other rules here... + ]) + ->setLineEnding("\n"); diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f967116 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +.babelrc +README.md +*.twig +*.sass +*.json +*.php +*.md diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..57b161e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,36 @@ +{ + "overrides": [ + { + "files": ".prettierrc", + "options": { "parser": "json" } + }, + { + "files": "*.scss", + "options": { + "tabWidth": 4, + "semi": false, + "singleQuote": true, + "printWidth": 90 + } + }, + { + "files": "*.js", + "options": { + "arrowParens": "avoid", + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "bracketSameLine": false, + "jsxSingleQuote": true, + "proseWrap": "preserve", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "useTabs": true, + "tabWidth": 4, + "printWidth": 90 + } + } + ] +} diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000..425b4df --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-standard" +} \ No newline at end of file diff --git a/composer.json b/composer.json index 9c6a831..ff9348b 100644 --- a/composer.json +++ b/composer.json @@ -7,14 +7,16 @@ "php": ">=8.1", "ext-ctype": "*", "ext-iconv": "*", + "sensio/framework-extra-bundle": "^6.2", "symfony/console": "6.1.*", "symfony/dotenv": "6.1.*", "symfony/flex": "^2", "symfony/framework-bundle": "6.1.*", "symfony/runtime": "6.1.*", - "symfony/yaml": "6.1.*" - }, - "require-dev": { + "symfony/twig-bundle": "6.1.*", + "symfony/yaml": "6.1.*", + "twig/extra-bundle": "^2.12|^3.0", + "twig/twig": "^2.12|^3.0" }, "config": { "allow-plugins": { diff --git a/composer.lock b/composer.lock index 1b963b8..5a321b2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,157 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "48809d75bae86e25d9718afade8e07e9", + "content-hash": "bb7131922e1a9646392ebda400b265e9", "packages": [ + { + "name": "doctrine/annotations", + "version": "1.13.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.3" + }, + "time": "2022-07-02T10:48:51+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, { "name": "psr/cache", "version": "3.0.0", @@ -208,6 +357,84 @@ }, "time": "2021-07-14T16:46:02+00:00" }, + { + "name": "sensio/framework-extra-bundle", + "version": "v6.2.9", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "dcfac94d6bdcf95c126e8ccac2104917c7c8f135" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/dcfac94d6bdcf95c126e8ccac2104917c7c8f135", + "reference": "dcfac94d6bdcf95c126e8ccac2104917c7c8f135", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" + }, + "conflict": { + "doctrine/doctrine-cache-bundle": "<1.3.1", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/dbal": "^2.10|^3.0", + "doctrine/doctrine-bundle": "^1.11|^2.0", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/monolog-bridge": "^4.0|^5.0|^6.0", + "symfony/monolog-bundle": "^3.2", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^1.34|^2.4|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "6.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" + }, + "exclude-from-classmap": [ + "/tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "support": { + "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.9" + }, + "time": "2022-11-01T17:17:13+00:00" + }, { "name": "symfony/cache", "version": "v6.1.7", @@ -2126,6 +2353,295 @@ ], "time": "2022-10-10T09:34:31+00:00" }, + { + "name": "symfony/translation-contracts", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc", + "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "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 translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.1.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": "2022-06-27T17:24:16+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v6.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "10f4ccba086ca81bbac9ee5e065d9f99565b3983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/10f4ccba086ca81bbac9ee5e065d9f99565b3983", + "reference": "10f4ccba086ca81bbac9ee5e065d9f99565b3983", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.4", + "symfony/form": "<6.1", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "egulias/email-validator": "^2.1.10|^3", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^6.1", + "symfony/html-sanitizer": "^6.1", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^5.4|^6.0", + "symfony/security-http": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/web-link": "^5.4|^6.0", + "symfony/workflow": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "suggest": { + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/html-sanitizer": "For using the HtmlSanitizerExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security-core": "For using the SecurityExtension", + "symfony/security-csrf": "For using the CsrfExtension", + "symfony/security-http": "For using the LogoutUrlExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v6.1.7" + }, + "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": "2022-10-19T08:10:53+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v6.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "a2abab10068525a7f5a879e40e411d369d688545" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a2abab10068525a7f5a879e40e411d369d688545", + "reference": "a2abab10068525a7f5a879e40e411d369d688545", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/twig-bridge": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/web-link": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bundle/tree/v6.1.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": "2022-05-27T16:55:36+00:00" + }, { "name": "symfony/var-dumper", "version": "v6.1.6", @@ -2359,6 +2875,161 @@ } ], "time": "2022-10-07T08:04:03+00:00" + }, + { + "name": "twig/extra-bundle", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "2e58256b0e9fe52f30149347c0547e4633304765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/2e58256b0e9fe52f30149347c0547e4633304765", + "reference": "2e58256b0e9fe52f30149347c0547e4633304765", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.7|^3.0" + }, + "require-dev": { + "league/commonmark": "^1.0|^2.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^2.12|^3.0", + "twig/html-extra": "^2.12|^3.0", + "twig/inky-extra": "^2.12|^3.0", + "twig/intl-extra": "^2.12|^3.0", + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-01-04T13:58:53+00:00" + }, + { + "name": "twig/twig", + "version": "v3.4.3", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", + "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2022-09-28T08:42:51+00:00" } ], "packages-dev": [], diff --git a/config/bundles.php b/config/bundles.php index 49d3fb6..a0be87b 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -2,4 +2,7 @@ return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], ]; diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml new file mode 100644 index 0000000..1821ccc --- /dev/null +++ b/config/packages/sensio_framework_extra.yaml @@ -0,0 +1,3 @@ +sensio_framework_extra: + router: + annotations: false diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 0000000..f9f4cc5 --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,6 @@ +twig: + default_path: '%kernel.project_dir%/templates' + +when@test: + twig: + strict_variables: true diff --git a/package.json b/package.json new file mode 100644 index 0000000..810adb5 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "the-bad-place", + "version": "1.0.0", + "private": true, + "apidoc": { + }, + "devDependencies": { + "@babel/preset-env": "^7.16.5", + "babel-cli": "^6.26.0", + "eslint": "^8.11.0", + "eslint-plugin-babel": "^5.3.1", + "parcel": "^2.0.1", + "prettier": "^2.6.0", + "stylelint": "^14.8.2" + }, + "dependencies": { + "@babel/core": "^7.16.5", + "@babel/eslint-parser": "^7.16.5", + "animejs": "^3.2.1", + "babel-preset-env": "^1.7.0", + "jsdoc": "^3.6.7", + "minami": "^1.2.3" + }, + "license": "UNLICENSED", + "author": "Are0h", + "scripts": { + "watch": "npx parcel watch src/com/Start.js --dist-dir public/assets/scripts --public-url /assets/scripts", + "build": "npx parcel build src/com/Start.js --dist-dir public/assets/scripts --public-url /assets/scripts" + }, + "description": "Because everyone on the web isn't nice", + "repository": "https://koodu.ubiqueros.com/are0h/TheBadSpace" +} diff --git a/public/assets/css/front/colors.css b/public/assets/css/front/colors.css new file mode 100644 index 0000000..3264b5f --- /dev/null +++ b/public/assets/css/front/colors.css @@ -0,0 +1,9 @@ +:root { + /* BASE COLORS */ + --primary: #140c08; + --secondary: #fc7472; + --highlight: #69b04f; + --white: #efebe3; + --grey: #abb7b7; + --black: #32302f; +} diff --git a/public/assets/css/front/frame.css b/public/assets/css/front/frame.css new file mode 100644 index 0000000..ff62cea --- /dev/null +++ b/public/assets/css/front/frame.css @@ -0,0 +1,37 @@ +html { + width: 100%; + height: 100%; + overflow: hidden; + font: 400 1.2em/1.4em var(--base-type); +} + +html body { + background: var(--primary); + color: var(--secondary); + margin: 0; + padding: 0; + height: 100%; + width: 100%; + overflow-y: scroll; + overflow-x: hidden; +} + +/* GLOBALS */ + +a { + color: var(--primary); + text-decoration: none; + border-bottom: 1px solid var(--secondary); + transition: all 0.2s linear; +} + +a:hover { + border-bottom: 1px solid var(--highlight); +} + +sup { + background: var(--black); + color: var(--white); + padding: 3px; + border-radius: 3px; +} diff --git a/public/assets/css/front/index.css b/public/assets/css/front/index.css new file mode 100644 index 0000000..d2e0006 --- /dev/null +++ b/public/assets/css/front/index.css @@ -0,0 +1,15 @@ +section[role="intro"] { + padding: 10px; + width: 300px; + color: var(--highlight); +} + +section[role="intro"] span[role="title"] { + font-size: 100px; + line-height: 80px; + color: var(--secondary); +} + +section[role="intro"] p { + color: var(--white); +} diff --git a/public/assets/css/front/start.css b/public/assets/css/front/start.css new file mode 100644 index 0000000..1690e6f --- /dev/null +++ b/public/assets/css/front/start.css @@ -0,0 +1,5 @@ +@import url("colors.css"); +@import url("forms.css"); +@import url("typography.css"); +@import url("frame.css"); +@import url("index.css"); diff --git a/public/assets/css/front/type/AlteHaasGroteskBold.ttf b/public/assets/css/front/type/AlteHaasGroteskBold.ttf new file mode 100644 index 0000000..d310391 Binary files /dev/null and b/public/assets/css/front/type/AlteHaasGroteskBold.ttf differ diff --git a/public/assets/css/front/type/AlteHaasGroteskBold.woff b/public/assets/css/front/type/AlteHaasGroteskBold.woff new file mode 100644 index 0000000..ebc8cd1 Binary files /dev/null and b/public/assets/css/front/type/AlteHaasGroteskBold.woff differ diff --git a/public/assets/css/front/type/AlteHaasGroteskRegular.ttf b/public/assets/css/front/type/AlteHaasGroteskRegular.ttf new file mode 100644 index 0000000..ff5edb9 Binary files /dev/null and b/public/assets/css/front/type/AlteHaasGroteskRegular.ttf differ diff --git a/public/assets/css/front/type/AlteHaasGroteskRegular.woff b/public/assets/css/front/type/AlteHaasGroteskRegular.woff new file mode 100644 index 0000000..c9e89e7 Binary files /dev/null and b/public/assets/css/front/type/AlteHaasGroteskRegular.woff differ diff --git a/public/assets/css/front/typography.css b/public/assets/css/front/typography.css new file mode 100644 index 0000000..2a02551 --- /dev/null +++ b/public/assets/css/front/typography.css @@ -0,0 +1,45 @@ +@font-face { + font-family: altehaasgrotesk; + font-weight: 400; + font-style: normal; + src: url("type/AlteHaasGroteskRegular.woff") format("woff"), + url("type/AlteHaasGroteskRegular.ttf") format("ttf"); +} + +@font-face { + font-family: altehaasgrotesk; + font-weight: 600; + font-style: oblique; + src: url("type/AlteHaasGroteskBold.woff") format("woff"), + url("type/AlteHaasGroteskBold.ttf") format("ttf"); +} + +:root { + --base-type: altehaasgrotesk, helvetica, arial, sans-serif; + --mono-type: "Lucida Console", monaco, monospace; +} + +h1, +h2, +h3 { + color: var(--secondary); +} + +h1 { + font-size: 2em; + font-weight: 700; +} + +h2 { + font-size: 1.8em; + font-weight: 600; +} + +h3 { + font-size: 1.5em; + font-weight: 500; +} + +main > article > h1 { + color: var(--primary); +} diff --git a/src/Controller/Routes/Front/Index.php b/src/Controller/Routes/Front/Index.php new file mode 100644 index 0000000..472e74b --- /dev/null +++ b/src/Controller/Routes/Front/Index.php @@ -0,0 +1,45 @@ +render("front/index.twig", [ + "title" => "This is The Bad Space", + ]); + /* + $result = $auth->status(); + if ($result["status"]) { + return $render->renderPage( + [ + "bgImage" => "/images/base/tweed-flowers.png", + "role" => $result["role"], + ], + "The Nile List | Welcome Back", + "front/index.html.twig" + ); + } else { + //back to index to login + header("Location:/login"); + return new Response("LOGGED IN"); + } + */ + } +} diff --git a/symfony.lock b/symfony.lock index 4bcac6c..6598050 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,4 +1,25 @@ { + "doctrine/annotations": { + "version": "1.13", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.10", + "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" + } + }, + "sensio/framework-extra-bundle": { + "version": "6.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.2", + "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" + }, + "files": [ + "config/packages/sensio_framework_extra.yaml" + ] + }, "symfony/console": { "version": "6.1", "recipe": { @@ -54,5 +75,21 @@ "config/packages/routing.yaml", "config/routes.yaml" ] + }, + "symfony/twig-bundle": { + "version": "6.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.4", + "ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387" + }, + "files": [ + "config/packages/twig.yaml", + "templates/base.html.twig" + ] + }, + "twig/extra-bundle": { + "version": "v3.4.0" } } diff --git a/templates/base/frame.twig b/templates/base/frame.twig new file mode 100644 index 0000000..e57ec96 --- /dev/null +++ b/templates/base/frame.twig @@ -0,0 +1,18 @@ + + + + + + {% block title %} + {{ title }} + {% endblock %} + + {% block stylesheets %}{% endblock %} + + +
+ {% block main %}{% endblock %} +
+ {% block javascripts %}{% endblock %} + + diff --git a/templates/front/index.twig b/templates/front/index.twig new file mode 100644 index 0000000..647298d --- /dev/null +++ b/templates/front/index.twig @@ -0,0 +1,12 @@ +{% block stylesheets %} + + {% endblock %} + + {% block main %} +
+ The Bad Space
+ Because some people are just awful humans. +

Coming Soonish... +

+
+ {% endblock %}