@foxford/navigation-ui 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/README.mdx +48 -4
  2. package/footer/contacts-column.d.ts.map +1 -1
  3. package/footer/contacts-column.js +80 -48
  4. package/footer/contacts-styled.d.ts +44 -0
  5. package/footer/contacts-styled.d.ts.map +1 -0
  6. package/footer/contacts-styled.js +120 -0
  7. package/footer/footer.d.ts.map +1 -1
  8. package/footer/footer.js +3 -3
  9. package/footer/molecules/geoposition/index.js +1 -3
  10. package/footer/styled.d.ts +0 -22
  11. package/footer/styled.d.ts.map +1 -1
  12. package/footer/styled.js +7 -42
  13. package/footer/types.d.ts +6 -6
  14. package/footer/types.d.ts.map +1 -1
  15. package/header/atoms/action-button/assets/elementary/calendar.svg +1 -0
  16. package/header/atoms/action-button/assets/elementary/catalog.svg +1 -0
  17. package/header/atoms/action-button/assets/elementary/dashboard.svg +1 -0
  18. package/header/atoms/action-button/assets/elementary/externship.svg +1 -0
  19. package/header/atoms/action-button/assets/elementary/main.svg +1 -0
  20. package/header/atoms/action-button/assets/elementary/room.svg +1 -0
  21. package/header/atoms/action-button/elementary-icons.d.ts +14 -0
  22. package/header/atoms/action-button/elementary-icons.d.ts.map +1 -0
  23. package/header/atoms/action-button/elementary-icons.js +21 -0
  24. package/header/atoms/action-button/index.d.ts +5 -3
  25. package/header/atoms/action-button/index.d.ts.map +1 -1
  26. package/header/atoms/action-button/index.js +23 -4
  27. package/header/atoms/grades-list-item/index.d.ts +10 -0
  28. package/header/atoms/grades-list-item/index.d.ts.map +1 -0
  29. package/header/atoms/grades-list-item/index.js +21 -0
  30. package/header/atoms/grades-list-item/styled.d.ts +14 -0
  31. package/header/atoms/grades-list-item/styled.d.ts.map +1 -0
  32. package/header/atoms/grades-list-item/styled.js +27 -0
  33. package/header/atoms/profile-menu-item/index.d.ts +3 -1
  34. package/header/atoms/profile-menu-item/index.d.ts.map +1 -1
  35. package/header/atoms/profile-menu-item/index.js +2 -0
  36. package/header/atoms/profile-menu-item/styled.d.ts +4 -2
  37. package/header/atoms/profile-menu-item/styled.d.ts.map +1 -1
  38. package/header/atoms/profile-menu-item/styled.js +3 -1
  39. package/header/atoms/prolongation-title/assets/arrow.svg +1 -0
  40. package/header/atoms/prolongation-title/assets/lightning.svg +1 -0
  41. package/header/atoms/prolongation-title/index.d.ts +10 -0
  42. package/header/atoms/prolongation-title/index.d.ts.map +1 -0
  43. package/header/atoms/prolongation-title/index.js +44 -0
  44. package/header/atoms/prolongation-title/styled.d.ts +14 -0
  45. package/header/atoms/prolongation-title/styled.d.ts.map +1 -0
  46. package/header/atoms/prolongation-title/styled.js +38 -0
  47. package/header/header-desktop.d.ts +2 -2
  48. package/header/header-desktop.d.ts.map +1 -1
  49. package/header/header-desktop.js +16 -41
  50. package/header/header-mobile.d.ts +2 -2
  51. package/header/header-mobile.d.ts.map +1 -1
  52. package/header/header-mobile.js +3 -18
  53. package/header/molecules/cart-button/index.js +25 -0
  54. package/header/molecules/cart-button/styled.d.ts.map +1 -1
  55. package/header/molecules/cart-button/styled.js +14 -0
  56. package/header/molecules/container/index.d.ts +5 -1
  57. package/header/molecules/container/index.d.ts.map +1 -1
  58. package/header/molecules/container/index.js +5 -3
  59. package/header/molecules/entry-panel/index.d.ts +4 -1
  60. package/header/molecules/entry-panel/index.d.ts.map +1 -1
  61. package/header/molecules/entry-panel/index.js +26 -5
  62. package/header/molecules/list/index.d.ts.map +1 -1
  63. package/header/molecules/list/index.js +5 -1
  64. package/header/molecules/menu/segment-content.d.ts.map +1 -1
  65. package/header/molecules/menu/segment-content.js +20 -3
  66. package/header/molecules/menu/types.d.ts +18 -0
  67. package/header/molecules/menu/types.d.ts.map +1 -1
  68. package/header/molecules/support-button/index.d.ts +5 -0
  69. package/header/molecules/support-button/index.d.ts.map +1 -0
  70. package/header/molecules/support-button/index.js +108 -0
  71. package/header/molecules/support-button/modal.d.ts +9 -0
  72. package/header/molecules/support-button/modal.d.ts.map +1 -0
  73. package/header/molecules/support-button/modal.js +122 -0
  74. package/header/molecules/support-button/modal.styled.d.ts +12 -0
  75. package/header/molecules/support-button/modal.styled.d.ts.map +1 -0
  76. package/header/molecules/support-button/modal.styled.js +23 -0
  77. package/header/molecules/support-button/styled.d.ts +20 -0
  78. package/header/molecules/support-button/styled.d.ts.map +1 -0
  79. package/header/molecules/support-button/styled.js +24 -0
  80. package/header/molecules/support-button/theme.d.ts +5 -0
  81. package/header/molecules/support-button/theme.d.ts.map +1 -0
  82. package/header/molecules/support-button/theme.js +40 -0
  83. package/header/molecules/support-button/types.d.ts +20 -0
  84. package/header/molecules/support-button/types.d.ts.map +1 -0
  85. package/header/molecules/user-panel/index.d.ts +10 -3
  86. package/header/molecules/user-panel/index.d.ts.map +1 -1
  87. package/header/molecules/user-panel/index.js +48 -36
  88. package/header/molecules/user-panel/styled.d.ts +15 -0
  89. package/header/molecules/user-panel/styled.d.ts.map +1 -1
  90. package/header/molecules/user-panel/styled.js +41 -5
  91. package/header/molecules/user-panel-mobile/index.d.ts +1 -1
  92. package/header/molecules/user-panel-mobile/index.d.ts.map +1 -1
  93. package/header/molecules/user-panel-mobile/index.js +11 -3
  94. package/header/navigation.d.ts.map +1 -1
  95. package/header/navigation.js +66 -4
  96. package/header/styled.d.ts +7 -0
  97. package/header/styled.d.ts.map +1 -1
  98. package/header/styled.js +24 -4
  99. package/header/types.d.ts +9 -6
  100. package/header/types.d.ts.map +1 -1
  101. package/index.d.ts +6 -0
  102. package/index.d.ts.map +1 -1
  103. package/index.js +10 -0
  104. package/package.json +14 -4
  105. package/shared/constants.d.ts +8 -0
  106. package/shared/constants.d.ts.map +1 -1
  107. package/shared/constants.js +8 -0
  108. package/shared/slots.d.ts +64 -0
  109. package/shared/slots.d.ts.map +1 -0
  110. package/shared/slots.js +53 -0
  111. package/_virtual/preload-helper.js +0 -57
  112. package/header/molecules/phone-button/index.js +0 -15
