@krosoft/react 0.0.173 → 0.0.175

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 CHANGED
@@ -8,11 +8,7 @@ Krosoft shared React package.
8
8
 
9
9
  La forme des composants est pilotée par des variables CSS, pas par des classes `rounded-*` codées en dur : un input, un bouton et une pastille de filtre posés côte à côte ont toujours la même forme.
10
10
 
11
- Choisir un preset sur `<html>` :
12
-
13
- ```html
14
- <html lang="fr" data-radius="round"></html>
15
- ```
11
+ Trois presets existent :
16
12
 
17
13
  | Preset | Contrôles<br><small>boutons, inputs, selects, pastilles, badges</small> | Conteneurs<br><small>cards, dialogs, popovers, menus</small> |
18
14
  | ----------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------ |
@@ -20,14 +16,54 @@ Choisir un preset sur `<html>` :
20
16
  | `soft` _(défaut)_ | `0.5rem` | `0.75rem` |
21
17
  | `round` | capsule | `1.25rem` |
22
18
 
23
- Pour des valeurs sur mesure, aucun preset n'est nécessaire il suffit de redéfinir les variables :
19
+ Un projet consommateur choisit sa forme dans son propre thème, en redéfinissant les variables. Le preset `soft` :
24
20
 
25
21
  ```css
26
22
  :root {
27
- --radius-control: 4px; /* contrôles */
28
- --radius-surface: 16px; /* conteneurs */
29
- --radius: 4px; /* éléments imbriqués : items de menu, checkbox */
23
+ --radius: 0.5rem; /* éléments imbriqués : items de menu, checkbox */
24
+ --k-radius-control: 0.5rem; /* contrôles */
25
+ --k-radius-surface: 0.75rem; /* conteneurs */
26
+ --k-radius-control-dense: 0.5rem; /* mêmes valeurs, plafonnées pour le DataTable */
27
+ --k-radius-surface-dense: 0.75rem;
30
28
  }
31
29
  ```
32
30
 
31
+ Rien n'oblige à suivre un preset : n'importe quelle valeur convient (`--k-radius-control: 4px`). Sans redéfinition, les composants tombent sur `--radius`, donc un thème shadcn existant reste cohérent sans rien déclarer.
32
+
33
+ > **Nommage** — les tokens ajoutés par krosoft portent le préfixe `--k-`, ce qui les rend repérables d'un coup d'œil. Les tokens hérités de shadcn (`--radius`, `--primary`, `--background`, `--border`, `--sidebar-*`…) gardent leur nom d'origine : un thème généré par un outil shadcn ou un composant copié depuis la doc continuent de fonctionner tels quels.
34
+
35
+ ## Tokens krosoft
36
+
37
+ | Variables | Classes Tailwind générées par le preset |
38
+ | ---------------------------------------------------------- | ---------------------------------------------------------------- |
39
+ | `--k-success`, `--k-warning`, `--k-info` (+ `-foreground`) | `bg-success`, `text-warning-foreground`, `border-info`… |
40
+ | `--k-topbar-*` | `bg-topbar`, `text-topbar-foreground`, `bg-topbar-accent`… |
41
+ | `--k-sidebar-muted` | `text-sidebar-muted` |
42
+ | `--k-radius-control`, `--k-radius-surface` (+ `-dense`) | `rounded-control`, `rounded-surface` |
43
+ | `--k-font-heading`, `--k-font-body` | appliquées directement par `globals.css` sur `body` et `h1`–`h6` |
44
+
45
+ Ces couleurs sont désormais mappées par le preset partagé : un projet consommateur qui les déclarait dans son propre `tailwind.config` peut supprimer ces lignes.
46
+
33
47
  Story `Démos/Radius` pour comparer les presets, sélecteur **Radius** dans la barre d'outils Storybook pour les appliquer à n'importe quelle story.
