Skip to content

UI Kit ​

@azure-net/ui-kit предоставляет виджеты Svelte и утилиты для DOM. Этот раздел описывает текущие исходники соседнего пакета (версия в package.json: 0.4.7).

Установка ​

sh
pnpm add @azure-net/ui-kit

Объявленные peer-зависимости: Svelte ^5.29.0 и SvelteKit >=2.16.0. Реализация использует attachments и $props.id(). В проверенном рабочем окружении установлен Svelte 5.57.2. Для компиляции пакета используйте интеграцию SvelteKit/Vite с Svelte. @azure-net/tools ^2.1.0 устанавливается как обычная зависимость. Регистрация приложения через @azure-net/kit не требуется.

Точки входа ​

ts
import { clickOutside, masked, createZoomable } from '@azure-net/ui-kit';
import { Slider, Cropper, ModalContainer, NotificationContainer } from '@azure-net/ui-kit/widgets';
import '@azure-net/ui-kit/slider.css'; // Только необязательное оформление Slider

Корневая точка входа экспортирует только утилиты. Виджеты импортируются из /widgets. Публичных путей /components, /utils и глубоких импортов /dist нет. Для базового расположения виджетов глобальный CSS не требуется; оформление Slider включается сочетанием импорта CSS и styled={true}.

Перечень runtime-экспортов ​

В двух публичных barrel-файлах найдены следующие 23 runtime-экспорта. Для каждой группы ниже есть описание API и примеры.

Точка входаЭкспортыРуководство
/widgetsModalContainer, modalManagerМодальные окна
/widgetsNotificationContainer, notificationManagerУведомления
/widgetsSliderSlider
/widgetsCropperCropper
/widgetsprogressBar, useRouteLoadBarИндикатор загрузки
rootzoomable, createZoomableМасштабирование
rootuseAnimate, attachAnimationАнимации
rootevent, once, stop, immediate, preventDOM-утилиты
rootclickOutside, onClickOutsideDOM-утилиты
rootmasked, Mask, masks, scrollToDOM-утилиты

Пакет не экспортирует createZoom, компонент ProgressBar, компонент Modal, Button или Input. Modal является типом; стандартный шаблон модального окна внутренний.

Публичные типы ​

Используйте import type из указанной точки входа. Если тип props компонента не экспортирован по имени, его можно получить через Svelte ComponentProps<typeof Component>.

Точка входаТипы
rootEventHandler, OnClickOutsideOptions, OnClickOutsideEventDetail, OnClickOutsideEventType, MaskedOptions, MaskValue, ScrollToOptions, UseAnimateOptions, ZoomController, ZoomTransform, ZoomPoint, ZoomableOptions
/widgetsNotificationThemes, NotificationPositions, Notification, NotificationConfig, ModalOptions, ModalConfig, Modal, ModalTemplateProps, StoredModal, PropsWithCloseModal, ProgressBarManager, ProgressBarOptions, CropperApi, CropperExportOptions, CropperProps, CropRect, SliderApi, SliderProps, SliderLayout

Объявления ModalHandle, ModalContainerProps, NotificationContainerProps, CropperResizeHandle, Tokens и TokenSettings не являются именованными экспортами публичных точек входа. Наличие типа в исходниках не означает, что следует импортировать его внутренним путём.

Корневой layout и SSR ​

svelte
<script lang="ts">
  import { ModalContainer, NotificationContainer } from '@azure-net/ui-kit/widgets';
  let { children } = $props();
</script>

{@render children()}
<ModalContainer />
<NotificationContainer />

Разместите по одному контейнеру каждого вида в постоянном layout. Менеджеры получают свои хранилища при монтировании; открытие окон или уведомлений во время SSR либо до монтирования завершается ошибкой. Удобнее открывать их из обработчиков пользовательских событий. Не сохраняйте данные конкретного серверного запроса в глобальном состоянии менеджеров.

Slider выводит слайды и адаптивный CSS на сервере; измерения и взаимодействия начинаются в браузере. Cropper выводит строковые источники изображений при SSR, но экспорт доступен только в браузере после загрузки изображения. Создание zoom-контроллера безопасно для SSR, а attachments/actions работают с DOM после монтирования. scrollTo на сервере возвращает false. DOM-операции индикатора загрузки требуют браузера.

Доступность и оформление ​

Slider и Cropper поддерживают управление с клавиатуры. Контейнер модального окна задаёт роль dialog, но не реализует удержание фокуса внутри окна и возврат фокуса: добавьте это в приложении вместе с доступным названием диалога. Уведомления не являются live region автоматически; для озвучивания используйте собственный snippet. Само подключение виджета не гарантирует полную доступность интерфейса.

Примеры используют snippets, callback props и attachments Svelte 5. Встроенные надписи переведены не полностью; пользовательские элементы управления Slider и snippets уведомлений позволяют задать свой язык. Подробности оформления и поведения приведены на страницах виджетов.