@mednet/ui 0.0.0-stage → 1.1.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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -2
  3. package/THIRD_PARTY_NOTICES.md +27 -0
  4. package/dist/brand/logo/logo-horizontal.d.ts +6 -0
  5. package/dist/brand/logo/logo-horizontal.js +7 -0
  6. package/dist/brand/logo/logo-mark.d.ts +6 -0
  7. package/dist/brand/logo/logo-mark.js +7 -0
  8. package/dist/brand/logo/logo-vertical.d.ts +6 -0
  9. package/dist/brand/logo/logo-vertical.js +7 -0
  10. package/dist/brand/logo.d.ts +18 -0
  11. package/dist/brand/logo.js +12 -0
  12. package/dist/brand/site-footer.d.ts +24 -0
  13. package/dist/brand/site-footer.js +15 -0
  14. package/dist/brand/site-header.d.ts +11 -0
  15. package/dist/brand/site-header.js +7 -0
  16. package/dist/components/accordion.d.ts +6 -0
  17. package/dist/components/accordion.js +17 -0
  18. package/dist/components/alert-dialog.d.ts +18 -0
  19. package/dist/components/alert-dialog.js +42 -0
  20. package/dist/components/alert.d.ts +10 -0
  21. package/dist/components/alert.js +27 -0
  22. package/dist/components/aspect-ratio.d.ts +4 -0
  23. package/dist/components/aspect-ratio.js +8 -0
  24. package/dist/components/attachment.d.ts +23 -0
  25. package/dist/components/attachment.js +68 -0
  26. package/dist/components/avatar.d.ts +11 -0
  27. package/dist/components/avatar.js +23 -0
  28. package/dist/components/badge.d.ts +7 -0
  29. package/dist/components/badge.js +33 -0
  30. package/dist/components/breadcrumb.d.ts +10 -0
  31. package/dist/components/breadcrumb.js +36 -0
  32. package/dist/components/bubble.d.ts +16 -0
  33. package/dist/components/bubble.js +59 -0
  34. package/dist/components/button-group.d.ts +10 -0
  35. package/dist/components/button-group.js +36 -0
  36. package/dist/components/button.d.ts +8 -0
  37. package/dist/components/button.js +34 -0
  38. package/dist/components/calendar.d.ts +10 -0
  39. package/dist/components/calendar.js +76 -0
  40. package/dist/components/card.d.ts +11 -0
  41. package/dist/components/card.js +24 -0
  42. package/dist/components/carousel.d.ts +28 -0
  43. package/dist/components/carousel.js +91 -0
  44. package/dist/components/chart.d.ts +44 -0
  45. package/dist/components/chart.js +132 -0
  46. package/dist/components/checkbox.d.ts +3 -0
  47. package/dist/components/checkbox.js +9 -0
  48. package/dist/components/collapsible.d.ts +5 -0
  49. package/dist/components/collapsible.js +13 -0
  50. package/dist/components/combobox.d.ts +24 -0
  51. package/dist/components/combobox.js +58 -0
  52. package/dist/components/command.d.ts +19 -0
  53. package/dist/components/command.js +35 -0
  54. package/dist/components/context-menu.d.ts +29 -0
  55. package/dist/components/context-menu.js +51 -0
  56. package/dist/components/dialog.d.ts +17 -0
  57. package/dist/components/dialog.js +37 -0
  58. package/dist/components/direction.d.ts +1 -0
  59. package/dist/components/direction.js +2 -0
  60. package/dist/components/drawer.d.ts +16 -0
  61. package/dist/components/drawer.js +75 -0
  62. package/dist/components/dropdown-menu.d.ts +29 -0
  63. package/dist/components/dropdown-menu.js +51 -0
  64. package/dist/components/empty.d.ts +11 -0
  65. package/dist/components/empty.js +33 -0
  66. package/dist/components/field.d.ts +24 -0
  67. package/dist/components/field.js +68 -0
  68. package/dist/components/hover-card.d.ts +5 -0
  69. package/dist/components/hover-card.js +14 -0
  70. package/dist/components/input-group.d.ts +18 -0
  71. package/dist/components/input-group.js +57 -0
  72. package/dist/components/input-otp.d.ts +11 -0
  73. package/dist/components/input-otp.js +21 -0
  74. package/dist/components/input.d.ts +3 -0
  75. package/dist/components/input.js +7 -0
  76. package/dist/components/item.d.ts +22 -0
  77. package/dist/components/item.js +78 -0
  78. package/dist/components/kbd.d.ts +3 -0
  79. package/dist/components/kbd.js +9 -0
  80. package/dist/components/label.d.ts +3 -0
  81. package/dist/components/label.js +7 -0
  82. package/dist/components/marker.d.ts +10 -0
  83. package/dist/components/marker.js +34 -0
  84. package/dist/components/menubar.d.ts +29 -0
  85. package/dist/components/menubar.js +56 -0
  86. package/dist/components/message-scroller.d.ts +10 -0
  87. package/dist/components/message-scroller.js +25 -0
  88. package/dist/components/message.d.ts +10 -0
  89. package/dist/components/message.js +21 -0
  90. package/dist/components/native-select.d.ts +8 -0
  91. package/dist/components/native-select.js +13 -0
  92. package/dist/components/navigation-menu.d.ts +11 -0
  93. package/dist/components/navigation-menu.js +31 -0
  94. package/dist/components/pagination.d.ts +17 -0
  95. package/dist/components/pagination.js +26 -0
  96. package/dist/components/popover.d.ts +9 -0
  97. package/dist/components/popover.js +23 -0
  98. package/dist/components/progress.d.ts +7 -0
  99. package/dist/components/progress.js +20 -0
  100. package/dist/components/questionnaire.d.ts +19 -0
  101. package/dist/components/questionnaire.js +52 -0
  102. package/dist/components/radio-group.d.ts +5 -0
  103. package/dist/components/radio-group.js +12 -0
  104. package/dist/components/resizable.d.ts +7 -0
  105. package/dist/components/resizable.js +14 -0
  106. package/dist/components/scroll-area.d.ts +5 -0
  107. package/dist/components/scroll-area.js +11 -0
  108. package/dist/components/select.d.ts +15 -0
  109. package/dist/components/select.js +34 -0
  110. package/dist/components/separator.d.ts +3 -0
  111. package/dist/components/separator.js +8 -0
  112. package/dist/components/sheet.d.ts +14 -0
  113. package/dist/components/sheet.js +37 -0
  114. package/dist/components/sidebar.d.ts +63 -0
  115. package/dist/components/sidebar.js +256 -0
  116. package/dist/components/skeleton.d.ts +2 -0
  117. package/dist/components/skeleton.js +6 -0
  118. package/dist/components/slider.d.ts +3 -0
  119. package/dist/components/slider.js +12 -0
  120. package/dist/components/spinner.d.ts +2 -0
  121. package/dist/components/spinner.js +7 -0
  122. package/dist/components/switch.d.ts +5 -0
  123. package/dist/components/switch.js +8 -0
  124. package/dist/components/table.d.ts +10 -0
  125. package/dist/components/table.js +28 -0
  126. package/dist/components/tabs.d.ts +10 -0
  127. package/dist/components/tabs.js +29 -0
  128. package/dist/components/textarea.d.ts +3 -0
  129. package/dist/components/textarea.js +6 -0
  130. package/dist/components/toast.d.ts +16 -0
  131. package/dist/components/toast.js +66 -0
  132. package/dist/components/toggle-group.d.ts +11 -0
  133. package/dist/components/toggle-group.js +24 -0
  134. package/dist/components/toggle.d.ts +8 -0
  135. package/dist/components/toggle.js +26 -0
  136. package/dist/components/tooltip.d.ts +6 -0
  137. package/dist/components/tooltip.js +17 -0
  138. package/dist/hooks/use-mobile.d.ts +1 -0
  139. package/dist/hooks/use-mobile.js +15 -0
  140. package/dist/index.d.ts +67 -0
  141. package/dist/index.js +69 -0
  142. package/dist/layouts/app-shell.d.ts +19 -0
  143. package/dist/layouts/app-shell.js +9 -0
  144. package/dist/layouts/public-layout.d.ts +14 -0
  145. package/dist/layouts/public-layout.js +8 -0
  146. package/dist/layouts/skip-link.d.ts +2 -0
  147. package/dist/layouts/skip-link.js +5 -0
  148. package/dist/lib/utils.d.ts +2 -0
  149. package/dist/lib/utils.js +7 -0
  150. package/llms.md +522 -0
  151. package/package.json +130 -3
  152. package/postcss.cjs +163 -0
  153. package/src/brand.css +69 -0
  154. package/src/shadcn-tailwind.css +638 -0
  155. package/src/styles.css +48 -0
