style(navigation): implement new navigation-bar
This commit is contained in:
10
package-lock.json
generated
10
package-lock.json
generated
@@ -14,6 +14,7 @@
|
|||||||
"@angular/forms": "^20.2.0",
|
"@angular/forms": "^20.2.0",
|
||||||
"@angular/platform-browser": "^20.2.0",
|
"@angular/platform-browser": "^20.2.0",
|
||||||
"@angular/router": "^20.2.0",
|
"@angular/router": "^20.2.0",
|
||||||
|
"@fontsource-variable/jetbrains-mono": "^5.2.6",
|
||||||
"@fontsource-variable/open-sans": "^5.2.6",
|
"@fontsource-variable/open-sans": "^5.2.6",
|
||||||
"@fortawesome/angular-fontawesome": "^3.0.0",
|
"@fortawesome/angular-fontawesome": "^3.0.0",
|
||||||
"@fortawesome/fontawesome-free": "^7.0.0",
|
"@fortawesome/fontawesome-free": "^7.0.0",
|
||||||
@@ -1429,6 +1430,15 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@fontsource-variable/jetbrains-mono": {
|
||||||
|
"version": "5.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.2.6.tgz",
|
||||||
|
"integrity": "sha512-1pvtyK6H1paBOixbtZ9xfQgArVQ4SJMW3WSGZPOd5PiW3yg0t8umwKnjDMzW2ofb7qSdiXnsnIaHPT36vEOdlg==",
|
||||||
|
"license": "OFL-1.1",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ayuhito"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@fontsource-variable/open-sans": {
|
"node_modules/@fontsource-variable/open-sans": {
|
||||||
"version": "5.2.6",
|
"version": "5.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/@fontsource-variable/open-sans/-/open-sans-5.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/@fontsource-variable/open-sans/-/open-sans-5.2.6.tgz",
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
"@angular/forms": "^20.2.0",
|
"@angular/forms": "^20.2.0",
|
||||||
"@angular/platform-browser": "^20.2.0",
|
"@angular/platform-browser": "^20.2.0",
|
||||||
"@angular/router": "^20.2.0",
|
"@angular/router": "^20.2.0",
|
||||||
|
"@fontsource-variable/jetbrains-mono": "^5.2.6",
|
||||||
"@fontsource-variable/open-sans": "^5.2.6",
|
"@fontsource-variable/open-sans": "^5.2.6",
|
||||||
"@fortawesome/angular-fontawesome": "^3.0.0",
|
"@fortawesome/angular-fontawesome": "^3.0.0",
|
||||||
"@fortawesome/fontawesome-free": "^7.0.0",
|
"@fortawesome/fontawesome-free": "^7.0.0",
|
||||||
|
|||||||
@@ -2,6 +2,302 @@ import Aura from "@primeuix/themes/aura";
|
|||||||
import { definePreset } from "@primeuix/themes";
|
import { definePreset } from "@primeuix/themes";
|
||||||
|
|
||||||
export const Theme = definePreset(Aura, {
|
export const Theme = definePreset(Aura, {
|
||||||
|
primitive: {
|
||||||
|
borderRadius: {
|
||||||
|
none: "0",
|
||||||
|
xs: "2px",
|
||||||
|
sm: "4px",
|
||||||
|
md: "6px",
|
||||||
|
lg: "8px",
|
||||||
|
xl: "12px"
|
||||||
|
},
|
||||||
|
emerald: {
|
||||||
|
50: "#ecfdf5",
|
||||||
|
100: "#d1fae5",
|
||||||
|
200: "#a7f3d0",
|
||||||
|
300: "#6ee7b7",
|
||||||
|
400: "#34d399",
|
||||||
|
500: "#10b981",
|
||||||
|
600: "#059669",
|
||||||
|
700: "#047857",
|
||||||
|
800: "#065f46",
|
||||||
|
900: "#064e3b",
|
||||||
|
950: "#022c22"
|
||||||
|
},
|
||||||
|
green: {
|
||||||
|
50: "#f0fdf4",
|
||||||
|
100: "#dcfce7",
|
||||||
|
200: "#bbf7d0",
|
||||||
|
300: "#86efac",
|
||||||
|
400: "#4ade80",
|
||||||
|
500: "#22c55e",
|
||||||
|
600: "#16a34a",
|
||||||
|
700: "#15803d",
|
||||||
|
800: "#166534",
|
||||||
|
900: "#14532d",
|
||||||
|
950: "#052e16"
|
||||||
|
},
|
||||||
|
lime: {
|
||||||
|
50: "#f7fee7",
|
||||||
|
100: "#ecfccb",
|
||||||
|
200: "#d9f99d",
|
||||||
|
300: "#bef264",
|
||||||
|
400: "#a3e635",
|
||||||
|
500: "#84cc16",
|
||||||
|
600: "#65a30d",
|
||||||
|
700: "#4d7c0f",
|
||||||
|
800: "#3f6212",
|
||||||
|
900: "#365314",
|
||||||
|
950: "#1a2e05"
|
||||||
|
},
|
||||||
|
red: {
|
||||||
|
50: "#fef2f2",
|
||||||
|
100: "#fee2e2",
|
||||||
|
200: "#fecaca",
|
||||||
|
300: "#fca5a5",
|
||||||
|
400: "#f87171",
|
||||||
|
500: "#ef4444",
|
||||||
|
600: "#dc2626",
|
||||||
|
700: "#b91c1c",
|
||||||
|
800: "#991b1b",
|
||||||
|
900: "#7f1d1d",
|
||||||
|
950: "#450a0a"
|
||||||
|
},
|
||||||
|
orange: {
|
||||||
|
50: "#fff7ed",
|
||||||
|
100: "#ffedd5",
|
||||||
|
200: "#fed7aa",
|
||||||
|
300: "#fdba74",
|
||||||
|
400: "#fb923c",
|
||||||
|
500: "#f97316",
|
||||||
|
600: "#ea580c",
|
||||||
|
700: "#c2410c",
|
||||||
|
800: "#9a3412",
|
||||||
|
900: "#7c2d12",
|
||||||
|
950: "#431407"
|
||||||
|
},
|
||||||
|
amber: {
|
||||||
|
50: "#fffbeb",
|
||||||
|
100: "#fef3c7",
|
||||||
|
200: "#fde68a",
|
||||||
|
300: "#fcd34d",
|
||||||
|
400: "#fbbf24",
|
||||||
|
500: "#f59e0b",
|
||||||
|
600: "#d97706",
|
||||||
|
700: "#b45309",
|
||||||
|
800: "#92400e",
|
||||||
|
900: "#78350f",
|
||||||
|
950: "#451a03"
|
||||||
|
},
|
||||||
|
yellow: {
|
||||||
|
50: "#fefce8",
|
||||||
|
100: "#fef9c3",
|
||||||
|
200: "#fef08a",
|
||||||
|
300: "#fde047",
|
||||||
|
400: "#facc15",
|
||||||
|
500: "#eab308",
|
||||||
|
600: "#ca8a04",
|
||||||
|
700: "#a16207",
|
||||||
|
800: "#854d0e",
|
||||||
|
900: "#713f12",
|
||||||
|
950: "#422006"
|
||||||
|
},
|
||||||
|
teal: {
|
||||||
|
50: "#f0fdfa",
|
||||||
|
100: "#ccfbf1",
|
||||||
|
200: "#99f6e4",
|
||||||
|
300: "#5eead4",
|
||||||
|
400: "#2dd4bf",
|
||||||
|
500: "#14b8a6",
|
||||||
|
600: "#0d9488",
|
||||||
|
700: "#0f766e",
|
||||||
|
800: "#115e59",
|
||||||
|
900: "#134e4a",
|
||||||
|
950: "#042f2e"
|
||||||
|
},
|
||||||
|
cyan: {
|
||||||
|
50: "#ecfeff",
|
||||||
|
100: "#cffafe",
|
||||||
|
200: "#a5f3fc",
|
||||||
|
300: "#67e8f9",
|
||||||
|
400: "#22d3ee",
|
||||||
|
500: "#06b6d4",
|
||||||
|
600: "#0891b2",
|
||||||
|
700: "#0e7490",
|
||||||
|
800: "#155e75",
|
||||||
|
900: "#164e63",
|
||||||
|
950: "#083344"
|
||||||
|
},
|
||||||
|
sky: {
|
||||||
|
50: "#f0f9ff",
|
||||||
|
100: "#e0f2fe",
|
||||||
|
200: "#bae6fd",
|
||||||
|
300: "#7dd3fc",
|
||||||
|
400: "#38bdf8",
|
||||||
|
500: "#0ea5e9",
|
||||||
|
600: "#0284c7",
|
||||||
|
700: "#0369a1",
|
||||||
|
800: "#075985",
|
||||||
|
900: "#0c4a6e",
|
||||||
|
950: "#082f49"
|
||||||
|
},
|
||||||
|
blue: {
|
||||||
|
50: "#eff6ff",
|
||||||
|
100: "#dbeafe",
|
||||||
|
200: "#bfdbfe",
|
||||||
|
300: "#93c5fd",
|
||||||
|
400: "#60a5fa",
|
||||||
|
500: "#3b82f6",
|
||||||
|
600: "#2563eb",
|
||||||
|
700: "#1d4ed8",
|
||||||
|
800: "#1e40af",
|
||||||
|
900: "#1e3a8a",
|
||||||
|
950: "#172554"
|
||||||
|
},
|
||||||
|
indigo: {
|
||||||
|
50: "#eef2ff",
|
||||||
|
100: "#e0e7ff",
|
||||||
|
200: "#c7d2fe",
|
||||||
|
300: "#a5b4fc",
|
||||||
|
400: "#818cf8",
|
||||||
|
500: "#6366f1",
|
||||||
|
600: "#4f46e5",
|
||||||
|
700: "#4338ca",
|
||||||
|
800: "#3730a3",
|
||||||
|
900: "#312e81",
|
||||||
|
950: "#1e1b4b"
|
||||||
|
},
|
||||||
|
violet: {
|
||||||
|
50: "#f5f3ff",
|
||||||
|
100: "#ede9fe",
|
||||||
|
200: "#ddd6fe",
|
||||||
|
300: "#c4b5fd",
|
||||||
|
400: "#a78bfa",
|
||||||
|
500: "#8b5cf6",
|
||||||
|
600: "#7c3aed",
|
||||||
|
700: "#6d28d9",
|
||||||
|
800: "#5b21b6",
|
||||||
|
900: "#4c1d95",
|
||||||
|
950: "#2e1065"
|
||||||
|
},
|
||||||
|
purple: {
|
||||||
|
50: "#faf5ff",
|
||||||
|
100: "#f3e8ff",
|
||||||
|
200: "#e9d5ff",
|
||||||
|
300: "#d8b4fe",
|
||||||
|
400: "#c084fc",
|
||||||
|
500: "#a855f7",
|
||||||
|
600: "#9333ea",
|
||||||
|
700: "#7e22ce",
|
||||||
|
800: "#6b21a8",
|
||||||
|
900: "#581c87",
|
||||||
|
950: "#3b0764"
|
||||||
|
},
|
||||||
|
fuchsia: {
|
||||||
|
50: "#fdf4ff",
|
||||||
|
100: "#fae8ff",
|
||||||
|
200: "#f5d0fe",
|
||||||
|
300: "#f0abfc",
|
||||||
|
400: "#e879f9",
|
||||||
|
500: "#d946ef",
|
||||||
|
600: "#c026d3",
|
||||||
|
700: "#a21caf",
|
||||||
|
800: "#86198f",
|
||||||
|
900: "#701a75",
|
||||||
|
950: "#4a044e"
|
||||||
|
},
|
||||||
|
pink: {
|
||||||
|
50: "#fdf2f8",
|
||||||
|
100: "#fce7f3",
|
||||||
|
200: "#fbcfe8",
|
||||||
|
300: "#f9a8d4",
|
||||||
|
400: "#f472b6",
|
||||||
|
500: "#ec4899",
|
||||||
|
600: "#db2777",
|
||||||
|
700: "#be185d",
|
||||||
|
800: "#9d174d",
|
||||||
|
900: "#831843",
|
||||||
|
950: "#500724"
|
||||||
|
},
|
||||||
|
rose: {
|
||||||
|
50: "#fff1f2",
|
||||||
|
100: "#ffe4e6",
|
||||||
|
200: "#fecdd3",
|
||||||
|
300: "#fda4af",
|
||||||
|
400: "#fb7185",
|
||||||
|
500: "#f43f5e",
|
||||||
|
600: "#e11d48",
|
||||||
|
700: "#be123c",
|
||||||
|
800: "#9f1239",
|
||||||
|
900: "#881337",
|
||||||
|
950: "#4c0519"
|
||||||
|
},
|
||||||
|
slate: {
|
||||||
|
50: "#f8fafc",
|
||||||
|
100: "#f1f5f9",
|
||||||
|
200: "#e2e8f0",
|
||||||
|
300: "#cbd5e1",
|
||||||
|
400: "#94a3b8",
|
||||||
|
500: "#64748b",
|
||||||
|
600: "#475569",
|
||||||
|
700: "#334155",
|
||||||
|
800: "#1e293b",
|
||||||
|
900: "#0f172a",
|
||||||
|
950: "#020617"
|
||||||
|
},
|
||||||
|
gray: {
|
||||||
|
50: "#f9fafb",
|
||||||
|
100: "#f3f4f6",
|
||||||
|
200: "#e5e7eb",
|
||||||
|
300: "#d1d5db",
|
||||||
|
400: "#9ca3af",
|
||||||
|
500: "#6b7280",
|
||||||
|
600: "#4b5563",
|
||||||
|
700: "#374151",
|
||||||
|
800: "#1f2937",
|
||||||
|
900: "#111827",
|
||||||
|
950: "#030712"
|
||||||
|
},
|
||||||
|
zinc: {
|
||||||
|
50: "#fafafa",
|
||||||
|
100: "#f4f4f5",
|
||||||
|
200: "#e4e4e7",
|
||||||
|
300: "#d4d4d8",
|
||||||
|
400: "#a1a1aa",
|
||||||
|
500: "#71717a",
|
||||||
|
600: "#52525b",
|
||||||
|
700: "#3f3f46",
|
||||||
|
800: "#27272a",
|
||||||
|
900: "#18181b",
|
||||||
|
950: "#09090b"
|
||||||
|
},
|
||||||
|
neutral: {
|
||||||
|
50: "#fafafa",
|
||||||
|
100: "#f5f5f5",
|
||||||
|
200: "#e5e5e5",
|
||||||
|
300: "#d4d4d4",
|
||||||
|
400: "#a3a3a3",
|
||||||
|
500: "#737373",
|
||||||
|
600: "#525252",
|
||||||
|
700: "#404040",
|
||||||
|
800: "#262626",
|
||||||
|
900: "#171717",
|
||||||
|
950: "#0a0a0a"
|
||||||
|
},
|
||||||
|
stone: {
|
||||||
|
50: "#fafaf9",
|
||||||
|
100: "#f5f5f4",
|
||||||
|
200: "#e7e5e4",
|
||||||
|
300: "#d6d3d1",
|
||||||
|
400: "#a8a29e",
|
||||||
|
500: "#78716c",
|
||||||
|
600: "#57534e",
|
||||||
|
700: "#44403c",
|
||||||
|
800: "#292524",
|
||||||
|
900: "#1c1917",
|
||||||
|
950: "#0c0a09"
|
||||||
|
}
|
||||||
|
},
|
||||||
semantic: {
|
semantic: {
|
||||||
formField: {
|
formField: {
|
||||||
paddingX: "0.75rem",
|
paddingX: "0.75rem",
|
||||||
@@ -27,17 +323,17 @@ export const Theme = definePreset(Aura, {
|
|||||||
transitionDuration: "{transition.duration}"
|
transitionDuration: "{transition.duration}"
|
||||||
},
|
},
|
||||||
primary: {
|
primary: {
|
||||||
50: "#fffbeb",
|
50: "#fffdea",
|
||||||
100: "#fef3c7",
|
100: "#fff7c2",
|
||||||
200: "#fde68a",
|
200: "#ffef85",
|
||||||
300: "#fcd34d",
|
300: "#ffe24d",
|
||||||
400: "#fbbf24",
|
400: "#ffd700",
|
||||||
500: "#f59e0b",
|
500: "#e6c200",
|
||||||
600: "#d97706",
|
600: "#bfa100",
|
||||||
700: "#b45309",
|
700: "#997f00",
|
||||||
800: "#92400e",
|
800: "#735f00",
|
||||||
900: "#78350f",
|
900: "#4d3f00",
|
||||||
950: "#451a03"
|
950: "#1f1600"
|
||||||
},
|
},
|
||||||
colorScheme: {
|
colorScheme: {
|
||||||
light: {
|
light: {
|
||||||
@@ -54,30 +350,311 @@ export const Theme = definePreset(Aura, {
|
|||||||
800: "#292524",
|
800: "#292524",
|
||||||
900: "#1c1917",
|
900: "#1c1917",
|
||||||
950: "#0c0a09"
|
950: "#0c0a09"
|
||||||
}
|
},
|
||||||
|
primary: {
|
||||||
|
color: "{primary.500}",
|
||||||
|
contrastColor: "#ffffff",
|
||||||
|
hoverColor: "{primary.600}",
|
||||||
|
activeColor: "{primary.700}"
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
background: "{primary.50}",
|
||||||
|
focusBackground: "{primary.100}",
|
||||||
|
color: "{primary.700}",
|
||||||
|
focusColor: "{primary.800}"
|
||||||
|
},
|
||||||
|
mask: {
|
||||||
|
background: "rgba(0,0,0,0.4)",
|
||||||
|
color: "{surface.200}"
|
||||||
|
},
|
||||||
|
formField: {
|
||||||
|
background: "{surface.0}",
|
||||||
|
disabledBackground: "{surface.200}",
|
||||||
|
filledBackground: "{surface.50}",
|
||||||
|
filledHoverBackground: "{surface.50}",
|
||||||
|
filledFocusBackground: "{surface.50}",
|
||||||
|
borderColor: "{surface.300}",
|
||||||
|
hoverBorderColor: "{surface.400}",
|
||||||
|
focusBorderColor: "{primary.color}",
|
||||||
|
invalidBorderColor: "{red.400}",
|
||||||
|
color: "{surface.700}",
|
||||||
|
disabledColor: "{surface.500}",
|
||||||
|
placeholderColor: "{surface.500}",
|
||||||
|
invalidPlaceholderColor: "{red.600}",
|
||||||
|
floatLabelColor: "{surface.500}",
|
||||||
|
floatLabelFocusColor: "{primary.600}",
|
||||||
|
floatLabelActiveColor: "{surface.500}",
|
||||||
|
floatLabelInvalidColor: "{form.field.invalid.placeholder.color}",
|
||||||
|
iconColor: "{surface.400}",
|
||||||
|
shadow: "0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgba(18, 18, 23, 0.05)"
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
color: "{surface.700}",
|
||||||
|
hoverColor: "{surface.800}",
|
||||||
|
mutedColor: "{surface.500}",
|
||||||
|
hoverMutedColor: "{surface.600}"
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
background: "{surface.0}",
|
||||||
|
hoverBackground: "{surface.100}",
|
||||||
|
borderColor: "{surface.200}",
|
||||||
|
color: "{text.color}",
|
||||||
|
hoverColor: "{text.hover.color}"
|
||||||
|
},
|
||||||
|
overlay: {
|
||||||
|
select: {
|
||||||
|
background: "{surface.0}",
|
||||||
|
borderColor: "{surface.200}",
|
||||||
|
color: "{text.color}"
|
||||||
|
},
|
||||||
|
popover: {
|
||||||
|
background: "{surface.0}",
|
||||||
|
borderColor: "{surface.200}",
|
||||||
|
color: "{text.color}"
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
background: "{surface.0}",
|
||||||
|
borderColor: "{surface.200}",
|
||||||
|
color: "{text.color}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
option: {
|
||||||
|
focusBackground: "{surface.100}",
|
||||||
|
selectedBackground: "{highlight.background}",
|
||||||
|
selectedFocusBackground: "{highlight.focus.background}",
|
||||||
|
color: "{text.color}",
|
||||||
|
focusColor: "{text.hover.color}",
|
||||||
|
selectedColor: "{highlight.color}",
|
||||||
|
selectedFocusColor: "{highlight.focus.color}",
|
||||||
|
icon: {
|
||||||
|
color: "{surface.400}",
|
||||||
|
focusColor: "{surface.500}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
optionGroup: {
|
||||||
|
background: "transparent",
|
||||||
|
color: "{text.muted.color}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
item: {
|
||||||
|
focusBackground: "{surface.100}",
|
||||||
|
activeBackground: "{surface.100}",
|
||||||
|
color: "{text.color}",
|
||||||
|
focusColor: "{text.hover.color}",
|
||||||
|
activeColor: "{text.hover.color}",
|
||||||
|
icon: {
|
||||||
|
color: "{surface.400}",
|
||||||
|
focusColor: "{surface.500}",
|
||||||
|
activeColor: "{surface.500}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
submenuLabel: {
|
||||||
|
background: "transparent",
|
||||||
|
color: "{text.muted.color}"
|
||||||
|
},
|
||||||
|
submenuIcon: {
|
||||||
|
color: "{surface.400}",
|
||||||
|
focusColor: "{surface.500}",
|
||||||
|
activeColor: "{surface.500}"
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
dark: {
|
dark: {
|
||||||
surface: {
|
surface: {
|
||||||
0: "#030303",
|
0: "#ffffff",
|
||||||
50: "#171717",
|
50: "#fafafa",
|
||||||
100: "#262626",
|
100: "#f5f5f5",
|
||||||
200: "#404040",
|
200: "#e5e5e5",
|
||||||
300: "#525252",
|
300: "#d4d4d4",
|
||||||
400: "#737373",
|
400: "#a3a3a3",
|
||||||
500: "#a3a3a3",
|
500: "#737373",
|
||||||
600: "#d4d4d4",
|
600: "#525252",
|
||||||
700: "#e5e5e5",
|
700: "#404040",
|
||||||
800: "#f5f5f5",
|
800: "#262626",
|
||||||
900: "#fafafa",
|
900: "#171717",
|
||||||
950: "#ffffff"
|
950: "#030303"
|
||||||
},
|
},
|
||||||
primary: {
|
primary: {
|
||||||
color: "{primary.400}", // Gold Button Hintergrund
|
color: "{primary.400}",
|
||||||
contrastColor: "#1a1a1a", // ***Dunkler Text für gute Lesbarkeit***
|
contrastColor: "{surface.900}",
|
||||||
hoverColor: "{primary.300}",
|
hoverColor: "{primary.300}",
|
||||||
activeColor: "{primary.200}"
|
activeColor: "{primary.200}"
|
||||||
}
|
},
|
||||||
|
highlight: {
|
||||||
|
background: "color-mix(in srgb, {primary.400}, transparent 84%)",
|
||||||
|
focusBackground: "color-mix(in srgb, {primary.400}, transparent 76%)",
|
||||||
|
color: "rgba(255,255,255,.87)",
|
||||||
|
focusColor: "rgba(255,255,255,.87)"
|
||||||
|
},
|
||||||
|
mask: {
|
||||||
|
background: "rgba(0,0,0,0.6)",
|
||||||
|
color: "{surface.200}"
|
||||||
|
},
|
||||||
|
formField: {
|
||||||
|
background: "{surface.950}",
|
||||||
|
disabledBackground: "{surface.700}",
|
||||||
|
filledBackground: "{surface.800}",
|
||||||
|
filledHoverBackground: "{surface.800}",
|
||||||
|
filledFocusBackground: "{surface.800}",
|
||||||
|
borderColor: "{surface.600}",
|
||||||
|
hoverBorderColor: "{surface.500}",
|
||||||
|
focusBorderColor: "{primary.color}",
|
||||||
|
invalidBorderColor: "{red.300}",
|
||||||
|
color: "{surface.0}",
|
||||||
|
disabledColor: "{surface.400}",
|
||||||
|
placeholderColor: "{surface.400}",
|
||||||
|
invalidPlaceholderColor: "{red.400}",
|
||||||
|
floatLabelColor: "{surface.400}",
|
||||||
|
floatLabelFocusColor: "{primary.color}",
|
||||||
|
floatLabelActiveColor: "{surface.400}",
|
||||||
|
floatLabelInvalidColor: "{form.field.invalid.placeholder.color}",
|
||||||
|
iconColor: "{surface.400}",
|
||||||
|
shadow: "0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgba(18, 18, 23, 0.05)"
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
color: "{surface.0}",
|
||||||
|
hoverColor: "{surface.0}",
|
||||||
|
mutedColor: "{surface.400}",
|
||||||
|
hoverMutedColor: "{surface.300}"
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
background: "{surface.900}",
|
||||||
|
hoverBackground: "{surface.800}",
|
||||||
|
borderColor: "{surface.700}",
|
||||||
|
color: "{text.color}",
|
||||||
|
hoverColor: "{text.hover.color}"
|
||||||
|
},
|
||||||
|
overlay: {
|
||||||
|
select: {
|
||||||
|
background: "{surface.900}",
|
||||||
|
borderColor: "{surface.700}",
|
||||||
|
color: "{text.color}"
|
||||||
|
},
|
||||||
|
popover: {
|
||||||
|
background: "{surface.900}",
|
||||||
|
borderColor: "{surface.700}",
|
||||||
|
color: "{text.color}"
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
background: "{surface.900}",
|
||||||
|
borderColor: "{surface.700}",
|
||||||
|
color: "{text.color}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
option: {
|
||||||
|
focusBackground: "{surface.800}",
|
||||||
|
selectedBackground: "{highlight.background}",
|
||||||
|
selectedFocusBackground: "{highlight.focus.background}",
|
||||||
|
color: "{text.color}",
|
||||||
|
focusColor: "{text.hover.color}",
|
||||||
|
selectedColor: "{highlight.color}",
|
||||||
|
selectedFocusColor: "{highlight.focus.color}",
|
||||||
|
icon: {
|
||||||
|
color: "{surface.500}",
|
||||||
|
focusColor: "{surface.400}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
optionGroup: {
|
||||||
|
background: "transparent",
|
||||||
|
color: "{text.muted.color}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
item: {
|
||||||
|
focusBackground: "{surface.800}",
|
||||||
|
activeBackground: "{surface.800}",
|
||||||
|
color: "{text.color}",
|
||||||
|
focusColor: "{text.hover.color}",
|
||||||
|
activeColor: "{text.hover.color}",
|
||||||
|
icon: {
|
||||||
|
color: "{surface.500}",
|
||||||
|
focusColor: "{surface.400}",
|
||||||
|
activeColor: "{surface.400}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
submenuLabel: {
|
||||||
|
background: "transparent",
|
||||||
|
color: "{text.muted.color}"
|
||||||
|
},
|
||||||
|
submenuIcon: {
|
||||||
|
color: "{surface.500}",
|
||||||
|
focusColor: "{surface.400}",
|
||||||
|
activeColor: "{surface.400}"
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
transitionDuration: "0.2s",
|
||||||
|
focusRing: {
|
||||||
|
width: "1px",
|
||||||
|
style: "solid",
|
||||||
|
color: "{primary.color}",
|
||||||
|
offset: "2px",
|
||||||
|
shadow: "none"
|
||||||
|
},
|
||||||
|
disabledOpacity: "0.6",
|
||||||
|
iconSize: "1rem",
|
||||||
|
anchorGutter: "2px",
|
||||||
|
list: {
|
||||||
|
padding: "0.25rem 0.25rem",
|
||||||
|
gap: "2px",
|
||||||
|
header: {
|
||||||
|
padding: "0.5rem 1rem 0.25rem 1rem"
|
||||||
|
},
|
||||||
|
option: {
|
||||||
|
padding: "0.5rem 0.75rem",
|
||||||
|
borderRadius: "{border.radius.sm}"
|
||||||
|
},
|
||||||
|
optionGroup: {
|
||||||
|
padding: "0.5rem 0.75rem",
|
||||||
|
fontWeight: "600"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
borderRadius: "{border.radius.md}"
|
||||||
|
},
|
||||||
|
mask: {
|
||||||
|
transitionDuration: "0.15s"
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
list: {
|
||||||
|
padding: "0.25rem 0.25rem",
|
||||||
|
gap: "2px"
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
padding: "0.5rem 0.75rem",
|
||||||
|
borderRadius: "{border.radius.sm}",
|
||||||
|
gap: "0.5rem"
|
||||||
|
},
|
||||||
|
submenuLabel: {
|
||||||
|
padding: "0.5rem 0.75rem",
|
||||||
|
fontWeight: "600"
|
||||||
|
},
|
||||||
|
submenuIcon: {
|
||||||
|
size: "0.875rem"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
overlay: {
|
||||||
|
select: {
|
||||||
|
borderRadius: "{border.radius.md}",
|
||||||
|
shadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)"
|
||||||
|
},
|
||||||
|
popover: {
|
||||||
|
borderRadius: "{border.radius.md}",
|
||||||
|
padding: "0.75rem",
|
||||||
|
shadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)"
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
borderRadius: "{border.radius.xl}",
|
||||||
|
padding: "1.25rem",
|
||||||
|
shadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)"
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
shadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)"
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';
|
import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';
|
||||||
|
import { ThemeSwitchService } from '../../service/theme-switch.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-background',
|
selector: 'app-background',
|
||||||
@@ -8,6 +9,10 @@ import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';
|
|||||||
})
|
})
|
||||||
export class Background {
|
export class Background {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private themeSwitchService: ThemeSwitchService,
|
||||||
|
) {}
|
||||||
|
|
||||||
@ViewChild('canvas', { static: true }) canvasRef!: ElementRef<HTMLCanvasElement>;
|
@ViewChild('canvas', { static: true }) canvasRef!: ElementRef<HTMLCanvasElement>;
|
||||||
|
|
||||||
// Config
|
// Config
|
||||||
@@ -90,7 +95,9 @@ export class Background {
|
|||||||
// Stern zeichnen mit Scroll-Parallax
|
// Stern zeichnen mit Scroll-Parallax
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
ctx.arc(star.x, star.y - this.scrollY * this.parallaxFactor, star.radius, 0, Math.PI * 2);
|
ctx.arc(star.x, star.y - this.scrollY * this.parallaxFactor, star.radius, 0, Math.PI * 2);
|
||||||
ctx.fillStyle = `rgba(255, 215, 0, ${star.alpha})`; // gold
|
ctx.fillStyle = this.themeSwitchService.darkMode()
|
||||||
|
? `rgba(255, 215, 0, ${star.alpha})`
|
||||||
|
: `rgba(184, 134, 11, ${star.alpha})`;
|
||||||
ctx.fill();
|
ctx.fill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,63 +3,18 @@
|
|||||||
<span class="font-semibold text-3xl">BH</span>
|
<span class="font-semibold text-3xl">BH</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="navigation grid place-items-center">
|
<div class="navigation grid place-items-center">
|
||||||
@if (themeSwitchService.darkMode()) {
|
<p-card class="px-4! py-3!">
|
||||||
<ul class="relative hidden items-center space-x-1 rounded-full border border-black/10 bg-black/5 px-1.5 py-1 backdrop-blur-md md:flex border-white/10 bg-white/10">
|
<ul>
|
||||||
<li class="relative list-none">
|
<li class="relative list-none flex flex-row gap-3">
|
||||||
<a class="block px-4 py-1.5 text-sm font-light text-black transition hover:text-black/80 text-white/70 hover:text-white" routerLink="/">
|
<a routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }">
|
||||||
Home
|
Home
|
||||||
</a>
|
</a>
|
||||||
@if (isActive('/')) {
|
<a routerLink="/about" routerLinkActive="active">
|
||||||
<ng-container *ngTemplateOutlet="activeNavItem"/>
|
|
||||||
}
|
|
||||||
</li>
|
|
||||||
<li class="relative list-none">
|
|
||||||
<a class="block px-4 py-1.5 text-sm font-light text-black transition hover:text-black/80 text-white/70 hover:text-white" routerLink="/about">
|
|
||||||
About
|
About
|
||||||
</a>
|
</a>
|
||||||
@if (isActive('/about')) {
|
|
||||||
<ng-container *ngTemplateOutlet="activeNavItem"/>
|
|
||||||
}
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ng-template #activeNavItem>
|
</p-card>
|
||||||
<span class="bg-white/5 absolute inset-0 -z-5000 w-full rounded-full">
|
|
||||||
<div class="bg-white absolute -top-[9px] left-1/2 h-1 w-8 -translate-x-1/2 rounded-t-full">
|
|
||||||
<div class="bg-white/20 absolute -top-2 -left-2 h-6 w-12 rounded-full blur-md"></div>
|
|
||||||
<div class="bg-white/20 absolute -top-1 h-6 w-8 rounded-full blur-md"></div>
|
|
||||||
<div class="bg-white/20 absolute top-0 left-2 h-4 w-4 rounded-full blur-sm"></div>
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</ng-template>
|
|
||||||
} @else {
|
|
||||||
<ul class="relative hidden items-center space-x-1 rounded-full border border-black/10 bg-black/5 px-1.5 py-1 backdrop-blur-md md:flex">
|
|
||||||
<li class="relative list-none">
|
|
||||||
<a class="block px-4 py-1.5 text-sm font-light text-black transition hover:text-black/80" routerLink="/">
|
|
||||||
Home
|
|
||||||
</a>
|
|
||||||
@if (isActive('/')) {
|
|
||||||
<ng-container *ngTemplateOutlet="activeNavItem"/>
|
|
||||||
}
|
|
||||||
</li>
|
|
||||||
<li class="relative list-none">
|
|
||||||
<a class="block px-4 py-1.5 text-sm font-light text-black transition hover:text-black/80" routerLink="/about">
|
|
||||||
About
|
|
||||||
</a>
|
|
||||||
@if (isActive('/about')) {
|
|
||||||
<ng-container *ngTemplateOutlet="activeNavItem"/>
|
|
||||||
}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ng-template #activeNavItem>
|
|
||||||
<span class="bg-black/5 absolute inset-0 -z-5000 w-full rounded-full">
|
|
||||||
<div class="bg-black absolute -top-[9px] left-1/2 h-1 w-8 -translate-x-1/2 rounded-t-full">
|
|
||||||
<div class="bg-black/20 absolute -top-2 -left-2 h-6 w-12 rounded-full blur-md"></div>
|
|
||||||
<div class="bg-black/20 absolute -top-1 h-6 w-8 rounded-full blur-md"></div>
|
|
||||||
<div class="bg-black/20 absolute top-0 left-2 h-4 w-4 rounded-full blur-sm"></div>
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
</ng-template>
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="options flex flex-row gap-[10px]">
|
<div class="options flex flex-row gap-[10px]">
|
||||||
@if (themeSwitchService.darkMode()) {
|
@if (themeSwitchService.darkMode()) {
|
||||||
|
|||||||
@@ -15,6 +15,35 @@ nav {
|
|||||||
border-color: var(--surface-500);
|
border-color: var(--surface-500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.navigation ul li a {
|
||||||
|
display: block;
|
||||||
|
padding: 5px 10px;
|
||||||
|
position: relative;
|
||||||
|
color: color-mix(in srgb, var(--content-color) 80%, transparent);
|
||||||
|
font-family: 'JetBrains Mono', monospace;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: var(--primary-500);
|
||||||
|
position: relative;
|
||||||
|
top: -3px;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: calc(50% - 1px);
|
||||||
|
transform: translate(-50%);
|
||||||
|
width: 50%;
|
||||||
|
height: .1px;
|
||||||
|
background: var(--primary-500);
|
||||||
|
border-radius: 50%;
|
||||||
|
bottom: 2px;
|
||||||
|
box-shadow: 0 -3px 10px 1px var(--primary-500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.blur {
|
.blur {
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { NgTemplateOutlet } from '@angular/common';
|
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
import { Router, RouterLink } from '@angular/router';
|
import { Router, RouterLink, RouterLinkActive } from '@angular/router';
|
||||||
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
||||||
import { faMoon } from '@fortawesome/free-solid-svg-icons';
|
import { faMoon } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { faSun } from '@fortawesome/free-solid-svg-icons';
|
import { faSun } from '@fortawesome/free-solid-svg-icons';
|
||||||
import { ThemeSwitchService } from '../../service/theme-switch.service';
|
import { ThemeSwitchService } from '../../service/theme-switch.service';
|
||||||
|
import { Card } from 'primeng/card';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-navigation-bar',
|
selector: 'app-navigation-bar',
|
||||||
imports: [FontAwesomeModule, RouterLink, NgTemplateOutlet ],
|
imports: [FontAwesomeModule, RouterLink, RouterLinkActive, Card ],
|
||||||
templateUrl: './navigation-bar.html',
|
templateUrl: './navigation-bar.html',
|
||||||
styleUrl: './navigation-bar.scss'
|
styleUrl: './navigation-bar.scss'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
@use "tailwindcss";
|
@use "tailwindcss";
|
||||||
@import '@fontsource-variable/open-sans/wght.css';
|
@import '@fontsource-variable/open-sans/wght.css';
|
||||||
|
@import '@fontsource-variable/jetbrains-mono/wght.css';
|
||||||
@import '@fortawesome/fontawesome-free/css/all.css';
|
@import '@fortawesome/fontawesome-free/css/all.css';
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@@ -8,5 +9,20 @@ body {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
background-color: var(--surface-0);
|
background-color: var(--primary-50);
|
||||||
|
}
|
||||||
|
|
||||||
|
html.dark body {
|
||||||
|
background-color: var(--surface-950);
|
||||||
|
}
|
||||||
|
|
||||||
|
p-card {
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid color-mix(in srgb, var(--primary-500) 50%, transparent);
|
||||||
|
box-shadow: inset 0 0 10px 2px color-mix(in srgb, var(--primary-500) 20%, transparent);
|
||||||
|
padding: var(--card-body-padding);
|
||||||
|
|
||||||
|
.p-card-body {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user