@studiolxd/brand 49.24.1 → 49.26.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/dist/_shared/tokens.js +23 -0
  3. package/dist/_types/atoms/Button/Button.d.ts +14 -0
  4. package/dist/_types/atoms/FileUpload/FileUpload.d.ts +22 -0
  5. package/dist/_types/molecules/LoadingRegion/LoadingRegion.d.ts +53 -0
  6. package/dist/_types/molecules/LoadingState/LoadingState.d.ts +50 -0
  7. package/dist/brand.css +41 -1
  8. package/dist/button.css +1 -1
  9. package/dist/button.js +57 -45
  10. package/dist/file-upload.css +1 -1
  11. package/dist/file-upload.js +129 -105
  12. package/dist/loading-region.css +1 -0
  13. package/dist/loading-region.js +61 -0
  14. package/dist/loading-state.css +1 -0
  15. package/dist/loading-state.js +52 -0
  16. package/dist/toaster.css +1 -1
  17. package/dist/tokens.css +45 -1
  18. package/package.json +11 -1
  19. package/src/tokens/components/button.css +2 -0
  20. package/src/tokens/index.css +2 -0
  21. package/src/tokens/molecules/loading-region.css +16 -0
  22. package/src/tokens/molecules/loading-region.ts +4 -0
  23. package/src/tokens/molecules/loading-state.css +17 -0
  24. package/src/tokens/molecules/loading-state.ts +4 -0
  25. package/src/tokens/scss/_index.legacy.scss +2 -0
  26. package/src/tokens/scss/_index.scss +2 -0
  27. package/src/tokens/scss/components/_button.scss +2 -0
  28. package/src/tokens/scss/molecules/_loading-region.scss +13 -0
  29. package/src/tokens/scss/molecules/_loading-state.scss +14 -0
  30. package/src/tokens/surface-dark-derived.css +2 -0
  31. package/src/tokens/surface-invert.css +2 -0
  32. package/src/tokens/surface-light.css +2 -0
  33. package/src/tokens/surface-public.css +1 -0
  34. package/src/tokens/tokens.json +23 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiolxd/brand",
3
- "version": "49.24.1",
3
+ "version": "49.26.0",
4
4
  "description": "El sistema de diseño de Studio LXD: componentes React, tokens y documentación de la suite SLXD.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -283,6 +283,16 @@
283
283
  "import": "./dist/empty-state.js",
284
284
  "default": "./dist/empty-state.js"
285
285
  },
