@octavius2929-personal/design-system 0.22.1 → 0.23.1
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 +51 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -12
- package/dist/index.d.ts +17 -12
- package/dist/index.js +51 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -458,7 +458,16 @@ var tintaSchema = {
|
|
|
458
458
|
var schemas = { tinta: tintaSchema };
|
|
459
459
|
var schemaNames2 = Object.keys(schemas);
|
|
460
460
|
var colorTokenNames = Object.keys(schemas.tinta.light.color);
|
|
461
|
+
function isSchemaName(x) {
|
|
462
|
+
return typeof x === "string" && Object.hasOwn(schemas, x);
|
|
463
|
+
}
|
|
461
464
|
var modeNames2 = ["light", "dark", "sepia", "contrast"];
|
|
465
|
+
function isMode(x) {
|
|
466
|
+
return typeof x === "string" && modeNames2.includes(x);
|
|
467
|
+
}
|
|
468
|
+
function isModePreference(x) {
|
|
469
|
+
return x === "system" || isMode(x);
|
|
470
|
+
}
|
|
462
471
|
var SYSTEM_MODE_PRECEDENCE = [
|
|
463
472
|
{ query: "(prefers-contrast: more)", mode: "contrast" },
|
|
464
473
|
{ query: "(prefers-color-scheme: dark)", mode: "dark" }
|
|
@@ -466,14 +475,36 @@ var SYSTEM_MODE_PRECEDENCE = [
|
|
|
466
475
|
function resolveMode(preference, systemMode) {
|
|
467
476
|
return preference === "system" ? systemMode : preference;
|
|
468
477
|
}
|
|
478
|
+
function sanitizePersisted(raw) {
|
|
479
|
+
if (!raw || typeof raw !== "object") return {};
|
|
480
|
+
const clean = {};
|
|
481
|
+
if (isSchemaName(raw.schema)) clean.schema = raw.schema;
|
|
482
|
+
if (isModePreference(raw.preference)) clean.preference = raw.preference;
|
|
483
|
+
return clean;
|
|
484
|
+
}
|
|
469
485
|
function useThemeStore(options, storage, system) {
|
|
470
486
|
const { defaultSchema = "tinta", defaultMode = "light" } = options;
|
|
471
|
-
const [persisted] = (0, import_react6.useState)(() => storage.read());
|
|
487
|
+
const [persisted] = (0, import_react6.useState)(() => sanitizePersisted(storage.read()));
|
|
472
488
|
const [schema, setSchema] = (0, import_react6.useState)(persisted?.schema ?? defaultSchema);
|
|
473
489
|
const [preference, setPreference] = (0, import_react6.useState)(
|
|
474
490
|
persisted?.preference ?? defaultMode
|
|
475
491
|
);
|
|
476
492
|
const [systemMode, setSystemMode] = (0, import_react6.useState)(() => system.get());
|
|
493
|
+
const [hydrated, setHydrated] = (0, import_react6.useState)(() => !storage.hydrate);
|
|
494
|
+
(0, import_react6.useEffect)(() => {
|
|
495
|
+
if (!storage.hydrate) return;
|
|
496
|
+
let active2 = true;
|
|
497
|
+
void storage.hydrate().then((raw) => {
|
|
498
|
+
if (!active2) return;
|
|
499
|
+
const clean = sanitizePersisted(raw);
|
|
500
|
+
if (clean.schema) setSchema(clean.schema);
|
|
501
|
+
if (clean.preference) setPreference(clean.preference);
|
|
502
|
+
setHydrated(true);
|
|
503
|
+
});
|
|
504
|
+
return () => {
|
|
505
|
+
active2 = false;
|
|
506
|
+
};
|
|
507
|
+
}, [storage]);
|
|
477
508
|
(0, import_react6.useEffect)(() => {
|
|
478
509
|
if (preference !== "system") return;
|
|
479
510
|
const update = () => setSystemMode(system.get());
|
|
@@ -482,14 +513,17 @@ function useThemeStore(options, storage, system) {
|
|
|
482
513
|
}, [preference, system]);
|
|
483
514
|
const mode = resolveMode(preference, systemMode);
|
|
484
515
|
(0, import_react6.useEffect)(() => {
|
|
516
|
+
if (!hydrated) return;
|
|
485
517
|
storage.write({ schema, preference });
|
|
486
|
-
}, [schema, preference, storage]);
|
|
518
|
+
}, [schema, preference, storage, hydrated]);
|
|
487
519
|
return (0, import_react6.useMemo)(
|
|
488
520
|
() => ({
|
|
489
521
|
schema,
|
|
490
522
|
mode,
|
|
491
523
|
preference,
|
|
492
|
-
|
|
524
|
+
// Guard defensivo: un schema/modo inesperado (default inválido del caller) cae a
|
|
525
|
+
// tinta/light en vez de indexar `undefined` y crashear.
|
|
526
|
+
colorTokens: schemas[schema]?.[mode]?.color ?? schemas.tinta.light.color,
|
|
493
527
|
setSchema,
|
|
494
528
|
setMode: setPreference,
|
|
495
529
|
toggleMode: () => setPreference(mode === "dark" ? "light" : "dark"),
|
|
@@ -1969,7 +2003,17 @@ function useStyles18({
|
|
|
1969
2003
|
|
|
1970
2004
|
// src/components/select/index.tsx
|
|
1971
2005
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1972
|
-
var Select = (0, import_react43.forwardRef)(function Select2({
|
|
2006
|
+
var Select = (0, import_react43.forwardRef)(function Select2({
|
|
2007
|
+
options,
|
|
2008
|
+
value,
|
|
2009
|
+
onChange,
|
|
2010
|
+
placeholder: placeholder2,
|
|
2011
|
+
label: label7,
|
|
2012
|
+
disabled: disabled3,
|
|
2013
|
+
"aria-label": ariaLabel,
|
|
2014
|
+
"aria-labelledby": ariaLabelledBy,
|
|
2015
|
+
...rest
|
|
2016
|
+
}, ref) {
|
|
1973
2017
|
const [open, setOpen] = (0, import_react43.useState)(false);
|
|
1974
2018
|
const [activeIndex, setActiveIndex] = (0, import_react43.useState)(0);
|
|
1975
2019
|
const rootRef = (0, import_react43.useRef)(null);
|
|
@@ -1981,6 +2025,7 @@ var Select = (0, import_react43.forwardRef)(function Select2({ options, value, o
|
|
|
1981
2025
|
const baseId = (0, import_react43.useId)();
|
|
1982
2026
|
const labelId = `${baseId}-label`;
|
|
1983
2027
|
const optionId = (index) => `${baseId}-option-${index}`;
|
|
2028
|
+
const triggerLabelledBy = [label7 ? labelId : null, ariaLabelledBy].filter(Boolean).join(" ") || void 0;
|
|
1984
2029
|
const {
|
|
1985
2030
|
root: root24,
|
|
1986
2031
|
label: labelClass,
|
|
@@ -2060,7 +2105,8 @@ var Select = (0, import_react43.forwardRef)(function Select2({ options, value, o
|
|
|
2060
2105
|
disabled: disabled3,
|
|
2061
2106
|
"aria-haspopup": "listbox",
|
|
2062
2107
|
"aria-expanded": open,
|
|
2063
|
-
"aria-
|
|
2108
|
+
"aria-label": ariaLabel,
|
|
2109
|
+
"aria-labelledby": triggerLabelledBy,
|
|
2064
2110
|
"aria-activedescendant": open ? optionId(activeIndex) : void 0,
|
|
2065
2111
|
onClick: () => {
|
|
2066
2112
|
if (disabled3) return;
|