package/llms.md ADDED
@@ -0,0 +1,522 @@
1
+ # @mednet/ui 1.1.0 — справка для AI-агентов
2
+
3
+ Справка по установленной версии `@mednet/ui` — React-компонентам дизайн-системы ЦНИИОИЗ. Читайте её перед тем, как писать интерфейс.
4
+
5
+ ## Правила
6
+
7
+ 1. **Стили — одна строка** в `app/globals.css`: `@import '@mednet/ui/styles.css';` (внутри Tailwind v4, тема бренда и классы компонентов). Montserrat (`@fontsource/montserrat`) подключается этой же строкой — отдельно ставить и импортировать шрифт не нужно.
8
+ 2. **Импорт — по подпутям:** `import { Button } from '@mednet/ui/button';`. Корневой `@mednet/ui` тоже работает, но тянет все модули.
9
+ 3. **Основа — Base UI, а не Radix.** Чтобы отрисовать часть компонента другим элементом, используйте проп `render`, **не** `asChild`:
10
+ ```tsx
11
+ <DialogTrigger render={<Button variant="outline" />}>Открыть</DialogTrigger>
12
+ <SidebarMenuButton render={<Link href="/settings" />}>Настройки</SidebarMenuButton>
13
+ ```
14
+ **Ссылка, которая выглядит как кнопка**, — это ссылка с классами кнопки, а не `Button` с `render={<a />}` (Base UI навязывает кнопке семантику кнопки):
15
+ ```tsx
16
+ import { buttonVariants } from '@mednet/ui/button';
17
+ <Link href="/reports" className={buttonVariants({ variant: 'outline' })}>Отчёты</Link>
18
+ ```
19
+ Примеры из интернета с `asChild` переписывайте на `render`. Не ставьте `@radix-ui/*`, `radix-ui`, `@base-ui/react` напрямую.
20
+ 4. **Цвета — только семантические классы:** `bg-primary`, `text-primary-foreground`, `bg-secondary`, `bg-muted`, `text-muted-foreground`, `border-border`, `border-input`, `bg-field` (заливка полей), `ring-ring`, `bg-destructive`, `text-destructive`, `bg-card`, `bg-popover`, `chart-1…chart-8`. Стандартная палитра Tailwind (`slate-100`, `zinc-500`…) удалена, а `red-500`, `blue-700` и другие шкалы — брендовые (из `@mednet/tokens`); hex, `rgb()`, `oklch()` и `bg-[#…]` запрещены линтером (`@mednet/lint-config`).
21
+ 5. **Типографика:** заголовки — `text-h1`…`text-h4` (класс задаёт размер, межстрочный и вес: h1 — bold, h2–h4 — semibold; на телефоне размеры меньше), вводный абзац — `text-lead`, остальное — `text-base`/`text-sm`/`text-xs`. Размеры экран/телефон, px: h1 48/32, h2 36/28, h3 28/24, h4 22/20, lead 18/17, base 16, sm 14, xs 13. Шрифт — Montserrat. Своих `text-[…px]` и `font-*` на заголовках не добавляйте.
22
+ 6. **Иконки — только `lucide-react`.**
23
+ 7. **Корневой layout** (обвязка Base UI):
24
+ ```tsx
25
+ <html lang="ru">
26
+ <body className="relative">
27
+ <div className="isolate">
28
+ <TooltipProvider>{children}</TooltipProvider>
29
+ </div>
30
+ <Toaster />
31
+ </body>
32
+ </html>
33
+ ```
34
+ `isolate` — порталы (диалоги, меню, подсказки, уведомления) всегда поверх страницы; `relative` — бэкдропы в Safari iOS 26+; `Toaster` (из `@mednet/ui/toast`) — один на приложение, вызов `toast.add({ title, description, type: 'success' })` из любого клиентского компонента. `TooltipProvider` (из `@mednet/ui/tooltip`) необязателен, он объединяет задержку подсказок.
35
+ 8. **Календарь — по-русски:** `<Calendar locale={ru} />`, `import { ru } from 'react-day-picker/locale';`.
36
+ 9. **Старые браузеры:** Chrome/Edge 109 (Windows 7/8.1) поддерживаются, если в `postcss.config.mjs` после `@tailwindcss/postcss` стоит `'@mednet/ui/postcss': {}`. Не работают там AI-компоненты `bubble` и эффект `shimmer` (относительные цвета, Chrome 119+) — не используйте их на публичных страницах.
37
+ 10. **Свои компоненты склеивают классы через `cn` из `@mednet/ui/utils`**, а не через clsx/tailwind-merge: обычный tailwind-merge не знает размеров шрифта бренда и роняет `text-h3` рядом с `text-foreground`.
38
+ 11. Компоненты кита не копируйте в проект и не правьте их стили `className`-ами с цветами: нужен другой вид — спросите у владельцев кита.
39
+ 12. **Графики:** `recharts` — peer-зависимость, установите его в проект (`npm i recharts`); компоненты графика импортируйте из `recharts`, обёртки — из `@mednet/ui/chart`.
40
+ 13. **Peer-зависимости ставятся сами** (npm 7+, pnpm 8+): `recharts`, `lucide-react` (иконки), `react-day-picker` (календарь, `locale`). Если менеджер их не поставил (yarn, отключён `auto-install-peers`), установите вручную: `npm i recharts lucide-react react-day-picker`. Импортируйте их напрямую только из своего `package.json`.
41
+
42
+ ## Фирменные блоки и каркасы
43
+
44
+ Серверные компоненты: их можно рендерить в `page.tsx`/`layout.tsx` без `"use client"`.
45
+
46
+ #### `Logo`
47
+
48
+ `import { Logo } from '@mednet/ui/logo';`
49
+
50
+ | Проп | Тип | По умолчанию |
51
+ | ----------------- | ----------------------------------------------------------------------- | -------------- |
52
+ | `variant` | `'horizontal' \| 'vertical' \| 'mark'` | `'horizontal'` |
53
+ | `title` | `string` — доступное имя; без него логотип декоративный (`aria-hidden`) | — |
54
+ | `className` и др. | атрибуты `<svg>`; размер — классом высоты | — |
55
+
56
+ ```tsx
57
+ <a href="/" aria-label="ЦНИИОИЗ — на главную">
58
+ <Logo className="h-10 w-auto" />
59
+ </a>
60
+ <Logo variant="mark" title="ЦНИИОИЗ" className="size-12" />
61
+ ```
62
+
63
+ #### `SiteHeader`
64
+
65
+ `import { SiteHeader } from '@mednet/ui/site-header';` — логотип со ссылкой на главную, навигация, действия.
66
+
67
+ | Проп | Тип | По умолчанию |
68
+ | ---------- | --------------------------- | ------------ |
69
+ | `homeHref` | `string` | `'/'` |
70
+ | `nav` | `ReactNode` — ссылки | — |
71
+ | `actions` | `ReactNode` — кнопки справа | — |
72
+
73
+ ```tsx
74
+ <SiteHeader
75
+ nav={
76
+ <>
77
+ <Link href="/about">О проекте</Link>
78
+ <Link href="/reports">Отчёты</Link>
79
+ </>
80
+ }
81
+ actions={
82
+ <Link href="/login" className={buttonVariants({ size: 'sm' })}>
83
+ Войти
84
+ </Link>
85
+ }
86
+ />
87
+ ```
88
+
89
+ #### `SiteFooter`
90
+
91
+ `import { SiteFooter, CNIIOIZ } from '@mednet/ui/site-footer';` — реквизиты ЦНИИОИЗ по умолчанию (`CNIIOIZ`: `fullName`, `shortName`, `phone`, `email`).
92
+
93
+ | Проп | Тип | По умолчанию |
94
+ | ---------------- | ---------------------------------- | --------------------------------- |
95
+ | `orgName` | `string` | полное наименование ЦНИИОИЗ |
96
+ | `copyright` | `string` | `ФГБУ «ЦНИИОИЗ» Минздрава России` |
97
+ | `phone`, `email` | `string \| null` (`null` — скрыть) | телефон и почта ЦНИИОИЗ |
98
+ | `year` | `number` | текущий |
99
+ | `links` | `ReactNode` | — |
100
+
101
+ ```tsx
102
+ <SiteFooter links={<Link href="/privacy">Политика конфиденциальности</Link>} />
103
+ ```
104
+
105
+ #### `PublicLayout`
106
+
107
+ `import { PublicLayout } from '@mednet/ui/public-layout';` — лендинги и отчёты: ссылка «Перейти к содержанию», `SiteHeader`, `<main id="main">`, `SiteFooter`. Пропсы: `nav`, `actions`, `homeHref` (как у `SiteHeader`), `footer` (замена подвала), `children`.
108
+
109
+ ```tsx
110
+ // app/layout.tsx
111
+ export default function RootLayout({ children }: { children: ReactNode }) {
112
+ return (
113
+ <html lang="ru">
114
+ <body className="relative">
115
+ <div className="isolate">
116
+ <PublicLayout nav={<Link href="/about">О проекте</Link>}>{children}</PublicLayout>
117
+ </div>
118
+ <Toaster />
119
+ </body>
120
+ </html>
121
+ );
122
+ }
123
+ ```
124
+
125
+ #### `AppShell`
126
+
127
+ `import { AppShell } from '@mednet/ui/app-shell';` — инструменты, кабинеты, дашборды: боковая панель (shadcn Sidebar, сворачивается до иконок, Ctrl/⌘+B), верхняя панель, содержимое.
128
+
129
+ | Проп | Тип | По умолчанию |
130
+ | ------------- | --------------------------------------------------------------------------- | ------------ |
131
+ | `nav` | `ReactNode` — `SidebarGroup`/`SidebarMenu` из `@mednet/ui/sidebar` | обязателен |
132
+ | `title` | `ReactNode` — заголовок в верхней панели | — |
133
+ | `actions` | `ReactNode` — правая часть верхней панели | — |
134
+ | `homeHref` | `string` | `'/'` |
135
+ | `defaultOpen` | `boolean` — из cookie `sidebar_state`; при `output: 'export'` не передавать | `true` |
136
+
137
+ ```tsx
138
+ // app/(app)/layout.tsx
139
+ import { LayoutDashboard } from 'lucide-react';
140
+ import { cookies } from 'next/headers';
141
+ import Link from 'next/link';
142
+ import type { ReactNode } from 'react';
143
+ import { AppShell } from '@mednet/ui/app-shell';
144
+ import { SidebarGroup, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@mednet/ui/sidebar';
145
+
146
+ export default async function AppLayout({ children }: { children: ReactNode }) {
147
+ const defaultOpen = (await cookies()).get('sidebar_state')?.value !== 'false';
148
+ return (
149
+ <AppShell
150
+ defaultOpen={defaultOpen}
151
+ title="Мониторинг"
152
+ nav={
153
+ <SidebarGroup>
154
+ <SidebarMenu>
155
+ <SidebarMenuItem>
156
+ <SidebarMenuButton render={<Link href="/dashboard" />} tooltip="Дашборд">
157
+ <LayoutDashboard />
158
+ <span>Дашборд</span>
159
+ </SidebarMenuButton>
160
+ </SidebarMenuItem>
161
+ </SidebarMenu>
162
+ </SidebarGroup>
163
+ }
164
+ >
165
+ {children}
166
+ </AppShell>
167
+ );
168
+ }
169
+ ```
170
+
171
+ ## Модули фирменных блоков
172
+
173
+ ### `@mednet/ui/logo`
174
+
175
+ - компоненты: `Logo`, `LogoHorizontal`, `LogoMark`, `LogoVertical`
176
+ - типы: `LogoProps`
177
+
178
+ ### `@mednet/ui/site-header`
179
+
180
+ - компоненты: `SiteHeader`
181
+ - типы: `SiteHeaderProps`
182
+
183
+ ### `@mednet/ui/site-footer`
184
+
185
+ - компоненты: `SiteFooter`
186
+ - типы: `SiteFooterProps`
187
+ - прочее: `CNIIOIZ`
188
+
189
+ ### `@mednet/ui/public-layout`
190
+
191
+ - компоненты: `PublicLayout`
192
+ - типы: `PublicLayoutProps`
193
+
194
+ ### `@mednet/ui/app-shell`
195
+
196
+ - компоненты: `AppShell`
197
+ - типы: `AppShellProps`
198
+
199
+ ## Компоненты shadcn/ui (Base UI, стиль Maia)
200
+
201
+ API и примеры — как в документации shadcn/ui для Base UI (ссылка у каждого модуля). Отличия кита: цвета из токенов бренда, подписи для экранного диктора по-русски.
202
+
203
+ ### `@mednet/ui/accordion`
204
+
205
+ - компоненты: `Accordion`, `AccordionContent`, `AccordionItem`, `AccordionTrigger`
206
+ - документация: https://ui.shadcn.com/docs/components/base/accordion
207
+
208
+ ### `@mednet/ui/alert`
209
+
210
+ - компоненты: `Alert`, `AlertAction`, `AlertDescription`, `AlertTitle`
211
+ - документация: https://ui.shadcn.com/docs/components/base/alert
212
+
213
+ ### `@mednet/ui/alert-dialog`
214
+
215
+ - компоненты: `AlertDialog`, `AlertDialogAction`, `AlertDialogCancel`, `AlertDialogContent`, `AlertDialogDescription`, `AlertDialogFooter`, `AlertDialogHeader`, `AlertDialogMedia`, `AlertDialogOverlay`, `AlertDialogPortal`, `AlertDialogTitle`, `AlertDialogTrigger`
216
+ - документация: https://ui.shadcn.com/docs/components/base/alert-dialog
217
+
218
+ ### `@mednet/ui/aspect-ratio`
219
+
220
+ - компоненты: `AspectRatio`
221
+ - документация: https://ui.shadcn.com/docs/components/base/aspect-ratio
222
+
223
+ ### `@mednet/ui/attachment`
224
+
225
+ - компоненты: `Attachment`, `AttachmentAction`, `AttachmentActions`, `AttachmentContent`, `AttachmentDescription`, `AttachmentGroup`, `AttachmentMedia`, `AttachmentTitle`, `AttachmentTrigger`
226
+ - документация: https://ui.shadcn.com/docs/components/base/attachment
227
+
228
+ ### `@mednet/ui/avatar`
229
+
230
+ - компоненты: `Avatar`, `AvatarBadge`, `AvatarFallback`, `AvatarGroup`, `AvatarGroupCount`, `AvatarImage`
231
+ - документация: https://ui.shadcn.com/docs/components/base/avatar
232
+
233
+ ### `@mednet/ui/badge`
234
+
235
+ - компоненты: `Badge`
236
+ - прочее: `badgeVariants`
237
+ - документация: https://ui.shadcn.com/docs/components/base/badge
238
+
239
+ ### `@mednet/ui/breadcrumb`
240
+
241
+ - компоненты: `Breadcrumb`, `BreadcrumbEllipsis`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbList`, `BreadcrumbPage`, `BreadcrumbSeparator`
242
+ - документация: https://ui.shadcn.com/docs/components/base/breadcrumb
243
+
244
+ ### `@mednet/ui/bubble`
245
+
246
+ - компоненты: `Bubble`, `BubbleContent`, `BubbleGroup`, `BubbleReactions`
247
+ - документация: https://ui.shadcn.com/docs/components/base/bubble
248
+
249
+ ### `@mednet/ui/button`
250
+
251
+ - компоненты: `Button`
252
+ - прочее: `buttonVariants`
253
+ - документация: https://ui.shadcn.com/docs/components/base/button
254
+
255
+ ### `@mednet/ui/button-group`
256
+
257
+ - компоненты: `ButtonGroup`, `ButtonGroupSeparator`, `ButtonGroupText`
258
+ - прочее: `buttonGroupVariants`
259
+ - документация: https://ui.shadcn.com/docs/components/base/button-group
260
+
261
+ ### `@mednet/ui/calendar`
262
+
263
+ - компоненты: `Calendar`, `CalendarDayButton`
264
+ - документация: https://ui.shadcn.com/docs/components/base/calendar
265
+
266
+ ### `@mednet/ui/card`
267
+
268
+ - компоненты: `Card`, `CardAction`, `CardContent`, `CardDescription`, `CardFooter`, `CardHeader`, `CardTitle`
269
+ - документация: https://ui.shadcn.com/docs/components/base/card
270
+
271
+ ### `@mednet/ui/carousel`
272
+
273
+ - компоненты: `Carousel`, `CarouselContent`, `CarouselItem`, `CarouselNext`, `CarouselPrevious`
274
+ - хуки: `useCarousel`
275
+ - типы: `CarouselApi`
276
+ - документация: https://ui.shadcn.com/docs/components/base/carousel
277
+
278
+ ### `@mednet/ui/chart`
279
+
280
+ - компоненты: `ChartContainer`, `ChartLegend`, `ChartLegendContent`, `ChartStyle`, `ChartTooltip`, `ChartTooltipContent`
281
+ - типы: `ChartConfig`
282
+ - документация: https://ui.shadcn.com/docs/components/base/chart
283
+
284
+ ### `@mednet/ui/checkbox`
285
+
286
+ - компоненты: `Checkbox`
287
+ - документация: https://ui.shadcn.com/docs/components/base/checkbox
288
+
289
+ ### `@mednet/ui/collapsible`
290
+
291
+ - компоненты: `Collapsible`, `CollapsibleContent`, `CollapsibleTrigger`
292
+ - документация: https://ui.shadcn.com/docs/components/base/collapsible
293
+
294
+ ### `@mednet/ui/combobox`
295
+
296
+ - компоненты: `Combobox`, `ComboboxChip`, `ComboboxChips`, `ComboboxChipsInput`, `ComboboxCollection`, `ComboboxContent`, `ComboboxEmpty`, `ComboboxGroup`, `ComboboxInput`, `ComboboxItem`, `ComboboxLabel`, `ComboboxList`, `ComboboxSeparator`, `ComboboxTrigger`, `ComboboxValue`
297
+ - хуки: `useComboboxAnchor`
298
+ - документация: https://ui.shadcn.com/docs/components/base/combobox
299
+
300
+ ### `@mednet/ui/command`
301
+
302
+ - компоненты: `Command`, `CommandDialog`, `CommandEmpty`, `CommandGroup`, `CommandInput`, `CommandItem`, `CommandList`, `CommandSeparator`, `CommandShortcut`
303
+ - документация: https://ui.shadcn.com/docs/components/base/command
304
+
305
+ ### `@mednet/ui/context-menu`
306
+
307
+ - компоненты: `ContextMenu`, `ContextMenuCheckboxItem`, `ContextMenuContent`, `ContextMenuGroup`, `ContextMenuItem`, `ContextMenuLabel`, `ContextMenuPortal`, `ContextMenuRadioGroup`, `ContextMenuRadioItem`, `ContextMenuSeparator`, `ContextMenuShortcut`, `ContextMenuSub`, `ContextMenuSubContent`, `ContextMenuSubTrigger`, `ContextMenuTrigger`
308
+ - документация: https://ui.shadcn.com/docs/components/base/context-menu
309
+
310
+ ### `@mednet/ui/dialog`
311
+
312
+ - компоненты: `Dialog`, `DialogClose`, `DialogContent`, `DialogDescription`, `DialogFooter`, `DialogHeader`, `DialogOverlay`, `DialogPortal`, `DialogTitle`, `DialogTrigger`
313
+ - документация: https://ui.shadcn.com/docs/components/base/dialog
314
+
315
+ ### `@mednet/ui/direction`
316
+
317
+ - компоненты: `DirectionProvider`
318
+ - хуки: `useDirection`
319
+ - документация: https://ui.shadcn.com/docs/components/base/direction
320
+
321
+ ### `@mednet/ui/drawer`
322
+
323
+ - компоненты: `Drawer`, `DrawerClose`, `DrawerContent`, `DrawerDescription`, `DrawerFooter`, `DrawerHeader`, `DrawerOverlay`, `DrawerPortal`, `DrawerSwipeHandle`, `DrawerTitle`, `DrawerTrigger`
324
+ - документация: https://ui.shadcn.com/docs/components/base/drawer
325
+
326
+ ### `@mednet/ui/dropdown-menu`
327
+
328
+ - компоненты: `DropdownMenu`, `DropdownMenuCheckboxItem`, `DropdownMenuContent`, `DropdownMenuGroup`, `DropdownMenuItem`, `DropdownMenuLabel`, `DropdownMenuPortal`, `DropdownMenuRadioGroup`, `DropdownMenuRadioItem`, `DropdownMenuSeparator`, `DropdownMenuShortcut`, `DropdownMenuSub`, `DropdownMenuSubContent`, `DropdownMenuSubTrigger`, `DropdownMenuTrigger`
329
+ - документация: https://ui.shadcn.com/docs/components/base/dropdown-menu
330
+
331
+ ### `@mednet/ui/empty`
332
+
333
+ - компоненты: `Empty`, `EmptyContent`, `EmptyDescription`, `EmptyHeader`, `EmptyMedia`, `EmptyTitle`
334
+ - документация: https://ui.shadcn.com/docs/components/base/empty
335
+
336
+ ### `@mednet/ui/field`
337
+
338
+ - компоненты: `Field`, `FieldContent`, `FieldDescription`, `FieldError`, `FieldGroup`, `FieldLabel`, `FieldLegend`, `FieldSeparator`, `FieldSet`, `FieldTitle`
339
+ - документация: https://ui.shadcn.com/docs/components/base/field
340
+
341
+ ### `@mednet/ui/hover-card`
342
+
343
+ - компоненты: `HoverCard`, `HoverCardContent`, `HoverCardTrigger`
344
+ - документация: https://ui.shadcn.com/docs/components/base/hover-card
345
+
346
+ ### `@mednet/ui/input`
347
+
348
+ - компоненты: `Input`
349
+ - документация: https://ui.shadcn.com/docs/components/base/input
350
+
351
+ ### `@mednet/ui/input-group`
352
+
353
+ - компоненты: `InputGroup`, `InputGroupAddon`, `InputGroupButton`, `InputGroupInput`, `InputGroupText`, `InputGroupTextarea`
354
+ - документация: https://ui.shadcn.com/docs/components/base/input-group
355
+
356
+ ### `@mednet/ui/input-otp`
357
+
358
+ - компоненты: `InputOTP`, `InputOTPGroup`, `InputOTPSeparator`, `InputOTPSlot`
359
+ - документация: https://ui.shadcn.com/docs/components/base/input-otp
360
+
361
+ ### `@mednet/ui/item`
362
+
363
+ - компоненты: `Item`, `ItemActions`, `ItemContent`, `ItemDescription`, `ItemFooter`, `ItemGroup`, `ItemHeader`, `ItemMedia`, `ItemSeparator`, `ItemTitle`
364
+ - документация: https://ui.shadcn.com/docs/components/base/item
365
+
366
+ ### `@mednet/ui/kbd`
367
+
368
+ - компоненты: `Kbd`, `KbdGroup`
369
+ - документация: https://ui.shadcn.com/docs/components/base/kbd
370
+
371
+ ### `@mednet/ui/label`
372
+
373
+ - компоненты: `Label`
374
+ - документация: https://ui.shadcn.com/docs/components/base/label
375
+
376
+ ### `@mednet/ui/marker`
377
+
378
+ - компоненты: `Marker`, `MarkerContent`, `MarkerIcon`
379
+ - прочее: `markerVariants`
380
+ - документация: https://ui.shadcn.com/docs/components/base/marker
381
+
382
+ ### `@mednet/ui/menubar`
383
+
384
+ - компоненты: `Menubar`, `MenubarCheckboxItem`, `MenubarContent`, `MenubarGroup`, `MenubarItem`, `MenubarLabel`, `MenubarMenu`, `MenubarPortal`, `MenubarRadioGroup`, `MenubarRadioItem`, `MenubarSeparator`, `MenubarShortcut`, `MenubarSub`, `MenubarSubContent`, `MenubarSubTrigger`, `MenubarTrigger`
385
+ - документация: https://ui.shadcn.com/docs/components/base/menubar
386
+
387
+ ### `@mednet/ui/message`
388
+
389
+ - компоненты: `Message`, `MessageAvatar`, `MessageContent`, `MessageFooter`, `MessageGroup`, `MessageHeader`
390
+ - документация: https://ui.shadcn.com/docs/components/base/message
391
+
392
+ ### `@mednet/ui/message-scroller`
393
+
394
+ - компоненты: `MessageScroller`, `MessageScrollerButton`, `MessageScrollerContent`, `MessageScrollerItem`, `MessageScrollerProvider`, `MessageScrollerViewport`
395
+ - хуки: `useMessageScroller`, `useMessageScrollerScrollable`, `useMessageScrollerVisibility`
396
+ - документация: https://ui.shadcn.com/docs/components/base/message-scroller
397
+
398
+ ### `@mednet/ui/native-select`
399
+
400
+ - компоненты: `NativeSelect`, `NativeSelectOptGroup`, `NativeSelectOption`
401
+ - документация: https://ui.shadcn.com/docs/components/base/native-select
402
+
403
+ ### `@mednet/ui/navigation-menu`
404
+
405
+ - компоненты: `NavigationMenu`, `NavigationMenuContent`, `NavigationMenuIndicator`, `NavigationMenuItem`, `NavigationMenuLink`, `NavigationMenuList`, `NavigationMenuPositioner`, `NavigationMenuTrigger`
406
+ - прочее: `navigationMenuTriggerStyle`
407
+ - документация: https://ui.shadcn.com/docs/components/base/navigation-menu
408
+
409
+ ### `@mednet/ui/pagination`
410
+
411
+ - компоненты: `Pagination`, `PaginationContent`, `PaginationEllipsis`, `PaginationItem`, `PaginationLink`, `PaginationNext`, `PaginationPrevious`
412
+ - документация: https://ui.shadcn.com/docs/components/base/pagination
413
+
414
+ ### `@mednet/ui/popover`
415
+
416
+ - компоненты: `Popover`, `PopoverContent`, `PopoverDescription`, `PopoverHeader`, `PopoverTitle`, `PopoverTrigger`
417
+ - документация: https://ui.shadcn.com/docs/components/base/popover
418
+
419
+ ### `@mednet/ui/progress`
420
+
421
+ - компоненты: `Progress`, `ProgressIndicator`, `ProgressLabel`, `ProgressTrack`, `ProgressValue`
422
+ - документация: https://ui.shadcn.com/docs/components/base/progress
423
+
424
+ ### `@mednet/ui/questionnaire`
425
+
426
+ - компоненты: `Questionnaire`, `QuestionnaireActions`, `QuestionnaireChoice`, `QuestionnaireChoiceDescription`, `QuestionnaireChoices`, `QuestionnaireDescription`, `QuestionnaireError`, `QuestionnaireInput`, `QuestionnaireItem`, `QuestionnaireNext`, `QuestionnairePrevious`, `QuestionnaireProgress`, `QuestionnaireSkip`, `QuestionnaireSubmit`, `QuestionnaireTitle`
427
+ - документация: https://ui.shadcn.com/docs/components/base/questionnaire
428
+
429
+ ### `@mednet/ui/radio-group`
430
+
431
+ - компоненты: `RadioGroup`, `RadioGroupItem`
432
+ - документация: https://ui.shadcn.com/docs/components/base/radio-group
433
+
434
+ ### `@mednet/ui/resizable`
435
+
436
+ - компоненты: `ResizableHandle`, `ResizablePanel`, `ResizablePanelGroup`
437
+ - документация: https://ui.shadcn.com/docs/components/base/resizable
438
+
439
+ ### `@mednet/ui/scroll-area`
440
+
441
+ - компоненты: `ScrollArea`, `ScrollBar`
442
+ - документация: https://ui.shadcn.com/docs/components/base/scroll-area
443
+
444
+ ### `@mednet/ui/select`
445
+
446
+ - компоненты: `Select`, `SelectContent`, `SelectGroup`, `SelectItem`, `SelectLabel`, `SelectScrollDownButton`, `SelectScrollUpButton`, `SelectSeparator`, `SelectTrigger`, `SelectValue`
447
+ - документация: https://ui.shadcn.com/docs/components/base/select
448
+
449
+ ### `@mednet/ui/separator`
450
+
451
+ - компоненты: `Separator`
452
+ - документация: https://ui.shadcn.com/docs/components/base/separator
453
+
454
+ ### `@mednet/ui/sheet`
455
+
456
+ - компоненты: `Sheet`, `SheetClose`, `SheetContent`, `SheetDescription`, `SheetFooter`, `SheetHeader`, `SheetTitle`, `SheetTrigger`
457
+ - документация: https://ui.shadcn.com/docs/components/base/sheet
458
+
459
+ ### `@mednet/ui/sidebar`
460
+
461
+ - компоненты: `Sidebar`, `SidebarContent`, `SidebarFooter`, `SidebarGroup`, `SidebarGroupAction`, `SidebarGroupContent`, `SidebarGroupLabel`, `SidebarHeader`, `SidebarInput`, `SidebarInset`, `SidebarMenu`, `SidebarMenuAction`, `SidebarMenuBadge`, `SidebarMenuButton`, `SidebarMenuItem`, `SidebarMenuSkeleton`, `SidebarMenuSub`, `SidebarMenuSubButton`, `SidebarMenuSubItem`, `SidebarProvider`, `SidebarRail`, `SidebarSeparator`, `SidebarTrigger`
462
+ - хуки: `useSidebar`
463
+ - документация: https://ui.shadcn.com/docs/components/base/sidebar
464
+
465
+ ### `@mednet/ui/skeleton`
466
+
467
+ - компоненты: `Skeleton`
468
+ - документация: https://ui.shadcn.com/docs/components/base/skeleton
469
+
470
+ ### `@mednet/ui/slider`
471
+
472
+ - компоненты: `Slider`
473
+ - документация: https://ui.shadcn.com/docs/components/base/slider
474
+
475
+ ### `@mednet/ui/spinner`
476
+
477
+ - компоненты: `Spinner`
478
+ - документация: https://ui.shadcn.com/docs/components/base/spinner
479
+
480
+ ### `@mednet/ui/switch`
481
+
482
+ - компоненты: `Switch`
483
+ - документация: https://ui.shadcn.com/docs/components/base/switch
484
+
485
+ ### `@mednet/ui/table`
486
+
487
+ - компоненты: `Table`, `TableBody`, `TableCaption`, `TableCell`, `TableFooter`, `TableHead`, `TableHeader`, `TableRow`
488
+ - документация: https://ui.shadcn.com/docs/components/base/table
489
+
490
+ ### `@mednet/ui/tabs`
491
+
492
+ - компоненты: `Tabs`, `TabsContent`, `TabsList`, `TabsTrigger`
493
+ - прочее: `tabsListVariants`
494
+ - документация: https://ui.shadcn.com/docs/components/base/tabs
495
+
496
+ ### `@mednet/ui/textarea`
497
+
498
+ - компоненты: `Textarea`
499
+ - документация: https://ui.shadcn.com/docs/components/base/textarea
500
+
501
+ ### `@mednet/ui/toast`
502
+
503
+ - компоненты: `Toast`, `ToastAction`, `ToastClose`, `ToastContent`, `ToastDescription`, `ToastPortal`, `ToastProvider`, `ToastTitle`, `ToastViewport`, `Toaster`
504
+ - хуки: `useToastManager`
505
+ - прочее: `createToastManager`, `toast`
506
+ - документация: https://ui.shadcn.com/docs/components/base/toast
507
+
508
+ ### `@mednet/ui/toggle`
509
+
510
+ - компоненты: `Toggle`
511
+ - прочее: `toggleVariants`
512
+ - документация: https://ui.shadcn.com/docs/components/base/toggle
513
+
514
+ ### `@mednet/ui/toggle-group`
515
+
516
+ - компоненты: `ToggleGroup`, `ToggleGroupItem`
517
+ - документация: https://ui.shadcn.com/docs/components/base/toggle-group
518
+
519
+ ### `@mednet/ui/tooltip`
520
+
521
+ - компоненты: `Tooltip`, `TooltipContent`, `TooltipProvider`, `TooltipTrigger`
522
+ - документация: https://ui.shadcn.com/docs/components/base/tooltip
package/package.json CHANGED
@@ -1,6 +1,133 @@
1
1
  {
2
2
  "name": "@mednet/ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.1.0",
4
+ "description": "React-компоненты ЦНИИОИЗ: shadcn/ui (Base UI, стиль Maia) в теме бренда, логотип, шапка, подвал, каркасы страниц",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/hpnssflw/mednet-kit.git",
10
+ "directory": "packages/ui"
11
+ },
12
+ "sideEffects": [
13
+ "**/*.css"
14
+ ],
15
+ "files": [
16
+ "dist",
17
+ "llms.md",
18
+ "postcss.cjs",
19
+ "src/styles.css",
20
+ "src/brand.css",
21
+ "src/shadcn-tailwind.css",
22
+ "README.md",
23
+ "THIRD_PARTY_NOTICES.md"
24
+ ],
25
+ "imports": {
26
+ "#components/*": {
27
+ "mednet-source": "./src/components/*.tsx",
28
+ "default": "./dist/components/*.js"
29
+ },
30
+ "#hooks/*": {
31
+ "mednet-source": "./src/hooks/*.ts",
32
+ "default": "./dist/hooks/*.js"
33
+ },
34
+ "#lib/*": {
35
+ "mednet-source": "./src/lib/*.ts",
36
+ "default": "./dist/lib/*.js"
37
+ }
38
+ },
39
+ "exports": {
40
+ ".": {
41
+ "types": "./dist/index.d.ts",
42
+ "default": "./dist/index.js"
43
+ },
44
+ "./styles.css": "./src/styles.css",
45
+ "./llms.md": "./llms.md",
46
+ "./postcss": "./postcss.cjs",
47
+ "./utils": {
48
+ "types": "./dist/lib/utils.d.ts",
49
+ "default": "./dist/lib/utils.js"
50
+ },
51
+ "./logo": {
52
+ "types": "./dist/brand/logo.d.ts",
53
+ "default": "./dist/brand/logo.js"
54
+ },
55
+ "./site-header": {
56
+ "types": "./dist/brand/site-header.d.ts",
57
+ "default": "./dist/brand/site-header.js"
58
+ },
59
+ "./site-footer": {
60
+ "types": "./dist/brand/site-footer.d.ts",
61
+ "default": "./dist/brand/site-footer.js"
62
+ },
63
+ "./public-layout": {
64
+ "types": "./dist/layouts/public-layout.d.ts",
65
+ "default": "./dist/layouts/public-layout.js"
66
+ },
67
+ "./app-shell": {
68
+ "types": "./dist/layouts/app-shell.d.ts",
69
+ "default": "./dist/layouts/app-shell.js"
70
+ },
71
+ "./*": {
72
+ "types": "./dist/components/*.d.ts",
73
+ "default": "./dist/components/*.js"
74
+ },
75
+ "./package.json": "./package.json"
76
+ },
77
+ "publishConfig": {
78
+ "access": "public"
79
+ },
80
+ "peerDependencies": {
81
+ "lucide-react": "^1.57.0",
82
+ "react": "^19.2.0",
83
+ "react-day-picker": "^10.0.2",
84
+ "react-dom": "^19.2.0",
85
+ "recharts": "^3.8.0",
86
+ "tailwindcss": "^4.3.0"
87
+ },
88
+ "dependencies": {
89
+ "@base-ui/react": "^1.9.0",
90
+ "@fontsource/montserrat": "^5.3.0",
91
+ "@shadcn/react": "^0.3.1",
92
+ "class-variance-authority": "^0.7.1",
93
+ "cmdk": "^1.1.1",
94
+ "cn": "^0.4.0",
95
+ "date-fns": "^4.4.0",
96
+ "embla-carousel-react": "^8.6.0",
97
+ "input-otp": "^1.5.0",
98
+ "lightningcss": "^1.33.0",
99
+ "react-resizable-panels": "^4.14.5",
100
+ "tw-animate-css": "^1.4.0",
101
+ "@mednet/tokens": "1.1.0"
102
+ },
103
+ "devDependencies": {
104
+ "@tailwindcss/node": "^4.3.3",
105
+ "@testing-library/jest-dom": "7.0.1",
106
+ "@testing-library/react": "16.3.3",
107
+ "@testing-library/user-event": "^14.6.1",
108
+ "@types/node": "^24",
109
+ "@types/react": "^19.3.0",
110
+ "@types/react-dom": "^19.3.0",
111
+ "jsdom": "30.1.2",
112
+ "lucide-react": "^1.57.0",
113
+ "postcss": "^8.5.30",
114
+ "react": "^19.3.0",
115
+ "react-day-picker": "^10.0.2",
116
+ "react-dom": "^19.3.0",
117
+ "recharts": "3.8.0",
118
+ "shadcn": "4.21.4",
119
+ "svgo": "4.1.0",
120
+ "tailwindcss": "^4.3.3",
121
+ "typescript": "~6.0.3",
122
+ "vitest": "^5.0.4"
123
+ },
124
+ "scripts": {
125
+ "build": "node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/build-llms.mjs",
126
+ "logos": "node scripts/gen-logos.mjs",
127
+ "gen:index": "node scripts/gen-index.mjs",
128
+ "generate": "shadcn add --all -y --overwrite && node scripts/postgen.mjs",
129
+ "typecheck": "tsc -p tsconfig.json --noEmit",
130
+ "test": "vitest run",
131
+ "vendor-css": "node scripts/vendor-shadcn-css.mjs"
132
+ }
6
133
  }