286
+ "./loading-state": {
287
+ "types": "./dist/_types/molecules/LoadingState/LoadingState.d.ts",
288
+ "import": "./dist/loading-state.js",
289
+ "default": "./dist/loading-state.js"
290
+ },
291
+ "./loading-region": {
292
+ "types": "./dist/_types/molecules/LoadingRegion/LoadingRegion.d.ts",
293
+ "import": "./dist/loading-region.js",
294
+ "default": "./dist/loading-region.js"
295
+ },
286
296
  "./fieldset": {
287
297
  "types": "./dist/_types/atoms/Fieldset/Fieldset.d.ts",
288
298
  "import": "./dist/fieldset.js",
@@ -10,6 +10,7 @@
10
10
  --button-white-space: nowrap; /** White space */
11
11
  --button-text-decoration: none; /** Text decoration */
12
12
  --button-disabled-cursor: not-allowed; /** Cursor when disabled */
13
+ --button-loading-spinner-size: 1em; /** Con `loading`: lado del girador. `1em` es el cuerpo de cada talla (sm 14, md 16, lg 20), como el icono que acompaña al texto */
13
14
  --button-focus-ring-style: solid; /** Focus ring border style */
14
15
  --button-block-width: 100%; /** Width when block modifier is applied */
15
16
  --button-outline-bg: rgba(0, 0, 0, 0); /** Background */
@@ -34,6 +35,7 @@
34
35
  --button-height: var(--size-component-md); /** Altura fija del botón (talla md): el contenido se centra, no se hace por padding */
35
36
  --button-sm-height: var(--size-component-sm); /** Altura — sm */
36
37
  --button-lg-height: var(--size-component-lg); /** Altura — lg */
38
+ --button-loading-gap: var(--spacing-2); /** Con `loading`: aire entre el girador y el texto. El girador va delante del texto y el texto no se pierde */
37
39
  --button-padding-inline: var(--spacing-6); /** Inline (horizontal) padding */
38
40
  --button-focus-ring-offset: var(--spacing-1); /** Separación entre el botón y el anillo de foco (4px): el hueco es el fondo de la superficie, y eso lo hace leerse como foco y no como un borde más */
39
41
  --button-sm-padding-inline: var(--spacing-5); /** Inline padding — sm */
@@ -121,6 +121,8 @@
121
121
  @import "./components/progress-bar.css";
122
122
  @import "./components/spinner.css";
123
123
  @import "./components/skeleton.css";
124
+ @import "./molecules/loading-state.css";
125
+ @import "./molecules/loading-region.css";
124
126
  @import "./molecules/alert.css";
125
127
  @import "./molecules/banner.css";
126
128
  @import "./molecules/toast.css";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --loading-region-text-last-line-width: 60%; /** SkeletonText: ancho de la última línea, más corta, para que se lea como párrafo y no como bloque */
7
+ --loading-region-grid-item-height: 6rem; /** SkeletonGrid: alto de una celda (una miniatura, una tarjeta corta) */
8
+ --loading-region-gap: var(--spacing-5); /** Aire entre los bloques que envuelve la región (un título, un párrafo, una tabla) */
9
+ --loading-region-text-gap: var(--spacing-2); /** SkeletonText: aire entre líneas */
10
+ --loading-region-list-gap: var(--spacing-2); /** SkeletonList: aire entre filas */
11
+ --loading-region-list-row-height: var(--size-component-md); /** SkeletonList: alto de una fila — el de un control de una línea */
12
+ --loading-region-table-gap: var(--spacing-2); /** SkeletonTable: aire entre la cabecera y las filas */
13
+ --loading-region-table-header-height: var(--size-component-md); /** SkeletonTable: alto de la cabecera */
14
+ --loading-region-table-row-height: var(--size-component-sm); /** SkeletonTable: alto de una fila */
15
+ --loading-region-grid-gap: var(--spacing-4); /** SkeletonGrid: aire entre celdas */
16
+ }
@@ -0,0 +1,4 @@
1
+ import loadingRegion from '../../../tokens/component/loading-region.json';
2
+ import { flattenTokens } from '../utils';
3
+
4
+ export const loadingRegionTokens = flattenTokens(loadingRegion as never);
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --loading-state-min-block-size: 16rem; /** Alto que reserva la espera de una página o una zona: la caja no colapsa a la altura del girador mientras el contenido no llega */
7
+ --loading-state-sm-min-block-size: 8rem; /** Alto que reserva la espera en talla sm — el cuerpo de un diálogo, una hoja o un popover */
8
+ --loading-state-sm-padding-block: var(--spacing-5); /** Padding vertical en talla sm: dentro de un diálogo el aire ya lo pone el diálogo */
9
+ --loading-state-gap: var(--empty-state-gap); /** Aire entre el girador y la acción — el mismo que EmptyState, porque ocupa su sitio */
10
+ --loading-state-padding-block: var(--empty-state-padding-block); /** Padding vertical — el de EmptyState */
11
+ --loading-state-padding-inline: var(--empty-state-padding-inline); /** Padding horizontal — el de EmptyState */
12
+ --loading-state-label-font-family: var(--empty-state-description-font-family); /** Familia del texto visible de la espera (labelVisible) — la de la descripción de EmptyState */
13
+ --loading-state-sm-label-font-size: var(--empty-state-description-font-size-sm); /** Tamaño del texto visible en talla sm — el de la descripción de EmptyState sm */
14
+ --loading-state-spinner-color: var(--empty-state-icon-color); /** Color del girador — el del icono de EmptyState (su par oscuro llega por el fichero derivado) */
15
+ --loading-state-label-font-size: var(--empty-state-description-font-size); /** Tamaño del texto visible de la espera — el de la descripción de EmptyState (cuerpo de la superficie) */
16
+ --loading-state-label-color: var(--empty-state-description-color); /** Color del texto visible de la espera — el de la descripción de EmptyState (texto atenuado, nunca grey-dark) */
17
+ }
@@ -0,0 +1,4 @@
1
+ import loadingState from '../../../tokens/component/loading-state.json';
2
+ import { flattenTokens } from '../utils';
3
+
4
+ export const loadingStateTokens = flattenTokens(loadingState as never);
@@ -119,6 +119,8 @@
119
119
  @import 'components/progress-bar';
120
120
  @import 'components/spinner';
121
121
  @import 'components/skeleton';
122
+ @import 'molecules/loading-state';
123
+ @import 'molecules/loading-region';
122
124
  @import 'molecules/alert';
123
125
  @import 'molecules/banner';
124
126
  @import 'molecules/toast';
@@ -119,6 +119,8 @@
119
119
  @forward 'components/progress-bar';