package/README.mdx CHANGED
@@ -41,12 +41,47 @@
41
41
 
42
42
  Контракт компонента при этом один и тот же в обоих случаях.
43
43
 
44
+ | `NavigationSlots` | Куда встаёт |
45
+ | --- | --- |
46
+ | `background` | подложка под всей навигацией, рисуется первой |
47
+ | `searchPanel` | над шапкой на узком экране |
48
+ | `top` | строка шапки на десктопе, между кнопкой меню и панелью пользователя |
49
+ | `actionsButton` | рядом с кнопкой меню, на обоих разрешениях |
50
+ | `aboveMenu` / `belowMenu` | над и под большим меню, внутри контейнера навигации |
51
+
52
+ | `FooterSlots` | Куда встаёт |
53
+ | --- | --- |
54
+ | `aboveLinks` | первым в подвале |
55
+ | `banners` | в колонке баннеров, рядом с онбордингом и карточкой приложения |
56
+ | `belowLinks` | под колонками ссылок |
57
+ | `belowSubFooter` | последним, под нижней полосой |
58
+
59
+ **Показ содержимого слота — забота потребителя.** В легаси панель поиска пряталась глобальным
60
+ классом с анимацией: эта механика принадлежит самой панели, а не навигации, и сюда не
61
+ переносится. Пакет резервирует место и рисует то, что дали.
62
+
44
63
  Кроме слотов пакет отдаёт наружу части профиль-меню (`ProfileInfo`, `ProfileMenuItem`,
45
64
  `Bonuses`, `PupilSelectButton`): их наполнение зависит от данных пользователя, поэтому
46
65
  собирает их адаптер и передаёт готовыми узлами. Сам набор пунктов меню — тоже данные
47
66
  адаптера (`@foxford/navigation-runtime`, `src/menu-items.ts`): пакет вёрстки не знает ни
48
67
  адресов Фоксфорда, ни того, кому какой пункт положен.
49
68
 
69
+ ## Раскладки
70
+
71
+ `UserPanel` рисует ряд кнопок в двух раскладках, и выбирает её `variant`:
72
+
73
+ - `base` — пиктограммы дизайн-системы, на узком экране из ряда убираются «бонусы за друга»;
74
+ - `elementary` — начальная школа: крупные иллюстрации вместо пиктограмм, свои отступы, на
75
+ узком экране убирается каталог.
76
+
77
+ Иллюстрации началки — собственный набор пакета (`header/atoms/action-button/assets/elementary`),
78
+ подключаются по именам (`elementaryMain`, `elementaryRoom` и далее) наравне с пиктограммами
79
+ кита. Дизайн-система их не держит: это не пиктограммы, а картинки, и подкрашивать их темой
80
+ не нужно — поэтому они и рисуются `<img>`, как логотипы.
81
+
82
+ **Кому какая раскладка положена, вёрстка не решает.** Про ученика началки она не знает вовсе —
83
+ `variant` приходит пропсом от адаптера.
84
+
50
85
  ## Требования к среде
51
86
 
52
87
  - **`<Media>` из `@foxford/ui` матчит только после эффектов.** Там, где от размера экрана
@@ -73,9 +108,9 @@
73
108
 
