@telefonica/mistica 17.8.0 → 17.10.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 (302) hide show
  1. package/css/blau.css +50 -0
  2. package/css/community/cyber.css +89 -23
  3. package/css/esimflag.css +50 -0
  4. package/css/mistica-common.css +10 -0
  5. package/css/mistica.css +1 -1
  6. package/css/movistar.css +50 -0
  7. package/css/o2.css +51 -0
  8. package/css/telefonica.css +60 -8
  9. package/css/vivo-evolution.css +60 -2
  10. package/css/vivo.css +50 -0
  11. package/dist/accordion.css-mistica.js +8 -8
  12. package/dist/accordion.js +67 -74
  13. package/dist/align.css-mistica.js +1 -1
  14. package/dist/autocomplete.css-mistica.js +4 -4
  15. package/dist/avatar.css-mistica.js +3 -3
  16. package/dist/badge.css-mistica.js +3 -3
  17. package/dist/box.css-mistica.js +13 -13
  18. package/dist/boxed.css-mistica.js +24 -24
  19. package/dist/boxed.d.ts +2 -2
  20. package/dist/boxed.js +27 -27
  21. package/dist/button-group.css-mistica.js +3 -3
  22. package/dist/button-layout.css-mistica.js +15 -15
  23. package/dist/button.css-mistica.js +64 -64
  24. package/dist/callout.css-mistica.js +11 -11
  25. package/dist/card-internal.css-mistica.js +34 -34
  26. package/dist/carousel.css-mistica.js +35 -35
  27. package/dist/checkbox.css-mistica.js +15 -15
  28. package/dist/chip.css-mistica.js +20 -20
  29. package/dist/circle.css-mistica.js +1 -1
  30. package/dist/community/advanced-data-card.css-mistica.js +18 -18
  31. package/dist/community/ai-card.css-mistica.js +13 -13
  32. package/dist/community/blocks.css-mistica.js +3 -3
  33. package/dist/community/cyber/example-component.css-mistica.js +1 -1
  34. package/dist/community/example-component.css-mistica.js +2 -2
  35. package/dist/community/skins/cyber-skin.js +68 -4
  36. package/dist/counter.css-mistica.js +7 -7
  37. package/dist/cover-hero.css-mistica.js +13 -13
  38. package/dist/credit-card-number-field.css-mistica.js +5 -5
  39. package/dist/date-field.css-mistica.js +1 -1
  40. package/dist/date-time-picker.css-mistica.js +1 -1
  41. package/dist/dialog.css-mistica.js +8 -8
  42. package/dist/divider.css-mistica.js +5 -5
  43. package/dist/double-field.css-mistica.js +4 -4
  44. package/dist/drawer.css-mistica.js +10 -10
  45. package/dist/empty-state-card.css-mistica.js +1 -1
  46. package/dist/empty-state.css-mistica.js +12 -12
  47. package/dist/fade-in.css-mistica.js +1 -1
  48. package/dist/fade-out.css-mistica.js +1 -1
  49. package/dist/feedback.css-mistica.js +3 -3
  50. package/dist/feedback.js +123 -123
  51. package/dist/file-upload.css-mistica.js +12 -12
  52. package/dist/fixed-footer-layout.css-mistica.js +5 -5
  53. package/dist/form.css-mistica.js +1 -1
  54. package/dist/grid-layout.css-mistica.js +3 -3
  55. package/dist/grid.css-mistica.js +120 -120
  56. package/dist/header.css-mistica.js +1 -1
  57. package/dist/hero.css-mistica.js +9 -9
  58. package/dist/horizontal-scroll.css-mistica.js +1 -1
  59. package/dist/icon-button.css-mistica.js +58 -58
  60. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  61. package/dist/icons/icon-error.css-mistica.js +1 -1
  62. package/dist/icons/icon-error.js +51 -31
  63. package/dist/icons/icon-info.js +42 -10
  64. package/dist/icons/icon-stepper-success-vivo.d.ts +7 -0
  65. package/dist/icons/icon-stepper-success-vivo.js +78 -0
  66. package/dist/icons/icon-success-vivo-new.d.ts +1 -0
  67. package/dist/icons/icon-success-vivo.d.ts +1 -0
  68. package/dist/icons/icon-success.js +137 -58
  69. package/dist/image.css-mistica.js +6 -6
  70. package/dist/index.d.ts +4 -0
  71. package/dist/index.js +4 -0
  72. package/dist/inline.css-mistica.js +11 -11
  73. package/dist/list.css-mistica.js +49 -37
  74. package/dist/list.css.d.ts +4 -0
  75. package/dist/list.js +167 -160
  76. package/dist/loading-bar.css-mistica.js +1 -1
  77. package/dist/loading-screen.css-mistica.js +9 -9
  78. package/dist/logo.css-mistica.js +5 -5
  79. package/dist/menu.css-mistica.js +12 -12
  80. package/dist/message.css-mistica.js +172 -0
  81. package/dist/message.css.d.ts +40 -0
  82. package/dist/message.d.ts +48 -0
  83. package/dist/message.js +389 -0
  84. package/dist/mosaic.css-mistica.js +1 -1
  85. package/dist/navigation-bar.css-mistica.js +20 -20
  86. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  87. package/dist/navigation-shared.css-mistica.js +18 -18
  88. package/dist/package-version.js +1 -1
  89. package/dist/pagination.css-mistica.js +30 -29
  90. package/dist/pagination.css.d.ts +1 -2
  91. package/dist/pagination.d.ts +0 -16
  92. package/dist/pagination.js +108 -115
  93. package/dist/pin-field.css-mistica.js +8 -8
  94. package/dist/popover.css-mistica.js +1 -1
  95. package/dist/progress-bar.css-mistica.js +7 -7
  96. package/dist/radio-button.css-mistica.js +32 -32
  97. package/dist/rating.css-mistica.js +4 -4
  98. package/dist/responsive-layout.css-mistica.js +6 -6
  99. package/dist/screen-reader-only.css-mistica.js +1 -1
  100. package/dist/select.css-mistica.js +22 -22
  101. package/dist/sheet-action-row.css-mistica.js +2 -2
  102. package/dist/sheet-common.css-mistica.js +9 -9
  103. package/dist/sheet-info.css-mistica.js +3 -3
  104. package/dist/sidenav-bar-layout.css-mistica.js +2 -2
  105. package/dist/sidenav-bar.css-mistica.js +107 -107
  106. package/dist/skeletons.css-mistica.js +10 -10
  107. package/dist/skins/blau.js +52 -0
  108. package/dist/skins/defaults.js +32 -0
  109. package/dist/skins/esimflag.js +52 -0
  110. package/dist/skins/movistar.js +52 -0
  111. package/dist/skins/o2.d.ts +1 -0
  112. package/dist/skins/o2.js +53 -0
  113. package/dist/skins/skin-contract.css-mistica.js +775 -741
  114. package/dist/skins/skin-contract.css.d.ts +34 -0
  115. package/dist/skins/telefonica.js +60 -8
  116. package/dist/skins/types/colors.d.ts +10 -0
  117. package/dist/skins/types/index.d.ts +3 -0
  118. package/dist/skins/vivo-evolution.js +54 -2
  119. package/dist/skins/vivo.js +52 -0
  120. package/dist/skip-link.css-mistica.js +2 -2
  121. package/dist/slider.css-mistica.js +27 -27
  122. package/dist/snackbar.css-mistica.js +17 -17
  123. package/dist/spinner.css-mistica.js +5 -5
  124. package/dist/square.css-mistica.js +1 -1
  125. package/dist/stack.css-mistica.js +5 -5
  126. package/dist/stacking-group.css-mistica.js +2 -2
  127. package/dist/stepper.css-mistica.js +10 -10
  128. package/dist/stepper.js +31 -25
  129. package/dist/switch-component.css-mistica.js +39 -39
  130. package/dist/table.css-mistica.js +9 -9
  131. package/dist/tabs.css-mistica.js +19 -19
  132. package/dist/tag.css-mistica.js +1 -1
  133. package/dist/text-field-base.css-mistica.js +26 -26
  134. package/dist/text-field-components.css-mistica.js +12 -12
  135. package/dist/text-link.css-mistica.js +6 -6
  136. package/dist/text-tokens.d.ts +2 -0
  137. package/dist/text-tokens.js +46 -30
  138. package/dist/text.css-mistica.js +6 -6
  139. package/dist/timeline.css-mistica.js +13 -13
  140. package/dist/timer.css-mistica.js +8 -8
  141. package/dist/tooltip.css-mistica.js +3 -3
  142. package/dist/tooltip.js +88 -88
  143. package/dist/touchable.css-mistica.js +5 -5
  144. package/dist/utils/aspect-ratio-support.css-mistica.js +4 -4
  145. package/dist/video.css-mistica.js +2 -2
  146. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  147. package/dist-es/accordion.css-mistica.js +7 -7
  148. package/dist-es/accordion.js +104 -111
  149. package/dist-es/align.css-mistica.js +1 -1
  150. package/dist-es/autocomplete.css-mistica.js +2 -2
  151. package/dist-es/avatar.css-mistica.js +2 -2
  152. package/dist-es/badge.css-mistica.js +2 -2
  153. package/dist-es/box.css-mistica.js +13 -13
  154. package/dist-es/boxed.css-mistica.js +23 -23
  155. package/dist-es/boxed.js +34 -34
  156. package/dist-es/button-group.css-mistica.js +2 -2
  157. package/dist-es/button-layout.css-mistica.js +15 -15
  158. package/dist-es/button.css-mistica.js +43 -43
  159. package/dist-es/callout.css-mistica.js +11 -11
  160. package/dist-es/card-internal.css-mistica.js +23 -23
  161. package/dist-es/carousel.css-mistica.js +10 -10
  162. package/dist-es/checkbox.css-mistica.js +13 -13
  163. package/dist-es/chip.css-mistica.js +17 -17
  164. package/dist-es/circle.css-mistica.js +1 -1
  165. package/dist-es/community/advanced-data-card.css-mistica.js +9 -9
  166. package/dist-es/community/ai-card.css-mistica.js +4 -4
  167. package/dist-es/community/blocks.css-mistica.js +2 -2
  168. package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
  169. package/dist-es/community/example-component.css-mistica.js +2 -2
  170. package/dist-es/community/skins/cyber-skin.js +68 -4
  171. package/dist-es/counter.css-mistica.js +2 -2
  172. package/dist-es/cover-hero.css-mistica.js +3 -3
  173. package/dist-es/credit-card-number-field.css-mistica.js +4 -4
  174. package/dist-es/date-field.css-mistica.js +1 -1
  175. package/dist-es/date-time-picker.css-mistica.js +1 -1
  176. package/dist-es/dialog.css-mistica.js +5 -5
  177. package/dist-es/divider.css-mistica.js +5 -5
  178. package/dist-es/double-field.css-mistica.js +4 -4
  179. package/dist-es/drawer.css-mistica.js +2 -2
  180. package/dist-es/empty-state-card.css-mistica.js +1 -1
  181. package/dist-es/empty-state.css-mistica.js +7 -7
  182. package/dist-es/fade-in.css-mistica.js +1 -1
  183. package/dist-es/fade-out.css-mistica.js +1 -1
  184. package/dist-es/feedback.css-mistica.js +2 -2
  185. package/dist-es/feedback.js +158 -158
  186. package/dist-es/file-upload.css-mistica.js +8 -8
  187. package/dist-es/fixed-footer-layout.css-mistica.js +3 -3
  188. package/dist-es/form.css-mistica.js +1 -1
  189. package/dist-es/grid-layout.css-mistica.js +3 -3
  190. package/dist-es/grid.css-mistica.js +120 -120
  191. package/dist-es/header.css-mistica.js +1 -1
  192. package/dist-es/hero.css-mistica.js +3 -3
  193. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  194. package/dist-es/icon-button.css-mistica.js +56 -56
  195. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  196. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  197. package/dist-es/icons/icon-error.js +55 -35
  198. package/dist-es/icons/icon-info.js +53 -21
  199. package/dist-es/icons/icon-stepper-success-vivo.js +69 -0
  200. package/dist-es/icons/icon-success.js +112 -74
  201. package/dist-es/image.css-mistica.js +3 -3
  202. package/dist-es/index.js +2355 -2354
  203. package/dist-es/inline.css-mistica.js +11 -11
  204. package/dist-es/list.css-mistica.js +8 -8
  205. package/dist-es/list.js +230 -223
  206. package/dist-es/loading-bar.css-mistica.js +1 -1
  207. package/dist-es/loading-screen.css-mistica.js +5 -5
  208. package/dist-es/logo.css-mistica.js +5 -5
  209. package/dist-es/menu.css-mistica.js +12 -12
  210. package/dist-es/message.css-mistica.js +41 -0
  211. package/dist-es/message.js +334 -0
  212. package/dist-es/mosaic.css-mistica.js +1 -1
  213. package/dist-es/navigation-bar.css-mistica.js +10 -10
  214. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  215. package/dist-es/navigation-shared.css-mistica.js +10 -10
  216. package/dist-es/package-version.js +1 -1
  217. package/dist-es/pagination.css-mistica.js +23 -19
  218. package/dist-es/pagination.js +137 -141
  219. package/dist-es/pin-field.css-mistica.js +2 -2
  220. package/dist-es/popover.css-mistica.js +1 -1
  221. package/dist-es/progress-bar.css-mistica.js +7 -7
  222. package/dist-es/radio-button.css-mistica.js +24 -24
  223. package/dist-es/rating.css-mistica.js +4 -4
  224. package/dist-es/responsive-layout.css-mistica.js +6 -6
  225. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  226. package/dist-es/select.css-mistica.js +18 -18
  227. package/dist-es/sheet-action-row.css-mistica.js +2 -2
  228. package/dist-es/sheet-common.css-mistica.js +2 -2
  229. package/dist-es/sheet-info.css-mistica.js +2 -2
  230. package/dist-es/sidenav-bar-layout.css-mistica.js +2 -2
  231. package/dist-es/sidenav-bar.css-mistica.js +72 -72
  232. package/dist-es/skeletons.css-mistica.js +7 -7
  233. package/dist-es/skins/blau.js +52 -0
  234. package/dist-es/skins/defaults.js +32 -0
  235. package/dist-es/skins/esimflag.js +52 -0
  236. package/dist-es/skins/movistar.js +52 -0
  237. package/dist-es/skins/o2.js +53 -0
  238. package/dist-es/skins/skin-contract.css-mistica.js +775 -741
  239. package/dist-es/skins/telefonica.js +60 -8
  240. package/dist-es/skins/vivo-evolution.js +54 -2
  241. package/dist-es/skins/vivo.js +52 -0
  242. package/dist-es/skip-link.css-mistica.js +2 -2
  243. package/dist-es/slider.css-mistica.js +20 -20
  244. package/dist-es/snackbar.css-mistica.js +5 -5
  245. package/dist-es/spinner.css-mistica.js +2 -2
  246. package/dist-es/square.css-mistica.js +1 -1
  247. package/dist-es/stack.css-mistica.js +5 -5
  248. package/dist-es/stacking-group.css-mistica.js +2 -2
  249. package/dist-es/stepper.css-mistica.js +4 -4
  250. package/dist-es/stepper.js +60 -54
  251. package/dist-es/style.css +1 -1
  252. package/dist-es/switch-component.css-mistica.js +37 -37
  253. package/dist-es/table.css-mistica.js +9 -9
  254. package/dist-es/tabs.css-mistica.js +18 -18
  255. package/dist-es/tag.css-mistica.js +1 -1
  256. package/dist-es/text-field-base.css-mistica.js +17 -17
  257. package/dist-es/text-field-components.css-mistica.js +4 -4
  258. package/dist-es/text-link.css-mistica.js +6 -6
  259. package/dist-es/text-tokens.js +26 -16
  260. package/dist-es/text.css-mistica.js +6 -6
  261. package/dist-es/timeline.css-mistica.js +10 -10
  262. package/dist-es/timer.css-mistica.js +7 -7
  263. package/dist-es/tooltip.css-mistica.js +2 -2
  264. package/dist-es/tooltip.js +109 -109
  265. package/dist-es/touchable.css-mistica.js +2 -2
  266. package/dist-es/utils/aspect-ratio-support.css-mistica.js +3 -3
  267. package/dist-es/video.css-mistica.js +2 -2
  268. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  269. package/doc/layout.md +30 -0
  270. package/package.json +1 -1
  271. package/src/accordion.tsx +1 -21
  272. package/src/boxed.tsx +6 -2
  273. package/src/community/skins/cyber-skin.tsx +41 -4
  274. package/src/feedback.tsx +36 -29
  275. package/src/icons/icon-error.tsx +17 -1
  276. package/src/icons/icon-info.tsx +22 -1
  277. package/src/icons/icon-stepper-success-vivo.tsx +58 -0
  278. package/src/icons/icon-success-vivo-new.tsx +1 -0
  279. package/src/icons/icon-success-vivo.tsx +1 -0
  280. package/src/icons/icon-success.tsx +56 -37
  281. package/src/index.tsx +4 -0
  282. package/src/list.css.ts +20 -0
  283. package/src/list.tsx +9 -3
  284. package/src/message.css.ts +148 -0
  285. package/src/message.tsx +303 -0
  286. package/src/package-version.tsx +1 -1
  287. package/src/pagination.css.ts +15 -18
  288. package/src/pagination.tsx +100 -102
  289. package/src/skins/blau.tsx +31 -0
  290. package/src/skins/defaults.tsx +11 -0
  291. package/src/skins/esimflag.tsx +31 -0
  292. package/src/skins/movistar.tsx +31 -0
  293. package/src/skins/o2.tsx +32 -0
  294. package/src/skins/skin-contract.css.ts +13 -0
  295. package/src/skins/telefonica.tsx +39 -8
  296. package/src/skins/types/colors.tsx +10 -0
  297. package/src/skins/types/index.tsx +3 -0
  298. package/src/skins/vivo-evolution.tsx +33 -2
  299. package/src/skins/vivo.tsx +31 -0
  300. package/src/stepper.tsx +16 -6
  301. package/src/text-tokens.tsx +14 -0
  302. package/src/tooltip.tsx +5 -2