120
120
  @forward 'components/spinner';
121
121
  @forward 'components/skeleton';
122
+ @forward 'molecules/loading-state';
123
+ @forward 'molecules/loading-region';
122
124
  @forward 'molecules/alert';
123
125
  @forward 'molecules/banner';
124
126
  @forward 'molecules/toast';
@@ -22,6 +22,8 @@ $lxd-button-disabled-border: #4a4a4a; // Border color when disabled — light su
22
22
  $lxd-button-height: 2.5rem; // Altura fija del botón (talla md): el contenido se centra, no se hace por padding
23
23
  $lxd-button-sm-height: 2rem; // Altura — sm
24
24
  $lxd-button-lg-height: 3rem; // Altura — lg
25
+ $lxd-button-loading-gap: 0.5rem; // Con `loading`: aire entre el girador y el texto. El girador va delante del texto y el texto no se pierde
26
+ $lxd-button-loading-spinner-size: 1em; // Con `loading`: lado del girador. `1em` es el cuerpo de cada talla (sm 14, md 16, lg 20), como el icono que acompaña al texto
25
27
  $lxd-button-padding-inline: 2rem; // Inline (horizontal) padding
26
28
  $lxd-button-focus-ring-width: 2px; // Focus ring width
27
29
  $lxd-button-focus-ring-style: solid; // Focus ring border style
