@etus/ui 0.4.0-beta.3 → 0.4.0-beta.5

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 (170) hide show
  1. package/dist/chunk-2HM5Z2YP.js +834 -0
  2. package/dist/chunk-2HM5Z2YP.js.map +1 -0
  3. package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
  4. package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
  5. package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
  6. package/dist/chunk-32IJQOUV.js.map +1 -0
  7. package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
  8. package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
  9. package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
  10. package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
  11. package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
  12. package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
  13. package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
  14. package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
  15. package/dist/chunk-5ZWFIDO2.js +3 -0
  16. package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
  17. package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
  18. package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
  19. package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
  20. package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
  21. package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
  22. package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
  23. package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
  24. package/dist/chunk-D6TH3EGA.js.map +1 -0
  25. package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
  26. package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
  27. package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
  28. package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
  29. package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
  30. package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
  31. package/dist/{chunk-CCUCWL6M.js → chunk-HT5XM6XK.js} +12 -7
  32. package/dist/chunk-HT5XM6XK.js.map +1 -0
  33. package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
  34. package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
  35. package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
  36. package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
  37. package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
  38. package/dist/chunk-J62TFQHR.js.map +1 -0
  39. package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
  40. package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
  41. package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
  42. package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
  43. package/dist/{chunk-VJITPUUS.js → chunk-JONTKXGK.js} +26 -24
  44. package/dist/chunk-JONTKXGK.js.map +1 -0
  45. package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
  46. package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
  47. package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
  48. package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
  49. package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
  50. package/dist/chunk-ONQCNOLU.js.map +1 -0
  51. package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
  52. package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
  53. package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
  54. package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
  55. package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
  56. package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
  57. package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
  58. package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
  59. package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
  60. package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
  61. package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
  62. package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
  63. package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
  64. package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
  65. package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
  66. package/dist/chunk-TNROOKX3.js.map +1 -0
  67. package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
  68. package/dist/chunk-U6EOAIPK.js.map +1 -0
  69. package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
  70. package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
  71. package/dist/{chunk-5ZKKXLPF.js → chunk-VPNFYQBL.js} +10 -15
  72. package/dist/chunk-VPNFYQBL.js.map +1 -0
  73. package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
  74. package/dist/chunk-XLTSCY22.js.map +1 -0
  75. package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
  76. package/dist/chunk-XOGMDABS.js.map +1 -0
  77. package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
  78. package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
  79. package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
  80. package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
  81. package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
  82. package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
  83. package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
  84. package/dist/chunk-YP2ATSXP.js.map +1 -0
  85. package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
  86. package/dist/chunk-ZO2EKJZM.js.map +1 -0
  87. package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
  88. package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
  89. package/dist/components/advanced/Calendar/index.js +3 -3
  90. package/dist/components/advanced/EventCalendar/index.js +3 -3
  91. package/dist/components/advanced/FilterBuilder/index.js +3 -3
  92. package/dist/components/advanced/ReportBuilder/index.js +11 -0
  93. package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
  94. package/dist/components/advanced/index.js +14 -10
  95. package/dist/components/data-display/Callout/index.js +1 -1
  96. package/dist/components/data-display/Carousel/index.js +3 -3
  97. package/dist/components/data-display/ChartCard/index.js +2 -2
  98. package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
  99. package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
  100. package/dist/components/data-display/DataTable/index.js +5 -5
  101. package/dist/components/data-display/KPICard/index.js +3 -2
  102. package/dist/components/data-display/List/index.js +3 -3
  103. package/dist/components/data-display/SingleStat/index.js +1 -1
  104. package/dist/components/data-display/VirtualTable/index.js +2 -2
  105. package/dist/components/data-display/index.js +29 -29
  106. package/dist/components/feedback/AlertDialog/index.js +3 -3
  107. package/dist/components/feedback/ConfirmModal/index.js +4 -4
  108. package/dist/components/feedback/Notification/index.js +2 -2
  109. package/dist/components/feedback/index.js +8 -8
  110. package/dist/components/forms/DatePicker/index.js +4 -4
  111. package/dist/components/forms/DateRangePicker/index.js +4 -4
  112. package/dist/components/forms/Field/index.js +2 -2
  113. package/dist/components/forms/Form/index.js +2 -2
  114. package/dist/components/forms/InputGroup/index.js +4 -4
  115. package/dist/components/forms/InputOTPField/index.js +3 -3
  116. package/dist/components/forms/NativeSelect/index.js +1 -1
  117. package/dist/components/forms/TagsInput/index.js +2 -2
  118. package/dist/components/forms/Textarea/index.js +1 -1
  119. package/dist/components/forms/TextareaField/index.js +4 -4
  120. package/dist/components/forms/index.js +26 -26
  121. package/dist/components/index.js +105 -104
  122. package/dist/components/layout/index.js +3 -3
  123. package/dist/components/navigation/AccountSwitch/index.js +3 -3
  124. package/dist/components/navigation/Header/index.js +1 -1
  125. package/dist/components/navigation/MobileSidebar/index.js +2 -2
  126. package/dist/components/navigation/Pagination/index.js +3 -3
  127. package/dist/components/navigation/Sidebar/index.js +4 -4
  128. package/dist/components/navigation/index.js +10 -10
  129. package/dist/components/primitives/Avatar/index.js +1 -1
  130. package/dist/components/primitives/Badge/index.js +1 -1
  131. package/dist/components/primitives/Button/index.js +2 -2
  132. package/dist/components/primitives/ConfirmButton/index.js +4 -4
  133. package/dist/components/primitives/Label/index.js +1 -1
  134. package/dist/components/primitives/SplitButton/index.js +1 -1
  135. package/dist/components/primitives/index.js +17 -17
  136. package/dist/components/workflow/ApprovalFlow/index.js +4 -4
  137. package/dist/components/workflow/CommentSystem/index.js +5 -5
  138. package/dist/components/workflow/Dashboard/index.js +3 -3
  139. package/dist/components/workflow/DashboardBuilder/index.js +4 -4
  140. package/dist/components/workflow/KanbanBoard/index.js +4 -4
  141. package/dist/components/workflow/ReportGenerator/index.js +4 -4
  142. package/dist/components/workflow/Wizard/index.js +3 -3
  143. package/dist/components/workflow/index.js +15 -15
  144. package/dist/fonts/inter-OFL.txt +92 -0
  145. package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
  146. package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
  147. package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
  148. package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
  149. package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
  150. package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
  151. package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
  152. package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
  153. package/dist/index.d.ts +132 -33
  154. package/dist/index.js +105 -104
  155. package/dist/styles.css +291 -13
  156. package/package.json +2 -2
  157. package/dist/chunk-5ZKKXLPF.js.map +0 -1
  158. package/dist/chunk-75QBUI2P.js.map +0 -1
  159. package/dist/chunk-CCUCWL6M.js.map +0 -1
  160. package/dist/chunk-D5DM6GZB.js.map +0 -1
  161. package/dist/chunk-FUCQNVJL.js.map +0 -1
  162. package/dist/chunk-HNYBLROK.js.map +0 -1
  163. package/dist/chunk-K3J7YLL4.js.map +0 -1
  164. package/dist/chunk-KOTCWE7V.js.map +0 -1
  165. package/dist/chunk-MDQFZEIC.js.map +0 -1
  166. package/dist/chunk-NNOGFX66.js +0 -3
  167. package/dist/chunk-PGTCXLGY.js.map +0 -1
  168. package/dist/chunk-RPV77BCQ.js.map +0 -1
  169. package/dist/chunk-SAKW2OKH.js.map +0 -1
  170. package/dist/chunk-VJITPUUS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/workflow/Dashboard/Dashboard.variants.ts","../src/components/workflow/Dashboard/Dashboard.tsx"],"names":[],"mappings":"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","file":"chunk-AV5YQ2Z4.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Dashboard container variants\n */\nexport const dashboardVariants = cva(\n [\n \"relative\",\n \"bg-background\",\n \"text-foreground\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-0 min-h-screen\",\n sidebar: \"flex\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard header variants\n */\nexport const dashboardHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-4\",\n \"mb-6\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-4\",\n full: \"px-6 pt-6\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard grid variants\n */\nexport const dashboardGridVariants = cva(\n [\n \"grid\",\n \"w-full\",\n ],\n {\n variants: {\n layout: {\n default: \"gap-6\",\n dense: \"gap-4\",\n full: \"gap-6 px-6 pb-6\",\n sidebar: \"gap-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard sidebar variants\n */\nexport const dashboardSidebarVariants = cva(\n [\n \"shrink-0\",\n \"border-r\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n width: {\n sm: \"w-48\",\n md: \"w-64\",\n lg: \"w-80\",\n },\n },\n defaultVariants: {\n width: \"md\",\n },\n }\n)\n\n/**\n * Dashboard content variants\n */\nexport const dashboardContentVariants = cva(\n [\n \"flex-1\",\n \"min-w-0\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"\",\n full: \"\",\n sidebar: \"p-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard widget variants\n */\nexport const dashboardWidgetVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"overflow-hidden\",\n \"transition-shadow\",\n \"duration-200\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-6\",\n sidebar: \"p-6\",\n },\n state: {\n default: \"\",\n dragging: \"shadow-lg ring-2 ring-primary/20\",\n resizing: \"shadow-md\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md\",\n false: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n state: \"default\",\n interactive: false,\n },\n }\n)\n\n/**\n * Dashboard widget header variants\n */\nexport const dashboardWidgetHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-2\",\n \"mb-4\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-3\",\n full: \"\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard empty state variants\n */\nexport const dashboardEmptyVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard loading state variants\n */\nexport const dashboardLoadingVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\nexport type DashboardVariantProps = VariantProps<typeof dashboardVariants>\nexport type DashboardWidgetVariantProps = VariantProps<typeof dashboardWidgetVariants>\n","import type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetData,\n DashboardWidgetProps,\n} from \"./Dashboard.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport { LayoutGrid, Loader2, RefreshCw, X } from \"lucide-react\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n dashboardContentVariants,\n dashboardEmptyVariants,\n dashboardGridVariants,\n dashboardHeaderVariants,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n} from \"./Dashboard.variants\"\n\n/**\n * Get icon for widget type\n */\nfunction getWidgetIcon(_type: DashboardWidgetData[\"type\"]) {\n // For now, return a generic icon - can be extended per type\n return <LayoutGrid className=\"h-4 w-4 text-muted-foreground\" />\n}\n\n/**\n * DashboardHeader displays the dashboard title and actions\n */\nfunction DashboardHeader({\n title,\n description,\n showRefresh = true,\n onRefresh,\n actions,\n}: DashboardHeaderProps) {\n return (\n <div className={dashboardHeaderVariants()} data-slot=\"dashboard-header\">\n <div className=\"space-y-1\">\n {title && (\n <h1\n className=\"text-2xl font-bold tracking-tight\"\n data-slot=\"dashboard-title\"\n >\n {title}\n </h1>\n )}\n {description && (\n <p\n className=\"text-sm text-muted-foreground\"\n data-slot=\"dashboard-description\"\n >\n {description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-2\" data-slot=\"dashboard-actions\">\n {showRefresh && onRefresh && (\n <Button\n aria-label=\"Refresh dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onRefresh}\n >\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Atualizar\n </Button>\n )}\n {actions}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardWidget renders a single widget card\n */\nfunction DashboardWidget({\n widget,\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n onClick,\n onRemove,\n className,\n ...props\n}: DashboardWidgetProps) {\n const widgetId = useId()\n\n // Calculate grid span and position styles\n const gridStyle = {\n gridColumn: `span ${String(Math.min(widget.w, columns))}`,\n minHeight: `${String(widget.h * rowHeight)}px`,\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n }\n\n return (\n <div\n className={cn(\n dashboardWidgetVariants({\n interactive: Boolean(onClick),\n }),\n className\n )}\n aria-label={widget.title}\n data-draggable={isDraggable || undefined}\n data-resizable={isResizable || undefined}\n data-slot=\"dashboard-widget\"\n data-widget-id={widget.id}\n data-widget-type={widget.type}\n id={widgetId}\n role={onClick ? \"button\" : \"region\"}\n style={gridStyle}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? handleKeyDown : undefined}\n {...props}\n >\n <div className={dashboardWidgetHeaderVariants()} data-slot=\"dashboard-widget-header\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {getWidgetIcon(widget.type)}\n <div className=\"min-w-0\">\n <h2 className=\"text-lg font-semibold truncate\">{widget.title}</h2>\n {widget.description && (\n <p className=\"text-sm text-muted-foreground truncate\">\n {widget.description}\n </p>\n )}\n </div>\n </div>\n {onRemove && (\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"shrink-0\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <div className=\"flex-1\" data-slot=\"dashboard-widget-content\">\n {/* Widget content would be rendered here based on type */}\n {widget.type === \"kpi\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"object\" &&\n \"value\" in widget.data &&\n (typeof (widget.data as Record<string, unknown>)[\"value\"] === \"string\" ||\n typeof (widget.data as Record<string, unknown>)[\"value\"] === \"number\") && (\n <div className=\"text-3xl font-bold\">\n {String((widget.data as Record<string, unknown>)[\"value\"])}\n </div>\n )}\n {widget.type === \"text\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"string\" && (\n <div className=\"text-sm text-muted-foreground\">{widget.data}</div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardEmptyState displays when no widgets are configured\n */\nfunction DashboardEmptyState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-empty\">\n <LayoutGrid className=\"h-12 w-12 text-muted-foreground mb-4\" />\n <h3 className=\"text-lg font-semibold mb-2\">Nenhum widget configurado</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Adicione widgets para visualizar dados e métricas neste dashboard.\n </p>\n </div>\n )\n}\n\n/**\n * DashboardLoadingState displays while data is loading\n */\nfunction DashboardLoadingState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardLoadingVariants({ layout })} data-slot=\"dashboard-loading\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n )\n}\n\n/**\n * DashboardErrorState displays when an error occurs\n */\nfunction DashboardErrorState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-error\">\n <div className=\"rounded-full bg-destructive/10 p-3 mb-4\">\n <X className=\"h-8 w-8 text-destructive\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">Erro ao carregar dashboard</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Ocorreu um erro ao carregar os dados. Tente novamente mais tarde.\n </p>\n </div>\n )\n}\n\n/**\n * Dashboard component for creating control panels with widgets, metrics, and visualizations.\n *\n * @example\n * ```tsx\n * const widgets = [\n * { id: '1', type: 'kpi', title: 'Total Sales', x: 0, y: 0, w: 3, h: 2, data: { value: 'R$ 150.000' } },\n * { id: '2', type: 'chart', title: 'Sales by Month', x: 3, y: 0, w: 6, h: 4 },\n * ]\n *\n * <Dashboard\n * title=\"Sales Dashboard\"\n * description=\"Overview of commercial performance\"\n * widgets={widgets}\n * onRefresh={() => console.log('Refresh')}\n * />\n * ```\n */\nfunction Dashboard({\n \"aria-label\": ariaLabel = \"Dashboard\",\n className,\n title,\n description,\n widgets,\n layout = \"default\",\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n showHeader = true,\n showRefresh = true,\n refreshInterval,\n sidebarContent,\n headerActions,\n state = \"ready\",\n onLayoutChange,\n onWidgetAdd: _onWidgetAdd,\n onWidgetRemove,\n onRefresh,\n onExport: _onExport,\n onWidgetClick,\n ...props\n}: DashboardProps) {\n const dashboardId = useId()\n const refreshTimerRef = useRef<null | ReturnType<typeof setInterval>>(null)\n\n // Normalize layout\n const normalizedLayout = layout ?? \"default\"\n\n // Handle refresh\n const handleRefresh = useCallback(() => {\n onRefresh?.({ timestamp: Date.now() })\n }, [onRefresh])\n\n // Handle widget remove\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n onWidgetRemove?.({ widgetId, timestamp: Date.now() })\n // Notify layout change\n const updatedLayout = widgets\n .filter((w) => w.id !== widgetId)\n .map((w) => ({ i: w.id, x: w.x, y: w.y, w: w.w, h: w.h }))\n onLayoutChange?.({ layout: updatedLayout, timestamp: Date.now() })\n },\n [widgets, onWidgetRemove, onLayoutChange]\n )\n\n // Handle widget click\n const handleWidgetClick = useCallback(\n (widget: DashboardWidgetData) => {\n onWidgetClick?.({ widget, timestamp: Date.now() })\n },\n [onWidgetClick]\n )\n\n // Set up auto-refresh\n useEffect(() => {\n if (refreshInterval && refreshInterval > 0 && onRefresh) {\n refreshTimerRef.current = setInterval(() => {\n onRefresh({ timestamp: Date.now() })\n }, refreshInterval)\n }\n\n return () => {\n if (refreshTimerRef.current) {\n clearInterval(refreshTimerRef.current)\n }\n }\n }, [refreshInterval, onRefresh])\n\n // Generate grid template columns\n const gridTemplateColumns = `repeat(${String(columns)}, minmax(0, 1fr))`\n\n // Render content based on state\n const renderContent = () => {\n switch (state) {\n case \"loading\":\n return <DashboardLoadingState layout={normalizedLayout} />\n case \"error\":\n return <DashboardErrorState layout={normalizedLayout} />\n case \"empty\":\n return <DashboardEmptyState layout={normalizedLayout} />\n case \"ready\":\n default:\n if (widgets.length === 0) {\n return <DashboardEmptyState layout={normalizedLayout} />\n }\n return (\n <div\n className={dashboardGridVariants({ layout: normalizedLayout })}\n data-slot=\"dashboard-grid\"\n style={{ gridTemplateColumns }}\n >\n {widgets.map((widget) => (\n <DashboardWidget\n key={widget.id}\n columns={columns}\n isDraggable={isDraggable && !widget.isStatic}\n isResizable={isResizable && !widget.isStatic}\n rowHeight={rowHeight}\n widget={widget}\n onClick={\n onWidgetClick ? () => { handleWidgetClick(widget); } : undefined\n }\n onRemove={\n onWidgetRemove\n ? () => { handleWidgetRemove(widget.id); }\n : undefined\n }\n />\n ))}\n </div>\n )\n }\n }\n\n // Sidebar layout\n if (normalizedLayout === \"sidebar\") {\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {sidebarContent && (\n <aside\n className={dashboardSidebarVariants()}\n data-slot=\"dashboard-sidebar\"\n >\n {sidebarContent}\n </aside>\n )}\n <div className={dashboardContentVariants({ layout: normalizedLayout })}>\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n </div>\n )\n }\n\n // Default, dense, and full layouts\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n )\n}\n\nexport {\n Dashboard,\n dashboardContentVariants,\n DashboardEmptyState,\n dashboardEmptyVariants,\n DashboardErrorState,\n dashboardGridVariants,\n DashboardHeader,\n dashboardHeaderVariants,\n DashboardLoadingState,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n DashboardWidget,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n}\nexport type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetProps,\n}\n"]}
