@snksergio/design-system 0.5.1 → 0.17.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 (390) hide show
  1. package/README.md +345 -293
  2. package/dist-lib/chunks/{app-shell-BdVam01i.cjs → app-shell-CPx9X7zP.cjs} +417 -307
  3. package/dist-lib/chunks/app-shell-CPx9X7zP.cjs.map +1 -0
  4. package/dist-lib/chunks/{app-shell-C_enrPD8.mjs → app-shell-Cy9be0Zx.mjs} +449 -340
  5. package/dist-lib/chunks/app-shell-Cy9be0Zx.mjs.map +1 -0
  6. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -1
  7. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.cjs.map +1 -1
  8. package/dist-lib/chunks/{badge-B0D_PRxn.mjs → badge-DBdk74KN.mjs} +89 -46
  9. package/dist-lib/chunks/badge-DBdk74KN.mjs.map +1 -0
  10. package/dist-lib/chunks/{badge-CUttkO1X.cjs → badge-gU2wtxrn.cjs} +88 -45
  11. package/dist-lib/chunks/badge-gU2wtxrn.cjs.map +1 -0
  12. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.cjs.map +1 -1
  13. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -1
  14. package/dist-lib/chunks/chip-group-2-f_Yo7Y.cjs.map +1 -1
  15. package/dist-lib/chunks/chip-group-_e-yh1Zq.mjs.map +1 -1
  16. package/dist-lib/chunks/{clientes-showcase-mocks-CPNOhx1G.cjs → clientes-showcase-mocks-DygUqkkh.cjs} +2 -2
  17. package/dist-lib/chunks/clientes-showcase-mocks-DygUqkkh.cjs.map +1 -0
  18. package/dist-lib/chunks/{clientes-showcase-mocks-DEHCKxMK.mjs → clientes-showcase-mocks-ayU1SDOA.mjs} +2 -2
  19. package/dist-lib/chunks/clientes-showcase-mocks-ayU1SDOA.mjs.map +1 -0
  20. package/dist-lib/chunks/{page-header-qOywgRWy.cjs → page-header-BZ-WrxV2.cjs} +4 -2
  21. package/dist-lib/chunks/page-header-BZ-WrxV2.cjs.map +1 -0
  22. package/dist-lib/chunks/{page-header-DM2G1mdi.mjs → page-header-CQbTGWQ8.mjs} +4 -2
  23. package/dist-lib/chunks/page-header-CQbTGWQ8.mjs.map +1 -0
  24. package/dist-lib/chunks/{panel-CCYNbXJR.mjs → panel-DZvENJfF.mjs} +6663 -4978
  25. package/dist-lib/chunks/panel-DZvENJfF.mjs.map +1 -0
  26. package/dist-lib/chunks/{panel-CSuFQHMl.cjs → panel-awQFDYLz.cjs} +6644 -4960
  27. package/dist-lib/chunks/panel-awQFDYLz.cjs.map +1 -0
  28. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -1
  29. package/dist-lib/chunks/useTheme-Dee4mo-A.cjs.map +1 -1
  30. package/dist-lib/index.cjs +3592 -626
  31. package/dist-lib/index.cjs.map +1 -1
  32. package/dist-lib/index.mjs +3667 -717
  33. package/dist-lib/index.mjs.map +1 -1
  34. package/dist-lib/preview/chat.cjs +1 -1
  35. package/dist-lib/preview/chat.cjs.map +1 -1
  36. package/dist-lib/preview/chat.mjs +1 -1
  37. package/dist-lib/preview/chat.mjs.map +1 -1
  38. package/dist-lib/preview/clientes.cjs +10 -9
  39. package/dist-lib/preview/clientes.cjs.map +1 -1
  40. package/dist-lib/preview/clientes.mjs +10 -9
  41. package/dist-lib/preview/clientes.mjs.map +1 -1
  42. package/dist-lib/preview/dashboard.cjs +4 -4
  43. package/dist-lib/preview/dashboard.cjs.map +1 -1
  44. package/dist-lib/preview/dashboard.mjs +4 -4
  45. package/dist-lib/preview/dashboard.mjs.map +1 -1
  46. package/dist-lib/preview/mocks.cjs +1 -1
  47. package/dist-lib/preview/mocks.mjs +1 -1
  48. package/dist-lib/src/components/index.d.ts +13 -7
  49. package/dist-lib/src/components/index.d.ts.map +1 -1
  50. package/dist-lib/src/components/shadcn/aspect-ratio.d.ts +4 -0
  51. package/dist-lib/src/components/shadcn/aspect-ratio.d.ts.map +1 -0
  52. package/dist-lib/src/components/shadcn/calendar.d.ts.map +1 -1
  53. package/dist-lib/src/components/shadcn/carousel.d.ts +19 -0
  54. package/dist-lib/src/components/shadcn/carousel.d.ts.map +1 -0
  55. package/dist-lib/src/components/shadcn/collapsible.d.ts +6 -0
  56. package/dist-lib/src/components/shadcn/collapsible.d.ts.map +1 -0
  57. package/dist-lib/src/components/shadcn/context-menu.d.ts +28 -0
  58. package/dist-lib/src/components/shadcn/context-menu.d.ts.map +1 -0
  59. package/dist-lib/src/components/shadcn/drawer.d.ts +23 -0
  60. package/dist-lib/src/components/shadcn/drawer.d.ts.map +1 -0
  61. package/dist-lib/src/components/shadcn/dropdown-menu.d.ts +8 -1
  62. package/dist-lib/src/components/shadcn/dropdown-menu.d.ts.map +1 -1
  63. package/dist-lib/src/components/shadcn/hover-card.d.ts +8 -0
  64. package/dist-lib/src/components/shadcn/hover-card.d.ts.map +1 -0
  65. package/dist-lib/src/components/shadcn/input-otp.d.ts +40 -0
  66. package/dist-lib/src/components/shadcn/input-otp.d.ts.map +1 -0
  67. package/dist-lib/src/components/shadcn/menubar.d.ts +29 -0
  68. package/dist-lib/src/components/shadcn/menubar.d.ts.map +1 -0
  69. package/dist-lib/src/components/shadcn/navigation-menu.d.ts +13 -0
  70. package/dist-lib/src/components/shadcn/navigation-menu.d.ts.map +1 -0
  71. package/dist-lib/src/components/shadcn/popover.d.ts +7 -0
  72. package/dist-lib/src/components/shadcn/popover.d.ts.map +1 -1
  73. package/dist-lib/src/components/shadcn/scroll-area.d.ts +11 -0
  74. package/dist-lib/src/components/shadcn/scroll-area.d.ts.map +1 -0
  75. package/dist-lib/src/components/shadcn/skeleton.d.ts +9 -0
  76. package/dist-lib/src/components/shadcn/skeleton.d.ts.map +1 -0
  77. package/dist-lib/src/components/shadcn/sonner.d.ts +15 -0
  78. package/dist-lib/src/components/shadcn/sonner.d.ts.map +1 -0
  79. package/dist-lib/src/components/shadcn/toggle-group.d.ts +13 -0
  80. package/dist-lib/src/components/shadcn/toggle-group.d.ts.map +1 -0
  81. package/dist-lib/src/components/shadcn/toggle.d.ts +13 -0
  82. package/dist-lib/src/components/shadcn/toggle.d.ts.map +1 -0
  83. package/dist-lib/src/components/shadcn/tooltip.d.ts +14 -0
  84. package/dist-lib/src/components/shadcn/tooltip.d.ts.map +1 -0
  85. package/dist-lib/src/components/ui/AppShell/app-shell.d.ts.map +1 -1
  86. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts +1 -1
  87. package/dist-lib/src/components/ui/AppShell/app-shell.types.d.ts.map +1 -1
  88. package/dist-lib/src/components/ui/AppShell/user-menu.d.ts.map +1 -1
  89. package/dist-lib/src/components/ui/ButtonGroup/button-group.d.ts +10 -0
  90. package/dist-lib/src/components/ui/ButtonGroup/button-group.d.ts.map +1 -0
  91. package/dist-lib/src/components/ui/ButtonGroup/button-group.styles.d.ts +77 -0
  92. package/dist-lib/src/components/ui/ButtonGroup/button-group.styles.d.ts.map +1 -0
  93. package/dist-lib/src/components/ui/ButtonGroup/button-group.types.d.ts +43 -0
  94. package/dist-lib/src/components/ui/ButtonGroup/button-group.types.d.ts.map +1 -0
  95. package/dist-lib/src/components/ui/ButtonGroup/index.d.ts +3 -0
  96. package/dist-lib/src/components/ui/ButtonGroup/index.d.ts.map +1 -0
  97. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.d.ts +42 -0
  98. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.d.ts.map +1 -0
  99. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.styles.d.ts +72 -0
  100. package/dist-lib/src/components/ui/CardCheckbox/card-checkbox.styles.d.ts.map +1 -0
  101. package/dist-lib/src/components/ui/CardCheckbox/index.d.ts +5 -0
  102. package/dist-lib/src/components/ui/CardCheckbox/index.d.ts.map +1 -0
  103. package/dist-lib/src/components/ui/Chart/chart.d.ts +80 -0
  104. package/dist-lib/src/components/ui/Chart/chart.d.ts.map +1 -0
  105. package/dist-lib/src/components/ui/Chart/index.d.ts +3 -0
  106. package/dist-lib/src/components/ui/Chart/index.d.ts.map +1 -0
  107. package/dist-lib/src/components/ui/Combobox/combobox.d.ts +15 -0
  108. package/dist-lib/src/components/ui/Combobox/combobox.d.ts.map +1 -0
  109. package/dist-lib/src/components/ui/Combobox/combobox.styles.d.ts +62 -0
  110. package/dist-lib/src/components/ui/Combobox/combobox.styles.d.ts.map +1 -0
  111. package/dist-lib/src/components/ui/Combobox/combobox.types.d.ts +36 -0
  112. package/dist-lib/src/components/ui/Combobox/combobox.types.d.ts.map +1 -0
  113. package/dist-lib/src/components/ui/Combobox/index.d.ts +3 -0
  114. package/dist-lib/src/components/ui/Combobox/index.d.ts.map +1 -0
  115. package/dist-lib/src/components/ui/DataList/data-list.d.ts +9 -0
  116. package/dist-lib/src/components/ui/DataList/data-list.d.ts.map +1 -0
  117. package/dist-lib/src/components/ui/DataList/data-list.types.d.ts +106 -0
  118. package/dist-lib/src/components/ui/DataList/data-list.types.d.ts.map +1 -0
  119. package/dist-lib/src/components/ui/DataList/hooks/use-data-list.d.ts +36 -0
  120. package/dist-lib/src/components/ui/DataList/hooks/use-data-list.d.ts.map +1 -0
  121. package/dist-lib/src/components/ui/DataList/index.d.ts +3 -0
  122. package/dist-lib/src/components/ui/DataList/index.d.ts.map +1 -0
  123. package/dist-lib/src/components/ui/DataList/parts/data-list-infinite.d.ts +16 -0
  124. package/dist-lib/src/components/ui/DataList/parts/data-list-infinite.d.ts.map +1 -0
  125. package/dist-lib/src/components/ui/DataList/parts/data-list-toolbar.d.ts +32 -0
  126. package/dist-lib/src/components/ui/DataList/parts/data-list-toolbar.d.ts.map +1 -0
  127. package/dist-lib/src/components/ui/DataList/parts/data-list-virtualized.d.ts +23 -0
  128. package/dist-lib/src/components/ui/DataList/parts/data-list-virtualized.d.ts.map +1 -0
  129. package/dist-lib/src/components/ui/DataList/utils/apply-filter-model.d.ts +12 -0
  130. package/dist-lib/src/components/ui/DataList/utils/apply-filter-model.d.ts.map +1 -0
  131. package/dist-lib/src/components/ui/DataTable/builders/column-builders.d.ts.map +1 -1
  132. package/dist-lib/src/components/ui/DataTable/column-types/_filter-field.d.ts +19 -0
  133. package/dist-lib/src/components/ui/DataTable/column-types/_filter-field.d.ts.map +1 -1
  134. package/dist-lib/src/components/ui/DataTable/column-types/_shared.d.ts +24 -0
  135. package/dist-lib/src/components/ui/DataTable/column-types/_shared.d.ts.map +1 -0
  136. package/dist-lib/src/components/ui/DataTable/column-types/column-type-registry.d.ts.map +1 -1
  137. package/dist-lib/src/components/ui/DataTable/column-types/definitions/badge-column-type.d.ts.map +1 -1
  138. package/dist-lib/src/components/ui/DataTable/column-types/definitions/boolean-column-type.d.ts.map +1 -1
  139. package/dist-lib/src/components/ui/DataTable/column-types/definitions/currency-column-type.d.ts.map +1 -1
  140. package/dist-lib/src/components/ui/DataTable/column-types/definitions/date-column-type.d.ts.map +1 -1
  141. package/dist-lib/src/components/ui/DataTable/column-types/definitions/datetime-column-type.d.ts.map +1 -1
  142. package/dist-lib/src/components/ui/DataTable/column-types/definitions/multi-select-column-type.d.ts.map +1 -1
  143. package/dist-lib/src/components/ui/DataTable/column-types/definitions/number-column-type.d.ts.map +1 -1
  144. package/dist-lib/src/components/ui/DataTable/column-types/definitions/percentage-column-type.d.ts.map +1 -1
  145. package/dist-lib/src/components/ui/DataTable/column-types/definitions/select-column-type.d.ts.map +1 -1
  146. package/dist-lib/src/components/ui/DataTable/column-types/definitions/tags-column-type.d.ts.map +1 -1
  147. package/dist-lib/src/components/ui/DataTable/column-types/definitions/text-column-type.d.ts.map +1 -1
  148. package/dist-lib/src/components/ui/DataTable/column-types/definitions/user-column-type.d.ts.map +1 -1
  149. package/dist-lib/src/components/ui/DataTable/data-table.constants.d.ts +21 -0
  150. package/dist-lib/src/components/ui/DataTable/data-table.constants.d.ts.map +1 -0
  151. package/dist-lib/src/components/ui/DataTable/data-table.d.ts.map +1 -1
  152. package/dist-lib/src/components/ui/DataTable/data-table.styles.d.ts +30 -36
  153. package/dist-lib/src/components/ui/DataTable/data-table.styles.d.ts.map +1 -1
  154. package/dist-lib/src/components/ui/DataTable/data-table.types.d.ts +163 -15
  155. package/dist-lib/src/components/ui/DataTable/data-table.types.d.ts.map +1 -1
  156. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-columns.d.ts.map +1 -1
  157. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-controller.d.ts +7 -1
  158. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-controller.d.ts.map +1 -1
  159. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-export.d.ts.map +1 -1
  160. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-query.d.ts +10 -1
  161. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-query.d.ts.map +1 -1
  162. package/dist-lib/src/components/ui/DataTable/hooks/use-filter-popover-adapter.d.ts.map +1 -1
  163. package/dist-lib/src/components/ui/DataTable/hooks/use-grab-to-scroll.d.ts +24 -0
  164. package/dist-lib/src/components/ui/DataTable/hooks/use-grab-to-scroll.d.ts.map +1 -0
  165. package/dist-lib/src/components/ui/DataTable/parts/data-table-cell-addons.d.ts +41 -0
  166. package/dist-lib/src/components/ui/DataTable/parts/data-table-cell-addons.d.ts.map +1 -0
  167. package/dist-lib/src/components/ui/DataTable/parts/data-table-cell-addons.styles.d.ts +81 -0
  168. package/dist-lib/src/components/ui/DataTable/parts/data-table-cell-addons.styles.d.ts.map +1 -0
  169. package/dist-lib/src/components/ui/DataTable/parts/data-table-group-header-row.d.ts.map +1 -1
  170. package/dist-lib/src/components/ui/DataTable/parts/data-table-row.d.ts +76 -0
  171. package/dist-lib/src/components/ui/DataTable/parts/data-table-row.d.ts.map +1 -0
  172. package/dist-lib/src/components/ui/DataTable/parts/data-table-totalizer-row.d.ts.map +1 -1
  173. package/dist-lib/src/components/ui/DataTable/parts/data-table-tree-toggle.d.ts +35 -0
  174. package/dist-lib/src/components/ui/DataTable/parts/data-table-tree-toggle.d.ts.map +1 -0
  175. package/dist-lib/src/components/ui/DataTable/utils/aggregate.d.ts +23 -0
  176. package/dist-lib/src/components/ui/DataTable/utils/aggregate.d.ts.map +1 -0
  177. package/dist-lib/src/components/ui/DataTable/utils/calculate-column-widths.d.ts.map +1 -1
  178. package/dist-lib/src/components/ui/DataTable/utils/filter-ops.d.ts +41 -0
  179. package/dist-lib/src/components/ui/DataTable/utils/filter-ops.d.ts.map +1 -0
  180. package/dist-lib/src/components/ui/DataTable/utils/tree-rows.d.ts +75 -0
  181. package/dist-lib/src/components/ui/DataTable/utils/tree-rows.d.ts.map +1 -0
  182. package/dist-lib/src/components/ui/DatePicker/datepicker.d.ts +22 -0
  183. package/dist-lib/src/components/ui/DatePicker/datepicker.d.ts.map +1 -0
  184. package/dist-lib/src/components/ui/DatePicker/index.d.ts +3 -0
  185. package/dist-lib/src/components/ui/DatePicker/index.d.ts.map +1 -0
  186. package/dist-lib/src/components/ui/FloatingPanel/floating-panel-parts.d.ts +18 -0
  187. package/dist-lib/src/components/ui/FloatingPanel/floating-panel-parts.d.ts.map +1 -0
  188. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.d.ts +7 -5
  189. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.d.ts.map +1 -1
  190. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.styles.d.ts +21 -0
  191. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.styles.d.ts.map +1 -1
  192. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.types.d.ts +8 -1
  193. package/dist-lib/src/components/ui/FloatingPanel/floating-panel.types.d.ts.map +1 -1
  194. package/dist-lib/src/components/ui/FloatingPanel/index.d.ts +2 -0
  195. package/dist-lib/src/components/ui/FloatingPanel/index.d.ts.map +1 -1
  196. package/dist-lib/src/components/ui/FormField/form-field-input.d.ts.map +1 -1
  197. package/dist-lib/src/components/ui/FormField/form-field-textarea.d.ts.map +1 -1
  198. package/dist-lib/src/components/ui/Header/header-messages.d.ts.map +1 -1
  199. package/dist-lib/src/components/ui/Header/header-notifications.d.ts.map +1 -1
  200. package/dist-lib/src/components/ui/Header/header.types.d.ts +1 -1
  201. package/dist-lib/src/components/ui/Header/header.types.d.ts.map +1 -1
  202. package/dist-lib/src/components/ui/Icon/icon.d.ts +11 -0
  203. package/dist-lib/src/components/ui/Icon/icon.d.ts.map +1 -0
  204. package/dist-lib/src/components/ui/Icon/icon.styles.d.ts +60 -0
  205. package/dist-lib/src/components/ui/Icon/icon.styles.d.ts.map +1 -0
  206. package/dist-lib/src/components/ui/Icon/icon.types.d.ts +21 -0
  207. package/dist-lib/src/components/ui/Icon/icon.types.d.ts.map +1 -0
  208. package/dist-lib/src/components/ui/Icon/icons.d.ts +2407 -0
  209. package/dist-lib/src/components/ui/Icon/icons.d.ts.map +1 -0
  210. package/dist-lib/src/components/ui/Icon/index.d.ts +5 -0
  211. package/dist-lib/src/components/ui/Icon/index.d.ts.map +1 -0
  212. package/dist-lib/src/components/ui/Kpi/index.d.ts +5 -0
  213. package/dist-lib/src/components/ui/Kpi/index.d.ts.map +1 -0
  214. package/dist-lib/src/components/ui/Kpi/kpi-delta.d.ts +11 -0
  215. package/dist-lib/src/components/ui/Kpi/kpi-delta.d.ts.map +1 -0
  216. package/dist-lib/src/components/ui/Kpi/kpi-group.d.ts +12 -0
  217. package/dist-lib/src/components/ui/Kpi/kpi-group.d.ts.map +1 -0
  218. package/dist-lib/src/components/ui/Kpi/kpi.d.ts +11 -0
  219. package/dist-lib/src/components/ui/Kpi/kpi.d.ts.map +1 -0
  220. package/dist-lib/src/components/ui/Kpi/kpi.styles.d.ts +159 -0
  221. package/dist-lib/src/components/ui/Kpi/kpi.styles.d.ts.map +1 -0
  222. package/dist-lib/src/components/ui/Kpi/kpi.types.d.ts +46 -0
  223. package/dist-lib/src/components/ui/Kpi/kpi.types.d.ts.map +1 -0
  224. package/dist-lib/src/components/ui/List/hooks/use-disclosure-set.d.ts +17 -0
  225. package/dist-lib/src/components/ui/List/hooks/use-disclosure-set.d.ts.map +1 -0
  226. package/dist-lib/src/components/ui/List/hooks/use-selection-set.d.ts +18 -0
  227. package/dist-lib/src/components/ui/List/hooks/use-selection-set.d.ts.map +1 -0
  228. package/dist-lib/src/components/ui/List/index.d.ts +4 -0
  229. package/dist-lib/src/components/ui/List/index.d.ts.map +1 -0
  230. package/dist-lib/src/components/ui/List/layouts/_sortable-item.d.ts +24 -0
  231. package/dist-lib/src/components/ui/List/layouts/_sortable-item.d.ts.map +1 -0
  232. package/dist-lib/src/components/ui/List/layouts/grouped-layout.d.ts +24 -0
  233. package/dist-lib/src/components/ui/List/layouts/grouped-layout.d.ts.map +1 -0
  234. package/dist-lib/src/components/ui/List/layouts/hierarchical-layout.d.ts +28 -0
  235. package/dist-lib/src/components/ui/List/layouts/hierarchical-layout.d.ts.map +1 -0
  236. package/dist-lib/src/components/ui/List/layouts/standard-layout.d.ts +19 -0
  237. package/dist-lib/src/components/ui/List/layouts/standard-layout.d.ts.map +1 -0
  238. package/dist-lib/src/components/ui/List/list-item.d.ts +29 -0
  239. package/dist-lib/src/components/ui/List/list-item.d.ts.map +1 -0
  240. package/dist-lib/src/components/ui/List/list.d.ts +15 -0
  241. package/dist-lib/src/components/ui/List/list.d.ts.map +1 -0
  242. package/dist-lib/src/components/ui/List/list.styles.d.ts +207 -0
  243. package/dist-lib/src/components/ui/List/list.styles.d.ts.map +1 -0
  244. package/dist-lib/src/components/ui/List/list.types.d.ts +126 -0
  245. package/dist-lib/src/components/ui/List/list.types.d.ts.map +1 -0
  246. package/dist-lib/src/components/ui/List/utils/flatten-tree.d.ts +23 -0
  247. package/dist-lib/src/components/ui/List/utils/flatten-tree.d.ts.map +1 -0
  248. package/dist-lib/src/components/ui/List/utils/group-items.d.ts +13 -0
  249. package/dist-lib/src/components/ui/List/utils/group-items.d.ts.map +1 -0
  250. package/dist-lib/src/components/ui/MenuSidebar/menu-sidebar.d.ts.map +1 -1
  251. package/dist-lib/src/components/ui/MenuSidebar/sidebar-panel.d.ts +3 -1
  252. package/dist-lib/src/components/ui/MenuSidebar/sidebar-panel.d.ts.map +1 -1
  253. package/dist-lib/src/components/ui/MenuSidebar/sidebar.styles.d.ts +12 -0
  254. package/dist-lib/src/components/ui/MenuSidebar/sidebar.styles.d.ts.map +1 -1
  255. package/dist-lib/src/components/ui/MenuSidebar/sidebar.types.d.ts +1 -1
  256. package/dist-lib/src/components/ui/MenuSidebar/sidebar.types.d.ts.map +1 -1
  257. package/dist-lib/src/components/ui/PageHeader/page-header.styles.d.ts.map +1 -1
  258. package/dist-lib/src/components/ui/Panel/index.d.ts +2 -1
  259. package/dist-lib/src/components/ui/Panel/index.d.ts.map +1 -1
  260. package/dist-lib/src/components/ui/Panel/panel-header.d.ts +1 -1
  261. package/dist-lib/src/components/ui/Panel/panel-header.d.ts.map +1 -1
  262. package/dist-lib/src/components/ui/Panel/panel.d.ts +2 -1
  263. package/dist-lib/src/components/ui/Panel/panel.d.ts.map +1 -1
  264. package/dist-lib/src/components/ui/Panel/panel.styles.d.ts +12 -12
  265. package/dist-lib/src/components/ui/Panel/panel.styles.d.ts.map +1 -1
  266. package/dist-lib/src/components/ui/Panel/panel.types.d.ts +1 -1
  267. package/dist-lib/src/components/ui/Panel/panel.types.d.ts.map +1 -1
  268. package/dist-lib/src/components/ui/SingleMenuSidebar/category.d.ts +6 -0
  269. package/dist-lib/src/components/ui/SingleMenuSidebar/category.d.ts.map +1 -0
  270. package/dist-lib/src/components/ui/SingleMenuSidebar/command.d.ts +23 -0
  271. package/dist-lib/src/components/ui/SingleMenuSidebar/command.d.ts.map +1 -0
  272. package/dist-lib/src/components/ui/SingleMenuSidebar/footer.d.ts +6 -0
  273. package/dist-lib/src/components/ui/SingleMenuSidebar/footer.d.ts.map +1 -0
  274. package/dist-lib/src/components/ui/SingleMenuSidebar/header.d.ts +6 -0
  275. package/dist-lib/src/components/ui/SingleMenuSidebar/header.d.ts.map +1 -0
  276. package/dist-lib/src/components/ui/SingleMenuSidebar/index.d.ts +3 -0
  277. package/dist-lib/src/components/ui/SingleMenuSidebar/index.d.ts.map +1 -0
  278. package/dist-lib/src/components/ui/SingleMenuSidebar/menu-item.d.ts +6 -0
  279. package/dist-lib/src/components/ui/SingleMenuSidebar/menu-item.d.ts.map +1 -0
  280. package/dist-lib/src/components/ui/SingleMenuSidebar/module-selector.d.ts +6 -0
  281. package/dist-lib/src/components/ui/SingleMenuSidebar/module-selector.d.ts.map +1 -0
  282. package/dist-lib/src/components/ui/SingleMenuSidebar/search.d.ts +15 -0
  283. package/dist-lib/src/components/ui/SingleMenuSidebar/search.d.ts.map +1 -0
  284. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.d.ts +6 -0
  285. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.d.ts.map +1 -0
  286. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.styles.d.ts +204 -0
  287. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.styles.d.ts.map +1 -0
  288. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.types.d.ts +181 -0
  289. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.types.d.ts.map +1 -0
  290. package/dist-lib/src/components/ui/SingleMenuSidebar/use-single-menu-sidebar.d.ts +22 -0
  291. package/dist-lib/src/components/ui/SingleMenuSidebar/use-single-menu-sidebar.d.ts.map +1 -0
  292. package/dist-lib/src/components/ui/TabelaTeste/mock-data.d.ts +1 -1
  293. package/dist-lib/src/components/ui/TabelaTeste/mock-data.d.ts.map +1 -1
  294. package/dist-lib/src/components/ui/Table/table-card-row.d.ts.map +1 -1
  295. package/dist-lib/src/components/ui/Table/table.d.ts.map +1 -1
  296. package/dist-lib/src/components/ui/Table/table.styles.d.ts.map +1 -1
  297. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-filter-control.d.ts +40 -0
  298. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-filter-control.d.ts.map +1 -0
  299. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-filters.d.ts +20 -13
  300. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-filters.d.ts.map +1 -1
  301. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-sort.d.ts +17 -11
  302. package/dist-lib/src/components/ui/TableToolbar/hooks/use-toolbar-sort.d.ts.map +1 -1
  303. package/dist-lib/src/components/ui/TableToolbar/index.d.ts +20 -8
  304. package/dist-lib/src/components/ui/TableToolbar/index.d.ts.map +1 -1
  305. package/dist-lib/src/components/ui/TableToolbar/parts/table-toolbar-views.d.ts +9 -1
  306. package/dist-lib/src/components/ui/TableToolbar/parts/table-toolbar-views.d.ts.map +1 -1
  307. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-actions.d.ts +60 -0
  308. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-actions.d.ts.map +1 -0
  309. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-applied.d.ts.map +1 -1
  310. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-filter-button.d.ts +18 -0
  311. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-filter-button.d.ts.map +1 -0
  312. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-filter-control.d.ts +63 -0
  313. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-filter-control.d.ts.map +1 -0
  314. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-mobile-sheet.d.ts.map +1 -1
  315. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-settings-menu.d.ts +54 -0
  316. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-settings-menu.d.ts.map +1 -0
  317. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-simple-filter-drawer.d.ts +47 -0
  318. package/dist-lib/src/components/ui/TableToolbar/parts/toolbar-simple-filter-drawer.d.ts.map +1 -0
  319. package/dist-lib/src/components/ui/TableToolbar/popovers/add-view-modal.d.ts.map +1 -1
  320. package/dist-lib/src/components/ui/TableToolbar/popovers/cols-popover.d.ts +10 -13
  321. package/dist-lib/src/components/ui/TableToolbar/popovers/cols-popover.d.ts.map +1 -1
  322. package/dist-lib/src/components/ui/TableToolbar/popovers/filter-popover.d.ts +26 -26
  323. package/dist-lib/src/components/ui/TableToolbar/popovers/filter-popover.d.ts.map +1 -1
  324. package/dist-lib/src/components/ui/TableToolbar/popovers/filter-sql-parser.d.ts +18 -22
  325. package/dist-lib/src/components/ui/TableToolbar/popovers/filter-sql-parser.d.ts.map +1 -1
  326. package/dist-lib/src/components/ui/TableToolbar/popovers/more-menu.d.ts.map +1 -1
  327. package/dist-lib/src/components/ui/TableToolbar/popovers/sort-popover.d.ts +10 -16
  328. package/dist-lib/src/components/ui/TableToolbar/popovers/sort-popover.d.ts.map +1 -1
  329. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.d.ts +33 -22
  330. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.d.ts.map +1 -1
  331. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.styles.d.ts +2 -2
  332. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.styles.d.ts.map +1 -1
  333. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.types.d.ts +16 -3
  334. package/dist-lib/src/components/ui/TableToolbar/table-toolbar.types.d.ts.map +1 -1
  335. package/dist-lib/src/components/ui/Toast/index.d.ts +4 -0
  336. package/dist-lib/src/components/ui/Toast/index.d.ts.map +1 -0
  337. package/dist-lib/src/components/ui/Toast/toast-card.d.ts +35 -0
  338. package/dist-lib/src/components/ui/Toast/toast-card.d.ts.map +1 -0
  339. package/dist-lib/src/components/ui/Toast/toast.styles.d.ts +102 -0
  340. package/dist-lib/src/components/ui/Toast/toast.styles.d.ts.map +1 -0
  341. package/dist-lib/src/components/ui/avatar-ig/avatar.d.ts +23 -0
  342. package/dist-lib/src/components/ui/avatar-ig/avatar.d.ts.map +1 -0
  343. package/dist-lib/src/components/ui/avatar-ig/avatar.styles.d.ts.map +1 -0
  344. package/dist-lib/src/components/ui/avatar-ig/avatar.types.d.ts.map +1 -0
  345. package/dist-lib/src/components/ui/avatar-ig/index.d.ts.map +1 -0
  346. package/dist-lib/src/lib/lucide-types.d.ts +9 -0
  347. package/dist-lib/src/lib/lucide-types.d.ts.map +1 -0
  348. package/dist-lib/src/preview/pages/ChatV2/chat-v2.types.d.ts +1 -1
  349. package/dist-lib/src/preview/pages/ChatV2/chat-v2.types.d.ts.map +1 -1
  350. package/dist-lib/src/preview/pages/ClientesShowcase/ClientesShowcase.d.ts.map +1 -1
  351. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase.styles.d.ts +1 -6
  352. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase.styles.d.ts.map +1 -1
  353. package/dist-lib/src/preview/pages/ClientesShowcase/components/DetailDrawer/detail-drawer.d.ts.map +1 -1
  354. package/dist-lib/src/preview/pages/ClientesShowcase/components/DetailDrawer/detail-drawer.styles.d.ts +3 -3
  355. package/dist-lib/src/utils/color-contrast.d.ts +48 -0
  356. package/dist-lib/src/utils/color-contrast.d.ts.map +1 -0
  357. package/dist-lib/theme.css +61 -24
  358. package/dist-lib/tokens/brands/default/components/spacing.d.ts +22 -0
  359. package/dist-lib/tokens/brands/default/components/spacing.d.ts.map +1 -1
  360. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts +20 -0
  361. package/dist-lib/tokens/brands/default/semantic/color-dark.d.ts.map +1 -1
  362. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts +20 -0
  363. package/dist-lib/tokens/brands/default/semantic/color-light.d.ts.map +1 -1
  364. package/dist-lib/tokens/brands/default/semantic/elevation.d.ts +4 -4
  365. package/dist-lib/tokens/brands/default/semantic/elevation.d.ts.map +1 -1
  366. package/dist-lib/tokens.cjs +49 -4
  367. package/dist-lib/tokens.cjs.map +1 -1
  368. package/dist-lib/tokens.mjs +49 -4
  369. package/dist-lib/tokens.mjs.map +1 -1
  370. package/package.json +30 -9
  371. package/dist-lib/chunks/app-shell-BdVam01i.cjs.map +0 -1
  372. package/dist-lib/chunks/app-shell-C_enrPD8.mjs.map +0 -1
  373. package/dist-lib/chunks/badge-B0D_PRxn.mjs.map +0 -1
  374. package/dist-lib/chunks/badge-CUttkO1X.cjs.map +0 -1
  375. package/dist-lib/chunks/clientes-showcase-mocks-CPNOhx1G.cjs.map +0 -1
  376. package/dist-lib/chunks/clientes-showcase-mocks-DEHCKxMK.mjs.map +0 -1
  377. package/dist-lib/chunks/page-header-DM2G1mdi.mjs.map +0 -1
  378. package/dist-lib/chunks/page-header-qOywgRWy.cjs.map +0 -1
  379. package/dist-lib/chunks/panel-CCYNbXJR.mjs.map +0 -1
  380. package/dist-lib/chunks/panel-CSuFQHMl.cjs.map +0 -1
  381. package/dist-lib/src/components/ui/Avatar/avatar.d.ts +0 -16
  382. package/dist-lib/src/components/ui/Avatar/avatar.d.ts.map +0 -1
  383. package/dist-lib/src/components/ui/Avatar/avatar.styles.d.ts.map +0 -1
  384. package/dist-lib/src/components/ui/Avatar/avatar.types.d.ts.map +0 -1
  385. package/dist-lib/src/components/ui/Avatar/index.d.ts.map +0 -1
  386. package/dist-lib/src/components/ui/DataTable/utils/operator-mapping.d.ts +0 -6
  387. package/dist-lib/src/components/ui/DataTable/utils/operator-mapping.d.ts.map +0 -1
  388. /package/dist-lib/src/components/ui/{Avatar → avatar-ig}/avatar.styles.d.ts +0 -0
  389. /package/dist-lib/src/components/ui/{Avatar → avatar-ig}/avatar.types.d.ts +0 -0
  390. /package/dist-lib/src/components/ui/{Avatar → avatar-ig}/index.d.ts +0 -0
