@wallarm-org/claude-design 0.0.0-stage → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,1174 @@
1
+ Pairs one field's label with its value on a detail page — reach for `Table` when the same fields repeat across many objects, and `Field` when the value is being collected rather than read. The value slot takes whichever display component fits the data and hosts `InlineEdit` when the field is editable in place, while `AttributeActions` hangs a per-value menu off it.
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
+ | `loading` | `boolean \| undefined` | no | `false` | Show skeleton placeholders instead of children |
10
+ | `is-empty` | `boolean \| undefined` | no | `false` | When true, `AttributeValue` renders the em-dash placeholder instead of its children, and any `AttributeEmptyDescription` inside the tree renders (it returns `null` otherwise). Ignored while `loading` is true (skeleton wins). |
11
+ | `orientation` | `"vertical" \| "horizontal"` | no | `vertical` | Layout direction of the label and value. - `vertical` (default): label above value - `horizontal`: label on the left, value on the right |
12
+ | `default-checked` | `boolean \| undefined` | no | — | |
13
+ | `default-value` | `string \| number \| readonly string[] \| undefined` | no | — | |
14
+ | `auto-focus` | `boolean \| undefined` | no | — | |
15
+ | `id` | `string \| undefined` | no | — | |
16
+ | `tab-index` | `number \| undefined` | no | — | |
17
+ | `title` | `string \| undefined` | no | — | |
18
+ | `rel` | `string \| undefined` | no | — | |
19
+ | `on-change` | `ChangeEventHandler<T, Element> \| undefined` | no | — | |
20
+ | `data-testid` | `string \| undefined` | no | — | |
21
+
22
+ ## Sub-components
23
+
24
+ - `WallarmDS.AttributeActions` — `AttributeActionsProps` in the declaration bundle.
25
+ - `WallarmDS.AttributeActionsContent` — `AttributeActionsContentProps` in the declaration bundle.
26
+ - `WallarmDS.AttributeActionsItem` — `AttributeActionsItemProps` in the declaration bundle.
27
+ - `WallarmDS.AttributeActionsTarget` — `AttributeActionsTargetProps` in the declaration bundle.
28
+ - `WallarmDS.AttributeEmptyDescription` — `AttributeEmptyDescriptionProps` in the declaration bundle.
29
+ - `WallarmDS.AttributeLabel` — `AttributeLabelProps` in the declaration bundle.
30
+ - `WallarmDS.AttributeLabelDescription` — `AttributeLabelDescriptionProps` in the declaration bundle.
31
+ - `WallarmDS.AttributeLabelInfo` — `AttributeLabelInfoProps` in the declaration bundle.
32
+ - `WallarmDS.AttributeValue` — `AttributeValueProps` in the declaration bundle.
33
+
34
+ ## Stories
35
+
36
+ ### Default
37
+
38
+ The smallest pair — `AttributeLabel` over `AttributeValue` — with the label in
39
+ sentence case and the value left to whichever component formats that data.
40
+
41
+ Source: Attribute/Attribute.stories.tsx#Default
42
+
43
+ ### WithDescription
44
+
45
+ `AttributeLabelDescription` adds a line that stays under the label, for a field
46
+ whose name does not explain itself.
47
+
48
+ Source: Attribute/Attribute.stories.tsx#WithDescription
49
+
50
+ ### WithInfo
51
+
52
+ `AttributeLabelInfo` puts the same explanation behind a hover tooltip instead,
53
+ and reads correctly on either side of the label text.
54
+
55
+ Source: Attribute/Attribute.stories.tsx#WithInfo
56
+
57
+ ### WithLink
58
+
59
+ The label row takes inline content of its own, here a `Link` out to whatever
60
+ explains the field — the value slot stays reserved for the data.
61
+
62
+ Source: Attribute/Attribute.stories.tsx#WithLink
63
+
64
+ ### Empty
65
+
66
+ Four ways a missing value can read: composed by hand, `isEmpty` on its own —
67
+ which swaps the value for an em dash and ignores whatever children it had — and
68
+ `isEmpty` alongside an `AttributeEmptyDescription`, which appears only in that
69
+ state and can carry the link out to the fix.
70
+
71
+ Source: Attribute/Attribute.stories.tsx#Empty
72
+
73
+ ### Loading
74
+
75
+ `loading` skeletons both slots and ignores the children, so a panel can be laid
76
+ out before its data lands; it wins over `isEmpty`.
77
+
78
+ Source: Attribute/Attribute.stories.tsx#Loading
79
+
80
+ ### Composition
81
+
82
+ The display components sanctioned inside a value — `Badge`, `FormatDateTime`,
83
+ `OverflowList` of `Tag`s, `Ip` and `IpList`, `Link`, `InlineCodeSnippet`, `Code` —
84
+ each formatting the data itself rather than receiving a pre-built string.
85
+
86
+ Source: Attribute/Attribute.stories.tsx#Composition
87
+
88
+ ### WithActions
89
+
90
+ `AttributeActions` turns the value into a `DropdownMenu` trigger: the row picks up
91
+ a hover surface and the menu carries the actions that belong to that one value.
92
+
93
+ Source: Attribute/Attribute.stories.tsx#WithActions
94
+
95
+ ### Horizontal
96
+
97
+ `orientation='horizontal'` sets the label beside the value in a cell clamped
98
+ between 100 and 256px, so values line up down a panel.
99
+
100
+ Source: Attribute/Attribute.stories.tsx#Horizontal
101
+
102
+ ### HorizontalTruncation
103
+
104
+ Horizontal cells clip with an ellipsis rather than wrapping — the label at its set
105
+ width, 100px unless you widen it, and the value once its own content overruns.
106
+
107
+ Source: Attribute/Attribute.stories.tsx#HorizontalTruncation
108
+
109
+ ### HorizontalComposition
110
+
111
+ The same value components in the horizontal layout, where a wide one such as
112
+ `IpList type='horizontal'` needs its row to span both columns.
113
+
114
+ Source: Attribute/Attribute.stories.tsx#HorizontalComposition
115
+
116
+ ### HorizontalLoading
117
+
118
+ The horizontal skeleton is a 16px line against the vertical 24px, matching the
119
+ single-line row it stands in for.
120
+
121
+ Source: Attribute/Attribute.stories.tsx#HorizontalLoading
122
+
123
+ ### HorizontalEmpty
124
+
125
+ The same four cases side by side, with `width={160}` on the label so the
126
+ descriptions have somewhere to sit.
127
+
128
+ Source: Attribute/Attribute.stories.tsx#HorizontalEmpty
129
+
130
+ ### HorizontalWithActions
131
+
132
+ By default the value keeps its own interactivity: a link, or a snippet's copy
133
+ button, still does its own job, and the menu opens from the space around it.
134
+
135
+ Source: Attribute/Attribute.stories.tsx#HorizontalWithActions
136
+
137
+ ### HorizontalWithActionsMenuOnly
138
+
139
+ `disableNestedInteractive` renders the value inert, so a click anywhere on the row
140
+ opens the menu — for values with nothing worth clicking of their own.
141
+
142
+ Source: Attribute/Attribute.stories.tsx#HorizontalWithActionsMenuOnly
143
+
144
+ ### WithInlineEdit
145
+
146
+ `Attribute` > `AttributeValue` > `InlineEdit` is the sanctioned nesting for an
147
+ editable field — the value slot supplies the overflow room the editor needs, so
148
+ never add your own.
149
+
150
+ Source: Attribute/Attribute.stories.tsx#WithInlineEdit
151
+
152
+ ### HorizontalWithInlineEdit
153
+
154
+ The same editor in a horizontal row, where it takes the width of the value cell
155
+ rather than the panel.
156
+
157
+ Source: Attribute/Attribute.stories.tsx#HorizontalWithInlineEdit
158
+
159
+ ### Mixed
160
+
161
+ A plain value, an actions target and an inline editor stacked in one column: the
162
+ text has to start at the same place in all three, which is what the value slot's
163
+ 7px pull is for — it moves the hover box left, not the text.
164
+
165
+ Source: Attribute/Attribute.stories.tsx#Mixed
166
+
167
+ ### HorizontalMixed
168
+
169
+ The same three hosts horizontally, where the label cell fixes the start of every
170
+ value and the pull has to fit inside the 12px gap between the two cells.
171
+
172
+ Source: Attribute/Attribute.stories.tsx#HorizontalMixed
173
+
174
+ ## Story sources
175
+
176
+ ### Attribute/Attribute.stories.tsx
177
+
178
+ ```tsx
179
+ import { useState } from 'react';
180
+ import type { Meta, StoryFn } from 'storybook-react-rsbuild';
181
+ import { Copy, Filter } from '../../icons';
182
+ import { Badge } from '../Badge';
183
+ import { Code } from '../Code';
184
+ import { InlineCodeSnippet } from '../CodeSnippet';
185
+ import { FormatDateTime } from '../FormatDateTime';
186
+ import {
187
+ InlineEditControl,
188
+ InlineEditError,
189
+ InlineEditInput,
190
+ InlineEditPreview,
191
+ InlineEdit as InlineEditRoot,
192
+ } from '../InlineEdit';
193
+ import { Ip, IpAddress, IpCountry, IpList, IpProvider } from '../Ip';
194
+ import { Link } from '../Link';
195
+ import { OverflowList } from '../OverflowList';
196
+ import { Tag } from '../Tag';
197
+ import { Text } from '../Text';
198
+ import { Attribute, type AttributeProps } from './Attribute';
199
+ import { AttributeActions } from './AttributeActions';
200
+ import { AttributeActionsContent } from './AttributeActionsContent';
201
+ import { AttributeActionsItem } from './AttributeActionsItem';
202
+ import { AttributeActionsTarget } from './AttributeActionsTarget';
203
+ import { AttributeEmptyDescription } from './AttributeEmptyDescription';
204
+ import { AttributeLabel } from './AttributeLabel';
205
+ import { AttributeLabelDescription } from './AttributeLabelDescription';
206
+ import { AttributeLabelInfo } from './AttributeLabelInfo';
207
+ import { AttributeValue } from './AttributeValue';
208
+
209
+ const DESCRIPTION = [
210
+ "Pairs one field's label with its value on a detail page — reach for `Table` when the same fields repeat across many objects, and `Field` when the value is being collected rather than read.",
211
+ 'The value slot takes whichever display component fits the data and hosts `InlineEdit` when the field is editable in place, while `AttributeActions` hangs a per-value menu off it.',
212
+ ].join(' ');
213
+
214
+ const meta = {
215
+ title: 'Data Display/Attribute',
216
+ component: Attribute,
217
+ subcomponents: {
218
+ AttributeLabel,
219
+ AttributeLabelDescription,
220
+ AttributeLabelInfo,
221
+ AttributeValue,
222
+ AttributeEmptyDescription,
223
+ AttributeActions,
224
+ AttributeActionsTarget,
225
+ AttributeActionsContent,
226
+ AttributeActionsItem,
227
+ InlineEditPreview,
228
+ InlineEditControl,
229
+ InlineEditInput,
230
+ InlineEditError,
231
+ },
232
+ parameters: {
233
+ layout: 'centered',
234
+ docs: { description: { component: DESCRIPTION } },
235
+ },
236
+ } satisfies Meta<typeof Attribute>;
237
+
238
+ export default meta;
239
+
240
+ const renderActionsItems = () => (
241
+ <AttributeActionsContent>
242
+ <AttributeActionsItem
243
+ onSelect={() => {
244
+ /* story mock */
245
+ }}
246
+ >
247
+ <Filter />
248
+ Investigate by this value
249
+ </AttributeActionsItem>
250
+ <AttributeActionsItem
251
+ onSelect={() => {
252
+ /* story mock */
253
+ }}
254
+ >
255
+ <Copy />
256
+ Copy value
257
+ </AttributeActionsItem>
258
+ </AttributeActionsContent>
259
+ );
260
+
261
+ /**
262
+ * The smallest pair — `AttributeLabel` over `AttributeValue` — with the label in
263
+ * sentence case and the value left to whichever component formats that data.
264
+ */
265
+ export const Default: StoryFn<AttributeProps> = () => (
266
+ <div className='w-[400px]'>
267
+ <Attribute>
268
+ <AttributeLabel>Request ID</AttributeLabel>
269
+ <AttributeValue>
270
+ <Text size='sm'>abc-123-def-456</Text>
271
+ </AttributeValue>
272
+ </Attribute>
273
+ </div>
274
+ );
275
+
276
+ /**
277
+ * `AttributeLabelDescription` adds a line that stays under the label, for a field
278
+ * whose name does not explain itself.
279
+ */
280
+ export const WithDescription: StoryFn<AttributeProps> = () => (
281
+ <div className='w-[400px]'>
282
+ <Attribute>
283
+ <AttributeLabel>
284
+ Created at
285
+ <AttributeLabelDescription>
286
+ The time when the request was first received
287
+ </AttributeLabelDescription>
288
+ </AttributeLabel>
289
+ <AttributeValue>
290
+ <Text size='sm'>April 9, 2026, 14:32</Text>
291
+ </AttributeValue>
292
+ </Attribute>
293
+ </div>
294
+ );
295
+
296
+ /**
297
+ * `AttributeLabelInfo` puts the same explanation behind a hover tooltip instead,
298
+ * and reads correctly on either side of the label text.
299
+ */
300
+ export const WithInfo: StoryFn<AttributeProps> = () => (
301
+ <div className='w-[400px] flex flex-col gap-16'>
302
+ <Attribute>
303
+ <AttributeLabel>
304
+ Request ID
305
+ <AttributeLabelInfo>Unique identifier assigned to each incoming request</AttributeLabelInfo>
306
+ </AttributeLabel>
307
+ <AttributeValue>
308
+ <Text size='sm'>abc-123-def-456</Text>
309
+ </AttributeValue>
310
+ </Attribute>
311
+
312
+ <Attribute>
313
+ <AttributeLabel>
314
+ <AttributeLabelInfo>Unique identifier assigned to each incoming request</AttributeLabelInfo>
315
+ Request ID
316
+ </AttributeLabel>
317
+ <AttributeValue>
318
+ <Text size='sm'>abc-123-def-456</Text>
319
+ </AttributeValue>
320
+ </Attribute>
321
+ </div>
322
+ );
323
+
324
+ /**
325
+ * The label row takes inline content of its own, here a `Link` out to whatever
326
+ * explains the field — the value slot stays reserved for the data.
327
+ */
328
+ export const WithLink: StoryFn<AttributeProps> = () => (
329
+ <div className='w-[400px]'>
330
+ <Attribute>
331
+ <AttributeLabel>
332
+ Source
333
+ <Link href='#' size='md'>
334
+ View docs
335
+ </Link>
336
+ </AttributeLabel>
337
+ <AttributeValue>
338
+ <Text size='sm'>API Gateway</Text>
339
+ </AttributeValue>
340
+ </Attribute>
341
+ </div>
342
+ );
343
+
344
+ /**
345
+ * Four ways a missing value can read: composed by hand, `isEmpty` on its own —
346
+ * which swaps the value for an em dash and ignores whatever children it had — and
347
+ * `isEmpty` alongside an `AttributeEmptyDescription`, which appears only in that
348
+ * state and can carry the link out to the fix.
349
+ */
350
+ export const Empty: StoryFn<AttributeProps> = () => (
351
+ <div className='w-[400px] flex flex-col gap-16'>
352
+ <Attribute>
353
+ <AttributeLabel>
354
+ Region
355
+ <AttributeLabelDescription>Manual composition</AttributeLabelDescription>
356
+ </AttributeLabel>
357
+ <AttributeValue />
358
+ </Attribute>
359
+
360
+ <Attribute isEmpty>
361
+ <AttributeLabel>Region</AttributeLabel>
362
+ <AttributeValue>
363
+ <Text size='sm'>This text is replaced by the em-dash placeholder</Text>
364
+ </AttributeValue>
365
+ </Attribute>
366
+
367
+ <Attribute isEmpty>
368
+ <AttributeLabel>
369
+ Owner
370
+ <AttributeEmptyDescription>Not yet assigned</AttributeEmptyDescription>
371
+ </AttributeLabel>
372
+ <AttributeValue />
373
+ </Attribute>
374
+
375
+ <Attribute isEmpty>
376
+ <AttributeLabel>
377
+ SSO provider
378
+ <AttributeEmptyDescription>
379
+ Not connected —{' '}
380
+ <Link href='#' size='md'>
381
+ set up integration
382
+ </Link>
383
+ </AttributeEmptyDescription>
384
+ </AttributeLabel>
385
+ <AttributeValue />
386
+ </Attribute>
387
+ </div>
388
+ );
389
+
390
+ /**
391
+ * `loading` skeletons both slots and ignores the children, so a panel can be laid
392
+ * out before its data lands; it wins over `isEmpty`.
393
+ */
394
+ export const Loading: StoryFn<AttributeProps> = () => (
395
+ <div className='w-[400px] flex flex-col gap-16'>
396
+ <Attribute loading>
397
+ <AttributeLabel>Created at</AttributeLabel>
398
+ <AttributeValue />
399
+ </Attribute>
400
+ <Attribute loading>
401
+ <AttributeLabel>Status</AttributeLabel>
402
+ <AttributeValue />
403
+ </Attribute>
404
+ </div>
405
+ );
406
+
407
+ /**
408
+ * The display components sanctioned inside a value — `Badge`, `FormatDateTime`,
409
+ * `OverflowList` of `Tag`s, `Ip` and `IpList`, `Link`, `InlineCodeSnippet`, `Code` —
410
+ * each formatting the data itself rather than receiving a pre-built string.
411
+ */
412
+ export const Composition: StoryFn<AttributeProps> = () => (
413
+ <div className='grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]'>
414
+ <Attribute>
415
+ <AttributeLabel>Status</AttributeLabel>
416
+ <AttributeValue>
417
+ <Badge color='red' variant='dotted'>
418
+ Blocked
419
+ </Badge>
420
+ </AttributeValue>
421
+ </Attribute>
422
+
423
+ <Attribute>
424
+ <AttributeLabel>First seen</AttributeLabel>
425
+ <AttributeValue>
426
+ <FormatDateTime value='2026-04-03T10:15:00Z' format='relative' />
427
+ </AttributeValue>
428
+ </Attribute>
429
+
430
+ <Attribute>
431
+ <AttributeLabel>Attack type</AttributeLabel>
432
+ <AttributeValue>
433
+ <OverflowList
434
+ className='gap-4'
435
+ items={['XSS', 'BOLA', 'SQL Injection', 'Scanner', 'CSRF', 'XXE', 'RCE', 'LFI', 'IDOR']}
436
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
437
+ />
438
+ </AttributeValue>
439
+ </Attribute>
440
+
441
+ <Attribute>
442
+ <AttributeLabel>Sessions</AttributeLabel>
443
+ <AttributeValue>
444
+ <Text size='sm'>3 sessions</Text>
445
+ </AttributeValue>
446
+ </Attribute>
447
+
448
+ <Attribute>
449
+ <AttributeLabel>Users</AttributeLabel>
450
+ <AttributeValue>
451
+ <OverflowList
452
+ className='gap-4'
453
+ items={[
454
+ 'artem@acme.com',
455
+ 'uxd@acme.com',
456
+ 'ops@acme.com',
457
+ 'security@acme.com',
458
+ 'admin@acme.com',
459
+ ]}
460
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
461
+ />
462
+ </AttributeValue>
463
+ </Attribute>
464
+
465
+ <Attribute>
466
+ <AttributeLabel>IPs</AttributeLabel>
467
+ <AttributeValue>
468
+ <IpList>
469
+ <Ip>
470
+ <IpCountry code='US' />
471
+ <IpAddress>142.198.167.52</IpAddress>
472
+ <IpProvider>Azure</IpProvider>
473
+ </Ip>
474
+ <Ip>
475
+ <IpCountry code='US' />
476
+ <IpAddress>34.74.73.20</IpAddress>
477
+ <IpProvider>AWS</IpProvider>
478
+ </Ip>
479
+ <Ip>
480
+ <IpCountry code='DE' />
481
+ <IpAddress>34.74.73.20</IpAddress>
482
+ <IpProvider>GCP</IpProvider>
483
+ </Ip>
484
+ <Ip>
485
+ <IpCountry code='NL' />
486
+ <IpAddress>10.0.0.1</IpAddress>
487
+ </Ip>
488
+ <Ip>
489
+ <IpCountry code='JP' />
490
+ <IpAddress>192.168.1.1</IpAddress>
491
+ </Ip>
492
+ </IpList>
493
+ </AttributeValue>
494
+ </Attribute>
495
+
496
+ <Attribute>
497
+ <AttributeLabel>Source IP</AttributeLabel>
498
+ <AttributeValue>
499
+ <Ip>
500
+ <IpCountry code='US' />
501
+ <IpAddress>142.198.167.52</IpAddress>
502
+ <IpProvider>Azure</IpProvider>
503
+ </Ip>
504
+ </AttributeValue>
505
+ </Attribute>
506
+
507
+ <Attribute>
508
+ <AttributeLabel>Created at</AttributeLabel>
509
+ <AttributeValue>
510
+ <FormatDateTime value='2026-04-02T14:03:00Z' format='datetime' />
511
+ </AttributeValue>
512
+ </Attribute>
513
+
514
+ <Attribute>
515
+ <AttributeLabel>Documentation</AttributeLabel>
516
+ <AttributeValue>
517
+ <Link href='#' size='md'>
518
+ View full report
519
+ </Link>
520
+ </AttributeValue>
521
+ </Attribute>
522
+
523
+ <Attribute>
524
+ <AttributeLabel>Payload (inline)</AttributeLabel>
525
+ <AttributeValue>
526
+ <InlineCodeSnippet code='{ "action": "login", "user_id": 42 }' size='sm' />
527
+ </AttributeValue>
528
+ </Attribute>
529
+
530
+ <Attribute>
531
+ <AttributeLabel>Payload (code)</AttributeLabel>
532
+ <AttributeValue>
533
+ <Code size='s'>{'{ "action": "login", "user_id": 42 }'}</Code>
534
+ </AttributeValue>
535
+ </Attribute>
536
+ </div>
537
+ );
538
+
539
+ /**
540
+ * `AttributeActions` turns the value into a `DropdownMenu` trigger: the row picks up
541
+ * a hover surface and the menu carries the actions that belong to that one value.
542
+ */
543
+ export const WithActions: StoryFn<AttributeProps> = () => (
544
+ <div className='grid grid-cols-2 gap-x-8 gap-y-16 w-[874px]'>
545
+ <Attribute>
546
+ <AttributeLabel>Status</AttributeLabel>
547
+ <AttributeValue>
548
+ <AttributeActions data-testid='attribute-with-actions'>
549
+ <AttributeActionsTarget>
550
+ <Badge color='red' variant='dotted'>
551
+ Blocked
552
+ </Badge>
553
+ </AttributeActionsTarget>
554
+ {renderActionsItems()}
555
+ </AttributeActions>
556
+ </AttributeValue>
557
+ </Attribute>
558
+
559
+ <Attribute>
560
+ <AttributeLabel>First seen</AttributeLabel>
561
+ <AttributeValue>
562
+ <AttributeActions>
563
+ <AttributeActionsTarget>
564
+ <FormatDateTime value='2026-04-03T10:15:00Z' format='relative' />
565
+ </AttributeActionsTarget>
566
+ {renderActionsItems()}
567
+ </AttributeActions>
568
+ </AttributeValue>
569
+ </Attribute>
570
+
571
+ <Attribute>
572
+ <AttributeLabel>Attack type</AttributeLabel>
573
+ <AttributeValue>
574
+ <AttributeActions>
575
+ <AttributeActionsTarget>
576
+ <OverflowList
577
+ className='gap-4'
578
+ items={[
579
+ 'XSS',
580
+ 'BOLA',
581
+ 'SQL Injection',
582
+ 'Scanner',
583
+ 'CSRF',
584
+ 'XXE',
585
+ 'RCE',
586
+ 'LFI',
587
+ 'IDOR',
588
+ ]}
589
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
590
+ />
591
+ </AttributeActionsTarget>
592
+ {renderActionsItems()}
593
+ </AttributeActions>
594
+ </AttributeValue>
595
+ </Attribute>
596
+
597
+ <Attribute>
598
+ <AttributeLabel>Sessions</AttributeLabel>
599
+ <AttributeValue>
600
+ <AttributeActions>
601
+ <AttributeActionsTarget>
602
+ <Text size='sm'>3 sessions</Text>
603
+ </AttributeActionsTarget>
604
+ {renderActionsItems()}
605
+ </AttributeActions>
606
+ </AttributeValue>
607
+ </Attribute>
608
+
609
+ <Attribute>
610
+ <AttributeLabel>Users</AttributeLabel>
611
+ <AttributeValue>
612
+ <AttributeActions>
613
+ <AttributeActionsTarget>
614
+ <OverflowList
615
+ className='gap-4'
616
+ items={[
617
+ 'artem@acme.com',
618
+ 'uxd@acme.com',
619
+ 'ops@acme.com',
620
+ 'security@acme.com',
621
+ 'admin@acme.com',
622
+ ]}
623
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
624
+ />
625
+ </AttributeActionsTarget>
626
+ {renderActionsItems()}
627
+ </AttributeActions>
628
+ </AttributeValue>
629
+ </Attribute>
630
+
631
+ <Attribute>
632
+ <AttributeLabel>IPs</AttributeLabel>
633
+ <AttributeValue>
634
+ <AttributeActions>
635
+ <AttributeActionsTarget>
636
+ <IpList>
637
+ <Ip>
638
+ <IpCountry code='US' />
639
+ <IpAddress>142.198.167.52</IpAddress>
640
+ <IpProvider>Azure</IpProvider>
641
+ </Ip>
642
+ <Ip>
643
+ <IpCountry code='US' />
644
+ <IpAddress>34.74.73.20</IpAddress>
645
+ <IpProvider>AWS</IpProvider>
646
+ </Ip>
647
+ <Ip>
648
+ <IpCountry code='DE' />
649
+ <IpAddress>34.74.73.20</IpAddress>
650
+ <IpProvider>GCP</IpProvider>
651
+ </Ip>
652
+ <Ip>
653
+ <IpCountry code='NL' />
654
+ <IpAddress>10.0.0.1</IpAddress>
655
+ </Ip>
656
+ <Ip>
657
+ <IpCountry code='JP' />
658
+ <IpAddress>192.168.1.1</IpAddress>
659
+ </Ip>
660
+ </IpList>
661
+ </AttributeActionsTarget>
662
+ {renderActionsItems()}
663
+ </AttributeActions>
664
+ </AttributeValue>
665
+ </Attribute>
666
+
667
+ <Attribute>
668
+ <AttributeLabel>Source IP</AttributeLabel>
669
+ <AttributeValue>
670
+ <AttributeActions>
671
+ <AttributeActionsTarget>
672
+ <Ip>
673
+ <IpCountry code='US' />
674
+ <IpAddress>142.198.167.52</IpAddress>
675
+ <IpProvider>Azure</IpProvider>
676
+ </Ip>
677
+ </AttributeActionsTarget>
678
+ {renderActionsItems()}
679
+ </AttributeActions>
680
+ </AttributeValue>
681
+ </Attribute>
682
+
683
+ <Attribute>
684
+ <AttributeLabel>Created at</AttributeLabel>
685
+ <AttributeValue>
686
+ <AttributeActions>
687
+ <AttributeActionsTarget>
688
+ <FormatDateTime value='2026-04-02T14:03:00Z' format='datetime' />
689
+ </AttributeActionsTarget>
690
+ {renderActionsItems()}
691
+ </AttributeActions>
692
+ </AttributeValue>
693
+ </Attribute>
694
+
695
+ <Attribute>
696
+ <AttributeLabel>Documentation</AttributeLabel>
697
+ <AttributeValue>
698
+ <AttributeActions>
699
+ <AttributeActionsTarget>
700
+ <Link href='#' size='md'>
701
+ View full report
702
+ </Link>
703
+ </AttributeActionsTarget>
704
+ {renderActionsItems()}
705
+ </AttributeActions>
706
+ </AttributeValue>
707
+ </Attribute>
708
+
709
+ <Attribute>
710
+ <AttributeLabel>Payload (inline)</AttributeLabel>
711
+ <AttributeValue>
712
+ <AttributeActions>
713
+ <AttributeActionsTarget>
714
+ <InlineCodeSnippet code='{ "action": "login", "user_id": 42 }' size='sm' />
715
+ </AttributeActionsTarget>
716
+ {renderActionsItems()}
717
+ </AttributeActions>
718
+ </AttributeValue>
719
+ </Attribute>
720
+
721
+ <Attribute>
722
+ <AttributeLabel>Payload (code)</AttributeLabel>
723
+ <AttributeValue>
724
+ <AttributeActions>
725
+ <AttributeActionsTarget>
726
+ <Code size='s'>{'{ "action": "login", "user_id": 42 }'}</Code>
727
+ </AttributeActionsTarget>
728
+ {renderActionsItems()}
729
+ </AttributeActions>
730
+ </AttributeValue>
731
+ </Attribute>
732
+ </div>
733
+ );
734
+
735
+ /**
736
+ * `orientation='horizontal'` sets the label beside the value in a cell clamped
737
+ * between 100 and 256px, so values line up down a panel.
738
+ */
739
+ export const Horizontal: StoryFn<AttributeProps> = () => (
740
+ <div className='w-[400px]'>
741
+ <Attribute orientation='horizontal'>
742
+ <AttributeLabel>Status</AttributeLabel>
743
+ <AttributeValue>
744
+ <Badge color='red' variant='dotted'>
745
+ Blocked
746
+ </Badge>
747
+ </AttributeValue>
748
+ </Attribute>
749
+ </div>
750
+ );
751
+
752
+ /**
753
+ * Horizontal cells clip with an ellipsis rather than wrapping — the label at its set
754
+ * width, 100px unless you widen it, and the value once its own content overruns.
755
+ */
756
+ export const HorizontalTruncation: StoryFn<AttributeProps> = () => (
757
+ <div className='w-[500px] flex flex-col gap-8'>
758
+ <Attribute orientation='horizontal'>
759
+ <AttributeLabel width={256}>Short</AttributeLabel>
760
+ <AttributeValue>
761
+ <Text size='sm'>Fits in 256px label cell</Text>
762
+ </AttributeValue>
763
+ </Attribute>
764
+ <Attribute orientation='horizontal'>
765
+ <AttributeLabel width={256}>
766
+ This label text is much longer than 256 pixels and must be truncated
767
+ </AttributeLabel>
768
+ <AttributeValue>
769
+ <Text size='sm'>Value</Text>
770
+ </AttributeValue>
771
+ </Attribute>
772
+ <Attribute orientation='horizontal'>
773
+ <AttributeLabel>Users</AttributeLabel>
774
+ <AttributeValue>
775
+ <Text size='sm' truncate>
776
+ artem@acme.com, uxd@acme.com, ops@acme.com, security@acme.com, admin@acme.com
777
+ </Text>
778
+ </AttributeValue>
779
+ </Attribute>
780
+ </div>
781
+ );
782
+
783
+ /**
784
+ * The same value components in the horizontal layout, where a wide one such as
785
+ * `IpList type='horizontal'` needs its row to span both columns.
786
+ */
787
+ export const HorizontalComposition: StoryFn<AttributeProps> = () => (
788
+ <div className='grid grid-cols-2 gap-x-8 gap-y-6 w-[874px]'>
789
+ <Attribute orientation='horizontal'>
790
+ <AttributeLabel>Status</AttributeLabel>
791
+ <AttributeValue>
792
+ <Badge color='red' variant='dotted'>
793
+ Blocked
794
+ </Badge>
795
+ </AttributeValue>
796
+ </Attribute>
797
+
798
+ <Attribute orientation='horizontal'>
799
+ <AttributeLabel>First seen</AttributeLabel>
800
+ <AttributeValue>
801
+ <FormatDateTime value='2026-04-03T10:15:00Z' format='relative' />
802
+ </AttributeValue>
803
+ </Attribute>
804
+
805
+ <Attribute orientation='horizontal'>
806
+ <AttributeLabel>Attack type</AttributeLabel>
807
+ <AttributeValue>
808
+ <OverflowList
809
+ className='gap-4'
810
+ items={['XSS', 'BOLA', 'SQL Injection', 'Scanner', 'CSRF', 'XXE', 'RCE', 'LFI', 'IDOR']}
811
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
812
+ />
813
+ </AttributeValue>
814
+ </Attribute>
815
+
816
+ <Attribute orientation='horizontal'>
817
+ <AttributeLabel>Last seen</AttributeLabel>
818
+ <AttributeValue>
819
+ <FormatDateTime value='2025-04-02T14:03:00Z' format='date' />
820
+ </AttributeValue>
821
+ </Attribute>
822
+
823
+ <Attribute orientation='horizontal'>
824
+ <AttributeLabel>Sessions</AttributeLabel>
825
+ <AttributeValue>
826
+ <Text size='sm'>3 sessions</Text>
827
+ </AttributeValue>
828
+ </Attribute>
829
+
830
+ <Attribute orientation='horizontal'>
831
+ <AttributeLabel>Users</AttributeLabel>
832
+ <AttributeValue>
833
+ <OverflowList
834
+ className='gap-4'
835
+ items={[
836
+ 'artem@acme.com',
837
+ 'uxd@acme.com',
838
+ 'ops@acme.com',
839
+ 'security@acme.com',
840
+ 'admin@acme.com',
841
+ ]}
842
+ itemRenderer={item => <Tag key={item}>{item}</Tag>}
843
+ />
844
+ </AttributeValue>
845
+ </Attribute>
846
+
847
+ <div className='col-span-2'>
848
+ <Attribute orientation='horizontal'>
849
+ <AttributeLabel>IPs</AttributeLabel>
850
+ <AttributeValue>
851
+ <IpList type='horizontal'>
852
+ <Ip>
853
+ <IpCountry code='US' />
854
+ <IpAddress>142.198.167.52</IpAddress>
855
+ <IpProvider>Azure</IpProvider>
856
+ </Ip>
857
+ <Ip>
858
+ <IpCountry code='US' />
859
+ <IpAddress>34.74.73.20</IpAddress>
860
+ <IpProvider>AWS</IpProvider>
861
+ </Ip>
862
+ <Ip>
863
+ <IpCountry code='DE' />
864
+ <IpAddress>34.74.73.20</IpAddress>
865
+ <IpProvider>GCP</IpProvider>
866
+ </Ip>
867
+ </IpList>
868
+ </AttributeValue>
869
+ </Attribute>
870
+ </div>
871
+ </div>
872
+ );
873
+
874
+ /**
875
+ * The horizontal skeleton is a 16px line against the vertical 24px, matching the
876
+ * single-line row it stands in for.
877
+ */
878
+ export const HorizontalLoading: StoryFn<AttributeProps> = () => (
879
+ <div className='w-[400px] flex flex-col gap-8'>
880
+ <Attribute orientation='horizontal' loading>
881
+ <AttributeLabel>Created at</AttributeLabel>
882
+ <AttributeValue />
883
+ </Attribute>
884
+ <Attribute orientation='horizontal' loading>
885
+ <AttributeLabel>Status</AttributeLabel>
886
+ <AttributeValue />
887
+ </Attribute>
888
+ </div>
889
+ );
890
+
891
+ /**
892
+ * The same four cases side by side, with `width={160}` on the label so the
893
+ * descriptions have somewhere to sit.
894
+ */
895
+ export const HorizontalEmpty: StoryFn<AttributeProps> = () => (
896
+ <div className='w-[400px] flex flex-col gap-8'>
897
+ <Attribute orientation='horizontal'>
898
+ <AttributeLabel width={160}>
899
+ Region
900
+ <AttributeLabelDescription>Manual composition</AttributeLabelDescription>
901
+ </AttributeLabel>
902
+ <AttributeValue />
903
+ </Attribute>
904
+
905
+ <Attribute orientation='horizontal' isEmpty>
906
+ <AttributeLabel width={160}>Region</AttributeLabel>
907
+ <AttributeValue>
908
+ <Text size='sm'>This text is replaced by the em-dash placeholder</Text>
909
+ </AttributeValue>
910
+ </Attribute>
911
+
912
+ <Attribute orientation='horizontal' isEmpty>
913
+ <AttributeLabel width={160}>
914
+ Owner
915
+ <AttributeEmptyDescription>Not yet assigned</AttributeEmptyDescription>
916
+ </AttributeLabel>
917
+ <AttributeValue />
918
+ </Attribute>
919
+
920
+ <Attribute orientation='horizontal' isEmpty>
921
+ <AttributeLabel width={160}>
922
+ SSO provider
923
+ <AttributeEmptyDescription>
924
+ Not connected —{' '}
925
+ <Link href='#' size='md'>
926
+ set up integration
927
+ </Link>
928
+ </AttributeEmptyDescription>
929
+ </AttributeLabel>
930
+ <AttributeValue />
931
+ </Attribute>
932
+ </div>
933
+ );
934
+
935
+ const renderActionsAttributes = (disableNestedInteractive: boolean) => (
936
+ <>
937
+ <Attribute orientation='horizontal'>
938
+ <AttributeLabel>Source IP</AttributeLabel>
939
+ <AttributeValue>
940
+ <AttributeActions data-testid='attr-source-ip'>
941
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
942
+ <Text size='sm'>142.198.167.52</Text>
943
+ </AttributeActionsTarget>
944
+ {renderActionsItems()}
945
+ </AttributeActions>
946
+ </AttributeValue>
947
+ </Attribute>
948
+
949
+ <Attribute orientation='horizontal'>
950
+ <AttributeLabel>Status</AttributeLabel>
951
+ <AttributeValue>
952
+ <AttributeActions data-testid='attr-badge'>
953
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
954
+ <Badge data-testid='attr-badge-value' color='red' variant='dotted'>
955
+ Blocked
956
+ </Badge>
957
+ </AttributeActionsTarget>
958
+ {renderActionsItems()}
959
+ </AttributeActions>
960
+ </AttributeValue>
961
+ </Attribute>
962
+
963
+ <Attribute orientation='horizontal'>
964
+ <AttributeLabel>IPs</AttributeLabel>
965
+ <AttributeValue>
966
+ <AttributeActions data-testid='attr-ip-overflow'>
967
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
968
+ <IpList type='horizontal'>
969
+ <Ip>
970
+ <IpCountry code='US' />
971
+ <IpAddress>142.198.167.52</IpAddress>
972
+ <IpProvider>Azure</IpProvider>
973
+ </Ip>
974
+ <Ip>
975
+ <IpCountry code='US' />
976
+ <IpAddress>34.74.73.20</IpAddress>
977
+ <IpProvider>AWS</IpProvider>
978
+ </Ip>
979
+ <Ip>
980
+ <IpCountry code='DE' />
981
+ <IpAddress>34.74.73.20</IpAddress>
982
+ <IpProvider>GCP</IpProvider>
983
+ </Ip>
984
+ <Ip>
985
+ <IpCountry code='NL' />
986
+ <IpAddress>10.0.0.1</IpAddress>
987
+ </Ip>
988
+ <Ip>
989
+ <IpCountry code='JP' />
990
+ <IpAddress>192.168.1.1</IpAddress>
991
+ </Ip>
992
+ </IpList>
993
+ </AttributeActionsTarget>
994
+ {renderActionsItems()}
995
+ </AttributeActions>
996
+ </AttributeValue>
997
+ </Attribute>
998
+
999
+ <Attribute orientation='horizontal'>
1000
+ <AttributeLabel>Payload</AttributeLabel>
1001
+ <AttributeValue>
1002
+ <AttributeActions data-testid='attr-code-snippet'>
1003
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
1004
+ <InlineCodeSnippet code='{ "action": "login", "user_id": 42 }' size='sm' />
1005
+ </AttributeActionsTarget>
1006
+ {renderActionsItems()}
1007
+ </AttributeActions>
1008
+ </AttributeValue>
1009
+ </Attribute>
1010
+
1011
+ <Attribute orientation='horizontal'>
1012
+ <AttributeLabel>Documentation</AttributeLabel>
1013
+ <AttributeValue>
1014
+ <AttributeActions data-testid='attr-link'>
1015
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
1016
+ <Link href='#' size='md'>
1017
+ View full report
1018
+ </Link>
1019
+ </AttributeActionsTarget>
1020
+ {renderActionsItems()}
1021
+ </AttributeActions>
1022
+ </AttributeValue>
1023
+ </Attribute>
1024
+
1025
+ <Attribute orientation='horizontal'>
1026
+ <AttributeLabel>Tags</AttributeLabel>
1027
+ <AttributeValue>
1028
+ <AttributeActions data-testid='attr-tags'>
1029
+ <AttributeActionsTarget disableNestedInteractive={disableNestedInteractive}>
1030
+ <OverflowList
1031
+ className='gap-4'
1032
+ items={['production', 'us-east-1', 'critical', 'tier-1', 'public', 'monitored']}
1033
+ itemRenderer={item => (
1034
+ <Tag key={item} data-testid='attr-tag'>
1035
+ {item}
1036
+ </Tag>
1037
+ )}
1038
+ />
1039
+ </AttributeActionsTarget>
1040
+ {renderActionsItems()}
1041
+ </AttributeActions>
1042
+ </AttributeValue>
1043
+ </Attribute>
1044
+ </>
1045
+ );
1046
+
1047
+ /**
1048
+ * By default the value keeps its own interactivity: a link, or a snippet's copy
1049
+ * button, still does its own job, and the menu opens from the space around it.
1050
+ */
1051
+ export const HorizontalWithActions: StoryFn<AttributeProps> = () => (
1052
+ <div className='w-[400px] flex flex-col gap-8'>{renderActionsAttributes(false)}</div>
1053
+ );
1054
+ HorizontalWithActions.storyName = 'Horizontal With Actions (default — copy on text, menu outside)';
1055
+
1056
+ /**
1057
+ * `disableNestedInteractive` renders the value inert, so a click anywhere on the row
1058
+ * opens the menu — for values with nothing worth clicking of their own.
1059
+ */
1060
+ export const HorizontalWithActionsMenuOnly: StoryFn<AttributeProps> = () => (
1061
+ <div className='w-[400px] flex flex-col gap-8'>{renderActionsAttributes(true)}</div>
1062
+ );
1063
+ HorizontalWithActionsMenuOnly.storyName =
1064
+ 'Horizontal With Actions (disableNestedInteractive — menu only)';
1065
+
1066
+ // ─── InlineEdit Integration ─────────────────────────────────────────────────
1067
+ // Canonical nesting: Attribute > AttributeValue > InlineEdit. No manual
1068
+ // overflow-visible — AttributeValue's :has() seam supplies it.
1069
+
1070
+ function AttributeInlineEditExample({
1071
+ orientation,
1072
+ }: {
1073
+ orientation?: AttributeProps['orientation'];
1074
+ }) {
1075
+ const [name, setName] = useState('Checkout API');
1076
+ return (
1077
+ <div className='w-[420px]'>
1078
+ <Attribute orientation={orientation} data-testid='attr'>
1079
+ <AttributeLabel>Name</AttributeLabel>
1080
+ <AttributeValue>
1081
+ <InlineEditRoot value={name} onValueCommit={v => setName(v as string)}>
1082
+ <InlineEditPreview>{name}</InlineEditPreview>
1083
+ <InlineEditControl>
1084
+ <InlineEditInput />
1085
+ </InlineEditControl>
1086
+ <InlineEditError />
1087
+ </InlineEditRoot>
1088
+ </AttributeValue>
1089
+ </Attribute>
1090
+ </div>
1091
+ );
1092
+ }
1093
+
1094
+ /**
1095
+ * `Attribute` > `AttributeValue` > `InlineEdit` is the sanctioned nesting for an
1096
+ * editable field — the value slot supplies the overflow room the editor needs, so
1097
+ * never add your own.
1098
+ */
1099
+ export const WithInlineEdit: StoryFn = () => <AttributeInlineEditExample />;
1100
+
1101
+ /**
1102
+ * The same editor in a horizontal row, where it takes the width of the value cell
1103
+ * rather than the panel.
1104
+ */
1105
+ export const HorizontalWithInlineEdit: StoryFn = () => (
1106
+ <AttributeInlineEditExample orientation='horizontal' />
1107
+ );
1108
+
1109
+ // ─── Mixed hosts ─────────────────────────────────────────────────────────────
1110
+ // Plain value, AttributeActions target, and InlineEdit host stacked in one
1111
+ // column — the value's left text edge must line up across all three rows in
1112
+ // both orientations (AttributeValue's -ml-7 seam pulls the hover boxes left,
1113
+ // not the text).
1114
+
1115
+ function AttributeMixedExample({ orientation }: { orientation?: AttributeProps['orientation'] }) {
1116
+ const [name, setName] = useState('Checkout API');
1117
+ return (
1118
+ <div
1119
+ className={
1120
+ orientation === 'horizontal'
1121
+ ? 'w-[420px] flex flex-col gap-8'
1122
+ : 'w-[420px] flex flex-col gap-16'
1123
+ }
1124
+ >
1125
+ <Attribute orientation={orientation} data-testid='attr-plain'>
1126
+ <AttributeLabel>Request ID</AttributeLabel>
1127
+ <AttributeValue>
1128
+ <Text size='sm'>abc-123-def-456</Text>
1129
+ </AttributeValue>
1130
+ </Attribute>
1131
+
1132
+ <Attribute orientation={orientation} data-testid='attr-actions'>
1133
+ <AttributeLabel>Source IP</AttributeLabel>
1134
+ <AttributeValue>
1135
+ <AttributeActions>
1136
+ <AttributeActionsTarget>
1137
+ <Text size='sm'>142.198.167.52</Text>
1138
+ </AttributeActionsTarget>
1139
+ {renderActionsItems()}
1140
+ </AttributeActions>
1141
+ </AttributeValue>
1142
+ </Attribute>
1143
+
1144
+ <Attribute orientation={orientation} data-testid='attr-inline-edit'>
1145
+ <AttributeLabel>Name</AttributeLabel>
1146
+ <AttributeValue>
1147
+ <InlineEditRoot value={name} onValueCommit={v => setName(v as string)}>
1148
+ <InlineEditPreview>{name}</InlineEditPreview>
1149
+ <InlineEditControl>
1150
+ <InlineEditInput />
1151
+ </InlineEditControl>
1152
+ <InlineEditError />
1153
+ </InlineEditRoot>
1154
+ </AttributeValue>
1155
+ </Attribute>
1156
+ </div>
1157
+ );
1158
+ }
1159
+
1160
+ /**
1161
+ * A plain value, an actions target and an inline editor stacked in one column: the
1162
+ * text has to start at the same place in all three, which is what the value slot's
1163
+ * 7px pull is for — it moves the hover box left, not the text.
1164
+ */
1165
+ export const Mixed: StoryFn = () => <AttributeMixedExample />;
1166
+ Mixed.storyName = 'Mixed (plain + Actions + InlineEdit)';
1167
+
1168
+ /**
1169
+ * The same three hosts horizontally, where the label cell fixes the start of every
1170
+ * value and the pull has to fit inside the 12px gap between the two cells.
1171
+ */
1172
+ export const HorizontalMixed: StoryFn = () => <AttributeMixedExample orientation='horizontal' />;
1173
+ HorizontalMixed.storyName = 'Horizontal Mixed (plain + Actions + InlineEdit)';
1174
+ ```