@rojaostudio/ds 1.0.1 → 2.0.0-next.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 (403) hide show
  1. package/README.md +75 -13
  2. package/dist/compat/generate.d.ts +0 -1
  3. package/dist/components/accordion.d.ts +30 -20
  4. package/dist/components/accordion.js +31 -87
  5. package/dist/components/action-bar.d.ts +24 -0
  6. package/dist/components/action-bar.js +55 -0
  7. package/dist/components/alert-dialog.d.ts +31 -0
  8. package/dist/components/alert-dialog.js +43 -0
  9. package/dist/components/alert.d.ts +31 -19
  10. package/dist/components/alert.js +74 -65
  11. package/dist/components/attachment.d.ts +37 -0
  12. package/dist/components/attachment.js +76 -0
  13. package/dist/components/avatar.d.ts +43 -36
  14. package/dist/components/avatar.js +59 -83
  15. package/dist/components/badge.d.ts +30 -41
  16. package/dist/components/badge.js +16 -106
  17. package/dist/components/banner.d.ts +27 -0
  18. package/dist/components/banner.js +66 -0
  19. package/dist/components/benefits.d.ts +30 -0
  20. package/dist/components/benefits.js +32 -0
  21. package/dist/components/breadcrumb.d.ts +25 -18
  22. package/dist/components/breadcrumb.js +40 -48
  23. package/dist/components/browser.d.ts +18 -0
  24. package/dist/components/browser.js +32 -0
  25. package/dist/components/bubble.d.ts +29 -0
  26. package/dist/components/bubble.js +33 -0
  27. package/dist/components/button-group.d.ts +19 -0
  28. package/dist/components/button-group.js +20 -0
  29. package/dist/components/button.d.ts +47 -20
  30. package/dist/components/button.js +51 -107
  31. package/dist/components/calendar.d.ts +29 -0
  32. package/dist/components/calendar.js +149 -0
  33. package/dist/components/card.d.ts +47 -19
  34. package/dist/components/card.js +38 -38
  35. package/dist/components/carousel.d.ts +28 -0
  36. package/dist/components/carousel.js +130 -0
  37. package/dist/components/chart.d.ts +49 -0
  38. package/dist/components/chart.js +258 -0
  39. package/dist/components/checkbox-group.d.ts +16 -0
  40. package/dist/components/checkbox-group.js +13 -0
  41. package/dist/components/checkbox.d.ts +25 -10
  42. package/dist/components/checkbox.js +86 -67
  43. package/dist/components/chip-input.d.ts +46 -20
  44. package/dist/components/chip-input.js +171 -158
  45. package/dist/components/chip.d.ts +28 -0
  46. package/dist/components/chip.js +73 -0
  47. package/dist/components/choice-card.d.ts +10 -13
  48. package/dist/components/choice-card.js +11 -56
  49. package/dist/components/choice-carousel.d.ts +9 -0
  50. package/dist/components/choice-carousel.js +67 -78
  51. package/dist/components/choice-preview-card.d.ts +10 -20
  52. package/dist/components/choice-preview-card.js +13 -30
  53. package/dist/components/color-input.d.ts +36 -11
  54. package/dist/components/color-input.js +139 -61
  55. package/dist/components/combobox.d.ts +60 -57
  56. package/dist/components/combobox.js +215 -196
  57. package/dist/components/command.d.ts +58 -0
  58. package/dist/components/command.js +177 -0
  59. package/dist/components/contact.d.ts +23 -0
  60. package/dist/components/contact.js +32 -0
  61. package/dist/components/context-menu.d.ts +34 -26
  62. package/dist/components/context-menu.js +43 -66
  63. package/dist/components/copy-field.d.ts +10 -5
  64. package/dist/components/copy-field.js +25 -27
  65. package/dist/components/currency-input.d.ts +25 -11
  66. package/dist/components/currency-input.js +39 -67
  67. package/dist/components/danger-zone.d.ts +10 -1
  68. package/dist/components/danger-zone.js +20 -14
  69. package/dist/components/data-table-header.d.ts +13 -2
  70. package/dist/components/data-table-header.js +143 -169
  71. package/dist/components/date-picker.d.ts +31 -32
  72. package/dist/components/date-picker.js +126 -242
  73. package/dist/components/delta.d.ts +26 -0
  74. package/dist/components/delta.js +24 -0
  75. package/dist/components/dialog.d.ts +21 -0
  76. package/dist/components/dialog.js +16 -0
  77. package/dist/components/drawer.d.ts +15 -23
  78. package/dist/components/drawer.js +56 -76
  79. package/dist/components/dropdown-menu.d.ts +63 -0
  80. package/dist/components/dropdown-menu.js +62 -0
  81. package/dist/components/dropzone.d.ts +10 -4
  82. package/dist/components/dropzone.js +30 -55
  83. package/dist/components/empty.d.ts +29 -0
  84. package/dist/components/empty.js +42 -0
  85. package/dist/components/fab.d.ts +29 -6
  86. package/dist/components/fab.js +51 -39
  87. package/dist/components/faq.d.ts +21 -0
  88. package/dist/components/faq.js +24 -0
  89. package/dist/components/file-input.d.ts +56 -0
  90. package/dist/components/file-input.js +244 -0
  91. package/dist/components/filter-chip.d.ts +34 -47
  92. package/dist/components/filter-chip.js +61 -57
  93. package/dist/components/floating-stepper.d.ts +7 -18
  94. package/dist/components/floating-stepper.js +17 -35
  95. package/dist/components/footer.d.ts +36 -0
  96. package/dist/components/footer.js +38 -0
  97. package/dist/components/form-actions.d.ts +28 -0
  98. package/dist/components/form-actions.js +24 -0
  99. package/dist/components/google-account-chooser.d.ts +25 -0
  100. package/dist/components/google-account-chooser.js +44 -0
  101. package/dist/components/google-button.d.ts +26 -0
  102. package/dist/components/google-button.js +38 -0
  103. package/dist/components/google-consent.d.ts +23 -0
  104. package/dist/components/google-consent.js +28 -0
  105. package/dist/components/google-sign-in.d.ts +26 -0
  106. package/dist/components/google-sign-in.js +36 -0
  107. package/dist/components/hover-card.d.ts +30 -0
  108. package/dist/components/hover-card.js +55 -0
  109. package/dist/components/icon-button.d.ts +41 -11
  110. package/dist/components/icon-button.js +47 -61
  111. package/dist/components/image-crop-modal.d.ts +3 -3
  112. package/dist/components/image-crop-modal.js +66 -52
  113. package/dist/components/image-upload.d.ts +21 -29
  114. package/dist/components/image-upload.js +59 -219
  115. package/dist/components/index.d.ts +105 -49
  116. package/dist/components/index.js +190 -68
  117. package/dist/components/input-otp.d.ts +35 -0
  118. package/dist/components/input-otp.js +119 -0
  119. package/dist/components/input.d.ts +23 -17
  120. package/dist/components/input.js +103 -108
  121. package/dist/components/insight-card.d.ts +25 -9
  122. package/dist/components/insight-card.js +45 -19
  123. package/dist/components/internal/announce.d.ts +3 -0
  124. package/dist/components/internal/announce.js +20 -0
  125. package/dist/components/internal/block.d.ts +15 -0
  126. package/dist/components/internal/block.js +14 -0
  127. package/dist/components/internal/button.d.ts +23 -0
  128. package/dist/components/internal/button.js +30 -0
  129. package/dist/components/internal/choice-card.d.ts +52 -0
  130. package/dist/components/internal/choice-card.js +117 -0
  131. package/dist/components/internal/choice.d.ts +25 -0
  132. package/dist/components/internal/choice.js +44 -0
  133. package/dist/components/internal/dates.d.ts +17 -0
  134. package/dist/components/internal/dates.js +59 -0
  135. package/dist/components/internal/field.d.ts +66 -0
  136. package/dist/components/internal/field.js +105 -0
  137. package/dist/components/internal/fieldset.d.ts +25 -0
  138. package/dist/components/internal/fieldset.js +56 -0
  139. package/dist/components/internal/focus-after.d.ts +3 -0
  140. package/dist/components/internal/focus-after.js +13 -0
  141. package/dist/components/internal/google.d.ts +47 -0
  142. package/dist/components/internal/google.js +73 -0
  143. package/dist/components/internal/icons.d.ts +108 -0
  144. package/dist/components/internal/icons.js +316 -0
  145. package/dist/components/internal/menu.d.ts +16 -0
  146. package/dist/components/internal/menu.js +14 -0
  147. package/dist/components/internal/modal.d.ts +50 -0
  148. package/dist/components/internal/modal.js +85 -0
  149. package/dist/components/internal/option-content.d.ts +10 -0
  150. package/dist/components/internal/option-content.js +13 -0
  151. package/dist/components/internal/radio-context.d.ts +16 -0
  152. package/dist/components/internal/radio-context.js +6 -0
  153. package/dist/components/internal/toggle.d.ts +7 -0
  154. package/dist/components/internal/toggle.js +13 -0
  155. package/dist/components/internal/use-listbox.d.ts +56 -0
  156. package/dist/components/internal/use-listbox.js +69 -0
  157. package/dist/components/internal/whatsapp.d.ts +8 -0
  158. package/dist/components/internal/whatsapp.js +12 -0
  159. package/dist/components/item.d.ts +32 -0
  160. package/dist/components/item.js +35 -0
  161. package/dist/components/kbd.d.ts +17 -0
  162. package/dist/components/kbd.js +18 -0
  163. package/dist/components/listbox.d.ts +34 -0
  164. package/dist/components/listbox.js +114 -0
  165. package/dist/components/marker.d.ts +24 -0
  166. package/dist/components/marker.js +28 -0
  167. package/dist/components/media-tile.d.ts +17 -14
  168. package/dist/components/media-tile.js +19 -24
  169. package/dist/components/message-scroller.d.ts +20 -0
  170. package/dist/components/message-scroller.js +108 -0
  171. package/dist/components/message.d.ts +33 -0
  172. package/dist/components/message.js +23 -0
  173. package/dist/components/navigation-menu.d.ts +42 -0
  174. package/dist/components/navigation-menu.js +30 -0
  175. package/dist/components/newsletter.d.ts +27 -0
  176. package/dist/components/newsletter.js +75 -0
  177. package/dist/components/number-input.d.ts +60 -0
  178. package/dist/components/number-input.js +234 -0
  179. package/dist/components/option-tile.d.ts +20 -19
  180. package/dist/components/option-tile.js +52 -131
  181. package/dist/components/page-header.d.ts +31 -0
  182. package/dist/components/page-header.js +25 -0
  183. package/dist/components/page-shell.d.ts +11 -1
  184. package/dist/components/page-shell.js +8 -27
  185. package/dist/components/page-skeleton.d.ts +15 -21
  186. package/dist/components/page-skeleton.js +37 -4
  187. package/dist/components/pagination.d.ts +32 -22
  188. package/dist/components/pagination.js +83 -76
  189. package/dist/components/password-input.d.ts +26 -0
  190. package/dist/components/password-input.js +112 -0
  191. package/dist/components/phone-input.d.ts +12 -8
  192. package/dist/components/phone-input.js +77 -47
  193. package/dist/components/phone.d.ts +27 -0
  194. package/dist/components/phone.js +35 -0
  195. package/dist/components/popover.d.ts +25 -36
  196. package/dist/components/popover.js +32 -129
  197. package/dist/components/pricing-card.d.ts +9 -25
  198. package/dist/components/pricing-card.js +9 -25
  199. package/dist/components/pricing.d.ts +48 -0
  200. package/dist/components/pricing.js +64 -0
  201. package/dist/components/progress.d.ts +30 -0
  202. package/dist/components/progress.js +57 -0
  203. package/dist/components/qr-display.d.ts +11 -6
  204. package/dist/components/qr-display.js +8 -19
  205. package/dist/components/questionnaire.d.ts +42 -0
  206. package/dist/components/questionnaire.js +107 -0
  207. package/dist/components/radio-group.d.ts +21 -0
  208. package/dist/components/radio-group.js +40 -0
  209. package/dist/components/radio.d.ts +15 -29
  210. package/dist/components/radio.js +46 -87
  211. package/dist/components/row-actions.d.ts +5 -0
  212. package/dist/components/row-actions.js +57 -56
  213. package/dist/components/saving-bar-context.d.ts +0 -5
  214. package/dist/components/saving-bar-context.js +16 -34
  215. package/dist/components/saving-bar.d.ts +26 -11
  216. package/dist/components/saving-bar.js +53 -65
  217. package/dist/components/section-card.d.ts +18 -4
  218. package/dist/components/section-card.js +26 -39
  219. package/dist/components/section-header.d.ts +8 -12
  220. package/dist/components/section-header.js +7 -2
  221. package/dist/components/select.d.ts +44 -16
  222. package/dist/components/select.js +85 -135
  223. package/dist/components/selectable-card.d.ts +11 -19
  224. package/dist/components/selectable-card.js +4 -21
  225. package/dist/components/separator.d.ts +20 -0
  226. package/dist/components/separator.js +19 -0
  227. package/dist/components/setting-row.d.ts +11 -15
  228. package/dist/components/setting-row.js +11 -14
  229. package/dist/components/settings-list.d.ts +10 -12
  230. package/dist/components/settings-list.js +9 -17
  231. package/dist/components/sheet.d.ts +21 -0
  232. package/dist/components/sheet.js +16 -0
  233. package/dist/components/sidebar.d.ts +79 -0
  234. package/dist/components/sidebar.js +111 -0
  235. package/dist/components/skeleton.d.ts +14 -20
  236. package/dist/components/skeleton.js +8 -36
  237. package/dist/components/slider.d.ts +21 -23
  238. package/dist/components/slider.js +65 -56
  239. package/dist/components/sparkline.d.ts +19 -0
  240. package/dist/components/sparkline.js +32 -0
  241. package/dist/components/spinner.d.ts +16 -8
  242. package/dist/components/spinner.js +35 -32
  243. package/dist/components/star-rating.d.ts +22 -0
  244. package/dist/components/star-rating.js +25 -0
  245. package/dist/components/stat.d.ts +33 -0
  246. package/dist/components/stat.js +29 -0
  247. package/dist/components/status.d.ts +27 -0
  248. package/dist/components/status.js +34 -0
  249. package/dist/components/step-progress.d.ts +13 -6
  250. package/dist/components/step-progress.js +20 -17
  251. package/dist/components/summary-bar.d.ts +20 -20
  252. package/dist/components/summary-bar.js +13 -50
  253. package/dist/components/switch.d.ts +20 -0
  254. package/dist/components/switch.js +46 -0
  255. package/dist/components/table.d.ts +56 -17
  256. package/dist/components/table.js +65 -59
  257. package/dist/components/tabs.d.ts +67 -0
  258. package/dist/components/tabs.js +56 -0
  259. package/dist/components/testimonial.d.ts +30 -0
  260. package/dist/components/testimonial.js +36 -0
  261. package/dist/components/textarea.d.ts +11 -16
  262. package/dist/components/textarea.js +55 -75
  263. package/dist/components/tile.d.ts +24 -0
  264. package/dist/components/tile.js +21 -0
  265. package/dist/components/time-picker.d.ts +40 -25
  266. package/dist/components/time-picker.js +191 -189
  267. package/dist/components/toast.d.ts +63 -0
  268. package/dist/components/toast.js +132 -0
  269. package/dist/components/toggle-card-compact.d.ts +15 -5
  270. package/dist/components/toggle-card-compact.js +22 -81
  271. package/dist/components/toggle-card.d.ts +11 -2
  272. package/dist/components/toggle-card.js +9 -70
  273. package/dist/components/toggle-group.d.ts +21 -59
  274. package/dist/components/toggle-group.js +31 -74
  275. package/dist/components/toggle.d.ts +19 -9
  276. package/dist/components/toggle.js +20 -55
  277. package/dist/components/tooltip.d.ts +25 -12
  278. package/dist/components/tooltip.js +16 -84
  279. package/dist/components/top-navigation.d.ts +33 -0
  280. package/dist/components/top-navigation.js +85 -0
  281. package/dist/components/typing-indicator.d.ts +6 -0
  282. package/dist/components/typing-indicator.js +3 -21
  283. package/dist/components/whatsapp-chat.d.ts +28 -0
  284. package/dist/components/whatsapp-chat.js +95 -0
  285. package/dist/components/whatsapp-message.d.ts +22 -0
  286. package/dist/components/whatsapp-message.js +34 -0
  287. package/dist/components/whatsapp-notification.d.ts +27 -0
  288. package/dist/components/whatsapp-notification.js +73 -0
  289. package/dist/components/whatsapp-template.d.ts +42 -0
  290. package/dist/components/whatsapp-template.js +69 -0
  291. package/dist/icons/index.d.ts +2 -0
  292. package/dist/icons/index.js +2 -0
  293. package/dist/icons/pix.d.ts +16 -0
  294. package/dist/icons/pix.js +29 -0
  295. package/dist/targets/native/components/accordion.js +31 -25
  296. package/dist/targets/native/components/alert.js +22 -16
  297. package/dist/targets/native/components/avatar.js +36 -29
  298. package/dist/targets/native/components/badge.js +4 -3
  299. package/dist/targets/native/components/button.js +11 -4
  300. package/dist/targets/native/components/card.js +2 -1
  301. package/dist/targets/native/components/checkbox.js +18 -15
  302. package/dist/targets/native/components/chips.js +19 -16
  303. package/dist/targets/native/components/choice-card.js +29 -23
  304. package/dist/targets/native/components/context-menu.js +13 -9
  305. package/dist/targets/native/components/currency-input.js +28 -25
  306. package/dist/targets/native/components/danger-zone.js +10 -4
  307. package/dist/targets/native/components/date-picker.js +86 -70
  308. package/dist/targets/native/components/divider.js +3 -2
  309. package/dist/targets/native/components/empty-state.js +6 -1
  310. package/dist/targets/native/components/fab.js +32 -26
  311. package/dist/targets/native/components/filter-chip.js +9 -8
  312. package/dist/targets/native/components/form-field.js +20 -10
  313. package/dist/targets/native/components/form-screen.js +50 -45
  314. package/dist/targets/native/components/google-icon.js +31 -25
  315. package/dist/targets/native/components/icon-button.js +6 -4
  316. package/dist/targets/native/components/icon.js +2 -1
  317. package/dist/targets/native/components/image-upload.js +59 -50
  318. package/dist/targets/native/components/index.d.ts +0 -2
  319. package/dist/targets/native/components/index.js +0 -4
  320. package/dist/targets/native/components/input.js +41 -34
  321. package/dist/targets/native/components/list-item.js +29 -23
  322. package/dist/targets/native/components/menu.js +12 -10
  323. package/dist/targets/native/components/modal.js +41 -32
  324. package/dist/targets/native/components/radio.js +19 -16
  325. package/dist/targets/native/components/search.js +41 -38
  326. package/dist/targets/native/components/select.js +71 -63
  327. package/dist/targets/native/components/sheet.js +36 -30
  328. package/dist/targets/native/components/skeleton.js +6 -5
  329. package/dist/targets/native/components/slider.js +51 -43
  330. package/dist/targets/native/components/spinner.js +2 -1
  331. package/dist/targets/native/components/stepper.js +14 -9
  332. package/dist/targets/native/components/switch.js +15 -14
  333. package/dist/targets/native/components/text.js +2 -1
  334. package/dist/targets/native/components/textarea.js +2 -1
  335. package/dist/targets/native/components/theme.js +2 -1
  336. package/dist/targets/native/components/toaster.js +24 -21
  337. package/dist/targets/native/index.d.ts +1 -1
  338. package/dist/targets/native/index.js +1 -3
  339. package/dist/targets/native/preset.cjs +0 -1
  340. package/dist/targets/native/theme.css +58 -60
  341. package/dist/targets/native/theme.d.ts +58 -60
  342. package/dist/targets/native/theme.js +58 -60
  343. package/package.json +35 -16
  344. package/styles/_primitives.generated.css +40 -0
  345. package/styles/base.css +15 -21
  346. package/styles/rds/components-styles.css +11365 -0
  347. package/styles/rds/components.css +993 -0
  348. package/styles/rds/foundation.css +74 -0
  349. package/styles/rds/theme.css +261 -0
  350. package/styles/rds.css +6 -0
  351. package/styles/themes/rojao.css +46 -53
  352. package/brand/rojao-black-on-white.png +0 -0
  353. package/brand/rojao-black.png +0 -0
  354. package/brand/rojao-white-on-black.png +0 -0
  355. package/brand/rojao-white.png +0 -0
  356. package/dist/components/blocker-card.d.ts +0 -42
  357. package/dist/components/blocker-card.js +0 -45
  358. package/dist/components/bottom-sheet.d.ts +0 -31
  359. package/dist/components/bottom-sheet.js +0 -120
  360. package/dist/components/chat-bubble.d.ts +0 -16
  361. package/dist/components/chat-bubble.js +0 -55
  362. package/dist/components/chips.d.ts +0 -22
  363. package/dist/components/chips.js +0 -94
  364. package/dist/components/copilot-hint.d.ts +0 -18
  365. package/dist/components/copilot-hint.js +0 -63
  366. package/dist/components/divider.d.ts +0 -20
  367. package/dist/components/divider.js +0 -47
  368. package/dist/components/empty-state.d.ts +0 -48
  369. package/dist/components/empty-state.js +0 -91
  370. package/dist/components/form-card-header.d.ts +0 -13
  371. package/dist/components/form-card-header.js +0 -8
  372. package/dist/components/label.d.ts +0 -16
  373. package/dist/components/label.js +0 -43
  374. package/dist/components/menu.d.ts +0 -50
  375. package/dist/components/menu.js +0 -80
  376. package/dist/components/modal.d.ts +0 -25
  377. package/dist/components/modal.js +0 -71
  378. package/dist/components/notice.d.ts +0 -50
  379. package/dist/components/notice.js +0 -103
  380. package/dist/components/page-tabs.d.ts +0 -35
  381. package/dist/components/page-tabs.js +0 -55
  382. package/dist/components/paywall-banner.d.ts +0 -37
  383. package/dist/components/paywall-banner.js +0 -42
  384. package/dist/components/paywall.d.ts +0 -44
  385. package/dist/components/paywall.js +0 -55
  386. package/dist/components/phone-frame.d.ts +0 -9
  387. package/dist/components/phone-frame.js +0 -18
  388. package/dist/components/pix-icon.d.ts +0 -8
  389. package/dist/components/pix-icon.js +0 -24
  390. package/dist/components/search.d.ts +0 -30
  391. package/dist/components/search.js +0 -81
  392. package/dist/components/themed.d.ts +0 -36
  393. package/dist/components/themed.js +0 -22
  394. package/dist/components/toaster.d.ts +0 -84
  395. package/dist/components/toaster.js +0 -284
  396. package/dist/components/use-dismiss.d.ts +0 -9
  397. package/dist/components/use-dismiss.js +0 -28
  398. package/dist/components/use-focus-trap.d.ts +0 -5
  399. package/dist/components/use-focus-trap.js +0 -54
  400. package/dist/targets/native/components/paywall-banner.d.ts +0 -11
  401. package/dist/targets/native/components/paywall-banner.js +0 -46
  402. package/dist/targets/native/components/paywall.d.ts +0 -18
  403. package/dist/targets/native/components/paywall.js +0 -61