@@ -1,10 +1,11 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { Fragment as Fragment$1, useState, useEffect, useRef, forwardRef, useCallback } from "react";
3
+ import { Fragment as Fragment$1, useState, useEffect, forwardRef, useCallback, useRef } from "react";
4
4
  import { t as tv, c as cn, B as Button, a as ChipGroup, b as ChipGroupItem } from "./chip-group-_e-yh1Zq.mjs";
5
5
  import { ChevronRight, X, Search, Bell, CheckCheck, MoreHorizontal, MessageSquare, PenLine, Maximize2, Check, Sun, Moon, PanelLeftOpen, PanelLeftClose, Menu, Plus, ChevronDown, LayoutGrid, SunMoon, Settings, LogOut } from "lucide-react";
6
6
  import { Command as Command$1 } from "cmdk";
7
7
  import * as SheetPrimitive from "@radix-ui/react-dialog";
8
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
8
9
  import { cva } from "class-variance-authority";
9
10
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
10
11
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
@@ -96,10 +97,10 @@ const searchFakeInputKbd = tv({
96
97
  "text-caption-xs font-semibold text-fg-muted tabular-nums shrink-0"
97
98
  ]
98
99
  });
99
- const hdWrap = tv({
100
+ tv({
100
101
  base: "relative inline-flex"
101
102
  });
102
- const hdDropdown = tv({
103
+ tv({
103
104
  base: [
104
105
  "absolute top-[calc(100%+8px)] right-0 z-50",
105
106
  "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] flex flex-col",
@@ -626,6 +627,71 @@ function CommandGroupBlock({
626
627
  !isLast && /* @__PURE__ */ jsx(CommandSeparator, {})
627
628
  ] });
628
629
  }
630
+ const Popover = PopoverPrimitive.Root;
631
+ const PopoverTrigger = PopoverPrimitive.Trigger;
632
+ const PopoverAnchor = PopoverPrimitive.Anchor;
633
+ const POPOVER_MOBILE_SHEET = [
634
+ "max-md:w-full max-md:min-w-0 max-md:max-w-none",
635
+ "max-md:!max-h-[92vh]",
636
+ "max-md:rounded-b-none max-md:rounded-t-[12px]",
637
+ "max-md:border-x-0 max-md:border-b-0",
638
+ "max-md:outline-none max-md:shadow-none",
639
+ // Respiro de 20px (pad-3xl) no rodapé pra o conteúdo (footer/última seção)
640
+ // não colar na borda inferior do device quando vira sheet.
641
+ "max-md:pb-pad-3xl",
642
+ "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
643
+ "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
644
+ ].join(" ");
645
+ const PopoverSheetBackdrop = () => /* @__PURE__ */ jsx(
646
+ "div",
647
+ {
648
+ "aria-hidden": "true",
649
+ className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-auto md:hidden animate-in fade-in-0 duration-150"
650
+ }
651
+ );
652
+ const PopoverContent = React.forwardRef(
653
+ ({ className, align = "center", sideOffset = 6, disablePortal, mobileSheet = true, ...props }, ref) => {
654
+ const content = /* @__PURE__ */ jsx(
655
+ PopoverPrimitive.Content,
656
+ {
657
+ ref,
658
+ align,
659
+ sideOffset,
660
+ "data-mobile-sheet": mobileSheet ? "" : void 0,
661
+ className: cn(
662
+ "relative z-50",
663
+ // Unificado com DropdownMenu/Select: bg-bg-dropdown (frosted no dark)
664
+ // + border-border-default + outline-float. O `before` pseudo-element
665
+ // aplica o blur backdrop (necessário pra bg-bg-dropdown semi-transparente
666
+ // render correto no dark mode).
667
+ "bg-bg-dropdown",
668
+ "border border-border-default rounded-[12px] shadow-sh-lg outline-float",
669
+ "before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150",
670
+ "text-fg-default",
671
+ "data-[state=open]:animate-in data-[state=closed]:animate-out",
672
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
673
+ "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
674
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2",
675
+ "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
676
+ mobileSheet && POPOVER_MOBILE_SHEET,
677
+ className
678
+ ),
679
+ ...props
680
+ }
681
+ );
682
+ if (disablePortal) {
683
+ return mobileSheet ? /* @__PURE__ */ jsxs(Fragment, { children: [
684
+ /* @__PURE__ */ jsx(PopoverSheetBackdrop, {}),
685
+ content
686
+ ] }) : content;
687
+ }
688
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
689
+ mobileSheet && /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverSheetBackdrop, {}) }),
690
+ /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: content })
691
+ ] });
692
+ }
693
+ );
694
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
629
695
  const DEFAULT_FILTERS$1 = [
630
696
  { id: "all", label: "Todas", predicate: () => true },
631
697
  { id: "unread", label: "Não lidas", predicate: (n) => !!n.unread },
@@ -643,28 +709,12 @@ function HeaderNotifications({ config, className }) {
643
709
  } = config;
644
710
  const [open, setOpen] = useState(false);
645
711
  const [activeFilter, setActiveFilter] = useState(filters[0]?.id ?? "all");
646
- const wrapRef = useRef(null);
647
712
  const unreadCount = items.filter((n) => n.unread).length;
648
- useEffect(() => {
649
- if (!open) return;
650
- const onClick = (e) => {
651
- if (!wrapRef.current?.contains(e.target)) setOpen(false);
652
- };
653
- const onEsc = (e) => {
654
- if (e.key === "Escape") setOpen(false);
655
- };
656
- document.addEventListener("mousedown", onClick);
657
- document.addEventListener("keydown", onEsc);
658
- return () => {
659
- document.removeEventListener("mousedown", onClick);
660
- document.removeEventListener("keydown", onEsc);
661
- };
662
- }, [open]);
663
713
  const filtered = items.filter(
664
714
  filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)
665
715
  );