74
109
  Отличия от легаси — каждое помечено комментарием в коде:
75
110
 
76
- - варианты `NewNavigation`/`ElementaryNavigation`/`InspectorNavigation` — только
77
- `BaseNavigation`; молекулы, которые нужны лишь этим раскладкам (`CartButton`), перенесены,
78
- но пока никем не рисуются;
111
+ - варианты `NewNavigation`/`InspectorNavigation` — их включают флаги приложения
112
+ (`new_navigation`, `inspector_interface`); молекулы, которые нужны лишь этим раскладкам
113
+ (`CartButton`), перенесены, но пока никем не рисуются;
79
114
  - аналитика (`sendAnalytics`) и i18n-инфраструктура (`FormattedMessage`) — вызовы сняты,
80
115
  строки русские прямо в коде;
81
116
  - обучающий тур выбора ученика (`PupilSelectExplainer`, Joyride) и Enrichment-портал
@@ -92,11 +127,20 @@
92
127
  Раскладка исходников сохраняется, поэтому `.d.ts` встают рядом со своими модулями.
93
128
 
94
129
  **Снаружи остаётся всё, что обязано быть в одном экземпляре**: `styled-components`, `preact`,
95
- `react`/`react-dom` и `@foxford/ui` объявлены `peerDependencies`. Причина — лист стилей:
130
+ `react` и `@foxford/ui` объявлены `peerDependencies`. Причина — лист стилей:
96
131
  `ServerStyleSheet` собирает стили только своей копии `styled-components`, и вторая копия
97
132
  означает обрамление страницы без стилей. Сторож — `tests/artifacts.check.tsx`: он рендерит
98
133
  СОБРАННЫЕ `Navigation` и `Footer` через лист и требует непустой `getStyleTags()`.
99
134
 
135
+ **Про имена React.** Выход импортирует `preact/jsx-runtime` (JSX собран им) и `react` (хуки и
136
+ типы) — и это не противоречие: в мире preact имя `react` занимает пакет-алиас
137
+ (`@preact/compat`), и настоящего React в дереве нет. Поэтому `preact` объявлен обязательным
138
+ peer'ом, а `react` — необязательным: тому, кто пришёл с алиасом, ставить его не надо.
139
+ Переписывать импорты на `preact/hooks` смысла нет — `@foxford/ui` сама говорит именами React
140
+ в четырёх сотнях мест своей сборки, так что алиас потребителю нужен в любом случае, а публичные
141
+ типы пакета (`ReactNode`, `ComponentType`) при этом сменили бы имена. `react-dom` в peer'ах нет
142
+ вовсе: пакет его не импортирует, отрисовщик — забота хоста.
143
+
100
144
  Собирает vite, а не tsup: стабильные `componentId` проставляет
101
145
  `babel-plugin-styled-components`, а он babel-плагин. Опции те же, что у хоста и у раннера
102
146
  тестов, — трансформация обязана быть одна на всех.