@@ -0,0 +1,13 @@
1
+
2
+ // Do not edit directly, this file was auto-generated.
3
+
4
+ $lxd-loading-region-gap: 1.5rem; // Aire entre los bloques que envuelve la región (un título, un párrafo, una tabla)
5
+ $lxd-loading-region-text-gap: 0.5rem; // SkeletonText: aire entre líneas
6
+ $lxd-loading-region-text-last-line-width: 60%; // SkeletonText: ancho de la última línea, más corta, para que se lea como párrafo y no como bloque
7
+ $lxd-loading-region-list-gap: 0.5rem; // SkeletonList: aire entre filas
8
+ $lxd-loading-region-list-row-height: 2.5rem; // SkeletonList: alto de una fila — el de un control de una línea
9
+ $lxd-loading-region-table-gap: 0.5rem; // SkeletonTable: aire entre la cabecera y las filas
10
+ $lxd-loading-region-table-header-height: 2.5rem; // SkeletonTable: alto de la cabecera
11
+ $lxd-loading-region-table-row-height: 2rem; // SkeletonTable: alto de una fila
12
+ $lxd-loading-region-grid-gap: 1rem; // SkeletonGrid: aire entre celdas
13
+ $lxd-loading-region-grid-item-height: 6rem; // SkeletonGrid: alto de una celda (una miniatura, una tarjeta corta)
@@ -0,0 +1,14 @@
1
+
2
+ // Do not edit directly, this file was auto-generated.
3
+
4
+ $lxd-loading-state-min-block-size: 16rem; // Alto que reserva la espera de una página o una zona: la caja no colapsa a la altura del girador mientras el contenido no llega
5
+ $lxd-loading-state-sm-min-block-size: 8rem; // Alto que reserva la espera en talla sm — el cuerpo de un diálogo, una hoja o un popover
6
+ $lxd-loading-state-gap: 1rem; // Aire entre el girador y la acción — el mismo que EmptyState, porque ocupa su sitio
7
+ $lxd-loading-state-padding-block: 3rem; // Padding vertical — el de EmptyState
8
+ $lxd-loading-state-padding-inline: 1.5rem; // Padding horizontal — el de EmptyState
9
+ $lxd-loading-state-sm-padding-block: 1.5rem; // Padding vertical en talla sm: dentro de un diálogo el aire ya lo pone el diálogo
10
+ $lxd-loading-state-spinner-color: #6b6b6b; // Color del girador — el del icono de EmptyState (su par oscuro llega por el fichero derivado)
11
+ $lxd-loading-state-label-font-family: "Google Sans Flex", system-ui, sans-serif; // Familia del texto visible de la espera (labelVisible) — la de la descripción de EmptyState
12
+ $lxd-loading-state-label-font-size: 1rem; // Tamaño del texto visible de la espera — el de la descripción de EmptyState (cuerpo de la superficie)
13
+ $lxd-loading-state-sm-label-font-size: 0.875rem; // Tamaño del texto visible en talla sm — el de la descripción de EmptyState sm
14
+ $lxd-loading-state-label-color: #4a4a4a; // Color del texto visible de la espera — el de la descripción de EmptyState (texto atenuado, nunca grey-dark)
@@ -47,6 +47,8 @@ html.dark {
47
47
  --floating-dock-description-color: var(--modal-description-color);
48
48
  --floating-dock-close-color: var(--modal-close-color);
49
49
  --floating-dock-close-focus-ring-color: var(--modal-close-focus-ring-color);
50
+ --loading-state-spinner-color: var(--empty-state-icon-color);
51
+ --loading-state-label-color: var(--empty-state-description-color);
50
52
  --menu-bg: var(--floating-panel-bg);
51
53
  --menu-border-color: var(--floating-panel-border-color);
52
54
  --number-input-border-color: var(--input-border-color);
@@ -209,6 +209,8 @@ html.dark .surface-invert {
209
209
  --link-hover-underline-width: 0px;
210
210
  --link-focus-ring-color: var(--color-primary);
211
211
  --link-ink-color: var(--color-text-on-light);
212
+ --loading-state-spinner-color: var(--empty-state-icon-color);
213
+ --loading-state-label-color: var(--empty-state-description-color);
212
214
  --logo-color: var(--color-text-on-light);
213
215
  --logomark-color: var(--color-text-on-light);
214
216
  --menu-button-color: var(--color-text-on-light);
@@ -210,6 +210,8 @@ html.dark .surface-light {
210
210
  --link-hover-underline-width: 0px;
211
211
  --link-focus-ring-color: var(--color-primary);
212
212
  --link-ink-color: var(--color-text-on-light);
213
+ --loading-state-spinner-color: var(--empty-state-icon-color);
214
+ --loading-state-label-color: var(--empty-state-description-color);
213
215
  --logo-color: var(--color-text-on-light);
214
216
  --logomark-color: var(--color-text-on-light);
215
217
  --menu-button-color: var(--color-text-on-light);
@@ -168,6 +168,7 @@
168
168
  --form-helper-font-size: var(--text-paragraph-small-font-size);
169
169
  --form-success-font-size: var(--text-font-size);
170
170
  --input-phone-country-item-padding-block: var(--select-item-padding-block);
171
+ --loading-state-label-font-size: var(--empty-state-description-font-size);
171
172
  --message-bubble-font-size: var(--text-font-size);
172
173
  --modal-description-font-size: var(--text-font-size);
173
174
  --password-field-input-padding-inline-end: var(--password-field-toggle-size);
@@ -405,6 +405,8 @@
405
405
  "--button-height": "2.5rem",
406
406
  "--button-sm-height": "2rem",
407
407
  "--button-lg-height": "3rem",
408
+ "--button-loading-gap": "0.5rem",
409
+ "--button-loading-spinner-size": "1em",
408
410
  "--button-padding-inline": "2rem",
409
411
  "--button-focus-ring-width": "2px",
410
412
  "--button-focus-ring-style": "solid",
@@ -1101,6 +1103,27 @@
1101
1103
  "--link-accent-1-hover-color": "#baabff",
1102
1104
  "--link-accent-1-underline-width": "1px",
1103
1105
  "--link-accent-1-hover-underline-width": "0px",
1106
+ "--loading-region-gap": "1.5rem",
1107
+ "--loading-region-text-gap": "0.5rem",
1108
+ "--loading-region-text-last-line-width": "60%",
1109
+ "--loading-region-list-gap": "0.5rem",
1110
+ "--loading-region-list-row-height": "2.5rem",
1111
+ "--loading-region-table-gap": "0.5rem",
1112
+ "--loading-region-table-header-height": "2.5rem",
1113
+ "--loading-region-table-row-height": "2rem",
1114
+ "--loading-region-grid-gap": "1rem",
1115
+ "--loading-region-grid-item-height": "6rem",
1116
+ "--loading-state-min-block-size": "16rem",
1117
+ "--loading-state-sm-min-block-size": "8rem",
1118
+ "--loading-state-gap": "1rem",
1119
+ "--loading-state-padding-block": "3rem",
1120
+ "--loading-state-padding-inline": "1.5rem",
1121
+ "--loading-state-sm-padding-block": "1.5rem",
1122
+ "--loading-state-spinner-color": "#6b6b6b",
1123
+ "--loading-state-label-font-family": "\"Google Sans Flex\", system-ui, sans-serif",
1124
+ "--loading-state-label-font-size": "1rem",
1125
+ "--loading-state-sm-label-font-size": "0.875rem",
1126
+ "--loading-state-label-color": "#4a4a4a",
1104
1127
  "--logo-height-sm": "2rem",
1105
1128
  "--logo-height-md": "2.5rem",
1106
1129
  "--logo-height-lg": "3rem",