@telefonica/mistica 16.57.0-beta.1 → 16.57.0-beta.2

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 (190) hide show
  1. package/css/mistica.css +1 -1
  2. package/dist/accordion.css-mistica.js +6 -6
  3. package/dist/align.css-mistica.js +1 -1
  4. package/dist/autocomplete.css-mistica.js +1 -1
  5. package/dist/avatar.css-mistica.js +1 -1
  6. package/dist/badge.css-mistica.js +1 -1
  7. package/dist/box.css-mistica.js +13 -13
  8. package/dist/boxed.css-mistica.js +24 -24
  9. package/dist/button-group.css-mistica.js +1 -1
  10. package/dist/button-layout.css-mistica.js +14 -14
  11. package/dist/button.css-mistica.js +30 -30
  12. package/dist/callout.css-mistica.js +11 -11
  13. package/dist/card-internal.css-mistica.js +15 -15
  14. package/dist/carousel.css-mistica.js +8 -8
  15. package/dist/checkbox.css-mistica.js +11 -11
  16. package/dist/chip.css-mistica.js +15 -15
  17. package/dist/circle.css-mistica.js +1 -1
  18. package/dist/community/advanced-data-card.css-mistica.js +6 -6
  19. package/dist/community/blocks.css-mistica.js +1 -1
  20. package/dist/community/example-component.css-mistica.js +1 -1
  21. package/dist/counter.css-mistica.js +1 -1
  22. package/dist/cover-hero.css-mistica.js +2 -2
  23. package/dist/credit-card-number-field.css-mistica.js +3 -3
  24. package/dist/date-field.css-mistica.js +1 -1
  25. package/dist/date-time-picker.css-mistica.js +1 -1
  26. package/dist/dialog.css-mistica.js +4 -4
  27. package/dist/divider.css-mistica.js +5 -5
  28. package/dist/double-field.css-mistica.js +2 -2
  29. package/dist/drawer.css-mistica.js +1 -1
  30. package/dist/empty-state-card.css-mistica.js +1 -1
  31. package/dist/empty-state.css-mistica.js +5 -5
  32. package/dist/fade-in.css-mistica.js +1 -1
  33. package/dist/feedback.css-mistica.js +1 -1
  34. package/dist/file-upload.css-mistica.js +7 -7
  35. package/dist/fixed-footer-layout.css-mistica.js +2 -2
  36. package/dist/form.css-mistica.js +1 -1
  37. package/dist/grid-layout.css-mistica.js +3 -3
  38. package/dist/grid.css-mistica.js +120 -120
  39. package/dist/header.css-mistica.js +1 -1
  40. package/dist/hero.css-mistica.js +2 -2
  41. package/dist/horizontal-scroll.css-mistica.js +1 -1
  42. package/dist/icon-button.css-mistica.js +53 -53
  43. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  44. package/dist/icons/icon-error.css-mistica.js +1 -1
  45. package/dist/image.css-mistica.js +2 -2
  46. package/dist/inline.css-mistica.js +9 -9
  47. package/dist/list.css-mistica.js +1 -1
  48. package/dist/loading-bar.css-mistica.js +1 -1
  49. package/dist/loading-screen.css-mistica.js +4 -4
  50. package/dist/logo.css-mistica.js +5 -5
  51. package/dist/menu.css-mistica.js +13 -13
  52. package/dist/mosaic.css-mistica.js +1 -1
  53. package/dist/navigation-bar.css-mistica.js +18 -18
  54. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  55. package/dist/package-version.js +1 -1
  56. package/dist/pin-field.css-mistica.js +1 -1
  57. package/dist/popover.css-mistica.js +1 -1
  58. package/dist/progress-bar.css-mistica.js +6 -6
  59. package/dist/radio-button.css-mistica.js +19 -19
  60. package/dist/rating.css-mistica.js +2 -2
  61. package/dist/responsive-layout.css-mistica.js +6 -6
  62. package/dist/screen-reader-only.css-mistica.js +1 -1
  63. package/dist/select.css-mistica.js +15 -15
  64. package/dist/sheet-action-row.css-mistica.js +1 -1
  65. package/dist/sheet-common.css-mistica.js +1 -1
  66. package/dist/sheet-info.css-mistica.js +1 -1
  67. package/dist/skeletons.css-mistica.js +6 -6
  68. package/dist/skins/skin-contract.css-mistica.js +684 -684
  69. package/dist/skip-link.css-mistica.js +1 -1
  70. package/dist/slider.css-mistica.js +18 -18
  71. package/dist/snackbar.css-mistica.js +4 -4
  72. package/dist/spinner.css-mistica.js +1 -1
  73. package/dist/square.css-mistica.js +1 -1
  74. package/dist/stack.css-mistica.js +5 -5
  75. package/dist/stacking-group.css-mistica.js +1 -1
  76. package/dist/stepper.css-mistica.js +2 -2
  77. package/dist/switch-component.css-mistica.js +35 -35
  78. package/dist/table.css-mistica.js +9 -9
  79. package/dist/tabs.css-mistica.js +17 -17
  80. package/dist/tag.css-mistica.js +1 -1
  81. package/dist/text-field-base.css-mistica.js +15 -15
  82. package/dist/text-field-components.css-mistica.js +3 -3
  83. package/dist/text-link.css-mistica.js +6 -6
  84. package/dist/text.css-mistica.js +6 -6
  85. package/dist/theme-context.css-mistica.js +1 -1
  86. package/dist/timeline.css-mistica.js +9 -9
  87. package/dist/timer.css-mistica.js +6 -6
  88. package/dist/tooltip.css-mistica.js +1 -1
  89. package/dist/touchable.css-mistica.js +1 -1
  90. package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
  91. package/dist/video.css-mistica.js +1 -1
  92. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  93. package/dist-es/accordion.css-mistica.js +6 -6
  94. package/dist-es/align.css-mistica.js +1 -1
  95. package/dist-es/autocomplete.css-mistica.js +1 -1
  96. package/dist-es/avatar.css-mistica.js +1 -1
  97. package/dist-es/badge.css-mistica.js +1 -1
  98. package/dist-es/box.css-mistica.js +13 -13
  99. package/dist-es/boxed.css-mistica.js +23 -23
  100. package/dist-es/button-group.css-mistica.js +1 -1
  101. package/dist-es/button-layout.css-mistica.js +14 -14
  102. package/dist-es/button.css-mistica.js +30 -30
  103. package/dist-es/callout.css-mistica.js +11 -11
  104. package/dist-es/card-internal.css-mistica.js +15 -15
  105. package/dist-es/carousel.css-mistica.js +8 -8
  106. package/dist-es/checkbox.css-mistica.js +11 -11
  107. package/dist-es/chip.css-mistica.js +15 -15
  108. package/dist-es/circle.css-mistica.js +1 -1
  109. package/dist-es/community/advanced-data-card.css-mistica.js +6 -6
  110. package/dist-es/community/blocks.css-mistica.js +1 -1
  111. package/dist-es/community/example-component.css-mistica.js +1 -1
  112. package/dist-es/counter.css-mistica.js +1 -1
  113. package/dist-es/cover-hero.css-mistica.js +2 -2
  114. package/dist-es/credit-card-number-field.css-mistica.js +3 -3
  115. package/dist-es/date-field.css-mistica.js +1 -1
  116. package/dist-es/date-time-picker.css-mistica.js +1 -1
  117. package/dist-es/dialog.css-mistica.js +4 -4
  118. package/dist-es/divider.css-mistica.js +5 -5
  119. package/dist-es/double-field.css-mistica.js +2 -2
  120. package/dist-es/drawer.css-mistica.js +1 -1
  121. package/dist-es/empty-state-card.css-mistica.js +1 -1
  122. package/dist-es/empty-state.css-mistica.js +5 -5
  123. package/dist-es/fade-in.css-mistica.js +1 -1
  124. package/dist-es/feedback.css-mistica.js +1 -1
  125. package/dist-es/file-upload.css-mistica.js +7 -7
  126. package/dist-es/fixed-footer-layout.css-mistica.js +2 -2
  127. package/dist-es/form.css-mistica.js +1 -1
  128. package/dist-es/grid-layout.css-mistica.js +3 -3
  129. package/dist-es/grid.css-mistica.js +120 -120
  130. package/dist-es/header.css-mistica.js +1 -1
  131. package/dist-es/hero.css-mistica.js +2 -2
  132. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  133. package/dist-es/icon-button.css-mistica.js +53 -53
  134. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  135. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  136. package/dist-es/image.css-mistica.js +2 -2
  137. package/dist-es/inline.css-mistica.js +9 -9
  138. package/dist-es/list.css-mistica.js +1 -1
  139. package/dist-es/loading-bar.css-mistica.js +1 -1
  140. package/dist-es/loading-screen.css-mistica.js +4 -4
  141. package/dist-es/logo.css-mistica.js +5 -5
  142. package/dist-es/menu.css-mistica.js +13 -13
  143. package/dist-es/mosaic.css-mistica.js +1 -1
  144. package/dist-es/navigation-bar.css-mistica.js +18 -18
  145. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  146. package/dist-es/package-version.js +1 -1
  147. package/dist-es/pin-field.css-mistica.js +1 -1
  148. package/dist-es/popover.css-mistica.js +1 -1
  149. package/dist-es/progress-bar.css-mistica.js +6 -6
  150. package/dist-es/radio-button.css-mistica.js +19 -19
  151. package/dist-es/rating.css-mistica.js +2 -2
  152. package/dist-es/responsive-layout.css-mistica.js +6 -6
  153. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  154. package/dist-es/select.css-mistica.js +15 -15
  155. package/dist-es/sheet-action-row.css-mistica.js +1 -1
  156. package/dist-es/sheet-common.css-mistica.js +1 -1
  157. package/dist-es/sheet-info.css-mistica.js +1 -1
  158. package/dist-es/skeletons.css-mistica.js +6 -6
  159. package/dist-es/skins/skin-contract.css-mistica.js +684 -684
  160. package/dist-es/skip-link.css-mistica.js +1 -1
  161. package/dist-es/slider.css-mistica.js +18 -18
  162. package/dist-es/snackbar.css-mistica.js +4 -4
  163. package/dist-es/spinner.css-mistica.js +1 -1
  164. package/dist-es/square.css-mistica.js +1 -1
  165. package/dist-es/stack.css-mistica.js +5 -5
  166. package/dist-es/stacking-group.css-mistica.js +1 -1
  167. package/dist-es/stepper.css-mistica.js +2 -2
  168. package/dist-es/style.css +1 -1
  169. package/dist-es/switch-component.css-mistica.js +35 -35
  170. package/dist-es/table.css-mistica.js +9 -9
  171. package/dist-es/tabs.css-mistica.js +17 -17
  172. package/dist-es/tag.css-mistica.js +1 -1
  173. package/dist-es/text-field-base.css-mistica.js +15 -15
  174. package/dist-es/text-field-components.css-mistica.js +3 -3
  175. package/dist-es/text-link.css-mistica.js +6 -6
  176. package/dist-es/text.css-mistica.js +6 -6
  177. package/dist-es/theme-context.css-mistica.js +1 -1
  178. package/dist-es/timeline.css-mistica.js +9 -9
  179. package/dist-es/timer.css-mistica.js +6 -6
  180. package/dist-es/tooltip.css-mistica.js +1 -1
  181. package/dist-es/touchable.css-mistica.js +1 -1
  182. package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
  183. package/dist-es/video.css-mistica.js +1 -1
  184. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  185. package/doc/design-tokens.md +19 -92
  186. package/doc/layout.md +10 -3
  187. package/doc/llms.md +17 -6
  188. package/doc/patterns.md +7 -3
  189. package/doc/theme-config.md +38 -0
  190. package/package.json +1 -1
