diff --git a/package-lock.json b/package-lock.json index a780979..19252e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,14 @@ { "name": "rubic-cube", - "version": "0.0.0", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rubic-cube", - "version": "0.0.0", + "version": "0.0.1", "dependencies": { + "lucide-vue-next": "^0.564.0", "vue": "^3.5.13" }, "devDependencies": { @@ -959,6 +960,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/lucide-vue-next": { + "version": "0.564.0", + "resolved": "https://registry.npmjs.org/lucide-vue-next/-/lucide-vue-next-0.564.0.tgz", + "integrity": "sha512-Zf51QMPVsRPpAmlVdzzp3vUofPMgxxRd/33O+7YsTCC2Aw9J5bSnJg2ZToMZ7SHkXkeDfvpWRZuRSU0+nK2okQ==", + "license": "ISC", + "peerDependencies": { + "vue": ">=3.0.1" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", diff --git a/package.json b/package.json index 13a8b99..c1f4cb9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "rubic-cube", "private": true, - "version": "0.0.0", + "version": "0.0.1", "type": "module", "scripts": { "dev": "vite", @@ -9,6 +9,7 @@ "preview": "vite preview" }, "dependencies": { + "lucide-vue-next": "^0.564.0", "vue": "^3.5.13" }, "devDependencies": { diff --git a/src/App.vue b/src/App.vue index d81bd0b..ed7a4e3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,10 +1,28 @@ diff --git a/src/components/Footer.vue b/src/components/Footer.vue new file mode 100644 index 0000000..35b169a --- /dev/null +++ b/src/components/Footer.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue new file mode 100644 index 0000000..10063da --- /dev/null +++ b/src/components/NavBar.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/components/main.vue b/src/components/main.vue index 384dd09..bb68fb2 100644 --- a/src/components/main.vue +++ b/src/components/main.vue @@ -117,11 +117,12 @@ const cubeStyle = computed(() => ({ .face { width: 300px; height: 300px; - background: #000; + background: var(--cube-edge-color, #000); padding: 9px; box-sizing: border-box; position: absolute; opacity: 0.9; + transition: background-color 0.3s ease; } .stickers { diff --git a/src/style.css b/src/style.css index f691315..1dc9f7e 100644 --- a/src/style.css +++ b/src/style.css @@ -11,6 +11,24 @@ text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + + /* --- Glassmorphism Design System (from Nonograms) --- */ + --bg-gradient: linear-gradient(135deg, #2c3e50 0%, #000000 100%); + --glass-bg: rgba(255, 255, 255, 0.05); + --glass-border: rgba(255, 255, 255, 0.1); + --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); + --text-color: #ffffff; + --text-strong: #ffffff; + --text-secondary: rgba(255, 255, 255, 0.85); + --text-muted: rgba(255, 255, 255, 0.7); + --accent-cyan: #00f2fe; + --accent-purple: #4facfe; + --primary-accent: #00f2fe; + --title-glow: rgba(0, 255, 255, 0.2); + --toggle-btn-border: rgba(255, 255, 255, 0.2); + --panel-bg: rgba(255, 255, 255, 0.05); + --panel-border: rgba(255, 255, 255, 0.1); + --panel-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } a { @@ -25,9 +43,12 @@ a:hover { body { margin: 0; display: flex; - place-items: center; min-width: 320px; min-height: 100vh; + flex-direction: column; + background: var(--bg-gradient); + background-attachment: fixed; + color: var(--text-color); } h1 { @@ -59,10 +80,19 @@ button:focus-visible { } #app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; + width: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; +} + +/* Glassmorphism utility class */ +.glass-panel { + background: var(--glass-bg); + backdrop-filter: blur(10px); + border: 1px solid var(--glass-border); + box-shadow: var(--glass-shadow); } @media (prefers-color-scheme: light) {