1
+ {"version":3,"sources":["../src/components/workflow/Dashboard/Dashboard.variants.ts","../src/components/workflow/Dashboard/Dashboard.tsx"],"names":[],"mappings":";;;;;;;AAKO,IAAM,iBAAA,GAAoB,GAAA;AAAA,EAC/B;AAAA,IACE,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO,KAAA;AAAA,QACP,IAAA,EAAM,kBAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,uBAAA,GAA0B,GAAA;AAAA,EACrC;AAAA,IACE,MAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,qBAAA,GAAwB,GAAA;AAAA,EACnC;AAAA,IACE,MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,OAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,iBAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,UAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,EAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,uBAAA,GAA0B,GAAA;AAAA,EACrC;AAAA,IACE,YAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO,KAAA;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU,kCAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,gCAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,WAAA,EAAa;AAAA;AACf;AAEJ;AAKO,IAAM,6BAAA,GAAgC,GAAA;AAAA,EAC3C;AAAA,IACE,MAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,sBAAA,GAAyB,GAAA;AAAA,EACpC;AAAA,IACE,MAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,MAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;ACjNA,SAAS,cAAc,KAAA,EAAoC;AAEzD,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,+BAAA,EAAgC,CAAA;AAC/D;AAKA,SAAS,eAAA,CAAgB;AAAA,EACvB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAA,EAAwB,EAAG,aAAU,kBAAA,EACnD,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACC,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,mCAAA;AAAA,UACV,WAAA,EAAU,iBAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MAED,WAAA,oBACC,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,+BAAA;AAAA,UACV,WAAA,EAAU,uBAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA0B,aAAU,mBAAA,EAChD,QAAA,EAAA;AAAA,MAAA,WAAA,IAAe,SAAA,oBACd,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,mBAAA;AAAA,UACX,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,SAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAA,EAAA,EAAU,WAAU,cAAA,EAAe,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA,OAExC;AAAA,MAED;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAKA,SAAS,eAAA,CAAgB;AAAA,EACvB,MAAA;AAAA,EACA,OAAA,GAAU,EAAA;AAAA,EACV,SAAA,GAAY,GAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd,WAAA,GAAc,KAAA;AAAA,EACd,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,WAAW,KAAA,EAAM;AAGvB,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,UAAA,EAAY,QAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA,EAAG,OAAO,CAAC,CAAC,CAAA,CAAA;AAAA,IACvD,WAAW,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,CAAA,GAAI,SAAS,CAAC,CAAA,EAAA;AAAA,GAC5C;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AAC9D,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,OAAA,IAAU;AAAA,IACZ;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uBAAA,CAAwB;AAAA,UACtB,WAAA,EAAa,QAAQ,OAAO;AAAA,SAC7B,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,cAAY,MAAA,CAAO,KAAA;AAAA,MACnB,kBAAgB,WAAA,IAAe,MAAA;AAAA,MAC/B,kBAAgB,WAAA,IAAe,MAAA;AAAA,MAC/B,WAAA,EAAU,kBAAA;AAAA,MACV,kBAAgB,MAAA,CAAO,EAAA;AAAA,MACvB,oBAAkB,MAAA,CAAO,IAAA;AAAA,MACzB,EAAA,EAAI,QAAA;AAAA,MACJ,IAAA,EAAM,UAAU,QAAA,GAAW,QAAA;AAAA,MAC3B,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,UAAU,CAAA,GAAI,MAAA;AAAA,MACxB,OAAA;AAAA,MACA,SAAA,EAAW,UAAU,aAAA,GAAgB,MAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,EAA8B,EAAG,aAAU,yBAAA,EACzD,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,4BAC1B,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gCAAA,EAAkC,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,cAC5D,OAAO,WAAA,oBACN,GAAA,CAAC,OAAE,SAAA,EAAU,wCAAA,EACV,iBAAO,WAAA,EACV;AAAA,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA;AAAA,UACC,QAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,cAClC,SAAA,EAAU,UAAA;AAAA,cACV,IAAA,EAAK,MAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,QAAA,EAAS;AAAA,cACX,CAAA;AAAA,cAEA,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB,SAAA,EAEJ,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,aAAU,0BAAA,EAE/B,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,SAAS,KAAA,IACf,MAAA,CAAO,IAAA,KAAS,IAAA,IAChB,OAAO,IAAA,KAAS,MAAA,IAChB,OAAO,MAAA,CAAO,SAAS,QAAA,IACvB,OAAA,IAAW,MAAA,CAAO,IAAA,KACjB,OAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,CAAA,KAAM,YAC5D,OAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,MAAM,QAAA,CAAA,oBAC7D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBACZ,QAAA,EAAA,MAAA,CAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,CAAC,CAAA,EAC3D,CAAA;AAAA,UAEH,OAAO,IAAA,KAAS,MAAA,IACf,OAAO,IAAA,KAAS,IAAA,IAChB,OAAO,IAAA,KAAS,MAAA,IAChB,OAAO,MAAA,CAAO,SAAS,QAAA,oBACrB,GAAA,CAAC,SAAI,SAAA,EAAU,+BAAA,EAAiC,iBAAO,IAAA,EAAK;AAAA,SAAA,EAElE;AAAA;AAAA;AAAA,GACF;AAEJ;AAKA,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAO,EAAiE;AACrG,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,sBAAA,CAAuB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,iBAAA,EAC5D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,sCAAA,EAAuC,CAAA;AAAA,oBAC7D,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAA,2BAAA,EAAyB,CAAA;AAAA,oBACpE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,uEAAA,EAEtD;AAAA,GAAA,EACF,CAAA;AAEJ;AAKA,SAAS,qBAAA,CAAsB,EAAE,MAAA,EAAO,EAAiE;AACvG,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAA,CAAyB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,mBAAA,EAC9D,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,8CAA6C,CAAA,EAClE,CAAA;AAEJ;AAKA,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAO,EAAiE;AACrG,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,sBAAA,CAAuB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,iBAAA,EAC5D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,yCAAA,EACb,8BAAC,CAAA,EAAA,EAAE,SAAA,EAAU,4BAA2B,CAAA,EAC1C,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAA,4BAAA,EAA0B,CAAA;AAAA,oBACrE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,mEAAA,EAEtD;AAAA,GAAA,EACF,CAAA;AAEJ;AAoBA,SAAS,SAAA,CAAU;AAAA,EACjB,cAAc,SAAA,GAAY,WAAA;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,SAAA;AAAA,EACT,OAAA,GAAU,EAAA;AAAA,EACV,SAAA,GAAY,GAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd,WAAA,GAAc,KAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,eAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,cAAA;AAAA,EACA,WAAA,EAAa,YAAA;AAAA,EACb,cAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,EAAU,SAAA;AAAA,EACV,aAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,eAAA,GAAkB,OAA8C,IAAI,CAAA;AAG1E,EAAA,MAAM,mBAAmB,MAAA,IAAU,SAAA;AAGnC,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,SAAA,GAAY,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,QAAA,KAAqB;AACpB,MAAA,cAAA,GAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAEpD,MAAA,MAAM,aAAA,GAAgB,OAAA,CACnB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,QAAQ,CAAA,CAC/B,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,CAAA,EAAG,CAAA,CAAE,EAAA,EAAI,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAE,CAAE,CAAA;AAC3D,MAAA,cAAA,GAAiB,EAAE,MAAA,EAAQ,aAAA,EAAe,WAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,IACnE,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,cAAA,EAAgB,cAAc;AAAA,GAC1C;AAGA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,MAAA,KAAgC;AAC/B,MAAA,aAAA,GAAgB,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAGA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,eAAA,IAAmB,eAAA,GAAkB,CAAA,IAAK,SAAA,EAAW;AACvD,MAAA,eAAA,CAAgB,OAAA,GAAU,YAAY,MAAM;AAC1C,QAAA,SAAA,CAAU,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,MACrC,GAAG,eAAe,CAAA;AAAA,IACpB;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,QAAA,aAAA,CAAc,gBAAgB,OAAO,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,SAAS,CAAC,CAAA;AAG/B,EAAA,MAAM,mBAAA,GAAsB,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAC,CAAA,iBAAA,CAAA;AAGrD,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,SAAA;AACH,QAAA,uBAAO,GAAA,CAAC,qBAAA,EAAA,EAAsB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MAC1D,KAAK,OAAA;AACH,QAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MACxD,KAAK,OAAA;AACH,QAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MACxD,KAAK,OAAA;AAAA,MACL;AACE,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,UAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,QACxD;AACA,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,qBAAA,CAAsB,EAAE,MAAA,EAAQ,kBAAkB,CAAA;AAAA,YAC7D,WAAA,EAAU,gBAAA;AAAA,YACV,KAAA,EAAO,EAAE,mBAAA,EAAoB;AAAA,YAE5B,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZ,GAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBAEC,OAAA;AAAA,gBACA,WAAA,EAAa,WAAA,IAAe,CAAC,MAAA,CAAO,QAAA;AAAA,gBACpC,WAAA,EAAa,WAAA,IAAe,CAAC,MAAA,CAAO,QAAA;AAAA,gBACpC,SAAA;AAAA,gBACA,MAAA;AAAA,gBACA,OAAA,EACE,gBAAgB,MAAM;AAAE,kBAAA,iBAAA,CAAkB,MAAM,CAAA;AAAA,gBAAG,CAAA,GAAI,MAAA;AAAA,gBAEzD,QAAA,EACE,iBACI,MAAM;AAAE,kBAAA,kBAAA,CAAmB,OAAO,EAAE,CAAA;AAAA,gBAAG,CAAA,GACvC;AAAA,eAAA;AAAA,cAZD,MAAA,CAAO;AAAA,aAef;AAAA;AAAA,SACH;AAAA;AAEN,EACF,CAAA;AAGA,EAAA,IAAI,qBAAqB,SAAA,EAAW;AAClC,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,SAAA;AAAA,QACZ,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,QAAQ,gBAAA,EAAkB,GAAG,SAAS,CAAA;AAAA,QACxE,aAAA,EAAa,gBAAA;AAAA,QACb,WAAA,EAAU,WAAA;AAAA,QACV,YAAA,EAAY,KAAA;AAAA,QACZ,EAAA,EAAI,WAAA;AAAA,QACJ,IAAA,EAAK,MAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,cAAA,oBACC,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,WAAW,wBAAA,EAAyB;AAAA,cACpC,WAAA,EAAU,mBAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BAEF,IAAA,CAAC,SAAI,SAAA,EAAW,wBAAA,CAAyB,EAAE,MAAA,EAAQ,gBAAA,EAAkB,CAAA,EAClE,QAAA,EAAA;AAAA,YAAA,UAAA,KAAe,KAAA,IAAS,eAAe,aAAA,CAAA,oBACtC,GAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,aAAA;AAAA,gBACT,WAAA;AAAA,gBACA,WAAA;AAAA,gBACA,KAAA;AAAA,gBACA,SAAA,EAAW,YAAY,aAAA,GAAgB;AAAA;AAAA,aACzC;AAAA,YAED,aAAA;AAAc,WAAA,EACjB;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,QAAQ,gBAAA,EAAkB,GAAG,SAAS,CAAA;AAAA,MACxE,aAAA,EAAa,gBAAA;AAAA,MACb,WAAA,EAAU,WAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,EAAA,EAAI,WAAA;AAAA,MACJ,IAAA,EAAK,MAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,KAAe,KAAA,IAAS,eAAe,aAAA,CAAA,oBACtC,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,aAAA;AAAA,YACT,WAAA;AAAA,YACA,WAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,YAAY,aAAA,GAAgB;AAAA;AAAA,SACzC;AAAA,QAED,aAAA;AAAc;AAAA;AAAA,GACjB;AAEJ","file":"chunk-Y7UFBSAD.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Dashboard container variants\n */\nexport const dashboardVariants = cva(\n [\n \"relative\",\n \"bg-background\",\n \"text-foreground\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-0 min-h-screen\",\n sidebar: \"flex\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard header variants\n */\nexport const dashboardHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-4\",\n \"mb-6\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-4\",\n full: \"px-6 pt-6\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard grid variants\n */\nexport const dashboardGridVariants = cva(\n [\n \"grid\",\n \"w-full\",\n ],\n {\n variants: {\n layout: {\n default: \"gap-6\",\n dense: \"gap-4\",\n full: \"gap-6 px-6 pb-6\",\n sidebar: \"gap-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard sidebar variants\n */\nexport const dashboardSidebarVariants = cva(\n [\n \"shrink-0\",\n \"border-r\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n width: {\n sm: \"w-48\",\n md: \"w-64\",\n lg: \"w-80\",\n },\n },\n defaultVariants: {\n width: \"md\",\n },\n }\n)\n\n/**\n * Dashboard content variants\n */\nexport const dashboardContentVariants = cva(\n [\n \"flex-1\",\n \"min-w-0\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"\",\n full: \"\",\n sidebar: \"p-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard widget variants\n */\nexport const dashboardWidgetVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"overflow-hidden\",\n \"transition-shadow\",\n \"duration-200\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-6\",\n sidebar: \"p-6\",\n },\n state: {\n default: \"\",\n dragging: \"shadow-lg ring-2 ring-primary/20\",\n resizing: \"shadow-md\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md\",\n false: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n state: \"default\",\n interactive: false,\n },\n }\n)\n\n/**\n * Dashboard widget header variants\n */\nexport const dashboardWidgetHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-2\",\n \"mb-4\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-3\",\n full: \"\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard empty state variants\n */\nexport const dashboardEmptyVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard loading state variants\n */\nexport const dashboardLoadingVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\nexport type DashboardVariantProps = VariantProps<typeof dashboardVariants>\nexport type DashboardWidgetVariantProps = VariantProps<typeof dashboardWidgetVariants>\n","import type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetData,\n DashboardWidgetProps,\n} from \"./Dashboard.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport { LayoutGrid, Loader2, RefreshCw, X } from \"lucide-react\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n dashboardContentVariants,\n dashboardEmptyVariants,\n dashboardGridVariants,\n dashboardHeaderVariants,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n} from \"./Dashboard.variants\"\n\n/**\n * Get icon for widget type\n */\nfunction getWidgetIcon(_type: DashboardWidgetData[\"type\"]) {\n // For now, return a generic icon - can be extended per type\n return <LayoutGrid className=\"h-4 w-4 text-muted-foreground\" />\n}\n\n/**\n * DashboardHeader displays the dashboard title and actions\n */\nfunction DashboardHeader({\n title,\n description,\n showRefresh = true,\n onRefresh,\n actions,\n}: DashboardHeaderProps) {\n return (\n <div className={dashboardHeaderVariants()} data-slot=\"dashboard-header\">\n <div className=\"space-y-1\">\n {title && (\n <h1\n className=\"text-2xl font-bold tracking-tight\"\n data-slot=\"dashboard-title\"\n >\n {title}\n </h1>\n )}\n {description && (\n <p\n className=\"text-sm text-muted-foreground\"\n data-slot=\"dashboard-description\"\n >\n {description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-2\" data-slot=\"dashboard-actions\">\n {showRefresh && onRefresh && (\n <Button\n aria-label=\"Refresh dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onRefresh}\n >\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Atualizar\n </Button>\n )}\n {actions}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardWidget renders a single widget card\n */\nfunction DashboardWidget({\n widget,\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n onClick,\n onRemove,\n className,\n ...props\n}: DashboardWidgetProps) {\n const widgetId = useId()\n\n // Calculate grid span and position styles\n const gridStyle = {\n gridColumn: `span ${String(Math.min(widget.w, columns))}`,\n minHeight: `${String(widget.h * rowHeight)}px`,\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n }\n\n return (\n <div\n className={cn(\n dashboardWidgetVariants({\n interactive: Boolean(onClick),\n }),\n className\n )}\n aria-label={widget.title}\n data-draggable={isDraggable || undefined}\n data-resizable={isResizable || undefined}\n data-slot=\"dashboard-widget\"\n data-widget-id={widget.id}\n data-widget-type={widget.type}\n id={widgetId}\n role={onClick ? \"button\" : \"region\"}\n style={gridStyle}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? handleKeyDown : undefined}\n {...props}\n >\n <div className={dashboardWidgetHeaderVariants()} data-slot=\"dashboard-widget-header\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {getWidgetIcon(widget.type)}\n <div className=\"min-w-0\">\n <h2 className=\"text-lg font-semibold truncate\">{widget.title}</h2>\n {widget.description && (\n <p className=\"text-sm text-muted-foreground truncate\">\n {widget.description}\n </p>\n )}\n </div>\n </div>\n {onRemove && (\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"shrink-0\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <div className=\"flex-1\" data-slot=\"dashboard-widget-content\">\n {/* Widget content would be rendered here based on type */}\n {widget.type === \"kpi\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"object\" &&\n \"value\" in widget.data &&\n (typeof (widget.data as Record<string, unknown>)[\"value\"] === \"string\" ||\n typeof (widget.data as Record<string, unknown>)[\"value\"] === \"number\") && (\n <div className=\"text-3xl font-bold\">\n {String((widget.data as Record<string, unknown>)[\"value\"])}\n </div>\n )}\n {widget.type === \"text\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"string\" && (\n <div className=\"text-sm text-muted-foreground\">{widget.data}</div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardEmptyState displays when no widgets are configured\n */\nfunction DashboardEmptyState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-empty\">\n <LayoutGrid className=\"h-12 w-12 text-muted-foreground mb-4\" />\n <h3 className=\"text-lg font-semibold mb-2\">Nenhum widget configurado</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Adicione widgets para visualizar dados e métricas neste dashboard.\n </p>\n </div>\n )\n}\n\n/**\n * DashboardLoadingState displays while data is loading\n */\nfunction DashboardLoadingState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardLoadingVariants({ layout })} data-slot=\"dashboard-loading\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n )\n}\n\n/**\n * DashboardErrorState displays when an error occurs\n */\nfunction DashboardErrorState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-error\">\n <div className=\"rounded-full bg-destructive/10 p-3 mb-4\">\n <X className=\"h-8 w-8 text-destructive\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">Erro ao carregar dashboard</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Ocorreu um erro ao carregar os dados. Tente novamente mais tarde.\n </p>\n </div>\n )\n}\n\n/**\n * Dashboard component for creating control panels with widgets, metrics, and visualizations.\n *\n * @example\n * ```tsx\n * const widgets = [\n * { id: '1', type: 'kpi', title: 'Total Sales', x: 0, y: 0, w: 3, h: 2, data: { value: 'R$ 150.000' } },\n * { id: '2', type: 'chart', title: 'Sales by Month', x: 3, y: 0, w: 6, h: 4 },\n * ]\n *\n * <Dashboard\n * title=\"Sales Dashboard\"\n * description=\"Overview of commercial performance\"\n * widgets={widgets}\n * onRefresh={() => console.log('Refresh')}\n * />\n * ```\n */\nfunction Dashboard({\n \"aria-label\": ariaLabel = \"Dashboard\",\n className,\n title,\n description,\n widgets,\n layout = \"default\",\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n showHeader = true,\n showRefresh = true,\n refreshInterval,\n sidebarContent,\n headerActions,\n state = \"ready\",\n onLayoutChange,\n onWidgetAdd: _onWidgetAdd,\n onWidgetRemove,\n onRefresh,\n onExport: _onExport,\n onWidgetClick,\n ...props\n}: DashboardProps) {\n const dashboardId = useId()\n const refreshTimerRef = useRef<null | ReturnType<typeof setInterval>>(null)\n\n // Normalize layout\n const normalizedLayout = layout ?? \"default\"\n\n // Handle refresh\n const handleRefresh = useCallback(() => {\n onRefresh?.({ timestamp: Date.now() })\n }, [onRefresh])\n\n // Handle widget remove\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n onWidgetRemove?.({ widgetId, timestamp: Date.now() })\n // Notify layout change\n const updatedLayout = widgets\n .filter((w) => w.id !== widgetId)\n .map((w) => ({ i: w.id, x: w.x, y: w.y, w: w.w, h: w.h }))\n onLayoutChange?.({ layout: updatedLayout, timestamp: Date.now() })\n },\n [widgets, onWidgetRemove, onLayoutChange]\n )\n\n // Handle widget click\n const handleWidgetClick = useCallback(\n (widget: DashboardWidgetData) => {\n onWidgetClick?.({ widget, timestamp: Date.now() })\n },\n [onWidgetClick]\n )\n\n // Set up auto-refresh\n useEffect(() => {\n if (refreshInterval && refreshInterval > 0 && onRefresh) {\n refreshTimerRef.current = setInterval(() => {\n onRefresh({ timestamp: Date.now() })\n }, refreshInterval)\n }\n\n return () => {\n if (refreshTimerRef.current) {\n clearInterval(refreshTimerRef.current)\n }\n }\n }, [refreshInterval, onRefresh])\n\n // Generate grid template columns\n const gridTemplateColumns = `repeat(${String(columns)}, minmax(0, 1fr))`\n\n // Render content based on state\n const renderContent = () => {\n switch (state) {\n case \"loading\":\n return <DashboardLoadingState layout={normalizedLayout} />\n case \"error\":\n return <DashboardErrorState layout={normalizedLayout} />\n case \"empty\":\n return <DashboardEmptyState layout={normalizedLayout} />\n case \"ready\":\n default:\n if (widgets.length === 0) {\n return <DashboardEmptyState layout={normalizedLayout} />\n }\n return (\n <div\n className={dashboardGridVariants({ layout: normalizedLayout })}\n data-slot=\"dashboard-grid\"\n style={{ gridTemplateColumns }}\n >\n {widgets.map((widget) => (\n <DashboardWidget\n key={widget.id}\n columns={columns}\n isDraggable={isDraggable && !widget.isStatic}\n isResizable={isResizable && !widget.isStatic}\n rowHeight={rowHeight}\n widget={widget}\n onClick={\n onWidgetClick ? () => { handleWidgetClick(widget); } : undefined\n }\n onRemove={\n onWidgetRemove\n ? () => { handleWidgetRemove(widget.id); }\n : undefined\n }\n />\n ))}\n </div>\n )\n }\n }\n\n // Sidebar layout\n if (normalizedLayout === \"sidebar\") {\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {sidebarContent && (\n <aside\n className={dashboardSidebarVariants()}\n data-slot=\"dashboard-sidebar\"\n >\n {sidebarContent}\n </aside>\n )}\n <div className={dashboardContentVariants({ layout: normalizedLayout })}>\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n </div>\n )\n }\n\n // Default, dense, and full layouts\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n )\n}\n\nexport {\n Dashboard,\n dashboardContentVariants,\n DashboardEmptyState,\n dashboardEmptyVariants,\n DashboardErrorState,\n dashboardGridVariants,\n DashboardHeader,\n dashboardHeaderVariants,\n DashboardLoadingState,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n DashboardWidget,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n}\nexport type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetProps,\n}\n"]}
@@ -15,12 +15,10 @@ var avatarVariants = cva(
15
15
  sm: "size-[var(--avatar-size-sm)] text-[length:var(--avatar-text-sm)]",
16
16
  default: "size-[var(--avatar-size-default)] text-[length:var(--avatar-text-default)]",
17
17
  lg: "size-[var(--avatar-size-lg)] text-[length:var(--avatar-text-lg)]",
18
- xl: "size-[var(--avatar-size-xl)] text-[length:var(--avatar-text-xl)]",
19
- "2xl": "size-[var(--avatar-size-2xl)] text-[length:var(--avatar-text-2xl)]"
18
+ xl: "size-[var(--avatar-size-xl)] text-[length:var(--avatar-text-xl)]"
20
19
  },
