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