@@ -1,114 +1,24 @@
1
1
  import {
2
2
  __objRest,
3
+ __spreadProps,
3
4
  __spreadValues
4
5
  } from "../chunk-ORMEWXMH.js";
5
- import { forwardRef } from "react";
6
- const LABEL_VARIANTS = {
7
- default: "bg-surface-default text-fg-muted border border-stroke-default",
8
- primary: "bg-brand-primary text-brand-on-primary",
9
- success: "bg-success-soft text-success-text border border-success-border",
10
- warning: "bg-warning-soft text-warning-text border border-warning-border",
11
- danger: "bg-danger-soft text-danger-text border border-danger-border",
12
- info: "bg-info-soft text-info-text border border-info-border",
13
- neutral: "bg-neutral-soft text-neutral-text border border-neutral-border"
14
- };
15
- const STATUS_VARIANTS = {
16
- active: { dot: "bg-success", text: "text-success-text" },
17
- inactive: { dot: "bg-state-disabled-text", text: "text-state-disabled-text" },
18
- pending: { dot: "bg-warning", text: "text-warning-text" },
19
- error: { dot: "bg-danger", text: "text-danger-text" }
20
- };
21
- const BASE = "inline-flex items-center rounded-(--radius-badge) font-medium transition-colors";
22
- const SIZE_CLASS = {
23
- sm: "text-[10px]",
24
- md: "text-caption"
25
- };
26
- const DOT_BG = {
27
- brand: "bg-brand-primary",
28
- success: "bg-success",
29
- warning: "bg-warning",
30
- danger: "bg-danger",
31
- info: "bg-info",
32
- neutral: "bg-neutral"
33
- };
34
- const Badge = forwardRef(function Badge2(_a, ref) {
35
- var _b = _a, {
36
- variant = "default",
37
- size = "md",
38
- count,
39
- max = 99,
40
- dotColor = "brand",
41
- className = "",
42
- children
43
- } = _b, props = __objRest(_b, [
44
- "variant",
45
- "size",
46
- "count",
47
- "max",
48
- "dotColor",
49
- "className",
50
- "children"
51
- ]);
52
- if (variant === "dot") {
53
- return /* @__PURE__ */ React.createElement(
54
- "span",
55
- __spreadValues({
56
- ref,
57
- role: "status",
58
- className: [
59
- "inline-block rounded-full",
60
- size === "sm" ? "size-2" : "size-2.5",
61
- DOT_BG[dotColor],
62
- className
63
- ].join(" ")
64
- }, props)
65
- );
66
- }
67
- if (variant === "count") {
68
- const display = count !== void 0 ? count > max ? `${max}+` : String(count) : children;
69
- if (count !== void 0 && count <= 0) return null;
70
- return /* @__PURE__ */ React.createElement(
71
- "span",
72
- __spreadValues({
73
- ref,
74
- className: [
75
- BASE,
76
- SIZE_CLASS[size],
77
- size === "sm" ? "min-w-[16px] h-4 px-1" : "min-w-[20px] h-5 px-1.5",
78
- "bg-brand-primary text-brand-on-primary justify-center tabular-nums",
79
- className
80
- ].join(" ")
81
- }, props),
82
- display
83
- );
84
- }
85
- if (variant in STATUS_VARIANTS) {
86
- const { dot, text } = STATUS_VARIANTS[variant];
87
- return /* @__PURE__ */ React.createElement(
88
- "span",
89
- __spreadValues({
90
- ref,
91
- className: [BASE, SIZE_CLASS[size], "gap-1.5", text, className].join(" ")
92
- }, props),
93
- /* @__PURE__ */ React.createElement("span", { className: ["shrink-0 size-1.5 rounded-full", dot].join(" "), "aria-hidden": "true" }),
94
- children
95
- );
96
- }
97
- return /* @__PURE__ */ React.createElement(
6
+ import { jsx } from "react/jsx-runtime";
7
+ function formatBadgeValue(value) {
8
+ return value > 99 ? "99+" : String(value);
9
+ }
10
+ function Badge(_a) {
11
+ var _b = _a, { tone = "neutral", variant = "fill", value, children, className } = _b, rest = __objRest(_b, ["tone", "variant", "value", "children", "className"]);
12
+ const isNumber = value !== void 0;
13
+ return /* @__PURE__ */ jsx(
98
14
  "span",
99
- __spreadValues({
100
- ref,
101
- className: [
102
- BASE,
103
- SIZE_CLASS[size],
104
- size === "sm" ? "px-1.5 py-px" : "px-2 py-0.5",
105
- LABEL_VARIANTS[variant],
106
- className
107
- ].join(" ")
108
- }, props),
109
- children
15
+ __spreadProps(__spreadValues({}, rest), {
16
+ className: ["rds-badge", `rds-badge--${tone}-${variant}`, isNumber && "rds-badge--number", className].filter(Boolean).join(" "),
17
+ children: isNumber ? formatBadgeValue(value) : children
18
+ })
110
19
  );
111
- });
20
+ }
112
21
  export {
113
- Badge
22
+ Badge,
23
+ formatBadgeValue
114
24
  };
@@ -0,0 +1,27 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface BannerProps extends HTMLAttributes<HTMLDivElement> {
5
+ /** Decorative (Figma: `showIcon` + `icon`). By default a megaphone; `null` hides it. */
6
+ icon?: ReactNode;
7
+ /** The highlight before the message, such as "Novidade:" (Figma: `highlight`). */
8
+ highlight?: ReactNode;
9
+ /** The message, one short line (Figma: `message`). */
10
+ message: ReactNode;
11
+ /** An action ghost Button, or a link through Button asChild (Figma: `showAction`). */
12
+ action?: ReactNode;
13
+ /** Shows the × (Figma: `showClose`). The Banner hides itself, calls this, and the focus moves on. */
14
+ onClose?: () => void;
15
+ /** The ×'s accessible name. */
16
+ closeLabel?: string;
17
+ /** Names the strip for screen readers (a region landmark). */
18
+ label?: string;
19
+ }
20
+ /**
21
+ * Banner — Figma [RDS] Blocks/Banner. The notice strip on top of the site: a short piece of news. An error or a
22
+ * status is the Alert. Below 640 of container width the text and the action stack (Figma: screen=mobile).
23
+ * Styles: banner.css.
24
+ */
25
+ declare function Banner({ icon, highlight, message, action, onClose, closeLabel, label, className, ...rest }: BannerProps): react.JSX.Element | null;
26
+
27
+ export { Banner, type BannerProps };
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ import {
3
+ __objRest,
4
+ __spreadProps,
5
+ __spreadValues
6
+ } from "../chunk-ORMEWXMH.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useRef, useState } from "react";
9
+ import { IconButton } from "./icon-button.js";
10
+ import { Tooltip } from "./tooltip.js";
11
+ import { focusAfter } from "./internal/focus-after.js";
12
+ import { CloseIcon, MegaphoneIcon } from "./internal/icons.js";
13
+ function Banner(_a) {
14
+ var _b = _a, {
15
+ icon = /* @__PURE__ */ jsx(MegaphoneIcon, {}),
16
+ highlight,
17
+ message,
18
+ action,
19
+ onClose,
20
+ closeLabel = "Fechar aviso",
21
+ label = "Aviso",
22
+ className
23
+ } = _b, rest = __objRest(_b, [
24
+ "icon",
25
+ "highlight",
26
+ "message",
27
+ "action",
28
+ "onClose",
29
+ "closeLabel",
30
+ "label",
31
+ "className"
32
+ ]);
33
+ const [open, setOpen] = useState(true);
34
+ const ref = useRef(null);
35
+ if (!open) return null;
36
+ return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ ref, role: "region", "aria-label": label }, rest), { className: ["rds-banner", className].filter(Boolean).join(" "), children: /* @__PURE__ */ jsxs("div", { className: "rds-banner__inner", children: [
37
+ /* @__PURE__ */ jsxs("div", { className: "rds-banner__content", children: [
38
+ icon && /* @__PURE__ */ jsx("span", { className: "rds-banner__icon", "aria-hidden": "true", children: icon }),
39
+ /* @__PURE__ */ jsxs("div", { className: "rds-banner__body", children: [
40
+ /* @__PURE__ */ jsxs("p", { className: "rds-banner__text", children: [
41
+ highlight && /* @__PURE__ */ jsx("strong", { className: "rds-banner__highlight", children: highlight }),
42
+ highlight && " ",
43
+ /* @__PURE__ */ jsx("span", { className: "rds-banner__message", children: message })
44
+ ] }),
45
+ action && /* @__PURE__ */ jsx("div", { className: "rds-banner__action", children: action })
46
+ ] })
47
+ ] }),
48
+ onClose && /* @__PURE__ */ jsx(Tooltip, { text: closeLabel, children: /* @__PURE__ */ jsx(
49
+ IconButton,
50
+ {
51
+ icon: /* @__PURE__ */ jsx(CloseIcon, {}),
52
+ label: closeLabel,
53
+ tone: "neutral",
54
+ variant: "ghost",
55
+ onClick: () => {
56
+ focusAfter(ref.current);
57
+ setOpen(false);
58
+ onClose();
59
+ }
60
+ }
61
+ ) })
62
+ ] }) }));
63
+ }
64
+ export {
65
+ Banner
66
+ };
@@ -0,0 +1,30 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface BenefitsProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
5
+ /** A short label above the title (Figma: `eyebrow`). */
6
+ eyebrow?: ReactNode;
7
+ /** The block's title, an h2 that names the section (Figma: `title`). */
8
+ title: ReactNode;
9
+ description?: ReactNode;
10
+ /** 3 to 6 BenefitsItem (Figma: slot `items`): 3 per row, one column below 640 of container width. */
11
+ children: ReactNode;
12
+ }
13
+ /**
14
+ * Benefits — Figma [RDS] Blocks/Benefits. The benefits of a public page: label, title, a sentence and a grid of
15
+ * reasons to use the product. Adapts to the width of its container (Figma: `screen`). Styles: benefits.css.
16
+ */
17
+ declare function Benefits({ eyebrow, title, description, children, className, ...rest }: BenefitsProps): react.JSX.Element;
18
+ interface BenefitsItemProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {
19
+ /** Decorative, in the 40 plate (Figma: `icon`). */
20
+ icon: ReactNode;
21
+ /** An h3 (Figma: `title`). */
22
+ title: ReactNode;
23
+ description: ReactNode;
24
+ /** An action ghost Button, a link through asChild (Figma: `showLink`). */
25
+ link?: ReactNode;
26
+ }
27
+ /** One card of the Benefits (Figma: .benefits/item). Only inside a Benefits. */
28
+ declare function BenefitsItem({ icon, title, description, link, className, ...rest }: BenefitsItemProps): react.JSX.Element;
29
+
30
+ export { Benefits, BenefitsItem, type BenefitsItemProps, type BenefitsProps };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import {
3
+ __objRest,
4
+ __spreadProps,
5
+ __spreadValues
6
+ } from "../chunk-ORMEWXMH.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useId } from "react";
9
+ import { BlockHeading } from "./internal/block.js";
10
+ function Benefits(_a) {
11
+ var _b = _a, { eyebrow, title, description, children, className } = _b, rest = __objRest(_b, ["eyebrow", "title", "description", "children", "className"]);
12
+ const titleId = useId();
13
+ return /* @__PURE__ */ jsx("section", __spreadProps(__spreadValues({ "aria-labelledby": titleId }, rest), { className: ["rds-block", "rds-benefits", className].filter(Boolean).join(" "), children: /* @__PURE__ */ jsxs("div", { className: "rds-block__inner", children: [
14
+ /* @__PURE__ */ jsx(BlockHeading, { eyebrow, title, description, titleId }),
15
+ /* @__PURE__ */ jsx("ul", { className: "rds-benefits__items", children })
16
+ ] }) }));
17
+ }
18
+ function BenefitsItem(_c) {
19
+ var _d = _c, { icon, title, description, link, className } = _d, rest = __objRest(_d, ["icon", "title", "description", "link", "className"]);
20
+ return /* @__PURE__ */ jsxs("li", __spreadProps(__spreadValues({}, rest), { className: ["rds-benefits__item", className].filter(Boolean).join(" "), children: [
21
+ /* @__PURE__ */ jsx("span", { className: "rds-benefits__icon", "aria-hidden": "true", children: icon }),
22
+ /* @__PURE__ */ jsxs("div", { className: "rds-benefits__text", children: [
23
+ /* @__PURE__ */ jsx("h3", { className: "rds-benefits__item-title", children: title }),
24
+ /* @__PURE__ */ jsx("p", { className: "rds-benefits__item-description", children: description })
25
+ ] }),
26
+ link && /* @__PURE__ */ jsx("div", { className: "rds-benefits__link", children: link })
27
+ ] }));
28
+ }
29
+ export {
30
+ Benefits,
31
+ BenefitsItem
32
+ };
@@ -1,28 +1,35 @@
1
1
  import * as react from 'react';