666
- return /* @__PURE__ */ jsxs("div", { ref: wrapRef, className: cn(hdWrap(), className), children: [
667
- /* @__PURE__ */ jsxs(
716
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
717
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
668
718
  Button,
669
719
  {
670
720
  color: "secondary",
@@ -673,84 +723,93 @@ function HeaderNotifications({ config, className }) {
673
723
  className: "rounded-radius-md relative",
674
724
  "aria-label": "Notificações",
675
725
  title: "Notificações",
676
- "aria-expanded": open,
677
- onClick: () => setOpen((o) => !o),
678
726
  children: [
679
727
  /* @__PURE__ */ jsx(Bell, {}),
680
728
  unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: headerIconBtnBadge({ kind: "danger" }), "aria-hidden": "true" })
681
729
  ]
682
730
  }
683
- ),
684
- open && /* @__PURE__ */ jsxs("div", { className: hdDropdown(), role: "dialog", "aria-label": "Notificações", children: [
685
- /* @__PURE__ */ jsxs("div", { className: hdTop(), children: [
686
- /* @__PURE__ */ jsxs("div", { className: hdHeader(), children: [
687
- /* @__PURE__ */ jsxs("div", { className: hdTitle(), children: [
688
- /* @__PURE__ */ jsx("span", { children: "Notificações" }),
689
- unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: hdTitleCount(), children: unreadCount })
690
- ] }),
691
- /* @__PURE__ */ jsxs("div", { className: hdHeaderActions(), children: [
692
- onMarkAllRead && /* @__PURE__ */ jsx(
693
- Button,
694
- {
695
- color: "secondary",
696
- variant: "ghost",
697
- size: "icon-2xs",
698
- className: "rounded-radius-sm",
699
- title: "Marcar todas como lidas",
700
- onClick: onMarkAllRead,
701
- children: /* @__PURE__ */ jsx(CheckCheck, {})
702
- }
703
- ),
704
- onMoreActions && /* @__PURE__ */ jsx(
705
- Button,
731
+ ) }),
732
+ /* @__PURE__ */ jsxs(
733
+ PopoverContent,
734
+ {
735
+ align: "end",
736
+ className: cn(
737
+ "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
738
+ className
739
+ ),
740
+ "aria-label": "Notificações",
741
+ children: [
742
+ /* @__PURE__ */ jsxs("div", { className: hdTop(), children: [
743
+ /* @__PURE__ */ jsxs("div", { className: hdHeader(), children: [
744
+ /* @__PURE__ */ jsxs("div", { className: hdTitle(), children: [
745
+ /* @__PURE__ */ jsx("span", { children: "Notificações" }),
746
+ unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: hdTitleCount(), children: unreadCount })
747
+ ] }),
748
+ /* @__PURE__ */ jsxs("div", { className: hdHeaderActions(), children: [
749
+ onMarkAllRead && /* @__PURE__ */ jsx(
750
+ Button,
751
+ {
752
+ color: "secondary",
753
+ variant: "ghost",
754
+ size: "icon-2xs",
755
+ className: "rounded-radius-sm",
756
+ title: "Marcar todas como lidas",
757
+ onClick: onMarkAllRead,
758
+ children: /* @__PURE__ */ jsx(CheckCheck, {})
759
+ }
760
+ ),
761
+ onMoreActions && /* @__PURE__ */ jsx(
762
+ Button,
763
+ {
764
+ color: "secondary",
765
+ variant: "ghost",
766
+ size: "icon-2xs",
767
+ className: "rounded-radius-sm",
768
+ title: "Mais ações",
769
+ onClick: onMoreActions,
770
+ children: /* @__PURE__ */ jsx(MoreHorizontal, {})
771
+ }
772
+ )
773
+ ] })
774
+ ] }),
775
+ filters.length > 0 && /* @__PURE__ */ jsx(
776
+ ChipGroup,
706
777
  {
707
- color: "secondary",
708
- variant: "ghost",
709
- size: "icon-2xs",
710
- className: "rounded-radius-sm",
711
- title: "Mais ações",
712
- onClick: onMoreActions,
713
- children: /* @__PURE__ */ jsx(MoreHorizontal, {})
778
+ type: "single",
779
+ value: activeFilter,
780
+ onValueChange: (v) => v && setActiveFilter(v),
781
+ size: "lg",
782
+ ariaLabel: "Filtrar notificações",
783
+ children: filters.map((f) => {
784
+ const count = items.filter(f.predicate ?? (() => true)).length;
785
+ return /* @__PURE__ */ jsxs(ChipGroupItem, { value: f.id, children: [
786
+ f.label,
787
+ count > 0 && ` (${count})`
788
+ ] }, f.id);
789
+ })
714
790
  }
715
791
  )
716
- ] })
717
- ] }),
718
- filters.length > 0 && /* @__PURE__ */ jsx(
719
- ChipGroup,
720
- {
721
- type: "single",
722
- value: activeFilter,
723
- onValueChange: (v) => v && setActiveFilter(v),
724
- size: "lg",
725
- ariaLabel: "Filtrar notificações",
726
- children: filters.map((f) => {
727
- const count = items.filter(f.predicate ?? (() => true)).length;
728
- return /* @__PURE__ */ jsxs(ChipGroupItem, { value: f.id, children: [
729
- f.label,
730
- count > 0 && ` (${count})`
731
- ] }, f.id);
732
- })
733
- }
734
- )
735
- ] }),
736
- /* @__PURE__ */ jsx("div", { className: hdBody(), children: filtered.length === 0 ? /* @__PURE__ */ jsxs("div", { className: hdEmpty(), children: [
737
- /* @__PURE__ */ jsx(Bell, { size: 28, strokeWidth: 1.4 }),
738
- /* @__PURE__ */ jsx("p", { className: hdEmptyText(), children: emptyMessage })
739
- ] }) : filtered.map((n) => /* @__PURE__ */ jsx(NotificationRow, { item: n }, n.id)) }),
740
- onViewAll && /* @__PURE__ */ jsx("div", { className: hdFooter(), children: /* @__PURE__ */ jsx(
741
- "a",
742
- {
743
- href: "#",
744
- className: hdFooterLink(),
745
- onClick: (e) => {
746
- e.preventDefault();
747
- onViewAll();
748
- setOpen(false);
749
- },
750
- children: viewAllLabel
751
- }
752
- ) })
753
- ] })
792
+ ] }),
793
+ /* @__PURE__ */ jsx("div", { className: hdBody(), children: filtered.length === 0 ? /* @__PURE__ */ jsxs("div", { className: hdEmpty(), children: [
794
+ /* @__PURE__ */ jsx(Bell, { size: 28, strokeWidth: 1.4 }),
795
+ /* @__PURE__ */ jsx("p", { className: hdEmptyText(), children: emptyMessage })
796
+ ] }) : filtered.map((n) => /* @__PURE__ */ jsx(NotificationRow, { item: n }, n.id)) }),
797
+ onViewAll && /* @__PURE__ */ jsx("div", { className: hdFooter(), children: /* @__PURE__ */ jsx(
798
+ "a",
799
+ {
800
+ href: "#",
801
+ className: hdFooterLink(),
802
+ onClick: (e) => {
803
+ e.preventDefault();
804
+ onViewAll();
805
+ setOpen(false);
806
+ },
807
+ children: viewAllLabel
808
+ }
809
+ ) })
810
+ ]
811
+ }
812
+ )
754
813
  ] });
