@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.
Files changed (197) 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/ai-card.css-mistica.js +2 -2
  20. package/dist/community/blocks.css-mistica.js +1 -1
  21. package/dist/community/example-component.css-mistica.js +1 -1
  22. package/dist/counter.css-mistica.js +1 -1
  23. package/dist/cover-hero.css-mistica.js +2 -2
  24. package/dist/credit-card-number-field.css-mistica.js +3 -3
  25. package/dist/date-field.css-mistica.js +1 -1
  26. package/dist/date-time-picker.css-mistica.js +1 -1
  27. package/dist/dialog.css-mistica.js +4 -4
  28. package/dist/divider.css-mistica.js +5 -5
  29. package/dist/double-field.css-mistica.js +2 -2
  30. package/dist/drawer.css-mistica.js +1 -1
  31. package/dist/empty-state-card.css-mistica.js +1 -1
  32. package/dist/empty-state.css-mistica.js +5 -5
  33. package/dist/fade-in.css-mistica.js +1 -1
  34. package/dist/feedback.css-mistica.js +1 -1
  35. package/dist/file-upload.css-mistica.js +7 -7
  36. package/dist/fixed-footer-layout.css-mistica.js +2 -2
  37. package/dist/form.css-mistica.js +1 -1
  38. package/dist/grid-layout.css-mistica.js +3 -3
  39. package/dist/grid.css-mistica.js +120 -120
  40. package/dist/header.css-mistica.js +1 -1
  41. package/dist/hero.css-mistica.js +2 -2
  42. package/dist/horizontal-scroll.css-mistica.js +1 -1
  43. package/dist/icon-button.css-mistica.js +53 -53
  44. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  45. package/dist/icons/icon-error.css-mistica.js +1 -1
  46. package/dist/image.css-mistica.js +2 -2
  47. package/dist/inline.css-mistica.js +9 -9
  48. package/dist/list.css-mistica.js +1 -1
  49. package/dist/loading-bar.css-mistica.js +1 -1
  50. package/dist/loading-screen.css-mistica.js +4 -4
  51. package/dist/logo.css-mistica.js +5 -5
  52. package/dist/menu.css-mistica.js +13 -13
  53. package/dist/menu.d.ts +25 -7
  54. package/dist/menu.js +162 -142
  55. package/dist/mosaic.css-mistica.js +1 -1
  56. package/dist/navigation-bar.css-mistica.js +18 -18
  57. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  58. package/dist/package-version.js +1 -1
  59. package/dist/pin-field.css-mistica.js +1 -1
  60. package/dist/popover.css-mistica.js +1 -1
  61. package/dist/progress-bar.css-mistica.js +6 -6
  62. package/dist/radio-button.css-mistica.js +19 -19
  63. package/dist/rating.css-mistica.js +2 -2
  64. package/dist/responsive-layout.css-mistica.js +6 -6
  65. package/dist/screen-reader-only.css-mistica.js +1 -1
  66. package/dist/select.css-mistica.js +15 -15
  67. package/dist/sheet-action-row.css-mistica.js +1 -1
  68. package/dist/sheet-common.css-mistica.js +1 -1
  69. package/dist/sheet-info.css-mistica.js +1 -1
  70. package/dist/skeletons.css-mistica.js +6 -6
  71. package/dist/skins/skin-contract.css-mistica.js +684 -684
  72. package/dist/skip-link.css-mistica.js +1 -1
  73. package/dist/slider.css-mistica.js +18 -18
  74. package/dist/snackbar.css-mistica.js +4 -4
  75. package/dist/spinner.css-mistica.js +1 -1
  76. package/dist/square.css-mistica.js +1 -1
  77. package/dist/stack.css-mistica.js +5 -5
  78. package/dist/stacking-group.css-mistica.js +1 -1
  79. package/dist/stepper.css-mistica.js +2 -2
  80. package/dist/switch-component.css-mistica.js +35 -35
  81. package/dist/table.css-mistica.js +9 -9
  82. package/dist/tabs.css-mistica.js +17 -17
  83. package/dist/tag.css-mistica.js +1 -1
  84. package/dist/text-field-base.css-mistica.js +15 -15
  85. package/dist/text-field-components.css-mistica.js +3 -3
  86. package/dist/text-link.css-mistica.js +6 -6
  87. package/dist/text.css-mistica.js +6 -6
  88. package/dist/theme-context.css-mistica.js +1 -1
  89. package/dist/timeline.css-mistica.js +9 -9
  90. package/dist/timer.css-mistica.js +6 -6
  91. package/dist/tooltip.css-mistica.js +1 -1
  92. package/dist/touchable.css-mistica.js +1 -1
  93. package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
  94. package/dist/video.css-mistica.js +1 -1
  95. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  96. package/dist-es/accordion.css-mistica.js +6 -6
  97. package/dist-es/align.css-mistica.js +1 -1
  98. package/dist-es/autocomplete.css-mistica.js +1 -1
  99. package/dist-es/avatar.css-mistica.js +1 -1
  100. package/dist-es/badge.css-mistica.js +1 -1
  101. package/dist-es/box.css-mistica.js +13 -13
  102. package/dist-es/boxed.css-mistica.js +23 -23
  103. package/dist-es/button-group.css-mistica.js +1 -1
  104. package/dist-es/button-layout.css-mistica.js +14 -14
  105. package/dist-es/button.css-mistica.js +30 -30
  106. package/dist-es/callout.css-mistica.js +11 -11
  107. package/dist-es/card-internal.css-mistica.js +15 -15
  108. package/dist-es/carousel.css-mistica.js +8 -8
  109. package/dist-es/checkbox.css-mistica.js +11 -11
  110. package/dist-es/chip.css-mistica.js +15 -15
  111. package/dist-es/circle.css-mistica.js +1 -1
  112. package/dist-es/community/advanced-data-card.css-mistica.js +6 -6
  113. package/dist-es/community/ai-card.css-mistica.js +2 -2
  114. package/dist-es/community/blocks.css-mistica.js +1 -1
  115. package/dist-es/community/example-component.css-mistica.js +1 -1
  116. package/dist-es/counter.css-mistica.js +1 -1
  117. package/dist-es/cover-hero.css-mistica.js +2 -2
  118. package/dist-es/credit-card-number-field.css-mistica.js +3 -3
  119. package/dist-es/date-field.css-mistica.js +1 -1
  120. package/dist-es/date-time-picker.css-mistica.js +1 -1
  121. package/dist-es/dialog.css-mistica.js +4 -4
  122. package/dist-es/divider.css-mistica.js +5 -5
  123. package/dist-es/double-field.css-mistica.js +2 -2
  124. package/dist-es/drawer.css-mistica.js +1 -1
  125. package/dist-es/empty-state-card.css-mistica.js +1 -1
  126. package/dist-es/empty-state.css-mistica.js +5 -5
  127. package/dist-es/fade-in.css-mistica.js +1 -1
  128. package/dist-es/feedback.css-mistica.js +1 -1
  129. package/dist-es/file-upload.css-mistica.js +7 -7
  130. package/dist-es/fixed-footer-layout.css-mistica.js +2 -2
  131. package/dist-es/form.css-mistica.js +1 -1
  132. package/dist-es/grid-layout.css-mistica.js +3 -3
  133. package/dist-es/grid.css-mistica.js +120 -120
  134. package/dist-es/header.css-mistica.js +1 -1
  135. package/dist-es/hero.css-mistica.js +2 -2
  136. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  137. package/dist-es/icon-button.css-mistica.js +53 -53
  138. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  139. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  140. package/dist-es/image.css-mistica.js +2 -2
  141. package/dist-es/inline.css-mistica.js +9 -9
  142. package/dist-es/list.css-mistica.js +1 -1
  143. package/dist-es/loading-bar.css-mistica.js +1 -1
  144. package/dist-es/loading-screen.css-mistica.js +4 -4
  145. package/dist-es/logo.css-mistica.js +5 -5
  146. package/dist-es/menu.css-mistica.js +13 -13
  147. package/dist-es/menu.js +215 -195
  148. package/dist-es/mosaic.css-mistica.js +1 -1
  149. package/dist-es/navigation-bar.css-mistica.js +18 -18
  150. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  151. package/dist-es/package-version.js +1 -1
  152. package/dist-es/pin-field.css-mistica.js +1 -1
  153. package/dist-es/popover.css-mistica.js +1 -1
  154. package/dist-es/progress-bar.css-mistica.js +6 -6
  155. package/dist-es/radio-button.css-mistica.js +19 -19
  156. package/dist-es/rating.css-mistica.js +2 -2
  157. package/dist-es/responsive-layout.css-mistica.js +6 -6
  158. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  159. package/dist-es/select.css-mistica.js +15 -15
  160. package/dist-es/sheet-action-row.css-mistica.js +1 -1
  161. package/dist-es/sheet-common.css-mistica.js +1 -1
  162. package/dist-es/sheet-info.css-mistica.js +1 -1
  163. package/dist-es/skeletons.css-mistica.js +6 -6
  164. package/dist-es/skins/skin-contract.css-mistica.js +684 -684
  165. package/dist-es/skip-link.css-mistica.js +1 -1
  166. package/dist-es/slider.css-mistica.js +18 -18
  167. package/dist-es/snackbar.css-mistica.js +4 -4
  168. package/dist-es/spinner.css-mistica.js +1 -1
  169. package/dist-es/square.css-mistica.js +1 -1
  170. package/dist-es/stack.css-mistica.js +5 -5
  171. package/dist-es/stacking-group.css-mistica.js +1 -1
  172. package/dist-es/stepper.css-mistica.js +2 -2
  173. package/dist-es/style.css +1 -1
  174. package/dist-es/switch-component.css-mistica.js +35 -35
  175. package/dist-es/table.css-mistica.js +9 -9
  176. package/dist-es/tabs.css-mistica.js +17 -17
  177. package/dist-es/tag.css-mistica.js +1 -1
  178. package/dist-es/text-field-base.css-mistica.js +15 -15
  179. package/dist-es/text-field-components.css-mistica.js +3 -3
  180. package/dist-es/text-link.css-mistica.js +6 -6
  181. package/dist-es/text.css-mistica.js +6 -6
  182. package/dist-es/theme-context.css-mistica.js +1 -1
  183. package/dist-es/timeline.css-mistica.js +9 -9
  184. package/dist-es/timer.css-mistica.js +6 -6
  185. package/dist-es/tooltip.css-mistica.js +1 -1
  186. package/dist-es/touchable.css-mistica.js +1 -1
  187. package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
  188. package/dist-es/video.css-mistica.js +1 -1
  189. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  190. package/doc/components.md +19 -0
  191. package/doc/figma-mcp.md +136 -0
  192. package/doc/layout.md +21 -1
  193. package/doc/llms.md +7 -0
  194. package/doc/patterns.md +6 -17
  195. package/package.json +1 -1
  196. package/src/menu.tsx +82 -24
  197. 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
- 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).
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
- {currentStep === 0 && <PersonalInfoForm />}
505
- {currentStep === 1 && <AddressForm />}
506
- {currentStep === 2 && <PaymentForm />}
507
- {currentStep === 3 && <ConfirmationScreen />}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telefonica/mistica",
3
- "version": "16.62.0",
3
+ "version": "16.63.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
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 MenuItemWithoutControlProps extends MenuItemBaseProps {
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 MenuItemWithControlProps extends MenuItemBaseProps {
70
- controlType?: 'checkbox';
71
- checked?: boolean;
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<MenuItemWithControlProps | MenuItemWithoutControlProps>;
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
- <div className={styles.itemContent}>
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
- <div className={styles.itemContent}>
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
  );
@@ -1,2 +1,2 @@
1
1
  // DO NOT EDIT THIS FILE. It's autogenerated by set-version.js
2
- export const PACKAGE_VERSION = '16.62.0' as string;
2
+ export const PACKAGE_VERSION = '16.63.0' as string;