@@ -1 +1 @@
1
- {"version":3,"file":"contacts-column.d.ts","sourceRoot":"","sources":["../../src/footer/contacts-column.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,SAAS,CAAA;AAE5D,KAAK,mBAAmB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,kBAAkB,GAAG,YAAY,GAAG,aAAa,CAAC,CAAA;AAmB5G,wBAAgB,cAAc,CAAC,EAC7B,QAAa,EACb,gBAAwB,EACxB,UAAe,EACf,WAAgB,GACjB,EAAE,mBAAmB,gCAmCrB"}
1
+ {"version":3,"file":"contacts-column.d.ts","sourceRoot":"","sources":["../../src/footer/contacts-column.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,SAAS,CAAA;AAE5D,KAAK,mBAAmB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,kBAAkB,GAAG,YAAY,GAAG,aAAa,CAAC,CAAA;AA0B5G,wBAAgB,cAAc,CAAC,EAC7B,QAAa,EACb,gBAAwB,EACxB,UAAe,EACf,WAAgB,GACjB,EAAE,mBAAmB,gCAoErB"}
@@ -17,31 +17,35 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { Spacer } from "@foxford/ui";
20
+ import { Separator, Spacer } from "@foxford/ui";
21
21
  import { SocialLink } from "./atoms/social-link/index.js";
22
- import { ContactsColumn as ContactsColumn$1, Contacts, ContactsTitle, ContactsWrapper, SocialLinks } from "./styled.js";
22
+ import { ContactsColumn as ContactsColumn$1, SeparatorTop, SalesGroup, ContactsTitle, SupportGroup, EmailGroup, Contacts, Email, SeparatorBottom, SocialsGroup, Phone, SocialLinks } from "./contacts-styled.js";
23
23
  import { formatPhone } from "../shared/phone.js";
24
24
  import { jsxs, jsx } from "preact/jsx-runtime";
25
- function LinkGroup({
26
- bottom,
27
- links,
28
- title
25
+ const SEPARATOR_COLOR = "border-oncolor-soft-small";
26
+ function Links({
27
+ links
29
28
  }) {
30
29
  if (links.length === 0) {
31
30
  return null;
32
31
  }
33
- return jsxs(Spacer, {
34
- bottom,
35
- bottomL: 12,
36
- bottomS: 24,
37
- children: [jsx(ContactsTitle, {
38
- children: title
39
- }), jsx(SocialLinks, {
40
- children: links.map((link) => jsx(SocialLink, {
41
- href: link.href,
42
- iconName: link.iconName
43
- }, link.id))
44
- })]
32
+ return jsx(SocialLinks, {
33
+ children: links.map((link) => jsx(SocialLink, {
34
+ href: link.href,
35
+ iconName: link.iconName
36
+ }, link.id))
37
+ });
38
+ }
39
+ function ContactPhone({
40
+ number
41
+ }) {
42
+ return jsx(Spacer, {
43
+ bottom: 12,
44
+ top: 4,
45
+ children: jsx(Phone, {
46
+ href: `tel:${number}`,
47
+ children: formatPhone(number)
48
+ })
45
49
  });
46
50
  }
47
51
  function ContactsColumn({
@@ -65,38 +69,66 @@ function ContactsColumn({
65
69
  }].flatMap((link) => link.href ? [__spreadProps(__spreadValues({}, link), {
66
70
  href: link.href
67
71
  })] : []);
68
- const hasPhone = !hideDataOnMirror && Boolean(contacts.phone);
72
+ const phone = hideDataOnMirror ? void 0 : contacts.phone;
73
+ const salesPhone = hideDataOnMirror ? void 0 : contacts.salesPhone;
69
74
  return jsxs(ContactsColumn$1, {
70
- children: [jsx(LinkGroup, {
71
- bottom: 16,
72
- links: salesLinks,
73
- title: "Подобрать занятия"
74
- }), jsx(LinkGroup, {
75
- bottom: 16,
76
- links: supportChatLinks,
77
- title: "Чат с поддержкой"
78
- }), jsx(LinkGroup, {
79
- bottom: 24,
80
- links: socialLinks,
81
- title: "Социальные сети"
82
- }), (Boolean(contacts.email) || hasPhone) && jsxs(Contacts, {
83
- children: [jsx(ContactsTitle, {
84
- children: "Контакты"
85
- }), jsxs(ContactsWrapper, {
86
- children: [contacts.email && jsx("a", {
87
- href: `mailto:${contacts.email}`,
88
- rel: "noreferrer",
89
- target: "_blank",
90
- children: contacts.email
91
- }), hasPhone && contacts.phone !== void 0 && jsx(Spacer, {
92
- top: 16,
93
- topS: 8,
94
- children: jsx("a", {
95
- href: `tel:${contacts.phone}`,
96
- children: formatPhone(contacts.phone)
97
- })
75
+ children: [jsx(SeparatorTop, {
76
+ children: jsx(Separator, {
77
+ color: SEPARATOR_COLOR,
78
+ weight: 1
79
+ })
80
+ }), jsx(SalesGroup, {
81
+ children: jsxs(Spacer, {
82
+ bottomXL: 24,
83
+ children: [jsxs(ContactsTitle, {
84
+ children: ["Подбор ", jsx("br", {}), "и покупка занятий"]
85
+ }), salesPhone !== void 0 && jsx(ContactPhone, {
86
+ number: salesPhone
87
+ }), jsx(Links, {
88
+ links: salesLinks
89
+ })]
90
+ })
91
+ }), supportChatLinks.length > 0 && jsx(SupportGroup, {
92
+ children: jsxs(Spacer, {
93
+ bottomXL: 24,
94
+ children: [jsxs(ContactsTitle, {
95
+ children: ["Поддержка учеников ", jsx("br", {}), "и родителей Фоксфорда"]
96
+ }), phone !== void 0 && jsx(ContactPhone, {
97
+ number: phone
98
+ }), jsx(Links, {
99
+ links: supportChatLinks
100
+ })]
101
+ })
102
+ }), contacts.email !== void 0 && contacts.email !== "" && jsx(EmailGroup, {
103
+ children: jsx(Spacer, {
104
+ bottom: 24,
105
+ bottomL: 12,
106
+ bottomS: 0,
107
+ children: jsxs(Contacts, {
108
+ children: [jsx(ContactsTitle, {
109
+ children: "Почта"
110
+ }), jsx(Email, {
111
+ href: `mailto:${contacts.email}`,
112
+ rel: "noreferrer",
113
+ target: "_blank",
114
+ children: contacts.email
115
+ })]
116
+ })
117
+ })
118
+ }), jsx(SeparatorBottom, {
119
+ children: jsx(Separator, {
120
+ color: SEPARATOR_COLOR,
121
+ weight: 1
122
+ })
123
+ }), jsx(SocialsGroup, {
124
+ children: jsxs(Spacer, {
125
+ topXL: 24,
126
+ children: [jsx(ContactsTitle, {
127
+ children: "Социальные сети"
128
+ }), jsx(Links, {
129
+ links: socialLinks
98
130
  })]
99
- })]
131
+ })
100
132
  })]
101
133
  });
102
134
  }
@@ -0,0 +1,44 @@
1
+ export declare const ContactsColumn: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("styled-components").FastOmit<Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
2
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
3
+ }, "as" | "forwardedAs"> & {
4
+ as?: import("styled-components").WebTarget | undefined;
5
+ forwardedAs?: import("styled-components").WebTarget | undefined;
6
+ }, "style"> & {
7
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | (import("styled-components").CSSProperties & {
8
+ [key: `--${string}`]: string | number | undefined;
9
+ }) | undefined;
10
+ }> & string;
11
+ export declare const SeparatorTop: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
12
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
13
+ }> & string;
14
+ export declare const SeparatorBottom: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
15
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
16
+ }> & string;
17
+ export declare const SalesGroup: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
18
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
19
+ }> & string;
20
+ export declare const SupportGroup: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
21
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
22
+ }> & string;
23
+ export declare const EmailGroup: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
24
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
25
+ }> & string;
26
+ export declare const SocialsGroup: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
27
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
28
+ }> & string;
29
+ export declare const ContactsTitle: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
30
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
31
+ }> & string;
32
+ export declare const SocialLinks: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
33
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
34
+ }> & string;
35
+ export declare const Contacts: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
36
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
37
+ }> & string;
38
+ export declare const Phone: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.AnchorHTMLAttributes<HTMLAnchorElement>, "style"> & {
39
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
40
+ }> & string;
41
+ export declare const Email: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.AnchorHTMLAttributes<HTMLAnchorElement>, "style"> & {
42
+ style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
43
+ }> & string;
44
+ //# sourceMappingURL=contacts-styled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts-styled.d.ts","sourceRoot":"","sources":["../../src/footer/contacts-styled.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc;;;;;;;;;WAsB1B,CAAA;AAMD,eAAO,MAAM,YAAY;;WAgBxB,CAAA;AAED,eAAO,MAAM,eAAe;;WAU3B,CAAA;AAED,eAAO,MAAM,UAAU;;WAItB,CAAA;AAED,eAAO,MAAM,YAAY;;WAIxB,CAAA;AAED,eAAO,MAAM,UAAU;;WAItB,CAAA;AAED,eAAO,MAAM,YAAY;;WAIxB,CAAA;AAED,eAAO,MAAM,aAAa;;WAezB,CAAA;AAED,eAAO,MAAM,WAAW;;WAIvB,CAAA;AAED,eAAO,MAAM,QAAQ;;WAGpB,CAAA;AAcD,eAAO,MAAM,KAAK;;WAEjB,CAAA;AAED,eAAO,MAAM,KAAK;;WAEjB,CAAA"}
@@ -0,0 +1,120 @@
1
+ import { styled, css } from "styled-components";
2
+ import { screenMaxL, screenMaxM, screenMaxS } from "@foxford/ui";
3
+ import { Column } from "./styled.js";
4
+ const ContactsColumn = styled(Column).withConfig({
5
+ displayName: "contacts-styled__ContactsColumn",
6
+ componentId: "sc-kiidu0-0"
7
+ })(["grid-area:contacts;display:grid;", " ", " ", ""], screenMaxL()`
8
+ grid-template-columns: max-content max-content max-content 1fr max-content;
9
+ grid-template-areas: 'sep-top sep-top sep-top sep-top sep-top' 'sales support email . socials';
10
+ column-gap: 48px;
11
+ row-gap: 32px;
12
+ `, screenMaxM()`
13
+ grid-template-columns: repeat(3, minmax(0, 1fr));
14
+ grid-template-areas: 'sep-top sep-top sep-top' 'sales support email' 'socials socials socials';
15
+ `, screenMaxS()`
16
+ margin-top: 44px;
17
+ grid-template-columns: 1fr;
18
+ grid-template-areas: none;
19
+ row-gap: 24px;
20
+ `);
21
+ const SeparatorTop = styled.div.withConfig({
22
+ displayName: "contacts-styled__SeparatorTop",
23
+ componentId: "sc-kiidu0-1"
24
+ })(["display:none;", " ", " ", ""], screenMaxL()`
25
+ display: block;
26
+ grid-area: sep-top;
27
+ margin: 0 0 32px;
28
+ `, screenMaxM()`
29
+ margin: 8px 0;
30
+ `, screenMaxS()`
31
+ display: none;
32
+ `);
33
+ const SeparatorBottom = styled.div.withConfig({
34
+ displayName: "contacts-styled__SeparatorBottom",
35
+ componentId: "sc-kiidu0-2"
36
+ })(["display:block;", " ", ""], screenMaxL()`
37
+ display: none;
38
+ `, screenMaxS()`
39
+ display: block;
40
+ `);
41
+ const SalesGroup = styled.div.withConfig({
42
+ displayName: "contacts-styled__SalesGroup",
43
+ componentId: "sc-kiidu0-3"
44
+ })(["", ""], screenMaxL()`
45
+ grid-area: sales;
46
+ `);
47
+ const SupportGroup = styled.div.withConfig({
48
+ displayName: "contacts-styled__SupportGroup",
49
+ componentId: "sc-kiidu0-4"
50
+ })(["", ""], screenMaxL()`
51
+ grid-area: support;
52
+ `);
53
+ const EmailGroup = styled.div.withConfig({
54
+ displayName: "contacts-styled__EmailGroup",
55
+ componentId: "sc-kiidu0-5"
56
+ })(["", ""], screenMaxL()`
57
+ grid-area: email;
58
+ `);
59
+ const SocialsGroup = styled.div.withConfig({
60
+ displayName: "contacts-styled__SocialsGroup",
61
+ componentId: "sc-kiidu0-6"
62
+ })(["", ""], screenMaxL()`
63
+ grid-area: socials;
64
+ `);
65
+ const ContactsTitle = styled.div.withConfig({
66
+ displayName: "contacts-styled__ContactsTitle",
67
+ componentId: "sc-kiidu0-7"
68
+ })(["font-size:20px;line-height:1.2;font-weight:700;color:", ";margin-bottom:8px;white-space:nowrap;", ""], ({
69
+ theme
70
+ }) => theme.colors["content-oncolor-primary"], screenMaxS()`
71
+ white-space: normal;
72
+
73
+ > br {
74
+ display: none;
75
+ }
76
+ `);
77
+ const SocialLinks = styled.div.withConfig({
78
+ displayName: "contacts-styled__SocialLinks",
79
+ componentId: "sc-kiidu0-8"
80
+ })(["display:flex;flex-direction:row;flex-wrap:nowrap;"]);
81
+ const Contacts = styled.div.withConfig({
82
+ displayName: "contacts-styled__Contacts",
83
+ componentId: "sc-kiidu0-9"
84
+ })(["font-size:16px;line-height:20px;"]);
85
+ const contactLink = css`
86
+ font-weight: 700;
87
+ color: ${({
88
+ theme
89
+ }) => theme.colors["content-oncolor-secondary"]};
90
+ text-decoration: none;
91
+
92
+ &:hover {
93
+ cursor: pointer;
94
+ color: ${({
95
+ theme
96
+ }) => theme.colors["content-oncolor-primary"]};
97
+ }
98
+ `;
99
+ const Phone = styled.a.withConfig({
100
+ displayName: "contacts-styled__Phone",
101
+ componentId: "sc-kiidu0-10"
102
+ })(["", ""], contactLink);
103
+ const Email = styled.a.withConfig({
104
+ displayName: "contacts-styled__Email",
105
+ componentId: "sc-kiidu0-11"
106
+ })(["", ""], contactLink);
107
+ export {
108
+ Contacts,
109
+ ContactsColumn,
110
+ ContactsTitle,
111
+ Email,
112
+ EmailGroup,
113
+ Phone,
114
+ SalesGroup,
115
+ SeparatorBottom,
116
+ SeparatorTop,
117
+ SocialLinks,
118
+ SocialsGroup,
119
+ SupportGroup
120
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/footer/footer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,gCAyCxC"}
1
+ {"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/footer/footer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,gCA6CxC"}
package/footer/footer.js CHANGED
@@ -37,7 +37,7 @@ function Footer(props) {
37
37
  children: jsx(Root, {
38
38
  id: SELECTOR_IDS.FOOTER,
39
39
  children: jsxs(Container, {
40
- children: [jsx(Logo, {
40
+ children: [slots == null ? void 0 : slots.aboveLinks, jsx(Logo, {
41
41
  cobranding
42
42
  }), jsxs(MainInner, {
43
43
  children: [jsx(Column, {
@@ -65,9 +65,9 @@ function Footer(props) {
65
65
  children: [jsx(OnboardingBanner, {}), appLinks && jsx(AppInfo, {
66
66
  desktopUrl: appLinks.desktop,
67
67
  mobileUrl: appLinks.mobile
68
- })]
68
+ }), slots == null ? void 0 : slots.banners]
69
69
  }), jsx(ContactsColumn, __spreadValues({}, props))]
70
- }), slots == null ? void 0 : slots.belowLinks, jsx(SubFooter, __spreadValues({}, props))]
70
+ }), slots == null ? void 0 : slots.belowLinks, jsx(SubFooter, __spreadValues({}, props)), slots == null ? void 0 : slots.belowSubFooter]
71
71
  })
72
72
  })
73
73
  });
@@ -1,5 +1,3 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["footer/molecules/geoposition/city-dialog.js","footer/molecules/geoposition/city-dialog-styled.js","footer/molecules/geoposition/styled.js","shared/z-index.js"])))=>i.map(i=>d[i]);
2
- import { __vitePreload } from "../../../_virtual/preload-helper.js";
3
1
  import { useState } from "react";