2
- import { ReactNode } from 'react';
2
+ import { HTMLAttributes, ComponentType, ReactNode } from 'react';
3
3
 
4
4
  interface BreadcrumbItem {
5
5
  label: string;
6
+ /** Where the step leads. The last step is the current page and never gets a link. */
6
7
  href?: string;
7
- /** Ícone leading opcional (ex: Home no primeiro item). */
8
- icon?: ReactNode;
9
8
  }
10
- interface BreadcrumbProps {
9
+ type BreadcrumbTone = 'default' | 'inverse';
10
+ type BreadcrumbLinkComponent = ComponentType<{
11
+ href: string;
12
+ className?: string;
13
+ children: ReactNode;
14
+ }>;
15
+ interface BreadcrumbProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
16
+ /** The path, from the most general to the current page, the last one (Figma: the `items` slot). */
11
17
  items: BreadcrumbItem[];
12
- /** Separador customizado. default = ChevronRight. */
13
- separator?: ReactNode;
14
- /** Trunca pra mostrar só primeiro + último com `…` no meio quando > este número. */
18
+ /**
19
+ * default on a light surface; inverse over colors/primary. Deprecated in the Figma since 27/09/2026: for the brand
20
+ * colour, put the Breadcrumb in a brand-mode scope and keep the default tone.
21
+ */
22
+ tone?: BreadcrumbTone;
23
+ /** More steps than this: the middle ones hide behind "…", a button that shows the whole path. */
15
24
  maxItems?: number;
16
- className?: string;
17
- /** Tag de link (default = `<a>`). Pra Next.js, passa `Link` daqui. */
18
- linkAs?: React.ComponentType<{
19
- href: string;
20
- className?: string;
21
- children: ReactNode;
22
- }>;
25
+ /** The link element (default `<a>`). Pass a framework Link (Next's `Link`) to navigate on the client. */
26
+ linkAs?: BreadcrumbLinkComponent;
23
27
  }
