@snksergio/design-system 0.19.1 → 0.30.2

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 (248) hide show
  1. package/README.md +39 -12
  2. package/dist-lib/chunks/{app-shell-Cy9be0Zx.mjs → app-shell-78w0pYdP.mjs} +849 -79
  3. package/dist-lib/chunks/app-shell-78w0pYdP.mjs.map +1 -0
  4. package/dist-lib/chunks/{app-shell-CPx9X7zP.cjs → app-shell-Cyh8AUJT.cjs} +947 -176
  5. package/dist-lib/chunks/app-shell-Cyh8AUJT.cjs.map +1 -0
  6. package/dist-lib/chunks/{clientes-showcase-mocks-ayU1SDOA.mjs → clientes-showcase-mocks-CwWGCCmf.mjs} +1 -27
  7. package/dist-lib/chunks/clientes-showcase-mocks-CwWGCCmf.mjs.map +1 -0
  8. package/dist-lib/chunks/{clientes-showcase-mocks-DygUqkkh.cjs → clientes-showcase-mocks-CwhluBTT.cjs} +1 -44
  9. package/dist-lib/chunks/clientes-showcase-mocks-CwhluBTT.cjs.map +1 -0
  10. package/dist-lib/chunks/{input-BWevV7up.cjs → input-BjUSWce3.cjs} +24 -4
  11. package/dist-lib/chunks/input-BjUSWce3.cjs.map +1 -0
  12. package/dist-lib/chunks/{input-C9eKSSEb.mjs → input-DCDU4i4S.mjs} +23 -3
  13. package/dist-lib/chunks/input-DCDU4i4S.mjs.map +1 -0
  14. package/dist-lib/chunks/kpi-delta-C_3V6uG6.cjs +148 -0
  15. package/dist-lib/chunks/kpi-delta-C_3V6uG6.cjs.map +1 -0
  16. package/dist-lib/chunks/kpi-delta-DpYuDY4h.mjs +149 -0
  17. package/dist-lib/chunks/kpi-delta-DpYuDY4h.mjs.map +1 -0
  18. package/dist-lib/chunks/{page-header-CQbTGWQ8.mjs → page-header-B6XJyIMz.mjs} +2 -2
  19. package/dist-lib/chunks/{page-header-CQbTGWQ8.mjs.map → page-header-B6XJyIMz.mjs.map} +1 -1
  20. package/dist-lib/chunks/{page-header-BZ-WrxV2.cjs → page-header-D0rpU0yn.cjs} +4 -4
  21. package/dist-lib/chunks/{page-header-BZ-WrxV2.cjs.map → page-header-D0rpU0yn.cjs.map} +1 -1
  22. package/dist-lib/chunks/{panel-pOXMw6a-.cjs → panel-B_SSIEDs.cjs} +1876 -1067
  23. package/dist-lib/chunks/panel-B_SSIEDs.cjs.map +1 -0
  24. package/dist-lib/chunks/{panel-BCUixETK.mjs → panel-CEkyoGiO.mjs} +1639 -831
  25. package/dist-lib/chunks/panel-CEkyoGiO.mjs.map +1 -0
  26. package/dist-lib/index.cjs +3819 -230
  27. package/dist-lib/index.cjs.map +1 -1
  28. package/dist-lib/index.mjs +3898 -313
  29. package/dist-lib/index.mjs.map +1 -1
  30. package/dist-lib/preview/chat.cjs +41 -42
  31. package/dist-lib/preview/chat.cjs.map +1 -1
  32. package/dist-lib/preview/chat.mjs +2 -3
  33. package/dist-lib/preview/chat.mjs.map +1 -1
  34. package/dist-lib/preview/clientes.cjs +22 -24
  35. package/dist-lib/preview/clientes.cjs.map +1 -1
  36. package/dist-lib/preview/clientes.mjs +5 -7
  37. package/dist-lib/preview/clientes.mjs.map +1 -1
  38. package/dist-lib/preview/dashboard.cjs +232 -28
  39. package/dist-lib/preview/dashboard.cjs.map +1 -1
  40. package/dist-lib/preview/dashboard.mjs +215 -11
  41. package/dist-lib/preview/dashboard.mjs.map +1 -1
  42. package/dist-lib/preview/mocks.cjs +1 -1
  43. package/dist-lib/preview/mocks.mjs +1 -1
  44. package/dist-lib/src/components/index.d.ts +14 -0
  45. package/dist-lib/src/components/index.d.ts.map +1 -1
  46. package/dist-lib/src/components/shadcn/command.d.ts.map +1 -1
  47. package/dist-lib/src/components/shadcn/input.d.ts.map +1 -1
  48. package/dist-lib/src/components/shadcn/tabs.d.ts +11 -6
  49. package/dist-lib/src/components/shadcn/tabs.d.ts.map +1 -1
  50. package/dist-lib/src/components/shadcn/tooltip.d.ts +25 -7
  51. package/dist-lib/src/components/shadcn/tooltip.d.ts.map +1 -1
  52. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.d.ts +13 -0
  53. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.d.ts.map +1 -0
  54. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.styles.d.ts +95 -0
  55. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.styles.d.ts.map +1 -0
  56. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.types.d.ts +81 -0
  57. package/dist-lib/src/components/ui/ChoroplethMap/choropleth-map.types.d.ts.map +1 -0
  58. package/dist-lib/src/components/ui/ChoroplethMap/index.d.ts +3 -0
  59. package/dist-lib/src/components/ui/ChoroplethMap/index.d.ts.map +1 -0
  60. package/dist-lib/src/components/ui/ColorPicker/color-picker.d.ts +16 -0
  61. package/dist-lib/src/components/ui/ColorPicker/color-picker.d.ts.map +1 -0
  62. package/dist-lib/src/components/ui/ColorPicker/color-picker.presets.d.ts +13 -0
  63. package/dist-lib/src/components/ui/ColorPicker/color-picker.presets.d.ts.map +1 -0
  64. package/dist-lib/src/components/ui/ColorPicker/color-picker.styles.d.ts +135 -0
  65. package/dist-lib/src/components/ui/ColorPicker/color-picker.styles.d.ts.map +1 -0
  66. package/dist-lib/src/components/ui/ColorPicker/color-picker.types.d.ts +35 -0
  67. package/dist-lib/src/components/ui/ColorPicker/color-picker.types.d.ts.map +1 -0
  68. package/dist-lib/src/components/ui/ColorPicker/index.d.ts +6 -0
  69. package/dist-lib/src/components/ui/ColorPicker/index.d.ts.map +1 -0
  70. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.d.ts +23 -0
  71. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.d.ts.map +1 -0
  72. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.styles.d.ts +173 -0
  73. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.styles.d.ts.map +1 -0
  74. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.types.d.ts +59 -0
  75. package/dist-lib/src/components/ui/ConversationListItem/conversation-list-item.types.d.ts.map +1 -0
  76. package/dist-lib/src/components/ui/ConversationListItem/index.d.ts +5 -0
  77. package/dist-lib/src/components/ui/ConversationListItem/index.d.ts.map +1 -0
  78. package/dist-lib/src/components/ui/DataTable/data-table.d.ts.map +1 -1
  79. package/dist-lib/src/components/ui/DataTable/data-table.types.d.ts +14 -1
  80. package/dist-lib/src/components/ui/DataTable/data-table.types.d.ts.map +1 -1
  81. package/dist-lib/src/components/ui/DataTable/hooks/use-column-auto-width.d.ts +9 -0
  82. package/dist-lib/src/components/ui/DataTable/hooks/use-column-auto-width.d.ts.map +1 -1
  83. package/dist-lib/src/components/ui/DataTable/hooks/use-data-table-controller.d.ts.map +1 -1
  84. package/dist-lib/src/components/ui/DataTable/services/saved-views.types.d.ts +9 -0
  85. package/dist-lib/src/components/ui/DataTable/services/saved-views.types.d.ts.map +1 -1
  86. package/dist-lib/src/components/ui/DataTable/utils/calculate-column-widths.d.ts +16 -0
  87. package/dist-lib/src/components/ui/DataTable/utils/calculate-column-widths.d.ts.map +1 -1
  88. package/dist-lib/src/components/ui/DatePicker/datepicker.d.ts +31 -8
  89. package/dist-lib/src/components/ui/DatePicker/datepicker.d.ts.map +1 -1
  90. package/dist-lib/src/components/ui/DatePicker/index.d.ts +1 -1
  91. package/dist-lib/src/components/ui/DatePicker/index.d.ts.map +1 -1
  92. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.d.ts +18 -0
  93. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.d.ts.map +1 -0
  94. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.styles.d.ts +63 -0
  95. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.styles.d.ts.map +1 -0
  96. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.types.d.ts +21 -0
  97. package/dist-lib/src/components/ui/DateSeparatorChip/date-separator-chip.types.d.ts.map +1 -0
  98. package/dist-lib/src/components/ui/DateSeparatorChip/index.d.ts +5 -0
  99. package/dist-lib/src/components/ui/DateSeparatorChip/index.d.ts.map +1 -0
  100. package/dist-lib/src/components/ui/EmptyState/empty-state.d.ts +12 -0
  101. package/dist-lib/src/components/ui/EmptyState/empty-state.d.ts.map +1 -0
  102. package/dist-lib/src/components/ui/EmptyState/empty-state.styles.d.ts +83 -0
  103. package/dist-lib/src/components/ui/EmptyState/empty-state.styles.d.ts.map +1 -0
  104. package/dist-lib/src/components/ui/EmptyState/empty-state.types.d.ts +43 -0
  105. package/dist-lib/src/components/ui/EmptyState/empty-state.types.d.ts.map +1 -0
  106. package/dist-lib/src/components/ui/EmptyState/index.d.ts +5 -0
  107. package/dist-lib/src/components/ui/EmptyState/index.d.ts.map +1 -0
  108. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.d.ts +15 -0
  109. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.d.ts.map +1 -0
  110. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.styles.d.ts +66 -0
  111. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.styles.d.ts.map +1 -0
  112. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.types.d.ts +41 -0
  113. package/dist-lib/src/components/ui/FileUploadField/file-upload-field.types.d.ts.map +1 -0
  114. package/dist-lib/src/components/ui/FileUploadField/index.d.ts +3 -0
  115. package/dist-lib/src/components/ui/FileUploadField/index.d.ts.map +1 -0
  116. package/dist-lib/src/components/ui/Kpi/kpi-delta.d.ts +4 -1
  117. package/dist-lib/src/components/ui/Kpi/kpi-delta.d.ts.map +1 -1
  118. package/dist-lib/src/components/ui/Kpi/kpi.d.ts +1 -1
  119. package/dist-lib/src/components/ui/Kpi/kpi.d.ts.map +1 -1
  120. package/dist-lib/src/components/ui/Kpi/kpi.styles.d.ts +42 -0
  121. package/dist-lib/src/components/ui/Kpi/kpi.styles.d.ts.map +1 -1
  122. package/dist-lib/src/components/ui/Kpi/kpi.types.d.ts +13 -1
  123. package/dist-lib/src/components/ui/Kpi/kpi.types.d.ts.map +1 -1
  124. package/dist-lib/src/components/ui/MarkdownText/index.d.ts +5 -0
  125. package/dist-lib/src/components/ui/MarkdownText/index.d.ts.map +1 -0
  126. package/dist-lib/src/components/ui/MarkdownText/markdown-text.d.ts +14 -0
  127. package/dist-lib/src/components/ui/MarkdownText/markdown-text.d.ts.map +1 -0
  128. package/dist-lib/src/components/ui/MarkdownText/markdown-text.styles.d.ts +72 -0
  129. package/dist-lib/src/components/ui/MarkdownText/markdown-text.styles.d.ts.map +1 -0
  130. package/dist-lib/src/components/ui/MarkdownText/markdown-text.types.d.ts +26 -0
  131. package/dist-lib/src/components/ui/MarkdownText/markdown-text.types.d.ts.map +1 -0
  132. package/dist-lib/src/components/ui/MenuSidebar/sidebar-section.d.ts.map +1 -1
  133. package/dist-lib/src/components/ui/MenuSidebar/sidebar.styles.d.ts +1 -0
  134. package/dist-lib/src/components/ui/MenuSidebar/sidebar.styles.d.ts.map +1 -1
  135. package/dist-lib/src/components/ui/MenuSidebar/sidebar.types.d.ts +7 -1
  136. package/dist-lib/src/components/ui/MenuSidebar/sidebar.types.d.ts.map +1 -1
  137. package/dist-lib/src/components/ui/MessageAck/index.d.ts +5 -0
  138. package/dist-lib/src/components/ui/MessageAck/index.d.ts.map +1 -0
  139. package/dist-lib/src/components/ui/MessageAck/message-ack.d.ts +18 -0
  140. package/dist-lib/src/components/ui/MessageAck/message-ack.d.ts.map +1 -0
  141. package/dist-lib/src/components/ui/MessageAck/message-ack.styles.d.ts +61 -0
  142. package/dist-lib/src/components/ui/MessageAck/message-ack.styles.d.ts.map +1 -0
  143. package/dist-lib/src/components/ui/MessageAck/message-ack.types.d.ts +14 -0
  144. package/dist-lib/src/components/ui/MessageAck/message-ack.types.d.ts.map +1 -0
  145. package/dist-lib/src/components/ui/MessageBubble/index.d.ts +5 -0
  146. package/dist-lib/src/components/ui/MessageBubble/index.d.ts.map +1 -0
  147. package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts +20 -0
  148. package/dist-lib/src/components/ui/MessageBubble/message-bubble.d.ts.map +1 -0
  149. package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts +180 -0
  150. package/dist-lib/src/components/ui/MessageBubble/message-bubble.styles.d.ts.map +1 -0
  151. package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts +87 -0
  152. package/dist-lib/src/components/ui/MessageBubble/message-bubble.types.d.ts.map +1 -0
  153. package/dist-lib/src/components/ui/MessageComposer/index.d.ts +5 -0
  154. package/dist-lib/src/components/ui/MessageComposer/index.d.ts.map +1 -0
  155. package/dist-lib/src/components/ui/MessageComposer/message-composer.d.ts +18 -0
  156. package/dist-lib/src/components/ui/MessageComposer/message-composer.d.ts.map +1 -0
  157. package/dist-lib/src/components/ui/MessageComposer/message-composer.styles.d.ts +113 -0
  158. package/dist-lib/src/components/ui/MessageComposer/message-composer.styles.d.ts.map +1 -0
  159. package/dist-lib/src/components/ui/MessageComposer/message-composer.types.d.ts +49 -0
  160. package/dist-lib/src/components/ui/MessageComposer/message-composer.types.d.ts.map +1 -0
  161. package/dist-lib/src/components/ui/MessageVariablesPicker/index.d.ts +6 -0
  162. package/dist-lib/src/components/ui/MessageVariablesPicker/index.d.ts.map +1 -0
  163. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.d.ts +12 -0
  164. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.d.ts.map +1 -0
  165. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.styles.d.ts +57 -0
  166. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.styles.d.ts.map +1 -0
  167. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.types.d.ts +36 -0
  168. package/dist-lib/src/components/ui/MessageVariablesPicker/message-variables-picker.types.d.ts.map +1 -0
  169. package/dist-lib/src/components/ui/Modal/modal.d.ts +3 -1
  170. package/dist-lib/src/components/ui/Modal/modal.d.ts.map +1 -1
  171. package/dist-lib/src/components/ui/Modal/modal.styles.d.ts +7 -1
  172. package/dist-lib/src/components/ui/Modal/modal.styles.d.ts.map +1 -1
  173. package/dist-lib/src/components/ui/MonthYearPicker/index.d.ts +3 -0
  174. package/dist-lib/src/components/ui/MonthYearPicker/index.d.ts.map +1 -0
  175. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.d.ts +11 -0
  176. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.d.ts.map +1 -0
  177. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.styles.d.ts +113 -0
  178. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.styles.d.ts.map +1 -0
  179. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.types.d.ts +34 -0
  180. package/dist-lib/src/components/ui/MonthYearPicker/month-year-picker.types.d.ts.map +1 -0
  181. package/dist-lib/src/components/ui/SingleMenuSidebar/single-menu-sidebar.styles.d.ts +1 -1
  182. package/dist-lib/src/components/ui/Spinner/index.d.ts +3 -0
  183. package/dist-lib/src/components/ui/Spinner/index.d.ts.map +1 -0
  184. package/dist-lib/src/components/ui/Spinner/spinner.d.ts +11 -0
  185. package/dist-lib/src/components/ui/Spinner/spinner.d.ts.map +1 -0
  186. package/dist-lib/src/components/ui/Spinner/spinner.styles.d.ts +55 -0
  187. package/dist-lib/src/components/ui/Spinner/spinner.styles.d.ts.map +1 -0
  188. package/dist-lib/src/components/ui/Spinner/spinner.types.d.ts +12 -0
  189. package/dist-lib/src/components/ui/Spinner/spinner.types.d.ts.map +1 -0
  190. package/dist-lib/src/components/ui/TableToolbar/parts/table-toolbar-views.d.ts +7 -1
  191. package/dist-lib/src/components/ui/TableToolbar/parts/table-toolbar-views.d.ts.map +1 -1
  192. package/dist-lib/src/components/ui/Toast/toast.d.ts +44 -0
  193. package/dist-lib/src/components/ui/Toast/toast.d.ts.map +1 -0
  194. package/dist-lib/src/hooks/useBrand.d.ts +31 -0
  195. package/dist-lib/src/hooks/useBrand.d.ts.map +1 -0
  196. package/dist-lib/src/preview/pages/ChatV2/components/QueueColumn/queue-column.styles.d.ts +3 -3
  197. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase-mocks.d.ts +1 -1
  198. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase-mocks.d.ts.map +1 -1
  199. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase.types.d.ts +1 -1
  200. package/dist-lib/src/preview/pages/ClientesShowcase/clientes-showcase.types.d.ts.map +1 -1
  201. package/dist-lib/src/preview/pages/ClientesShowcase/components/DetailDrawer/detail-drawer.types.d.ts +1 -1
  202. package/dist-lib/src/preview/pages/ClientesShowcase/components/DetailDrawer/detail-drawer.types.d.ts.map +1 -1
  203. package/dist-lib/src/preview/pages/DashboardShowcase.d.ts.map +1 -1
  204. package/dist-lib/src/preview/pages/_table-data.d.ts +51 -0
  205. package/dist-lib/src/preview/pages/_table-data.d.ts.map +1 -0
  206. package/dist-lib/src/utils/tv.d.ts.map +1 -1
  207. package/dist-lib/theme.css +32 -0
  208. package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts +266 -0
  209. package/dist-lib/tokens/brands/blue/primitives/color-palette.d.ts.map +1 -0
  210. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts +200 -0
  211. package/dist-lib/tokens/brands/blue/semantic/color-dark.d.ts.map +1 -0
  212. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts +202 -0
  213. package/dist-lib/tokens/brands/blue/semantic/color-light.d.ts.map +1 -0
  214. package/dist-lib/tokens/brands/default/semantic/typography.d.ts +4 -2
  215. package/dist-lib/tokens/brands/default/semantic/typography.d.ts.map +1 -1
  216. package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts +267 -0
  217. package/dist-lib/tokens/brands/green/primitives/color-palette.d.ts.map +1 -0
  218. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts +200 -0
  219. package/dist-lib/tokens/brands/green/semantic/color-dark.d.ts.map +1 -0
  220. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts +201 -0
  221. package/dist-lib/tokens/brands/green/semantic/color-light.d.ts.map +1 -0
  222. package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts +146 -0
  223. package/dist-lib/tokens/brands/pay/primitives/color-palette.d.ts.map +1 -0
  224. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts +201 -0
  225. package/dist-lib/tokens/brands/pay/semantic/color-dark.d.ts.map +1 -0
  226. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts +199 -0
  227. package/dist-lib/tokens/brands/pay/semantic/color-light.d.ts.map +1 -0
  228. package/dist-lib/tokens.cjs +35 -0
  229. package/dist-lib/tokens.cjs.map +1 -1
  230. package/dist-lib/tokens.mjs +35 -0
  231. package/dist-lib/tokens.mjs.map +1 -1
  232. package/package.json +21 -7
  233. package/dist-lib/chunks/app-shell-CPx9X7zP.cjs.map +0 -1
  234. package/dist-lib/chunks/app-shell-Cy9be0Zx.mjs.map +0 -1
  235. package/dist-lib/chunks/badge-DBdk74KN.mjs +0 -840
  236. package/dist-lib/chunks/badge-DBdk74KN.mjs.map +0 -1
  237. package/dist-lib/chunks/badge-gU2wtxrn.cjs +0 -856
  238. package/dist-lib/chunks/badge-gU2wtxrn.cjs.map +0 -1
  239. package/dist-lib/chunks/chip-group-2-f_Yo7Y.cjs +0 -763
  240. package/dist-lib/chunks/chip-group-2-f_Yo7Y.cjs.map +0 -1
  241. package/dist-lib/chunks/chip-group-_e-yh1Zq.mjs +0 -747
  242. package/dist-lib/chunks/chip-group-_e-yh1Zq.mjs.map +0 -1
  243. package/dist-lib/chunks/clientes-showcase-mocks-DygUqkkh.cjs.map +0 -1
  244. package/dist-lib/chunks/clientes-showcase-mocks-ayU1SDOA.mjs.map +0 -1
  245. package/dist-lib/chunks/input-BWevV7up.cjs.map +0 -1
  246. package/dist-lib/chunks/input-C9eKSSEb.mjs.map +0 -1
  247. package/dist-lib/chunks/panel-BCUixETK.mjs.map +0 -1
  248. package/dist-lib/chunks/panel-pOXMw6a-.cjs.map +0 -1
