@hgdc/ui 0.2.1 → 0.3.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.
Files changed (51) hide show
  1. package/README.md +62 -21
  2. package/dist/account-menu.d.ts +32 -0
  3. package/dist/account-menu.js +39 -0
  4. package/dist/alert.d.ts +19 -0
  5. package/dist/alert.js +25 -0
  6. package/dist/app-shell.d.ts +56 -0
  7. package/dist/app-shell.js +107 -0
  8. package/dist/card.d.ts +24 -0
  9. package/dist/card.js +42 -0
  10. package/dist/checkbox.d.ts +12 -0
  11. package/dist/checkbox.js +19 -0
  12. package/dist/command-menu.d.ts +56 -0
  13. package/dist/command-menu.js +79 -0
  14. package/dist/copy-button.d.ts +26 -0
  15. package/dist/copy-button.js +46 -0
  16. package/dist/kbd.d.ts +9 -0
  17. package/dist/kbd.js +19 -0
  18. package/dist/org-switcher.d.ts +32 -0
  19. package/dist/org-switcher.js +32 -0
  20. package/dist/page-header.d.ts +27 -0
  21. package/dist/page-header.js +31 -0
  22. package/dist/popover.d.ts +13 -0
  23. package/dist/popover.js +22 -0
  24. package/dist/radio-group.d.ts +16 -0
  25. package/dist/radio-group.js +22 -0
  26. package/dist/relative-time.d.ts +16 -0
  27. package/dist/relative-time.js +54 -0
  28. package/dist/resource-list.d.ts +31 -0
  29. package/dist/resource-list.js +35 -0
  30. package/dist/secret-reveal.d.ts +13 -0
  31. package/dist/secret-reveal.js +26 -0
  32. package/dist/skeleton.d.ts +28 -0
  33. package/dist/skeleton.js +47 -0
  34. package/dist/stat.d.ts +30 -0
  35. package/dist/stat.js +26 -0
  36. package/dist/status.d.ts +22 -0
  37. package/dist/status.js +37 -0
  38. package/dist/table.d.ts +50 -0
  39. package/dist/table.js +68 -0
  40. package/dist/tabs.d.ts +16 -0
  41. package/dist/tabs.js +26 -0
  42. package/dist/time-chart.d.ts +40 -0
  43. package/dist/time-chart.js +127 -0
  44. package/dist/timeline.d.ts +21 -0
  45. package/dist/timeline.js +11 -0
  46. package/dist/tooltip.d.ts +15 -0
  47. package/dist/tooltip.js +25 -0
  48. package/dist/uptime-bar.d.ts +24 -0
  49. package/dist/uptime-bar.js +25 -0
  50. package/package.json +1 -1
  51. package/styles.css +45 -2
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SERVICE_STATUS_LABEL } from "./status.js";
3
+ import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
4
+ import { cn } from "./cn.js";
5
+ const BAR = {
6
+ operational: "bg-status-operational",
7
+ degraded: "bg-status-degraded",
8
+ outage: "bg-status-outage",
9
+ maintenance: "bg-status-maintenance",
10
+ unknown: "bg-foreground/10",
11
+ };
12
+ const day = new Intl.DateTimeFormat("fr-CH", { weekday: "short", day: "numeric", month: "short" });
13
+ function describe(entry) {
14
+ return [day.format(entry.date), SERVICE_STATUS_LABEL[entry.status], entry.uptime, entry.note]
15
+ .filter(Boolean)
16
+ .join(" · ");
17
+ }
18
+ /**
19
+ * Une barre par jour, du plus ancien au plus récent, comme les pages de statut de référence.
20
+ * Chaque barre a sa couleur et, au survol, une infobulle en texte (jour, statut, disponibilité,
21
+ * note). Les lecteurs d'écran lisent la liste des jours, dont chacun dit son statut en mots.
22
+ */
23
+ export function UptimeBar({ days, label = "Disponibilité", summary, className, }) {
24
+ return (_jsxs("div", { "data-slot": "uptime-bar", className: cn("grid gap-2", className), children: [_jsx("ol", { "aria-label": label, className: "flex h-8 items-stretch gap-[2px]", children: days.map((entry) => (_jsx("li", { className: "flex min-w-0 flex-1", children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx("span", {}), className: cn("block w-full rounded-[3px] transition-opacity duration-(--duration-fast) ease-out hover:opacity-70 data-popup-open:opacity-70", BAR[entry.status]), children: _jsx("span", { className: "sr-only", children: describe(entry) }) }), _jsx(TooltipContent, { children: describe(entry) })] }) }, new Date(entry.date).toISOString()))) }), _jsxs("div", { "aria-hidden": true, className: "flex items-center justify-between gap-2 text-xs text-muted-foreground tabular-nums", children: [_jsx("span", { children: days.length > 0 ? `il y a ${days.length} jours` : null }), summary ? _jsx("span", { className: "text-foreground", children: summary }) : null, _jsx("span", { children: "Aujourd'hui" })] })] }));
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hgdc/ui",
3
- "version": "0.2.1",
3
+ "version": "0.3.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",
package/styles.css CHANGED
@@ -18,6 +18,9 @@
18
18
  @source "./dist";
