diff --git a/deno.lock b/deno.lock
index 4c067a2..0852dfb 100644
--- a/deno.lock
+++ b/deno.lock
@@ -22,6 +22,8 @@
"npm:autoprefixer@^10.4.20": "10.4.20_postcss@8.4.47",
"npm:path-to-regexp@6.2.1": "6.2.1",
"npm:postcss@^8.4.47": "8.4.47",
+ "npm:tailwind-scrollbar-hide@2": "2.0.0_tailwindcss@3.4.14__postcss@8.4.47",
+ "npm:tailwind-scrollbar@^4.0.1": "4.0.1_tailwindcss@4.0.15",
"npm:tailwindcss@*": "3.4.14_postcss@8.4.47",
"npm:tailwindcss@^3.4.14": "3.4.14_postcss@8.4.47",
"npm:typescript@^5.8.2": "5.8.2",
@@ -30,6 +32,7 @@
"npm:vite@*": "5.4.10",
"npm:vite@^5.4.10": "5.4.10",
"npm:vue-router@4": "4.4.5_vue@3.5.12",
+ "npm:vue-router@^4.5.0": "4.5.0_vue@3.5.12_typescript@5.8.2",
"npm:vue@*": "3.5.12",
"npm:vue@^3.5.12": "3.5.12"
},
@@ -300,11 +303,14 @@
"undici-types"
]
},
+ "@types/prismjs@1.26.5": {
+ "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ=="
+ },
"@vitejs/plugin-vue@5.1.4_vite@5.4.10_vue@3.5.12": {
"integrity": "sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==",
"dependencies": [
"vite@5.4.10",
- "vue"
+ "vue@3.5.12"
]
},
"@vue/compiler-core@3.5.12": {
@@ -375,7 +381,15 @@
"dependencies": [
"@vue/compiler-ssr",
"@vue/shared",
- "vue"
+ "vue@3.5.12"
+ ]
+ },
+ "@vue/server-renderer@3.5.12_vue@3.5.12_vue@3.5.12__typescript@5.8.2": {
+ "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
+ "dependencies": [
+ "@vue/compiler-ssr",
+ "@vue/shared",
+ "vue@3.5.12_typescript@5.8.2"
]
},
"@vue/shared@3.5.12": {
@@ -483,6 +497,9 @@
"readdirp@4.1.1"
]
},
+ "clsx@2.1.1": {
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
+ },
"color-convert@2.0.1": {
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": [
@@ -884,6 +901,14 @@
"source-map-js"
]
},
+ "prism-react-renderer@2.4.1_react@19.0.0": {
+ "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==",
+ "dependencies": [
+ "@types/prismjs",
+ "clsx",
+ "react"
+ ]
+ },
"punycode@1.4.1": {
"integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
},
@@ -896,6 +921,9 @@
"queue-microtask@1.2.3": {
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
+ "react@19.0.0": {
+ "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="
+ },
"read-cache@1.0.0": {
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dependencies": [
@@ -1031,6 +1059,19 @@
"supports-preserve-symlinks-flag@1.0.0": {
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
},
+ "tailwind-scrollbar-hide@2.0.0_tailwindcss@3.4.14__postcss@8.4.47": {
+ "integrity": "sha512-lqiIutHliEiODwBRHy4G2+Tcayo2U7+3+4frBmoMETD72qtah+XhOk5XcPzC1nJvXhXUdfl2ajlMhUc2qC6CIg==",
+ "dependencies": [
+ "tailwindcss@3.4.14_postcss@8.4.47"
+ ]
+ },
+ "tailwind-scrollbar@4.0.1_tailwindcss@4.0.15": {
+ "integrity": "sha512-j2ZfUI7p8xmSQdlqaCxEb4Mha8ErvWjDVyu2Ke4IstWprQ/6TmIz1GSLE62vsTlXwnMLYhuvbFbIFzaJGOGtMg==",
+ "dependencies": [
+ "prism-react-renderer",
+ "tailwindcss@4.0.15"
+ ]
+ },
"tailwindcss@3.4.14_postcss@8.4.47": {
"integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==",
"dependencies": [
@@ -1058,6 +1099,9 @@
"sucrase"
]
},
+ "tailwindcss@4.0.15": {
+ "integrity": "sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg=="
+ },
"thenify-all@1.6.0": {
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dependencies": [
@@ -1157,7 +1201,14 @@
"integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
"dependencies": [
"@vue/devtools-api",
- "vue"
+ "vue@3.5.12"
+ ]
+ },
+ "vue-router@4.5.0_vue@3.5.12_typescript@5.8.2": {
+ "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
+ "dependencies": [
+ "@vue/devtools-api",
+ "vue@3.5.12_typescript@5.8.2"
]
},
"vue@3.5.12": {
@@ -1166,10 +1217,21 @@
"@vue/compiler-dom",
"@vue/compiler-sfc",
"@vue/runtime-dom",
- "@vue/server-renderer",
+ "@vue/server-renderer@3.5.12_vue@3.5.12",
"@vue/shared"
]
},
+ "vue@3.5.12_typescript@5.8.2": {
+ "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
+ "dependencies": [
+ "@vue/compiler-dom",
+ "@vue/compiler-sfc",
+ "@vue/runtime-dom",
+ "@vue/server-renderer@3.5.12_vue@3.5.12_vue@3.5.12__typescript@5.8.2",
+ "@vue/shared",
+ "typescript"
+ ]
+ },
"which@2.0.2": {
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dependencies": [
@@ -1352,8 +1414,11 @@
"dependencies": [
"npm:@deno/vite-plugin@1",
"npm:@vitejs/plugin-vue@^5.1.4",
+ "npm:tailwind-scrollbar-hide@2",
+ "npm:tailwind-scrollbar@^4.0.1",
"npm:typescript@^5.8.2",
- "npm:vite-plugin-checker@~0.9.1"
+ "npm:vite-plugin-checker@~0.9.1",
+ "npm:vue-router@^4.5.0"
]
}
}
diff --git a/index.html b/index.html
index e7b8b54..bb5e428 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
ESP - Express, Share, Post
-
+
diff --git a/package-lock.json b/package-lock.json
index bca12e7..6507a16 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,7 +6,10 @@
"": {
"dependencies": {
"@deno/vite-plugin": "^1.0.0",
- "@vitejs/plugin-vue": "^5.1.4"
+ "@vitejs/plugin-vue": "^5.1.4",
+ "tailwind-scrollbar": "^4.0.1",
+ "tailwind-scrollbar-hide": "^2.0.0",
+ "vue-router": "^4.5.0"
},
"devDependencies": {
"typescript": "^5.8.2",
@@ -791,6 +794,12 @@
"license": "MIT",
"peer": true
},
+ "node_modules/@types/prismjs": {
+ "version": "1.26.5",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
+ "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
+ "license": "MIT"
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
@@ -858,6 +867,12 @@
"@vue/shared": "3.5.13"
}
},
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
+ "license": "MIT"
+ },
"node_modules/@vue/reactivity": {
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
@@ -942,6 +957,15 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
@@ -1154,6 +1178,29 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/prism-react-renderer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz",
+ "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/prismjs": "^1.26.0",
+ "clsx": "^2.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.0.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
+ "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -1233,6 +1280,37 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "node_modules/tailwind-scrollbar": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/tailwind-scrollbar/-/tailwind-scrollbar-4.0.1.tgz",
+ "integrity": "sha512-j2ZfUI7p8xmSQdlqaCxEb4Mha8ErvWjDVyu2Ke4IstWprQ/6TmIz1GSLE62vsTlXwnMLYhuvbFbIFzaJGOGtMg==",
+ "license": "MIT",
+ "dependencies": {
+ "prism-react-renderer": "^2.4.1"
+ },
+ "engines": {
+ "node": ">=12.13.0"
+ },
+ "peerDependencies": {
+ "tailwindcss": "4.x"
+ }
+ },
+ "node_modules/tailwind-scrollbar-hide": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-2.0.0.tgz",
+ "integrity": "sha512-lqiIutHliEiODwBRHy4G2+Tcayo2U7+3+4frBmoMETD72qtah+XhOk5XcPzC1nJvXhXUdfl2ajlMhUc2qC6CIg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || >= 4.0.0 || >= 4.0.0-beta.8 || >= 4.0.0-alpha.20"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.0.15",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.15.tgz",
+ "integrity": "sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/tiny-invariant": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
@@ -1446,6 +1524,21 @@
"optional": true
}
}
+ },
+ "node_modules/vue-router": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
+ "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
}
}
}
diff --git a/package.json b/package.json
index 018f212..cc9d3d4 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,10 @@
{
"dependencies": {
"@deno/vite-plugin": "^1.0.0",
- "@vitejs/plugin-vue": "^5.1.4"
+ "@vitejs/plugin-vue": "^5.1.4",
+ "tailwind-scrollbar": "^4.0.1",
+ "tailwind-scrollbar-hide": "^2.0.0",
+ "vue-router": "^4.5.0"
},
"devDependencies": {
"typescript": "^5.8.2",
diff --git a/src/App.vue b/src/App.vue
index 87ed26e..853e2ee 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/src/assets/main.css b/src/assets/main.css
index b5c61c9..4019c8d 100644
--- a/src/assets/main.css
+++ b/src/assets/main.css
@@ -1,3 +1,5 @@
+@plugin 'tailwind-scrollbar';
+
@tailwind base;
@tailwind components;
@tailwind utilities;
diff --git a/src/components/Home.vue b/src/components/Home.vue
index 2be780f..1898309 100644
--- a/src/components/Home.vue
+++ b/src/components/Home.vue
@@ -9,7 +9,7 @@ import Trending from "./home_components/trending.vue";
-
+
diff --git a/src/components/home_components/feed.vue b/src/components/home_components/feed.vue
index 7a82e51..e755d26 100644
--- a/src/components/home_components/feed.vue
+++ b/src/components/home_components/feed.vue
@@ -1,67 +1,72 @@
@@ -84,32 +92,32 @@ onMounted(() => {
-
diff --git a/src/components/posts.vue b/src/components/posts.vue
index 1e38cbd..6e72c28 100644
--- a/src/components/posts.vue
+++ b/src/components/posts.vue
@@ -1,44 +1,164 @@
-
+
-
-
-
{{ post.author_display_name }}
-
@{{ post.author_username }}
-
{{ post.content }}
-
Likes: {{ post.likes }}
-
Comments: {{ post.comments_count }}
-
Comments disabled
+
+
+
Post
-
-
Loading post...
+
+
+
+

+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
Comments
+
+
+
+
+
+
+
+
+
+
+
{{ c.author?.displayname || 'Unknown' }}: {{ c.comment_text }}
+
+
+
No comments yet.
+
+
+
+
+
+
@@ -49,4 +169,5 @@ onMounted(async () => {
\ No newline at end of file
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index ec79b35..eadfd97 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,6 +1,6 @@
// File: `src/router/index.ts`
import { createRouter, createWebHistory } from "vue-router";
-import Home from "../components/Home.vue";
+import Home from "../../src/components/Home.vue";
import Login from "../components/Login.vue";
import wip from "../components/wip.vue";
import settings from "../components/settings.vue";
diff --git a/tailwind.config.js b/tailwind.config.js
index 5d11f19..c0c7c0a 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -21,7 +21,8 @@ export default {
'35p': '30.825%',
}
},
- colors: {
+ plugins: ['tailwind-scrollbar', 'tailwind-scrollbar-hide'],
+ colors: {
'logo-farbe-lila': '#5500a2',
'logo-farbe-rot': '#a2002b',
'logo-farbe-blau': '#0b1074',