diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..d1ebf6f --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +bun latest diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 22a1505..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "recommendations": ["astro-build.astro-vscode"], - "unwantedRecommendations": [] -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index d642209..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "command": "./node_modules/.bin/astro dev", - "name": "Development server", - "request": "launch", - "type": "node-terminal" - } - ] -} diff --git a/astro.config.mjs b/astro.config.mjs index 882e651..80c24f8 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,4 +1,9 @@ -import { defineConfig } from 'astro/config'; +import { defineConfig } from 'astro/config' +import sitemap from "@astrojs/sitemap" +import vue from "@astrojs/vue" // https://astro.build/config -export default defineConfig({}); +export default defineConfig({ + output: "static", + integrations: [sitemap(),vue()] +}); diff --git a/bun.lockb b/bun.lockb index 8b97378..0f7ee12 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..cbe1b15 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,66 @@ +# git-cliff ~ default configuration file +# https://git-cliff.org/docs/configuration +# +# Lines starting with "#" are comments. +# Configuration options are organized into tables and keys. +# See documentation for more information on available options. + +[changelog] +# changelog header +header = """ +# Changelog\n +All notable changes to this project will be documented in this file.\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else %}\ + ## [lare] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | upper_first }} + {% for commit in commits %} + - {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\ + {% endfor %} +{% endfor %}\n +""" +# remove the leading and trailing whitespace from the template +trim = true +postprocessors = [ + { pattern = '(\w+)?#\d+', replace = "[$0](/${0})" }, + { pattern = '', replace = "https://github.com/project-118/columbine/pull" }, +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = false +# process each line of a commit as an individual commit +split_commits = false + +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^feat", group = "Features" }, + { message = "^refactor", group = "Changes" }, + { message = "^fix", group = "Bug Fixes" }, + { message = "^docs", group = "Documentation" }, + { message = "^chore", skip = true }, + { message = "^chore\\(deps\\)", skip = true }, + { body = ".*security", group = "Security" }, + { message = "^revert", group = "Revert", skip = true }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# glob pattern for matching git tags +tag_pattern = "v[0-9]*" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..c4a6239 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import antfu from "@antfu/eslint-config" + +export default await antfu({ + stylistic: { + indent: 2, + quotes: "double", + }, + typescript: true, + vue: true, + astro: true, + yaml: true, + rules: { + "curly": ["error", "all"], + "camelcase": ["warn", { + properties: "always", + ignoreImports: true, + }], + "ts/consistent-type-definitions": ["warn", "type"], + }, +}, { + files: ["**/*.astro"], + rules: { + "no-undef": ["off"], + }, +}, { + ignores: [ + "node_modules/", + "**/.pnpm-store/", + "dist/", + ".astro/", + ".direnv/", + ], +}) diff --git a/package.json b/package.json index d1a4a2e..3a551ec 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,27 @@ { - "name": "", + "name": "fensir", + "private": true, "type": "module", - "version": "0.0.1", - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro check && astro build", - "preview": "astro preview", - "astro": "astro" - }, + "version": "11.02.0", "dependencies": { - "astro": "^4.16.8", + "@astrojs/vue": "^4.4.0", + "@fontsource-variable/jetbrains-mono": "^5.1.1", + "astro": "^4.16.8" + }, + "devDependencies": { + "@antfu/eslint-config": "^2.16.2", "@astrojs/check": "^0.9.4", - "typescript": "^5.6.3" + "@astrojs/sitemap": "^3.2.1", + "@iconify-json/carbon": "^1.2.4", + "@lhci/cli": "0.13.x", + "@vitest/coverage-istanbul": "^1.6.0", + "eslint": "^9.2.0", + "eslint-plugin-astro": "^1.1.2", + "sharp": "^0.33.3", + "stylelint": "^16.5.0", + "stylelint-config-html": "^1.1.0", + "stylelint-config-standard": "^36.0.0", + "typescript": "^5.5.3", + "vitest": "^1.6.0" } } diff --git a/src/components/Button.vue b/src/components/Button.vue new file mode 100644 index 0000000..3bb80f8 --- /dev/null +++ b/src/components/Button.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/layouts/Base.astro b/src/layouts/Base.astro new file mode 100644 index 0000000..f65cabb --- /dev/null +++ b/src/layouts/Base.astro @@ -0,0 +1,17 @@ +--- +import "@/styles/app.css" +import '@fontsource-variable/jetbrains-mono'; +--- + + + + + + + + + + + + + diff --git a/src/layouts/Default.astro b/src/layouts/Default.astro new file mode 100644 index 0000000..5e2eb2c --- /dev/null +++ b/src/layouts/Default.astro @@ -0,0 +1,9 @@ +--- +import Base from "@/layouts/Base.astro" +--- + + + + + + diff --git a/src/pages/index.astro b/src/pages/index.astro index 2d14107..6d3d029 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,16 +1,33 @@ --- +import Default from "@/layouts/Default.astro" +import Button from "@/components/Button.vue" +--- ---- + +
+ 0 / 1000 RQT +
+
+
+
- - - - - - - Astro - - -

