@octavius2929-personal/design-system 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +73 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +69 -23
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +73 -38
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1680,6 +1680,12 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
1680
1680
|
startIcon?: Icon;
|
|
1681
1681
|
endIcon?: Icon;
|
|
1682
1682
|
full?: boolean;
|
|
1683
|
+
/** No interactivo mientras carga: no dispara onClick, expone aria-busy y muestra un
|
|
1684
|
+
* spinner sin cambiar el tamaño del botón (el label queda reservado, solo oculto). */
|
|
1685
|
+
loading?: boolean;
|
|
1686
|
+
/** Estado "elegido" persistente (p.ej. una opción de quiz ya marcada). Distinto del hover/
|
|
1687
|
+
* focus transitorios; expone aria-pressed. */
|
|
1688
|
+
selected?: boolean;
|
|
1683
1689
|
/** Segmento de contexto para el data-testid (no es un override del id completo). */
|
|
1684
1690
|
testId?: string;
|
|
1685
1691
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1680,6 +1680,12 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
1680
1680
|
startIcon?: Icon;
|
|
1681
1681
|
endIcon?: Icon;
|
|
1682
1682
|
full?: boolean;
|
|
1683
|
+
/** No interactivo mientras carga: no dispara onClick, expone aria-busy y muestra un
|
|
1684
|
+
* spinner sin cambiar el tamaño del botón (el label queda reservado, solo oculto). */
|
|
1685
|
+
loading?: boolean;
|
|
1686
|
+
/** Estado "elegido" persistente (p.ej. una opción de quiz ya marcada). Distinto del hover/
|
|
1687
|
+
* focus transitorios; expone aria-pressed. */
|
|
1688
|
+
selected?: boolean;
|
|
1683
1689
|
/** Segmento de contexto para el data-testid (no es un override del id completo). */
|
|
1684
1690
|
testId?: string;
|
|
1685
1691
|
}
|
package/dist/index.js
CHANGED
|
@@ -664,10 +664,15 @@ function states(map) {
|
|
|
664
664
|
import { useMemo as useMemo7 } from "react";
|
|
665
665
|
|
|
666
666
|
// src/components/button/use-styles.css.ts
|
|
667
|
-
var
|
|
667
|
+
var content = "use-styles_content__1pbtillg";
|
|
668
|
+
var contentHidden = "use-styles_contentHidden__1pbtillh";
|
|
669
|
+
var full = "use-styles_full__1pbtill5";
|
|
670
|
+
var loadingRoot = "use-styles_loadingRoot__1pbtill1";
|
|
668
671
|
var root = "use-styles_root__1pbtill0";
|
|
669
|
-
var
|
|
670
|
-
var
|
|
672
|
+
var selected = "use-styles_selected__1pbtillf";
|
|
673
|
+
var size = { sm: "use-styles_size_sm__1pbtill2", md: "use-styles_size_md__1pbtill3", lg: "use-styles_size_lg__1pbtill4" };
|
|
674
|
+
var spinner = "use-styles_spinner__1pbtillj";
|
|
675
|
+
var tone = { filledInk: "use-styles_tone_filledInk__1pbtill6", filledAccent: "use-styles_tone_filledAccent__1pbtill7", outlineInk: "use-styles_tone_outlineInk__1pbtill8", outlineAccent: "use-styles_tone_outlineAccent__1pbtill9", ghostInk: "use-styles_tone_ghostInk__1pbtilla", ghostAccent: "use-styles_tone_ghostAccent__1pbtillb", filledDanger: "use-styles_tone_filledDanger__1pbtillc", outlineDanger: "use-styles_tone_outlineDanger__1pbtilld", ghostDanger: "use-styles_tone_ghostDanger__1pbtille" };
|
|
671
676
|
|
|
672
677
|
// src/components/button/use-styles.ts
|
|
673
678
|
function toneKey(variant2, tone4) {
|
|
@@ -679,7 +684,9 @@ function useStyles4({
|
|
|
679
684
|
tone: tone4 = "ink",
|
|
680
685
|
size: size3 = "md",
|
|
681
686
|
full: full2,
|
|
682
|
-
className
|
|
687
|
+
className,
|
|
688
|
+
selected: selected4,
|
|
689
|
+
loading
|
|
683
690
|
}) {
|
|
684
691
|
const { themeClass } = useTheme();
|
|
685
692
|
const container = useMemo7(
|
|
@@ -687,13 +694,19 @@ function useStyles4({
|
|
|
687
694
|
themeClass,
|
|
688
695
|
root,
|
|
689
696
|
size[size3],
|
|
690
|
-
|
|
697
|
+
// `selected` pisa el tono en vez de combinarse con él (ver comentario en use-styles.css.ts).
|
|
698
|
+
selected4 ? selected : tone[toneKey(variant2, tone4)],
|
|
691
699
|
full2 && full,
|
|
700
|
+
loading && loadingRoot,
|
|
692
701
|
className
|
|
693
702
|
].filter(Boolean).join(" "),
|
|
694
|
-
[themeClass, variant2, tone4, size3, full2, className]
|
|
703
|
+
[themeClass, variant2, tone4, size3, full2, loading, selected4, className]
|
|
695
704
|
);
|
|
696
|
-
return {
|
|
705
|
+
return {
|
|
706
|
+
container,
|
|
707
|
+
content: loading ? contentHidden : content,
|
|
708
|
+
spinner
|
|
709
|
+
};
|
|
697
710
|
}
|
|
698
711
|
|
|
699
712
|
// src/components/button/index.tsx
|
|
@@ -709,12 +722,27 @@ var Button = forwardRef4(function Button2({
|
|
|
709
722
|
className,
|
|
710
723
|
type = "button",
|
|
711
724
|
testId,
|
|
725
|
+
loading,
|
|
726
|
+
selected: selected4,
|
|
712
727
|
children,
|
|
728
|
+
onClick,
|
|
713
729
|
...rest
|
|
714
730
|
}, ref) {
|
|
715
|
-
const { container
|
|
716
|
-
|
|
731
|
+
const { container, content: content4, spinner: spinner3 } = useStyles4({
|
|
732
|
+
variant: variant2,
|
|
733
|
+
tone: tone4,
|
|
734
|
+
size: size3,
|
|
735
|
+
full: full2,
|
|
736
|
+
className,
|
|
737
|
+
selected: selected4,
|
|
738
|
+
loading
|
|
739
|
+
});
|
|
740
|
+
const { testId: dataTestId, slot } = useTestId("button", testId);
|
|
717
741
|
const iconSize = ICON_SIZE[size3];
|
|
742
|
+
const handleClick = (event) => {
|
|
743
|
+
if (loading) return;
|
|
744
|
+
onClick?.(event);
|
|
745
|
+
};
|
|
718
746
|
return /* @__PURE__ */ jsxs(
|
|
719
747
|
"button",
|
|
720
748
|
{
|
|
@@ -722,12 +750,19 @@ var Button = forwardRef4(function Button2({
|
|
|
722
750
|
type,
|
|
723
751
|
className: container,
|
|
724
752
|
"data-testid": dataTestId,
|
|
725
|
-
"data-state": states({ disabled: rest.disabled }),
|
|
753
|
+
"data-state": states({ disabled: rest.disabled, loading, selected: selected4 }),
|
|
754
|
+
"aria-busy": loading || void 0,
|
|
755
|
+
"aria-disabled": loading || void 0,
|
|
756
|
+
"aria-pressed": selected4 === void 0 ? void 0 : selected4,
|
|
757
|
+
onClick: handleClick,
|
|
726
758
|
...rest,
|
|
727
759
|
children: [
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
760
|
+
/* @__PURE__ */ jsxs("span", { className: content4, children: [
|
|
761
|
+
StartIcon && /* @__PURE__ */ jsx6(StartIcon, { size: iconSize }),
|
|
762
|
+
children,
|
|
763
|
+
EndIcon && /* @__PURE__ */ jsx6(EndIcon, { size: iconSize })
|
|
764
|
+
] }),
|
|
765
|
+
loading && /* @__PURE__ */ jsx6("span", { className: spinner3, "aria-hidden": "true", "data-testid": slot("spinner") })
|
|
731
766
|
]
|
|
732
767
|
}
|
|
733
768
|
);
|
|
@@ -861,7 +896,7 @@ import { useMemo as useMemo11 } from "react";
|
|
|
861
896
|
// src/components/progress/use-styles.css.ts
|
|
862
897
|
var bar = "use-styles_bar__kbop7v3";
|
|
863
898
|
var indeterminate = "use-styles_indeterminate__kbop7v4";
|
|
864
|
-
var
|
|
899
|
+
var spinner2 = "use-styles_spinner__kbop7v5";
|
|
865
900
|
var track = "use-styles_track__kbop7v2";
|
|
866
901
|
|
|
867
902
|
// src/components/progress/use-styles.ts
|
|
@@ -875,7 +910,7 @@ function useStyles8({
|
|
|
875
910
|
return useMemo11(() => {
|
|
876
911
|
const root24 = (...classes) => [themeClass, ...classes, className].filter(Boolean).join(" ");
|
|
877
912
|
if (variant2 === "circular") {
|
|
878
|
-
return { track: "", bar: "", spinner: root24(
|
|
913
|
+
return { track: "", bar: "", spinner: root24(spinner2) };
|
|
879
914
|
}
|
|
880
915
|
return {
|
|
881
916
|
track: root24(track),
|
|
@@ -888,7 +923,7 @@ function useStyles8({
|
|
|
888
923
|
// src/components/progress/index.tsx
|
|
889
924
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
890
925
|
var Progress = forwardRef8(function Progress2({ variant: variant2 = "linear", value, size: size3 = 20, className, testId, ...rest }, ref) {
|
|
891
|
-
const { track: track4, bar: bar2, spinner:
|
|
926
|
+
const { track: track4, bar: bar2, spinner: spinner3 } = useStyles8({ variant: variant2, value, className });
|
|
892
927
|
const indeterminate2 = value === void 0;
|
|
893
928
|
const { testId: dataTestId, slot } = useTestId("media", testId);
|
|
894
929
|
if (variant2 === "circular") {
|
|
@@ -896,7 +931,7 @@ var Progress = forwardRef8(function Progress2({ variant: variant2 = "linear", va
|
|
|
896
931
|
"span",
|
|
897
932
|
{
|
|
898
933
|
ref,
|
|
899
|
-
className:
|
|
934
|
+
className: spinner3,
|
|
900
935
|
role: "progressbar",
|
|
901
936
|
"aria-valuenow": indeterminate2 ? void 0 : value,
|
|
902
937
|
"aria-valuemin": indeterminate2 ? void 0 : 0,
|
|
@@ -967,12 +1002,12 @@ import { useMemo as useMemo12 } from "react";
|
|
|
967
1002
|
var clickable = "use-styles_clickable__1axilf44";
|
|
968
1003
|
var deleteBtn = "use-styles_deleteBtn__1axilf45";
|
|
969
1004
|
var root5 = "use-styles_root__1axilf40";
|
|
970
|
-
var
|
|
1005
|
+
var selected2 = "use-styles_selected__1axilf43";
|
|
971
1006
|
var tone3 = { ink: "use-styles_tone_ink__1axilf41", accent: "use-styles_tone_accent__1axilf42" };
|
|
972
1007
|
|
|
973
1008
|
// src/components/chip/use-styles.ts
|
|
974
1009
|
function useStyles9({
|
|
975
|
-
selected:
|
|
1010
|
+
selected: selected4,
|
|
976
1011
|
tone: tone4 = "ink",
|
|
977
1012
|
clickable: clickable2
|
|
978
1013
|
}) {
|
|
@@ -981,10 +1016,10 @@ function useStyles9({
|
|
|
981
1016
|
() => [
|
|
982
1017
|
themeClass,
|
|
983
1018
|
root5,
|
|
984
|
-
|
|
1019
|
+
selected4 ? selected2 : tone3[tone4],
|
|
985
1020
|
clickable2 && clickable
|
|
986
1021
|
].filter(Boolean).join(" "),
|
|
987
|
-
[themeClass,
|
|
1022
|
+
[themeClass, selected4, tone4, clickable2]
|
|
988
1023
|
);
|
|
989
1024
|
return { root: root24, deleteBtn };
|
|
990
1025
|
}
|
|
@@ -992,9 +1027,9 @@ function useStyles9({
|
|
|
992
1027
|
// src/components/chip/index.tsx
|
|
993
1028
|
import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
994
1029
|
var ICON_SIZE2 = 13;
|
|
995
|
-
var Chip = forwardRef9(function Chip2({ selected:
|
|
1030
|
+
var Chip = forwardRef9(function Chip2({ selected: selected4, tone: tone4, onDelete, onClick, startIcon: StartIcon, children, testId, ...rest }, ref) {
|
|
996
1031
|
const clickable2 = Boolean(onClick);
|
|
997
|
-
const { root: root24, deleteBtn: deleteBtn2 } = useStyles9({ selected:
|
|
1032
|
+
const { root: root24, deleteBtn: deleteBtn2 } = useStyles9({ selected: selected4, tone: tone4, clickable: clickable2 });
|
|
998
1033
|
const { testId: dataTestId, slot } = useTestId("media", testId);
|
|
999
1034
|
const handleDelete = (event) => {
|
|
1000
1035
|
event.stopPropagation();
|
|
@@ -1007,7 +1042,7 @@ var Chip = forwardRef9(function Chip2({ selected: selected3, tone: tone4, onDele
|
|
|
1007
1042
|
className: root24,
|
|
1008
1043
|
onClick,
|
|
1009
1044
|
"data-testid": dataTestId,
|
|
1010
|
-
"data-state": states({ selected:
|
|
1045
|
+
"data-state": states({ selected: selected4 }),
|
|
1011
1046
|
...rest,
|
|
1012
1047
|
children: [
|
|
1013
1048
|
StartIcon ? /* @__PURE__ */ jsx12(StartIcon, { size: ICON_SIZE2 }) : null,
|
|
@@ -1765,7 +1800,7 @@ function TriangleAlertIcon({ size: size3 = 20, strokeWidth = 1.75, title, ...res
|
|
|
1765
1800
|
import { useMemo as useMemo21 } from "react";
|
|
1766
1801
|
|
|
1767
1802
|
// src/components/alert/use-styles.css.ts
|
|
1768
|
-
var
|
|
1803
|
+
var content2 = "use-styles_content__ivsh6u6";
|
|
1769
1804
|
var iconSlot = "use-styles_iconSlot__ivsh6u5";
|
|
1770
1805
|
var root12 = "use-styles_root__ivsh6u0";
|
|
1771
1806
|
var severity = { info: "use-styles_severity_info__ivsh6u1", ok: "use-styles_severity_ok__ivsh6u2", warn: "use-styles_severity_warn__ivsh6u3", danger: "use-styles_severity_danger__ivsh6u4" };
|
|
@@ -1783,7 +1818,7 @@ function useStyles17({
|
|
|
1783
1818
|
return {
|
|
1784
1819
|
root: root24,
|
|
1785
1820
|
iconSlot,
|
|
1786
|
-
content
|
|
1821
|
+
content: content2
|
|
1787
1822
|
};
|
|
1788
1823
|
}
|
|
1789
1824
|
|
|
@@ -1983,7 +2018,7 @@ function useStyles19({
|
|
|
1983
2018
|
placeholder,
|
|
1984
2019
|
chevron: chevron3,
|
|
1985
2020
|
menu,
|
|
1986
|
-
optionClass: (
|
|
2021
|
+
optionClass: (selected4, active2) => [option, selected4 && optionSelected, active2 && optionActive].filter(Boolean).join(" ")
|
|
1987
2022
|
};
|
|
1988
2023
|
}, [themeClass, open]);
|
|
1989
2024
|
}
|
|
@@ -2032,7 +2067,7 @@ var Select = forwardRef21(function Select2({
|
|
|
2032
2067
|
document.addEventListener("mousedown", onPointerDown);
|
|
2033
2068
|
return () => document.removeEventListener("mousedown", onPointerDown);
|
|
2034
2069
|
}, [open]);
|
|
2035
|
-
const
|
|
2070
|
+
const selected4 = options.find((option2) => option2.value === value);
|
|
2036
2071
|
const selectAt = (index) => {
|
|
2037
2072
|
const option2 = options[index];
|
|
2038
2073
|
if (option2) onChange?.(option2.value);
|
|
@@ -2105,7 +2140,7 @@ var Select = forwardRef21(function Select2({
|
|
|
2105
2140
|
},
|
|
2106
2141
|
onKeyDown: handleKeyDown,
|
|
2107
2142
|
children: [
|
|
2108
|
-
|
|
2143
|
+
selected4 ? selected4.label : /* @__PURE__ */ jsx32("span", { className: placeholderClass, children: placeholder2 }),
|
|
2109
2144
|
/* @__PURE__ */ jsx32("span", { className: chevron3, children: /* @__PURE__ */ jsx32(ChevronDownIcon, { size: 18 }) })
|
|
2110
2145
|
]
|
|
2111
2146
|
}
|
|
@@ -3140,29 +3175,29 @@ import { forwardRef as forwardRef33 } from "react";
|
|
|
3140
3175
|
import { useMemo as useMemo35 } from "react";
|
|
3141
3176
|
|
|
3142
3177
|
// src/components/list-item/use-styles.css.ts
|
|
3143
|
-
var
|
|
3178
|
+
var content3 = "use-styles_content__kbreq13";
|
|
3144
3179
|
var leading = "use-styles_leading__kbreq12";
|
|
3145
3180
|
var root23 = "use-styles_root__kbreq10";
|
|
3146
|
-
var
|
|
3181
|
+
var selected3 = "use-styles_selected__kbreq11";
|
|
3147
3182
|
var trailing = "use-styles_trailing__kbreq14";
|
|
3148
3183
|
|
|
3149
3184
|
// src/components/list-item/use-styles.ts
|
|
3150
3185
|
function useStyles31({
|
|
3151
|
-
selected:
|
|
3186
|
+
selected: selected4,
|
|
3152
3187
|
className
|
|
3153
3188
|
}) {
|
|
3154
3189
|
const { themeClass } = useTheme();
|
|
3155
3190
|
const root24 = useMemo35(
|
|
3156
|
-
() => [themeClass, root23,
|
|
3157
|
-
[themeClass,
|
|
3191
|
+
() => [themeClass, root23, selected4 && selected3, className].filter(Boolean).join(" "),
|
|
3192
|
+
[themeClass, selected4, className]
|
|
3158
3193
|
);
|
|
3159
|
-
return { root: root24, leading, content:
|
|
3194
|
+
return { root: root24, leading, content: content3, trailing };
|
|
3160
3195
|
}
|
|
3161
3196
|
|
|
3162
3197
|
// src/components/list-item/index.tsx
|
|
3163
3198
|
import { jsx as jsx46, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3164
|
-
var ListItem = forwardRef33(function ListItem2({ leading: leading2, trailing: trailing2, selected:
|
|
3165
|
-
const styles = useStyles31({ selected:
|
|
3199
|
+
var ListItem = forwardRef33(function ListItem2({ leading: leading2, trailing: trailing2, selected: selected4, className, testId, children, ...rest }, ref) {
|
|
3200
|
+
const styles = useStyles31({ selected: selected4, className });
|
|
3166
3201
|
const { testId: dataTestId, slot } = useTestId("list", testId);
|
|
3167
3202
|
return /* @__PURE__ */ jsxs30(
|
|
3168
3203
|
"div",
|
|
@@ -3170,7 +3205,7 @@ var ListItem = forwardRef33(function ListItem2({ leading: leading2, trailing: tr
|
|
|
3170
3205
|
ref,
|
|
3171
3206
|
className: styles.root,
|
|
3172
3207
|
"data-testid": dataTestId,
|
|
3173
|
-
"data-state": states({ selected:
|
|
3208
|
+
"data-state": states({ selected: selected4 }),
|
|
3174
3209
|
...rest,
|
|
3175
3210
|
children: [
|
|
3176
3211
|
leading2 != null && /* @__PURE__ */ jsx46("span", { className: styles.leading, "data-testid": slot("leading"), children: leading2 }),
|