755
814
  }
756
815
  function NotificationRow({ item }) {
@@ -964,28 +1023,12 @@ function HeaderMessages({ config, className }) {
964
1023
  const [open, setOpen] = useState(false);
965
1024
  const [activeFilter, setActiveFilter] = useState(filters[0]?.id ?? "all");
966
1025
  const [search, setSearch] = useState("");
967
- const wrapRef = useRef(null);
968
1026
  const unreadCount = items.filter((m) => m.unread).length;
969
- useEffect(() => {
970
- if (!open) return;
971
- const onClick = (e) => {
972
- if (!wrapRef.current?.contains(e.target)) setOpen(false);
973
- };
974
- const onEsc = (e) => {
975
- if (e.key === "Escape") setOpen(false);
976
- };
977
- document.addEventListener("mousedown", onClick);
978
- document.addEventListener("keydown", onEsc);
979
- return () => {
980
- document.removeEventListener("mousedown", onClick);
981
- document.removeEventListener("keydown", onEsc);
982
- };
983
- }, [open]);
984
1027
  const filtered = items.filter(filters.find((f) => f.id === activeFilter)?.predicate ?? (() => true)).filter(
985
1028
  (m) => search ? m.name.toLowerCase().includes(search.toLowerCase()) : true
986
1029
  );
987
- return /* @__PURE__ */ jsxs("div", { ref: wrapRef, className: cn(hdWrap(), className), children: [
988
- /* @__PURE__ */ jsxs(
1030
+ return /* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
1031
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
989
1032
  Button,
990
1033
  {
991
1034
  color: "secondary",
@@ -994,96 +1037,105 @@ function HeaderMessages({ config, className }) {
994
1037
  className: "rounded-radius-md relative",
995
1038
  "aria-label": "Mensagens",
996
1039
  title: "Mensagens",
997
- "aria-expanded": open,
998
- onClick: () => setOpen((o) => !o),
999
1040
  children: [
1000
1041
  /* @__PURE__ */ jsx(MessageSquare, {}),
1001
1042
  unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: headerIconBtnBadge({ kind: "brand" }), "aria-hidden": "true" })
1002
1043
  ]
1003
1044
  }
1004
- ),
1005
- open && /* @__PURE__ */ jsxs("div", { className: hdDropdown(), role: "dialog", "aria-label": "Mensagens", children: [
1006
- /* @__PURE__ */ jsxs("div", { className: hdTop(), children: [
1007
- /* @__PURE__ */ jsxs("div", { className: hdHeader(), children: [
1008
- /* @__PURE__ */ jsxs("div", { className: hdTitle(), children: [
1009
- /* @__PURE__ */ jsx("span", { children: "Conversas" }),
1010
- unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: hdTitleCount(), children: unreadCount })
1011
- ] }),
1012
- /* @__PURE__ */ jsxs("div", { className: hdHeaderActions(), children: [
1013
- onNewMessage && /* @__PURE__ */ jsx(
1014
- Button,
1015
- {
1016
- color: "secondary",
1017
- variant: "ghost",
1018
- size: "icon-2xs",
1019
- className: "rounded-radius-sm",
1020
- title: "Nova mensagem",
1021
- onClick: onNewMessage,
1022
- children: /* @__PURE__ */ jsx(PenLine, {})
1023
- }
1024
- ),
1025
- onExpand && /* @__PURE__ */ jsx(
1026
- Button,
1045
+ ) }),
1046
+ /* @__PURE__ */ jsxs(
1047
+ PopoverContent,
1048
+ {
1049
+ align: "end",
1050
+ className: cn(
1051
+ "w-[380px] max-w-[calc(100vw-32px)] max-h-[520px] p-0 flex flex-col overflow-hidden",
1052
+ className
1053
+ ),
1054
+ "aria-label": "Mensagens",
1055
+ children: [
1056
+ /* @__PURE__ */ jsxs("div", { className: hdTop(), children: [
1057
+ /* @__PURE__ */ jsxs("div", { className: hdHeader(), children: [
1058
+ /* @__PURE__ */ jsxs("div", { className: hdTitle(), children: [
1059
+ /* @__PURE__ */ jsx("span", { children: "Conversas" }),
1060
+ unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: hdTitleCount(), children: unreadCount })
1061
+ ] }),
1062
+ /* @__PURE__ */ jsxs("div", { className: hdHeaderActions(), children: [
1063
+ onNewMessage && /* @__PURE__ */ jsx(
1064
+ Button,
1065
+ {
1066
+ color: "secondary",
1067
+ variant: "ghost",
1068
+ size: "icon-2xs",
1069
+ className: "rounded-radius-sm",
1070
+ title: "Nova mensagem",
1071
+ onClick: onNewMessage,
1072
+ children: /* @__PURE__ */ jsx(PenLine, {})
1073
+ }
1074
+ ),
1075
+ onExpand && /* @__PURE__ */ jsx(
1076
+ Button,
1077
+ {
1078
+ color: "secondary",
1079
+ variant: "ghost",
1080
+ size: "icon-2xs",
1081
+ className: "rounded-radius-sm",
1082
+ title: "Expandir",
1083
+ onClick: onExpand,
1084
+ children: /* @__PURE__ */ jsx(Maximize2, {})
1085
+ }
1086
+ )
1087
+ ] })
1088
+ ] }),
1089
+ showSearch && /* @__PURE__ */ jsxs(InputGroup, { size: "sm", children: [
1090
+ /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsx(Search, { strokeWidth: 1.8 }) }),
1091
+ /* @__PURE__ */ jsx(
1092
+ InputGroupInput,
1093
+ {
1094
+ type: "text",
1095
+ placeholder: searchPlaceholder,
1096
+ value: search,
1097
+ onChange: (e) => setSearch(e.target.value)
1098
+ }
1099
+ )
1100
+ ] }),
1101
+ filters.length > 0 && /* @__PURE__ */ jsx(
1102
+ ChipGroup,
1027
1103
  {
1028
- color: "secondary",
1029
- variant: "ghost",
1030
- size: "icon-2xs",
1031
- className: "rounded-radius-sm",
1032
- title: "Expandir",
1033
- onClick: onExpand,
1034
- children: /* @__PURE__ */ jsx(Maximize2, {})
1104
+ type: "single",
1105
+ value: activeFilter,
1106
+ onValueChange: (v) => v && setActiveFilter(v),
1107
+ size: "lg",
1108
+ ariaLabel: "Filtrar mensagens",
1109
+ children: filters.map((f) => {
1110
+ const count = items.filter(f.predicate ?? (() => true)).length;
1111
+ return /* @__PURE__ */ jsxs(ChipGroupItem, { value: f.id, children: [
1112
+ f.label,
1113
+ count > 0 && ` (${count})`
1114
+ ] }, f.id);
1115
+ })
1035
1116
  }
1036
1117
  )
1037
- ] })
1038
- ] }),
1039
- showSearch && /* @__PURE__ */ jsxs(InputGroup, { size: "sm", children: [
1040
- /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsx(Search, { strokeWidth: 1.8 }) }),
1041
- /* @__PURE__ */ jsx(
1042
- InputGroupInput,
1118
+ ] }),
1119
+ /* @__PURE__ */ jsx("div", { className: hdBody(), children: filtered.length === 0 ? /* @__PURE__ */ jsxs("div", { className: hdEmpty(), children: [
1120
+ /* @__PURE__ */ jsx(MessageSquare, { size: 28, strokeWidth: 1.4 }),
1121
+ /* @__PURE__ */ jsx("p", { className: hdEmptyText(), children: emptyMessage })
1122
+ ] }) : filtered.map((m) => /* @__PURE__ */ jsx(MessageRow, { item: m }, m.id)) }),
1123
+ onViewAll && /* @__PURE__ */ jsx("div", { className: hdFooter(), children: /* @__PURE__ */ jsx(
1124
+ "a",
1043
1125
  {
1044
- type: "text",
1045
- placeholder: searchPlaceholder,
1046
- value: search,
1047
- onChange: (e) => setSearch(e.target.value)
1126
+ href: "#",
1127
+ className: hdFooterLink(),
1128
+ onClick: (e) => {
1129
+ e.preventDefault();
1130
+ onViewAll();
1131
+ setOpen(false);
1132
+ },
1133
+ children: viewAllLabel
1048
1134
  }
1049
- )
1050
- ] }),
1051
- filters.length > 0 && /* @__PURE__ */ jsx(
1052
- ChipGroup,
1053
- {
1054
- type: "single",
1055
- value: activeFilter,
1056
- onValueChange: (v) => v && setActiveFilter(v),
1057
- size: "lg",
1058
- ariaLabel: "Filtrar mensagens",
1059
- children: filters.map((f) => {
1060
- const count = items.filter(f.predicate ?? (() => true)).length;
1061
- return /* @__PURE__ */ jsxs(ChipGroupItem, { value: f.id, children: [
1062
- f.label,
1063
- count > 0 && ` (${count})`
1064
- ] }, f.id);
1065
- })
1066
- }
1067
- )
1068
- ] }),
1069
- /* @__PURE__ */ jsx("div", { className: hdBody(), children: filtered.length === 0 ? /* @__PURE__ */ jsxs("div", { className: hdEmpty(), children: [
1070
- /* @__PURE__ */ jsx(MessageSquare, { size: 28, strokeWidth: 1.4 }),
1071
- /* @__PURE__ */ jsx("p", { className: hdEmptyText(), children: emptyMessage })
1072
- ] }) : filtered.map((m) => /* @__PURE__ */ jsx(MessageRow, { item: m }, m.id)) }),
1073
- onViewAll && /* @__PURE__ */ jsx("div", { className: hdFooter(), children: /* @__PURE__ */ jsx(
1074
- "a",
1075
- {
1076
- href: "#",
1077
- className: hdFooterLink(),
1078
- onClick: (e) => {
1079
- e.preventDefault();
1080
- onViewAll();
1081
- setOpen(false);
1082
- },
1083
- children: viewAllLabel
1084
- }
1085
- ) })
1086
- ] })
1135
+ ) })
1136
+ ]
1137
+ }
1138
+ )
1087
1139
  ] });