@@ -40,105 +40,125 @@ export type PaginationProps = {
40
40
  'aria-label'?: string;
41
41
  };
42
42
 
43
- type PageItem = {type: 'page'; page: number; current: boolean};
44
- type EllipsisItem = {type: 'ellipsis'};
45
- type PaginationItem = ExclusifyUnion<PageItem | EllipsisItem>;
43
+ type Visibility = 'desktop' | 'mobile' | 'any';
44
+ type ResponsivePaginationItem = ExclusifyUnion<
45
+ {type: 'page'; page: number; current: boolean} | {type: 'ellipsis'}
46
+ > & {visibility: Visibility};
46
47
 
47
48
  const DEFAULT_SURROUNDING_PAGE_COUNT = 1;
48
49
  const FIRST_PAGE = 1;
49
-
50
- const clamp = (value: number, min: number, max: number): number => Math.min(Math.max(value, min), max);
51
-
52
- export const getPaginationItems = ({
50
+ const DESKTOP_BOUNDARY_SLOT_COUNT = 4;
51
+ const MOBILE_BOUNDARY_SLOT_COUNT = 2;
52
+
53
+ const getVisibility = (desktop: boolean, mobile: boolean): Visibility =>
54
+ desktop && mobile ? 'any' : desktop ? 'desktop' : 'mobile';
55
+
56
+ /**
57
+ * Creates one ordered list with viewport-specific visibility for pages and ellipses.
58
+ * With 20 pages and current page 10, desktop shows [1, ..., 9, 10, 11, ..., 20]
59
+ * and mobile shows [..., 9, 10, 11, ...]; only pages 1 and 20 are desktop-only.
60
+ */
61
+ const getResponsivePaginationItems = ({
53
62
  totalPages,
54
63
  currentPage,
55
64
  surroundingPageCount = DEFAULT_SURROUNDING_PAGE_COUNT,
56
- includeBoundaryPages = true,
57
65
  }: {
58
66
  totalPages: number;
59
67
  currentPage: number;
60
68
  surroundingPageCount?: number;
61
- includeBoundaryPages?: boolean;
62
- }): Array<PaginationItem> => {
69
+ }): Array<ResponsivePaginationItem> => {
63
70
  if (totalPages <= 1) {
64
71
  return [];
65
72
  }
66
73
 
67
- const activePage = clamp(currentPage, FIRST_PAGE, totalPages);
68
- const surroundingCount = clamp(Math.floor(surroundingPageCount), 0, totalPages);
74
+ const activePage = Math.min(Math.max(currentPage, FIRST_PAGE), totalPages);
75
+ const surroundingCount = Math.min(Math.max(Math.floor(surroundingPageCount), 0), totalPages);
69
76
  const dynamicPageCount = 2 * surroundingCount + 1;
77
+ const createPageRange = (start: number, end: number): Array<number> =>
78
+ Array.from({length: Math.max(0, end - start + 1)}, (_, index) => start + index);
70
79
 
71
- if (totalPages <= dynamicPageCount) {
72
- return Array.from({length: totalPages}, (_, index) => {
73
- const page = index + FIRST_PAGE;
74
- return {type: 'page', page, current: page === activePage};
75
- });
76
- }
77
-
78
- const lastPage = totalPages;
79
- const createPageItem = (page: number): PaginationItem => ({
80
- type: 'page',
81
- page,
82
- current: page === activePage,
83
- });
84
- const createPageRange = (start: number, end: number): Array<PaginationItem> =>
85
- Array.from({length: Math.max(0, end - start + 1)}, (_, index) => createPageItem(start + index));
86
-
87
- if (!includeBoundaryPages) {
88
- const rangeStart = Math.max(
89
- Math.min(activePage - surroundingCount, lastPage - dynamicPageCount),
90
- FIRST_PAGE + 1
91
- );
92
- const rangeEnd = rangeStart + dynamicPageCount - 1;
93
- const items: Array<PaginationItem> = [];
94
-
95
- if (rangeStart > FIRST_PAGE + 1) {
96
- items.push({type: 'ellipsis'});
97
- } else {
98
- items.push(createPageItem(FIRST_PAGE));
99
- }
100
-
101
- items.push(...createPageRange(rangeStart, rangeEnd));
102
-
103
- if (rangeEnd < lastPage - 1) {
104
- items.push({type: 'ellipsis'});
105
- } else if (rangeEnd < lastPage) {
106
- items.push(createPageItem(lastPage));
107
- }
108
-
109
- return items;
110
- }
111
-
112
- const rangeStart = Math.max(
113
- Math.min(activePage - surroundingCount, lastPage - dynamicPageCount - 1),
80
+ const desktopRangeStart = Math.max(
81
+ Math.min(activePage - surroundingCount, totalPages - dynamicPageCount - 1),
114
82
  FIRST_PAGE + 2
115
83
  );
116
- const rangeEnd = Math.min(
84
+ const desktopRangeEnd = Math.min(
117
85
  Math.max(activePage + surroundingCount, FIRST_PAGE + dynamicPageCount + 1),
118
- lastPage - 2
86
+ totalPages - 2
87
+ );
88
+ const desktopPages = new Set(
89
+ totalPages <= dynamicPageCount + DESKTOP_BOUNDARY_SLOT_COUNT
90
+ ? createPageRange(FIRST_PAGE, totalPages)
91
+ : [
92
+ FIRST_PAGE,
93
+ ...(desktopRangeStart > FIRST_PAGE + 2 ? [] : [FIRST_PAGE + 1]),
94
+ ...createPageRange(desktopRangeStart, desktopRangeEnd),
95
+ ...(desktopRangeEnd < totalPages - 2 ? [] : [totalPages - 1]),
96
+ totalPages,
97
+ ]
119
98
  );
120
99
 
121
- const items: Array<PaginationItem> = [createPageItem(FIRST_PAGE)];
100
+ const mobileRangeStart = Math.max(
101
+ Math.min(activePage - surroundingCount, totalPages - dynamicPageCount),
102
+ FIRST_PAGE + 1
103
+ );
104
+ const mobileRangeEnd = mobileRangeStart + dynamicPageCount - 1;
105
+ const mobilePages = new Set(
106
+ totalPages <= dynamicPageCount + MOBILE_BOUNDARY_SLOT_COUNT
107
+ ? createPageRange(FIRST_PAGE, totalPages)
108
+ : [
109
+ ...(mobileRangeStart > FIRST_PAGE + 1 ? [] : [FIRST_PAGE]),
110
+ ...createPageRange(mobileRangeStart, mobileRangeEnd),
111
+ ...(mobileRangeEnd < totalPages - 1 ? [] : [totalPages]),
112
+ ]
113
+ );
122
114
 
123
- if (rangeStart > FIRST_PAGE + 2) {
124
- items.push({type: 'ellipsis'});
125
- } else {
126
- items.push(createPageItem(FIRST_PAGE + 1));
115
+ const items: Array<ResponsivePaginationItem> = [];
116
+ let lastDesktopPage = FIRST_PAGE - 1;
117
+ let lastMobilePage = FIRST_PAGE - 1;
118
+ let hasDesktopEllipsis = false;
119
+ let hasMobileEllipsis = false;
120
+
121
+ for (const page of [...new Set([...desktopPages, ...mobilePages])].sort((a, b) => a - b)) {
122
+ const isDesktop = desktopPages.has(page);
123
+ const isMobile = mobilePages.has(page);
124
+ const needsDesktopEllipsis: boolean =
125
+ !hasDesktopEllipsis && (!isDesktop || page > lastDesktopPage + 1);
126
+ const needsMobileEllipsis: boolean = !hasMobileEllipsis && (!isMobile || page > lastMobilePage + 1);
127
+
128
+ if ((isDesktop && needsDesktopEllipsis) || (isMobile && needsMobileEllipsis)) {
129
+ items.push({
130
+ type: 'ellipsis',
131
+ visibility: getVisibility(needsDesktopEllipsis, needsMobileEllipsis),
132
+ });
133
+ hasDesktopEllipsis ||= needsDesktopEllipsis;
134
+ hasMobileEllipsis ||= needsMobileEllipsis;
135
+ }
136
+ items.push({
137
+ type: 'page',
138
+ page,
139
+ current: page === activePage,
140
+ visibility: getVisibility(isDesktop, isMobile),
141
+ });
142
+ if (isDesktop) {
143
+ lastDesktopPage = page;
144
+ hasDesktopEllipsis = false;
145
+ }
146
+ if (isMobile) {
147
+ lastMobilePage = page;
148
+ hasMobileEllipsis = false;
149
+ }
127
150
  }
128
151
 
129
- items.push(...createPageRange(rangeStart, rangeEnd));
130
-
131
- if (rangeEnd < lastPage - 2) {
132
- items.push({type: 'ellipsis'});
133
- } else {
134
- items.push(createPageItem(lastPage - 1));
152
+ const needsDesktopEllipsis = lastDesktopPage < totalPages && !hasDesktopEllipsis;
153
+ const needsMobileEllipsis = lastMobilePage < totalPages && !hasMobileEllipsis;
154
+ if (needsDesktopEllipsis || needsMobileEllipsis) {
155
+ items.push({type: 'ellipsis', visibility: getVisibility(needsDesktopEllipsis, needsMobileEllipsis)});
135
156
  }
136
-
137
- items.push(createPageItem(lastPage));
138
-
139
157
  return items;
140
158
  };
141
159
 
160
+ const clamp = (value: number, min: number, max: number): number => Math.min(Math.max(value, min), max);
161
+
142
162
  const PaginationLabel = ({children}: {children: React.ReactNode}): JSX.Element => {
143
163
  return (
144
164
  <Text3 as="span" medium color="currentColor" wordBreak={false}>
@@ -159,13 +179,12 @@ const getEllipsisColor = (variant: NonDeprecatedVariant): string => {
159
179
  };
160
180
 
161
181
  type PageListProps = {
162
- items: Array<PaginationItem>;
182
+ items: Array<ResponsivePaginationItem>;
163
183
  disabled?: boolean;
164
- className?: string;
165
184
  onPageClick: (page: number) => void;
166
185
  };
167
186
 
168
- const PageList = ({items, disabled, className, onPageClick}: PageListProps): JSX.Element => {
187
+ const PageList = ({items, disabled, onPageClick}: PageListProps): JSX.Element => {
169
188
  const {texts, t} = useTheme();
170
189
  const variant = useThemeVariant();
171
190
  const goToPageLabel = (page: number) =>
@@ -174,11 +193,12 @@ const PageList = ({items, disabled, className, onPageClick}: PageListProps): JSX
174
193
  t(texts.paginationCurrentPage || tokens.paginationCurrentPage, String(page));
175
194
 
176
195
  return (
177
- <ol className={classnames(styles.pageList, className)}>
196
+ <ol className={styles.pageList}>
178
197
  {items.map((item, index) => {
198
+ const className = classnames(styles.pageListItem, styles.itemVisibility[item.visibility]);
179
199
  if (item.type === 'ellipsis') {
180
200
  return (
181
- <li key={`ellipsis-${index}`} className={styles.pageListItem} aria-hidden="true">
201
+ <li key={`ellipsis-${index}`} className={className} aria-hidden="true">
182
202
  <Text3 as="span" medium color={getEllipsisColor(variant)} wordBreak={false}>
183
203
  ...
184
204
  </Text3>
@@ -188,7 +208,7 @@ const PageList = ({items, disabled, className, onPageClick}: PageListProps): JSX
188
208
 
189
209
  if (item.current) {
190
210
  return (
191
- <li key={item.page} className={styles.pageListItem}>
211
+ <li key={item.page} className={className}>
192
212
  <Touchable
193
213
  className={classnames(
194
214
  styles.currentPage,
@@ -208,7 +228,7 @@ const PageList = ({items, disabled, className, onPageClick}: PageListProps): JSX
208
228
  }
209
229
 
210
230
  return (
211
- <li key={item.page} className={styles.pageListItem}>
231
+ <li key={item.page} className={className}>
212
232
  <Touchable
213
233
  className={classnames(styles.pageButton, styles.pageButtonVariants[variant])}
214
234
  disabled={disabled}
@@ -281,17 +301,10 @@ export const Pagination = ({
281
301
 
282
302
  const isPrevDisabled = activePage <= 1;
283
303
  const isNextDisabled = activePage >= totalPages;
284
- const desktopItems = getPaginationItems({
285
- totalPages,
286
- currentPage: activePage,
287
- surroundingPageCount,
288
- includeBoundaryPages: true,
289
- });
290
- const mobileItems = getPaginationItems({
304
+ const items = getResponsivePaginationItems({
291
305
  totalPages,
292
306
  currentPage: activePage,
293
307
  surroundingPageCount,
294
- includeBoundaryPages: false,
295
308
  });
296
309
 
297
310
  return (
@@ -328,22 +341,7 @@ export const Pagination = ({
328
341
  </ButtonLink>
329
342
  ))}
330
343
 
331
- {!hidePageList && (
332
- <>
333
- <PageList
334
- items={desktopItems}
335
- disabled={disabled}
336
- className={styles.pageListDesktop}
337
- onPageClick={goToPage}
338
- />
339
- <PageList
340
- items={mobileItems}
341
- disabled={disabled}
342
- className={styles.pageListMobile}
343
- onPageClick={goToPage}
344
- />
345
- </>
346
- )}
344
+ {!hidePageList && <PageList items={items} disabled={disabled} onPageClick={goToPage} />}
347
345
  {!hideNavigationControls &&
348
346
  (mode === 'iconOnly' ? (
349
347
  <IconButton
@@ -99,6 +99,16 @@ export const getBlauSkin: GetKnownSkin = () => {
99
99
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
100
100
  backgroundDropZoneMediaHover: applyAlpha(palette.grey6, 0.05),
101
101
  backgroundDropZoneMediaDragover: applyAlpha(palette.grey6, 0.08),
102
+ messageBubbleBackgroundOutgoing: palette.grey1,
103
+ messageBubbleBackgroundOutgoingBrand: palette.grey1,
104
+ messageBubbleBackgroundOutgoingAlternative: palette.grey1,
105
+ messageBubbleBackgroundOutgoingNegative: palette.grey1,
106
+ messageBubbleBackgroundOutgoingMedia: palette.grey1,
107
+ messageBubbleBackgroundIncoming: palette.blauBluePrimary20,
108
+ messageBubbleBackgroundIncomingBrand: palette.white,
109
+ messageBubbleBackgroundIncomingAlternative: palette.white,
110
+ messageBubbleBackgroundIncomingNegative: palette.white,
111
+ messageBubbleBackgroundIncomingMedia: palette.white,
102
112
  skeletonWave: palette.grey2,
103
113
  borderLow: palette.grey1,
104
114
  border: palette.grey3,
@@ -408,6 +418,16 @@ export const getBlauSkin: GetKnownSkin = () => {
408
418
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.15),
409
419
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
410
420
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
421
+ messageBubbleBackgroundOutgoing: palette.darkModeGrey,
422
+ messageBubbleBackgroundOutgoingBrand: palette.darkModeGrey,
423
+ messageBubbleBackgroundOutgoingAlternative: palette.darkModeGrey,
424
+ messageBubbleBackgroundOutgoingNegative: palette.darkModeGrey,
425
+ messageBubbleBackgroundOutgoingMedia: palette.darkModeGrey,
426
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
427
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
428
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
429
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
430
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
411
431
  skeletonWave: palette.grey5,
412
432
  borderLow: palette.darkModeBlack,
413
433
  border: palette.darkModeGrey,
@@ -713,6 +733,16 @@ export const getBlauSkin: GetKnownSkin = () => {
713
733
  size: {desktop: 28, mobile: 20},
714
734
  weight: 'light',
715
735
  },
736
+ feedbackScreenDescription: {
737
+ lineHeight: {desktop: 24, mobile: 24},
738
+ size: {desktop: 18, mobile: 16},
739
+ weight: 'regular',
740
+ },
741
+ feedbackScreenTitle: {
742
+ lineHeight: {desktop: 40, mobile: 32},
743
+ size: {desktop: 32, mobile: 24},
744
+ weight: 'light',
745
+ },
716
746
  headerPretitle: {
717
747
  lineHeight: {desktop: 24, mobile: 24},
718
748
  size: {desktop: 18, mobile: 16},
@@ -790,6 +820,7 @@ export const getBlauSkin: GetKnownSkin = () => {
790
820
  },
791
821
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
792
822
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
823
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
793
824
  },
794
825
  };
795
826
  return skin;
@@ -39,6 +39,16 @@ export const defaultTextPresetsConfig: TextPresetsConfig = {
39
39
  size: {desktop: 28, mobile: 20},
40
40
  weight: 'bold',
41
41
  },
42
+ feedbackScreenDescription: {
43
+ lineHeight: {desktop: 24, mobile: 24},
44
+ size: {desktop: 18, mobile: 16},
45
+ weight: 'regular',
46
+ },
47
+ feedbackScreenTitle: {
48
+ lineHeight: {desktop: 40, mobile: 32},
49
+ size: {desktop: 32, mobile: 24},
50
+ weight: 'light',
51
+ },
42
52
  title1: {
43
53
  lineHeight: {desktop: 20, mobile: 16},
44
54
  size: {desktop: 14, mobile: 12},
@@ -133,5 +143,6 @@ export const defaultSpacing: SpacingConfig = {
133
143
  right: {mobile: 16, desktop: 24},
134
144
  },
135
145
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
146
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
136
147
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
137
148
  };
@@ -103,6 +103,16 @@ export const getEsimflagSkin: GetKnownSkin = () => {
103
103
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
104
104
  backgroundDropZoneMediaHover: applyAlpha(palette.blue55, 0.2),
105
105
  backgroundDropZoneMediaDragover: applyAlpha(palette.blue55, 0.4),
106
+ messageBubbleBackgroundOutgoing: palette.blue10,
107
+ messageBubbleBackgroundOutgoingBrand: palette.blue10,
108
+ messageBubbleBackgroundOutgoingAlternative: palette.blue10,
109
+ messageBubbleBackgroundOutgoingNegative: palette.blue10,
110
+ messageBubbleBackgroundOutgoingMedia: palette.blue10,
111
+ messageBubbleBackgroundIncoming: palette.grey1,
112
+ messageBubbleBackgroundIncomingBrand: palette.white,
113
+ messageBubbleBackgroundIncomingAlternative: palette.white,
114
+ messageBubbleBackgroundIncomingNegative: palette.white,
115
+ messageBubbleBackgroundIncomingMedia: palette.white,
106
116
  skeletonWave: palette.grey2,
107
117
  borderLow: palette.grey1,
108
118
  border: palette.grey3,
@@ -413,6 +423,16 @@ export const getEsimflagSkin: GetKnownSkin = () => {
413
423
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.08),
414
424
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
415
425
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
426
+ messageBubbleBackgroundOutgoing: palette.darkModeGrey6,
427
+ messageBubbleBackgroundOutgoingBrand: palette.darkModeGrey6,
428
+ messageBubbleBackgroundOutgoingAlternative: palette.darkModeGrey6,
429
+ messageBubbleBackgroundOutgoingNegative: palette.darkModeGrey6,
430
+ messageBubbleBackgroundOutgoingMedia: palette.darkModeGrey6,
431
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
432
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
433
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
434
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
435
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
416
436
  borderLow: palette.darkModeBlack,
417
437
  border: palette.darkModeGrey,
418
438
  borderHigh: palette.grey5,
@@ -717,6 +737,16 @@ export const getEsimflagSkin: GetKnownSkin = () => {
717
737
  size: {desktop: 28, mobile: 20},
718
738
  weight: 'bold',
719
739
  },
740
+ feedbackScreenDescription: {
741
+ lineHeight: {desktop: 24, mobile: 24},
742
+ size: {desktop: 18, mobile: 16},
743
+ weight: 'regular',
744
+ },
745
+ feedbackScreenTitle: {
746
+ lineHeight: {desktop: 40, mobile: 32},
747
+ size: {desktop: 32, mobile: 24},
748
+ weight: 'bold',
749
+ },
720
750
  headerPretitle: {
721
751
  lineHeight: {desktop: 24, mobile: 24},
722
752
  size: {desktop: 18, mobile: 16},
@@ -794,6 +824,7 @@ export const getEsimflagSkin: GetKnownSkin = () => {
794
824
  },
795
825
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
796
826
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
827
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
797
828
  },
798
829
  };
799
830
  return skin;
@@ -110,6 +110,16 @@ export const getMovistarSkin: GetKnownSkin = () => {
110
110
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
111
111
  backgroundDropZoneMediaHover: applyAlpha(palette.movistarBlack, 0.2),
112
112
  backgroundDropZoneMediaDragover: applyAlpha(palette.movistarBlack, 0.4),
113
+ messageBubbleBackgroundOutgoing: palette.blueLight,
114
+ messageBubbleBackgroundOutgoingBrand: palette.blueLight,
115
+ messageBubbleBackgroundOutgoingAlternative: palette.blueLight,
116
+ messageBubbleBackgroundOutgoingNegative: palette.blueLight,
117
+ messageBubbleBackgroundOutgoingMedia: palette.blueLight,
118
+ messageBubbleBackgroundIncoming: palette.grey100,
119
+ messageBubbleBackgroundIncomingBrand: palette.white,
120
+ messageBubbleBackgroundIncomingAlternative: palette.white,
121
+ messageBubbleBackgroundIncomingNegative: palette.white,
122
+ messageBubbleBackgroundIncomingMedia: palette.white,
113
123
  skeletonWave: palette.grey200,
114
124
  borderLow: palette.grey100,
115
125
  border: palette.grey300,
@@ -419,6 +429,16 @@ export const getMovistarSkin: GetKnownSkin = () => {
419
429
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.05),
420
430
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
421
431
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
432
+ messageBubbleBackgroundOutgoing: palette.blueDark,
433
+ messageBubbleBackgroundOutgoingBrand: palette.blueDark,
434
+ messageBubbleBackgroundOutgoingAlternative: palette.blueDark,
435
+ messageBubbleBackgroundOutgoingNegative: palette.blueDark,
436
+ messageBubbleBackgroundOutgoingMedia: palette.blueDark,
437
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
438
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
439
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
440
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
441
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
422
442
  skeletonWave: palette.grey600,
423
443
  borderLow: palette.darkModeBlack,
424
444
  border: palette.darkModeGrey,
@@ -724,6 +744,16 @@ export const getMovistarSkin: GetKnownSkin = () => {
724
744
  size: {desktop: 20, mobile: 20},
725
745
  weight: 'bold',
726
746
  },
747
+ feedbackScreenDescription: {
748
+ lineHeight: {desktop: 24, mobile: 22},
749
+ size: {desktop: 18, mobile: 16},
750
+ weight: 'regular',
751
+ },
752
+ feedbackScreenTitle: {
753
+ lineHeight: {desktop: 32, mobile: 28},
754
+ size: {desktop: 28, mobile: 24},
755
+ weight: 'bold',
756
+ },
727
757
  headerPretitle: {
728
758
  lineHeight: {desktop: 24, mobile: 22},
729
759
  size: {desktop: 18, mobile: 16},
@@ -800,6 +830,7 @@ export const getMovistarSkin: GetKnownSkin = () => {
800
830
  right: {mobile: 16, desktop: 24},
801
831
  },
802
832
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
833
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
803
834
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
804
835
  },
805
836
  };
package/src/skins/o2.tsx CHANGED
@@ -11,6 +11,7 @@ import type {GetKnownSkin, KnownSkin} from './types';
11
11
 
12
12
  export const palette = {
13
13
  beyondBlue: '#0050FF',
14
+ beyondBlue5: '#F2F6FF',
14
15
  beyondBlue10: '#E5EDFF',
15
16
  beyondBlue15: '#CCDCFF',
16
17
  beyondBlue30: '#80A7FF',
@@ -106,6 +107,16 @@ export const getO2Skin: GetKnownSkin = () => {
106
107
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
107
108
  backgroundDropZoneMediaHover: applyAlpha(palette.beyondBlue90, 0.2),
108
109
  backgroundDropZoneMediaDragover: applyAlpha(palette.beyondBlue90, 0.4),
110
+ messageBubbleBackgroundOutgoing: palette.beyondBlue5,
111
+ messageBubbleBackgroundOutgoingBrand: palette.beyondBlue5,
112
+ messageBubbleBackgroundOutgoingAlternative: palette.beyondBlue5,
113
+ messageBubbleBackgroundOutgoingNegative: palette.beyondBlue5,
114
+ messageBubbleBackgroundOutgoingMedia: palette.beyondBlue5,
115
+ messageBubbleBackgroundIncoming: palette.grey20,
116
+ messageBubbleBackgroundIncomingBrand: palette.white,
117
+ messageBubbleBackgroundIncomingAlternative: palette.white,
118
+ messageBubbleBackgroundIncomingNegative: palette.white,
119
+ messageBubbleBackgroundIncomingMedia: palette.white,
109
120
  skeletonWave: palette.grey30,
110
121
  borderLow: palette.grey20,
111
122
  border: palette.grey30,
@@ -414,6 +425,16 @@ export const getO2Skin: GetKnownSkin = () => {
414
425
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.05),
415
426
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
416
427
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
428
+ messageBubbleBackgroundOutgoing: palette.darkModeGrey6,
429
+ messageBubbleBackgroundOutgoingBrand: palette.darkModeGrey6,
430
+ messageBubbleBackgroundOutgoingAlternative: palette.darkModeGrey6,
431
+ messageBubbleBackgroundOutgoingNegative: palette.darkModeGrey6,
432
+ messageBubbleBackgroundOutgoingMedia: palette.darkModeGrey6,
433
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
434
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
435
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
436
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
437
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
417
438
  navigationBarBackground: palette.darkModeBlack,
418
439
  skeletonWave: palette.grey80,
419
440
  borderLow: palette.darkModeBlack,
@@ -720,6 +741,16 @@ export const getO2Skin: GetKnownSkin = () => {
720
741
  size: {desktop: 28, mobile: 20},
721
742
  weight: 'bold',
722
743
  },
744
+ feedbackScreenDescription: {
745
+ lineHeight: {desktop: 24, mobile: 24},
746
+ size: {desktop: 18, mobile: 16},
747
+ weight: 'regular',
748
+ },
749
+ feedbackScreenTitle: {
750
+ lineHeight: {desktop: 40, mobile: 32},
751
+ size: {desktop: 32, mobile: 24},
752
+ weight: 'bold',
753
+ },
723
754
  headerPretitle: {
724
755
  lineHeight: {desktop: 24, mobile: 24},
725
756
  size: {desktop: 18, mobile: 16},
@@ -796,6 +827,7 @@ export const getO2Skin: GetKnownSkin = () => {
796
827
  right: {mobile: 16, desktop: 40},
797
828
  },
798
829
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
830
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
799
831
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
800
832
  },
801
833
  };
@@ -47,6 +47,16 @@ const colors: Colors = {
47
47
  backgroundDropZoneNegativeDragover: '',
48
48
  backgroundDropZoneMediaHover: '',
49
49
  backgroundDropZoneMediaDragover: '',
50
+ messageBubbleBackgroundOutgoing: '',
51
+ messageBubbleBackgroundOutgoingBrand: '',
52
+ messageBubbleBackgroundOutgoingAlternative: '',
53
+ messageBubbleBackgroundOutgoingNegative: '',
54
+ messageBubbleBackgroundOutgoingMedia: '',
55
+ messageBubbleBackgroundIncoming: '',
56
+ messageBubbleBackgroundIncomingBrand: '',
57
+ messageBubbleBackgroundIncomingAlternative: '',
58
+ messageBubbleBackgroundIncomingNegative: '',
59
+ messageBubbleBackgroundIncomingMedia: '',
50
60
  skeletonWave: '',
51
61
  borderLow: '',
52
62
  border: '',
@@ -376,6 +386,8 @@ const textPresets: ToThemeTokens<TextPresetsConfig> = {
376
386
  size: '',
377
387
  weight: '',
378
388
  },
389
+ feedbackScreenDescription: {lineHeight: '', size: '', weight: ''},
390
+ feedbackScreenTitle: {lineHeight: '', size: '', weight: ''},
379
391
  headerPretitle: {lineHeight: '', size: '', weight: ''},
380
392
  };
381
393
 
@@ -390,6 +402,7 @@ const spacing: ToThemeTokens<SpacingConfig> = {
390
402
  headerPadding: {top: '', bottom: ''},
391
403
  drawerPadding: {top: '', bottom: '', left: '', right: ''},
392
404
  boxedDefaultPadding: {left: '', right: ''},
405
+ boxedSmallPadding: {top: '', bottom: ''},
393
406
  responsiveLayoutMargin: '',
394
407
  };
395
408
 
@@ -107,6 +107,16 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
107
107
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.17),
108
108
  backgroundDropZoneMediaHover: applyAlpha(palette.telefonicaBlue80, 0.2),
109
109
  backgroundDropZoneMediaDragover: applyAlpha(palette.telefonicaBlue80, 0.4),
110
+ messageBubbleBackgroundOutgoing: palette.telefonicaBlue10,
111
+ messageBubbleBackgroundOutgoingBrand: palette.telefonicaBlue10,
112
+ messageBubbleBackgroundOutgoingAlternative: palette.telefonicaBlue10,
113
+ messageBubbleBackgroundOutgoingNegative: palette.telefonicaBlue10,
114
+ messageBubbleBackgroundOutgoingMedia: palette.telefonicaBlue10,
115
+ messageBubbleBackgroundIncoming: palette.grey1,
116
+ messageBubbleBackgroundIncomingBrand: palette.white,
117
+ messageBubbleBackgroundIncomingAlternative: palette.white,
118
+ messageBubbleBackgroundIncomingNegative: palette.white,
119
+ messageBubbleBackgroundIncomingMedia: palette.white,
110
120
  skeletonWave: palette.grey2,
111
121
  borderLow: palette.grey1,
112
122
  border: palette.grey2,
@@ -416,6 +426,16 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
416
426
  backgroundDropZoneNegativeDragover: applyAlpha(palette.white, 0.05),
417
427
  backgroundDropZoneMediaHover: applyAlpha(palette.white, 0.03),
418
428
  backgroundDropZoneMediaDragover: applyAlpha(palette.white, 0.05),
429
+ messageBubbleBackgroundOutgoing: palette.darkModeGrey6,
430
+ messageBubbleBackgroundOutgoingBrand: palette.darkModeGrey6,
431
+ messageBubbleBackgroundOutgoingAlternative: palette.darkModeGrey6,
432
+ messageBubbleBackgroundOutgoingNegative: palette.darkModeGrey6,
433
+ messageBubbleBackgroundOutgoingMedia: palette.darkModeGrey6,
434
+ messageBubbleBackgroundIncoming: palette.darkModeGrey,
435
+ messageBubbleBackgroundIncomingBrand: palette.darkModeGrey,
436
+ messageBubbleBackgroundIncomingAlternative: palette.darkModeGrey,
437
+ messageBubbleBackgroundIncomingNegative: palette.darkModeGrey,
438
+ messageBubbleBackgroundIncomingMedia: palette.darkModeGrey,
419
439
  skeletonWave: palette.grey8,
420
440
  borderLow: palette.darkModeBlack,
421
441
  border: palette.darkModeGrey,
@@ -682,18 +702,18 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
682
702
  },
683
703
  borderRadii: {
684
704
  avatar: '50%',
685
- bar: '0px',
705
+ bar: '999px',
686
706
  button: '32px',
687
- checkbox: '2px',
688
- container: '4px',
707
+ checkbox: '4px',
708
+ container: '20px',
689
709
  indicator: '24px',
690
710
  chip: '24px',
691
711
  tag: '24px',
692
- input: '8px',
693
- popup: '4px',
694
- sheet: '0px',
695
- mediaSmall: '2px',
696
- snackbar: '4px',
712
+ input: '12px',
713
+ popup: '12px',
714
+ sheet: '20px',
715
+ mediaSmall: '12px',
716
+ snackbar: '12px',
697
717
  },
698
718
  textPresets: {
699
719
  button: {weight: 'medium'},
@@ -721,6 +741,16 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
721
741
  size: {desktop: 28, mobile: 20},
722
742
  weight: 'regular',
723
743
  },
744
+ feedbackScreenDescription: {
745
+ lineHeight: {desktop: 24, mobile: 24},
746
+ size: {desktop: 18, mobile: 16},
747
+ weight: 'regular',
748
+ },
749
+ feedbackScreenTitle: {
750
+ lineHeight: {desktop: 40, mobile: 32},
751
+ size: {desktop: 32, mobile: 24},
752
+ weight: 'regular',
753
+ },
724
754
  headerPretitle: {
725
755
  lineHeight: {desktop: 24, mobile: 24},
726
756
  size: {desktop: 18, mobile: 16},
@@ -833,6 +863,7 @@ export const getTelefonicaSkin: GetKnownSkin = () => {
833
863
  right: {mobile: 16, desktop: 40},
834
864
  },
835
865
  boxedDefaultPadding: {left: {mobile: 16, desktop: 16}, right: {mobile: 16, desktop: 16}},
866
+ boxedSmallPadding: {top: {mobile: 8, desktop: 8}, bottom: {mobile: 8, desktop: 8}},
836
867
  responsiveLayoutMargin: {mobile: 16, desktop: 48},
837
868
  },
838
869
  };