prime-ui-kit 0.9.2 → 0.10.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 +18 -9
- package/THIRD_PARTY_NOTICES +76 -0
- package/dist/chunks/{chunk-ZEFCDEEQ.js → chunk-4TRNUP45.js} +1085 -526
- package/dist/chunks/chunk-EJ2ZVQYL.js +5805 -0
- package/dist/chunks/chunk-GFKDZFQR.js +1208 -0
- package/dist/chunks/{chunk-LXGRKN34.js → chunk-K4FACFQ2.js} +776 -484
- package/dist/chunks/{chunk-IQELQNMR.js → chunk-T7CLQXGB.js} +20 -5
- package/dist/color-picker.js +3 -2
- package/dist/components/button/Button.d.ts +24 -4
- package/dist/components/card/Card.d.ts +1 -1
- package/dist/components/code-block/CodeBlock.d.ts +1 -1
- package/dist/components/color-picker/ColorPicker.d.ts +1 -1
- package/dist/components/data-table/Row.d.ts +3 -1
- package/dist/components/data-table/rows.d.ts +4 -0
- package/dist/components/digit-input/DigitInput.d.ts +6 -1
- package/dist/components/index.d.ts +4 -1
- package/dist/components/input/Input.d.ts +16 -1
- package/dist/components/input/passwordStrength.d.ts +9 -0
- package/dist/components/progress-bar/ProgressBar.d.ts +16 -1
- package/dist/components/sparkline/Sparkline.d.ts +26 -0
- package/dist/hooks/useEdgeOverflow.d.ts +4 -0
- package/dist/icon-set.d.ts +501 -0
- package/dist/icons/Icon.d.ts +10 -18
- package/dist/icons/glyph.d.ts +40 -0
- package/dist/icons/glyphs/a-arrow-down.d.ts +2 -0
- package/dist/icons/glyphs/a-arrow-up.d.ts +2 -0
- package/dist/icons/glyphs/accessibility.d.ts +2 -0
- package/dist/icons/glyphs/activity.d.ts +2 -0
- package/dist/icons/glyphs/air-vent.d.ts +2 -0
- package/dist/icons/glyphs/airplay.d.ts +2 -0
- package/dist/icons/glyphs/alarm-clock-check.d.ts +2 -0
- package/dist/icons/glyphs/alarm-clock-minus.d.ts +2 -0
- package/dist/icons/glyphs/alarm-clock-plus.d.ts +2 -0
- package/dist/icons/glyphs/alarm-clock.d.ts +2 -0
- package/dist/icons/glyphs/alarm-smoke.d.ts +2 -0
- package/dist/icons/glyphs/align-horizontal-space-around.d.ts +2 -0
- package/dist/icons/glyphs/align-vertical-space-around.d.ts +2 -0
- package/dist/icons/glyphs/ambulance.d.ts +2 -0
- package/dist/icons/glyphs/angry.d.ts +2 -0
- package/dist/icons/glyphs/annoyed.d.ts +2 -0
- package/dist/icons/glyphs/archive.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-down-dash.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-down.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-left-dash.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-left.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-right-dash.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-right.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-up-dash.d.ts +2 -0
- package/dist/icons/glyphs/arrow-big-up.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-0-1.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-1-0.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-a-z.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-left.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-right.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down-z-a.d.ts +2 -0
- package/dist/icons/glyphs/arrow-down.d.ts +2 -0
- package/dist/icons/glyphs/arrow-left.d.ts +2 -0
- package/dist/icons/glyphs/arrow-right.d.ts +2 -0
- package/dist/icons/glyphs/arrow-up-down.d.ts +2 -0
- package/dist/icons/glyphs/arrow-up-left.d.ts +2 -0
- package/dist/icons/glyphs/arrow-up-right.d.ts +2 -0
- package/dist/icons/glyphs/arrow-up.d.ts +2 -0
- package/dist/icons/glyphs/at-sign.d.ts +2 -0
- package/dist/icons/glyphs/atom.d.ts +2 -0
- package/dist/icons/glyphs/audio-lines.d.ts +2 -0
- package/dist/icons/glyphs/axe.d.ts +2 -0
- package/dist/icons/glyphs/badge-alert.d.ts +2 -0
- package/dist/icons/glyphs/badge-percent.d.ts +2 -0
- package/dist/icons/glyphs/ban.d.ts +2 -0
- package/dist/icons/glyphs/banana.d.ts +2 -0
- package/dist/icons/glyphs/battery-charging.d.ts +2 -0
- package/dist/icons/glyphs/battery-full.d.ts +2 -0
- package/dist/icons/glyphs/battery-low.d.ts +2 -0
- package/dist/icons/glyphs/battery-medium.d.ts +2 -0
- package/dist/icons/glyphs/battery-plus.d.ts +2 -0
- package/dist/icons/glyphs/battery-warning.d.ts +2 -0
- package/dist/icons/glyphs/battery.d.ts +2 -0
- package/dist/icons/glyphs/bell-electric.d.ts +2 -0
- package/dist/icons/glyphs/bell.d.ts +2 -0
- package/dist/icons/glyphs/biceps-flexed.d.ts +2 -0
- package/dist/icons/glyphs/binary.d.ts +2 -0
- package/dist/icons/glyphs/blocks.d.ts +2 -0
- package/dist/icons/glyphs/bluetooth-connected.d.ts +2 -0
- package/dist/icons/glyphs/bluetooth-off.d.ts +2 -0
- package/dist/icons/glyphs/bluetooth-searching.d.ts +2 -0
- package/dist/icons/glyphs/bluetooth.d.ts +2 -0
- package/dist/icons/glyphs/bold.d.ts +2 -0
- package/dist/icons/glyphs/bone.d.ts +2 -0
- package/dist/icons/glyphs/book-open.d.ts +2 -0
- package/dist/icons/glyphs/book-text.d.ts +2 -0
- package/dist/icons/glyphs/bookmark-check.d.ts +2 -0
- package/dist/icons/glyphs/bookmark-minus.d.ts +2 -0
- package/dist/icons/glyphs/bookmark-plus.d.ts +2 -0
- package/dist/icons/glyphs/bookmark-x.d.ts +2 -0
- package/dist/icons/glyphs/bookmark.d.ts +2 -0
- package/dist/icons/glyphs/bot-message-square.d.ts +2 -0
- package/dist/icons/glyphs/bot.d.ts +2 -0
- package/dist/icons/glyphs/box.d.ts +2 -0
- package/dist/icons/glyphs/boxes.d.ts +2 -0
- package/dist/icons/glyphs/brain.d.ts +2 -0
- package/dist/icons/glyphs/briefcase-business.d.ts +2 -0
- package/dist/icons/glyphs/calendar-check-2.d.ts +2 -0
- package/dist/icons/glyphs/calendar-check.d.ts +2 -0
- package/dist/icons/glyphs/calendar-cog.d.ts +2 -0
- package/dist/icons/glyphs/calendar-days.d.ts +2 -0
- package/dist/icons/glyphs/calendar.d.ts +2 -0
- package/dist/icons/glyphs/car.d.ts +2 -0
- package/dist/icons/glyphs/cast.d.ts +2 -0
- package/dist/icons/glyphs/cctv.d.ts +2 -0
- package/dist/icons/glyphs/chart-bar-decreasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-bar-increasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-column-decreasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-column-increasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-column.d.ts +2 -0
- package/dist/icons/glyphs/chart-line.d.ts +2 -0
- package/dist/icons/glyphs/chart-no-axes-column-decreasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-no-axes-column-increasing.d.ts +2 -0
- package/dist/icons/glyphs/chart-pie.d.ts +2 -0
- package/dist/icons/glyphs/chart-scatter.d.ts +2 -0
- package/dist/icons/glyphs/chart-spline.d.ts +2 -0
- package/dist/icons/glyphs/check-check.d.ts +2 -0
- package/dist/icons/glyphs/check.d.ts +2 -0
- package/dist/icons/glyphs/chess-bishop.d.ts +2 -0
- package/dist/icons/glyphs/chess-king.d.ts +2 -0
- package/dist/icons/glyphs/chess-knight.d.ts +2 -0
- package/dist/icons/glyphs/chess-pawn.d.ts +2 -0
- package/dist/icons/glyphs/chevron-down.d.ts +2 -0
- package/dist/icons/glyphs/chevron-first.d.ts +2 -0
- package/dist/icons/glyphs/chevron-left.d.ts +2 -0
- package/dist/icons/glyphs/chevron-right.d.ts +2 -0
- package/dist/icons/glyphs/chevron-up.d.ts +2 -0
- package/dist/icons/glyphs/chevrons-down-up.d.ts +2 -0
- package/dist/icons/glyphs/chevrons-left-right.d.ts +2 -0
- package/dist/icons/glyphs/chevrons-left.d.ts +2 -0
- package/dist/icons/glyphs/chevrons-right-left.d.ts +2 -0
- package/dist/icons/glyphs/chevrons-up-down.d.ts +2 -0
- package/dist/icons/glyphs/chromium.d.ts +2 -0
- package/dist/icons/glyphs/cigarette-off.d.ts +2 -0
- package/dist/icons/glyphs/cigarette.d.ts +2 -0
- package/dist/icons/glyphs/circle-check.d.ts +2 -0
- package/dist/icons/glyphs/circle-chevron-down.d.ts +2 -0
- package/dist/icons/glyphs/circle-chevron-left.d.ts +2 -0
- package/dist/icons/glyphs/circle-chevron-right.d.ts +2 -0
- package/dist/icons/glyphs/circle-chevron-up.d.ts +2 -0
- package/dist/icons/glyphs/circle-dashed.d.ts +2 -0
- package/dist/icons/glyphs/circle-dollar-sign.d.ts +2 -0
- package/dist/icons/glyphs/circle-gauge.d.ts +2 -0
- package/dist/icons/glyphs/circle-question-mark.d.ts +2 -0
- package/dist/icons/glyphs/circle-x.d.ts +2 -0
- package/dist/icons/glyphs/circle.d.ts +2 -0
- package/dist/icons/glyphs/clapperboard.d.ts +2 -0
- package/dist/icons/glyphs/clipboard-check.d.ts +2 -0
- package/dist/icons/glyphs/clock.d.ts +2 -0
- package/dist/icons/glyphs/cloud-backup.d.ts +2 -0
- package/dist/icons/glyphs/cloud-cog.d.ts +2 -0
- package/dist/icons/glyphs/cloud-download.d.ts +2 -0
- package/dist/icons/glyphs/cloud-lightning.d.ts +2 -0
- package/dist/icons/glyphs/cloud-off.d.ts +2 -0
- package/dist/icons/glyphs/cloud-rain-wind.d.ts +2 -0
- package/dist/icons/glyphs/cloud-rain.d.ts +2 -0
- package/dist/icons/glyphs/cloud-snow.d.ts +2 -0
- package/dist/icons/glyphs/cloud-sun.d.ts +2 -0
- package/dist/icons/glyphs/cloud-sync.d.ts +2 -0
- package/dist/icons/glyphs/cloud-upload.d.ts +2 -0
- package/dist/icons/glyphs/code-xml.d.ts +2 -0
- package/dist/icons/glyphs/coffee.d.ts +2 -0
- package/dist/icons/glyphs/cog.d.ts +2 -0
- package/dist/icons/glyphs/compass.d.ts +2 -0
- package/dist/icons/glyphs/concierge-bell.d.ts +2 -0
- package/dist/icons/glyphs/construction.d.ts +2 -0
- package/dist/icons/glyphs/contrast.d.ts +2 -0
- package/dist/icons/glyphs/cooking-pot.d.ts +2 -0
- package/dist/icons/glyphs/copy.d.ts +2 -0
- package/dist/icons/glyphs/corner-down-left.d.ts +2 -0
- package/dist/icons/glyphs/corner-down-right.d.ts +2 -0
- package/dist/icons/glyphs/corner-left-down.d.ts +2 -0
- package/dist/icons/glyphs/corner-left-up.d.ts +2 -0
- package/dist/icons/glyphs/corner-right-down.d.ts +2 -0
- package/dist/icons/glyphs/corner-right-up.d.ts +2 -0
- package/dist/icons/glyphs/corner-up-left.d.ts +2 -0
- package/dist/icons/glyphs/corner-up-right.d.ts +2 -0
- package/dist/icons/glyphs/cpu.d.ts +2 -0
- package/dist/icons/glyphs/credit-card.d.ts +2 -0
- package/dist/icons/glyphs/cup-soda.d.ts +2 -0
- package/dist/icons/glyphs/database-backup.d.ts +2 -0
- package/dist/icons/glyphs/delete.d.ts +2 -0
- package/dist/icons/glyphs/disc-3.d.ts +2 -0
- package/dist/icons/glyphs/dollar-sign.d.ts +2 -0
- package/dist/icons/glyphs/download.d.ts +2 -0
- package/dist/icons/glyphs/dribbble.d.ts +2 -0
- package/dist/icons/glyphs/droplet.d.ts +2 -0
- package/dist/icons/glyphs/drum.d.ts +2 -0
- package/dist/icons/glyphs/earth.d.ts +2 -0
- package/dist/icons/glyphs/ellipsis.d.ts +2 -0
- package/dist/icons/glyphs/euro.d.ts +2 -0
- package/dist/icons/glyphs/ev-charger.d.ts +2 -0
- package/dist/icons/glyphs/expand.d.ts +2 -0
- package/dist/icons/glyphs/external-link.d.ts +2 -0
- package/dist/icons/glyphs/eye-off.d.ts +2 -0
- package/dist/icons/glyphs/eye.d.ts +2 -0
- package/dist/icons/glyphs/facebook.d.ts +2 -0
- package/dist/icons/glyphs/fan.d.ts +2 -0
- package/dist/icons/glyphs/feather.d.ts +2 -0
- package/dist/icons/glyphs/figma.d.ts +2 -0
- package/dist/icons/glyphs/file-chart-line.d.ts +2 -0
- package/dist/icons/glyphs/file-check-corner.d.ts +2 -0
- package/dist/icons/glyphs/file-check.d.ts +2 -0
- package/dist/icons/glyphs/file-cog.d.ts +2 -0
- package/dist/icons/glyphs/file-pen-line.d.ts +2 -0
- package/dist/icons/glyphs/file-stack.d.ts +2 -0
- package/dist/icons/glyphs/file-text.d.ts +2 -0
- package/dist/icons/glyphs/fingerprint-pattern.d.ts +2 -0
- package/dist/icons/glyphs/fish-symbol.d.ts +2 -0
- package/dist/icons/glyphs/flame.d.ts +2 -0
- package/dist/icons/glyphs/flask-conical.d.ts +2 -0
- package/dist/icons/glyphs/folder-archive.d.ts +2 -0
- package/dist/icons/glyphs/folder-check.d.ts +2 -0
- package/dist/icons/glyphs/folder-clock.d.ts +2 -0
- package/dist/icons/glyphs/folder-code.d.ts +2 -0
- package/dist/icons/glyphs/folder-cog.d.ts +2 -0
- package/dist/icons/glyphs/folder-dot.d.ts +2 -0
- package/dist/icons/glyphs/folder-down.d.ts +2 -0
- package/dist/icons/glyphs/folder-git-2.d.ts +2 -0
- package/dist/icons/glyphs/folder-git.d.ts +2 -0
- package/dist/icons/glyphs/folder-heart.d.ts +2 -0
- package/dist/icons/glyphs/folder-input.d.ts +2 -0
- package/dist/icons/glyphs/folder-kanban.d.ts +2 -0
- package/dist/icons/glyphs/folder-key.d.ts +2 -0
- package/dist/icons/glyphs/folder-lock.d.ts +2 -0
- package/dist/icons/glyphs/folder-minus.d.ts +2 -0
- package/dist/icons/glyphs/folder-open.d.ts +2 -0
- package/dist/icons/glyphs/folder-output.d.ts +2 -0
- package/dist/icons/glyphs/folder-plus.d.ts +2 -0
- package/dist/icons/glyphs/folder-root.d.ts +2 -0
- package/dist/icons/glyphs/folder-sync.d.ts +2 -0
- package/dist/icons/glyphs/folder-tree.d.ts +2 -0
- package/dist/icons/glyphs/folder-up.d.ts +2 -0
- package/dist/icons/glyphs/folder-x.d.ts +2 -0
- package/dist/icons/glyphs/folders.d.ts +2 -0
- package/dist/icons/glyphs/frame.d.ts +2 -0
- package/dist/icons/glyphs/frown.d.ts +2 -0
- package/dist/icons/glyphs/gallery-horizontal-end.d.ts +2 -0
- package/dist/icons/glyphs/gallery-thumbnails.d.ts +2 -0
- package/dist/icons/glyphs/gallery-vertical-end.d.ts +2 -0
- package/dist/icons/glyphs/gauge.d.ts +2 -0
- package/dist/icons/glyphs/gavel.d.ts +2 -0
- package/dist/icons/glyphs/georgian-lari.d.ts +2 -0
- package/dist/icons/glyphs/git-branch.d.ts +2 -0
- package/dist/icons/glyphs/git-commit-horizontal.d.ts +2 -0
- package/dist/icons/glyphs/git-commit-vertical.d.ts +2 -0
- package/dist/icons/glyphs/git-compare-arrows.d.ts +2 -0
- package/dist/icons/glyphs/git-compare.d.ts +2 -0
- package/dist/icons/glyphs/git-fork.d.ts +2 -0
- package/dist/icons/glyphs/git-graph.d.ts +2 -0
- package/dist/icons/glyphs/git-merge.d.ts +2 -0
- package/dist/icons/glyphs/git-pull-request-closed.d.ts +2 -0
- package/dist/icons/glyphs/git-pull-request-create.d.ts +2 -0
- package/dist/icons/glyphs/git-pull-request.d.ts +2 -0
- package/dist/icons/glyphs/github.d.ts +2 -0
- package/dist/icons/glyphs/gitlab.d.ts +2 -0
- package/dist/icons/glyphs/graduation-cap.d.ts +2 -0
- package/dist/icons/glyphs/grip-horizontal.d.ts +2 -0
- package/dist/icons/glyphs/grip-vertical.d.ts +2 -0
- package/dist/icons/glyphs/grip.d.ts +2 -0
- package/dist/icons/glyphs/hammer.d.ts +2 -0
- package/dist/icons/glyphs/hand-coins.d.ts +2 -0
- package/dist/icons/glyphs/hand-fist.d.ts +2 -0
- package/dist/icons/glyphs/hand-grab.d.ts +2 -0
- package/dist/icons/glyphs/hand-heart.d.ts +2 -0
- package/dist/icons/glyphs/hand-helping.d.ts +2 -0
- package/dist/icons/glyphs/hand-metal.d.ts +2 -0
- package/dist/icons/glyphs/hand.d.ts +2 -0
- package/dist/icons/glyphs/hard-drive-download.d.ts +2 -0
- package/dist/icons/glyphs/hard-drive-upload.d.ts +2 -0
- package/dist/icons/glyphs/hard-drive.d.ts +2 -0
- package/dist/icons/glyphs/hat-glasses.d.ts +2 -0
- package/dist/icons/glyphs/heart-handshake.d.ts +2 -0
- package/dist/icons/glyphs/heart-pulse.d.ts +2 -0
- package/dist/icons/glyphs/heart.d.ts +2 -0
- package/dist/icons/glyphs/history.d.ts +2 -0
- package/dist/icons/glyphs/hourglass.d.ts +2 -0
- package/dist/icons/glyphs/house.d.ts +2 -0
- package/dist/icons/glyphs/id-card.d.ts +2 -0
- package/dist/icons/glyphs/image.d.ts +2 -0
- package/dist/icons/glyphs/inbox.d.ts +2 -0
- package/dist/icons/glyphs/indian-rupee.d.ts +2 -0
- package/dist/icons/glyphs/info.d.ts +2 -0
- package/dist/icons/glyphs/instagram.d.ts +2 -0
- package/dist/icons/glyphs/italic.d.ts +2 -0
- package/dist/icons/glyphs/japanese-yen.d.ts +2 -0
- package/dist/icons/glyphs/key-round.d.ts +2 -0
- package/dist/icons/glyphs/key-square.d.ts +2 -0
- package/dist/icons/glyphs/key.d.ts +2 -0
- package/dist/icons/glyphs/keyboard.d.ts +2 -0
- package/dist/icons/glyphs/languages.d.ts +2 -0
- package/dist/icons/glyphs/laptop-minimal-check.d.ts +2 -0
- package/dist/icons/glyphs/laugh.d.ts +2 -0
- package/dist/icons/glyphs/layers.d.ts +2 -0
- package/dist/icons/glyphs/layout-dashboard.d.ts +2 -0
- package/dist/icons/glyphs/layout-grid.d.ts +2 -0
- package/dist/icons/glyphs/layout-panel-top.d.ts +2 -0
- package/dist/icons/glyphs/leaf.d.ts +2 -0
- package/dist/icons/glyphs/leafy-green.d.ts +2 -0
- package/dist/icons/glyphs/link-2.d.ts +2 -0
- package/dist/icons/glyphs/link.d.ts +2 -0
- package/dist/icons/glyphs/linkedin.d.ts +2 -0
- package/dist/icons/glyphs/list-filter.d.ts +2 -0
- package/dist/icons/glyphs/list-todo.d.ts +2 -0
- package/dist/icons/glyphs/list.d.ts +2 -0
- package/dist/icons/glyphs/loader-circle.d.ts +2 -0
- package/dist/icons/glyphs/loader-pinwheel.d.ts +2 -0
- package/dist/icons/glyphs/loader.d.ts +2 -0
- package/dist/icons/glyphs/lock-keyhole-open.d.ts +2 -0
- package/dist/icons/glyphs/lock-keyhole.d.ts +2 -0
- package/dist/icons/glyphs/lock-open.d.ts +2 -0
- package/dist/icons/glyphs/lock.d.ts +2 -0
- package/dist/icons/glyphs/log-in.d.ts +2 -0
- package/dist/icons/glyphs/log-out.d.ts +2 -0
- package/dist/icons/glyphs/mail-check.d.ts +2 -0
- package/dist/icons/glyphs/mail.d.ts +2 -0
- package/dist/icons/glyphs/mailbox.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-check-inside.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-check.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-house.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-minus-inside.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-minus.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-off.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-plus-inside.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-plus.d.ts +2 -0
- package/dist/icons/glyphs/map-pin-x-inside.d.ts +2 -0
- package/dist/icons/glyphs/map-pin.d.ts +2 -0
- package/dist/icons/glyphs/maximize-2.d.ts +2 -0
- package/dist/icons/glyphs/maximize.d.ts +2 -0
- package/dist/icons/glyphs/meh.d.ts +2 -0
- package/dist/icons/glyphs/menu.d.ts +2 -0
- package/dist/icons/glyphs/message-circle-check.d.ts +2 -0
- package/dist/icons/glyphs/message-circle-dashed.d.ts +2 -0
- package/dist/icons/glyphs/message-circle-more.d.ts +2 -0
- package/dist/icons/glyphs/message-circle-plus.d.ts +2 -0
- package/dist/icons/glyphs/message-circle-x.d.ts +2 -0
- package/dist/icons/glyphs/message-circle.d.ts +2 -0
- package/dist/icons/glyphs/message-square-check.d.ts +2 -0
- package/dist/icons/glyphs/message-square-dashed.d.ts +2 -0
- package/dist/icons/glyphs/message-square-more.d.ts +2 -0
- package/dist/icons/glyphs/message-square-plus.d.ts +2 -0
- package/dist/icons/glyphs/message-square-x.d.ts +2 -0
- package/dist/icons/glyphs/message-square.d.ts +2 -0
- package/dist/icons/glyphs/mic-off.d.ts +2 -0
- package/dist/icons/glyphs/mic.d.ts +2 -0
- package/dist/icons/glyphs/minimize.d.ts +2 -0
- package/dist/icons/glyphs/minus.d.ts +2 -0
- package/dist/icons/glyphs/monitor-check.d.ts +2 -0
- package/dist/icons/glyphs/monitor-cog.d.ts +2 -0
- package/dist/icons/glyphs/monitor.d.ts +2 -0
- package/dist/icons/glyphs/moon.d.ts +2 -0
- package/dist/icons/glyphs/mouse-pointer-click.d.ts +2 -0
- package/dist/icons/glyphs/nfc.d.ts +2 -0
- package/dist/icons/glyphs/package.d.ts +2 -0
- package/dist/icons/glyphs/palette.d.ts +2 -0
- package/dist/icons/glyphs/panel-left-close.d.ts +2 -0
- package/dist/icons/glyphs/panel-left-open.d.ts +2 -0
- package/dist/icons/glyphs/panel-right-open.d.ts +2 -0
- package/dist/icons/glyphs/paperclip.d.ts +2 -0
- package/dist/icons/glyphs/party-popper.d.ts +2 -0
- package/dist/icons/glyphs/pause.d.ts +2 -0
- package/dist/icons/glyphs/pen-tool.d.ts +2 -0
- package/dist/icons/glyphs/philippine-peso.d.ts +2 -0
- package/dist/icons/glyphs/phone-call.d.ts +2 -0
- package/dist/icons/glyphs/phone-forwarded.d.ts +2 -0
- package/dist/icons/glyphs/phone-incoming.d.ts +2 -0
- package/dist/icons/glyphs/phone-missed.d.ts +2 -0
- package/dist/icons/glyphs/phone-off.d.ts +2 -0
- package/dist/icons/glyphs/phone.d.ts +2 -0
- package/dist/icons/glyphs/pickaxe.d.ts +2 -0
- package/dist/icons/glyphs/pipette.d.ts +2 -0
- package/dist/icons/glyphs/plane-landing.d.ts +2 -0
- package/dist/icons/glyphs/plane-takeoff.d.ts +2 -0
- package/dist/icons/glyphs/plane.d.ts +2 -0
- package/dist/icons/glyphs/play.d.ts +2 -0
- package/dist/icons/glyphs/plug-zap.d.ts +2 -0
- package/dist/icons/glyphs/plus.d.ts +2 -0
- package/dist/icons/glyphs/pound-sterling.d.ts +2 -0
- package/dist/icons/glyphs/projector.d.ts +2 -0
- package/dist/icons/glyphs/rabbit.d.ts +2 -0
- package/dist/icons/glyphs/radio-tower.d.ts +2 -0
- package/dist/icons/glyphs/radio.d.ts +2 -0
- package/dist/icons/glyphs/receipt-cent.d.ts +2 -0
- package/dist/icons/glyphs/receipt-euro.d.ts +2 -0
- package/dist/icons/glyphs/receipt-indian-rupee.d.ts +2 -0
- package/dist/icons/glyphs/receipt-japanese-yen.d.ts +2 -0
- package/dist/icons/glyphs/receipt-pound-sterling.d.ts +2 -0
- package/dist/icons/glyphs/receipt-russian-ruble.d.ts +2 -0
- package/dist/icons/glyphs/receipt-swiss-franc.d.ts +2 -0
- package/dist/icons/glyphs/receipt-text.d.ts +2 -0
- package/dist/icons/glyphs/receipt-turkish-lira.d.ts +2 -0
- package/dist/icons/glyphs/receipt.d.ts +2 -0
- package/dist/icons/glyphs/redo-dot.d.ts +2 -0
- package/dist/icons/glyphs/redo.d.ts +2 -0
- package/dist/icons/glyphs/refresh-ccw-dot.d.ts +2 -0
- package/dist/icons/glyphs/refresh-ccw.d.ts +2 -0
- package/dist/icons/glyphs/refresh-cw-off.d.ts +2 -0
- package/dist/icons/glyphs/refresh-cw.d.ts +2 -0
- package/dist/icons/glyphs/rocket.d.ts +2 -0
- package/dist/icons/glyphs/rocking-chair.d.ts +2 -0
- package/dist/icons/glyphs/roller-coaster.d.ts +2 -0
- package/dist/icons/glyphs/rotate-ccw.d.ts +2 -0
- package/dist/icons/glyphs/rotate-cw.d.ts +2 -0
- package/dist/icons/glyphs/route.d.ts +2 -0
- package/dist/icons/glyphs/router.d.ts +2 -0
- package/dist/icons/glyphs/russian-ruble.d.ts +2 -0
- package/dist/icons/glyphs/satellite-dish.d.ts +2 -0
- package/dist/icons/glyphs/saudi-riyal.d.ts +2 -0
- package/dist/icons/glyphs/scan-face.d.ts +2 -0
- package/dist/icons/glyphs/scan-text.d.ts +2 -0
- package/dist/icons/glyphs/search.d.ts +2 -0
- package/dist/icons/glyphs/send.d.ts +2 -0
- package/dist/icons/glyphs/server-cog.d.ts +2 -0
- package/dist/icons/glyphs/server-crash.d.ts +2 -0
- package/dist/icons/glyphs/server.d.ts +2 -0
- package/dist/icons/glyphs/settings.d.ts +2 -0
- package/dist/icons/glyphs/shield-check.d.ts +2 -0
- package/dist/icons/glyphs/ship-wheel.d.ts +2 -0
- package/dist/icons/glyphs/ship.d.ts +2 -0
- package/dist/icons/glyphs/shopping-cart.d.ts +2 -0
- package/dist/icons/glyphs/shower-head.d.ts +2 -0
- package/dist/icons/glyphs/shredder.d.ts +2 -0
- package/dist/icons/glyphs/shrink.d.ts +2 -0
- package/dist/icons/glyphs/sliders-horizontal.d.ts +2 -0
- package/dist/icons/glyphs/smartphone-charging.d.ts +2 -0
- package/dist/icons/glyphs/smartphone-nfc.d.ts +2 -0
- package/dist/icons/glyphs/smartphone.d.ts +2 -0
- package/dist/icons/glyphs/smile-plus.d.ts +2 -0
- package/dist/icons/glyphs/smile.d.ts +2 -0
- package/dist/icons/glyphs/snowflake.d.ts +2 -0
- package/dist/icons/glyphs/soup.d.ts +2 -0
- package/dist/icons/glyphs/sparkles.d.ts +2 -0
- package/dist/icons/glyphs/spray-can.d.ts +2 -0
- package/dist/icons/glyphs/square-activity.d.ts +2 -0
- package/dist/icons/glyphs/square-arrow-down.d.ts +2 -0
- package/dist/icons/glyphs/square-arrow-left.d.ts +2 -0
- package/dist/icons/glyphs/square-arrow-right.d.ts +2 -0
- package/dist/icons/glyphs/square-arrow-up.d.ts +2 -0
- package/dist/icons/glyphs/square-chevron-down.d.ts +2 -0
- package/dist/icons/glyphs/square-chevron-left.d.ts +2 -0
- package/dist/icons/glyphs/square-chevron-right.d.ts +2 -0
- package/dist/icons/glyphs/square-chevron-up.d.ts +2 -0
- package/dist/icons/glyphs/square-pen.d.ts +2 -0
- package/dist/icons/glyphs/square-stack.d.ts +2 -0
- package/dist/icons/glyphs/stamp.d.ts +2 -0
- package/dist/icons/glyphs/stethoscope.d.ts +2 -0
- package/dist/icons/glyphs/sun-dim.d.ts +2 -0
- package/dist/icons/glyphs/sun-medium.d.ts +2 -0
- package/dist/icons/glyphs/sun-moon.d.ts +2 -0
- package/dist/icons/glyphs/sun.d.ts +2 -0
- package/dist/icons/glyphs/sunset.d.ts +2 -0
- package/dist/icons/glyphs/swiss-franc.d.ts +2 -0
- package/dist/icons/glyphs/switch-camera.d.ts +2 -0
- package/dist/icons/glyphs/syringe.d.ts +2 -0
- package/dist/icons/glyphs/tablet.d.ts +2 -0
- package/dist/icons/glyphs/telescope.d.ts +2 -0
- package/dist/icons/glyphs/terminal.d.ts +2 -0
- package/dist/icons/glyphs/text-align-center.d.ts +2 -0
- package/dist/icons/glyphs/text-align-end.d.ts +2 -0
- package/dist/icons/glyphs/text-align-start.d.ts +2 -0
- package/dist/icons/glyphs/thermometer.d.ts +2 -0
- package/dist/icons/glyphs/thumbs-down.d.ts +2 -0
- package/dist/icons/glyphs/thumbs-up.d.ts +2 -0
- package/dist/icons/glyphs/ticket.d.ts +2 -0
- package/dist/icons/glyphs/timer.d.ts +2 -0
- package/dist/icons/glyphs/tornado.d.ts +2 -0
- package/dist/icons/glyphs/train-track.d.ts +2 -0
- package/dist/icons/glyphs/trash-2.d.ts +2 -0
- package/dist/icons/glyphs/tree-deciduous.d.ts +2 -0
- package/dist/icons/glyphs/tree-pine.d.ts +2 -0
- package/dist/icons/glyphs/trending-down.d.ts +2 -0
- package/dist/icons/glyphs/trending-up-down.d.ts +2 -0
- package/dist/icons/glyphs/trending-up.d.ts +2 -0
- package/dist/icons/glyphs/triangle-alert.d.ts +2 -0
- package/dist/icons/glyphs/truck.d.ts +2 -0
- package/dist/icons/glyphs/turkish-lira.d.ts +2 -0
- package/dist/icons/glyphs/twitch.d.ts +2 -0
- package/dist/icons/glyphs/twitter.d.ts +2 -0
- package/dist/icons/glyphs/underline.d.ts +2 -0
- package/dist/icons/glyphs/undo-dot.d.ts +2 -0
- package/dist/icons/glyphs/undo.d.ts +2 -0
- package/dist/icons/glyphs/unplug.d.ts +2 -0
- package/dist/icons/glyphs/upload.d.ts +2 -0
- package/dist/icons/glyphs/user-check.d.ts +2 -0
- package/dist/icons/glyphs/user-plus.d.ts +2 -0
- package/dist/icons/glyphs/user-round-check.d.ts +2 -0
- package/dist/icons/glyphs/user-round-cog.d.ts +2 -0
- package/dist/icons/glyphs/user-round-plus.d.ts +2 -0
- package/dist/icons/glyphs/user-round.d.ts +2 -0
- package/dist/icons/glyphs/user.d.ts +2 -0
- package/dist/icons/glyphs/users-round.d.ts +2 -0
- package/dist/icons/glyphs/users.d.ts +2 -0
- package/dist/icons/glyphs/vibrate.d.ts +2 -0
- package/dist/icons/glyphs/volume.d.ts +2 -0
- package/dist/icons/glyphs/wallet.d.ts +2 -0
- package/dist/icons/glyphs/washing-machine.d.ts +2 -0
- package/dist/icons/glyphs/waves-arrow-down.d.ts +2 -0
- package/dist/icons/glyphs/waves-arrow-up.d.ts +2 -0
- package/dist/icons/glyphs/waves-ladder.d.ts +2 -0
- package/dist/icons/glyphs/waves.d.ts +2 -0
- package/dist/icons/glyphs/waypoints.d.ts +2 -0
- package/dist/icons/glyphs/webhook.d.ts +2 -0
- package/dist/icons/glyphs/wifi-cog.d.ts +2 -0
- package/dist/icons/glyphs/wifi-low.d.ts +2 -0
- package/dist/icons/glyphs/wifi-pen.d.ts +2 -0
- package/dist/icons/glyphs/wifi-sync.d.ts +2 -0
- package/dist/icons/glyphs/wifi.d.ts +2 -0
- package/dist/icons/glyphs/wind-arrow-down.d.ts +2 -0
- package/dist/icons/glyphs/wind.d.ts +2 -0
- package/dist/icons/glyphs/workflow.d.ts +2 -0
- package/dist/icons/glyphs/wrench.d.ts +2 -0
- package/dist/icons/glyphs/x.d.ts +2 -0
- package/dist/icons/glyphs/youtube.d.ts +2 -0
- package/dist/icons/glyphs/zap-off.d.ts +2 -0
- package/dist/icons/glyphs/zap.d.ts +2 -0
- package/dist/icons/iconPlay.d.ts +2 -0
- package/dist/icons/registry.d.ts +81 -78
- package/dist/icons.js +996 -0
- package/dist/index.css +1257 -399
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -5
- package/dist/internal/CheckMark.d.ts +12 -0
- package/dist/internal/ChoiceField.d.ts +1 -1
- package/dist/internal/FieldFrame.d.ts +17 -0
- package/dist/internal/MorphText.d.ts +12 -0
- package/dist/internal/RollingNumber.d.ts +14 -0
- package/dist/internal/surfaceDepth.d.ts +25 -0
- package/dist/internal/swatch.d.ts +4 -1
- package/dist/layout/app-shell/AppShell.d.ts +2 -2
- package/dist/motion/celebrate.d.ts +18 -0
- package/dist/tokens/layers.d.ts +37 -0
- package/dist/tokens/naming.d.ts +1 -1
- package/dist/tokens/primitives.d.ts +1 -0
- package/dist/tokens/semantic.d.ts +67 -56
- package/dist/tokens/themes/dark.d.ts +7 -14
- package/package.json +11 -4
- package/src/components/accordion/COMPONENT.md +4 -4
- package/src/components/avatar/COMPONENT.md +1 -1
- package/src/components/button/COMPONENT.md +30 -7
- package/src/components/button/examples/download.tsx +45 -0
- package/src/components/button/examples/hold-to-confirm.tsx +23 -0
- package/src/components/button/examples/in-form.tsx +15 -3
- package/src/components/button/examples/label-morph.tsx +38 -0
- package/src/components/button/examples/variants.tsx +1 -0
- package/src/components/card/COMPONENT.md +4 -2
- package/src/components/card/examples/narrow.tsx +2 -2
- package/src/components/card/examples/panel-chart.tsx +1 -1
- package/src/components/card/examples/variants.tsx +1 -1
- package/src/components/checkbox/COMPONENT.md +1 -1
- package/src/components/checkbox/examples/examples.module.css +1 -1
- package/src/components/code-block/COMPONENT.md +6 -6
- package/src/components/code-block/examples/overview.tsx +1 -1
- package/src/components/code-block/examples/variants.tsx +1 -1
- package/src/components/color-picker/COMPONENT.md +3 -3
- package/src/components/color-picker/examples/in-form.tsx +13 -5
- package/src/components/color-picker/examples/validation.tsx +10 -4
- package/src/components/color-swatches/COMPONENT.md +6 -6
- package/src/components/color-swatches/examples/in-form.tsx +11 -5
- package/src/components/command-menu/COMPONENT.md +1 -1
- package/src/components/crossfade/examples/overview.tsx +3 -3
- package/src/components/data-table/COMPONENT.md +5 -4
- package/src/components/datepicker/COMPONENT.md +3 -3
- package/src/components/datepicker/examples/in-form.tsx +30 -9
- package/src/components/datepicker/examples/validation.tsx +20 -10
- package/src/components/digit-input/COMPONENT.md +8 -6
- package/src/components/digit-input/examples/in-form.tsx +22 -4
- package/src/components/digit-input/examples/on-complete.tsx +7 -6
- package/src/components/digit-input/examples/validation.tsx +12 -5
- package/src/components/dnd/COMPONENT.md +1 -1
- package/src/components/dnd/examples/examples.module.css +4 -4
- package/src/components/drawer/COMPONENT.md +1 -1
- package/src/components/drawer/examples/in-form.tsx +7 -2
- package/src/components/dropdown/COMPONENT.md +1 -1
- package/src/components/dropdown/examples/examples.module.css +1 -1
- package/src/components/empty-page/examples/examples.module.css +1 -1
- package/src/components/example-frame/COMPONENT.md +1 -1
- package/src/components/file-upload/COMPONENT.md +3 -3
- package/src/components/file-upload/examples/in-form.tsx +28 -4
- package/src/components/file-upload/examples/validation.tsx +37 -6
- package/src/components/input/COMPONENT.md +13 -4
- package/src/components/input/examples/in-form.tsx +42 -7
- package/src/components/input/examples/password-strength.tsx +12 -0
- package/src/components/input/examples/validation.tsx +38 -13
- package/src/components/kanban/COMPONENT.md +4 -4
- package/src/components/login-form/COMPONENT.md +4 -4
- package/src/components/login-form/examples/register.tsx +2 -2
- package/src/components/login-form/examples/reset-password.tsx +2 -2
- package/src/components/modal/COMPONENT.md +3 -3
- package/src/components/modal/examples/examples.module.css +2 -2
- package/src/components/modal/examples/in-form.tsx +7 -2
- package/src/components/native-select/COMPONENT.md +3 -3
- package/src/components/native-select/examples/examples.module.css +2 -0
- package/src/components/native-select/examples/in-form.tsx +18 -3
- package/src/components/native-select/examples/validation.tsx +8 -3
- package/src/components/page-content/examples/examples.module.css +1 -1
- package/src/components/popover/COMPONENT.md +2 -2
- package/src/components/popover/examples/in-form.tsx +27 -5
- package/src/components/progress-bar/COMPONENT.md +5 -1
- package/src/components/progress-bar/examples/examples.module.css +7 -0
- package/src/components/progress-bar/examples/milestone.tsx +43 -0
- package/src/components/progress-bar/examples/steps.tsx +35 -0
- package/src/components/radio/COMPONENT.md +1 -1
- package/src/components/select/COMPONENT.md +3 -3
- package/src/components/select/examples/examples.module.css +1 -0
- package/src/components/select/examples/in-form.tsx +25 -3
- package/src/components/select/examples/validation.tsx +8 -3
- package/src/components/skeleton/examples/with-crossfade.tsx +3 -3
- package/src/components/slider/COMPONENT.md +1 -1
- package/src/components/sparkline/COMPONENT.md +98 -0
- package/src/components/sparkline/examples/examples.module.css +13 -0
- package/src/components/sparkline/examples/overview.tsx +27 -0
- package/src/components/sparkline/examples/period.tsx +46 -0
- package/src/components/switch/COMPONENT.md +1 -1
- package/src/components/tabs/COMPONENT.md +15 -16
- package/src/components/tabs/examples/examples.module.css +14 -0
- package/src/components/tabs/examples/orientation.tsx +87 -33
- package/src/components/tag-select/COMPONENT.md +3 -3
- package/src/components/tag-select/examples/examples.module.css +1 -0
- package/src/components/tag-select/examples/in-form.tsx +19 -2
- package/src/components/tag-select/examples/validation.tsx +7 -2
- package/src/components/textarea/COMPONENT.md +3 -3
- package/src/components/textarea/examples/in-form.tsx +20 -8
- package/src/components/textarea/examples/validation.tsx +24 -8
- package/src/components/tooltip/COMPONENT.md +8 -6
- package/src/components/tooltip/examples/examples.module.css +2 -2
- package/src/layout/app-header/COMPONENT.md +1 -1
- package/src/layout/app-header/examples/examples.module.css +4 -4
- package/src/layout/app-shell/COMPONENT.md +8 -8
- package/src/layout/app-shell/examples/examples.module.css +3 -3
- package/src/layout/bottom-nav/COMPONENT.md +1 -1
- package/src/layout/bottom-nav/examples/examples.module.css +1 -1
- package/src/layout/sidebar/COMPONENT.md +4 -4
- package/src/layout/sidebar/examples/examples.module.css +5 -5
- package/src/styles/globals.css +125 -2
- package/src/styles/theme-dark.css +37 -13
- package/src/styles/theme-light.css +61 -16
- package/src/styles/tokens.css +1 -0
|
@@ -1,40 +1,94 @@
|
|
|
1
|
-
/**
|
|
2
|
-
import { Tabs, Typography } from "prime-ui-kit";
|
|
1
|
+
/** Account settings with a side list of sections: the active section reaches out of the panel, and below 600px the list moves above it — `orientation`. */
|
|
2
|
+
import { Button, Icon, Input, Switch, Tabs, Typography } from "prime-ui-kit";
|
|
3
3
|
|
|
4
4
|
import styles from "./examples.module.css";
|
|
5
5
|
|
|
6
|
-
const SECTIONS = [
|
|
7
|
-
{ value: "profile", label: "Профиль", text: "Имя, должность и контакты сотрудника." },
|
|
8
|
-
{ value: "notifications", label: "Уведомления", text: "Письма о заказах и еженедельная сводка." },
|
|
9
|
-
{ value: "deletion", label: "Удаление", text: "Аккаунт и все данные будут удалены." },
|
|
10
|
-
];
|
|
11
|
-
|
|
12
6
|
export default function TabsOrientationExample() {
|
|
13
7
|
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<Tabs.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
8
|
+
<Tabs.Root orientation="vertical" defaultValue="notifications" className={styles.wide}>
|
|
9
|
+
<Tabs.List aria-label="Настройки аккаунта">
|
|
10
|
+
<Tabs.Item value="profile">
|
|
11
|
+
<Tabs.Icon>
|
|
12
|
+
<Icon name="object.user" />
|
|
13
|
+
</Tabs.Icon>
|
|
14
|
+
<Tabs.Label>Профиль</Tabs.Label>
|
|
15
|
+
</Tabs.Item>
|
|
16
|
+
<Tabs.Item value="notifications">
|
|
17
|
+
<Tabs.Icon>
|
|
18
|
+
<Icon name="object.bell" />
|
|
19
|
+
</Tabs.Icon>
|
|
20
|
+
<Tabs.Label>Уведомления</Tabs.Label>
|
|
21
|
+
</Tabs.Item>
|
|
22
|
+
<Tabs.Item value="security">
|
|
23
|
+
<Tabs.Icon>
|
|
24
|
+
<Icon name="object.key" />
|
|
25
|
+
</Tabs.Icon>
|
|
26
|
+
<Tabs.Label>Безопасность</Tabs.Label>
|
|
27
|
+
</Tabs.Item>
|
|
28
|
+
<Tabs.Separator />
|
|
29
|
+
<Tabs.Item value="deletion">
|
|
30
|
+
<Tabs.Icon>
|
|
31
|
+
<Icon name="action.delete" />
|
|
32
|
+
</Tabs.Icon>
|
|
33
|
+
<Tabs.Label>Удаление</Tabs.Label>
|
|
34
|
+
</Tabs.Item>
|
|
35
|
+
</Tabs.List>
|
|
36
|
+
|
|
37
|
+
<Tabs.Panel value="profile">
|
|
38
|
+
<div className={styles.form}>
|
|
39
|
+
<Input.Root label="Имя и фамилия">
|
|
40
|
+
<Input.Wrapper>
|
|
41
|
+
<Input.Field defaultValue="Анна Смирнова" autoComplete="name" />
|
|
42
|
+
</Input.Wrapper>
|
|
43
|
+
</Input.Root>
|
|
44
|
+
<Input.Root label="Должность">
|
|
45
|
+
<Input.Wrapper>
|
|
46
|
+
<Input.Field defaultValue="Руководитель отдела продаж" />
|
|
47
|
+
</Input.Wrapper>
|
|
48
|
+
</Input.Root>
|
|
49
|
+
</div>
|
|
50
|
+
</Tabs.Panel>
|
|
51
|
+
|
|
52
|
+
<Tabs.Panel value="notifications">
|
|
53
|
+
<div className={styles.form}>
|
|
54
|
+
<Switch.Root defaultChecked hint="Письмо, как только заказ оплачен или отменён">
|
|
55
|
+
<Switch.Label>Статусы заказов</Switch.Label>
|
|
56
|
+
</Switch.Root>
|
|
57
|
+
<Switch.Root defaultChecked hint="По понедельникам в 09:00">
|
|
58
|
+
<Switch.Label>Сводка за неделю</Switch.Label>
|
|
59
|
+
</Switch.Root>
|
|
60
|
+
<Switch.Root hint="Новые функции и вебинары">
|
|
61
|
+
<Switch.Label>Новости продукта</Switch.Label>
|
|
62
|
+
</Switch.Root>
|
|
63
|
+
</div>
|
|
64
|
+
</Tabs.Panel>
|
|
65
|
+
|
|
66
|
+
<Tabs.Panel value="security">
|
|
67
|
+
<div className={styles.form}>
|
|
68
|
+
<Input.Root label="Новый пароль" hint="Не короче 12 символов">
|
|
69
|
+
<Input.Wrapper>
|
|
70
|
+
<Input.Field type="password" autoComplete="new-password" />
|
|
71
|
+
</Input.Wrapper>
|
|
72
|
+
</Input.Root>
|
|
73
|
+
<Switch.Root defaultChecked hint="Код из приложения при каждом входе">
|
|
74
|
+
<Switch.Label>Двухфакторная проверка</Switch.Label>
|
|
75
|
+
</Switch.Root>
|
|
76
|
+
</div>
|
|
77
|
+
</Tabs.Panel>
|
|
78
|
+
|
|
79
|
+
<Tabs.Panel value="deletion">
|
|
80
|
+
<div className={styles.form}>
|
|
81
|
+
<Typography variant="body-m" tone="secondary">
|
|
82
|
+
Аккаунт и все данные будут удалены через 30 дней. До этого срока удаление можно
|
|
83
|
+
отменить.
|
|
84
|
+
</Typography>
|
|
85
|
+
<div>
|
|
86
|
+
<Button.Root tone="danger" variant="soft">
|
|
87
|
+
Удалить аккаунт
|
|
88
|
+
</Button.Root>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</Tabs.Panel>
|
|
92
|
+
</Tabs.Root>
|
|
39
93
|
);
|
|
40
94
|
}
|
|
@@ -96,7 +96,7 @@ No `variant` or `tone`. The control is the field look; chips are soft Badges on
|
|
|
96
96
|
| collapsed / expanded | focus inside or the list open | `data-expanded="true"` on the control: every chip on up to three rows (then scroll with edge fades); the height animates |
|
|
97
97
|
| open | focus, typing, arrows | `data-state="open"` on the control; list `data-state`, `data-side` |
|
|
98
98
|
| overflow | more chips than fit at rest | a «+N» Badge button with `labels.more` and the hidden labels in `title` |
|
|
99
|
-
| invalid | `invalid` or `error` | `data-invalid="true"`, `aria-invalid` on the input |
|
|
99
|
+
| invalid | `invalid` or `error` | `data-invalid="true"`, `aria-invalid` on the input; the control shakes once when an error arrives (`data-shake` on the frame) |
|
|
100
100
|
| disabled | `disabled` | `data-disabled="true"`, native `disabled` on the input |
|
|
101
101
|
| option highlighted / selected / disabled | keyboard and pointer / value / option `disabled` | `data-highlighted`, `aria-selected` + checked indicator, `data-disabled` |
|
|
102
102
|
|
|
@@ -147,13 +147,13 @@ No `variant` or `tone`. The control is the field look; chips are soft Badges on
|
|
|
147
147
|
| [overview.tsx](examples/overview.tsx) | A labelled tag field: focus opens the list, typing filters it, picked tags become chips — `label`, `options`. |
|
|
148
148
|
| [sizes.tsx](examples/sizes.tsx) | Every size tier with two picked tags; chips sit one tier below the field — `size`. |
|
|
149
149
|
| [states.tsx](examples/states.tsx) | A default field next to a disabled and an invalid one, with a disabled option in the list — `disabled`, `invalid`. |
|
|
150
|
-
| [validation.tsx](examples/validation.tsx) |
|
|
150
|
+
| [validation.tsx](examples/validation.tsx) | Live validation: removing the last region shakes the field and drops the error in, adding one clears it; required and optional markers and a hint — `required`, `optional`, `hint`, `error`. |
|
|
151
151
|
| [creatable.tsx](examples/creatable.tsx) | A typed text that is not in the list becomes a new tag from the Create row or Enter — `creatable`, `onCreate`, `defaultColor`. |
|
|
152
152
|
| [many-tags.tsx](examples/many-tags.tsx) | More tags than fit: at rest one row with «+N», focused every tag on up to three wrapped rows that scroll — `defaultValue`. |
|
|
153
153
|
| [manage-tags.tsx](examples/manage-tags.tsx) | Users keep their own tag dictionary: the row «⋯» menu renames, recolors or deletes an option — `onOptionUpdate`, `onOptionDelete`. |
|
|
154
154
|
| [controlled.tsx](examples/controlled.tsx) | The parent owns the value: a preset button replaces the tags and the count follows them — `value`, `onValueChange`. |
|
|
155
155
|
| [controlled-open.tsx](examples/controlled-open.tsx) | The parent owns the list: a button opens it from code, Escape or an outside press closes it — `open`, `onOpenChange`. |
|
|
156
|
-
| [in-form.tsx](examples/in-form.tsx) | A new task form: the required labels field is checked on submit
|
|
156
|
+
| [in-form.tsx](examples/in-form.tsx) | A new task form: the required labels field is checked on submit, its error shakes the field and leaves once a label is added, a calm note confirms the task — `required`, `error`, `creatable`. |
|
|
157
157
|
|
|
158
158
|
## Mistakes
|
|
159
159
|
- `TagSelect.Root` → TagSelect is a single export: `<TagSelect …/>`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** A new task form: the required labels field is checked on submit
|
|
1
|
+
/** A new task form: the required labels field is checked on submit, its error shakes the field and leaves once a label is added, a calm note confirms the task — `required`, `error`, `creatable`. */
|
|
2
2
|
import { Button, Input, TagSelect, type TagSelectOption, Typography } from "prime-ui-kit";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
@@ -19,10 +19,12 @@ const PEOPLE: TagSelectOption[] = [
|
|
|
19
19
|
export default function TagSelectInFormExample() {
|
|
20
20
|
const [labels, setLabels] = React.useState<string[]>([]);
|
|
21
21
|
const [error, setError] = React.useState<string>();
|
|
22
|
+
const [saved, setSaved] = React.useState(false);
|
|
22
23
|
|
|
23
24
|
const submit = (event: React.FormEvent<HTMLFormElement>) => {
|
|
24
25
|
event.preventDefault();
|
|
25
26
|
setError(labels.length ? undefined : "Добавьте хотя бы одну метку");
|
|
27
|
+
setSaved(labels.length > 0);
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
return (
|
|
@@ -45,13 +47,28 @@ export default function TagSelectInFormExample() {
|
|
|
45
47
|
onValueChange={(next) => {
|
|
46
48
|
setLabels(next);
|
|
47
49
|
setError(undefined);
|
|
50
|
+
setSaved(false);
|
|
48
51
|
}}
|
|
49
52
|
creatable
|
|
50
53
|
placeholder="Добавить метку"
|
|
51
54
|
/>
|
|
52
55
|
<TagSelect label="Наблюдатели" optional options={PEOPLE} placeholder="Добавить человека" />
|
|
53
56
|
<div className={styles.actions}>
|
|
54
|
-
|
|
57
|
+
{saved ? (
|
|
58
|
+
<Typography as="p" variant="body-s" tone="secondary">
|
|
59
|
+
Задача создана
|
|
60
|
+
</Typography>
|
|
61
|
+
) : null}
|
|
62
|
+
<Button.Root
|
|
63
|
+
variant="ghost"
|
|
64
|
+
tone="neutral"
|
|
65
|
+
type="reset"
|
|
66
|
+
onClick={() => {
|
|
67
|
+
setLabels([]);
|
|
68
|
+
setError(undefined);
|
|
69
|
+
setSaved(false);
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
55
72
|
Отмена
|
|
56
73
|
</Button.Root>
|
|
57
74
|
<Button.Root type="submit">Создать задачу</Button.Root>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Live validation: removing the last region shakes the field and drops the error in, adding one clears it; required and optional markers and a hint — `required`, `optional`, `hint`, `error`. */
|
|
2
2
|
import { TagSelect, type TagSelectOption } from "prime-ui-kit";
|
|
3
|
+
import * as React from "react";
|
|
3
4
|
|
|
4
5
|
const CITIES: TagSelectOption[] = [
|
|
5
6
|
{ value: "msk", label: "Москва", color: "blue" },
|
|
@@ -13,6 +14,8 @@ const PEOPLE: TagSelectOption[] = [
|
|
|
13
14
|
];
|
|
14
15
|
|
|
15
16
|
export default function TagSelectValidationExample() {
|
|
17
|
+
const [regions, setRegions] = React.useState(["msk"]);
|
|
18
|
+
|
|
16
19
|
return (
|
|
17
20
|
<>
|
|
18
21
|
<TagSelect
|
|
@@ -25,8 +28,10 @@ export default function TagSelectValidationExample() {
|
|
|
25
28
|
<TagSelect
|
|
26
29
|
label="Регионы"
|
|
27
30
|
required
|
|
28
|
-
error="Добавьте хотя бы один регион"
|
|
31
|
+
error={regions.length ? undefined : "Добавьте хотя бы один регион"}
|
|
29
32
|
options={CITIES}
|
|
33
|
+
value={regions}
|
|
34
|
+
onValueChange={setRegions}
|
|
30
35
|
placeholder="Добавить регион"
|
|
31
36
|
/>
|
|
32
37
|
<TagSelect label="Наблюдатели" optional options={PEOPLE} placeholder="Добавить человека" />
|
|
@@ -100,7 +100,7 @@ Textarea has no `variant` or `tone`: one field treatment (fill, no visible borde
|
|
|
100
100
|
| hover | — | fill darkens (not when focused, disabled or read-only) |
|
|
101
101
|
| focus | keyboard focus | focus fill and inset focus ring on the field box; clicking the box padding focuses the textarea |
|
|
102
102
|
| no focus ring | `focusRing={false}` | `data-focus-ring="false"` on the field box |
|
|
103
|
-
| invalid | `invalid` or non-empty `error` | `data-invalid="true"` on the outer wrapper and the field box, `aria-invalid="true"`, danger ring |
|
|
103
|
+
| invalid | `invalid` or non-empty `error` | `data-invalid="true"` on the outer wrapper and the field box, `aria-invalid="true"`, danger ring; the control shakes once when an error arrives (`data-shake` on the frame) |
|
|
104
104
|
| disabled | `disabled` | `data-disabled="true"` on the field box, disabled fill and text; label and hint dimmed |
|
|
105
105
|
| read-only | `readOnly` | `data-readonly="true"` on the field box, no hover, default cursor |
|
|
106
106
|
| reserved support row | `reserveSupportRow` | `data-reserve="true"` on the support row |
|
|
@@ -141,11 +141,11 @@ Textarea has no `variant` or `tone`: one field treatment (fill, no visible borde
|
|
|
141
141
|
| [overview.tsx](examples/overview.tsx) | A labelled multi-line field with a hint; the height follows the text — `label`, `hint`. |
|
|
142
142
|
| [sizes.tsx](examples/sizes.tsx) | Every size tier; text, padding, label and hint follow the tier — `size`. |
|
|
143
143
|
| [states.tsx](examples/states.tsx) | A default field next to a read-only and a disabled one — `readOnly`, `disabled`. |
|
|
144
|
-
| [validation.tsx](examples/validation.tsx) |
|
|
144
|
+
| [validation.tsx](examples/validation.tsx) | Live validation: an error shakes the field as it arrives, drops in and leaves as soon as the text is fixed; required and optional markers, a hint and a support row that does not shift — `required`, `optional`, `hint`, `error`, `reserveSupportRow`. |
|
|
145
145
|
| [auto-resize.tsx](examples/auto-resize.tsx) | A field that grows with its text next to a fixed one with a resize handle — `autoResize`, `rows`. |
|
|
146
146
|
| [without-focus-ring.tsx](examples/without-focus-ring.tsx) | A single reply composer where the caret and the lighter fill show focus — `focusRing`. |
|
|
147
147
|
| [controlled.tsx](examples/controlled.tsx) | The parent owns the text; the counter follows it and `maxLength` stops extra input — `value`, `onValueChange`, `Textarea.Counter`, `maxLength`. |
|
|
148
|
-
| [in-form.tsx](examples/in-form.tsx) | Support request form: the description is checked on submit
|
|
148
|
+
| [in-form.tsx](examples/in-form.tsx) | Support request form: the description is checked on submit, its error leaves as soon as the text is long enough and does not shift the form, a sent request turns the button green — `required`, `error`, `reserveSupportRow`. |
|
|
149
149
|
|
|
150
150
|
## Mistakes
|
|
151
151
|
- `<Textarea.Root><textarea /></Textarea.Root>` → Textarea.Root renders the textarea itself; pass native props to the root.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Support request form: the description is checked on submit
|
|
1
|
+
/** Support request form: the description is checked on submit, its error leaves as soon as the text is long enough and does not shift the form, a sent request turns the button green — `required`, `error`, `reserveSupportRow`. */
|
|
2
2
|
import { Button, Input, Textarea, Typography } from "prime-ui-kit";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
@@ -9,13 +9,16 @@ const MIN_LENGTH = 20;
|
|
|
9
9
|
|
|
10
10
|
export default function TextareaInFormExample() {
|
|
11
11
|
const [message, setMessage] = React.useState("");
|
|
12
|
-
const [
|
|
12
|
+
const [checked, setChecked] = React.useState(false);
|
|
13
|
+
const [sent, setSent] = React.useState(false);
|
|
14
|
+
const tooShort = message.trim().length < MIN_LENGTH;
|
|
15
|
+
// After the first submit the check is live: the error leaves as soon as the text is long enough.
|
|
16
|
+
const error = checked && tooShort ? "Опишите проблему хотя бы в 20 символах" : undefined;
|
|
13
17
|
|
|
14
18
|
const submit = (event: React.FormEvent<HTMLFormElement>) => {
|
|
15
19
|
event.preventDefault();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
);
|
|
20
|
+
setChecked(true);
|
|
21
|
+
setSent(!tooShort);
|
|
19
22
|
};
|
|
20
23
|
|
|
21
24
|
return (
|
|
@@ -44,7 +47,10 @@ export default function TextareaInFormExample() {
|
|
|
44
47
|
error={error}
|
|
45
48
|
value={message}
|
|
46
49
|
maxLength={LIMIT}
|
|
47
|
-
onValueChange={
|
|
50
|
+
onValueChange={(value) => {
|
|
51
|
+
setMessage(value);
|
|
52
|
+
setSent(false);
|
|
53
|
+
}}
|
|
48
54
|
counter={<Textarea.Counter current={message.length} max={LIMIT} />}
|
|
49
55
|
/>
|
|
50
56
|
</div>
|
|
@@ -53,11 +59,17 @@ export default function TextareaInFormExample() {
|
|
|
53
59
|
variant="ghost"
|
|
54
60
|
tone="neutral"
|
|
55
61
|
type="reset"
|
|
56
|
-
onClick={() =>
|
|
62
|
+
onClick={() => {
|
|
63
|
+
setMessage("");
|
|
64
|
+
setChecked(false);
|
|
65
|
+
setSent(false);
|
|
66
|
+
}}
|
|
57
67
|
>
|
|
58
68
|
Отменить
|
|
59
69
|
</Button.Root>
|
|
60
|
-
<Button.Root type="submit"
|
|
70
|
+
<Button.Root type="submit" tone={sent ? "success" : "accent"}>
|
|
71
|
+
{sent ? "Отправлено" : "Отправить"}
|
|
72
|
+
</Button.Root>
|
|
61
73
|
</div>
|
|
62
74
|
</form>
|
|
63
75
|
);
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Live validation: an error shakes the field as it arrives, drops in and leaves as soon as the text is fixed; required and optional markers, a hint and a support row that does not shift — `required`, `optional`, `hint`, `error`, `reserveSupportRow`. */
|
|
2
2
|
import { Button, Textarea } from "prime-ui-kit";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
+
const MIN_REASON = 20;
|
|
6
|
+
|
|
5
7
|
export default function TextareaValidationExample() {
|
|
6
|
-
const [
|
|
8
|
+
const [reason, setReason] = React.useState("Нет");
|
|
9
|
+
const [comment, setComment] = React.useState("Оплата частями");
|
|
10
|
+
const [commentError, setCommentError] = React.useState<string>();
|
|
11
|
+
|
|
12
|
+
const send = () => setCommentError(/\d{3,}/.test(comment) ? undefined : "Укажите номер договора");
|
|
7
13
|
|
|
8
14
|
return (
|
|
9
15
|
<>
|
|
@@ -16,18 +22,28 @@ export default function TextareaValidationExample() {
|
|
|
16
22
|
<Textarea.Root
|
|
17
23
|
label="Причина отказа"
|
|
18
24
|
required
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
value={reason}
|
|
26
|
+
onValueChange={setReason}
|
|
27
|
+
hint="Клиент получит её в письме"
|
|
28
|
+
error={
|
|
29
|
+
reason.trim().length < MIN_REASON
|
|
30
|
+
? `Опишите причину хотя бы в ${MIN_REASON} символах`
|
|
31
|
+
: undefined
|
|
32
|
+
}
|
|
21
33
|
/>
|
|
22
34
|
<Textarea.Root
|
|
23
35
|
label="Комментарий для бухгалтерии"
|
|
24
36
|
optional
|
|
25
37
|
reserveSupportRow
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
value={comment}
|
|
39
|
+
onValueChange={(value) => {
|
|
40
|
+
setComment(value);
|
|
41
|
+
setCommentError(undefined);
|
|
42
|
+
}}
|
|
43
|
+
error={commentError}
|
|
28
44
|
/>
|
|
29
|
-
<Button.Root variant="soft" tone="neutral" onClick={
|
|
30
|
-
|
|
45
|
+
<Button.Root variant="soft" tone="neutral" onClick={send}>
|
|
46
|
+
Отправить в бухгалтерию
|
|
31
47
|
</Button.Root>
|
|
32
48
|
</>
|
|
33
49
|
);
|
|
@@ -74,16 +74,18 @@ No DOM: clones the single child, composes its `ref`, appends the tooltip id to i
|
|
|
74
74
|
| `…rest` | `Omit<HTMLAttributes<HTMLDivElement>, "id" \| "role" \| "onPointerEnter" \| "onPointerLeave">` | — | `className`, `style` and the other attributes of the chip. |
|
|
75
75
|
|
|
76
76
|
## Variants
|
|
77
|
-
Tooltip has no `variant` or `tone`: it is always a flat inverse chip (`tooltip-bg`, `tooltip-text`) with an arrow and no shadow, so it reads the same on
|
|
77
|
+
Tooltip has no `variant` or `tone`: it is always a flat inverse chip (`tooltip-bg`, `tooltip-text`) — dark in the light theme, light in the dark one — with an arrow and no shadow, so it reads the same on every layer. The chip is a host of its own: it points the text and fill roles at `tooltip-muted` / `tooltip-fill`, so a Kbd or a secondary line inside reads on it. Content flows inline: a label and its key stay on one line, block children stack. The arrow (`--prime-tooltip-arrow-width` × `--prime-tooltip-arrow-height`) always points at the trigger's centre, also after flipping, aligning or shifting, and never slides into the chip's rounded corner.
|
|
78
78
|
|
|
79
79
|
### size (Content)
|
|
80
|
+
A chip of tier T is as tall as a menu item of tier T; text, padding and radius step together (`--prime-tooltip-<tier>-*`).
|
|
81
|
+
|
|
80
82
|
| Value | Looks like | Use when | Default |
|
|
81
83
|
|---|---|---|---|
|
|
82
|
-
| `xs` |
|
|
83
|
-
| `s` |
|
|
84
|
-
| `m` |
|
|
85
|
-
| `l` |
|
|
86
|
-
| `xl` |
|
|
84
|
+
| `xs` | 12/16, padding 4 × 6, radius 4 — 24 tall | Next to xs controls | |
|
|
85
|
+
| `s` | 12/16, padding 6 × 8, radius 6 — 28 tall | Dense toolbars, s controls | |
|
|
86
|
+
| `m` | 13/20, padding 6 × 10, radius 6 — 32 tall | Most controls | yes |
|
|
87
|
+
| `l` | 14/20, padding 8 × 12, radius 8 — 36 tall | l controls, longer sentences | |
|
|
88
|
+
| `xl` | 16/24, padding 8 × 16, radius 8 — 40 tall | xl controls | |
|
|
87
89
|
|
|
88
90
|
### side (Content)
|
|
89
91
|
| Value | Looks like | Use when | Default |
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
gap: var(--prime-space-1);
|
|
8
8
|
padding: var(--prime-space-1);
|
|
9
9
|
border-radius: var(--prime-radius-l);
|
|
10
|
-
background: var(--prime-color-
|
|
11
|
-
box-shadow: var(--prime-
|
|
10
|
+
background: var(--prime-color-layer-nested);
|
|
11
|
+
box-shadow: var(--prime-shadow-raised);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/* disabled-trigger.tsx: a focusable wrapper around the disabled button, with the outer ring. */
|
|
@@ -134,7 +134,7 @@ AppHeader.Root <header>, one sticky row as high as the Sidebar bra
|
|
|
134
134
|
- Gaps: `--prime-space-3` between zones, `--prime-space-2` inside Start and Actions; `AppHeader.Separator` adds `--prime-space-2` on each side (16 in all) and is 20 high.
|
|
135
135
|
- `AppHeader.Icon` is a 36 tile with the radius and fill of a soft neutral button m, so it lines up with the buttons on the bar.
|
|
136
136
|
- On the panel surface with no divider or shadow (depth from fill); `z-index: --prime-z-sticky`.
|
|
137
|
-
- Search: up to 288 wide, shrinks first; field tier m and the
|
|
137
|
+
- Search: up to 288 wide, shrinks first; field tier m and the fill of the panel layer it sits on. Controls inside are size `m`.
|
|
138
138
|
|
|
139
139
|
## Accessibility
|
|
140
140
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/* Layout of the AppHeader scenarios: an app window and a phone-wide screen. Semantic tokens only. */
|
|
2
2
|
|
|
3
|
-
/* The top of an app window: the content panel
|
|
3
|
+
/* The top of an app window: the content panel (the page) with the header on it. */
|
|
4
4
|
.window {
|
|
5
5
|
box-sizing: border-box;
|
|
6
6
|
width: 100%;
|
|
7
7
|
overflow: hidden;
|
|
8
8
|
border-radius: var(--prime-card-radius);
|
|
9
|
-
background: var(--prime-color-
|
|
9
|
+
background: var(--prime-color-layer-current);
|
|
10
10
|
box-shadow:
|
|
11
11
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
12
12
|
var(--prime-shadow-raised);
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
margin-inline: auto;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
/* in-app-shell.tsx: a whole app window with the rail on the
|
|
21
|
+
/* in-app-shell.tsx: a whole app window with the rail on the page. */
|
|
22
22
|
.stage {
|
|
23
23
|
box-sizing: border-box;
|
|
24
24
|
display: flex;
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
height: calc(var(--prime-space-24) * 4);
|
|
27
27
|
overflow: hidden;
|
|
28
28
|
border-radius: var(--prime-card-radius);
|
|
29
|
-
background: var(--prime-color-
|
|
29
|
+
background: var(--prime-color-layer-current);
|
|
30
30
|
box-shadow:
|
|
31
31
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
32
32
|
var(--prime-shadow-raised);
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
**Category:** page
|
|
4
4
|
**Kind:** layout
|
|
5
5
|
|
|
6
|
-
> The app frame: a
|
|
6
|
+
> The app frame: a content panel that is the page itself and a navigation rail one layer above it.
|
|
7
7
|
|
|
8
8
|
## When to use
|
|
9
9
|
- The root layout of an application: navigation column, an optional AppHeader, scrolling main column, a bottom bar for phone navigation.
|
|
10
|
-
- Any page that needs the kit's responsive gutters and the surface
|
|
10
|
+
- Any page that needs the kit's responsive gutters and the surface ladder for cards and fields.
|
|
11
11
|
|
|
12
12
|
## When not to use
|
|
13
13
|
- The navigation itself → use [Sidebar](../sidebar/COMPONENT.md) inside `AppShell.Nav`, [BottomNav](../bottom-nav/COMPONENT.md) inside `AppShell.Footer`.
|
|
@@ -23,8 +23,8 @@ import { AppShell } from "prime-ui-kit";
|
|
|
23
23
|
|
|
24
24
|
## Anatomy
|
|
25
25
|
```
|
|
26
|
-
AppShell.Root grid: nav column | content panel (
|
|
27
|
-
├─ AppShell.Nav navigation column
|
|
26
|
+
AppShell.Root grid: nav column | content panel (the page, layer 0)
|
|
27
|
+
├─ AppShell.Nav navigation column (usually Sidebar.Root, a surface one layer above the page)
|
|
28
28
|
├─ AppHeader.Root sticky top bar of the panel (a separate component)
|
|
29
29
|
├─ AppShell.Main <main>, scrolls, carries the gutters
|
|
30
30
|
└─ AppShell.Footer sticky bottom bar of the panel (usually BottomNav.Root)
|
|
@@ -37,7 +37,7 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
37
37
|
<!-- Generated from api.ts by `bun run docs:build`. Edit api.ts, not this section. -->
|
|
38
38
|
|
|
39
39
|
### AppShell.Root
|
|
40
|
-
`ref` → `HTMLDivElement`. Grid of the nav column (
|
|
40
|
+
`ref` → `HTMLDivElement`. Grid of the nav column (Sidebar, a surface one layer above the page) and the content panel (the page itself); every child that is not `AppShell.Nav` goes into the panel.
|
|
41
41
|
|
|
42
42
|
| Prop | Type | Default | Description |
|
|
43
43
|
|---|---|---|---|
|
|
@@ -96,7 +96,7 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
96
96
|
### Structure
|
|
97
97
|
| Value | Looks like | Use when | Default |
|
|
98
98
|
|---|---|---|---|
|
|
99
|
-
| with `AppShell.Nav` | Two columns:
|
|
99
|
+
| with `AppShell.Nav` | Two columns: a rail one layer above the page + the panel that is the page | Apps with navigation | |
|
|
100
100
|
| without Nav | Panel takes the full width | Single-page tools, auth screens | |
|
|
101
101
|
| with `AppHeader.Root` | Sticky bar at the top of the panel | Title or breadcrumbs, global search, actions, the mobile menu button | |
|
|
102
102
|
| with `AppShell.Footer` | Sticky bar at the bottom of the panel, shown while it holds a visible bar | BottomNav on a phone | |
|
|
@@ -111,10 +111,10 @@ Every child of Root that is not `AppShell.Nav` is placed into the content panel.
|
|
|
111
111
|
| footer bar | panel width (container `prime-shell-footer` on Footer) | BottomNav inside leaves from 640px of panel width; the empty footer takes no room |
|
|
112
112
|
|
|
113
113
|
## Layout & spacing
|
|
114
|
-
- Two full-height planes edge to edge: no inset, radius, shadow or border — the boundary is the fill change (
|
|
114
|
+
- Two full-height planes edge to edge: no inset, radius, shadow or border — the boundary is the fill change (the Sidebar rail is layer 1, the panel the page: white rail beside a gray page in light, a rail one step lighter than the near-black page in dark).
|
|
115
115
|
- Gutters in Main: `--prime-layout-gutter-s` (16) → `-m` (24) from 640px → `-l` (32) from 1024px. Main top padding `--prime-space-6` (24) → `--prime-space-10` (40) from 1024px; bottom `--prime-space-16`.
|
|
116
116
|
- Footer: no padding of its own (BottomNav keeps the bottom safe-area inset), sticky at the bottom, `z-index: --prime-z-sticky`.
|
|
117
|
-
- The panel is
|
|
117
|
+
- The panel is the page (layer 0 of the surface ladder, gray in light): fields on it take the page fill, a Card inside is layer 1 — white in light with the raised whisper — and cards in cards go deeper.
|
|
118
118
|
|
|
119
119
|
## Accessibility
|
|
120
120
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
height: calc(var(--prime-space-24) * 5);
|
|
8
8
|
overflow: hidden;
|
|
9
9
|
border-radius: var(--prime-card-radius);
|
|
10
|
-
background: var(--prime-color-
|
|
11
|
-
/* The
|
|
10
|
+
background: var(--prime-color-layer-current);
|
|
11
|
+
/* The window is a page on the preview's page: a hairline keeps its edge visible. */
|
|
12
12
|
box-shadow:
|
|
13
13
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
14
14
|
var(--prime-shadow-raised);
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
margin-inline: auto;
|
|
38
38
|
overflow: hidden;
|
|
39
39
|
border-radius: var(--prime-card-radius);
|
|
40
|
-
background: var(--prime-color-
|
|
40
|
+
background: var(--prime-color-layer-current);
|
|
41
41
|
box-shadow:
|
|
42
42
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
43
43
|
var(--prime-shadow-raised);
|
|
@@ -99,7 +99,7 @@ Without flags the bar is flat at the screen edge on the surface, with a faint to
|
|
|
99
99
|
| disabled | `disabled` | `disabled` / `aria-disabled`, `data-disabled` |
|
|
100
100
|
| hidden | inside `AppShell.Footer` 640px wide or more | `display: none` (container `prime-shell-footer`) |
|
|
101
101
|
| floating / icon only | `floating` / `iconOnly` | `data-floating="true"` / `data-icon-only="true"` on the `<nav>` |
|
|
102
|
-
| less transparency | `prefers-reduced-transparency: reduce` | a floating capsule turns opaque (`--prime-color-bg
|
|
102
|
+
| less transparency | `prefers-reduced-transparency: reduce` | a floating capsule turns opaque (`--prime-color-layer-floating-bg`), no blur |
|
|
103
103
|
|
|
104
104
|
Motion: the color of the icon and the label changes over `fast`; in the floating capsule the selection capsule grows in from 92% and fades in (`fast`, enter easing), instant under reduced motion. No hover or press feedback: an item is either current or not.
|
|
105
105
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
margin-inline: auto;
|
|
11
11
|
overflow: hidden;
|
|
12
12
|
border-radius: var(--prime-card-radius);
|
|
13
|
-
background: var(--prime-color-
|
|
13
|
+
background: var(--prime-color-layer-current);
|
|
14
14
|
box-shadow:
|
|
15
15
|
0 0 0 var(--prime-border-width) var(--prime-color-border-subtle),
|
|
16
16
|
var(--prime-shadow-raised);
|
|
@@ -243,7 +243,7 @@ Hook for custom parts inside `Sidebar.Root` (throws outside). Returns the fields
|
|
|
243
243
|
| `size · navId · labels` | `ControlSize · string · SidebarLabels` | — | Tier, id of the `<nav>` (for `aria-controls` on your own menu button), resolved strings. |
|
|
244
244
|
|
|
245
245
|
## Variants
|
|
246
|
-
The rail
|
|
246
|
+
The rail is a surface beside the page, one layer above it on the surface ladder (`data-depth`): white on the light gray page, one step lighter than the near-black page in dark; no border or card. Items are transparent rows with `text-secondary`, `fill-subtle` on hover; the current item takes the rail's fill two ladder steps off it (`fill-muted-hover`) with primary text.
|
|
247
247
|
|
|
248
248
|
### mode (Root)
|
|
249
249
|
| Value | Looks like | Use when | Default |
|
|
@@ -311,9 +311,9 @@ Leaving the narrow viewport closes the off-canvas panel; navigating from an `hre
|
|
|
311
311
|
## Layout & spacing
|
|
312
312
|
- Panel padding: `--prime-space-3` block, `--prime-space-2` inline; regions 8 apart; groups 16 apart, items 4 apart.
|
|
313
313
|
- Item horizontal padding is derived from the compact width so icons and the brand logo sit on one axis in every mode (the account avatar joins that axis on the rail).
|
|
314
|
-
- Header is one row of the item height + 8. The header toggle (xs, 28) sits at its end, 8 from the rail edge; in compact mode it moves half past the edge, scales to 3/4, turns round and gets a
|
|
314
|
+
- Header is one row of the item height + 8. The header toggle (xs, 28) sits at its end, 8 from the rail edge; in compact mode it moves half past the edge, scales to 3/4, turns round and gets a ring in the rail color. The root clips with `clip-path`, reaching past the edge by the toggle's half-width and ring beside the header only; everywhere else the panel ends exactly at the spacer edge.
|
|
315
315
|
- Collapsible group: heading 28 high with the chevron (14) at its end, aligned with the item trail; items start 4 below. A folded group's attention dot sits before the chevron.
|
|
316
|
-
- On the rail a heading keeps its 28 and its layout: the text slides 8 toward the edge, scales to 0.85 and is cut at the rail box with a 12 fade into the
|
|
316
|
+
- On the rail a heading keeps its 28 and its layout: the text slides 8 toward the edge, scales to 0.85 and is cut at the rail box with a 12 fade into the rail. A folded group adds one `…` row under its heading. The items and the row share one place: folding or unfolding on the rail glides the group's height one way (list ↔ row) while the two cross-fade, so the rows below never move back.
|
|
317
317
|
- Sub-list: a 1px `border-default` guide line on the parent icon's centre; every child branches off it with an 8 elbow and a 6 bend; child labels line up with the parent label.
|
|
318
318
|
- Trail (count, key hint, trailing icon) sits at the row end; a row action (one tier down) appears there on hover / focus (always on touch screens) and the trail moves aside.
|
|
319
319
|
- Footer: items 4 apart; the account is set 8 apart below them. It is its own card-like row: the
|
|
@@ -322,7 +322,7 @@ Leaving the narrow viewport closes the off-canvas panel; navigating from an `hre
|
|
|
322
322
|
so the row is the avatar + 2 × gap high (48 at m). On the compact rail the start inset becomes the
|
|
323
323
|
one that centres the avatar on the icon axis, as part of the rail motion.
|
|
324
324
|
- Compact flyout: the kit Popover (flush) to the right, aligned with the parent row, with the metrics of a kit menu — rows of the tier's menu item height (32 at m), the panel padding, no title (the row names it), no guide line; current child is a `fill-subtle-active` wash.
|
|
325
|
-
- Motion: two layers on one clock. `Sidebar.Root` is the spacer: it reserves the rail width in the page, paints the
|
|
325
|
+
- Motion: two layers on one clock. `Sidebar.Root` is the spacer: it reserves the rail width in the page, paints the rail and clips the panel to its own box; its width is the only layout that moves (the page column follows). The `<nav>` panel inside is positioned at the expanded width in every mode and never lays out again, so nothing re-wraps and nothing switches at the end. Every part is a plain CSS transition over `base` with the `standard` (ease-in-out) easing, started by the same mode change and ending with the rail: text fades through its fill colour (paint-only, no compositor layer per label), chevrons through their stroke, trailing boxes (a coloured count, a key hint) through `opacity`; coloured counts turn into dots; the account avatar slides onto the icon axis; the header toggle rides the edge by `translate` / `scale`. Rows stay full width: a row with a fill or a ring (current, on the active path, hovered, open, focused) draws them on a pseudo-element whose end edge travels to the icon box and clips its content there, so it always ends rail padding before the moving edge and is a rounded square around the icon at rest. Group headings keep their height and layout: their text slides toward the edge and scales down by transform while the moving cut ends it with a fade; the text box narrows only once the rail has closed (under the cut, never seen), so the dot and the chevron after it stay in place and fade. The `…` row of a folded group grows in and out on the same clock (grid track height), as do the attention dots (opacity and scale). Hidden keeps the look of the last visible mode and is clipped as one piece; the header toggle stays at its place and fades, and coming back from hidden it fades in at its final place. Collapsible groups that open for the rail and sub-lists that close for it move on the same clock (grid track height); chevrons rotate (base). All durations are tokens: under reduced motion every mode change is instant.
|
|
326
326
|
- Layers of a row on the rail (compact tooltips, the sub-list flyout, a `Dropdown` around `Sidebar.Account`) anchor to the visible part of the row — the icon box — not to its full-width box. The brand has no compact tooltip: the logo speaks for itself and a tooltip would cover the edge toggle.
|
|
327
327
|
- Off-canvas panel width: min(sidebar width, 100% − `--prime-space-12`).
|
|
328
328
|
- Inside `AppShell.Nav` the rail takes the full height. The root is `height: 100%` and the panel is
|