4
2
  import { Icon } from "@foxford/ui";
5
3
  import { Root, CityButton } from "./styled.js";
@@ -16,7 +14,7 @@ function Geoposition({
16
14
  const handleOpen = () => {
17
15
  setOpen(true);
18
16
  if (Dialog === null) {
19
- void __vitePreload(() => import("./city-dialog.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0).then((module) => setDialog(() => module.CityDialog));
17
+ void import("./city-dialog.js").then((module) => setDialog(() => module.CityDialog));
20
18
  }
21
19
  };
22
20
  return jsxs(Root, {
@@ -21,27 +21,5 @@ export declare const Banners: import("styled-components/dist/types").IStyledComp
21
21
  [key: `--${string}`]: string | number | undefined;
22
22
  }) | undefined;
23
23
  }> & string;
24
- export declare const ContactsColumn: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("styled-components").FastOmit<Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
25
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
26
- }, "as" | "forwardedAs"> & {
27
- as?: import("styled-components").WebTarget | undefined;
28
- forwardedAs?: import("styled-components").WebTarget | undefined;
29
- }, "style"> & {
30
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | (import("styled-components").CSSProperties & {
31
- [key: `--${string}`]: string | number | undefined;
32
- }) | undefined;
33
- }> & string;
34
- export declare const ContactsTitle: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
35
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
36
- }> & string;
37
- export declare const SocialLinks: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
38
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
39
- }> & string;
40
- export declare const Contacts: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
41
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
42
- }> & string;
43
24
  export declare const Logo: import("styled-components/dist/types").IStyledComponentBase<"web", import("./molecules/footer-logo").FooterLogoProps> & string & Omit<typeof FooterLogo, keyof import("preact").Component<any, {}>>;
