sawyer-ui 0.0.0-stage → 0.4.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 (143) hide show
  1. package/README.md +108 -2
  2. package/dist/fonts.d.ts +4 -0
  3. package/dist/fonts.d.ts.map +1 -0
  4. package/dist/fonts.js +18 -0
  5. package/dist/hooks/index.d.ts +3 -0
  6. package/dist/hooks/index.d.ts.map +1 -0
  7. package/dist/hooks/useMobile.d.ts +2 -0
  8. package/dist/hooks/useMobile.d.ts.map +1 -0
  9. package/dist/index.d.ts +38 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +911 -0
  12. package/dist/provider/UiProvider/UiProvider.d.ts +6 -0
  13. package/dist/provider/UiProvider/UiProvider.d.ts.map +1 -0
  14. package/dist/provider/UiProvider/index.d.ts +2 -0
  15. package/dist/provider/UiProvider/index.d.ts.map +1 -0
  16. package/dist/styles/menu.d.ts +3 -0
  17. package/dist/styles/menu.d.ts.map +1 -0
  18. package/dist/styles.css +4338 -0
  19. package/dist/types/common.d.ts +19 -0
  20. package/dist/types/common.d.ts.map +1 -0
  21. package/dist/ui/basic/UiAlert/UiAlert.d.ts +17 -0
  22. package/dist/ui/basic/UiAlert/UiAlert.d.ts.map +1 -0
  23. package/dist/ui/basic/UiAlert/index.d.ts +4 -0
  24. package/dist/ui/basic/UiAlert/index.d.ts.map +1 -0
  25. package/dist/ui/basic/UiAlertSimple/UiAlertSimple.d.ts +13 -0
  26. package/dist/ui/basic/UiAlertSimple/UiAlertSimple.d.ts.map +1 -0
  27. package/dist/ui/basic/UiAlertSimple/index.d.ts +4 -0
  28. package/dist/ui/basic/UiAlertSimple/index.d.ts.map +1 -0
  29. package/dist/ui/basic/UiChips/UiChips.d.ts +13 -0
  30. package/dist/ui/basic/UiChips/UiChips.d.ts.map +1 -0
  31. package/dist/ui/basic/UiChips/index.d.ts +4 -0
  32. package/dist/ui/basic/UiChips/index.d.ts.map +1 -0
  33. package/dist/ui/basic/UiDetails/UiDetails.d.ts +9 -0
  34. package/dist/ui/basic/UiDetails/UiDetails.d.ts.map +1 -0
  35. package/dist/ui/basic/UiDetails/index.d.ts +2 -0
  36. package/dist/ui/basic/UiDetails/index.d.ts.map +1 -0
  37. package/dist/ui/basic/UiHeaderSection/UiHeaderSection.d.ts +12 -0
  38. package/dist/ui/basic/UiHeaderSection/UiHeaderSection.d.ts.map +1 -0
  39. package/dist/ui/basic/UiHeaderSection/index.d.ts +4 -0
  40. package/dist/ui/basic/UiHeaderSection/index.d.ts.map +1 -0
  41. package/dist/ui/basic/UiJsonFormatter/UiJsonFormatter.d.ts +7 -0
  42. package/dist/ui/basic/UiJsonFormatter/UiJsonFormatter.d.ts.map +1 -0
  43. package/dist/ui/basic/UiJsonFormatter/index.d.ts +2 -0
  44. package/dist/ui/basic/UiJsonFormatter/index.d.ts.map +1 -0
  45. package/dist/ui/basic/UiLink/UiLink.d.ts +14 -0
  46. package/dist/ui/basic/UiLink/UiLink.d.ts.map +1 -0
  47. package/dist/ui/basic/UiLink/index.d.ts +6 -0
  48. package/dist/ui/basic/UiLink/index.d.ts.map +1 -0
  49. package/dist/ui/basic/UiList/UiList.d.ts +7 -0
  50. package/dist/ui/basic/UiList/UiList.d.ts.map +1 -0
  51. package/dist/ui/basic/UiList/index.d.ts +2 -0
  52. package/dist/ui/basic/UiList/index.d.ts.map +1 -0
  53. package/dist/ui/basic/UiModal/UiModal.d.ts +11 -0
  54. package/dist/ui/basic/UiModal/UiModal.d.ts.map +1 -0
  55. package/dist/ui/basic/UiModal/index.d.ts +2 -0
  56. package/dist/ui/basic/UiModal/index.d.ts.map +1 -0
  57. package/dist/ui/basic/UiTable/UiTable.d.ts +11 -0
  58. package/dist/ui/basic/UiTable/UiTable.d.ts.map +1 -0
  59. package/dist/ui/basic/UiTable/UiTableRecord.d.ts +12 -0
  60. package/dist/ui/basic/UiTable/UiTableRecord.d.ts.map +1 -0
  61. package/dist/ui/basic/UiTable/index.d.ts +5 -0
  62. package/dist/ui/basic/UiTable/index.d.ts.map +1 -0
  63. package/dist/ui/basic/UiTabs/UiTabs.d.ts +11 -0
  64. package/dist/ui/basic/UiTabs/UiTabs.d.ts.map +1 -0
  65. package/dist/ui/basic/UiTabs/index.d.ts +3 -0
  66. package/dist/ui/basic/UiTabs/index.d.ts.map +1 -0
  67. package/dist/ui/basic/UiTextGradient/UiTextGradient.d.ts +12 -0
  68. package/dist/ui/basic/UiTextGradient/UiTextGradient.d.ts.map +1 -0
  69. package/dist/ui/basic/UiTextGradient/index.d.ts +4 -0
  70. package/dist/ui/basic/UiTextGradient/index.d.ts.map +1 -0
  71. package/dist/ui/basic/UiTypography/UiTypography.d.ts +13 -0
  72. package/dist/ui/basic/UiTypography/UiTypography.d.ts.map +1 -0
  73. package/dist/ui/basic/UiTypography/index.d.ts +4 -0
  74. package/dist/ui/basic/UiTypography/index.d.ts.map +1 -0
  75. package/dist/ui/form/UiButton/UiButton.d.ts +27 -0
  76. package/dist/ui/form/UiButton/UiButton.d.ts.map +1 -0
  77. package/dist/ui/form/UiButton/index.d.ts +4 -0
  78. package/dist/ui/form/UiButton/index.d.ts.map +1 -0
  79. package/dist/ui/form/UiInput/UiInput.d.ts +16 -0
  80. package/dist/ui/form/UiInput/UiInput.d.ts.map +1 -0
  81. package/dist/ui/form/UiInput/index.d.ts +2 -0
  82. package/dist/ui/form/UiInput/index.d.ts.map +1 -0
  83. package/dist/ui/form/UiSelect/UiSelect.d.ts +17 -0
  84. package/dist/ui/form/UiSelect/UiSelect.d.ts.map +1 -0
  85. package/dist/ui/form/UiSelect/index.d.ts +3 -0
  86. package/dist/ui/form/UiSelect/index.d.ts.map +1 -0
  87. package/dist/ui/layout/UiLayoutCards/UiLayoutCards.d.ts +30 -0
  88. package/dist/ui/layout/UiLayoutCards/UiLayoutCards.d.ts.map +1 -0
  89. package/dist/ui/layout/UiLayoutCards/index.d.ts +6 -0
  90. package/dist/ui/layout/UiLayoutCards/index.d.ts.map +1 -0
  91. package/dist/ui/layout/UiLayoutHeader/UiLayoutHeader.d.ts +8 -0
  92. package/dist/ui/layout/UiLayoutHeader/UiLayoutHeader.d.ts.map +1 -0
  93. package/dist/ui/layout/UiLayoutHeader/index.d.ts +2 -0
  94. package/dist/ui/layout/UiLayoutHeader/index.d.ts.map +1 -0
  95. package/dist/ui/layout/UiLayoutPaper/UiLayoutPaper.d.ts +9 -0
  96. package/dist/ui/layout/UiLayoutPaper/UiLayoutPaper.d.ts.map +1 -0
  97. package/dist/ui/layout/UiLayoutPaper/index.d.ts +2 -0
  98. package/dist/ui/layout/UiLayoutPaper/index.d.ts.map +1 -0
  99. package/dist/ui/layout/UiLayoutSection/UiLayoutSection.d.ts +15 -0
  100. package/dist/ui/layout/UiLayoutSection/UiLayoutSection.d.ts.map +1 -0
  101. package/dist/ui/layout/UiLayoutSection/index.d.ts +4 -0
  102. package/dist/ui/layout/UiLayoutSection/index.d.ts.map +1 -0
  103. package/dist/ui/menu/UiMenuItemGroup/UiMenuItemGroup.d.ts +17 -0
  104. package/dist/ui/menu/UiMenuItemGroup/UiMenuItemGroup.d.ts.map +1 -0
  105. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentLinks/ChildComponentLinks.d.ts +4 -0
  106. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentLinks/ChildComponentLinks.d.ts.map +1 -0
  107. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentLinks/index.d.ts +2 -0
  108. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentLinks/index.d.ts.map +1 -0
  109. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentRoutes/ChildComponentRoutes.d.ts +4 -0
  110. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentRoutes/ChildComponentRoutes.d.ts.map +1 -0
  111. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentRoutes/index.d.ts +2 -0
  112. package/dist/ui/menu/UiMenuItemGroup/child-components/ChildComponentRoutes/index.d.ts.map +1 -0
  113. package/dist/ui/menu/UiMenuItemGroup/components/UiMenuNavToggle/UiMenuNavToggle.d.ts +14 -0
  114. package/dist/ui/menu/UiMenuItemGroup/components/UiMenuNavToggle/UiMenuNavToggle.d.ts.map +1 -0
  115. package/dist/ui/menu/UiMenuItemGroup/components/UiMenuNavToggle/index.d.ts +2 -0
  116. package/dist/ui/menu/UiMenuItemGroup/components/UiMenuNavToggle/index.d.ts.map +1 -0
  117. package/dist/ui/menu/UiMenuItemGroup/index.d.ts +4 -0
  118. package/dist/ui/menu/UiMenuItemGroup/index.d.ts.map +1 -0
  119. package/dist/ui/menu/UiMenuItemGroup/types/types.d.ts +7 -0
  120. package/dist/ui/menu/UiMenuItemGroup/types/types.d.ts.map +1 -0
  121. package/dist/ui/menu/UiMenuItemHash/UiMenuItemHash.d.ts +12 -0
  122. package/dist/ui/menu/UiMenuItemHash/UiMenuItemHash.d.ts.map +1 -0
  123. package/dist/ui/menu/UiMenuItemHash/index.d.ts +2 -0
  124. package/dist/ui/menu/UiMenuItemHash/index.d.ts.map +1 -0
  125. package/dist/ui/menu/UiMenuItemRoutes/UiMenuItemRoutes.d.ts +11 -0
  126. package/dist/ui/menu/UiMenuItemRoutes/UiMenuItemRoutes.d.ts.map +1 -0
  127. package/dist/ui/menu/UiMenuItemRoutes/index.d.ts +2 -0
  128. package/dist/ui/menu/UiMenuItemRoutes/index.d.ts.map +1 -0
  129. package/dist/ui/menu/UiMenuNavButton/UiMenuNavButton.d.ts +21 -0
  130. package/dist/ui/menu/UiMenuNavButton/UiMenuNavButton.d.ts.map +1 -0
  131. package/dist/ui/menu/UiMenuNavButton/index.d.ts +6 -0
  132. package/dist/ui/menu/UiMenuNavButton/index.d.ts.map +1 -0
  133. package/dist/ui/surfaces/UiOptions/UiOptions.d.ts +16 -0
  134. package/dist/ui/surfaces/UiOptions/UiOptions.d.ts.map +1 -0
  135. package/dist/ui/surfaces/UiOptions/index.d.ts +2 -0
  136. package/dist/ui/surfaces/UiOptions/index.d.ts.map +1 -0
  137. package/dist/ui/surfaces/UiSocialLinks/UiSocialLinks.d.ts +13 -0
  138. package/dist/ui/surfaces/UiSocialLinks/UiSocialLinks.d.ts.map +1 -0
  139. package/dist/ui/surfaces/UiSocialLinks/index.d.ts +4 -0
  140. package/dist/ui/surfaces/UiSocialLinks/index.d.ts.map +1 -0
  141. package/dist/utils.d.ts +4 -0
  142. package/dist/utils.d.ts.map +1 -0
  143. package/package.json +79 -4
