@rojaostudio/ds 1.0.2 → 2.0.0-next.1

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 (356) 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 -93
  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 +67 -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 -90
  15. package/dist/components/badge.d.ts +30 -41
  16. package/dist/components/badge.js +13 -110
  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 +38 -56
  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 +45 -108
  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 +31 -46
  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 +87 -81
  43. package/dist/components/chip-input.d.ts +46 -20
  44. package/dist/components/chip-input.js +172 -176
  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 -62
  49. package/dist/components/choice-carousel.d.ts +9 -0
  50. package/dist/components/choice-carousel.js +28 -44
  51. package/dist/components/choice-preview-card.d.ts +10 -20
  52. package/dist/components/choice-preview-card.js +12 -40
  53. package/dist/components/color-input.d.ts +36 -11
  54. package/dist/components/color-input.js +131 -59
  55. package/dist/components/combobox.d.ts +60 -57
  56. package/dist/components/combobox.js +210 -213
  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 +41 -68
  63. package/dist/components/copy-field.d.ts +10 -5
  64. package/dist/components/copy-field.js +24 -29
  65. package/dist/components/currency-input.d.ts +25 -11
  66. package/dist/components/currency-input.js +29 -65
  67. package/dist/components/danger-zone.d.ts +10 -1
  68. package/dist/components/danger-zone.js +14 -18
  69. package/dist/components/data-table-header.d.ts +13 -2
  70. package/dist/components/data-table-header.js +114 -190
  71. package/dist/components/date-picker.d.ts +31 -32
  72. package/dist/components/date-picker.js +119 -254
  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 +57 -89
  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 -58
  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 -51
  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 -61
  93. package/dist/components/floating-stepper.d.ts +7 -18
  94. package/dist/components/floating-stepper.js +27 -55
  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 +44 -64
  111. package/dist/components/image-crop-modal.d.ts +3 -3
  112. package/dist/components/image-crop-modal.js +32 -39
  113. package/dist/components/image-upload.d.ts +21 -29
  114. package/dist/components/image-upload.js +55 -259
  115. package/dist/components/index.d.ts +105 -52
  116. package/dist/components/index.js +190 -74
  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 +104 -137
  121. package/dist/components/insight-card.d.ts +25 -9
  122. package/dist/components/insight-card.js +42 -27
  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 -27
  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 -137
  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 -34
  185. package/dist/components/page-skeleton.d.ts +15 -21
  186. package/dist/components/page-skeleton.js +28 -25
  187. package/dist/components/pagination.d.ts +32 -22
  188. package/dist/components/pagination.js +78 -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 +75 -64
  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 +30 -131
  197. package/dist/components/pricing-card.d.ts +9 -25
  198. package/dist/components/pricing-card.js +9 -40
  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 +6 -22
  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 +45 -103
  211. package/dist/components/row-actions.d.ts +5 -0
  212. package/dist/components/row-actions.js +27 -34
  213. package/dist/components/saving-bar-context.d.ts +0 -5
  214. package/dist/components/saving-bar-context.js +16 -40
  215. package/dist/components/saving-bar.d.ts +26 -11
  216. package/dist/components/saving-bar.js +50 -65
  217. package/dist/components/section-card.d.ts +18 -4
  218. package/dist/components/section-card.js +29 -50
  219. package/dist/components/section-header.d.ts +8 -12
  220. package/dist/components/section-header.js +5 -10
  221. package/dist/components/select.d.ts +44 -16
  222. package/dist/components/select.js +83 -154
  223. package/dist/components/selectable-card.d.ts +11 -19
  224. package/dist/components/selectable-card.js +4 -28
  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 +10 -23
  229. package/dist/components/settings-list.d.ts +10 -12
  230. package/dist/components/settings-list.js +7 -19
  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 -37
  237. package/dist/components/slider.d.ts +21 -23
  238. package/dist/components/slider.js +59 -64
  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 +34 -37
  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 +18 -16
  251. package/dist/components/summary-bar.d.ts +20 -20
  252. package/dist/components/summary-bar.js +13 -55
  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 +59 -58
  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 -91
  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 +185 -203
  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 +19 -86
  271. package/dist/components/toggle-card.d.ts +11 -2
  272. package/dist/components/toggle-card.js +8 -77
  273. package/dist/components/toggle-group.d.ts +21 -59
  274. package/dist/components/toggle-group.js +31 -80
  275. package/dist/components/toggle.d.ts +19 -9
  276. package/dist/components/toggle.js +16 -61
  277. package/dist/components/tooltip.d.ts +25 -12
  278. package/dist/components/tooltip.js +15 -88
  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 -24
  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/targets/native/components/index.d.ts +0 -2
  295. package/dist/targets/native/components/index.js +0 -4
  296. package/dist/targets/native/preset.cjs +0 -1
  297. package/dist/targets/native/theme.css +58 -60
  298. package/dist/targets/native/theme.d.ts +58 -60
  299. package/dist/targets/native/theme.js +58 -60
  300. package/package.json +34 -12
  301. package/styles/_primitives.generated.css +40 -0
  302. package/styles/base.css +12 -18
  303. package/styles/rds/components-styles.css +11365 -0
  304. package/styles/rds/components.css +993 -0
  305. package/styles/rds/foundation.css +74 -0
  306. package/styles/rds/theme.css +261 -0
  307. package/styles/rds.css +6 -0
  308. package/styles/themes/rojao.css +46 -53
  309. package/dist/components/blocker-card.d.ts +0 -42
  310. package/dist/components/blocker-card.js +0 -54
  311. package/dist/components/bottom-sheet.d.ts +0 -31
  312. package/dist/components/bottom-sheet.js +0 -127
  313. package/dist/components/chat-bubble.d.ts +0 -16
  314. package/dist/components/chat-bubble.js +0 -56
  315. package/dist/components/chips.d.ts +0 -22
  316. package/dist/components/chips.js +0 -101
  317. package/dist/components/copilot-hint.d.ts +0 -18
  318. package/dist/components/copilot-hint.js +0 -72
  319. package/dist/components/divider.d.ts +0 -20
  320. package/dist/components/divider.js +0 -50
  321. package/dist/components/empty-state.d.ts +0 -48
  322. package/dist/components/empty-state.js +0 -94
  323. package/dist/components/form-card-header.d.ts +0 -13
  324. package/dist/components/form-card-header.js +0 -16
  325. package/dist/components/label.d.ts +0 -16
  326. package/dist/components/label.js +0 -48
  327. package/dist/components/menu.d.ts +0 -50
  328. package/dist/components/menu.js +0 -83
  329. package/dist/components/modal.d.ts +0 -25
  330. package/dist/components/modal.js +0 -86
  331. package/dist/components/notice.d.ts +0 -50
  332. package/dist/components/notice.js +0 -121
  333. package/dist/components/page-tabs.d.ts +0 -35
  334. package/dist/components/page-tabs.js +0 -68
  335. package/dist/components/paywall-banner.d.ts +0 -37
  336. package/dist/components/paywall-banner.js +0 -58
  337. package/dist/components/paywall.d.ts +0 -44
  338. package/dist/components/paywall.js +0 -65
  339. package/dist/components/phone-frame.d.ts +0 -9
  340. package/dist/components/phone-frame.js +0 -19
  341. package/dist/components/pix-icon.d.ts +0 -8
  342. package/dist/components/search.d.ts +0 -30
  343. package/dist/components/search.js +0 -86
  344. package/dist/components/themed.d.ts +0 -36
  345. package/dist/components/themed.js +0 -23
  346. package/dist/components/toaster.d.ts +0 -84
  347. package/dist/components/toaster.js +0 -290
  348. package/dist/components/use-dismiss.d.ts +0 -9
  349. package/dist/components/use-dismiss.js +0 -28
  350. package/dist/components/use-focus-trap.d.ts +0 -5
  351. package/dist/components/use-focus-trap.js +0 -54
  352. package/dist/targets/native/components/paywall-banner.d.ts +0 -11
  353. package/dist/targets/native/components/paywall-banner.js +0 -55
  354. package/dist/targets/native/components/paywall.d.ts +0 -18
  355. package/dist/targets/native/components/paywall.js +0 -71
  356. /package/dist/{components/pix-icon.js → icons/pix.js} +0 -0
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
  import "../chunk-ORMEWXMH.js";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { useState, useRef, useId, useMemo } from "react";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import { useMemo, useState } from "react";
