@pushwoosh/smart-components-kit 1.24.0 → 2.0.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 (34) hide show
  1. package/CampaignsConfigurationDrawer/CampaignsConfigurationDrawer.js +4 -4
  2. package/CampaignsConfigurationDrawer/components/Card/styles.d.ts +3 -2
  3. package/CampaignsConfigurationDrawer/components/Card/styles.js +2 -2
  4. package/DynamicContentPicker/DynamicContentPicker.js +1 -1
  5. package/ExportCSV/ExportCsvBanner/ExportCsvBanner.js +1 -1
  6. package/LanguagesSelector/LanguagesSelectForm.d.ts +1 -5
  7. package/LanguagesSelector/LanguagesSelectForm.js +57 -48
  8. package/LanguagesSelector/polyglot/messages_ar.js +3 -2
  9. package/LanguagesSelector/polyglot/messages_bn.js +3 -2
  10. package/LanguagesSelector/polyglot/messages_de.js +3 -2
  11. package/LanguagesSelector/polyglot/messages_en.js +3 -2
  12. package/LanguagesSelector/polyglot/messages_es.js +3 -2
  13. package/LanguagesSelector/polyglot/messages_fr.js +3 -2
  14. package/LanguagesSelector/polyglot/messages_he.js +3 -2
  15. package/LanguagesSelector/polyglot/messages_hi.js +3 -2
  16. package/LanguagesSelector/polyglot/messages_ja.js +3 -2
  17. package/LanguagesSelector/polyglot/messages_ko.js +3 -2
  18. package/LanguagesSelector/polyglot/messages_pt.js +3 -2
  19. package/LanguagesSelector/polyglot/messages_ru.js +3 -2
  20. package/LanguagesSelector/polyglot/messages_th.js +3 -2
  21. package/LanguagesSelector/polyglot/messages_zh.js +3 -2
  22. package/LanguagesSelector/polyglot/types.d.ts +7 -2
  23. package/LanguagesSelector/styles.d.ts +3 -0
  24. package/LanguagesSelector/styles.js +5 -1
  25. package/LanguagesSelector/utils.d.ts +10 -0
  26. package/LanguagesSelector/utils.js +10 -0
  27. package/ModalCloningJourney/ModalCloningJourney.js +3 -3
  28. package/OpenActions/components/OpenActionsSummary/OpenActionsSummary.js +1 -1
  29. package/PlatformsConfigurationDrawer/components/DesktopPage/DesktopPage.js +6 -6
  30. package/PlatformsConfigurationDrawer/components/MainPage/MainPage.js +10 -10
  31. package/PlatformsConfigurationDrawer/components/MobilePage/MobilePage.js +8 -8
  32. package/ProductUpdates/ProductUpdateCard.js +1 -1
  33. package/Table/styles.js +1 -1
  34. package/package.json +5 -5
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Drawer, DrawerBody, DrawerHeader } from '@pushwoosh/dumb-components';
2
+ import { Drawer, DrawerBody, DrawerHeader, DrawerTitle } from '@pushwoosh/dumb-components';
3
3
  import { Columns, Horizontal, Vertical } from '@pushwoosh/kit-helpers';
4
4
  import { CloseIcon, EmailIcon, MobileIcon, PushIcon, SmsIcon, WhatsappIcon } from '@pushwoosh/kit-icons';
5
- import { H1, H3 } from '@pushwoosh/kit-typography';
5
+ import { H2 } from '@pushwoosh/kit-typography';
6
6
  import { Card } from './components/Card';
7
7
  import { useCanSendMessages } from './hooks';
8
8
  import { useLang } from './polyglot';
