prime-ui-kit 0.13.1 → 0.15.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/README.md +20 -20
- package/dist/chunks/{chunk-XNOJEX55.js → chunk-2IKH55MI.js} +1 -1
- package/dist/chunks/{chunk-JV2KB5JZ.js → chunk-THFZIHKU.js} +3761 -3041
- package/dist/chunks/{chunk-PK2GC77E.js → chunk-XJAVS6FH.js} +213 -188
- package/dist/color-picker.js +2 -2
- package/dist/components/banner/Banner.d.ts +5 -2
- package/dist/components/chart-frame/ChartFrame.d.ts +19 -6
- package/dist/components/chat/Chat.d.ts +2 -2
- package/dist/components/chat/ChatPinned.d.ts +2 -2
- package/dist/components/chat/MessageList.d.ts +1 -1
- package/dist/components/chat/chatContext.d.ts +1 -1
- package/dist/components/dnd/Dnd.d.ts +1 -1
- package/dist/components/field-list/FieldList.d.ts +90 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/input/Input.d.ts +2 -2
- package/dist/components/kanban/Kanban.d.ts +6 -3
- package/dist/components/login-form/LoginForm.d.ts +5 -1
- package/dist/components/page-content/PageContent.d.ts +55 -4
- package/dist/components/sparkline/Sparkline.d.ts +64 -15
- package/dist/components/sparkline/geometry.d.ts +26 -0
- package/dist/components/tooltip/Tooltip.d.ts +5 -2
- package/dist/hooks/usePosition.d.ts +15 -4
- package/dist/index.css +1 -1
- package/dist/index.js +4 -2
- package/dist/internal/ChartTooltip.d.ts +26 -0
- package/dist/internal/FieldAction.d.ts +6 -7
- package/dist/internal/fieldCell.d.ts +21 -0
- package/dist/internal/messageList.d.ts +2 -2
- package/dist/internal/palette.d.ts +7 -0
- package/dist/internal/swatch.d.ts +6 -2
- package/dist/layout/app-header/AppHeader.d.ts +9 -28
- package/dist/layout/index.d.ts +1 -1
- package/dist/skill/SKILL.md +32 -20
- package/dist/skill/anti-slop.md +77 -4
- package/dist/skill/api-contract.md +2 -2
- package/dist/skill/cheatsheet.md +33 -7
- package/dist/skill/checklist.md +28 -6
- package/dist/skill/choosing.md +17 -14
- package/dist/skill/components.md +9 -15
- package/dist/skill/composition.md +301 -61
- package/dist/skill/foundations.md +9 -7
- package/dist/skill/layouts.md +70 -37
- package/dist/skill/reference/components/avatar/COMPONENT.md +4 -4
- package/dist/skill/reference/components/avatar/examples/presence.tsx +1 -1
- package/dist/skill/reference/components/avatar/examples/states.tsx +5 -5
- package/dist/skill/reference/components/badge/examples/applied-filters.tsx +13 -19
- package/dist/skill/reference/components/badge/examples/examples.module.css +1 -8
- package/dist/skill/reference/components/badge/examples/server-tags.tsx +2 -6
- package/dist/skill/reference/components/banner/COMPONENT.md +6 -6
- package/dist/skill/reference/components/banner/examples/dismissible.tsx +22 -11
- package/dist/skill/reference/components/banner/examples/examples.module.css +4 -8
- package/dist/skill/reference/components/banner/examples/narrow.tsx +1 -1
- package/dist/skill/reference/components/banner/examples/page-strip.tsx +16 -22
- package/dist/skill/reference/components/breadcrumb/COMPONENT.md +5 -4
- package/dist/skill/reference/components/breadcrumb/examples/ellipsis.tsx +2 -2
- package/dist/skill/reference/components/breadcrumb/examples/overflow.tsx +1 -1
- package/dist/skill/reference/components/button-group/COMPONENT.md +2 -2
- package/dist/skill/reference/components/button-group/examples/in-form.tsx +22 -2
- package/dist/skill/reference/components/button-group/examples/states.tsx +10 -1
- package/dist/skill/reference/components/card/COMPONENT.md +7 -5
- package/dist/skill/reference/components/card/examples/examples.module.css +0 -28
- package/dist/skill/reference/components/card/examples/kpi-media.tsx +13 -11
- package/dist/skill/reference/components/card/examples/narrow.tsx +1 -1
- package/dist/skill/reference/components/card/examples/panel-chart.tsx +45 -22
- package/dist/skill/reference/components/card/examples/screen.module.css +14 -0
- package/dist/skill/reference/components/card/examples/screen.tsx +362 -0
- package/dist/skill/reference/components/card/examples/variants.tsx +15 -1
- package/dist/skill/reference/components/chart-frame/COMPONENT.md +12 -8
- package/dist/skill/reference/components/chart-frame/examples/fill-height.tsx +119 -0
- package/dist/skill/reference/components/chart-frame/examples/states.tsx +3 -1
- package/dist/skill/reference/components/chart-frame/examples/tooltip.tsx +20 -24
- package/dist/skill/reference/components/chat/COMPONENT.md +6 -4
- package/dist/skill/reference/components/chat/examples/group-chat.tsx +15 -2
- package/dist/skill/reference/components/chat/examples/reactions.tsx +121 -0
- package/dist/skill/reference/components/chat/examples/screen.module.css +9 -0
- package/dist/skill/{patterns/chat.tsx → reference/components/chat/examples/screen.tsx} +187 -350
- package/dist/skill/reference/components/chat/examples/search.tsx +1 -1
- package/dist/skill/reference/components/chat-list/COMPONENT.md +2 -1
- package/dist/skill/reference/components/chat-list/examples/links.tsx +72 -0
- package/dist/skill/reference/components/checkbox/COMPONENT.md +1 -1
- package/dist/skill/reference/components/checkbox/examples/examples.module.css +5 -1
- package/dist/skill/reference/components/checkbox/examples/indicator.tsx +37 -9
- package/dist/skill/reference/components/checkbox/examples/states.tsx +6 -1
- package/dist/skill/reference/components/color-field/COMPONENT.md +1 -1
- package/dist/skill/reference/components/color-picker/COMPONENT.md +6 -5
- package/dist/skill/reference/components/color-picker/examples/controlled-open.tsx +37 -0
- package/dist/skill/reference/components/color-picker/examples/presets.tsx +2 -2
- package/dist/skill/reference/components/color-picker/examples/states.tsx +23 -14
- package/dist/skill/reference/components/color-swatches/COMPONENT.md +1 -0
- package/dist/skill/reference/components/composer/COMPONENT.md +2 -1
- package/dist/skill/reference/components/composer/examples/attach-menu.tsx +78 -0
- package/dist/skill/reference/components/composer/examples/attachments.tsx +2 -2
- package/dist/skill/reference/components/crossfade/COMPONENT.md +1 -0
- package/dist/skill/{patterns/screen-states.module.css → reference/components/crossfade/examples/screen.module.css} +3 -17
- package/dist/skill/reference/components/crossfade/examples/screen.tsx +197 -0
- package/dist/skill/reference/components/data-table/COMPONENT.md +3 -2
- package/dist/skill/reference/components/data-table/examples/detail-panel.tsx +36 -37
- package/dist/skill/reference/components/data-table/examples/examples.module.css +0 -12
- package/dist/skill/reference/components/data-table/examples/numeric.tsx +36 -4
- package/dist/skill/reference/components/data-table/examples/overview.tsx +1 -0
- package/dist/skill/reference/components/data-table/examples/row-open.tsx +7 -36
- package/dist/skill/{patterns/list-page.module.css → reference/components/data-table/examples/screen.module.css} +1 -7
- package/dist/skill/{patterns/list-page.tsx → reference/components/data-table/examples/screen.tsx} +84 -64
- package/dist/skill/reference/components/datepicker/COMPONENT.md +6 -4
- package/dist/skill/reference/components/datepicker/examples/examples.module.css +2 -6
- package/dist/skill/reference/components/datepicker/examples/in-form.tsx +47 -55
- package/dist/skill/reference/components/datepicker/examples/locale.tsx +35 -0
- package/dist/skill/reference/components/datepicker/examples/range-presets.tsx +11 -2
- package/dist/skill/reference/components/datepicker/examples/states.tsx +9 -1
- package/dist/skill/reference/components/description-list/COMPONENT.md +1 -0
- package/dist/skill/{patterns/detail-page.module.css → reference/components/description-list/examples/screen.module.css} +2 -12
- package/dist/skill/reference/components/description-list/examples/screen.tsx +214 -0
- package/dist/skill/reference/components/description-list/examples/structure.tsx +1 -1
- package/dist/skill/reference/components/digit-input/COMPONENT.md +3 -1
- package/dist/skill/reference/components/digit-input/examples/states.tsx +3 -1
- package/dist/skill/reference/components/digit-input/examples/without-focus-ring.tsx +13 -0
- package/dist/skill/reference/components/divider/examples/with-icon.tsx +2 -2
- package/dist/skill/reference/components/dnd/COMPONENT.md +7 -5
- package/dist/skill/reference/components/dnd/examples/drop-zones.tsx +82 -49
- package/dist/skill/reference/components/dnd/examples/examples.module.css +50 -0
- package/dist/skill/reference/components/dnd/examples/states.tsx +54 -0
- package/dist/skill/reference/components/dnd/examples/table.tsx +113 -0
- package/dist/skill/reference/components/drawer/COMPONENT.md +1 -0
- package/dist/skill/reference/components/drawer/examples/dismiss.tsx +5 -3
- package/dist/skill/reference/components/drawer/examples/examples.module.css +0 -13
- package/dist/skill/reference/components/drawer/examples/header-actions.tsx +5 -9
- package/dist/skill/reference/components/drawer/examples/overview.tsx +6 -18
- package/dist/skill/reference/components/drawer/examples/screen.tsx +298 -0
- package/dist/skill/reference/components/dropdown/examples/examples.module.css +1 -5
- package/dist/skill/reference/components/empty-page/COMPONENT.md +1 -1
- package/dist/skill/reference/components/empty-page/examples/region-error.tsx +8 -2
- package/dist/skill/reference/components/example-frame/COMPONENT.md +3 -2
- package/dist/skill/reference/components/example-frame/examples/initial-view.tsx +44 -0
- package/dist/skill/reference/components/field-list/COMPONENT.md +165 -0
- package/dist/skill/reference/components/field-list/examples/base-row.tsx +76 -0
- package/dist/skill/reference/components/field-list/examples/controlled.tsx +72 -0
- package/dist/skill/reference/components/field-list/examples/errors.tsx +88 -0
- package/dist/skill/reference/components/field-list/examples/examples.module.css +34 -0
- package/dist/skill/reference/components/field-list/examples/limits.tsx +55 -0
- package/dist/skill/reference/components/field-list/examples/locked.tsx +139 -0
- package/dist/skill/reference/components/field-list/examples/narrow.tsx +68 -0
- package/dist/skill/reference/components/field-list/examples/overview.tsx +66 -0
- package/dist/skill/reference/components/field-list/examples/reorder.tsx +42 -0
- package/dist/skill/reference/components/field-list/examples/screen.module.css +18 -0
- package/dist/skill/reference/components/field-list/examples/screen.tsx +316 -0
- package/dist/skill/reference/components/field-list/examples/sizes.tsx +42 -0
- package/dist/skill/reference/components/field-list/examples/states.tsx +51 -0
- package/dist/skill/reference/components/file-upload/COMPONENT.md +7 -6
- package/dist/skill/reference/components/file-upload/examples/custom-body.tsx +2 -1
- package/dist/skill/reference/components/file-upload/examples/examples.module.css +1 -7
- package/dist/skill/reference/components/file-upload/examples/file-cards.tsx +10 -1
- package/dist/skill/reference/components/file-upload/examples/gallery.tsx +2 -2
- package/dist/skill/reference/components/file-upload/examples/in-form.tsx +4 -9
- package/dist/skill/reference/components/file-upload/examples/overview.tsx +5 -1
- package/dist/skill/reference/components/file-upload/examples/row-parts.tsx +24 -1
- package/dist/skill/{patterns/media-library.module.css → reference/components/file-upload/examples/screen.module.css} +2 -23
- package/dist/skill/reference/components/file-upload/examples/screen.tsx +646 -0
- package/dist/skill/reference/components/file-upload/examples/states.tsx +6 -2
- package/dist/skill/reference/components/file-upload/examples/validation.tsx +11 -2
- package/dist/skill/reference/components/file-upload/examples/variants.tsx +3 -20
- package/dist/skill/reference/components/gantt/COMPONENT.md +2 -1
- package/dist/skill/reference/components/gantt/examples/screen.module.css +14 -0
- package/dist/skill/{patterns/schedule.tsx → reference/components/gantt/examples/screen.tsx} +174 -170
- package/dist/skill/reference/components/gantt/examples/states.tsx +6 -2
- package/dist/skill/reference/components/input/COMPONENT.md +2 -2
- package/dist/skill/reference/components/input/examples/examples.module.css +2 -13
- package/dist/skill/reference/components/input/examples/in-form.tsx +1 -9
- package/dist/skill/reference/components/input/examples/password-strength.tsx +34 -8
- package/dist/skill/reference/components/input/examples/states.tsx +6 -1
- package/dist/skill/reference/components/kanban/COMPONENT.md +16 -11
- package/dist/skill/reference/components/kanban/examples/columns.tsx +8 -5
- package/dist/skill/reference/components/kanban/examples/limits.tsx +2 -1
- package/dist/skill/reference/components/kanban/examples/screen.module.css +17 -0
- package/dist/skill/{patterns/kanban-board.tsx → reference/components/kanban/examples/screen.tsx} +132 -172
- package/dist/skill/reference/components/kanban/examples/states.tsx +17 -6
- package/dist/skill/reference/components/kanban/examples/variants.tsx +16 -8
- package/dist/skill/reference/components/list/COMPONENT.md +1 -1
- package/dist/skill/reference/components/login-form/COMPONENT.md +6 -5
- package/dist/skill/reference/components/login-form/examples/examples.module.css +2 -21
- package/dist/skill/reference/components/login-form/examples/forgot-password.tsx +28 -32
- package/dist/skill/reference/components/login-form/examples/narrow.tsx +1 -1
- package/dist/skill/reference/components/login-form/examples/overview.tsx +45 -47
- package/dist/skill/reference/components/login-form/examples/register.tsx +64 -68
- package/dist/skill/reference/components/login-form/examples/reset-password.tsx +50 -47
- package/dist/skill/reference/components/login-form/examples/sizes.tsx +4 -6
- package/dist/skill/reference/components/login-form/examples/states.tsx +53 -57
- package/dist/skill/reference/components/login-form/examples/structure.tsx +18 -22
- package/dist/skill/reference/components/login-form/examples/verification-code.tsx +41 -45
- package/dist/skill/reference/components/media-viewer/COMPONENT.md +3 -3
- package/dist/skill/reference/components/media-viewer/examples/dismiss.tsx +5 -1
- package/dist/skill/reference/components/message/COMPONENT.md +6 -5
- package/dist/skill/reference/components/message/examples/file.tsx +5 -1
- package/dist/skill/reference/components/message/examples/media-open.tsx +48 -0
- package/dist/skill/reference/components/message/examples/status.tsx +21 -3
- package/dist/skill/reference/components/message/examples/text-formatting.tsx +7 -1
- package/dist/skill/reference/components/modal/COMPONENT.md +2 -1
- package/dist/skill/reference/components/modal/examples/custom-container.tsx +20 -20
- package/dist/skill/reference/components/modal/examples/dismiss.tsx +5 -3
- package/dist/skill/reference/components/modal/examples/enter-key.tsx +116 -0
- package/dist/skill/reference/components/modal/examples/examples.module.css +7 -13
- package/dist/skill/reference/components/modal/examples/structure.tsx +5 -2
- package/dist/skill/reference/components/native-select/COMPONENT.md +1 -1
- package/dist/skill/reference/components/native-select/examples/states.tsx +5 -1
- package/dist/skill/reference/components/notification/COMPONENT.md +2 -1
- package/dist/skill/reference/components/notification/examples/dismiss.tsx +2 -2
- package/dist/skill/reference/components/page-content/COMPONENT.md +71 -14
- package/dist/skill/reference/components/page-content/examples/grid.tsx +107 -0
- package/dist/skill/reference/components/page-content/examples/list-detail.tsx +0 -3
- package/dist/skill/reference/components/page-content/examples/overview.tsx +2 -2
- package/dist/skill/{patterns/settings-page.module.css → reference/components/page-content/examples/screen.module.css} +1 -21
- package/dist/skill/{patterns/settings-page.tsx → reference/components/page-content/examples/screen.tsx} +61 -82
- package/dist/skill/reference/components/page-content/examples/sections.tsx +81 -0
- package/dist/skill/reference/components/page-content/examples/variants.tsx +4 -11
- package/dist/skill/reference/components/page-toolbar/COMPONENT.md +18 -16
- package/dist/skill/reference/components/page-toolbar/examples/narrow.tsx +6 -3
- package/dist/skill/reference/components/pagination/examples/controlled.tsx +29 -29
- package/dist/skill/reference/components/pagination/examples/examples.module.css +0 -2
- package/dist/skill/reference/components/progress-bar/COMPONENT.md +1 -1
- package/dist/skill/reference/components/progress-bar/examples/segments.tsx +2 -2
- package/dist/skill/reference/components/progress-circle/COMPONENT.md +1 -1
- package/dist/skill/reference/components/progress-circle/examples/segments.tsx +8 -3
- package/dist/skill/reference/components/radio/COMPONENT.md +1 -0
- package/dist/skill/reference/components/radio/examples/examples.module.css +14 -0
- package/dist/skill/reference/components/radio/examples/in-form.tsx +45 -0
- package/dist/skill/reference/components/scroll-container/COMPONENT.md +1 -0
- package/dist/skill/reference/components/scroll-container/examples/auto-scroll.tsx +3 -3
- package/dist/skill/reference/components/scroll-container/examples/chat.tsx +3 -3
- package/dist/skill/reference/components/scroll-container/examples/edges.tsx +6 -3
- package/dist/skill/reference/components/scroll-container/examples/examples.module.css +4 -17
- package/dist/skill/reference/components/scroll-container/examples/load-more.tsx +51 -0
- package/dist/skill/reference/components/scroll-container/examples/lock.tsx +3 -5
- package/dist/skill/reference/components/scroll-container/examples/overscroll.tsx +3 -3
- package/dist/skill/reference/components/scroll-container/examples/overview.tsx +3 -3
- package/dist/skill/reference/components/scroll-container/examples/scrollbar.tsx +13 -7
- package/dist/skill/reference/components/scroll-container/examples/variants.tsx +13 -7
- package/dist/skill/reference/components/segmented-control/COMPONENT.md +3 -2
- package/dist/skill/reference/components/segmented-control/examples/in-form.tsx +5 -1
- package/dist/skill/reference/components/segmented-control/examples/states.tsx +10 -1
- package/dist/skill/reference/components/select/COMPONENT.md +5 -3
- package/dist/skill/reference/components/select/examples/examples.module.css +2 -7
- package/dist/skill/reference/components/select/examples/icon-only.tsx +38 -0
- package/dist/skill/reference/components/select/examples/states.tsx +13 -1
- package/dist/skill/reference/components/sheet/COMPONENT.md +2 -0
- package/dist/skill/reference/components/sheet/examples/guard.tsx +72 -0
- package/dist/skill/reference/components/sheet/examples/header-actions.tsx +56 -0
- package/dist/skill/reference/components/slider/COMPONENT.md +2 -1
- package/dist/skill/reference/components/slider/examples/examples.module.css +8 -0
- package/dist/skill/reference/components/slider/examples/in-form.tsx +47 -0
- package/dist/skill/reference/components/slider/examples/states.tsx +4 -1
- package/dist/skill/reference/components/smart-filter/COMPONENT.md +1 -1
- package/dist/skill/reference/components/smart-filter/examples/controlled.tsx +3 -3
- package/dist/skill/reference/components/smart-filter/examples/ranges.tsx +44 -10
- package/dist/skill/reference/components/sparkline/COMPONENT.md +83 -30
- package/dist/skill/reference/components/sparkline/examples/compact.tsx +1 -1
- package/dist/skill/reference/components/sparkline/examples/curve.tsx +28 -0
- package/dist/skill/reference/components/sparkline/examples/gaps.tsx +33 -0
- package/dist/skill/reference/components/sparkline/examples/overview.tsx +11 -2
- package/dist/skill/reference/components/sparkline/examples/period.tsx +7 -2
- package/dist/skill/reference/components/sparkline/examples/reference.tsx +38 -0
- package/dist/skill/reference/components/sparkline/examples/variants.tsx +2 -2
- package/dist/skill/reference/components/tabs/COMPONENT.md +1 -1
- package/dist/skill/reference/components/tabs/examples/examples.module.css +0 -6
- package/dist/skill/reference/components/tabs/examples/in-drawer.tsx +11 -13
- package/dist/skill/reference/components/tabs/examples/sizes.tsx +1 -1
- package/dist/skill/reference/components/tag-select/COMPONENT.md +1 -1
- package/dist/skill/reference/components/tag-select/examples/states.tsx +8 -1
- package/dist/skill/reference/components/textarea/COMPONENT.md +1 -1
- package/dist/skill/reference/components/textarea/examples/examples.module.css +0 -6
- package/dist/skill/reference/components/textarea/examples/in-form.tsx +1 -9
- package/dist/skill/reference/components/textarea/examples/states.tsx +2 -1
- package/dist/skill/reference/components/thumbnail/COMPONENT.md +2 -1
- package/dist/skill/reference/components/thumbnail/examples/examples.module.css +1 -1
- package/dist/skill/reference/components/thumbnail/examples/fit.tsx +24 -0
- package/dist/skill/reference/components/thumbnail/examples/video.tsx +20 -1
- package/dist/skill/reference/components/timeline/COMPONENT.md +1 -1
- package/dist/skill/reference/components/timeline/examples/examples.module.css +0 -8
- package/dist/skill/reference/components/timeline/examples/links.tsx +55 -14
- package/dist/skill/reference/components/timeline/examples/narrow.tsx +2 -2
- package/dist/skill/reference/components/timeline/examples/sizes.tsx +3 -3
- package/dist/skill/reference/components/timeline/examples/variants.tsx +4 -4
- package/dist/skill/reference/components/tooltip/COMPONENT.md +7 -5
- package/dist/skill/reference/components/tooltip/examples/placement.tsx +2 -1
- package/dist/skill/reference/components/tooltip/examples/toolbar.tsx +2 -2
- package/dist/skill/reference/components/typography/examples/weights.tsx +3 -0
- package/dist/skill/reference/components/video-note/COMPONENT.md +3 -3
- package/dist/skill/reference/components/video-note/examples/controlled.tsx +19 -2
- package/dist/skill/reference/components/video-note/examples/in-message.tsx +5 -2
- package/dist/skill/reference/components/visually-hidden/COMPONENT.md +2 -1
- package/dist/skill/reference/components/visually-hidden/examples/assertive.tsx +39 -0
- package/dist/skill/reference/components/voice-player/COMPONENT.md +3 -3
- package/dist/skill/reference/components/voice-player/examples/call-recording.tsx +19 -9
- package/dist/skill/reference/components/voice-player/examples/controlled.tsx +20 -3
- package/dist/skill/reference/layout/app-header/COMPONENT.md +46 -63
- package/dist/skill/reference/layout/app-header/examples/breadcrumbs.tsx +10 -9
- package/dist/skill/reference/layout/app-header/examples/examples.module.css +1 -1
- package/dist/skill/reference/layout/app-header/examples/in-app-shell.tsx +2 -3
- package/dist/skill/reference/layout/app-header/examples/narrow.tsx +4 -5
- package/dist/skill/reference/layout/app-header/examples/overview.tsx +8 -10
- package/dist/skill/reference/layout/app-header/examples/page-title.tsx +3 -10
- package/dist/skill/reference/layout/app-shell/COMPONENT.md +5 -4
- package/dist/skill/reference/layout/app-shell/examples/footer.tsx +2 -2
- package/dist/skill/reference/layout/app-shell/examples/overview.tsx +17 -32
- package/dist/skill/{patterns/app-shell.module.css → reference/layout/app-shell/examples/screen.module.css} +1 -8
- package/dist/skill/reference/layout/app-shell/examples/screen.tsx +262 -0
- package/dist/skill/reference/layout/app-shell/examples/template.tsx +31 -11
- package/dist/skill/reference/layout/bottom-nav/examples/floating-action.tsx +2 -2
- package/dist/skill/reference/layout/bottom-nav/examples/floating.tsx +2 -2
- package/dist/skill/reference/layout/bottom-nav/examples/in-app-shell.tsx +2 -2
- package/dist/skill/reference/layout/sidebar/COMPONENT.md +7 -4
- package/dist/skill/reference/layout/sidebar/examples/account.tsx +2 -2
- package/dist/skill/reference/layout/sidebar/examples/collapsible-groups.tsx +12 -4
- package/dist/skill/reference/layout/sidebar/examples/custom-part.tsx +53 -0
- package/dist/skill/reference/layout/sidebar/examples/examples.module.css +5 -0
- package/dist/skill/reference/layout/sidebar/examples/narrow.tsx +53 -0
- package/dist/skill/reference/layout/sidebar/examples/persist.tsx +57 -0
- package/dist/skill/reference/layout/sidebar/examples/router.tsx +14 -2
- package/dist/skill/reference/layout/sidebar/examples/structure.tsx +7 -2
- package/dist/skill/responsive.md +7 -5
- package/dist/skill/ux.md +145 -0
- package/dist/tokens/semantic.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/avatar/COMPONENT.md +4 -4
- package/src/components/avatar/examples/presence.tsx +1 -1
- package/src/components/avatar/examples/states.tsx +5 -5
- package/src/components/badge/examples/applied-filters.tsx +13 -19
- package/src/components/badge/examples/examples.module.css +1 -8
- package/src/components/badge/examples/server-tags.tsx +2 -6
- package/src/components/banner/COMPONENT.md +6 -6
- package/src/components/banner/examples/dismissible.tsx +22 -11
- package/src/components/banner/examples/examples.module.css +4 -8
- package/src/components/banner/examples/narrow.tsx +1 -1
- package/src/components/banner/examples/page-strip.tsx +16 -22
- package/src/components/breadcrumb/COMPONENT.md +5 -4
- package/src/components/breadcrumb/examples/ellipsis.tsx +2 -2
- package/src/components/breadcrumb/examples/overflow.tsx +1 -1
- package/src/components/button-group/COMPONENT.md +2 -2
- package/src/components/button-group/examples/in-form.tsx +22 -2
- package/src/components/button-group/examples/states.tsx +10 -1
- package/src/components/card/COMPONENT.md +7 -5
- package/src/components/card/examples/examples.module.css +0 -28
- package/src/components/card/examples/kpi-media.tsx +13 -11
- package/src/components/card/examples/narrow.tsx +1 -1
- package/src/components/card/examples/panel-chart.tsx +45 -22
- package/src/components/card/examples/screen.module.css +14 -0
- package/src/components/card/examples/screen.tsx +362 -0
- package/src/components/card/examples/variants.tsx +15 -1
- package/src/components/chart-frame/COMPONENT.md +12 -8
- package/src/components/chart-frame/examples/fill-height.tsx +119 -0
- package/src/components/chart-frame/examples/states.tsx +3 -1
- package/src/components/chart-frame/examples/tooltip.tsx +20 -24
- package/src/components/chat/COMPONENT.md +6 -4
- package/src/components/chat/examples/group-chat.tsx +15 -2
- package/src/components/chat/examples/reactions.tsx +121 -0
- package/src/components/chat/examples/screen.module.css +9 -0
- package/src/components/chat/examples/screen.tsx +718 -0
- package/src/components/chat/examples/search.tsx +1 -1
- package/src/components/chat-list/COMPONENT.md +2 -1
- package/src/components/chat-list/examples/links.tsx +72 -0
- package/src/components/checkbox/COMPONENT.md +1 -1
- package/src/components/checkbox/examples/examples.module.css +5 -1
- package/src/components/checkbox/examples/indicator.tsx +37 -9
- package/src/components/checkbox/examples/states.tsx +6 -1
- package/src/components/color-field/COMPONENT.md +1 -1
- package/src/components/color-picker/COMPONENT.md +6 -5
- package/src/components/color-picker/examples/controlled-open.tsx +37 -0
- package/src/components/color-picker/examples/presets.tsx +2 -2
- package/src/components/color-picker/examples/states.tsx +23 -14
- package/src/components/color-swatches/COMPONENT.md +1 -0
- package/src/components/composer/COMPONENT.md +2 -1
- package/src/components/composer/examples/attach-menu.tsx +78 -0
- package/src/components/composer/examples/attachments.tsx +2 -2
- package/src/components/crossfade/COMPONENT.md +1 -0
- package/src/components/crossfade/examples/screen.module.css +40 -0
- package/src/components/crossfade/examples/screen.tsx +197 -0
- package/src/components/data-table/COMPONENT.md +3 -2
- package/src/components/data-table/examples/detail-panel.tsx +36 -37
- package/src/components/data-table/examples/examples.module.css +0 -12
- package/src/components/data-table/examples/numeric.tsx +36 -4
- package/src/components/data-table/examples/overview.tsx +1 -0
- package/src/components/data-table/examples/row-open.tsx +7 -36
- package/src/components/data-table/examples/screen.module.css +13 -0
- package/src/components/data-table/examples/screen.tsx +354 -0
- package/src/components/datepicker/COMPONENT.md +6 -4
- package/src/components/datepicker/examples/examples.module.css +2 -6
- package/src/components/datepicker/examples/in-form.tsx +47 -55
- package/src/components/datepicker/examples/locale.tsx +35 -0
- package/src/components/datepicker/examples/range-presets.tsx +11 -2
- package/src/components/datepicker/examples/states.tsx +9 -1
- package/src/components/description-list/COMPONENT.md +1 -0
- package/src/components/description-list/examples/screen.module.css +64 -0
- package/src/components/description-list/examples/screen.tsx +214 -0
- package/src/components/description-list/examples/structure.tsx +1 -1
- package/src/components/digit-input/COMPONENT.md +3 -1
- package/src/components/digit-input/examples/states.tsx +3 -1
- package/src/components/digit-input/examples/without-focus-ring.tsx +13 -0
- package/src/components/divider/examples/with-icon.tsx +2 -2
- package/src/components/dnd/COMPONENT.md +7 -5
- package/src/components/dnd/examples/drop-zones.tsx +82 -49
- package/src/components/dnd/examples/examples.module.css +50 -0
- package/src/components/dnd/examples/states.tsx +54 -0
- package/src/components/dnd/examples/table.tsx +113 -0
- package/src/components/drawer/COMPONENT.md +1 -0
- package/src/components/drawer/examples/dismiss.tsx +5 -3
- package/src/components/drawer/examples/examples.module.css +0 -13
- package/src/components/drawer/examples/header-actions.tsx +5 -9
- package/src/components/drawer/examples/overview.tsx +6 -18
- package/src/components/drawer/examples/screen.module.css +14 -0
- package/src/components/drawer/examples/screen.tsx +298 -0
- package/src/components/dropdown/examples/examples.module.css +1 -5
- package/src/components/empty-page/COMPONENT.md +1 -1
- package/src/components/empty-page/examples/region-error.tsx +8 -2
- package/src/components/example-frame/COMPONENT.md +3 -2
- package/src/components/example-frame/examples/initial-view.tsx +44 -0
- package/src/components/field-list/COMPONENT.md +165 -0
- package/src/components/field-list/examples/base-row.tsx +76 -0
- package/src/components/field-list/examples/controlled.tsx +72 -0
- package/src/components/field-list/examples/errors.tsx +88 -0
- package/src/components/field-list/examples/examples.module.css +34 -0
- package/src/components/field-list/examples/limits.tsx +55 -0
- package/src/components/field-list/examples/locked.tsx +139 -0
- package/src/components/field-list/examples/narrow.tsx +68 -0
- package/src/components/field-list/examples/overview.tsx +66 -0
- package/src/components/field-list/examples/reorder.tsx +42 -0
- package/src/components/field-list/examples/screen.module.css +18 -0
- package/src/components/field-list/examples/screen.tsx +316 -0
- package/src/components/field-list/examples/sizes.tsx +42 -0
- package/src/components/field-list/examples/states.tsx +51 -0
- package/src/components/file-upload/COMPONENT.md +7 -6
- package/src/components/file-upload/examples/custom-body.tsx +2 -1
- package/src/components/file-upload/examples/examples.module.css +1 -7
- package/src/components/file-upload/examples/file-cards.tsx +10 -1
- package/src/components/file-upload/examples/gallery.tsx +2 -2
- package/src/components/file-upload/examples/in-form.tsx +4 -9
- package/src/components/file-upload/examples/overview.tsx +5 -1
- package/src/components/file-upload/examples/row-parts.tsx +24 -1
- package/src/components/file-upload/examples/screen.module.css +45 -0
- package/src/components/file-upload/examples/screen.tsx +646 -0
- package/src/components/file-upload/examples/states.tsx +6 -2
- package/src/components/file-upload/examples/validation.tsx +11 -2
- package/src/components/file-upload/examples/variants.tsx +3 -20
- package/src/components/gantt/COMPONENT.md +2 -1
- package/src/components/gantt/examples/screen.module.css +14 -0
- package/src/components/gantt/examples/screen.tsx +726 -0
- package/src/components/gantt/examples/states.tsx +6 -2
- package/src/components/input/COMPONENT.md +2 -2
- package/src/components/input/examples/examples.module.css +2 -13
- package/src/components/input/examples/in-form.tsx +1 -9
- package/src/components/input/examples/password-strength.tsx +34 -8
- package/src/components/input/examples/states.tsx +6 -1
- package/src/components/kanban/COMPONENT.md +16 -11
- package/src/components/kanban/examples/columns.tsx +8 -5
- package/src/components/kanban/examples/limits.tsx +2 -1
- package/src/components/kanban/examples/screen.module.css +17 -0
- package/src/components/kanban/examples/screen.tsx +572 -0
- package/src/components/kanban/examples/states.tsx +17 -6
- package/src/components/kanban/examples/variants.tsx +16 -8
- package/src/components/list/COMPONENT.md +1 -1
- package/src/components/login-form/COMPONENT.md +6 -5
- package/src/components/login-form/examples/examples.module.css +2 -21
- package/src/components/login-form/examples/forgot-password.tsx +28 -32
- package/src/components/login-form/examples/narrow.tsx +1 -1
- package/src/components/login-form/examples/overview.tsx +45 -47
- package/src/components/login-form/examples/register.tsx +64 -68
- package/src/components/login-form/examples/reset-password.tsx +50 -47
- package/src/components/login-form/examples/sizes.tsx +4 -6
- package/src/components/login-form/examples/states.tsx +53 -57
- package/src/components/login-form/examples/structure.tsx +18 -22
- package/src/components/login-form/examples/verification-code.tsx +41 -45
- package/src/components/media-viewer/COMPONENT.md +3 -3
- package/src/components/media-viewer/examples/dismiss.tsx +5 -1
- package/src/components/message/COMPONENT.md +6 -5
- package/src/components/message/examples/file.tsx +5 -1
- package/src/components/message/examples/media-open.tsx +48 -0
- package/src/components/message/examples/status.tsx +21 -3
- package/src/components/message/examples/text-formatting.tsx +7 -1
- package/src/components/modal/COMPONENT.md +2 -1
- package/src/components/modal/examples/custom-container.tsx +20 -20
- package/src/components/modal/examples/dismiss.tsx +5 -3
- package/src/components/modal/examples/enter-key.tsx +116 -0
- package/src/components/modal/examples/examples.module.css +7 -13
- package/src/components/modal/examples/structure.tsx +5 -2
- package/src/components/native-select/COMPONENT.md +1 -1
- package/src/components/native-select/examples/states.tsx +5 -1
- package/src/components/notification/COMPONENT.md +2 -1
- package/src/components/notification/examples/dismiss.tsx +2 -2
- package/src/components/page-content/COMPONENT.md +71 -14
- package/src/components/page-content/examples/grid.tsx +107 -0
- package/src/components/page-content/examples/list-detail.tsx +0 -3
- package/src/components/page-content/examples/overview.tsx +2 -2
- package/src/components/page-content/examples/screen.module.css +27 -0
- package/src/components/page-content/examples/screen.tsx +196 -0
- package/src/components/page-content/examples/sections.tsx +81 -0
- package/src/components/page-content/examples/variants.tsx +4 -11
- package/src/components/page-toolbar/COMPONENT.md +18 -16
- package/src/components/page-toolbar/examples/narrow.tsx +6 -3
- package/src/components/pagination/examples/controlled.tsx +29 -29
- package/src/components/pagination/examples/examples.module.css +0 -2
- package/src/components/progress-bar/COMPONENT.md +1 -1
- package/src/components/progress-bar/examples/segments.tsx +2 -2
- package/src/components/progress-circle/COMPONENT.md +1 -1
- package/src/components/progress-circle/examples/segments.tsx +8 -3
- package/src/components/radio/COMPONENT.md +1 -0
- package/src/components/radio/examples/examples.module.css +14 -0
- package/src/components/radio/examples/in-form.tsx +45 -0
- package/src/components/scroll-container/COMPONENT.md +1 -0
- package/src/components/scroll-container/examples/auto-scroll.tsx +3 -3
- package/src/components/scroll-container/examples/chat.tsx +3 -3
- package/src/components/scroll-container/examples/edges.tsx +6 -3
- package/src/components/scroll-container/examples/examples.module.css +4 -17
- package/src/components/scroll-container/examples/load-more.tsx +51 -0
- package/src/components/scroll-container/examples/lock.tsx +3 -5
- package/src/components/scroll-container/examples/overscroll.tsx +3 -3
- package/src/components/scroll-container/examples/overview.tsx +3 -3
- package/src/components/scroll-container/examples/scrollbar.tsx +13 -7
- package/src/components/scroll-container/examples/variants.tsx +13 -7
- package/src/components/segmented-control/COMPONENT.md +3 -2
- package/src/components/segmented-control/examples/in-form.tsx +5 -1
- package/src/components/segmented-control/examples/states.tsx +10 -1
- package/src/components/select/COMPONENT.md +5 -3
- package/src/components/select/examples/examples.module.css +2 -7
- package/src/components/select/examples/icon-only.tsx +38 -0
- package/src/components/select/examples/states.tsx +13 -1
- package/src/components/sheet/COMPONENT.md +2 -0
- package/src/components/sheet/examples/guard.tsx +72 -0
- package/src/components/sheet/examples/header-actions.tsx +56 -0
- package/src/components/slider/COMPONENT.md +2 -1
- package/src/components/slider/examples/examples.module.css +8 -0
- package/src/components/slider/examples/in-form.tsx +47 -0
- package/src/components/slider/examples/states.tsx +4 -1
- package/src/components/smart-filter/COMPONENT.md +1 -1
- package/src/components/smart-filter/examples/controlled.tsx +3 -3
- package/src/components/smart-filter/examples/ranges.tsx +44 -10
- package/src/components/sparkline/COMPONENT.md +83 -30
- package/src/components/sparkline/examples/compact.tsx +1 -1
- package/src/components/sparkline/examples/curve.tsx +28 -0
- package/src/components/sparkline/examples/gaps.tsx +33 -0
- package/src/components/sparkline/examples/overview.tsx +11 -2
- package/src/components/sparkline/examples/period.tsx +7 -2
- package/src/components/sparkline/examples/reference.tsx +38 -0
- package/src/components/sparkline/examples/variants.tsx +2 -2
- package/src/components/tabs/COMPONENT.md +1 -1
- package/src/components/tabs/examples/examples.module.css +0 -6
- package/src/components/tabs/examples/in-drawer.tsx +11 -13
- package/src/components/tabs/examples/sizes.tsx +1 -1
- package/src/components/tag-select/COMPONENT.md +1 -1
- package/src/components/tag-select/examples/states.tsx +8 -1
- package/src/components/textarea/COMPONENT.md +1 -1
- package/src/components/textarea/examples/examples.module.css +0 -6
- package/src/components/textarea/examples/in-form.tsx +1 -9
- package/src/components/textarea/examples/states.tsx +2 -1
- package/src/components/thumbnail/COMPONENT.md +2 -1
- package/src/components/thumbnail/examples/examples.module.css +1 -1
- package/src/components/thumbnail/examples/fit.tsx +24 -0
- package/src/components/thumbnail/examples/video.tsx +20 -1
- package/src/components/timeline/COMPONENT.md +1 -1
- package/src/components/timeline/examples/examples.module.css +0 -8
- package/src/components/timeline/examples/links.tsx +55 -14
- package/src/components/timeline/examples/narrow.tsx +2 -2
- package/src/components/timeline/examples/sizes.tsx +3 -3
- package/src/components/timeline/examples/variants.tsx +4 -4
- package/src/components/tooltip/COMPONENT.md +7 -5
- package/src/components/tooltip/examples/placement.tsx +2 -1
- package/src/components/tooltip/examples/toolbar.tsx +2 -2
- package/src/components/typography/examples/weights.tsx +3 -0
- package/src/components/video-note/COMPONENT.md +3 -3
- package/src/components/video-note/examples/controlled.tsx +19 -2
- package/src/components/video-note/examples/in-message.tsx +5 -2
- package/src/components/visually-hidden/COMPONENT.md +2 -1
- package/src/components/visually-hidden/examples/assertive.tsx +39 -0
- package/src/components/voice-player/COMPONENT.md +3 -3
- package/src/components/voice-player/examples/call-recording.tsx +19 -9
- package/src/components/voice-player/examples/controlled.tsx +20 -3
- package/src/layout/app-header/COMPONENT.md +46 -63
- package/src/layout/app-header/examples/breadcrumbs.tsx +10 -9
- package/src/layout/app-header/examples/examples.module.css +1 -1
- package/src/layout/app-header/examples/in-app-shell.tsx +2 -3
- package/src/layout/app-header/examples/narrow.tsx +4 -5
- package/src/layout/app-header/examples/overview.tsx +8 -10
- package/src/layout/app-header/examples/page-title.tsx +3 -10
- package/src/layout/app-shell/COMPONENT.md +5 -4
- package/src/layout/app-shell/examples/footer.tsx +2 -2
- package/src/layout/app-shell/examples/overview.tsx +17 -32
- package/src/layout/app-shell/examples/screen.module.css +11 -0
- package/src/layout/app-shell/examples/screen.tsx +262 -0
- package/src/layout/app-shell/examples/template.tsx +31 -11
- package/src/layout/bottom-nav/examples/floating-action.tsx +2 -2
- package/src/layout/bottom-nav/examples/floating.tsx +2 -2
- package/src/layout/bottom-nav/examples/in-app-shell.tsx +2 -2
- package/src/layout/sidebar/COMPONENT.md +7 -4
- package/src/layout/sidebar/examples/account.tsx +2 -2
- package/src/layout/sidebar/examples/collapsible-groups.tsx +12 -4
- package/src/layout/sidebar/examples/custom-part.tsx +53 -0
- package/src/layout/sidebar/examples/examples.module.css +5 -0
- package/src/layout/sidebar/examples/narrow.tsx +53 -0
- package/src/layout/sidebar/examples/persist.tsx +57 -0
- package/src/layout/sidebar/examples/router.tsx +14 -2
- package/src/layout/sidebar/examples/structure.tsx +7 -2
- package/src/styles/theme-light.css +1 -0
- package/dist/skill/patterns/app-shell.tsx +0 -301
- package/dist/skill/patterns/chat.module.css +0 -8
- package/dist/skill/patterns/dashboard.module.css +0 -44
- package/dist/skill/patterns/dashboard.tsx +0 -326
- package/dist/skill/patterns/detail-page.tsx +0 -209
- package/dist/skill/patterns/form-drawer.tsx +0 -240
- package/dist/skill/patterns/kanban-board.module.css +0 -28
- package/dist/skill/patterns/media-library.tsx +0 -638
- package/dist/skill/patterns/schedule.module.css +0 -22
- package/dist/skill/patterns/screen-states.tsx +0 -186
- /package/dist/skill/{patterns/form-drawer.module.css → reference/components/drawer/examples/screen.module.css} +0 -0
|
@@ -20,10 +20,8 @@ export default function ScrollContainerLockExample() {
|
|
|
20
20
|
|
|
21
21
|
return (
|
|
22
22
|
<Card.Root role="region" className={styles.card} aria-label="Очередь заказов">
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
Очередь заказов
|
|
26
|
-
</Typography>
|
|
23
|
+
<Card.Header>
|
|
24
|
+
<Card.Title>Очередь заказов</Card.Title>
|
|
27
25
|
<Button.Root
|
|
28
26
|
variant="soft"
|
|
29
27
|
tone="neutral"
|
|
@@ -32,7 +30,7 @@ export default function ScrollContainerLockExample() {
|
|
|
32
30
|
>
|
|
33
31
|
{reviewing ? "Закрыть проверку" : "Проверить заказ"}
|
|
34
32
|
</Button.Root>
|
|
35
|
-
</
|
|
33
|
+
</Card.Header>
|
|
36
34
|
<ScrollContainer lock={reviewing}>
|
|
37
35
|
<ul className={styles.list}>
|
|
38
36
|
{ORDERS.map((order) => (
|
|
@@ -8,9 +8,9 @@ const HOURS = Array.from({ length: 12 }, (_, index) => `${String(9 + index).padS
|
|
|
8
8
|
export default function ScrollContainerOverscrollExample() {
|
|
9
9
|
return (
|
|
10
10
|
<Card.Root role="region" className={styles.card} aria-label="Журнал">
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
</
|
|
11
|
+
<Card.Header>
|
|
12
|
+
<Card.Title>Журнал выгрузок</Card.Title>
|
|
13
|
+
</Card.Header>
|
|
14
14
|
<ScrollContainer overscrollBehavior="auto" tabIndex={0} aria-label="Журнал выгрузок">
|
|
15
15
|
<ul className={styles.list}>
|
|
16
16
|
{HOURS.map((hour) => (
|
|
@@ -8,9 +8,9 @@ const EVENTS = Array.from({ length: 16 }, (_, index) => `Заказ № ${1040 +
|
|
|
8
8
|
export default function ScrollContainerOverviewExample() {
|
|
9
9
|
return (
|
|
10
10
|
<Card.Root role="region" className={styles.card} aria-label="Лента событий">
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
</
|
|
11
|
+
<Card.Header>
|
|
12
|
+
<Card.Title>Лента событий</Card.Title>
|
|
13
|
+
</Card.Header>
|
|
14
14
|
<ScrollContainer>
|
|
15
15
|
<ul className={styles.list}>
|
|
16
16
|
{EVENTS.map((event) => (
|
|
@@ -20,9 +20,12 @@ export default function ScrollContainerScrollbarExample() {
|
|
|
20
20
|
return (
|
|
21
21
|
<div className={styles.layout}>
|
|
22
22
|
<Card.Root role="region" className={styles.card} aria-label="Клиенты">
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
<Card.Header>
|
|
24
|
+
<Card.Title>Клиенты</Card.Title>
|
|
25
|
+
<Typography as="span" variant="caption" tone="muted">
|
|
26
|
+
thin
|
|
27
|
+
</Typography>
|
|
28
|
+
</Card.Header>
|
|
26
29
|
<ScrollContainer>
|
|
27
30
|
<ul className={styles.list}>
|
|
28
31
|
{CLIENTS.map((client) => (
|
|
@@ -35,10 +38,13 @@ export default function ScrollContainerScrollbarExample() {
|
|
|
35
38
|
</ul>
|
|
36
39
|
</ScrollContainer>
|
|
37
40
|
</Card.Root>
|
|
38
|
-
<Card.Root role="region" className={styles.card} aria-label="
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
<Card.Root role="region" className={styles.card} aria-label="Статусы заказов">
|
|
42
|
+
<Card.Header>
|
|
43
|
+
<Card.Title>Статусы заказов</Card.Title>
|
|
44
|
+
<Typography as="span" variant="caption" tone="muted">
|
|
45
|
+
hidden
|
|
46
|
+
</Typography>
|
|
47
|
+
</Card.Header>
|
|
42
48
|
<ScrollContainer axis="horizontal" scrollbar="hidden">
|
|
43
49
|
<div className={styles.strip}>
|
|
44
50
|
{TAGS.map((tag) => (
|
|
@@ -10,10 +10,13 @@ const ROOMS = Array.from({ length: 16 }, (_, index) => `Зал ${index + 1}`);
|
|
|
10
10
|
export default function ScrollContainerVariantsExample() {
|
|
11
11
|
return (
|
|
12
12
|
<div className={styles.layout}>
|
|
13
|
-
<Card.Root role="region" className={styles.card} aria-label="
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<Card.Root role="region" className={styles.card} aria-label="Статусы заказов">
|
|
14
|
+
<Card.Header>
|
|
15
|
+
<Card.Title>Статусы заказов</Card.Title>
|
|
16
|
+
<Typography as="span" variant="caption" tone="muted">
|
|
17
|
+
horizontal
|
|
18
|
+
</Typography>
|
|
19
|
+
</Card.Header>
|
|
17
20
|
<ScrollContainer axis="horizontal">
|
|
18
21
|
<div className={styles.strip}>
|
|
19
22
|
{TAGS.map((tag) => (
|
|
@@ -23,9 +26,12 @@ export default function ScrollContainerVariantsExample() {
|
|
|
23
26
|
</ScrollContainer>
|
|
24
27
|
</Card.Root>
|
|
25
28
|
<Card.Root role="region" className={styles.card} aria-label="Расписание залов">
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
<Card.Header>
|
|
30
|
+
<Card.Title>Расписание залов</Card.Title>
|
|
31
|
+
<Typography as="span" variant="caption" tone="muted">
|
|
32
|
+
both
|
|
33
|
+
</Typography>
|
|
34
|
+
</Card.Header>
|
|
29
35
|
<ScrollContainer
|
|
30
36
|
axis="both"
|
|
31
37
|
tabIndex={0}
|
|
@@ -158,6 +158,7 @@ Item DOM: `data-state`, `data-disabled`, `data-icon-only`, `data-two-line`, `dat
|
|
|
158
158
|
## Layout & spacing
|
|
159
159
|
- In a form it is a field: label → track `label-gap`, track → support row `hint-gap`, field → field `--prime-space-5` like every field.
|
|
160
160
|
- Width is content-based by default; segments never wrap. In a narrow container the row scrolls horizontally with fading edges.
|
|
161
|
+
- On a coarse pointer each segment's hit area grows to the 44 px touch target in height; the track keeps its tier height.
|
|
161
162
|
- In a toolbar: gap `--prime-space-3` between controls; keep every control at one size.
|
|
162
163
|
- Caption under a group: gap `--prime-space-2`.
|
|
163
164
|
- `fullWidth` inside modals and mobile sheets. Single-line segments are `flex: 1 1 0` with `min-width: max-content`: short labels share the spare width equally, a long label keeps its own width, nothing truncates; when the labels do not fit, the row scrolls.
|
|
@@ -191,14 +192,14 @@ Item DOM: `data-state`, `data-disabled`, `data-icon-only`, `data-two-line`, `dat
|
|
|
191
192
|
|---|---|
|
|
192
193
|
| [overview.tsx](examples/overview.tsx) | One value out of a few, with a sliding thumb on the chosen segment — `defaultValue`, `aria-label`. |
|
|
193
194
|
| [sizes.tsx](examples/sizes.tsx) | Every size tier; the outer height equals the control height of the same tier — `size`. |
|
|
194
|
-
| [states.tsx](examples/states.tsx) | No selection yet, a disabled segment and a disabled group next to the default — `disabled`. |
|
|
195
|
+
| [states.tsx](examples/states.tsx) | No selection yet, an invalid group, a disabled segment and a disabled group next to the default — `invalid`, `disabled`. |
|
|
195
196
|
| [with-icon.tsx](examples/with-icon.tsx) | An icon before the label and square icon-only segments named for screen readers — `SegmentedControl.Icon`, `aria-label`. |
|
|
196
197
|
| [colors.tsx](examples/colors.tsx) | A status per option: a dot of its hue before the label and a tinted thumb when chosen — `color`. |
|
|
197
198
|
| [full-width.tsx](examples/full-width.tsx) | The group fills its column; segments tend to equal widths and a long label keeps its own — `fullWidth`. |
|
|
198
199
|
| [scroll.tsx](examples/scroll.tsx) | Segments never wrap: in a column narrower than the row it scrolls with edge fades and brings the chosen segment into view. |
|
|
199
200
|
| [two-line.tsx](examples/two-line.tsx) | A label and a counter on the first line, a metric on the second — `SegmentedControl.Label`, `SegmentedControl.Count`, `SegmentedControl.Description`. |
|
|
200
201
|
| [controlled.tsx](examples/controlled.tsx) | The parent owns the choice and updates other content from it — `value`, `onValueChange`. |
|
|
201
|
-
| [in-form.tsx](examples/in-form.tsx) | An expense form: the choice is a labelled field with a hint, checked on submit, its error leaves as soon as a segment is chosen — `label`, `hint`, `required`, `error`. |
|
|
202
|
+
| [in-form.tsx](examples/in-form.tsx) | An expense form: the choice is a labelled field with a hint, checked on submit, its error leaves as soon as a segment is chosen; an optional choice beside it — `label`, `hint`, `required`, `error`, `optional`. |
|
|
202
203
|
|
|
203
204
|
## Mistakes
|
|
204
205
|
- Using it as tabs that show different panels → use `Tabs`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** An expense form: the choice is a labelled field with a hint, checked on submit, its error leaves as soon as a segment is chosen — `label`, `hint`, `required`, `error`. */
|
|
1
|
+
/** An expense form: the choice is a labelled field with a hint, checked on submit, its error leaves as soon as a segment is chosen; an optional choice beside it — `label`, `hint`, `required`, `error`, `optional`. */
|
|
2
2
|
import { Button, Input, SegmentedControl } from "prime-ui-kit";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
@@ -36,6 +36,10 @@ export default function SegmentedControlInFormExample() {
|
|
|
36
36
|
<SegmentedControl.Item value="project">Проекта</SegmentedControl.Item>
|
|
37
37
|
<SegmentedControl.Item value="personal">Личный</SegmentedControl.Item>
|
|
38
38
|
</SegmentedControl.Root>
|
|
39
|
+
<SegmentedControl.Root label="Возмещение" optional defaultValue="salary">
|
|
40
|
+
<SegmentedControl.Item value="salary">С зарплатой</SegmentedControl.Item>
|
|
41
|
+
<SegmentedControl.Item value="card">На карту</SegmentedControl.Item>
|
|
42
|
+
</SegmentedControl.Root>
|
|
39
43
|
<Button.Root type="submit">Сохранить расход</Button.Root>
|
|
40
44
|
</form>
|
|
41
45
|
);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** No selection yet, a disabled segment and a disabled group next to the default — `disabled`. */
|
|
1
|
+
/** No selection yet, an invalid group, a disabled segment and a disabled group next to the default — `invalid`, `disabled`. */
|
|
2
2
|
import { SegmentedControl, Typography } from "prime-ui-kit";
|
|
3
3
|
|
|
4
4
|
export default function SegmentedControlStatesExample() {
|
|
@@ -22,6 +22,15 @@ export default function SegmentedControlStatesExample() {
|
|
|
22
22
|
empty
|
|
23
23
|
</Typography>
|
|
24
24
|
</div>
|
|
25
|
+
<div>
|
|
26
|
+
<SegmentedControl.Root invalid aria-label="Статус кампании">
|
|
27
|
+
<SegmentedControl.Item value="active">Активные</SegmentedControl.Item>
|
|
28
|
+
<SegmentedControl.Item value="archived">Архив</SegmentedControl.Item>
|
|
29
|
+
</SegmentedControl.Root>
|
|
30
|
+
<Typography as="span" variant="caption" tone="muted">
|
|
31
|
+
invalid
|
|
32
|
+
</Typography>
|
|
33
|
+
</div>
|
|
25
34
|
<div>
|
|
26
35
|
<SegmentedControl.Root defaultValue="active" aria-label="Статус кампании">
|
|
27
36
|
<SegmentedControl.Item value="active">Активные</SegmentedControl.Item>
|
|
@@ -30,7 +30,7 @@ import { Select } from "prime-ui-kit";
|
|
|
30
30
|
```
|
|
31
31
|
Select.Root field frame: label · control · hint/error; value, open, search
|
|
32
32
|
├── Select.Trigger <button role="combobox">: [icon] [value] [clear] [chevron]
|
|
33
|
-
│ ├── Select.TriggerIcon optional leading glyph
|
|
33
|
+
│ ├── Select.TriggerIcon optional leading glyph; alone (no Select.Value) — an icon-only trigger
|
|
34
34
|
│ └── Select.Value picked label or placeholder (renderValue for a rich trigger)
|
|
35
35
|
└── Select.Content portaled panel while open; closed, the items render hidden in place so the trigger knows their labels
|
|
36
36
|
├── search row with `searchable`
|
|
@@ -103,7 +103,7 @@ an icon) goes inside `Select.ItemMeta`.
|
|
|
103
103
|
|
|
104
104
|
| Prop | Type | Default | Description |
|
|
105
105
|
|---|---|---|---|
|
|
106
|
-
| `children` | `ReactNode` | — | `Select.TriggerIcon`, `Select.Value`, optionally a Badge after it. |
|
|
106
|
+
| `children` | `ReactNode` | — | `Select.TriggerIcon`, `Select.Value`, optionally a Badge after it. A `Select.TriggerIcon` alone makes an icon-only trigger (the value read, not shown). |
|
|
107
107
|
|
|
108
108
|
### Select.Value
|
|
109
109
|
`ref` → `HTMLSpanElement`. The picked label (labels joined with `multiple`) with an ellipsis, or the placeholder.
|
|
@@ -212,6 +212,7 @@ No `variant` or `tone`. The trigger is the field look (fill, inset control borde
|
|
|
212
212
|
- Label → field: tier `label-gap`; field → hint: tier `hint-gap`; field → field in a form: `--prime-space-5`.
|
|
213
213
|
- Panel: at least the trigger width and `--prime-panel-min-width`, at most twice that; max height `--prime-panel-max-height` (scrolls); flips near the viewport edge.
|
|
214
214
|
- Long values truncate with an ellipsis in the trigger.
|
|
215
|
+
- The clear segment's hit area grows to the 44 px touch target in height on a coarse pointer, like the clear segment of an Input.
|
|
215
216
|
- A rich row and its trigger use the same parts in the same order: leading media (`Avatar.Root`,
|
|
216
217
|
`Thumbnail.Root`) → `Select.ItemText` (+ `Select.ItemDescription`) → trailing `Badge.Root` /
|
|
217
218
|
`Select.ItemMeta`. In a row the trailing part sits before the check; in the trigger, at the end
|
|
@@ -294,7 +295,7 @@ No `variant` or `tone`. The trigger is the field look (fill, inset control borde
|
|
|
294
295
|
|---|---|
|
|
295
296
|
| [overview.tsx](examples/overview.tsx) | A labelled field with a placeholder; picking an option closes the list and shows its label — `label`, `placeholder`. |
|
|
296
297
|
| [sizes.tsx](examples/sizes.tsx) | Every size tier; the label, the list rows and the hint take the tier of the field — `size`. |
|
|
297
|
-
| [states.tsx](examples/states.tsx) | A default field next to a disabled, a loading, an invalid one
|
|
298
|
+
| [states.tsx](examples/states.tsx) | A default field next to a disabled, a loading, an invalid one, a list with nothing in it and a field whose focus shows without the ring — `disabled`, `loading`, `invalid`, `labels`, `focusRing`. |
|
|
298
299
|
| [validation.tsx](examples/validation.tsx) | Live validation: unassigning the owner shakes the field and drops the error in, picking someone clears it; required and optional markers and a hint — `required`, `optional`, `hint`, `error`. |
|
|
299
300
|
| [with-icon.tsx](examples/with-icon.tsx) | A leading icon in the trigger and an icon before every option label — `Select.TriggerIcon`, `Select.ItemIcon`. |
|
|
300
301
|
| [multiple.tsx](examples/multiple.tsx) | Several values: checkboxes in the list, the list stays open on a pick, labels joined in the trigger — `multiple`. |
|
|
@@ -306,6 +307,7 @@ No `variant` or `tone`. The trigger is the field look (fill, inset control borde
|
|
|
306
307
|
| [saving.tsx](examples/saving.tsx) | A choice that saves on the server at once: the picked value shows with a spinner on the trigger, and a refused save rolls it back and says why — `onValueChange`, `error`. |
|
|
307
308
|
| [rich-options.tsx](examples/rich-options.tsx) | Options with a picture, a second line and a price; the trigger draws the picked option with the same parts — `renderValue`, `Select.ItemText`, `Select.ItemDescription`, `Select.ItemMeta`. |
|
|
308
309
|
| [people.tsx](examples/people.tsx) | People in the rows and the trigger: an avatar sized to the tier before the name, a role badge after it — `Avatar.Root`, `Badge.Root`, `renderValue`. |
|
|
310
|
+
| [icon-only.tsx](examples/icon-only.tsx) | An icon picker as wide as its glyph: the trigger holds only the picked icon and the chevron, the value is still read aloud — `Select.TriggerIcon`. |
|
|
309
311
|
| [controlled.tsx](examples/controlled.tsx) | The parent owns the value: the plan drives the price under the field and a button resets it — `value`, `onValueChange`. |
|
|
310
312
|
| [controlled-open.tsx](examples/controlled-open.tsx) | The parent owns the list: a button opens it from code, a pick or Escape closes it — `open`, `onOpenChange`. |
|
|
311
313
|
| [in-form.tsx](examples/in-form.tsx) | Regional settings form: the required country is checked on submit, the error shakes the field and leaves once a country is picked, a calm note confirms the save — `required`, `error`, `hint`. |
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
|
|
17
17
|
.formFields {
|
|
18
18
|
display: grid;
|
|
19
|
-
|
|
19
|
+
/* Two columns while each keeps 12rem, one column in a narrower form — from its own width. */
|
|
20
|
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(var(--prime-space-16) * 3)), 1fr));
|
|
20
21
|
align-items: start;
|
|
21
22
|
gap: var(--prime-space-5) var(--prime-space-4);
|
|
22
23
|
}
|
|
@@ -27,9 +28,3 @@
|
|
|
27
28
|
justify-content: flex-end;
|
|
28
29
|
gap: var(--prime-space-2);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
@media (max-width: 639px) {
|
|
32
|
-
.formFields {
|
|
33
|
-
grid-template-columns: minmax(0, 1fr);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** An icon picker as wide as its glyph: the trigger holds only the picked icon and the chevron, the value is still read aloud — `Select.TriggerIcon`. */
|
|
2
|
+
import { Icon, type IconName, Select } from "prime-ui-kit";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
const ICONS: { value: IconName; label: string }[] = [
|
|
6
|
+
{ value: "object.package", label: "Склад" },
|
|
7
|
+
{ value: "object.truck", label: "Доставка" },
|
|
8
|
+
{ value: "object.receipt", label: "Счета" },
|
|
9
|
+
{ value: "object.users", label: "Клиенты" },
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
export default function SelectIconOnlyExample() {
|
|
13
|
+
const [icon, setIcon] = React.useState<IconName>("object.truck");
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Select.Root
|
|
17
|
+
label="Иконка раздела"
|
|
18
|
+
value={icon}
|
|
19
|
+
onValueChange={(next) => setIcon(next as IconName)}
|
|
20
|
+
>
|
|
21
|
+
<Select.Trigger>
|
|
22
|
+
<Select.TriggerIcon>
|
|
23
|
+
<Icon name={icon} />
|
|
24
|
+
</Select.TriggerIcon>
|
|
25
|
+
</Select.Trigger>
|
|
26
|
+
<Select.Content>
|
|
27
|
+
{ICONS.map((option) => (
|
|
28
|
+
<Select.Item key={option.value} value={option.value}>
|
|
29
|
+
<Select.ItemIcon>
|
|
30
|
+
<Icon name={option.value} />
|
|
31
|
+
</Select.ItemIcon>
|
|
32
|
+
{option.label}
|
|
33
|
+
</Select.Item>
|
|
34
|
+
))}
|
|
35
|
+
</Select.Content>
|
|
36
|
+
</Select.Root>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** A default field next to a disabled, a loading, an invalid one
|
|
1
|
+
/** A default field next to a disabled, a loading, an invalid one, a list with nothing in it and a field whose focus shows without the ring — `disabled`, `loading`, `invalid`, `labels`, `focusRing`. */
|
|
2
2
|
import { Select } from "prime-ui-kit";
|
|
3
3
|
|
|
4
4
|
const ROLES = [
|
|
@@ -62,6 +62,18 @@ export default function SelectStatesExample() {
|
|
|
62
62
|
</Select.Trigger>
|
|
63
63
|
<Select.Content>{null}</Select.Content>
|
|
64
64
|
</Select.Root>
|
|
65
|
+
<Select.Root label="focusRing={false}" defaultValue="editor" focusRing={false}>
|
|
66
|
+
<Select.Trigger>
|
|
67
|
+
<Select.Value />
|
|
68
|
+
</Select.Trigger>
|
|
69
|
+
<Select.Content>
|
|
70
|
+
{ROLES.map((role) => (
|
|
71
|
+
<Select.Item key={role.value} value={role.value}>
|
|
72
|
+
{role.label}
|
|
73
|
+
</Select.Item>
|
|
74
|
+
))}
|
|
75
|
+
</Select.Content>
|
|
76
|
+
</Select.Root>
|
|
65
77
|
</>
|
|
66
78
|
);
|
|
67
79
|
}
|
|
@@ -198,6 +198,8 @@ Motion: the scrim fades, the sheet slides up over `slow` and down over `base` (`
|
|
|
198
198
|
|---|---|
|
|
199
199
|
| [overview.tsx](examples/overview.tsx) | Actions with an order raised from the bottom edge: a header names the order, a column of actions follows, and each action closes the sheet — `Sheet.Trigger`, `Sheet.Header`, `Sheet.Close`. |
|
|
200
200
|
| [structure.tsx](examples/structure.tsx) | The content alone: a date sheet with no header and no footer, the calendar across its width, named by `aria-label`; a pick or a swipe down closes it — `aria-label`, `Sheet.Body`. |
|
|
201
|
+
| [header-actions.tsx](examples/header-actions.tsx) | The courier is at the door: an icon tile heads the sheet, the payment status and a ⋯ menu sit before the close button, and two equal buttons fill the footer — `Sheet.Icon`, `Sheet.Actions`, `layout`. |
|
|
202
|
+
| [guard.tsx](examples/guard.tsx) | A review form that holds the sheet: after an edit a swipe, the scrim, Escape and Cancel ask before discarding and the footer says so; sending locks every way out — `Sheet.Guard`, `Sheet.Meta`. |
|
|
201
203
|
| [dismiss.tsx](examples/dismiss.tsx) | A handover the courier must answer: no swipe, scrim or Escape closes the sheet, only its two buttons — `closeOnOutsideClick`, `closeOnEscape`. |
|
|
202
204
|
| [controlled-open.tsx](examples/controlled-open.tsx) | The parent owns the state and raises the sheet from a link in the text, without a trigger — `open`, `onOpenChange`. |
|
|
203
205
|
| [in-form.tsx](examples/in-form.tsx) | A short form that needs an explicit submit: the one case for a footer, Cancel and Send under the field, an empty comment keeps the sheet open — `Sheet.Footer`, `error`. |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** A review form that holds the sheet: after an edit a swipe, the scrim, Escape and Cancel ask before discarding and the footer says so; sending locks every way out — `Sheet.Guard`, `Sheet.Meta`. */
|
|
2
|
+
import { Button, Fieldset, Sheet, Textarea } from "prime-ui-kit";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
import styles from "./examples.module.css";
|
|
6
|
+
|
|
7
|
+
/** Pretends to send the review. */
|
|
8
|
+
function sendReview() {
|
|
9
|
+
return new Promise((resolve) => setTimeout(resolve, 1200));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default function SheetGuardExample() {
|
|
13
|
+
const formId = React.useId();
|
|
14
|
+
const [open, setOpen] = React.useState(false);
|
|
15
|
+
const [dirty, setDirty] = React.useState(false);
|
|
16
|
+
const [sending, setSending] = React.useState(false);
|
|
17
|
+
|
|
18
|
+
const submit = async (event: React.FormEvent<HTMLFormElement>) => {
|
|
19
|
+
event.preventDefault();
|
|
20
|
+
setSending(true);
|
|
21
|
+
await sendReview();
|
|
22
|
+
setSending(false);
|
|
23
|
+
setDirty(false);
|
|
24
|
+
setOpen(false);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<Sheet.Root
|
|
29
|
+
open={open}
|
|
30
|
+
onOpenChange={(next) => {
|
|
31
|
+
setOpen(next);
|
|
32
|
+
if (!next) setDirty(false);
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
<Sheet.Trigger>
|
|
36
|
+
<Button.Root variant="soft" tone="neutral">
|
|
37
|
+
Отзыв о доставке
|
|
38
|
+
</Button.Root>
|
|
39
|
+
</Sheet.Trigger>
|
|
40
|
+
<Sheet.Content>
|
|
41
|
+
<Sheet.Guard busy={sending} dirty={dirty} />
|
|
42
|
+
<Sheet.Header>
|
|
43
|
+
<Sheet.Title>Отзыв о доставке</Sheet.Title>
|
|
44
|
+
<Sheet.Description>Заказ № 1042 · курьер Олег Р.</Sheet.Description>
|
|
45
|
+
</Sheet.Header>
|
|
46
|
+
<Sheet.Body>
|
|
47
|
+
<form id={formId} className={styles.form} onSubmit={submit}>
|
|
48
|
+
<Fieldset disabled={sending}>
|
|
49
|
+
<Textarea.Root
|
|
50
|
+
label="Что понравилось или нет"
|
|
51
|
+
name="review"
|
|
52
|
+
placeholder="Привёз вовремя, помог занести коробки"
|
|
53
|
+
onValueChange={() => setDirty(true)}
|
|
54
|
+
/>
|
|
55
|
+
</Fieldset>
|
|
56
|
+
</form>
|
|
57
|
+
</Sheet.Body>
|
|
58
|
+
<Sheet.Footer>
|
|
59
|
+
{dirty ? <Sheet.Meta>Есть несохранённые изменения</Sheet.Meta> : null}
|
|
60
|
+
<Sheet.Close>
|
|
61
|
+
<Button.Root variant="outline" tone="neutral">
|
|
62
|
+
Отмена
|
|
63
|
+
</Button.Root>
|
|
64
|
+
</Sheet.Close>
|
|
65
|
+
<Button.Root type="submit" form={formId} loading={sending} disabled={!dirty}>
|
|
66
|
+
Отправить
|
|
67
|
+
</Button.Root>
|
|
68
|
+
</Sheet.Footer>
|
|
69
|
+
</Sheet.Content>
|
|
70
|
+
</Sheet.Root>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** The courier is at the door: an icon tile heads the sheet, the payment status and a ⋯ menu sit before the close button, and two equal buttons fill the footer — `Sheet.Icon`, `Sheet.Actions`, `layout`. */
|
|
2
|
+
import { Badge, Button, Dropdown, Icon, Sheet, Typography } from "prime-ui-kit";
|
|
3
|
+
|
|
4
|
+
export default function SheetHeaderActionsExample() {
|
|
5
|
+
return (
|
|
6
|
+
<Sheet.Root>
|
|
7
|
+
<Sheet.Trigger>
|
|
8
|
+
<Button.Root variant="soft" tone="neutral">
|
|
9
|
+
Курьер на месте
|
|
10
|
+
</Button.Root>
|
|
11
|
+
</Sheet.Trigger>
|
|
12
|
+
<Sheet.Content>
|
|
13
|
+
<Sheet.Header>
|
|
14
|
+
<Sheet.Icon tone="info">
|
|
15
|
+
<Icon name="object.truck" />
|
|
16
|
+
</Sheet.Icon>
|
|
17
|
+
<Sheet.Title>Курьер у двери</Sheet.Title>
|
|
18
|
+
<Sheet.Description>Заказ № 1042 · 3 коробки</Sheet.Description>
|
|
19
|
+
<Sheet.Actions>
|
|
20
|
+
<Badge.Root color="green">Оплачен</Badge.Root>
|
|
21
|
+
<Dropdown.Root>
|
|
22
|
+
<Dropdown.Trigger>
|
|
23
|
+
<Button.Root variant="ghost" tone="neutral" aria-label="Действия с заказом">
|
|
24
|
+
<Button.Icon>
|
|
25
|
+
<Icon name="action.more" />
|
|
26
|
+
</Button.Icon>
|
|
27
|
+
</Button.Root>
|
|
28
|
+
</Dropdown.Trigger>
|
|
29
|
+
<Dropdown.Content>
|
|
30
|
+
<Dropdown.Item>Позвонить курьеру</Dropdown.Item>
|
|
31
|
+
<Dropdown.Item>Перенести доставку</Dropdown.Item>
|
|
32
|
+
<Dropdown.Separator />
|
|
33
|
+
<Dropdown.Item tone="danger">Отказаться от заказа</Dropdown.Item>
|
|
34
|
+
</Dropdown.Content>
|
|
35
|
+
</Dropdown.Root>
|
|
36
|
+
</Sheet.Actions>
|
|
37
|
+
</Sheet.Header>
|
|
38
|
+
<Sheet.Body>
|
|
39
|
+
<Typography variant="body-m" tone="secondary">
|
|
40
|
+
Проверьте коробки при курьере: после приёмки претензии к упаковке не принимаются.
|
|
41
|
+
</Typography>
|
|
42
|
+
</Sheet.Body>
|
|
43
|
+
<Sheet.Footer layout="fill">
|
|
44
|
+
<Sheet.Close>
|
|
45
|
+
<Button.Root variant="outline" tone="neutral">
|
|
46
|
+
Позже
|
|
47
|
+
</Button.Root>
|
|
48
|
+
</Sheet.Close>
|
|
49
|
+
<Sheet.Close>
|
|
50
|
+
<Button.Root>Принять заказ</Button.Root>
|
|
51
|
+
</Sheet.Close>
|
|
52
|
+
</Sheet.Footer>
|
|
53
|
+
</Sheet.Content>
|
|
54
|
+
</Sheet.Root>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -166,13 +166,14 @@ Controlled: `value` + `onValueChange`. Uncontrolled: `defaultValue` (falls back
|
|
|
166
166
|
| [overview.tsx](examples/overview.tsx) | A labelled slider with its current value — `label`, `showValue`. |
|
|
167
167
|
| [variants.tsx](examples/variants.tsx) | Every fill color; accent by default, semantic tones when the value carries meaning — `tone`. |
|
|
168
168
|
| [sizes.tsx](examples/sizes.tsx) | Every size; the thumb, the label and the value grow with the tier — `size`. |
|
|
169
|
-
| [states.tsx](examples/states.tsx) | The fill at both ends and a disabled
|
|
169
|
+
| [states.tsx](examples/states.tsx) | The fill at both ends, an invalid slider and a disabled one — `invalid`, `disabled`. |
|
|
170
170
|
| [orientation.tsx](examples/orientation.tsx) | Notification levels as a row of upright sliders, minimum at the bottom — `orientation`. |
|
|
171
171
|
| [value-format.tsx](examples/value-format.tsx) | Units in the shown value that are also read by screen readers — `formatValue`, `showValue`. |
|
|
172
172
|
| [range-step.tsx](examples/range-step.tsx) | Own bounds and a coarse or fractional step; a slider without a visible label — `min`, `max`, `step`, `aria-label`. |
|
|
173
173
|
| [hint-and-error.tsx](examples/hint-and-error.tsx) | A slider framed like every field: required marker, a hint, and an error in its place — `required`, `hint`, `error`, `optional`. |
|
|
174
174
|
| [autosave.tsx](examples/autosave.tsx) | A setting saved once the thumb is let go, not on every step: the thumb waits dimmed while it saves, and a value the server refuses glides back — `onCommit`, `hint`, `error`. |
|
|
175
175
|
| [controlled.tsx](examples/controlled.tsx) | The parent owns the value and shares it with a number field for exact entry — `value`, `onValueChange`. |
|
|
176
|
+
| [in-form.tsx](examples/in-form.tsx) | Campaign limits submitted with the form by `name`, a calm note confirms the save — `name`, `label`. |
|
|
176
177
|
|
|
177
178
|
## Mistakes
|
|
178
179
|
- `<Slider.Root>` → the slider is a single export: `<Slider />`.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** Campaign limits submitted with the form by `name`, a calm note confirms the save — `name`, `label`. */
|
|
2
|
+
import { Button, Slider, Typography } from "prime-ui-kit";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
import styles from "./examples.module.css";
|
|
6
|
+
|
|
7
|
+
export default function SliderInFormExample() {
|
|
8
|
+
const [saved, setSaved] = React.useState<string>();
|
|
9
|
+
|
|
10
|
+
const submit = (event: React.FormEvent<HTMLFormElement>) => {
|
|
11
|
+
event.preventDefault();
|
|
12
|
+
const data = new FormData(event.currentTarget);
|
|
13
|
+
setSaved(
|
|
14
|
+
`Сохранено: показов в день — ${data.get("dailyCap")}, ставка — ${data.get("bidShare")}%.`,
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<form className={styles.column} noValidate onSubmit={submit}>
|
|
20
|
+
<Slider
|
|
21
|
+
label="Показов одному клиенту в день"
|
|
22
|
+
name="dailyCap"
|
|
23
|
+
min={1}
|
|
24
|
+
max={10}
|
|
25
|
+
defaultValue={3}
|
|
26
|
+
showValue
|
|
27
|
+
onValueChange={() => setSaved(undefined)}
|
|
28
|
+
/>
|
|
29
|
+
<Slider
|
|
30
|
+
label="Доля бюджета на ставки, %"
|
|
31
|
+
name="bidShare"
|
|
32
|
+
step={5}
|
|
33
|
+
defaultValue={40}
|
|
34
|
+
showValue
|
|
35
|
+
onValueChange={() => setSaved(undefined)}
|
|
36
|
+
/>
|
|
37
|
+
<div className={styles.actions}>
|
|
38
|
+
<Button.Root type="submit">Сохранить лимиты</Button.Root>
|
|
39
|
+
{saved ? (
|
|
40
|
+
<Typography as="p" variant="body-s" tone="secondary" role="status">
|
|
41
|
+
{saved}
|
|
42
|
+
</Typography>
|
|
43
|
+
) : null}
|
|
44
|
+
</div>
|
|
45
|
+
</form>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** The fill at both ends and a disabled
|
|
1
|
+
/** The fill at both ends, an invalid slider and a disabled one — `invalid`, `disabled`. */
|
|
2
2
|
import { Slider } from "prime-ui-kit";
|
|
3
3
|
|
|
4
4
|
export default function SliderStatesExample() {
|
|
@@ -10,6 +10,9 @@ export default function SliderStatesExample() {
|
|
|
10
10
|
<div>
|
|
11
11
|
<Slider label="max" showValue defaultValue={100} />
|
|
12
12
|
</div>
|
|
13
|
+
<div>
|
|
14
|
+
<Slider label="invalid" showValue defaultValue={90} invalid />
|
|
15
|
+
</div>
|
|
13
16
|
<div>
|
|
14
17
|
<Slider label="disabled" showValue defaultValue={35} disabled />
|
|
15
18
|
</div>
|
|
@@ -213,7 +213,7 @@ same height and type.
|
|
|
213
213
|
| [overview.tsx](examples/overview.tsx) | Filters above a request list: the filter button and the search, applied filters as tags, rows narrowed by the value and the text — `fields`, `value`, `search`, `matchesSmartFilter`. |
|
|
214
214
|
| [sizes.tsx](examples/sizes.tsx) | Every size tier: the filter button, the search, the tags and the panel follow one tier — `size`. |
|
|
215
215
|
| [many-values.tsx](examples/many-values.tsx) | An open set of twenty services, degraded ones marked with an icon, collapsed after eight; typing narrows the panel and marks the match in accent — `finite`, `icon`, `collapsedLimit`. |
|
|
216
|
-
| [ranges.tsx](examples/ranges.tsx) | Deals narrowed by an amount from–to and a period from the calendar; each range is one readable chip — `kind`, `formatValue`, `matchesSmartFilter`. |
|
|
216
|
+
| [ranges.tsx](examples/ranges.tsx) | Deals narrowed by an amount from–to and a period from the calendar; each range is one readable chip, and the bounds go to the server as from / to parameters — `kind`, `formatValue`, `matchesSmartFilter`, `isSmartFilterRange`. |
|
|
217
217
|
| [single-value.tsx](examples/single-value.tsx) | For an API that takes one value per field: the filter button without a search, a press picks only that value and nothing can be hidden — `searchable`, `multiple`. |
|
|
218
218
|
| [option-groups.tsx](examples/option-groups.tsx) | Values of different kinds in one field: owner types and people under their own headings — `options`, `group`. |
|
|
219
219
|
| [controlled.tsx](examples/controlled.tsx) | A saved view sets the value from outside; the selection is read back as the list to ask the server for — `value`, `onValueChange`, `resolveSmartFilterValues`. |
|
|
@@ -30,13 +30,13 @@ export default function SmartFilterControlledExample() {
|
|
|
30
30
|
<SmartFilter.Chips />
|
|
31
31
|
</SmartFilter.Root>
|
|
32
32
|
<div className={styles.views}>
|
|
33
|
-
<Button.Root variant="soft" tone="neutral"
|
|
33
|
+
<Button.Root variant="soft" tone="neutral" onClick={() => setValue(ONLY_PUT)}>
|
|
34
34
|
Только PUT
|
|
35
35
|
</Button.Root>
|
|
36
|
-
<Button.Root variant="soft" tone="neutral"
|
|
36
|
+
<Button.Root variant="soft" tone="neutral" onClick={() => setValue(NO_READS)}>
|
|
37
37
|
Без GET и POST
|
|
38
38
|
</Button.Root>
|
|
39
|
-
<Button.Root variant="ghost" tone="neutral"
|
|
39
|
+
<Button.Root variant="ghost" tone="neutral" onClick={() => setValue({})}>
|
|
40
40
|
Сбросить
|
|
41
41
|
</Button.Root>
|
|
42
42
|
</div>
|