@telefonica/mistica 16.62.0 → 16.63.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.
- 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/ai-card.css-mistica.js +2 -2
- 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/menu.d.ts +25 -7
- package/dist/menu.js +162 -142
- 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/ai-card.css-mistica.js +2 -2
- 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/menu.js +215 -195
- 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/components.md +19 -0
- package/doc/figma-mcp.md +136 -0
- package/doc/layout.md +21 -1
- package/doc/llms.md +7 -0
- package/doc/patterns.md +6 -17
- package/package.json +1 -1
- package/src/menu.tsx +82 -24
- package/src/package-version.tsx +1 -1
package/doc/patterns.md
CHANGED
|
@@ -2,19 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Critical rules
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
2. **NEVER use raw `<div>` for layout.** Use `Box`, `Stack`, `Inline`, `ResponsiveLayout`, `GridLayout`,
|
|
8
|
-
`Grid`.
|
|
9
|
-
3. **NEVER set font sizes manually.** Use text components (`Text1`-`Text10`, `Title1`-`Title4`). If those
|
|
10
|
-
don't cover your necessities you can set custom sizes with `Text` component.
|
|
11
|
-
4. **NEVER set border radius manually.** Use `skinVars.borderRadii.*` or components that handle it (`Boxed`,
|
|
12
|
-
cards, etc.). For theme-level visual customization without a dedicated component prop, use a custom skin.
|
|
13
|
-
5. **Always wrap your app** with `ThemeContextProvider` and import `@telefonica/mistica/css/mistica.css`.
|
|
14
|
-
6. **Always namespace React hooks**: `React.useState`, `React.useEffect`, `React.useRef`, etc.
|
|
15
|
-
7. **Add `'use client';`** directive to client components when using Next.js app router.
|
|
16
|
-
8. **Set `font-family` and `body` background color.** See [llms.md](./llms.md) rules 9–10 and
|
|
17
|
-
[fonts.md](./fonts.md) for the per-skin font table, `@font-face` setup, and the `GlobalStyles` pattern.
|
|
5
|
+
See [Critical Rules in `llms.md`](./llms.md#critical-rules) — the single source of truth. These rules apply
|
|
6
|
+
throughout this document.
|
|
18
7
|
|
|
19
8
|
## Page layout composition
|
|
20
9
|
|
|
@@ -501,10 +490,10 @@ return (
|
|
|
501
490
|
<ResponsiveLayout>
|
|
502
491
|
<Stack space={24}>
|
|
503
492
|
<Stepper currentIndex={currentStep} steps={['Personal', 'Address', 'Payment', 'Confirm']} />
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
493
|
+
{currentStep === 0 && <PersonalInfoForm />}
|
|
494
|
+
{currentStep === 1 && <AddressForm />}
|
|
495
|
+
{currentStep === 2 && <PaymentForm />}
|
|
496
|
+
{currentStep === 3 && <ConfirmationScreen />}
|
|
508
497
|
</Stack>
|
|
509
498
|
</ResponsiveLayout>
|
|
510
499
|
</Stack>
|
package/package.json
CHANGED
package/src/menu.tsx
CHANGED
|
@@ -57,21 +57,40 @@ interface MenuItemBaseProps {
|
|
|
57
57
|
Icon?: (props: IconProps) => JSX.Element;
|
|
58
58
|
destructive?: boolean;
|
|
59
59
|
disabled?: boolean;
|
|
60
|
-
onPress: (item: number) => void;
|
|
61
60
|
dataAttributes?: DataAttributes;
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
interface
|
|
63
|
+
interface MenuItemOnPressProps extends MenuItemBaseProps {
|
|
64
|
+
onPress: (item: number) => void;
|
|
65
|
+
controlType?: 'checkbox';
|
|
66
|
+
checked?: boolean;
|
|
67
|
+
href?: undefined;
|
|
68
|
+
to?: undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
interface MenuItemHrefProps extends MenuItemBaseProps {
|
|
72
|
+
href: string;
|
|
73
|
+
newTab?: boolean;
|
|
74
|
+
loadOnTop?: boolean;
|
|
75
|
+
onNavigate?: () => void | Promise<void>;
|
|
76
|
+
onPress?: undefined;
|
|
77
|
+
to?: undefined;
|
|
65
78
|
controlType?: undefined;
|
|
66
79
|
checked?: undefined;
|
|
67
80
|
}
|
|
68
81
|
|
|
69
|
-
interface
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
interface MenuItemToProps extends MenuItemBaseProps {
|
|
83
|
+
to: string;
|
|
84
|
+
newTab?: boolean;
|
|
85
|
+
fullPageOnWebView?: boolean;
|
|
86
|
+
onNavigate?: () => void | Promise<void>;
|
|
87
|
+
onPress?: undefined;
|
|
88
|
+
href?: undefined;
|
|
89
|
+
controlType?: undefined;
|
|
90
|
+
checked?: undefined;
|
|
72
91
|
}
|
|
73
92
|
|
|
74
|
-
type MenuItemProps = ExclusifyUnion<
|
|
93
|
+
type MenuItemProps = ExclusifyUnion<MenuItemOnPressProps | MenuItemHrefProps | MenuItemToProps>;
|
|
75
94
|
|
|
76
95
|
export const MenuItem = ({
|
|
77
96
|
label,
|
|
@@ -79,6 +98,12 @@ export const MenuItem = ({
|
|
|
79
98
|
destructive,
|
|
80
99
|
disabled,
|
|
81
100
|
onPress,
|
|
101
|
+
href,
|
|
102
|
+
to,
|
|
103
|
+
newTab,
|
|
104
|
+
loadOnTop,
|
|
105
|
+
fullPageOnWebView,
|
|
106
|
+
onNavigate,
|
|
82
107
|
controlType,
|
|
83
108
|
checked,
|
|
84
109
|
description,
|
|
@@ -108,6 +133,17 @@ export const MenuItem = ({
|
|
|
108
133
|
</div>
|
|
109
134
|
);
|
|
110
135
|
|
|
136
|
+
const renderItemContent = (labelId?: string) => (
|
|
137
|
+
<div className={styles.itemContent}>
|
|
138
|
+
{Icon && (
|
|
139
|
+
<div className={styles.iconContainer}>
|
|
140
|
+
<Icon size={24} color={contentColor} />
|
|
141
|
+
</div>
|
|
142
|
+
)}
|
|
143
|
+
{renderTextContent(labelId)}
|
|
144
|
+
</div>
|
|
145
|
+
);
|
|
146
|
+
|
|
111
147
|
const renderContent = () =>
|
|
112
148
|
controlType === 'checkbox' ? (
|
|
113
149
|
<Checkbox
|
|
@@ -116,7 +152,7 @@ export const MenuItem = ({
|
|
|
116
152
|
checked={checked}
|
|
117
153
|
onChange={() => {
|
|
118
154
|
if (isMenuOpen && itemIndex !== null) {
|
|
119
|
-
onPress(itemIndex);
|
|
155
|
+
onPress?.(itemIndex);
|
|
120
156
|
closeMenu();
|
|
121
157
|
}
|
|
122
158
|
}}
|
|
@@ -126,25 +162,54 @@ export const MenuItem = ({
|
|
|
126
162
|
render={({controlElement, labelId}) => (
|
|
127
163
|
<Box paddingX={8} paddingY={12}>
|
|
128
164
|
<Inline space="between" alignItems="center">
|
|
129
|
-
|
|
130
|
-
{Icon && (
|
|
131
|
-
<div className={styles.iconContainer}>
|
|
132
|
-
<Icon size={24} color={contentColor} />
|
|
133
|
-
</div>
|
|
134
|
-
)}
|
|
135
|
-
{renderTextContent(labelId)}
|
|
136
|
-
</div>
|
|
165
|
+
{renderItemContent(labelId)}
|
|
137
166
|
<Box paddingLeft={16}>{controlElement}</Box>
|
|
138
167
|
</Inline>
|
|
139
168
|
</Box>
|
|
140
169
|
)}
|
|
141
170
|
/>
|
|
171
|
+
) : href ? (
|
|
172
|
+
<Touchable
|
|
173
|
+
ref={itemRef}
|
|
174
|
+
href={href}
|
|
175
|
+
newTab={newTab}
|
|
176
|
+
loadOnTop={loadOnTop}
|
|
177
|
+
onNavigate={() => {
|
|
178
|
+
closeMenu();
|
|
179
|
+
onNavigate?.();
|
|
180
|
+
}}
|
|
181
|
+
disabled={disabled}
|
|
182
|
+
role="menuitem"
|
|
183
|
+
dataAttributes={menuItemDataAttributes}
|
|
184
|
+
>
|
|
185
|
+
<Box paddingX={8} paddingY={12}>
|
|
186
|
+
{renderItemContent()}
|
|
187
|
+
</Box>
|
|
188
|
+
</Touchable>
|
|
189
|
+
) : to ? (
|
|
190
|
+
<Touchable
|
|
191
|
+
ref={itemRef}
|
|
192
|
+
to={to}
|
|
193
|
+
newTab={newTab}
|
|
194
|
+
fullPageOnWebView={fullPageOnWebView}
|
|
195
|
+
onNavigate={() => {
|
|
196
|
+
closeMenu();
|
|
197
|
+
onNavigate?.();
|
|
198
|
+
}}
|
|
199
|
+
disabled={disabled}
|
|
200
|
+
role="menuitem"
|
|
201
|
+
dataAttributes={menuItemDataAttributes}
|
|
202
|
+
>
|
|
203
|
+
<Box paddingX={8} paddingY={12}>
|
|
204
|
+
{renderItemContent()}
|
|
205
|
+
</Box>
|
|
206
|
+
</Touchable>
|
|
142
207
|
) : (
|
|
143
208
|
<Touchable
|
|
144
209
|
ref={itemRef}
|
|
145
210
|
onPress={() => {
|
|
146
211
|
if (isMenuOpen && itemIndex !== null) {
|
|
147
|
-
onPress(itemIndex);
|
|
212
|
+
onPress?.(itemIndex);
|
|
148
213
|
closeMenu();
|
|
149
214
|
}
|
|
150
215
|
}}
|
|
@@ -153,14 +218,7 @@ export const MenuItem = ({
|
|
|
153
218
|
dataAttributes={menuItemDataAttributes}
|
|
154
219
|
>
|
|
155
220
|
<Box paddingX={8} paddingY={12}>
|
|
156
|
-
|
|
157
|
-
{Icon && (
|
|
158
|
-
<div className={styles.iconContainer}>
|
|
159
|
-
<Icon size={24} color={contentColor} />
|
|
160
|
-
</div>
|
|
161
|
-
)}
|
|
162
|
-
{renderTextContent()}
|
|
163
|
-
</div>
|
|
221
|
+
{renderItemContent()}
|
|
164
222
|
</Box>
|
|
165
223
|
</Touchable>
|
|
166
224
|
);
|
package/src/package-version.tsx
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// DO NOT EDIT THIS FILE. It's autogenerated by set-version.js
|
|
2
|
-
export const PACKAGE_VERSION = '16.
|
|
2
|
+
export const PACKAGE_VERSION = '16.63.0' as string;
|