44
- export declare const ContactsWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", Omit<import("preact").JSX.HTMLAttributes<HTMLDivElement>, "style"> & {
45
- style?: string | import("styled-components/dist/types").CSSPropertiesWithVars | import("preact").JSX.CSSProperties | import("preact").JSX.SignalLike<string | import("preact").JSX.CSSProperties | undefined> | undefined;
46
- }> & string;
47
25
  //# sourceMappingURL=styled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/footer/styled.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,eAAO,MAAM,IAAI;;WAahB,CAAA;AAED,eAAO,MAAM,SAAS;;WAqBrB,CAAA;AAED,eAAO,MAAM,SAAS;;WAqCrB,CAAA;AAED,eAAO,MAAM,MAAM;;WAYlB,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;WA2BnB,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;WAO1B,CAAA;AAED,eAAO,MAAM,aAAa;;WAOzB,CAAA;AAED,eAAO,MAAM,WAAW;;WAIvB,CAAA;AAED,eAAO,MAAM,QAAQ;;WAmBpB,CAAA;AAED,eAAO,MAAM,IAAI,qMAMhB,CAAA;AAED,eAAO,MAAM,eAAe;;WAG3B,CAAA"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../src/footer/styled.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,eAAO,MAAM,IAAI;;WAahB,CAAA;AAED,eAAO,MAAM,SAAS;;WAqBrB,CAAA;AAED,eAAO,MAAM,SAAS;;WAqCrB,CAAA;AAED,eAAO,MAAM,MAAM;;WAYlB,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;WA2BnB,CAAA;AAED,eAAO,MAAM,IAAI,qMAMhB,CAAA"}