package/doc/llms.md CHANGED
@@ -17,12 +17,17 @@ repository at `https://github.com/Telefonica/mistica-web/blob/master/doc/<filena
17
17
 
18
18
  ## Critical Rules
19
19
 
20
- 1. **NEVER hardcode colors.** Always use `skinVars.colors.*` design tokens from `@telefonica/mistica`.
20
+ 1. **NEVER hardcode colors in app/component UI code.** Always use `skinVars.colors.*` design tokens from
21
+ `@telefonica/mistica`. The exception is skin authoring: when creating or extending a `Skin`, you may use
22
+ built-in palette exports (for example `movistarNewPalette`) or your own custom palette/colors inside the
23
+ skin definition.
21
24
  2. **Try not to use raw `<div>` for layout.** Use Mistica layout components: `Box`, `Stack`, `Inline`,
22
25
  `Align`, `ResponsiveLayout`, `GridLayout`, `Grid`.
23
26
  3. **NEVER set font sizes manually.** Use text components: `Text1`-`Text10`, `Title1`-`Title4`.
24
27
  4. **NEVER set border radius manually.** Use `skinVars.borderRadii.*` or Mistica components that handle it
25
- automatically.
28
+ automatically. If you need to change the default visual styling of components (colors, border radius,
29
+ etc.) and there is no specific prop for it, create or extend a custom skin instead of adding ad hoc style
30
+ overrides.
26
31
  5. **Always wrap your app** with `<ThemeContextProvider>` and import `@telefonica/mistica/css/mistica.css`.
27
32
  6. **Always namespace React hooks**: `React.useState`, `React.useEffect`, `React.useRef`.
28
33
  7. **Add `'use client';`** directive to client components when using Next.js app router.
@@ -133,7 +138,10 @@ type ThemeConfig = {
133
138
  Available skins: `getMovistarNewSkin()`, `getVivoNewSkin()`, `getO2NewSkin()`, `getTelefonicaSkin()`,
134
139
  `getBlauSkin()`, `getTuSkin()`, and others via `getSkinByName()`. Legacy variants without the `New` suffix
135
140
  also exist (`getMovistarSkin()`, `getVivoSkin()`, `getO2Skin()`); prefer the `New` versions for new projects.
136
- You can also create a custom skin.
141
+ You can also create a custom skin. If you need to customize default component colors, radii, or other visual
142
+ tokens beyond the props exposed by a component, prefer extending a skin over overriding component styles.
143
+ Built-in palette exports such as `movistarNewPalette`, `o2NewPalette`, `vivoNewPalette`, etc. are available
144
+ for skin authoring, and custom skins may also define their own palette colors from scratch.
137
145
 
138
146
  Built-in Link integrations: `Next12`, `Next13`, `Next14`, `ReactRouter5`, `ReactRouter6`.
139
147
 
@@ -191,11 +199,11 @@ Vertical rhythm: containers 24px padding, sections 32px spacing, elements 16px s
191
199
  ### Buttons
192
200
 
193
201
  `ButtonPrimary`, `ButtonSecondary`, `ButtonDanger`, `ButtonLink`, `ButtonLinkDanger`, `ButtonGroup`,
194
- `ButtonLayout`, `IconButton`, `ToggleIconButton`
202
+ `ButtonLayout`, `IconButton`, `ToggleIconButton`, `TextLink`
195
203
 
196
204
  ### Text
197
205
 
198
- `Text1`-`Text10`, `Title1`-`Title4`, `TextLink`
206
+ `Text1`-`Text10`, `Title1`-`Title4`
199
207
 
200
208
  ### Cards
201
209
 
@@ -263,6 +271,9 @@ All tokens via `skinVars` from `@telefonica/mistica`:
263
271
 
264
272
  - **Colors**: `skinVars.colors.*` (286 tokens for backgrounds, text, borders, controls, status, tags)
265
273
  - **Raw colors**: `skinVars.rawColors.*` (same tokens as RGB values, for use with `applyAlpha`)
274
+ - **Palettes for skin authoring**: built-in palette exports such as `movistarNewPalette`, `o2NewPalette`,
275
+ `vivoNewPalette`, etc. Use these only when creating/extending a `Skin`, not for styling app components
276
+ directly.
266
277
  - **Border radii**: `skinVars.borderRadii.*` (container, button, input, popup, chip, sheet, avatar, tag, etc.)
267
278
  - **Text presets**: Handled by text components, not accessed directly
268
279
 
@@ -278,7 +289,7 @@ All tokens via `skinVars` from `@telefonica/mistica`:
278
289
  - [Layout](./layout.md): Core layout primitives (Box, Stack, Inline, Align, Grid/GridItem, NegativeBox,
279
290
  Divider, HorizontalScroll, Boxed, Overlay, StackingGroup) and page layouts (ResponsiveLayout, HeaderLayout,
280
291
  GridLayout, MasterDetailLayout, FixedFooterLayout, ButtonFixedFooterLayout, ButtonLayout, DoubleField),
281
- vertical rhythm
292
+ vertical rhythm, and `Inline` alignment/wrapping capabilities
282
293
  - [Forms](./forms.md): Form component, all form field types, DoubleField, useForm hook
283
294
  - [Analytics](./analytics.md): trackingEvent prop, logEvent setup, default tracking, GA4 support,
284
295
  TrackingConfig
package/doc/patterns.md CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  ## Critical rules
4
4
 
5
- 1. **NEVER hardcode colors.** Always use `skinVars.colors.*` from `@telefonica/mistica`.
5
+ 1. **NEVER hardcode colors in app/component UI code.** Always use `skinVars.colors.*` from
6
+ `@telefonica/mistica`. For skins and theme-level customization, see [theme-config.md](./theme-config.md).
6
7
  2. **NEVER use raw `<div>` for layout.** Use `Box`, `Stack`, `Inline`, `ResponsiveLayout`, `GridLayout`,
7
8
  `Grid`.
8
9
  3. **NEVER set font sizes manually.** Use text components (`Text1`-`Text10`, `Title1`-`Title4`).
9
10
  4. **NEVER set border radius manually.** Use `skinVars.borderRadii.*` or components that handle it (`Boxed`,
10
- cards, etc.).
11
+ cards, etc.). For theme-level visual customization without a dedicated component prop, use a custom skin.
11
12
  5. **Always wrap your app** with `ThemeContextProvider` and import `@telefonica/mistica/css/mistica.css`.
12
13
  6. **Always namespace React hooks**: `React.useState`, `React.useEffect`, `React.useRef`, etc.
13
14
  7. **Add `'use client';`** directive to client components when using Next.js app router.
@@ -123,7 +124,7 @@ import {skinVars, applyAlpha} from '@telefonica/mistica';
123
124
  const overlay = applyAlpha(skinVars.rawColors.backgroundBrand, 0.8);
124
125
  ```