1088
1140
  }
1089
1141
  function MessageRow({ item }) {
@@ -1119,6 +1171,7 @@ function MessageRow({ item }) {
1119
1171
  }
1120
1172
  const DropdownMenu = DropdownMenuPrimitive.Root;
1121
1173
  const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1174
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
1122
1175
  const DropdownMenuSub = DropdownMenuPrimitive.Sub;
1123
1176
  const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1124
1177
  const CONTAINER_CLASSES = [
@@ -1139,6 +1192,15 @@ const CONTAINER_CLASSES = [
1139
1192
  "data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1140
1193
  "origin-[--radix-dropdown-menu-content-transform-origin]"
1141
1194
  ].join(" ");
1195
+ const MOBILE_SHEET_CLASSES = [
1196
+ "max-md:w-full max-md:min-w-0 max-md:max-w-none",
1197
+ "max-md:!max-h-[92vh]",
1198
+ "max-md:rounded-b-none max-md:rounded-t-[12px]",
1199
+ "max-md:border-x-0 max-md:border-b-0",
1200
+ "max-md:outline-none max-md:shadow-none",
1201
+ "max-md:data-[state=open]:zoom-in-100 max-md:data-[state=closed]:zoom-out-100",
1202
+ "max-md:data-[state=open]:slide-in-from-bottom-12 max-md:data-[state=closed]:slide-out-to-bottom-12"
1203
+ ].join(" ");
1142
1204
  const ITEM_BASE = [
1143
1205
  "relative flex cursor-default select-none items-center",
1144
1206
  "gap-pad-lg px-pad-lg py-pad-md rounded-radius-sm",
@@ -1183,19 +1245,30 @@ const DropdownMenuSubContent = React.forwardRef(({ className, ...props }, ref) =
1183
1245
  }
1184
1246
  ));
1185
1247
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1186
- const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1187
- DropdownMenuPrimitive.Content,
1188
- {
1189
- ref,
1190
- sideOffset,
1191
- className: cn(
1192
- CONTAINER_CLASSES,
1193
- "max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden",
1194
- className
1195
- ),
1196
- ...props
1197
- }
1198
- ) }));
1248
+ const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 8, mobileSheet = true, ...props }, ref) => /* @__PURE__ */ jsxs(Fragment, { children: [
1249
+ mobileSheet && /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1250
+ "div",
1251
+ {
1252
+ "aria-hidden": "true",
1253
+ className: "fixed inset-0 z-[55] bg-overlay-scrim pointer-events-none md:hidden animate-in fade-in-0 duration-150"
1254
+ }
1255
+ ) }),
1256
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
1257
+ DropdownMenuPrimitive.Content,
1258
+ {
1259
+ ref,
1260
+ sideOffset,
1261
+ "data-mobile-sheet": mobileSheet ? "" : void 0,
1262
+ className: cn(
1263
+ CONTAINER_CLASSES,
1264
+ "max-h-[var(--radix-dropdown-menu-content-available-height)] overflow-y-auto overflow-x-hidden",
1265
+ mobileSheet && MOBILE_SHEET_CLASSES,
1266
+ className
1267
+ ),
1268
+ ...props
1269
+ }
1270
+ ) })
1271
+ ] }));
1199
1272
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1200
1273
  const DropdownMenuItem = React.forwardRef(({ className, inset, variant = "default", ...props }, ref) => /* @__PURE__ */ jsx(
1201
1274
  DropdownMenuPrimitive.Item,
@@ -1411,7 +1484,8 @@ const sidebarRoot = tv({
1411
1484
  base: "relative flex h-screen w-fit bg-bg-sidebar text-fg-default font-sans",
1412
1485
  variants: {
1413
1486
  mobile: {
1414
- true: "fixed inset-y-0 left-0 z-50 h-screen w-auto transition-transform duration-200 ease-out",
1487
+ // w-screen: drawer ocupa 100vw (rail + panel preenchendo) e h-screen (100vh).
1488
+ true: "fixed inset-y-0 left-0 z-50 h-screen w-screen max-w-full transition-transform duration-200 ease-out",
1415
1489
  false: ""
1416
1490
  },
1417
1491
  mobileOpen: {
@@ -1525,6 +1599,10 @@ const sidebarPanel = tv({
1525
1599
  /** Quando true: overlay absoluto sobre o conteúdo (hover-to-expand). */
1526
1600
  floating: {
1527
1601
  true: "absolute left-[64px] top-0 h-full z-40"
1602
+ },
1603
+ /** Mobile: panel preenche o resto do drawer (100vw - rail) em vez de 264px fixo. */
1604
+ mobile: {
1605
+ true: "!w-auto flex-1"
1528
1606
  }
1529
1607
  }
1530
1608
  });
@@ -2051,6 +2129,7 @@ function SidebarPanel({
2051
2129
  context,
2052
2130
  collapsed,
2053
2131
  floating,
2132
+ mobile,
2054
2133
  activeItemHref,
2055
2134
  onItemClick,
2056
2135
  contexts,
@@ -2063,7 +2142,7 @@ function SidebarPanel({
2063
2142
  return /* @__PURE__ */ jsxs(
2064
2143
  "aside",
2065
2144
  {
2066
- className: cn(sidebarPanel({ collapsed, floating }), className),
2145
+ className: cn(sidebarPanel({ collapsed, floating, mobile }), className),
2067
2146
  "aria-hidden": collapsed,
2068
2147
  children: [
2069
2148
  /* @__PURE__ */ jsx("div", { className: sidebarPanelHeader(), children: hasSwitcher ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
@@ -2280,6 +2359,7 @@ function MenuSidebar({
2280
2359
  context: activeContext,
2281
2360
  collapsed: isMobile ? false : hoverExpanded ? false : collapsed,
2282
2361
  floating: shouldFloat,
2362
+ mobile: isMobile,
2283
2363
  activeItemHref: itemHref,
2284
2364
  onItemClick: handleItemClick,
2285
2365
  contexts,
@@ -2355,110 +2435,117 @@ function UserMenu({
2355
2435
  const hasGroups = hasLayout || hasTheme || !!onSettings;
2356
2436
  const currentLayoutLabel = hasLayout && layout ? layoutOptions.find((o) => o.id === layout)?.label : void 0;
2357
2437
  const currentThemeLabel = hasTheme && theme ? themeOptions.find((o) => o.id === theme)?.label : void 0;
2358
- return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
2359
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
2360
- "button",
2361
- {
2362
- type: "button",
2363
- "aria-label": `Menu do usuário (${user.name})`,
2364
- className: [
2365
- "grid place-items-center w-9 h-9 rounded-full shrink-0",
2366
- "bg-bg-brand text-fg-on-brand text-caption-sm font-bold uppercase tracking-[0.02em]",
2367
- "cursor-pointer transition-opacity duration-150",
2368
- "hover:opacity-90",
2369
- "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary",
2370
- "data-[state=open]:ring-4 data-[state=open]:ring-ring-secondary"
2371
- ].join(" "),
2372
- style: user.avatarColor ? { background: user.avatarColor } : void 0,
2373
- children: user.avatarSrc ? /* @__PURE__ */ jsxs(Avatar, { className: "size-9", children: [
2374
- /* @__PURE__ */ jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
2375
- /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-transparent text-fg-on-brand", children: initials })
2376
- ] }) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: initials })
2377
- }
2378
- ) }),
2379
- /* @__PURE__ */ jsxs(
2380
- DropdownMenuContent,
2381
- {
2382
- side: "right",
2383
- align: "end",
2384
- sideOffset: 12,
2385
- className: "min-w-[240px]",
2386
- children: [
2387
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-gp-md px-pad-lg py-pad-md", children: [
2388
- /* @__PURE__ */ jsxs(
2389
- Avatar,
2390
- {
2391
- className: "size-9 shrink-0",
2392
- style: user.avatarColor ? { background: user.avatarColor } : void 0,
2393
- children: [
2394
- user.avatarSrc && /* @__PURE__ */ jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
2395
- /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-bg-brand text-fg-on-brand text-body-xs font-bold uppercase", children: initials })
2396
- ]
2397
- }
2398
- ),
2399
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1", children: [
2400
- /* @__PURE__ */ jsx("span", { className: "text-body-sm font-medium text-fg-default truncate", children: user.name }),
2401
- user.email && /* @__PURE__ */ jsx("span", { className: "text-caption-sm text-fg-muted truncate", children: user.email })
2402
- ] })
2403
- ] }),
2404
- hasGroups && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
2405
- hasLayout && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [
2406
- /* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [
2407
- /* @__PURE__ */ jsx(LayoutGrid, {}),
2408
- /* @__PURE__ */ jsx("span", { children: "Layout" }),
2409
- currentLayoutLabel && /* @__PURE__ */ jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentLayoutLabel })
2438
+ return (
2439
+ // modal={false}: dentro do drawer mobile (overlay próprio), o modo modal do
2440
+ // Radix injeta um dismiss/scroll-lock que entra em corrida com o gesto de
2441
+ // abertura → o menu abre no pointerdown e fecha no click/pointerup do mesmo
2442
+ // toque ("aparece e some", precisa 2-3 toques). Sem modal, o dismiss por
2443
+ // toque-fora continua via DismissableLayer, sem a corrida.
2444
+ /* @__PURE__ */ jsxs(DropdownMenu, { modal: false, children: [
2445
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
2446
+ "button",
2447
+ {
2448
+ type: "button",
2449
+ "aria-label": `Menu do usuário (${user.name})`,
2450
+ className: [
2451
+ "grid place-items-center w-9 h-9 rounded-full shrink-0",
2452
+ "bg-bg-brand text-fg-on-brand text-caption-sm font-bold uppercase tracking-[0.02em]",
2453
+ "cursor-pointer transition-opacity duration-150",
2454
+ "hover:opacity-90",
2455
+ "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary",
2456
+ "data-[state=open]:ring-4 data-[state=open]:ring-ring-secondary"
2457
+ ].join(" "),
2458
+ style: user.avatarColor ? { background: user.avatarColor } : void 0,
2459
+ children: user.avatarSrc ? /* @__PURE__ */ jsxs(Avatar, { className: "size-9", children: [
2460
+ /* @__PURE__ */ jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
2461
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-transparent text-fg-on-brand", children: initials })
2462
+ ] }) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: initials })
2463
+ }
2464
+ ) }),
2465
+ /* @__PURE__ */ jsxs(
2466
+ DropdownMenuContent,
2467
+ {
2468
+ side: "right",
2469
+ align: "end",
2470
+ sideOffset: 12,
2471
+ className: "min-w-[240px]",
2472
+ children: [
2473
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-gp-md px-pad-lg py-pad-md", children: [
2474
+ /* @__PURE__ */ jsxs(
2475
+ Avatar,
2476
+ {
2477
+ className: "size-9 shrink-0",
2478
+ style: user.avatarColor ? { background: user.avatarColor } : void 0,
2479
+ children: [
2480
+ user.avatarSrc && /* @__PURE__ */ jsx(AvatarImage, { src: user.avatarSrc, alt: user.name }),
2481
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "bg-bg-brand text-fg-on-brand text-body-xs font-bold uppercase", children: initials })
2482
+ ]
2483
+ }
2484
+ ),
2485
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1", children: [
2486
+ /* @__PURE__ */ jsx("span", { className: "text-body-sm font-medium text-fg-default truncate", children: user.name }),
2487
+ user.email && /* @__PURE__ */ jsx("span", { className: "text-caption-sm text-fg-muted truncate", children: user.email })
2488
+ ] })
2410
2489
  ] }),
2411
- /* @__PURE__ */ jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsx(
2412
- DropdownMenuRadioGroup,
2413
- {
2414
- value: layout,
2415
- onValueChange: onLayoutChange,
2416
- children: layoutOptions.map((opt) => {
2417
- const Icon = opt.icon;
2418
- return /* @__PURE__ */ jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2419
- /* @__PURE__ */ jsx(Icon, {}),
2420
- /* @__PURE__ */ jsx("span", { children: opt.label })
2421
- ] }, opt.id);
2422
- })
2423
- }
2424
- ) })
2425
- ] }),
2426
- hasTheme && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [
2427
- /* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [
2428
- /* @__PURE__ */ jsx(SunMoon, {}),
2429
- /* @__PURE__ */ jsx("span", { children: "Tema" }),
2430
- currentThemeLabel && /* @__PURE__ */ jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentThemeLabel })
2490
+ hasGroups && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
2491
+ hasLayout && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [
2492
+ /* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [
2493
+ /* @__PURE__ */ jsx(LayoutGrid, {}),
2494
+ /* @__PURE__ */ jsx("span", { children: "Layout" }),
2495
+ currentLayoutLabel && /* @__PURE__ */ jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentLayoutLabel })
2496
+ ] }),
2497
+ /* @__PURE__ */ jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsx(
2498
+ DropdownMenuRadioGroup,
2499
+ {
2500
+ value: layout,
2501
+ onValueChange: onLayoutChange,
2502
+ children: layoutOptions.map((opt) => {
2503
+ const Icon = opt.icon;
2504
+ return /* @__PURE__ */ jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2505
+ /* @__PURE__ */ jsx(Icon, {}),
2506
+ /* @__PURE__ */ jsx("span", { children: opt.label })
2507
+ ] }, opt.id);
2508
+ })
2509
+ }
2510
+ ) })
2431
2511
  ] }),