package/README.md CHANGED
@@ -1,3 +1,109 @@
1
- # Temporary Holding Version
1
+ # sawyer-ui
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Ui-Kit для Next.js на React и [Mantine](https://mantine.dev/). Документация и примеры компонентов — в Storybook: [anton-sergeenkov.github.io/sawyer-ui](https://anton-sergeenkov.github.io/sawyer-ui/)
4
+
5
+ ## Установка
6
+
7
+ ```bash
8
+ npm install sawyer-ui
9
+ ```
10
+
11
+ В приложении должны быть установлены `next` версии 15 и выше, `react` и `react-dom` версии 19.2 и выше (peerDependencies). Mantine (`@mantine/core`, `@mantine/hooks`), иконки [Phosphor](https://phosphoricons.com/) (`@phosphor-icons/react`) и `classnames` устанавливаются вместе с пакетом.
12
+
13
+ Версия Mantine в пакете закреплена точно: CSS Mantine собран в `sawyer-ui/styles.css`, и имена классов в нём должны совпадать с установленным JS Mantine.
14
+
15
+ ## Подключение
16
+
17
+ Шрифт, стили пакета (CSS-переменные, базовые глобальные стили, стили Mantine и компонентов) и провайдер `UiProvider` подключаются один раз — в корневом layout приложения:
18
+
19
+ ```tsx
20
+ // app/layout.tsx (Next.js, App Router)
21
+ import { UiProvider } from "sawyer-ui"
22
+ import { robotoRegular } from "sawyer-ui/fonts"
23
+ import "sawyer-ui/styles.css"
24
+
25
+ const RootLayout: React.FC<{ children: React.ReactNode }> = ({ children }) => (
26
+ <html lang="en" className={robotoRegular.className}>
27
+ <body>
28
+ <UiProvider>{children}</UiProvider>
29
+ </body>
30
+ </html>
31
+ )
32
+
33
+ export default RootLayout
34
+ ```
35
+
36
+ `UiProvider` — провайдер Mantine (`MantineProvider`) с темой sawyer-ui: без него компоненты пакета не работают.
37
+
38
+ Стили Mantine лежат в `@layer mantine`, поэтому любые стили приложения без слоя переопределяют их независимо от порядка подключения. Глобальный сброс Mantine (`baseline.css`, стили `body`) в пакет не входит — базовые стили задаёт sawyer-ui.
39
+
40
+ Чтобы `className`, переданный компоненту со страницы, переопределял стили пакета, CSS должен подключаться в порядке импорта. По умолчанию Next.js объединяет CSS-файлы и может поставить стили пакета из layout после стилей страницы, поэтому в `next.config.js` включается строгий порядок:
41
+
42
+ ```js
43
+ // next.config.js
44
+ const nextConfig = {
45
+ experimental: {
46
+ cssChunking: "strict",
47
+ },
48
+ }
49
+ ```
50
+
51
+ Компоненты, хуки и типы импортируются из пакета по имени:
52
+
53
+ ```tsx
54
+ import { UiLayoutSection, UiHeaderSection, UiChips } from "sawyer-ui"
55
+ import type { IMenuItem, IStaticImageData } from "sawyer-ui"
56
+ ```
57
+
58
+ Все компоненты пакета клиентские (бандл помечен директивой `"use client"`), поэтому их можно импортировать и в серверных компонентах Next.js.
59
+
60
+ ## Шрифты
61
+
62
+ Шрифты Roboto (latin и cyrillic) подключаются через `next/font/google` и экспортируются из отдельной точки входа `sawyer-ui/fonts`:
63
+
64
+ ```ts
65
+ import { robotoThin, robotoLight, robotoRegular } from "sawyer-ui/fonts" // 100, 300, 400
66
+ ```
67
+
68
+ ```tsx
69
+ <span className={robotoThin.className}>Text</span>
70
+ ```
71
+
72
+ `sawyer-ui/fonts` собран без `"use client"`, поэтому шрифты можно использовать и в серверных компонентах, например в `app/layout.tsx`.
73
+
74
+ ## Иконки
75
+
76
+ Компоненты используют иконки [Phosphor](https://phosphoricons.com/) (`@phosphor-icons/react`). Иконку можно передать и в проп компонента, например `endIcon` у `UiButton`: для этого приложению нужно установить `@phosphor-icons/react` (или другой набор иконок).
77
+
78
+ ```ts
79
+ import { ArrowCircleDown } from "@phosphor-icons/react"
80
+ ```
81
+
82
+ ```tsx
83
+ <UiButton endIcon={<ArrowCircleDown weight="bold" />} onClick={onClick}>
84
+ Download
85
+ </UiButton>
86
+ ```
87
+
88
+ ## Навигация
89
+
90
+ `UiMenuItemRoutes` и `UiMenuItemGroup` с `type="routes"` используют `Link` из `next/link` и `usePathname()` из `next/navigation`: переход по пунктам меню идёт без перезагрузки страницы, активный пункт подсвечивается по текущему пути.
91
+
92
+ ```tsx
93
+ <UiMenuItemRoutes
94
+ theme="light-blue"
95
+ item={{ title: "Stack", path: "/stack" }}
96
+ />
97
+ ```
98
+
99
+ ## Разработка
100
+
101
+ ```bash
102
+ npm i # установка зависимостей
103
+ npm run storybook # Storybook для Next.js (@storybook/nextjs-vite) на http://localhost:6006
104
+ npm run build # сборка пакета в dist: index.js, fonts.js, styles.css и типы
105
+ npm run lint # ESLint
106
+ npm run deploy # сборка Storybook и публикация на GitHub Pages
107
+ ```
108
+
109
+ Публикация новой версии: увеличить `version` в `package.json` и выполнить `npm publish` — перед публикацией автоматически запустится `npm run build`.
@@ -0,0 +1,4 @@
1
+ export declare const robotoThin: import("next/dist/compiled/@next/font").NextFont;
2
+ export declare const robotoLight: import("next/dist/compiled/@next/font").NextFont;
3
+ export declare const robotoRegular: import("next/dist/compiled/@next/font").NextFont;
4
+ //# sourceMappingURL=fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,kDAIrB,CAAA;AAEF,eAAO,MAAM,WAAW,kDAItB,CAAA;AAEF,eAAO,MAAM,aAAa,kDAIxB,CAAA"}
package/dist/fonts.js ADDED
@@ -0,0 +1,18 @@
1
+ import { Roboto } from "next/font/google";
2
+ // src/fonts.ts
3
+ const robotoThin = Roboto({
4
+ weight: "100",
5
+ subsets: ["latin", "cyrillic"],
6
+ display: "swap"
7
+ });
8
+ const robotoLight = Roboto({
9
+ weight: "300",
10
+ subsets: ["latin", "cyrillic"],
11
+ display: "swap"
12
+ });
13
+ const robotoRegular = Roboto({
14
+ weight: "400",
15
+ subsets: ["latin", "cyrillic"],
16
+ display: "swap"
17
+ });
18
+ export { robotoLight, robotoRegular, robotoThin };
@@ -0,0 +1,3 @@
1
+ import { useMobile } from "./useMobile";
2
+ export { useMobile };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const useMobile: () => boolean;
2
+ //# sourceMappingURL=useMobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobile.d.ts","sourceRoot":"","sources":["../../src/hooks/useMobile.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,SAAS,eAgBrB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import "./styles/mantine.css";
2
+ import "./styles/tokens.css";
3
+ import "./styles/globals.css";
4
+ export { default as UiProvider } from "./provider/UiProvider";
5
+ export { default as UiChips } from "./ui/basic/UiChips";
6
+ export { default as UiLink } from "./ui/basic/UiLink";
7
+ export { default as UiModal } from "./ui/basic/UiModal";
8
+ export { default as UiTypography } from "./ui/basic/UiTypography";
9
+ export { default as UiTextGradient } from "./ui/basic/UiTextGradient";
10
+ export { default as UiHeaderSection } from "./ui/basic/UiHeaderSection";
11
+ export { default as UiDetails } from "./ui/basic/UiDetails";
12
+ export { default as UiJsonFormatter } from "./ui/basic/UiJsonFormatter";
13
+ export { default as UiAlert } from "./ui/basic/UiAlert";
14
+ export { default as UiAlertSimple } from "./ui/basic/UiAlertSimple";
15
+ export { default as UiList } from "./ui/basic/UiList";
16
+ export { default as UiTable, UiTableRecord } from "./ui/basic/UiTable";
17
+ export { default as UiTabs } from "./ui/basic/UiTabs";
18
+ export { default as UiButton } from "./ui/form/UiButton";
19
+ export { default as UiInput } from "./ui/form/UiInput";
20
+ export { default as UiSelect } from "./ui/form/UiSelect";
21
+ export { default as UiLayoutCards } from "./ui/layout/UiLayoutCards";
22
+ export { default as UiLayoutSection } from "./ui/layout/UiLayoutSection";
23
+ export { default as UiLayoutPaper } from "./ui/layout/UiLayoutPaper";
24
+ export { default as UiLayoutHeader } from "./ui/layout/UiLayoutHeader";
25
+ export { default as UiMenuItemGroup } from "./ui/menu/UiMenuItemGroup";
26
+ export { default as UiMenuItemHash } from "./ui/menu/UiMenuItemHash";
27
+ export { default as UiMenuItemRoutes } from "./ui/menu/UiMenuItemRoutes";
28
+ export { default as UiMenuNavButton } from "./ui/menu/UiMenuNavButton";
29
+ export { default as UiOptions } from "./ui/surfaces/UiOptions";
30
+ export { default as UiSocialLinks } from "./ui/surfaces/UiSocialLinks";
31
+ export { useMobile } from "./hooks";
32
+ export type { IUiLayoutCardsItems } from "./ui/layout/UiLayoutCards";
33
+ export type { IUiSocialLinksList } from "./ui/surfaces/UiSocialLinks";
34
+ export type { IUiSelectItem } from "./ui/form/UiSelect";
35
+ export type { IUiTableData, IUiTableRecordRow } from "./ui/basic/UiTable";
36
+ export type { IUiTabsData } from "./ui/basic/UiTabs";
37
+ export type { IStaticImageData, IMenuItem, IListCommon, TOnClick, } from "./types/common";
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,sBAAsB,CAAA;AAC7B,OAAO,qBAAqB,CAAA;AAC5B,OAAO,sBAAsB,CAAA;AAG7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGtE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,gBAAgB,CAAA"}