@wallarm-org/claude-design 0.0.0-stage → 4.8.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 +114 -2
- package/bin/claude-design.js +347 -0
- package/dist/SETUP.md +130 -0
- package/dist/UPDATE.md +84 -0
- package/dist/assets/Icons/activity.svg +1 -0
- package/dist/assets/Icons/alt.svg +1 -0
- package/dist/assets/Icons/android-neutral.svg +1 -0
- package/dist/assets/Icons/android.svg +1 -0
- package/dist/assets/Icons/api.svg +1 -0
- package/dist/assets/Icons/apple-music-neutral.svg +1 -0
- package/dist/assets/Icons/apple-music.svg +1 -0
- package/dist/assets/Icons/apple-neutral.svg +1 -0
- package/dist/assets/Icons/apple-podcasts-neutral.svg +1 -0
- package/dist/assets/Icons/apple-podcasts.svg +1 -0
- package/dist/assets/Icons/apple.svg +1 -0
- package/dist/assets/Icons/archive.svg +1 -0
- package/dist/assets/Icons/arrow-big-up-dash.svg +1 -0
- package/dist/assets/Icons/arrow-big-up.svg +1 -0
- package/dist/assets/Icons/arrow-down-left.svg +1 -0
- package/dist/assets/Icons/arrow-down-right.svg +1 -0
- package/dist/assets/Icons/arrow-down.svg +1 -0
- package/dist/assets/Icons/arrow-left.svg +1 -0
- package/dist/assets/Icons/arrow-right-alt.svg +1 -0
- package/dist/assets/Icons/arrow-right.svg +1 -0
- package/dist/assets/Icons/arrow-up-down.svg +1 -0
- package/dist/assets/Icons/arrow-up-left.svg +1 -0
- package/dist/assets/Icons/arrow-up-right.svg +1 -0
- package/dist/assets/Icons/arrow-up.svg +1 -0
- package/dist/assets/Icons/artstation-neutral.svg +1 -0
- package/dist/assets/Icons/artstation.svg +1 -0
- package/dist/assets/Icons/asterisk.svg +1 -0
- package/dist/assets/Icons/audio-waveform.svg +1 -0
- package/dist/assets/Icons/aws-neutral.svg +1 -0
- package/dist/assets/Icons/aws.svg +1 -0
- package/dist/assets/Icons/badge-check.svg +1 -0
- package/dist/assets/Icons/baidu-neutral.svg +1 -0
- package/dist/assets/Icons/baidu.svg +1 -0
- package/dist/assets/Icons/bandage.svg +1 -0
- package/dist/assets/Icons/behance-neutral.svg +1 -0
- package/dist/assets/Icons/behance.svg +1 -0
- package/dist/assets/Icons/bell-cog.svg +1 -0
- package/dist/assets/Icons/bell.svg +1 -0
- package/dist/assets/Icons/binary.svg +1 -0
- package/dist/assets/Icons/book-open.svg +1 -0
- package/dist/assets/Icons/book.svg +1 -0
- package/dist/assets/Icons/boosty-neutral.svg +1 -0
- package/dist/assets/Icons/boosty.svg +1 -0
- package/dist/assets/Icons/bot.svg +1 -0
- package/dist/assets/Icons/brain.svg +1 -0
- package/dist/assets/Icons/braze-neutral.svg +1 -0
- package/dist/assets/Icons/braze.svg +1 -0
- package/dist/assets/Icons/brevo-neutral.svg +1 -0
- package/dist/assets/Icons/brevo.svg +1 -0
- package/dist/assets/Icons/bug-off.svg +1 -0
- package/dist/assets/Icons/bug-play.svg +1 -0
- package/dist/assets/Icons/bug.svg +1 -0
- package/dist/assets/Icons/building.svg +1 -0
- package/dist/assets/Icons/building2.svg +1 -0
- package/dist/assets/Icons/calendar-check.svg +1 -0
- package/dist/assets/Icons/calendar-check2.svg +1 -0
- package/dist/assets/Icons/calendar-clock.svg +1 -0
- package/dist/assets/Icons/calendar-cog.svg +1 -0
- package/dist/assets/Icons/calendar-days.svg +1 -0
- package/dist/assets/Icons/calendar-fold.svg +1 -0
- package/dist/assets/Icons/calendar-heart.svg +1 -0
- package/dist/assets/Icons/calendar-minus.svg +1 -0
- package/dist/assets/Icons/calendar-minus2.svg +1 -0
- package/dist/assets/Icons/calendar-off.svg +1 -0
- package/dist/assets/Icons/calendar-plus.svg +1 -0
- package/dist/assets/Icons/calendar-plus2.svg +1 -0
- package/dist/assets/Icons/calendar-range.svg +1 -0
- package/dist/assets/Icons/calendar-search.svg +1 -0
- package/dist/assets/Icons/calendar-x.svg +1 -0
- package/dist/assets/Icons/calendar-x2.svg +1 -0
- package/dist/assets/Icons/calendar.svg +1 -0
- package/dist/assets/Icons/chart-area.svg +1 -0
- package/dist/assets/Icons/chart-bar.svg +1 -0
- package/dist/assets/Icons/chart-column.svg +1 -0
- package/dist/assets/Icons/chart-no-axes-column.svg +1 -0
- package/dist/assets/Icons/check-check.svg +1 -0
- package/dist/assets/Icons/check.svg +1 -0
- package/dist/assets/Icons/checkbox-indeterminate.svg +1 -0
- package/dist/assets/Icons/chevron-down.svg +1 -0
- package/dist/assets/Icons/chevron-first.svg +1 -0
- package/dist/assets/Icons/chevron-last.svg +1 -0
- package/dist/assets/Icons/chevron-left.svg +1 -0
- package/dist/assets/Icons/chevron-right.svg +1 -0
- package/dist/assets/Icons/chevron-up-down.svg +1 -0
- package/dist/assets/Icons/chevron-up.svg +1 -0
- package/dist/assets/Icons/chevrons-down-up.svg +1 -0
- package/dist/assets/Icons/chevrons-down.svg +1 -0
- package/dist/assets/Icons/chevrons-left-right.svg +1 -0
- package/dist/assets/Icons/chevrons-left.svg +1 -0
- package/dist/assets/Icons/chevrons-right-left.svg +1 -0
- package/dist/assets/Icons/chevrons-right.svg +1 -0
- package/dist/assets/Icons/chevrons-up-down.svg +1 -0
- package/dist/assets/Icons/chevrons-up.svg +1 -0
- package/dist/assets/Icons/circle-arrow-down.svg +1 -0
- package/dist/assets/Icons/circle-arrow-left.svg +1 -0
- package/dist/assets/Icons/circle-arrow-out-down-left.svg +1 -0
- package/dist/assets/Icons/circle-arrow-out-down-right.svg +1 -0
- package/dist/assets/Icons/circle-arrow-out-up-left.svg +1 -0
- package/dist/assets/Icons/circle-arrow-out-up-right.svg +1 -0
- package/dist/assets/Icons/circle-arrow-right.svg +1 -0
- package/dist/assets/Icons/circle-arrow-up.svg +1 -0
- package/dist/assets/Icons/circle-check-big.svg +1 -0
- package/dist/assets/Icons/circle-check.svg +1 -0
- package/dist/assets/Icons/circle-chevron-down.svg +1 -0
- package/dist/assets/Icons/circle-chevron-left.svg +1 -0
- package/dist/assets/Icons/circle-chevron-right.svg +1 -0
- package/dist/assets/Icons/circle-chevron-up.svg +1 -0
- package/dist/assets/Icons/circle-dashed.svg +1 -0
- package/dist/assets/Icons/circle-dot-dashed.svg +1 -0
- package/dist/assets/Icons/circle-ellipsis.svg +1 -0
- package/dist/assets/Icons/circle-gauge.svg +1 -0
- package/dist/assets/Icons/circle-help.svg +1 -0
- package/dist/assets/Icons/circle-minus.svg +1 -0
- package/dist/assets/Icons/circle-plus.svg +1 -0
- package/dist/assets/Icons/circle-slash.svg +1 -0
- package/dist/assets/Icons/circle-slash2.svg +1 -0
- package/dist/assets/Icons/circle-stop.svg +1 -0
- package/dist/assets/Icons/circle.svg +1 -0
- package/dist/assets/Icons/clipboard-check.svg +1 -0
- package/dist/assets/Icons/clipboard-x.svg +1 -0
- package/dist/assets/Icons/clipboard.svg +1 -0
- package/dist/assets/Icons/clock-fading.svg +1 -0
- package/dist/assets/Icons/clock.svg +1 -0
- package/dist/assets/Icons/cloud-off.svg +1 -0
- package/dist/assets/Icons/cloud-sync.svg +1 -0
- package/dist/assets/Icons/cloud.svg +1 -0
- package/dist/assets/Icons/code.svg +1 -0
- package/dist/assets/Icons/collapse.svg +1 -0
- package/dist/assets/Icons/columns3-cog.svg +1 -0
- package/dist/assets/Icons/command.svg +1 -0
- package/dist/assets/Icons/compass.svg +1 -0
- package/dist/assets/Icons/copy-slash.svg +1 -0
- package/dist/assets/Icons/copy.svg +1 -0
- package/dist/assets/Icons/corner-down-left.svg +1 -0
- package/dist/assets/Icons/corner-down-right.svg +1 -0
- package/dist/assets/Icons/corner-left-down.svg +1 -0
- package/dist/assets/Icons/corner-left-up.svg +1 -0
- package/dist/assets/Icons/corner-right-down.svg +1 -0
- package/dist/assets/Icons/corner-right-up.svg +1 -0
- package/dist/assets/Icons/corner-up-left.svg +1 -0
- package/dist/assets/Icons/corner-up-right.svg +1 -0
- package/dist/assets/Icons/cpu.svg +1 -0
- package/dist/assets/Icons/credit-card.svg +1 -0
- package/dist/assets/Icons/crosshair.svg +1 -0
- package/dist/assets/Icons/ctrl.svg +1 -0
- package/dist/assets/Icons/database.svg +1 -0
- package/dist/assets/Icons/devianart-neutral.svg +1 -0
- package/dist/assets/Icons/devianart.svg +1 -0
- package/dist/assets/Icons/discord-neutral.svg +1 -0
- package/dist/assets/Icons/discord.svg +1 -0
- package/dist/assets/Icons/dollar-sign.svg +1 -0
- package/dist/assets/Icons/dot.svg +1 -0
- package/dist/assets/Icons/download.svg +1 -0
- package/dist/assets/Icons/dprofile-neutral.svg +1 -0
- package/dist/assets/Icons/dprofile.svg +1 -0
- package/dist/assets/Icons/dribbble-neutral.svg +1 -0
- package/dist/assets/Icons/dribbble.svg +1 -0
- package/dist/assets/Icons/droplet.svg +1 -0
- package/dist/assets/Icons/duplicate.svg +1 -0
- package/dist/assets/Icons/dzen-neutral.svg +1 -0
- package/dist/assets/Icons/dzen.svg +1 -0
- package/dist/assets/Icons/earth-lock.svg +1 -0
- package/dist/assets/Icons/earth.svg +1 -0
- package/dist/assets/Icons/ellipsis.svg +1 -0
- package/dist/assets/Icons/expand.svg +1 -0
- package/dist/assets/Icons/external-link.svg +1 -0
- package/dist/assets/Icons/eye-off.svg +1 -0
- package/dist/assets/Icons/eye.svg +1 -0
- package/dist/assets/Icons/facebook-neutral.svg +1 -0
- package/dist/assets/Icons/facebook.svg +1 -0
- package/dist/assets/Icons/fast-forward.svg +1 -0
- package/dist/assets/Icons/figma-neutral.svg +1 -0
- package/dist/assets/Icons/figma.svg +1 -0
- package/dist/assets/Icons/file-down.svg +1 -0
- package/dist/assets/Icons/file-plus.svg +1 -0
- package/dist/assets/Icons/file-text.svg +1 -0
- package/dist/assets/Icons/file.svg +1 -0
- package/dist/assets/Icons/film.svg +1 -0
- package/dist/assets/Icons/filter-x.svg +1 -0
- package/dist/assets/Icons/filter.svg +1 -0
- package/dist/assets/Icons/fingerprint-pattern.svg +1 -0
- package/dist/assets/Icons/flag.svg +1 -0
- package/dist/assets/Icons/flask-conical.svg +1 -0
- package/dist/assets/Icons/folder.svg +1 -0
- package/dist/assets/Icons/funnel-plus.svg +1 -0
- package/dist/assets/Icons/ghost.svg +1 -0
- package/dist/assets/Icons/git-branch.svg +1 -0
- package/dist/assets/Icons/git-commit-horizontal.svg +1 -0
- package/dist/assets/Icons/git-commit-vertical.svg +1 -0
- package/dist/assets/Icons/git-compare-arrows-alt.svg +1 -0
- package/dist/assets/Icons/git-compare-arrows.svg +1 -0
- package/dist/assets/Icons/git-compare.svg +1 -0
- package/dist/assets/Icons/git-fork.svg +1 -0
- package/dist/assets/Icons/git-graph.svg +1 -0
- package/dist/assets/Icons/git-merge.svg +1 -0
- package/dist/assets/Icons/git-pull-request-arrow.svg +1 -0
- package/dist/assets/Icons/git-pull-request-closed.svg +1 -0
- package/dist/assets/Icons/git-pull-request-create-arrow.svg +1 -0
- package/dist/assets/Icons/git-pull-request-create.svg +1 -0
- package/dist/assets/Icons/git-pull-request-draft.svg +1 -0
- package/dist/assets/Icons/git-pull-request.svg +1 -0
- package/dist/assets/Icons/github-neutral.svg +1 -0
- package/dist/assets/Icons/github.svg +1 -0
- package/dist/assets/Icons/globe-lock.svg +1 -0
- package/dist/assets/Icons/globe.svg +1 -0
- package/dist/assets/Icons/gmail-neutral.svg +1 -0
- package/dist/assets/Icons/gmail.svg +1 -0
- package/dist/assets/Icons/google-meet-neutral.svg +1 -0
- package/dist/assets/Icons/google-meet.svg +1 -0
- package/dist/assets/Icons/google-neutral.svg +1 -0
- package/dist/assets/Icons/google-play-neutral.svg +1 -0
- package/dist/assets/Icons/google-play.svg +1 -0
- package/dist/assets/Icons/google-podcast-neutral.svg +1 -0
- package/dist/assets/Icons/google-podcast.svg +1 -0
- package/dist/assets/Icons/google.svg +1 -0
- package/dist/assets/Icons/grip-horizontal.svg +1 -0
- package/dist/assets/Icons/grip-vertical.svg +1 -0
- package/dist/assets/Icons/hammer.svg +1 -0
- package/dist/assets/Icons/heart-pulse.svg +1 -0
- package/dist/assets/Icons/history.svg +1 -0
- package/dist/assets/Icons/home.svg +1 -0
- package/dist/assets/Icons/imo-neutral.svg +1 -0
- package/dist/assets/Icons/imo.svg +1 -0
- package/dist/assets/Icons/infinity.svg +1 -0
- package/dist/assets/Icons/info.svg +1 -0
- package/dist/assets/Icons/infobip-neutral.svg +1 -0
- package/dist/assets/Icons/infobip.svg +1 -0
- package/dist/assets/Icons/instagram-neutral.svg +1 -0
- package/dist/assets/Icons/instagram.svg +1 -0
- package/dist/assets/Icons/key-round.svg +1 -0
- package/dist/assets/Icons/key-square.svg +1 -0
- package/dist/assets/Icons/keyboard.svg +1 -0
- package/dist/assets/Icons/kickstarter-neutral.svg +1 -0
- package/dist/assets/Icons/kickstarter.svg +1 -0
- package/dist/assets/Icons/laptop.svg +1 -0
- package/dist/assets/Icons/layers.svg +1 -0
- package/dist/assets/Icons/layers2.svg +1 -0
- package/dist/assets/Icons/layers3.svg +1 -0
- package/dist/assets/Icons/layout-dashboard.svg +1 -0
- package/dist/assets/Icons/layout-grid.svg +1 -0
- package/dist/assets/Icons/layout-list.svg +1 -0
- package/dist/assets/Icons/layout-panel-left.svg +1 -0
- package/dist/assets/Icons/layout-panel-top.svg +1 -0
- package/dist/assets/Icons/layout-template.svg +1 -0
- package/dist/assets/Icons/library-big.svg +1 -0
- package/dist/assets/Icons/life-buoy.svg +1 -0
- package/dist/assets/Icons/lightbulb-off.svg +1 -0
- package/dist/assets/Icons/lightbulb.svg +1 -0
- package/dist/assets/Icons/line-neutral.svg +1 -0
- package/dist/assets/Icons/line.svg +1 -0
- package/dist/assets/Icons/link.svg +1 -0
- package/dist/assets/Icons/link2-off.svg +1 -0
- package/dist/assets/Icons/link2.svg +1 -0
- package/dist/assets/Icons/linkedin-neutral.svg +1 -0
- package/dist/assets/Icons/linkedin.svg +1 -0
- package/dist/assets/Icons/list-checks.svg +1 -0
- package/dist/assets/Icons/list-collapse.svg +1 -0
- package/dist/assets/Icons/list-filter.svg +1 -0
- package/dist/assets/Icons/list-minus.svg +1 -0
- package/dist/assets/Icons/list-ordered.svg +1 -0
- package/dist/assets/Icons/list-plus.svg +1 -0
- package/dist/assets/Icons/list-restart.svg +1 -0
- package/dist/assets/Icons/list-start.svg +1 -0
- package/dist/assets/Icons/list-todo.svg +1 -0
- package/dist/assets/Icons/list-tree.svg +1 -0
- package/dist/assets/Icons/list-video.svg +1 -0
- package/dist/assets/Icons/list-x.svg +1 -0
- package/dist/assets/Icons/list.svg +1 -0
- package/dist/assets/Icons/loader-circle.svg +1 -0
- package/dist/assets/Icons/loader.svg +1 -0
- package/dist/assets/Icons/lock-open.svg +1 -0
- package/dist/assets/Icons/lock.svg +1 -0
- package/dist/assets/Icons/log-in.svg +1 -0
- package/dist/assets/Icons/log-out.svg +1 -0
- package/dist/assets/Icons/mail-check.svg +1 -0
- package/dist/assets/Icons/mail-minus.svg +1 -0
- package/dist/assets/Icons/mail-open.svg +1 -0
- package/dist/assets/Icons/mail-plus.svg +1 -0
- package/dist/assets/Icons/mail-question.svg +1 -0
- package/dist/assets/Icons/mail-search.svg +1 -0
- package/dist/assets/Icons/mail-warning.svg +1 -0
- package/dist/assets/Icons/mail-x.svg +1 -0
- package/dist/assets/Icons/mail.svg +1 -0
- package/dist/assets/Icons/mailbox.svg +1 -0
- package/dist/assets/Icons/mailersend-neutral.svg +1 -0
- package/dist/assets/Icons/mailersend.svg +1 -0
- package/dist/assets/Icons/mailgun-neutral.svg +1 -0
- package/dist/assets/Icons/mailgun.svg +1 -0
- package/dist/assets/Icons/mailjet-neutral.svg +1 -0
- package/dist/assets/Icons/mailjet.svg +1 -0
- package/dist/assets/Icons/mails.svg +1 -0
- package/dist/assets/Icons/mailtrap-neutral.svg +1 -0
- package/dist/assets/Icons/mailtrap.svg +1 -0
- package/dist/assets/Icons/mandrill-neutral.svg +1 -0
- package/dist/assets/Icons/mandrill.svg +1 -0
- package/dist/assets/Icons/map-pin.svg +1 -0
- package/dist/assets/Icons/maqsam-neutral.svg +1 -0
- package/dist/assets/Icons/maqsam.svg +1 -0
- package/dist/assets/Icons/mattermost-neutral.svg +1 -0
- package/dist/assets/Icons/mattermost.svg +1 -0
- package/dist/assets/Icons/maximize.svg +1 -0
- package/dist/assets/Icons/maximize2.svg +1 -0
- package/dist/assets/Icons/medium-neutral.svg +1 -0
- package/dist/assets/Icons/medium.svg +1 -0
- package/dist/assets/Icons/megaphone-off.svg +1 -0
- package/dist/assets/Icons/megaphone.svg +1 -0
- package/dist/assets/Icons/menu.svg +1 -0
- package/dist/assets/Icons/merge.svg +1 -0
- package/dist/assets/Icons/message-square-code.svg +1 -0
- package/dist/assets/Icons/message-square-dashed.svg +1 -0
- package/dist/assets/Icons/message-square-diff.svg +1 -0
- package/dist/assets/Icons/message-square-dot.svg +1 -0
- package/dist/assets/Icons/message-square-heart.svg +1 -0
- package/dist/assets/Icons/message-square-off.svg +1 -0
- package/dist/assets/Icons/message-square-plus.svg +1 -0
- package/dist/assets/Icons/message-square-quote.svg +1 -0
- package/dist/assets/Icons/message-square-reply.svg +1 -0
- package/dist/assets/Icons/message-square-share.svg +1 -0
- package/dist/assets/Icons/message-square-text.svg +1 -0
- package/dist/assets/Icons/message-square-warning.svg +1 -0
- package/dist/assets/Icons/message-square-x.svg +1 -0
- package/dist/assets/Icons/message-square.svg +1 -0
- package/dist/assets/Icons/messages-square.svg +1 -0
- package/dist/assets/Icons/messenger-neutral.svg +1 -0
- package/dist/assets/Icons/messenger.svg +1 -0
- package/dist/assets/Icons/microsoft-neutral.svg +1 -0
- package/dist/assets/Icons/microsoft-teams-neutral.svg +1 -0
- package/dist/assets/Icons/microsoft-teams.svg +1 -0
- package/dist/assets/Icons/microsoft.svg +1 -0
- package/dist/assets/Icons/minimize.svg +1 -0
- package/dist/assets/Icons/minimize2.svg +1 -0
- package/dist/assets/Icons/minus.svg +1 -0
- package/dist/assets/Icons/moon.svg +1 -0
- package/dist/assets/Icons/mouse-pointer-ban.svg +1 -0
- package/dist/assets/Icons/mouse-pointer-click.svg +1 -0
- package/dist/assets/Icons/mouse-pointer.svg +1 -0
- package/dist/assets/Icons/mouse-pointer2.svg +1 -0
- package/dist/assets/Icons/mouse.svg +1 -0
- package/dist/assets/Icons/move-diagonal.svg +1 -0
- package/dist/assets/Icons/move-diagonal2.svg +1 -0
- package/dist/assets/Icons/move-down-left.svg +1 -0
- package/dist/assets/Icons/move-down-right.svg +1 -0
- package/dist/assets/Icons/move-down.svg +1 -0
- package/dist/assets/Icons/move-horizontal.svg +1 -0
- package/dist/assets/Icons/move-left.svg +1 -0
- package/dist/assets/Icons/move-right.svg +1 -0
- package/dist/assets/Icons/move-up-left.svg +1 -0
- package/dist/assets/Icons/move-up-right.svg +1 -0
- package/dist/assets/Icons/move-up.svg +1 -0
- package/dist/assets/Icons/move-vertical.svg +1 -0
- package/dist/assets/Icons/move3-d.svg +1 -0
- package/dist/assets/Icons/netcore-neutral.svg +1 -0
- package/dist/assets/Icons/netcore.svg +1 -0
- package/dist/assets/Icons/notebook-pen.svg +1 -0
- package/dist/assets/Icons/notebook-tabs.svg +1 -0
- package/dist/assets/Icons/notebook-text.svg +1 -0
- package/dist/assets/Icons/notebook.svg +1 -0
- package/dist/assets/Icons/notepad-text-dashed.svg +1 -0
- package/dist/assets/Icons/notepad-text.svg +1 -0
- package/dist/assets/Icons/notion-neutral.svg +1 -0
- package/dist/assets/Icons/notion.svg +1 -0
- package/dist/assets/Icons/octagon-alert.svg +1 -0
- package/dist/assets/Icons/octagon-pause.svg +1 -0
- package/dist/assets/Icons/octagon-x.svg +1 -0
- package/dist/assets/Icons/octagon.svg +1 -0
- package/dist/assets/Icons/ok-neutral.svg +1 -0
- package/dist/assets/Icons/ok-only-sign-neutral.svg +1 -0
- package/dist/assets/Icons/ok-only-sign.svg +1 -0
- package/dist/assets/Icons/ok.svg +1 -0
- package/dist/assets/Icons/onlyfans-neutral.svg +1 -0
- package/dist/assets/Icons/onlyfans.svg +1 -0
- package/dist/assets/Icons/option.svg +1 -0
- package/dist/assets/Icons/outlook365-neutral.svg +1 -0
- package/dist/assets/Icons/outlook365.svg +1 -0
- package/dist/assets/Icons/paintbrush.svg +1 -0
- package/dist/assets/Icons/panel-bottom-open.svg +1 -0
- package/dist/assets/Icons/panel-bottom.svg +1 -0
- package/dist/assets/Icons/panel-left-close.svg +1 -0
- package/dist/assets/Icons/panel-left-dashed.svg +1 -0
- package/dist/assets/Icons/panel-left-open.svg +1 -0
- package/dist/assets/Icons/panel-left.svg +1 -0
- package/dist/assets/Icons/panel-right-animated.svg +1 -0
- package/dist/assets/Icons/panel-right-close.svg +1 -0
- package/dist/assets/Icons/panel-right-dashed.svg +1 -0
- package/dist/assets/Icons/panel-right-open.svg +1 -0
- package/dist/assets/Icons/panel-right.svg +1 -0
- package/dist/assets/Icons/panel-top-bottom-dashed.svg +1 -0
- package/dist/assets/Icons/panel-top-close.svg +1 -0
- package/dist/assets/Icons/panel-top-open.svg +1 -0
- package/dist/assets/Icons/panel-top.svg +1 -0
- package/dist/assets/Icons/panels-left-bottom.svg +1 -0
- package/dist/assets/Icons/panels-right-bottom.svg +1 -0
- package/dist/assets/Icons/panels-top-left.svg +1 -0
- package/dist/assets/Icons/paperclip.svg +1 -0
- package/dist/assets/Icons/patreon-neutral.svg +1 -0
- package/dist/assets/Icons/patreon.svg +1 -0
- package/dist/assets/Icons/paypal-neutral.svg +1 -0
- package/dist/assets/Icons/paypal.svg +1 -0
- package/dist/assets/Icons/pen-line.svg +1 -0
- package/dist/assets/Icons/pen-off.svg +1 -0
- package/dist/assets/Icons/pen-tool.svg +1 -0
- package/dist/assets/Icons/pen.svg +1 -0
- package/dist/assets/Icons/pencil-line.svg +1 -0
- package/dist/assets/Icons/pencil-off.svg +1 -0
- package/dist/assets/Icons/pencil-ruler.svg +1 -0
- package/dist/assets/Icons/pencil.svg +1 -0
- package/dist/assets/Icons/pentagon.svg +1 -0
- package/dist/assets/Icons/percentage.svg +1 -0
- package/dist/assets/Icons/phone.svg +1 -0
- package/dist/assets/Icons/pin-off.svg +1 -0
- package/dist/assets/Icons/pin.svg +1 -0
- package/dist/assets/Icons/pinterest-neutral.svg +1 -0
- package/dist/assets/Icons/pinterest.svg +1 -0
- package/dist/assets/Icons/play.svg +1 -0
- package/dist/assets/Icons/plug.svg +1 -0
- package/dist/assets/Icons/plunk-neutral.svg +1 -0
- package/dist/assets/Icons/plunk.svg +1 -0
- package/dist/assets/Icons/plus.svg +1 -0
- package/dist/assets/Icons/postmark-neutral.svg +1 -0
- package/dist/assets/Icons/postmark.svg +1 -0
- package/dist/assets/Icons/product-hunt-neutral.svg +1 -0
- package/dist/assets/Icons/product-hunt.svg +1 -0
- package/dist/assets/Icons/quora-neutral.svg +1 -0
- package/dist/assets/Icons/quora.svg +1 -0
- package/dist/assets/Icons/quote.svg +1 -0
- package/dist/assets/Icons/radar.svg +1 -0
- package/dist/assets/Icons/reddit-neutral.svg +1 -0
- package/dist/assets/Icons/reddit.svg +1 -0
- package/dist/assets/Icons/redo-dot.svg +1 -0
- package/dist/assets/Icons/redo.svg +1 -0
- package/dist/assets/Icons/redo2.svg +1 -0
- package/dist/assets/Icons/refresh-ccw.svg +1 -0
- package/dist/assets/Icons/refresh-cw-off.svg +1 -0
- package/dist/assets/Icons/resend-neutral.svg +1 -0
- package/dist/assets/Icons/resend.svg +1 -0
- package/dist/assets/Icons/rss.svg +1 -0
- package/dist/assets/Icons/rules.svg +1 -0
- package/dist/assets/Icons/scan-line.svg +1 -0
- package/dist/assets/Icons/scroll-text.svg +1 -0
- package/dist/assets/Icons/search-hint.svg +1 -0
- package/dist/assets/Icons/search-x.svg +1 -0
- package/dist/assets/Icons/search.svg +1 -0
- package/dist/assets/Icons/sendgrid-neutral.svg +1 -0
- package/dist/assets/Icons/sendgrid.svg +1 -0
- package/dist/assets/Icons/server.svg +1 -0
- package/dist/assets/Icons/ses-neutral.svg +1 -0
- package/dist/assets/Icons/ses.svg +1 -0
- package/dist/assets/Icons/settings.svg +1 -0
- package/dist/assets/Icons/settings2.svg +1 -0
- package/dist/assets/Icons/shapes.svg +1 -0
- package/dist/assets/Icons/share.svg +1 -0
- package/dist/assets/Icons/sheet.svg +1 -0
- package/dist/assets/Icons/shield-alert.svg +1 -0
- package/dist/assets/Icons/shield-ban.svg +1 -0
- package/dist/assets/Icons/shield-check.svg +1 -0
- package/dist/assets/Icons/shield-ellipsis.svg +1 -0
- package/dist/assets/Icons/shield-half.svg +1 -0
- package/dist/assets/Icons/shield-minus.svg +1 -0
- package/dist/assets/Icons/shield-off.svg +1 -0
- package/dist/assets/Icons/shield-plus.svg +1 -0
- package/dist/assets/Icons/shield-question.svg +1 -0
- package/dist/assets/Icons/shield-user.svg +1 -0
- package/dist/assets/Icons/shield-x.svg +1 -0
- package/dist/assets/Icons/shield.svg +1 -0
- package/dist/assets/Icons/shift.svg +1 -0
- package/dist/assets/Icons/signal-neutral.svg +1 -0
- package/dist/assets/Icons/signal.svg +1 -0
- package/dist/assets/Icons/signpost.svg +1 -0
- package/dist/assets/Icons/sina-weibo-neutral.svg +1 -0
- package/dist/assets/Icons/sina-weibo.svg +1 -0
- package/dist/assets/Icons/skull.svg +1 -0
- package/dist/assets/Icons/skype-neutral.svg +1 -0
- package/dist/assets/Icons/skype.svg +1 -0
- package/dist/assets/Icons/slack-neutral.svg +1 -0
- package/dist/assets/Icons/slack.svg +1 -0
- package/dist/assets/Icons/sliders-horizontal.svg +1 -0
- package/dist/assets/Icons/sliders-vertical.svg +1 -0
- package/dist/assets/Icons/smtp-neutral.svg +1 -0
- package/dist/assets/Icons/smtp.svg +1 -0
- package/dist/assets/Icons/snapchat-neutral.svg +1 -0
- package/dist/assets/Icons/snapchat.svg +1 -0
- package/dist/assets/Icons/soundcloud-neutral.svg +1 -0
- package/dist/assets/Icons/soundcloud.svg +1 -0
- package/dist/assets/Icons/space.svg +1 -0
- package/dist/assets/Icons/sparkpost-neutral.svg +1 -0
- package/dist/assets/Icons/sparkpost.svg +1 -0
- package/dist/assets/Icons/speed.svg +1 -0
- package/dist/assets/Icons/split.svg +1 -0
- package/dist/assets/Icons/spotify-neutral.svg +1 -0
- package/dist/assets/Icons/spotify.svg +1 -0
- package/dist/assets/Icons/square-arrow-out-up-right.svg +1 -0
- package/dist/assets/Icons/square-minus.svg +1 -0
- package/dist/assets/Icons/square-pen.svg +1 -0
- package/dist/assets/Icons/square-plus.svg +1 -0
- package/dist/assets/Icons/square-user-round.svg +1 -0
- package/dist/assets/Icons/stack-overflow-neutral.svg +1 -0
- package/dist/assets/Icons/stack-overflow.svg +1 -0
- package/dist/assets/Icons/star.svg +1 -0
- package/dist/assets/Icons/sun.svg +1 -0
- package/dist/assets/Icons/syringe.svg +1 -0
- package/dist/assets/Icons/tag.svg +1 -0
- package/dist/assets/Icons/target.svg +1 -0
- package/dist/assets/Icons/teams-neutral.svg +1 -0
- package/dist/assets/Icons/teams.svg +1 -0
- package/dist/assets/Icons/telegram-neutral.svg +1 -0
- package/dist/assets/Icons/telegram-only-sign-neutral.svg +1 -0
- package/dist/assets/Icons/telegram-only-sign.svg +1 -0
- package/dist/assets/Icons/telegram.svg +1 -0
- package/dist/assets/Icons/terminal.svg +1 -0
- package/dist/assets/Icons/test-policies.svg +1 -0
- package/dist/assets/Icons/threads-neutral.svg +1 -0
- package/dist/assets/Icons/threads.svg +1 -0
- package/dist/assets/Icons/thumbs-down.svg +1 -0
- package/dist/assets/Icons/thumbs-up.svg +1 -0
- package/dist/assets/Icons/tiktok-neutral.svg +1 -0
- package/dist/assets/Icons/tiktok.svg +1 -0
- package/dist/assets/Icons/tinder-neutral.svg +1 -0
- package/dist/assets/Icons/tinder.svg +1 -0
- package/dist/assets/Icons/trash.svg +1 -0
- package/dist/assets/Icons/trash2.svg +1 -0
- package/dist/assets/Icons/triangle-alert.svg +1 -0
- package/dist/assets/Icons/tumblr-neutral.svg +1 -0
- package/dist/assets/Icons/tumblr.svg +1 -0
- package/dist/assets/Icons/twitch-neutral.svg +1 -0
- package/dist/assets/Icons/twitch.svg +1 -0
- package/dist/assets/Icons/undo-dot.svg +1 -0
- package/dist/assets/Icons/undo.svg +1 -0
- package/dist/assets/Icons/undo2.svg +1 -0
- package/dist/assets/Icons/unplug.svg +1 -0
- package/dist/assets/Icons/user-check.svg +1 -0
- package/dist/assets/Icons/user-minus.svg +1 -0
- package/dist/assets/Icons/user-plus.svg +1 -0
- package/dist/assets/Icons/user-round-x.svg +1 -0
- package/dist/assets/Icons/user-round.svg +1 -0
- package/dist/assets/Icons/user.svg +1 -0
- package/dist/assets/Icons/username.svg +1 -0
- package/dist/assets/Icons/users-round.svg +1 -0
- package/dist/assets/Icons/users.svg +1 -0
- package/dist/assets/Icons/viber-neutral.svg +1 -0
- package/dist/assets/Icons/viber.svg +1 -0
- package/dist/assets/Icons/video.svg +1 -0
- package/dist/assets/Icons/vimeo-neutral.svg +1 -0
- package/dist/assets/Icons/vimeo.svg +1 -0
- package/dist/assets/Icons/vk-music-neutral.svg +1 -0
- package/dist/assets/Icons/vk-music.svg +1 -0
- package/dist/assets/Icons/vk-neutral.svg +1 -0
- package/dist/assets/Icons/vk-only-sign-neutral.svg +1 -0
- package/dist/assets/Icons/vk-only-sign.svg +1 -0
- package/dist/assets/Icons/vk.svg +1 -0
- package/dist/assets/Icons/webhook-neutral.svg +1 -0
- package/dist/assets/Icons/webhook.svg +1 -0
- package/dist/assets/Icons/wechat-neutral.svg +1 -0
- package/dist/assets/Icons/wechat.svg +1 -0
- package/dist/assets/Icons/whatsapp-badge-neutral.svg +1 -0
- package/dist/assets/Icons/whatsapp-badge.svg +1 -0
- package/dist/assets/Icons/whatsapp-neutral.svg +1 -0
- package/dist/assets/Icons/whatsapp.svg +1 -0
- package/dist/assets/Icons/workflow.svg +1 -0
- package/dist/assets/Icons/wrap-text.svg +1 -0
- package/dist/assets/Icons/wrench.svg +1 -0
- package/dist/assets/Icons/x-ex-twitter-neutral.svg +1 -0
- package/dist/assets/Icons/x-ex-twitter.svg +1 -0
- package/dist/assets/Icons/x.svg +1 -0
- package/dist/assets/Icons/xing-neutral.svg +1 -0
- package/dist/assets/Icons/xing.svg +1 -0
- package/dist/assets/Icons/yandex-music-neutral.svg +1 -0
- package/dist/assets/Icons/yandex-music.svg +1 -0
- package/dist/assets/Icons/yelp-neutral.svg +1 -0
- package/dist/assets/Icons/yelp.svg +1 -0
- package/dist/assets/Icons/youtube-music-neutral.svg +1 -0
- package/dist/assets/Icons/youtube-music.svg +1 -0
- package/dist/assets/Icons/youtube-neutral.svg +1 -0
- package/dist/assets/Icons/youtube-shorts-neutral.svg +1 -0
- package/dist/assets/Icons/youtube-shorts.svg +1 -0
- package/dist/assets/Icons/youtube.svg +1 -0
- package/dist/assets/Icons/zap.svg +1 -0
- package/dist/assets/Icons/zoom-in.svg +1 -0
- package/dist/assets/Icons/zoom-neutral.svg +1 -0
- package/dist/assets/Icons/zoom-out.svg +1 -0
- package/dist/assets/Icons/zoom.svg +1 -0
- package/dist/assets/Icons/zulip-neutral.svg +1 -0
- package/dist/assets/Icons/zulip.svg +1 -0
- package/dist/assets/Logos/wallarm.svg +1 -0
- package/dist/assets.json +4666 -0
- package/dist/project/README.md +265 -0
- package/dist/project/components/Accordion/README.md +354 -0
- package/dist/project/components/Accordion/preview.html +2 -0
- package/dist/project/components/Accordion/stories.js +12 -0
- package/dist/project/components/AgentAvatar/README.md +127 -0
- package/dist/project/components/AgentAvatar/preview.html +2 -0
- package/dist/project/components/AgentAvatar/stories.js +12 -0
- package/dist/project/components/AgentAvatar/stories.md +1805 -0
- package/dist/project/components/AgentGlyph/README.md +1182 -0
- package/dist/project/components/AgentGlyph/preview.html +2 -0
- package/dist/project/components/AgentGlyph/stories.js +12 -0
- package/dist/project/components/AgentLookBuilder/README.md +269 -0
- package/dist/project/components/AgentLookBuilder/preview.html +2 -0
- package/dist/project/components/AgentLookBuilder/stories.js +12 -0
- package/dist/project/components/Alert/README.md +492 -0
- package/dist/project/components/Alert/preview.html +2 -0
- package/dist/project/components/Alert/stories.js +12 -0
- package/dist/project/components/AnimatedBackground/README.md +124 -0
- package/dist/project/components/AnimatedBackground/preview.html +2 -0
- package/dist/project/components/AnimatedBackground/stories.js +12 -0
- package/dist/project/components/AppShell/README.md +75 -0
- package/dist/project/components/AppShell/preview.html +2 -0
- package/dist/project/components/AppShell/stories.js +28 -0
- package/dist/project/components/AppShell/stories.md +2878 -0
- package/dist/project/components/ApprovalCard/README.md +353 -0
- package/dist/project/components/ApprovalCard/preview.html +2 -0
- package/dist/project/components/ApprovalCard/stories.js +12 -0
- package/dist/project/components/AreaChart/README.md +673 -0
- package/dist/project/components/AreaChart/preview.html +2 -0
- package/dist/project/components/AreaChart/stories.js +12 -0
- package/dist/project/components/AssistantMessage/README.md +724 -0
- package/dist/project/components/AssistantMessage/preview.html +2 -0
- package/dist/project/components/AssistantMessage/stories.js +55 -0
- package/dist/project/components/Attribute/README.md +1174 -0
- package/dist/project/components/Attribute/preview.html +2 -0
- package/dist/project/components/Attribute/stories.js +12 -0
- package/dist/project/components/Avatar/README.md +416 -0
- package/dist/project/components/Avatar/preview.html +2 -0
- package/dist/project/components/Avatar/stories.js +12 -0
- package/dist/project/components/Badge/README.md +853 -0
- package/dist/project/components/Badge/preview.html +2 -0
- package/dist/project/components/Badge/stories.js +12 -0
- package/dist/project/components/Banner/README.md +341 -0
- package/dist/project/components/Banner/preview.html +2 -0
- package/dist/project/components/Banner/stories.js +12 -0
- package/dist/project/components/BarList/README.md +757 -0
- package/dist/project/components/BarList/preview.html +2 -0
- package/dist/project/components/BarList/stories.js +12 -0
- package/dist/project/components/Breadcrumbs/README.md +274 -0
- package/dist/project/components/Breadcrumbs/preview.html +2 -0
- package/dist/project/components/Breadcrumbs/stories.js +12 -0
- package/dist/project/components/BulkBar/README.md +19 -0
- package/dist/project/components/Button/README.md +467 -0
- package/dist/project/components/Button/preview.html +2 -0
- package/dist/project/components/Button/stories.js +12 -0
- package/dist/project/components/Calendar/README.md +654 -0
- package/dist/project/components/Calendar/preview.html +2 -0
- package/dist/project/components/Calendar/stories.js +12 -0
- package/dist/project/components/Card/README.md +367 -0
- package/dist/project/components/Card/preview.html +2 -0
- package/dist/project/components/Card/stories.js +12 -0
- package/dist/project/components/ChainOfThought/README.md +412 -0
- package/dist/project/components/ChainOfThought/preview.html +2 -0
- package/dist/project/components/ChainOfThought/stories.js +12 -0
- package/dist/project/components/Chart/README.md +224 -0
- package/dist/project/components/Chart/preview.html +2 -0
- package/dist/project/components/Chart/stories.js +12 -0
- package/dist/project/components/Chat/README.md +1244 -0
- package/dist/project/components/Chat/preview.html +2 -0
- package/dist/project/components/Chat/stories.js +12 -0
- package/dist/project/components/ChatInput/README.md +378 -0
- package/dist/project/components/ChatInput/preview.html +2 -0
- package/dist/project/components/ChatInput/stories.js +12 -0
- package/dist/project/components/ChatPermissions/README.md +218 -0
- package/dist/project/components/ChatPermissions/preview.html +2 -0
- package/dist/project/components/ChatPermissions/stories.js +12 -0
- package/dist/project/components/Checkbox/README.md +367 -0
- package/dist/project/components/Checkbox/preview.html +2 -0
- package/dist/project/components/Checkbox/stories.js +12 -0
- package/dist/project/components/Code/README.md +243 -0
- package/dist/project/components/Code/preview.html +2 -0
- package/dist/project/components/Code/stories.js +12 -0
- package/dist/project/components/CodeEditor/README.md +280 -0
- package/dist/project/components/CodeEditor/preview.html +2 -0
- package/dist/project/components/CodeEditor/stories.js +162 -0
- package/dist/project/components/CodeEditor/stories.md +1533 -0
- package/dist/project/components/CodeSnippet/README.md +1352 -0
- package/dist/project/components/CodeSnippet/preview.html +2 -0
- package/dist/project/components/CodeSnippet/stories.js +156 -0
- package/dist/project/components/ColumnChart/README.md +521 -0
- package/dist/project/components/ColumnChart/preview.html +2 -0
- package/dist/project/components/ColumnChart/stories.js +12 -0
- package/dist/project/components/Conversation/README.md +314 -0
- package/dist/project/components/Conversation/preview.html +2 -0
- package/dist/project/components/Conversation/stories.js +12 -0
- package/dist/project/components/Copyable/README.md +406 -0
- package/dist/project/components/Copyable/preview.html +2 -0
- package/dist/project/components/Copyable/stories.js +12 -0
- package/dist/project/components/Country/README.md +226 -0
- package/dist/project/components/Country/preview.html +2 -0
- package/dist/project/components/Country/stories.js +12 -0
- package/dist/project/components/Cover/preview.html +43 -0
- package/dist/project/components/DateInput/README.md +458 -0
- package/dist/project/components/DateInput/preview.html +2 -0
- package/dist/project/components/DateInput/stories.js +12 -0
- package/dist/project/components/DateRangeInput/README.md +412 -0
- package/dist/project/components/DateRangeInput/preview.html +2 -0
- package/dist/project/components/DateRangeInput/stories.js +12 -0
- package/dist/project/components/Dialog/README.md +1140 -0
- package/dist/project/components/Dialog/preview.html +2 -0
- package/dist/project/components/Dialog/stories.js +12 -0
- package/dist/project/components/Drawer/README.md +1163 -0
- package/dist/project/components/Drawer/preview.html +2 -0
- package/dist/project/components/Drawer/stories.js +12 -0
- package/dist/project/components/DropdownMenu/README.md +678 -0
- package/dist/project/components/DropdownMenu/preview.html +2 -0
- package/dist/project/components/DropdownMenu/stories.js +12 -0
- package/dist/project/components/EmptyState/README.md +276 -0
- package/dist/project/components/EmptyState/preview.html +2 -0
- package/dist/project/components/EmptyState/stories.js +12 -0
- package/dist/project/components/FeedbackPulse/README.md +125 -0
- package/dist/project/components/FeedbackPulse/preview.html +2 -0
- package/dist/project/components/FeedbackPulse/stories.js +12 -0
- package/dist/project/components/Field/README.md +676 -0
- package/dist/project/components/Field/preview.html +2 -0
- package/dist/project/components/Field/stories.js +12 -0
- package/dist/project/components/FileUpload/README.md +544 -0
- package/dist/project/components/FileUpload/preview.html +2 -0
- package/dist/project/components/FileUpload/stories.js +12 -0
- package/dist/project/components/FilterCascade/README.md +348 -0
- package/dist/project/components/FilterCascade/preview.html +2 -0
- package/dist/project/components/FilterCascade/stories.js +12 -0
- package/dist/project/components/FilterDropdown/README.md +542 -0
- package/dist/project/components/FilterDropdown/preview.html +2 -0
- package/dist/project/components/FilterDropdown/stories.js +12 -0
- package/dist/project/components/FilterInput/README.md +416 -0
- package/dist/project/components/FilterInput/preview.html +2 -0
- package/dist/project/components/FilterInput/stories.js +12 -0
- package/dist/project/components/FilterInput/stories.md +6682 -0
- package/dist/project/components/Flex/README.md +225 -0
- package/dist/project/components/Flex/preview.html +2 -0
- package/dist/project/components/Flex/stories.js +12 -0
- package/dist/project/components/FormatDateTime/README.md +315 -0
- package/dist/project/components/FormatDateTime/preview.html +2 -0
- package/dist/project/components/FormatDateTime/stories.js +12 -0
- package/dist/project/components/FormatNumber/README.md +317 -0
- package/dist/project/components/FormatNumber/preview.html +2 -0
- package/dist/project/components/FormatNumber/stories.js +12 -0
- package/dist/project/components/Heading/README.md +240 -0
- package/dist/project/components/Heading/preview.html +2 -0
- package/dist/project/components/Heading/stories.js +12 -0
- package/dist/project/components/HorizontalBarStack/README.md +281 -0
- package/dist/project/components/HorizontalBarStack/preview.html +2 -0
- package/dist/project/components/HorizontalBarStack/stories.js +12 -0
- package/dist/project/components/HttpMethod/README.md +137 -0
- package/dist/project/components/HttpMethod/preview.html +2 -0
- package/dist/project/components/HttpMethod/stories.js +12 -0
- package/dist/project/components/ImageCropper/README.md +332 -0
- package/dist/project/components/ImageCropper/preview.html +2 -0
- package/dist/project/components/ImageCropper/stories.js +33 -0
- package/dist/project/components/Indicator/README.md +110 -0
- package/dist/project/components/Indicator/preview.html +2 -0
- package/dist/project/components/Indicator/stories.js +12 -0
- package/dist/project/components/InlineEdit/README.md +977 -0
- package/dist/project/components/InlineEdit/preview.html +2 -0
- package/dist/project/components/InlineEdit/stories.js +12 -0
- package/dist/project/components/Input/README.md +187 -0
- package/dist/project/components/Input/preview.html +2 -0
- package/dist/project/components/Input/stories.js +12 -0
- package/dist/project/components/InputGroup/README.md +423 -0
- package/dist/project/components/InputGroup/preview.html +2 -0
- package/dist/project/components/InputGroup/stories.js +12 -0
- package/dist/project/components/InputOTP/README.md +201 -0
- package/dist/project/components/InputOTP/preview.html +2 -0
- package/dist/project/components/InputOTP/stories.js +12 -0
- package/dist/project/components/Ip/README.md +226 -0
- package/dist/project/components/Ip/preview.html +2 -0
- package/dist/project/components/Ip/stories.js +12 -0
- package/dist/project/components/Kbd/README.md +126 -0
- package/dist/project/components/Kbd/preview.html +2 -0
- package/dist/project/components/Kbd/stories.js +12 -0
- package/dist/project/components/LineChart/README.md +1479 -0
- package/dist/project/components/LineChart/preview.html +2 -0
- package/dist/project/components/LineChart/stories.js +12 -0
- package/dist/project/components/Link/README.md +160 -0
- package/dist/project/components/Link/preview.html +2 -0
- package/dist/project/components/Link/stories.js +12 -0
- package/dist/project/components/List/README.md +181 -0
- package/dist/project/components/List/preview.html +2 -0
- package/dist/project/components/List/stories.js +12 -0
- package/dist/project/components/Loader/README.md +145 -0
- package/dist/project/components/Loader/preview.html +2 -0
- package/dist/project/components/Loader/stories.js +12 -0
- package/dist/project/components/Logo/README.md +183 -0
- package/dist/project/components/Logo/preview.html +2 -0
- package/dist/project/components/Logo/stories.js +12 -0
- package/dist/project/components/MessageActions/README.md +255 -0
- package/dist/project/components/MessageActions/preview.html +2 -0
- package/dist/project/components/MessageActions/stories.js +12 -0
- package/dist/project/components/Metric/README.md +324 -0
- package/dist/project/components/Metric/preview.html +2 -0
- package/dist/project/components/Metric/stories.js +12 -0
- package/dist/project/components/NavRail/README.md +25 -0
- package/dist/project/components/NotificationCenter/README.md +91 -0
- package/dist/project/components/NotificationCenter/preview.html +2 -0
- package/dist/project/components/NotificationCenter/stories.js +12 -0
- package/dist/project/components/NotificationCenter/stories.md +2170 -0
- package/dist/project/components/NumberInput/README.md +177 -0
- package/dist/project/components/NumberInput/preview.html +2 -0
- package/dist/project/components/NumberInput/stories.js +12 -0
- package/dist/project/components/NumericBadge/README.md +252 -0
- package/dist/project/components/NumericBadge/preview.html +2 -0
- package/dist/project/components/NumericBadge/stories.js +12 -0
- package/dist/project/components/OverflowList/README.md +324 -0
- package/dist/project/components/OverflowList/preview.html +2 -0
- package/dist/project/components/OverflowList/stories.js +12 -0
- package/dist/project/components/OverflowTooltip/README.md +421 -0
- package/dist/project/components/OverflowTooltip/preview.html +2 -0
- package/dist/project/components/OverflowTooltip/stories.js +12 -0
- package/dist/project/components/Overlay/README.md +95 -0
- package/dist/project/components/Overlay/preview.html +2 -0
- package/dist/project/components/Overlay/stories.js +12 -0
- package/dist/project/components/Overview/README.md +445 -0
- package/dist/project/components/Overview/preview.html +2 -0
- package/dist/project/components/Overview/stories.js +12 -0
- package/dist/project/components/Page/README.md +215 -0
- package/dist/project/components/Page/preview.html +2 -0
- package/dist/project/components/Page/stories.js +12 -0
- package/dist/project/components/Pagination/README.md +302 -0
- package/dist/project/components/Pagination/preview.html +2 -0
- package/dist/project/components/Pagination/stories.js +12 -0
- package/dist/project/components/ParameterPath/README.md +284 -0
- package/dist/project/components/ParameterPath/preview.html +2 -0
- package/dist/project/components/ParameterPath/stories.js +12 -0
- package/dist/project/components/PasswordComplexity/README.md +171 -0
- package/dist/project/components/PasswordComplexity/preview.html +2 -0
- package/dist/project/components/PasswordComplexity/stories.js +12 -0
- package/dist/project/components/PasswordInput/README.md +254 -0
- package/dist/project/components/PasswordInput/preview.html +2 -0
- package/dist/project/components/PasswordInput/stories.js +12 -0
- package/dist/project/components/PieChart/README.md +895 -0
- package/dist/project/components/PieChart/preview.html +2 -0
- package/dist/project/components/PieChart/stories.js +12 -0
- package/dist/project/components/Popover/README.md +282 -0
- package/dist/project/components/Popover/preview.html +2 -0
- package/dist/project/components/Popover/stories.js +12 -0
- package/dist/project/components/Progress/README.md +174 -0
- package/dist/project/components/Progress/preview.html +2 -0
- package/dist/project/components/Progress/stories.js +12 -0
- package/dist/project/components/Radio/README.md +264 -0
- package/dist/project/components/Radio/preview.html +2 -0
- package/dist/project/components/Radio/stories.js +12 -0
- package/dist/project/components/RemoteShell/README.md +1758 -0
- package/dist/project/components/RemoteShell/preview.html +2 -0
- package/dist/project/components/RemoteShell/stories.js +28 -0
- package/dist/project/components/Resizable/README.md +290 -0
- package/dist/project/components/Resizable/preview.html +2 -0
- package/dist/project/components/Resizable/stories.js +12 -0
- package/dist/project/components/ResponseCode/README.md +205 -0
- package/dist/project/components/ResponseCode/preview.html +2 -0
- package/dist/project/components/ResponseCode/stories.js +12 -0
- package/dist/project/components/ScrollArea/README.md +234 -0
- package/dist/project/components/ScrollArea/preview.html +2 -0
- package/dist/project/components/ScrollArea/stories.js +12 -0
- package/dist/project/components/SearchInput/README.md +158 -0
- package/dist/project/components/SearchInput/preview.html +2 -0
- package/dist/project/components/SearchInput/stories.js +12 -0
- package/dist/project/components/SearchModal/README.md +836 -0
- package/dist/project/components/SearchModal/preview.html +2 -0
- package/dist/project/components/SearchModal/stories.js +12 -0
- package/dist/project/components/SegmentedControl/README.md +382 -0
- package/dist/project/components/SegmentedControl/preview.html +2 -0
- package/dist/project/components/SegmentedControl/stories.js +12 -0
- package/dist/project/components/SegmentedTabs/README.md +390 -0
- package/dist/project/components/SegmentedTabs/preview.html +2 -0
- package/dist/project/components/SegmentedTabs/stories.js +12 -0
- package/dist/project/components/Select/README.md +1311 -0
- package/dist/project/components/Select/preview.html +2 -0
- package/dist/project/components/Select/stories.js +12 -0
- package/dist/project/components/Selection/README.md +648 -0
- package/dist/project/components/Selection/preview.html +2 -0
- package/dist/project/components/Selection/stories.js +12 -0
- package/dist/project/components/Separator/README.md +77 -0
- package/dist/project/components/Separator/preview.html +2 -0
- package/dist/project/components/Separator/stories.js +12 -0
- package/dist/project/components/Skeleton/README.md +358 -0
- package/dist/project/components/Skeleton/preview.html +2 -0
- package/dist/project/components/Skeleton/stories.js +12 -0
- package/dist/project/components/Slider/README.md +433 -0
- package/dist/project/components/Slider/preview.html +2 -0
- package/dist/project/components/Slider/stories.js +12 -0
- package/dist/project/components/SplashScreen/README.md +192 -0
- package/dist/project/components/SplashScreen/preview.html +2 -0
- package/dist/project/components/SplashScreen/stories.js +12 -0
- package/dist/project/components/SplitButton/README.md +402 -0
- package/dist/project/components/SplitButton/preview.html +2 -0
- package/dist/project/components/SplitButton/stories.js +12 -0
- package/dist/project/components/Stack/README.md +269 -0
- package/dist/project/components/Stack/preview.html +2 -0
- package/dist/project/components/Stack/stories.js +12 -0
- package/dist/project/components/Stepper/README.md +682 -0
- package/dist/project/components/Stepper/preview.html +2 -0
- package/dist/project/components/Stepper/stories.js +12 -0
- package/dist/project/components/Switch/README.md +236 -0
- package/dist/project/components/Switch/preview.html +2 -0
- package/dist/project/components/Switch/stories.js +12 -0
- package/dist/project/components/Table/README.md +471 -0
- package/dist/project/components/Table/preview.html +2 -0
- package/dist/project/components/Table/stories.js +12 -0
- package/dist/project/components/Table/stories.md +3697 -0
- package/dist/project/components/Tabs/README.md +443 -0
- package/dist/project/components/Tabs/preview.html +2 -0
- package/dist/project/components/Tabs/stories.js +12 -0
- package/dist/project/components/Tag/README.md +324 -0
- package/dist/project/components/Tag/preview.html +2 -0
- package/dist/project/components/Tag/stories.js +12 -0
- package/dist/project/components/Text/README.md +200 -0
- package/dist/project/components/Text/preview.html +2 -0
- package/dist/project/components/Text/stories.js +12 -0
- package/dist/project/components/Textarea/README.md +273 -0
- package/dist/project/components/Textarea/preview.html +2 -0
- package/dist/project/components/Textarea/stories.js +12 -0
- package/dist/project/components/TimeInput/README.md +359 -0
- package/dist/project/components/TimeInput/preview.html +2 -0
- package/dist/project/components/TimeInput/stories.js +12 -0
- package/dist/project/components/Timeline/README.md +204 -0
- package/dist/project/components/Timeline/preview.html +2 -0
- package/dist/project/components/Timeline/stories.js +12 -0
- package/dist/project/components/Toast/README.md +718 -0
- package/dist/project/components/Toast/preview.html +2 -0
- package/dist/project/components/Toast/stories.js +12 -0
- package/dist/project/components/ToggleButton/README.md +292 -0
- package/dist/project/components/ToggleButton/preview.html +2 -0
- package/dist/project/components/ToggleButton/stories.js +12 -0
- package/dist/project/components/Tooltip/README.md +199 -0
- package/dist/project/components/Tooltip/preview.html +2 -0
- package/dist/project/components/Tooltip/stories.js +12 -0
- package/dist/project/components/TopHeader/README.md +21 -0
- package/dist/project/components/Tour/README.md +532 -0
- package/dist/project/components/Tour/preview.html +2 -0
- package/dist/project/components/Tour/stories.js +12 -0
- package/dist/project/components/Tree/README.md +450 -0
- package/dist/project/components/Tree/preview.html +2 -0
- package/dist/project/components/Tree/stories.js +12 -0
- package/dist/project/components/TreeView/README.md +531 -0
- package/dist/project/components/TreeView/preview.html +2 -0
- package/dist/project/components/TreeView/stories.js +12 -0
- package/dist/project/components/UTILITIES.md +647 -0
- package/dist/project/components/UserMessage/README.md +166 -0
- package/dist/project/components/UserMessage/preview.html +2 -0
- package/dist/project/components/UserMessage/stories.js +12 -0
- package/dist/project/components/UtilityPage/README.md +147 -0
- package/dist/project/components/UtilityPage/preview.html +2 -0
- package/dist/project/components/UtilityPage/stories.js +12 -0
- package/dist/project/components/WallyAssistant/README.md +1380 -0
- package/dist/project/components/WallyAssistant/preview.html +2 -0
- package/dist/project/components/WallyAssistant/stories.js +12 -0
- package/dist/project/components/WallyIcon/README.md +130 -0
- package/dist/project/components/WallyIcon/preview.html +2 -0
- package/dist/project/components/WallyIcon/stories.js +12 -0
- package/dist/project/components/WallySkeleton/README.md +96 -0
- package/dist/project/components/WallySkeleton/preview.html +2 -0
- package/dist/project/components/WallySkeleton/stories.js +12 -0
- package/dist/project/components/bundle.css +18734 -0
- package/dist/project/components/bundle.js +167 -0
- package/dist/project/components/index.d.ts +27226 -0
- package/dist/project/design-system.json +35 -0
- package/dist/project/fonts/Geist-Variable.woff2 +0 -0
- package/dist/project/fonts/GeistMono-Variable.woff2 +0 -0
- package/dist/project/fonts/GeistPixel-Square.woff2 +0 -0
- package/dist/project/sampler.dc.html +238 -0
- package/dist/project/tokens.css +1395 -0
- package/dist/project/tokens.json +5235 -0
- package/dist/wallarm-sampler.dc.html +239 -0
- package/package.json +67 -3
|
@@ -0,0 +1,1163 @@
|
|
|
1
|
+
A side panel for work the reader does alongside the page — its differentiator is that it can run non-modal, so with `modal={false}` they can keep using what is behind it. Reach for `Dialog` when the panel is a decision to resolve now, since that is the same panel with the exit closed off.
|
|
2
|
+
|
|
3
|
+
## Props as canvas attributes
|
|
4
|
+
|
|
5
|
+
Use kebab-case attribute names. Pass non-string values through renderVals holes, including booleans. The full emitted API is in `components/index.d.ts`.
|
|
6
|
+
|
|
7
|
+
| Attribute | Type | Required | Default | Description |
|
|
8
|
+
| --- | --- | --- | --- | --- |
|
|
9
|
+
| `kind` | `"dialog" \| "drawer"` | no | `drawer` | Which overlay family this root belongs to. Drives the same-kind nesting counter behind the pushed-back animation: a Drawer only pushes back for a nested Drawer, a Dialog only for a nested Dialog. Set to 'dialog' by the Dialog component — consumers should not need to touch this. |
|
|
10
|
+
| `open` | `boolean \| undefined` | no | — | Controlled open state |
|
|
11
|
+
| `on-open-change` | `((open: boolean) => void) \| undefined` | no | — | Controlled open change handler |
|
|
12
|
+
| `close-on-escape` | `boolean \| undefined` | no | `true` | Whether ESC key closes the drawer (default: true) |
|
|
13
|
+
| `close-on-outside-click` | `boolean \| undefined` | no | `true` | Whether clicking outside closes the drawer (default: true) |
|
|
14
|
+
| `overlay` | `boolean \| undefined` | no | `true` | Overlay visibility (default: true) |
|
|
15
|
+
| `modal` | `boolean \| undefined` | no | `true` | Whether the drawer is modal — blocks interaction with the rest of the page (default: true) |
|
|
16
|
+
| `width` | `string \| number \| undefined` | no | — | Width - number for pixels, string for percentage (e.g., "50%") |
|
|
17
|
+
| `min-width` | `number \| undefined` | no | — | Minimum width in pixels |
|
|
18
|
+
| `max-width` | `number \| undefined` | no | — | Maximum width in pixels |
|
|
19
|
+
| `on-interact-outside` | `complex` | no | — | Fired when the user interacts outside the drawer (e.g. clicks the backdrop). |
|
|
20
|
+
| `on-escape-key-down` | `((event: KeyboardEvent) => void) \| undefined` | no | — | Fired when the user presses the Escape key while the drawer is open. |
|
|
21
|
+
| `data-testid` | `string \| undefined` | no | — | |
|
|
22
|
+
|
|
23
|
+
## Sub-components
|
|
24
|
+
|
|
25
|
+
- `WallarmDS.DrawerBody` — `DrawerBodyProps` in the declaration bundle.
|
|
26
|
+
- `WallarmDS.DrawerClose` — `DrawerCloseProps` in the declaration bundle.
|
|
27
|
+
- `WallarmDS.DrawerContent` — `DrawerContentProps` in the declaration bundle.
|
|
28
|
+
- `WallarmDS.DrawerDescription` — `DrawerDescriptionProps` in the declaration bundle.
|
|
29
|
+
- `WallarmDS.DrawerFooter` — `DrawerFooterProps` in the declaration bundle.
|
|
30
|
+
- `WallarmDS.DrawerFooterControls` — `DrawerFooterControlsProps` in the declaration bundle.
|
|
31
|
+
- `WallarmDS.DrawerHeader` — `DrawerHeaderProps` in the declaration bundle.
|
|
32
|
+
- `WallarmDS.DrawerPositioner` — `DrawerPositionerProps` in the declaration bundle.
|
|
33
|
+
- `WallarmDS.DrawerTitle` — `DrawerTitleProps` in the declaration bundle.
|
|
34
|
+
- `WallarmDS.DrawerTrigger` — `DrawerTriggerProps` in the declaration bundle.
|
|
35
|
+
- `WallarmDS.DrawerOverlay` — `DrawerOverlayProps` in the declaration bundle.
|
|
36
|
+
- `WallarmDS.DrawerPortal` — `DrawerPortalProps` in the declaration bundle.
|
|
37
|
+
- `WallarmDS.DrawerResizeHandle` — `DrawerResizeHandleProps` in the declaration bundle.
|
|
38
|
+
|
|
39
|
+
## Stories
|
|
40
|
+
|
|
41
|
+
### Basic
|
|
42
|
+
|
|
43
|
+
Trigger, content, title. The title is what a screen reader announces, so it is never
|
|
44
|
+
optional.
|
|
45
|
+
|
|
46
|
+
Source: Drawer/Drawer.stories.tsx#Basic
|
|
47
|
+
|
|
48
|
+
### WithFooter
|
|
49
|
+
|
|
50
|
+
`DrawerFooter` for the actions that commit the work. It stays put while the body scrolls.
|
|
51
|
+
|
|
52
|
+
Source: Drawer/Drawer.stories.tsx#WithFooter
|
|
53
|
+
|
|
54
|
+
### WithDescription
|
|
55
|
+
|
|
56
|
+
`DrawerDescription` under the title, wired to `aria-describedby` so it is read with the panel
|
|
57
|
+
rather than after it. `DrawerHeader` stacks the two, keeping the close button right-aligned.
|
|
58
|
+
|
|
59
|
+
Source: Drawer/Drawer.stories.tsx#WithDescription
|
|
60
|
+
|
|
61
|
+
### WithFooterLeftActions
|
|
62
|
+
|
|
63
|
+
A left-aligned secondary action, separated from the committing pair on the right.
|
|
64
|
+
|
|
65
|
+
Source: Drawer/Drawer.stories.tsx#WithFooterLeftActions
|
|
66
|
+
|
|
67
|
+
### Sizes
|
|
68
|
+
|
|
69
|
+
The standard widths. A drawer earns more width than a dialog because the reader is working in
|
|
70
|
+
it rather than answering it.
|
|
71
|
+
|
|
72
|
+
Source: Drawer/Drawer.stories.tsx#Sizes
|
|
73
|
+
|
|
74
|
+
### CustomSizes
|
|
75
|
+
|
|
76
|
+
Explicit width bounds for content the standard steps do not fit.
|
|
77
|
+
|
|
78
|
+
Source: Drawer/Drawer.stories.tsx#CustomSizes
|
|
79
|
+
|
|
80
|
+
### Resizable
|
|
81
|
+
|
|
82
|
+
`DrawerResizeHandle` lets the reader set the width themselves — the part `Dialog`
|
|
83
|
+
deliberately does not export, because a decision does not need resizing.
|
|
84
|
+
|
|
85
|
+
Source: Drawer/Drawer.stories.tsx#Resizable
|
|
86
|
+
|
|
87
|
+
### ResizableWithOverflowList
|
|
88
|
+
|
|
89
|
+
Resizing with content that reflows, which is the case worth testing: the panel is only useful
|
|
90
|
+
at its new width if what is inside adapts.
|
|
91
|
+
|
|
92
|
+
Source: Drawer/Drawer.stories.tsx#ResizableWithOverflowList
|
|
93
|
+
|
|
94
|
+
### LongValues
|
|
95
|
+
|
|
96
|
+
A long value — a URL, an id — truncates inside the body instead of widening the drawer, so the
|
|
97
|
+
full-width field below it stays within the drawer too: the body never grows past the drawer's
|
|
98
|
+
width. Content that is genuinely wider brings its own `overflow-x-auto` container.
|
|
99
|
+
|
|
100
|
+
Source: Drawer/Drawer.stories.tsx#LongValues
|
|
101
|
+
|
|
102
|
+
### Scrollable
|
|
103
|
+
|
|
104
|
+
The body scrolls between a fixed header and footer, so the actions never scroll away from the
|
|
105
|
+
work.
|
|
106
|
+
|
|
107
|
+
Source: Drawer/Drawer.stories.tsx#Scrollable
|
|
108
|
+
|
|
109
|
+
### Controlled
|
|
110
|
+
|
|
111
|
+
Owning `open`, for a panel something outside it opens or closes.
|
|
112
|
+
|
|
113
|
+
Source: Drawer/Drawer.stories.tsx#Controlled
|
|
114
|
+
|
|
115
|
+
### NoClosableOnEsc
|
|
116
|
+
|
|
117
|
+
Escape disabled, for a panel holding unsaved work where a reflex keystroke would lose it.
|
|
118
|
+
|
|
119
|
+
Source: Drawer/Drawer.stories.tsx#NoClosableOnEsc
|
|
120
|
+
|
|
121
|
+
### NoOverlay
|
|
122
|
+
|
|
123
|
+
Without the backdrop, which is how a drawer reads as non-blocking. Pair it with
|
|
124
|
+
`modal={false}` if the page behind should also stay usable.
|
|
125
|
+
|
|
126
|
+
Source: Drawer/Drawer.stories.tsx#NoOverlay
|
|
127
|
+
|
|
128
|
+
### NonModal
|
|
129
|
+
|
|
130
|
+
`modal={false}` with no overlay keeps the page behind usable: scroll it, click it, keep typing.
|
|
131
|
+
Closing returns focus to the trigger without scrolling the page back to it — unless the drawer
|
|
132
|
+
was closed by a click on the page, where the user has already moved on.
|
|
133
|
+
|
|
134
|
+
Source: Drawer/Drawer.stories.tsx#NonModal
|
|
135
|
+
|
|
136
|
+
### WithNested
|
|
137
|
+
|
|
138
|
+
A drawer from a drawer: same family, so the outer one steps back and the depth is legible.
|
|
139
|
+
|
|
140
|
+
Source: Drawer/Drawer.stories.tsx#WithNested
|
|
141
|
+
|
|
142
|
+
### WithNestedDialog
|
|
143
|
+
|
|
144
|
+
A dialog opened from a drawer — different family, so the drawer stays put rather than
|
|
145
|
+
scaling. That separation is what `kind` exists for.
|
|
146
|
+
|
|
147
|
+
Source: Drawer/Drawer.stories.tsx#WithNestedDialog
|
|
148
|
+
|
|
149
|
+
### WithNestedSelect
|
|
150
|
+
|
|
151
|
+
A `Select` inside a drawer, checking its menu escapes the panel instead of being clipped.
|
|
152
|
+
|
|
153
|
+
Source: Drawer/Drawer.stories.tsx#WithNestedSelect
|
|
154
|
+
|
|
155
|
+
### WithTabs
|
|
156
|
+
|
|
157
|
+
Tabs inside a drawer, which suits a panel with several facets of one subject.
|
|
158
|
+
|
|
159
|
+
Source: Drawer/Drawer.stories.tsx#WithTabs
|
|
160
|
+
|
|
161
|
+
## Story sources
|
|
162
|
+
|
|
163
|
+
### Drawer/Drawer.stories.tsx
|
|
164
|
+
|
|
165
|
+
```tsx
|
|
166
|
+
import { useState } from 'react';
|
|
167
|
+
import { createListCollection } from '@ark-ui/react/collection';
|
|
168
|
+
import type { Meta, StoryFn } from 'storybook-react-rsbuild';
|
|
169
|
+
import { PanelRight } from '../../icons';
|
|
170
|
+
import { Attribute, AttributeLabel, AttributeValue } from '../Attribute';
|
|
171
|
+
import { Button } from '../Button';
|
|
172
|
+
import {
|
|
173
|
+
Dialog,
|
|
174
|
+
DialogBody,
|
|
175
|
+
DialogContent,
|
|
176
|
+
DialogHeader,
|
|
177
|
+
DialogTitle,
|
|
178
|
+
DialogTrigger,
|
|
179
|
+
} from '../Dialog';
|
|
180
|
+
import {
|
|
181
|
+
DropdownMenu,
|
|
182
|
+
DropdownMenuContent,
|
|
183
|
+
DropdownMenuItem,
|
|
184
|
+
DropdownMenuTrigger,
|
|
185
|
+
} from '../DropdownMenu';
|
|
186
|
+
import { Input } from '../Input';
|
|
187
|
+
import { OverflowList } from '../OverflowList';
|
|
188
|
+
import {
|
|
189
|
+
Select,
|
|
190
|
+
SelectButton,
|
|
191
|
+
SelectContent,
|
|
192
|
+
SelectOption,
|
|
193
|
+
SelectOptionIndicator,
|
|
194
|
+
SelectOptionText,
|
|
195
|
+
SelectPositioner,
|
|
196
|
+
} from '../Select';
|
|
197
|
+
import { HStack, VStack } from '../Stack';
|
|
198
|
+
import { Switch, SwitchControl, SwitchLabel } from '../Switch';
|
|
199
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from '../Tabs';
|
|
200
|
+
import { Tag } from '../Tag';
|
|
201
|
+
import { Text } from '../Text';
|
|
202
|
+
import { DRAWER_SIZES, DRAWER_WIDTH_CONSTRAINTS } from './constants';
|
|
203
|
+
import { Drawer, type DrawerProps } from './Drawer';
|
|
204
|
+
import { DrawerBody } from './DrawerBody';
|
|
205
|
+
import { DrawerClose } from './DrawerClose';
|
|
206
|
+
import { DrawerContent } from './DrawerContent';
|
|
207
|
+
import { DrawerDescription } from './DrawerDescription';
|
|
208
|
+
import { DrawerFooter } from './DrawerFooter';
|
|
209
|
+
import { DrawerFooterControls } from './DrawerFooterControls';
|
|
210
|
+
import { DrawerHeader } from './DrawerHeader';
|
|
211
|
+
import { DrawerResizeHandle } from './DrawerResizeHandle';
|
|
212
|
+
import { DrawerTitle } from './DrawerTitle';
|
|
213
|
+
import { DrawerTrigger } from './DrawerTrigger';
|
|
214
|
+
|
|
215
|
+
const DESCRIPTION = [
|
|
216
|
+
'A side panel for work the reader does alongside the page — its differentiator is that it can run non-modal, so with `modal={false}` they can keep using what is behind it.',
|
|
217
|
+
'Reach for `Dialog` when the panel is a decision to resolve now, since that is the same panel with the exit closed off.',
|
|
218
|
+
].join(' ');
|
|
219
|
+
|
|
220
|
+
const meta = {
|
|
221
|
+
title: 'Overlay/Drawer',
|
|
222
|
+
component: Drawer,
|
|
223
|
+
subcomponents: {
|
|
224
|
+
DrawerTrigger,
|
|
225
|
+
DrawerContent,
|
|
226
|
+
DrawerHeader,
|
|
227
|
+
DrawerDescription,
|
|
228
|
+
DrawerBody,
|
|
229
|
+
DrawerFooter,
|
|
230
|
+
DrawerClose,
|
|
231
|
+
DrawerResizeHandle,
|
|
232
|
+
},
|
|
233
|
+
parameters: {
|
|
234
|
+
layout: 'centered',
|
|
235
|
+
docs: {
|
|
236
|
+
description: {
|
|
237
|
+
component: DESCRIPTION,
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
argTypes: {
|
|
242
|
+
open: {
|
|
243
|
+
control: { type: 'boolean' },
|
|
244
|
+
description: 'Whether the drawer is open',
|
|
245
|
+
},
|
|
246
|
+
width: {
|
|
247
|
+
control: { type: 'number' },
|
|
248
|
+
description: `Initial width of the drawer. Presets: small=${DRAWER_SIZES.small}, medium=${DRAWER_SIZES.medium}, large=${DRAWER_SIZES.large}`,
|
|
249
|
+
defaultValue: DRAWER_SIZES.small,
|
|
250
|
+
},
|
|
251
|
+
minWidth: {
|
|
252
|
+
control: { type: 'number' },
|
|
253
|
+
description: 'Minimum width when resizing',
|
|
254
|
+
defaultValue: DRAWER_WIDTH_CONSTRAINTS.min,
|
|
255
|
+
},
|
|
256
|
+
maxWidth: {
|
|
257
|
+
control: { type: 'number' },
|
|
258
|
+
description: 'Maximum width when resizing',
|
|
259
|
+
defaultValue: DRAWER_WIDTH_CONSTRAINTS.max,
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
decorators: [],
|
|
263
|
+
} satisfies Meta<typeof Drawer>;
|
|
264
|
+
|
|
265
|
+
export default meta;
|
|
266
|
+
|
|
267
|
+
/** Content placeholder styled like Figma designs - fills available space */
|
|
268
|
+
const ContentPlaceholder = ({
|
|
269
|
+
fillHeight = false,
|
|
270
|
+
height,
|
|
271
|
+
}: {
|
|
272
|
+
fillHeight?: boolean;
|
|
273
|
+
height?: number;
|
|
274
|
+
}) => (
|
|
275
|
+
<div
|
|
276
|
+
className={`w-full rounded-12 bg-bg-surface-5 ${fillHeight ? 'flex-1 min-h-0' : ''}`}
|
|
277
|
+
style={height ? { height: `${height}px` } : fillHeight ? undefined : { height: '200px' }}
|
|
278
|
+
/>
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Trigger, content, title. The title is what a screen reader announces, so it is never
|
|
283
|
+
* optional.
|
|
284
|
+
*/
|
|
285
|
+
export const Basic: StoryFn<DrawerProps> = () => {
|
|
286
|
+
return (
|
|
287
|
+
<Drawer data-testid='drawer'>
|
|
288
|
+
<DrawerTrigger asChild>
|
|
289
|
+
<Button variant='outline' color='neutral'>
|
|
290
|
+
Open Drawer
|
|
291
|
+
</Button>
|
|
292
|
+
</DrawerTrigger>
|
|
293
|
+
|
|
294
|
+
<DrawerContent>
|
|
295
|
+
<DrawerHeader>
|
|
296
|
+
<DrawerTitle>Drawer Title</DrawerTitle>
|
|
297
|
+
</DrawerHeader>
|
|
298
|
+
|
|
299
|
+
<DrawerBody>
|
|
300
|
+
<ContentPlaceholder fillHeight />
|
|
301
|
+
</DrawerBody>
|
|
302
|
+
</DrawerContent>
|
|
303
|
+
</Drawer>
|
|
304
|
+
);
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* `DrawerFooter` for the actions that commit the work. It stays put while the body scrolls.
|
|
309
|
+
*/
|
|
310
|
+
export const WithFooter: StoryFn<DrawerProps> = () => {
|
|
311
|
+
return (
|
|
312
|
+
<Drawer>
|
|
313
|
+
<DrawerTrigger asChild>
|
|
314
|
+
<Button variant='outline' color='neutral'>
|
|
315
|
+
Open Drawer
|
|
316
|
+
</Button>
|
|
317
|
+
</DrawerTrigger>
|
|
318
|
+
|
|
319
|
+
<DrawerContent>
|
|
320
|
+
<DrawerHeader>
|
|
321
|
+
<DrawerTitle>Drawer's title</DrawerTitle>
|
|
322
|
+
</DrawerHeader>
|
|
323
|
+
<DrawerBody>
|
|
324
|
+
<ContentPlaceholder fillHeight />
|
|
325
|
+
</DrawerBody>
|
|
326
|
+
<DrawerFooter>
|
|
327
|
+
<DrawerFooterControls>
|
|
328
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
329
|
+
Button
|
|
330
|
+
</Button>
|
|
331
|
+
<Button variant='primary' color='brand' size='large'>
|
|
332
|
+
Button
|
|
333
|
+
</Button>
|
|
334
|
+
</DrawerFooterControls>
|
|
335
|
+
</DrawerFooter>
|
|
336
|
+
</DrawerContent>
|
|
337
|
+
</Drawer>
|
|
338
|
+
);
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* `DrawerDescription` under the title, wired to `aria-describedby` so it is read with the panel
|
|
343
|
+
* rather than after it. `DrawerHeader` stacks the two, keeping the close button right-aligned.
|
|
344
|
+
*/
|
|
345
|
+
export const WithDescription: StoryFn<DrawerProps> = () => {
|
|
346
|
+
return (
|
|
347
|
+
<Drawer>
|
|
348
|
+
<DrawerTrigger asChild>
|
|
349
|
+
<Button variant='outline' color='neutral'>
|
|
350
|
+
Open Drawer
|
|
351
|
+
</Button>
|
|
352
|
+
</DrawerTrigger>
|
|
353
|
+
|
|
354
|
+
<DrawerContent>
|
|
355
|
+
<DrawerHeader>
|
|
356
|
+
<DrawerTitle>Drawer's title</DrawerTitle>
|
|
357
|
+
<DrawerDescription>Description TBD</DrawerDescription>
|
|
358
|
+
</DrawerHeader>
|
|
359
|
+
<DrawerBody>
|
|
360
|
+
<ContentPlaceholder fillHeight />
|
|
361
|
+
</DrawerBody>
|
|
362
|
+
<DrawerFooter>
|
|
363
|
+
<DrawerFooterControls>
|
|
364
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
365
|
+
Button
|
|
366
|
+
</Button>
|
|
367
|
+
<Button variant='primary' color='brand' size='large'>
|
|
368
|
+
Button
|
|
369
|
+
</Button>
|
|
370
|
+
</DrawerFooterControls>
|
|
371
|
+
</DrawerFooter>
|
|
372
|
+
</DrawerContent>
|
|
373
|
+
</Drawer>
|
|
374
|
+
);
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* A left-aligned secondary action, separated from the committing pair on the right.
|
|
379
|
+
*/
|
|
380
|
+
export const WithFooterLeftActions: StoryFn<DrawerProps> = () => (
|
|
381
|
+
<Drawer>
|
|
382
|
+
<DrawerTrigger asChild>
|
|
383
|
+
<Button variant='outline' color='neutral'>
|
|
384
|
+
Open with Footer Actions
|
|
385
|
+
</Button>
|
|
386
|
+
</DrawerTrigger>
|
|
387
|
+
<DrawerContent>
|
|
388
|
+
<DrawerHeader>
|
|
389
|
+
<DrawerTitle>Footer with Left Actions</DrawerTitle>
|
|
390
|
+
</DrawerHeader>
|
|
391
|
+
|
|
392
|
+
<DrawerBody>
|
|
393
|
+
<ContentPlaceholder fillHeight />
|
|
394
|
+
</DrawerBody>
|
|
395
|
+
|
|
396
|
+
<DrawerFooter>
|
|
397
|
+
<DrawerFooterControls placement='left'>
|
|
398
|
+
<Switch>
|
|
399
|
+
<SwitchControl />
|
|
400
|
+
<SwitchLabel>Remember choice</SwitchLabel>
|
|
401
|
+
</Switch>
|
|
402
|
+
</DrawerFooterControls>
|
|
403
|
+
|
|
404
|
+
<DrawerClose asChild>
|
|
405
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
406
|
+
Cancel
|
|
407
|
+
</Button>
|
|
408
|
+
</DrawerClose>
|
|
409
|
+
<Button variant='primary' color='brand' size='large'>
|
|
410
|
+
Apply
|
|
411
|
+
</Button>
|
|
412
|
+
</DrawerFooter>
|
|
413
|
+
</DrawerContent>
|
|
414
|
+
</Drawer>
|
|
415
|
+
);
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* The standard widths. A drawer earns more width than a dialog because the reader is working in
|
|
419
|
+
* it rather than answering it.
|
|
420
|
+
*/
|
|
421
|
+
export const Sizes: StoryFn<DrawerProps> = () => (
|
|
422
|
+
<HStack gap={8} justify='center'>
|
|
423
|
+
<Drawer width={DRAWER_SIZES.small}>
|
|
424
|
+
<DrawerTrigger asChild>
|
|
425
|
+
<Button variant='outline' color='neutral'>
|
|
426
|
+
Open Small ({DRAWER_SIZES.small}px)
|
|
427
|
+
</Button>
|
|
428
|
+
</DrawerTrigger>
|
|
429
|
+
<DrawerContent>
|
|
430
|
+
<DrawerHeader>
|
|
431
|
+
<DrawerTitle>Small Drawer ({DRAWER_SIZES.small}px)</DrawerTitle>
|
|
432
|
+
</DrawerHeader>
|
|
433
|
+
|
|
434
|
+
<DrawerBody>
|
|
435
|
+
<ContentPlaceholder fillHeight />
|
|
436
|
+
</DrawerBody>
|
|
437
|
+
</DrawerContent>
|
|
438
|
+
</Drawer>
|
|
439
|
+
|
|
440
|
+
<Drawer width={DRAWER_SIZES.medium}>
|
|
441
|
+
<DrawerTrigger asChild>
|
|
442
|
+
<Button variant='outline' color='neutral'>
|
|
443
|
+
Open Medium ({DRAWER_SIZES.medium}px)
|
|
444
|
+
</Button>
|
|
445
|
+
</DrawerTrigger>
|
|
446
|
+
<DrawerContent>
|
|
447
|
+
<DrawerHeader>
|
|
448
|
+
<DrawerTitle>Medium Drawer ({DRAWER_SIZES.medium}px)</DrawerTitle>
|
|
449
|
+
</DrawerHeader>
|
|
450
|
+
|
|
451
|
+
<DrawerBody>
|
|
452
|
+
<ContentPlaceholder fillHeight />
|
|
453
|
+
</DrawerBody>
|
|
454
|
+
</DrawerContent>
|
|
455
|
+
</Drawer>
|
|
456
|
+
|
|
457
|
+
<Drawer width={DRAWER_SIZES.large}>
|
|
458
|
+
<DrawerTrigger asChild>
|
|
459
|
+
<Button variant='outline' color='neutral'>
|
|
460
|
+
Open Large ({DRAWER_SIZES.large}px)
|
|
461
|
+
</Button>
|
|
462
|
+
</DrawerTrigger>
|
|
463
|
+
<DrawerContent>
|
|
464
|
+
<DrawerHeader>
|
|
465
|
+
<DrawerTitle>Large Drawer ({DRAWER_SIZES.large}px)</DrawerTitle>
|
|
466
|
+
</DrawerHeader>
|
|
467
|
+
|
|
468
|
+
<DrawerBody>
|
|
469
|
+
<ContentPlaceholder fillHeight />
|
|
470
|
+
</DrawerBody>
|
|
471
|
+
</DrawerContent>
|
|
472
|
+
</Drawer>
|
|
473
|
+
</HStack>
|
|
474
|
+
);
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Explicit width bounds for content the standard steps do not fit.
|
|
478
|
+
*/
|
|
479
|
+
export const CustomSizes: StoryFn<DrawerProps> = () => {
|
|
480
|
+
return (
|
|
481
|
+
<HStack gap={8} justify='center'>
|
|
482
|
+
<Drawer width='50%'>
|
|
483
|
+
<DrawerTrigger asChild>
|
|
484
|
+
<Button variant='outline' color='neutral'>
|
|
485
|
+
50% Width
|
|
486
|
+
</Button>
|
|
487
|
+
</DrawerTrigger>
|
|
488
|
+
|
|
489
|
+
<DrawerContent>
|
|
490
|
+
<DrawerHeader>
|
|
491
|
+
<DrawerTitle>50% Width Drawer</DrawerTitle>
|
|
492
|
+
</DrawerHeader>
|
|
493
|
+
|
|
494
|
+
<DrawerBody>
|
|
495
|
+
<div className='py-12'>
|
|
496
|
+
<p>This drawer takes 50% of the viewport width.</p>
|
|
497
|
+
</div>
|
|
498
|
+
</DrawerBody>
|
|
499
|
+
</DrawerContent>
|
|
500
|
+
</Drawer>
|
|
501
|
+
|
|
502
|
+
<Drawer width={1000}>
|
|
503
|
+
<DrawerTrigger asChild>
|
|
504
|
+
<Button variant='outline' color='neutral'>
|
|
505
|
+
1000px Width
|
|
506
|
+
</Button>
|
|
507
|
+
</DrawerTrigger>
|
|
508
|
+
|
|
509
|
+
<DrawerContent>
|
|
510
|
+
<DrawerHeader>
|
|
511
|
+
<DrawerTitle>1000px Width Drawer</DrawerTitle>
|
|
512
|
+
</DrawerHeader>
|
|
513
|
+
|
|
514
|
+
<DrawerBody>
|
|
515
|
+
<div className='py-12'>
|
|
516
|
+
<p>This drawer has a fixed width of 1000px.</p>
|
|
517
|
+
</div>
|
|
518
|
+
</DrawerBody>
|
|
519
|
+
</DrawerContent>
|
|
520
|
+
</Drawer>
|
|
521
|
+
</HStack>
|
|
522
|
+
);
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
/**
|
|
526
|
+
* `DrawerResizeHandle` lets the reader set the width themselves — the part `Dialog`
|
|
527
|
+
* deliberately does not export, because a decision does not need resizing.
|
|
528
|
+
*/
|
|
529
|
+
export const Resizable: StoryFn<DrawerProps> = () => {
|
|
530
|
+
return (
|
|
531
|
+
<VStack gap={12}>
|
|
532
|
+
<Drawer width={800}>
|
|
533
|
+
<DrawerTrigger asChild>
|
|
534
|
+
<Button variant='outline' color='neutral'>
|
|
535
|
+
Open Resizable Drawer (as number)
|
|
536
|
+
</Button>
|
|
537
|
+
</DrawerTrigger>
|
|
538
|
+
|
|
539
|
+
<DrawerContent>
|
|
540
|
+
<DrawerResizeHandle />
|
|
541
|
+
<DrawerHeader>
|
|
542
|
+
<DrawerTitle>Resizable Drawer</DrawerTitle>
|
|
543
|
+
</DrawerHeader>
|
|
544
|
+
|
|
545
|
+
<DrawerBody>
|
|
546
|
+
<div className='py-12'>
|
|
547
|
+
<p className='mb-16'>Drag the left edge to resize this drawer.</p>
|
|
548
|
+
<ContentPlaceholder height={300} />
|
|
549
|
+
</div>
|
|
550
|
+
</DrawerBody>
|
|
551
|
+
</DrawerContent>
|
|
552
|
+
</Drawer>
|
|
553
|
+
|
|
554
|
+
<Drawer width='900px'>
|
|
555
|
+
<DrawerTrigger asChild>
|
|
556
|
+
<Button variant='outline' color='neutral'>
|
|
557
|
+
Open Resizable Drawer (900px)
|
|
558
|
+
</Button>
|
|
559
|
+
</DrawerTrigger>
|
|
560
|
+
|
|
561
|
+
<DrawerContent>
|
|
562
|
+
<DrawerResizeHandle />
|
|
563
|
+
<DrawerHeader>
|
|
564
|
+
<DrawerTitle>Resizable Drawer with "900px" width</DrawerTitle>
|
|
565
|
+
</DrawerHeader>
|
|
566
|
+
|
|
567
|
+
<DrawerBody>
|
|
568
|
+
<div className='py-12'>
|
|
569
|
+
<p className='mb-16'>Width is set as "900px" string. Drag the left edge to resize.</p>
|
|
570
|
+
<ContentPlaceholder height={300} />
|
|
571
|
+
</div>
|
|
572
|
+
</DrawerBody>
|
|
573
|
+
</DrawerContent>
|
|
574
|
+
</Drawer>
|
|
575
|
+
|
|
576
|
+
<Drawer width='50%'>
|
|
577
|
+
<DrawerTrigger asChild>
|
|
578
|
+
<Button variant='outline' color='neutral'>
|
|
579
|
+
Open Resizable Drawer (50%)
|
|
580
|
+
</Button>
|
|
581
|
+
</DrawerTrigger>
|
|
582
|
+
|
|
583
|
+
<DrawerContent>
|
|
584
|
+
<DrawerResizeHandle />
|
|
585
|
+
<DrawerHeader>
|
|
586
|
+
<DrawerTitle>Resizable Drawer with 50% width</DrawerTitle>
|
|
587
|
+
</DrawerHeader>
|
|
588
|
+
|
|
589
|
+
<DrawerBody>
|
|
590
|
+
<div className='py-12'>
|
|
591
|
+
<p className='mb-16'>
|
|
592
|
+
Width is set as "50%". Drag the left edge to resize - it will convert to pixels.
|
|
593
|
+
</p>
|
|
594
|
+
<ContentPlaceholder height={300} />
|
|
595
|
+
</div>
|
|
596
|
+
</DrawerBody>
|
|
597
|
+
</DrawerContent>
|
|
598
|
+
</Drawer>
|
|
599
|
+
</VStack>
|
|
600
|
+
);
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
const DRAWER_TAGS = [
|
|
604
|
+
'api-abuse',
|
|
605
|
+
'account-takeover',
|
|
606
|
+
'credential-stuffing',
|
|
607
|
+
'XSS',
|
|
608
|
+
'SQL Injection',
|
|
609
|
+
'CSRF',
|
|
610
|
+
'scanner',
|
|
611
|
+
'brute-force',
|
|
612
|
+
'data-exfiltration',
|
|
613
|
+
];
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Resizing with content that reflows, which is the case worth testing: the panel is only useful
|
|
617
|
+
* at its new width if what is inside adapts.
|
|
618
|
+
*/
|
|
619
|
+
export const ResizableWithOverflowList: StoryFn<DrawerProps> = () => {
|
|
620
|
+
const [open, setOpen] = useState(false);
|
|
621
|
+
|
|
622
|
+
return (
|
|
623
|
+
<Drawer data-testid='drawer' width={480} open={open} onOpenChange={setOpen}>
|
|
624
|
+
<DrawerTrigger asChild>
|
|
625
|
+
<Button variant='outline' color='neutral'>
|
|
626
|
+
Open Resizable Drawer with OverflowList
|
|
627
|
+
</Button>
|
|
628
|
+
</DrawerTrigger>
|
|
629
|
+
<DrawerContent>
|
|
630
|
+
<DrawerResizeHandle />
|
|
631
|
+
<DrawerHeader>
|
|
632
|
+
<DrawerTitle>Resizable Drawer with OverflowList</DrawerTitle>
|
|
633
|
+
</DrawerHeader>
|
|
634
|
+
<DrawerBody>
|
|
635
|
+
<p className='mb-16'>Drag the left edge — the tag list reflows live.</p>
|
|
636
|
+
<Attribute>
|
|
637
|
+
<AttributeLabel>Attack types</AttributeLabel>
|
|
638
|
+
<AttributeValue>
|
|
639
|
+
<OverflowList
|
|
640
|
+
data-testid='tags-overflow-list'
|
|
641
|
+
className='gap-4'
|
|
642
|
+
items={DRAWER_TAGS}
|
|
643
|
+
itemRenderer={item => (
|
|
644
|
+
<Tag key={item} data-testid='tag'>
|
|
645
|
+
{item}
|
|
646
|
+
</Tag>
|
|
647
|
+
)}
|
|
648
|
+
/>
|
|
649
|
+
</AttributeValue>
|
|
650
|
+
</Attribute>
|
|
651
|
+
</DrawerBody>
|
|
652
|
+
</DrawerContent>
|
|
653
|
+
</Drawer>
|
|
654
|
+
);
|
|
655
|
+
};
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* A long value — a URL, an id — truncates inside the body instead of widening the drawer, so the
|
|
659
|
+
* full-width field below it stays within the drawer too: the body never grows past the drawer's
|
|
660
|
+
* width. Content that is genuinely wider brings its own `overflow-x-auto` container.
|
|
661
|
+
*/
|
|
662
|
+
export const LongValues: StoryFn<DrawerProps> = () => (
|
|
663
|
+
<Drawer data-testid='drawer'>
|
|
664
|
+
<DrawerTrigger asChild>
|
|
665
|
+
<Button variant='outline' color='neutral'>
|
|
666
|
+
Open Drawer with Long Values
|
|
667
|
+
</Button>
|
|
668
|
+
</DrawerTrigger>
|
|
669
|
+
<DrawerContent>
|
|
670
|
+
<DrawerHeader>
|
|
671
|
+
<DrawerTitle>Long values</DrawerTitle>
|
|
672
|
+
</DrawerHeader>
|
|
673
|
+
<DrawerBody>
|
|
674
|
+
<VStack gap={16}>
|
|
675
|
+
<Attribute data-testid='url-attribute' orientation='horizontal'>
|
|
676
|
+
<AttributeLabel width={120}>URL</AttributeLabel>
|
|
677
|
+
<AttributeValue>
|
|
678
|
+
<Text data-testid='url-text' size='sm' truncate>
|
|
679
|
+
https://cdn.example.com/microfrontends/a-very-long-application-name/0.1.0-build.2469/mf-manifest.json
|
|
680
|
+
</Text>
|
|
681
|
+
</AttributeValue>
|
|
682
|
+
</Attribute>
|
|
683
|
+
<Input data-testid='notes-input' placeholder='Notes' />
|
|
684
|
+
</VStack>
|
|
685
|
+
</DrawerBody>
|
|
686
|
+
</DrawerContent>
|
|
687
|
+
</Drawer>
|
|
688
|
+
);
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* The body scrolls between a fixed header and footer, so the actions never scroll away from the
|
|
692
|
+
* work.
|
|
693
|
+
*/
|
|
694
|
+
export const Scrollable: StoryFn<DrawerProps> = () => {
|
|
695
|
+
return (
|
|
696
|
+
<Drawer>
|
|
697
|
+
<DrawerTrigger asChild>
|
|
698
|
+
<Button variant='outline' color='neutral'>
|
|
699
|
+
Open Drawer with Scroll
|
|
700
|
+
</Button>
|
|
701
|
+
</DrawerTrigger>
|
|
702
|
+
|
|
703
|
+
<DrawerContent>
|
|
704
|
+
<DrawerHeader>
|
|
705
|
+
<DrawerTitle>Scrollable Content</DrawerTitle>
|
|
706
|
+
</DrawerHeader>
|
|
707
|
+
|
|
708
|
+
<DrawerBody>
|
|
709
|
+
<div className='flex flex-col gap-16 py-12'>
|
|
710
|
+
{Array.from({ length: 20 }).map((_, i) => (
|
|
711
|
+
<ContentPlaceholder key={i} height={100} />
|
|
712
|
+
))}
|
|
713
|
+
</div>
|
|
714
|
+
</DrawerBody>
|
|
715
|
+
|
|
716
|
+
<DrawerFooter>
|
|
717
|
+
<DrawerClose asChild>
|
|
718
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
719
|
+
Close
|
|
720
|
+
</Button>
|
|
721
|
+
</DrawerClose>
|
|
722
|
+
<Button variant='primary' color='brand' size='large'>
|
|
723
|
+
Confirm
|
|
724
|
+
</Button>
|
|
725
|
+
</DrawerFooter>
|
|
726
|
+
</DrawerContent>
|
|
727
|
+
</Drawer>
|
|
728
|
+
);
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Owning `open`, for a panel something outside it opens or closes.
|
|
733
|
+
*/
|
|
734
|
+
export const Controlled: StoryFn<DrawerProps> = () => {
|
|
735
|
+
const [open, setOpen] = useState(false);
|
|
736
|
+
|
|
737
|
+
return (
|
|
738
|
+
<>
|
|
739
|
+
<Button variant='outline' color='neutral' onClick={() => setOpen(true)}>
|
|
740
|
+
Open Controlled Drawer
|
|
741
|
+
</Button>
|
|
742
|
+
|
|
743
|
+
<Drawer open={open} onOpenChange={setOpen}>
|
|
744
|
+
<DrawerContent>
|
|
745
|
+
<DrawerHeader>
|
|
746
|
+
<DrawerTitle>Controlled Drawer</DrawerTitle>
|
|
747
|
+
</DrawerHeader>
|
|
748
|
+
|
|
749
|
+
<DrawerBody>
|
|
750
|
+
<div className='py-12'>
|
|
751
|
+
<p className='mb-16'>This drawer is controlled externally.</p>
|
|
752
|
+
<ContentPlaceholder />
|
|
753
|
+
</div>
|
|
754
|
+
</DrawerBody>
|
|
755
|
+
|
|
756
|
+
<DrawerFooter>
|
|
757
|
+
<DrawerClose asChild>
|
|
758
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
759
|
+
Cancel
|
|
760
|
+
</Button>
|
|
761
|
+
</DrawerClose>
|
|
762
|
+
<Button variant='primary' color='brand' size='large'>
|
|
763
|
+
Save Changes
|
|
764
|
+
</Button>
|
|
765
|
+
</DrawerFooter>
|
|
766
|
+
</DrawerContent>
|
|
767
|
+
</Drawer>
|
|
768
|
+
</>
|
|
769
|
+
);
|
|
770
|
+
};
|
|
771
|
+
|
|
772
|
+
/**
|
|
773
|
+
* Escape disabled, for a panel holding unsaved work where a reflex keystroke would lose it.
|
|
774
|
+
*/
|
|
775
|
+
export const NoClosableOnEsc: StoryFn<DrawerProps> = () => {
|
|
776
|
+
return (
|
|
777
|
+
<Drawer closeOnEscape={false}>
|
|
778
|
+
<DrawerTrigger asChild>
|
|
779
|
+
<Button variant='outline' color='neutral'>
|
|
780
|
+
Open Drawer
|
|
781
|
+
</Button>
|
|
782
|
+
</DrawerTrigger>
|
|
783
|
+
|
|
784
|
+
<DrawerContent>
|
|
785
|
+
<DrawerHeader>
|
|
786
|
+
<DrawerTitle>Drawer Title</DrawerTitle>
|
|
787
|
+
</DrawerHeader>
|
|
788
|
+
|
|
789
|
+
<DrawerBody>
|
|
790
|
+
<ContentPlaceholder fillHeight />
|
|
791
|
+
</DrawerBody>
|
|
792
|
+
</DrawerContent>
|
|
793
|
+
</Drawer>
|
|
794
|
+
);
|
|
795
|
+
};
|
|
796
|
+
|
|
797
|
+
/**
|
|
798
|
+
* Without the backdrop, which is how a drawer reads as non-blocking. Pair it with
|
|
799
|
+
* `modal={false}` if the page behind should also stay usable.
|
|
800
|
+
*/
|
|
801
|
+
export const NoOverlay: StoryFn<DrawerProps> = () => {
|
|
802
|
+
return (
|
|
803
|
+
<Drawer overlay={false}>
|
|
804
|
+
<DrawerTrigger asChild>
|
|
805
|
+
<Button variant='outline' color='neutral'>
|
|
806
|
+
Open without Overlay
|
|
807
|
+
</Button>
|
|
808
|
+
</DrawerTrigger>
|
|
809
|
+
|
|
810
|
+
<DrawerContent>
|
|
811
|
+
<DrawerHeader>
|
|
812
|
+
<DrawerTitle>No Overlay</DrawerTitle>
|
|
813
|
+
</DrawerHeader>
|
|
814
|
+
|
|
815
|
+
<DrawerBody>
|
|
816
|
+
<div className='py-12'>
|
|
817
|
+
<p>This drawer has no overlay backdrop.</p>
|
|
818
|
+
</div>
|
|
819
|
+
</DrawerBody>
|
|
820
|
+
</DrawerContent>
|
|
821
|
+
</Drawer>
|
|
822
|
+
);
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* `modal={false}` with no overlay keeps the page behind usable: scroll it, click it, keep typing.
|
|
827
|
+
* Closing returns focus to the trigger without scrolling the page back to it — unless the drawer
|
|
828
|
+
* was closed by a click on the page, where the user has already moved on.
|
|
829
|
+
*/
|
|
830
|
+
export const NonModal: StoryFn<DrawerProps> = () => (
|
|
831
|
+
<VStack gap={16} align='start'>
|
|
832
|
+
<Drawer data-testid='drawer' modal={false} overlay={false}>
|
|
833
|
+
<DrawerTrigger asChild>
|
|
834
|
+
<Button variant='outline' color='neutral'>
|
|
835
|
+
Open Non-Modal Drawer
|
|
836
|
+
</Button>
|
|
837
|
+
</DrawerTrigger>
|
|
838
|
+
|
|
839
|
+
<DrawerContent>
|
|
840
|
+
<DrawerHeader>
|
|
841
|
+
<DrawerTitle>Non-modal drawer</DrawerTitle>
|
|
842
|
+
<DrawerClose />
|
|
843
|
+
</DrawerHeader>
|
|
844
|
+
|
|
845
|
+
<DrawerBody>
|
|
846
|
+
<div className='py-12'>
|
|
847
|
+
<p>The page behind stays usable while this drawer is open.</p>
|
|
848
|
+
</div>
|
|
849
|
+
</DrawerBody>
|
|
850
|
+
</DrawerContent>
|
|
851
|
+
</Drawer>
|
|
852
|
+
<ContentPlaceholder height={1600} />
|
|
853
|
+
</VStack>
|
|
854
|
+
);
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* A drawer from a drawer: same family, so the outer one steps back and the depth is legible.
|
|
858
|
+
*/
|
|
859
|
+
export const WithNested: StoryFn<DrawerProps> = () => {
|
|
860
|
+
return (
|
|
861
|
+
<Drawer>
|
|
862
|
+
<DrawerTrigger asChild>
|
|
863
|
+
<Button variant='outline' color='neutral'>
|
|
864
|
+
1st level drawer
|
|
865
|
+
</Button>
|
|
866
|
+
</DrawerTrigger>
|
|
867
|
+
|
|
868
|
+
<DrawerContent>
|
|
869
|
+
<DrawerHeader>
|
|
870
|
+
<DrawerTitle>[Level 1] Main Drawer</DrawerTitle>
|
|
871
|
+
|
|
872
|
+
{/* Level 2 drawer */}
|
|
873
|
+
<Drawer>
|
|
874
|
+
<DrawerTrigger asChild>
|
|
875
|
+
<Button variant='ghost' color='neutral' size='small'>
|
|
876
|
+
<PanelRight />
|
|
877
|
+
2nd level drawer
|
|
878
|
+
</Button>
|
|
879
|
+
</DrawerTrigger>
|
|
880
|
+
|
|
881
|
+
<DrawerContent>
|
|
882
|
+
<DrawerHeader>
|
|
883
|
+
<DrawerTitle>[Level 2] Detail View</DrawerTitle>
|
|
884
|
+
{/* Level 3 drawer */}
|
|
885
|
+
<Drawer>
|
|
886
|
+
<DrawerTrigger asChild>
|
|
887
|
+
<Button variant='ghost' color='neutral' size='small'>
|
|
888
|
+
<PanelRight />
|
|
889
|
+
3nd level drawer
|
|
890
|
+
</Button>
|
|
891
|
+
</DrawerTrigger>
|
|
892
|
+
|
|
893
|
+
<DrawerContent>
|
|
894
|
+
<DrawerHeader>
|
|
895
|
+
<DrawerTitle>[Level 3] Deep Nested</DrawerTitle>
|
|
896
|
+
</DrawerHeader>
|
|
897
|
+
|
|
898
|
+
<DrawerBody>
|
|
899
|
+
<VStack gap={12} align='start'>
|
|
900
|
+
<Text>Level 3! Unlimited nesting works.</Text>
|
|
901
|
+
<ContentPlaceholder height={150} />
|
|
902
|
+
</VStack>
|
|
903
|
+
</DrawerBody>
|
|
904
|
+
|
|
905
|
+
<DrawerFooter>
|
|
906
|
+
<DrawerClose asChild>
|
|
907
|
+
<Button size='large' variant='ghost' color='neutral'>
|
|
908
|
+
Back
|
|
909
|
+
</Button>
|
|
910
|
+
</DrawerClose>
|
|
911
|
+
</DrawerFooter>
|
|
912
|
+
</DrawerContent>
|
|
913
|
+
</Drawer>
|
|
914
|
+
</DrawerHeader>
|
|
915
|
+
|
|
916
|
+
<DrawerBody>
|
|
917
|
+
<VStack gap={12} align='start'>
|
|
918
|
+
<Text>
|
|
919
|
+
This is Level 2 drawer. Main drawer is pushed back. You can go deeper:
|
|
920
|
+
</Text>
|
|
921
|
+
|
|
922
|
+
<ContentPlaceholder height={150} />
|
|
923
|
+
</VStack>
|
|
924
|
+
</DrawerBody>
|
|
925
|
+
|
|
926
|
+
<DrawerFooter>
|
|
927
|
+
<DrawerClose asChild>
|
|
928
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
929
|
+
Back
|
|
930
|
+
</Button>
|
|
931
|
+
</DrawerClose>
|
|
932
|
+
<Button variant='primary' color='brand' size='large'>
|
|
933
|
+
Apply
|
|
934
|
+
</Button>
|
|
935
|
+
</DrawerFooter>
|
|
936
|
+
</DrawerContent>
|
|
937
|
+
</Drawer>
|
|
938
|
+
</DrawerHeader>
|
|
939
|
+
|
|
940
|
+
<DrawerBody>
|
|
941
|
+
<VStack gap={12} align='start'>
|
|
942
|
+
<Text>This is Level 1 drawer. Click below to open nested drawers:</Text>
|
|
943
|
+
|
|
944
|
+
<ContentPlaceholder height={300} />
|
|
945
|
+
</VStack>
|
|
946
|
+
</DrawerBody>
|
|
947
|
+
|
|
948
|
+
<DrawerFooter>
|
|
949
|
+
<DrawerClose asChild>
|
|
950
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
951
|
+
Cancel
|
|
952
|
+
</Button>
|
|
953
|
+
</DrawerClose>
|
|
954
|
+
<Button variant='primary' color='brand' size='large'>
|
|
955
|
+
Save
|
|
956
|
+
</Button>
|
|
957
|
+
</DrawerFooter>
|
|
958
|
+
</DrawerContent>
|
|
959
|
+
</Drawer>
|
|
960
|
+
);
|
|
961
|
+
};
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
* A dialog opened from a drawer — different family, so the drawer stays put rather than
|
|
965
|
+
* scaling. That separation is what `kind` exists for.
|
|
966
|
+
*/
|
|
967
|
+
export const WithNestedDialog: StoryFn<DrawerProps> = () => {
|
|
968
|
+
return (
|
|
969
|
+
<Drawer>
|
|
970
|
+
<DrawerTrigger asChild>
|
|
971
|
+
<Button variant='outline' color='neutral'>
|
|
972
|
+
Open drawer with dialog inside
|
|
973
|
+
</Button>
|
|
974
|
+
</DrawerTrigger>
|
|
975
|
+
|
|
976
|
+
<DrawerContent>
|
|
977
|
+
<DrawerHeader>
|
|
978
|
+
<DrawerTitle>Drawer stays in place</DrawerTitle>
|
|
979
|
+
</DrawerHeader>
|
|
980
|
+
|
|
981
|
+
<DrawerBody>
|
|
982
|
+
<VStack gap={12} align='start'>
|
|
983
|
+
<Text>Opening the dialog below must not scale or shift this drawer.</Text>
|
|
984
|
+
|
|
985
|
+
<Dialog>
|
|
986
|
+
<DialogTrigger asChild>
|
|
987
|
+
<Button variant='outline' color='neutral'>
|
|
988
|
+
Open dialog
|
|
989
|
+
</Button>
|
|
990
|
+
</DialogTrigger>
|
|
991
|
+
|
|
992
|
+
<DialogContent>
|
|
993
|
+
<DialogHeader>
|
|
994
|
+
<DialogTitle>Dialog over a drawer</DialogTitle>
|
|
995
|
+
</DialogHeader>
|
|
996
|
+
|
|
997
|
+
<DialogBody>
|
|
998
|
+
<ContentPlaceholder height={150} />
|
|
999
|
+
</DialogBody>
|
|
1000
|
+
</DialogContent>
|
|
1001
|
+
</Dialog>
|
|
1002
|
+
</VStack>
|
|
1003
|
+
</DrawerBody>
|
|
1004
|
+
</DrawerContent>
|
|
1005
|
+
</Drawer>
|
|
1006
|
+
);
|
|
1007
|
+
};
|
|
1008
|
+
|
|
1009
|
+
/**
|
|
1010
|
+
* A `Select` inside a drawer, checking its menu escapes the panel instead of being clipped.
|
|
1011
|
+
*/
|
|
1012
|
+
export const WithNestedSelect: StoryFn<DrawerProps> = () => {
|
|
1013
|
+
const collection = createListCollection({
|
|
1014
|
+
items: [
|
|
1015
|
+
{ label: 'React', value: 'react' },
|
|
1016
|
+
{ label: 'Vue', value: 'vue' },
|
|
1017
|
+
{ label: 'Angular', value: 'angular' },
|
|
1018
|
+
],
|
|
1019
|
+
});
|
|
1020
|
+
|
|
1021
|
+
return (
|
|
1022
|
+
<Drawer>
|
|
1023
|
+
<DrawerTrigger asChild>
|
|
1024
|
+
<Button variant='outline' color='neutral'>
|
|
1025
|
+
Open drawer with nested select
|
|
1026
|
+
</Button>
|
|
1027
|
+
</DrawerTrigger>
|
|
1028
|
+
|
|
1029
|
+
<DrawerContent>
|
|
1030
|
+
<DrawerHeader>
|
|
1031
|
+
<DrawerTitle>[Level 1] Main Drawer</DrawerTitle>
|
|
1032
|
+
|
|
1033
|
+
<Drawer>
|
|
1034
|
+
<DrawerTrigger asChild>
|
|
1035
|
+
<Button variant='ghost' color='neutral' size='small'>
|
|
1036
|
+
<PanelRight />
|
|
1037
|
+
Open nested drawer
|
|
1038
|
+
</Button>
|
|
1039
|
+
</DrawerTrigger>
|
|
1040
|
+
|
|
1041
|
+
<DrawerContent>
|
|
1042
|
+
<DrawerHeader>
|
|
1043
|
+
<DrawerTitle>[Level 2] With Select</DrawerTitle>
|
|
1044
|
+
</DrawerHeader>
|
|
1045
|
+
|
|
1046
|
+
<DrawerBody>
|
|
1047
|
+
<VStack gap={12} align='start'>
|
|
1048
|
+
<Select collection={collection} data-testid='nested-select'>
|
|
1049
|
+
<SelectButton />
|
|
1050
|
+
|
|
1051
|
+
<SelectPositioner>
|
|
1052
|
+
<SelectContent>
|
|
1053
|
+
{collection.items.map(item => (
|
|
1054
|
+
<SelectOption key={item.value} item={item}>
|
|
1055
|
+
<SelectOptionText>{item.label}</SelectOptionText>
|
|
1056
|
+
<SelectOptionIndicator />
|
|
1057
|
+
</SelectOption>
|
|
1058
|
+
))}
|
|
1059
|
+
</SelectContent>
|
|
1060
|
+
</SelectPositioner>
|
|
1061
|
+
</Select>
|
|
1062
|
+
|
|
1063
|
+
<DropdownMenu data-testid='nested-dropdown'>
|
|
1064
|
+
<DropdownMenuTrigger asChild>
|
|
1065
|
+
<Button variant='outline' color='neutral'>
|
|
1066
|
+
Open menu
|
|
1067
|
+
</Button>
|
|
1068
|
+
</DropdownMenuTrigger>
|
|
1069
|
+
<DropdownMenuContent>
|
|
1070
|
+
<DropdownMenuItem>First action</DropdownMenuItem>
|
|
1071
|
+
<DropdownMenuItem>Second action</DropdownMenuItem>
|
|
1072
|
+
</DropdownMenuContent>
|
|
1073
|
+
</DropdownMenu>
|
|
1074
|
+
</VStack>
|
|
1075
|
+
</DrawerBody>
|
|
1076
|
+
</DrawerContent>
|
|
1077
|
+
</Drawer>
|
|
1078
|
+
</DrawerHeader>
|
|
1079
|
+
|
|
1080
|
+
<DrawerBody>
|
|
1081
|
+
<ContentPlaceholder height={200} />
|
|
1082
|
+
</DrawerBody>
|
|
1083
|
+
</DrawerContent>
|
|
1084
|
+
</Drawer>
|
|
1085
|
+
);
|
|
1086
|
+
};
|
|
1087
|
+
|
|
1088
|
+
/**
|
|
1089
|
+
* Tabs inside a drawer, which suits a panel with several facets of one subject.
|
|
1090
|
+
*/
|
|
1091
|
+
export const WithTabs: StoryFn<DrawerProps> = () => {
|
|
1092
|
+
const [activeTab, setActiveTab] = useState('tab1');
|
|
1093
|
+
|
|
1094
|
+
return (
|
|
1095
|
+
<Drawer width={960}>
|
|
1096
|
+
<DrawerTrigger asChild>
|
|
1097
|
+
<Button variant='outline' color='neutral'>
|
|
1098
|
+
Open Drawer with Tabs
|
|
1099
|
+
</Button>
|
|
1100
|
+
</DrawerTrigger>
|
|
1101
|
+
|
|
1102
|
+
<DrawerContent>
|
|
1103
|
+
<Tabs value={activeTab} onChange={setActiveTab} asChild>
|
|
1104
|
+
<DrawerHeader>
|
|
1105
|
+
<DrawerTitle>Tabbed Content</DrawerTitle>
|
|
1106
|
+
</DrawerHeader>
|
|
1107
|
+
|
|
1108
|
+
<TabsList>
|
|
1109
|
+
<TabsTrigger value='tab1'>General</TabsTrigger>
|
|
1110
|
+
<TabsTrigger value='tab2'>Settings</TabsTrigger>
|
|
1111
|
+
<TabsTrigger value='tab3'>Advanced</TabsTrigger>
|
|
1112
|
+
</TabsList>
|
|
1113
|
+
|
|
1114
|
+
<DrawerBody>
|
|
1115
|
+
<div className='pt-12'>
|
|
1116
|
+
<TabsContent value='tab1'>
|
|
1117
|
+
<h3 className='text-lg font-medium mb-8'>General Settings</h3>
|
|
1118
|
+
<ContentPlaceholder height={300} />
|
|
1119
|
+
</TabsContent>
|
|
1120
|
+
<TabsContent value='tab2'>
|
|
1121
|
+
<h3 className='text-lg font-medium mb-8'>Configuration</h3>
|
|
1122
|
+
<ContentPlaceholder height={300} />
|
|
1123
|
+
</TabsContent>
|
|
1124
|
+
<TabsContent value='tab3'>
|
|
1125
|
+
<h3 className='text-lg font-medium mb-8'>Advanced Options</h3>
|
|
1126
|
+
<ContentPlaceholder height={300} />
|
|
1127
|
+
</TabsContent>
|
|
1128
|
+
</div>
|
|
1129
|
+
</DrawerBody>
|
|
1130
|
+
|
|
1131
|
+
<DrawerFooter>
|
|
1132
|
+
<DrawerClose asChild>
|
|
1133
|
+
<Button variant='ghost' color='neutral' size='large'>
|
|
1134
|
+
Cancel
|
|
1135
|
+
</Button>
|
|
1136
|
+
</DrawerClose>
|
|
1137
|
+
<Button variant='primary' color='brand' size='large'>
|
|
1138
|
+
Apply Settings
|
|
1139
|
+
</Button>
|
|
1140
|
+
</DrawerFooter>
|
|
1141
|
+
</Tabs>
|
|
1142
|
+
</DrawerContent>
|
|
1143
|
+
</Drawer>
|
|
1144
|
+
);
|
|
1145
|
+
};
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
### Drawer/constants.ts
|
|
1149
|
+
|
|
1150
|
+
```tsx
|
|
1151
|
+
/** Preset drawer widths in pixels */
|
|
1152
|
+
export const DRAWER_SIZES = {
|
|
1153
|
+
small: 640,
|
|
1154
|
+
medium: 960,
|
|
1155
|
+
large: 1130,
|
|
1156
|
+
} as const;
|
|
1157
|
+
|
|
1158
|
+
/** Default min/max width constraints in pixels */
|
|
1159
|
+
export const DRAWER_WIDTH_CONSTRAINTS = {
|
|
1160
|
+
min: 400,
|
|
1161
|
+
max: 1130,
|
|
1162
|
+
} as const;
|
|
1163
|
+
```
|