2432
- /* @__PURE__ */ jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsx(
2433
- DropdownMenuRadioGroup,
2434
- {
2435
- value: theme,
2436
- onValueChange: onThemeChange,
2437
- children: themeOptions.map((opt) => {
2438
- const Icon = opt.icon;
2439
- return /* @__PURE__ */ jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2440
- /* @__PURE__ */ jsx(Icon, {}),
2441
- /* @__PURE__ */ jsx("span", { children: opt.label })
2442
- ] }, opt.id);
2443
- })
2444
- }
2445
- ) })
2446
- ] }),
2447
- onSettings && /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onSettings, children: [
2448
- /* @__PURE__ */ jsx(Settings, {}),
2449
- /* @__PURE__ */ jsx("span", { children: "Configurações" })
2450
- ] }),
2451
- onLogout && /* @__PURE__ */ jsxs(Fragment, { children: [
2452
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
2453
- /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onLogout, children: [
2454
- /* @__PURE__ */ jsx(LogOut, {}),
2455
- /* @__PURE__ */ jsx("span", { children: "Sair" })
2512
+ hasTheme && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [
2513
+ /* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [
2514
+ /* @__PURE__ */ jsx(SunMoon, {}),
2515
+ /* @__PURE__ */ jsx("span", { children: "Tema" }),
2516
+ currentThemeLabel && /* @__PURE__ */ jsx("span", { className: "flex-1 text-right text-caption-sm text-fg-subtle", children: currentThemeLabel })
2517
+ ] }),
2518
+ /* @__PURE__ */ jsx(DropdownMenuSubContent, { sideOffset: 4, children: /* @__PURE__ */ jsx(
2519
+ DropdownMenuRadioGroup,
2520
+ {
2521
+ value: theme,
2522
+ onValueChange: onThemeChange,
2523
+ children: themeOptions.map((opt) => {
2524
+ const Icon = opt.icon;
2525
+ return /* @__PURE__ */ jsxs(DropdownMenuRadioItem, { value: opt.id, children: [
2526
+ /* @__PURE__ */ jsx(Icon, {}),
2527
+ /* @__PURE__ */ jsx("span", { children: opt.label })
2528
+ ] }, opt.id);
2529
+ })
2530
+ }
2531
+ ) })
2532
+ ] }),
2533
+ onSettings && /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onSettings, children: [
2534
+ /* @__PURE__ */ jsx(Settings, {}),
2535
+ /* @__PURE__ */ jsx("span", { children: "Configurações" })
2536
+ ] }),
2537
+ onLogout && /* @__PURE__ */ jsxs(Fragment, { children: [
2538
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
2539
+ /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onLogout, children: [
2540
+ /* @__PURE__ */ jsx(LogOut, {}),
2541
+ /* @__PURE__ */ jsx("span", { children: "Sair" })
2542
+ ] })
2456
2543
  ] })
