@etus/ui 0.4.0-beta.3 → 0.4.0-beta.4
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.
- package/dist/chunk-2HM5Z2YP.js +834 -0
- package/dist/chunk-2HM5Z2YP.js.map +1 -0
- package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
- package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
- package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
- package/dist/chunk-32IJQOUV.js.map +1 -0
- package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
- package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
- package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
- package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
- package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
- package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
- package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
- package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
- package/dist/chunk-5ZWFIDO2.js +3 -0
- package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
- package/dist/{chunk-CCUCWL6M.js → chunk-AB3S55W5.js} +11 -6
- package/dist/chunk-AB3S55W5.js.map +1 -0
- package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
- package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
- package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
- package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
- package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
- package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
- package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
- package/dist/chunk-D6TH3EGA.js.map +1 -0
- package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
- package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
- package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
- package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
- package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
- package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
- package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
- package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
- package/dist/{chunk-VJITPUUS.js → chunk-ICM45N2K.js} +4 -4
- package/dist/{chunk-VJITPUUS.js.map → chunk-ICM45N2K.js.map} +1 -1
- package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
- package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
- package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
- package/dist/chunk-J62TFQHR.js.map +1 -0
- package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
- package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
- package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
- package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
- package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
- package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
- package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
- package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
- package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
- package/dist/chunk-ONQCNOLU.js.map +1 -0
- package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
- package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
- package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
- package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
- package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
- package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
- package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
- package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
- package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
- package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
- package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
- package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
- package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
- package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
- package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
- package/dist/chunk-TNROOKX3.js.map +1 -0
- package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
- package/dist/chunk-U6EOAIPK.js.map +1 -0
- package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
- package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
- package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
- package/dist/chunk-XLTSCY22.js.map +1 -0
- package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
- package/dist/chunk-XOGMDABS.js.map +1 -0
- package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
- package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
- package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
- package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
- package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
- package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
- package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
- package/dist/chunk-YP2ATSXP.js.map +1 -0
- package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
- package/dist/chunk-ZO2EKJZM.js.map +1 -0
- package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
- package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +3 -3
- package/dist/components/advanced/EventCalendar/index.js +3 -3
- package/dist/components/advanced/FilterBuilder/index.js +3 -3
- package/dist/components/advanced/ReportBuilder/index.js +11 -0
- package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
- package/dist/components/advanced/index.js +12 -8
- package/dist/components/data-display/Callout/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +3 -3
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
- package/dist/components/data-display/DataTable/index.js +5 -5
- package/dist/components/data-display/KPICard/index.js +3 -2
- package/dist/components/data-display/List/index.js +3 -3
- package/dist/components/data-display/SingleStat/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +30 -30
- package/dist/components/feedback/AlertDialog/index.js +3 -3
- package/dist/components/feedback/ConfirmModal/index.js +4 -4
- package/dist/components/feedback/Notification/index.js +2 -2
- package/dist/components/feedback/index.js +8 -8
- package/dist/components/forms/DatePicker/index.js +4 -4
- package/dist/components/forms/DateRangePicker/index.js +4 -4
- package/dist/components/forms/Field/index.js +2 -2
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +3 -3
- package/dist/components/forms/NativeSelect/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/Textarea/index.js +1 -1
- package/dist/components/forms/TextareaField/index.js +4 -4
- package/dist/components/forms/index.js +28 -28
- package/dist/components/index.js +97 -96
- package/dist/components/layout/index.js +2 -2
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/MobileSidebar/index.js +2 -2
- package/dist/components/navigation/Pagination/index.js +3 -3
- package/dist/components/navigation/Sidebar/index.js +4 -4
- package/dist/components/navigation/index.js +11 -11
- package/dist/components/primitives/Avatar/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +2 -2
- package/dist/components/primitives/ConfirmButton/index.js +4 -4
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +1 -1
- package/dist/components/primitives/index.js +13 -13
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +5 -5
- package/dist/components/workflow/Dashboard/index.js +3 -3
- package/dist/components/workflow/DashboardBuilder/index.js +4 -4
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +4 -4
- package/dist/components/workflow/Wizard/index.js +3 -3
- package/dist/components/workflow/index.js +14 -14
- package/dist/fonts/inter-OFL.txt +92 -0
- package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/dist/index.d.ts +114 -27
- package/dist/index.js +97 -96
- package/dist/styles.css +284 -7
- package/package.json +2 -2
- package/dist/chunk-75QBUI2P.js.map +0 -1
- package/dist/chunk-CCUCWL6M.js.map +0 -1
- package/dist/chunk-D5DM6GZB.js.map +0 -1
- package/dist/chunk-FUCQNVJL.js.map +0 -1
- package/dist/chunk-HNYBLROK.js.map +0 -1
- package/dist/chunk-K3J7YLL4.js.map +0 -1
- package/dist/chunk-KOTCWE7V.js.map +0 -1
- package/dist/chunk-MDQFZEIC.js.map +0 -1
- package/dist/chunk-NNOGFX66.js +0 -3
- package/dist/chunk-PGTCXLGY.js.map +0 -1
- package/dist/chunk-RPV77BCQ.js.map +0 -1
- package/dist/chunk-SAKW2OKH.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":"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","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
|
-
"
|
|
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-
|
|
469
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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-
|
|
12
|
-
import { Badge } from './chunk-
|
|
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-
|
|
4497
|
-
//# sourceMappingURL=chunk-
|
|
4504
|
+
//# sourceMappingURL=chunk-ZO2EKJZM.js.map
|
|
4505
|
+
//# sourceMappingURL=chunk-ZO2EKJZM.js.map
|