package/footer/styled.js CHANGED
@@ -25,16 +25,16 @@ const Container = styled.div.withConfig({
25
25
  const MainInner = styled.div.withConfig({
26
26
  displayName: "styled__MainInner",
27
27
  componentId: "sc-ee97kh-2"
28
- })(["display:grid;width:100%;grid-gap:24px;margin-bottom:32px;grid-template:'about study free contacts banners' 190px 'about study free contacts banners' auto / 180px 180px 180px 188px 384px;", " ", " ", ""], screenMaxL()`
28
+ })(["display:grid;width:100%;grid-gap:24px;margin-bottom:32px;grid-template:'about study free contacts banners' 190px 'about study free contacts banners' auto / 180px 180px 180px 219px 353px;", " ", " ", ""], screenMaxL()`
29
29
  column-gap: 20px;
30
- row-gap: 28px;
30
+ row-gap: 32px;
31
31
  grid-template:
32
32
  'about study free banners' auto
33
- 'about study contacts banners' auto / 144px 226px 226px 308px;
33
+ 'contacts contacts contacts contacts' auto / 144px 226px 226px 308px;
34
34
  `, screenMaxM()`
35
35
  grid-template:
36
36
  'about study free' auto
37
- 'about study contacts' auto
37
+ 'contacts contacts contacts' auto
38
38
  'banners banners banners' auto / minmax(208px, 1fr) minmax(204px, 1fr) minmax(248px, 1fr);
39
39
  column-gap: 20px;
40
40
  row-gap: 32px;
@@ -55,7 +55,7 @@ const Column = styled.div.withConfig({
55
55
  const Banners = styled(Column).withConfig({
56
56
  displayName: "styled__Banners",
57
57
  componentId: "sc-ee97kh-4"
58
- })(["grid-area:banners;display:grid;grid-template:'a' 190px 'b' 190px / 1fr;gap:16px;", " ", " ", ""], screenMaxL()`
58
+ })(["grid-area:banners;display:grid;grid-template:'a' 190px 'b' 210px / 1fr;gap:16px;", " ", " ", ""], screenMaxL()`
59
59
  grid-template:
60
60
  'a' 200px
61
61
  'b' 224px / 1fr;
@@ -70,52 +70,17 @@ const Banners = styled(Column).withConfig({
70
70
  'b' 184px / 1fr;
71
71
  gap: 24px;
72
72
  `);
73
- const ContactsColumn = styled(Column).withConfig({
74
- displayName: "styled__ContactsColumn",
75
- componentId: "sc-ee97kh-5"
76
- })(["grid-area:contacts;display:grid;", ""], screenMaxS()`
77
- margin-top: 48px;
78
- `);
79
- const ContactsTitle = styled.div.withConfig({
80
- displayName: "styled__ContactsTitle",
81
- componentId: "sc-ee97kh-6"
82
- })(["font-size:20px;line-height:1.2;font-weight:700;color:", ";margin-bottom:8px;white-space:nowrap;"], ({
83
- theme
84
- }) => theme.colors["content-oncolor-primary"]);
85
- const SocialLinks = styled.div.withConfig({
86
- displayName: "styled__SocialLinks",
87
- componentId: "sc-ee97kh-7"
88
- })(["display:flex;flex-direction:row;flex-wrap:nowrap;"]);
89
- const Contacts = styled.div.withConfig({
90
- displayName: "styled__Contacts",
91
- componentId: "sc-ee97kh-8"
92
- })(["font-size:16px;font-weight:700;line-height:20px;margin-bottom:24px;", " a{text-decoration:none;color:", ";&:hover{cursor:pointer;color:", ";}}"], screenMaxS()`
93
- margin-bottom: 0;
94
- `, ({
95
- theme
96
- }) => theme.colors["content-oncolor-secondary"], ({
97
- theme
98
- }) => theme.colors["content-oncolor-primary"]);
99
73
  const Logo = styled(FooterLogo).withConfig({
100
74
  displayName: "styled__Logo",
101
- componentId: "sc-ee97kh-9"
75
+ componentId: "sc-ee97kh-5"
102
76
  })(["margin:32px 0;", ""], screenMaxS()`
103
77
  margin: 22px 0 0;
104
78
  `);
105
- const ContactsWrapper = styled.div.withConfig({
106
- displayName: "styled__ContactsWrapper",
107
- componentId: "sc-ee97kh-10"
108
- })(["display:flex;flex-direction:column;"]);
109
79
  export {
110
80
  Banners,
111
81
  Column,
112
- Contacts,
113
- ContactsColumn,
114
- ContactsTitle,
115
- ContactsWrapper,
116
82
  Container,
117
83
  Logo,
118
84
  MainInner,
119
- Root,
120
- SocialLinks
85
+ Root
121
86
  };
package/footer/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { FooterMenuItem } from './molecules/footer-menu';
2
2
  import type { City } from './molecules/geoposition';
3
+ import type { FOOTER_SLOT_POINTS, SlotNodes } from '../shared/slots';
3
4
  import type { IconName } from '@foxford/ui';
4
- import type { ReactNode } from 'react';
5
5
  export interface FooterSocialLink {
6
6
  href: string;
7
7
  iconName: IconName;
@@ -10,17 +10,17 @@ export interface FooterSocialLink {
10
10
  export interface FooterContacts {
11
11
  email?: string;
12
12
  max?: string;
13
+ /** Телефон поддержки — в блоке поддержки, рядом с чатами. */
13
14
  phone?: string;
15
+ /** Телефон продаж — в блоке подбора занятий; отдельная линия, не та же, что поддержка. */
16
+ salesPhone?: string;
14
17
  telegram?: string;
15
18
  vkontakte?: string;
16
19
  }
17
20
  /**
18
- * Слоты `Footer` — свои, не общие с `Navigation`: точки расширения подвала.
21
+ * Слоты `Footer` — свои, не общие с `Navigation`. Тип выведен из перечня (`shared/slots.ts`).
19
22
  */
20
- export interface FooterSlots {
21
- /** Место под колонками ссылок — например баннер акции. */
22
- belowLinks?: ReactNode;
23
- }
23
+ export type FooterSlots = SlotNodes<typeof FOOTER_SLOT_POINTS>;
24
24
  export interface FooterProps {
25
25
  aboutItems: FooterMenuItem[];
26
26
  /** Адреса установки мобильного приложения; не переданы — карточка приложения не рисуется. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/footer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,QAAQ,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,SAAS,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/footer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,QAAQ,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE9D,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,6FAA6F;IAC7F,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAChC,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B"}
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M31 7H1v22h30V7z" fill="#BBDAE8"/><path d="M1 7V1h30v6H1z" fill="#FF9700"/><path d="M5.612 0v4.872M26.296 0v4.872" stroke="#000" stroke-miterlimit="10"/><path d="M8 11c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2zM16 11c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2z" fill="#fff"/><path d="M24 11c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2z" fill="#FFF57D"/><path d="M8 19c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2zM16 19c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2z" fill="#fff"/><path d="M24 19c-1.106 0-2 .895-2 2s.894 2 2 2c1.106 0 2-.895 2-2s-.894-2-2-2z" fill="#FFF57D"/></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.27 29V0H2v29h11.27z" fill="#FF9700"/><path d="M11.131 2.164H4.14v6.023l3.5-1.61 3.5 1.61-.008-6.023z" fill="#FFF87D"/><path d="M11.14 25.696h-7" stroke="#000" stroke-miterlimit="10"/><path d="M30 26.368 24.26 2.23 13.293 4.863 19.033 29 30 26.368z" fill="#8450E1"/><path d="M22.62 4.59 15.82 6.221l1.44 6.046 3.017-2.437 3.788.797-1.447-6.039z" fill="#FFF87D"/><path d="m27.247 24.032-6.806 1.633" stroke="#000" stroke-miterlimit="10"/></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M26.507 0H4v29h22.507V0z" fill="#8850E5"/><path d="M23.38 3.093H7.127v20.3H23.38v-20.3z" fill="#fff"/><path d="M14.566 27.518c.684 0 1.245-.58 1.245-1.289s-.56-1.29-1.245-1.29-1.246.581-1.246 1.29c0 .71.56 1.29 1.245 1.29z" fill="#AB88FF"/><path d="M9.905 16.49h10.697M9.905 9.997h10.697" stroke="#000" stroke-miterlimit="10"/><path d="m32 10.03-2.925-2.917-9.764 10.464.008.008h-.008l-.872 3.964 3.797-1.048v-.008L32 10.03z" fill="#F90"/></svg>