2457
- ] })
2458
- ]
2459
- }
2460
- )
2461
- ] });
2544
+ ]
2545
+ }
2546
+ )
2547
+ ] })
2548
+ );
2462
2549
  }
2463
2550
  const root = tv({
2464
2551
  base: [
@@ -2547,11 +2634,17 @@ function AppShell({
2547
2634
  }) {
2548
2635
  const [internalCollapsed, setInternalCollapsed] = useState(defaultMenuCollapsed);
2549
2636
  const menuCollapsed = controlledCollapsed ?? internalCollapsed;
2637
+ const isMobile = useMediaQuery("(max-width: 767px)");
2638
+ const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
2550
2639
  const toggleMenuCollapsed = useCallback(() => {
2551
2640
  const next = !menuCollapsed;
2552
2641
  if (controlledCollapsed === void 0) setInternalCollapsed(next);
2553
2642
  onMenuCollapseChange?.(next);
2554
2643
  }, [menuCollapsed, controlledCollapsed, onMenuCollapseChange]);
2644
+ const handleToggleMenu = useCallback(() => {
2645
+ if (isMobile) setMobileMenuOpen((o) => !o);
2646
+ else toggleMenuCollapsed();
2647
+ }, [isMobile, toggleMenuCollapsed]);
2555
2648
  const userNode = user ? /* @__PURE__ */ jsx(
2556
2649
  UserMenu,
2557
2650
  {
@@ -2582,7 +2675,9 @@ function AppShell({
2582
2675
  onPanelCollapseChange: (next) => {
2583
2676
  if (controlledCollapsed === void 0) setInternalCollapsed(next);
2584
2677
  onMenuCollapseChange?.(next);
2585
- }
2678
+ },
2679
+ mobileOpen: mobileMenuOpen,
2680
+ onMobileOpenChange: setMobileMenuOpen
2586
2681
  }
2587
2682
  ),
2588
2683
  /* @__PURE__ */ jsxs("div", { className: main(), children: [
@@ -2590,7 +2685,7 @@ function AppShell({
2590
2685
  Header,
2591
2686
  {
2592
2687
  breadcrumb,
2593
- onCollapseMenu: toggleMenuCollapsed,
2688
+ onCollapseMenu: handleToggleMenu,
2594
2689
  menuCollapsed,
2595
2690
  commandGroups,
2596
2691
  commandPlaceholder,
@@ -2619,45 +2714,59 @@ function AppShell({
2619
2714
  }
2620
2715
  AppShell.displayName = "AppShell";
2621
2716
  export {
2717
+ PopoverAnchor as $,
2622
2718
  AppShell as A,
2623
- useControllable as B,
2624
- useMediaQuery as C,
2625
- Dialog as D,
2626
- DropdownMenu as E,
2627
- DropdownMenuTrigger as F,
2628
- DropdownMenuContent as G,
2719
+ InputGroupText as B,
2720
+ CommandDialog as C,
2721
+ DropdownMenu as D,
2722
+ InputGroupTextarea as E,
2723
+ DropdownMenuCheckboxItem as F,
2724
+ DropdownMenuRadioGroup as G,
2629
2725
  Header as H,
2630
2726
  InputGroup as I,
2631
- DialogTrigger as J,
2632
- DialogTitle as K,
2727
+ DropdownMenuRadioItem as J,
2728
+ SidebarItem as K,
2729
+ SidebarPanel as L,
2633
2730
  MenuSidebar as M,
2731
+ SidebarPill as N,
2732
+ SidebarRail as O,
2733
+ SidebarSection as P,
2734
+ SidebarSubgroup as Q,
2735
+ inputGroupVariants as R,
2634
2736
  SidebarBrandIcon as S,
2737
+ useControllable as T,
2635
2738
  UserMenu as U,
2739
+ useMediaQuery as V,
2740
+ Popover as W,
2741
+ PopoverTrigger as X,
2742
+ PopoverContent as Y,
2743
+ Command as Z,
2744
+ DialogDescription as _,
2636
2745
  Avatar as a,
2637
2746
  AvatarFallback as b,
2638
- DialogContent as c,
2639
- DialogClose as d,
2640
- HeaderBreadcrumb as e,
2641
- HeaderMessages as f,
2642
- HeaderNotifications as g,
2643
- HeaderSearch as h,
2644
- HeaderThemeSwitcher as i,
2645
- InputGroupAddon as j,
2646
- InputGroupButton as k,
2647
- InputGroupInput as l,
2648
- InputGroupText as m,
2649
- InputGroupTextarea as n,
2650
- DropdownMenuCheckboxItem as o,
2651
- DropdownMenuItem as p,
2652
- DropdownMenuLabel as q,
2653
- DropdownMenuRadioGroup as r,
2654
- DropdownMenuRadioItem as s,
2655
- DropdownMenuSeparator as t,
2656
- SidebarItem as u,
2657
- SidebarPanel as v,
2658
- SidebarPill as w,
2659
- SidebarRail as x,
2660
- SidebarSection as y,
2661
- SidebarSubgroup as z
2747
+ DropdownMenuTrigger as c,
2748
+ DropdownMenuContent as d,
2749
+ DropdownMenuItem as e,
2750
+ DropdownMenuSeparator as f,
2751
+ Dialog as g,
2752
+ DialogTrigger as h,
2753
+ DialogContent as i,
2754
+ DialogTitle as j,
2755
+ DialogClose as k,
2756
+ CommandInput as l,
2757
+ CommandList as m,
2758
+ CommandEmpty as n,
2759
+ CommandGroup as o,
2760
+ CommandItem as p,
2761
+ DropdownMenuGroup as q,
2762
+ DropdownMenuLabel as r,
2763
+ HeaderBreadcrumb as s,
2764
+ HeaderMessages as t,
2765
+ HeaderNotifications as u,
2766
+ HeaderSearch as v,
2767
+ HeaderThemeSwitcher as w,
2768
+ InputGroupAddon as x,
2769
+ InputGroupButton as y,
2770
+ InputGroupInput as z
2662
2771
  };
2663
- //# sourceMappingURL=app-shell-C_enrPD8.mjs.map
2772
+ //# sourceMappingURL=app-shell-Cy9be0Zx.mjs.map