@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.
- package/css/mistica.css +1 -1
- package/dist/accordion.css-mistica.js +6 -6
- package/dist/align.css-mistica.js +1 -1
- package/dist/autocomplete.css-mistica.js +1 -1
- package/dist/avatar.css-mistica.js +1 -1
- package/dist/badge.css-mistica.js +1 -1
- package/dist/box.css-mistica.js +13 -13
- package/dist/boxed.css-mistica.js +24 -24
- package/dist/button-group.css-mistica.js +1 -1
- package/dist/button-layout.css-mistica.js +14 -14
- package/dist/button.css-mistica.js +30 -30
- package/dist/callout.css-mistica.js +11 -11
- package/dist/card-internal.css-mistica.js +15 -15
- package/dist/carousel.css-mistica.js +8 -8
- package/dist/checkbox.css-mistica.js +11 -11
- package/dist/chip.css-mistica.js +15 -15
- package/dist/circle.css-mistica.js +1 -1
- package/dist/community/advanced-data-card.css-mistica.js +6 -6
- package/dist/community/blocks.css-mistica.js +1 -1
- package/dist/community/example-component.css-mistica.js +1 -1
- package/dist/counter.css-mistica.js +1 -1
- package/dist/cover-hero.css-mistica.js +2 -2
- package/dist/credit-card-number-field.css-mistica.js +3 -3
- package/dist/date-field.css-mistica.js +1 -1
- package/dist/date-time-picker.css-mistica.js +1 -1
- package/dist/dialog.css-mistica.js +4 -4
- package/dist/divider.css-mistica.js +5 -5
- package/dist/double-field.css-mistica.js +2 -2
- package/dist/drawer.css-mistica.js +1 -1
- package/dist/empty-state-card.css-mistica.js +1 -1
- package/dist/empty-state.css-mistica.js +5 -5
- package/dist/fade-in.css-mistica.js +1 -1
- package/dist/feedback.css-mistica.js +1 -1
- package/dist/file-upload.css-mistica.js +7 -7
- package/dist/fixed-footer-layout.css-mistica.js +2 -2
- package/dist/form.css-mistica.js +1 -1
- package/dist/grid-layout.css-mistica.js +3 -3
- package/dist/grid.css-mistica.js +120 -120
- package/dist/header.css-mistica.js +1 -1
- package/dist/hero.css-mistica.js +2 -2
- package/dist/horizontal-scroll.css-mistica.js +1 -1
- package/dist/icon-button.css-mistica.js +53 -53
- package/dist/icons/icon-chevron.css-mistica.js +2 -2
- package/dist/icons/icon-error.css-mistica.js +1 -1
- package/dist/image.css-mistica.js +2 -2
- package/dist/inline.css-mistica.js +9 -9
- package/dist/list.css-mistica.js +1 -1
- package/dist/loading-bar.css-mistica.js +1 -1
- package/dist/loading-screen.css-mistica.js +4 -4
- package/dist/logo.css-mistica.js +5 -5
- package/dist/menu.css-mistica.js +13 -13
- package/dist/mosaic.css-mistica.js +1 -1
- package/dist/navigation-bar.css-mistica.js +18 -18
- package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist/package-version.js +1 -1
- package/dist/pin-field.css-mistica.js +1 -1
- package/dist/popover.css-mistica.js +1 -1
- package/dist/progress-bar.css-mistica.js +6 -6
- package/dist/radio-button.css-mistica.js +19 -19
- package/dist/rating.css-mistica.js +2 -2
- package/dist/responsive-layout.css-mistica.js +6 -6
- package/dist/screen-reader-only.css-mistica.js +1 -1
- package/dist/select.css-mistica.js +15 -15
- package/dist/sheet-action-row.css-mistica.js +1 -1
- package/dist/sheet-common.css-mistica.js +1 -1
- package/dist/sheet-info.css-mistica.js +1 -1
- package/dist/skeletons.css-mistica.js +6 -6
- package/dist/skins/skin-contract.css-mistica.js +684 -684
- package/dist/skip-link.css-mistica.js +1 -1
- package/dist/slider.css-mistica.js +18 -18
- package/dist/snackbar.css-mistica.js +4 -4
- package/dist/spinner.css-mistica.js +1 -1
- package/dist/square.css-mistica.js +1 -1
- package/dist/stack.css-mistica.js +5 -5
- package/dist/stacking-group.css-mistica.js +1 -1
- package/dist/stepper.css-mistica.js +2 -2
- package/dist/switch-component.css-mistica.js +35 -35
- package/dist/table.css-mistica.js +9 -9
- package/dist/tabs.css-mistica.js +17 -17
- package/dist/tag.css-mistica.js +1 -1
- package/dist/text-field-base.css-mistica.js +15 -15
- package/dist/text-field-components.css-mistica.js +3 -3
- package/dist/text-link.css-mistica.js +6 -6
- package/dist/text.css-mistica.js +6 -6
- package/dist/theme-context.css-mistica.js +1 -1
- package/dist/timeline.css-mistica.js +9 -9
- package/dist/timer.css-mistica.js +6 -6
- package/dist/tooltip.css-mistica.js +1 -1
- package/dist/touchable.css-mistica.js +1 -1
- package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
- package/dist/video.css-mistica.js +1 -1
- package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/dist-es/accordion.css-mistica.js +6 -6
- package/dist-es/align.css-mistica.js +1 -1
- package/dist-es/autocomplete.css-mistica.js +1 -1
- package/dist-es/avatar.css-mistica.js +1 -1
- package/dist-es/badge.css-mistica.js +1 -1
- package/dist-es/box.css-mistica.js +13 -13
- package/dist-es/boxed.css-mistica.js +23 -23
- package/dist-es/button-group.css-mistica.js +1 -1
- package/dist-es/button-layout.css-mistica.js +14 -14
- package/dist-es/button.css-mistica.js +30 -30
- package/dist-es/callout.css-mistica.js +11 -11
- package/dist-es/card-internal.css-mistica.js +15 -15
- package/dist-es/carousel.css-mistica.js +8 -8
- package/dist-es/checkbox.css-mistica.js +11 -11
- package/dist-es/chip.css-mistica.js +15 -15
- package/dist-es/circle.css-mistica.js +1 -1
- package/dist-es/community/advanced-data-card.css-mistica.js +6 -6
- package/dist-es/community/blocks.css-mistica.js +1 -1
- package/dist-es/community/example-component.css-mistica.js +1 -1
- package/dist-es/counter.css-mistica.js +1 -1
- package/dist-es/cover-hero.css-mistica.js +2 -2
- package/dist-es/credit-card-number-field.css-mistica.js +3 -3
- package/dist-es/date-field.css-mistica.js +1 -1
- package/dist-es/date-time-picker.css-mistica.js +1 -1
- package/dist-es/dialog.css-mistica.js +4 -4
- package/dist-es/divider.css-mistica.js +5 -5
- package/dist-es/double-field.css-mistica.js +2 -2
- package/dist-es/drawer.css-mistica.js +1 -1
- package/dist-es/empty-state-card.css-mistica.js +1 -1
- package/dist-es/empty-state.css-mistica.js +5 -5
- package/dist-es/fade-in.css-mistica.js +1 -1
- package/dist-es/feedback.css-mistica.js +1 -1
- package/dist-es/file-upload.css-mistica.js +7 -7
- package/dist-es/fixed-footer-layout.css-mistica.js +2 -2
- package/dist-es/form.css-mistica.js +1 -1
- package/dist-es/grid-layout.css-mistica.js +3 -3
- package/dist-es/grid.css-mistica.js +120 -120
- package/dist-es/header.css-mistica.js +1 -1
- package/dist-es/hero.css-mistica.js +2 -2
- package/dist-es/horizontal-scroll.css-mistica.js +1 -1
- package/dist-es/icon-button.css-mistica.js +53 -53
- package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
- package/dist-es/icons/icon-error.css-mistica.js +1 -1
- package/dist-es/image.css-mistica.js +2 -2
- package/dist-es/inline.css-mistica.js +9 -9
- package/dist-es/list.css-mistica.js +1 -1
- package/dist-es/loading-bar.css-mistica.js +1 -1
- package/dist-es/loading-screen.css-mistica.js +4 -4
- package/dist-es/logo.css-mistica.js +5 -5
- package/dist-es/menu.css-mistica.js +13 -13
- package/dist-es/mosaic.css-mistica.js +1 -1
- package/dist-es/navigation-bar.css-mistica.js +18 -18
- package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
- package/dist-es/package-version.js +1 -1
- package/dist-es/pin-field.css-mistica.js +1 -1
- package/dist-es/popover.css-mistica.js +1 -1
- package/dist-es/progress-bar.css-mistica.js +6 -6
- package/dist-es/radio-button.css-mistica.js +19 -19
- package/dist-es/rating.css-mistica.js +2 -2
- package/dist-es/responsive-layout.css-mistica.js +6 -6
- package/dist-es/screen-reader-only.css-mistica.js +1 -1
- package/dist-es/select.css-mistica.js +15 -15
- package/dist-es/sheet-action-row.css-mistica.js +1 -1
- package/dist-es/sheet-common.css-mistica.js +1 -1
- package/dist-es/sheet-info.css-mistica.js +1 -1
- package/dist-es/skeletons.css-mistica.js +6 -6
- package/dist-es/skins/skin-contract.css-mistica.js +684 -684
- package/dist-es/skip-link.css-mistica.js +1 -1
- package/dist-es/slider.css-mistica.js +18 -18
- package/dist-es/snackbar.css-mistica.js +4 -4
- package/dist-es/spinner.css-mistica.js +1 -1
- package/dist-es/square.css-mistica.js +1 -1
- package/dist-es/stack.css-mistica.js +5 -5
- package/dist-es/stacking-group.css-mistica.js +1 -1
- package/dist-es/stepper.css-mistica.js +2 -2
- package/dist-es/style.css +1 -1
- package/dist-es/switch-component.css-mistica.js +35 -35
- package/dist-es/table.css-mistica.js +9 -9
- package/dist-es/tabs.css-mistica.js +17 -17
- package/dist-es/tag.css-mistica.js +1 -1
- package/dist-es/text-field-base.css-mistica.js +15 -15
- package/dist-es/text-field-components.css-mistica.js +3 -3
- package/dist-es/text-link.css-mistica.js +6 -6
- package/dist-es/text.css-mistica.js +6 -6
- package/dist-es/theme-context.css-mistica.js +1 -1
- package/dist-es/timeline.css-mistica.js +9 -9
- package/dist-es/timer.css-mistica.js +6 -6
- package/dist-es/tooltip.css-mistica.js +1 -1
- package/dist-es/touchable.css-mistica.js +1 -1
- package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
- package/dist-es/video.css-mistica.js +1 -1
- package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
- package/doc/design-tokens.md +19 -92
- package/doc/layout.md +10 -3
- package/doc/llms.md +17 -6
- package/doc/patterns.md +7 -3
- package/doc/theme-config.md +38 -0
- 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
|
|
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
|
|
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
|
|
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
|
package/doc/theme-config.md
CHANGED
|
@@ -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/).
|