@@ -1,856 +0,0 @@
1
- "use strict";
2
- const jsxRuntime = require("react/jsx-runtime");
3
- const React = require("react");
4
- const CheckboxPrimitive = require("@radix-ui/react-checkbox");
5
- const lucideReact = require("lucide-react");
6
- const chipGroup = require("./chip-group-2-f_Yo7Y.cjs");
7
- function _interopNamespaceDefault(e) {
8
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
9
- if (e) {
10
- for (const k in e) {
11
- if (k !== "default") {
12
- const d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: () => e[k]
16
- });
17
- }
18
- }
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
- const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
24
- const CheckboxPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(CheckboxPrimitive);
25
- const Checkbox = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
26
- CheckboxPrimitive__namespace.Root,
27
- {
28
- ref,
29
- className: chipGroup.cn(
30
- "peer relative flex size-4 shrink-0 items-center justify-center cursor-pointer",
31
- "rounded-radius-xs",
32
- "bg-bg-input dark:bg-bg-muted",
33
- "border-[1.5px] border-border-input",
34
- "transition-[background-color,border-color,box-shadow] outline-none",
35
- "hover:border-border-default",
36
- "focus-visible:shadow-sh-ring",
37
- "disabled:cursor-not-allowed disabled:opacity-50",
38
- "data-[state=checked]:bg-bg-brand data-[state=checked]:border-border-brand",
39
- "data-[state=indeterminate]:bg-bg-brand data-[state=indeterminate]:border-border-brand",
40
- className
41
- ),
42
- ...props,
43
- children: /* @__PURE__ */ jsxRuntime.jsx(
44
- CheckboxPrimitive__namespace.Indicator,
45
- {
46
- className: chipGroup.cn("grid place-content-center text-fg-on-brand"),
47
- children: props.checked === "indeterminate" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, { className: "size-3", strokeWidth: 3 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3", strokeWidth: 3 })
48
- }
49
- )
50
- }
51
- ));
52
- Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
53
- const tableStyles = chipGroup.tv({
54
- slots: {
55
- /* Root grid container. Aplica container-type pra container queries.
56
- flex flex-col: scroll child usa flex-1 min-h-0 pra esticar quando há altura forçada
57
- (consumer aplica `max-h-[Npx]` no Table) ou pegar altura natural quando não há. */
58
- root: [
59
- "relative flex flex-col w-full",
60
- "bg-bg-table border border-border-table rounded-radius-xl shadow-sh-sm",
61
- "overflow-hidden",
62
- "[container-type:inline-size]"
63
- ],
64
- /* Container que faz o scroll (envolve head + body).
65
- flex-1 + min-h-0: estica até preencher o root quando há altura forçada;
66
- caso contrário, altura natural do conteúdo (flex-1 sem espaço extra = no-op).
67
- overflow-auto: scroll-X sempre disponível (colunas largas); scroll-Y só ativa
68
- quando o conteúdo excede a altura (que só acontece com max-h externo).
69
- scrollbar-thin: classe global do projeto (globals.css) — alpha responsivo light/dark. */
70
- scroll: [
71
- "flex-1 min-h-0 overflow-auto relative",
72
- "scrollbar-thin"
73
- ],
74
- /* Header row (flex de TableHeadCell). Sticky default. */
75
- head: [
76
- "flex w-max min-w-full",
77
- "bg-bg-table-head border-b border-border-table",
78
- "z-20"
79
- ],
80
- /* Cell do header — type, padding, alinhamento. */
81
- headCell: [
82
- "relative flex items-center gap-gp-md shrink-0",
83
- "h-[42px] px-pad-2xl",
84
- "text-body-sm font-semibold leading-none",
85
- "text-fg-muted",
86
- "select-none",
87
- "hover:text-fg-default"
88
- ],
89
- /* Body container — contém as rows. */
90
- body: [
91
- "flex flex-col w-max min-w-full"
92
- ],
93
- /* Row (flex de TableCell). */
94
- row: [
95
- "group/row relative flex w-full",
96
- "border-b border-border-table last:border-b-0",
97
- "bg-bg-table",
98
- "transition-colors duration-150"
99
- ],
100
- /* Cell — content cell padrão. */
101
- cell: [
102
- "flex items-center shrink-0",
103
- "px-pad-2xl",
104
- "text-body-sm font-normal text-fg-default",
105
- "whitespace-nowrap overflow-hidden"
106
- ],
107
- /* Drag handle do resize — barrinha invisível no edge direito.
108
- Apenas a linha dentro do header (after:). Sem projeção pra baixo (before:)
109
- porque pseudo-elements absolute COM h-screen ainda contam pro scrollHeight
110
- do ancestral com overflow-auto, esticando o body verticalmente. */
111
- resizeHandle: [
112
- "absolute right-0 top-0 bottom-0 w-[6px] cursor-col-resize z-10",
113
- // Linha 1px vertical dentro do header — aparece no hover do TH
114
- "after:content-[''] after:absolute after:left-1/2 after:-translate-x-1/2",
115
- "after:top-[8px] after:bottom-[8px] after:w-px after:bg-transparent",
116
- "after:transition-all after:duration-150",
117
- "group-hover/headcell:after:bg-border-default",
118
- // Hover direto no handle → linha brand 2px full-height
119
- "hover:after:bg-bg-brand hover:after:w-[2px] hover:after:top-0 hover:after:bottom-0",
120
- // DRAG ATIVO → mantém linha brand visível independente do :hover
121
- "data-[dragging=true]:after:bg-bg-brand data-[dragging=true]:after:w-[2px] data-[dragging=true]:after:top-0 data-[dragging=true]:after:bottom-0"
122
- ],
123
- /* Ícone de sort no head cell. */
124
- sortIcon: [
125
- "shrink-0 size-icon-xs",
126
- "transition-opacity duration-150"
127
- ],
128
- /* Ícone de tipo de coluna no head (Hash, User, AtSign…). */
129
- typeIcon: [
130
- "shrink-0 size-[13px] text-fg-muted opacity-70",
131
- "group-hover/headcell:opacity-100"
132
- ],
133
- /* Badge brand com índice de sort (1, 2, 3). */
134
- sortBadge: [
135
- "inline-flex items-center justify-center shrink-0",
136
- "min-w-[18px] h-[18px] px-[5px]",
137
- "rounded-radius-xs bg-bg-brand text-fg-on-brand",
138
- "text-caption-xs font-bold leading-none tabular-nums"
139
- ],
140
- /* Stack absolute na borda direita do head cell — agrupa sort e headMenu.
141
- Largura dinâmica: encolhe quando itens estão "hidden", cresce quando aparecem no hover. */
142
- headRightStack: [
143
- "absolute right-pad-md top-1/2 -translate-y-1/2 z-[1]",
144
- // 8px de respiro da borda direita
145
- "inline-flex items-center gap-gp-xs",
146
- "bg-bg-table-head pl-pad-xs",
147
- "pointer-events-none"
148
- ],
149
- /* Sort ativo (asc/desc) — sempre visível quando isSorted=true. */
150
- headSortActive: [
151
- "inline-flex items-center gap-gp-xs shrink-0",
152
- "text-fg-default"
153
- ],
154
- /* Sort hint (sortable mas inativo) — display:none default, inline-flex no hover.
155
- Como é display:none, NÃO ocupa espaço no stack até aparecer. */
156
- headSortHint: [
157
- "hidden group-hover/headcell:inline-flex items-center shrink-0",
158
- "text-fg-muted opacity-60"
159
- ],
160
- /* Head menu wrapper — display:none default, inline-flex no hover.
161
- Tem pointer-events:auto pra restaurar interatividade (parent stack tem pointer-events:none). */
162
- headMenuItem: [
163
- // Esconde por padrao; revela quando:
164
- // 1. hover no header (group-hover) — UX padrao
165
- // 2. focus interno (focus-within) — keyboard navigation
166
- // 3. dropdown interno aberto (:has data-state=open) — mantem visivel
167
- // enquanto user move cursor pra dentro do menu portal
168
- // 4. data-menu-active=true no botao — mantem visivel durante a janela
169
- // de close animation (~200ms) pra portal nao perder a ancora
170
- "hidden items-center shrink-0",
171
- "group-hover/headcell:inline-flex",
172
- "focus-within:inline-flex",
173
- "has-[[data-state=open]]:inline-flex",
174
- "has-[[data-menu-active=true]]:inline-flex",
175
- "pointer-events-auto"
176
- ],
177
- /* Card mode — wrapper de cada row no modo card. */
178
- cardWrap: [
179
- "flex flex-col w-full p-pad-card-sm gap-gp-md",
180
- "border-b border-border-table last:border-b-0",
181
- "bg-bg-table"
182
- ],
183
- /* Card mode — header do card (primary + checkbox + actions). */
184
- cardHeader: [
185
- "flex items-center justify-between gap-gp-md"
186
- ],
187
- /* Card mode — body items (label/value). */
188
- cardItem: [
189
- "flex flex-col gap-gp-2xs"
190
- ],
191
- /* Card mode — label da coluna acima do valor. */
192
- cardLabel: [
193
- "text-body-xs uppercase tracking-wider text-fg-muted"
194
- ],
195
- /* Card mode — valor abaixo do label. */
196
- cardValue: [
197
- "text-body-md text-fg-default"
198
- ]
199
- },
200
- variants: {
201
- // ⚠️ Alturas de row por densidade. DEVEM casar com `DENSITY_ROW_HEIGHT` em
202
- // `DataTable/data-table.constants.ts` (usado pela estimativa do virtualizer).
203
- // Mudou aqui → mudar lá, senão o scroll virtual desalinha.
204
- density: {
205
- compact: { row: "h-[40px]", cell: "py-0", headCell: "" },
206
- standard: { row: "h-[56px]", cell: "py-0", headCell: "" },
207
- comfortable: { row: "h-[64px]", cell: "py-0", headCell: "" }
208
- },
209
- sticky: {
210
- true: { head: "sticky top-0" },
211
- false: {}
212
- },
213
- selected: {
214
- true: {
215
- row: [
216
- "bg-bg-table-row-selected hover:bg-bg-table-row-selected-hover",
217
- "before:content-[''] before:absolute before:left-0 before:top-0 before:bottom-0 before:w-[3px] before:bg-bg-brand before:z-[5] before:pointer-events-none"
218
- ].join(" "),
219
- cardWrap: "bg-bg-table-row-selected hover:bg-bg-table-row-selected-hover"
220
- },
221
- false: {
222
- row: "hover:bg-bg-table-row-hover",
223
- cardWrap: "hover:bg-bg-table-row-hover"
224
- }
225
- },
226
- clickable: {
227
- true: { row: "cursor-pointer", cardWrap: "cursor-pointer" },
228
- false: {}
229
- },
230
- pinned: {
231
- // `bg-inherit` cobre o conteúdo scrollado nos estados normais (row bg opaco).
232
- // Quando a row está destacada (`data-highlighted` via group/row), o bg da row
233
- // é color-mix com transparent → trocamos pro token SÓLIDO pra não vazar.
234
- // Hover usa variante de grupo ARBITRÁRIA única (`[[data-highlighted]:hover]`)
235
- // — encadear dois `group-*/row` geraria descendente aninhado (não casa).
236
- left: {
237
- headCell: "sticky z-10 bg-bg-table-head",
238
- cell: "sticky z-[5] bg-inherit group-data-[highlighted]/row:bg-bg-table-row-selected-solid group-[[data-highlighted]:hover]/row:bg-bg-table-row-selected-hover-solid"
239
- },
240
- right: {
241
- headCell: "sticky z-10 bg-bg-table-head",
242
- cell: "sticky z-[5] bg-inherit group-data-[highlighted]/row:bg-bg-table-row-selected-solid group-[[data-highlighted]:hover]/row:bg-bg-table-row-selected-hover-solid"
243
- }
244
- },
245
- align: {
246
- left: { cell: "justify-start text-left", headCell: "justify-start text-left" },
247
- center: { cell: "justify-center text-center", headCell: "justify-center text-center" },
248
- right: { cell: "justify-end text-right", headCell: "justify-end text-right" }
249
- },
250
- sortable: {
251
- true: { headCell: "cursor-pointer hover:text-fg-default" },
252
- false: {}
253
- },
254
- ellipsis: {
255
- true: { cell: "overflow-hidden [&>*]:truncate" },
256
- false: {}
257
- },
258
- cellBorders: {
259
- true: {
260
- // `:has(+ [data-purpose='actions'])`: a cell ANTES da coluna actions
261
- // perde border-right — evita o divider visual encostado na actions.
262
- headCell: "border-r border-border-table last:border-r-0 has-[+_[data-purpose='actions']]:border-r-0",
263
- cell: "border-r border-border-table last:border-r-0 has-[+_[data-purpose='actions']]:border-r-0"
264
- },
265
- false: {}
266
- },
267
- /** Variant pra cells de coluna especial (selection / actions).
268
- *
269
- * - `selection`: remove padding pra checkbox 28px caber em 56px e centralizar.
270
- * - `actions`: header em branco (sem texto/menu), sem border-right, padding
271
- * horizontal mínimo. Usado quando `type: "actions"` no DataTableColumnDef.
272
- * Border-right removida via `!border-r-0` (override do cellBorders=true). */
273
- purpose: {
274
- default: {},
275
- selection: {
276
- // Sem padding + centralizado: checkbox 28px fica no meio dos 56px.
277
- // justify-center sobrescreve o align default (left) — coluna de seleção
278
- // sempre centraliza, sem o consumer precisar passar align="center".
279
- headCell: "px-0 py-0 justify-center",
280
- cell: "px-0 py-0 justify-center"
281
- },
282
- actions: {
283
- headCell: "!border-r-0 px-pad-md",
284
- cell: "!border-r-0 px-pad-md"
285
- }
286
- }
287
- },
288
- defaultVariants: {
289
- density: "standard",
290
- sticky: true,
291
- selected: false,
292
- clickable: false,
293
- align: "left",
294
- sortable: false,
295
- ellipsis: false,
296
- cellBorders: true,
297
- purpose: "default"
298
- }
299
- });
300
- const DEFAULT_MIN = 60;
301
- const DEFAULT_MAX = 800;
302
- function useColumnResize({
303
- currentWidth,
304
- minWidth = DEFAULT_MIN,
305
- maxWidth = DEFAULT_MAX,
306
- onResize,
307
- onResizeEnd,
308
- onResizeLiveDOM
309
- }) {
310
- const [isDragging, setIsDragging] = React.useState(false);
311
- const onResizeRef = React.useRef(onResize);
312
- const onResizeEndRef = React.useRef(onResizeEnd);
313
- const onResizeLiveDOMRef = React.useRef(onResizeLiveDOM);
314
- const minRef = React.useRef(minWidth);
315
- const maxRef = React.useRef(maxWidth);
316
- onResizeRef.current = onResize;
317
- onResizeEndRef.current = onResizeEnd;
318
- onResizeLiveDOMRef.current = onResizeLiveDOM;
319
- minRef.current = minWidth;
320
- maxRef.current = maxWidth;
321
- const stateRef = React.useRef({ startX: 0, startWidth: 0, lastWidth: currentWidth, dragging: false });
322
- stateRef.current.lastWidth = currentWidth;
323
- const handlersRef = React.useRef(null);
324
- if (!handlersRef.current) {
325
- handlersRef.current = {
326
- move: (e) => {
327
- if (!stateRef.current.dragging) return;
328
- const delta = e.clientX - stateRef.current.startX;
329
- const next = Math.min(
330
- maxRef.current,
331
- Math.max(minRef.current, stateRef.current.startWidth + delta)
332
- );
333
- stateRef.current.lastWidth = next;
334
- onResizeLiveDOMRef.current?.(next);
335
- onResizeRef.current?.(next);
336
- },
337
- up: () => {
338
- if (!stateRef.current.dragging) return;
339
- stateRef.current.dragging = false;
340
- setIsDragging(false);
341
- document.removeEventListener("mousemove", handlersRef.current.move);
342
- document.removeEventListener("mouseup", handlersRef.current.up);
343
- document.body.style.cursor = "";
344
- document.body.style.userSelect = "";
345
- onResizeEndRef.current?.(stateRef.current.lastWidth);
346
- }
347
- };
348
- }
349
- const onMouseDown = React.useCallback(
350
- (e) => {
351
- e.preventDefault();
352
- e.stopPropagation();
353
- stateRef.current = {
354
- startX: e.clientX,
355
- startWidth: currentWidth,
356
- lastWidth: currentWidth,
357
- dragging: true
358
- };
359
- setIsDragging(true);
360
- document.addEventListener("mousemove", handlersRef.current.move);
361
- document.addEventListener("mouseup", handlersRef.current.up);
362
- document.body.style.cursor = "col-resize";
363
- document.body.style.userSelect = "none";
364
- },
365
- [currentWidth]
366
- );
367
- React.useEffect(() => {
368
- return () => {
369
- if (stateRef.current.dragging && handlersRef.current) {
370
- document.removeEventListener("mousemove", handlersRef.current.move);
371
- document.removeEventListener("mouseup", handlersRef.current.up);
372
- document.body.style.cursor = "";
373
- document.body.style.userSelect = "";
374
- }
375
- };
376
- }, []);
377
- return {
378
- onMouseDown,
379
- isDragging
380
- };
381
- }
382
- const TableContext = React.createContext({
383
- density: "standard",
384
- cellBorders: true,
385
- resizingField: null,
386
- setResizingField: () => {
387
- },
388
- isScrolled: false
389
- });
390
- function useTableContext() {
391
- return React.useContext(TableContext);
392
- }
393
- const styles$1 = tableStyles();
394
- function Table({
395
- density = "standard",
396
- cardBreakpoint = 768,
397
- cellBorders = true,
398
- ariaLabel,
399
- className,
400
- scrollRef: externalScrollRef,
401
- children
402
- }) {
403
- const cardCss = cardBreakpoint === false ? void 0 : { "--table-card-bp": `${cardBreakpoint}px` };
404
- const [resizingField, setResizingField] = React.useState(null);
405
- const [isScrolled, setIsScrolled] = React.useState(false);
406
- const internalScrollRef = React.useRef(null);
407
- const scrollRef = externalScrollRef ?? internalScrollRef;
408
- React.useEffect(() => {
409
- const el = scrollRef.current;
410
- if (!el) return;
411
- const onScroll = () => setIsScrolled(el.scrollTop > 0);
412
- el.addEventListener("scroll", onScroll, { passive: true });
413
- onScroll();
414
- return () => el.removeEventListener("scroll", onScroll);
415
- }, [scrollRef]);
416
- return /* @__PURE__ */ jsxRuntime.jsx(
417
- TableContext.Provider,
418
- {
419
- value: { density, cellBorders, resizingField, setResizingField, isScrolled },
420
- children: /* @__PURE__ */ jsxRuntime.jsx(
421
- "div",
422
- {
423
- role: "grid",
424
- "aria-label": ariaLabel,
425
- "data-density": density,
426
- "data-resizing-col": resizingField ?? void 0,
427
- className: chipGroup.cn(styles$1.root(), className),
428
- style: cardCss,
429
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: styles$1.scroll(), children })
430
- }
431
- )
432
- }
433
- );
434
- }
435
- function TableHead({
436
- sticky = true,
437
- className,
438
- rootProps,
439
- children
440
- }) {
441
- const { isScrolled } = useTableContext();
442
- return /* @__PURE__ */ jsxRuntime.jsx(
443
- "div",
444
- {
445
- ...rootProps,
446
- role: "rowgroup",
447
- "data-scrolled": isScrolled ? "true" : void 0,
448
- className: chipGroup.cn(tableStyles({ sticky }).head(), className),
449
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", className: "flex w-full", children })
450
- }
451
- );
452
- }
453
- function TableBody({
454
- className,
455
- style,
456
- rootProps,
457
- virtualized,
458
- children
459
- }) {
460
- const virtualStyle = virtualized ? {
461
- height: virtualized.totalHeight,
462
- position: "relative",
463
- minWidth: "100%",
464
- ...style
465
- } : style;
466
- return /* @__PURE__ */ jsxRuntime.jsx(
467
- "div",
468
- {
469
- ...rootProps,
470
- role: "rowgroup",
471
- className: chipGroup.cn(
472
- styles$1.body(),
473
- virtualized && "!block",
474
- className
475
- ),
476
- style: virtualStyle,
477
- children
478
- }
479
- );
480
- }
481
- const TableRow = React.forwardRef(function TableRow2({
482
- selected = false,
483
- open = false,
484
- focused = false,
485
- clickable,
486
- onClick,
487
- className,
488
- rootProps,
489
- children
490
- }, ref) {
491
- const { density } = useTableContext();
492
- const isClickable = clickable ?? !!onClick;
493
- const highlighted = selected || open;
494
- const solidPinned = highlighted || focused;
495
- const dataState = selected && open ? "selected open" : selected ? "selected" : open ? "open" : void 0;
496
- return /* @__PURE__ */ jsxRuntime.jsx(
497
- "div",
498
- {
499
- ...rootProps,
500
- ref,
501
- role: "row",
502
- "aria-selected": selected || void 0,
503
- "data-state": dataState,
504
- "data-focused": focused || void 0,
505
- "data-highlighted": solidPinned || void 0,
506
- tabIndex: focused ? 0 : -1,
507
- className: chipGroup.cn(
508
- "group/row",
509
- tableStyles({ selected: highlighted, clickable: isClickable, density }).row(),
510
- // Focus visual — bg tinted (match checkbox selected) + borda brand interna.
511
- // A borda vem de um overlay ::after com z-[7] (ACIMA do pinned cell z-[5]):
512
- // `outline` no row era pintado SOB as sticky cells (bg opaco) e quebrava
513
- // no topo/embaixo na coluna fixa. O overlay desenha por cima, contínuo.
514
- focused && "bg-bg-table-row-selected hover:bg-bg-table-row-selected-hover z-[6] relative after:content-[''] after:absolute after:inset-0 after:z-[7] after:pointer-events-none after:border-2 after:border-bg-brand",
515
- className
516
- ),
517
- onClick,
518
- children
519
- }
520
- );
521
- });
522
- const TableCell = React.forwardRef(function TableCell2({
523
- field,
524
- tooltip,
525
- width,
526
- pinned,
527
- pinOffset,
528
- align = "left",
529
- ellipsis = false,
530
- label,
531
- className,
532
- rootProps,
533
- purpose = "default",
534
- children
535
- }, ref) {
536
- const { density, cellBorders, resizingField } = useTableContext();
537
- const isResizingThisCol = field !== void 0 && resizingField === field;
538
- const style = {};
539
- if (width !== void 0) {
540
- style.width = width;
541
- style.minWidth = width;
542
- style.maxWidth = width;
543
- }
544
- if (pinned === "left" && pinOffset !== void 0) style.left = pinOffset;
545
- if (pinned === "right" && pinOffset !== void 0) style.right = pinOffset;
546
- return /* @__PURE__ */ jsxRuntime.jsx(
547
- "div",
548
- {
549
- ...rootProps,
550
- ref,
551
- role: "gridcell",
552
- "data-pinned": pinned,
553
- "data-label": label,
554
- "data-field": field,
555
- "data-purpose": purpose,
556
- "data-resize-active": isResizingThisCol ? "true" : void 0,
557
- title: tooltip,
558
- className: chipGroup.cn(
559
- tableStyles({ pinned, align, ellipsis, density, cellBorders, purpose }).cell(),
560
- // Linha brand 2px alinhada com o centro do resize handle do header (~2px do edge)
561
- isResizingThisCol && "relative after:absolute after:right-[2px] after:top-0 after:bottom-0 after:w-[2px] after:bg-bg-brand after:pointer-events-none",
562
- className
563
- ),
564
- style,
565
- children
566
- }
567
- );
568
- });
569
- const TableHeadCell = React.forwardRef(function TableHeadCell2({
570
- field,
571
- width,
572
- pinned,
573
- pinOffset,
574
- align = "left",
575
- sortable = false,
576
- sortDirection = null,
577
- sortIndex = 1,
578
- onSortClick,
579
- icon: Icon,
580
- headMenu,
581
- resizable,
582
- onResize,
583
- onResizeEnd,
584
- className,
585
- style: extraStyle,
586
- rootProps,
587
- purpose = "default",
588
- children
589
- }, forwardedRef) {
590
- const { density, cellBorders, setResizingField } = useTableContext();
591
- const headCellRef = React.useRef(null);
592
- const setRefs = React.useCallback((el) => {
593
- headCellRef.current = el;
594
- if (typeof forwardedRef === "function") forwardedRef(el);
595
- else if (forwardedRef) forwardedRef.current = el;
596
- }, [forwardedRef]);
597
- const resize = useColumnResize({
598
- currentWidth: width ?? 160,
599
- // Live DOM update — escreve `style.width` direto nas cells com `data-field`
600
- // correspondente, escopado ao `[role="grid"]` ancestral. Síncrono, sem React,
601
- // zero re-render durante o drag. Documented hook API via `onResizeLiveDOM`
602
- // (vs `onResize` que vai pro state externo, normalmente debounced ao mouseup).
603
- onResizeLiveDOM: field ? (w) => {
604
- const grid = headCellRef.current?.closest('[role="grid"]');
605
- grid?.querySelectorAll(`[data-field="${field}"]`).forEach((el) => {
606
- el.style.width = `${w}px`;
607
- el.style.minWidth = `${w}px`;
608
- el.style.maxWidth = `${w}px`;
609
- });
610
- } : void 0,
611
- onResize,
612
- onResizeEnd
613
- });
614
- React.useEffect(() => {
615
- if (resize.isDragging && field) {
616
- setResizingField(field);
617
- return () => setResizingField(null);
618
- }
619
- }, [resize.isDragging, field, setResizingField]);
620
- const style = {};
621
- if (width !== void 0) {
622
- style.width = width;
623
- style.minWidth = width;
624
- style.maxWidth = width;
625
- }
626
- if (pinned === "left" && pinOffset !== void 0) style.left = pinOffset;
627
- if (pinned === "right" && pinOffset !== void 0) style.right = pinOffset;
628
- const ariaSort = sortable ? sortDirection === "asc" ? "ascending" : sortDirection === "desc" ? "descending" : "none" : void 0;
629
- const isSorted = sortDirection === "asc" || sortDirection === "desc";
630
- return /* @__PURE__ */ jsxRuntime.jsxs(
631
- "div",
632
- {
633
- ...rootProps,
634
- ref: setRefs,
635
- role: "columnheader",
636
- "aria-sort": ariaSort,
637
- "data-pinned": pinned,
638
- "data-sort": sortDirection ?? void 0,
639
- "data-field": field,
640
- "data-purpose": purpose,
641
- className: chipGroup.cn(
642
- "group/headcell",
643
- tableStyles({ pinned, align, sortable, density, cellBorders, purpose }).headCell(),
644
- className
645
- ),
646
- style: { ...style, ...extraStyle },
647
- onClick: sortable ? onSortClick : void 0,
648
- children: [
649
- Icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: styles$1.typeIcon(), size: 13, strokeWidth: 1.7, "aria-hidden": true }),
650
- /* @__PURE__ */ jsxRuntime.jsx(
651
- "span",
652
- {
653
- className: chipGroup.cn(
654
- "flex-1 min-w-0",
655
- // Coluna de seleção (checkbox) centraliza por padrão — sem precisar
656
- // de align="center" no consumer (alinha com o purpose="selection").
657
- align === "center" || purpose === "selection" ? "flex items-center justify-center" : align === "right" ? chipGroup.cn(
658
- "truncate text-right",
659
- // Reserva espaço pro headRightStack APENAS quando sort está
660
- // ATIVO (sort badge + indicator visíveis permanentemente).
661
- // Para hover-only icons (sortable hint sem sort + headMenu),
662
- // NÃO reserva espaço — headRightStack tem `bg-bg-table-head`
663
- // que mascara o texto durante hover. Texto right-aligned
664
- // encosta corretamente na borda quando sem hover (antes
665
- // ficava com ~60px de "vazio" reservado pros ícones invisíveis).
666
- isSorted && "pr-[60px]"
667
- ) : "truncate text-left"
668
- ),
669
- children
670
- }
671
- ),
672
- (sortable || headMenu) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles$1.headRightStack(), children: [
673
- isSorted && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles$1.headSortActive(), children: [
674
- sortIndex !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$1.sortBadge(), children: sortIndex }),
675
- /* @__PURE__ */ jsxRuntime.jsx(SortIndicator, { direction: sortDirection })
676
- ] }),
677
- sortable && !isSorted && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$1.headSortHint(), children: /* @__PURE__ */ jsxRuntime.jsx(SortIndicator, { direction: null }) }),
678
- headMenu && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles$1.headMenuItem(), children: headMenu })
679
- ] }),
680
- resizable && /* @__PURE__ */ jsxRuntime.jsx(
681
- "div",
682
- {
683
- className: styles$1.resizeHandle(),
684
- "data-dragging": resize.isDragging,
685
- onPointerDown: (e) => e.stopPropagation(),
686
- onMouseDown: resize.onMouseDown,
687
- onClick: (e) => e.stopPropagation(),
688
- onMouseEnter: () => field && setResizingField(field),
689
- onMouseLeave: () => {
690
- if (!resize.isDragging) setResizingField(null);
691
- },
692
- "aria-hidden": true
693
- }
694
- )
695
- ]
696
- }
697
- );
698
- });
699
- function SortIndicator({ direction }) {
700
- if (direction === "asc") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: styles$1.sortIcon(), "aria-hidden": true });
701
- if (direction === "desc") return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDown, { className: styles$1.sortIcon(), "aria-hidden": true });
702
- return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: styles$1.sortIcon(), "aria-hidden": true });
703
- }
704
- const styles = tableStyles();
705
- function TableCardRow({
706
- header,
707
- headerActions,
708
- items,
709
- selected = false,
710
- open = false,
711
- clickable,
712
- onClick,
713
- className
714
- }) {
715
- const isClickable = clickable ?? !!onClick;
716
- const highlighted = selected || open;
717
- const handleClick = (e) => {
718
- if (!onClick) return;
719
- if (e.target.closest(
720
- 'button, a, input, label, [role="menu"], [role="menuitem"], [data-slot="card-actions"]'
721
- )) {
722
- return;
723
- }
724
- onClick(e);
725
- };
726
- const dataState = selected && open ? "selected open" : selected ? "selected" : open ? "open" : void 0;
727
- return /* @__PURE__ */ jsxRuntime.jsxs(
728
- "div",
729
- {
730
- role: "article",
731
- "aria-selected": selected || void 0,
732
- "data-state": dataState,
733
- className: chipGroup.cn(
734
- tableStyles({ selected: highlighted, clickable: isClickable }).cardWrap(),
735
- className
736
- ),
737
- onClick: handleClick,
738
- children: [
739
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.cardHeader(), children: [
740
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-gp-md min-w-0", children: header }),
741
- headerActions && /* @__PURE__ */ jsxRuntime.jsx(
742
- "div",
743
- {
744
- className: "flex items-center gap-gp-xs shrink-0",
745
- "data-slot": "card-actions",
746
- children: headerActions
747
- }
748
- )
749
- ] }),
750
- items.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-gp-md", children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.cardItem(), children: [
751
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.cardLabel(), children: item.label }),
752
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.cardValue(), children: item.value })
753
- ] }, item.key ?? i)) })
754
- ]
755
- }
756
- );
757
- }
758
- const badgeVariants = chipGroup.tv({
759
- base: [
760
- "inline-flex items-center justify-center",
761
- "border border-transparent",
762
- "font-semibold leading-none whitespace-nowrap",
763
- "transition-colors",
764
- "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring-secondary",
765
- "[&_svg]:pointer-events-none [&_svg]:shrink-0"
766
- ],
767
- variants: {
768
- color: {
769
- primary: "",
770
- secondary: "",
771
- critical: "",
772
- success: "",
773
- warning: "",
774
- info: ""
775
- },
776
- variant: {
777
- solid: "",
778
- soft: "",
779
- outline: "bg-transparent",
780
- ghost: "bg-transparent border-transparent"
781
- },
782
- size: {
783
- sm: "h-comp-2xs px-pad-sm text-caption-xs gap-gp-2xs [&_svg]:size-3",
784
- // 20px / 6 / 10
785
- md: "h-comp-xs px-pad-md text-body-xs gap-gp-xs [&_svg]:size-3.5",
786
- // 24px / 8 / 12 (default)
787
- lg: "h-comp-sm px-pad-lg text-body-sm font-normal gap-gp-sm [&_svg]:size-4"
788
- // 28px / 10 / 13
789
- },
790
- shape: {
791
- default: "rounded-radius-sm",
792
- // 6px — counter, value tags
793
- pill: "rounded-radius-full"
794
- // pill — status chips
795
- }
796
- },
797
- compoundVariants: [
798
- /* ── Primary (brand) ─────────────────────────────────────────────── */
799
- { color: "primary", variant: "solid", class: "bg-bg-brand text-fg-on-brand" },
800
- { color: "primary", variant: "soft", class: "bg-bg-brand-subtle text-fg-brand" },
801
- { color: "primary", variant: "outline", class: "border-border-brand text-fg-brand" },
802
- { color: "primary", variant: "ghost", class: "text-fg-brand" },
803
- /* ── Secondary (neutral) ─────────────────────────────────────────── */
804
- { color: "secondary", variant: "solid", class: "bg-bg-emphasis text-fg-default" },
805
- { color: "secondary", variant: "soft", class: "bg-bg-muted text-fg-muted" },
806
- { color: "secondary", variant: "outline", class: "border-border-default text-fg-default" },
807
- { color: "secondary", variant: "ghost", class: "text-fg-muted" },
808
- /* ── Critical (danger) ───────────────────────────────────────────── */
809
- { color: "critical", variant: "solid", class: "bg-bg-danger text-fg-on-danger" },
810
- { color: "critical", variant: "soft", class: "bg-bg-danger-muted text-fg-danger" },
811
- { color: "critical", variant: "outline", class: "border-border-danger-muted text-fg-danger" },
812
- { color: "critical", variant: "ghost", class: "text-fg-danger" },
813
- /* ── Success ─────────────────────────────────────────────────────── */
814
- { color: "success", variant: "solid", class: "bg-bg-success text-fg-on-success" },
815
- { color: "success", variant: "soft", class: "bg-bg-success-muted text-fg-success" },
816
- { color: "success", variant: "outline", class: "border-border-success-muted text-fg-success" },
817
- { color: "success", variant: "ghost", class: "text-fg-success" },
818
- /* ── Warning ─────────────────────────────────────────────────────── */
819
- { color: "warning", variant: "solid", class: "bg-bg-warning text-fg-on-warning" },
820
- { color: "warning", variant: "soft", class: "bg-bg-warning-muted text-fg-warning" },
821
- { color: "warning", variant: "outline", class: "border-border-warning-muted text-fg-warning" },
822
- { color: "warning", variant: "ghost", class: "text-fg-warning" },
823
- /* ── Info ────────────────────────────────────────────────────────── */
824
- { color: "info", variant: "solid", class: "bg-bg-info text-fg-on-info" },
825
- { color: "info", variant: "soft", class: "bg-bg-info-muted text-fg-info" },
826
- { color: "info", variant: "outline", class: "border-border-info-muted text-fg-info" },
827
- { color: "info", variant: "ghost", class: "text-fg-info" }
828
- ],
829
- defaultVariants: {
830
- color: "secondary",
831
- variant: "soft",
832
- size: "md",
833
- shape: "default"
834
- }
835
- });
836
- function Badge({ className, color, variant, size, shape, ...props }) {
837
- return /* @__PURE__ */ jsxRuntime.jsx(
838
- "span",
839
- {
840
- className: badgeVariants({ color, variant, size, shape, className }),
841
- ...props
842
- }
843
- );
844
- }
845
- exports.Badge = Badge;
846
- exports.Checkbox = Checkbox;
847
- exports.Table = Table;
848
- exports.TableBody = TableBody;
849
- exports.TableCardRow = TableCardRow;
850
- exports.TableCell = TableCell;
851
- exports.TableHead = TableHead;
852
- exports.TableHeadCell = TableHeadCell;
853
- exports.TableRow = TableRow;
854
- exports.badgeVariants = badgeVariants;
855
- exports.useColumnResize = useColumnResize;
856
- //# sourceMappingURL=badge-gU2wtxrn.cjs.map