@handled-ai/design-system 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -4
- package/dist/charts/bar-chart-component.d.ts +24 -0
- package/dist/charts/bar-chart-component.js +123 -0
- package/dist/charts/bar-chart-component.js.map +1 -0
- package/dist/charts/chart-tooltip.d.ts +26 -0
- package/dist/charts/chart-tooltip.js +69 -0
- package/dist/charts/chart-tooltip.js.map +1 -0
- package/dist/charts/chart.d.ts +64 -0
- package/dist/charts/chart.js +285 -0
- package/dist/charts/chart.js.map +1 -0
- package/dist/charts/donut-chart.d.ts +21 -0
- package/dist/charts/donut-chart.js +96 -0
- package/dist/charts/donut-chart.js.map +1 -0
- package/dist/charts/index.d.ts +11 -0
- package/dist/charts/index.js +10 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/pipeline-overview.d.ts +76 -0
- package/dist/charts/pipeline-overview.js +372 -0
- package/dist/charts/pipeline-overview.js.map +1 -0
- package/dist/charts/sankey-chart.d.ts +52 -0
- package/dist/charts/sankey-chart.js +219 -0
- package/dist/charts/sankey-chart.js.map +1 -0
- package/dist/charts/top-line-metrics.d.ts +26 -0
- package/dist/charts/top-line-metrics.js +224 -0
- package/dist/charts/top-line-metrics.js.map +1 -0
- package/dist/charts/trend-area-chart.d.ts +21 -0
- package/dist/charts/trend-area-chart.js +150 -0
- package/dist/charts/trend-area-chart.js.map +1 -0
- package/dist/charts/volume-analysis-chart.d.ts +19 -0
- package/dist/charts/volume-analysis-chart.js +121 -0
- package/dist/charts/volume-analysis-chart.js.map +1 -0
- package/dist/components/activity-detail.d.ts +38 -0
- package/dist/components/activity-detail.js +163 -0
- package/dist/components/activity-detail.js.map +1 -0
- package/dist/components/activity-log.d.ts +21 -0
- package/dist/components/activity-log.js +61 -0
- package/dist/components/activity-log.js.map +1 -0
- package/dist/components/agent-popover.d.ts +71 -0
- package/dist/components/agent-popover.js +282 -0
- package/dist/components/agent-popover.js.map +1 -0
- package/dist/components/agent-widget.d.ts +24 -0
- package/dist/components/agent-widget.js +117 -0
- package/dist/components/agent-widget.js.map +1 -0
- package/dist/components/avatar.d.ts +13 -0
- package/dist/components/avatar.js +140 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +75 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +13 -0
- package/dist/components/button.js +83 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.d.ts +11 -0
- package/dist/components/card.js +119 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/contact-list.d.ts +34 -0
- package/dist/components/contact-list.js +84 -0
- package/dist/components/contact-list.js.map +1 -0
- package/dist/components/dashboard-cards.d.ts +10 -0
- package/dist/components/dashboard-cards.js +164 -0
- package/dist/components/dashboard-cards.js.map +1 -0
- package/dist/components/data-table-display.d.ts +19 -0
- package/dist/components/data-table-display.js +109 -0
- package/dist/components/data-table-display.js.map +1 -0
- package/dist/components/data-table-filter.d.ts +18 -0
- package/dist/components/data-table-filter.js +107 -0
- package/dist/components/data-table-filter.js.map +1 -0
- package/dist/components/data-table-quick-views.d.ts +13 -0
- package/dist/components/data-table-quick-views.js +90 -0
- package/dist/components/data-table-quick-views.js.map +1 -0
- package/dist/components/data-table-toolbar.d.ts +18 -0
- package/dist/components/data-table-toolbar.js +45 -0
- package/dist/components/data-table-toolbar.js.map +1 -0
- package/dist/components/data-table.d.ts +39 -0
- package/dist/components/data-table.js +821 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/detail-view.d.ts +44 -0
- package/dist/components/detail-view.js +165 -0
- package/dist/components/detail-view.js.map +1 -0
- package/dist/components/dialog.d.ts +19 -0
- package/dist/components/dialog.js +188 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +27 -0
- package/dist/components/dropdown-menu.js +279 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/entity-panel.d.ts +69 -0
- package/dist/components/entity-panel.js +584 -0
- package/dist/components/entity-panel.js.map +1 -0
- package/dist/components/inbox-row.d.ts +27 -0
- package/dist/components/inbox-row.js +139 -0
- package/dist/components/inbox-row.js.map +1 -0
- package/dist/components/inbox-toolbar.d.ts +21 -0
- package/dist/components/inbox-toolbar.js +203 -0
- package/dist/components/inbox-toolbar.js.map +1 -0
- package/dist/components/input.d.ts +5 -0
- package/dist/components/input.js +50 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/insights-filter-bar.d.ts +21 -0
- package/dist/components/insights-filter-bar.js +99 -0
- package/dist/components/insights-filter-bar.js.map +1 -0
- package/dist/components/item-list-display.d.ts +22 -0
- package/dist/components/item-list-display.js +240 -0
- package/dist/components/item-list-display.js.map +1 -0
- package/dist/components/item-list-filter.d.ts +16 -0
- package/dist/components/item-list-filter.js +87 -0
- package/dist/components/item-list-filter.js.map +1 -0
- package/dist/components/item-list-toolbar.d.ts +25 -0
- package/dist/components/item-list-toolbar.js +79 -0
- package/dist/components/item-list-toolbar.js.map +1 -0
- package/dist/components/item-list.d.ts +20 -0
- package/dist/components/item-list.js +702 -0
- package/dist/components/item-list.js.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.js +55 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/message.d.ts +23 -0
- package/dist/components/message.js +117 -0
- package/dist/components/message.js.map +1 -0
- package/dist/components/metric-card.d.ts +25 -0
- package/dist/components/metric-card.js +107 -0
- package/dist/components/metric-card.js.map +1 -0
- package/dist/components/performance-metrics-table.d.ts +38 -0
- package/dist/components/performance-metrics-table.js +342 -0
- package/dist/components/performance-metrics-table.js.map +1 -0
- package/dist/components/preview-list.d.ts +14 -0
- package/dist/components/preview-list.js +83 -0
- package/dist/components/preview-list.js.map +1 -0
- package/dist/components/progress.d.ts +6 -0
- package/dist/components/progress.js +69 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/quick-action-chat-area.d.ts +24 -0
- package/dist/components/quick-action-chat-area.js +178 -0
- package/dist/components/quick-action-chat-area.js.map +1 -0
- package/dist/components/quick-action-modal.d.ts +30 -0
- package/dist/components/quick-action-modal.js +288 -0
- package/dist/components/quick-action-modal.js.map +1 -0
- package/dist/components/quick-action-sidebar-nav.d.ts +51 -0
- package/dist/components/quick-action-sidebar-nav.js +528 -0
- package/dist/components/quick-action-sidebar-nav.js.map +1 -0
- package/dist/components/recommended-actions-section.d.ts +23 -0
- package/dist/components/recommended-actions-section.js +215 -0
- package/dist/components/recommended-actions-section.js.map +1 -0
- package/dist/components/report-card.d.ts +26 -0
- package/dist/components/report-card.js +69 -0
- package/dist/components/report-card.js.map +1 -0
- package/dist/components/score-analysis-modal.d.ts +26 -0
- package/dist/components/score-analysis-modal.js +141 -0
- package/dist/components/score-analysis-modal.js.map +1 -0
- package/dist/components/score-breakdown.d.ts +17 -0
- package/dist/components/score-breakdown.js +162 -0
- package/dist/components/score-breakdown.js.map +1 -0
- package/dist/components/score-feedback.d.ts +40 -0
- package/dist/components/score-feedback.js +209 -0
- package/dist/components/score-feedback.js.map +1 -0
- package/dist/components/score-ring.d.ts +14 -0
- package/dist/components/score-ring.js +79 -0
- package/dist/components/score-ring.js.map +1 -0
- package/dist/components/scroll-area.d.ts +7 -0
- package/dist/components/scroll-area.js +101 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +17 -0
- package/dist/components/select.js +228 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +6 -0
- package/dist/components/separator.js +61 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.d.ts +16 -0
- package/dist/components/sheet.js +168 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +73 -0
- package/dist/components/sidebar.js +723 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/signal-feedback-inline.d.ts +51 -0
- package/dist/components/signal-feedback-inline.js +548 -0
- package/dist/components/signal-feedback-inline.js.map +1 -0
- package/dist/components/simple-data-table.d.ts +15 -0
- package/dist/components/simple-data-table.js +91 -0
- package/dist/components/simple-data-table.js.map +1 -0
- package/dist/components/skeleton.d.ts +5 -0
- package/dist/components/skeleton.js +44 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/status-badge.d.ts +10 -0
- package/dist/components/status-badge.js +82 -0
- package/dist/components/status-badge.js.map +1 -0
- package/dist/components/styled-bar-list.d.ts +20 -0
- package/dist/components/styled-bar-list.js +59 -0
- package/dist/components/styled-bar-list.js.map +1 -0
- package/dist/components/suggested-actions.d.ts +110 -0
- package/dist/components/suggested-actions.js +1538 -0
- package/dist/components/suggested-actions.js.map +1 -0
- package/dist/components/table.d.ts +12 -0
- package/dist/components/table.js +147 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +14 -0
- package/dist/components/tabs.js +129 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +5 -0
- package/dist/components/textarea.js +47 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/timeline-activity.d.ts +34 -0
- package/dist/components/timeline-activity.js +181 -0
- package/dist/components/timeline-activity.js.map +1 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.js +93 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/view-mode-toggle.d.ts +16 -0
- package/dist/components/view-mode-toggle.js +24 -0
- package/dist/components/view-mode-toggle.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +3 -0
- package/dist/hooks/use-mobile.js +21 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +68 -1878
- package/dist/index.js +69 -10918
- package/dist/index.js.map +1 -1
- package/dist/lib/icons.d.ts +18 -0
- package/dist/lib/icons.js +21 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/prototype/index.d.ts +20 -0
- package/dist/prototype/index.js +8 -0
- package/dist/prototype/index.js.map +1 -0
- package/dist/prototype/prototype-accounts-view.d.ts +22 -0
- package/dist/prototype/prototype-accounts-view.js +70 -0
- package/dist/prototype/prototype-accounts-view.js.map +1 -0
- package/dist/prototype/prototype-admin-view.d.ts +21 -0
- package/dist/prototype/prototype-admin-view.js +53 -0
- package/dist/prototype/prototype-admin-view.js.map +1 -0
- package/dist/prototype/prototype-config.d.ts +226 -0
- package/dist/prototype/prototype-config.js +1 -0
- package/dist/prototype/prototype-config.js.map +1 -0
- package/dist/prototype/prototype-inbox-view.d.ts +48 -0
- package/dist/prototype/prototype-inbox-view.js +701 -0
- package/dist/prototype/prototype-inbox-view.js.map +1 -0
- package/dist/prototype/prototype-insights-view.d.ts +23 -0
- package/dist/prototype/prototype-insights-view.js +335 -0
- package/dist/prototype/prototype-insights-view.js.map +1 -0
- package/dist/prototype/prototype-shell.d.ts +40 -0
- package/dist/prototype/prototype-shell.js +190 -0
- package/dist/prototype/prototype-shell.js.map +1 -0
- package/dist/prototype/prototype-work-queue-view.d.ts +8 -0
- package/dist/prototype/prototype-work-queue-view.js +17 -0
- package/dist/prototype/prototype-work-queue-view.js.map +1 -0
- package/dist/three/agent-orb.d.ts +39 -0
- package/dist/three/agent-orb.js +500 -0
- package/dist/three/agent-orb.js.map +1 -0
- package/dist/three/index.d.ts +2 -0
- package/dist/three/index.js +2 -0
- package/dist/three/index.js.map +1 -0
- package/package.json +98 -17
- package/src/charts/bar-chart-component.tsx +150 -0
- package/src/charts/chart-tooltip.tsx +86 -0
- package/src/charts/chart.tsx +371 -0
- package/src/charts/donut-chart.tsx +112 -0
- package/src/charts/index.ts +13 -0
- package/src/charts/pipeline-overview.tsx +476 -0
- package/src/charts/sankey-chart.tsx +290 -0
- package/src/charts/top-line-metrics.tsx +261 -0
- package/src/charts/trend-area-chart.tsx +150 -0
- package/src/charts/volume-analysis-chart.tsx +124 -0
- package/src/components/activity-detail.tsx +233 -0
- package/src/components/activity-log.tsx +89 -0
- package/src/components/agent-popover.tsx +373 -0
- package/src/components/agent-widget.tsx +163 -0
- package/src/components/avatar.tsx +109 -0
- package/src/components/badge.tsx +48 -0
- package/src/components/button.tsx +59 -0
- package/src/components/card.tsx +92 -0
- package/src/components/contact-list.tsx +121 -0
- package/src/components/dashboard-cards.tsx +170 -0
- package/src/components/data-table-display.tsx +139 -0
- package/src/components/data-table-filter.tsx +138 -0
- package/src/components/data-table-quick-views.tsx +103 -0
- package/src/components/data-table-toolbar.tsx +56 -0
- package/src/components/data-table.tsx +915 -0
- package/src/components/detail-view.tsx +237 -0
- package/src/components/dialog.tsx +158 -0
- package/src/components/dropdown-menu.tsx +257 -0
- package/src/components/entity-panel.tsx +767 -0
- package/src/components/inbox-row.tsx +132 -0
- package/src/components/inbox-toolbar.tsx +213 -0
- package/src/components/input.tsx +21 -0
- package/src/components/insights-filter-bar.tsx +132 -0
- package/src/components/item-list-display.tsx +278 -0
- package/src/components/item-list-filter.tsx +118 -0
- package/src/components/item-list-toolbar.tsx +97 -0
- package/src/components/item-list.tsx +843 -0
- package/src/components/label.tsx +24 -0
- package/src/components/message.tsx +83 -0
- package/src/components/metric-card.tsx +178 -0
- package/src/components/performance-metrics-table.tsx +442 -0
- package/src/components/preview-list.tsx +62 -0
- package/src/components/progress.tsx +31 -0
- package/src/components/quick-action-chat-area.tsx +156 -0
- package/src/components/quick-action-modal.tsx +331 -0
- package/src/components/quick-action-sidebar-nav.tsx +592 -0
- package/src/components/recommended-actions-section.tsx +258 -0
- package/src/components/report-card.tsx +106 -0
- package/src/components/score-analysis-modal.tsx +172 -0
- package/src/components/score-breakdown.tsx +179 -0
- package/src/components/score-feedback.tsx +288 -0
- package/src/components/score-ring.tsx +87 -0
- package/src/components/scroll-area.tsx +58 -0
- package/src/components/select.tsx +190 -0
- package/src/components/separator.tsx +28 -0
- package/src/components/sheet.tsx +143 -0
- package/src/components/sidebar.tsx +726 -0
- package/src/components/signal-feedback-inline.tsx +591 -0
- package/src/components/simple-data-table.tsx +124 -0
- package/src/components/skeleton.tsx +15 -0
- package/src/components/status-badge.tsx +63 -0
- package/src/components/styled-bar-list.tsx +70 -0
- package/src/components/suggested-actions.tsx +1985 -0
- package/src/components/table.tsx +116 -0
- package/src/components/tabs.tsx +91 -0
- package/src/components/textarea.tsx +18 -0
- package/src/components/timeline-activity.tsx +234 -0
- package/src/components/tooltip.tsx +57 -0
- package/src/components/view-mode-toggle.tsx +39 -0
- package/src/hooks/use-mobile.ts +21 -0
- package/src/index.ts +77 -0
- package/src/lib/icons.ts +18 -0
- package/src/lib/utils.ts +6 -0
- package/src/prototype/index.ts +11 -0
- package/src/prototype/prototype-accounts-view.tsx +112 -0
- package/src/prototype/prototype-admin-view.tsx +67 -0
- package/src/prototype/prototype-config.ts +243 -0
- package/src/prototype/prototype-inbox-view.tsx +810 -0
- package/src/prototype/prototype-insights-view.tsx +379 -0
- package/src/prototype/prototype-shell.tsx +219 -0
- package/src/prototype/prototype-work-queue-view.tsx +30 -0
- package/src/styles/globals.css +299 -0
- package/src/three/agent-orb.tsx +557 -0
- package/src/three/index.ts +5 -0
- package/src/types/r3f.d.ts +8 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
"use client";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import {
|
|
7
|
+
flexRender,
|
|
8
|
+
getCoreRowModel,
|
|
9
|
+
getSortedRowModel,
|
|
10
|
+
useReactTable
|
|
11
|
+
} from "@tanstack/react-table";
|
|
12
|
+
import { ArrowDown, ArrowUp, ArrowUpDown, SearchX } from "lucide-react";
|
|
13
|
+
import { cn } from "../lib/utils.js";
|
|
14
|
+
function SimpleDataTable({
|
|
15
|
+
columns,
|
|
16
|
+
data,
|
|
17
|
+
onRowClick,
|
|
18
|
+
emptyIcon,
|
|
19
|
+
emptyMessage = "No rows found",
|
|
20
|
+
emptyDescription = "Try adjusting your filters",
|
|
21
|
+
className
|
|
22
|
+
}) {
|
|
23
|
+
const [sorting, setSorting] = React.useState([]);
|
|
24
|
+
const table = useReactTable({
|
|
25
|
+
data,
|
|
26
|
+
columns,
|
|
27
|
+
state: { sorting },
|
|
28
|
+
onSortingChange: setSorting,
|
|
29
|
+
getCoreRowModel: getCoreRowModel(),
|
|
30
|
+
getSortedRowModel: getSortedRowModel()
|
|
31
|
+
});
|
|
32
|
+
return /* @__PURE__ */ jsx("div", { className: cn("w-full", className), children: /* @__PURE__ */ jsxs("table", { className: "w-full border-collapse text-sm", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("thead", { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(
|
|
34
|
+
"tr",
|
|
35
|
+
{
|
|
36
|
+
className: "border-b border-border/50 hover:bg-transparent",
|
|
37
|
+
children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(
|
|
38
|
+
"th",
|
|
39
|
+
{
|
|
40
|
+
className: "h-9 px-3 text-left align-middle text-xs font-medium text-muted-foreground whitespace-nowrap",
|
|
41
|
+
children: header.isPlaceholder ? null : header.column.getCanSort() ? /* @__PURE__ */ jsxs(
|
|
42
|
+
"button",
|
|
43
|
+
{
|
|
44
|
+
type: "button",
|
|
45
|
+
className: "inline-flex items-center gap-1 hover:text-foreground transition-colors",
|
|
46
|
+
onClick: header.column.getToggleSortingHandler(),
|
|
47
|
+
children: [
|
|
48
|
+
flexRender(header.column.columnDef.header, header.getContext()),
|
|
49
|
+
header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx(ArrowUp, { className: "w-3 h-3" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx(ArrowDown, { className: "w-3 h-3" }) : /* @__PURE__ */ jsx(ArrowUpDown, { className: "w-3 h-3 opacity-0 group-hover:opacity-50" })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
) : flexRender(header.column.columnDef.header, header.getContext())
|
|
53
|
+
},
|
|
54
|
+
header.id
|
|
55
|
+
))
|
|
56
|
+
},
|
|
57
|
+
headerGroup.id
|
|
58
|
+
)) }),
|
|
59
|
+
/* @__PURE__ */ jsx("tbody", { children: table.getRowModel().rows.length > 0 ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(
|
|
60
|
+
"tr",
|
|
61
|
+
{
|
|
62
|
+
onClick: () => onRowClick == null ? void 0 : onRowClick(row.original),
|
|
63
|
+
className: cn(
|
|
64
|
+
"group border-none transition-colors",
|
|
65
|
+
onRowClick && "cursor-pointer"
|
|
66
|
+
),
|
|
67
|
+
children: row.getVisibleCells().map((cell, cellIdx) => /* @__PURE__ */ jsx(
|
|
68
|
+
"td",
|
|
69
|
+
{
|
|
70
|
+
className: cn(
|
|
71
|
+
"px-3 py-3 align-middle whitespace-nowrap group-hover:bg-muted/50",
|
|
72
|
+
cellIdx === 0 && "rounded-l-lg",
|
|
73
|
+
cellIdx === row.getVisibleCells().length - 1 && "rounded-r-lg"
|
|
74
|
+
),
|
|
75
|
+
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
76
|
+
},
|
|
77
|
+
cell.id
|
|
78
|
+
))
|
|
79
|
+
},
|
|
80
|
+
row.id
|
|
81
|
+
)) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: columns.length, className: "h-52 px-4 text-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-1 text-muted-foreground", children: [
|
|
82
|
+
emptyIcon != null ? emptyIcon : /* @__PURE__ */ jsx(SearchX, { className: "h-7 w-7 opacity-40" }),
|
|
83
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: emptyMessage }),
|
|
84
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs", children: emptyDescription })
|
|
85
|
+
] }) }) }) })
|
|
86
|
+
] }) });
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
SimpleDataTable
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=simple-data-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/simple-data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type SortingState,\n} from \"@tanstack/react-table\"\nimport { ArrowDown, ArrowUp, ArrowUpDown, SearchX } from \"lucide-react\"\n\nimport { cn } from \"../lib/utils\"\n\nexport interface SimpleDataTableProps<TData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n columns: ColumnDef<TData, any>[]\n data: TData[]\n onRowClick?: (row: TData) => void\n emptyIcon?: React.ReactNode\n emptyMessage?: string\n emptyDescription?: string\n className?: string\n}\n\nexport function SimpleDataTable<TData>({\n columns,\n data,\n onRowClick,\n emptyIcon,\n emptyMessage = \"No rows found\",\n emptyDescription = \"Try adjusting your filters\",\n className,\n}: SimpleDataTableProps<TData>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting },\n onSortingChange: setSorting,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n })\n\n return (\n <div className={cn(\"w-full\", className)}>\n <table className=\"w-full border-collapse text-sm\">\n <thead>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"border-b border-border/50 hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"h-9 px-3 text-left align-middle text-xs font-medium text-muted-foreground whitespace-nowrap\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 hover:text-foreground transition-colors\"\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {header.column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"w-3 h-3\" />\n ) : header.column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"w-3 h-3\" />\n ) : (\n <ArrowUpDown className=\"w-3 h-3 opacity-0 group-hover:opacity-50\" />\n )}\n </button>\n ) : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n onClick={() => onRowClick?.(row.original)}\n className={cn(\n \"group border-none transition-colors\",\n onRowClick && \"cursor-pointer\",\n )}\n >\n {row.getVisibleCells().map((cell, cellIdx) => (\n <td\n key={cell.id}\n className={cn(\n \"px-3 py-3 align-middle whitespace-nowrap group-hover:bg-muted/50\",\n cellIdx === 0 && \"rounded-l-lg\",\n cellIdx === row.getVisibleCells().length - 1 && \"rounded-r-lg\",\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={columns.length} className=\"h-52 px-4 text-center\">\n <div className=\"flex flex-col items-center gap-1 text-muted-foreground\">\n {emptyIcon ?? <SearchX className=\"h-7 w-7 opacity-40\" />}\n <p className=\"text-sm font-medium\">{emptyMessage}</p>\n <p className=\"text-xs\">{emptyDescription}</p>\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n}\n"],"mappings":";AA6DoB,SAOI,KAPJ;AA3DpB,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,WAAW,SAAS,aAAa,eAAe;AAEzD,SAAS,UAAU;AAaZ,SAAS,gBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB;AACF,GAAgC;AAC9B,QAAM,CAAC,SAAS,UAAU,IAAI,MAAM,SAAuB,CAAC,CAAC;AAE7D,QAAM,QAAQ,cAAc;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,OAAO,EAAE,QAAQ;AAAA,IACjB,iBAAiB;AAAA,IACjB,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,kBAAkB;AAAA,EACvC,CAAC;AAED,SACE,oBAAC,SAAI,WAAW,GAAG,UAAU,SAAS,GACpC,+BAAC,WAAM,WAAU,kCACf;AAAA,wBAAC,WACE,gBAAM,gBAAgB,EAAE,IAAI,CAAC,gBAC5B;AAAA,MAAC;AAAA;AAAA,QAEC,WAAU;AAAA,QAET,sBAAY,QAAQ,IAAI,CAAC,WACxB;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAET,iBAAO,gBAAgB,OAAO,OAAO,OAAO,WAAW,IACtD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS,OAAO,OAAO,wBAAwB;AAAA,gBAE9C;AAAA,6BAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAW,CAAC;AAAA,kBAC9D,OAAO,OAAO,YAAY,MAAM,QAC/B,oBAAC,WAAQ,WAAU,WAAU,IAC3B,OAAO,OAAO,YAAY,MAAM,SAClC,oBAAC,aAAU,WAAU,WAAU,IAE/B,oBAAC,eAAY,WAAU,4CAA2C;AAAA;AAAA;AAAA,YAEtE,IAEA,WAAW,OAAO,OAAO,UAAU,QAAQ,OAAO,WAAW,CAAC;AAAA;AAAA,UAnB3D,OAAO;AAAA,QAqBd,CACD;AAAA;AAAA,MA3BI,YAAY;AAAA,IA4BnB,CACD,GACH;AAAA,IACA,oBAAC,WACE,gBAAM,YAAY,EAAE,KAAK,SAAS,IACjC,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC,QAC5B;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,MAAM,yCAAa,IAAI;AAAA,QAChC,WAAW;AAAA,UACT;AAAA,UACA,cAAc;AAAA,QAChB;AAAA,QAEC,cAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,YAChC;AAAA,UAAC;AAAA;AAAA,YAEC,WAAW;AAAA,cACT;AAAA,cACA,YAAY,KAAK;AAAA,cACjB,YAAY,IAAI,gBAAgB,EAAE,SAAS,KAAK;AAAA,YAClD;AAAA,YAEC,qBAAW,KAAK,OAAO,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA;AAAA,UAPpD,KAAK;AAAA,QAQZ,CACD;AAAA;AAAA,MAlBI,IAAI;AAAA,IAmBX,CACD,IAED,oBAAC,QACC,8BAAC,QAAG,SAAS,QAAQ,QAAQ,WAAU,yBACrC,+BAAC,SAAI,WAAU,0DACZ;AAAA,sCAAa,oBAAC,WAAQ,WAAU,sBAAqB;AAAA,MACtD,oBAAC,OAAE,WAAU,uBAAuB,wBAAa;AAAA,MACjD,oBAAC,OAAE,WAAU,WAAW,4BAAiB;AAAA,OAC3C,GACF,GACF,GAEJ;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
var __objRest = (source, exclude) => {
|
|
18
|
+
var target = {};
|
|
19
|
+
for (var prop in source)
|
|
20
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
21
|
+
target[prop] = source[prop];
|
|
22
|
+
if (source != null && __getOwnPropSymbols)
|
|
23
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
24
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
25
|
+
target[prop] = source[prop];
|
|
26
|
+
}
|
|
27
|
+
return target;
|
|
28
|
+
};
|
|
29
|
+
import { jsx } from "react/jsx-runtime";
|
|
30
|
+
import { cn } from "../lib/utils.js";
|
|
31
|
+
function Skeleton(_a) {
|
|
32
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
"div",
|
|
35
|
+
__spreadValues({
|
|
36
|
+
"data-slot": "skeleton",
|
|
37
|
+
className: cn("bg-accent animate-pulse rounded-md", className)
|
|
38
|
+
}, props)
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
Skeleton
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/skeleton.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMI;AAJJ,SAAS,UAAU;AAEnB,SAAS,SAAS,IAAsD;AAAtD,eAAE,YAJpB,IAIkB,IAAgB,kBAAhB,IAAgB,CAAd;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,sCAAsC,SAAS;AAAA,OACzD;AAAA,EACN;AAEJ;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
type StatusType = "success" | "warning" | "error" | "neutral";
|
|
4
|
+
interface StatusBadgeProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
status: string;
|
|
6
|
+
statusMap?: Record<string, StatusType>;
|
|
7
|
+
}
|
|
8
|
+
declare function StatusBadge({ status, statusMap, className, ...props }: StatusBadgeProps): React.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { StatusBadge, type StatusBadgeProps, type StatusType };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
"use client";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defProps = Object.defineProperties;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
var __objRest = (source, exclude) => {
|
|
24
|
+
var target = {};
|
|
25
|
+
for (var prop in source)
|
|
26
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
+
target[prop] = source[prop];
|
|
28
|
+
if (source != null && __getOwnPropSymbols)
|
|
29
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
};
|
|
35
|
+
import { jsx } from "react/jsx-runtime";
|
|
36
|
+
import { cn } from "../lib/utils.js";
|
|
37
|
+
const DEFAULT_STATUS_MAP = {};
|
|
38
|
+
const STATUS_KEYWORDS = {
|
|
39
|
+
success: ["active", "hired", "completed", "success", "shortlist", "approved", "resolved", "done"],
|
|
40
|
+
warning: ["pending", "new", "scheduled", "screening", "draft", "paused", "in_progress", "review"],
|
|
41
|
+
error: ["rejected", "failed", "cancelled", "error", "no_answer", "dropped", "blocked"],
|
|
42
|
+
neutral: []
|
|
43
|
+
};
|
|
44
|
+
function inferStatusType(status, statusMap) {
|
|
45
|
+
const lower = status.toLowerCase();
|
|
46
|
+
if (statusMap[lower]) return statusMap[lower];
|
|
47
|
+
for (const [type, keywords] of Object.entries(STATUS_KEYWORDS)) {
|
|
48
|
+
if (keywords.some((kw) => lower.includes(kw))) return type;
|
|
49
|
+
}
|
|
50
|
+
return "neutral";
|
|
51
|
+
}
|
|
52
|
+
const STATUS_STYLES = {
|
|
53
|
+
success: "bg-green-100 text-green-950 dark:bg-green-950 dark:text-green-100",
|
|
54
|
+
warning: "bg-yellow-100 text-yellow-950 dark:bg-yellow-950 dark:text-yellow-100",
|
|
55
|
+
error: "bg-red-100 text-red-950 dark:bg-red-950 dark:text-red-100",
|
|
56
|
+
neutral: "bg-muted text-foreground"
|
|
57
|
+
};
|
|
58
|
+
function formatStatus(status) {
|
|
59
|
+
return status.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
60
|
+
}
|
|
61
|
+
function StatusBadge(_a) {
|
|
62
|
+
var _b = _a, { status, statusMap = DEFAULT_STATUS_MAP, className } = _b, props = __objRest(_b, ["status", "statusMap", "className"]);
|
|
63
|
+
const type = inferStatusType(status, statusMap);
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
"div",
|
|
66
|
+
__spreadProps(__spreadValues({
|
|
67
|
+
"data-slot": "status-badge",
|
|
68
|
+
"data-status": type,
|
|
69
|
+
className: cn(
|
|
70
|
+
"inline-flex items-center justify-center rounded-full px-2.5 h-6 text-xs font-medium transition-colors",
|
|
71
|
+
STATUS_STYLES[type],
|
|
72
|
+
className
|
|
73
|
+
)
|
|
74
|
+
}, props), {
|
|
75
|
+
children: formatStatus(status)
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
StatusBadge
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=status-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/status-badge.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport type StatusType = \"success\" | \"warning\" | \"error\" | \"neutral\"\n\nexport interface StatusBadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n status: string\n statusMap?: Record<string, StatusType>\n}\n\nconst DEFAULT_STATUS_MAP: Record<string, StatusType> = {}\n\nconst STATUS_KEYWORDS: Record<StatusType, string[]> = {\n success: [\"active\", \"hired\", \"completed\", \"success\", \"shortlist\", \"approved\", \"resolved\", \"done\"],\n warning: [\"pending\", \"new\", \"scheduled\", \"screening\", \"draft\", \"paused\", \"in_progress\", \"review\"],\n error: [\"rejected\", \"failed\", \"cancelled\", \"error\", \"no_answer\", \"dropped\", \"blocked\"],\n neutral: [],\n}\n\nfunction inferStatusType(status: string, statusMap: Record<string, StatusType>): StatusType {\n const lower = status.toLowerCase()\n if (statusMap[lower]) return statusMap[lower]\n\n for (const [type, keywords] of Object.entries(STATUS_KEYWORDS) as [StatusType, string[]][]) {\n if (keywords.some((kw) => lower.includes(kw))) return type\n }\n\n return \"neutral\"\n}\n\nconst STATUS_STYLES: Record<StatusType, string> = {\n success: \"bg-green-100 text-green-950 dark:bg-green-950 dark:text-green-100\",\n warning: \"bg-yellow-100 text-yellow-950 dark:bg-yellow-950 dark:text-yellow-100\",\n error: \"bg-red-100 text-red-950 dark:bg-red-950 dark:text-red-100\",\n neutral: \"bg-muted text-foreground\",\n}\n\nfunction formatStatus(status: string): string {\n return status\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \")\n}\n\nexport function StatusBadge({ status, statusMap = DEFAULT_STATUS_MAP, className, ...props }: StatusBadgeProps) {\n const type = inferStatusType(status, statusMap)\n return (\n <div\n data-slot=\"status-badge\"\n data-status={type}\n className={cn(\n \"inline-flex items-center justify-center rounded-full px-2.5 h-6 text-xs font-medium transition-colors\",\n STATUS_STYLES[type],\n className\n )}\n {...props}\n >\n {formatStatus(status)}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDI;AA9CJ,SAAS,UAAU;AASnB,MAAM,qBAAiD,CAAC;AAExD,MAAM,kBAAgD;AAAA,EACpD,SAAS,CAAC,UAAU,SAAS,aAAa,WAAW,aAAa,YAAY,YAAY,MAAM;AAAA,EAChG,SAAS,CAAC,WAAW,OAAO,aAAa,aAAa,SAAS,UAAU,eAAe,QAAQ;AAAA,EAChG,OAAO,CAAC,YAAY,UAAU,aAAa,SAAS,aAAa,WAAW,SAAS;AAAA,EACrF,SAAS,CAAC;AACZ;AAEA,SAAS,gBAAgB,QAAgB,WAAmD;AAC1F,QAAM,QAAQ,OAAO,YAAY;AACjC,MAAI,UAAU,KAAK,EAAG,QAAO,UAAU,KAAK;AAE5C,aAAW,CAAC,MAAM,QAAQ,KAAK,OAAO,QAAQ,eAAe,GAA+B;AAC1F,QAAI,SAAS,KAAK,CAAC,OAAO,MAAM,SAAS,EAAE,CAAC,EAAG,QAAO;AAAA,EACxD;AAEA,SAAO;AACT;AAEA,MAAM,gBAA4C;AAAA,EAChD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AACX;AAEA,SAAS,aAAa,QAAwB;AAC5C,SAAO,OACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAEO,SAAS,YAAY,IAAmF;AAAnF,eAAE,UAAQ,YAAY,oBAAoB,UA9CtE,IA8C4B,IAAwD,kBAAxD,IAAwD,CAAtD,UAAQ,aAAgC;AACpE,QAAM,OAAO,gBAAgB,QAAQ,SAAS;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA,cAAc,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,OACI,QARL;AAAA,MAUE,uBAAa,MAAM;AAAA;AAAA,EACtB;AAEJ;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface StyledBarItem {
|
|
4
|
+
name: string;
|
|
5
|
+
value: number;
|
|
6
|
+
href?: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
}
|
|
9
|
+
interface StyledBarListProps {
|
|
10
|
+
data: StyledBarItem[];
|
|
11
|
+
valueFormatter?: (value: number) => string;
|
|
12
|
+
className?: string;
|
|
13
|
+
showAnimation?: boolean;
|
|
14
|
+
showSubtitle?: boolean;
|
|
15
|
+
barColor?: string;
|
|
16
|
+
barStyle?: React.CSSProperties;
|
|
17
|
+
}
|
|
18
|
+
declare function StyledBarList({ data, valueFormatter, className, showAnimation, showSubtitle, barColor, barStyle, }: StyledBarListProps): React.JSX.Element;
|
|
19
|
+
|
|
20
|
+
export { type StyledBarItem, StyledBarList, type StyledBarListProps };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
"use client";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
import { cn } from "../lib/utils.js";
|
|
22
|
+
function StyledBarList({
|
|
23
|
+
data,
|
|
24
|
+
valueFormatter = (value) => value.toString(),
|
|
25
|
+
className,
|
|
26
|
+
showAnimation = true,
|
|
27
|
+
showSubtitle = false,
|
|
28
|
+
barColor = "bg-emerald-500/30",
|
|
29
|
+
barStyle
|
|
30
|
+
}) {
|
|
31
|
+
const maxValue = Math.max(...data.map((item) => item.value));
|
|
32
|
+
return /* @__PURE__ */ jsx("div", { className: cn("space-y-2", className), children: data.map((item, index) => {
|
|
33
|
+
const percentage = item.value / maxValue * 100;
|
|
34
|
+
return /* @__PURE__ */ jsxs("div", { className: showSubtitle ? "space-y-1" : "", children: [
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { className: "relative h-9 overflow-hidden rounded-md", children: [
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
className: cn(
|
|
40
|
+
"absolute inset-y-0 left-0 rounded-md",
|
|
41
|
+
!barStyle && barColor,
|
|
42
|
+
showAnimation && "transition-all duration-300"
|
|
43
|
+
),
|
|
44
|
+
style: __spreadValues({ width: `${percentage}%` }, barStyle || {})
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ jsxs("div", { className: "relative flex h-full items-center justify-between px-3", children: [
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: "truncate pr-2 text-sm font-medium text-foreground", children: item.name }),
|
|
49
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 text-sm font-semibold text-foreground", children: valueFormatter(item.value) })
|
|
50
|
+
] })
|
|
51
|
+
] }),
|
|
52
|
+
showSubtitle && item.subtitle ? /* @__PURE__ */ jsx("div", { className: "pl-3 text-xs text-muted-foreground", children: item.subtitle }) : null
|
|
53
|
+
] }, index);
|
|
54
|
+
}) });
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
StyledBarList
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=styled-bar-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/styled-bar-list.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../lib/utils\"\n\nexport interface StyledBarItem {\n name: string\n value: number\n href?: string\n subtitle?: string\n}\n\nexport interface StyledBarListProps {\n data: StyledBarItem[]\n valueFormatter?: (value: number) => string\n className?: string\n showAnimation?: boolean\n showSubtitle?: boolean\n barColor?: string\n barStyle?: React.CSSProperties\n}\n\nexport function StyledBarList({\n data,\n valueFormatter = (value) => value.toString(),\n className,\n showAnimation = true,\n showSubtitle = false,\n barColor = \"bg-emerald-500/30\",\n barStyle,\n}: StyledBarListProps) {\n const maxValue = Math.max(...data.map((item) => item.value))\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {data.map((item, index) => {\n const percentage = (item.value / maxValue) * 100\n\n return (\n <div key={index} className={showSubtitle ? \"space-y-1\" : \"\"}>\n <div className=\"relative h-9 overflow-hidden rounded-md\">\n <div\n className={cn(\n \"absolute inset-y-0 left-0 rounded-md\",\n !barStyle && barColor,\n showAnimation && \"transition-all duration-300\",\n )}\n style={{ width: `${percentage}%`, ...(barStyle || {}) }}\n />\n <div className=\"relative flex h-full items-center justify-between px-3\">\n <span className=\"truncate pr-2 text-sm font-medium text-foreground\">\n {item.name}\n </span>\n <span className=\"ml-auto shrink-0 text-sm font-semibold text-foreground\">\n {valueFormatter(item.value)}\n </span>\n </div>\n </div>\n {showSubtitle && item.subtitle ? (\n <div className=\"pl-3 text-xs text-muted-foreground\">\n {item.subtitle}\n </div>\n ) : null}\n </div>\n )\n })}\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA0Cc,cAQA,YARA;AAtCd,SAAS,UAAU;AAmBZ,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,iBAAiB,CAAC,UAAU,MAAM,SAAS;AAAA,EAC3C;AAAA,EACA,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX;AACF,GAAuB;AACrB,QAAM,WAAW,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAE3D,SACE,oBAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACtC,eAAK,IAAI,CAAC,MAAM,UAAU;AACzB,UAAM,aAAc,KAAK,QAAQ,WAAY;AAE7C,WACE,qBAAC,SAAgB,WAAW,eAAe,cAAc,IACvD;AAAA,2BAAC,SAAI,WAAU,2CACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,CAAC,YAAY;AAAA,cACb,iBAAiB;AAAA,YACnB;AAAA,YACA,OAAO,iBAAE,OAAO,GAAG,UAAU,OAAS,YAAY,CAAC;AAAA;AAAA,QACrD;AAAA,QACA,qBAAC,SAAI,WAAU,0DACb;AAAA,8BAAC,UAAK,WAAU,qDACb,eAAK,MACR;AAAA,UACA,oBAAC,UAAK,WAAU,0DACb,yBAAe,KAAK,KAAK,GAC5B;AAAA,WACF;AAAA,SACF;AAAA,MACC,gBAAgB,KAAK,WACpB,oBAAC,SAAI,WAAU,sCACZ,eAAK,UACR,IACE;AAAA,SAvBI,KAwBV;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
interface SuggestedActionsIconMap {
|
|
4
|
+
gmail?: string;
|
|
5
|
+
slack?: string;
|
|
6
|
+
zendesk?: string;
|
|
7
|
+
salesforce?: string;
|
|
8
|
+
}
|
|
9
|
+
interface SuggestedContact {
|
|
10
|
+
name: string;
|
|
11
|
+
role: string;
|
|
12
|
+
email?: string;
|
|
13
|
+
emails?: string[];
|
|
14
|
+
phone?: string;
|
|
15
|
+
phones?: string[];
|
|
16
|
+
confirmed: boolean;
|
|
17
|
+
salesforceUrl?: string;
|
|
18
|
+
lastActivity?: {
|
|
19
|
+
date: string;
|
|
20
|
+
type: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
interface SuggestedActionThreadMessage {
|
|
24
|
+
id: string;
|
|
25
|
+
from: string;
|
|
26
|
+
initials: string;
|
|
27
|
+
time: string;
|
|
28
|
+
preview: string;
|
|
29
|
+
content: string;
|
|
30
|
+
}
|
|
31
|
+
interface SuggestedActionReplyTo {
|
|
32
|
+
from: string;
|
|
33
|
+
time: string;
|
|
34
|
+
content: string;
|
|
35
|
+
channel?: string;
|
|
36
|
+
}
|
|
37
|
+
interface SuggestedActionTicket {
|
|
38
|
+
system: string;
|
|
39
|
+
priority: string;
|
|
40
|
+
type: string;
|
|
41
|
+
subject: string;
|
|
42
|
+
description: string;
|
|
43
|
+
assignee?: string;
|
|
44
|
+
tags?: string[];
|
|
45
|
+
}
|
|
46
|
+
interface SuggestedActionFollowUp {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
days: number;
|
|
49
|
+
}
|
|
50
|
+
interface SuggestedActionEmailMeta {
|
|
51
|
+
from: string;
|
|
52
|
+
fromEmail: string;
|
|
53
|
+
to?: SuggestedContact;
|
|
54
|
+
cc?: SuggestedContact[];
|
|
55
|
+
bcc?: string;
|
|
56
|
+
subject?: string;
|
|
57
|
+
}
|
|
58
|
+
interface SuggestedActionCallMeta {
|
|
59
|
+
contact?: SuggestedContact;
|
|
60
|
+
talkTrack: string;
|
|
61
|
+
allowDispatchAgent?: boolean;
|
|
62
|
+
}
|
|
63
|
+
interface SuggestedActionManualMeta {
|
|
64
|
+
taskDescription: string;
|
|
65
|
+
}
|
|
66
|
+
interface SuggestedActionBrowserMeta {
|
|
67
|
+
url: string;
|
|
68
|
+
actionDescription: string;
|
|
69
|
+
}
|
|
70
|
+
interface SuggestedAction {
|
|
71
|
+
id: number | string;
|
|
72
|
+
type: "email" | "ticket" | "slack" | "call" | "manual" | "browser";
|
|
73
|
+
label: string;
|
|
74
|
+
status: "pending" | "sent" | "dismissed";
|
|
75
|
+
content?: string;
|
|
76
|
+
replyTo?: SuggestedActionReplyTo;
|
|
77
|
+
threadMessages?: SuggestedActionThreadMessage[];
|
|
78
|
+
ticket?: SuggestedActionTicket;
|
|
79
|
+
followUp?: SuggestedActionFollowUp;
|
|
80
|
+
emailMeta?: SuggestedActionEmailMeta;
|
|
81
|
+
callMeta?: SuggestedActionCallMeta;
|
|
82
|
+
manualMeta?: SuggestedActionManualMeta;
|
|
83
|
+
browserMeta?: SuggestedActionBrowserMeta;
|
|
84
|
+
}
|
|
85
|
+
interface SuggestedActionsProps {
|
|
86
|
+
actions: SuggestedAction[];
|
|
87
|
+
title?: string;
|
|
88
|
+
onDismiss?: (id: number | string) => void;
|
|
89
|
+
onSend?: (id: number | string) => void;
|
|
90
|
+
onSaveDraft?: (id: number | string) => void;
|
|
91
|
+
accountContacts?: SuggestedContact[];
|
|
92
|
+
signature?: string | React.ReactNode;
|
|
93
|
+
onDuplicate?: (id: number | string) => void;
|
|
94
|
+
onOpenAccountDetails?: () => void;
|
|
95
|
+
onOpenRecentActivity?: () => void;
|
|
96
|
+
onMarkComplete?: (id: number | string) => void;
|
|
97
|
+
onDispatchAgent?: (id: number | string, editedContent?: string, settings?: {
|
|
98
|
+
aiDisclosureEnabled?: boolean;
|
|
99
|
+
maxDurationMinutes?: string;
|
|
100
|
+
callRecordingEnabled?: boolean;
|
|
101
|
+
recordingNoticeEnabled?: boolean;
|
|
102
|
+
}) => void;
|
|
103
|
+
iconMap?: SuggestedActionsIconMap;
|
|
104
|
+
sendLabel?: string;
|
|
105
|
+
accountDetailsLabel?: string;
|
|
106
|
+
dismissLabel?: string;
|
|
107
|
+
}
|
|
108
|
+
declare function SuggestedActions({ actions, title, onDismiss, onSend, onSaveDraft, accountContacts, signature, onDuplicate, onOpenAccountDetails, onOpenRecentActivity, onMarkComplete, onDispatchAgent, iconMap, sendLabel, accountDetailsLabel, dismissLabel, }: SuggestedActionsProps): React.JSX.Element;
|
|
109
|
+
|
|
110
|
+
export { type SuggestedAction, type SuggestedActionBrowserMeta, type SuggestedActionCallMeta, type SuggestedActionEmailMeta, type SuggestedActionFollowUp, type SuggestedActionManualMeta, type SuggestedActionReplyTo, type SuggestedActionThreadMessage, type SuggestedActionTicket, SuggestedActions, type SuggestedActionsIconMap, type SuggestedActionsProps, type SuggestedContact };
|