@sentropic/design-system-react 0.5.0 → 0.7.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/dist/Avatar.d.ts +31 -0
- package/dist/Avatar.d.ts.map +1 -0
- package/dist/Avatar.js +11 -0
- package/dist/Avatar.js.map +1 -0
- package/dist/AvatarGroup.d.ts +21 -0
- package/dist/AvatarGroup.d.ts.map +1 -0
- package/dist/AvatarGroup.js +14 -0
- package/dist/AvatarGroup.js.map +1 -0
- package/dist/ButtonGroup.d.ts +28 -0
- package/dist/ButtonGroup.d.ts.map +1 -0
- package/dist/ButtonGroup.js +11 -0
- package/dist/ButtonGroup.js.map +1 -0
- package/dist/CheckboxGroup.d.ts +38 -0
- package/dist/CheckboxGroup.d.ts.map +1 -0
- package/dist/CheckboxGroup.js +14 -0
- package/dist/CheckboxGroup.js.map +1 -0
- package/dist/Col.d.ts +31 -0
- package/dist/Col.d.ts.map +1 -0
- package/dist/Col.js +42 -0
- package/dist/Col.js.map +1 -0
- package/dist/Collapsible.d.ts +18 -0
- package/dist/Collapsible.d.ts.map +1 -0
- package/dist/Collapsible.js +22 -0
- package/dist/Collapsible.js.map +1 -0
- package/dist/Container.d.ts +17 -0
- package/dist/Container.d.ts.map +1 -0
- package/dist/Container.js +9 -0
- package/dist/Container.js.map +1 -0
- package/dist/Divider.d.ts +22 -0
- package/dist/Divider.d.ts.map +1 -0
- package/dist/Divider.js +20 -0
- package/dist/Divider.js.map +1 -0
- package/dist/Flex.d.ts +31 -0
- package/dist/Flex.d.ts.map +1 -0
- package/dist/Flex.js +65 -0
- package/dist/Flex.js.map +1 -0
- package/dist/Hidden.d.ts +19 -0
- package/dist/Hidden.d.ts.map +1 -0
- package/dist/Hidden.js +9 -0
- package/dist/Hidden.js.map +1 -0
- package/dist/Inline.d.ts +21 -0
- package/dist/Inline.d.ts.map +1 -0
- package/dist/Inline.js +7 -0
- package/dist/Inline.js.map +1 -0
- package/dist/RadioGroup.d.ts +36 -0
- package/dist/RadioGroup.d.ts.map +1 -0
- package/dist/RadioGroup.js +15 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/Row.d.ts +21 -0
- package/dist/Row.d.ts.map +1 -0
- package/dist/Row.js +19 -0
- package/dist/Row.js.map +1 -0
- package/dist/Stack.d.ts +19 -0
- package/dist/Stack.d.ts.map +1 -0
- package/dist/Stack.js +7 -0
- package/dist/Stack.js.map +1 -0
- package/dist/Stepper.d.ts +31 -0
- package/dist/Stepper.d.ts.map +1 -0
- package/dist/Stepper.js +28 -0
- package/dist/Stepper.js.map +1 -0
- package/dist/Typography.d.ts +21 -0
- package/dist/Typography.d.ts.map +1 -0
- package/dist/Typography.js +24 -0
- package/dist/Typography.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +863 -0
- package/package.json +1 -1
package/dist/Avatar.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type AvatarSize = "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export type AvatarShape = "circle" | "square";
|
|
4
|
+
export type AvatarTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
|
|
5
|
+
export type AvatarProps = Omit<React.HTMLAttributes<HTMLSpanElement>, "className"> & {
|
|
6
|
+
/** Nom complet, utilisé pour dériver les initiales et l'étiquette a11y. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** URL de la photo. Si absente, on rend un cercle d'initiales. */
|
|
9
|
+
src?: string;
|
|
10
|
+
/** Texte alternatif de l'image. Par défaut = `name`. */
|
|
11
|
+
alt?: string;
|
|
12
|
+
size?: AvatarSize;
|
|
13
|
+
shape?: AvatarShape;
|
|
14
|
+
/** Catégorie de couleur pour le fond des initiales. */
|
|
15
|
+
tone?: AvatarTone;
|
|
16
|
+
className?: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const Avatar: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLSpanElement>, "className"> & {
|
|
19
|
+
/** Nom complet, utilisé pour dériver les initiales et l'étiquette a11y. */
|
|
20
|
+
name: string;
|
|
21
|
+
/** URL de la photo. Si absente, on rend un cercle d'initiales. */
|
|
22
|
+
src?: string;
|
|
23
|
+
/** Texte alternatif de l'image. Par défaut = `name`. */
|
|
24
|
+
alt?: string;
|
|
25
|
+
size?: AvatarSize;
|
|
26
|
+
shape?: AvatarShape;
|
|
27
|
+
/** Catégorie de couleur pour le fond des initiales. */
|
|
28
|
+
tone?: AvatarTone;
|
|
29
|
+
className?: string;
|
|
30
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
31
|
+
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,GAAG;IACnF,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,uDAAuD;IACvD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,MAAM;IAbjB,2EAA2E;UACrE,MAAM;IACZ,kEAAkE;UAC5D,MAAM;IACZ,wDAAwD;UAClD,MAAM;WACL,UAAU;YACT,WAAW;IACnB,uDAAuD;WAChD,UAAU;gBACL,MAAM;yCAyBnB,CAAC"}
|
package/dist/Avatar.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
import { deriveInitials } from "./catalog.js";
|
|
5
|
+
export const Avatar = React.forwardRef(({ name, src, alt, size = "md", shape = "circle", tone = "category1", className, ...rest }, ref) => {
|
|
6
|
+
const initials = deriveInitials(name);
|
|
7
|
+
const classes = classNames("st-avatar", `st-avatar--${size}`, `st-avatar--${shape}`, src ? "st-avatar--image" : `st-avatar--${tone}`, className);
|
|
8
|
+
return (_jsx("span", { ...rest, ref: ref, className: classes, role: "img", "aria-label": alt ?? name, children: src ? (_jsx("img", { className: "st-avatar__image", src: src, alt: alt ?? name })) : (_jsx("span", { className: "st-avatar__initials", "aria-hidden": "true", children: initials })) }));
|
|
9
|
+
});
|
|
10
|
+
Avatar.displayName = "Avatar";
|
|
11
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4B9C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,QAAQ,EAAE,IAAI,GAAG,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACjG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,UAAU,CACxB,WAAW,EACX,cAAc,IAAI,EAAE,EACpB,cAAc,KAAK,EAAE,EACrB,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,EAC/C,SAAS,CACV,CAAC;IACF,OAAO,CACL,kBAAU,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,KAAK,gBAAa,GAAG,IAAI,IAAI,YAC7E,GAAG,CAAC,CAAC,CAAC,CACL,cAAK,SAAS,EAAC,kBAAkB,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,GAAI,CACjE,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,qBAAqB,iBAAa,MAAM,YACrD,QAAQ,GACJ,CACR,GACI,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { AvatarSize } from "./Avatar.js";
|
|
3
|
+
export type AvatarGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
4
|
+
/** Nombre maximum d'avatars visibles. Au-delà, un jeton « +N » est affiché. */
|
|
5
|
+
max?: number;
|
|
6
|
+
/** Taille appliquée au jeton de débordement (doit refléter les Avatar). */
|
|
7
|
+
size?: AvatarSize;
|
|
8
|
+
/** Nombre total réel d'éléments (sert à calculer le « +N » si > max). */
|
|
9
|
+
total?: number;
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const AvatarGroup: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
13
|
+
/** Nombre maximum d'avatars visibles. Au-delà, un jeton « +N » est affiché. */
|
|
14
|
+
max?: number;
|
|
15
|
+
/** Taille appliquée au jeton de débordement (doit refléter les Avatar). */
|
|
16
|
+
size?: AvatarSize;
|
|
17
|
+
/** Nombre total réel d'éléments (sert à calculer le « +N » si > max). */
|
|
18
|
+
total?: number;
|
|
19
|
+
className?: string;
|
|
20
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
//# sourceMappingURL=AvatarGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../src/AvatarGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,GAAG;IACvF,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,WAAW;IATtB,+EAA+E;UACzE,MAAM;IACZ,2EAA2E;WACpE,UAAU;IACjB,yEAAyE;YACjE,MAAM;gBACF,MAAM;wCAsBnB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
export const AvatarGroup = React.forwardRef(({ max, size = "md", total, className, style, children, ...rest }, ref) => {
|
|
5
|
+
const overflow = max != null && total != null && total > max ? total - max : 0;
|
|
6
|
+
const classes = classNames("st-avatarGroup", `st-avatarGroup--${size}`, className);
|
|
7
|
+
const mergedStyle = {
|
|
8
|
+
...style,
|
|
9
|
+
...{ "--st-avatar-group-max": max ?? "" },
|
|
10
|
+
};
|
|
11
|
+
return (_jsxs("div", { ...rest, ref: ref, className: classes, style: mergedStyle, children: [children, overflow > 0 ? (_jsxs("span", { className: "st-avatarGroup__overflow", "aria-label": `+${overflow}`, children: ["+", overflow] })) : null] }));
|
|
12
|
+
});
|
|
13
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
14
|
+
//# sourceMappingURL=AvatarGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../src/AvatarGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CACzC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACxE,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG;QAClB,GAAG,KAAK;QACR,GAAI,EAAE,uBAAuB,EAAE,GAAG,IAAI,EAAE,EAA0B;KACnE,CAAC;IACF,OAAO,CACL,kBAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,aAC5D,QAAQ,EACR,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CACd,gBAAM,SAAS,EAAC,0BAA0B,gBAAa,IAAI,QAAQ,EAAE,kBACjE,QAAQ,IACL,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ButtonGroupOrientation = "horizontal" | "vertical";
|
|
3
|
+
export type ButtonGroupSize = "sm" | "md" | "lg";
|
|
4
|
+
export type ButtonGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
5
|
+
orientation?: ButtonGroupOrientation;
|
|
6
|
+
/** Look segmenté joint (boutons collés, coins arrondis seulement aux extrémités). */
|
|
7
|
+
attached?: boolean;
|
|
8
|
+
/** Espacement entre boutons (échelle spacing), ignoré quand `attached`. */
|
|
9
|
+
gap?: number;
|
|
10
|
+
/** Taille indicative (transmise via data-attr pour styliser les enfants si besoin). */
|
|
11
|
+
size?: ButtonGroupSize;
|
|
12
|
+
/** Étiquette a11y du groupe. */
|
|
13
|
+
label?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const ButtonGroup: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
17
|
+
orientation?: ButtonGroupOrientation;
|
|
18
|
+
/** Look segmenté joint (boutons collés, coins arrondis seulement aux extrémités). */
|
|
19
|
+
attached?: boolean;
|
|
20
|
+
/** Espacement entre boutons (échelle spacing), ignoré quand `attached`. */
|
|
21
|
+
gap?: number;
|
|
22
|
+
/** Taille indicative (transmise via data-attr pour styliser les enfants si besoin). */
|
|
23
|
+
size?: ButtonGroupSize;
|
|
24
|
+
/** Étiquette a11y du groupe. */
|
|
25
|
+
label?: string;
|
|
26
|
+
className?: string;
|
|
27
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
//# sourceMappingURL=ButtonGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,GAAG;IACvF,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,WAAW;kBAZR,sBAAsB;IACpC,qFAAqF;eAC1E,OAAO;IAClB,2EAA2E;UACrE,MAAM;IACZ,uFAAuF;WAChF,eAAe;IACtB,gCAAgC;YACxB,MAAM;gBACF,MAAM;wCA8BnB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
export const ButtonGroup = React.forwardRef(({ orientation = "horizontal", attached = false, gap, size = "md", label, className, style, children, ...rest }, ref) => {
|
|
5
|
+
const classes = classNames("st-buttonGroup", `st-buttonGroup--${orientation}`, attached && "st-buttonGroup--attached", className);
|
|
6
|
+
const gapValue = attached || gap == null ? undefined : `var(--st-spacing-${gap}, ${gap * 0.25}rem)`;
|
|
7
|
+
const mergedStyle = gapValue != null ? { ...style, gap: gapValue } : style;
|
|
8
|
+
return (_jsx("div", { ...rest, ref: ref, className: classes, role: "group", "aria-label": label, "data-size": size, style: mergedStyle, children: children }));
|
|
9
|
+
});
|
|
10
|
+
ButtonGroup.displayName = "ButtonGroup";
|
|
11
|
+
//# sourceMappingURL=ButtonGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonGroup.js","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CACzC,CACE,EAAE,WAAW,GAAG,YAAY,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAC9G,GAAG,EACH,EAAE;IACF,MAAM,OAAO,GAAG,UAAU,CACxB,gBAAgB,EAChB,mBAAmB,WAAW,EAAE,EAChC,QAAQ,IAAI,0BAA0B,EACtC,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,GAAG,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC;IACpG,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,OAAO,CACL,iBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,IAAI,EAAC,OAAO,gBACA,KAAK,eACN,IAAI,EACf,KAAK,EAAE,WAAW,YAEjB,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface CheckboxGroupOption {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
helperText?: string;
|
|
7
|
+
}
|
|
8
|
+
export type CheckboxGroupProps = Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, "className" | "onChange"> & {
|
|
9
|
+
legend: string;
|
|
10
|
+
/** Valeurs cochées (liste contrôlée). */
|
|
11
|
+
value?: string[];
|
|
12
|
+
onChange?: (value: string[]) => void;
|
|
13
|
+
orientation?: "vertical" | "horizontal";
|
|
14
|
+
/** Nom partagé par les cases (utile pour la soumission de formulaire). */
|
|
15
|
+
name?: string;
|
|
16
|
+
options?: CheckboxGroupOption[];
|
|
17
|
+
/** Description optionnelle affichée sous la légende. */
|
|
18
|
+
helperText?: string;
|
|
19
|
+
/** Désactive le groupe entier. */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
className?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const CheckboxGroup: React.ForwardRefExoticComponent<Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, "className" | "onChange"> & {
|
|
24
|
+
legend: string;
|
|
25
|
+
/** Valeurs cochées (liste contrôlée). */
|
|
26
|
+
value?: string[];
|
|
27
|
+
onChange?: (value: string[]) => void;
|
|
28
|
+
orientation?: "vertical" | "horizontal";
|
|
29
|
+
/** Nom partagé par les cases (utile pour la soumission de formulaire). */
|
|
30
|
+
name?: string;
|
|
31
|
+
options?: CheckboxGroupOption[];
|
|
32
|
+
/** Description optionnelle affichée sous la légende. */
|
|
33
|
+
helperText?: string;
|
|
34
|
+
/** Désactive le groupe entier. */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
} & React.RefAttributes<HTMLFieldSetElement>>;
|
|
38
|
+
//# sourceMappingURL=CheckboxGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../src/CheckboxGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EACjD,WAAW,GAAG,UAAU,CACzB,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,aAAa;YAfhB,MAAM;IACd,yCAAyC;YACjC,MAAM,EAAE;eACL,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;kBACtB,UAAU,GAAG,YAAY;IACvC,0EAA0E;WACnE,MAAM;cACH,mBAAmB,EAAE;IAC/B,wDAAwD;iBAC3C,MAAM;IACnB,kCAAkC;eACvB,OAAO;gBACN,MAAM;6CAiDnB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
import { Checkbox } from "./Checkbox.js";
|
|
5
|
+
export const CheckboxGroup = React.forwardRef(({ legend, value = [], onChange, orientation = "vertical", name, options = [], helperText, disabled = false, className, children, ...rest }, ref) => {
|
|
6
|
+
const classes = classNames("st-checkboxGroup", `st-checkboxGroup--${orientation}`, className);
|
|
7
|
+
function toggle(optionValue, checked) {
|
|
8
|
+
const next = checked ? [...value, optionValue] : value.filter((v) => v !== optionValue);
|
|
9
|
+
onChange?.(next);
|
|
10
|
+
}
|
|
11
|
+
return (_jsxs("fieldset", { ...rest, ref: ref, className: classes, disabled: disabled, children: [_jsx("legend", { className: "st-checkboxGroup__legend", children: legend }), helperText ? _jsx("p", { className: "st-checkboxGroup__help", children: helperText }) : null, _jsxs("div", { className: "st-checkboxGroup__options", children: [options.map((option) => (_jsx(Checkbox, { label: option.label, helperText: option.helperText, name: name, value: option.value, checked: value.includes(option.value), disabled: option.disabled, onChange: (event) => toggle(option.value, event.currentTarget.checked) }, option.value))), children] })] }));
|
|
12
|
+
});
|
|
13
|
+
CheckboxGroup.displayName = "CheckboxGroup";
|
|
14
|
+
//# sourceMappingURL=CheckboxGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.js","sourceRoot":"","sources":["../src/CheckboxGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4BzC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAC3C,CACE,EACE,MAAM,EACN,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,WAAW,GAAG,UAAU,EACxB,IAAI,EACJ,OAAO,GAAG,EAAE,EACZ,UAAU,EACV,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EACD,GAAG,EACH,EAAE;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9F,SAAS,MAAM,CAAC,WAAmB,EAAE,OAAgB;QACnD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QACxF,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CACL,uBAAc,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,aAClE,iBAAQ,SAAS,EAAC,0BAA0B,YAAE,MAAM,GAAU,EAC7D,UAAU,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,wBAAwB,YAAE,UAAU,GAAK,CAAC,CAAC,CAAC,IAAI,EAC3E,eAAK,SAAS,EAAC,2BAA2B,aACvC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,QAAQ,IAEP,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAPjE,MAAM,CAAC,KAAK,CAQjB,CACH,CAAC,EACD,QAAQ,IACL,IACG,CACZ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC"}
|
package/dist/Col.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ColSpan = number | "auto";
|
|
3
|
+
export type ColProps = Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
4
|
+
/** Number of 12-grid columns to span, or "auto" to size to content. */
|
|
5
|
+
span?: ColSpan;
|
|
6
|
+
/** Columns to offset (0..11) via margin-inline-start. */
|
|
7
|
+
offset?: number;
|
|
8
|
+
/** Responsive overrides applied at and above the breakpoint. */
|
|
9
|
+
sm?: ColSpan;
|
|
10
|
+
md?: ColSpan;
|
|
11
|
+
lg?: ColSpan;
|
|
12
|
+
as?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
};
|
|
15
|
+
/** Width expression for a given span. Accounts for the shared row gutter so a
|
|
16
|
+
full 12 columns still fit on one line (gap-based layout). */
|
|
17
|
+
export declare function spanBasis(span: ColSpan | undefined): string | undefined;
|
|
18
|
+
export declare function offsetMargin(offset: number | undefined): string | undefined;
|
|
19
|
+
export declare const Col: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
20
|
+
/** Number of 12-grid columns to span, or "auto" to size to content. */
|
|
21
|
+
span?: ColSpan;
|
|
22
|
+
/** Columns to offset (0..11) via margin-inline-start. */
|
|
23
|
+
offset?: number;
|
|
24
|
+
/** Responsive overrides applied at and above the breakpoint. */
|
|
25
|
+
sm?: ColSpan;
|
|
26
|
+
md?: ColSpan;
|
|
27
|
+
lg?: ColSpan;
|
|
28
|
+
as?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
31
|
+
//# sourceMappingURL=Col.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Col.d.ts","sourceRoot":"","sources":["../src/Col.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtC,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG;IAC5E,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;gEACgE;AAChE,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOvE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM3E;AAED,eAAO,MAAM,GAAG;IA/Bd,uEAAuE;WAChE,OAAO;IACd,yDAAyD;aAChD,MAAM;IACf,gEAAgE;SAC3D,OAAO;SACP,OAAO;SACP,OAAO;SACP,MAAM;gBACC,MAAM;qCAuDnB,CAAC"}
|
package/dist/Col.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
/** Width expression for a given span. Accounts for the shared row gutter so a
|
|
5
|
+
full 12 columns still fit on one line (gap-based layout). */
|
|
6
|
+
export function spanBasis(span) {
|
|
7
|
+
if (span == null)
|
|
8
|
+
return undefined;
|
|
9
|
+
if (span === "auto")
|
|
10
|
+
return "auto";
|
|
11
|
+
const clamped = Math.max(1, Math.min(12, Math.round(span)));
|
|
12
|
+
const ratio = clamped / 12;
|
|
13
|
+
// Subtract this column's share of the inter-column gutters.
|
|
14
|
+
return `calc(${ratio * 100}% - var(--st-row-gutter, 0px) * ${(12 - clamped) / 12})`;
|
|
15
|
+
}
|
|
16
|
+
export function offsetMargin(offset) {
|
|
17
|
+
if (!offset)
|
|
18
|
+
return undefined;
|
|
19
|
+
const clamped = Math.max(0, Math.min(11, Math.round(offset)));
|
|
20
|
+
if (clamped === 0)
|
|
21
|
+
return undefined;
|
|
22
|
+
const ratio = clamped / 12;
|
|
23
|
+
return `calc(${ratio * 100}% + var(--st-row-gutter, 0px) * ${ratio})`;
|
|
24
|
+
}
|
|
25
|
+
export const Col = React.forwardRef(({ span = "auto", offset = 0, sm, md, lg, as = "div", className, style, children, ...rest }, ref) => {
|
|
26
|
+
const Tag = as;
|
|
27
|
+
const isAuto = span === "auto";
|
|
28
|
+
const basis = spanBasis(span);
|
|
29
|
+
const mergedStyle = {
|
|
30
|
+
flexBasis: basis,
|
|
31
|
+
maxInlineSize: isAuto ? undefined : basis,
|
|
32
|
+
flexGrow: isAuto ? 1 : 0,
|
|
33
|
+
marginInlineStart: offsetMargin(offset),
|
|
34
|
+
"--st-col-sm": spanBasis(sm),
|
|
35
|
+
"--st-col-md": spanBasis(md),
|
|
36
|
+
"--st-col-lg": spanBasis(lg),
|
|
37
|
+
...style,
|
|
38
|
+
};
|
|
39
|
+
return (_jsx(Tag, { ...rest, ref: ref, className: classNames("st-col", isAuto && "st-col--auto", sm != null && "st-col--has-sm", md != null && "st-col--has-md", lg != null && "st-col--has-lg", className), style: mergedStyle, children: children }));
|
|
40
|
+
});
|
|
41
|
+
Col.displayName = "Col";
|
|
42
|
+
//# sourceMappingURL=Col.js.map
|
package/dist/Col.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Col.js","sourceRoot":"","sources":["../src/Col.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C;gEACgE;AAChE,MAAM,UAAU,SAAS,CAAC,IAAyB;IACjD,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,OAAO,QAAQ,KAAK,GAAG,GAAG,mCAAmC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC;IAC3B,OAAO,QAAQ,KAAK,GAAG,GAAG,mCAAmC,KAAK,GAAG,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IAClG,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG;QAClB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QACzC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,iBAAiB,EAAE,YAAY,CAAC,MAAM,CAAC;QACvC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5B,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5B,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;QAC5B,GAAG,KAAK;KACc,CAAC;IACzB,OAAO,CACL,KAAC,GAAG,OACE,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CACnB,QAAQ,EACR,MAAM,IAAI,cAAc,EACxB,EAAE,IAAI,IAAI,IAAI,gBAAgB,EAC9B,EAAE,IAAI,IAAI,IAAI,gBAAgB,EAC9B,EAAE,IAAI,IAAI,IAAI,gBAAgB,EAC9B,SAAS,CACV,EACD,KAAK,EAAE,WAAW,YAEjB,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type CollapsibleProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "title"> & {
|
|
3
|
+
/** État ouvert (contrôlable). */
|
|
4
|
+
open?: boolean;
|
|
5
|
+
title: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
onToggle?: (open: boolean) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const Collapsible: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "className" | "title"> & {
|
|
11
|
+
/** État ouvert (contrôlable). */
|
|
12
|
+
open?: boolean;
|
|
13
|
+
title: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
onToggle?: (open: boolean) => void;
|
|
16
|
+
className?: string;
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
//# sourceMappingURL=Collapsible.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../src/Collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG;IACjG,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,WAAW;IARtB,iCAAiC;WAC1B,OAAO;WACP,MAAM;eACF,OAAO;eACP,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI;gBACtB,MAAM;wCA8DnB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
export const Collapsible = React.forwardRef(({ open: openProp, title, disabled = false, onToggle, className, children, ...rest }, ref) => {
|
|
5
|
+
const reactId = React.useId();
|
|
6
|
+
const uid = `st-collapsible-${reactId}`;
|
|
7
|
+
const isControlled = openProp !== undefined;
|
|
8
|
+
const [internalOpen, setInternalOpen] = React.useState(openProp ?? false);
|
|
9
|
+
const open = isControlled ? openProp : internalOpen;
|
|
10
|
+
const classes = classNames("st-collapsible", open && "st-collapsible--open", className);
|
|
11
|
+
function toggle() {
|
|
12
|
+
if (disabled)
|
|
13
|
+
return;
|
|
14
|
+
const next = !open;
|
|
15
|
+
if (!isControlled)
|
|
16
|
+
setInternalOpen(next);
|
|
17
|
+
onToggle?.(next);
|
|
18
|
+
}
|
|
19
|
+
return (_jsxs("div", { ...rest, ref: ref, className: classes, children: [_jsxs("button", { type: "button", className: "st-collapsible__trigger", "aria-expanded": open ? "true" : "false", "aria-controls": `${uid}-region`, id: `${uid}-trigger`, disabled: disabled, onClick: toggle, children: [_jsx("span", { className: "st-collapsible__title", children: title }), _jsx("span", { className: "st-collapsible__icon", "aria-hidden": "true", children: _jsx("svg", { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.25, strokeLinecap: "round", strokeLinejoin: "round", focusable: "false", "aria-hidden": "true", children: _jsx("path", { d: "m6 9 6 6 6-6" }) }) })] }), open ? (_jsx("div", { className: "st-collapsible__region", role: "region", id: `${uid}-region`, "aria-labelledby": `${uid}-trigger`, children: children })) : null] }));
|
|
20
|
+
});
|
|
21
|
+
Collapsible.displayName = "Collapsible";
|
|
22
|
+
//# sourceMappingURL=Collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../src/Collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW7C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CACzC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3F,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,kBAAkB,OAAO,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,CAAC;IAC5C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IAEpD,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,EAAE,IAAI,IAAI,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAExF,SAAS,MAAM;QACb,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,YAAY;YAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CACL,kBAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,aACzC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,mBACpB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBACvB,GAAG,GAAG,SAAS,EAC9B,EAAE,EAAE,GAAG,GAAG,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,aAEf,eAAM,SAAS,EAAC,uBAAuB,YAAE,KAAK,GAAQ,EACtD,eAAM,SAAS,EAAC,sBAAsB,iBAAa,MAAM,YACvD,cACE,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,IAAI,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,OAAO,iBACL,MAAM,YAElB,eAAM,CAAC,EAAC,cAAc,GAAG,GACrB,GACD,IACA,EACR,IAAI,CAAC,CAAC,CAAC,CACN,cACE,SAAS,EAAC,wBAAwB,EAClC,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,GAAG,GAAG,SAAS,qBACF,GAAG,GAAG,UAAU,YAEhC,QAAQ,GACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ContainerSize = "sm" | "md" | "lg" | "xl" | "full";
|
|
3
|
+
export type ContainerProps = Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
4
|
+
size?: ContainerSize;
|
|
5
|
+
/** Apply horizontal padding using the spacing scale. */
|
|
6
|
+
padding?: boolean;
|
|
7
|
+
as?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const Container: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
11
|
+
size?: ContainerSize;
|
|
12
|
+
/** Apply horizontal padding using the spacing scale. */
|
|
13
|
+
padding?: boolean;
|
|
14
|
+
as?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
17
|
+
//# sourceMappingURL=Container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../src/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG;IAClF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS;WAPb,aAAa;IACpB,wDAAwD;cAC9C,OAAO;SACZ,MAAM;gBACC,MAAM;qCAqBnB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
export const Container = React.forwardRef(({ size = "lg", padding = true, as = "div", className, children, ...rest }, ref) => {
|
|
5
|
+
const Tag = as;
|
|
6
|
+
return (_jsx(Tag, { ...rest, ref: ref, className: classNames("st-container", `st-container--${size}`, padding && "st-container--padded", className), children: children }));
|
|
7
|
+
});
|
|
8
|
+
Container.displayName = "Container";
|
|
9
|
+
//# sourceMappingURL=Container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../src/Container.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY7C,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CACvC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,OAAO,CACL,KAAC,GAAG,OACE,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CACnB,cAAc,EACd,iBAAiB,IAAI,EAAE,EACvB,OAAO,IAAI,sBAAsB,EACjC,SAAS,CACV,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type DividerOrientation = "horizontal" | "vertical";
|
|
3
|
+
export type DividerVariant = "solid" | "dashed";
|
|
4
|
+
export type DividerProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
5
|
+
orientation?: DividerOrientation;
|
|
6
|
+
/** Spacing scale step (0..12) applied as margin around the divider. */
|
|
7
|
+
spacing?: number;
|
|
8
|
+
/** Optional label centered on a horizontal divider line. */
|
|
9
|
+
label?: string;
|
|
10
|
+
variant?: DividerVariant;
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const Divider: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
|
|
14
|
+
orientation?: DividerOrientation;
|
|
15
|
+
/** Spacing scale step (0..12) applied as margin around the divider. */
|
|
16
|
+
spacing?: number;
|
|
17
|
+
/** Optional label centered on a horizontal divider line. */
|
|
18
|
+
label?: string;
|
|
19
|
+
variant?: DividerVariant;
|
|
20
|
+
className?: string;
|
|
21
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
//# sourceMappingURL=Divider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../src/Divider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,GAAG;IACnF,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,OAAO;kBATJ,kBAAkB;IAChC,uEAAuE;cAC7D,MAAM;IAChB,4DAA4D;YACpD,MAAM;cACJ,cAAc;gBACZ,MAAM;wCAiDnB,CAAC"}
|
package/dist/Divider.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
import { spacingToken } from "./Flex.js";
|
|
5
|
+
export const Divider = React.forwardRef(({ orientation = "horizontal", spacing, label, variant = "solid", className, style, ...rest }, ref) => {
|
|
6
|
+
const isVertical = orientation === "vertical";
|
|
7
|
+
const hasLabel = !isVertical && label != null && label !== "";
|
|
8
|
+
const margin = spacingToken(spacing);
|
|
9
|
+
const classes = classNames("st-divider", `st-divider--${orientation}`, `st-divider--${variant}`, hasLabel && "st-divider--labeled", className);
|
|
10
|
+
if (hasLabel) {
|
|
11
|
+
return (_jsxs("div", { ...rest, ref: ref, className: classes, role: "separator", "aria-orientation": "horizontal", style: { marginBlock: margin, ...style }, children: [_jsx("span", { className: "st-divider__line", "aria-hidden": "true" }), _jsx("span", { className: "st-divider__label", children: label }), _jsx("span", { className: "st-divider__line", "aria-hidden": "true" })] }));
|
|
12
|
+
}
|
|
13
|
+
return (_jsx("div", { ...rest, ref: ref, className: classes, role: "separator", "aria-orientation": orientation, style: {
|
|
14
|
+
marginBlock: isVertical ? undefined : margin,
|
|
15
|
+
marginInline: isVertical ? margin : undefined,
|
|
16
|
+
...style,
|
|
17
|
+
} }));
|
|
18
|
+
});
|
|
19
|
+
Divider.displayName = "Divider";
|
|
20
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sourceRoot":"","sources":["../src/Divider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAezC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CACrC,CAAC,EAAE,WAAW,GAAG,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACpG,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,CAAC;IAC9C,MAAM,QAAQ,GAAG,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,UAAU,CACxB,YAAY,EACZ,eAAe,WAAW,EAAE,EAC5B,eAAe,OAAO,EAAE,EACxB,QAAQ,IAAI,qBAAqB,EACjC,SAAS,CACV,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,kBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,IAAI,EAAC,WAAW,sBACC,YAAY,EAC7B,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,aAExC,eAAM,SAAS,EAAC,kBAAkB,iBAAa,MAAM,GAAG,EACxD,eAAM,SAAS,EAAC,mBAAmB,YAAE,KAAK,GAAQ,EAClD,eAAM,SAAS,EAAC,kBAAkB,iBAAa,MAAM,GAAG,IACpD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,iBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,IAAI,EAAC,WAAW,sBACE,WAAW,EAC7B,KAAK,EAAE;YACL,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YAC5C,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7C,GAAG,KAAK;SACT,GACD,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC"}
|
package/dist/Flex.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type FlexDirection = "row" | "column" | "row-reverse" | "column-reverse";
|
|
3
|
+
export type FlexAlign = "start" | "center" | "end" | "stretch" | "baseline";
|
|
4
|
+
export type FlexJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
|
|
5
|
+
export type FlexProps = Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
6
|
+
direction?: FlexDirection;
|
|
7
|
+
/** Spacing scale step (0..12) mapped to `--st-spacing-*`. */
|
|
8
|
+
gap?: number;
|
|
9
|
+
align?: FlexAlign;
|
|
10
|
+
justify?: FlexJustify;
|
|
11
|
+
wrap?: boolean;
|
|
12
|
+
inline?: boolean;
|
|
13
|
+
as?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
};
|
|
16
|
+
/** Resolve a spacing step to a `var(--st-spacing-N, fallback)` expression. */
|
|
17
|
+
export declare function spacingToken(step: number | undefined): string | undefined;
|
|
18
|
+
export declare function alignValue(align: FlexAlign | undefined): string | undefined;
|
|
19
|
+
export declare function justifyValue(justify: FlexJustify | undefined): string | undefined;
|
|
20
|
+
export declare const Flex: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
21
|
+
direction?: FlexDirection;
|
|
22
|
+
/** Spacing scale step (0..12) mapped to `--st-spacing-*`. */
|
|
23
|
+
gap?: number;
|
|
24
|
+
align?: FlexAlign;
|
|
25
|
+
justify?: FlexJustify;
|
|
26
|
+
wrap?: boolean;
|
|
27
|
+
inline?: boolean;
|
|
28
|
+
as?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
31
|
+
//# sourceMappingURL=Flex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flex.d.ts","sourceRoot":"","sources":["../src/Flex.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAChF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvF,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG;IAC7E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAoBF,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKzE;AAmBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE3E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED,eAAO,MAAM,IAAI;gBA9DH,aAAa;IACzB,6DAA6D;UACvD,MAAM;YACJ,SAAS;cACP,WAAW;WACd,OAAO;aACL,OAAO;SACX,MAAM;gBACC,MAAM;qCAuFnB,CAAC"}
|
package/dist/Flex.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
/** rem fallbacks for the Sent Tech spacing scale (steps 5/7/9/10/11 are
|
|
5
|
+
interpolated since no token exists, but the var() is still preferred). */
|
|
6
|
+
const SPACING_FALLBACK = {
|
|
7
|
+
0: "0",
|
|
8
|
+
1: "0.25rem",
|
|
9
|
+
2: "0.5rem",
|
|
10
|
+
3: "0.75rem",
|
|
11
|
+
4: "1rem",
|
|
12
|
+
5: "1.25rem",
|
|
13
|
+
6: "1.5rem",
|
|
14
|
+
7: "1.75rem",
|
|
15
|
+
8: "2rem",
|
|
16
|
+
9: "2.25rem",
|
|
17
|
+
10: "2.5rem",
|
|
18
|
+
11: "2.75rem",
|
|
19
|
+
12: "3rem",
|
|
20
|
+
};
|
|
21
|
+
/** Resolve a spacing step to a `var(--st-spacing-N, fallback)` expression. */
|
|
22
|
+
export function spacingToken(step) {
|
|
23
|
+
if (step == null)
|
|
24
|
+
return undefined;
|
|
25
|
+
const clamped = Math.max(0, Math.min(12, Math.round(step)));
|
|
26
|
+
if (clamped === 0)
|
|
27
|
+
return "0";
|
|
28
|
+
return `var(--st-spacing-${clamped}, ${SPACING_FALLBACK[clamped]})`;
|
|
29
|
+
}
|
|
30
|
+
const ALIGN = {
|
|
31
|
+
start: "flex-start",
|
|
32
|
+
center: "center",
|
|
33
|
+
end: "flex-end",
|
|
34
|
+
stretch: "stretch",
|
|
35
|
+
baseline: "baseline",
|
|
36
|
+
};
|
|
37
|
+
const JUSTIFY = {
|
|
38
|
+
start: "flex-start",
|
|
39
|
+
center: "center",
|
|
40
|
+
end: "flex-end",
|
|
41
|
+
between: "space-between",
|
|
42
|
+
around: "space-around",
|
|
43
|
+
evenly: "space-evenly",
|
|
44
|
+
};
|
|
45
|
+
export function alignValue(align) {
|
|
46
|
+
return align ? ALIGN[align] : undefined;
|
|
47
|
+
}
|
|
48
|
+
export function justifyValue(justify) {
|
|
49
|
+
return justify ? JUSTIFY[justify] : undefined;
|
|
50
|
+
}
|
|
51
|
+
export const Flex = React.forwardRef(({ direction = "row", gap, align, justify, wrap = false, inline = false, as = "div", className, style, children, ...rest }, ref) => {
|
|
52
|
+
const Tag = as;
|
|
53
|
+
const mergedStyle = {
|
|
54
|
+
display: inline ? "inline-flex" : "flex",
|
|
55
|
+
flexDirection: direction,
|
|
56
|
+
flexWrap: wrap ? "wrap" : "nowrap",
|
|
57
|
+
alignItems: alignValue(align),
|
|
58
|
+
justifyContent: justifyValue(justify),
|
|
59
|
+
gap: spacingToken(gap),
|
|
60
|
+
...style,
|
|
61
|
+
};
|
|
62
|
+
return (_jsx(Tag, { ...rest, ref: ref, className: classNames("st-flex", className), style: mergedStyle, children: children }));
|
|
63
|
+
});
|
|
64
|
+
Flex.displayName = "Flex";
|
|
65
|
+
//# sourceMappingURL=Flex.js.map
|
package/dist/Flex.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flex.js","sourceRoot":"","sources":["../src/Flex.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB7C;6EAC6E;AAC7E,MAAM,gBAAgB,GAA2B;IAC/C,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,MAAM;CACX,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,IAAwB;IACnD,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,oBAAoB,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;AACtE,CAAC;AAED,MAAM,KAAK,GAA8B;IACvC,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,OAAO,GAAgC;IAC3C,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAA4B;IACrD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgC;IAC3D,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAClC,CACE,EACE,SAAS,GAAG,KAAK,EACjB,GAAG,EACH,KAAK,EACL,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,EAAE,GAAG,KAAK,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACR,EACD,GAAG,EACH,EAAE;IACF,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,MAAM,WAAW,GAAwB;QACvC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;QACxC,aAAa,EAAE,SAAS;QACxB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QAClC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;QAC7B,cAAc,EAAE,YAAY,CAAC,OAAO,CAAC;QACrC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC;QACtB,GAAG,KAAK;KACT,CAAC;IACF,OAAO,CACL,KAAC,GAAG,OAAK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,YACrF,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC"}
|
package/dist/Hidden.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type HiddenBreakpoint = "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export type HiddenProps = Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
4
|
+
/** Hide when viewport is narrower than this breakpoint. */
|
|
5
|
+
below?: HiddenBreakpoint;
|
|
6
|
+
/** Hide when viewport is at or wider than this breakpoint. */
|
|
7
|
+
above?: HiddenBreakpoint;
|
|
8
|
+
as?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const Hidden: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
|
|
12
|
+
/** Hide when viewport is narrower than this breakpoint. */
|
|
13
|
+
below?: HiddenBreakpoint;
|
|
14
|
+
/** Hide when viewport is at or wider than this breakpoint. */
|
|
15
|
+
above?: HiddenBreakpoint;
|
|
16
|
+
as?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
} & React.RefAttributes<HTMLElement>>;
|
|
19
|
+
//# sourceMappingURL=Hidden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hidden.d.ts","sourceRoot":"","sources":["../src/Hidden.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG;IAC/E,2DAA2D;IAC3D,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,MAAM;IARjB,2DAA2D;YACnD,gBAAgB;IACxB,8DAA8D;YACtD,gBAAgB;SACnB,MAAM;gBACC,MAAM;qCAqBnB,CAAC"}
|
package/dist/Hidden.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
export const Hidden = React.forwardRef(({ below, above, as = "div", className, children, ...rest }, ref) => {
|
|
5
|
+
const Tag = as;
|
|
6
|
+
return (_jsx(Tag, { ...rest, ref: ref, className: classNames("st-hidden", below && `st-hidden--below-${below}`, above && `st-hidden--above-${above}`, className), children: children }));
|
|
7
|
+
});
|
|
8
|
+
Hidden.displayName = "Hidden";
|
|
9
|
+
//# sourceMappingURL=Hidden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hidden.js","sourceRoot":"","sources":["../src/Hidden.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IAClE,MAAM,GAAG,GAAG,EAAuB,CAAC;IACpC,OAAO,CACL,KAAC,GAAG,OACE,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CACnB,WAAW,EACX,KAAK,IAAI,oBAAoB,KAAK,EAAE,EACpC,KAAK,IAAI,oBAAoB,KAAK,EAAE,EACpC,SAAS,CACV,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|