@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,52 +1,34 @@
1
1
  "use client";
2
2
  import "../chunk-ORMEWXMH.js";
3
- function FloatingStepper({
4
- steps,
5
- current,
6
- onNavigate,
7
- canNavigate,
8
- action,
9
- className = ""
10
- }) {
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import { Button } from "./button.js";
5
+ import { Card } from "./card.js";
6
+ function FloatingStepper({ steps, current, onNavigate, canNavigate, action, className, "aria-label": ariaLabel = "Etapas" }) {
11
7
  const currentIdx = steps.findIndex((s) => s.key === current);
12
- return /* @__PURE__ */ React.createElement(
13
- "div",
14
- {
15
- className: [
16
- "flex items-center gap-0.5 rounded-full bg-surface-shell shadow-2xl px-1.5 py-1.5",
17
- className
18
- ].filter(Boolean).join(" ")
19
- },
8
+ return /* @__PURE__ */ jsxs(Card, { as: "div", size: "sm", role: "navigation", "aria-label": ariaLabel, className: ["rds-floating-stepper", className].filter(Boolean).join(" "), children: [
20
9
  steps.map((s, idx) => {
21
10
  const isCurrent = idx === currentIdx;
22
11
  const canGo = canNavigate ? canNavigate(s.key, idx, currentIdx) : idx < currentIdx;
23
- return /* @__PURE__ */ React.createElement(
24
- "button",
12
+ return /* @__PURE__ */ jsx(
13
+ Button,
25
14
  {
26
- key: s.key,
27
- type: "button",
15
+ tone: "neutral",
16
+ variant: isCurrent ? "fill" : "ghost",
28
17
  disabled: !canGo && !isCurrent,
29
18
  "aria-current": isCurrent ? "step" : void 0,
30
19
  onClick: () => {
31
- if (canGo) onNavigate == null ? void 0 : onNavigate(s.key);
20
+ if (canGo && !isCurrent) onNavigate == null ? void 0 : onNavigate(s.key);
32
21
  },
33
- className: `flex items-center gap-1.5 rounded-full px-3 py-1.5 text-caption font-medium whitespace-nowrap transition-colors ${isCurrent ? "bg-(--surface-default) text-(--text-primary)" : canGo ? "text-on-shell-muted hover:text-on-shell" : "text-on-shell-subtle cursor-default"}`
22
+ children: s.label
34
23
  },
35
- /* @__PURE__ */ React.createElement("span", { className: `w-1.5 h-1.5 rounded-full shrink-0 ${isCurrent ? "bg-(--text-primary)" : "bg-on-shell-subtle"}` }),
36
- s.label
24
+ s.key
37
25
  );
38
26
  }),
39
- action && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("span", { className: "w-px h-4 bg-on-shell-line mx-1", "aria-hidden": true }), /* @__PURE__ */ React.createElement(
40
- "button",
41
- {
42
- type: "button",
43
- onClick: action.onClick,
44
- className: "flex items-center gap-1.5 rounded-full px-3 py-1.5 text-caption font-medium text-on-shell-muted hover:text-on-shell transition-colors whitespace-nowrap [&_svg]:w-3 [&_svg]:h-3 [&_svg]:shrink-0"
45
- },
46
- action.icon,
47
- action.label
48
- ))
49
- );
27
+ action && /* @__PURE__ */ jsxs(Fragment, { children: [
28
+ /* @__PURE__ */ jsx("span", { className: "rds-floating-stepper__divider", "aria-hidden": "true" }),
29
+ /* @__PURE__ */ jsx(Button, { tone: "neutral", variant: "ghost", icon: action.icon, onClick: action.onClick, children: action.label })
30
+ ] })
31
+ ] });
50
32
  }
51
33
  export {
52
34
  FloatingStepper
@@ -0,0 +1,36 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface FooterProps extends HTMLAttributes<HTMLElement> {
5
+ /**
6
+ * The brand (Figma: `logo`), always by slot: the design system carries no client logo. Usually a link to the home
7
+ * page named after the brand, around the logotype.
8
+ */
9
+ logo: ReactNode;
10
+ /** One sentence about the site (Figma: `tagline`). */
11
+ tagline?: ReactNode;
12
+ /** Links to the brand's profiles, each named, around a 24 mono icon (Figma: slot `social`). */
13
+ social?: ReactNode;
14
+ /** The accessible name of the list of profiles. */
15
+ socialLabel?: string;
16
+ /** FooterColumn, up to 4 (Figma: slot `columns`). */
17
+ children?: ReactNode;
18
+ /** The copyright line (Figma: `copyright`). */
19
+ copyright: ReactNode;
20
+ }
21
+ /**
22
+ * Footer — Figma [RDS] Blocks/Footer. The footer of the public pages (<footer>, the contentinfo landmark at the top
23
+ * level): brand, sentence and profiles, the link columns and the copyright. Below 640 of container width everything
24
+ * stacks (Figma: `screen`). Styles: footer.css.
25
+ */
26
+ declare function Footer({ logo, tagline, social, socialLabel, children, copyright, className, ...rest }: FooterProps): react.JSX.Element;
27
+ interface FooterColumnProps extends HTMLAttributes<HTMLElement> {
28
+ /** Who the links are for, such as customers or sellers (Figma: `title`). It names the column's navigation. */
29
+ title: string;
30
+ /** The links, `<a>` elements (Figma: slot `links`). */
31
+ children: ReactNode;
32
+ }
33
+ /** A column of Footer links (Figma: .footer/column), a <nav> named by its title. Only inside a Footer. */
34
+ declare function FooterColumn({ title, children, className, ...rest }: FooterColumnProps): react.JSX.Element;
35
+
36
+ export { Footer, FooterColumn, type FooterColumnProps, type FooterProps };
@@ -0,0 +1,38 @@
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 { Children, Fragment, isValidElement, useId } from "react";
9
+ function listItems(slot) {
10
+ const items = isValidElement(slot) && slot.type === Fragment ? slot.props.children : slot;
11
+ return Children.map(items, (item) => item && /* @__PURE__ */ jsx("li", { children: item }));
12
+ }
13
+ function Footer(_a) {
14
+ var _b = _a, { logo, tagline, social, socialLabel = "Redes sociais", children, copyright, className } = _b, rest = __objRest(_b, ["logo", "tagline", "social", "socialLabel", "children", "copyright", "className"]);
15
+ return /* @__PURE__ */ jsx("footer", __spreadProps(__spreadValues({}, rest), { className: ["rds-footer", className].filter(Boolean).join(" "), children: /* @__PURE__ */ jsxs("div", { className: "rds-footer__inner", children: [
16
+ /* @__PURE__ */ jsxs("div", { className: "rds-footer__sitemap", children: [
17
+ /* @__PURE__ */ jsxs("div", { className: "rds-footer__brand", children: [
18
+ /* @__PURE__ */ jsx("div", { className: "rds-footer__logo", children: logo }),
19
+ tagline && /* @__PURE__ */ jsx("p", { className: "rds-footer__tagline", children: tagline }),
20
+ social && /* @__PURE__ */ jsx("ul", { className: "rds-footer__social", "aria-label": socialLabel, children: listItems(social) })
21
+ ] }),
22
+ children && /* @__PURE__ */ jsx("div", { className: "rds-footer__columns", children })
23
+ ] }),
24
+ /* @__PURE__ */ jsx("p", { className: "rds-footer__legal", children: copyright })
25
+ ] }) }));
26
+ }
27
+ function FooterColumn(_c) {
28
+ var _d = _c, { title, children, className } = _d, rest = __objRest(_d, ["title", "children", "className"]);
29
+ const id = useId();
30
+ return /* @__PURE__ */ jsxs("nav", __spreadProps(__spreadValues({ "aria-labelledby": id }, rest), { className: ["rds-footer__column", className].filter(Boolean).join(" "), children: [
31
+ /* @__PURE__ */ jsx("p", { id, className: "rds-footer__title", children: title }),
32
+ /* @__PURE__ */ jsx("ul", { className: "rds-footer__links", children: listItems(children) })
33
+ ] }));
34
+ }
35
+ export {
36
+ Footer,
37
+ FooterColumn
38
+ };
@@ -0,0 +1,28 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+
4
+ type FormActionsLayout = 'inline' | 'stacked';
5
+ interface FormActionsProps extends HTMLAttributes<HTMLDivElement> {
6
+ /**
7
+ * The buttons (Figma: slot `actions`, up to 3), always in reading order: Cancelar first, the primary
8
+ * last. In `stacked` the primary goes on top, and it is moved first in the page too, so the focus
9
+ * order follows what is seen.
10
+ */
11
+ children: ReactNode;
12
+ /** A short supporting sentence beside the actions (Figma: `showHelper` + `helper`). */
13
+ helper?: ReactNode;
14
+ /**
15
+ * inline (desktop: floats and hugs its content, sentence left, actions right) or stacked (phone: edge
16
+ * to edge at the foot, primary full width on top) (Figma: `layout`).
17
+ */
18
+ layout?: FormActionsLayout;
19
+ }
20
+ /**
21
+ * FormActions — Figma [RDS] Actions/FormActions. The actions at the end of a create form or a task,
22
+ * there from the first second. Where it sticks is the page's job: `position: sticky` at the bottom of
23
+ * the scrolling container, with `scroll-padding-bottom` equal to its height, so a focused field is never
24
+ * hidden behind it (WCAG 2.4.11). Styles: form-actions.css.
25
+ */
26
+ declare function FormActions({ children, helper, layout, className, ...rest }: FormActionsProps): react.JSX.Element;
27
+
28
+ export { FormActions, type FormActionsLayout, type FormActionsProps };
@@ -0,0 +1,24 @@
1
+ import {
2
+ __objRest,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../chunk-ORMEWXMH.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Children } from "react";
8
+ function FormActions(_a) {
9
+ var _b = _a, { children, helper, layout = "inline", className } = _b, rest = __objRest(_b, ["children", "helper", "layout", "className"]);
10
+ const actions = Children.toArray(children);
11
+ return /* @__PURE__ */ jsxs(
12
+ "div",
13
+ __spreadProps(__spreadValues({}, rest), {
14
+ className: ["rds-form-actions", `rds-form-actions--${layout}`, className].filter(Boolean).join(" "),
15
+ children: [
16
+ helper && /* @__PURE__ */ jsx("p", { className: "rds-form-actions__helper", children: helper }),
17
+ /* @__PURE__ */ jsx("div", { className: "rds-form-actions__actions", children: layout === "stacked" ? actions.reverse() : actions })
18
+ ]
19
+ })
20
+ );
21
+ }
22
+ export {
23
+ FormActions
24
+ };
@@ -0,0 +1,25 @@
1
+ import * as react from 'react';
2
+ import { GoogleLayout } from './internal/google.js';
3
+
4
+ interface GoogleAccount {
5
+ name: string;
6
+ email: string;
7
+ }
8
+ interface GoogleAccountChooserProps {
9
+ /** Your app, as Google shows it after the app is verified (Figma: `appName`). */
10
+ appName?: string;
11
+ /** m3: the new screen, in two panels; oauth: what Google shows today for sign-in from an app. */
12
+ layout?: GoogleLayout;
13
+ /** The accounts signed in on the browser (the Figma's accounts block): name, e-mail and the initial. */
14
+ accounts?: GoogleAccount[];
15
+ className?: string;
16
+ }
17
+ /**
18
+ * GoogleAccountChooser — Figma [RDS] External/GoogleAccountChooser. A MOCKUP of Google's account chooser, when the
19
+ * person already has accounts on the browser, for flows: nothing in it works. Below 640 of container width it takes
20
+ * the mobile layout (Figma: `screen`). "Adicionar outra conta" is Google's text; the rest is a translation (not
21
+ * verified), as in the Figma. Styles: google-account-chooser.css and internal/google.css.
22
+ */
23
+ declare function GoogleAccountChooser({ appName, layout, accounts, className }: GoogleAccountChooserProps): react.JSX.Element;
24
+
25
+ export { type GoogleAccount, GoogleAccountChooser, type GoogleAccountChooserProps };
@@ -0,0 +1,44 @@
1
+ import "../chunk-ORMEWXMH.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { GoogleAppLine, GoogleScreen } from "./internal/google.js";
4
+ const SAMPLE = [
5
+ { name: "Maria Souza", email: "maria.souza@gmail.com" },
6
+ { name: "Maria Souza", email: "maria@empresa.com.br" }
7
+ ];
8
+ function GoogleAccountChooser({ appName = "Roj\xE3o", layout = "m3", accounts = SAMPLE, className }) {
9
+ return /* @__PURE__ */ jsxs(
10
+ GoogleScreen,
11
+ {
12
+ layout,
13
+ label: "Mockup: escolha de conta do Google",
14
+ title: "Escolha uma conta",
15
+ intro: /* @__PURE__ */ jsx(GoogleAppLine, { lead: "para prosseguir para", appName }),
16
+ className: ["rds-google-account-chooser", className].filter(Boolean).join(" "),
17
+ children: [
18
+ /* @__PURE__ */ jsxs("ul", { className: "rds-google__accounts", children: [
19
+ accounts.map((account) => /* @__PURE__ */ jsxs("li", { className: "rds-google__account", children: [
20
+ /* @__PURE__ */ jsx("span", { className: "rds-google__avatar", "aria-hidden": "true", children: account.name.charAt(0).toUpperCase() }),
21
+ /* @__PURE__ */ jsxs("span", { className: "rds-google__account-text", children: [
22
+ /* @__PURE__ */ jsx("span", { className: "rds-google__account-name", children: account.name }),
23
+ /* @__PURE__ */ jsx("span", { className: "rds-google__account-email", children: account.email })
24
+ ] })
25
+ ] }, account.email)),
26
+ /* @__PURE__ */ jsxs("li", { className: "rds-google__account", children: [
27
+ /* @__PURE__ */ jsx("span", { className: "rds-google__add", "aria-hidden": "true", children: "+" }),
28
+ /* @__PURE__ */ jsx("span", { className: "rds-google__account-name", children: "Adicionar outra conta" })
29
+ ] })
30
+ ] }),
31
+ /* @__PURE__ */ jsxs("p", { className: "rds-google__text rds-google-account-chooser__notice", children: [
32
+ "Para continuar, o Google vai compartilhar seu nome, endere\xE7o de e-mail, prefer\xEAncia de idioma e foto do perfil com o ",
33
+ appName,
34
+ ". Consulte a Pol\xEDtica de Privacidade e os Termos de Servi\xE7o do app ",
35
+ appName,
36
+ " antes de us\xE1-lo."
37
+ ] })
38
+ ]
39
+ }
40
+ );
41
+ }
42
+ export {
43
+ GoogleAccountChooser
44
+ };
@@ -0,0 +1,26 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes } from 'react';
3
+
4
+ type GoogleButtonTheme = 'light' | 'dark' | 'neutral';
5
+ type GoogleButtonShape = 'rectangular' | 'pill';
6
+ type GoogleButtonType = 'standard' | 'icon';
7
+ interface GoogleButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'children'> {
8
+ /**
9
+ * The text (Figma: `label`). Only the texts Google allows in pt-BR: "Fazer login com o Google", "Continuar com o
10
+ * Google", "Inscrever-se com o Google". With `type="icon"` it is the accessible name.
11
+ */
12
+ children?: string;
13
+ /** light: white with a grey border; dark: near black; neutral: light grey, no border. */
14
+ theme?: GoogleButtonTheme;
15
+ shape?: GoogleButtonShape;
16
+ /** standard: the G and the text; icon: only the G, 40 × 40 (Figma: `type`; the HTML type is always "button"). */
17
+ type?: GoogleButtonType;
18
+ }
19
+ /**
20
+ * GoogleButton — Figma [RDS] External/GoogleButton. A MOCKUP of the official "Fazer login com o Google" button,
21
+ * with the measures and colours of Google's branding package: 40 tall, the G (20) 12 from the edge, 10 to the text,
22
+ * 14/20 medium. A real <button>: wire the click to your sign-in. Styles: google-button.css.
23
+ */
24
+ declare function GoogleButton({ children, theme, shape, type, className, ...rest }: GoogleButtonProps): react.JSX.Element;
25
+
26
+ export { GoogleButton, type GoogleButtonProps, type GoogleButtonShape, type GoogleButtonTheme, type GoogleButtonType };
@@ -0,0 +1,38 @@
1
+ import {
2
+ __objRest,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "../chunk-ORMEWXMH.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { GoogleG } from "./internal/google.js";
8
+ function GoogleButton(_a) {
9
+ var _b = _a, {
10
+ children = "Fazer login com o Google",
11
+ theme = "light",
12
+ shape = "rectangular",
13
+ type = "standard",
14
+ className
15
+ } = _b, rest = __objRest(_b, [
16
+ "children",
17
+ "theme",
18
+ "shape",
19
+ "type",
20
+ "className"
21
+ ]);
22
+ return /* @__PURE__ */ jsxs(
23
+ "button",
24
+ __spreadProps(__spreadValues({
25
+ type: "button",
26
+ "aria-label": type === "icon" ? children : void 0
27
+ }, rest), {
28
+ className: ["rds-google-button", `rds-google-button--${theme}`, `rds-google-button--${shape}`, `rds-google-button--${type}`, className].filter(Boolean).join(" "),
29
+ children: [
30
+ /* @__PURE__ */ jsx(GoogleG, {}),
31
+ type === "standard" && /* @__PURE__ */ jsx("span", { className: "rds-google-button__label", children })
32
+ ]
33
+ })
34
+ );
35
+ }
36
+ export {
37
+ GoogleButton
38
+ };
@@ -0,0 +1,23 @@
1
+ import * as react from 'react';
2
+ import { GoogleLayout } from './internal/google.js';
3
+
4
+ interface GoogleConsentProps {
5
+ /** The screen's title (Figma: `title`), such as "Fazer login no <app>". */
6
+ title?: string;
7
+ /** Your app, named in the sharing notice. The Figma has it only inside the title. */
8
+ appName?: string;
9
+ /** m3: the new screen, in two panels; oauth: what Google shows today for sign-in from an app. */
10
+ layout?: GoogleLayout;
11
+ /** The account being shared. */
12
+ email?: string;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * GoogleConsent — Figma [RDS] External/GoogleConsent. A MOCKUP of Google's consent screen (what Google shares with
17
+ * the app), for flows: nothing in it works. The app's name shows like this only after Google verifies the app.
18
+ * Below 640 of container width it takes the mobile layout (Figma: `screen`). Styles: google-consent.css and
19
+ * internal/google.css.
20
+ */
21
+ declare function GoogleConsent({ appName, title, layout, email, className }: GoogleConsentProps): react.JSX.Element;
22
+
23
+ export { GoogleConsent, type GoogleConsentProps };
@@ -0,0 +1,28 @@
1
+ import "../chunk-ORMEWXMH.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { GoogleAccountChip, GoogleActions, GoogleScreen } from "./internal/google.js";
4
+ function GoogleConsent({ appName = "Roj\xE3o", title, layout = "m3", email = "ana@exemplo.com", className }) {
5
+ return /* @__PURE__ */ jsxs(
6
+ GoogleScreen,
7
+ {
8
+ layout,
9
+ label: "Mockup: consentimento do Google",
10
+ title: title != null ? title : `Fazer login no ${appName}`,
11
+ intro: /* @__PURE__ */ jsx(GoogleAccountChip, { email }),
12
+ className: ["rds-google-consent", className].filter(Boolean).join(" "),
13
+ children: [
14
+ /* @__PURE__ */ jsxs("p", { className: "rds-google__text", children: [
15
+ "Para criar sua conta, o Google vai compartilhar seu nome, endere\xE7o de e-mail e foto do perfil com o ",
16
+ appName,
17
+ ". Consulte a Pol\xEDtica de Privacidade e os Termos de Servi\xE7o do ",
18
+ appName,
19
+ "."
20
+ ] }),
21
+ /* @__PURE__ */ jsx(GoogleActions, { secondary: "Cancelar", primary: "Continuar" })
22
+ ]
23
+ }
24
+ );
25
+ }
26
+ export {
27
+ GoogleConsent
28
+ };
@@ -0,0 +1,26 @@
1
+ import * as react from 'react';
2
+ import { GoogleLayout } from './internal/google.js';
3
+
4
+ type GoogleSignInStep = 'email' | 'password';
5
+ interface GoogleSignInProps {
6
+ /** The screen's title (Figma: `title`). On the password step the Figma shows "Boas-vindas". */
7
+ title?: string;
8
+ /** Your app, as Google shows it after the app is verified (Figma: `appName`). */
9
+ appName?: string;
10
+ /** m3: the new screen, in two panels; oauth: what Google shows today for sign-in from an app. */
11
+ layout?: GoogleLayout;
12
+ /** email: the e-mail field; password: the account chip and the password field. */
13
+ step?: GoogleSignInStep;
14
+ /** The account on the password step. */
15
+ email?: string;
16
+ className?: string;
17
+ }
18
+ /**
19
+ * GoogleSignIn — Figma [RDS] External/GoogleSignIn. A MOCKUP of Google's sign-in screen, for flows: nothing in it
20
+ * works. Below 640 of container width it takes the mobile layout (Figma: `screen`). Texts of the e-mail step are
21
+ * Google's; those of the password step are a translation (not verified), as in the Figma. Styles: google-sign-in.css
22
+ * and internal/google.css.
23
+ */
24
+ declare function GoogleSignIn({ title, appName, layout, step, email, className, }: GoogleSignInProps): react.JSX.Element;
25
+
26
+ export { GoogleLayout, GoogleSignIn, type GoogleSignInProps, type GoogleSignInStep };
@@ -0,0 +1,36 @@
1
+ import "../chunk-ORMEWXMH.js";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { GoogleAccountChip, GoogleActions, GoogleAppLine, GoogleField, GoogleScreen } from "./internal/google.js";
4
+ function GoogleSignIn({
5
+ title,
6
+ appName = "Roj\xE3o",
7
+ layout = "m3",
8
+ step = "email",
9
+ email = "ana@exemplo.com",
10
+ className
11
+ }) {
12
+ const password = step === "password";
13
+ return /* @__PURE__ */ jsx(
14
+ GoogleScreen,
15
+ {
16
+ layout,
17
+ label: "Mockup: login com o Google",
18
+ title: title != null ? title : password ? "Boas-vindas" : "Fa\xE7a login",
19
+ intro: password ? /* @__PURE__ */ jsx(GoogleAccountChip, { email }) : /* @__PURE__ */ jsx(GoogleAppLine, { lead: "Prosseguir para", appName }),
20
+ className: ["rds-google-sign-in", className].filter(Boolean).join(" "),
21
+ children: password ? /* @__PURE__ */ jsxs(Fragment, { children: [
22
+ /* @__PURE__ */ jsx(GoogleField, { label: "Digite sua senha" }),
23
+ /* @__PURE__ */ jsx("span", { className: "rds-google__checkbox rds-google-sign-in__show", children: "Mostrar senha" }),
24
+ /* @__PURE__ */ jsx(GoogleActions, { secondary: "Esqueceu a senha?", primary: "Avan\xE7ar" })
25
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
26
+ /* @__PURE__ */ jsx(GoogleField, { label: "E-mail ou telefone", state: layout === "oauth" ? "focus" : "default" }),
27
+ /* @__PURE__ */ jsx("span", { className: "rds-google__link rds-google-sign-in__forgot", children: "Esqueceu o e-mail?" }),
28
+ /* @__PURE__ */ jsx("p", { className: "rds-google__text rds-google-sign-in__notice", children: layout === "m3" ? "N\xE3o est\xE1 no seu computador? Use uma janela de navega\xE7\xE3o privada para fazer login." : `Consulte a Pol\xEDtica de Privacidade e os Termos de Servi\xE7o do app ${appName} antes de us\xE1-lo.` }),
29
+ /* @__PURE__ */ jsx(GoogleActions, { secondary: "Criar conta", primary: "Avan\xE7ar" })
30
+ ] })
31
+ }
32
+ );
33
+ }
34
+ export {
35
+ GoogleSignIn
36
+ };
@@ -0,0 +1,30 @@
1
+ import * as react from 'react';
2
+ import { ReactElement, ReactNode } from 'react';
3
+
4
+ interface HoverCardProps {
5
+ /** The link it opens from: an <a href> to the full page. The card only repeats what is there. */
6
+ children: ReactElement;
7
+ /** Who or what it is (Figma: `title`). */
8
+ title: ReactNode;
9
+ /** What it does (Figma: `description`). */
10
+ description?: ReactNode;
11
+ /** An Avatar (Figma: `showAvatar` + the avatar). */
12
+ avatar?: ReactNode;
13
+ /** One short fact, such as the city, after a pin (Figma: `showMeta` + `meta`). */
14
+ meta?: ReactNode;
15
+ /** ms still before opening, so it does not flash while the mouse crosses the screen. */
16
+ openDelay?: number;
17
+ /** ms after the mouse leaves; it stays open while the mouse is over it. */
18
+ closeDelay?: number;
19
+ open?: boolean;
20
+ defaultOpen?: boolean;
21
+ onOpenChange?: (open: boolean) => void;
22
+ }
23
+ /**
24
+ * HoverCard — Figma [RDS] Feedback/HoverCard. A preview on hovering or focusing a link: who it is, before clicking
25
+ * (Radix HoverCard). Never the only way to the information: on touch it does not open. No buttons inside: that is
26
+ * the Popover. Styles: hover-card.css.
27
+ */
28
+ declare function HoverCard({ children, title, description, avatar, meta, openDelay, closeDelay, open, defaultOpen, onOpenChange, }: HoverCardProps): react.JSX.Element;
29
+
30
+ export { HoverCard, type HoverCardProps };
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import "../chunk-ORMEWXMH.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
5
+ import { MapPinIcon } from "./internal/icons.js";
6
+ function HoverCard({
7
+ children,
8
+ title,
9
+ description,
10
+ avatar,
11
+ meta,
12
+ openDelay = 500,
13
+ closeDelay = 300,
14
+ open,
15
+ defaultOpen,
16
+ onOpenChange
17
+ }) {
18
+ return /* @__PURE__ */ jsxs(
19
+ HoverCardPrimitive.Root,
20
+ {
21
+ openDelay,
22
+ closeDelay,
23
+ open,
24
+ defaultOpen,
25
+ onOpenChange,
26
+ children: [
27
+ /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { asChild: true, children }),
28
+ /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
29
+ HoverCardPrimitive.Content,
30
+ {
31
+ side: "bottom",
32
+ align: "start",
33
+ sideOffset: 8,
34
+ collisionPadding: 16,
35
+ className: "rds-hover-card",
36
+ children: [
37
+ avatar && /* @__PURE__ */ jsx("span", { className: "rds-hover-card__avatar", children: avatar }),
38
+ /* @__PURE__ */ jsxs("div", { className: "rds-hover-card__content", children: [
39
+ /* @__PURE__ */ jsx("p", { className: "rds-hover-card__title", children: title }),
40
+ description && /* @__PURE__ */ jsx("p", { className: "rds-hover-card__description", children: description }),
41
+ meta && /* @__PURE__ */ jsxs("p", { className: "rds-hover-card__meta", children: [
42
+ /* @__PURE__ */ jsx("span", { className: "rds-hover-card__meta-icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx(MapPinIcon, {}) }),
43
+ meta
44
+ ] })
45
+ ] })
46
+ ]
47
+ }
48
+ ) })
49
+ ]
50
+ }
51
+ );
52
+ }
53
+ export {
54
+ HoverCard
55
+ };
@@ -1,17 +1,47 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode } from 'react';
2
+ import { ComponentPropsWithRef, ReactNode } from 'react';
3
+ import { ButtonTone, ButtonVariant, ButtonSize } from './internal/button.js';
3
4
 