19
19
 
20
20
  @custom-variant dark (&:is(.dark *));
21
+ /* Barre latérale réduite en rail : `data-sidebar="rail"` sur <html>, posé avant la première
22
+ peinture par `sidebarInitScript` (`@hgdc/ui/app-shell`). */
23
+ @custom-variant rail (&:where([data-sidebar="rail"] *));
21
24
 
22
25
  /* Courbes et durées. Pas d'ease-in : il démarre lentement à l'instant où l'œil regarde. */
23
26
  @theme {
@@ -70,6 +73,21 @@
70
73
  --color-info: var(--info);
71
74
  --color-info-ink: var(--info-ink);
72
75
  --color-chart-1: var(--chart-1);
76
+ --color-chart-2: var(--chart-2);
77
+ --color-chart-3: var(--chart-3);
78
+ --color-chart-4: var(--chart-4);
79
+ --color-chart-5: var(--chart-5);
80
+ --color-chart-6: var(--chart-6);
81
+ --color-status-operational: var(--status-operational);
82
+ --color-status-operational-ink: var(--status-operational-ink);
83
+ --color-status-degraded: var(--status-degraded);
84
+ --color-status-degraded-ink: var(--status-degraded-ink);
85
+ --color-status-outage: var(--status-outage);
86
+ --color-status-outage-ink: var(--status-outage-ink);
87
+ --color-status-maintenance: var(--status-maintenance);
88
+ --color-status-maintenance-ink: var(--status-maintenance-ink);
89
+ --color-status-unknown: var(--status-unknown);
90
+ --color-status-unknown-ink: var(--status-unknown-ink);
73
91
  --color-inverse: var(--inverse);
74
92
  --color-inverse-foreground: var(--inverse-foreground);
75
93
  --color-inverse-muted: var(--inverse-muted);
@@ -117,7 +135,27 @@
117
135
  --shell-muted-foreground: oklch(0.45 0 0);
118
136
  --shell-hover: oklch(0 0 0 / 5%);
119
137
  --shell-active: oklch(0 0 0 / 8%);
120
- --chart-1: oklch(0.62 0.19 256);
138
+ /* Séries de graphique, dans cet ordre, jamais recyclées : une 7e série se replie en « Autres ».
139
+ Validées (daltonisme, écart entre voisines) sur `surface` en clair et sur `card` en sombre.
140
+ En clair, 2 à 5 passent sous 3:1 : un graphique les accompagne d'une légende et de libellés. */
141
+ --chart-1: oklch(0.575 0.163 255.5);
142
+ --chart-2: oklch(0.671 0.175 40.6);
143
+ --chart-3: oklch(0.669 0.141 162.1);
144
+ --chart-4: oklch(0.764 0.161 75.1);
145
+ --chart-5: oklch(0.716 0.141 357.4);
146
+ --chart-6: oklch(0.527 0.197 283.4);
147
+ /* Disponibilité d'un service : toujours avec un libellé (`StatusBadge`), jamais la couleur seule.
148
+ Chaque jeton suit une couleur de la DA, donc les deux thèmes. */
149
+ --status-operational: var(--status-active);
150
+ --status-operational-ink: var(--status-active-ink);
151
+ --status-degraded: var(--status-paused);
152
+ --status-degraded-ink: var(--status-paused-ink);
153
+ --status-outage: var(--destructive);
154
+ --status-outage-ink: var(--destructive);
155
+ --status-maintenance: var(--info);
156
+ --status-maintenance-ink: var(--info-ink);
157
+ --status-unknown: var(--muted-foreground);
158
+ --status-unknown-ink: var(--muted-foreground);
121
159
  --status-active: oklch(0.55 0.15 156);
122
160
  --status-paused: oklch(0.62 0.14 75);
123
161
  --status-done: oklch(0.52 0.2 293);
@@ -160,7 +198,12 @@
160
198
  --shell-muted-foreground: oklch(0.708 0 0);
161
199
  --shell-hover: oklch(1 0 0 / 6%);
162
200
  --shell-active: oklch(1 0 0 / 12%);
163
- --chart-1: oklch(0.68 0.16 256);
201
+ --chart-1: oklch(0.622 0.161 255.1);
202
+ --chart-2: oklch(0.622 0.173 40.1);
203
+ --chart-3: oklch(0.621 0.128 163.1);
204
+ --chart-4: oklch(0.67 0.143 73.2);
205
+ --chart-5: oklch(0.622 0.171 0.8);
206
+ --chart-6: oklch(0.67 0.145 286.8);
164
207
  --status-active: oklch(0.74 0.14 156);
165
208
  --status-paused: oklch(0.82 0.15 86);
166
209
  --status-done: oklch(0.68 0.17 293);