web: start: add icons gestion
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
1d0e046ff4
commit
6abf93005b
4 changed files with 21 additions and 13 deletions
|
|
@ -1 +1,2 @@
|
||||||
[]
|
[
|
||||||
|
]
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
local_components:
|
local_components:
|
||||||
- login-gate
|
- login-gate
|
||||||
- api-client
|
- api-client
|
||||||
- side-nav
|
|
||||||
- logout-button
|
- logout-button
|
||||||
- side-panel
|
- side-panel
|
||||||
- date-display
|
- date-display
|
||||||
|
|
@ -25,7 +24,10 @@ local_components:
|
||||||
# - name: vpc-panel # → components/vpc-panel/
|
# - name: vpc-panel # → components/vpc-panel/
|
||||||
# repo: https://git.g3e.fr/team-reseau/vpc-panel
|
# repo: https://git.g3e.fr/team-reseau/vpc-panel
|
||||||
# ref: v1.2.0 # tag, branch or commit (default: main)
|
# ref: v1.2.0 # tag, branch or commit (default: main)
|
||||||
components: []
|
components:
|
||||||
|
- name: side-nav
|
||||||
|
repo: https://git.g3e.fr/syonad/syn-side-nav
|
||||||
|
ref: main
|
||||||
|
|
||||||
# Vendor libraries — downloaded into web/vendor/ at build time (gitignored).
|
# Vendor libraries — downloaded into web/vendor/ at build time (gitignored).
|
||||||
# Components import them via relative paths, never via components.json.
|
# Components import them via relative paths, never via components.json.
|
||||||
|
|
|
||||||
|
|
@ -16,19 +16,17 @@ const CHEVRON_ICON = `<svg width="12" height="12" viewBox="0 0 24 24" fill="none
|
||||||
<polyline points="9 18 15 12 9 6"/>
|
<polyline points="9 18 15 12 9 6"/>
|
||||||
</svg>`
|
</svg>`
|
||||||
|
|
||||||
const ICONS = {
|
|
||||||
dashboard: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>`,
|
|
||||||
vpc: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5"/><path d="M3 12c0 1.66 4.03 3 9 3s9-1.34 9-3"/></svg>`,
|
|
||||||
subnet: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="2"/><path d="M8 12h8M12 8v8"/></svg>`,
|
|
||||||
vm: `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><path d="M8 21h8M12 17v4"/></svg>`,
|
|
||||||
}
|
|
||||||
|
|
||||||
const CSS = new URL('./side-nav.css', import.meta.url).href
|
const CSS = new URL('./side-nav.css', import.meta.url).href
|
||||||
const MQ = window.matchMedia('(max-width: 768px)')
|
const MQ = window.matchMedia('(max-width: 768px)')
|
||||||
const NAV_W = 220 // px
|
const NAV_W = 220 // px
|
||||||
|
|
||||||
|
const ICON_FALLBACK = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/></svg>`
|
||||||
|
|
||||||
|
const iconsRes = await fetch('./icons.json')
|
||||||
|
const ICONS = iconsRes.ok ? await iconsRes.json() : {}
|
||||||
|
|
||||||
function resolveIcon(name) {
|
function resolveIcon(name) {
|
||||||
return ICONS[name] ?? `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="9"/></svg>`
|
return ICONS[name] ?? ICON_FALLBACK
|
||||||
}
|
}
|
||||||
|
|
||||||
class SideNav extends HTMLElement {
|
class SideNav extends HTMLElement {
|
||||||
|
|
|
||||||
7
web/icons.json
Normal file
7
web/icons.json
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"dashboard": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"/></svg>",
|
||||||
|
"vpc": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"/><path d=\"M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5\"/><path d=\"M3 12c0 1.66 4.03 3 9 3s9-1.34 9-3\"/></svg>",
|
||||||
|
"subnet": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"2\"/><path d=\"M8 12h8M12 8v8\"/></svg>",
|
||||||
|
"vm": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"/><path d=\"M8 21h8M12 17v4\"/></svg>",
|
||||||
|
"account": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M4 20c0-4 3.6-7 8-7s8 3 8 7\"/></svg>"
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue