@nomosui/react 0.5.3 → 0.6.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/SKILL.md +32 -0
- package/dist/index.js +812 -1
- package/dist/mcp/bin.js +813 -2
- package/dist/types/components/code/code.d.ts +8 -0
- package/dist/types/components/code/manifest.d.ts +6 -0
- package/dist/types/components/code-block/code-block.d.ts +22 -0
- package/dist/types/components/code-block/manifest.d.ts +6 -0
- package/dist/types/components/copy-button/copy-button.d.ts +51 -0
- package/dist/types/components/copy-button/manifest.d.ts +6 -0
- package/dist/types/components/footer/footer.d.ts +17 -0
- package/dist/types/components/footer/manifest.d.ts +6 -0
- package/dist/types/components/heading/heading.d.ts +38 -0
- package/dist/types/components/heading/manifest.d.ts +6 -0
- package/dist/types/components/kicker/kicker.d.ts +31 -0
- package/dist/types/components/kicker/manifest.d.ts +3 -0
- package/dist/types/components/link/link.d.ts +10 -0
- package/dist/types/components/link/manifest.d.ts +6 -0
- package/dist/types/components/navbar/manifest.d.ts +3 -0
- package/dist/types/components/navbar/navbar.d.ts +17 -0
- package/dist/types/components/text/manifest.d.ts +6 -0
- package/dist/types/components/text/text.d.ts +34 -0
- package/dist/types/index.d.ts +28 -0
- package/package.json +1 -1
- package/tokens/theme.css +24 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Le code inline : une surface monospace discrète, posée dans une phrase. Le fond
|
|
4
|
+
* inset, la bordure et le rayon viennent des tokens du cœur ; la coloration
|
|
5
|
+
* syntaxique reste à l'app (ADR 0002).
|
|
6
|
+
*/
|
|
7
|
+
export type CodeProps = ComponentProps<'code'>;
|
|
8
|
+
export declare function Code({ className, ...props }: CodeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du Code inline (ADR 0005). Il est écrit à la main : le type se génère,
|
|
4
|
+
* l'usage s'écrit. Le test de cohérence du catalogue le confronte aux props réelles.
|
|
5
|
+
*/
|
|
6
|
+
export declare const codeManifest: ComponentManifest;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Le bloc de code : un `<pre><code>` scrollable, avec un bouton de copie. `code` est
|
|
4
|
+
* le texte brut à copier ; `children` est ce qui s'affiche, ce qui laisse l'app poser
|
|
5
|
+
* sa propre coloration syntaxique. Les libellés sont injectés : le cœur n'a pas d'i18n
|
|
6
|
+
* (ADR 0002).
|
|
7
|
+
*/
|
|
8
|
+
export type CodeBlockProps = {
|
|
9
|
+
/** Le texte brut à copier. Sert aussi de contenu affiché si `children` est absent. */
|
|
10
|
+
code?: string;
|
|
11
|
+
/** Le contenu affiché ; permet à l'app de poser sa propre coloration. Défaut : `code`. */
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/** Le libellé du bouton de copie, injecté par l'app. */
|
|
14
|
+
copyLabel?: string;
|
|
15
|
+
/** Le libellé transitoire après copie, injecté par l'app. */
|
|
16
|
+
copiedLabel?: string;
|
|
17
|
+
/** Affiche le bouton de copie. Défaut : true. */
|
|
18
|
+
showCopy?: boolean;
|
|
19
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function CodeBlock({ code, children, copyLabel, copiedLabel, showCopy, className, }: CodeBlockProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du CodeBlock (ADR 0005). Il est écrit à la main : le type se génère,
|
|
4
|
+
* l'usage s'écrit. Le test de cohérence du catalogue le confronte aux props réelles.
|
|
5
|
+
*/
|
|
6
|
+
export declare const codeBlockManifest: ComponentManifest;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ButtonProps } from '../button/button';
|
|
3
|
+
/**
|
|
4
|
+
* La config de variantes du CopyButton : celle du Button, réutilisée telle quelle. Le
|
|
5
|
+
* catalogue la lit pour vérifier que le manifeste ne dérive pas des props réelles
|
|
6
|
+
* (ADR 0005).
|
|
7
|
+
*/
|
|
8
|
+
export declare const copyButtonVariantsConfig: {
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
default: string;
|
|
12
|
+
destructive: string;
|
|
13
|
+
outline: string;
|
|
14
|
+
secondary: string;
|
|
15
|
+
ghost: string;
|
|
16
|
+
link: string;
|
|
17
|
+
};
|
|
18
|
+
size: {
|
|
19
|
+
default: string;
|
|
20
|
+
sm: string;
|
|
21
|
+
lg: string;
|
|
22
|
+
icon: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "default";
|
|
27
|
+
size: "default";
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export type CopyButtonProps = {
|
|
31
|
+
/** Le texte à copier dans le presse-papiers (`navigator.clipboard.writeText`). */
|
|
32
|
+
value: string;
|
|
33
|
+
/** Le libellé au repos. Défaut neutre, l'app peut le traduire. */
|
|
34
|
+
label?: string;
|
|
35
|
+
/** Le libellé transitoire après copie. Défaut neutre, l'app peut le traduire. */
|
|
36
|
+
copiedLabel?: string;
|
|
37
|
+
/** Une icône fournie par l'appelant : le cœur n'expose pas d'icônes. */
|
|
38
|
+
icon?: ReactNode;
|
|
39
|
+
/** Le ton, repris du Button. */
|
|
40
|
+
variant?: ButtonProps['variant'];
|
|
41
|
+
/** La densité, reprise du Button. */
|
|
42
|
+
size?: ButtonProps['size'];
|
|
43
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
44
|
+
className?: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Le bouton de copie : il écrit `value` dans le presse-papiers et affiche un libellé
|
|
48
|
+
* transitoire. Copier du texte arbitraire n'est pas un souci d'app (ADR 0002) ; les
|
|
49
|
+
* libellés et l'icône sont injectés, le cœur n'a pas d'i18n.
|
|
50
|
+
*/
|
|
51
|
+
export declare function CopyButton({ value, label, copiedLabel, icon, variant, size, className, }: CopyButtonProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du CopyButton (ADR 0005). Il reprend les deux groupes de variantes du
|
|
4
|
+
* Button — `variant` et `size` — que le test de cohérence confronte à la config réelle.
|
|
5
|
+
*/
|
|
6
|
+
export declare const copyButtonManifest: ComponentManifest;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Le pied de page : une marque, une rangée de liens, une ligne légale. Même frontière
|
|
4
|
+
* que la barre de navigation (ADR 0015) — des emplacements injectés, aucun routing, aucun
|
|
5
|
+
* libellé propre au cœur (ADR 0002). L'app fournit le wordmark, les liens et le texte légal.
|
|
6
|
+
*/
|
|
7
|
+
export type FooterProps = {
|
|
8
|
+
/** Le wordmark ou le logo, fourni par l'appelant. */
|
|
9
|
+
brand?: ReactNode;
|
|
10
|
+
/** La rangée de liens, fournie par l'appelant (des `Link`, par exemple). */
|
|
11
|
+
links?: ReactNode;
|
|
12
|
+
/** La ligne légale (copyright, mentions), fournie par l'appelant. */
|
|
13
|
+
legal?: ReactNode;
|
|
14
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
15
|
+
className?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function Footer({ brand, links, legal, className }: FooterProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du pied de page (ADR 0005, ADR 0015). Un bloc du cœur : la mise en page
|
|
4
|
+
* est au cœur, les emplacements (marque, liens, ligne légale) sont injectés par l'app.
|
|
5
|
+
*/
|
|
6
|
+
export declare const footerManifest: ComponentManifest;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
/**
|
|
4
|
+
* La config des variantes est exportée à côté de `headingVariants` : le catalogue la lit
|
|
5
|
+
* pour vérifier que le manifeste ne dérive pas des props réelles (ADR 0005).
|
|
6
|
+
*
|
|
7
|
+
* `level` porte à la fois la balise (`h1`..`h6`) et la taille sémantique : un seul mot dit
|
|
8
|
+
* la hiérarchie, et la taille suit l'échelle des tokens (ADR 0004). Les valeurs sont des
|
|
9
|
+
* chaînes parce que cva indexe ses variantes par nom.
|
|
10
|
+
*/
|
|
11
|
+
export declare const headingVariantsConfig: {
|
|
12
|
+
variants: {
|
|
13
|
+
level: {
|
|
14
|
+
'1': string;
|
|
15
|
+
'2': string;
|
|
16
|
+
'3': string;
|
|
17
|
+
'4': string;
|
|
18
|
+
'5': string;
|
|
19
|
+
'6': string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
defaultVariants: {
|
|
23
|
+
level: "2";
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare const headingVariants: (props?: ({
|
|
27
|
+
level?: "1" | "2" | "3" | "4" | "5" | "6" | null | undefined;
|
|
28
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
29
|
+
export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
30
|
+
export type HeadingProps = HTMLAttributes<HTMLHeadingElement> & Omit<VariantProps<typeof headingVariants>, 'level'> & {
|
|
31
|
+
/** Le niveau hiérarchique : il choisit la balise `h1`..`h6` et la taille sémantique. */
|
|
32
|
+
level?: HeadingLevel;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Le titre : la balise suit le niveau (`h1`..`h6`), la taille suit l'échelle sémantique.
|
|
36
|
+
* Présentation seule — le texte vient de l'appelant.
|
|
37
|
+
*/
|
|
38
|
+
export declare const Heading: ({ level, className, ...props }: HeadingProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du Titre (ADR 0005). `level` est la seule variante : elle choisit à la fois
|
|
4
|
+
* la balise (`h1`..`h6`) et la taille sémantique, pour qu'un seul mot dise la hiérarchie.
|
|
5
|
+
*/
|
|
6
|
+
export declare const headingManifest: ComponentManifest;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
/**
|
|
4
|
+
* La config des variantes est exportée à côté de `kickerVariants` : le catalogue la lit
|
|
5
|
+
* pour vérifier que le manifeste ne dérive pas des props réelles (ADR 0005). Le ton pose
|
|
6
|
+
* la couleur du point dans une variable, que le point lit — le libellé reste discret.
|
|
7
|
+
*/
|
|
8
|
+
export declare const kickerVariantsConfig: {
|
|
9
|
+
variants: {
|
|
10
|
+
tone: Record<"neutral" | "info" | "progress" | "attention" | "warning" | "danger" | "success", string>;
|
|
11
|
+
};
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
tone: "neutral";
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export declare const kickerVariants: (props?: ({
|
|
17
|
+
tone?: "neutral" | "info" | "progress" | "attention" | "warning" | "danger" | "success" | null | undefined;
|
|
18
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
19
|
+
export type KickerProps = VariantProps<typeof kickerVariants> & {
|
|
20
|
+
/** Le libellé d'accroche : court, jamais une phrase. */
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
/** Affiche un point de ton devant le libellé. */
|
|
23
|
+
dot?: boolean;
|
|
24
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
25
|
+
className?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Le kicker : une étiquette d'accroche, répétée au-dessus d'un titre. Présentation seule —
|
|
29
|
+
* le texte est injecté par l'appelant (le cœur n'a pas d'i18n), le ton est une intention.
|
|
30
|
+
*/
|
|
31
|
+
export declare function Kicker({ tone, dot, children, className }: KickerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Le lien texte du cœur. Il rend un `<a>` — pas un `<button>` comme `Button variant="link"`.
|
|
4
|
+
* `href` et le libellé sont injectés : le cœur ne connaît aucun routing (ADR 0002).
|
|
5
|
+
*/
|
|
6
|
+
export type LinkProps = ComponentProps<'a'> & {
|
|
7
|
+
/** Rend le style sur l'enfant au lieu d'un `<a>` (Radix `Slot`). */
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function Link({ className, asChild, ...props }: LinkProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du Lien (ADR 0005). Il est écrit à la main : le type se génère,
|
|
4
|
+
* l'usage s'écrit. Le test de cohérence du catalogue le confronte aux props réelles.
|
|
5
|
+
*/
|
|
6
|
+
export declare const linkManifest: ComponentManifest;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* La barre supérieure d'un site : une marque, des emplacements de navigation et un
|
|
4
|
+
* groupe d'actions en fin. Sticky en haut, bordure basse, fond du cœur. Les slots sont
|
|
5
|
+
* injectés — le cœur ne porte ni routing ni mot produit (ADR 0002, 0030).
|
|
6
|
+
*/
|
|
7
|
+
export type NavbarProps = {
|
|
8
|
+
/** La marque : un wordmark, un logo, un badge de version. */
|
|
9
|
+
brand?: ReactNode;
|
|
10
|
+
/** Les emplacements de navigation, fournis par l'appelant. */
|
|
11
|
+
nav?: ReactNode;
|
|
12
|
+
/** Le groupe d'actions de fin : boutons, menu, avatar. */
|
|
13
|
+
actions?: ReactNode;
|
|
14
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
15
|
+
className?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function Navbar({ brand, nav, actions, className }: NavbarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du Texte (ADR 0005). `size` lit l'échelle typographique sémantique ; `as`
|
|
4
|
+
* choisit l'élément rendu (paragraphe ou `span` inline).
|
|
5
|
+
*/
|
|
6
|
+
export declare const textManifest: ComponentManifest;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
/**
|
|
4
|
+
* La config des variantes est exportée à côté de `textVariants` : le catalogue la lit pour
|
|
5
|
+
* vérifier que le manifeste ne dérive pas des props réelles (ADR 0005).
|
|
6
|
+
*
|
|
7
|
+
* `size` lit l'échelle typographique sémantique (ADR 0004) : `text-body`, `text-lead`…
|
|
8
|
+
* portent la taille **et** l'interligne des tokens.
|
|
9
|
+
*/
|
|
10
|
+
export declare const textVariantsConfig: {
|
|
11
|
+
variants: {
|
|
12
|
+
size: {
|
|
13
|
+
lead: string;
|
|
14
|
+
body: string;
|
|
15
|
+
caption: string;
|
|
16
|
+
micro: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
size: "body";
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export declare const textVariants: (props?: ({
|
|
24
|
+
size?: "body" | "caption" | "lead" | "micro" | null | undefined;
|
|
25
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
26
|
+
export type TextProps = HTMLAttributes<HTMLElement> & VariantProps<typeof textVariants> & {
|
|
27
|
+
/** L'élément rendu : un paragraphe par défaut, un `span` pour un texte inline. */
|
|
28
|
+
as?: 'p' | 'span';
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Le texte courant : un paragraphe ou un `span`, à la taille sémantique choisie.
|
|
32
|
+
* Présentation seule — le contenu vient de l'appelant.
|
|
33
|
+
*/
|
|
34
|
+
export declare const Text: ({ size, as: Tag, className, ...props }: TextProps) => import("react").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export { badgeManifest } from './components/badge/manifest';
|
|
|
27
27
|
export { Button, buttonVariants, buttonVariantsConfig } from './components/button/button';
|
|
28
28
|
export type { ButtonProps } from './components/button/button';
|
|
29
29
|
export { buttonManifest } from './components/button/manifest';
|
|
30
|
+
export { Heading, headingVariants, headingVariantsConfig } from './components/heading/heading';
|
|
31
|
+
export type { HeadingLevel, HeadingProps } from './components/heading/heading';
|
|
32
|
+
export { headingManifest } from './components/heading/manifest';
|
|
33
|
+
export { Text, textVariants, textVariantsConfig } from './components/text/text';
|
|
34
|
+
export type { TextProps } from './components/text/text';
|
|
35
|
+
export { textManifest } from './components/text/manifest';
|
|
30
36
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from './components/card/card';
|
|
31
37
|
export { cardManifest } from './components/card/manifest';
|
|
32
38
|
export { Dialog } from './components/dialog/dialog';
|
|
@@ -40,6 +46,18 @@ export { emptyStateManifest } from './components/empty-state/manifest';
|
|
|
40
46
|
export { Chip } from './components/chip/chip';
|
|
41
47
|
export type { ChipProps } from './components/chip/chip';
|
|
42
48
|
export { chipManifest } from './components/chip/manifest';
|
|
49
|
+
export { Kicker, kickerVariantsConfig } from './components/kicker/kicker';
|
|
50
|
+
export type { KickerProps } from './components/kicker/kicker';
|
|
51
|
+
export { kickerManifest } from './components/kicker/manifest';
|
|
52
|
+
export { CopyButton, copyButtonVariantsConfig } from './components/copy-button/copy-button';
|
|
53
|
+
export type { CopyButtonProps } from './components/copy-button/copy-button';
|
|
54
|
+
export { copyButtonManifest } from './components/copy-button/manifest';
|
|
55
|
+
export { Code } from './components/code/code';
|
|
56
|
+
export type { CodeProps } from './components/code/code';
|
|
57
|
+
export { codeManifest } from './components/code/manifest';
|
|
58
|
+
export { CodeBlock } from './components/code-block/code-block';
|
|
59
|
+
export type { CodeBlockProps } from './components/code-block/code-block';
|
|
60
|
+
export { codeBlockManifest } from './components/code-block/manifest';
|
|
43
61
|
export { Freshness } from './components/freshness/freshness';
|
|
44
62
|
export type { FreshnessProps } from './components/freshness/freshness';
|
|
45
63
|
export { freshnessManifest } from './components/freshness/manifest';
|
|
@@ -54,6 +72,15 @@ export type { SearchFieldProps } from './components/search-field/search-field';
|
|
|
54
72
|
export { searchFieldManifest } from './components/search-field/manifest';
|
|
55
73
|
export { Label } from './components/label/label';
|
|
56
74
|
export { labelManifest } from './components/label/manifest';
|
|
75
|
+
export { Link } from './components/link/link';
|
|
76
|
+
export type { LinkProps } from './components/link/link';
|
|
77
|
+
export { linkManifest } from './components/link/manifest';
|
|
78
|
+
export { Navbar } from './components/navbar/navbar';
|
|
79
|
+
export type { NavbarProps } from './components/navbar/navbar';
|
|
80
|
+
export { navbarManifest } from './components/navbar/manifest';
|
|
81
|
+
export { Footer } from './components/footer/footer';
|
|
82
|
+
export type { FooterProps } from './components/footer/footer';
|
|
83
|
+
export { footerManifest } from './components/footer/manifest';
|
|
57
84
|
export { Fieldset } from './components/fieldset/fieldset';
|
|
58
85
|
export { fieldsetManifest } from './components/fieldset/manifest';
|
|
59
86
|
export { Field } from './components/field/field';
|
|
@@ -129,6 +156,7 @@ export type { ComponentManifest, ComponentProp, ComponentUsage, ComponentVariant
|
|
|
129
156
|
export { cn } from './lib/cn';
|
|
130
157
|
export { TONES, toneClasses } from './lib/tone';
|
|
131
158
|
export type { Tone } from './lib/tone';
|
|
159
|
+
export type { LucideIcon } from 'lucide-react';
|
|
132
160
|
export { resolveSkin } from './tokens/skin';
|
|
133
161
|
export { renderCss } from './tokens/build.mjs';
|
|
134
162
|
export type { TokensDocument } from './tokens/build.mjs';
|
package/package.json
CHANGED
package/tokens/theme.css
CHANGED
|
@@ -74,6 +74,30 @@
|
|
|
74
74
|
--radius-lg: var(--nomos-radius-control);
|
|
75
75
|
--radius-md: var(--nomos-radius-field);
|
|
76
76
|
--radius-sm: var(--nomos-radius-chip);
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
L'échelle typographique sémantique (ADR 0004) : `text-body`, `text-title`… lisent la
|
|
80
|
+
taille **et** l'interligne des tokens, `font-strong` lit le poids. Aucune valeur n'est
|
|
81
|
+
écrite ici — un skin change les valeurs, jamais ces noms.
|
|
82
|
+
*/
|
|
83
|
+
--text-micro: var(--nomos-type-size-micro);
|
|
84
|
+
--text-micro--line-height: var(--nomos-type-leading-micro);
|
|
85
|
+
--text-caption: var(--nomos-type-size-caption);
|
|
86
|
+
--text-caption--line-height: var(--nomos-type-leading-caption);
|
|
87
|
+
--text-body: var(--nomos-type-size-body);
|
|
88
|
+
--text-body--line-height: var(--nomos-type-leading-body);
|
|
89
|
+
--text-lead: var(--nomos-type-size-lead);
|
|
90
|
+
--text-lead--line-height: var(--nomos-type-leading-lead);
|
|
91
|
+
--text-title: var(--nomos-type-size-title);
|
|
92
|
+
--text-title--line-height: var(--nomos-type-leading-title);
|
|
93
|
+
--text-display: var(--nomos-type-size-display);
|
|
94
|
+
--text-display--line-height: var(--nomos-type-leading-display);
|
|
95
|
+
|
|
96
|
+
--font-weight-regular: var(--nomos-type-weight-regular);
|
|
97
|
+
--font-weight-medium: var(--nomos-type-weight-medium);
|
|
98
|
+
--font-weight-strong: var(--nomos-type-weight-strong);
|
|
99
|
+
|
|
100
|
+
--font-sans: var(--nomos-type-family-sans);
|
|
77
101
|
}
|
|
78
102
|
|
|
79
103
|
/*
|