125
126
 
126
- ### DON'T: Hardcode colors
127
+ ### DON'T: Hardcode colors in component code
127
128
 
128
129
  ```tsx
129
130
  // BAD - hardcoded colors
@@ -136,6 +137,9 @@ const overlay = applyAlpha(skinVars.rawColors.backgroundBrand, 0.8);
136
137
  <Boxed><Text2 regular>Content in container</Text2></Boxed>
137
138
  ```
138
139
 
140
+ If you need brand-specific defaults, put those colors in a custom skin and then consume them through
141
+ `skinVars.colors.*` instead of styling individual components with palette values.
142
+
139
143
  ## Responsive patterns
140
144
 
141
145
  ### Conditional rendering by screen size
@@ -95,6 +95,13 @@ If your app doesn't follow the branding of mistica builtin skins (Movistar, Vivo
95
95
  can still use mistica with your custom skin. Just import the `Skin` type and create a new skin config that
96
96
  implements the `Skin` interface (you need to define all the required color constants):
97
97
 
98
+ If you need to customize default component colors, border radii, or similar visual tokens and there is no
99
+ component prop for that, prefer a custom skin over ad hoc CSS/style overrides. You can:
100
+
101
+ - start from a built-in skin like `getMovistarNewSkin()` and override the tokens you need
102
+ - start from a built-in palette export like `movistarNewPalette`
103
+ - define your own palette/colors from scratch
104
+
98
105
  ```ts
99
106
  import type {Skin} from '@telefonica/mistica';
100
107
 
@@ -121,4 +128,35 @@ const skin: Skin = {
121
128
  </ThemeContextProvider>;
122
129
  ```
