@beweco/aurora-ui 1.0.0-beta.113 → 1.0.0-beta.114

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.js CHANGED
@@ -14210,6 +14210,21 @@ function removeLindaTones(style) {
14210
14210
  }
14211
14211
  }
14212
14212
 
14213
+ /**
14214
+ * Deja en el `<html>` la clase del pack `theme` y ninguna otra de {@link ALL_THEMES}.
14215
+ *
14216
+ * El DOM se escribe SÍNCRONAMENTE y no se delega el `add` a un efecto de React a propósito:
14217
+ * cuando una app reaplica el pack que ya estaba (tema de sesión + brand-config asíncrono con
14218
+ * el mismo valor), el `setState` recibe un valor idéntico, React hace bail-out y el efecto no
14219
+ * vuelve a correr. Con el `remove` aquí y el `add` allí, ese caso dejaba el `<html>` sin clase
14220
+ * de tema y `--color-primary` caía al azul base del `@theme static`. Quitar y añadir juntas
14221
+ * hace la función idempotente por construcción.
14222
+ */
14223
+ function applyThemeClass(root, theme) {
14224
+ root.classList.remove(...ALL_THEMES);
14225
+ root.classList.add(theme);
14226
+ }
14227
+
14213
14228
  /**
14214
14229
  * Clave de `localStorage` donde HeroUI v2 persistía el tema. Se conserva LITERAL: hay
14215
14230
  * usuarios con el valor ya guardado y `force-light-only-theme.ts` la lee para normalizarlo.
@@ -14256,14 +14271,17 @@ const useThemeManager = () => {
14256
14271
  forceLightOnlyThemeBeforeReact();
14257
14272
  }, []);
14258
14273
  const setTheme = $8WNJc$react.useCallback((theme) => {
14259
- const html = document.documentElement;
14260
- html.classList.remove(...ALL_THEMES);
14274
+ /*
14275
+ * La clase queda puesta YA, sin esperar al efecto de abajo: si `theme` es igual al
14276
+ * que ya había, React hace bail-out, el efecto no corre y el `<html>` se quedaría
14277
+ * sin clase de tema (ver `apply-theme-class.ts`).
14278
+ */
14279
+ applyThemeClass(document.documentElement, theme);
14261
14280
  setRawTheme(theme);
14262
14281
  }, [setRawTheme]);
14282
+ /** Cubre el montaje inicial y cualquier cambio de `rawTheme` ajeno a `setTheme`. */
14263
14283
  $8WNJc$react.useEffect(() => {
14264
- const html = document.documentElement;
14265
- html.classList.remove(...ALL_THEMES);
14266
- html.classList.add(rawTheme);
14284
+ applyThemeClass(document.documentElement, rawTheme);
14267
14285
  }, [rawTheme]);
14268
14286
  const { mode, color } = $8WNJc$react.useMemo(() => {
14269
14287
  const parts = rawTheme.split("-");
package/dist/index.esm.js CHANGED
@@ -14210,6 +14210,21 @@ function removeLindaTones(style) {
14210
14210
  }
14211
14211
  }
14212
14212
 
14213
+ /**
14214
+ * Deja en el `<html>` la clase del pack `theme` y ninguna otra de {@link ALL_THEMES}.
14215
+ *
14216
+ * El DOM se escribe SÍNCRONAMENTE y no se delega el `add` a un efecto de React a propósito:
14217
+ * cuando una app reaplica el pack que ya estaba (tema de sesión + brand-config asíncrono con
14218
+ * el mismo valor), el `setState` recibe un valor idéntico, React hace bail-out y el efecto no
14219
+ * vuelve a correr. Con el `remove` aquí y el `add` allí, ese caso dejaba el `<html>` sin clase
14220
+ * de tema y `--color-primary` caía al azul base del `@theme static`. Quitar y añadir juntas
14221
+ * hace la función idempotente por construcción.
14222
+ */
14223
+ function applyThemeClass(root, theme) {
14224
+ root.classList.remove(...ALL_THEMES);
14225
+ root.classList.add(theme);
14226
+ }
14227
+
14213
14228
  /**
14214
14229
  * Clave de `localStorage` donde HeroUI v2 persistía el tema. Se conserva LITERAL: hay
14215
14230
  * usuarios con el valor ya guardado y `force-light-only-theme.ts` la lee para normalizarlo.
@@ -14256,14 +14271,17 @@ const useThemeManager = () => {
14256
14271
  forceLightOnlyThemeBeforeReact();
14257
14272
  }, []);
14258
14273
  const setTheme = useCallback((theme) => {
14259
- const html = document.documentElement;
14260
- html.classList.remove(...ALL_THEMES);
14274
+ /*
14275
+ * La clase queda puesta YA, sin esperar al efecto de abajo: si `theme` es igual al
14276
+ * que ya había, React hace bail-out, el efecto no corre y el `<html>` se quedaría
14277
+ * sin clase de tema (ver `apply-theme-class.ts`).
14278
+ */
14279
+ applyThemeClass(document.documentElement, theme);
14261
14280
  setRawTheme(theme);
14262
14281
  }, [setRawTheme]);
14282
+ /** Cubre el montaje inicial y cualquier cambio de `rawTheme` ajeno a `setTheme`. */
14263
14283
  useEffect(() => {
14264
- const html = document.documentElement;
14265
- html.classList.remove(...ALL_THEMES);
14266
- html.classList.add(rawTheme);
14284
+ applyThemeClass(document.documentElement, rawTheme);
14267
14285
  }, [rawTheme]);
14268
14286
  const { mode, color } = useMemo(() => {
14269
14287
  const parts = rawTheme.split("-");
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Deja en el `<html>` la clase del pack `theme` y ninguna otra de {@link ALL_THEMES}.
3
+ *
4
+ * El DOM se escribe SÍNCRONAMENTE y no se delega el `add` a un efecto de React a propósito:
5
+ * cuando una app reaplica el pack que ya estaba (tema de sesión + brand-config asíncrono con
6
+ * el mismo valor), el `setState` recibe un valor idéntico, React hace bail-out y el efecto no
7
+ * vuelve a correr. Con el `remove` aquí y el `add` allí, ese caso dejaba el `<html>` sin clase
8
+ * de tema y `--color-primary` caía al azul base del `@theme static`. Quitar y añadir juntas
9
+ * hace la función idempotente por construcción.
10
+ */
11
+ export declare function applyThemeClass(root: HTMLElement, theme: string): void;
12
+ //# sourceMappingURL=apply-theme-class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-theme-class.d.ts","sourceRoot":"","sources":["../../../../src/providers/theme/apply-theme-class.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/providers/theme/useThemeManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,UAAU,EACV,SAAS,EACT,MAAM,yCAAyC,CAAC;AAiDjD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;uBAkFhB,SAAS;yBAUR,UAAU,GAAG,MAAM;CAiC/B,CAAC"}
1
+ {"version":3,"file":"useThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/providers/theme/useThemeManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,UAAU,EACV,SAAS,EACT,MAAM,yCAAyC,CAAC;AAiDjD;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;uBAqFhB,SAAS;yBAUR,UAAU,GAAG,MAAM;CAiC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beweco/aurora-ui",
3
- "version": "1.0.0-beta.113",
3
+ "version": "1.0.0-beta.114",
4
4
  "description": "Bewe Aurora UI Component Library",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",