24
- declare function Breadcrumb({ items, separator, maxItems, className, linkAs: LinkAs, }: BreadcrumbProps): react.JSX.Element;
25
- /** Helper pra primeiro item sempre ter ícone Home. */
26
- declare function homeItem(href?: string): BreadcrumbItem;
28
+ /**
29
+ * Breadcrumb — Figma [RDS] Navigation/Breadcrumb. The path to the current page: a <nav aria-label="Caminho"> with an
30
+ * <ol>; the current step has aria-current="page" and no link; the arrows are hidden from screen readers.
31
+ * Styles: breadcrumb.css.
32
+ */
33
+ declare function Breadcrumb({ items, tone, maxItems, linkAs: Link, className, ...rest }: BreadcrumbProps): react.JSX.Element;
27
34
 
28
- export { Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, homeItem };
35
+ export { Breadcrumb, type BreadcrumbItem, type BreadcrumbLinkComponent, type BreadcrumbProps, type BreadcrumbTone };
@@ -1,52 +1,44 @@
1
- import "../chunk-ORMEWXMH.js";
2
- import { ChevronRight, Home } from "lucide-react";
3
- function DefaultLink({ href, className, children }) {
4
- return /* @__PURE__ */ React.createElement("a", { href, className }, children);
1
+ "use client";
2
+ import {
3
+ __objRest,
4
+ __spreadProps,
5
+ __spreadValues
6
+ } from "../chunk-ORMEWXMH.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useRef, useState } from "react";
9
+ import { ChevronRightIcon } from "./internal/icons.js";
10
+ function Anchor({ href, className, children }) {
11
+ return /* @__PURE__ */ jsx("a", { href, className, children });
5
12
  }
6
- function Breadcrumb({
7
- items,
8
- separator,
9
- maxItems = 4,
10
- className = "",
11
- linkAs: LinkAs = DefaultLink
12
- }) {
13
- const sep = separator != null ? separator : /* @__PURE__ */ React.createElement(ChevronRight, { size: 14, className: "text-fg-muted shrink-0" });
14
- let displayed = items;
15
- if (items.length > maxItems) {
16
- displayed = [
17
- items[0],
18
- { ellipsis: true },
19
- ...items.slice(items.length - 2)
20
- ];
21
- }
22
- return /* @__PURE__ */ React.createElement("nav", { "aria-label": "Breadcrumb", className }, /* @__PURE__ */ React.createElement("ol", { className: "flex items-center gap-1.5 text-label flex-wrap" }, displayed.map((entry, idx) => {
23
- const isLast = idx === displayed.length - 1;
24
- if ("ellipsis" in entry) {
25
- return /* @__PURE__ */ React.createElement("li", { key: `ell-${idx}`, className: "flex items-center gap-1.5" }, /* @__PURE__ */ React.createElement("span", { className: "text-fg-muted px-1", "aria-hidden": true }, "\u2026"), !isLast && sep);
26
- }
27
- const item = entry;
28
- const labelEl = /* @__PURE__ */ React.createElement("span", { className: "inline-flex items-center gap-1" }, item.icon, item.label);
29
- return /* @__PURE__ */ React.createElement("li", { key: idx, className: "flex items-center gap-1.5" }, item.href && !isLast ? /* @__PURE__ */ React.createElement(
30
- LinkAs,
31
- {
32
- href: item.href,
33
- className: "text-fg-muted hover:text-fg-primary transition-colors"
34
- },
35
- labelEl
36
- ) : /* @__PURE__ */ React.createElement(
37
- "span",
38
- {
39
- className: isLast ? "text-fg-primary font-medium" : "text-fg-muted",
40
- "aria-current": isLast ? "page" : void 0
41
- },
42
- labelEl
43
- ), !isLast && sep);
44
- })));
45
- }
46
- function homeItem(href = "/") {
47
- return { label: "In\xEDcio", href, icon: /* @__PURE__ */ React.createElement(Home, { size: 14 }) };
13
+ function Breadcrumb(_a) {
14
+ var _b = _a, { items, tone = "default", maxItems = 4, linkAs: Link = Anchor, className } = _b, rest = __objRest(_b, ["items", "tone", "maxItems", "linkAs", "className"]);
15
+ const [expanded, setExpanded] = useState(false);
16
+ const list = useRef(null);
17
+ const collapse = !expanded && items.length > maxItems;
18
+ const shown = collapse ? [items[0], "ellipsis", ...items.slice(-2)] : items;
19
+ const expand = () => {
20
+ setExpanded(true);
21
+ requestAnimationFrame(() => {
22
+ var _a2, _b2, _c;
23
+ return (_c = (_b2 = (_a2 = list.current) == null ? void 0 : _a2.children[1]) == null ? void 0 : _b2.querySelector("a")) == null ? void 0 : _c.focus();
24
+ });
25
+ };
26
+ return /* @__PURE__ */ jsx(
27
+ "nav",
28
+ __spreadProps(__spreadValues({
29
+ "aria-label": "Caminho"
30
+ }, rest), {
31
+ className: ["rds-breadcrumb", tone === "inverse" && "rds-breadcrumb--inverse", className].filter(Boolean).join(" "),
32
+ children: /* @__PURE__ */ jsx("ol", { ref: list, className: "rds-breadcrumb__list", children: shown.map((step, index) => {
33
+ const last = index === shown.length - 1;
34
+ return /* @__PURE__ */ jsxs("li", { className: "rds-breadcrumb__item", children: [
35
+ step === "ellipsis" ? /* @__PURE__ */ jsx("button", { type: "button", className: "rds-breadcrumb__link", "aria-label": "Mostrar o caminho completo", onClick: expand, children: "\u2026" }) : last ? /* @__PURE__ */ jsx("span", { className: "rds-breadcrumb__link rds-breadcrumb__link--current", "aria-current": "page", children: step.label }) : step.href ? /* @__PURE__ */ jsx(Link, { href: step.href, className: "rds-breadcrumb__link", children: step.label }) : /* @__PURE__ */ jsx("span", { className: "rds-breadcrumb__link", children: step.label }),
36
+ !last && /* @__PURE__ */ jsx("span", { className: "rds-breadcrumb__separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx(ChevronRightIcon, {}) })
37
+ ] }, step === "ellipsis" ? "ellipsis" : `${index}-${step.label}`);
38
+ }) })
39
+ })
40
+ );
48
41
  }
49
42
  export {
50
- Breadcrumb,
51
- homeItem
43
+ Breadcrumb
52
44
  };
@@ -0,0 +1,18 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface BrowserProps extends HTMLAttributes<HTMLDivElement> {
5
+ /** The page (Figma: slot `screen`): the useful area, 1278 × 746 at full size. It scrolls when taller. */
6
+ children?: ReactNode;
7
+ /** The address in the bar (Figma: `url`). */
8
+ url?: string;
9
+ }
10
+ /**
11
+ * Browser — Figma [RDS] External/Browser. A MOCKUP for flows, specs and showrooms: a desktop browser window,
12
+ * minimal in the Safari way (the window buttons, back and forward, the address in the centre). Up to 1280 wide; it
13
+ * narrows with its container and keeps the page's proportion. The toolbar is decorative; the page is live.
14
+ * Styles: browser.css.
15
+ */
16
+ declare function Browser({ children, url, className, ...rest }: BrowserProps): react.JSX.Element;
17
+
18
+ export { Browser, type BrowserProps };
@@ -0,0 +1,32 @@
1
+ import {
2
+ __objRest,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../chunk-ORMEWXMH.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { LockIcon } from "./internal/icons.js";
8
+ function Browser(_a) {
9
+ var _b = _a, { children, url = "rojao.studio", className } = _b, rest = __objRest(_b, ["children", "url", "className"]);
10
+ return /* @__PURE__ */ jsxs("div", __spreadProps(__spreadValues({}, rest), { className: ["rds-browser", className].filter(Boolean).join(" "), children: [
11
+ /* @__PURE__ */ jsxs("div", { className: "rds-browser__toolbar", "aria-hidden": "true", children: [
12
+ /* @__PURE__ */ jsxs("span", { className: "rds-browser__controls", children: [
13
+ /* @__PURE__ */ jsx("span", {}),
14
+ /* @__PURE__ */ jsx("span", {}),
15
+ /* @__PURE__ */ jsx("span", {})
16
+ ] }),
17
+ /* @__PURE__ */ jsxs("span", { className: "rds-browser__navigation", children: [
18
+ /* @__PURE__ */ jsx("span", { children: "\u2039" }),
19
+ /* @__PURE__ */ jsx("span", { children: "\u203A" })
20
+ ] }),
21
+ /* @__PURE__ */ jsx("span", { className: "rds-browser__center", children: /* @__PURE__ */ jsxs("span", { className: "rds-browser__address", children: [
22
+ /* @__PURE__ */ jsx(LockIcon, {}),
23
+ /* @__PURE__ */ jsx("span", { children: url })
24
+ ] }) }),
25
+ /* @__PURE__ */ jsx("span", { className: "rds-browser__actions", children: "+" })
26
+ ] }),
27
+ /* @__PURE__ */ jsx("div", { className: "rds-browser__screen", children })
28
+ ] }));
29
+ }
30
+ export {
31
+ Browser
32
+ };
@@ -0,0 +1,29 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ type BubbleVariant = 'fill' | 'muted' | 'tinted' | 'outline' | 'ghost' | 'error' | 'typing';
5
+ type BubbleAlign = 'start' | 'end';
6
+ interface BubbleProps extends HTMLAttributes<HTMLDivElement> {
7
+ /**
8
+ * The surface (Figma: `style`). fill: the person writing, in the brand colour. muted or tinted: the one answering.
9
+ * outline: on a coloured background. ghost: a long answer from the assistant, no box. error: it was not sent.
10
+ * typing: the three dots of the one answering while they write; no text, no reactions.
11
+ */
12
+ variant?: BubbleVariant;
13
+ /** start: the one answering, the small corner bottom left; end: the person writing, bottom right. */
14
+ align?: BubbleAlign;
15
+ /**
16
+ * The message (Figma: `text`). Line breaks are kept. In `typing` it is what a screen reader hears instead of the
17
+ * dots, "digitando…" by default ("Ana está digitando…").
18
+ */
19
+ children?: ReactNode;
20
+ /** How many reacted (Figma: `showReactions` + `reactions`). The pill goes under the text; 0 hides it. */
21
+ reactions?: number;
22
+ }
23
+ /**
24
+ * Bubble — Figma [RDS] Chat/Bubble. The surface of a message: it grows up to 480 and wraps. Inside a Message,
25
+ * which adds the avatar, the name and the actions. Styles: bubble.css.
26
+ */
27
+ declare function Bubble({ variant, align, children, reactions, className, ...rest }: BubbleProps): react.JSX.Element;
28
+
29
+ export { Bubble, type BubbleAlign, type BubbleProps, type BubbleVariant };
@@ -0,0 +1,33 @@
1
+ import {
2
+ __objRest,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../chunk-ORMEWXMH.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { ThumbsUpIcon } from "./internal/icons.js";
8
+ function Bubble(_a) {
9
+ var _b = _a, { variant = "muted", align = "start", children, reactions, className } = _b, rest = __objRest(_b, ["variant", "align", "children", "reactions", "className"]);
10
+ if (variant === "typing") {
11
+ return /* @__PURE__ */ jsxs("div", __spreadProps(__spreadValues({ role: "status" }, rest), { className: ["rds-bubble", "rds-bubble--typing", `rds-bubble--${align}`, className].filter(Boolean).join(" "), children: [
12
+ /* @__PURE__ */ jsxs("span", { className: "rds-bubble__dots", "aria-hidden": "true", children: [
13
+ /* @__PURE__ */ jsx("span", {}),
14
+ /* @__PURE__ */ jsx("span", {}),
15
+ /* @__PURE__ */ jsx("span", {})
16
+ ] }),
17
+ /* @__PURE__ */ jsx("span", { className: "rds-visually-hidden", children: children != null ? children : "digitando\u2026" })
18
+ ] }));
19
+ }
20
+ return /* @__PURE__ */ jsxs("div", __spreadProps(__spreadValues({}, rest), { className: ["rds-bubble", `rds-bubble--${variant}`, `rds-bubble--${align}`, className].filter(Boolean).join(" "), children: [
21
+ /* @__PURE__ */ jsx("div", { className: "rds-bubble__text", children }),
22
+ reactions !== void 0 && reactions > 0 && /* @__PURE__ */ jsx("div", { className: "rds-bubble__reactions-row", children: /* @__PURE__ */ jsxs("span", { className: "rds-bubble__reactions", children: [
23
+ /* @__PURE__ */ jsxs("span", { className: "rds-bubble__reactions-count", "aria-hidden": "true", children: [
24
+ /* @__PURE__ */ jsx(ThumbsUpIcon, {}),
25
+ reactions
26
+ ] }),
27
+ /* @__PURE__ */ jsx("span", { className: "rds-visually-hidden", children: reactions === 1 ? "1 rea\xE7\xE3o" : `${reactions} rea\xE7\xF5es` })
28
+ ] }) })
29
+ ] }));
30
+ }
31
+ export {
32
+ Bubble
33
+ };
@@ -0,0 +1,19 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ type ButtonGroupOrientation = 'horizontal' | 'vertical';
5
+ interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
6
+ /** The sibling actions (Figma: slot `buttons`): Buttons of the same tone and variant, up to 4. */
7
+ children: ReactNode;
8
+ /** In a row or stacked (Figma: `orientation`). */
9
+ orientation?: ButtonGroupOrientation;
10
+ /** Required: what the actions act on ("Rascunho"). The group is announced with this name. */
11
+ 'aria-label': string;
12
+ }
13
+ /**
14
+ * ButtonGroup — Figma [RDS] Actions/ButtonGroup. Buttons joined in one piece: inner corners square,
15
+ * borders overlapping by 1px. Each Button stays in the tab order. Styles: button-group.css.
16
+ */
17
+ declare function ButtonGroup({ orientation, className, children, ...rest }: ButtonGroupProps): react.JSX.Element;
18
+
19
+ export { ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps };
@@ -0,0 +1,20 @@
1
+ import {
2
+ __objRest,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../chunk-ORMEWXMH.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function ButtonGroup(_a) {
8
+ var _b = _a, { orientation = "horizontal", className, children } = _b, rest = __objRest(_b, ["orientation", "className", "children"]);
9
+ return /* @__PURE__ */ jsx(
10
+ "div",
11
+ __spreadProps(__spreadValues({}, rest), {
12
+ role: "group",
13
+ className: ["rds-button-group", `rds-button-group--${orientation}`, className].filter(Boolean).join(" "),
14
+ children
15
+ })
16
+ );
17
+ }
18
+ export {
19
+ ButtonGroup
20
+ };