123
130
 
131
+ You can also extend an existing skin instead of defining everything from scratch:
132
+
133
+ ```ts
134
+ import {getMovistarNewSkin, movistarNewPalette, type Skin} from '@telefonica/mistica';
135
+
136
+ const baseSkin = getMovistarNewSkin();
137
+ const palette = {
138
+ ...movistarNewPalette,
139
+ brandPrimary: '#0050D8',
140
+ };
141
+
142
+ const skin: Skin = {
143
+ ...baseSkin,
144
+ name: 'Acme',
145
+ colors: {
146
+ ...baseSkin.colors,
147
+ brand: palette.brandPrimary,
148
+ backgroundBrand: palette.brandPrimary,
149
+ backgroundBrandTop: palette.brandPrimary,
150
+ backgroundBrandBottom: palette.blue800,
151
+ buttonPrimaryBackground: palette.brandPrimary,
152
+ buttonPrimaryBackgroundHover: palette.blue800,
153
+ buttonPrimaryBackgroundPressed: palette.blue800,
154
+ textButtonPrimary: palette.white,
155
+ },
156
+ };
157
+ ```
158
+
159
+ If you also need different default radii, override `borderRadii` in the custom skin rather than setting
160
+ border radius ad hoc in component styles.
161
+
124
162
  You can see an example in the [examples folder](../examples/custom-skin/).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telefonica/mistica",
3
- "version": "16.57.0-beta.1",
3
+ "version": "16.57.0-beta.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",