5
+ import { Input } from "./input.js";
5
6
  const CURRENCY_LOCALE = {
6
7
  BRL: "pt-BR",
7
8
  USD: "en-US",
@@ -36,16 +37,6 @@ function resolveCurrency(currency, explicitLocale) {
36
37
  return { symbol: currency, decimals: 2, locale };
37
38
  }
38
39
  }
39
- const SIZE_INPUT = {
40
- sm: "h-control-sm text-caption pl-7 pr-3",
41
- md: "h-control-md text-label pl-9 pr-3",
42
- lg: "h-control-lg text-body pl-10 pr-3"
43
- };
44
- const SIZE_SYMBOL = {
45
- sm: "left-2.5 text-caption",
46
- md: "left-3 text-label",
47
- lg: "left-3.5 text-body"
48
- };
49
40
  function formatSubunits(subunits, decimals, locale) {
50
41
  const divisor = Math.pow(10, decimals);
51
42
  const decimal = subunits / divisor;
@@ -56,6 +47,7 @@ function formatSubunits(subunits, decimals, locale) {
56
47
  }
57
48
  function CurrencyInput({
58
49
  label,
50
+ "aria-label": ariaLabel,
59
51
  name,
60
52
  currency,
61
53
  symbol: symbolProp,
@@ -64,82 +56,54 @@ function CurrencyInput({
64
56
  defaultValueSubunits,
65
57
  placeholder,
66
58
  disabled,
59
+ required,
60
+ hint,
61
+ errorMessage,
67
62
  onChange,
68
63
  maxDigits = 10,
69
64
  showZero = false,
70
- size = "md",
71
- className = ""
65
+ id,
66
+ className
72
67
  }) {
73
- const id = useId();
74
- const inputRef = useRef(null);
75
68
  const [subunits, setSubunits] = useState(defaultValueSubunits != null ? defaultValueSubunits : 0);
76
69
  const { symbol, decimals, locale } = useMemo(() => {
77
70
  if (currency) {
78
71
  const resolved = resolveCurrency(currency, localeProp);
79
- return {
80
- symbol: symbolProp != null ? symbolProp : resolved.symbol,
81
- decimals: decimalsProp != null ? decimalsProp : resolved.decimals,
82
- locale: resolved.locale
83
- };
72
+ return { symbol: symbolProp != null ? symbolProp : resolved.symbol, decimals: decimalsProp != null ? decimalsProp : resolved.decimals, locale: resolved.locale };
84
73
  }
85
- return {
86
- symbol: symbolProp != null ? symbolProp : "$",
87
- decimals: decimalsProp != null ? decimalsProp : 2,
88
- locale: localeProp != null ? localeProp : "en-US"
89
- };
74
+ return { symbol: symbolProp != null ? symbolProp : "$", decimals: decimalsProp != null ? decimalsProp : 2, locale: localeProp != null ? localeProp : "en-US" };
90
75
  }, [currency, symbolProp, decimalsProp, localeProp]);
91
- function update(next) {
76
+ function change(event) {
77
+ if (disabled) return;
78
+ const digits = event.target.value.replace(/\D/g, "").slice(0, maxDigits);
79
+ const next = digits === "" ? 0 : parseInt(digits, 10);
92
80
  setSubunits(next);
93
81
  onChange == null ? void 0 : onChange(next);
94
82
  }
95
- function handleChange(e) {
96
- if (disabled) return;
97
- const digits = e.target.value.replace(/\D/g, "").slice(0, maxDigits);
98
- update(digits === "" ? 0 : parseInt(digits, 10));
99
- }
100
- const isEmpty = subunits === 0 && !showZero;
101
- const displayValue = isEmpty ? "" : formatSubunits(subunits, decimals, locale);
102
- const placeholderText = placeholder != null ? placeholder : formatSubunits(0, decimals, locale);
103
- const control = /* @__PURE__ */ jsxs("div", { className: ["relative flex items-center", label ? "" : className].join(" "), children: [
83
+ const empty = subunits === 0 && !showZero;
84
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
104
85
  /* @__PURE__ */ jsx(
105
- "span",
86
+ Input,
106
87
  {
107
- className: [
108
- "absolute select-none pointer-events-none",
109
- SIZE_SYMBOL[size],
110
- disabled ? "text-fg-disabled" : "text-fg-muted"
111
- ].join(" "),
112
- children: symbol
113
- }
114
- ),
115
- /* @__PURE__ */ jsx(
116
- "input",
117
- {
118
- ref: inputRef,
119
88
  id,
89
+ label,
90
+ "aria-label": ariaLabel,
91
+ prefix: symbol,
120
92
  type: "text",
121
93
  inputMode: "numeric",
122
- value: displayValue,
123
- placeholder: placeholderText,
124
- onChange: handleChange,
94
+ autoComplete: "off",
95
+ value: empty ? "" : formatSubunits(subunits, decimals, locale),
96
+ placeholder: placeholder != null ? placeholder : formatSubunits(0, decimals, locale),
97
+ onChange: change,
125
98
  disabled,
126
- className: [
127
- "w-full rounded-(--radius-control) border border-stroke-control bg-surface-default",
128
- "placeholder:text-fg-placeholder",
129
- "focus:outline-none focus:border-stroke-focus focus:ring-2 focus:ring-stroke-focus/20",
130
- "transition-colors",
131
- SIZE_INPUT[size],
132
- disabled ? "bg-surface-raised text-fg-disabled cursor-not-allowed" : "text-fg-primary cursor-text"
133
- ].join(" ")
99
+ required,
100
+ hint,
101
+ errorMessage,
102
+ className: ["rds-currency-input", className].filter(Boolean).join(" ")
134
103
  }
135
104
  ),
136
105
  /* @__PURE__ */ jsx("input", { type: "hidden", name, value: subunits })
137
106
  ] });
138
- if (!label) return control;
139
- return /* @__PURE__ */ jsxs("div", { className: ["flex flex-col gap-1.5", className].join(" "), children: [
140
- /* @__PURE__ */ jsx("label", { htmlFor: id, className: "text-label font-medium text-fg-primary", children: label }),
141
- control
142
- ] });
143
107
  }
144
108
  export {
145
109
  CurrencyInput
@@ -2,19 +2,28 @@ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  interface DangerZoneProps {
5
+ /** The zone's title (the CardHeader's, an h2), such as "Zona de risco". */
5
6
  title?: string;
7
+ /** One line under the title. */
6
8
  description?: string;
9
+ /** The DangerZoneItems. */
7
10
  children: ReactNode;
8
11
  className?: string;
9
12
  }
13
+ /**
14
+ * DangerZone — a composition of the Card, its CardHeader with a danger Tile, and Items (Figma [RDS] Content): the
15
+ * irreversible actions of a settings page (delete the account, unpublish). The title stays neutral; the Tile and
16
+ * each item's danger Button say the risk. Styles: danger-zone.css.
17
+ */
10
18
  declare function DangerZone({ title, description, children, className }: DangerZoneProps): react.JSX.Element;
11
19
  interface DangerZoneItemProps {
12
20
  title: ReactNode;
13
21
  description?: ReactNode;
14
- /** Ação à direita — normalmente um Button variant="outline" color="danger" size="sm". */
22
+ /** The action on the right: a Button tone="danger" variant="outline". */
15
23
  action?: ReactNode;
16
24
  className?: string;
17
25
  }
26
+ /** One irreversible action: an Item with its title, what it does and the danger Button. */
18
27
  declare function DangerZoneItem({ title, description, action, className }: DangerZoneItemProps): react.JSX.Element;
19
28
 
20
29
  export { DangerZone, DangerZoneItem, type DangerZoneItemProps, type DangerZoneProps };
@@ -1,29 +1,25 @@
1
- "use client";
2
1
  import "../chunk-ORMEWXMH.js";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { AlertTriangle } from "lucide-react";
5
- import { FormCardHeader } from "./form-card-header.js";
6
- function DangerZone({ title, description, children, className = "" }) {
7
- return /* @__PURE__ */ jsxs("section", { className: ["space-y-4", className].filter(Boolean).join(" "), children: [
8
- (title || description) && /* @__PURE__ */ jsx(
9
- FormCardHeader,
3
+ import { Card, CardContent, CardHeader } from "./card.js";
4
+ import { TriangleAlertIcon } from "./internal/icons.js";
5
+ import { Item } from "./item.js";
6
+ import { Tile } from "./tile.js";
7
+ function DangerZone({ title, description, children, className }) {
8
+ return /* @__PURE__ */ jsxs(Card, { as: title ? "section" : "div", className: ["rds-danger-zone", className].filter(Boolean).join(" "), children: [
9
+ title && /* @__PURE__ */ jsx(
10
+ CardHeader,
10
11
  {
11
- icon: /* @__PURE__ */ jsx(AlertTriangle, { size: 18, strokeWidth: 1.5 }),
12
+ titleAs: "h2",
13
+ icon: /* @__PURE__ */ jsx(Tile, { icon: /* @__PURE__ */ jsx(TriangleAlertIcon, {}), tone: "danger", variant: "soft" }),
12
14
  title,
13
- subtitle: description
15
+ description
14
16
  }
15
17
  ),
16
- /* @__PURE__ */ jsx("div", { className: "rounded-(--radius-card) border p-5 bg-danger-soft border-danger-border", children })
18
+ /* @__PURE__ */ jsx(CardContent, { className: "rds-danger-zone__items", children })
17
19
  ] });
18
20
  }
19
- function DangerZoneItem({ title, description, action, className = "" }) {
20
- return /* @__PURE__ */ jsxs("div", { className: ["flex items-start justify-between gap-4 py-4 first:pt-0 last:pb-0", className].filter(Boolean).join(" "), children: [
21
- /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
22
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-(--text-primary)", children: title }),
23
- description && /* @__PURE__ */ jsx("p", { className: "text-xs text-(--text-muted) mt-0.5 leading-relaxed", children: description })
24
- ] }),
25
- action && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: action })
26
- ] });
21
+ function DangerZoneItem({ title, description, action, className }) {
22
+ return /* @__PURE__ */ jsx(Item, { className: ["rds-danger-zone__item", className].filter(Boolean).join(" "), title, description, action });
27
23
  }
28
24
  export {
29
25
  DangerZone,
@@ -1,8 +1,10 @@
1
1
  import * as react from 'react';
2
+ import { ReactNode } from 'react';
2
3
 
3
4
  type DataTableHeaderSearch = {
4
5
  value: string;
5
6
  onChange: (v: string) => void;
7
+ /** Also the field's accessible name. Default "Buscar…". */
6
8
  placeholder?: string;
7
9
  };
8
10
  type DataTableFilterOption = {
@@ -13,6 +15,7 @@ type DataTableFilterOption = {
13
15
  type DataTableFilterDef = {
14
16
  key: string;
15
17
  label: string;
18
+ /** The chosen option; '' is "all" (no filter). */
16
19
  value: string;
17
20
  options: DataTableFilterOption[];
18
21
  onChange: (v: string) => void;
@@ -27,17 +30,25 @@ type DataTablePillDef = {
27
30
  type DataTableHeaderProps = {
28
31
  search?: DataTableHeaderSearch;
29
32
  filters?: DataTableFilterDef[];
33
+ /** Quick filters, always in view: FilterChips. */
30
34
  pillFilters?: DataTablePillDef[];
31
35
  onClear?: () => void;
32
- actions?: React.ReactNode;
36
+ actions?: ReactNode;
33
37
  className?: string;
34
- /** Em mobile, move filters + actions para um BottomSheet. pillFilters sempre visíveis. */
38
+ /** On a narrow screen, moves the filters and the actions into a Drawer. The quick filters stay in view. */
35
39
  mobileCollapse?: boolean;
36
40
  };
41
+ /** One filter as a DropdownMenu of radio items (one filter on a wide screen). */
37
42
  declare function FilterDropdown({ f, placement }: {
38
43
  f: DataTableFilterDef;
39
44
  placement?: 'bottom-start' | 'bottom-end';
40
45
  }): react.JSX.Element;
46
+ /**
47
+ * DataTableHeader — a composition of the Input (search), FilterChips, Buttons, the DropdownMenu, the Popover and
48
+ * the Drawer: the bar above a table. The search fills the row; quick filters are FilterChips; one filter is a
49
+ * dropdown, two or more collapse into "Filtros" (the active ones stay in view as removable Chips). From 768 the
50
+ * wide layout shows; below it, the filters open in a Drawer or a Popover. Styles: data-table-header.css.
51
+ */
41
52
  declare function DataTableHeader({ search, filters, pillFilters, onClear, actions, className, mobileCollapse, }: DataTableHeaderProps): react.JSX.Element;
42
53
 
43
54
  export { type DataTableFilterDef, type DataTableFilterOption, DataTableHeader, type DataTableHeaderProps, type DataTableHeaderSearch, type DataTablePillDef, FilterDropdown };
@@ -1,94 +1,41 @@
1
1
  "use client";
2
- import "../chunk-ORMEWXMH.js";
2
+ import {
3
+ __objRest,
4
+ __spreadProps,
5
+ __spreadValues
6
+ } from "../chunk-ORMEWXMH.js";
3
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
8
  import { useState } from "react";
5
- import { ChevronDown, ListFilter, SlidersHorizontal, X } from "lucide-react";
6
- import { FilterChip } from "./filter-chip.js";
7
- import { Search } from "./search.js";
8
- import { Divider } from "./divider.js";
9
+ import { Badge } from "./badge.js";
10
+ import { Button } from "./button.js";
11
+ import { Chip } from "./chip.js";
12
+ import { Drawer } from "./drawer.js";
13
+ import { DropdownMenu, DropdownMenuRadioGroup, DropdownMenuRadioItem } from "./dropdown-menu.js";
14
+ import { FilterChip, FilterChipGroup } from "./filter-chip.js";
9
15
  import { IconButton } from "./icon-button.js";
16
+ import { Input } from "./input.js";
17
+ import { ChevronDownIcon, CloseIcon, SearchIcon, SlidersIcon } from "./internal/icons.js";
10
18
  import { Popover } from "./popover.js";
11
- import { BottomSheet } from "./bottom-sheet.js";
12
- const optCls = (selected) => `w-full text-left text-label px-3 py-1.5 rounded-(--radius-card) transition-colors flex items-center justify-between gap-2 ${selected ? "bg-brand-primary text-brand-on-primary" : "text-fg-secondary hover:bg-surface-raised"}`;
13
- function triggerCls(isActive) {
14
- const base = "h-control-md flex items-center gap-1 px-3 text-label font-medium rounded-(--radius-control) border transition-colors";
15
- if (isActive) return `${base} border-brand-primary bg-brand-primary text-brand-on-primary`;
16
- return `${base} border-stroke-default bg-surface-default text-fg-muted hover:bg-surface-raised hover:border-stroke-strong`;
17
- }
18
- function getOptionLabel(filter) {
19
- var _a;
19
+ import { Separator } from "./separator.js";
20
+ import { Tooltip } from "./tooltip.js";
21
+ function optionLabel(filter) {
22
+ var _a, _b;
20
23
  if (filter.value === "") return filter.label;
21
- const opt = filter.options.find((o) => o.value === filter.value);
22
- return (_a = opt == null ? void 0 : opt.label) != null ? _a : filter.label;
24
+ return (_b = (_a = filter.options.find((o) => o.value === filter.value)) == null ? void 0 : _a.label) != null ? _b : filter.label;
23
25
  }
24
- function FilterDropdown({ f, placement = "bottom-start" }) {
25
- return /* @__PURE__ */ jsx(
26
- Popover,
27
- {
28
- placement,
29
- trigger: /* @__PURE__ */ jsxs("button", { type: "button", className: triggerCls(f.value !== ""), children: [
30
- getOptionLabel(f),
31
- /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
32
- ] }),
33
- children: ({ close }) => /* @__PURE__ */ jsx("div", { className: "w-36 rounded-(--radius-card) border border-stroke-default bg-surface-default shadow-xl p-1 overflow-hidden", children: f.options.map((opt) => /* @__PURE__ */ jsxs(
34
- "button",
35
- {
36
- type: "button",
37
- onClick: () => {
38
- f.onChange(opt.value);
39
- close();
40
- },
41
- className: optCls(f.value === opt.value),
42
- children: [
43
- /* @__PURE__ */ jsx("span", { children: opt.label }),
44
- opt.count != null && /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold opacity-60 tabular-nums", children: opt.count })
45
- ]
46
- },
47
- opt.value
48
- )) })
49
- }
50
- );
26
+ function FilterTrigger(_a) {
27
+ var _b = _a, { filter } = _b, rest = __objRest(_b, ["filter"]);
28
+ return /* @__PURE__ */ jsx(Button, __spreadProps(__spreadValues({}, rest), { tone: "neutral", variant: filter.value !== "" ? "fill" : "outline", icon: /* @__PURE__ */ jsx(ChevronDownIcon, {}), children: optionLabel(filter) }));
51
29
  }
52
- function MobileSingleFilter({ f }) {
53
- const [open, setOpen] = useState(false);
54
- return /* @__PURE__ */ jsxs(Fragment, { children: [
55
- /* @__PURE__ */ jsxs("button", { type: "button", className: triggerCls(f.value !== ""), onClick: () => setOpen(true), children: [
56
- getOptionLabel(f),
57
- /* @__PURE__ */ jsx(ChevronDown, { size: 12 })
58
- ] }),
59
- /* @__PURE__ */ jsx(BottomSheet, { open, onClose: () => setOpen(false), title: f.label, children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: f.options.map((opt) => /* @__PURE__ */ jsxs(
60
- "button",
61
- {
62
- type: "button",
63
- onClick: () => {
64
- f.onChange(opt.value);
65
- setOpen(false);
66
- },
67
- className: optCls(f.value === opt.value),
68
- children: [
69
- /* @__PURE__ */ jsx("span", { children: opt.label }),
70
- opt.count != null && /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold opacity-60 tabular-nums", children: opt.count })
71
- ]
72
- },
73
- opt.value
74
- )) }) })
75
- ] });
30
+ function FilterDropdown({ f, placement = "bottom-start" }) {
31
+ return /* @__PURE__ */ jsx(DropdownMenu, { align: placement === "bottom-end" ? "end" : "start", "aria-label": f.label, trigger: /* @__PURE__ */ jsx(FilterTrigger, { filter: f }), children: /* @__PURE__ */ jsx(DropdownMenuRadioGroup, { value: f.value, onValueChange: f.onChange, children: f.options.map((opt) => /* @__PURE__ */ jsx(DropdownMenuRadioItem, { value: opt.value, textValue: opt.label, children: opt.count != null ? `${opt.label} \xB7 ${opt.count}` : opt.label }, opt.value)) }) });
76
32
  }
77
- function FiltersButton({ count, onClick }) {
78
- return /* @__PURE__ */ jsxs(
79
- "button",
80
- {
81
- type: "button",
82
- "data-filter-toggle": true,
83
- onClick,
84
- className: `h-control-md flex items-center gap-1.5 px-3 text-label border rounded-(--radius-control) transition-colors ${count > 0 ? "bg-brand-primary text-brand-on-primary border-brand-primary" : "bg-surface-default text-fg-muted border-stroke-default hover:bg-surface-raised"}`,
85
- children: [
86
- /* @__PURE__ */ jsx(SlidersHorizontal, { size: 14 }),
87
- "Filtros",
88
- count > 0 && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center w-4 h-4 rounded-full bg-surface-default text-fg-primary text-[10px] font-bold", children: count })
89
- ]
90
- }
91
- );
33
+ function FiltersButton(_c) {
34
+ var _d = _c, { count } = _d, rest = __objRest(_d, ["count"]);
35
+ return /* @__PURE__ */ jsxs(Button, __spreadProps(__spreadValues({}, rest), { tone: "neutral", variant: count > 0 ? "fill" : "outline", icon: /* @__PURE__ */ jsx(SlidersIcon, {}), "data-filter-toggle": "", children: [
36
+ "Filtros",
37
+ count > 0 && /* @__PURE__ */ jsx(Badge, { value: count, tone: "neutral", variant: "soft" })
38
+ ] }));
92
39
  }
93
40
  function FilterGroups({
94
41
  filters,
@@ -96,32 +43,52 @@ function FilterGroups({
96
43
  onClear,
97
44
  showClear
98
45
  }) {
99
- return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
100
- filters.map((f) => /* @__PURE__ */ jsxs("div", { children: [
101
- /* @__PURE__ */ jsx("p", { className: "text-[11px] font-semibold text-fg-disabled uppercase tracking-wide mb-2", children: f.label }),
102
- /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0.5", children: f.options.map((opt) => /* @__PURE__ */ jsxs(
103
- "button",
104
- {
105
- type: "button",
106
- onClick: () => onPick(f, opt.value),
107
- className: optCls(f.value === opt.value),
108
- children: [
109
- /* @__PURE__ */ jsx("span", { children: opt.label }),
110
- opt.count != null && /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold opacity-60 tabular-nums", children: opt.count })
111
- ]
112
- },
113
- opt.value
114
- )) })
46
+ return /* @__PURE__ */ jsxs("div", { className: "rds-data-table-header__groups", children: [
47
+ filters.map((f) => /* @__PURE__ */ jsxs("div", { className: "rds-data-table-header__group", children: [
48
+ /* @__PURE__ */ jsx("p", { className: "rds-data-table-header__group-label", "aria-hidden": "true", children: f.label }),
49
+ /* @__PURE__ */ jsx(FilterChipGroup, { "aria-label": f.label, children: f.options.map((opt) => /* @__PURE__ */ jsx(FilterChip, { active: f.value === opt.value, count: opt.count, onClick: () => onPick(f, opt.value), children: opt.label }, opt.value)) })
115
50
  ] }, f.key)),
116
- onClear && showClear && /* @__PURE__ */ jsx(
117
- "button",
51
+ onClear && showClear && /* @__PURE__ */ jsx(Button, { tone: "neutral", variant: "ghost", onClick: onClear, children: "Limpar filtros" })
52
+ ] });
53
+ }
54
+ function FiltersPopover({
55
+ filters,
56
+ onClear,
57
+ showClear,
58
+ trigger
59
+ }) {
60
+ const [open, setOpen] = useState(false);
61
+ return /* @__PURE__ */ jsx(Popover, { trigger, "aria-label": "Filtros", side: "bottom", align: "end", open, onOpenChange: setOpen, children: /* @__PURE__ */ jsx("div", { className: "rds-data-table-header__scroll", children: /* @__PURE__ */ jsx(
62
+ FilterGroups,
63
+ {
64
+ filters,
65
+ onPick: (f, v) => {
66
+ f.onChange(v);
67
+ setOpen(false);
68
+ },
69
+ onClear: onClear ? () => {
70
+ onClear();
71
+ setOpen(false);
72
+ } : void 0,
73
+ showClear
74
+ }
75
+ ) }) });
76
+ }
77
+ function MobileSingleFilter({ f }) {
78
+ const [open, setOpen] = useState(false);
79
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
80
+ /* @__PURE__ */ jsx(FilterTrigger, { filter: f, onClick: () => setOpen(true) }),
81
+ /* @__PURE__ */ jsx(Drawer, { open, onOpenChange: setOpen, title: f.label, children: /* @__PURE__ */ jsx(
82
+ FilterGroups,
118
83
  {
119
- type: "button",
120
- onClick: onClear,
121
- className: "w-full text-center text-caption text-fg-disabled hover:text-fg-secondary underline underline-offset-2 pt-1",
122
- children: "Limpar filtros"
84
+ filters: [f],
85
+ onPick: (_, v) => {
86
+ f.onChange(v);
87
+ setOpen(false);
88
+ },
89
+ showClear: false
123
90
  }
124
- )
91
+ ) })
125
92
  ] });
126
93
  }
127
94
  function DataTableHeader({
@@ -130,104 +97,61 @@ function DataTableHeader({
130
97
  pillFilters = [],
131
98
  onClear,
132
99
  actions,
133
- className = "",
100
+ className,
134
101
  mobileCollapse = false
135
102
  }) {
136
- var _a;
103
+ var _a, _b;
137
104
  const [sheetOpen, setSheetOpen] = useState(false);
138
105
  const activeFilterCount = filters.filter((f) => f.value !== "").length + pillFilters.filter((p) => p.active).length;
139
106
  const collapseDesktop = filters.length >= 2;
140
107
  const activeFilters = filters.filter((f) => f.value !== "");
141
108
  const singleFilter = filters.length === 1 ? filters[0] : null;
142
- return /* @__PURE__ */ jsxs("div", { className: ["flex items-center gap-2 mb-3", className].filter(Boolean).join(" "), children: [
143
- search && /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsx(
144
- Search,
109
+ const lead = Boolean(search || pillFilters.length > 0);
110
+ return /* @__PURE__ */ jsxs("div", { className: ["rds-data-table-header", className].filter(Boolean).join(" "), children: [
111
+ search && /* @__PURE__ */ jsx(
112
+ Input,
145
113
  {
146
- size: "md",
114
+ className: "rds-data-table-header__search",
115
+ type: "search",
116
+ "aria-label": (_a = search.placeholder) != null ? _a : "Buscar\u2026",
117
+ placeholder: (_b = search.placeholder) != null ? _b : "Buscar\u2026",
118
+ leadingIcon: /* @__PURE__ */ jsx(SearchIcon, {}),
119
+ clearable: true,
120
+ clearLabel: "Limpar busca",
147
121
  value: search.value,
148
- onChange: (e) => search.onChange(e.target.value),
149
- onClear: () => search.onChange(""),
150
- placeholder: (_a = search.placeholder) != null ? _a : "Buscar..."
151
- }
152
- ) }),
153
- pillFilters.length > 0 && /* @__PURE__ */ jsx("div", { "data-pill-filter": true, className: "flex items-center [gap:var(--filter-chip-group-gap)] flex-wrap", children: pillFilters.map((p) => /* @__PURE__ */ jsx(
154
- FilterChip,
155
- {
156
- label: p.label,
157
- active: p.active,
158
- count: p.count,
159
- onClick: p.onClick
160
- },
161
- p.key
162
- )) }),
163
- filters.length > 0 && !collapseDesktop && /* @__PURE__ */ jsxs("div", { className: "hidden md:flex items-center gap-1.5", children: [
164
- (search || pillFilters.length > 0) && /* @__PURE__ */ jsx(Divider, { orientation: "vertical", className: "mx-0.5" }),
165
- /* @__PURE__ */ jsx(ListFilter, { size: 14, className: "text-fg-disabled shrink-0" }),
166
- filters.map((f) => /* @__PURE__ */ jsx(FilterDropdown, { f }, f.key))
167
- ] }),
168
- collapseDesktop && /* @__PURE__ */ jsxs("div", { className: "hidden md:flex items-center gap-1.5", children: [
169
- (search || pillFilters.length > 0) && /* @__PURE__ */ jsx(Divider, { orientation: "vertical", className: "mx-0.5" }),
170
- activeFilters.map((f) => /* @__PURE__ */ jsxs(
171
- "button",
172
- {
173
- type: "button",
174
- onClick: () => f.onChange(""),
175
- title: f.label,
176
- className: triggerCls(true),
177
- children: [
178
- getOptionLabel(f),
179
- /* @__PURE__ */ jsx(X, { size: 12 })
180
- ]
181
- },
182
- f.key
183
- )),
184
- /* @__PURE__ */ jsx(Popover, { placement: "bottom-end", trigger: /* @__PURE__ */ jsx(FiltersButton, { count: activeFilterCount }), children: ({ close }) => /* @__PURE__ */ jsx("div", { className: "bg-surface-default border border-stroke-default rounded-(--radius-card) shadow-lg p-4 w-56 max-h-[70vh] overflow-y-auto", children: /* @__PURE__ */ jsx(
185
- FilterGroups,
186
- {
187
- filters,
188
- onPick: (f, v) => {
189
- f.onChange(v);
190
- close();
191
- },
192
- onClear: onClear ? () => {
193
- onClear();
194
- close();
195
- } : void 0,
196
- showClear: activeFilterCount > 0
197
- }
198
- ) }) })
199
- ] }),
200
- onClear && activeFilterCount > 0 && !collapseDesktop && /* @__PURE__ */ jsx(
201
- IconButton,
202
- {
203
- icon: /* @__PURE__ */ jsx(X, { size: 13 }),
204
- "aria-label": "Limpar filtros",
205
- size: "sm",
206
- variant: "ghost",
207
- color: "neutral",
208
- className: "hidden md:inline-flex",
209
- onClick: onClear
122
+ onChange: (e) => search.onChange(e.target.value)
210
123
  }
211
124
  ),
212
- singleFilter && !(mobileCollapse && actions) && /* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(MobileSingleFilter, { f: singleFilter }) }),
213
- !mobileCollapse && filters.length >= 2 && /* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(Popover, { placement: "bottom-end", trigger: /* @__PURE__ */ jsx(FiltersButton, { count: activeFilterCount }), children: ({ close }) => /* @__PURE__ */ jsx("div", { className: "bg-surface-default border border-stroke-default rounded-(--radius-card) shadow-lg p-4 w-52", children: /* @__PURE__ */ jsx(
214
- FilterGroups,
125
+ pillFilters.length > 0 && /* @__PURE__ */ jsx(FilterChipGroup, { "aria-label": "Filtros r\xE1pidos", "data-pill-filter": "", children: pillFilters.map((p) => /* @__PURE__ */ jsx(FilterChip, { active: p.active, count: p.count, onClick: p.onClick, children: p.label }, p.key)) }),
126
+ filters.length > 0 && /* @__PURE__ */ jsxs("div", { className: "rds-data-table-header__wide", children: [
127
+ lead && /* @__PURE__ */ jsx(Separator, { orientation: "vertical" }),
128
+ collapseDesktop ? /* @__PURE__ */ jsxs(Fragment, { children: [
129
+ activeFilters.map((f) => /* @__PURE__ */ jsx(Chip, { onRemove: () => f.onChange(""), removeLabel: `Remover filtro ${f.label}`, children: optionLabel(f) }, f.key)),
130
+ /* @__PURE__ */ jsx(
131
+ FiltersPopover,
132
+ {
133
+ filters,
134
+ onClear,
135
+ showClear: activeFilterCount > 0,
136
+ trigger: /* @__PURE__ */ jsx(FiltersButton, { count: activeFilterCount })
137
+ }
138
+ )
139
+ ] }) : filters.map((f) => /* @__PURE__ */ jsx(FilterDropdown, { f }, f.key)),
140
+ onClear && activeFilterCount > 0 && !collapseDesktop && /* @__PURE__ */ jsx(Tooltip, { text: "Limpar filtros", children: /* @__PURE__ */ jsx(IconButton, { icon: /* @__PURE__ */ jsx(CloseIcon, {}), label: "Limpar filtros", variant: "ghost", tone: "neutral", onClick: onClear }) })
141
+ ] }),
142
+ singleFilter && !(mobileCollapse && actions) && /* @__PURE__ */ jsx("div", { className: "rds-data-table-header__narrow", children: /* @__PURE__ */ jsx(MobileSingleFilter, { f: singleFilter }) }),
143
+ !mobileCollapse && filters.length >= 2 && /* @__PURE__ */ jsx("div", { className: "rds-data-table-header__narrow", children: /* @__PURE__ */ jsx(
144
+ FiltersPopover,
215
145
  {
216
146
  filters,
217
- onPick: (f, v) => {
218
- f.onChange(v);
219
- close();
220
- },
221
- onClear: onClear ? () => {
222
- onClear();
223
- close();
224
- } : void 0,
225
- showClear: activeFilterCount > 0
147
+ onClear,
148
+ showClear: activeFilterCount > 0,
149
+ trigger: /* @__PURE__ */ jsx(FiltersButton, { count: activeFilterCount })
226
150
  }
227
- ) }) }) }),
228
- mobileCollapse && (filters.length >= 2 || actions) && /* @__PURE__ */ jsxs("div", { className: "md:hidden", children: [
151
+ ) }),
152
+ mobileCollapse && (filters.length >= 2 || actions) && /* @__PURE__ */ jsxs("div", { className: "rds-data-table-header__narrow", children: [
229
153
  /* @__PURE__ */ jsx(FiltersButton, { count: activeFilterCount, onClick: () => setSheetOpen(true) }),
230
- /* @__PURE__ */ jsx(BottomSheet, { open: sheetOpen, onClose: () => setSheetOpen(false), title: "Filtros", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
154
+ /* @__PURE__ */ jsx(Drawer, { open: sheetOpen, onOpenChange: setSheetOpen, title: "Filtros", children: /* @__PURE__ */ jsxs("div", { className: "rds-data-table-header__groups", children: [
231
155
  /* @__PURE__ */ jsx(
232
156
  FilterGroups,
233
157
  {
@@ -243,10 +167,10 @@ function DataTableHeader({
243
167
  showClear: activeFilterCount > 0
244
168
  }
245
169
  ),
246
- actions && /* @__PURE__ */ jsx("div", { className: "pt-2 border-t border-stroke-default", children: actions })
170
+ actions && /* @__PURE__ */ jsx("div", { className: "rds-data-table-header__drawer-actions", children: actions })
247
171
  ] }) })
248
172
  ] }),
249
- mobileCollapse ? /* @__PURE__ */ jsx("div", { className: "hidden md:flex items-center", children: actions }) : actions
173
+ actions && /* @__PURE__ */ jsx("div", { className: mobileCollapse ? "rds-data-table-header__wide" : "rds-data-table-header__actions", children: actions })
250
174
  ] });
251
175
  }
252
176
  export {