4
- type IconButtonVariant = 'filled' | 'outline' | 'ghost';
5
- type IconButtonColor = 'primary' | 'secondary' | 'danger' | 'neutral';
6
- type IconButtonSize = 'sm' | 'md' | 'lg';
7
- interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
5
+ interface IconButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'children'> {
6
+ /** The only content of the button (Figma: `iconName`). */
8
7
  icon: ReactNode;
9
- 'aria-label': string;
10
- variant?: IconButtonVariant;
11
- color?: IconButtonColor;
12
- size?: IconButtonSize;
8
+ /** Required: the name a screen reader announces ("Fechar", "Mostrar senha"). Rendered as aria-label. */
9
+ label: string;
10
+ /** Same tones as the Button. */
11
+ tone?: ButtonTone;
12
+ /** Figma calls this property `style`. */
13
+ variant?: ButtonVariant;
14
+ /**
15
+ * The size of the square (Figma: `size`): sm 36 with a 16 icon, md 44 with a 20 icon (default), lg 52 with a 24
16
+ * icon. The touch target is 44 × 44 in every size: on sm, an invisible layer extends it under a coarse pointer.
17
+ */
18
+ size?: ButtonSize;
19
+ /** Rendered as aria-disabled="true", as in the Button. */
20
+ disabled?: boolean;
21
+ /** Render the single child element (an empty `<a>`, a framework `Link`) with the button's classes. */
22
+ asChild?: boolean;
23
+ /** Waiting for what the click started (Figma: `loading`): the icon gives way to a turning loader. */
13
24
  loading?: boolean;
25
+ /** What is being waited for, announced while loading. */
26
+ loadingLabel?: string;
27
+ /** Only with `asChild`: the link element; the icon is placed inside it. */
28
+ children?: ReactNode;
14
29
  }
15
- declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
30
+ /**
31
+ * IconButton — Figma [RDS] Actions/IconButton. A square of 36, 44 (default) or 52, same tones, sizes and tokens as
32
+ * the Button.
33
+ *
34
+ * The icon alone does not say what the button does: always pair it with a Tooltip carrying the same text as `label`,
35
+ * shown on hover and on keyboard focus. They are two components (no tooltip inside this one), always together:
36
+ *
37
+ * ```tsx
38
+ * <Tooltip text="Novo cliente">
39
+ * <IconButton icon={<PlusIcon />} label="Novo cliente" />
40
+ * </Tooltip>
41
+ * ```
42
+ *
43
+ * Every IconButton the design system renders itself (closes, arrows, "Mais ações") already comes with its Tooltip.
44
+ */
45
+ declare function IconButton({ icon, label, tone, variant, size, disabled, loading, loadingLabel, asChild, type, className, onClick, children, ...rest }: IconButtonProps): react.JSX.Element;
16
46
 
17
- export { IconButton, type IconButtonColor, type IconButtonProps, type IconButtonSize, type IconButtonVariant };
47
+ export { IconButton, type IconButtonProps };