Astro

- - + diff --git a/src/styles/app.css b/src/styles/app.css new file mode 100644 index 0000000..042c3f8 --- /dev/null +++ b/src/styles/app.css @@ -0,0 +1,17 @@ +@import url("./utils/tailwind.css"); + +:root { + --green: #22c55e; + --darken: #1c1917; + --neutral: #404040; + --shadow: #262626; + --primary: white; + --accent: var(--green); + --secondary: #090b0c; +} + +body { + font-family: 'JetBrains Mono Variable', monospace; + background: var(--secondary); + min-height: 100vh; +} diff --git a/src/styles/utils/tailwind.css b/src/styles/utils/tailwind.css new file mode 100644 index 0000000..c09c1ad --- /dev/null +++ b/src/styles/utils/tailwind.css @@ -0,0 +1,379 @@ +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +*/ + +html { + line-height: 1.5; /* 1 */ + text-size-adjust: 100%; /* 2 */ /* 3 */ + tab-size: 4; /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ + font-feature-settings: normal; /* 5 */ + font-variation-settings: normal; /* 6 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + font-size: 100%; /* 1 */ + font-weight: inherit; /* 1 */ + line-height: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::placeholder, textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +/* Improve Page speed */ + +/* https://css-tricks.com/almanac/properties/c/content-visibility/ */ +img { + content-visibility: auto; +} + + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ +[hidden] { + display: none; +} diff --git a/stylelint.config.mjs b/stylelint.config.mjs new file mode 100644 index 0000000..559b052 --- /dev/null +++ b/stylelint.config.mjs @@ -0,0 +1,14 @@ +export default { + extends: [ + "stylelint-config-standard", + "stylelint-config-html/html", + "stylelint-config-html/astro", + "stylelint-config-html/vue", + ], + rules: { + "selector-pseudo-class-no-unknown": [true, { + ignorePseudoClasses: ["global"], + }], + "no-descending-specificity": null, + }, +} diff --git a/tsconfig.json b/tsconfig.json index d78f81e..fbd5385 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,3 +1,11 @@ { - "extends": "astro/tsconfigs/base" + "extends": "astro/tsconfigs/base", + "compilerOptions": { + "baseUrl": "src", + "paths": { + "@/*": ["*"] + }, + "types": ["astro/client"], + "strictNullChecks": true + } } diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 0000000..f0f3d0e --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,17 @@ +import { defineConfig } from "vitest/config" + +export default defineConfig({ + test: { + exclude: [ + "**/node_modules/**", + "**/dist/**", + "**/cypress/**", + "**/.{astro,direnv,idea,git,cache,output,temp}/**", + "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*", + ], + coverage: { + provider: "istanbul", + reporter: ["text"], + }, + }, +})