diff --git a/README.md b/README.md index d9c8c34..dd5eaed 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ bråtula viossa.net måde! We're here to build an informational website about Viossa. ## The Stack -**What will we be using to build this site?** ### Core - [TypeScript](https://www.typescriptlang.org/) @@ -14,12 +13,12 @@ bråtula viossa.net måde! We're here to build an informational website about Vi - [Vue 3](https://vuejs.org/) - [Vite](https://vite.dev/) -Additionally, we will be following [**atomic design principles**](https://bradfrost.com/blog/post/atomic-web-design/) to organize the components of the project. +See [**atomic design principles**](https://bradfrost.com/blog/post/atomic-web-design/) for guidance on designing components. ### Styling -- [Bulma](https://bulma.io/) -- [Tailwind CSS](https://tailwindcss.com/) -- [Sass](https://sass-lang.com/) +- [Bulma](https://bulma.io/) - the primary stylesheet, which supports lots of basic elements simply. Prototyping is easy, since Bulma is built around applying classes to generic elements like `div` et al in order to achieve visual componentness +- [Tailwind CSS](https://tailwindcss.com/) - Included supplimentarily: Bulma is opinionated and only maintained by one person, so we may discover it is inadequate for certain purposes. if necessary, we can use (or fully switch to) Tailwind. +- [Sass](https://sass-lang.com/) ### Backend - [Node.js](https://nodejs.org/) @@ -29,7 +28,6 @@ Additionally, we will be following [**atomic design principles**](https://bradfr - [ESLint](https://eslint.org/) ## Setup/Installation -**How do we install this project?** 1. Download and install Node.js and pnpm - [Node.js installation instructions](https://nodejs.org/en/download) diff --git a/apps/vdn-static/eslint.config.js b/apps/vdn-static/eslint.config.js index 6bf661b..8185819 100644 --- a/apps/vdn-static/eslint.config.js +++ b/apps/vdn-static/eslint.config.js @@ -1,24 +1,62 @@ -import js from '@eslint/js'; -import globals from 'globals'; -import ts from 'typescript-eslint'; -import vue from 'eslint-plugin-vue'; +import js from "@eslint/js"; +import globals from "globals"; +import ts from "typescript-eslint"; +import vue from "eslint-plugin-vue"; +import { defineConfig, globalIgnores } from "eslint/config"; +import vueParser from "vue-eslint-parser"; -export default ts.config( - { ignores: ['dist'] }, - { - extends: [ - js.configs.recommended, - ...ts.configs.recommendedTypeChecked, - ...vue.configs.recommendedTypeChecked, - ], - files: ['**/*.{js,ts,vue}'], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - parserOptions: { - projectService: true, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, -) +export default defineConfig([ + globalIgnores(["dist"]), + { + extends: [ + js.configs.recommended, + ts.configs.strictTypeChecked, + ...vue.configs["flat/essential"], + ], + files: ["./src/**/*.{js,ts,vue}"], + plugins: { vue }, + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + globals: globals.browser, + parser: vueParser, + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + parser: ts.parser, + extraFileExtensions: [".vue"], + }, + }, + rules: { + "vue/no-restricted-html-elements": [ + "error", + { + element: ["a", "RouterLink"], + message: "Use instead.", + }, + { element: ["i18n-t"], message: "Use instead." }, + { + element: ["RichTemplateParts"], + message: + "Do not use the internal component. Use instead.", + }, + ], + // allow interfaces to only extend another interface without adding properties + // good for aliasing more complex types + "@typescript-eslint/no-empty-object-type": [ + "error", + { allowInterfaces: "with-single-extends" }, + ], + "vue/no-ref-object-reactivity-loss": ["error"], + "@typescript/no-unnecessary-conditions": [ + "error", + { allowConstantLoopConditions: "only-allowed-literals" }, + ], + }, + }, + // disable multi-word-component-names for unplugin-vue-router + { + files: ["src/pages/**/*.vue"], + rules: { "vue/multi-word-component-names": "off" }, + }, +]); diff --git a/apps/vdn-static/index.html b/apps/vdn-static/index.html index 0dc687b..f968c16 100644 --- a/apps/vdn-static/index.html +++ b/apps/vdn-static/index.html @@ -1,15 +1,19 @@ - - - - - - - Viossa.net - - -
- - + + + + + + + + Viossa.net + + + +
+ + + diff --git a/apps/vdn-static/package.json b/apps/vdn-static/package.json index 25a0d3c..8bd09d9 100644 --- a/apps/vdn-static/package.json +++ b/apps/vdn-static/package.json @@ -9,8 +9,9 @@ "preview": "vite preview" }, "dependencies": { + "@fluent/bundle": "^0.19.1", "@tailwindcss/vite": "^4.1.6", - "@types/node": "^22.15.17", + "@types/node": "^22.15.31", "@vueuse/components": "^13.3.0", "@vueuse/core": "^13.3.0", "arktype": "^2.1.29", @@ -22,17 +23,20 @@ "vue-router": "^4.5.1" }, "devDependencies": { + "@eslint/js": "^9.39.2", "@repo/common": "workspace:*", "@vitejs/plugin-vue": "^5.2.3", "@vue/tsconfig": "^0.7.0", - "eslint": "^9.26.0", - "eslint-plugin-vue": "^10.1.0", + "eslint": "^9.39.2", + "eslint-plugin-vue": "^10.7.0", + "globals": "^17.3.0", "prettier": "^3.5.3", "sass": "^1.87.0", "typescript": "~5.8.3", - "typescript-eslint": "^8.32.1", + "typescript-eslint": "^8.55.0", "unplugin-vue-router": "^0.12.0", "vite": "^6.3.5", + "vue-eslint-parser": "^10.2.0", "vue-tsc": "^2.2.8" }, "packageManager": "pnpm@10.11.0" diff --git a/apps/vdn-static/src/App.vue b/apps/vdn-static/src/App.vue index 21b089e..517c29a 100644 --- a/apps/vdn-static/src/App.vue +++ b/apps/vdn-static/src/App.vue @@ -1,9 +1,14 @@