@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,1352 @@
|
|
|
1
|
+
A block of code to be read and copied, never edited — reach for `InlineCodeSnippet` when the code belongs inside a sentence, and a real editor when the value is meant to change. Everything beyond the code is composed: a `CodeSnippetHeader` carrying a title or tabs, `CodeSnippetActions` for copy, wrap and fullscreen, `CodeSnippetLineNumbers`, and per-line colour, prefixes and folds — and highlighting happens only inside a `CodeSnippetAdapterProvider`. The snippet sits inside a `display: contents` wrapper that keeps it mounted across fullscreen, so space snippets with their own `className` (for example `mt-16`) or a `gap` on the parent — not `space-*`, `divide-*` or child selectors on the parent.
|
|
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
|
+
| — | See emitted declarations in `components/index.d.ts`. | | | |
|
|
10
|
+
|
|
11
|
+
## Sub-components
|
|
12
|
+
|
|
13
|
+
- `WallarmDS.CodeSnippetActions` — `CodeSnippetActionsProps` in the declaration bundle.
|
|
14
|
+
- `WallarmDS.CodeSnippetAdapterProvider` — `CodeSnippetAdapterProviderProps` in the declaration bundle.
|
|
15
|
+
- `WallarmDS.CodeSnippetCode` — `CodeSnippetCodeProps` in the declaration bundle.
|
|
16
|
+
- `WallarmDS.CodeSnippetContent` — `CodeSnippetContentProps` in the declaration bundle.
|
|
17
|
+
- `WallarmDS.CodeSnippetCopyButton` — `CodeSnippetCopyButtonProps` in the declaration bundle.
|
|
18
|
+
- `WallarmDS.CodeSnippetFullscreenButton` — `CodeSnippetFullscreenButtonProps` in the declaration bundle.
|
|
19
|
+
- `WallarmDS.CodeSnippetHeader` — `CodeSnippetHeaderProps` in the declaration bundle.
|
|
20
|
+
- `WallarmDS.CodeSnippetLineNumbers` — `CodeSnippetLineNumbersProps` in the declaration bundle.
|
|
21
|
+
- `WallarmDS.CodeSnippetRoot` — `CodeSnippetRootProps` in the declaration bundle.
|
|
22
|
+
- `WallarmDS.CodeSnippetShowMoreButton` — `CodeSnippetShowMoreButtonProps` in the declaration bundle.
|
|
23
|
+
- `WallarmDS.CodeSnippetTab` — `CodeSnippetTabProps` in the declaration bundle.
|
|
24
|
+
- `WallarmDS.CodeSnippetTabs` — `CodeSnippetTabsProps` in the declaration bundle.
|
|
25
|
+
- `WallarmDS.CodeSnippetTitle` — `CodeSnippetTitleProps` in the declaration bundle.
|
|
26
|
+
- `WallarmDS.CodeSnippetWrapButton` — `CodeSnippetWrapButtonProps` in the declaration bundle.
|
|
27
|
+
- `WallarmDS.InlineCodeSnippet` — `InlineCodeSnippetProps` in the declaration bundle.
|
|
28
|
+
|
|
29
|
+
## Stories
|
|
30
|
+
|
|
31
|
+
### Default
|
|
32
|
+
|
|
33
|
+
The block with no adapter in scope — mono type on a tinted surface, and the plain
|
|
34
|
+
fallback rather than an absence of highlighting to fix.
|
|
35
|
+
|
|
36
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#Default
|
|
37
|
+
|
|
38
|
+
### WithLineNumbers
|
|
39
|
+
|
|
40
|
+
`CodeSnippetLineNumbers` is a sibling of the code inside `CodeSnippetContent`, so the
|
|
41
|
+
gutter is something you compose in rather than a prop you switch on.
|
|
42
|
+
|
|
43
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithLineNumbers
|
|
44
|
+
|
|
45
|
+
### Sizes
|
|
46
|
+
|
|
47
|
+
The three sizes. `sm` is the default at 12px; `md` and `lg` step the code to 14 and
|
|
48
|
+
16px for a block meant to be read from further away.
|
|
49
|
+
|
|
50
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#Sizes
|
|
51
|
+
|
|
52
|
+
### LineAnnotations
|
|
53
|
+
|
|
54
|
+
`lines`, keyed by line number, tints a line and hangs a prefix off it — here a
|
|
55
|
+
tooltipped icon on each of the three headers worth calling out.
|
|
56
|
+
|
|
57
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#LineAnnotations
|
|
58
|
+
|
|
59
|
+
### LineColors
|
|
60
|
+
|
|
61
|
+
The seven line colours are semantic, so choose by what the line means — `danger` for
|
|
62
|
+
the attack, `info` for the aside — not by which tint reads best.
|
|
63
|
+
|
|
64
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#LineColors
|
|
65
|
+
|
|
66
|
+
### LineRanges
|
|
67
|
+
|
|
68
|
+
`ranges` narrows the emphasis to character offsets inside the line — start inclusive,
|
|
69
|
+
end exclusive — and once a line has them only the range is coloured, though the
|
|
70
|
+
line's own background stays.
|
|
71
|
+
|
|
72
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#LineRanges
|
|
73
|
+
|
|
74
|
+
### TextStyles
|
|
75
|
+
|
|
76
|
+
`textStyle` overrides the weight or slant a colour would have chosen, with `className`
|
|
77
|
+
and `style` left for the cases the three named styles do not cover.
|
|
78
|
+
|
|
79
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#TextStyles
|
|
80
|
+
|
|
81
|
+
### LineWithPrefix
|
|
82
|
+
|
|
83
|
+
A `+` and `-` prefix over `success` and `danger` lines gives you a diff without a diff
|
|
84
|
+
component.
|
|
85
|
+
|
|
86
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#LineWithPrefix
|
|
87
|
+
|
|
88
|
+
### LineWrapping
|
|
89
|
+
|
|
90
|
+
`wrapLines` against the same code unwrapped, in three pairs — what to check is that
|
|
91
|
+
prefixes, colour sticks and fold toggles stay on the first visual row of a wrapped line.
|
|
92
|
+
|
|
93
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#LineWrapping
|
|
94
|
+
|
|
95
|
+
### WithBothScrolls
|
|
96
|
+
|
|
97
|
+
Given a fixed height inside a narrow column, the block scrolls in both directions
|
|
98
|
+
rather than pushing its container around.
|
|
99
|
+
|
|
100
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithBothScrolls
|
|
101
|
+
|
|
102
|
+
### CustomStartingLine
|
|
103
|
+
|
|
104
|
+
`startingLineNumber` renumbers the gutter, for a fragment lifted out of a longer file.
|
|
105
|
+
|
|
106
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#CustomStartingLine
|
|
107
|
+
|
|
108
|
+
### JSONWithShiki
|
|
109
|
+
|
|
110
|
+
Shiki, supplied through `CodeSnippetAdapterProvider`, uses VS Code-style grammars.
|
|
111
|
+
The adapter lazily initializes its supported languages and github-light theme with
|
|
112
|
+
the Oniguruma WASM engine on the first highlight call.
|
|
113
|
+
|
|
114
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#JSONWithShiki
|
|
115
|
+
|
|
116
|
+
### TypescriptWithPrism
|
|
117
|
+
|
|
118
|
+
TypeScript highlighted with Prism. Its loader emits only the Prism adapter's
|
|
119
|
+
dependencies; unused Shiki and highlight.js loaders are discarded by the consumer.
|
|
120
|
+
|
|
121
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#TypescriptWithPrism
|
|
122
|
+
|
|
123
|
+
### BashWithPrism
|
|
124
|
+
|
|
125
|
+
A multi-line `curl` under Prism, where the continuation backslashes and the quoted JSON
|
|
126
|
+
body are the parts a highlighter usually gets wrong.
|
|
127
|
+
|
|
128
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#BashWithPrism
|
|
129
|
+
|
|
130
|
+
### HTMLWithHighlightJs
|
|
131
|
+
|
|
132
|
+
HTML highlighted with highlight.js. The adapter loads the library lazily and
|
|
133
|
+
exposes the languages listed by its getSupportedLanguages() method.
|
|
134
|
+
|
|
135
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#HTMLWithHighlightJs
|
|
136
|
+
|
|
137
|
+
### HTTPRequestWithPrism
|
|
138
|
+
|
|
139
|
+
`language='http'` is a grammar in its own right — method, path and version on the first
|
|
140
|
+
line, then header names told apart from their values.
|
|
141
|
+
|
|
142
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#HTTPRequestWithPrism
|
|
143
|
+
|
|
144
|
+
### HTTPResponseWithShiki
|
|
145
|
+
|
|
146
|
+
The response side, where the JSON body after the headers is highlighted as JSON rather
|
|
147
|
+
than as more header text.
|
|
148
|
+
|
|
149
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#HTTPResponseWithShiki
|
|
150
|
+
|
|
151
|
+
### WithHeader
|
|
152
|
+
|
|
153
|
+
`CodeSnippetHeader` with a `CodeSnippetTitle` names the file the code came from, as a
|
|
154
|
+
bar above the block rather than a caption on it.
|
|
155
|
+
|
|
156
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithHeader
|
|
157
|
+
|
|
158
|
+
### WithTabsAndActions
|
|
159
|
+
|
|
160
|
+
Tabs in the header swap the `code` the block is given, which is how one command per
|
|
161
|
+
package manager is built; the actions sit at the far end of the same bar.
|
|
162
|
+
|
|
163
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithTabsAndActions
|
|
164
|
+
|
|
165
|
+
### WithFloatingActions
|
|
166
|
+
|
|
167
|
+
With no header to hold them, `CodeSnippetActions` floats over the top-right of the code
|
|
168
|
+
— the shape for a block whose only affordance is copy.
|
|
169
|
+
|
|
170
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithFloatingActions
|
|
171
|
+
|
|
172
|
+
### ShowMore
|
|
173
|
+
|
|
174
|
+
`maxLines` clips the block and adds the control itself — but only when it would hide at
|
|
175
|
+
least three lines, so the middle snippet stays open; the third passes props to the real
|
|
176
|
+
button by rendering `CodeSnippetShowMoreButton` in place of the automatic one.
|
|
177
|
+
|
|
178
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#ShowMore
|
|
179
|
+
|
|
180
|
+
### HTTPRequestWithFolding
|
|
181
|
+
|
|
182
|
+
`getHttpFolds` reads an HTTP message and returns its fold regions, so the reader opens
|
|
183
|
+
the headers or the body rather than scrolling past both.
|
|
184
|
+
|
|
185
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#HTTPRequestWithFolding
|
|
186
|
+
|
|
187
|
+
### HTTPResponseWithFolding
|
|
188
|
+
|
|
189
|
+
The same helper on a response, where the body is usually the half worth folding away.
|
|
190
|
+
|
|
191
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#HTTPResponseWithFolding
|
|
192
|
+
|
|
193
|
+
### WithFoldingExpanded
|
|
194
|
+
|
|
195
|
+
Folds over coloured lines: a collapsed fold takes its colours and prefixes with it, and
|
|
196
|
+
hands them back on expand.
|
|
197
|
+
|
|
198
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithFoldingExpanded
|
|
199
|
+
|
|
200
|
+
### WithFoldingAndShowMore
|
|
201
|
+
|
|
202
|
+
Folds, `maxLines` and `startingLineNumber` together — fold line numbers are absolute, so
|
|
203
|
+
`getHttpFolds` has to be given the same offset the gutter uses.
|
|
204
|
+
|
|
205
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#WithFoldingAndShowMore
|
|
206
|
+
|
|
207
|
+
### FullscreenInsideDrawer
|
|
208
|
+
|
|
209
|
+
Fullscreen opened from a modal `Drawer` stacks above it as a nested layer: its buttons stay
|
|
210
|
+
clickable, and Escape or a backdrop click leaves fullscreen while the drawer stays open.
|
|
211
|
+
|
|
212
|
+
Source: CodeSnippet/CodeSnippet.stories.tsx#FullscreenInsideDrawer
|
|
213
|
+
|
|
214
|
+
### Default
|
|
215
|
+
|
|
216
|
+
One snippet in three sentence sizes: `size='inherit'`, the default, scales the type
|
|
217
|
+
and the padding with whatever it sits in, and hovering offers the copy.
|
|
218
|
+
|
|
219
|
+
Source: CodeSnippet/InlineCodeSnippet.stories.tsx#Default
|
|
220
|
+
|
|
221
|
+
### Sizes
|
|
222
|
+
|
|
223
|
+
The three fixed sizes, each beside the text size it pairs with — set one when the
|
|
224
|
+
snippet must hold its size regardless of its surroundings.
|
|
225
|
+
|
|
226
|
+
Source: CodeSnippet/InlineCodeSnippet.stories.tsx#Sizes
|
|
227
|
+
|
|
228
|
+
### NonCopyable
|
|
229
|
+
|
|
230
|
+
`copyable={false}` takes the tooltip and the pointer cursor away with the copy, for a
|
|
231
|
+
snippet that is only being named rather than reused.
|
|
232
|
+
|
|
233
|
+
Source: CodeSnippet/InlineCodeSnippet.stories.tsx#NonCopyable
|
|
234
|
+
|
|
235
|
+
### VariousContent
|
|
236
|
+
|
|
237
|
+
Commands, JSON, SQL and a quoted message all render in one colour — inline code gets
|
|
238
|
+
the mono treatment and nothing else.
|
|
239
|
+
|
|
240
|
+
Source: CodeSnippet/InlineCodeSnippet.stories.tsx#VariousContent
|
|
241
|
+
|
|
242
|
+
## Story sources
|
|
243
|
+
|
|
244
|
+
### CodeSnippet/CodeSnippet.stories.tsx
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
import { useState } from 'react';
|
|
248
|
+
import type { Meta, StoryFn } from 'storybook-react-rsbuild';
|
|
249
|
+
import { Info, Skull, TriangleAlert } from '../../icons';
|
|
250
|
+
import { Button } from '../Button';
|
|
251
|
+
import {
|
|
252
|
+
Drawer,
|
|
253
|
+
DrawerBody,
|
|
254
|
+
DrawerContent,
|
|
255
|
+
DrawerHeader,
|
|
256
|
+
DrawerTitle,
|
|
257
|
+
DrawerTrigger,
|
|
258
|
+
} from '../Drawer';
|
|
259
|
+
import { VStack } from '../Stack';
|
|
260
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';
|
|
261
|
+
import { loadHighlightJsAdapter, loadPrismAdapter, loadShikiAdapter } from './adapters';
|
|
262
|
+
import { CodeSnippetActions } from './CodeSnippetActions';
|
|
263
|
+
import { CodeSnippetAdapterProvider } from './CodeSnippetAdapterProvider';
|
|
264
|
+
import { CodeSnippetCode } from './CodeSnippetCode';
|
|
265
|
+
import { CodeSnippetContent } from './CodeSnippetContent';
|
|
266
|
+
import { CodeSnippetCopyButton } from './CodeSnippetCopyButton';
|
|
267
|
+
import { CodeSnippetFullscreenButton } from './CodeSnippetFullscreenButton';
|
|
268
|
+
import { CodeSnippetHeader } from './CodeSnippetHeader';
|
|
269
|
+
import { CodeSnippetLineNumbers } from './CodeSnippetLineNumbers';
|
|
270
|
+
import { CodeSnippetRoot } from './CodeSnippetRoot';
|
|
271
|
+
import { CodeSnippetShowMoreButton } from './CodeSnippetShowMoreButton';
|
|
272
|
+
import { CodeSnippetTab } from './CodeSnippetTab';
|
|
273
|
+
import { CodeSnippetTabs } from './CodeSnippetTabs';
|
|
274
|
+
import { CodeSnippetTitle } from './CodeSnippetTitle';
|
|
275
|
+
import { CodeSnippetWrapButton } from './CodeSnippetWrapButton';
|
|
276
|
+
import { getHttpFolds } from './lib/httpFolds';
|
|
277
|
+
|
|
278
|
+
const DESCRIPTION = [
|
|
279
|
+
'A block of code to be read and copied, never edited — reach for `InlineCodeSnippet` when the code belongs inside a sentence, and a real editor when the value is meant to change.',
|
|
280
|
+
'Everything beyond the code is composed: a `CodeSnippetHeader` carrying a title or tabs, `CodeSnippetActions` for copy, wrap and fullscreen, `CodeSnippetLineNumbers`, and per-line colour, prefixes and folds — and highlighting happens only inside a `CodeSnippetAdapterProvider`.',
|
|
281
|
+
'The snippet sits inside a `display: contents` wrapper that keeps it mounted across fullscreen, so space snippets with their own `className` (for example `mt-16`) or a `gap` on the parent — not `space-*`, `divide-*` or child selectors on the parent.',
|
|
282
|
+
].join(' ');
|
|
283
|
+
|
|
284
|
+
const meta = {
|
|
285
|
+
title: 'Data Display/CodeSnippet/CodeSnippet',
|
|
286
|
+
component: CodeSnippetRoot,
|
|
287
|
+
parameters: {
|
|
288
|
+
layout: 'padded',
|
|
289
|
+
docs: { description: { component: DESCRIPTION } },
|
|
290
|
+
design: {
|
|
291
|
+
type: 'figma',
|
|
292
|
+
url: 'https://www.figma.com/design/VKb5gW46uSGw0rqrhZsbXT/WADS-Components?node-id=3087-29516&m=dev',
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
tags: ['autodocs'],
|
|
296
|
+
} satisfies Meta<typeof CodeSnippetRoot>;
|
|
297
|
+
|
|
298
|
+
export default meta;
|
|
299
|
+
|
|
300
|
+
const sampleCode = `const greeting = "Hello, World!";
|
|
301
|
+
console.log(greeting);
|
|
302
|
+
|
|
303
|
+
function add(a, b) {
|
|
304
|
+
return a + b;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export default add;`;
|
|
308
|
+
|
|
309
|
+
const bashCode = `npm install @wallarm-org/sdk
|
|
310
|
+
npm run build
|
|
311
|
+
npm run test`;
|
|
312
|
+
|
|
313
|
+
const jsonCode = `{
|
|
314
|
+
"name": "@wallarm-org/sdk",
|
|
315
|
+
"version": "1.0.0",
|
|
316
|
+
"dependencies": {
|
|
317
|
+
"react": "^19.0.0",
|
|
318
|
+
"typescript": "^5.0.0"
|
|
319
|
+
}
|
|
320
|
+
}`;
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* The block with no adapter in scope — mono type on a tinted surface, and the plain
|
|
324
|
+
* fallback rather than an absence of highlighting to fix.
|
|
325
|
+
*/
|
|
326
|
+
export const Default: StoryFn<typeof meta> = () => (
|
|
327
|
+
<CodeSnippetRoot code={bashCode} language='text'>
|
|
328
|
+
<CodeSnippetContent>
|
|
329
|
+
<CodeSnippetCode />
|
|
330
|
+
</CodeSnippetContent>
|
|
331
|
+
</CodeSnippetRoot>
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* `CodeSnippetLineNumbers` is a sibling of the code inside `CodeSnippetContent`, so the
|
|
336
|
+
* gutter is something you compose in rather than a prop you switch on.
|
|
337
|
+
*/
|
|
338
|
+
export const WithLineNumbers: StoryFn<typeof meta> = () => (
|
|
339
|
+
<CodeSnippetRoot code={sampleCode} language='text'>
|
|
340
|
+
<CodeSnippetContent>
|
|
341
|
+
<CodeSnippetLineNumbers />
|
|
342
|
+
<CodeSnippetCode />
|
|
343
|
+
</CodeSnippetContent>
|
|
344
|
+
</CodeSnippetRoot>
|
|
345
|
+
);
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* The three sizes. `sm` is the default at 12px; `md` and `lg` step the code to 14 and
|
|
349
|
+
* 16px for a block meant to be read from further away.
|
|
350
|
+
*/
|
|
351
|
+
export const Sizes: StoryFn<typeof meta> = () => (
|
|
352
|
+
<VStack gap={16}>
|
|
353
|
+
<VStack align='start' gap={4}>
|
|
354
|
+
<span className='sb-annotation'>sm (default)</span>
|
|
355
|
+
<CodeSnippetRoot code={bashCode} language='text' size='sm'>
|
|
356
|
+
<CodeSnippetContent>
|
|
357
|
+
<CodeSnippetCode />
|
|
358
|
+
</CodeSnippetContent>
|
|
359
|
+
</CodeSnippetRoot>
|
|
360
|
+
</VStack>
|
|
361
|
+
|
|
362
|
+
<VStack align='start' gap={4}>
|
|
363
|
+
<span className='sb-annotation'>md</span>
|
|
364
|
+
<CodeSnippetRoot code={bashCode} language='text' size='md'>
|
|
365
|
+
<CodeSnippetContent>
|
|
366
|
+
<CodeSnippetCode />
|
|
367
|
+
</CodeSnippetContent>
|
|
368
|
+
</CodeSnippetRoot>
|
|
369
|
+
</VStack>
|
|
370
|
+
|
|
371
|
+
<VStack align='start' gap={4}>
|
|
372
|
+
<span className='sb-annotation'>lg</span>
|
|
373
|
+
<CodeSnippetRoot code={bashCode} language='text' size='lg'>
|
|
374
|
+
<CodeSnippetContent>
|
|
375
|
+
<CodeSnippetCode />
|
|
376
|
+
</CodeSnippetContent>
|
|
377
|
+
</CodeSnippetRoot>
|
|
378
|
+
</VStack>
|
|
379
|
+
</VStack>
|
|
380
|
+
);
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* `lines`, keyed by line number, tints a line and hangs a prefix off it — here a
|
|
384
|
+
* tooltipped icon on each of the three headers worth calling out.
|
|
385
|
+
*/
|
|
386
|
+
export const LineAnnotations: StoryFn<typeof meta> = () => {
|
|
387
|
+
const httpCode = `Host: inventory.example.com
|
|
388
|
+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
|
|
389
|
+
AppleWebKit/537.36
|
|
390
|
+
Accept: application/json, text/plain, */*
|
|
391
|
+
Accept-Language: en-US,en;q=0.9
|
|
392
|
+
Connection: keep-alive
|
|
393
|
+
Cache-Control: no-cache`;
|
|
394
|
+
|
|
395
|
+
return (
|
|
396
|
+
<CodeSnippetRoot
|
|
397
|
+
code={httpCode}
|
|
398
|
+
language='text'
|
|
399
|
+
lines={{
|
|
400
|
+
3: {
|
|
401
|
+
color: 'danger',
|
|
402
|
+
prefix: (
|
|
403
|
+
<Tooltip>
|
|
404
|
+
<TooltipTrigger>
|
|
405
|
+
<Skull />
|
|
406
|
+
</TooltipTrigger>
|
|
407
|
+
<TooltipContent>Tooltip</TooltipContent>
|
|
408
|
+
</Tooltip>
|
|
409
|
+
),
|
|
410
|
+
},
|
|
411
|
+
5: {
|
|
412
|
+
color: 'warning',
|
|
413
|
+
prefix: (
|
|
414
|
+
<Tooltip>
|
|
415
|
+
<TooltipTrigger>
|
|
416
|
+
<TriangleAlert />
|
|
417
|
+
</TooltipTrigger>
|
|
418
|
+
<TooltipContent>Tooltip</TooltipContent>
|
|
419
|
+
</Tooltip>
|
|
420
|
+
),
|
|
421
|
+
},
|
|
422
|
+
7: {
|
|
423
|
+
color: 'info',
|
|
424
|
+
prefix: (
|
|
425
|
+
<Tooltip>
|
|
426
|
+
<TooltipTrigger>
|
|
427
|
+
<Info />
|
|
428
|
+
</TooltipTrigger>
|
|
429
|
+
<TooltipContent>Tooltip</TooltipContent>
|
|
430
|
+
</Tooltip>
|
|
431
|
+
),
|
|
432
|
+
},
|
|
433
|
+
}}
|
|
434
|
+
>
|
|
435
|
+
<CodeSnippetContent>
|
|
436
|
+
<CodeSnippetLineNumbers />
|
|
437
|
+
<CodeSnippetCode />
|
|
438
|
+
</CodeSnippetContent>
|
|
439
|
+
</CodeSnippetRoot>
|
|
440
|
+
);
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* The seven line colours are semantic, so choose by what the line means — `danger` for
|
|
445
|
+
* the attack, `info` for the aside — not by which tint reads best.
|
|
446
|
+
*/
|
|
447
|
+
export const LineColors: StoryFn<typeof meta> = () => {
|
|
448
|
+
const colorsCode = `Line 1: Default (no color)
|
|
449
|
+
Line 2: Danger color
|
|
450
|
+
Line 3: Warning color
|
|
451
|
+
Line 4: Info color
|
|
452
|
+
Line 5: Success color
|
|
453
|
+
Line 6: Brand color
|
|
454
|
+
Line 7: AI color
|
|
455
|
+
Line 8: Neutral color`;
|
|
456
|
+
|
|
457
|
+
return (
|
|
458
|
+
<CodeSnippetRoot
|
|
459
|
+
code={colorsCode}
|
|
460
|
+
language='text'
|
|
461
|
+
lines={{
|
|
462
|
+
2: { color: 'danger' },
|
|
463
|
+
3: { color: 'warning' },
|
|
464
|
+
4: { color: 'info' },
|
|
465
|
+
5: { color: 'success' },
|
|
466
|
+
6: { color: 'brand' },
|
|
467
|
+
7: { color: 'ai' },
|
|
468
|
+
8: { color: 'neutral' },
|
|
469
|
+
}}
|
|
470
|
+
>
|
|
471
|
+
<CodeSnippetContent>
|
|
472
|
+
<CodeSnippetLineNumbers />
|
|
473
|
+
<CodeSnippetCode />
|
|
474
|
+
</CodeSnippetContent>
|
|
475
|
+
</CodeSnippetRoot>
|
|
476
|
+
);
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* `ranges` narrows the emphasis to character offsets inside the line — start inclusive,
|
|
481
|
+
* end exclusive — and once a line has them only the range is coloured, though the
|
|
482
|
+
* line's own background stays.
|
|
483
|
+
*/
|
|
484
|
+
export const LineRanges: StoryFn<typeof meta> = () => {
|
|
485
|
+
const httpCode = `GET /api/v2/users HTTP/1.1
|
|
486
|
+
Host: inventory.example.com
|
|
487
|
+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
|
|
488
|
+
Accept: application/json, text/plain, */*
|
|
489
|
+
Accept-Language: en-US,en;q=0.9
|
|
490
|
+
Connection: keep-alive
|
|
491
|
+
X-Forwarded-For: 192.168.1.100
|
|
492
|
+
Cache-Control: no-cache`;
|
|
493
|
+
|
|
494
|
+
return (
|
|
495
|
+
<CodeSnippetRoot
|
|
496
|
+
code={httpCode}
|
|
497
|
+
language='text'
|
|
498
|
+
lines={{
|
|
499
|
+
4: {
|
|
500
|
+
color: 'danger',
|
|
501
|
+
ranges: [{ start: 8, end: 24 }],
|
|
502
|
+
},
|
|
503
|
+
7: {
|
|
504
|
+
color: 'info',
|
|
505
|
+
ranges: [{ start: 17, end: 30 }],
|
|
506
|
+
},
|
|
507
|
+
}}
|
|
508
|
+
>
|
|
509
|
+
<CodeSnippetContent>
|
|
510
|
+
<CodeSnippetLineNumbers />
|
|
511
|
+
<CodeSnippetCode />
|
|
512
|
+
</CodeSnippetContent>
|
|
513
|
+
</CodeSnippetRoot>
|
|
514
|
+
);
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* `textStyle` overrides the weight or slant a colour would have chosen, with `className`
|
|
519
|
+
* and `style` left for the cases the three named styles do not cover.
|
|
520
|
+
*/
|
|
521
|
+
export const TextStyles: StoryFn<typeof meta> = () => {
|
|
522
|
+
const stylesCode = `Line 1: Default (regular)
|
|
523
|
+
Line 2: Medium weight
|
|
524
|
+
Line 3: Italic style
|
|
525
|
+
Line 4: Danger with italic override
|
|
526
|
+
Line 5: Neutral (default italic)
|
|
527
|
+
Line 6: Custom className
|
|
528
|
+
Line 7: Custom inline style`;
|
|
529
|
+
|
|
530
|
+
return (
|
|
531
|
+
<CodeSnippetRoot
|
|
532
|
+
code={stylesCode}
|
|
533
|
+
language='text'
|
|
534
|
+
lines={{
|
|
535
|
+
2: { textStyle: 'medium' },
|
|
536
|
+
3: { textStyle: 'italic' },
|
|
537
|
+
4: { color: 'danger', textStyle: 'italic' },
|
|
538
|
+
5: { color: 'neutral' },
|
|
539
|
+
6: { className: 'underline' },
|
|
540
|
+
7: { style: { textDecoration: 'line-through' } },
|
|
541
|
+
}}
|
|
542
|
+
>
|
|
543
|
+
<CodeSnippetContent>
|
|
544
|
+
<CodeSnippetLineNumbers />
|
|
545
|
+
<CodeSnippetCode />
|
|
546
|
+
</CodeSnippetContent>
|
|
547
|
+
</CodeSnippetRoot>
|
|
548
|
+
);
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* A `+` and `-` prefix over `success` and `danger` lines gives you a diff without a diff
|
|
553
|
+
* component.
|
|
554
|
+
*/
|
|
555
|
+
export const LineWithPrefix: StoryFn<typeof meta> = () => {
|
|
556
|
+
const diffCode = `const greeting = "Hello";
|
|
557
|
+
console.log("old message");
|
|
558
|
+
console.log("new message");
|
|
559
|
+
console.log("another new line");
|
|
560
|
+
|
|
561
|
+
export default greeting;`;
|
|
562
|
+
|
|
563
|
+
return (
|
|
564
|
+
<CodeSnippetRoot
|
|
565
|
+
code={diffCode}
|
|
566
|
+
language='text'
|
|
567
|
+
lines={{
|
|
568
|
+
2: { color: 'danger', prefix: '-' },
|
|
569
|
+
3: { color: 'success', prefix: '+' },
|
|
570
|
+
4: { color: 'success', prefix: '+' },
|
|
571
|
+
}}
|
|
572
|
+
>
|
|
573
|
+
<CodeSnippetContent>
|
|
574
|
+
<CodeSnippetLineNumbers />
|
|
575
|
+
<CodeSnippetCode />
|
|
576
|
+
</CodeSnippetContent>
|
|
577
|
+
</CodeSnippetRoot>
|
|
578
|
+
);
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* `wrapLines` against the same code unwrapped, in three pairs — what to check is that
|
|
583
|
+
* prefixes, colour sticks and fold toggles stay on the first visual row of a wrapped line.
|
|
584
|
+
*/
|
|
585
|
+
export const LineWrapping: StoryFn<typeof meta> = () => {
|
|
586
|
+
const longCode = `const veryLongVariableName = "This is a very long string that will demonstrate line wrapping behavior when the content exceeds the container width";
|
|
587
|
+
console.log(veryLongVariableName);`;
|
|
588
|
+
|
|
589
|
+
const httpCode = `GET /api/v2/users?page=1&limit=20&filter=active&sort=name&order=asc&include=profile,settings HTTP/1.1
|
|
590
|
+
Host: api.wallarm.com
|
|
591
|
+
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0
|
|
592
|
+
Content-Type: application/json
|
|
593
|
+
Accept: application/json
|
|
594
|
+
|
|
595
|
+
{
|
|
596
|
+
"filter": { "status": "active", "role": "admin" }
|
|
597
|
+
}`;
|
|
598
|
+
|
|
599
|
+
return (
|
|
600
|
+
<VStack gap={16}>
|
|
601
|
+
<VStack align='start' gap={4}>
|
|
602
|
+
<span className='sb-annotation'>Without wrapping</span>
|
|
603
|
+
<div style={{ maxWidth: '600px' }}>
|
|
604
|
+
<CodeSnippetRoot code={longCode} language='text'>
|
|
605
|
+
<CodeSnippetContent>
|
|
606
|
+
<CodeSnippetLineNumbers />
|
|
607
|
+
<CodeSnippetCode />
|
|
608
|
+
</CodeSnippetContent>
|
|
609
|
+
</CodeSnippetRoot>
|
|
610
|
+
</div>
|
|
611
|
+
</VStack>
|
|
612
|
+
|
|
613
|
+
<VStack align='start' gap={4}>
|
|
614
|
+
<span className='sb-annotation'>With wrapping</span>
|
|
615
|
+
<div style={{ maxWidth: '600px' }}>
|
|
616
|
+
<CodeSnippetRoot code={longCode} language='text' wrapLines>
|
|
617
|
+
<CodeSnippetContent>
|
|
618
|
+
<CodeSnippetLineNumbers />
|
|
619
|
+
<CodeSnippetCode />
|
|
620
|
+
</CodeSnippetContent>
|
|
621
|
+
</CodeSnippetRoot>
|
|
622
|
+
</div>
|
|
623
|
+
</VStack>
|
|
624
|
+
<VStack align='start' gap={4}>
|
|
625
|
+
<span className='sb-annotation'>Without wrapping, with annotations</span>
|
|
626
|
+
<div style={{ maxWidth: '600px' }}>
|
|
627
|
+
<CodeSnippetRoot
|
|
628
|
+
code={longCode}
|
|
629
|
+
language='text'
|
|
630
|
+
lines={{
|
|
631
|
+
1: { color: 'danger', prefix: '-' },
|
|
632
|
+
2: { color: 'success', prefix: '+' },
|
|
633
|
+
}}
|
|
634
|
+
>
|
|
635
|
+
<CodeSnippetContent>
|
|
636
|
+
<CodeSnippetLineNumbers />
|
|
637
|
+
<CodeSnippetCode />
|
|
638
|
+
</CodeSnippetContent>
|
|
639
|
+
</CodeSnippetRoot>
|
|
640
|
+
</div>
|
|
641
|
+
</VStack>
|
|
642
|
+
<VStack align='start' gap={4}>
|
|
643
|
+
<span className='sb-annotation'>Wrapping with annotations</span>
|
|
644
|
+
<div style={{ maxWidth: '600px' }}>
|
|
645
|
+
<CodeSnippetRoot
|
|
646
|
+
code={longCode}
|
|
647
|
+
language='text'
|
|
648
|
+
wrapLines
|
|
649
|
+
lines={{
|
|
650
|
+
1: { color: 'danger', prefix: '-' },
|
|
651
|
+
2: { color: 'success', prefix: '+' },
|
|
652
|
+
}}
|
|
653
|
+
>
|
|
654
|
+
<CodeSnippetContent>
|
|
655
|
+
<CodeSnippetLineNumbers />
|
|
656
|
+
<CodeSnippetCode />
|
|
657
|
+
</CodeSnippetContent>
|
|
658
|
+
</CodeSnippetRoot>
|
|
659
|
+
</div>
|
|
660
|
+
</VStack>
|
|
661
|
+
<VStack align='start' gap={4}>
|
|
662
|
+
<span className='sb-annotation'>Folds without wrapping</span>
|
|
663
|
+
<div style={{ maxWidth: '600px' }}>
|
|
664
|
+
<CodeSnippetRoot
|
|
665
|
+
code={httpCode}
|
|
666
|
+
language='text'
|
|
667
|
+
folds={getHttpFolds(httpCode, { headers: { defaultCollapsed: true } })}
|
|
668
|
+
>
|
|
669
|
+
<CodeSnippetContent>
|
|
670
|
+
<CodeSnippetLineNumbers />
|
|
671
|
+
<CodeSnippetCode />
|
|
672
|
+
</CodeSnippetContent>
|
|
673
|
+
</CodeSnippetRoot>
|
|
674
|
+
</div>
|
|
675
|
+
</VStack>
|
|
676
|
+
<VStack align='start' gap={4}>
|
|
677
|
+
<span className='sb-annotation'>Folds with wrapping</span>
|
|
678
|
+
<div style={{ maxWidth: '600px' }}>
|
|
679
|
+
<CodeSnippetRoot
|
|
680
|
+
code={httpCode}
|
|
681
|
+
language='text'
|
|
682
|
+
wrapLines
|
|
683
|
+
folds={getHttpFolds(httpCode, { headers: { defaultCollapsed: true } })}
|
|
684
|
+
>
|
|
685
|
+
<CodeSnippetContent>
|
|
686
|
+
<CodeSnippetLineNumbers />
|
|
687
|
+
<CodeSnippetCode />
|
|
688
|
+
</CodeSnippetContent>
|
|
689
|
+
</CodeSnippetRoot>
|
|
690
|
+
</div>
|
|
691
|
+
</VStack>
|
|
692
|
+
</VStack>
|
|
693
|
+
);
|
|
694
|
+
};
|
|
695
|
+
|
|
696
|
+
const longScrollCode = `// This is a code snippet that demonstrates both vertical and horizontal scrolling
|
|
697
|
+
const veryLongVariableName = "This is a very long string that will require horizontal scrolling to see the entire content of the line";
|
|
698
|
+
const anotherLongLine = { key1: "value1", key2: "value2", key3: "value3", key4: "value4", key5: "value5", key6: "value6", key7: "value7" };
|
|
699
|
+
|
|
700
|
+
function processData(input) {
|
|
701
|
+
const result = [];
|
|
702
|
+
for (let i = 0; i < input.length; i++) {
|
|
703
|
+
result.push(input[i] * 2);
|
|
704
|
+
}
|
|
705
|
+
return result;
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
async function fetchUserData(userId) {
|
|
709
|
+
const response = await fetch(\`/api/users/\${userId}\`);
|
|
710
|
+
const data = await response.json();
|
|
711
|
+
return data;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
class DataProcessor {
|
|
715
|
+
constructor(config) {
|
|
716
|
+
this.config = config;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
process(data) {
|
|
720
|
+
return data.map(item => item * this.config.multiplier);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
const config = { multiplier: 2 };
|
|
725
|
+
const processor = new DataProcessor(config);
|
|
726
|
+
|
|
727
|
+
export { processData, fetchUserData, DataProcessor };`;
|
|
728
|
+
|
|
729
|
+
/**
|
|
730
|
+
* Given a fixed height inside a narrow column, the block scrolls in both directions
|
|
731
|
+
* rather than pushing its container around.
|
|
732
|
+
*/
|
|
733
|
+
export const WithBothScrolls: StoryFn<typeof meta> = () => (
|
|
734
|
+
<div style={{ maxWidth: '500px', maxHeight: '300px', background: 'white' }}>
|
|
735
|
+
<CodeSnippetRoot
|
|
736
|
+
code={longScrollCode}
|
|
737
|
+
language='text'
|
|
738
|
+
lines={{
|
|
739
|
+
2: { color: 'warning', prefix: <TriangleAlert /> },
|
|
740
|
+
3: { color: 'info' },
|
|
741
|
+
13: { color: 'danger', prefix: <Skull /> },
|
|
742
|
+
20: { color: 'success', prefix: '+' },
|
|
743
|
+
}}
|
|
744
|
+
style={{ height: '280px' }}
|
|
745
|
+
>
|
|
746
|
+
<CodeSnippetContent>
|
|
747
|
+
<CodeSnippetLineNumbers />
|
|
748
|
+
<CodeSnippetCode />
|
|
749
|
+
</CodeSnippetContent>
|
|
750
|
+
</CodeSnippetRoot>
|
|
751
|
+
</div>
|
|
752
|
+
);
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* `startingLineNumber` renumbers the gutter, for a fragment lifted out of a longer file.
|
|
756
|
+
*/
|
|
757
|
+
export const CustomStartingLine: StoryFn<typeof meta> = () => (
|
|
758
|
+
<CodeSnippetRoot code={sampleCode} language='text' startingLineNumber={97}>
|
|
759
|
+
<CodeSnippetContent>
|
|
760
|
+
<CodeSnippetLineNumbers />
|
|
761
|
+
<CodeSnippetCode />
|
|
762
|
+
</CodeSnippetContent>
|
|
763
|
+
</CodeSnippetRoot>
|
|
764
|
+
);
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* Shiki, supplied through `CodeSnippetAdapterProvider`, uses VS Code-style grammars.
|
|
768
|
+
* The adapter lazily initializes its supported languages and github-light theme with
|
|
769
|
+
* the Oniguruma WASM engine on the first highlight call.
|
|
770
|
+
*/
|
|
771
|
+
export const JSONWithShiki: StoryFn<typeof meta> = () => (
|
|
772
|
+
<CodeSnippetAdapterProvider adapter={loadShikiAdapter}>
|
|
773
|
+
<CodeSnippetRoot code={jsonCode} language='json'>
|
|
774
|
+
<CodeSnippetContent>
|
|
775
|
+
<CodeSnippetLineNumbers />
|
|
776
|
+
<CodeSnippetCode />
|
|
777
|
+
</CodeSnippetContent>
|
|
778
|
+
</CodeSnippetRoot>
|
|
779
|
+
</CodeSnippetAdapterProvider>
|
|
780
|
+
);
|
|
781
|
+
|
|
782
|
+
const typescriptCode = `type User = {
|
|
783
|
+
id: number;
|
|
784
|
+
name: string;
|
|
785
|
+
email: string;
|
|
786
|
+
isActive: boolean;
|
|
787
|
+
};
|
|
788
|
+
|
|
789
|
+
type UserRole = 'admin' | 'user' | 'guest';
|
|
790
|
+
|
|
791
|
+
/*
|
|
792
|
+
* Get user by id
|
|
793
|
+
* */
|
|
794
|
+
async function fetchUser(id: number): Promise<User> {
|
|
795
|
+
const response = await fetch(\`/api/users/\${id}\`);
|
|
796
|
+
if (!response.ok) {
|
|
797
|
+
throw new Error('User not found');
|
|
798
|
+
}
|
|
799
|
+
return response.json();
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
// Default users
|
|
803
|
+
const users: User[] = [];
|
|
804
|
+
export { fetchUser, users };`;
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* TypeScript highlighted with Prism. Its loader emits only the Prism adapter's
|
|
808
|
+
* dependencies; unused Shiki and highlight.js loaders are discarded by the consumer.
|
|
809
|
+
*/
|
|
810
|
+
export const TypescriptWithPrism: StoryFn<typeof meta> = () => (
|
|
811
|
+
<CodeSnippetAdapterProvider adapter={loadPrismAdapter}>
|
|
812
|
+
<CodeSnippetRoot code={typescriptCode} language='typescript'>
|
|
813
|
+
<CodeSnippetContent>
|
|
814
|
+
<CodeSnippetLineNumbers />
|
|
815
|
+
<CodeSnippetCode />
|
|
816
|
+
</CodeSnippetContent>
|
|
817
|
+
</CodeSnippetRoot>
|
|
818
|
+
</CodeSnippetAdapterProvider>
|
|
819
|
+
);
|
|
820
|
+
|
|
821
|
+
const curlCode = `curl -X POST "https://api.wallarm.com/v2/node" \\
|
|
822
|
+
-H "Authorization: Bearer $WALLARM_API_TOKEN" \\
|
|
823
|
+
-H "Content-Type: application/json" \\
|
|
824
|
+
-d '{
|
|
825
|
+
"name": "my-node",
|
|
826
|
+
"type": "cloud",
|
|
827
|
+
"enabled": true
|
|
828
|
+
}'`;
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* A multi-line `curl` under Prism, where the continuation backslashes and the quoted JSON
|
|
832
|
+
* body are the parts a highlighter usually gets wrong.
|
|
833
|
+
*/
|
|
834
|
+
export const BashWithPrism: StoryFn<typeof meta> = () => (
|
|
835
|
+
<CodeSnippetAdapterProvider adapter={loadPrismAdapter}>
|
|
836
|
+
<CodeSnippetRoot code={curlCode} language='bash'>
|
|
837
|
+
<CodeSnippetContent>
|
|
838
|
+
<CodeSnippetLineNumbers />
|
|
839
|
+
<CodeSnippetCode />
|
|
840
|
+
</CodeSnippetContent>
|
|
841
|
+
</CodeSnippetRoot>
|
|
842
|
+
</CodeSnippetAdapterProvider>
|
|
843
|
+
);
|
|
844
|
+
|
|
845
|
+
const htmlCode = `<!DOCTYPE html>
|
|
846
|
+
<html lang="en">
|
|
847
|
+
<head>
|
|
848
|
+
<meta charset="UTF-8">
|
|
849
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
850
|
+
<title>Wallarm Dashboard</title>
|
|
851
|
+
<link rel="stylesheet" href="/styles.css">
|
|
852
|
+
</head>
|
|
853
|
+
<body>
|
|
854
|
+
<header class="header">
|
|
855
|
+
<nav id="main-nav">
|
|
856
|
+
<a href="/" class="logo">Wallarm</a>
|
|
857
|
+
<ul class="nav-links">
|
|
858
|
+
<li><a href="/dashboard">Dashboard</a></li>
|
|
859
|
+
<li><a href="/settings">Settings</a></li>
|
|
860
|
+
</ul>
|
|
861
|
+
</nav>
|
|
862
|
+
</header>
|
|
863
|
+
<main>
|
|
864
|
+
<h1>Welcome to Wallarm</h1>
|
|
865
|
+
<p>Secure your APIs with advanced protection.</p>
|
|
866
|
+
</main>
|
|
867
|
+
</body>
|
|
868
|
+
</html>`;
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* HTML highlighted with highlight.js. The adapter loads the library lazily and
|
|
872
|
+
* exposes the languages listed by its getSupportedLanguages() method.
|
|
873
|
+
*/
|
|
874
|
+
export const HTMLWithHighlightJs: StoryFn<typeof meta> = () => (
|
|
875
|
+
<CodeSnippetAdapterProvider adapter={loadHighlightJsAdapter}>
|
|
876
|
+
<CodeSnippetRoot code={htmlCode} language='html'>
|
|
877
|
+
<CodeSnippetContent>
|
|
878
|
+
<CodeSnippetLineNumbers />
|
|
879
|
+
<CodeSnippetCode />
|
|
880
|
+
</CodeSnippetContent>
|
|
881
|
+
</CodeSnippetRoot>
|
|
882
|
+
</CodeSnippetAdapterProvider>
|
|
883
|
+
);
|
|
884
|
+
|
|
885
|
+
const httpRequestCode = `GET /api/v2/users?page=1&limit=20 HTTP/1.1
|
|
886
|
+
Host: api.wallarm.com
|
|
887
|
+
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
|
|
888
|
+
Content-Type: application/json
|
|
889
|
+
Accept: application/json
|
|
890
|
+
User-Agent: WallarmSDK/2.0
|
|
891
|
+
Cache-Control: no-cache`;
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* `language='http'` is a grammar in its own right — method, path and version on the first
|
|
895
|
+
* line, then header names told apart from their values.
|
|
896
|
+
*/
|
|
897
|
+
export const HTTPRequestWithPrism: StoryFn<typeof meta> = () => (
|
|
898
|
+
<CodeSnippetAdapterProvider adapter={loadPrismAdapter}>
|
|
899
|
+
<CodeSnippetRoot code={httpRequestCode} language='http'>
|
|
900
|
+
<CodeSnippetContent>
|
|
901
|
+
<CodeSnippetLineNumbers />
|
|
902
|
+
<CodeSnippetCode />
|
|
903
|
+
</CodeSnippetContent>
|
|
904
|
+
</CodeSnippetRoot>
|
|
905
|
+
</CodeSnippetAdapterProvider>
|
|
906
|
+
);
|
|
907
|
+
|
|
908
|
+
const httpResponseCode = `HTTP/1.1 200 OK
|
|
909
|
+
Content-Type: application/json; charset=utf-8
|
|
910
|
+
X-Request-Id: abc-123-def-456
|
|
911
|
+
Cache-Control: no-store
|
|
912
|
+
|
|
913
|
+
{
|
|
914
|
+
"users": [
|
|
915
|
+
{ "id": 1, "name": "Alice" },
|
|
916
|
+
{ "id": 2, "name": "Bob" }
|
|
917
|
+
],
|
|
918
|
+
"total": 42
|
|
919
|
+
}`;
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* The response side, where the JSON body after the headers is highlighted as JSON rather
|
|
923
|
+
* than as more header text.
|
|
924
|
+
*/
|
|
925
|
+
export const HTTPResponseWithShiki: StoryFn<typeof meta> = () => (
|
|
926
|
+
<CodeSnippetAdapterProvider adapter={loadShikiAdapter}>
|
|
927
|
+
<CodeSnippetRoot code={httpResponseCode} language='http'>
|
|
928
|
+
<CodeSnippetContent>
|
|
929
|
+
<CodeSnippetLineNumbers />
|
|
930
|
+
<CodeSnippetCode />
|
|
931
|
+
</CodeSnippetContent>
|
|
932
|
+
</CodeSnippetRoot>
|
|
933
|
+
</CodeSnippetAdapterProvider>
|
|
934
|
+
);
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* `CodeSnippetHeader` with a `CodeSnippetTitle` names the file the code came from, as a
|
|
938
|
+
* bar above the block rather than a caption on it.
|
|
939
|
+
*/
|
|
940
|
+
export const WithHeader: StoryFn<typeof meta> = () => (
|
|
941
|
+
<CodeSnippetRoot code={bashCode} language='text'>
|
|
942
|
+
<CodeSnippetHeader>
|
|
943
|
+
<CodeSnippetTitle>install.sh</CodeSnippetTitle>
|
|
944
|
+
</CodeSnippetHeader>
|
|
945
|
+
<CodeSnippetContent>
|
|
946
|
+
<CodeSnippetCode />
|
|
947
|
+
</CodeSnippetContent>
|
|
948
|
+
</CodeSnippetRoot>
|
|
949
|
+
);
|
|
950
|
+
|
|
951
|
+
const packageManagerCodes: Record<string, string> = {
|
|
952
|
+
npm: 'npx wasd-new@latest add code-snippet inline-code-snippet button',
|
|
953
|
+
pnpm: 'pnpm dlx wasd-new@latest add code-snippet inline-code-snippet button',
|
|
954
|
+
yarn: 'yarn dlx wasd-new@latest add code-snippet inline-code-snippet button',
|
|
955
|
+
bun: 'bunx wasd-new@latest add code-snippet inline-code-snippet button',
|
|
956
|
+
};
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Tabs in the header swap the `code` the block is given, which is how one command per
|
|
960
|
+
* package manager is built; the actions sit at the far end of the same bar.
|
|
961
|
+
*/
|
|
962
|
+
export const WithTabsAndActions: StoryFn<typeof meta> = () => {
|
|
963
|
+
const [tab, setTab] = useState('npm');
|
|
964
|
+
const code = packageManagerCodes[tab] ?? '';
|
|
965
|
+
|
|
966
|
+
return (
|
|
967
|
+
<div style={{ width: '320px' }}>
|
|
968
|
+
<CodeSnippetRoot code={code} language='text'>
|
|
969
|
+
<CodeSnippetHeader>
|
|
970
|
+
<CodeSnippetTabs value={tab} onValueChange={setTab}>
|
|
971
|
+
<CodeSnippetTab value='npm'>npm</CodeSnippetTab>
|
|
972
|
+
<CodeSnippetTab value='pnpm'>pnpm</CodeSnippetTab>
|
|
973
|
+
<CodeSnippetTab value='yarn'>yarn</CodeSnippetTab>
|
|
974
|
+
<CodeSnippetTab value='bun'>bun</CodeSnippetTab>
|
|
975
|
+
</CodeSnippetTabs>
|
|
976
|
+
<CodeSnippetActions>
|
|
977
|
+
<CodeSnippetFullscreenButton />
|
|
978
|
+
<CodeSnippetWrapButton />
|
|
979
|
+
<CodeSnippetCopyButton />
|
|
980
|
+
</CodeSnippetActions>
|
|
981
|
+
</CodeSnippetHeader>
|
|
982
|
+
<CodeSnippetContent>
|
|
983
|
+
<CodeSnippetCode />
|
|
984
|
+
</CodeSnippetContent>
|
|
985
|
+
</CodeSnippetRoot>
|
|
986
|
+
</div>
|
|
987
|
+
);
|
|
988
|
+
};
|
|
989
|
+
|
|
990
|
+
/**
|
|
991
|
+
* With no header to hold them, `CodeSnippetActions` floats over the top-right of the code
|
|
992
|
+
* — the shape for a block whose only affordance is copy.
|
|
993
|
+
*/
|
|
994
|
+
export const WithFloatingActions: StoryFn<typeof meta> = () => (
|
|
995
|
+
<div style={{ width: '320px' }}>
|
|
996
|
+
<CodeSnippetRoot code={sampleCode} language='text'>
|
|
997
|
+
<CodeSnippetActions>
|
|
998
|
+
<CodeSnippetWrapButton />
|
|
999
|
+
<CodeSnippetCopyButton />
|
|
1000
|
+
</CodeSnippetActions>
|
|
1001
|
+
<CodeSnippetContent>
|
|
1002
|
+
<CodeSnippetLineNumbers />
|
|
1003
|
+
<CodeSnippetCode />
|
|
1004
|
+
</CodeSnippetContent>
|
|
1005
|
+
</CodeSnippetRoot>
|
|
1006
|
+
</div>
|
|
1007
|
+
);
|
|
1008
|
+
|
|
1009
|
+
const showMoreCode = `Host: inventory.example.com
|
|
1010
|
+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
|
|
1011
|
+
Referer: https://app.example.com/dashboard
|
|
1012
|
+
Accept: application/json, text/plain, */*
|
|
1013
|
+
Accept-Language: en-US,en;q=0.9
|
|
1014
|
+
Connection: keep-alive
|
|
1015
|
+
Cache-Control: no-cache
|
|
1016
|
+
Referer: https://app.example.com/dashboard
|
|
1017
|
+
Accept: application/json, text/plain, */*
|
|
1018
|
+
Accept-Language: en-US,en;q=0.9
|
|
1019
|
+
Connection: keep-alive
|
|
1020
|
+
Cache-Control: no-cache`;
|
|
1021
|
+
|
|
1022
|
+
/**
|
|
1023
|
+
* Show more / show less button to collapse long code snippets.
|
|
1024
|
+
* Matches Figma node 3092:19114.
|
|
1025
|
+
*
|
|
1026
|
+
* When `maxLines` is set, only the first N lines are shown and
|
|
1027
|
+
* CodeSnippetRoot auto-renders the default button. Render
|
|
1028
|
+
* CodeSnippetShowMoreButton yourself only when props must reach the real
|
|
1029
|
+
* button, for example analytics attributes or an onClick handler.
|
|
1030
|
+
*/
|
|
1031
|
+
const showMoreThresholdCode = `Host: inventory.example.com
|
|
1032
|
+
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
|
|
1033
|
+
Referer: https://app.example.com/dashboard
|
|
1034
|
+
Accept: application/json, text/plain, */*
|
|
1035
|
+
Accept-Language: en-US,en;q=0.9
|
|
1036
|
+
Connection: keep-alive
|
|
1037
|
+
Cache-Control: no-cache
|
|
1038
|
+
Authorization: Bearer token123
|
|
1039
|
+
X-Request-ID: abc-def-ghi`;
|
|
1040
|
+
|
|
1041
|
+
/**
|
|
1042
|
+
* `maxLines` clips the block and adds the control itself — but only when it would hide at
|
|
1043
|
+
* least three lines, so the middle snippet stays open; the third passes props to the real
|
|
1044
|
+
* button by rendering `CodeSnippetShowMoreButton` in place of the automatic one.
|
|
1045
|
+
*/
|
|
1046
|
+
export const ShowMore: StoryFn<typeof meta> = () => (
|
|
1047
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', width: '500px' }}>
|
|
1048
|
+
<div>
|
|
1049
|
+
<p className='sb-annotation mb-8'>12 lines, clipped at 7 — 5 hidden</p>
|
|
1050
|
+
<CodeSnippetRoot
|
|
1051
|
+
code={showMoreCode}
|
|
1052
|
+
language='text'
|
|
1053
|
+
maxLines={7}
|
|
1054
|
+
data-testid='show-more-clipped'
|
|
1055
|
+
>
|
|
1056
|
+
<CodeSnippetContent>
|
|
1057
|
+
<CodeSnippetCode />
|
|
1058
|
+
</CodeSnippetContent>
|
|
1059
|
+
</CodeSnippetRoot>
|
|
1060
|
+
</div>
|
|
1061
|
+
<div>
|
|
1062
|
+
<p className='sb-annotation mb-8'>9 lines, clipped at 7 — 2 hidden, no button</p>
|
|
1063
|
+
<CodeSnippetRoot
|
|
1064
|
+
code={showMoreThresholdCode}
|
|
1065
|
+
language='text'
|
|
1066
|
+
maxLines={7}
|
|
1067
|
+
data-testid='show-more-threshold'
|
|
1068
|
+
>
|
|
1069
|
+
<CodeSnippetContent>
|
|
1070
|
+
<CodeSnippetCode />
|
|
1071
|
+
</CodeSnippetContent>
|
|
1072
|
+
</CodeSnippetRoot>
|
|
1073
|
+
</div>
|
|
1074
|
+
<div>
|
|
1075
|
+
<p className='sb-annotation mb-8'>the button rendered by hand</p>
|
|
1076
|
+
<CodeSnippetRoot code={showMoreCode} language='text' maxLines={7}>
|
|
1077
|
+
<CodeSnippetContent>
|
|
1078
|
+
<CodeSnippetCode />
|
|
1079
|
+
</CodeSnippetContent>
|
|
1080
|
+
<CodeSnippetShowMoreButton data-analytics-id='CODE_SHOW_MORE' />
|
|
1081
|
+
</CodeSnippetRoot>
|
|
1082
|
+
</div>
|
|
1083
|
+
</div>
|
|
1084
|
+
);
|
|
1085
|
+
|
|
1086
|
+
// --- Folding stories ---
|
|
1087
|
+
|
|
1088
|
+
const foldableRequestCode = `GET /api/v2/users HTTP/1.1
|
|
1089
|
+
Host: api.example.com
|
|
1090
|
+
Accept: application/json
|
|
1091
|
+
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9
|
|
1092
|
+
X-Request-ID: abc-123
|
|
1093
|
+
Content-Type: application/json
|
|
1094
|
+
Cache-Control: no-cache
|
|
1095
|
+
|
|
1096
|
+
{
|
|
1097
|
+
"filter": {
|
|
1098
|
+
"status": "active",
|
|
1099
|
+
"role": "admin"
|
|
1100
|
+
},
|
|
1101
|
+
"pagination": {
|
|
1102
|
+
"page": 1,
|
|
1103
|
+
"limit": 50
|
|
1104
|
+
}
|
|
1105
|
+
}`;
|
|
1106
|
+
|
|
1107
|
+
const foldableResponseCode = `HTTP/1.1 200 OK
|
|
1108
|
+
Content-Type: application/json; charset=utf-8
|
|
1109
|
+
X-Request-ID: abc-123
|
|
1110
|
+
X-RateLimit-Remaining: 98
|
|
1111
|
+
Cache-Control: private, max-age=0
|
|
1112
|
+
|
|
1113
|
+
{
|
|
1114
|
+
"data": [
|
|
1115
|
+
{
|
|
1116
|
+
"id": 1,
|
|
1117
|
+
"name": "Alice",
|
|
1118
|
+
"role": "admin",
|
|
1119
|
+
"status": "active"
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
"id": 2,
|
|
1123
|
+
"name": "Bob",
|
|
1124
|
+
"role": "admin",
|
|
1125
|
+
"status": "active"
|
|
1126
|
+
}
|
|
1127
|
+
],
|
|
1128
|
+
"meta": {
|
|
1129
|
+
"total": 2,
|
|
1130
|
+
"page": 1,
|
|
1131
|
+
"limit": 50
|
|
1132
|
+
}
|
|
1133
|
+
}`;
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* `getHttpFolds` reads an HTTP message and returns its fold regions, so the reader opens
|
|
1137
|
+
* the headers or the body rather than scrolling past both.
|
|
1138
|
+
*/
|
|
1139
|
+
export const HTTPRequestWithFolding: StoryFn<typeof meta> = () => (
|
|
1140
|
+
<CodeSnippetRoot
|
|
1141
|
+
code={foldableRequestCode}
|
|
1142
|
+
language='text'
|
|
1143
|
+
folds={getHttpFolds(foldableRequestCode)}
|
|
1144
|
+
>
|
|
1145
|
+
<CodeSnippetContent>
|
|
1146
|
+
<CodeSnippetLineNumbers />
|
|
1147
|
+
<CodeSnippetCode />
|
|
1148
|
+
</CodeSnippetContent>
|
|
1149
|
+
</CodeSnippetRoot>
|
|
1150
|
+
);
|
|
1151
|
+
|
|
1152
|
+
/**
|
|
1153
|
+
* The same helper on a response, where the body is usually the half worth folding away.
|
|
1154
|
+
*/
|
|
1155
|
+
export const HTTPResponseWithFolding: StoryFn<typeof meta> = () => (
|
|
1156
|
+
<CodeSnippetRoot
|
|
1157
|
+
code={foldableResponseCode}
|
|
1158
|
+
language='text'
|
|
1159
|
+
folds={getHttpFolds(foldableResponseCode)}
|
|
1160
|
+
>
|
|
1161
|
+
<CodeSnippetContent>
|
|
1162
|
+
<CodeSnippetLineNumbers />
|
|
1163
|
+
<CodeSnippetCode />
|
|
1164
|
+
</CodeSnippetContent>
|
|
1165
|
+
</CodeSnippetRoot>
|
|
1166
|
+
);
|
|
1167
|
+
|
|
1168
|
+
/**
|
|
1169
|
+
* Folds over coloured lines: a collapsed fold takes its colours and prefixes with it, and
|
|
1170
|
+
* hands them back on expand.
|
|
1171
|
+
*/
|
|
1172
|
+
export const WithFoldingExpanded: StoryFn<typeof meta> = () => (
|
|
1173
|
+
<CodeSnippetRoot
|
|
1174
|
+
code={foldableRequestCode}
|
|
1175
|
+
language='text'
|
|
1176
|
+
folds={getHttpFolds(foldableRequestCode)}
|
|
1177
|
+
lines={{
|
|
1178
|
+
3: { color: 'warning' },
|
|
1179
|
+
4: { color: 'danger', ranges: [{ start: 14, end: 42, color: 'danger' }] },
|
|
1180
|
+
10: { color: 'info' },
|
|
1181
|
+
11: { color: 'info' },
|
|
1182
|
+
}}
|
|
1183
|
+
>
|
|
1184
|
+
<CodeSnippetContent>
|
|
1185
|
+
<CodeSnippetLineNumbers />
|
|
1186
|
+
<CodeSnippetCode />
|
|
1187
|
+
</CodeSnippetContent>
|
|
1188
|
+
</CodeSnippetRoot>
|
|
1189
|
+
);
|
|
1190
|
+
|
|
1191
|
+
/**
|
|
1192
|
+
* Folds, `maxLines` and `startingLineNumber` together — fold line numbers are absolute, so
|
|
1193
|
+
* `getHttpFolds` has to be given the same offset the gutter uses.
|
|
1194
|
+
*/
|
|
1195
|
+
export const WithFoldingAndShowMore: StoryFn<typeof meta> = () => (
|
|
1196
|
+
<CodeSnippetAdapterProvider adapter={loadShikiAdapter}>
|
|
1197
|
+
<CodeSnippetRoot
|
|
1198
|
+
code={foldableResponseCode}
|
|
1199
|
+
language='http'
|
|
1200
|
+
startingLineNumber={100}
|
|
1201
|
+
maxLines={6}
|
|
1202
|
+
folds={getHttpFolds(foldableResponseCode, { startingLineNumber: 100 })}
|
|
1203
|
+
>
|
|
1204
|
+
<CodeSnippetContent>
|
|
1205
|
+
<CodeSnippetLineNumbers />
|
|
1206
|
+
<CodeSnippetCode />
|
|
1207
|
+
</CodeSnippetContent>
|
|
1208
|
+
</CodeSnippetRoot>
|
|
1209
|
+
</CodeSnippetAdapterProvider>
|
|
1210
|
+
);
|
|
1211
|
+
|
|
1212
|
+
/**
|
|
1213
|
+
* Fullscreen opened from a modal `Drawer` stacks above it as a nested layer: its buttons stay
|
|
1214
|
+
* clickable, and Escape or a backdrop click leaves fullscreen while the drawer stays open.
|
|
1215
|
+
*/
|
|
1216
|
+
export const FullscreenInsideDrawer: StoryFn<typeof meta> = () => (
|
|
1217
|
+
<Drawer>
|
|
1218
|
+
<DrawerTrigger asChild>
|
|
1219
|
+
<Button variant='outline' color='neutral'>
|
|
1220
|
+
Open Drawer
|
|
1221
|
+
</Button>
|
|
1222
|
+
</DrawerTrigger>
|
|
1223
|
+
<DrawerContent>
|
|
1224
|
+
<DrawerHeader>
|
|
1225
|
+
<DrawerTitle>Request</DrawerTitle>
|
|
1226
|
+
</DrawerHeader>
|
|
1227
|
+
<DrawerBody>
|
|
1228
|
+
<CodeSnippetRoot code={jsonCode} language='json'>
|
|
1229
|
+
<CodeSnippetHeader>
|
|
1230
|
+
<CodeSnippetTitle>package.json</CodeSnippetTitle>
|
|
1231
|
+
<CodeSnippetActions>
|
|
1232
|
+
<CodeSnippetFullscreenButton />
|
|
1233
|
+
<CodeSnippetCopyButton />
|
|
1234
|
+
</CodeSnippetActions>
|
|
1235
|
+
</CodeSnippetHeader>
|
|
1236
|
+
<CodeSnippetContent>
|
|
1237
|
+
<CodeSnippetCode />
|
|
1238
|
+
</CodeSnippetContent>
|
|
1239
|
+
</CodeSnippetRoot>
|
|
1240
|
+
</DrawerBody>
|
|
1241
|
+
</DrawerContent>
|
|
1242
|
+
</Drawer>
|
|
1243
|
+
);
|
|
1244
|
+
```
|
|
1245
|
+
|
|
1246
|
+
### CodeSnippet/InlineCodeSnippet.stories.tsx
|
|
1247
|
+
|
|
1248
|
+
```tsx
|
|
1249
|
+
import type { Meta, StoryFn } from 'storybook-react-rsbuild';
|
|
1250
|
+
import { VStack } from '../Stack';
|
|
1251
|
+
import { InlineCodeSnippet } from './InlineCodeSnippet';
|
|
1252
|
+
|
|
1253
|
+
const DESCRIPTION = [
|
|
1254
|
+
'A fragment of code inside a sentence, copied by clicking it — reach for `Code` when the text only needs the mono treatment, and `CodeSnippet` when it needs syntax highlighting, a header or line numbers.',
|
|
1255
|
+
'It takes its size from the text around it, so a snippet in a caption stays the size of the caption; keep it to a single line so the sentence still reads.',
|
|
1256
|
+
].join(' ');
|
|
1257
|
+
|
|
1258
|
+
const meta = {
|
|
1259
|
+
title: 'Data Display/CodeSnippet/InlineCodeSnippet',
|
|
1260
|
+
component: InlineCodeSnippet,
|
|
1261
|
+
parameters: {
|
|
1262
|
+
layout: 'centered',
|
|
1263
|
+
design: {
|
|
1264
|
+
type: 'figma',
|
|
1265
|
+
url: 'https://www.figma.com/design/VKb5gW46uSGw0rqrhZsbXT/WADS-Components?node-id=3087-29516&m=dev',
|
|
1266
|
+
},
|
|
1267
|
+
docs: { description: { component: DESCRIPTION } },
|
|
1268
|
+
},
|
|
1269
|
+
tags: ['autodocs'],
|
|
1270
|
+
} satisfies Meta<typeof InlineCodeSnippet>;
|
|
1271
|
+
|
|
1272
|
+
export default meta;
|
|
1273
|
+
|
|
1274
|
+
/**
|
|
1275
|
+
* One snippet in three sentence sizes: `size='inherit'`, the default, scales the type
|
|
1276
|
+
* and the padding with whatever it sits in, and hovering offers the copy.
|
|
1277
|
+
*/
|
|
1278
|
+
export const Default: StoryFn<typeof meta> = () => (
|
|
1279
|
+
<VStack align='start'>
|
|
1280
|
+
<p className='text-xs text-text-primary'>
|
|
1281
|
+
Small text: Run{' '}
|
|
1282
|
+
<InlineCodeSnippet code='npm install @wads/ui' data-testid='inline-code-copyable' /> to
|
|
1283
|
+
install dependencies.
|
|
1284
|
+
</p>
|
|
1285
|
+
<p className='text-sm text-text-primary'>
|
|
1286
|
+
Medium text: Run <InlineCodeSnippet code='npm install @wads/ui' /> to install dependencies.
|
|
1287
|
+
</p>
|
|
1288
|
+
<p className='text-base text-text-primary'>
|
|
1289
|
+
Large text: Run <InlineCodeSnippet code='npm install @wads/ui' /> to install dependencies.
|
|
1290
|
+
</p>
|
|
1291
|
+
</VStack>
|
|
1292
|
+
);
|
|
1293
|
+
|
|
1294
|
+
/**
|
|
1295
|
+
* The three fixed sizes, each beside the text size it pairs with — set one when the
|
|
1296
|
+
* snippet must hold its size regardless of its surroundings.
|
|
1297
|
+
*/
|
|
1298
|
+
export const Sizes: StoryFn<typeof meta> = () => (
|
|
1299
|
+
<VStack align='start' gap={16}>
|
|
1300
|
+
<VStack align='start' gap={4}>
|
|
1301
|
+
<span className='sb-annotation'>sm</span>
|
|
1302
|
+
<div className='text-xs text-text-primary'>
|
|
1303
|
+
To start creating an interface, run{' '}
|
|
1304
|
+
<InlineCodeSnippet code='npm install @wads/ui' size='sm' /> and then apply the following...
|
|
1305
|
+
</div>
|
|
1306
|
+
</VStack>
|
|
1307
|
+
<VStack align='start' gap={4}>
|
|
1308
|
+
<span className='sb-annotation'>md</span>
|
|
1309
|
+
<div className='text-sm text-text-primary'>
|
|
1310
|
+
To start creating an interface, run{' '}
|
|
1311
|
+
<InlineCodeSnippet code='npm install @wads/ui' size='md' /> and then apply the following...
|
|
1312
|
+
</div>
|
|
1313
|
+
</VStack>
|
|
1314
|
+
<VStack align='start' gap={4}>
|
|
1315
|
+
<span className='sb-annotation'>lg</span>
|
|
1316
|
+
<div className='text-base text-text-primary'>
|
|
1317
|
+
To start creating an interface, run{' '}
|
|
1318
|
+
<InlineCodeSnippet code='npm install @wads/ui' size='lg' /> and then apply the following...
|
|
1319
|
+
</div>
|
|
1320
|
+
</VStack>
|
|
1321
|
+
</VStack>
|
|
1322
|
+
);
|
|
1323
|
+
|
|
1324
|
+
/**
|
|
1325
|
+
* `copyable={false}` takes the tooltip and the pointer cursor away with the copy, for a
|
|
1326
|
+
* snippet that is only being named rather than reused.
|
|
1327
|
+
*/
|
|
1328
|
+
export const NonCopyable: StoryFn<typeof meta> = () => (
|
|
1329
|
+
<p className='text-sm text-text-primary'>
|
|
1330
|
+
This code is not copyable:{' '}
|
|
1331
|
+
<InlineCodeSnippet
|
|
1332
|
+
code='npm install @wads/ui'
|
|
1333
|
+
copyable={false}
|
|
1334
|
+
data-testid='inline-code-non-copyable'
|
|
1335
|
+
/>
|
|
1336
|
+
</p>
|
|
1337
|
+
);
|
|
1338
|
+
|
|
1339
|
+
/**
|
|
1340
|
+
* Commands, JSON, SQL and a quoted message all render in one colour — inline code gets
|
|
1341
|
+
* the mono treatment and nothing else.
|
|
1342
|
+
*/
|
|
1343
|
+
export const VariousContent: StoryFn<typeof meta> = () => (
|
|
1344
|
+
<VStack align='start'>
|
|
1345
|
+
<InlineCodeSnippet code='npm install' />
|
|
1346
|
+
<InlineCodeSnippet code='curl -X POST https://api.wallarm.com' />
|
|
1347
|
+
<InlineCodeSnippet code='{"status": "ok"}' />
|
|
1348
|
+
<InlineCodeSnippet code='SELECT * FROM users WHERE id = 1' />
|
|
1349
|
+
<InlineCodeSnippet code="git commit -m 'feat: add feature'" />
|
|
1350
|
+
</VStack>
|
|
1351
|
+
);
|
|
1352
|
+
```
|