@@ -29,7 +29,7 @@ export function CampaignsConfigurationDrawer(props) {
29
29
  "$justifyContent": "space-between",
30
30
  "$alignItems": "center",
31
31
  "$margin": "0 0 4px",
32
- children: [_jsx(H1, {
32
+ children: [_jsx(DrawerTitle, {
33
33
  children: lang({
34
34
  message: 'SMART.CAMPAIGNS_CONFIGURATION_DRAWER.HEADING'
35
35
  })
@@ -66,7 +66,7 @@ export function CampaignsConfigurationDrawer(props) {
66
66
  })]
67
67
  }), _jsxs(Vertical, {
68
68
  "$gap": "8px",
69
- children: [_jsx(H3, {
69
+ children: [_jsx(H2, {
70
70
  children: lang({
71
71
  message: 'SMART.CAMPAIGNS_CONFIGURATION_DRAWER.ADVANCED_HEADING'
72
72
  })
@@ -1,4 +1,4 @@
1
- import { H4 } from '@pushwoosh/kit-typography';
1
+ import { H3 } from '@pushwoosh/kit-typography';
2
2
  export declare const Container: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "style"> & {
3
3
  style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
4
4
  }> & string;
@@ -8,6 +8,7 @@ export declare const IconWrap: import("styled-components/dist/types").IStyledCom
8
8
  export declare const Title: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref"> & {
9
9
  readonly boxRef?: import("react").Ref<HTMLHeadingElement>;
10
10
  readonly children: import("react").ReactNode;
11
+ readonly $textTransform?: import("react").CSSProperties["textTransform"];
11
12
  }, "style"> & {
12
13
  style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
13
- }> & string & Omit<typeof H4, keyof import("react").Component<any, {}, any>>;
14
+ }> & string & Omit<typeof H3, keyof import("react").Component<any, {}, any>>;
@@ -1,6 +1,6 @@
1
1
  import styled from 'styled-components';
2
2
  import { Color, ShapeRadius, Shadow } from '@pushwoosh/kit-constants';
3
- import { H4 } from '@pushwoosh/kit-typography';
3
+ import { H3 } from '@pushwoosh/kit-typography';
4
4
  export const Container = styled.a.withConfig({
5
5
  displayName: "Container",
6
6
  componentId: "sc-1r8stxq-0"
@@ -9,7 +9,7 @@ export const IconWrap = styled.div.withConfig({
9
9
  displayName: "IconWrap",
10
10
  componentId: "sc-1r8stxq-1"
11
11
  })(["padding:4px;border-radius:", ";background-color:", ";margin-bottom:8px;width:fit-content;"], ShapeRadius.CONTROL, Color.BRIGHT_LIGHT);
12
- export const Title = styled(H4).withConfig({
12
+ export const Title = styled(H3).withConfig({
13
13
  displayName: "Title",
14
14
  componentId: "sc-1r8stxq-2"
15
15
  })(["margin-bottom:2px;color:", ";"], Color.MAIN);
@@ -89,7 +89,7 @@ export const DynamicContentPicker = ({
89
89
  "$alignItems": "center",
90
90
  "$gap": 8,
91
91
  children: [icon && icon, _jsx(Text, {
92
- "$variant": "h4",
92
+ "$variant": "h3",
93
93
  children: title
94
94
  })]
95
95
  }), error && _jsxs(Horizontal, {
@@ -131,7 +131,7 @@ export const ExportCsvBanner = ({
131
131
  percentValue: progress,
132
132
  rightSlot: _jsx(Text, {
133
133
  "$color": Color.WARNING,
134
- "$variant": "h5",
134
+ "$variant": "h4",
135
135
  "$textTransform": "uppercase",
136
136
  children: lang({
137
137
  message: 'SMART.EXPORT_CSV.KEEP_PAGE_OPEN'
@@ -1,10 +1,6 @@
1
1
  import { type FC } from 'react';
2
2
  import { type LanguageAudience } from './platforms';
3
- type LanguageItem = {
4
- code: string;
5
- name: string;
6
- subscribers: number;
7
- };
3
+ import { type LanguageItem } from './utils';
8
4
  type LanguagesSelectProps = {
9
5
  allLanguageItems: LanguageItem[];
10
6
  langs: string[];
@@ -5,8 +5,9 @@ import { Color } from '@pushwoosh/kit-constants';
5
5
  import { Columns, Horizontal, Vertical } from '@pushwoosh/kit-helpers';
6
6
  import { Text } from '@pushwoosh/kit-typography';
7
7
  import { useLang } from './polyglot';
8
- import { ActionButton } from './styles';
9
- import { fetchLastSelection, useGetLangName } from './utils';
8
+ import { ActionButton, HiddenMatchesHint } from './styles';
9
+ import { fetchLastSelection, splitLanguageMatches, useGetLangName } from './utils';
10
+ const HIDDEN_MATCHES_PREVIEW = 5;
10
11
  const AUDIENCE_HINT_MESSAGE = {
11
12
  email: 'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL',
12
13
  sms: 'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS',
@@ -27,16 +28,11 @@ export const LanguagesSelectForm = ({
27
28
  const getLangName = useGetLangName(systemLanguage);
28
29
  const [lastSelection] = useState(fetchLastSelection);
29
30
  const [search, setSearch] = useState('');
30
- const [showAllLanguages, setShowAllLanguages] = useState(false);
31
- const filteredLanguages = useMemo(() => {
32
- const languageItems = showAllLanguages ? allLanguageItems : allLanguageItems.filter(item => item.subscribers > 0 || langs.includes(item.code));
33
- if (!search) {
34
- return languageItems;
35
- }
36
- return languageItems.filter(item => {
37
- return item.name.toLowerCase().includes(search.toLowerCase());
38
- });
39
- }, [allLanguageItems, search, showAllLanguages, langs]);
31
+ const [includeWithoutDevices, setIncludeWithoutDevices] = useState(false);
32
+ const {
33
+ visible: filteredLanguages,
34
+ hidden: hiddenMatches
35
+ } = useMemo(() => splitLanguageMatches(allLanguageItems, langs, search, includeWithoutDevices), [allLanguageItems, langs, search, includeWithoutDevices]);
40
36
  return _jsxs(Vertical, {
41
37
  "$gap": 8,
42
38
  children: [_jsx(Text, {
@@ -54,6 +50,7 @@ export const LanguagesSelectForm = ({
54
50
  })
55
51
  }), _jsxs(Horizontal, {
56
52
  "$justifyContent": "space-between",
53
+ "$alignItems": "center",
57
54
  children: [_jsxs(Horizontal, {
58
55
  "$gap": 16,
59
56
  "$justifyContent": "start",
@@ -71,47 +68,59 @@ export const LanguagesSelectForm = ({
71
68
  children: lang({
72
69
  message: 'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL'
73
70
  })
71
+ }), lastSelection.length > 0 && _jsx(ActionButton, {
72
+ onClick: () => {
73
+ onChange(lastSelection);
74
+ },
75
+ children: lang({
76
+ message: 'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST'
77
+ })
74
78
  })]
75
- }), lastSelection.length > 0 && _jsx(ActionButton, {
76
- onClick: () => {
77
- onChange(lastSelection);
78
- },
79
- children: lang({
80
- message: 'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST'
79
+ }), _jsx(Checkbox, {
80
+ name: "includeWithoutDevices",
81
+ isChecked: includeWithoutDevices,
82
+ onChange: setIncludeWithoutDevices,
83
+ label: lang({
84
+ message: 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES'
81
85
  })
82
86
  })]
83
- }), _jsxs(Vertical, {
84
- "$gap": 24,
85
- children: [_jsx(Columns, {
86
- "$sizes": 3,
87
- "$gap": 8,
88
- children: filteredLanguages.map(item => _jsx(Checkbox, {
89
- name: "languages",
90
- value: item.code,
91
- isChecked: langs.includes(item.code),
92
- onChange: isChecked => {
93
- if (isChecked) {
94
- onChange([...langs, item.code]);
95
- } else {
96
- onChange(langs.filter(code => code !== item.code));
97
- }
98
- },
99
- label: lang({
100
- message: 'SMART.LANGUAGES_SELECTOR.CHECKBOX_LABEL',
101
- name: getLangName(item.code),
102
- subscribers: item.subscribers
103
- })
104
- }, item.code))
105
- }), _jsx("div", {
106
- children: _jsx(ActionButton, {
107
- onClick: () => setShowAllLanguages(x => !x),
108
- children: showAllLanguages ? lang({
109
- message: 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS'
110
- }) : lang({
111
- message: 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL'
112
- })
87
+ }), hiddenMatches.length > 0 && _jsxs(HiddenMatchesHint, {
88
+ children: [_jsxs(Text, {
89
+ "$variant": "footnote",
90
+ "$color": Color.MAIN,
91
+ children: [filteredLanguages.length === 0 && `${lang({
92
+ message: 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES',
93
+ search: search.trim()
94
+ })} `, lang({
95
+ message: 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST',
96
+ names: hiddenMatches.slice(0, HIDDEN_MATCHES_PREVIEW).map(item => item.name).join(', ') + (hiddenMatches.length > HIDDEN_MATCHES_PREVIEW ? ', …' : '')
97
+ })]
98
+ }), _jsx(ActionButton, {
99
+ onClick: () => setIncludeWithoutDevices(true),
100
+ children: lang({
101
+ message: 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES'
113
102
  })
114
103
  })]
104
+ }), _jsx(Columns, {
105
+ "$sizes": 3,
106
+ "$gap": 8,
107
+ children: filteredLanguages.map(item => _jsx(Checkbox, {
108
+ name: "languages",
109
+ value: item.code,
110
+ isChecked: langs.includes(item.code),
111
+ onChange: isChecked => {
112
+ if (isChecked) {
113
+ onChange([...langs, item.code]);
114
+ } else {
115
+ onChange(langs.filter(code => code !== item.code));
116
+ }
117
+ },
118
+ label: lang({
119
+ message: 'SMART.LANGUAGES_SELECTOR.CHECKBOX_LABEL',
120
+ name: getLangName(item.code),
121
+ subscribers: item.subscribers
122
+ })
123
+ }, item.code))
115
124
  })]
116
125
  });
117
126
  };
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'تحديد الكل',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'إلغاء تحديد الكل',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'إعادة استخدام التحديد الأخير',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'عرض كل اللغات',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'عرض اللغات التي لديها مشتركون فقط',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'تضمين اللغات التي لا توجد بها أجهزة',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'لا توجد لغات بها أجهزة تطابق "{{search}}".',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'لغات بلا أجهزة تطابق البحث: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'تمثل الأرقام جهات اتصال البريد الإلكتروني التي يحتوي وسم Language لديها على هذه القيمة.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'تمثل الأرقام جهات اتصال SMS التي يحتوي وسم Language لديها على هذه القيمة.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'تمثل الأرقام جهات اتصال LINE التي يحتوي وسم Language لديها على هذه القيمة.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'সব নির্বাচন',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'সব অনির্বাচন',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'শেষ নির্বাচন পুনরায় ব্যবহার',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'সব ভাষা দেখান',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'শুধু সাবস্ক্রাইবারসহ ভাষা দেখান',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'ডিভাইস নেই এমন ভাষাগুলিও দেখান',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'ডিভাইস আছে এমন কোনো ভাষা “{{search}}”-এর সাথে মেলে না।',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'মিলে যাওয়া ডিভাইসবিহীন ভাষা: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'সংখ্যাগুলো হলো সেই ইমেল কন্টাক্ট, যাদের Language Tag-এ এই মান রয়েছে।',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'সংখ্যাগুলো হলো সেই SMS কন্টাক্ট, যাদের Language Tag-এ এই মান রয়েছে।',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'সংখ্যাগুলো হলো সেই LINE কন্টাক্ট, যাদের Language Tag-এ এই মান রয়েছে।',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'alle auswählen',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'alle abwählen',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'letzte Auswahl übernehmen',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Alle Sprachen anzeigen',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Nur Sprachen mit Abonnenten anzeigen',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Sprachen ohne Geräte einbeziehen',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'Keine Sprachen mit Geräten passen zu „{{search}}“.',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Passende Sprachen ohne Geräte: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Zahlen sind E-Mail-Kontakte, deren Language-Tag diesen Wert hat.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Zahlen sind SMS-Kontakte, deren Language-Tag diesen Wert hat.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Zahlen sind LINE-Kontakte, deren Language-Tag diesen Wert hat.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'select all',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'deselect all',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'reuse last selection',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Show all languages',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Show only languages with subscribers',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Include languages without devices',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'No languages with devices match “{{search}}”.',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Languages without devices that match: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Numbers are email contacts whose Language tag holds this value.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Numbers are SMS contacts whose Language tag holds this value.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Numbers are LINE contacts whose Language tag holds this value.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'seleccionar todo',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'deseleccionar todo',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'reutilizar la última selección',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Mostrar todos los idiomas',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Mostrar solo idiomas con suscriptores',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Incluir idiomas sin dispositivos',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'Ningún idioma con dispositivos coincide con «{{search}}».',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Idiomas sin dispositivos que coinciden: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Los números son contactos de correo electrónico cuya etiqueta Language tiene este valor.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Los números son contactos de SMS cuya etiqueta Language tiene este valor.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Los números son contactos de LINE cuya etiqueta Language tiene este valor.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'tout sélectionner',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'tout désélectionner',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'réutiliser la dernière sélection',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Afficher toutes les langues',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Afficher uniquement les langues avec des abonnés',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Inclure les langues sans appareils',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'Aucune langue avec des appareils ne correspond à « {{search}} ».',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Langues sans appareils correspondantes : {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Les nombres correspondent aux contacts e-mail dont le tag Language a cette valeur.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Les nombres correspondent aux contacts SMS dont le tag Language a cette valeur.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Les nombres correspondent aux contacts LINE dont le tag Language a cette valeur.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'בחר הכול',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'בטל בחירת הכול',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'השתמש בבחירה האחרונה',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'הצג את כל השפות',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'הצג רק שפות עם מנויים',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'לכלול שפות ללא מכשירים',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'אין שפות עם מכשירים שתואמות ל-"{{search}}".',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'שפות ללא מכשירים שתואמות: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'המספרים הם אנשי קשר באימייל שתגית Language שלהם מכילה ערך זה.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'המספרים הם אנשי קשר ב-SMS שתגית Language שלהם מכילה ערך זה.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'המספרים הם אנשי קשר ב-LINE שתגית Language שלהם מכילה ערך זה.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'सभी चुनें',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'सभी अचयनित करें',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'पिछला चयन दोबारा उपयोग करें',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'सभी भाषाएँ दिखाएँ',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'केवल सब्सक्राइबर वाली भाषाएँ दिखाएँ',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'बिना डिवाइस वाली भाषाएँ भी शामिल करें',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'डिवाइस वाली कोई भाषा “{{search}}” से मेल नहीं खाती।',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'मेल खाने वाली बिना डिवाइस की भाषाएँ: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'संख्याएँ उन ईमेल संपर्कों की हैं जिनके Language Tag में यह मान है।',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'संख्याएँ उन SMS संपर्कों की हैं जिनके Language Tag में यह मान है।',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'संख्याएँ उन LINE संपर्कों की हैं जिनके Language Tag में यह मान है।',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'すべて選択',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'すべて解除',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': '前回の選択を再利用',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'すべての言語を表示',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': '購読者がいる言語のみ表示',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'デバイスのない言語も含める',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': '「{{search}}」に一致するデバイスのある言語はありません。',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': '一致するデバイスのない言語: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': '数値は、Language タグがこの値のメール連絡先の数です。',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': '数値は、Language タグがこの値のSMS 連絡先の数です。',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': '数値は、Language タグがこの値のLINE 連絡先の数です。',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': '모두 선택',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': '모두 선택 해제',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': '마지막 선택 재사용',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': '모든 언어 표시',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': '구독자가 있는 언어만 표시',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': '기기가 없는 언어 포함',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': '“{{search}}”와(과) 일치하는 기기 보유 언어가 없습니다.',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': '일치하는 기기 없는 언어: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': '숫자는 Language Tag 값이 이 값인 이메일 연락처 수입니다.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': '숫자는 Language Tag 값이 이 값인 SMS 연락처 수입니다.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': '숫자는 Language Tag 값이 이 값인 LINE 연락처 수입니다.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'selecionar tudo',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'desmarcar tudo',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'reutilizar a última seleção',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Mostrar todos os idiomas',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Mostrar apenas idiomas com assinantes',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Incluir idiomas sem dispositivos',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'Nenhum idioma com dispositivos corresponde a “{{search}}”.',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Idiomas sem dispositivos correspondentes: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Os números são contatos de e-mail cuja tag Language tem este valor.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Os números são contatos de SMS cuja tag Language tem este valor.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Os números são contatos do LINE cuja tag Language tem este valor.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'выбрать все',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'снять все',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'повторить прошлый выбор',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'Показать все языки',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'Только языки с подписчиками',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'Включить языки без устройств',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'Среди языков с устройствами нет совпадений с «{{search}}».',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'Совпадают языки без устройств: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'Числа — email-контакты, у которых тег Language равен этому значению.',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'Числа — SMS-контакты, у которых тег Language равен этому значению.',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'Числа — контакты LINE, у которых тег Language равен этому значению.',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': 'เลือกทั้งหมด',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': 'ยกเลิกการเลือกทั้งหมด',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': 'ใช้การเลือกล่าสุดอีกครั้ง',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': 'แสดงทุกภาษา',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': 'แสดงเฉพาะภาษาที่มีผู้ติดตาม',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': 'รวมภาษาที่ไม่มีอุปกรณ์',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': 'ไม่มีภาษาที่มีอุปกรณ์ตรงกับ “{{search}}”',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': 'ภาษาที่ไม่มีอุปกรณ์ซึ่งตรงกัน: {{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': 'ตัวเลขคือจำนวนผู้ติดต่ออีเมล ที่ Tag Language มีค่านี้',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': 'ตัวเลขคือจำนวนผู้ติดต่อ SMS ที่ Tag Language มีค่านี้',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': 'ตัวเลขคือจำนวนผู้ติดต่อ LINE ที่ Tag Language มีค่านี้',
@@ -6,8 +6,9 @@ export const messages = {
6
6
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': '全选',
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': '取消全选',
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': '沿用上次选择',
9
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': '显示所有语言',
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': '仅显示有订阅者的语言',
9
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': '包含没有设备的语言',
10
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': '没有含设备的语言与“{{search}}”匹配。',
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': '匹配的无设备语言:{{names}}',
11
12
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': '数字表示 Language 标签为此值的电子邮件联系人。',
12
13
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': '数字表示 Language 标签为此值的SMS 联系人。',
13
14
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': '数字表示 Language 标签为此值的LINE 联系人。',
@@ -7,8 +7,13 @@ export type LanguagesSelectorMessages = {
7
7
  'SMART.LANGUAGES_SELECTOR.ACTION.SELECT_ALL': NoParams;
8
8
  'SMART.LANGUAGES_SELECTOR.ACTION.DESELECT_ALL': NoParams;
9
9
  'SMART.LANGUAGES_SELECTOR.ACTION.REUSE_LAST': NoParams;
10
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_ALL': NoParams;
11
- 'SMART.LANGUAGES_SELECTOR.ACTION.SHOW_WITH_SUBSCRIBERS': NoParams;
10
+ 'SMART.LANGUAGES_SELECTOR.INCLUDE_WITHOUT_DEVICES': NoParams;
11
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.NONE_WITH_DEVICES': {
12
+ search: string;
13
+ };
14
+ 'SMART.LANGUAGES_SELECTOR.HIDDEN_MATCHES.LIST': {
15
+ names: string;
16
+ };
12
17
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.EMAIL': NoParams;
13
18
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.SMS': NoParams;
14
19
  'SMART.LANGUAGES_SELECTOR.AUDIENCE_HINT.LINE': NoParams;
@@ -47,3 +47,6 @@ export declare const ButtonGroup: import("styled-components/dist/types").IStyled
47
47
  export declare const ActionButton: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "style"> & {
48
48
  style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
49
49
  }> & string;
50
+ export declare const HiddenMatchesHint: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
51
+ style?: import("react").CSSProperties | import("styled-components/dist/types").CSSPropertiesWithVars | undefined;
52
+ }> & string;
@@ -8,4 +8,8 @@ export const ButtonGroup = styled(Horizontal).withConfig({
8
8
  export const ActionButton = styled.button.withConfig({
9
9
  displayName: "ActionButton",
10
10
  componentId: "sc-1damw8z-1"
11
- })(["display:grid;grid-auto-flow:column;align-items:center;gap:4px;text-transform:uppercase;color:", ";background-color:transparent;height:16px;padding:0;border:none;font-size:12px;font-style:normal;font-weight:500;line-height:16px;transition:box-shadow 0.5s;cursor:pointer;&:hover{color:", ";}&:active{box-shadow:inset 0 0 0 2em ", ";}"], Color.SOFT, Color.SOFT_HOVER, Color.SOFT_LIGHT);
11
+ })(["display:grid;grid-auto-flow:column;align-items:center;gap:4px;text-transform:uppercase;color:", ";background-color:transparent;height:16px;padding:0;border:none;font-size:12px;font-style:normal;font-weight:500;line-height:16px;transition:box-shadow 0.5s;cursor:pointer;&:hover{color:", ";}&:active{box-shadow:inset 0 0 0 2em ", ";}"], Color.SOFT, Color.SOFT_HOVER, Color.SOFT_LIGHT);
12
+ export const HiddenMatchesHint = styled.div.withConfig({
13
+ displayName: "HiddenMatchesHint",
14
+ componentId: "sc-1damw8z-2"
15
+ })(["display:grid;justify-items:start;gap:8px;padding:12px;border-radius:4px;background-color:", ";"], Color.FROZEN);
@@ -1,3 +1,13 @@
1
+ export type LanguageItem = {
2
+ code: string;
3
+ name: string;
4
+ subscribers: number;
5
+ };
6
+ /** Splits languages into the visible list and the search matches hidden only because they have no devices. */
7
+ export declare function splitLanguageMatches(items: LanguageItem[], selected: string[], search: string, includeWithoutDevices: boolean): {
8
+ visible: LanguageItem[];
9
+ hidden: LanguageItem[];
10
+ };
1
11
  /**
2
12
  * Normalizes a language code to its canonical form (e.g. `zh-hant` -> `zh-Hant`).
3
13
  * Canonicalization (rather than lowercasing) keeps codes in the same form that
@@ -1,6 +1,16 @@
1
1
  import { useState } from 'react';
2
2
  import { languages } from '@pushwoosh/kit-constants';
3
3
  import { LAST_SELECTION_KEY } from './constants';
4
+ /** Splits languages into the visible list and the search matches hidden only because they have no devices. */
5
+ export function splitLanguageMatches(items, selected, search, includeWithoutDevices) {
6
+ const query = search.trim().toLowerCase();
7
+ const matches = item => !query || item.name.toLowerCase().includes(query) || item.code.toLowerCase() === query;
8
+ const shown = item => includeWithoutDevices || item.subscribers > 0 || selected.includes(item.code);
9
+ return {
10
+ visible: items.filter(item => shown(item) && matches(item)),
11
+ hidden: query ? items.filter(item => !shown(item) && matches(item)) : []
12
+ };
13
+ }
4
14
  /**
5
15
  * Normalizes a language code to its canonical form (e.g. `zh-hant` -> `zh-Hant`).
6
16
  * Canonicalization (rather than lowercasing) keeps codes in the same form that
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { useForm, useWatch } from 'react-hook-form';
4
4
  import { useParams } from 'react-router-dom';
5
- import { FieldBox, Modal, ModalBody, ModalHeader, ModalFooter, NativeInput, Select, Button, Banner } from '@pushwoosh/dumb-components';
5
+ import { FieldBox, Modal, ModalBody, ModalHeader, ModalTitle, ModalFooter, NativeInput, Select, Button, Banner } from '@pushwoosh/dumb-components';
6
6
  import { Horizontal, trackEvent, useAsync, Vertical } from '@pushwoosh/kit-helpers';
7
- import { H3, Paragraph } from '@pushwoosh/kit-typography';
7
+ import { Paragraph } from '@pushwoosh/kit-typography';
8
8
  import { useSPAContext } from '@pushwoosh/spa-context';
9
9
  import { useLang } from './polyglot';
10
10
  export function ModalCloningJourney({
@@ -188,7 +188,7 @@ export function ModalCloningJourney({
188
188
  size: "medium",
189
189
  isOpen: isOpen,
190
190
  children: [_jsx(ModalHeader, {
191
- children: _jsx(H3, {
191
+ children: _jsx(ModalTitle, {
192
192
  children: lang({
193
193
  message: 'SMART.MODAL_CLONING_JOURNEY.HEADING'
194
194
  })
@@ -75,7 +75,7 @@ export const OpenActionsSummary = ({
75
75
  type: icon,
76
76
  color: Color.LOCKED
77
77
  }), _jsxs(Text, {
78
- "$variant": "h4",
78
+ "$variant": "h3",
79
79
  "$color": Color.LOCKED,
80
80
  "$textTransform": "uppercase",
81
81
  children: [labelText, ' ', label]
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Button } from '@pushwoosh/dumb-components';
2
+ import { Button, DrawerTitle } from '@pushwoosh/dumb-components';
3
3
  import { Color, AllPlatforms } from '@pushwoosh/kit-constants';
4
4
  import { Vertical, Columns } from '@pushwoosh/kit-helpers';
5
5
  import { ArrowRoundIcon, CloseIcon, PlatformLogoIcon } from '@pushwoosh/kit-icons';
6
- import { H2, H4, Text } from '@pushwoosh/kit-typography';
6
+ import { H3, Text } from '@pushwoosh/kit-typography';
7
7
  import { useLang } from '../../polyglot';
8
8
  import { ColumnsWrapper, BreadCrumbs, Header, Close, Card, CardIcon } from '../../styles';
9
9
  export function DesktopPage(props) {
@@ -31,7 +31,7 @@ export function DesktopPage(props) {
31
31
  size: "medium",
32
32
  view: "filled"
33
33
  })
34
- }), _jsx(H2, {
34
+ }), _jsx(DrawerTitle, {
35
35
  children: lang({
36
36
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.DESKTOP.HEADING'
37
37
  })
@@ -89,7 +89,7 @@ export function DesktopPage(props) {
89
89
  }), _jsxs(Vertical, {
90
90
  "$padding": "12px 0 0",
91
91
  "$gap": 8,
92
- children: [_jsx(H4, {
92
+ children: [_jsx(H3, {
93
93
  children: lang({
94
94
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.PLATFORM_QUESTION'
95
95
  })
@@ -104,7 +104,7 @@ export function DesktopPage(props) {
104
104
  type: "windows",
105
105
  size: "medium"
106
106
  })
107
- }), _jsx(H4, {
107
+ }), _jsx(H3, {
108
108
  children: lang({
109
109
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.WINDOWS'
110
110
  })
@@ -117,7 +117,7 @@ export function DesktopPage(props) {
117
117
  type: "macos",
118
118
  size: "medium"
119
119
  })
120
- }), _jsx(H4, {
120
+ }), _jsx(H3, {
121
121
  children: lang({
122
122
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.MACOS'
123
123
  })
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Button } from '@pushwoosh/dumb-components';
2
+ import { Button, DrawerTitle } from '@pushwoosh/dumb-components';
3
3
  import { Color, AllPlatforms } from '@pushwoosh/kit-constants';
4
4
  import { Vertical, Columns } from '@pushwoosh/kit-helpers';
5
5
  import { CloseIcon, DeviceIcon, EmailIcon, WhatsappIcon, SmsIcon } from '@pushwoosh/kit-icons';
6
- import { H2, Paragraph, H4, Text } from '@pushwoosh/kit-typography';
6
+ import { Paragraph, H3, Text } from '@pushwoosh/kit-typography';
7
7
  import { useLang } from '../../polyglot';
8
8
  import { Header, Close, Card, CardIcon } from '../../styles';
9
9
  export function MainPage(props) {
@@ -19,7 +19,7 @@ export function MainPage(props) {
19
19
  children: [_jsxs(Header, {
20
20
  children: [_jsxs(Vertical, {
21
21
  "$gap": 4,
22
- children: [_jsx(H2, {
22
+ children: [_jsx(DrawerTitle, {
23
23
  children: lang({
24
24
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.MAIN.HEADING'
25
25
  })
@@ -76,7 +76,7 @@ export function MainPage(props) {
76
76
  }), _jsxs(Vertical, {
77
77
  "$padding": "12px 0 0",
78
78
  "$gap": 8,
79
- children: [_jsx(H4, {
79
+ children: [_jsx(H3, {
80
80
  children: lang({
81
81
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.MAIN.QUESTION'
82
82
  })
@@ -92,7 +92,7 @@ export function MainPage(props) {
92
92
  size: "medium",
93
93
  view: "filled"
94
94
  })
95
- }), _jsx(H4, {
95
+ }), _jsx(H3, {
96
96
  children: lang({
97
97
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.MOBILE'
98
98
  })
@@ -106,7 +106,7 @@ export function MainPage(props) {
106
106
  size: "medium",
107
107
  view: "filled"
108
108
  })
109
- }), _jsx(H4, {
109
+ }), _jsx(H3, {
110
110
  children: lang({
111
111
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.DESKTOP'
112
112
  })
@@ -120,7 +120,7 @@ export function MainPage(props) {
120
120
  size: "medium",
121
121
  view: "filled"
122
122
  })
123
- }), _jsx(H4, {
123
+ }), _jsx(H3, {
124
124
  children: lang({
125
125
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.WEBSITE'
126
126
  })
@@ -133,7 +133,7 @@ export function MainPage(props) {
133
133
  size: "medium",
134
134
  view: "filled"
135
135
  })
136
- }), _jsx(H4, {
136
+ }), _jsx(H3, {
137
137
  children: lang({
138
138
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.EMAILS'
139
139
  })
@@ -146,7 +146,7 @@ export function MainPage(props) {
146
146
  size: "medium",
147
147
  view: "filled"
148
148
  })
149
- }), _jsx(H4, {
149
+ }), _jsx(H3, {
150
150
  children: lang({
151
151
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.WHATSAPP'
152
152
  })
@@ -160,7 +160,7 @@ export function MainPage(props) {
160
160
  size: "medium",
161
161
  view: "filled"
162
162
  })
163
- }), _jsx(H4, {
163
+ }), _jsx(H3, {
164
164
  children: lang({
165
165
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.SMS'
166
166
  })
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Button } from '@pushwoosh/dumb-components';
2
+ import { Button, DrawerTitle } from '@pushwoosh/dumb-components';
3
3
  import { Color } from '@pushwoosh/kit-constants';
4
4
  import { Columns, Vertical } from '@pushwoosh/kit-helpers';
5
5
  import { ArrowRoundIcon, CloseIcon, PlatformLogoIcon } from '@pushwoosh/kit-icons';
6
- import { H2, H4, Text } from '@pushwoosh/kit-typography';
6
+ import { H3, Text } from '@pushwoosh/kit-typography';
7
7
  import { useLang } from '../../polyglot';
8
8
  import { ColumnsWrapper, BreadCrumbs, Header, Close, Card, CardIcon } from '../../styles';
9
9
  export function MobilePage(props) {
@@ -29,7 +29,7 @@ export function MobilePage(props) {
29
29
  size: "medium",
30
30
  view: "filled"
31
31
  })
32
- }), _jsx(H2, {
32
+ }), _jsx(DrawerTitle, {
33
33
  children: lang({
34
34
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.MOBILE.HEADING'
35
35
  })
@@ -87,7 +87,7 @@ export function MobilePage(props) {
87
87
  }), _jsxs(Vertical, {
88
88
  "$padding": "12px 0 0",
89
89
  "$gap": 8,
90
- children: [_jsx(H4, {
90
+ children: [_jsx(H3, {
91
91
  children: lang({
92
92
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.PLATFORM_QUESTION'
93
93
  })
@@ -102,7 +102,7 @@ export function MobilePage(props) {
102
102
  type: "apple",
103
103
  size: "medium"
104
104
  })
105
- }), _jsx(H4, {
105
+ }), _jsx(H3, {
106
106
  children: lang({
107
107
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.IOS'
108
108
  })
@@ -115,7 +115,7 @@ export function MobilePage(props) {
115
115
  type: "android",
116
116
  size: "medium"
117
117
  })
118
- }), _jsx(H4, {
118
+ }), _jsx(H3, {
119
119
  children: lang({
120
120
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.ANDROID'
121
121
  })
@@ -128,7 +128,7 @@ export function MobilePage(props) {
128
128
  type: "huawei",
129
129
  size: "medium"
130
130
  })
131
- }), _jsx(H4, {
131
+ }), _jsx(H3, {
132
132
  children: lang({
133
133
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.HUAWEI'
134
134
  })
@@ -141,7 +141,7 @@ export function MobilePage(props) {
141
141
  type: "amazon",
142
142
  size: "medium"
143
143
  })
144
- }), _jsx(H4, {
144
+ }), _jsx(H3, {
145
145
  children: lang({
146
146
  message: 'SMART.PLATFORMS_CONFIGURATION_DRAWER.CARD.AMAZON'
147
147
  })
@@ -56,7 +56,7 @@ export function ProductUpdateCard({
56
56
  })]
57
57
  }), _jsxs(Vertical, {
58
58
  children: [_jsx(Text, {
59
- "$variant": "h4",
59
+ "$variant": "h3",
60
60
  children: update.title
61
61
  }), update.content && renderContent(update.content)]
62
62
  })]
package/Table/styles.js CHANGED
@@ -36,7 +36,7 @@ export const Tr = styled(Horizontal).attrs({
36
36
  export const Th = styled(Td).withConfig({
37
37
  displayName: "Th",
38
38
  componentId: "sc-1vdjaze-4"
39
- })(["padding:8px 12px;color:", ";font-weight:", ";font-size:", ";line-height:", ";text-transform:uppercase;"], Color.LOCKED, FontWeight.MEDIUM, FontSize.HEADING5, LineHeight.HEADING5);
39
+ })(["padding:8px 12px;color:", ";font-weight:", ";font-size:", ";line-height:", ";text-transform:uppercase;"], Color.LOCKED, FontWeight.MEDIUM, FontSize.HEADING4, LineHeight.HEADING4);
40
40
  export const ItemName = styled.div.withConfig({
41
41
  displayName: "ItemName",
42
42
  componentId: "sc-1vdjaze-5"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/smart-components-kit",
3
- "version": "1.24.0",
3
+ "version": "2.0.0",
4
4
  "description": "Stateful, data-connected React components shared by Pushwoosh micro-frontends",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,17 +17,17 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@floating-ui/react-dom": "^2.1.2",
20
- "@pushwoosh/dumb-components": "^3.4.0",
21
- "@pushwoosh/kit-constants": "^2.1.1",
20
+ "@pushwoosh/dumb-components": "^4.0.0",
21
+ "@pushwoosh/kit-constants": "^3.0.0",
22
22
  "@pushwoosh/kit-helpers": "^4.16.0",
23
23
  "@pushwoosh/kit-icons": "^2.3.10",
24
- "@pushwoosh/kit-typography": "^1.13.0",
24
+ "@pushwoosh/kit-typography": "^2.0.0",
25
25
  "@pushwoosh/rpc-v2-http-api-data": "^0.2.409",
26
26
  "jwt-decode": "^4.0.0",
27
27
  "react-hook-form": "^7.68.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@pushwoosh/frontend-builder-engine": "^3.1.6",
30
+ "@pushwoosh/frontend-builder-engine": "^4.0.0",
31
31
  "@pushwoosh/spa-context": "^3.3.0",
32
32
  "@svgr/webpack": "^8.1.0",
33
33
  "@types/node": "^24.19.1",