@egen-civitas/esm-extensions 1.0.2 → 1.1.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @egen-civitas/esm-extensions
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 48e7980: Navigation de niveau 2 pilotée par les apps : nouveau type partagé `NavEntryMeta`, constante `TOPBAR_LEVEL2_NAV_SLOT` (`topbar-level2-nav`) et validateur `isNavEntryMeta` dans `esm-extensions`. La colonne de navigation latérale globale (`leftNav`) est retirée de la grille du shell : seuls la TopBar et le footer sont globaux ; une app qui veut une sidebar la fournit dans son propre contenu.
8
+
3
9
  ## 1.0.2
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './extensions.js';
2
2
  export * from './helpers.js';
3
3
  export * from './left-nav.js';
4
+ export * from './nav-entry.js';
4
5
  export * from './modals.js';
5
6
  export * from './workspaces.js';
6
7
  export * from './workspaces2.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./extensions.js";
2
2
  export * from "./helpers.js";
3
3
  export * from "./left-nav.js";
4
+ export * from "./nav-entry.js";
4
5
  export * from "./modals.js";
5
6
  export * from "./workspaces.js";
6
7
  export * from "./workspaces2.js";
@@ -0,0 +1,38 @@
1
+ /** @module @category Extension */
2
+ /**
3
+ * Nom du slot sur lequel chaque app déclare ses entrées de navigation
4
+ * (niveau 2 de la TopBar). Déclaré dans le `routes.json` de l'app :
5
+ * `{ "slot": "topbar-level2-nav", "component": "navEntry", "meta": NavEntryMeta }`.
6
+ */
7
+ export declare const TOPBAR_LEVEL2_NAV_SLOT = "topbar-level2-nav";
8
+ /**
9
+ * Métadonnées d'une entrée de navigation du niveau 2 de la TopBar.
10
+ * Partagé par les apps (qui le déclarent dans `meta`) et par la TopBar
11
+ * (qui le lit via `useExtensionSlotMeta<NavEntryMeta>(TOPBAR_LEVEL2_NAV_SLOT)`).
12
+ */
13
+ export interface NavEntryMeta {
14
+ /** Entrée de niveau 2 (ex. `informations`) ; regroupe les colonnes du méga-menu. */
15
+ section: string;
16
+ /** Colonne du méga-menu (ex. `news`). */
17
+ group: string;
18
+ /** Texte par défaut, utilisé si `labelKey` n'a pas de traduction. */
19
+ label: string;
20
+ /** Clé de traduction du libellé (optionnelle). */
21
+ labelKey?: string;
22
+ /** Description par défaut. */
23
+ description?: string;
24
+ /** Clé de traduction de la description (optionnelle). */
25
+ descriptionKey?: string;
26
+ /** Nom d'icône lucide (ex. `Star`), résolu par la TopBar dans une liste blanche. */
27
+ icon?: string;
28
+ /** Route cible, relative à la base SPA (ex. `informations/news`). Doit exister dans un `pages[].route`. */
29
+ route: string;
30
+ /** Libellé/clé de la section et du groupe, si différents de leur identifiant. */
31
+ sectionLabel?: string;
32
+ sectionLabelKey?: string;
33
+ groupLabel?: string;
34
+ groupLabelKey?: string;
35
+ }
36
+ /** Valide une `meta` d'extension : vrai si c'est une `NavEntryMeta` exploitable. */
37
+ export declare function isNavEntryMeta(meta: unknown): meta is NavEntryMeta;
38
+ //# sourceMappingURL=nav-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-entry.d.ts","sourceRoot":"","sources":["../src/nav-entry.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2GAA2G;IAC3G,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAIlE"}
@@ -0,0 +1,15 @@
1
+ /** @module @category Extension */ /**
2
+ * Nom du slot sur lequel chaque app déclare ses entrées de navigation
3
+ * (niveau 2 de la TopBar). Déclaré dans le `routes.json` de l'app :
4
+ * `{ "slot": "topbar-level2-nav", "component": "navEntry", "meta": NavEntryMeta }`.
5
+ */ export const TOPBAR_LEVEL2_NAV_SLOT = 'topbar-level2-nav';
6
+ /** Valide une `meta` d'extension : vrai si c'est une `NavEntryMeta` exploitable. */ export function isNavEntryMeta(meta) {
7
+ if (!meta || typeof meta !== 'object') return false;
8
+ const m = meta;
9
+ return [
10
+ 'section',
11
+ 'group',
12
+ 'label',
13
+ 'route'
14
+ ].every((k)=>typeof m[k] === 'string' && m[k].length > 0);
15
+ }
package/dist/public.d.ts CHANGED
@@ -4,4 +4,5 @@ export { type CancelLoading, renderExtension } from './render.js';
4
4
  export { type ExtensionMeta, type ExtensionRegistration, type ExtensionStore, type AssignedExtension, type ConnectedExtension, type ExtensionSlotState, getExtensionStore, } from './store.js';
5
5
  export { type WorkspaceRegistration } from './workspaces.js';
6
6
  export { type ExtensionData, type ComponentConfig } from './types.js';
7
+ export { TOPBAR_LEVEL2_NAV_SLOT, type NavEntryMeta, isNavEntryMeta } from './nav-entry.js';
7
8
  //# sourceMappingURL=public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,SAAS,EACT,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,SAAS,EACT,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/public.js CHANGED
@@ -2,3 +2,4 @@ export { getExtensionNameFromId, registerExtension, attach, detach, detachAll, g
2
2
  export { setLeftNav, unsetLeftNav } from "./left-nav.js";
3
3
  export { renderExtension } from "./render.js";
4
4
  export { getExtensionStore } from "./store.js";
5
+ export { TOPBAR_LEVEL2_NAV_SLOT, isNavEntryMeta } from "./nav-entry.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egen-civitas/esm-extensions",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Coordinates extensions and extension points in the Egen Frontend",
6
6
  "type": "module",