48
+
49
+ ### Changer de preset au runtime
50
+
51
+ Quand la forme est figée pour toute l'application, l'override de `:root` ci-dessus reste le bon choix : servi avec la feuille de style, il évite tout flash au premier rendu.
52
+
53
+ Pour un changement à chaud (sélecteur utilisateur, Storybook), les mêmes presets sont exposés en TypeScript — un preset n'est rien d'autre qu'un jeu de variables CSS :
54
+
55
+ ```ts
56
+ import { applyTokenPreset, radiusPresets } from "@krosoft/react/tokens";
57
+
58
+ applyTokenPreset(radiusPresets, "round"); // pose les variables sur <html>
59
+ ```
60
+
61
+ | Export | Rôle |
62
+ | ------------------ | ---------------------------------------------------------- |
63
+ | `radiusPresets` | Les trois presets, en objets `{ "--k-radius-control": … }` |
64
+ | `applyTokenPreset` | Applique un preset, après nettoyage de toute la famille |
65
+ | `applyTokens` | Pose un jeu de variables sur un élément (`<html>` défaut) |
66
+ | `clearTokens` | Retire ces variables et rend la main au CSS |
67
+ | `tokensToStyle` | Les mêmes variables en `style` React, pour un sous-arbre |
68
+
69
+ C'est aussi ce qui rend la suite extensible : une nouvelle famille de tokens (densité, élévation…) ne demande ni attribut dédié ni preset CSS, seulement un objet à côté de `radiusPresets` et ses variables dans `:root`.
@@ -470,7 +470,7 @@ function Qe({
470
470
  // bascule sur les valeurs plafonnées : ni ses contrôles ni son cadre ne
471
471
  // prennent la forme capsule. Le scope couvre le cadre, les actions
472
472
  // groupées et la pagination. Les fallbacks correspondent au preset "soft".
473
- /* @__PURE__ */ i("div", { className: "space-y-4 [--radius-control:var(--radius-control-dense,0.5rem)] [--radius-surface:var(--radius-surface-dense,0.75rem)]", children: [
473
+ /* @__PURE__ */ i("div", { className: "space-y-4 [--k-radius-control:var(--k-radius-control-dense,0.5rem)] [--k-radius-surface:var(--k-radius-surface-dense,0.75rem)]", children: [
474
474
  f.length > 0 && r !== void 0 && r.length > 0 && /* @__PURE__ */ e(Ie, { selectedRows: f, setSelectedRows: U, bulkActions: r }),
475
475
  /* @__PURE__ */ i("div", { className: "w-full bg-card dark:bg-gray-950 rounded-surface border border-gray-200 dark:border-gray-800 overflow-hidden", children: [
476
476
  /* @__PURE__ */ e("div", { className: "overflow-x-auto", children: /* @__PURE__ */ i("table", { ref: E, className: "w-full", children: [
@@ -15,7 +15,7 @@ import { S as _, a as $, b as aa, T as ea } from "../../Topbar-D55ou5Uk.js";
15
15
  import { E as oa } from "../../ErrorAlert-SrIcU1mM.js";
16
16
  import { E as ta } from "../../ErrorState-CmaxuJyW.js";
17
17
  import { L as la } from "../../LoadingState-BN0YaPSs.js";
18
- import { D as ba, T as ma, a as da, b as ga, c as fa, d as Aa, e as Da } from "../../DataTable-C1l3CLr1.js";
18
+ import { D as ba, T as ma, a as da, b as ga, c as fa, d as Aa, e as Da } from "../../DataTable-CfCXm_D_.js";
19
19
  import { A as na, a as ca, b as xa, c as Sa } from "../../AppVerticalTabs-BkZkxL_K.js";
20
20
  import { T as Fa } from "../../ThemeSelector-BwrbKW-4.js";
21
21
  export {
@@ -1,4 +1,4 @@
1
- import { D as s, T as b, a as l, b as T, c as t, d as o, e as i } from "../../../DataTable-C1l3CLr1.js";
1
+ import { D as s, T as b, a as l, b as T, c as t, d as o, e as i } from "../../../DataTable-CfCXm_D_.js";
2
2
  export {
3
3
  s as DataTable,
4
4
  b as TableActions,
@@ -15,7 +15,7 @@ import { S as gr, a as dr, b as mr, T as Cr } from "../Topbar-D55ou5Uk.js";
15
15
  import { E as Tr } from "../ErrorAlert-SrIcU1mM.js";
16
16
  import { E as Dr } from "../ErrorState-CmaxuJyW.js";
17
17
  import { L as xr } from "../LoadingState-BN0YaPSs.js";
18
- import { D as Ir, T as Pr, a as hr, b as fr, c as wr, d as vr, e as Fr } from "../DataTable-C1l3CLr1.js";
18
+ import { D as Ir, T as Pr, a as hr, b as fr, c as wr, d as vr, e as Fr } from "../DataTable-CfCXm_D_.js";
19
19
  import { A as Br, a as Gr, b as Hr, c as Rr } from "../AppVerticalTabs-BkZkxL_K.js";
20
20
  import { T as Nr } from "../ThemeSelector-BwrbKW-4.js";
21
21
  import { A as Er, a as Or, b as Vr } from "../alert-B9F1N9Qk.js";
@@ -71,6 +71,48 @@ declare const krosoftPreset: {
71
71
  DEFAULT: string;
72
72
  foreground: string;
73
73
  };
74
+ success: {
75
+ DEFAULT: string;
76
+ foreground: string;
77
+ };
78
+ warning: {
79
+ DEFAULT: string;
80
+ foreground: string;
81
+ };
82
+ info: {
83
+ DEFAULT: string;
84
+ foreground: string;
85
+ };
86
+ sidebar: {
87
+ DEFAULT: string;
88
+ foreground: string;
89
+ primary: {
90
+ DEFAULT: string;
91
+ foreground: string;
92
+ };
93
+ accent: {
94
+ DEFAULT: string;
95
+ foreground: string;
96
+ };
97
+ border: string;
98
+ ring: string;
99
+ muted: string;
100
+ };
101
+ topbar: {
102
+ DEFAULT: string;
103
+ foreground: string;
104
+ primary: {
105
+ DEFAULT: string;
106
+ foreground: string;
107
+ };
108
+ accent: {
109
+ DEFAULT: string;
110
+ foreground: string;
111
+ };
112
+ border: string;
113
+ ring: string;
114
+ muted: string;
115
+ };
74
116
  };
75
117
  borderRadius: {
76
118
  control: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tailwind/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFD,CAAC;AAEnB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tailwind/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ID,CAAC;AAEnB,eAAe,aAAa,CAAC"}
@@ -46,14 +46,62 @@ const a = {
46
46
  card: {
47
47
  DEFAULT: "hsl(var(--card))",
48
48
  foreground: "hsl(var(--card-foreground))"
49
+ },
50
+ // Couleurs ajoutées par krosoft (variables préfixées --k-). Les composants
51
+ // du package utilisent ces classes (bg-success, text-topbar-foreground,
52
+ // text-sidebar-muted…) : sans ce mapping, elles ne sont pas générées et
53
+ // chaque projet consommateur doit les redéclarer de son côté.
54
+ success: {
55
+ DEFAULT: "hsl(var(--k-success))",
56
+ foreground: "hsl(var(--k-success-foreground))"
57
+ },
58
+ warning: {
59
+ DEFAULT: "hsl(var(--k-warning))",
60
+ foreground: "hsl(var(--k-warning-foreground))"
61
+ },
62
+ info: {
63
+ DEFAULT: "hsl(var(--k-info))",
64
+ foreground: "hsl(var(--k-info-foreground))"
65
+ },
66
+ // sidebar-* vient de shadcn, seul --k-sidebar-muted est un ajout krosoft.
67
+ sidebar: {
68
+ DEFAULT: "hsl(var(--sidebar-background))",
69
+ foreground: "hsl(var(--sidebar-foreground))",
70
+ primary: {
71
+ DEFAULT: "hsl(var(--sidebar-primary))",
72
+ foreground: "hsl(var(--sidebar-primary-foreground))"
73
+ },
74
+ accent: {
75
+ DEFAULT: "hsl(var(--sidebar-accent))",
76
+ foreground: "hsl(var(--sidebar-accent-foreground))"
77
+ },
78
+ border: "hsl(var(--sidebar-border))",
79
+ ring: "hsl(var(--sidebar-ring))",
80
+ muted: "hsl(var(--k-sidebar-muted))"
81
+ },
82
+ topbar: {
83
+ DEFAULT: "hsl(var(--k-topbar-background))",
84
+ foreground: "hsl(var(--k-topbar-foreground))",
85
+ primary: {
86
+ DEFAULT: "hsl(var(--k-topbar-primary))",
87
+ foreground: "hsl(var(--k-topbar-primary-foreground))"
88
+ },
89
+ accent: {
90
+ DEFAULT: "hsl(var(--k-topbar-accent))",
91
+ foreground: "hsl(var(--k-topbar-accent-foreground))"
92
+ },
93
+ border: "hsl(var(--k-topbar-border))",
94
+ ring: "hsl(var(--k-topbar-ring))",
95
+ muted: "hsl(var(--k-topbar-muted))"
49
96
  }
50
97
  },
51
98
  borderRadius: {
52
- // Tokens sémantiques — à privilégier dans les composants.
53
- // Ils garantissent qu'un input, un bouton et une pastille de filtre
54
- // posés côte à côte partagent toujours la même forme.
55
- control: "var(--radius-control, var(--radius))",
56
- surface: "var(--radius-surface, var(--radius))",
99
+ // Tokens sémantiques krosoft (préfixe --k-) — à privilégier dans les
100
+ // composants. Ils garantissent qu'un input, un bouton et une pastille de
101
+ // filtre posés côte à côte partagent toujours la même forme. Le repli sur
102
+ // --radius laisse un projet purement shadcn fonctionner sans les déclarer.
103
+ control: "var(--k-radius-control, var(--radius))",
104
+ surface: "var(--k-radius-surface, var(--radius))",
57
105
  // Échelle historique, dérivée de --radius : réservée aux éléments
58
106
  // internes (items de menu, checkbox, poignées…) qui ne doivent jamais
59
107
  // devenir des capsules. max() protège le preset "square" (--radius: 0).
@@ -0,0 +1,28 @@
1
+ import type { CSSProperties } from "react";
2
+ import type { TokenFamily, TokenSet } from "./types";
3
+ /**
4
+ * Pose des variables CSS en style inline sur un élément (par défaut `<html>`).
5
+ *
6
+ * Le style inline l'emporte sur toute règle CSS ciblant le même élément : c'est
7
+ * volontaire, c'est ce qui permet à un sélecteur runtime de reprendre la main
8
+ * sur les défauts du package. Pour un choix figé à l'échelle d'une app,
9
+ * redéfinir les variables dans `:root` reste préférable — pas de JS, pas de flash.
10
+ */
11
+ export declare const applyTokens: (tokens: TokenSet, target?: HTMLElement | null) => void;
12
+ /** Retire les variables posées par `applyTokens` et rend la main au CSS. */
13
+ export declare const clearTokens: (tokens: TokenSet, target?: HTMLElement | null) => void;
14
+ /**
15
+ * Applique un preset d'une famille, après avoir nettoyé toutes les variables de
16
+ * cette famille : basculer vers un preset qui déclare moins de clés qu'un autre
17
+ * ne laisse pas de résidu du précédent.
18
+ */
19
+ export declare const applyTokenPreset: <TPreset extends string>(family: TokenFamily<TPreset>, preset: TPreset, target?: HTMLElement | null) => void;
20
+ /**
21
+ * Variables sous forme de `style` React, pour scoper un sous-arbre plutôt que
22
+ * tout le document : `<div style={tokensToStyle({ "--k-radius-control": "3px" })}>`.
23
+ *
24
+ * Utile surtout pour un objet écrit sur place : `CSSProperties` ne modélise pas
25
+ * les custom properties, un littéral inline se ferait refuser sans cast.
26
+ */
27
+ export declare const tokensToStyle: (tokens: TokenSet) => CSSProperties;
28
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/tokens/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUrD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,QAAQ,EAAE,SAAS,WAAW,GAAG,IAAI,KAAG,IAS3E,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,GAAI,QAAQ,QAAQ,EAAE,SAAS,WAAW,GAAG,IAAI,KAAG,IAS3E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,MAAM,EAAE,QAAQ,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,OAAO,EAAE,SAAS,WAAW,GAAG,IAAI,KAAG,IAUrI,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,QAAQ,KAAG,aAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { applyTokenPreset, applyTokens, clearTokens, tokensToStyle } from "./apply";
2
+ export { radiusPresets } from "./radius";
3
+ export type { RadiusPreset } from "./radius";
4
+ export type { TokenFamily, TokenSet } from "./types";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,47 @@
1
+ const t = (e) => e || (typeof document > "u" ? null : document.documentElement), u = (e, n) => {
2
+ const r = t(n);
3
+ if (r)
4
+ for (const [s, o] of Object.entries(e))
5
+ r.style.setProperty(s, o);
6
+ }, c = (e, n) => {
7
+ const r = t(n);
8
+ if (r)
9
+ for (const s of Object.keys(e))
10
+ r.style.removeProperty(s);
11
+ }, a = (e, n, r) => {
12
+ const s = t(r);
13
+ if (s) {
14
+ for (const o of Object.values(e))
15
+ c(o, s);
16
+ u(e[n], s);
17
+ }
18
+ }, d = (e) => e, m = {
19
+ square: {
20
+ "--radius": "0rem",
21
+ "--k-radius-control": "0rem",
22
+ "--k-radius-surface": "0rem",
23
+ "--k-radius-control-dense": "0rem",
24
+ "--k-radius-surface-dense": "0rem"
25
+ },
26
+ soft: {
27
+ "--radius": "0.5rem",
28
+ "--k-radius-control": "0.5rem",
29
+ "--k-radius-surface": "0.75rem",
30
+ "--k-radius-control-dense": "0.5rem",
31
+ "--k-radius-surface-dense": "0.75rem"
32
+ },
33
+ round: {
34
+ "--radius": "0.75rem",
35
+ "--k-radius-control": "9999px",
36
+ "--k-radius-surface": "1.25rem",
37
+ "--k-radius-control-dense": "0.5rem",
38
+ "--k-radius-surface-dense": "0.75rem"
39
+ }
40
+ };
41
+ export {
42
+ a as applyTokenPreset,
43
+ u as applyTokens,
44
+ c as clearTokens,
45
+ m as radiusPresets,
46
+ d as tokensToStyle
47
+ };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Presets de radius.
3
+ *
4
+ * Source de vérité des trois presets. `globals.css` n'en reprend qu'un — les
5
+ * valeurs par défaut de `:root` sont celles de `soft` — et
6
+ * `tests/tokens/radius.test.ts` vérifie que les deux restent alignés.
7
+ *
8
+ * Un projet consommateur fige sa forme en redéfinissant les variables dans son
9
+ * propre thème, ou bascule à chaud avec `applyTokenPreset`.
10
+ *
11
+ * Les tokens ajoutés par krosoft portent le préfixe --k- ; ceux hérités de
12
+ * shadcn gardent leur nom d'origine.
13
+ *
14
+ * Trois tokens, deux publics :
15
+ * --k-radius-control : contrôles interactifs — boutons, inputs, selects,
16
+ * pastilles de filtre, badges, onglets. `rounded-control`
17
+ * --k-radius-surface : conteneurs — cards, dialogs, popovers, menus, tableaux.
18
+ * `rounded-surface`
19
+ * --radius : token shadcn dont dérivent rounded-sm/md/lg, réservé aux
20
+ * éléments imbriqués qui ne doivent jamais devenir des
21
+ * capsules (items de menu, checkbox, poignées).
22
+ *
23
+ * Les variantes *-dense sont les valeurs plafonnées des blocs denses (DataTable) :
24
+ * elles suivent le preset sans jamais prendre la forme capsule.
25
+ */
26
+ export declare const radiusPresets: {
27
+ readonly square: {
28
+ readonly "--radius": "0rem";
29
+ readonly "--k-radius-control": "0rem";
30
+ readonly "--k-radius-surface": "0rem";
31
+ readonly "--k-radius-control-dense": "0rem";
32
+ readonly "--k-radius-surface-dense": "0rem";
33
+ };
34
+ readonly soft: {
35
+ readonly "--radius": "0.5rem";
36
+ readonly "--k-radius-control": "0.5rem";
37
+ readonly "--k-radius-surface": "0.75rem";
38
+ readonly "--k-radius-control-dense": "0.5rem";
39
+ readonly "--k-radius-surface-dense": "0.75rem";
40
+ };
41
+ readonly round: {
42
+ readonly "--radius": "0.75rem";
43
+ readonly "--k-radius-control": "9999px";
44
+ readonly "--k-radius-surface": "1.25rem";
45
+ readonly "--k-radius-control-dense": "0.5rem";
46
+ readonly "--k-radius-surface-dense": "0.75rem";
47
+ };
48
+ };
49
+ export type RadiusPreset = keyof typeof radiusPresets;
50
+ //# sourceMappingURL=radius.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radius.d.ts","sourceRoot":"","sources":["../../src/tokens/radius.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;CAsBM,CAAC;AAEjC,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Un jeu de variables CSS applicable à un élément.
3
+ *
4
+ * Les clés sont des noms de custom properties (`--k-radius-control`), les valeurs
5
+ * sont brutes côté CSS (`"0.5rem"`, `"9999px"`, `"222.2 47.4% 11.2%"`).
6
+ */
7
+ export type TokenSet = Record<`--${string}`, string>;
8
+ /**
9
+ * Une famille de tokens : plusieurs presets nommés pilotant le même groupe de
10
+ * variables (radius, densité, élévation…).
11
+ *
12
+ * Tous les presets d'une famille doivent déclarer les mêmes clés : c'est ce qui
13
+ * permet à `applyTokenPreset` de nettoyer la famille avant d'appliquer un
14
+ * preset, sans laisser de variable orpheline.
15
+ */
16
+ export type TokenFamily<TPreset extends string = string> = Record<TPreset, TokenSet>;
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tokens/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krosoft/react",
3
- "version": "0.0.173",
3
+ "version": "0.0.175",
4
4
  "description": "Krosoft shared React package",
5
5
  "type": "module",
6
6
  "scripts": {