@mednet/ui 0.0.0-stage → 1.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.
- package/LICENSE +21 -0
- package/README.md +46 -2
- package/THIRD_PARTY_NOTICES.md +27 -0
- package/dist/brand/logo/logo-horizontal.d.ts +6 -0
- package/dist/brand/logo/logo-horizontal.js +7 -0
- package/dist/brand/logo/logo-mark.d.ts +6 -0
- package/dist/brand/logo/logo-mark.js +7 -0
- package/dist/brand/logo/logo-vertical.d.ts +6 -0
- package/dist/brand/logo/logo-vertical.js +7 -0
- package/dist/brand/logo.d.ts +18 -0
- package/dist/brand/logo.js +12 -0
- package/dist/brand/site-footer.d.ts +24 -0
- package/dist/brand/site-footer.js +15 -0
- package/dist/brand/site-header.d.ts +11 -0
- package/dist/brand/site-header.js +7 -0
- package/dist/components/accordion.d.ts +6 -0
- package/dist/components/accordion.js +17 -0
- package/dist/components/alert-dialog.d.ts +18 -0
- package/dist/components/alert-dialog.js +42 -0
- package/dist/components/alert.d.ts +10 -0
- package/dist/components/alert.js +27 -0
- package/dist/components/aspect-ratio.d.ts +4 -0
- package/dist/components/aspect-ratio.js +8 -0
- package/dist/components/attachment.d.ts +23 -0
- package/dist/components/attachment.js +68 -0
- package/dist/components/avatar.d.ts +11 -0
- package/dist/components/avatar.js +23 -0
- package/dist/components/badge.d.ts +7 -0
- package/dist/components/badge.js +33 -0
- package/dist/components/breadcrumb.d.ts +10 -0
- package/dist/components/breadcrumb.js +36 -0
- package/dist/components/bubble.d.ts +16 -0
- package/dist/components/bubble.js +59 -0
- package/dist/components/button-group.d.ts +10 -0
- package/dist/components/button-group.js +36 -0
- package/dist/components/button.d.ts +8 -0
- package/dist/components/button.js +34 -0
- package/dist/components/calendar.d.ts +10 -0
- package/dist/components/calendar.js +76 -0
- package/dist/components/card.d.ts +11 -0
- package/dist/components/card.js +24 -0
- package/dist/components/carousel.d.ts +28 -0
- package/dist/components/carousel.js +91 -0
- package/dist/components/chart.d.ts +44 -0
- package/dist/components/chart.js +132 -0
- package/dist/components/checkbox.d.ts +3 -0
- package/dist/components/checkbox.js +9 -0
- package/dist/components/collapsible.d.ts +5 -0
- package/dist/components/collapsible.js +13 -0
- package/dist/components/combobox.d.ts +24 -0
- package/dist/components/combobox.js +58 -0
- package/dist/components/command.d.ts +19 -0
- package/dist/components/command.js +35 -0
- package/dist/components/context-menu.d.ts +29 -0
- package/dist/components/context-menu.js +51 -0
- package/dist/components/dialog.d.ts +17 -0
- package/dist/components/dialog.js +37 -0
- package/dist/components/direction.d.ts +1 -0
- package/dist/components/direction.js +2 -0
- package/dist/components/drawer.d.ts +16 -0
- package/dist/components/drawer.js +75 -0
- package/dist/components/dropdown-menu.d.ts +29 -0
- package/dist/components/dropdown-menu.js +51 -0
- package/dist/components/empty.d.ts +11 -0
- package/dist/components/empty.js +33 -0
- package/dist/components/field.d.ts +24 -0
- package/dist/components/field.js +68 -0
- package/dist/components/hover-card.d.ts +5 -0
- package/dist/components/hover-card.js +14 -0
- package/dist/components/input-group.d.ts +18 -0
- package/dist/components/input-group.js +57 -0
- package/dist/components/input-otp.d.ts +11 -0
- package/dist/components/input-otp.js +21 -0
- package/dist/components/input.d.ts +3 -0
- package/dist/components/input.js +7 -0
- package/dist/components/item.d.ts +22 -0
- package/dist/components/item.js +78 -0
- package/dist/components/kbd.d.ts +3 -0
- package/dist/components/kbd.js +9 -0
- package/dist/components/label.d.ts +3 -0
- package/dist/components/label.js +7 -0
- package/dist/components/marker.d.ts +10 -0
- package/dist/components/marker.js +34 -0
- package/dist/components/menubar.d.ts +29 -0
- package/dist/components/menubar.js +56 -0
- package/dist/components/message-scroller.d.ts +10 -0
- package/dist/components/message-scroller.js +25 -0
- package/dist/components/message.d.ts +10 -0
- package/dist/components/message.js +21 -0
- package/dist/components/native-select.d.ts +8 -0
- package/dist/components/native-select.js +13 -0
- package/dist/components/navigation-menu.d.ts +11 -0
- package/dist/components/navigation-menu.js +31 -0
- package/dist/components/pagination.d.ts +17 -0
- package/dist/components/pagination.js +26 -0
- package/dist/components/popover.d.ts +9 -0
- package/dist/components/popover.js +23 -0
- package/dist/components/progress.d.ts +7 -0
- package/dist/components/progress.js +20 -0
- package/dist/components/questionnaire.d.ts +19 -0
- package/dist/components/questionnaire.js +52 -0
- package/dist/components/radio-group.d.ts +5 -0
- package/dist/components/radio-group.js +12 -0
- package/dist/components/resizable.d.ts +7 -0
- package/dist/components/resizable.js +14 -0
- package/dist/components/scroll-area.d.ts +5 -0
- package/dist/components/scroll-area.js +11 -0
- package/dist/components/select.d.ts +15 -0
- package/dist/components/select.js +34 -0
- package/dist/components/separator.d.ts +3 -0
- package/dist/components/separator.js +8 -0
- package/dist/components/sheet.d.ts +14 -0
- package/dist/components/sheet.js +37 -0
- package/dist/components/sidebar.d.ts +63 -0
- package/dist/components/sidebar.js +256 -0
- package/dist/components/skeleton.d.ts +2 -0
- package/dist/components/skeleton.js +6 -0
- package/dist/components/slider.d.ts +3 -0
- package/dist/components/slider.js +12 -0
- package/dist/components/spinner.d.ts +2 -0
- package/dist/components/spinner.js +7 -0
- package/dist/components/switch.d.ts +5 -0
- package/dist/components/switch.js +8 -0
- package/dist/components/table.d.ts +10 -0
- package/dist/components/table.js +28 -0
- package/dist/components/tabs.d.ts +10 -0
- package/dist/components/tabs.js +29 -0
- package/dist/components/textarea.d.ts +3 -0
- package/dist/components/textarea.js +6 -0
- package/dist/components/toast.d.ts +16 -0
- package/dist/components/toast.js +66 -0
- package/dist/components/toggle-group.d.ts +11 -0
- package/dist/components/toggle-group.js +24 -0
- package/dist/components/toggle.d.ts +8 -0
- package/dist/components/toggle.js +26 -0
- package/dist/components/tooltip.d.ts +6 -0
- package/dist/components/tooltip.js +17 -0
- package/dist/hooks/use-mobile.d.ts +1 -0
- package/dist/hooks/use-mobile.js +15 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.js +69 -0
- package/dist/layouts/app-shell.d.ts +19 -0
- package/dist/layouts/app-shell.js +9 -0
- package/dist/layouts/public-layout.d.ts +14 -0
- package/dist/layouts/public-layout.js +8 -0
- package/dist/layouts/skip-link.d.ts +2 -0
- package/dist/layouts/skip-link.js +5 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +7 -0
- package/llms.md +521 -0
- package/package.json +128 -3
- package/postcss.cjs +163 -0
- package/src/brand.css +69 -0
- package/src/shadcn-tailwind.css +638 -0
- package/src/styles.css +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ФГБУ «ЦНИИОИЗ» Минздрава России
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,47 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @mednet/ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
React-компоненты дизайн-системы ЦНИИОИЗ: весь набор [shadcn/ui](https://ui.shadcn.com) на [Base UI](https://base-ui.com) в стиле Maia и теме бренда, логотип, шапка и подвал сайта, каркасы страниц `PublicLayout` и `AppShell`. Для Next.js 16 (App Router, React Server Components) и других React 19-проектов на Tailwind CSS v4.
|
|
4
|
+
|
|
5
|
+
## Подключение
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm i @mednet/ui
|
|
9
|
+
npm i -D tailwindcss @tailwindcss/postcss
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`app/globals.css` — одна строка:
|
|
13
|
+
|
|
14
|
+
```css
|
|
15
|
+
@import '@mednet/ui/styles.css';
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Графики: `recharts` — peer-зависимость, установите его в проект (`npm i recharts`); компоненты графика импортируйте из `recharts`, обёртки — из `@mednet/ui/chart`.
|
|
19
|
+
|
|
20
|
+
Компоненты — по подпутям:
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
import { Button } from '@mednet/ui/button';
|
|
24
|
+
import { AppShell } from '@mednet/ui/app-shell';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Chrome/Edge 109 (Windows 7/8.1): в `postcss.config.mjs` после `@tailwindcss/postcss` добавьте плагин кита, иначе пропадут кольца фокуса и полупрозрачные цвета:
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
export default {
|
|
31
|
+
plugins: { '@tailwindcss/postcss': {}, '@mednet/ui/postcss': {} },
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Правила для людей и AI-агентов — в `node_modules/@mednet/ui/llms.md` (генерируется под установленную версию). Главное: смена элемента — проп `render`, а не `asChild`; цвета — только семантические классы бренда.
|
|
36
|
+
|
|
37
|
+
## Разработка пакета
|
|
38
|
+
|
|
39
|
+
- Компоненты в `src/components` генерирует CLI shadcn по `components.json`; руками их не правят. Обновить из shadcn: `pnpm generate` (≈2–7 минут: `shadcn add --all --overwrite` + `scripts/postgen.mjs`), затем `pnpm build && pnpm test` и просмотр `git diff`.
|
|
40
|
+
- Что кит меняет в коде shadcn: импорт `cn` и русские подписи — `scripts/postgen.mjs` и `scripts/ru-labels.json` (скрипт падает, если правку не к чему применить: значит, shadcn поменял исходник); цвета бренда — правилами `src/brand.css` поверх сгенерированных классов, сами файлы не меняются.
|
|
41
|
+
- Chrome/Edge 109 (Windows 7/8.1): PostCSS-плагин `@mednet/ui/postcss` ставится в проекте после `@tailwindcss/postcss`.
|
|
42
|
+
- Логотип: `pnpm logos` (из `assets/brand/logo/*.svg`). Индекс: `pnpm gen:index`. CSS shadcn: `pnpm vendor-css`.
|
|
43
|
+
- Импорты внутри пакета — `#components/…`, `#hooks/…`, `#lib/…` (поле `imports` в `package.json`).
|
|
44
|
+
|
|
45
|
+
## Лицензии
|
|
46
|
+
|
|
47
|
+
MIT, © 2026 ФГБУ «ЦНИИОИЗ» Минздрава России. Код shadcn/ui — MIT, см. [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Сторонний код
|
|
2
|
+
|
|
3
|
+
`@mednet/ui` содержит код, сгенерированный CLI [shadcn/ui](https://ui.shadcn.com) (стиль `base-maia`): компоненты в `dist/components/`, хук `dist/hooks/use-mobile.js` и копию `shadcn/dist/tailwind.css` в `src/shadcn-tailwind.css`. Кит меняет в нём импорт `cn` и подписи (`scripts/postgen.mjs`), а цвета перекрывает правилами `src/brand.css`. Лицензия shadcn/ui требует сохранять уведомление:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2023 shadcn
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
```
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SVGProps } from "react";
|
|
2
|
+
export interface LogoHorizontalProps extends Omit<SVGProps<SVGSVGElement>, "children"> {
|
|
3
|
+
/** Доступное имя. Без него логотип декоративный (aria-hidden). */
|
|
4
|
+
title?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function LogoHorizontal({ title, ...props }: LogoHorizontalProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Сгенерировано scripts/gen-logos.mjs из assets/brand/logo/logo-horizontal.svg, не редактировать.
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
export function LogoHorizontal({ title, ...props }) {
|
|
5
|
+
const uid = useId();
|
|
6
|
+
return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0.75 1.25 449.45 97.54", role: title ? "img" : undefined, "aria-labelledby": title ? `${uid}title` : undefined, "aria-hidden": title ? undefined : true, ...props, children: [title ? _jsx("title", { id: `${uid}title`, children: title }) : null, _jsx("path", { fill: "#d6867f", d: "M117.03 55.9c0 23-21.08 41.64-47.07 41.64-17.74 0-33.2-8.66-41.21-21.47h15.02c6.39 8.54 16.46 13.59 27.12 13.56 18.61 0 33.7-14.97 33.7-33.39S89.5 22.85 70.89 22.85c-1.93 0-3.86.16-5.77.5l12.32 5.58-3.68 8.14-24.13-10.94L60.57 2l7.61 3.46L64 14.62c2-.21 3.96-.34 5.96-.34 25.99-.03 47.07 18.61 47.07 41.62" }), _jsx("path", { fill: "#d6867f", d: "m45.92 27.56 7.26-15.99-7.63-3.43-10.94 24.1 24.12 10.94 3.68-8.11z" }), _jsx("path", { d: "m242.56 22.48.47-.78c.68.62 1.43 1.09 2.3 1.4.84.32 1.72.47 2.59.47s1.65-.12 2.4-.4c.72-.28 1.31-.66 1.78-1.19.43-.53.68-1.15.68-1.93 0-1-.37-1.75-1.12-2.25-.75-.53-1.81-.77-3.18-.77h-3.12v-.97h3.09c1.15 0 2.06-.25 2.71-.75.66-.5.97-1.18.97-2.06 0-.62-.19-1.18-.53-1.62-.34-.43-.84-.81-1.44-1.06a5.8 5.8 0 0 0-2.02-.43c-.75-.04-1.53.06-2.34.28-.81.21-1.56.56-2.31 1.03l-.4-.94c.87-.53 1.81-.9 2.74-1.15.94-.22 1.87-.31 2.74-.22.91.06 1.69.28 2.41.59.71.34 1.24.78 1.68 1.34.4.56.62 1.22.62 2 0 .74-.19 1.37-.53 1.93-.37.53-.87.96-1.53 1.25-.65.31-1.43.43-2.33.43l.09-.4c1.03 0 1.9.15 2.65.46.75.32 1.31.78 1.71 1.35.41.59.6 1.24.6 2.02 0 .75-.19 1.4-.56 2-.38.56-.88 1.03-1.5 1.4s-1.34.62-2.12.81c-.78.16-1.59.22-2.43.12-.84-.09-1.65-.28-2.46-.62-.91-.28-1.66-.75-2.31-1.34m-25.81 1.03c.96 0 1.87-.16 2.68-.5s1.53-.81 2.15-1.4c.59-.6 1.09-1.31 1.43-2.12.35-.81.5-1.69.5-2.65 0-.97-.15-1.87-.5-2.65-.34-.81-.81-1.5-1.43-2.12a6 6 0 0 0-2.15-1.4c-.81-.35-1.72-.5-2.68-.5-.97 0-1.87.15-2.68.5-.81.34-1.56.81-2.15 1.4-.63.59-1.1 1.31-1.44 2.12s-.5 1.68-.5 2.65c0 .96.16 1.84.5 2.65s.81 1.52 1.44 2.12c.62.59 1.34 1.09 2.15 1.4.81.34 1.71.5 2.68.5m0 1.03c-1.12 0-2.18-.19-3.15-.56-.97-.38-1.81-.94-2.53-1.62-.71-.72-1.27-1.53-1.65-2.47-.37-.93-.59-1.96-.59-3.05s.19-2.12.59-3.06c.41-.93.94-1.74 1.65-2.46.72-.72 1.56-1.25 2.53-1.62.97-.38 1.99-.56 3.15-.56 1.15 0 2.18.18 3.15.56.96.37 1.8.93 2.49 1.62.72.69 1.25 1.5 1.65 2.43.41.94.59 1.97.59 3.06 0 1.12-.18 2.15-.59 3.05-.4.94-.96 1.75-1.65 2.43-.72.69-1.56 1.25-2.49 1.62-.97.44-2.03.63-3.15.63M171.49 9.23h1.12v15.18h-1.12Zm-10.29 7.02h10.41v.97H161.2Zm-.97-7.02h1.09v15.18h-1.09Zm16.52 15.18V9.23h1.09v13.31l10.35-13.31h.97v15.18h-1.09V11.1l-10.35 13.31zm16.62 0V9.23h1.09v13.31l10.35-13.31h.97v15.18h-1.06V11.1l-10.35 13.31zm34.26 0V9.23h1.09v13.31l10.35-13.31h.96v15.18h-1.09V11.1l-10.35 13.31zm-71.01 3.68v-4.02l.31.34h-2.81v-.99h3.52v4.67zm-13.41-3.68V9.23h1.09v14.19h9.79V9.23h1.09v15.18z" }), _jsx("path", { fill: "#d6867f", d: "M41.99 46.86H28.71V33.61H15.25v13.25H2v13.46h13.25V73.6h13.46V60.32h13.28z" }), _jsx("path", { d: "M235.89 44.71c-.63 0-1.12-.16-1.5-.5-.4-.31-.59-.78-.62-1.34h.56c.03.4.19.75.47.96.28.22.65.38 1.09.38.43 0 .81-.13 1.09-.38s.43-.56.47-.96h.56c0 .59-.22 1.03-.6 1.34-.4.34-.93.5-1.52.5m-3.46 9.01v-7.8h.75v6.64l5.54-6.64h.66v7.8h-.75v-6.64l-5.55 6.64zm208.26-9.01c-.62 0-1.12-.16-1.49-.5-.41-.31-.6-.78-.63-1.34h.56c.03.4.19.75.47.96.28.25.66.38 1.09.38.44 0 .81-.13 1.09-.38s.44-.56.47-.96h.56c0 .59-.22 1.03-.59 1.34-.41.34-.91.5-1.53.5m-3.46 9.01v-7.8h.75v6.64l5.55-6.64h.65v7.8h-.75v-6.64l-5.54 6.64zM151.6 56.24v-2.77l.22.25h-1.97v-.69h2.46v3.21zm-9.23-2.52V43.24h.75v9.79h6.73v-9.79h.75v10.48zm14.46.06c-.78 0-1.49-.16-2.09-.5-.59-.34-1.09-.81-1.43-1.4-.34-.6-.53-1.28-.53-2.06s.16-1.47.5-2.06c.31-.59.78-1.06 1.34-1.4s1.22-.5 1.9-.5c.69 0 1.34.16 1.9.5s1 .78 1.34 1.37c.32.59.5 1.28.5 2.06v.22h-6.89v-.6h6.49l-.31.28c0-.62-.13-1.15-.38-1.65s-.62-.87-1.06-1.12c-.43-.28-.96-.41-1.56-.41-.59 0-1.09.13-1.56.41-.46.28-.81.65-1.06 1.12-.24.5-.37 1.03-.37 1.65v.13c0 .62.16 1.21.44 1.68s.68.87 1.18 1.16c.5.28 1.06.4 1.72.4.49 0 .96-.09 1.4-.28.43-.19.81-.47 1.09-.81l.44.5c-.35.4-.78.75-1.28.93-.56.28-1.09.38-1.72.38m159.02 0c-.75 0-1.44-.16-2.03-.5s-1.06-.81-1.4-1.4c-.35-.6-.53-1.28-.53-2.06s.18-1.47.53-2.06c.34-.59.81-1.06 1.4-1.4s1.28-.5 2.03-.5c.62 0 1.18.12 1.71.37.5.25.94.6 1.25 1.09l-.56.41c-.28-.41-.63-.69-1.06-.87-.44-.19-.88-.28-1.38-.28-.62 0-1.15.12-1.65.4s-.87.66-1.12 1.16c-.25.49-.41 1.06-.41 1.71s.13 1.25.41 1.71c.28.47.65.88 1.12 1.16.5.28 1.03.4 1.65.4.5 0 .94-.09 1.38-.28.43-.18.78-.5 1.06-.87l.56.4c-.31.47-.75.85-1.25 1.1-.5.18-1.09.31-1.71.31m7.7 0c-.75 0-1.44-.16-2.03-.5s-1.06-.81-1.4-1.4c-.35-.6-.53-1.28-.53-2.06s.18-1.47.53-2.06c.34-.59.81-1.06 1.4-1.4s1.28-.5 2.03-.5c.62 0 1.18.12 1.71.37.5.25.94.6 1.25 1.09l-.56.41c-.28-.41-.63-.69-1.06-.87-.41-.19-.88-.28-1.38-.28-.62 0-1.15.12-1.65.4s-.87.66-1.12 1.16c-.25.49-.41 1.06-.41 1.71s.13 1.25.41 1.71c.28.47.65.88 1.12 1.16.5.28 1.03.4 1.65.4.5 0 .94-.09 1.38-.28.4-.18.78-.5 1.06-.87l.56.4c-.31.47-.75.85-1.25 1.1-.5.18-1.09.31-1.71.31m17.05 0c-.78 0-1.5-.16-2.09-.5s-1.09-.81-1.44-1.4c-.34-.6-.53-1.28-.53-2.06s.16-1.47.5-2.06c.31-.59.78-1.06 1.34-1.4s1.22-.5 1.9-.5c.72 0 1.35.16 1.91.5s.99.78 1.34 1.37c.31.59.5 1.28.5 2.06v.22h-6.89v-.6h6.48l-.31.28c0-.62-.13-1.15-.38-1.65-.24-.5-.62-.87-1.06-1.12-.43-.28-.96-.41-1.55-.41-.6 0-1.1.13-1.56.41-.47.28-.81.65-1.06 1.12-.25.5-.38 1.03-.38 1.65v.13c0 .62.16 1.21.44 1.68.28.5.69.87 1.18 1.16.5.28 1.06.4 1.72.4.5 0 .97-.09 1.4-.28.44-.19.81-.47 1.09-.81l.44.5c-.34.4-.78.75-1.28.93-.56.28-1.12.38-1.71.38m49.37 0c-.77 0-1.49-.16-2.08-.5-.6-.34-1.1-.81-1.44-1.4-.34-.6-.53-1.28-.53-2.06s.16-1.47.5-2.06c.31-.59.78-1.06 1.34-1.4s1.22-.5 1.9-.5c.72 0 1.34.16 1.9.5.57.34 1 .78 1.34 1.37.32.59.5 1.28.5 2.06v.22h-6.89v-.6H393l-.31.28c0-.62-.13-1.15-.38-1.65s-.62-.87-1.06-1.12c-.43-.28-.96-.41-1.56-.41-.59 0-1.09.13-1.55.41-.47.28-.82.65-1.06 1.12-.25.5-.38 1.03-.38 1.65v.13c0 .62.16 1.21.44 1.68.28.5.68.87 1.18 1.16.5.28 1.06.4 1.72.4.5 0 .96-.09 1.4-.28s.81-.47 1.09-.81l.44.5c-.35.4-.78.75-1.28.93-.56.28-1.12.38-1.72.38m25.22 0c-.75 0-1.43-.16-2.02-.5-.6-.34-1.06-.81-1.41-1.4-.34-.6-.53-1.28-.53-2.06s.19-1.47.53-2.06c.35-.59.81-1.06 1.41-1.4.59-.34 1.27-.5 2.02-.5.63 0 1.19.12 1.72.37.5.25.93.6 1.24 1.09l-.56.41c-.28-.41-.62-.69-1.06-.87-.4-.19-.87-.28-1.37-.28-.62 0-1.15.12-1.65.4s-.87.66-1.12 1.16c-.28.49-.41 1.06-.41 1.71s.13 1.25.41 1.71c.28.5.65.88 1.12 1.16.5.28 1.03.4 1.65.4.5 0 .94-.09 1.37-.28.41-.18.78-.5 1.06-.87l.56.4c-.31.47-.74.85-1.24 1.1-.5.18-1.09.31-1.72.31m-233.17-.69c.59 0 1.12-.12 1.62-.4.47-.28.84-.66 1.12-1.16.29-.5.41-1.06.41-1.71 0-.66-.12-1.25-.41-1.72-.28-.49-.65-.87-1.12-1.15s-1.03-.4-1.62-.4-1.12.12-1.62.4c-.47.28-.84.66-1.12 1.15-.28.5-.41 1.06-.41 1.72 0 .65.13 1.21.41 1.71s.65.88 1.12 1.16c.5.28 1.03.4 1.62.4m.06.69c-.68 0-1.31-.16-1.87-.47s-.99-.78-1.31-1.37c-.31-.59-.49-1.31-.49-2.12s.15-1.53.49-2.12c.32-.59.75-1.06 1.31-1.37s1.19-.47 1.87-.47c.75 0 1.41.16 2 .5s1.03.81 1.37 1.4.5 1.28.5 2.06-.16 1.46-.5 2.06c-.34.59-.78 1.06-1.37 1.4s-1.28.5-2 .5m-3.92 2.83V45.92h.71v2.56l-.12 1.37.15 1.37v5.43h-.74zm113.71-3.52c.6 0 1.13-.12 1.62-.4.47-.28.85-.66 1.13-1.16s.4-1.06.4-1.71c0-.66-.12-1.25-.4-1.72a3.36 3.36 0 0 0-1.13-1.15c-.46-.28-1.02-.4-1.62-.4-.59 0-1.12.12-1.62.4-.47.28-.84.66-1.12 1.15-.28.5-.4 1.06-.4 1.72 0 .65.12 1.21.4 1.71s.65.88 1.12 1.16 1.03.4 1.62.4m0 .69c-.74 0-1.4-.16-1.99-.5s-1.06-.81-1.4-1.4c-.35-.6-.53-1.28-.53-2.06s.18-1.47.53-2.06c.34-.59.81-1.06 1.4-1.4s1.25-.5 1.99-.5c.75 0 1.41.16 2 .5s1.06.81 1.4 1.4.5 1.28.5 2.06-.16 1.46-.5 2.06c-.34.59-.81 1.06-1.4 1.4s-1.25.5-2 .5m66.31-.69c.59 0 1.12-.12 1.62-.4.47-.28.84-.66 1.12-1.16s.41-1.06.41-1.71c0-.66-.13-1.25-.41-1.72-.28-.46-.65-.87-1.12-1.15s-1.03-.4-1.62-.4-1.12.12-1.62.4c-.47.28-.85.66-1.13 1.15-.28.5-.4 1.06-.4 1.72 0 .65.12 1.21.4 1.71s.66.88 1.13 1.16c.5.28 1.03.4 1.62.4m0 .69c-.75 0-1.41-.16-2-.5s-1.06-.81-1.4-1.4c-.34-.6-.53-1.28-.53-2.06s.19-1.47.53-2.06.81-1.06 1.4-1.4 1.25-.5 2-.5 1.4.16 1.99.5 1.06.81 1.41 1.4c.34.59.49 1.28.49 2.06s-.15 1.46-.49 2.06c-.35.59-.82 1.06-1.41 1.4s-1.24.5-1.99.5m-163.72-.1.06-.65c.06 0 .13.03.19.03s.12.03.19.03c.34 0 .62-.12.81-.37.18-.25.34-.6.46-1.03.1-.44.19-.91.22-1.47.03-.53.1-1.09.13-1.65l.12-2.68h5.49v7.79h-.75v-7.35l.22.25h-4.46l.19-.25-.13 2.33c-.03.69-.09 1.35-.15 1.94-.07.62-.19 1.15-.31 1.65-.13.47-.35.84-.6 1.12s-.59.41-.99.41c-.1 0-.19 0-.32-.03-.15 0-.25-.04-.37-.07m132.61 0 .06-.65c.06 0 .12.03.19.03.06 0 .12.03.18.03.35 0 .63-.12.81-.37.19-.25.35-.6.47-1.03.1-.44.19-.91.22-1.47.03-.53.09-1.09.12-1.65l.13-2.68h5.49v7.79h-.75v-7.35l.22.25h-4.49l.18-.25-.12 2.33c-.03.69-.09 1.35-.16 1.94-.06.62-.18 1.15-.31 1.65-.12.5-.34.84-.59 1.12s-.59.41-1 .41c-.09 0-.18 0-.31-.03-.09 0-.22-.04-.34-.07m66.83 0 .06-.65c.07 0 .13.03.19.03s.13.03.19.03c.34 0 .62-.12.81-.37s.34-.6.47-1.03c.12-.44.18-.91.21-1.47.04-.53.1-1.09.13-1.65l.12-2.68h5.49v7.79h-.75v-7.35l.22.25h-4.46l.19-.25-.13 2.33c-.03.69-.09 1.35-.15 1.94-.06.62-.19 1.15-.31 1.65-.13.47-.35.84-.6 1.12-.24.28-.59.41-.99.41-.1 0-.19 0-.31-.03-.13-.04-.25-.04-.38-.07m-220.86.03v-7.35l.22.22h-3.27v-.69h6.86v.69h-3.28l.22-.22v7.35zm19.58 0v-1.77l-.03-.28v-2.93c0-.72-.19-1.28-.59-1.66-.41-.37-.97-.56-1.72-.56-.53 0-1.03.1-1.49.28-.47.19-.88.44-1.19.72l-.37-.53c.37-.34.87-.62 1.4-.81a5.2 5.2 0 0 1 1.71-.28c.97 0 1.72.25 2.22.75.53.5.78 1.22.78 2.18v4.96h-.72zm-2.81.07c-.59 0-1.09-.1-1.49-.28-.44-.19-.75-.44-.97-.78a2.1 2.1 0 0 1-.34-1.16c0-.4.09-.74.28-1.09.19-.31.5-.59.9-.78.41-.18 1-.31 1.72-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.32.31-.5.69-.5 1.12 0 .5.18.91.56 1.19.37.31.9.43 1.59.43.65 0 1.21-.15 1.65-.43.47-.31.78-.75 1-1.31l.22.5c-.22.56-.57 1.03-1.06 1.34-.44.37-1.1.53-1.88.53m70.33-.07v-1.77l-.03-.28v-2.93c0-.72-.19-1.28-.59-1.66-.41-.37-.97-.56-1.72-.56-.53 0-1.03.1-1.49.28-.47.19-.88.44-1.19.72l-.37-.53c.37-.34.87-.62 1.4-.81a5.2 5.2 0 0 1 1.71-.28c.97 0 1.72.25 2.22.75.53.5.78 1.22.78 2.18v4.96h-.72zm-2.81.07c-.59 0-1.09-.1-1.49-.28-.44-.19-.75-.44-.97-.78a2.1 2.1 0 0 1-.34-1.16c0-.4.09-.74.28-1.09.19-.31.5-.59.9-.78.41-.18 1-.31 1.72-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.32.31-.5.69-.5 1.12 0 .5.18.91.56 1.19.37.31.9.43 1.59.43.65 0 1.21-.15 1.65-.43.47-.31.78-.75 1-1.31l.22.5c-.22.56-.57 1.03-1.06 1.34-.47.37-1.1.53-1.88.53m119.86-.07v-1.77l-.03-.28v-2.93c0-.72-.18-1.28-.59-1.66-.41-.37-.97-.56-1.71-.56-.53 0-1.03.1-1.5.28-.47.19-.87.44-1.19.72l-.37-.53c.37-.34.87-.62 1.4-.81.56-.19 1.13-.28 1.72-.28.96 0 1.71.25 2.21.75.53.5.78 1.22.78 2.18v4.96h-.72zm-2.8.07c-.59 0-1.09-.1-1.5-.28-.43-.19-.75-.44-.96-.78-.22-.34-.35-.72-.35-1.16 0-.4.1-.74.28-1.09.19-.31.5-.59.94-.78.43-.18 1-.31 1.71-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.31.31-.5.69-.5 1.12 0 .5.19.91.56 1.19.38.31.91.43 1.59.43.66 0 1.22-.15 1.65-.43.47-.31.78-.75 1-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34s-1.12.53-1.9.53m7.39-.07v-7.35l.21.22h-3.27v-.69h6.86v.69h-3.27l.21-.22v7.35zm43.73 0-3.33-3.89.62-.38 3.61 4.27zm-2.68-3.83-.69-.12 3.21-3.87h.82zm-2.59-.44h2.46v.65h-2.46Zm-.5-3.52h.75v7.79h-.75ZM265.22 53.9l-3.61-8.01h.77l3.31 7.36zm-2.24 2.78c-.38 0-.69-.07-1-.19s-.59-.28-.81-.53l.37-.56c.19.22.41.37.66.47.25.09.5.15.81.15.37 0 .68-.09.93-.31s.53-.56.78-1.09l.53-1.19.1-.12 3.3-7.39h.75l-4.02 8.85c-.22.47-.44.85-.69 1.13s-.5.47-.81.59c-.25.12-.56.19-.9.19m-34.07-10.76h.75v7.79h-.75Zm-4.59 7.23c.81 0 1.41-.15 1.81-.46.41-.35.62-.81.62-1.47 0-.62-.18-1.09-.59-1.4-.4-.31-1-.47-1.81-.47h-2.15v3.8zm.19-4.39c.97 0 1.71.22 2.21.62.5.41.75 1.03.75 1.81 0 .84-.28 1.47-.81 1.9q-.795.66-2.34.66l-2.93-.04v-7.79h.75v2.81zm51.56-2.84h.75v7.79h-.75Zm.09 4.4c-.5.22-.96.37-1.46.5-.5.12-.94.18-1.4.18-.88 0-1.59-.22-2.16-.62-.53-.41-.81-1.03-.81-1.87v-2.59h.75v2.56c0 .62.22 1.09.63 1.43.4.34.96.47 1.68.47.4 0 .87-.06 1.34-.16.47-.12.93-.28 1.43-.5zm88.44 2.77h2.62c.71 0 1.28-.12 1.65-.37s.56-.63.56-1.16-.15-.93-.5-1.18c-.34-.25-.87-.37-1.62-.37h-2.74v3.08zm0-3.61h2.52c.66 0 1.16-.13 1.53-.38.38-.25.56-.62.56-1.09 0-.5-.18-.84-.56-1.09-.37-.25-.87-.37-1.53-.37h-2.52zm-.72 4.23v-7.79h3.31c.87 0 1.52.16 2.02.5s.75.84.75 1.47c0 .62-.25 1.12-.72 1.46-.49.34-1.12.5-1.87.5l.22-.22c.91 0 1.59.16 2.03.5.43.34.65.84.65 1.5 0 .65-.25 1.18-.71 1.56-.5.37-1.22.56-2.25.56h-3.43zm-156.36-.56c.81 0 1.4-.15 1.81-.46.4-.35.59-.81.59-1.47 0-.62-.19-1.09-.59-1.4-.41-.31-1-.47-1.81-.47h-2.18v3.8zm.22-4.39c.97 0 1.71.22 2.21.62.5.41.75 1.03.75 1.81 0 .84-.28 1.46-.81 1.9q-.795.66-2.34.66l-2.96-.04v-7.79h.75v2.81zm199.25 4.39c.82 0 1.41-.15 1.81-.46.41-.35.59-.81.59-1.47 0-.62-.18-1.09-.59-1.4-.4-.31-.99-.47-1.81-.47h-2.18v3.8zm.19-4.39c.97 0 1.72.22 2.21.62.5.41.75 1.03.75 1.81 0 .84-.28 1.46-.81 1.9q-.795.66-2.34.66l-2.96-.04v-7.79h.75v2.81zM162.1 53.71v-7.79h.75v3.56h5.3v-3.56h.75v7.79h-.75v-3.58h-5.3v3.58zm50.19 0v-7.79h.75v3.56h5.3v-3.56h.75v7.79h-.75v-3.58h-5.3v3.58zm33.6 0v-7.79h.75v3.56h5.3v-3.56h.75v7.79h-.75v-3.58h-5.3v3.58zm33.45 0v-7.79h.75v3.56h5.3v-3.56h.75v7.79h-.75v-3.58h-5.3v3.58zm23.76 0v-7.79h.74v6.64l5.55-6.64h.66v7.79h-.75v-6.64l-5.55 6.64zm124.72 0v-7.79h.75v6.64l5.54-6.64h.66v7.79h-.75v-6.64l-5.55 6.64zm-76.41-.34v-6.76h-4.05l-.09 1.93c-.03.56-.06 1.09-.1 1.65-.06.53-.12 1.03-.25 1.5-.12.47-.24.81-.46 1.09-.19.28-.44.44-.75.47l-.75-.16c.31.03.59-.09.78-.34s.34-.59.47-1.03c.12-.44.18-.93.25-1.5.06-.56.09-1.12.12-1.68l.1-2.59h5.48v7.45h-.75zm-6.79 2.28v-2.59h8.82v2.59h-.72v-1.93h-7.39v1.93zm-47.32-6.3h3.83v.69h-3.83Zm49.78 11.22h.75v14h-.75Zm.37 10.51c.91 0 1.66-.13 2.28-.38s1.09-.62 1.4-1.12.5-1.09.5-1.81c0-.68-.15-1.27-.5-1.77-.31-.5-.78-.88-1.4-1.13-.62-.24-1.37-.37-2.28-.37h-.12c-.87 0-1.62.13-2.24.37-.63.25-1.1.63-1.41 1.13s-.46 1.09-.46 1.77c0 .69.15 1.28.46 1.78s.78.87 1.41 1.12c.62.25 1.37.41 2.24.41zm0 .65h-.18c-1.53 0-2.68-.37-3.52-1.06-.85-.68-1.28-1.68-1.28-2.93 0-1.24.43-2.21 1.28-2.9.84-.68 2.05-1.03 3.58-1.03h.12c1.53 0 2.75.35 3.59 1.03.87.69 1.28 1.66 1.28 2.9 0 1.28-.44 2.25-1.28 2.96-.81.69-2.03 1.03-3.59 1.03m-183.35 0c-.75 0-1.44-.15-2.03-.5-.59-.34-1.06-.81-1.4-1.4a4.07 4.07 0 0 1-.53-2.06c0-.78.19-1.46.53-2.05.34-.6.81-1.06 1.4-1.41.59-.34 1.28-.5 2.03-.5.62 0 1.18.13 1.71.38s.94.59 1.25 1.09l-.56.4c-.28-.4-.63-.68-1.06-.87-.44-.18-.87-.28-1.37-.28-.63 0-1.16.13-1.66.41-.49.28-.87.65-1.12 1.15-.28.5-.4 1.06-.4 1.71 0 .66.12 1.25.4 1.72.28.5.66.87 1.12 1.15.5.28 1.03.41 1.66.41.5 0 .93-.1 1.37-.28.43-.19.78-.5 1.06-.88l.56.41c-.31.47-.75.84-1.25 1.09s-1.09.31-1.71.31m50.47-.68c.59 0 1.12-.13 1.62-.41.46-.28.84-.65 1.12-1.15s.4-1.06.4-1.72c0-.65-.12-1.24-.4-1.71s-.66-.87-1.12-1.15c-.47-.29-1.03-.41-1.62-.41-.6 0-1.13.12-1.63.41-.46.28-.84.65-1.12 1.15s-.4 1.06-.4 1.71c0 .66.12 1.22.4 1.72s.66.87 1.12 1.15c.47.28 1 .41 1.63.41m0 .68c-.75 0-1.41-.15-2-.5-.59-.34-1.06-.81-1.4-1.4-.35-.59-.53-1.28-.53-2.06s.18-1.46.53-2.05c.34-.6.81-1.06 1.4-1.41.59-.34 1.25-.5 2-.5.74 0 1.4.16 1.99.5.59.35 1.06.81 1.4 1.41.35.59.5 1.27.5 2.05s-.15 1.47-.5 2.06c-.34.59-.81 1.06-1.4 1.4-.59.32-1.25.5-1.99.5m9.53-.68c.6 0 1.13-.13 1.63-.41.46-.28.84-.65 1.12-1.15s.4-1.06.4-1.72c0-.65-.12-1.24-.4-1.71-.28-.5-.66-.87-1.12-1.15-.47-.29-1.03-.41-1.63-.41-.59 0-1.12.12-1.62.41-.46.28-.84.65-1.12 1.15s-.4 1.06-.4 1.71c0 .66.12 1.22.4 1.72s.66.87 1.12 1.15c.5.28 1.03.41 1.62.41m.07.68c-.69 0-1.31-.15-1.87-.47-.56-.31-1-.77-1.31-1.37-.31-.59-.5-1.31-.5-2.12s.15-1.52.5-2.12c.31-.59.75-1.06 1.31-1.37a3.8 3.8 0 0 1 1.87-.47c.74 0 1.4.16 1.99.5.59.35 1.03.81 1.37 1.41.35.59.5 1.27.5 2.05s-.15 1.47-.5 2.06c-.34.59-.78 1.06-1.37 1.4-.59.32-1.28.5-1.99.5m-3.93 2.84V63.88h.72v2.55l-.13 1.37.16 1.38v5.42h-.75zm137.41-3.52c.59 0 1.12-.13 1.62-.41.47-.28.84-.65 1.12-1.15s.41-1.06.41-1.72c0-.65-.13-1.24-.41-1.71s-.65-.87-1.12-1.15c-.47-.29-1.03-.41-1.62-.41s-1.12.12-1.62.41c-.47.28-.85.65-1.12 1.15-.29.5-.41 1.06-.41 1.71 0 .66.12 1.22.41 1.72.27.5.65.87 1.12 1.15.46.28 1 .41 1.62.41m0 .68c-.75 0-1.41-.15-2-.5-.59-.34-1.06-.81-1.4-1.4a4.07 4.07 0 0 1-.53-2.06c0-.78.19-1.46.53-2.05.34-.6.81-1.06 1.4-1.41.59-.34 1.25-.5 2-.5s1.4.16 1.99.5c.59.35 1.06.81 1.41 1.41.34.59.49 1.27.49 2.05s-.15 1.47-.49 2.06c-.35.59-.82 1.06-1.41 1.4-.59.32-1.24.5-1.99.5m9.54-.68c.59 0 1.12-.13 1.62-.41.47-.28.84-.65 1.12-1.15s.4-1.06.4-1.72c0-.65-.12-1.24-.4-1.71s-.65-.87-1.12-1.15c-.47-.29-1.03-.41-1.62-.41-.6 0-1.13.12-1.62.41-.47.28-.85.65-1.13 1.15s-.4 1.06-.4 1.71c0 .66.12 1.22.4 1.72s.66.87 1.13 1.15c.49.28 1.02.41 1.62.41m.06.68c-.69 0-1.31-.15-1.87-.47-.56-.31-1-.77-1.31-1.37-.31-.59-.5-1.31-.5-2.12s.16-1.52.5-2.12c.31-.59.75-1.06 1.31-1.37a3.8 3.8 0 0 1 1.87-.47c.75 0 1.4.16 1.99.5.6.35 1.03.81 1.38 1.41.34.59.49 1.27.49 2.05s-.15 1.47-.49 2.06c-.35.59-.78 1.06-1.38 1.4-.59.32-1.27.5-1.99.5m-3.93 2.84V63.88h.72v2.55l-.13 1.37.16 1.38v5.42h-.75zm-192.71-2.9v-7.36l.22.22h-3.27v-.68h6.86v.68h-3.28l.22-.22v7.36zm16.24 0v-7.36l.22.22h-3.27v-.68h6.86v.68h-3.28l.22-.22v7.36zm15.78 0v-7.36l.21.22h-3.27v-.68h6.86v.68h-3.27l.21-.22v7.36zm38.84 0v-1.78l-.03-.28v-2.93c0-.71-.19-1.28-.6-1.65-.4-.37-.96-.56-1.71-.56-.53 0-1.03.09-1.5.28-.46.19-.87.44-1.18.72l-.38-.53c.38-.35.88-.63 1.41-.81a5.2 5.2 0 0 1 1.71-.28c.97 0 1.72.25 2.22.74.53.5.77 1.22.77 2.19v4.89zm-2.81.06c-.59 0-1.09-.09-1.49-.28-.44-.18-.75-.43-.97-.78-.22-.34-.34-.71-.34-1.15 0-.41.09-.75.28-1.09.18-.31.5-.59.9-.78.41-.19 1-.31 1.72-.31h2.86v.59h-2.86c-.81 0-1.38.16-1.69.44-.31.31-.5.68-.5 1.12 0 .5.19.9.56 1.18.38.31.91.44 1.59.44.66 0 1.22-.16 1.66-.44.46-.31.78-.75.99-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34-.43.35-1.09.53-1.87.53m24.94-.25c-.56-.15-1.03-.43-1.46-.78l.28-.56c.37.31.81.56 1.31.72.49.16.99.22 1.49.22s.97-.06 1.34-.22c.38-.16.69-.34.91-.62.21-.25.31-.56.31-.88 0-.46-.22-.84-.63-1.09-.4-.25-.99-.37-1.71-.37h-1.25v-.56h1.22c.4 0 .78-.06 1.12-.16.31-.12.59-.28.75-.5.19-.22.28-.46.28-.75 0-.31-.09-.59-.31-.81-.22-.21-.5-.4-.88-.49-.37-.13-.77-.16-1.21-.16-.37 0-.78.06-1.22.19-.4.12-.81.28-1.21.5l-.25-.6c.43-.25.87-.4 1.34-.53.47-.12.9-.18 1.37-.18.59 0 1.09.06 1.59.21.47.16.87.41 1.12.72.28.31.41.69.41 1.09 0 .38-.13.72-.35 1-.24.28-.56.5-.96.65-.41.16-.84.25-1.34.25l.06-.25c.9 0 1.59.19 2.09.53.5.35.75.81.75 1.41 0 .46-.16.87-.44 1.21-.31.35-.69.63-1.22.81-.49.19-1.06.28-1.65.28-.56-.03-1.09-.12-1.65-.28m11.94.19v-1.78l-.03-.28v-2.93c0-.71-.19-1.28-.59-1.65-.41-.37-.97-.56-1.72-.56-.53 0-1.03.09-1.49.28-.47.19-.88.44-1.19.72l-.37-.53c.37-.35.87-.63 1.4-.81a5.2 5.2 0 0 1 1.71-.28c.97 0 1.72.25 2.22.74.53.5.78 1.22.78 2.19v4.89zm-2.81.06c-.59 0-1.09-.09-1.49-.28-.44-.18-.75-.43-.97-.78-.22-.34-.34-.71-.34-1.15 0-.41.09-.75.28-1.09.19-.31.5-.59.9-.78.41-.19 1-.31 1.72-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.69.44-.31.31-.49.68-.49 1.12 0 .5.18.9.56 1.18.37.31.9.44 1.59.44.65 0 1.21-.16 1.65-.44.47-.31.78-.75 1-1.31l.21.5c-.21.56-.56 1.03-1.06 1.34-.49.31-1.12.53-1.87.53m116.12-.06v-1.78l-.03-.28v-2.93c0-.71-.19-1.28-.59-1.65-.41-.37-.97-.56-1.72-.56-.53 0-1.03.09-1.49.28-.47.19-.88.44-1.19.72l-.37-.53c.37-.35.87-.63 1.4-.81.56-.19 1.12-.28 1.72-.28.96 0 1.71.25 2.21.74.53.5.78 1.22.78 2.19v4.89zm-2.8.06c-.6 0-1.1-.09-1.5-.28-.44-.18-.75-.43-.97-.78-.21-.34-.34-.71-.34-1.15 0-.41.09-.75.28-1.09.19-.31.5-.59.9-.78.41-.19 1-.31 1.72-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.32.31-.5.68-.5 1.12 0 .5.18.9.56 1.18.37.31.9.44 1.59.44.65 0 1.21-.16 1.65-.44.47-.31.78-.75 1-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34-.44.35-1.09.53-1.87.53m7.38-.06v-7.36l.22.22h-3.27v-.68h6.86v.68h-3.28l.22-.22v7.36zm14.9-.19c-.56-.15-1.02-.43-1.46-.78l.28-.56c.37.31.81.56 1.31.72s1 .22 1.5.22c.49 0 .96-.06 1.34-.22.37-.16.68-.34.9-.62.22-.25.31-.56.31-.88 0-.46-.22-.84-.62-1.09-.41-.25-1-.37-1.72-.37h-1.24v-.56h1.21c.41 0 .78-.06 1.12-.16.32-.12.6-.28.75-.5.19-.22.28-.46.28-.75 0-.31-.09-.59-.31-.81-.22-.21-.5-.4-.87-.49-.38-.13-.78-.16-1.22-.16-.37 0-.78.06-1.21.19-.41.12-.81.28-1.22.5l-.25-.6c.44-.25.88-.4 1.34-.53.44-.12.91-.18 1.37-.18.6 0 1.1.06 1.59.21.47.16.88.41 1.13.72.28.31.4.69.4 1.09 0 .38-.12.72-.34 1-.25.28-.56.5-.97.65-.4.16-.84.25-1.34.25l.06-.25c.91 0 1.59.19 2.09.53.5.35.75.81.75 1.41 0 .46-.15.87-.44 1.21-.31.35-.68.63-1.21.81-.5.19-1.06.28-1.65.28-.56-.03-1.13-.12-1.66-.28m11.91.19v-1.78l-.03-.28v-2.93c0-.71-.19-1.28-.59-1.65-.41-.37-.97-.56-1.72-.56-.53 0-1.02.09-1.49.28s-.87.44-1.19.72l-.37-.53c.37-.35.87-.63 1.4-.81.56-.19 1.12-.28 1.72-.28.96 0 1.71.25 2.21.74.53.5.78 1.22.78 2.19v4.89zm-2.8.06c-.6 0-1.09-.09-1.5-.28-.44-.18-.75-.43-.97-.78-.21-.34-.34-.71-.34-1.15 0-.41.09-.75.28-1.09.19-.31.5-.59.91-.78.4-.19.99-.31 1.71-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.31.31-.5.68-.5 1.12 0 .5.19.9.56 1.18.37.31.9.44 1.59.44.65 0 1.22-.16 1.65-.44.47-.31.78-.75 1-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34-.47.35-1.09.53-1.87.53m-222.58.13-3.61-8.01h.78l3.3 7.35zm-2.27 2.77c-.38 0-.69-.06-1-.19-.31-.12-.59-.28-.81-.53l.37-.56c.19.22.41.38.66.47s.5.16.81.16c.37 0 .69-.1.94-.31.28-.19.53-.57.77-1.1l.53-1.18.1-.12 3.3-7.39h.75l-4.02 8.85c-.22.47-.44.84-.69 1.12s-.5.47-.81.59c-.22.13-.56.19-.9.19m93.27-1.03v-2.05l.22.09h-1.53v-.65h2.06v2.58h-.75zm-7.23-1.93v-7.79h.74v7.14h5.18v-7.14h.75v7.79zm151.96 1.93v-2.05l.22.09h-1.53v-.65h2.06v2.58h-.75zm-7.26-1.93v-7.79h.75v7.14h5.17v-7.14h.75v7.79zm-281.24 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.75v-6.64l-5.55 6.64zm9.41 0v-7.79h.75v3.55h5.3v-3.55h.75v7.79h-.75v-3.58h-5.3v3.58zm24.19 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.74v-6.64l-5.52 6.64zm54.12 0v-7.79h5.33v.68h-4.8l.22-.22v7.33zm14.74 0v-7.79h.75v3.55h5.3v-3.55h.75v7.79h-.75v-3.58h-5.3v3.58zm9.26 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.74v-6.64l-5.55 6.64zm34.29 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.75v-6.64l-5.54 6.64zm9.45 0v-7.79h.75v6.64l5.54-6.64h.66v7.79h-.75v-6.64l-5.55 6.64zm13.43 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.74v-6.64l-5.55 6.64zm13.47 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.75v-6.64l-5.55 6.64zm9.44 0v-7.79h.75v3.55h5.3v-3.55h.75v7.79h-.75v-3.58h-5.3v3.58zm39 0v-7.79h.75l3.68 6.17h-.34l3.7-6.17h.69v7.79h-.69v-6.92l.16.06-3.55 5.86h-.35l-3.55-5.89.19-.03v6.92zm25.63 0v-7.79h.74v6.64l5.55-6.64h.66v7.79h-.75v-6.64l-5.55 6.64zm34.29 0v-7.79h.74v6.64l5.55-6.64h.66v7.79h-.75v-6.64l-5.55 6.64zm9.44 0v-7.79h.75v6.64l5.55-6.64h.65v7.79h-.75v-6.64l-5.54 6.64zM239.78 89.66c-.77 0-1.49-.16-2.08-.5-.6-.34-1.1-.81-1.44-1.4-.34-.6-.53-1.28-.53-2.06s.16-1.47.5-2.06c.31-.59.78-1.06 1.34-1.4s1.22-.5 1.9-.5c.72 0 1.34.16 1.9.5.57.34 1 .78 1.34 1.37.32.59.5 1.28.5 2.06v.22h-6.89v-.6h6.49l-.31.28c0-.62-.13-1.15-.38-1.65s-.62-.87-1.06-1.12c-.43-.28-.96-.41-1.56-.41-.59 0-1.09.13-1.55.41-.47.28-.82.65-1.06 1.12-.25.5-.38 1.03-.38 1.65v.13c0 .62.16 1.21.44 1.68.28.5.68.87 1.18 1.16.5.28 1.06.4 1.72.4.5 0 .96-.09 1.4-.28s.81-.47 1.09-.81l.44.5c-.35.4-.78.75-1.28.93-.56.28-1.12.38-1.72.38M162.63 89c.59 0 1.12-.12 1.62-.4.47-.28.85-.66 1.13-1.16.28-.49.4-1.06.4-1.71 0-.66-.12-1.25-.4-1.72-.28-.49-.66-.87-1.13-1.15-.46-.28-1.03-.4-1.62-.4s-1.12.12-1.62.4c-.47.28-.84.66-1.12 1.15-.28.5-.41 1.06-.41 1.72 0 .65.13 1.22.41 1.71.28.5.65.88 1.12 1.16.5.25 1.03.4 1.62.4m.03.66c-.68 0-1.31-.16-1.87-.47s-.99-.78-1.31-1.37c-.31-.59-.49-1.31-.49-2.12s.15-1.53.49-2.12c.32-.59.75-1.06 1.31-1.37s1.19-.47 1.87-.47c.75 0 1.41.16 2 .5s1.03.81 1.37 1.4.5 1.28.5 2.06-.16 1.46-.5 2.06c-.34.59-.78 1.06-1.37 1.4s-1.25.5-2 .5m-3.89 2.83V81.8h.71v2.56l-.12 1.37.16 1.37v5.43h-.75zM187.88 89c.59 0 1.12-.12 1.62-.4.47-.28.84-.66 1.12-1.16.29-.49.41-1.06.41-1.71 0-.66-.12-1.25-.41-1.72-.28-.46-.65-.87-1.12-1.15s-1.03-.4-1.62-.4-1.12.12-1.62.4c-.47.28-.84.66-1.12 1.15-.28.5-.41 1.06-.41 1.72 0 .65.13 1.22.41 1.71.28.5.65.88 1.12 1.16.47.25 1 .4 1.62.4m0 .66c-.75 0-1.4-.16-1.99-.5-.6-.34-1.06-.81-1.41-1.4-.34-.6-.53-1.28-.53-2.06s.19-1.47.53-2.06c.35-.59.81-1.06 1.41-1.4.59-.34 1.24-.5 1.99-.5s1.4.16 2 .5c.59.34 1.06.81 1.4 1.4s.5 1.28.5 2.06-.16 1.46-.5 2.06c-.34.59-.81 1.06-1.4 1.4-.6.34-1.25.5-2 .5m8.98-.66c.59 0 1.12-.12 1.62-.4.47-.28.84-.66 1.12-1.16.28-.49.41-1.06.41-1.71 0-.66-.13-1.25-.41-1.72-.28-.46-.65-.87-1.12-1.15s-1.03-.4-1.62-.4-1.12.12-1.62.4c-.47.28-.84.66-1.12 1.15-.28.5-.41 1.06-.41 1.72 0 .65.13 1.22.41 1.71.28.5.65.88 1.12 1.16.47.25 1 .4 1.62.4m0 .66c-.75 0-1.4-.16-2-.5-.59-.34-1.06-.81-1.4-1.4-.34-.6-.53-1.28-.53-2.06s.19-1.47.53-2.06.81-1.06 1.4-1.4c.6-.34 1.25-.5 2-.5s1.4.16 1.99.5c.6.34 1.06.81 1.41 1.4.34.59.5 1.28.5 2.06s-.16 1.46-.5 2.06c-.35.59-.81 1.06-1.41 1.4-.59.34-1.24.5-1.99.5m16.58-.66c.6 0 1.13-.12 1.62-.4.47-.28.85-.66 1.13-1.16.28-.49.4-1.06.4-1.71 0-.66-.12-1.25-.4-1.72-.28-.49-.66-.87-1.13-1.15-.46-.28-1.02-.4-1.62-.4-.59 0-1.12.12-1.62.4-.47.28-.84.66-1.12 1.15-.28.5-.4 1.06-.4 1.72 0 .65.12 1.22.4 1.71.28.5.65.88 1.12 1.16.47.25 1.03.4 1.62.4m.03.66c-.68 0-1.3-.16-1.87-.47-.56-.31-.99-.78-1.3-1.37-.32-.59-.5-1.31-.5-2.12s.15-1.53.5-2.12c.31-.59.74-1.06 1.3-1.37.57-.31 1.19-.47 1.87-.47.75 0 1.41.16 2 .5s1.03.81 1.37 1.4.5 1.28.5 2.06-.16 1.46-.5 2.06c-.34.59-.78 1.06-1.37 1.4s-1.25.5-2 .5m-3.92 2.83V81.8h.71v2.56l-.12 1.37.16 1.37v5.43h-.75zm-36.32-2.9v-1.77l-.03-.28v-2.93c0-.72-.19-1.28-.59-1.66-.41-.37-.97-.56-1.72-.56-.53 0-1.03.1-1.49.28-.47.19-.88.44-1.19.72l-.37-.53c.37-.34.87-.62 1.4-.81s1.12-.28 1.71-.28c.97 0 1.72.25 2.22.75.53.5.78 1.21.78 2.18v4.96h-.72zm-2.81.07c-.59 0-1.09-.1-1.49-.28-.41-.19-.75-.44-.97-.78-.22-.35-.34-.72-.34-1.16 0-.4.09-.74.28-1.09.19-.31.5-.59.94-.78.43-.18.99-.31 1.71-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.32.31-.5.69-.5 1.12 0 .5.18.91.56 1.19.37.31.9.43 1.59.43.65 0 1.21-.15 1.65-.43.47-.31.78-.75 1-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34-.5.37-1.13.53-1.91.53m53.62-.07v-1.77l-.03-.28v-2.93c0-.72-.19-1.28-.59-1.66-.41-.37-.97-.56-1.72-.56-.53 0-1.02.1-1.49.28-.47.19-.87.44-1.19.72l-.37-.53c.37-.34.87-.62 1.4-.81.56-.19 1.12-.28 1.72-.28.96 0 1.71.25 2.21.75.53.5.78 1.21.78 2.18v4.96h-.72zm-2.8.07c-.6 0-1.09-.1-1.5-.28-.44-.19-.75-.44-.97-.78a2.2 2.2 0 0 1-.34-1.16c0-.4.09-.74.28-1.09.19-.31.5-.59.91-.78.4-.18.99-.31 1.71-.31h2.87v.59h-2.87c-.81 0-1.37.16-1.68.44-.31.31-.5.69-.5 1.12 0 .5.19.91.56 1.19.37.31.9.43 1.59.43.65 0 1.22-.15 1.65-.43.47-.31.78-.75 1-1.31l.22.5c-.22.56-.56 1.03-1.06 1.34-.47.37-1.12.53-1.87.53M177.03 89h2.62c.72 0 1.28-.12 1.65-.37.38-.25.57-.62.57-1.15s-.16-.94-.5-1.19c-.35-.25-.88-.37-1.62-.37H177V89zm0-3.64h2.53c.65 0 1.15-.13 1.53-.38.37-.25.56-.62.56-1.09 0-.5-.19-.84-.56-1.09-.38-.25-.88-.37-1.53-.37h-2.53zm-.71 4.23V81.8h3.3c.87 0 1.53.16 2.03.5s.75.84.75 1.47c0 .62-.25 1.12-.72 1.46-.5.34-1.12.5-1.87.5l.22-.22c.9 0 1.59.16 2.02.5q.66.51.66 1.5c0 .65-.25 1.18-.72 1.55-.5.38-1.22.57-2.24.57h-3.43zm24.69 0 3.24-4.2v.37l-3.06-3.96h.84l2.69 3.46h-.32l2.65-3.46h.84l-3.08 3.99v-.4l3.3 4.2h-.87l-2.84-3.67.28.03-2.8 3.64zm26.12 0V81.8h.75v3.56h5.3V81.8h.74v7.79h-.74v-3.58h-5.3v3.58zm17.89 0V81.8h.75v3.56h5.3V81.8h.75v7.79h-.75v-3.58h-5.3v3.58zm9.23 0V81.8h.75v6.64l5.55-6.64h.65v7.79h-.75v-6.64l-5.55 6.64zm14.62-3.05v-4.3l.15.22h-2.58c-.81 0-1.41.15-1.84.46-.44.32-.66.81-.66 1.5 0 1.28.81 1.9 2.43 1.9h2.69zm0 3.05v-2.86l.15.18h-2.77c-.97 0-1.75-.21-2.28-.62-.53-.44-.81-1.06-.81-1.87 0-.87.28-1.53.88-1.96.59-.44 1.37-.66 2.33-.66h3.18v7.79zm-5.77 0 2.18-2.99h.78l-2.15 2.99zm-120.73-.15c-.56-.16-1.03-.44-1.47-.78l.28-.56c.38.31.82.56 1.31.72.5.15 1 .21 1.5.21s.97-.06 1.34-.21c.37-.16.69-.35.9-.63.22-.25.32-.56.32-.87 0-.47-.22-.84-.63-1.09-.4-.25-.99-.38-1.71-.38h-1.25v-.56h1.22c.4 0 .78-.06 1.12-.15.31-.13.59-.28.75-.5.18-.22.28-.47.28-.75 0-.31-.1-.59-.31-.81-.22-.22-.5-.41-.88-.5-.37-.12-.78-.16-1.21-.16-.38 0-.78.07-1.22.19-.4.13-.81.28-1.21.5l-.25-.59c.43-.25.87-.41 1.34-.53.47-.13.9-.19 1.37-.19.59 0 1.09.06 1.59.22.47.16.87.4 1.12.72.28.31.41.68.41 1.09 0 .37-.13.71-.35.99-.25.29-.56.5-.96.66-.41.16-.84.25-1.34.25l.06-.25c.9 0 1.59.19 2.09.53s.75.81.75 1.4c0 .47-.16.88-.44 1.22-.31.34-.69.62-1.22.81-.49.19-1.06.28-1.65.28-.53-.03-1.09-.13-1.65-.28m12.56-.19v-6.76h-4.05l-.09 1.93c-.03.56-.07 1.09-.1 1.65-.06.53-.12 1.03-.25 1.5-.12.47-.25.81-.46 1.09-.19.28-.44.44-.75.47l-.75-.16c.31.03.59-.09.78-.34s.34-.59.47-1.03c.12-.44.18-.94.25-1.5.06-.56.09-1.12.12-1.68l.09-2.59h5.49v7.45h-.75zm-6.79 2.31v-2.59h8.82v2.59h-.72v-1.93h-7.39v1.93z" })] }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SVGProps } from "react";
|
|
2
|
+
export interface LogoMarkProps extends Omit<SVGProps<SVGSVGElement>, "children"> {
|
|
3
|
+
/** Доступное имя. Без него логотип декоративный (aria-hidden). */
|
|
4
|
+
title?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function LogoMark({ title, ...props }: LogoMarkProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Сгенерировано scripts/gen-logos.mjs из assets/brand/logo/logo-mark.svg, не редактировать.
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
export function LogoMark({ title, ...props }) {
|
|
5
|
+
const uid = useId();
|
|
6
|
+
return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "1 1 113.18 94.15", role: title ? "img" : undefined, "aria-labelledby": title ? `${uid}title` : undefined, "aria-hidden": title ? undefined : true, ...props, children: [title ? _jsx("title", { id: `${uid}title`, children: title }) : null, _jsx("path", { fill: "#d6867f", d: "M113.19 54.12c0 22.23-20.37 40.25-45.49 40.25-17.15 0-32.07-8.39-39.83-20.77h14.49a32.67 32.67 0 0 0 26.21 13.1c17.99 0 32.57-14.46 32.57-32.27S86.57 22.16 68.57 22.16c-1.87 0-3.74.16-5.58.48l11.91 5.4-3.57 7.85-23.3-10.59L58.61 2l7.35 3.34-4.02 8.86c1.91-.21 3.84-.31 5.76-.31 25.12 0 45.49 18.02 45.49 40.23" }), _jsx("path", { fill: "#d6867f", d: "m44.45 26.74 7.02-15.45-7.35-3.33-10.59 23.3 23.31 10.58 3.56-7.85zm-3.79 18.64H27.85V32.57H14.81v12.81H2v13.03h12.81v12.82h13.04V58.41h12.81z" })] }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SVGProps } from "react";
|
|
2
|
+
export interface LogoVerticalProps extends Omit<SVGProps<SVGSVGElement>, "children"> {
|
|
3
|
+
/** Доступное имя. Без него логотип декоративный (aria-hidden). */
|
|
4
|
+
title?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function LogoVertical({ title, ...props }: LogoVerticalProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Сгенерировано scripts/gen-logos.mjs из assets/brand/logo/logo-vertical.svg, не редактировать.
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
export function LogoVertical({ title, ...props }) {
|
|
5
|
+
const uid = useId();
|
|
6
|
+
return (_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "12 7.25 113.5 132.5", role: title ? "img" : undefined, "aria-labelledby": title ? `${uid}title` : undefined, "aria-hidden": title ? undefined : true, ...props, children: [title ? _jsx("title", { id: `${uid}title`, children: title }) : null, _jsxs("defs", { children: [_jsx("clipPath", { id: `${uid}a`, children: _jsx("path", { d: "M0 160h140V0H0Z", clipRule: "evenodd" }) }), _jsx("clipPath", { id: `${uid}b`, children: _jsx("path", { d: "M-948 234H972V-846H-948Z" }) }), _jsx("clipPath", { id: `${uid}c`, children: _jsx("path", { d: "M11.482 140.619H122.6v-23.257H11.482Z" }) }), _jsx("clipPath", { id: `${uid}d`, children: _jsx("path", { d: "M11.482 140.619H122.6v-23.257H11.482Z" }) }), _jsx("clipPath", { id: `${uid}e`, children: _jsx("path", { d: "M11.482 140.619H28.09v-23.257H11.482Z" }) }), _jsx("clipPath", { id: `${uid}f`, children: _jsx("path", { d: "M11.482 140.619H28.09v-23.257H11.482Z" }) }), _jsx("clipPath", { id: `${uid}h`, children: _jsx("path", { d: "M27.918 140.619H59.94v-23.257H27.918Z" }) }), _jsx("clipPath", { id: `${uid}i`, children: _jsx("path", { d: "M27.918 140.619H59.94v-23.257H27.918Z" }) }), _jsx("clipPath", { id: `${uid}l`, children: _jsx("path", { d: "M59.97 140.619h16.25v-23.257H59.97Z" }) }), _jsx("clipPath", { id: `${uid}m`, children: _jsx("path", { d: "M59.97 140.619h16.25v-23.257H59.97Z" }) }), _jsx("clipPath", { id: `${uid}n`, children: _jsx("path", { d: "M76.27 140.619h16.84v-23.257H76.27Z" }) }), _jsx("clipPath", { id: `${uid}o`, children: _jsx("path", { d: "M76.27 140.619h16.84v-23.257H76.27Z" }) }), _jsx("clipPath", { id: `${uid}q`, children: _jsx("path", { d: "M93.07 140.619h16.26v-23.257H93.07Z" }) }), _jsx("clipPath", { id: `${uid}r`, children: _jsx("path", { d: "M93.07 140.619h16.26v-23.257H93.07Z" }) }), _jsx("clipPath", { id: `${uid}s`, children: _jsx("path", { d: "M109.37 140.619h13.23v-23.257h-13.23Z" }) }), _jsx("clipPath", { id: `${uid}t`, children: _jsx("path", { d: "M109.37 140.619h13.23v-23.257h-13.23Z" }) }), _jsx("path", { id: `${uid}g`, d: "M.126 0v.7h.051V.046h.451V.7h.051V0zm.618-.169v.185L.758 0h-.13v.046h.164v-.215z" }), _jsx("path", { id: `${uid}j`, d: "M.645.7h.051V0H.645zM.177 0H.126v.7h.051zm.474.333h-.48v.045h.48z" }), _jsx("path", { id: `${uid}k`, d: "M.126 0v.7h.051V.086L.654.7h.045V0H.648v.613L.171 0z" }), _jsx("path", { id: `${uid}p`, d: "M.426-.005q-.078 0-.145.026A.35.35 0 0 0 .062.35q0 .075.027.14a.34.34 0 0 0 .192.188.4.4 0 0 0 .145.027Q.504.705.57.678A.35.35 0 0 0 .79.35.36.36 0 0 0 .686.096.4.4 0 0 0 .57.021a.4.4 0 0 0-.144-.026m0 .047q.067 0 .124.023a.3.3 0 0 1 .165.163.3.3 0 0 1 .023.122.3.3 0 0 1-.089.22.3.3 0 0 1-.099.065.3.3 0 0 1-.124.023.3.3 0 0 1-.124-.023A.3.3 0 0 1 .113.35a.3.3 0 0 1 .09-.22.3.3 0 0 1 .099-.065.3.3 0 0 1 .124-.023" }), _jsx("path", { id: `${uid}u`, d: "m.037.09.021.036A.3.3 0 0 1 .164.062.4.4 0 0 1 .283.04q.06 0 .11.018a.2.2 0 0 1 .082.055q.03.037.031.089 0 .068-.052.104a.25.25 0 0 1-.146.036H.164v.044h.142q.08 0 .125.035.045.034.045.095 0 .044-.025.075a.16.16 0 0 1-.066.048.3.3 0 0 1-.093.02.36.36 0 0 1-.214-.061L.059.641a.44.44 0 0 0 .252.063.3.3 0 0 0 .11-.028A.2.2 0 0 0 .5.614.15.15 0 0 0 .528.522.16.16 0 0 0 .503.433.16.16 0 0 0 .432.375a.3.3 0 0 0-.108-.02l.004.019A.3.3 0 0 0 .451.352.2.2 0 0 0 .53.29.16.16 0 0 0 .558.196.17.17 0 0 0 .533.104.2.2 0 0 0 .463.04.37.37 0 0 0 .139.025.4.4 0 0 0 .038.09" })] }), _jsxs("g", { clipPath: `url(#${uid}a)`, children: [_jsx("path", { fill: "#333", d: "M-887.903-785.305H911.904Zm0 68.431H911.904Z" }), _jsxs("g", { clipPath: `url(#${uid}b)`, children: [_jsx("path", { fill: "#d6867f", d: "M51.899 51.726H39.086V38.91H26.051v12.815H13.239v13.032h12.812v12.816h13.035V64.758h12.813Z" }), _jsx("path", { fill: "#d6867f", d: "M124.427 60.468c0 22.227-20.368 40.245-45.49 40.245-17.144 0-32.072-8.39-39.826-20.772h14.493a32.62 32.62 0 0 0 26.21 13.102c17.988 0 32.569-14.46 32.569-32.27s-14.575-32.268-32.57-32.268a33 33 0 0 0-5.584.476l11.91 5.404-3.566 7.854L59.268 31.65 69.85 8.345l7.35 3.337-4.024 8.866c1.915-.21 3.84-.316 5.766-.316 25.116 0 45.484 18.027 45.484 40.236" }), _jsx("path", { fill: "#d6867f", d: "m55.689 33.09 7.016-15.45-7.35-3.339L44.77 37.606 68.077 48.19l3.567-7.854Z" }), _jsx("g", { clipPath: `url(#${uid}c)`, children: _jsxs("g", { clipPath: `url(#${uid}d)`, children: [_jsx("g", { clipPath: `url(#${uid}e)`, children: _jsx("g", { clipPath: `url(#${uid}f)`, children: _jsx("use", { href: `#${uid}g`, transform: "matrix(20.9705 0 0 -20.9705 11.482 135.187)" }) }) }), _jsx("g", { clipPath: `url(#${uid}h)`, children: _jsxs("g", { clipPath: `url(#${uid}i)`, children: [_jsx("use", { href: `#${uid}j`, transform: "matrix(20.9705 0 0 -20.9705 27.919 135.187)" }), _jsx("use", { href: `#${uid}k`, transform: "matrix(20.9705 0 0 -20.9705 43.898 135.187)" })] }) }), _jsx("g", { clipPath: `url(#${uid}l)`, children: _jsx("g", { clipPath: `url(#${uid}m)`, children: _jsx("use", { href: `#${uid}k`, transform: "matrix(20.9705 0 0 -20.9705 59.97 135.187)" }) }) }), _jsx("g", { clipPath: `url(#${uid}n)`, children: _jsx("g", { clipPath: `url(#${uid}o)`, children: _jsx("use", { href: `#${uid}p`, transform: "matrix(20.9705 0 0 -20.9705 76.269 135.187)" }) }) }), _jsx("g", { clipPath: `url(#${uid}q)`, children: _jsx("g", { clipPath: `url(#${uid}r)`, children: _jsx("use", { href: `#${uid}k`, transform: "matrix(20.9705 0 0 -20.9705 93.075 135.187)" }) }) }), _jsx("g", { clipPath: `url(#${uid}s)`, children: _jsx("g", { clipPath: `url(#${uid}t)`, children: _jsx("use", { href: `#${uid}u`, transform: "matrix(20.9705 0 0 -20.9705 109.37 135.187)" }) }) })] }) })] })] })] }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SVGProps } from 'react';
|
|
2
|
+
import { LogoHorizontal } from './logo/logo-horizontal.js';
|
|
3
|
+
import { LogoMark } from './logo/logo-mark.js';
|
|
4
|
+
import { LogoVertical } from './logo/logo-vertical.js';
|
|
5
|
+
declare const VARIANTS: {
|
|
6
|
+
readonly horizontal: typeof LogoHorizontal;
|
|
7
|
+
readonly vertical: typeof LogoVertical;
|
|
8
|
+
readonly mark: typeof LogoMark;
|
|
9
|
+
};
|
|
10
|
+
export interface LogoProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {
|
|
11
|
+
/** horizontal — знак, «ЦНИИОИЗ» и дескриптор; vertical — знак и «ЦНИИОИЗ»; mark — только знак. */
|
|
12
|
+
variant?: keyof typeof VARIANTS;
|
|
13
|
+
/** Доступное имя («ЦНИИОИЗ»). Не нужно, если логотип внутри ссылки с aria-label. */
|
|
14
|
+
title?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Логотип ЦНИИОИЗ. Размер — классом высоты: `className="h-10 w-auto"`. */
|
|
17
|
+
export declare function Logo({ variant, ...props }: LogoProps): import("react").JSX.Element;
|
|
18
|
+
export { LogoHorizontal, LogoMark, LogoVertical };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { LogoHorizontal } from './logo/logo-horizontal.js';
|
|
3
|
+
import { LogoMark } from './logo/logo-mark.js';
|
|
4
|
+
import { LogoVertical } from './logo/logo-vertical.js';
|
|
5
|
+
const VARIANTS = { horizontal: LogoHorizontal, vertical: LogoVertical, mark: LogoMark };
|
|
6
|
+
/** Логотип ЦНИИОИЗ. Размер — классом высоты: `className="h-10 w-auto"`. */
|
|
7
|
+
export function Logo({ variant = 'horizontal', ...props }) {
|
|
8
|
+
const Variant = VARIANTS[variant];
|
|
9
|
+
return _jsx(Variant, { ...props });
|
|
10
|
+
}
|
|
11
|
+
// Отдельные варианты: в клиентском компоненте импорт одного варианта не тянет остальные.
|
|
12
|
+
export { LogoHorizontal, LogoMark, LogoVertical };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/** Реквизиты по умолчанию — как в подвале mednet.ru (сверено 2026-10-14). */
|
|
3
|
+
export declare const CNIIOIZ: {
|
|
4
|
+
readonly fullName: "Центральный научно-исследовательский институт организации и информатизации здравоохранения Минздрава России";
|
|
5
|
+
readonly shortName: "ФГБУ «ЦНИИОИЗ» Минздрава России";
|
|
6
|
+
readonly phone: "+7 (495) 618-31-83";
|
|
7
|
+
readonly email: "mail@mednet.ru";
|
|
8
|
+
};
|
|
9
|
+
export interface SiteFooterProps extends Omit<ComponentProps<'footer'>, 'children'> {
|
|
10
|
+
/** Полное наименование организации. */
|
|
11
|
+
orgName?: string;
|
|
12
|
+
/** Правообладатель в строке «©». */
|
|
13
|
+
copyright?: string;
|
|
14
|
+
/** Телефон; `null` — не показывать. */
|
|
15
|
+
phone?: string | null;
|
|
16
|
+
/** Электронная почта; `null` — не показывать. */
|
|
17
|
+
email?: string | null;
|
|
18
|
+
/** Год в строке «©»; по умолчанию текущий (при static export — год сборки). */
|
|
19
|
+
year?: number;
|
|
20
|
+
/** Дополнительные ссылки: политика конфиденциальности, карта сайта… */
|
|
21
|
+
links?: ReactNode;
|
|
22
|
+
}
|
|
23
|
+
/** Подвал сайта с реквизитами ЦНИИОИЗ (переопределяются пропсами). */
|
|
24
|
+
export declare function SiteFooter({ orgName, copyright, phone, email, year, links, className, ...props }: SiteFooterProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '#lib/utils';
|
|
3
|
+
import { Logo } from './logo.js';
|
|
4
|
+
/** Реквизиты по умолчанию — как в подвале mednet.ru (сверено 2026-10-14). */
|
|
5
|
+
export const CNIIOIZ = {
|
|
6
|
+
fullName: 'Центральный научно-исследовательский институт организации и информатизации здравоохранения Минздрава России',
|
|
7
|
+
shortName: 'ФГБУ «ЦНИИОИЗ» Минздрава России',
|
|
8
|
+
phone: '+7 (495) 618-31-83',
|
|
9
|
+
email: 'mail@mednet.ru',
|
|
10
|
+
};
|
|
11
|
+
const telHref = (phone) => `tel:${phone.replace(/[^\d+]/g, '')}`;
|
|
12
|
+
/** Подвал сайта с реквизитами ЦНИИОИЗ (переопределяются пропсами). */
|
|
13
|
+
export function SiteFooter({ orgName = CNIIOIZ.fullName, copyright = CNIIOIZ.shortName, phone = CNIIOIZ.phone, email = CNIIOIZ.email, year = new Date().getFullYear(), links, className, ...props }) {
|
|
14
|
+
return (_jsx("footer", { "data-slot": "site-footer", className: cn('border-t border-border bg-muted text-sm text-muted-foreground', className), ...props, children: _jsxs("div", { className: "mx-auto grid max-w-7xl gap-6 px-4 py-10 sm:px-6 md:grid-cols-[auto_1fr_auto] md:items-start", children: [_jsx(Logo, { variant: "mark", className: "h-10 w-auto" }), _jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "font-semibold text-foreground", children: orgName }), phone || email ? (_jsxs("p", { className: "flex flex-wrap gap-x-6 gap-y-1", children: [phone ? (_jsx("a", { href: telHref(phone), className: "hover:text-foreground", children: phone })) : null, email ? (_jsx("a", { href: `mailto:${email}`, className: "hover:text-foreground", children: email })) : null] })) : null, _jsxs("p", { children: ["\u00A9 ", year, " ", copyright] })] }), links ? (_jsx("nav", { "aria-label": "\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u0441\u0441\u044B\u043B\u043A\u0438", className: "flex flex-col gap-2", children: links })) : null] }) }));
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
export interface SiteHeaderProps extends Omit<ComponentProps<'header'>, 'children'> {
|
|
3
|
+
/** Адрес главной страницы — ссылка на логотипе. */
|
|
4
|
+
homeHref?: string;
|
|
5
|
+
/** Пункты основной навигации: ссылки (`<a>` или `next/link`). */
|
|
6
|
+
nav?: ReactNode;
|
|
7
|
+
/** Действия справа: кнопки, вход, профиль. */
|
|
8
|
+
actions?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/** Шапка сайта: логотип ЦНИИОИЗ, основная навигация, действия. */
|
|
11
|
+
export declare function SiteHeader({ homeHref, nav, actions, className, ...props }: SiteHeaderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '#lib/utils';
|
|
3
|
+
import { Logo } from './logo.js';
|
|
4
|
+
/** Шапка сайта: логотип ЦНИИОИЗ, основная навигация, действия. */
|
|
5
|
+
export function SiteHeader({ homeHref = '/', nav, actions, className, ...props }) {
|
|
6
|
+
return (_jsx("header", { "data-slot": "site-header", className: cn('border-b border-border bg-background', className), ...props, children: _jsxs("div", { className: "mx-auto flex min-h-16 max-w-7xl flex-wrap items-center gap-x-8 gap-y-2 px-4 py-3 sm:px-6", children: [_jsxs("a", { href: homeHref, "aria-label": "\u0426\u041D\u0418\u0418\u041E\u0418\u0417 \u2014 \u043D\u0430 \u0433\u043B\u0430\u0432\u043D\u0443\u044E", className: "shrink-0 rounded-md outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", children: [_jsx(Logo, { variant: "horizontal", className: "hidden h-11 w-auto sm:block" }), _jsx(Logo, { variant: "mark", className: "h-9 w-auto sm:hidden" })] }), nav ? (_jsx("nav", { "aria-label": "\u041E\u0441\u043D\u043E\u0432\u043D\u0430\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F", className: "flex flex-wrap items-center gap-x-6 gap-y-2 text-sm font-medium", children: nav })) : null, actions ? _jsx("div", { className: "ml-auto flex items-center gap-2", children: actions }) : null] }) }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
|
|
2
|
+
declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react").JSX.Element;
|
|
3
|
+
declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react").JSX.Element;
|
|
4
|
+
declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react").JSX.Element;
|
|
5
|
+
declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react").JSX.Element;
|
|
6
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
|
|
3
|
+
import { cn } from "#lib/utils";
|
|
4
|
+
import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
5
|
+
function Accordion({ className, ...props }) {
|
|
6
|
+
return (_jsx(AccordionPrimitive.Root, { "data-slot": "accordion", className: cn("flex w-full flex-col overflow-hidden rounded-2xl border", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
function AccordionItem({ className, ...props }) {
|
|
9
|
+
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("not-last:border-b data-open:bg-muted/50", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
12
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none hover:underline aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className), ...props, children: [children, _jsx(ChevronDownIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" }), _jsx(ChevronUpIcon, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" })] }) }));
|
|
13
|
+
}
|
|
14
|
+
function AccordionContent({ className, children, ...props }) {
|
|
15
|
+
return (_jsx(AccordionPrimitive.Panel, { "data-slot": "accordion-content", className: "overflow-hidden px-4 text-sm data-open:animate-accordion-down data-closed:animate-accordion-up", ...props, children: _jsx("div", { className: cn("h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
|
|
16
|
+
}
|
|
17
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
3
|
+
import { Button } from "#components/button";
|
|
4
|
+
declare function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props): React.JSX.Element;
|
|
5
|
+
declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): React.JSX.Element;
|
|
6
|
+
declare function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props): React.JSX.Element;
|
|
7
|
+
declare function AlertDialogOverlay({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): React.JSX.Element;
|
|
8
|
+
declare function AlertDialogContent({ className, size, ...props }: AlertDialogPrimitive.Popup.Props & {
|
|
9
|
+
size?: "default" | "sm";
|
|
10
|
+
}): React.JSX.Element;
|
|
11
|
+
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
12
|
+
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
13
|
+
declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
14
|
+
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
|
|
15
|
+
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
|
|
16
|
+
declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
17
|
+
declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialogPrimitive.Close.Props & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
|
|
18
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
|
|
4
|
+
import { cn } from "#lib/utils";
|
|
5
|
+
import { Button } from "#components/button";
|
|
6
|
+
function AlertDialog({ ...props }) {
|
|
7
|
+
return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
8
|
+
}
|
|
9
|
+
function AlertDialogTrigger({ ...props }) {
|
|
10
|
+
return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AlertDialogPortal({ ...props }) {
|
|
13
|
+
return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
14
|
+
}
|
|
15
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
16
|
+
return (_jsx(AlertDialogPrimitive.Backdrop, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
19
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Popup, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props })] }));
|
|
20
|
+
}
|
|
21
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
28
|
+
return (_jsx("div", { "data-slot": "alert-dialog-media", className: cn("mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
31
|
+
return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
34
|
+
return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
|
|
35
|
+
}
|
|
36
|
+
function AlertDialogAction({ className, ...props }) {
|
|
37
|
+
return (_jsx(Button, { "data-slot": "alert-dialog-action", className: cn(className), ...props }));
|
|
38
|
+
}
|
|
39
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
40
|
+
return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-cancel", className: cn(className), render: _jsx(Button, { variant: variant, size: size }), ...props }));
|
|
41
|
+
}
|
|
42
|
+
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const alertVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
|
|
7
|
+
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
8
|
+
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
9
|
+
declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { cn } from "#lib/utils";
|
|
4
|
+
const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: "bg-card text-card-foreground",
|
|
8
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
defaultVariants: {
|
|
12
|
+
variant: "default",
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
function Alert({ className, variant, ...props }) {
|
|
16
|
+
return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function AlertTitle({ className, ...props }) {
|
|
19
|
+
return (_jsx("div", { "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function AlertDescription({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertAction({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-action", className: cn("absolute top-2.5 right-3", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
export { Alert, AlertTitle, AlertDescription, AlertAction };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "#lib/utils";
|
|
3
|
+
function AspectRatio({ ratio, className, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "aspect-ratio", style: {
|
|
5
|
+
"--ratio": ratio,
|
|
6
|
+
}, className: cn("relative aspect-(--ratio)", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
export { AspectRatio };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
3
|
+
import { type VariantProps } from "class-variance-authority";
|
|
4
|
+
import { Button } from "#components/button";
|
|
5
|
+
declare const attachmentVariants: (props?: ({
|
|
6
|
+
size?: "default" | "xs" | "sm" | null | undefined;
|
|
7
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
declare function Attachment({ className, state, size, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof attachmentVariants> & {
|
|
10
|
+
state?: "idle" | "uploading" | "processing" | "error" | "done";
|
|
11
|
+
}): React.JSX.Element;
|
|
12
|
+
declare const attachmentMediaVariants: (props?: ({
|
|
13
|
+
variant?: "image" | "icon" | null | undefined;
|
|
14
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
|
+
declare function AttachmentMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof attachmentMediaVariants>): React.JSX.Element;
|
|
16
|
+
declare function AttachmentContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
17
|
+
declare function AttachmentTitle({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
18
|
+
declare function AttachmentDescription({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
19
|
+
declare function AttachmentActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
20
|
+
declare function AttachmentAction({ className, variant, size, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
21
|
+
declare function AttachmentTrigger({ className, render, type, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
22
|
+
declare function AttachmentGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
23
|
+
export { Attachment, AttachmentGroup, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentAction, AttachmentTrigger, };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "#lib/utils";
|
|
6
|
+
import { Button } from "#components/button";
|
|
7
|
+
const attachmentVariants = cva("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-2xl border bg-card text-card-foreground transition-colors focus-within:ring-1 focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 data-[state=idle]:border-dashed", {
|
|
8
|
+
variants: {
|
|
9
|
+
size: {
|
|
10
|
+
default: "gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2",
|
|
11
|
+
sm: "gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
12
|
+
xs: "gap-1.5 rounded-xl text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1",
|
|
13
|
+
},
|
|
14
|
+
orientation: {
|
|
15
|
+
horizontal: "min-w-40 items-center",
|
|
16
|
+
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
function Attachment({ className, state = "done", size = "default", orientation = "horizontal", ...props }) {
|
|
21
|
+
return (_jsx("div", { "data-slot": "attachment", "data-state": state, "data-size": size, "data-orientation": orientation, className: cn(attachmentVariants({ size, orientation }), className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
const attachmentMediaVariants = cva("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-xl bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-lg group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
|
|
24
|
+
variants: {
|
|
25
|
+
variant: {
|
|
26
|
+
icon: "",
|
|
27
|
+
image: "opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: {
|
|
31
|
+
variant: "icon",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
function AttachmentMedia({ className, variant = "icon", ...props }) {
|
|
35
|
+
return (_jsx("div", { "data-slot": "attachment-media", "data-variant": variant, className: cn(attachmentMediaVariants({ variant }), className), ...props }));
|
|
36
|
+
}
|
|
37
|
+
function AttachmentContent({ className, ...props }) {
|
|
38
|
+
return (_jsx("div", { "data-slot": "attachment-content", className: cn("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className), ...props }));
|
|
39
|
+
}
|
|
40
|
+
function AttachmentTitle({ className, ...props }) {
|
|
41
|
+
return (_jsx("span", { "data-slot": "attachment-title", className: cn("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className), ...props }));
|
|
42
|
+
}
|
|
43
|
+
function AttachmentDescription({ className, ...props }) {
|
|
44
|
+
return (_jsx("span", { "data-slot": "attachment-description", className: cn("mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive/80", "max-w-full", className), ...props }));
|
|
45
|
+
}
|
|
46
|
+
function AttachmentActions({ className, ...props }) {
|
|
47
|
+
return (_jsx("div", { "data-slot": "attachment-actions", className: cn("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 group-data-[orientation=vertical]/attachment:gap-1", className), ...props }));
|
|
48
|
+
}
|
|
49
|
+
function AttachmentAction({ className, variant, size = "icon-xs", ...props }) {
|
|
50
|
+
return (_jsx(Button, { "data-slot": "attachment-action", variant: variant ?? "ghost", size: size, className: cn(className), ...props }));
|
|
51
|
+
}
|
|
52
|
+
function AttachmentTrigger({ className, render, type, ...props }) {
|
|
53
|
+
return useRender({
|
|
54
|
+
defaultTagName: "button",
|
|
55
|
+
props: mergeProps({
|
|
56
|
+
type: render ? type : (type ?? "button"),
|
|
57
|
+
className: cn("absolute inset-0 z-10 outline-none", className),
|
|
58
|
+
}, props),
|
|
59
|
+
render,
|
|
60
|
+
state: {
|
|
61
|
+
slot: "attachment-trigger",
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function AttachmentGroup({ className, ...props }) {
|
|
66
|
+
return (_jsx("div", { "data-slot": "attachment-group", className: cn("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 scrollbar-none gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className), ...props }));
|
|
67
|
+
}
|
|
68
|
+
export { Attachment, AttachmentGroup, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentAction, AttachmentTrigger, };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
|
|
3
|
+
declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
|
|
4
|
+
size?: "default" | "sm" | "lg";
|
|
5
|
+
}): React.JSX.Element;
|
|
6
|
+
declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): React.JSX.Element;
|
|
7
|
+
declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
|
|
8
|
+
declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
9
|
+
declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
10
|
+
declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
11
|
+
export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
|