@hgdc/ui 0.7.0 → 0.8.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/README.md +10 -10
- package/dist/products.d.ts +14 -2
- package/dist/products.js +16 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,16 +39,16 @@ Primitives déjà là : `avatar` `badge` `button` `dialog` `drawer` `dropdown-me
|
|
|
39
39
|
|
|
40
40
|
## Coque des consoles
|
|
41
41
|
|
|
42
|
-
| Import | Exemple
|
|
43
|
-
| -------------- |
|
|
44
|
-
| `app-shell` | `<AppShell sidebarHeader={<OrgSwitcher …/>} nav={<SidebarNav label="Projet">…</SidebarNav>} sidebarFooter={<AccountMenu …/>}>`
|
|
45
|
-
| | `<SidebarNavItem icon={Rocket01Icon} label="Déploiements" render={<Link to="/deployments" />} />`
|
|
46
|
-
| `org-switcher` | `<OrgSwitcher organizations={orgs} activeId={org.id} onSelect={go} createHref="/organisations/nouvelle" />`
|
|
47
|
-
| `account-menu` | `<AccountMenu user={user} onProfile={…} onSecurity={…} onSignOut={signOut} product="Mail" />` : Account et les produits ouverts du catalogue, Mail coché
|
|
48
|
-
| `command-menu` | `<CommandMenu groups={[{ label: "Aller à", items }, { label: "Créer", items }, { label: "Changer", items }]} />` (`Ctrl+K`), `<CommandMenuButton compact="mobile" …/>`
|
|
49
|
-
| `products` | `HGDC_PRODUCTS` (mot, nom, sous-domaine, phrase, icône, état), `HGDC_ACCOUNT`, `productMenuEntries({ current: "Mail" })`
|
|
50
|
-
| `kbd` | `<KbdGroup><Kbd>Ctrl</Kbd><Kbd>K</Kbd></KbdGroup>`
|
|
51
|
-
| `page-header` | `<PageHeader title="Domaines" breadcrumbs={[{ label: "Acme", render: <Link to="/o/acme" /> }, { label: "Domaines" }]} actions={<Button>Ajouter</Button>} />`
|
|
42
|
+
| Import | Exemple |
|
|
43
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
44
|
+
| `app-shell` | `<AppShell sidebarHeader={<OrgSwitcher …/>} nav={<SidebarNav label="Projet">…</SidebarNav>} sidebarFooter={<AccountMenu …/>}>` |
|
|
45
|
+
| | `<SidebarNavItem icon={Rocket01Icon} label="Déploiements" render={<Link to="/deployments" />} />` |
|
|
46
|
+
| `org-switcher` | `<OrgSwitcher organizations={orgs} activeId={org.id} onSelect={go} createHref="/organisations/nouvelle" />` |
|
|
47
|
+
| `account-menu` | `<AccountMenu user={user} onProfile={…} onSecurity={…} onSignOut={signOut} product="Mail" />` : Account et les produits ouverts du catalogue, Mail coché |
|
|
48
|
+
| `command-menu` | `<CommandMenu groups={[{ label: "Aller à", items }, { label: "Créer", items }, { label: "Changer", items }]} />` (`Ctrl+K`), `<CommandMenuButton compact="mobile" …/>` |
|
|
49
|
+
| `products` | `HGDC_PRODUCTS` (mot, nom, sous-domaine, phrase, icône, état, `entryHref`), `HGDC_ACCOUNT`, `productMenuEntries({ current: "Mail" })` : chaque produit du menu pointe vers son entrée `/auth/hgdc` (ADR 0010) |
|
|
50
|
+
| `kbd` | `<KbdGroup><Kbd>Ctrl</Kbd><Kbd>K</Kbd></KbdGroup>` |
|
|
51
|
+
| `page-header` | `<PageHeader title="Domaines" breadcrumbs={[{ label: "Acme", render: <Link to="/o/acme" /> }, { label: "Domaines" }]} actions={<Button>Ajouter</Button>} />` |
|
|
52
52
|
|
|
53
53
|
La barre se réduit en rail (`Ctrl+B`, mémorisé) : poser `sidebarInitScript` dans le `<head>`. Le kit ne connaît ni routeur ni authentification : liens par `render={<Link />}`, actions par callbacks. Rôles d'organisation : `owner`, `admin`, `member` (Propriétaire, Admin, Membre).
|
|
54
54
|
|
package/dist/products.d.ts
CHANGED
|
@@ -11,7 +11,13 @@ export type HgdcCatalogProduct = {
|
|
|
11
11
|
name: string;
|
|
12
12
|
/** « host.hgdc.ch ». */
|
|
13
13
|
subdomain: string;
|
|
14
|
+
/** Page d'accueil publique : `https://host.hgdc.ch`. */
|
|
14
15
|
href: string;
|
|
16
|
+
/**
|
|
17
|
+
* Entrée dans l'app avec la session HGDC Account (`PRODUCT_ENTRY_PATH`), sans page d'accueil
|
|
18
|
+
* ni bouton de connexion. Pour Account, sa racine.
|
|
19
|
+
*/
|
|
20
|
+
entryHref: string;
|
|
15
21
|
/** Une phrase, au tutoiement. */
|
|
16
22
|
pitch: string;
|
|
17
23
|
icon: IconSvgElement;
|
|
@@ -22,7 +28,12 @@ export type HgdcCatalogProduct = {
|
|
|
22
28
|
*/
|
|
23
29
|
accent?: EmailAccent | undefined;
|
|
24
30
|
};
|
|
25
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Chemin de l'entrée commune des produits, le `HGDC_ENTRY_PATH` de `@hgdc/auth` : chaque produit
|
|
33
|
+
* le monte (`createHgdcEntry`). Il ouvre l'app avec la session HGDC Account, sans formulaire
|
|
34
|
+
* quand cette session existe.
|
|
35
|
+
*/
|
|
36
|
+
export declare const PRODUCT_ENTRY_PATH = "/auth/hgdc";
|
|
26
37
|
export declare const HGDC_ACCOUNT: HgdcCatalogProduct;
|
|
27
38
|
/** Les produits de la famille, dans leur ordre d'affichage. Account n'en fait pas partie (`HGDC_ACCOUNT`). */
|
|
28
39
|
export declare const HGDC_PRODUCTS: ReadonlyArray<HgdcCatalogProduct>;
|
|
@@ -41,7 +52,8 @@ export type ProductMenuEntry = {
|
|
|
41
52
|
/**
|
|
42
53
|
* Les entrées du menu du compte : Account d'abord, puis les produits ouverts. `current` est le
|
|
43
54
|
* mot du produit affiché (« Mail ») : il est coché. `accountHref` remplace l'adresse d'Account
|
|
44
|
-
* (un Account local en développement).
|
|
55
|
+
* (un Account local en développement). Chaque produit pointe vers son entrée (`entryHref`) :
|
|
56
|
+
* un clic ouvre l'app avec la session HGDC, pas la page d'accueil publique.
|
|
45
57
|
*/
|
|
46
58
|
export declare function productMenuEntries(options?: {
|
|
47
59
|
current?: string | undefined;
|
package/dist/products.js
CHANGED
|
@@ -11,13 +11,21 @@ export const PRODUCT_STAGE_LABEL = {
|
|
|
11
11
|
preview: "Préversion",
|
|
12
12
|
soon: "Bientôt",
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Chemin de l'entrée commune des produits, le `HGDC_ENTRY_PATH` de `@hgdc/auth` : chaque produit
|
|
16
|
+
* le monte (`createHgdcEntry`). Il ouvre l'app avec la session HGDC Account, sans formulaire
|
|
17
|
+
* quand cette session existe.
|
|
18
|
+
*/
|
|
19
|
+
export const PRODUCT_ENTRY_PATH = "/auth/hgdc";
|
|
14
20
|
function product(word, pitch, icon, stage) {
|
|
15
21
|
const subdomain = `${word.toLowerCase()}.hgdc.ch`;
|
|
22
|
+
const href = `https://${subdomain}`;
|
|
16
23
|
return {
|
|
17
24
|
word,
|
|
18
25
|
name: `HGDC ${word}`,
|
|
19
26
|
subdomain,
|
|
20
|
-
href
|
|
27
|
+
href,
|
|
28
|
+
entryHref: `${href}${PRODUCT_ENTRY_PATH}`,
|
|
21
29
|
pitch,
|
|
22
30
|
icon,
|
|
23
31
|
stage,
|
|
@@ -25,7 +33,8 @@ function product(word, pitch, icon, stage) {
|
|
|
25
33
|
};
|
|
26
34
|
}
|
|
27
35
|
/** HGDC Account : le compte commun (profil, sécurité, organisations), hors du catalogue des produits. */
|
|
28
|
-
|
|
36
|
+
const account = product("Account", "Ton compte HGDC : profil, sécurité et organisations, pour tous les produits.", UserCircleIcon, "live");
|
|
37
|
+
export const HGDC_ACCOUNT = { ...account, entryHref: account.href };
|
|
29
38
|
/** Les produits de la famille, dans leur ordre d'affichage. Account n'en fait pas partie (`HGDC_ACCOUNT`). */
|
|
30
39
|
export const HGDC_PRODUCTS = [
|
|
31
40
|
product("Host", "Ton site en ligne, déployé à chaque modification.", Rocket01Icon, "preview"),
|
|
@@ -42,14 +51,16 @@ export function isProductOpen(item) {
|
|
|
42
51
|
/**
|
|
43
52
|
* Les entrées du menu du compte : Account d'abord, puis les produits ouverts. `current` est le
|
|
44
53
|
* mot du produit affiché (« Mail ») : il est coché. `accountHref` remplace l'adresse d'Account
|
|
45
|
-
* (un Account local en développement).
|
|
54
|
+
* (un Account local en développement). Chaque produit pointe vers son entrée (`entryHref`) :
|
|
55
|
+
* un clic ouvre l'app avec la session HGDC, pas la page d'accueil publique.
|
|
46
56
|
*/
|
|
47
57
|
export function productMenuEntries(options = {}) {
|
|
48
58
|
const current = options.current?.toLowerCase();
|
|
49
|
-
const
|
|
59
|
+
const accountHref = options.accountHref ?? HGDC_ACCOUNT.entryHref;
|
|
60
|
+
const account = { ...HGDC_ACCOUNT, href: accountHref, entryHref: accountHref };
|
|
50
61
|
return [account, ...(options.catalog ?? HGDC_PRODUCTS).filter(isProductOpen)].map((item) => ({
|
|
51
62
|
name: item.name,
|
|
52
|
-
href: item.
|
|
63
|
+
href: item.entryHref,
|
|
53
64
|
icon: item.icon,
|
|
54
65
|
...(item.word.toLowerCase() === current ? { current: true } : {}),
|
|
55
66
|
...(item.stage === "preview" ? { hint: PRODUCT_STAGE_LABEL.preview } : {}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hgdc/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Interface de la H family : jetons de la DA, thèmes, polices et composants.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://github.com/hugogebel-boop/hgdc-kit/tree/main/packages/ui#readme",
|