@hgdc/ui 0.57.0 → 0.58.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.
@@ -0,0 +1,28 @@
1
+ import { type ReactElement, type ReactNode } from "react";
2
+ /** Texte de l'infobulle d'un bouton d'écriture dans la démo. */
3
+ export declare const DEMO_READ_ONLY_HINT = "Lecture seule dans la d\u00E9mo";
4
+ /**
5
+ * Posé une fois autour de la console, `value` vrai sur la démo (organisation `~demo`) : chaque
6
+ * `DemoReadOnly` en dessous désactive son bouton. Le serveur refuse de toute façon (`refuseDemo`) ;
7
+ * ceci évite au visiteur un clic qui échoue.
8
+ */
9
+ export declare function DemoReadOnlyProvider({ value, children }: {
10
+ value: boolean;
11
+ children: ReactNode;
12
+ }): React.JSX.Element;
13
+ /** Vrai dans la démo : pour masquer ce qui n'a pas de sens en lecture seule (formulaire, zone de dépôt). */
14
+ export declare function useDemoReadOnly(): boolean;
15
+ type Disableable = {
16
+ disabled?: boolean;
17
+ "aria-disabled"?: boolean | "true" | "false";
18
+ };
19
+ /**
20
+ * Autour d'un bouton d'écriture (créer, envoyer, supprimer…). Hors de la démo : le bouton tel quel.
21
+ * Dans la démo : le bouton désactivé, et l'infobulle « Lecture seule dans la démo » sur une enveloppe
22
+ * focalisable, puisqu'un bouton désactivé ne reçoit ni survol ni focus.
23
+ */
24
+ export declare function DemoReadOnly({ children, hint, }: {
25
+ children: ReactElement<Disableable>;
26
+ hint?: string;
27
+ }): React.JSX.Element;
28
+ export {};
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cloneElement, createContext, isValidElement, useContext } from "react";
3
+ import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
4
+ /** Texte de l'infobulle d'un bouton d'écriture dans la démo. */
5
+ export const DEMO_READ_ONLY_HINT = "Lecture seule dans la démo";
6
+ const DemoReadOnlyContext = createContext(false);
7
+ /**
8
+ * Posé une fois autour de la console, `value` vrai sur la démo (organisation `~demo`) : chaque
9
+ * `DemoReadOnly` en dessous désactive son bouton. Le serveur refuse de toute façon (`refuseDemo`) ;
10
+ * ceci évite au visiteur un clic qui échoue.
11
+ */
12
+ export function DemoReadOnlyProvider({ value, children }) {
13
+ return _jsx(DemoReadOnlyContext.Provider, { value: value, children: children });
14
+ }
15
+ /** Vrai dans la démo : pour masquer ce qui n'a pas de sens en lecture seule (formulaire, zone de dépôt). */
16
+ export function useDemoReadOnly() {
17
+ return useContext(DemoReadOnlyContext);
18
+ }
19
+ /**
20
+ * Autour d'un bouton d'écriture (créer, envoyer, supprimer…). Hors de la démo : le bouton tel quel.
21
+ * Dans la démo : le bouton désactivé, et l'infobulle « Lecture seule dans la démo » sur une enveloppe
22
+ * focalisable, puisqu'un bouton désactivé ne reçoit ni survol ni focus.
23
+ */
24
+ export function DemoReadOnly({ children, hint = DEMO_READ_ONLY_HINT, }) {
25
+ const demo = useDemoReadOnly();
26
+ if (!demo || !isValidElement(children))
27
+ return children;
28
+ return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger
29
+ // oxlint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- un bouton désactivé ne prend pas le focus : l'enveloppe le prend pour que le clavier lise la raison.
30
+ , {
31
+ // oxlint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- un bouton désactivé ne prend pas le focus : l'enveloppe le prend pour que le clavier lise la raison.
32
+ render: _jsx("span", { tabIndex: 0, "aria-label": hint, "data-demo-read-only": "", className: "inline-flex w-fit" }), children: cloneElement(children, { disabled: true, "aria-disabled": true }) }), _jsx(TooltipContent, { children: hint })] }));
33
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hgdc/ui",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "description": "Interface de la H Collection : 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",