21
20
  shape: {
22
- circle: "rounded-[var(--avatar-radius-circle)]",
23
- square: "rounded-[var(--avatar-radius-square)]"
21
+ circle: "rounded-[var(--avatar-radius-circle)]"
24
22
  },
25
23
  bordered: {
26
24
  true: "ring-2 ring-background",
@@ -41,17 +39,10 @@ var avatarVariants = cva(
41
39
  );
42
40
  var contrastBorderClasses = {
43
41
  "xs-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
44
- "xs-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
45
42
  "sm-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
46
- "sm-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
47
43
  "default-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
48
- "default-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
49
44
  "lg-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
50
- "lg-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
51
- "xl-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
52
- "xl-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
53
- "2xl-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none",
54
- "2xl-square": "after:absolute after:inset-0 after:rounded-md after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none"
45
+ "xl-circle": "after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none"
55
46
  };
56
47
  function getContrastBorderClass(size, shape) {
57
48
  const key = `${size}-${shape}`;
@@ -154,10 +145,8 @@ var avatarStatusVariants = cva(
154
145
  // 10px
155
146
  lg: "size-3",
156
147
  // 12px
157
- xl: "size-3.5",
148
+ xl: "size-3.5"
158
149
  // 14px
159
- "2xl": "size-4"
160
- // 16px
161
150
  }
162
151
  },
163
152
  defaultVariants: {
@@ -206,10 +195,8 @@ var avatarBadgeVariants = cva(
206
195
  // 14px
207
196
  lg: "size-4",
208
197
  // 16px
209
- xl: "size-5",
198
+ xl: "size-5"
210
199
  // 18px
211
- "2xl": "size-5"
212
- // 20px
213
200
  }
214
201
  },
215
202
  defaultVariants: {
@@ -223,8 +210,7 @@ var iconSizes = {
223
210
  sm: "size-2.5",
224
211
  default: "size-3",
225
212
  lg: "size-3.5",
226
- xl: "size-4",
227
- "2xl": "size-5"
213
+ xl: "size-4"
228
214
  };
229
215
  var badgeLabels = {
230
216
  company: "Company account",
@@ -257,8 +243,7 @@ var avatarGroupVariants = cva("flex", {
257
243
  sm: "-space-x-2",
258
244
  default: "-space-x-3",
259
245
  lg: "-space-x-3",
260
- xl: "-space-x-4",
261
- "2xl": "-space-x-4"
246
+ xl: "-space-x-4"
262
247
  }
263
248
  },
264
249
  defaultVariants: {
@@ -389,8 +374,7 @@ var avatarAddButtonVariants = cva(
389
374
  sm: "size-[var(--avatar-size-sm)]",
390
375
  default: "size-[var(--avatar-size-default)]",
391
376
  lg: "size-[var(--avatar-size-lg)]",
392
- xl: "size-[var(--avatar-size-xl)]",
393
- "2xl": "size-[var(--avatar-size-2xl)]"
377
+ xl: "size-[var(--avatar-size-xl)]"
394
378
  }
395
379
  },
396
380
  defaultVariants: {
@@ -408,8 +392,7 @@ function AvatarAddButton({
408
392
  sm: "size-3.5",
409
393
  default: "size-4",
410
394
  lg: "size-5",
411
- xl: "size-6",
412
- "2xl": "size-7"
395
+ xl: "size-6"
413
396
  };
414
397
  return /* @__PURE__ */ jsx(
415
398
  "button",
@@ -465,5 +448,5 @@ function AvatarLabelGroupSkeleton({
465
448
  }
466
449
 
467
450
  export { Avatar, AvatarAddButton, AvatarBadge, AvatarFallback, AvatarGroup, AvatarImage, AvatarLabelGroup, AvatarLabelGroupSkeleton, AvatarSkeleton, AvatarStatus, avatarAddButtonVariants, avatarBadgeVariants, avatarFallbackVariants, avatarGroupVariants, avatarLabelGroupVariants, avatarStatusVariants, avatarVariants, getInitials };
468
- //# sourceMappingURL=chunk-HNYBLROK.js.map
469
- //# sourceMappingURL=chunk-HNYBLROK.js.map
451
+ //# sourceMappingURL=chunk-YP2ATSXP.js.map
452
+ //# sourceMappingURL=chunk-YP2ATSXP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/primitives/Avatar/Avatar.tsx","../src/components/primitives/Avatar/AvatarStatus.tsx","../src/components/primitives/Avatar/AvatarBadge.tsx","../src/components/primitives/Avatar/AvatarGroup.tsx","../src/components/primitives/Avatar/AvatarLabelGroup.tsx","../src/components/primitives/Avatar/AvatarAddButton.tsx","../src/components/primitives/Avatar/AvatarSkeleton.tsx"],"names":["cva","jsx","jsxs","iconSizes"],"mappings":"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","file":"chunk-YP2ATSXP.js","sourcesContent":["\"use client\"\n\nimport type { AvatarFallbackProps, AvatarImageProps, AvatarProps } from \"./Avatar.types\"\n\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../feedback/Tooltip\"\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden\",\n {\n variants: {\n size: {\n xs: \"size-[var(--avatar-size-xs)] text-[length:var(--avatar-text-xs)]\",\n sm: \"size-[var(--avatar-size-sm)] text-[length:var(--avatar-text-sm)]\",\n default: \"size-[var(--avatar-size-default)] text-[length:var(--avatar-text-default)]\",\n lg: \"size-[var(--avatar-size-lg)] text-[length:var(--avatar-text-lg)]\",\n xl: \"size-[var(--avatar-size-xl)] text-[length:var(--avatar-text-xl)]\",\n },\n shape: {\n circle: \"rounded-[var(--avatar-radius-circle)]\",\n },\n bordered: {\n true: \"ring-2 ring-background\",\n false: \"\",\n },\n interactive: {\n true: \"cursor-pointer transition-transform hover:scale-105 focus-visible:outline-none focus-visible:ring-[length:var(--avatar-focus-ring-width)] focus-visible:ring-offset-[length:var(--avatar-focus-ring-offset)] focus-visible:ring-[color:var(--avatar-focus-ring-color)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"default\",\n shape: \"circle\",\n bordered: false,\n interactive: false,\n },\n }\n)\n\n// Static contrast border classes for Tailwind JIT compatibility\n// Uses base-black/8 token instead of hardcoded rgba values\nconst contrastBorderClasses = {\n \"xs-circle\": \"after:absolute after:inset-0 after:rounded-full after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none\",\n \"sm-circle\": \"after:absolute after:inset-0 after:rounded-full after:border-[0.5px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none\",\n \"default-circle\": \"after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none\",\n \"lg-circle\": \"after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none\",\n \"xl-circle\": \"after:absolute after:inset-0 after:rounded-full after:border-[0.75px] after:border-[color:var(--avatar-border-contrast)] after:pointer-events-none\",\n} as const\n\nfunction getContrastBorderClass(size: string, shape: string): string {\n const key = `${size}-${shape}` as keyof typeof contrastBorderClasses\n return key in contrastBorderClasses ? contrastBorderClasses[key] : contrastBorderClasses[\"default-circle\"]\n}\n\nfunction Avatar({\n className,\n size = \"default\",\n shape = \"circle\",\n bordered,\n interactive,\n contrastBorder = true,\n tooltip,\n children,\n ...props\n}: AvatarProps) {\n const avatarElement = (\n <AvatarPrimitive.Root\n className={cn(\n avatarVariants({ size, shape, bordered, interactive }),\n contrastBorder && size && shape && getContrastBorderClass(size, shape),\n className\n )}\n data-slot=\"avatar\"\n tabIndex={tooltip ? 0 : undefined}\n {...props}\n >\n {children}\n </AvatarPrimitive.Root>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {avatarElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return avatarElement\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: AvatarImageProps) {\n return (\n <AvatarPrimitive.Image\n className={cn(\"aspect-square size-full object-cover\", className)}\n data-slot=\"avatar-image\"\n {...props}\n />\n )\n}\n\nconst avatarFallbackVariants = cva(\n \"flex size-full items-center justify-center font-medium\",\n {\n variants: {\n colorScheme: {\n default: \"bg-[color:var(--avatar-fallback-bg-default)] text-[color:var(--avatar-fallback-text-default)]\",\n primary: \"bg-[color:var(--avatar-fallback-bg-primary)] text-[color:var(--avatar-fallback-text-primary)]\",\n secondary: \"bg-[color:var(--avatar-fallback-bg-secondary)] text-[color:var(--avatar-fallback-text-secondary)]\",\n success: \"bg-[color:var(--avatar-fallback-bg-success)] text-[color:var(--avatar-fallback-text-success)]\",\n warning: \"bg-[color:var(--avatar-fallback-bg-warning)] text-[color:var(--avatar-fallback-text-warning)]\",\n destructive: \"bg-[color:var(--avatar-fallback-bg-destructive)] text-[color:var(--avatar-fallback-text-destructive)]\",\n },\n },\n defaultVariants: {\n colorScheme: \"default\",\n },\n }\n)\n\nfunction AvatarFallback({\n className,\n colorScheme = \"default\",\n ...props\n}: AvatarFallbackProps) {\n return (\n <AvatarPrimitive.Fallback\n className={cn(avatarFallbackVariants({ colorScheme }), className)}\n data-slot=\"avatar-fallback\"\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarFallback, avatarFallbackVariants, AvatarImage, avatarVariants }\n","\"use client\"\n\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst avatarStatusVariants = cva(\n \"absolute bottom-0 right-0 rounded-full ring-[1.5px] ring-background\",\n {\n variants: {\n status: {\n online: \"bg-success\",\n offline: \"bg-muted-foreground\",\n busy: \"bg-destructive\",\n away: \"bg-warning\",\n },\n size: {\n xs: \"size-1.5\", // 6px\n sm: \"size-2\", // 8px\n default: \"size-2.5\", // 10px\n lg: \"size-3\", // 12px\n xl: \"size-3.5\", // 14px\n },\n },\n defaultVariants: {\n status: \"offline\",\n size: \"default\",\n },\n }\n)\n\nexport interface AvatarStatusProps extends React.ComponentProps<\"span\"> {\n /**\n * The size of the status indicator (should match parent Avatar size)\n * @default \"default\"\n */\n size?: \"default\" | \"lg\" | \"sm\" | \"xl\" | \"xs\"\n /**\n * The status to display\n * @default \"offline\"\n */\n status?: \"away\" | \"busy\" | \"offline\" | \"online\"\n}\n\nconst statusLabels = {\n online: \"Online\",\n offline: \"Offline\",\n busy: \"Busy\",\n away: \"Away\",\n} as const\n\nfunction AvatarStatus({\n className,\n status = \"offline\",\n size,\n ...props\n}: AvatarStatusProps) {\n return (\n <span\n aria-label={statusLabels[status]}\n className={cn(avatarStatusVariants({ status, size, className }))}\n data-slot=\"avatar-status\"\n role=\"status\"\n {...props}\n />\n )\n}\n\nexport { AvatarStatus, avatarStatusVariants }\n","\"use client\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Building2, CheckCircle2 } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst avatarBadgeVariants = cva(\n \"absolute -bottom-0.5 -right-0.5 flex items-center justify-center rounded-full ring-[1.5px] ring-background\",\n {\n variants: {\n variant: {\n company: \"bg-brius-500 text-base-white\",\n verified: \"bg-sevends-blue-600 text-base-white\",\n },\n size: {\n xs: \"size-2.5\", // 10px\n sm: \"size-3\", // 12px\n default: \"size-3.5\", // 14px\n lg: \"size-4\", // 16px\n xl: \"size-5\", // 18px\n },\n },\n defaultVariants: {\n variant: \"verified\",\n size: \"default\",\n },\n }\n)\n\nconst iconSizes = {\n xs: \"size-2\",\n sm: \"size-2.5\",\n default: \"size-3\",\n lg: \"size-3.5\",\n xl: \"size-4\",\n} as const\n\nexport interface AvatarBadgeProps extends React.ComponentProps<\"span\"> {\n /**\n * The size of the badge (should match parent Avatar size)\n * @default \"default\"\n */\n size?: \"default\" | \"lg\" | \"sm\" | \"xl\" | \"xs\"\n /**\n * The badge variant to display\n * @default \"verified\"\n */\n variant?: \"company\" | \"verified\"\n}\n\nconst badgeLabels = {\n company: \"Company account\",\n verified: \"Verified account\",\n} as const\n\nfunction AvatarBadge({\n className,\n variant = \"verified\",\n size = \"default\",\n children,\n ...props\n}: AvatarBadgeProps) {\n const defaultIcon = variant === \"company\"\n ? <Building2 className={iconSizes[size]} />\n : <CheckCircle2 className={iconSizes[size]} />\n\n return (\n <span\n aria-label={badgeLabels[variant]}\n className={cn(avatarBadgeVariants({ variant, size, className }))}\n data-slot=\"avatar-badge\"\n role=\"img\"\n {...props}\n >\n {children ?? defaultIcon}\n </span>\n )\n}\n\nexport { AvatarBadge, avatarBadgeVariants }\n","\"use client\"\n\nimport type { AvatarProps, AvatarSize } from \"./Avatar.types\"\n\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback } from \"./Avatar\"\n\nconst avatarGroupVariants = cva(\"flex\", {\n variants: {\n size: {\n xs: \"-space-x-1\",\n sm: \"-space-x-2\",\n default: \"-space-x-3\",\n lg: \"-space-x-3\",\n xl: \"-space-x-4\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n})\n\nexport interface AvatarGroupProps extends React.ComponentProps<\"div\"> {\n /**\n * Whether to apply ring-2 ring-background to all avatars for visual separation\n * @default true\n */\n bordered?: boolean\n /**\n * Child Avatar components\n */\n children: React.ReactNode\n /**\n * Maximum number of avatars to display before showing \"+N\" indicator\n */\n max?: number\n /**\n * Size to apply to all child avatars\n * @default \"default\"\n */\n size?: AvatarSize\n}\n\nfunction AvatarGroup({\n className,\n max,\n size = \"default\",\n bordered = true,\n children,\n ...props\n}: AvatarGroupProps) {\n // eslint-disable-next-line @eslint-react/no-children-to-array -- Required to count and slice children for max limit\n const childArray = React.Children.toArray(children)\n const hasMax = max !== undefined\n const visibleChildren = hasMax ? childArray.slice(0, max) : childArray\n const remainingCount = hasMax ? Math.max(0, childArray.length - max) : 0\n\n return (\n <div\n aria-label={`Avatar group${hasMax && remainingCount > 0 ? `, showing ${String(visibleChildren.length)} of ${String(childArray.length)}` : \"\"}`}\n className={cn(avatarGroupVariants({ size, className }))}\n data-slot=\"avatar-group\"\n role=\"group\"\n {...props}\n >\n {/* eslint-disable @eslint-react/no-clone-element -- Required to inject size/bordered props to Avatar children */}\n {visibleChildren.map((child) => {\n if (React.isValidElement<AvatarProps>(child) && child.type === Avatar) {\n // Children.toArray assigns stable keys to all children\n return React.cloneElement(child, {\n size: child.props.size ?? size,\n bordered: child.props.bordered ?? bordered,\n className: cn(\n bordered && \"ring-2 ring-background\",\n child.props.className\n ),\n })\n }\n return child\n })}\n {/* eslint-enable @eslint-react/no-clone-element */}\n {remainingCount > 0 && (\n <Avatar\n bordered={bordered}\n className={cn(bordered && \"ring-2 ring-background\")}\n size={size}\n >\n <AvatarFallback className=\"bg-muted text-muted-foreground text-xs font-medium\">\n +{remainingCount}\n </AvatarFallback>\n </Avatar>\n )}\n </div>\n )\n}\n\nexport { AvatarGroup, avatarGroupVariants }\n","\"use client\"\n\nimport { cva } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../feedback/Tooltip\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"./Avatar\"\nimport { AvatarBadge, type AvatarBadgeProps } from \"./AvatarBadge\"\nimport { AvatarStatus, type AvatarStatusProps } from \"./AvatarStatus\"\n\nconst avatarLabelGroupVariants = cva(\n \"flex items-center gap-3\",\n {\n variants: {\n interactive: {\n true: \"cursor-pointer rounded-lg transition-colors hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 -m-2 p-2\",\n false: \"\",\n },\n },\n defaultVariants: {\n interactive: false,\n },\n }\n)\n\nexport interface AvatarLabelGroupProps extends React.ComponentProps<\"div\"> {\n /**\n * Alternative text for the avatar image\n */\n alt?: string\n /**\n * Optional badge variant (company or verified)\n * Cannot be used together with status\n */\n badge?: AvatarBadgeProps[\"variant\"]\n /**\n * Optional description text below the name\n */\n description?: string\n /**\n * Whether the component is interactive (shows hover/focus states)\n * @default false\n */\n interactive?: boolean\n /**\n * The name to display (required, also used for initials fallback)\n */\n name: string\n /**\n * Click handler for interactive mode\n */\n onClick?: React.MouseEventHandler<HTMLDivElement>\n /**\n * Size variant for the avatar and status/badge indicator\n * @default \"default\"\n */\n size?: AvatarStatusProps[\"size\"]\n /**\n * The image source for the avatar\n */\n src?: string\n /**\n * Optional status indicator (online, offline, busy, away)\n * Cannot be used together with badge\n */\n status?: AvatarStatusProps[\"status\"]\n /**\n * Tooltip text to display on hover\n * If true, uses name + description\n * @default undefined\n */\n tooltip?: boolean | string\n}\n\n/**\n * Generates initials from a name string\n * Takes first letter of first two words, uppercased\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\nfunction AvatarLabelGroup({\n className,\n src,\n alt,\n name,\n description,\n size = \"default\",\n status,\n badge,\n interactive = false,\n onClick,\n tooltip,\n ...props\n}: AvatarLabelGroupProps) {\n // Generate tooltip text\n const tooltipText = tooltip === true\n ? description ? `${name} - ${description}` : name\n : typeof tooltip === \"string\" ? tooltip : undefined\n\n const content = (\n <div\n className={cn(avatarLabelGroupVariants({ interactive }), className)}\n data-slot=\"avatar-label-group\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive || tooltipText ? 0 : undefined}\n onClick={interactive ? onClick : undefined}\n {...props}\n >\n <div className=\"relative\">\n <Avatar interactive={interactive} size={size}>\n {src && <AvatarImage alt={alt ?? name} src={src} />}\n <AvatarFallback>{getInitials(name)}</AvatarFallback>\n </Avatar>\n {status && <AvatarStatus size={size} status={status} />}\n {badge && !status && <AvatarBadge size={size} variant={badge} />}\n </div>\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-sm font-medium text-foreground\">{name}</span>\n {description && (\n <span className=\"text-sm text-muted-foreground\">{description}</span>\n )}\n </div>\n </div>\n )\n\n if (tooltipText) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {content}\n </TooltipTrigger>\n <TooltipContent>\n {tooltipText}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return content\n}\n\nexport { AvatarLabelGroup, avatarLabelGroupVariants, getInitials }\n","\"use client\"\n\nimport { cva } from \"class-variance-authority\"\nimport { Plus } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst avatarAddButtonVariants = cva(\n \"relative flex shrink-0 items-center justify-center overflow-hidden rounded-full border-2 border-dashed border-muted-foreground/50 bg-muted text-muted-foreground transition-colors hover:border-primary hover:bg-primary/10 hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer\",\n {\n variants: {\n size: {\n xs: \"size-[var(--avatar-size-xs)]\",\n sm: \"size-[var(--avatar-size-sm)]\",\n default: \"size-[var(--avatar-size-default)]\",\n lg: \"size-[var(--avatar-size-lg)]\",\n xl: \"size-[var(--avatar-size-xl)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nexport interface AvatarAddButtonProps extends React.ComponentProps<\"button\"> {\n size?: \"default\" | \"lg\" | \"sm\" | \"xl\" | \"xs\"\n}\n\nfunction AvatarAddButton({\n className,\n size = \"default\",\n ...props\n}: AvatarAddButtonProps) {\n const iconSizes = {\n xs: \"size-3\",\n sm: \"size-3.5\",\n default: \"size-4\",\n lg: \"size-5\",\n xl: \"size-6\",\n }\n\n return (\n <button\n aria-label=\"Add user\"\n className={cn(avatarAddButtonVariants({ size, className }))}\n data-slot=\"avatar-add-button\"\n type=\"button\"\n {...props}\n >\n <Plus className={iconSizes[size]} />\n </button>\n )\n}\n\nexport { AvatarAddButton, avatarAddButtonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { avatarVariants } from \"./Avatar\"\n\nexport interface AvatarSkeletonProps extends React.ComponentProps<\"div\"> {\n /**\n * The shape of the skeleton\n * @default \"circle\"\n */\n shape?: \"circle\"\n /**\n * The size of the skeleton\n * @default \"default\"\n */\n size?: \"default\" | \"lg\" | \"sm\" | \"xl\" | \"xs\"\n}\n\nexport interface AvatarLabelGroupSkeletonProps extends React.ComponentProps<\"div\"> {\n /**\n * The size of the avatar skeleton\n * @default \"default\"\n */\n size?: \"default\" | \"lg\" | \"sm\" | \"xl\" | \"xs\"\n}\n\n/**\n * Skeleton placeholder for Avatar component\n * Use while loading user data\n */\nfunction AvatarSkeleton({\n size = \"default\",\n shape = \"circle\",\n className,\n ...props\n}: AvatarSkeletonProps) {\n return (\n <div\n className={cn(\n avatarVariants({ size, shape }),\n \"bg-muted animate-pulse\",\n className\n )}\n data-slot=\"avatar-skeleton\"\n {...props}\n />\n )\n}\n\n/**\n * Skeleton placeholder for AvatarLabelGroup component\n * Use while loading user data with name and description\n */\nfunction AvatarLabelGroupSkeleton({\n size = \"default\",\n className,\n ...props\n}: AvatarLabelGroupSkeletonProps) {\n return (\n <div\n className={cn(\"flex items-center gap-3\", className)}\n data-slot=\"avatar-label-group-skeleton\"\n {...props}\n >\n <AvatarSkeleton size={size} />\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"h-4 w-24 rounded bg-muted animate-pulse\" />\n <div className=\"h-3 w-32 rounded bg-muted animate-pulse\" />\n </div>\n </div>\n )\n}\n\nexport { AvatarLabelGroupSkeleton, AvatarSkeleton }\n"]}
@@ -1,15 +1,15 @@
1
- import { FilterBuilder, isFilterGroup, isFilterCondition } from './chunk-DZALMUQD.js';
1
+ import { FilterBuilder, isFilterGroup, isFilterCondition } from './chunk-Y3BOERVB.js';
2
2
  import { Table, TableRow, TableHeader, TableHead, TableBody, TableCell, TableFooter } from './chunk-65YSTUD2.js';
3
3
  import { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuSeparator, ContextMenuItem } from './chunk-4Y72SPNL.js';
4
- import { Checkbox } from './chunk-XETKCF73.js';
5
4
  import { SkeletonLoader } from './chunk-QHKOBGLW.js';
6
5
  import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuItem } from './chunk-FSMHI7DW.js';
7
6
  import { useMediaQuery } from './chunk-Y555RCRZ.js';
8
7
  import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-WBE6VQOO.js';
8
+ import { Checkbox } from './chunk-XETKCF73.js';
9
9
  import { TextInput } from './chunk-PWCMCMDN.js';
10
10
  import { Popover, PopoverTrigger, PopoverContent } from './chunk-AFCSDND5.js';
11
- import { Button } from './chunk-RPV77BCQ.js';
12
- import { Badge } from './chunk-KOTCWE7V.js';
11
+ import { Button } from './chunk-ONQCNOLU.js';
12
+ import { Badge } from './chunk-TNROOKX3.js';
13
13
  import { cn } from './chunk-HRNDJU7D.js';
14
14
  import * as React14 from 'react';
15
15
  import { cva } from 'class-variance-authority';
@@ -1642,6 +1642,9 @@ function DataTableHeaderInner({
1642
1642
  enableColumnOrdering ? /* @__PURE__ */ jsx(
1643
1643
  DndContext,
1644
1644
  {
1645
+ accessibility: {
1646
+ container: typeof document === "undefined" ? void 0 : document.body
1647
+ },
1645
1648
  collisionDetection: closestCenter,
1646
1649
  sensors,
1647
1650
  onDragEnd: handleDragEnd,
@@ -4042,7 +4045,12 @@ function DataTable(props) {
4042
4045
  }
4043
4046
  ),
4044
4047
  enableSorting: false,
4045
- enableHiding: false
4048
+ enableHiding: false,
4049
+ // Without an explicit size TanStack defaults to 150px, which the
4050
+ // 100%-width table then stretches even wider — a checkbox column
4051
+ // should be ~40px.
4052
+ size: 40,
4053
+ enableResizing: false
4046
4054
  };
4047
4055
  }, [enableRowSelection]);
4048
4056
  const rowNumberColumn = React14.useMemo(() => {
@@ -4072,7 +4080,7 @@ function DataTable(props) {
4072
4080
  initialPagination: props.initialPagination ?? (urlState.initialPagination.pageIndex > 0 || urlState.initialPagination.pageSize !== 10 ? urlState.initialPagination : void 0),
4073
4081
  initialSorting: props.initialSorting ?? (urlState.initialSorting.length > 0 ? urlState.initialSorting : void 0)
4074
4082
  };
4075
- }, [enableUrlState]);
4083
+ }, [enableUrlState, props]);
4076
4084
  const {
4077
4085
  cancelEdit,
4078
4086
  columnVirtualizer,
@@ -4493,5 +4501,5 @@ function DataTableDateCell({
4493
4501
  }
4494
4502
 
4495
4503
  export { DataTable, DataTableBooleanCell, DataTableCurrencyCell, DataTableDateCell, DataTableProgressCell, DataTableRatingCell, downloadFile, exportToCSV, exportToExcel, exportToPDF, tableToCSV };
4496
- //# sourceMappingURL=chunk-75QBUI2P.js.map
4497
- //# sourceMappingURL=chunk-75QBUI2P.js.map
4504
+ //# sourceMappingURL=chunk-ZO2EKJZM.js.map
4505
+ //# sourceMappingURL=chunk-ZO2EKJZM.js.map