@sentropic/design-system-svelte 0.34.47 → 0.34.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppShell.svelte +167 -0
- package/dist/AppShell.svelte.d.ts +8 -0
- package/dist/AppShell.svelte.d.ts.map +1 -0
- package/dist/IdentityButton.svelte +128 -0
- package/dist/IdentityButton.svelte.d.ts +27 -0
- package/dist/IdentityButton.svelte.d.ts.map +1 -0
- package/dist/NavItem.svelte +268 -0
- package/dist/NavItem.svelte.d.ts +49 -0
- package/dist/NavItem.svelte.d.ts.map +1 -0
- package/dist/NavSection.svelte +152 -0
- package/dist/NavSection.svelte.d.ts +29 -0
- package/dist/NavSection.svelte.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/site-config.d.ts +106 -0
- package/dist/site-config.d.ts.map +1 -0
- package/dist/site-config.js +34 -0
- package/package.json +1 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// App-shell SVELTE : COMPOSE les vrais composants du design system — zéro contrôle
|
|
3
|
+
// bricolé. Triggers = DS Button / IconButton ; menus = DS MenuPopover + Menu ;
|
|
4
|
+
// identité = DS IdentityMenu ; barre = DS Header. Le look vient donc des tokens DS
|
|
5
|
+
// (--st-component-control-*) → pixel-cohérent avec le header de référence, et les
|
|
6
|
+
// menus sont ceux du DS (fonctionnels). Piloté par `siteConfig`.
|
|
7
|
+
import Header from "./Header.svelte";
|
|
8
|
+
import Button from "./Button.svelte";
|
|
9
|
+
import IconButton from "./IconButton.svelte";
|
|
10
|
+
import MenuPopover from "./MenuPopover.svelte";
|
|
11
|
+
import Menu from "./Menu.svelte";
|
|
12
|
+
import { Boxes, ChevronDown, Globe, Moon, Palette, Search as SearchIcon, Sun } from "@lucide/svelte";
|
|
13
|
+
import IdentityButton from "./IdentityButton.svelte";
|
|
14
|
+
import type { SiteConfig } from "./site-config";
|
|
15
|
+
|
|
16
|
+
let { config }: { config: SiteConfig } = $props();
|
|
17
|
+
|
|
18
|
+
const brand = $derived(config.brand ?? { name: "Sentropic" });
|
|
19
|
+
const nav = $derived(Array.isArray(config.nav) ? config.nav : []);
|
|
20
|
+
const t = $derived(config.theming ?? { themes: [], theme: "" });
|
|
21
|
+
|
|
22
|
+
const isActive = (item: { href: string; active?: boolean }) =>
|
|
23
|
+
item.active != null
|
|
24
|
+
? item.active
|
|
25
|
+
: config.activePath != null &&
|
|
26
|
+
(item.href === config.activePath || (item.href !== "/" && (config.activePath ?? "").startsWith(item.href)));
|
|
27
|
+
|
|
28
|
+
const themeItems = $derived((t.themes ?? []).map((o) => ({ label: o.label, value: o.id })));
|
|
29
|
+
const fwItems = $derived((config.frameworkSwitcher?.available ?? []).map((o) => ({ label: o.label, value: o.id })));
|
|
30
|
+
const localeItems = $derived((config.locale?.available ?? []).map((o) => ({ label: o.label, value: o.code })));
|
|
31
|
+
const fwLabel = $derived((config.frameworkSwitcher?.available ?? []).find((o) => o.id === config.frameworkSwitcher?.current)?.label ?? "");
|
|
32
|
+
const themeLabel = $derived((t.themes ?? []).find((o) => o.id === t.theme)?.label ?? "");
|
|
33
|
+
|
|
34
|
+
// Ancrage des menus (MenuPopover veut un HTMLElement) : on bind un span tight.
|
|
35
|
+
let themeEl = $state<HTMLElement | null>(null);
|
|
36
|
+
let fwEl = $state<HTMLElement | null>(null);
|
|
37
|
+
let localeEl = $state<HTMLElement | null>(null);
|
|
38
|
+
let themeOpen = $state(false);
|
|
39
|
+
let fwOpen = $state(false);
|
|
40
|
+
let localeOpen = $state(false);
|
|
41
|
+
|
|
42
|
+
function cycleColorMode() {
|
|
43
|
+
const cur = t.colorMode;
|
|
44
|
+
t.onColorModeChange?.(cur === "light" ? "dark" : cur === "dark" ? "auto" : "light");
|
|
45
|
+
}
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
{#snippet logo()}
|
|
49
|
+
<a class="st-shell__brand" href={brand.href ?? "/"} aria-label={brand.label ?? [brand.name, brand.productName].filter(Boolean).join(" ")}>
|
|
50
|
+
{#if brand.logoSrc}<img class="st-shell__brandMark" src={brand.logoSrc} alt="" aria-hidden="true" />{/if}
|
|
51
|
+
<span class="st-shell__brandCopy">
|
|
52
|
+
{#if brand.name}<span class="st-shell__brandName">{brand.name}</span>{/if}
|
|
53
|
+
{#if brand.productName}<span class="st-shell__brandProduct">{brand.productName}</span>{/if}
|
|
54
|
+
</span>
|
|
55
|
+
</a>
|
|
56
|
+
{/snippet}
|
|
57
|
+
|
|
58
|
+
{#snippet navigation()}
|
|
59
|
+
<nav class="st-shell__nav" aria-label={config.navLabel ?? "Navigation"}>
|
|
60
|
+
{#each nav as item (item.href)}
|
|
61
|
+
<a class="st-shell__navLink" href={item.href} aria-current={isActive(item) ? "page" : undefined}>{item.label}</a>
|
|
62
|
+
{/each}
|
|
63
|
+
</nav>
|
|
64
|
+
{/snippet}
|
|
65
|
+
|
|
66
|
+
{#snippet actions()}
|
|
67
|
+
<div class="st-shell__actions">
|
|
68
|
+
{#if config.search?.enabled}
|
|
69
|
+
<Button variant="secondary" size="sm" class="st-shell__search" onclick={() => config.search?.onSearch?.("")}>
|
|
70
|
+
<SearchIcon size={16} strokeWidth={2.1} aria-hidden="true" />
|
|
71
|
+
<span>{config.search.placeholder ?? "Rechercher…"}</span>
|
|
72
|
+
<kbd class="st-shell__kbd">/</kbd>
|
|
73
|
+
</Button>
|
|
74
|
+
{/if}
|
|
75
|
+
|
|
76
|
+
{#if config.frameworkSwitcher?.enabled}
|
|
77
|
+
<span class="st-shell__menuWrap" bind:this={fwEl}>
|
|
78
|
+
<Button variant="secondary" size="sm" class="st-shell__switch" onclick={() => (fwOpen = !fwOpen)} aria-haspopup="menu" aria-expanded={fwOpen}>
|
|
79
|
+
<Boxes size={14} aria-hidden="true" /><span>{fwLabel}</span><ChevronDown size={14} aria-hidden="true" />
|
|
80
|
+
</Button>
|
|
81
|
+
</span>
|
|
82
|
+
<MenuPopover bind:open={fwOpen} trigger={fwEl} placement="bottom-end" label="Framework">
|
|
83
|
+
<Menu label="Framework" items={fwItems} onselect={(v) => { config.frameworkSwitcher?.onChange?.(v); fwOpen = false; }} />
|
|
84
|
+
</MenuPopover>
|
|
85
|
+
{/if}
|
|
86
|
+
|
|
87
|
+
{#if (t.themes ?? []).length}
|
|
88
|
+
<span class="st-shell__menuWrap" bind:this={themeEl}>
|
|
89
|
+
<Button variant="secondary" size="sm" class="st-shell__switch" onclick={() => (themeOpen = !themeOpen)} aria-haspopup="menu" aria-expanded={themeOpen}>
|
|
90
|
+
<Palette size={14} aria-hidden="true" /><span>{themeLabel}</span><ChevronDown size={14} aria-hidden="true" />
|
|
91
|
+
</Button>
|
|
92
|
+
</span>
|
|
93
|
+
<MenuPopover bind:open={themeOpen} trigger={themeEl} placement="bottom-end" label={t.themeLabel ?? "Thème"}>
|
|
94
|
+
<Menu label={t.themeLabel ?? "Thème"} items={themeItems} onselect={(v) => { t.onThemeChange?.(v); themeOpen = false; }} />
|
|
95
|
+
</MenuPopover>
|
|
96
|
+
{/if}
|
|
97
|
+
|
|
98
|
+
{#if t.colorMode}
|
|
99
|
+
<IconButton size="sm" variant="ghost" aria-label="Mode couleur" onclick={cycleColorMode}>
|
|
100
|
+
{#if t.colorMode === "dark"}<Moon size={16} aria-hidden="true" />{:else}<Sun size={16} aria-hidden="true" />{/if}
|
|
101
|
+
</IconButton>
|
|
102
|
+
{/if}
|
|
103
|
+
|
|
104
|
+
{#if config.locale}
|
|
105
|
+
<span class="st-shell__menuWrap" bind:this={localeEl}>
|
|
106
|
+
<Button variant="secondary" size="sm" class="st-shell__switch" onclick={() => (localeOpen = !localeOpen)} aria-haspopup="menu" aria-expanded={localeOpen}>
|
|
107
|
+
<Globe size={14} aria-hidden="true" /><span>{(config.locale.current ?? "").toUpperCase()}</span><ChevronDown size={14} aria-hidden="true" />
|
|
108
|
+
</Button>
|
|
109
|
+
</span>
|
|
110
|
+
<MenuPopover bind:open={localeOpen} trigger={localeEl} placement="bottom-end" label={config.locale.label ?? "Langue"}>
|
|
111
|
+
<Menu label={config.locale.label ?? "Langue"} items={localeItems} onselect={(v) => { config.locale?.onChange?.(v); localeOpen = false; }} />
|
|
112
|
+
</MenuPopover>
|
|
113
|
+
{/if}
|
|
114
|
+
|
|
115
|
+
{#if config.identity}
|
|
116
|
+
<IdentityButton
|
|
117
|
+
mode="icon"
|
|
118
|
+
authState={config.identity.state}
|
|
119
|
+
user={config.identity.user ?? null}
|
|
120
|
+
signInLabel={config.identity.label ?? "Se connecter"}
|
|
121
|
+
onSignIn={() => config.identity?.onSignIn?.()}
|
|
122
|
+
onSignOut={() => config.identity?.onSignOut?.()}
|
|
123
|
+
menu={config.identity.menu ?? []}
|
|
124
|
+
/>
|
|
125
|
+
{/if}
|
|
126
|
+
</div>
|
|
127
|
+
{/snippet}
|
|
128
|
+
|
|
129
|
+
<Header class="st-shell" label={config.brand?.label ?? "Navigation"} logo={logo} navigation={navigation} actions={actions} />
|
|
130
|
+
|
|
131
|
+
<style>
|
|
132
|
+
/* Hauteur de barre alignée sur la référence docs (80px) : le Header DS lit
|
|
133
|
+
`--st-component-header-height` (défaut 3.5rem) ; on le porte à 5rem + padding 1.5rem. */
|
|
134
|
+
:global(.st-shell.st-header) { --st-component-header-height: 5rem; padding-inline: var(--st-spacing-6, 1.5rem); }
|
|
135
|
+
/* Style UNIQUE « bouton de contrôle » token-driven, applique a TOUS les controles
|
|
136
|
+
du header (search, switchers, mode couleur, login) — fini les 3 styles divergents
|
|
137
|
+
(gris secondary / ghost transparent / foncé). Fond blanc (control-background),
|
|
138
|
+
bordure subtle, texte secondaire, 12px/650, 36px ; hover = control-hoverBackground. */
|
|
139
|
+
:global(.st-shell .st-button),
|
|
140
|
+
:global(.st-shell .st-iconButton) {
|
|
141
|
+
background: var(--st-component-control-background, var(--st-semantic-surface-default, #ffffff));
|
|
142
|
+
border: 1px solid var(--st-component-control-border, var(--st-semantic-border-subtle, #e2e8f0));
|
|
143
|
+
color: var(--st-semantic-text-secondary);
|
|
144
|
+
font-weight: 650;
|
|
145
|
+
font-size: 12px;
|
|
146
|
+
height: 2.25rem;
|
|
147
|
+
border-radius: var(--st-radius-md, 0.375rem);
|
|
148
|
+
}
|
|
149
|
+
:global(.st-shell .st-iconButton) { width: 2.25rem; padding: 0; }
|
|
150
|
+
:global(.st-shell .st-button:hover),
|
|
151
|
+
:global(.st-shell .st-iconButton:hover) {
|
|
152
|
+
background: var(--st-component-control-hoverBackground, var(--st-semantic-surface-subtle, #f1f5f9));
|
|
153
|
+
}
|
|
154
|
+
:global(.st-shell .st-button svg),
|
|
155
|
+
:global(.st-shell .st-iconButton svg) { flex-shrink: 0; }
|
|
156
|
+
.st-shell__brand { align-items: center; color: var(--st-semantic-text-primary); display: inline-flex; flex: 0 0 auto; gap: var(--st-spacing-3, 0.75rem); text-decoration: none; }
|
|
157
|
+
.st-shell__brandMark { width: 2rem; height: 2rem; }
|
|
158
|
+
.st-shell__brandCopy { display: flex; flex-direction: column; gap: 0.08rem; line-height: 1; }
|
|
159
|
+
.st-shell__brandName { font-weight: 760; font-size: 1rem; }
|
|
160
|
+
.st-shell__brandProduct { font-weight: 650; font-size: 0.75rem; color: var(--st-semantic-text-secondary); }
|
|
161
|
+
.st-shell__nav { display: flex; align-items: center; gap: var(--st-spacing-1, 0.25rem); }
|
|
162
|
+
.st-shell__navLink { color: var(--st-semantic-text-secondary); text-decoration: none; font-size: 0.875rem; line-height: 1; padding: 0.38rem 0.75rem; border-radius: var(--st-radius-md, 0.375rem); }
|
|
163
|
+
.st-shell__navLink[aria-current="page"] { color: var(--st-semantic-text-primary); font-weight: 650; }
|
|
164
|
+
.st-shell__actions { display: flex; align-items: center; gap: var(--st-spacing-2, 0.5rem); }
|
|
165
|
+
.st-shell__menuWrap { display: inline-flex; }
|
|
166
|
+
.st-shell__kbd { border: 1px solid var(--st-semantic-border-subtle); border-radius: 0.25rem; font-size: 0.6875rem; padding: 0 0.3rem; color: var(--st-semantic-text-secondary); }
|
|
167
|
+
</style>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SiteConfig } from "./site-config";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
config: SiteConfig;
|
|
4
|
+
};
|
|
5
|
+
declare const AppShell: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type AppShell = ReturnType<typeof AppShell>;
|
|
7
|
+
export default AppShell;
|
|
8
|
+
//# sourceMappingURL=AppShell.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../src/lib/AppShell.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/C,KAAK,gBAAgB,GAAI;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AA+HjD,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
// Types exportes — en Svelte 5 les exports de module vont dans <script module>
|
|
3
|
+
// (le <script> d'instance ne sert qu'aux props/runes).
|
|
4
|
+
export type IdentityState = "anonymous" | "authenticated";
|
|
5
|
+
export type IdentityMode = "icon" | "button" | "menu";
|
|
6
|
+
export type IdentityTone = "default" | "onColor";
|
|
7
|
+
export interface IdentityUser {
|
|
8
|
+
name: string;
|
|
9
|
+
avatarSrc?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IdentityMenuEntry {
|
|
12
|
+
label: string;
|
|
13
|
+
href?: string;
|
|
14
|
+
onClick?: () => void;
|
|
15
|
+
}
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
// IdentityButton — composant d'identite DS multi-modes (incubation app-shell).
|
|
20
|
+
// Dedup l'ancien split (IconButton+user pour l'anonyme / IdentityMenu pour
|
|
21
|
+
// l'authentifie) en UN composant a modes. Compose les composants DS
|
|
22
|
+
// (IconButton / Button / MenuPopover / Menu) — zero primitive nouvelle.
|
|
23
|
+
import IconButton from "./IconButton.svelte";
|
|
24
|
+
import Button from "./Button.svelte";
|
|
25
|
+
import MenuPopover from "./MenuPopover.svelte";
|
|
26
|
+
import Menu from "./Menu.svelte";
|
|
27
|
+
import { User } from "@lucide/svelte";
|
|
28
|
+
|
|
29
|
+
let {
|
|
30
|
+
authState = "anonymous",
|
|
31
|
+
user = null,
|
|
32
|
+
mode = "icon",
|
|
33
|
+
tone = "default",
|
|
34
|
+
signInLabel = "Se connecter",
|
|
35
|
+
accountLabel = "Compte",
|
|
36
|
+
onSignIn,
|
|
37
|
+
onSignOut,
|
|
38
|
+
menu = [],
|
|
39
|
+
}: {
|
|
40
|
+
authState?: IdentityState;
|
|
41
|
+
user?: IdentityUser | null;
|
|
42
|
+
mode?: IdentityMode;
|
|
43
|
+
tone?: IdentityTone;
|
|
44
|
+
signInLabel?: string;
|
|
45
|
+
accountLabel?: string;
|
|
46
|
+
onSignIn?: () => void;
|
|
47
|
+
onSignOut?: () => void;
|
|
48
|
+
menu?: IdentityMenuEntry[];
|
|
49
|
+
} = $props();
|
|
50
|
+
|
|
51
|
+
let triggerEl = $state<HTMLElement | null>(null);
|
|
52
|
+
let open = $state(false);
|
|
53
|
+
|
|
54
|
+
const initials = $derived(
|
|
55
|
+
user?.name
|
|
56
|
+
? user.name.trim().split(/\s+/).map((w) => w[0]).slice(0, 2).join("").toUpperCase()
|
|
57
|
+
: "",
|
|
58
|
+
);
|
|
59
|
+
const authed = $derived(authState === "authenticated");
|
|
60
|
+
// Items du menu compte (mode "menu" ou clic sur l'avatar authentifie).
|
|
61
|
+
const menuItems = $derived([
|
|
62
|
+
...menu.map((e) => ({ label: e.label, value: e.href ?? e.label })),
|
|
63
|
+
...(onSignOut ? [{ label: "Se déconnecter", value: "__signout" }] : []),
|
|
64
|
+
]);
|
|
65
|
+
function onMenuSelect(value: string) {
|
|
66
|
+
open = false;
|
|
67
|
+
if (value === "__signout") return onSignOut?.();
|
|
68
|
+
const entry = menu.find((e) => (e.href ?? e.label) === value);
|
|
69
|
+
if (entry?.onClick) entry.onClick();
|
|
70
|
+
else if (entry?.href) location.href = entry.href;
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
{#snippet face()}
|
|
75
|
+
{#if authed && user?.avatarSrc}
|
|
76
|
+
<img class="st-identityBtn__avatar" src={user.avatarSrc} alt="" aria-hidden="true" />
|
|
77
|
+
{:else if authed && initials}
|
|
78
|
+
<span class="st-identityBtn__initials" aria-hidden="true">{initials}</span>
|
|
79
|
+
{:else}
|
|
80
|
+
<User size={16} strokeWidth={2.1} aria-hidden="true" />
|
|
81
|
+
{/if}
|
|
82
|
+
{/snippet}
|
|
83
|
+
|
|
84
|
+
<span class="st-identityBtn" class:st-identityBtn--onColor={tone === "onColor"}>
|
|
85
|
+
{#if mode === "button"}
|
|
86
|
+
<Button variant={authed ? "ghost" : "secondary"} size="sm" onclick={() => (authed ? (open = !open) : onSignIn?.())}>
|
|
87
|
+
{@render face()}
|
|
88
|
+
<span>{authed ? (user?.name ?? accountLabel) : signInLabel}</span>
|
|
89
|
+
</Button>
|
|
90
|
+
{:else if mode === "menu"}
|
|
91
|
+
<span class="st-identityBtn__wrap" bind:this={triggerEl}>
|
|
92
|
+
<IconButton size="sm" variant="ghost" aria-label={authed ? accountLabel : signInLabel} onclick={() => (open = !open)}>
|
|
93
|
+
{@render face()}
|
|
94
|
+
</IconButton>
|
|
95
|
+
</span>
|
|
96
|
+
{#if menuItems.length}
|
|
97
|
+
<MenuPopover bind:open trigger={triggerEl} placement="bottom-end" label={accountLabel}>
|
|
98
|
+
<Menu label={accountLabel} items={menuItems} onselect={onMenuSelect} />
|
|
99
|
+
</MenuPopover>
|
|
100
|
+
{/if}
|
|
101
|
+
{:else}
|
|
102
|
+
<!-- mode "icon" (defaut) : icone/avatar seul. -->
|
|
103
|
+
<IconButton
|
|
104
|
+
size="sm"
|
|
105
|
+
variant="ghost"
|
|
106
|
+
aria-label={authed ? accountLabel : signInLabel}
|
|
107
|
+
onclick={() => (authed ? (menuItems.length ? (open = !open) : undefined) : onSignIn?.())}
|
|
108
|
+
>
|
|
109
|
+
{@render face()}
|
|
110
|
+
</IconButton>
|
|
111
|
+
{/if}
|
|
112
|
+
</span>
|
|
113
|
+
|
|
114
|
+
<style>
|
|
115
|
+
.st-identityBtn { display: inline-flex; }
|
|
116
|
+
.st-identityBtn__wrap { display: inline-flex; }
|
|
117
|
+
.st-identityBtn__avatar { width: 1.5rem; height: 1.5rem; border-radius: 50%; object-fit: cover; }
|
|
118
|
+
.st-identityBtn__initials {
|
|
119
|
+
width: 1.5rem; height: 1.5rem; border-radius: 50%;
|
|
120
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
121
|
+
font-size: 0.6875rem; font-weight: 650;
|
|
122
|
+
background: var(--st-semantic-surface-subtle, #f1f5f9);
|
|
123
|
+
color: var(--st-semantic-text-primary, #0f172a);
|
|
124
|
+
}
|
|
125
|
+
/* tone onColor : icone blanche pour chromes colores (Airbus/DSFR/sombres). */
|
|
126
|
+
.st-identityBtn--onColor :global(.st-iconButton),
|
|
127
|
+
.st-identityBtn--onColor :global(.st-button) { color: #ffffff; }
|
|
128
|
+
</style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type IdentityState = "anonymous" | "authenticated";
|
|
2
|
+
export type IdentityMode = "icon" | "button" | "menu";
|
|
3
|
+
export type IdentityTone = "default" | "onColor";
|
|
4
|
+
export interface IdentityUser {
|
|
5
|
+
name: string;
|
|
6
|
+
avatarSrc?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IdentityMenuEntry {
|
|
9
|
+
label: string;
|
|
10
|
+
href?: string;
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
}
|
|
13
|
+
type $$ComponentProps = {
|
|
14
|
+
authState?: IdentityState;
|
|
15
|
+
user?: IdentityUser | null;
|
|
16
|
+
mode?: IdentityMode;
|
|
17
|
+
tone?: IdentityTone;
|
|
18
|
+
signInLabel?: string;
|
|
19
|
+
accountLabel?: string;
|
|
20
|
+
onSignIn?: () => void;
|
|
21
|
+
onSignOut?: () => void;
|
|
22
|
+
menu?: IdentityMenuEntry[];
|
|
23
|
+
};
|
|
24
|
+
declare const IdentityButton: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
25
|
+
type IdentityButton = ReturnType<typeof IdentityButton>;
|
|
26
|
+
export default IdentityButton;
|
|
27
|
+
//# sourceMappingURL=IdentityButton.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdentityButton.svelte.d.ts","sourceRoot":"","sources":["../src/lib/IdentityButton.svelte.ts"],"names":[],"mappings":"AAKE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACtD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AACjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAaF,KAAK,gBAAgB,GAAI;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAwFJ,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
|
|
4
|
+
/** Profondeur dans l'arbre de nav → échelle typographique DÉCROISSANTE.
|
|
5
|
+
* L0 = racine (base/600), chaque palier descend en taille ET en graisse pour
|
|
6
|
+
* que la hiérarchie se LISE sans indentation seule. */
|
|
7
|
+
export type NavItemDepth = 0 | 1 | 2 | 3;
|
|
8
|
+
|
|
9
|
+
/** Ton sémantique de la rangée. `error` est un VRAI état (un « HTTP 403 »
|
|
10
|
+
* devient rouge sémantique), pas une teinte décorative. */
|
|
11
|
+
export type NavItemStatus = "neutral" | "info" | "success" | "warning" | "error";
|
|
12
|
+
|
|
13
|
+
export type NavItemSwatch = {
|
|
14
|
+
/** Couleur arbitraire (hex/rgb/var) → rendue par ColorSwatch. */
|
|
15
|
+
color?: string;
|
|
16
|
+
/** Ton sémantique → rendu par StatusDot (un point). Ignoré si `color`. */
|
|
17
|
+
tone?: "neutral" | "info" | "success" | "warning" | "error";
|
|
18
|
+
/** Forme de la pastille couleur (ColorSwatch). Défaut « square ». */
|
|
19
|
+
shape?: "square" | "circle" | "pill";
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type NavItemProps = {
|
|
23
|
+
/** Clé de sélection, passée telle quelle à SelectableRow (data-value). */
|
|
24
|
+
value?: string;
|
|
25
|
+
/** Libellé principal (1ʳᵉ ligne). */
|
|
26
|
+
title: string;
|
|
27
|
+
/** 2ᵉ ligne MUETTE, ellipsée indépendamment du titre. */
|
|
28
|
+
caption?: string;
|
|
29
|
+
/** Profondeur (défaut 0) → échelle typo + indentation de la tête. */
|
|
30
|
+
depth?: NavItemDepth;
|
|
31
|
+
/** Pastille de tête : couleur arbitraire (ColorSwatch) ou ton (StatusDot). */
|
|
32
|
+
swatch?: NavItemSwatch;
|
|
33
|
+
/** Bulle de compte en queue (Badge circle/sm, tabular-nums). */
|
|
34
|
+
count?: number;
|
|
35
|
+
/** Ton sémantique de la rangée. */
|
|
36
|
+
status?: NavItemStatus;
|
|
37
|
+
/** Sélection (bindable, honorée en standalone ; la liste prime si encadrée). */
|
|
38
|
+
selected?: boolean;
|
|
39
|
+
/** Non-interactif. */
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/** Rend la rangée comme un lien (ancre) — anatomie identique. */
|
|
42
|
+
href?: string;
|
|
43
|
+
/** Tête personnalisée (prime sur `swatch`). MUST NOT être interactif en option. */
|
|
44
|
+
leading?: Snippet;
|
|
45
|
+
/** Queue personnalisée (prime sur `count`). MUST NOT être interactif en option. */
|
|
46
|
+
trailing?: Snippet;
|
|
47
|
+
/** Séparateur token-only rendu APRÈS la rangée. */
|
|
48
|
+
divider?: boolean;
|
|
49
|
+
class?: string;
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<script lang="ts">
|
|
54
|
+
// NavItem — l'ANATOMIE DE RANGÉE CANONIQUE du système de navigation (vague 2).
|
|
55
|
+
// C'est la brique que tout rail/drawer instancie : tête (pastille/icône) +
|
|
56
|
+
// titre + caption muette + queue (bulle de compte) + sélection + profondeur
|
|
57
|
+
// typographique + séparateur optionnel.
|
|
58
|
+
//
|
|
59
|
+
// Zéro-entropie : NavItem NE RÉIMPLÉMENTE RIEN. Il COMPOSE SelectableRow (qui
|
|
60
|
+
// possède déjà leading/trailing, la caption à ellipse indépendante, la
|
|
61
|
+
// sélection à 2 signaux, l'accentBar opt-in, le rôle ARIA dérivé du conteneur
|
|
62
|
+
// et la propagation du roving-tabindex) et réutilise les primitives vague 1 :
|
|
63
|
+
// • ColorSwatch → tête quand `swatch.color` (couleur arbitraire inline)
|
|
64
|
+
// • StatusDot → tête quand `swatch.tone` (point sémantique)
|
|
65
|
+
// • Badge → queue (shape="circle" size="sm", tabular-nums) pour `count`
|
|
66
|
+
// Style PROPRE token-only scopé : chaque --st-component-navItem-* retombe sur
|
|
67
|
+
// un littéral de base, AUCUN hex en dur. Un thème qui n'émet rien rend
|
|
68
|
+
// byte-identique.
|
|
69
|
+
//
|
|
70
|
+
// a11y : NavItem N'INTRODUIT AUCUN interactif dans la rangée — pastille, badge
|
|
71
|
+
// et caption sont décoratifs/textuels. Le href passe par l'ancre native de
|
|
72
|
+
// SelectableRow… mais SelectableRow rend un <div role=button/option> : pour un
|
|
73
|
+
// lien réel on enveloppe via la tête. Ici `href` est exposé comme intention de
|
|
74
|
+
// navigation transmise au consommateur (onselect) — la rangée reste UN seul
|
|
75
|
+
// tab stop, conforme au rôle « option » dérivé du conteneur.
|
|
76
|
+
import SelectableRow from "./SelectableRow.svelte";
|
|
77
|
+
import ColorSwatch from "./ColorSwatch.svelte";
|
|
78
|
+
import StatusDot from "./StatusDot.svelte";
|
|
79
|
+
import Badge from "./Badge.svelte";
|
|
80
|
+
|
|
81
|
+
let {
|
|
82
|
+
value,
|
|
83
|
+
title,
|
|
84
|
+
caption,
|
|
85
|
+
depth = 0,
|
|
86
|
+
swatch,
|
|
87
|
+
count,
|
|
88
|
+
status = "neutral",
|
|
89
|
+
selected = $bindable(false),
|
|
90
|
+
disabled = false,
|
|
91
|
+
href,
|
|
92
|
+
leading,
|
|
93
|
+
trailing,
|
|
94
|
+
divider = false,
|
|
95
|
+
class: className
|
|
96
|
+
}: NavItemProps = $props();
|
|
97
|
+
|
|
98
|
+
// Profondeur bornée [0..3] : une valeur hors-borne ne doit pas casser la classe.
|
|
99
|
+
const safeDepth = $derived(
|
|
100
|
+
(Math.min(Math.max(Math.trunc(Number(depth) || 0), 0), 3)) as NavItemDepth
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
// status → tone Badge : Badge ne connaît pas "neutral"+"info"+… exactement de
|
|
104
|
+
// la même façon, mais ses tons couvrent neutral/info/success/warning/error.
|
|
105
|
+
const badgeTone = $derived(status);
|
|
106
|
+
|
|
107
|
+
// Le count alimente un aria-label explicite « N title » (un compte nu est
|
|
108
|
+
// ambigu pour un lecteur d'écran — cf. la doc de Badge).
|
|
109
|
+
const countLabel = $derived(
|
|
110
|
+
count != null ? `${count} ${title}` : undefined
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
// Classes posées sur le WRAPPER NavItem (la rangée elle-même est SelectableRow).
|
|
114
|
+
// Le wrapper porte la profondeur (échelle typo + indentation) et le ton de
|
|
115
|
+
// rangée — ainsi SelectableRow reste inchangé et son rôle ARIA dérivé du
|
|
116
|
+
// conteneur (option/button) est préservé.
|
|
117
|
+
const wrapperClasses = $derived(
|
|
118
|
+
[
|
|
119
|
+
"st-navItem",
|
|
120
|
+
`st-navItem--depth${safeDepth}`,
|
|
121
|
+
status !== "neutral" ? `st-navItem--status-${status}` : null,
|
|
122
|
+
className
|
|
123
|
+
]
|
|
124
|
+
.filter(Boolean)
|
|
125
|
+
.join(" ")
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// Indentation de profondeur : un CSS var additif sur le wrapper, à fallback
|
|
129
|
+
// littéral par palier (aucun hex). SelectableRow ne forwarde pas `style` ; on
|
|
130
|
+
// pose donc la var sur le wrapper et la rangée hérite via la cascade.
|
|
131
|
+
const depthStyle = $derived(
|
|
132
|
+
`--st-navItem-indent: var(--st-component-navItem-depth${safeDepth}-indent, ${
|
|
133
|
+
["0rem", "0.75rem", "1.5rem", "2.25rem"][safeDepth]
|
|
134
|
+
});`
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
</script>
|
|
138
|
+
|
|
139
|
+
<!-- Snippet de caption déclaré HORS de SelectableRow : il n'est passé en prop
|
|
140
|
+
`caption` QUE lorsque `caption` est fournie, pour préserver l'invariant
|
|
141
|
+
byte-identité de SelectableRow (sans caption → rangée single-line). -->
|
|
142
|
+
{#snippet captionSnippet()}
|
|
143
|
+
<span class="st-navItem__caption">{caption}</span>
|
|
144
|
+
{/snippet}
|
|
145
|
+
|
|
146
|
+
<div class={wrapperClasses} style={depthStyle}>
|
|
147
|
+
<SelectableRow
|
|
148
|
+
bind:selected
|
|
149
|
+
{value}
|
|
150
|
+
{disabled}
|
|
151
|
+
role={href ? "link" : undefined}
|
|
152
|
+
caption={caption ? captionSnippet : undefined}
|
|
153
|
+
>
|
|
154
|
+
{#snippet leading()}
|
|
155
|
+
{#if leading}
|
|
156
|
+
{@render leading()}
|
|
157
|
+
{:else if swatch}
|
|
158
|
+
<!-- Tête : ColorSwatch pour une couleur arbitraire, sinon StatusDot pour
|
|
159
|
+
un ton sémantique. Décoratif → aria géré par la primitive. -->
|
|
160
|
+
{#if swatch.color}
|
|
161
|
+
<ColorSwatch color={swatch.color} shape={swatch.shape ?? "square"} size={14} />
|
|
162
|
+
{:else}
|
|
163
|
+
<StatusDot tone={swatch.tone ?? "neutral"} size={8} />
|
|
164
|
+
{/if}
|
|
165
|
+
{/if}
|
|
166
|
+
{/snippet}
|
|
167
|
+
|
|
168
|
+
{#snippet children()}
|
|
169
|
+
<span class="st-navItem__title">{title}</span>
|
|
170
|
+
{/snippet}
|
|
171
|
+
|
|
172
|
+
{#snippet trailing()}
|
|
173
|
+
{#if trailing}
|
|
174
|
+
{@render trailing()}
|
|
175
|
+
{:else if count != null}
|
|
176
|
+
<!-- Queue : bulle de compte. Badge shape="circle" size="sm" (tabular-nums),
|
|
177
|
+
ton sémantique aligné sur le `status` de la rangée. aria-label explicite. -->
|
|
178
|
+
<Badge shape="circle" size="sm" tone={badgeTone} aria-label={countLabel}>
|
|
179
|
+
{count}
|
|
180
|
+
</Badge>
|
|
181
|
+
{/if}
|
|
182
|
+
{/snippet}
|
|
183
|
+
</SelectableRow>
|
|
184
|
+
|
|
185
|
+
{#if divider}
|
|
186
|
+
<!-- Séparateur token-only APRÈS la rangée (anatomie de liste de nav). -->
|
|
187
|
+
<hr class="st-navItem__divider" aria-hidden="true" />
|
|
188
|
+
{/if}
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<style>
|
|
192
|
+
.st-navItem {
|
|
193
|
+
display: block;
|
|
194
|
+
inline-size: 100%;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/* Indentation de PROFONDEUR : décale la rangée SelectableRow (sa tête comprise)
|
|
198
|
+
par un padding inline-start ADDITIF à son padding de base (0.75rem). On cible
|
|
199
|
+
la rangée via :global car c'est le DOM de SelectableRow (composé, pas inline).
|
|
200
|
+
La var --st-navItem-indent est posée sur le wrapper et héritée par cascade. */
|
|
201
|
+
.st-navItem :global(.st-selectableRow) {
|
|
202
|
+
padding-inline-start: calc(0.75rem + var(--st-navItem-indent, 0rem));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/* Échelle typographique : la graisse ET la taille DÉCROISSENT avec la
|
|
206
|
+
profondeur, pour que la hiérarchie se lise sans relief de couleur. Le wrapper
|
|
207
|
+
et le titre sont tous deux NavItem-authored (scope identique) → pas de
|
|
208
|
+
:global nécessaire. Chaque token retombe sur un littéral → thème silencieux =
|
|
209
|
+
byte-identique. */
|
|
210
|
+
.st-navItem--depth0 .st-navItem__title {
|
|
211
|
+
font-size: var(--st-component-navItem-depth0-fontSize, 0.875rem);
|
|
212
|
+
font-weight: var(--st-component-navItem-depth0-fontWeight, 600);
|
|
213
|
+
}
|
|
214
|
+
.st-navItem--depth1 .st-navItem__title {
|
|
215
|
+
font-size: var(--st-component-navItem-depth1-fontSize, 0.8125rem);
|
|
216
|
+
font-weight: var(--st-component-navItem-depth1-fontWeight, 500);
|
|
217
|
+
}
|
|
218
|
+
.st-navItem--depth2 .st-navItem__title {
|
|
219
|
+
font-size: var(--st-component-navItem-depth2-fontSize, 0.8125rem);
|
|
220
|
+
font-weight: var(--st-component-navItem-depth2-fontWeight, 400);
|
|
221
|
+
}
|
|
222
|
+
/* L3 — muted : même métrique que L2, couleur atténuée. */
|
|
223
|
+
.st-navItem--depth3 .st-navItem__title {
|
|
224
|
+
font-size: var(--st-component-navItem-depth3-fontSize, 0.8125rem);
|
|
225
|
+
font-weight: var(--st-component-navItem-depth3-fontWeight, 400);
|
|
226
|
+
color: var(--st-component-navItem-depth3-color, var(--st-semantic-text-muted));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.st-navItem__title {
|
|
230
|
+
display: block;
|
|
231
|
+
min-width: 0;
|
|
232
|
+
overflow: hidden;
|
|
233
|
+
text-overflow: ellipsis;
|
|
234
|
+
white-space: nowrap;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.st-navItem__caption {
|
|
238
|
+
display: block;
|
|
239
|
+
min-width: 0;
|
|
240
|
+
overflow: hidden;
|
|
241
|
+
text-overflow: ellipsis;
|
|
242
|
+
white-space: nowrap;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Ton sémantique de la RANGÉE : teinte le titre par le feedback correspondant.
|
|
246
|
+
Un « HTTP 403 » error devient rouge sémantique réel. Chaque ton retombe sur
|
|
247
|
+
son token --st-semantic-feedback-*. */
|
|
248
|
+
.st-navItem--status-info .st-navItem__title {
|
|
249
|
+
color: var(--st-component-navItem-status-info, var(--st-semantic-feedback-info));
|
|
250
|
+
}
|
|
251
|
+
.st-navItem--status-success .st-navItem__title {
|
|
252
|
+
color: var(--st-component-navItem-status-success, var(--st-semantic-feedback-success));
|
|
253
|
+
}
|
|
254
|
+
.st-navItem--status-warning .st-navItem__title {
|
|
255
|
+
color: var(--st-component-navItem-status-warning, var(--st-semantic-feedback-warning));
|
|
256
|
+
}
|
|
257
|
+
.st-navItem--status-error .st-navItem__title {
|
|
258
|
+
color: var(--st-component-navItem-status-error, var(--st-semantic-feedback-error));
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Séparateur token-only : une fine règle pleine largeur après la rangée. */
|
|
262
|
+
.st-navItem__divider {
|
|
263
|
+
border: 0;
|
|
264
|
+
border-top: var(--st-border-width-thin, 1px) solid
|
|
265
|
+
var(--st-component-navItem-dividerColor, var(--st-semantic-border-subtle, rgba(0, 0, 0, 0.08)));
|
|
266
|
+
margin-block: var(--st-component-navItem-dividerGap, 0.375rem);
|
|
267
|
+
}
|
|
268
|
+
</style>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
/** Profondeur dans l'arbre de nav → échelle typographique DÉCROISSANTE.
|
|
3
|
+
* L0 = racine (base/600), chaque palier descend en taille ET en graisse pour
|
|
4
|
+
* que la hiérarchie se LISE sans indentation seule. */
|
|
5
|
+
export type NavItemDepth = 0 | 1 | 2 | 3;
|
|
6
|
+
/** Ton sémantique de la rangée. `error` est un VRAI état (un « HTTP 403 »
|
|
7
|
+
* devient rouge sémantique), pas une teinte décorative. */
|
|
8
|
+
export type NavItemStatus = "neutral" | "info" | "success" | "warning" | "error";
|
|
9
|
+
export type NavItemSwatch = {
|
|
10
|
+
/** Couleur arbitraire (hex/rgb/var) → rendue par ColorSwatch. */
|
|
11
|
+
color?: string;
|
|
12
|
+
/** Ton sémantique → rendu par StatusDot (un point). Ignoré si `color`. */
|
|
13
|
+
tone?: "neutral" | "info" | "success" | "warning" | "error";
|
|
14
|
+
/** Forme de la pastille couleur (ColorSwatch). Défaut « square ». */
|
|
15
|
+
shape?: "square" | "circle" | "pill";
|
|
16
|
+
};
|
|
17
|
+
export type NavItemProps = {
|
|
18
|
+
/** Clé de sélection, passée telle quelle à SelectableRow (data-value). */
|
|
19
|
+
value?: string;
|
|
20
|
+
/** Libellé principal (1ʳᵉ ligne). */
|
|
21
|
+
title: string;
|
|
22
|
+
/** 2ᵉ ligne MUETTE, ellipsée indépendamment du titre. */
|
|
23
|
+
caption?: string;
|
|
24
|
+
/** Profondeur (défaut 0) → échelle typo + indentation de la tête. */
|
|
25
|
+
depth?: NavItemDepth;
|
|
26
|
+
/** Pastille de tête : couleur arbitraire (ColorSwatch) ou ton (StatusDot). */
|
|
27
|
+
swatch?: NavItemSwatch;
|
|
28
|
+
/** Bulle de compte en queue (Badge circle/sm, tabular-nums). */
|
|
29
|
+
count?: number;
|
|
30
|
+
/** Ton sémantique de la rangée. */
|
|
31
|
+
status?: NavItemStatus;
|
|
32
|
+
/** Sélection (bindable, honorée en standalone ; la liste prime si encadrée). */
|
|
33
|
+
selected?: boolean;
|
|
34
|
+
/** Non-interactif. */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/** Rend la rangée comme un lien (ancre) — anatomie identique. */
|
|
37
|
+
href?: string;
|
|
38
|
+
/** Tête personnalisée (prime sur `swatch`). MUST NOT être interactif en option. */
|
|
39
|
+
leading?: Snippet;
|
|
40
|
+
/** Queue personnalisée (prime sur `count`). MUST NOT être interactif en option. */
|
|
41
|
+
trailing?: Snippet;
|
|
42
|
+
/** Séparateur token-only rendu APRÈS la rangée. */
|
|
43
|
+
divider?: boolean;
|
|
44
|
+
class?: string;
|
|
45
|
+
};
|
|
46
|
+
declare const NavItem: import("svelte").Component<NavItemProps, {}, "selected">;
|
|
47
|
+
type NavItem = ReturnType<typeof NavItem>;
|
|
48
|
+
export default NavItem;
|
|
49
|
+
//# sourceMappingURL=NavItem.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavItem.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NavItem.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC;;uDAEuD;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzC;2DAC2D;AAC3D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG;IAC1B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC5D,qEAAqE;IACrE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoKJ,QAAA,MAAM,OAAO,0DAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/** Niveau de titre porté par l'Overline d'en-tête de section. `h2`/`h3` quand la
|
|
3
|
+
* section est une vraie région titrée d'un rail/drawer ; choisis selon la
|
|
4
|
+
* profondeur du sommaire. */
|
|
5
|
+
export type NavSectionHeadingLevel = "h2" | "h3";
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
// NavSection — EN-TÊTE DE GROUPE d'un rail / drawer (« COMMUNITIES »,
|
|
10
|
+
// « SIGNAUX », « Pastilles », « Zonage / Potentiel », « DOCUMENTATION »).
|
|
11
|
+
// Donne la hiérarchie typographique qui manque à une liste plate + un foyer
|
|
12
|
+
// normé pour l'action locale (au lieu d'un bouton primaire planté dans la
|
|
13
|
+
// liste). ZÉRO-ENTROPIE : on RÉUTILISE les primitives déjà livrées —
|
|
14
|
+
// • Overline → le libellé small-caps muet (rendu en h2/h3 pour la
|
|
15
|
+
// sémantique de titre quand la section n'est PAS repliable) ;
|
|
16
|
+
// • Badge shape="circle" → le compteur de section en queue d'en-tête ;
|
|
17
|
+
// • Collapsible → le disclosure (trigger aria-expanded + région
|
|
18
|
+
// aria-labelledby) quand `collapsible`.
|
|
19
|
+
// On ne réimplémente NI disclosure NI libellé. Style token-only scopé, aucun hex.
|
|
20
|
+
import type { Snippet } from "svelte";
|
|
21
|
+
import Badge from "./Badge.svelte";
|
|
22
|
+
import Collapsible from "./Collapsible.svelte";
|
|
23
|
+
import Overline from "./Overline.svelte";
|
|
24
|
+
|
|
25
|
+
type NavSectionProps = {
|
|
26
|
+
/** Libellé de la section, rendu via Overline (small-caps muet). */
|
|
27
|
+
label: string;
|
|
28
|
+
/** Compteur optionnel → Badge circle en queue de l'en-tête. */
|
|
29
|
+
count?: number;
|
|
30
|
+
/** Si true, l'en-tête devient le trigger d'un Collapsible (aria-expanded)
|
|
31
|
+
* qui montre/cache le contenu. Sinon : groupe titré statique. */
|
|
32
|
+
collapsible?: boolean;
|
|
33
|
+
/** État d'ouverture quand `collapsible` (bindable). */
|
|
34
|
+
open?: boolean;
|
|
35
|
+
/** Niveau de titre de l'Overline quand la section n'est pas repliable. */
|
|
36
|
+
as?: NavSectionHeadingLevel;
|
|
37
|
+
/** Emplacement normé d'une action de section (ex. Button « + Ajouter »),
|
|
38
|
+
* aligné à droite de l'en-tête. NON rendu quand `collapsible` (le trigger
|
|
39
|
+
* occupe l'en-tête en entier — place l'action dans le contenu). */
|
|
40
|
+
action?: Snippet;
|
|
41
|
+
/** Contenu de la section (NavItem / NavList) — rendu dans la région. */
|
|
42
|
+
children: Snippet;
|
|
43
|
+
class?: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
let {
|
|
47
|
+
label,
|
|
48
|
+
count,
|
|
49
|
+
collapsible = false,
|
|
50
|
+
open = $bindable(true),
|
|
51
|
+
as = "h3",
|
|
52
|
+
action,
|
|
53
|
+
children,
|
|
54
|
+
class: className
|
|
55
|
+
}: NavSectionProps = $props();
|
|
56
|
+
|
|
57
|
+
const uid = `st-navSection-${Math.random().toString(36).slice(2, 9)}`;
|
|
58
|
+
|
|
59
|
+
const rootClasses = $derived(
|
|
60
|
+
[
|
|
61
|
+
"st-navSection",
|
|
62
|
+
collapsible ? "st-navSection--collapsible" : "st-navSection--static",
|
|
63
|
+
className
|
|
64
|
+
]
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.join(" ")
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const hasCount = $derived(typeof count === "number");
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
{#if collapsible}
|
|
73
|
+
<!-- Repliable : l'en-tête EST le trigger du Collapsible. Le compteur passe par
|
|
74
|
+
son slot `trailing` (entre le titre et le chevron) ; on annonce le tout aux
|
|
75
|
+
lecteurs d'écran via aria-label. L'action de section n'a pas sa place dans
|
|
76
|
+
un trigger (un bouton dans un bouton) : la documenter dans le contenu. -->
|
|
77
|
+
<Collapsible
|
|
78
|
+
bind:open
|
|
79
|
+
title={label}
|
|
80
|
+
aria-label={hasCount ? `${label}, ${count}` : label}
|
|
81
|
+
class={rootClasses}
|
|
82
|
+
>
|
|
83
|
+
{#snippet trailing()}
|
|
84
|
+
{#if hasCount}
|
|
85
|
+
<Badge shape="circle" size="sm" aria-label={`${count} éléments`}>{count}</Badge>
|
|
86
|
+
{/if}
|
|
87
|
+
{/snippet}
|
|
88
|
+
{@render children()}
|
|
89
|
+
</Collapsible>
|
|
90
|
+
{:else}
|
|
91
|
+
<!-- Statique : groupe titré par l'Overline (h2/h3). Le contenu est relié au
|
|
92
|
+
titre via aria-labelledby — la liste devient une vraie région titrée. -->
|
|
93
|
+
<section {...{ class: rootClasses }} role="group" aria-labelledby={`${uid}-label`}>
|
|
94
|
+
<div class="st-navSection__header">
|
|
95
|
+
<Overline {as} id={`${uid}-label`} class="st-navSection__label">
|
|
96
|
+
{label}
|
|
97
|
+
{#if hasCount}
|
|
98
|
+
<Badge
|
|
99
|
+
shape="circle"
|
|
100
|
+
size="sm"
|
|
101
|
+
class="st-navSection__count"
|
|
102
|
+
aria-label={`${count} éléments`}>{count}</Badge>
|
|
103
|
+
{/if}
|
|
104
|
+
</Overline>
|
|
105
|
+
{#if action}
|
|
106
|
+
<span class="st-navSection__action">{@render action()}</span>
|
|
107
|
+
{/if}
|
|
108
|
+
</div>
|
|
109
|
+
<div class="st-navSection__body">
|
|
110
|
+
{@render children()}
|
|
111
|
+
</div>
|
|
112
|
+
</section>
|
|
113
|
+
{/if}
|
|
114
|
+
|
|
115
|
+
<style>
|
|
116
|
+
/* Token-only scopé. L'en-tête statique aligne le libellé (small-caps via
|
|
117
|
+
Overline), le compteur en queue, et pousse l'action de section à droite. */
|
|
118
|
+
.st-navSection {
|
|
119
|
+
inline-size: 100%;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.st-navSection__header {
|
|
123
|
+
align-items: baseline;
|
|
124
|
+
display: flex;
|
|
125
|
+
gap: var(--st-spacing-2, 0.5rem);
|
|
126
|
+
justify-content: space-between;
|
|
127
|
+
padding-block: var(--st-component-navSection-headerPaddingBlock, 0.375rem);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Le libellé et son compteur forment un bloc ; le Badge circle s'aligne au
|
|
131
|
+
centre vertical du texte small-caps. */
|
|
132
|
+
.st-navSection :global(.st-navSection__label) {
|
|
133
|
+
align-items: center;
|
|
134
|
+
display: inline-flex;
|
|
135
|
+
gap: var(--st-spacing-2, 0.5rem);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.st-navSection :global(.st-navSection__count) {
|
|
139
|
+
flex: 0 0 auto;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Foyer de l'action de section : ancré à droite, ne grandit pas. */
|
|
143
|
+
.st-navSection__action {
|
|
144
|
+
align-items: center;
|
|
145
|
+
display: inline-flex;
|
|
146
|
+
flex: 0 0 auto;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.st-navSection__body {
|
|
150
|
+
display: block;
|
|
151
|
+
}
|
|
152
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Niveau de titre porté par l'Overline d'en-tête de section. `h2`/`h3` quand la
|
|
2
|
+
* section est une vraie région titrée d'un rail/drawer ; choisis selon la
|
|
3
|
+
* profondeur du sommaire. */
|
|
4
|
+
export type NavSectionHeadingLevel = "h2" | "h3";
|
|
5
|
+
import type { Snippet } from "svelte";
|
|
6
|
+
type NavSectionProps = {
|
|
7
|
+
/** Libellé de la section, rendu via Overline (small-caps muet). */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Compteur optionnel → Badge circle en queue de l'en-tête. */
|
|
10
|
+
count?: number;
|
|
11
|
+
/** Si true, l'en-tête devient le trigger d'un Collapsible (aria-expanded)
|
|
12
|
+
* qui montre/cache le contenu. Sinon : groupe titré statique. */
|
|
13
|
+
collapsible?: boolean;
|
|
14
|
+
/** État d'ouverture quand `collapsible` (bindable). */
|
|
15
|
+
open?: boolean;
|
|
16
|
+
/** Niveau de titre de l'Overline quand la section n'est pas repliable. */
|
|
17
|
+
as?: NavSectionHeadingLevel;
|
|
18
|
+
/** Emplacement normé d'une action de section (ex. Button « + Ajouter »),
|
|
19
|
+
* aligné à droite de l'en-tête. NON rendu quand `collapsible` (le trigger
|
|
20
|
+
* occupe l'en-tête en entier — place l'action dans le contenu). */
|
|
21
|
+
action?: Snippet;
|
|
22
|
+
/** Contenu de la section (NavItem / NavList) — rendu dans la région. */
|
|
23
|
+
children: Snippet;
|
|
24
|
+
class?: string;
|
|
25
|
+
};
|
|
26
|
+
declare const NavSection: import("svelte").Component<NavSectionProps, {}, "open">;
|
|
27
|
+
type NavSection = ReturnType<typeof NavSection>;
|
|
28
|
+
export default NavSection;
|
|
29
|
+
//# sourceMappingURL=NavSection.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavSection.svelte.d.ts","sourceRoot":"","sources":["../src/lib/NavSection.svelte.ts"],"names":[],"mappings":"AAGE;;6BAE6B;AAC7B,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;AAcnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMpC,KAAK,eAAe,GAAG;IACrB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;qEACiE;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,EAAE,CAAC,EAAE,sBAAsB,CAAC;IAC5B;;uEAEmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAiFJ,QAAA,MAAM,UAAU,yDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -111,6 +111,8 @@ export { default as ColorScaleBar } from "./ColorScaleBar.svelte";
|
|
|
111
111
|
export { default as Overline } from "./Overline.svelte";
|
|
112
112
|
export { default as StatusDot } from "./StatusDot.svelte";
|
|
113
113
|
export { default as NavActionStack } from "./NavActionStack.svelte";
|
|
114
|
+
export { default as NavItem } from "./NavItem.svelte";
|
|
115
|
+
export { default as NavSection } from "./NavSection.svelte";
|
|
114
116
|
export { default as Timeline } from "./Timeline.svelte";
|
|
115
117
|
export { default as RibbonChart } from "./RibbonChart.svelte";
|
|
116
118
|
export { default as AnomalySwimLaneChart } from "./AnomalySwimLaneChart.svelte";
|
|
@@ -193,6 +195,10 @@ export { default as Table } from "./Table.svelte";
|
|
|
193
195
|
export { default as Tabs } from "./Tabs.svelte";
|
|
194
196
|
export { default as Tag } from "./Tag.svelte";
|
|
195
197
|
export { default as ThemeProvider } from "./ThemeProvider.svelte";
|
|
198
|
+
export { default as AppShell } from "./AppShell.svelte";
|
|
199
|
+
export { default as IdentityButton } from "./IdentityButton.svelte";
|
|
200
|
+
export type { SiteConfig, SiteNavItem, ThemeOption, ColorMode, ActionMode } from "./site-config";
|
|
201
|
+
export { SITE_CONFIG_SCHEMA_VERSION, SHELL_TOKEN_CONTRACT } from "./site-config";
|
|
196
202
|
export { default as Textarea } from "./Textarea.svelte";
|
|
197
203
|
export { default as TimePicker } from "./TimePicker.svelte";
|
|
198
204
|
export { default as Tile } from "./Tile.svelte";
|
|
@@ -255,6 +261,8 @@ export type { ColorScaleBarOrientation } from "./ColorScaleBar.svelte";
|
|
|
255
261
|
export type { OverlineAs } from "./Overline.svelte";
|
|
256
262
|
export type { StatusDotTone } from "./StatusDot.svelte";
|
|
257
263
|
export type { NavAction, NavActionKind, NavActionDangerZone, NavActionStackOrientation } from "./NavActionStack.svelte";
|
|
264
|
+
export type { NavItemDepth, NavItemStatus, NavItemSwatch, NavItemProps } from "./NavItem.svelte";
|
|
265
|
+
export type { NavSectionHeadingLevel } from "./NavSection.svelte";
|
|
258
266
|
export type { TimelineItem, TimelineTone, TimelineOrientation } from "./Timeline.svelte";
|
|
259
267
|
export type { RibbonChartTone, RibbonChartDatum } from "./RibbonChart.svelte";
|
|
260
268
|
export type { AnomalySwimLaneTone, AnomalySwimLaneBucket, AnomalySwimLaneSeries } from "./AnomalySwimLaneChart.svelte";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -101,6 +101,8 @@ export { default as ColorScaleBar } from "./ColorScaleBar.svelte";
|
|
|
101
101
|
export { default as Overline } from "./Overline.svelte";
|
|
102
102
|
export { default as StatusDot } from "./StatusDot.svelte";
|
|
103
103
|
export { default as NavActionStack } from "./NavActionStack.svelte";
|
|
104
|
+
export { default as NavItem } from "./NavItem.svelte";
|
|
105
|
+
export { default as NavSection } from "./NavSection.svelte";
|
|
104
106
|
export { default as Timeline } from "./Timeline.svelte";
|
|
105
107
|
export { default as RibbonChart } from "./RibbonChart.svelte";
|
|
106
108
|
export { default as AnomalySwimLaneChart } from "./AnomalySwimLaneChart.svelte";
|
|
@@ -180,6 +182,12 @@ export { default as Table } from "./Table.svelte";
|
|
|
180
182
|
export { default as Tabs } from "./Tabs.svelte";
|
|
181
183
|
export { default as Tag } from "./Tag.svelte";
|
|
182
184
|
export { default as ThemeProvider } from "./ThemeProvider.svelte";
|
|
185
|
+
// App-shell : composant de chrome applicatif (compose Header/Menu/Button du DS).
|
|
186
|
+
// Ex-paquet @sentropic/app-shell, replié ici — c'est un composant comme un autre ;
|
|
187
|
+
// seul son contrat `SiteConfig` (data) est agnostique et réexporté ci-dessous.
|
|
188
|
+
export { default as AppShell } from "./AppShell.svelte";
|
|
189
|
+
export { default as IdentityButton } from "./IdentityButton.svelte";
|
|
190
|
+
export { SITE_CONFIG_SCHEMA_VERSION, SHELL_TOKEN_CONTRACT } from "./site-config";
|
|
183
191
|
export { default as Textarea } from "./Textarea.svelte";
|
|
184
192
|
export { default as TimePicker } from "./TimePicker.svelte";
|
|
185
193
|
export { default as Tile } from "./Tile.svelte";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/** Version de schéma du contrat `SiteConfig`. **STABLE / FIGÉ v1** : évolution
|
|
2
|
+
* UNIQUEMENT additive (nouvelles clés optionnelles) — aucune suppression/rename de
|
|
3
|
+
* clé existante sans bump majeur. Les consommateurs (geo, dataviz, docs…) peuvent
|
|
4
|
+
* construire contre v1 sans crainte de rupture. Skew toléré (cf. en-tête). */
|
|
5
|
+
export declare const SITE_CONFIG_SCHEMA_VERSION: 1;
|
|
6
|
+
/** Deux modes pour toute action navigable : `callback` (SPA riche) ou `navigate`
|
|
7
|
+
* (lien `href`, marche en HTML pur / site vitrine sans JS applicatif). */
|
|
8
|
+
export type ActionMode = "callback" | "navigate";
|
|
9
|
+
export interface SiteNavItem {
|
|
10
|
+
label: string;
|
|
11
|
+
href: string;
|
|
12
|
+
/** Marqué actif (souligné, aria-current=page). Sinon dérivé de `activePath`. */
|
|
13
|
+
active?: boolean;
|
|
14
|
+
/** Sous-navigation optionnelle. */
|
|
15
|
+
children?: SiteNavItem[];
|
|
16
|
+
}
|
|
17
|
+
export interface ThemeOption {
|
|
18
|
+
id: string;
|
|
19
|
+
label: string;
|
|
20
|
+
}
|
|
21
|
+
export type ColorMode = "light" | "dark" | "auto";
|
|
22
|
+
export interface SiteConfig {
|
|
23
|
+
/** Version de schéma du contrat (info ; le shell ne throw jamais sur écart). */
|
|
24
|
+
schemaVersion?: number;
|
|
25
|
+
brand: {
|
|
26
|
+
name: string;
|
|
27
|
+
productName?: string;
|
|
28
|
+
logoSrc?: string;
|
|
29
|
+
href?: string;
|
|
30
|
+
label?: string;
|
|
31
|
+
};
|
|
32
|
+
nav?: SiteNavItem[];
|
|
33
|
+
/** Chemin courant : calcule `active` si non fourni explicitement par item. */
|
|
34
|
+
activePath?: string;
|
|
35
|
+
navLabel?: string;
|
|
36
|
+
search?: {
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
placeholder?: string;
|
|
39
|
+
mode: ActionMode;
|
|
40
|
+
onSearch?: (query: string) => void;
|
|
41
|
+
hrefTemplate?: string;
|
|
42
|
+
};
|
|
43
|
+
theming: {
|
|
44
|
+
themes: ThemeOption[];
|
|
45
|
+
theme: string;
|
|
46
|
+
colorMode?: ColorMode;
|
|
47
|
+
onThemeChange?: (id: string) => void;
|
|
48
|
+
onColorModeChange?: (mode: ColorMode) => void;
|
|
49
|
+
themeLabel?: string;
|
|
50
|
+
colorModeLabels?: {
|
|
51
|
+
light: string;
|
|
52
|
+
dark: string;
|
|
53
|
+
auto: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
locale?: {
|
|
57
|
+
current: string;
|
|
58
|
+
available: Array<{
|
|
59
|
+
code: string;
|
|
60
|
+
label: string;
|
|
61
|
+
}>;
|
|
62
|
+
mode?: ActionMode;
|
|
63
|
+
onChange?: (code: string) => void;
|
|
64
|
+
hrefTemplate?: string;
|
|
65
|
+
label?: string;
|
|
66
|
+
};
|
|
67
|
+
frameworkSwitcher?: {
|
|
68
|
+
enabled: boolean;
|
|
69
|
+
current: string;
|
|
70
|
+
available: Array<{
|
|
71
|
+
id: string;
|
|
72
|
+
label: string;
|
|
73
|
+
}>;
|
|
74
|
+
mode: ActionMode;
|
|
75
|
+
onChange?: (id: string) => void;
|
|
76
|
+
hrefTemplate?: string;
|
|
77
|
+
};
|
|
78
|
+
identity?: {
|
|
79
|
+
state: "anonymous" | "authenticated";
|
|
80
|
+
user?: {
|
|
81
|
+
name: string;
|
|
82
|
+
avatarSrc?: string;
|
|
83
|
+
};
|
|
84
|
+
signInHref?: string;
|
|
85
|
+
onSignIn?: () => void;
|
|
86
|
+
onSignOut?: () => void;
|
|
87
|
+
menu?: Array<{
|
|
88
|
+
label: string;
|
|
89
|
+
href?: string;
|
|
90
|
+
onClick?: () => void;
|
|
91
|
+
}>;
|
|
92
|
+
label?: string;
|
|
93
|
+
};
|
|
94
|
+
links?: {
|
|
95
|
+
github?: string;
|
|
96
|
+
};
|
|
97
|
+
slots?: {
|
|
98
|
+
extraActions?: boolean;
|
|
99
|
+
searchResults?: boolean;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Token contract : les `--st-*` que le shell CONSOMME (doivent être fournis par le
|
|
103
|
+
* thème actif de l'hôte ; fallback CSS sinon, jamais de trou visuel). Sert de
|
|
104
|
+
* référence de découplage shell ⇄ thèmes. */
|
|
105
|
+
export declare const SHELL_TOKEN_CONTRACT: readonly ["--st-semantic-surface-default", "--st-semantic-text-primary", "--st-semantic-text-secondary", "--st-semantic-border-subtle", "--st-font-sans", "--st-spacing-4", "--st-spacing-6", "--st-shadow-lg"];
|
|
106
|
+
//# sourceMappingURL=site-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../src/lib/site-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
// CONTRAT `siteConfig` de `<sentropic-app-shell>` — source unique de paramétrage.
|
|
3
|
+
//
|
|
4
|
+
// Principe anti-dérive : TOUT ce qui doit être pixel-perfect est une DONNÉE de ce
|
|
5
|
+
// contrat (rendu par le shell), JAMAIS un slot bricolé en aval. Recherche, switcher
|
|
6
|
+
// framework et identité sont first-class ici — ce sont eux qui dérivaient quand ils
|
|
7
|
+
// vivaient hors du composant partagé.
|
|
8
|
+
//
|
|
9
|
+
// Tolérance de version (skew) : le shell IGNORE les clés inconnues et applique des
|
|
10
|
+
// défauts aux clés absentes ; il ne throw jamais. Un site sur shell vN recevant une
|
|
11
|
+
// config vN+1 ne casse pas (clés futures ignorées) ; l'inverse dégrade gracieusement.
|
|
12
|
+
//
|
|
13
|
+
// Contrôlé, jamais propriétaire de l'état : le shell SIGNALE (callbacks/`navigate`),
|
|
14
|
+
// l'hôte APPLIQUE (router, auth, bascule + chargement du CSS de thème). Cohérent avec
|
|
15
|
+
// « URL = source de vérité thème+framework » et « DS contrôlé/présentationnel ».
|
|
16
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
/** Version de schéma du contrat `SiteConfig`. **STABLE / FIGÉ v1** : évolution
|
|
18
|
+
* UNIQUEMENT additive (nouvelles clés optionnelles) — aucune suppression/rename de
|
|
19
|
+
* clé existante sans bump majeur. Les consommateurs (geo, dataviz, docs…) peuvent
|
|
20
|
+
* construire contre v1 sans crainte de rupture. Skew toléré (cf. en-tête). */
|
|
21
|
+
export const SITE_CONFIG_SCHEMA_VERSION = 1;
|
|
22
|
+
/** Token contract : les `--st-*` que le shell CONSOMME (doivent être fournis par le
|
|
23
|
+
* thème actif de l'hôte ; fallback CSS sinon, jamais de trou visuel). Sert de
|
|
24
|
+
* référence de découplage shell ⇄ thèmes. */
|
|
25
|
+
export const SHELL_TOKEN_CONTRACT = [
|
|
26
|
+
"--st-semantic-surface-default",
|
|
27
|
+
"--st-semantic-text-primary",
|
|
28
|
+
"--st-semantic-text-secondary",
|
|
29
|
+
"--st-semantic-border-subtle",
|
|
30
|
+
"--st-font-sans",
|
|
31
|
+
"--st-spacing-4",
|
|
32
|
+
"--st-spacing-6",
|
|
33
|
+
"--st-shadow-lg",
|
|
34
|
+
];
|