@schandlergarcia/sf-web-components 1.7.0 → 1.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/dist/components/library/cards/ActionList.d.ts +10 -10
- package/dist/components/library/cards/ActionList.js +2 -3
- package/dist/components/library/cards/ActionList.js.map +1 -1
- package/dist/components/library/cards/ActivityCard.d.ts +18 -5
- package/dist/components/library/cards/ActivityCard.js +3 -4
- package/dist/components/library/cards/ActivityCard.js.map +1 -1
- package/dist/components/library/cards/BaseCard.d.ts +30 -24
- package/dist/components/library/cards/BaseCard.js +2 -3
- package/dist/components/library/cards/BaseCard.js.map +1 -1
- package/dist/components/library/cards/CalloutCard.d.ts +11 -9
- package/dist/components/library/cards/CalloutCard.js +2 -3
- package/dist/components/library/cards/CalloutCard.js.map +1 -1
- package/dist/components/library/cards/ChartCard.d.ts +29 -17
- package/dist/components/library/cards/ChartCard.js +13 -14
- package/dist/components/library/cards/ChartCard.js.map +1 -1
- package/dist/components/library/cards/FeedPanel.d.ts +12 -11
- package/dist/components/library/cards/FeedPanel.js +3 -4
- package/dist/components/library/cards/FeedPanel.js.map +1 -1
- package/dist/components/library/cards/ListCard.d.ts +33 -20
- package/dist/components/library/cards/ListCard.js +35 -35
- package/dist/components/library/cards/ListCard.js.map +1 -1
- package/dist/components/library/cards/MetricCard.d.ts +23 -17
- package/dist/components/library/cards/MetricCard.js +10 -11
- package/dist/components/library/cards/MetricCard.js.map +1 -1
- package/dist/components/library/cards/MetricsStrip.d.ts +11 -11
- package/dist/components/library/cards/MetricsStrip.js +1 -1
- package/dist/components/library/cards/MetricsStrip.js.map +1 -1
- package/dist/components/library/cards/SectionCard.d.ts +17 -12
- package/dist/components/library/cards/SectionCard.js +18 -19
- package/dist/components/library/cards/SectionCard.js.map +1 -1
- package/dist/components/library/cards/SemanticMetricCard.d.ts +15 -20
- package/dist/components/library/cards/SemanticMetricCardWithLoading.d.ts +8 -7
- package/dist/components/library/cards/SemanticTableCard.d.ts +13 -18
- package/dist/components/library/cards/SemanticTableCardWithLoading.d.ts +8 -7
- package/dist/components/library/cards/StatusCard.d.ts +29 -15
- package/dist/components/library/cards/StatusCard.js +16 -17
- package/dist/components/library/cards/StatusCard.js.map +1 -1
- package/dist/components/library/cards/TableCard.d.ts +40 -23
- package/dist/components/library/cards/TableCard.js +59 -59
- package/dist/components/library/cards/TableCard.js.map +1 -1
- package/dist/components/library/cards/WidgetCard.d.ts +19 -11
- package/dist/components/library/cards/WidgetCard.js.map +1 -1
- package/dist/components/library/charts/D3Chart.d.ts +23 -16
- package/dist/components/library/charts/D3Chart.js.map +1 -1
- package/dist/components/library/charts/D3ChartTemplates.d.ts +33 -3
- package/dist/components/library/charts/D3ChartTemplates.js +7 -7
- package/dist/components/library/charts/D3ChartTemplates.js.map +1 -1
- package/dist/components/library/charts/GeoMap.d.ts +81 -18
- package/dist/components/library/charts/GeoMap.js +28 -26
- package/dist/components/library/charts/GeoMap.js.map +1 -1
- package/dist/components/library/chat/ChatBar.d.ts +14 -11
- package/dist/components/library/chat/ChatBar.js +2 -3
- package/dist/components/library/chat/ChatBar.js.map +1 -1
- package/dist/components/library/chat/ChatInput.d.ts +9 -8
- package/dist/components/library/chat/ChatInput.js.map +1 -1
- package/dist/components/library/chat/ChatMessage.d.ts +17 -4
- package/dist/components/library/chat/ChatMessage.js.map +1 -1
- package/dist/components/library/chat/ChatMessageList.d.ts +11 -8
- package/dist/components/library/chat/ChatMessageList.js.map +1 -1
- package/dist/components/library/chat/ChatPanel.d.ts +16 -12
- package/dist/components/library/chat/ChatPanel.js +8 -9
- package/dist/components/library/chat/ChatPanel.js.map +1 -1
- package/dist/components/library/chat/ChatSuggestions.d.ts +5 -4
- package/dist/components/library/chat/ChatSuggestions.js +2 -3
- package/dist/components/library/chat/ChatSuggestions.js.map +1 -1
- package/dist/components/library/chat/ChatToolCall.d.ts +11 -3
- package/dist/components/library/chat/ChatToolCall.js.map +1 -1
- package/dist/components/library/chat/ChatTypingIndicator.d.ts +4 -3
- package/dist/components/library/chat/ChatTypingIndicator.js +2 -3
- package/dist/components/library/chat/ChatTypingIndicator.js.map +1 -1
- package/dist/components/library/chat/ChatWelcome.d.ts +9 -7
- package/dist/components/library/chat/ChatWelcome.js +6 -7
- package/dist/components/library/chat/ChatWelcome.js.map +1 -1
- package/dist/components/library/chat/index.d.ts +10 -0
- package/dist/components/library/chat/useChatState.d.ts +36 -11
- package/dist/components/library/chat/useChatState.js +63 -46
- package/dist/components/library/chat/useChatState.js.map +1 -1
- package/dist/components/library/data/DataModeProvider.d.ts +15 -11
- package/dist/components/library/data/DataModeProvider.js +1 -1
- package/dist/components/library/data/DataModeProvider.js.map +1 -1
- package/dist/components/library/data/DataModeToggle.d.ts +4 -3
- package/dist/components/library/data/DataModeToggle.js +4 -5
- package/dist/components/library/data/DataModeToggle.js.map +1 -1
- package/dist/components/library/data/chartDataProvider.d.ts +41 -3
- package/dist/components/library/data/filterUtils.d.ts +38 -9
- package/dist/components/library/data/filterUtils.js.map +1 -1
- package/dist/components/library/data/useDataSource.d.ts +6 -4
- package/dist/components/library/data/useDataSource.js.map +1 -1
- package/dist/components/library/data/usePageFilters.d.ts +31 -5
- package/dist/components/library/data/usePageFilters.js +6 -2
- package/dist/components/library/data/usePageFilters.js.map +1 -1
- package/dist/components/library/filters/FilterBar.d.ts +18 -8
- package/dist/components/library/filters/FilterBar.js +2 -3
- package/dist/components/library/filters/FilterBar.js.map +1 -1
- package/dist/components/library/filters/SearchFilter.d.ts +7 -6
- package/dist/components/library/filters/SearchFilter.js +2 -3
- package/dist/components/library/filters/SearchFilter.js.map +1 -1
- package/dist/components/library/filters/SelectFilter.d.ts +13 -7
- package/dist/components/library/filters/SelectFilter.js +2 -3
- package/dist/components/library/filters/SelectFilter.js.map +1 -1
- package/dist/components/library/filters/ToggleFilter.d.ts +7 -5
- package/dist/components/library/filters/ToggleFilter.js +2 -3
- package/dist/components/library/filters/ToggleFilter.js.map +1 -1
- package/dist/components/library/forms/FormField.d.ts +10 -8
- package/dist/components/library/forms/FormField.js +3 -4
- package/dist/components/library/forms/FormField.js.map +1 -1
- package/dist/components/library/forms/FormModal.d.ts +23 -14
- package/dist/components/library/forms/FormModal.js.map +1 -1
- package/dist/components/library/forms/FormRenderer.d.ts +29 -9
- package/dist/components/library/forms/FormRenderer.js +6 -7
- package/dist/components/library/forms/FormRenderer.js.map +1 -1
- package/dist/components/library/forms/FormSection.d.ts +10 -8
- package/dist/components/library/forms/FormSection.js +2 -3
- package/dist/components/library/forms/FormSection.js.map +1 -1
- package/dist/components/library/forms/index.d.ts +5 -0
- package/dist/components/library/forms/useFormState.d.ts +23 -15
- package/dist/components/library/forms/useFormState.js +53 -47
- package/dist/components/library/forms/useFormState.js.map +1 -1
- package/dist/components/library/index.d.ts +92 -73
- package/dist/components/library/index.js +25 -25
- package/dist/components/library/index.js.map +1 -1
- package/dist/components/library/layout/PageContainer.d.ts +6 -4
- package/dist/components/library/layout/PageContainer.js +4 -5
- package/dist/components/library/layout/PageContainer.js.map +1 -1
- package/dist/components/library/skeletons/CardSkeleton.d.ts +5 -4
- package/dist/components/library/skeletons/CardSkeleton.js +2 -3
- package/dist/components/library/skeletons/CardSkeleton.js.map +1 -1
- package/dist/components/library/theme/AppThemeProvider.d.ts +13 -50
- package/dist/components/library/theme/AppThemeProvider.js.map +1 -1
- package/dist/components/library/theme/tokens.d.ts +45 -44
- package/dist/components/library/theme/tokens.js.map +1 -1
- package/package.json +4 -1
- package/src/components/library/cards/{ActionList.jsx → ActionList.tsx} +13 -9
- package/src/components/library/cards/{ActivityCard.jsx → ActivityCard.tsx} +33 -4
- package/src/components/library/cards/{BaseCard.jsx → BaseCard.tsx} +33 -6
- package/src/components/library/cards/{CalloutCard.jsx → CalloutCard.tsx} +12 -10
- package/src/components/library/cards/{ChartCard.jsx → ChartCard.tsx} +32 -6
- package/src/components/library/cards/{FeedPanel.jsx → FeedPanel.tsx} +13 -2
- package/src/components/library/cards/{ListCard.jsx → ListCard.tsx} +43 -7
- package/src/components/library/cards/{MetricCard.jsx → MetricCard.tsx} +25 -6
- package/src/components/library/cards/{MetricsStrip.jsx → MetricsStrip.tsx} +22 -12
- package/src/components/library/cards/{SectionCard.jsx → SectionCard.tsx} +27 -8
- package/src/components/library/cards/{SemanticMetricCard.jsx → SemanticMetricCard.tsx} +18 -6
- package/src/components/library/cards/{SemanticMetricCardWithLoading.jsx → SemanticMetricCardWithLoading.tsx} +9 -3
- package/src/components/library/cards/{SemanticTableCard.jsx → SemanticTableCard.tsx} +16 -5
- package/src/components/library/cards/{SemanticTableCardWithLoading.jsx → SemanticTableCardWithLoading.tsx} +9 -5
- package/src/components/library/cards/{StatusCard.jsx → StatusCard.tsx} +61 -12
- package/src/components/library/cards/{TableCard.jsx → TableCard.tsx} +51 -12
- package/src/components/library/cards/{WidgetCard.jsx → WidgetCard.tsx} +28 -5
- package/src/components/library/charts/{D3Chart.jsx → D3Chart.tsx} +27 -7
- package/src/components/library/charts/{D3ChartTemplates.jsx → D3ChartTemplates.tsx} +60 -28
- package/src/components/library/charts/{GeoMap.jsx → GeoMap.tsx} +106 -17
- package/src/components/library/chat/{ChatBar.jsx → ChatBar.tsx} +19 -8
- package/src/components/library/chat/{ChatInput.jsx → ChatInput.tsx} +13 -11
- package/src/components/library/chat/{ChatMessage.jsx → ChatMessage.tsx} +22 -9
- package/src/components/library/chat/{ChatMessageList.jsx → ChatMessageList.tsx} +13 -11
- package/src/components/library/chat/{ChatPanel.jsx → ChatPanel.tsx} +16 -13
- package/src/components/library/chat/{ChatSuggestions.jsx → ChatSuggestions.tsx} +6 -5
- package/src/components/library/chat/{ChatToolCall.jsx → ChatToolCall.tsx} +14 -4
- package/src/components/library/chat/{ChatTypingIndicator.jsx → ChatTypingIndicator.tsx} +5 -2
- package/src/components/library/chat/{ChatWelcome.jsx → ChatWelcome.tsx} +9 -7
- package/src/components/library/chat/index.tsx +26 -0
- package/src/components/library/chat/useChatState.tsx +181 -0
- package/src/components/library/data/{DataModeProvider.jsx → DataModeProvider.tsx} +25 -8
- package/src/components/library/data/{DataModeToggle.jsx → DataModeToggle.tsx} +5 -2
- package/src/components/library/data/{chartDataProvider.jsx → chartDataProvider.tsx} +49 -5
- package/src/components/library/data/{filterUtils.jsx → filterUtils.tsx} +58 -12
- package/src/components/library/data/{useDataSource.jsx → useDataSource.tsx} +9 -2
- package/src/components/library/data/{usePageFilters.jsx → usePageFilters.tsx} +49 -9
- package/src/components/library/filters/{FilterBar.jsx → FilterBar.tsx} +21 -11
- package/src/components/library/filters/{SearchFilter.jsx → SearchFilter.tsx} +8 -2
- package/src/components/library/filters/{SelectFilter.jsx → SelectFilter.tsx} +15 -8
- package/src/components/library/filters/{ToggleFilter.jsx → ToggleFilter.tsx} +7 -6
- package/src/components/library/forms/{FormField.jsx → FormField.tsx} +91 -45
- package/src/components/library/forms/{FormModal.jsx → FormModal.tsx} +21 -20
- package/src/components/library/forms/{FormRenderer.jsx → FormRenderer.tsx} +32 -10
- package/src/components/library/forms/{FormSection.jsx → FormSection.tsx} +13 -7
- package/src/components/library/forms/index.tsx +11 -0
- package/src/components/library/forms/{useFormState.jsx → useFormState.tsx} +43 -23
- package/src/components/library/{index.jsx → index.ts} +14 -14
- package/src/components/library/layout/{PageContainer.jsx → PageContainer.tsx} +6 -3
- package/src/components/library/skeletons/{CardSkeleton.jsx → CardSkeleton.tsx} +5 -4
- package/src/components/library/theme/{AppThemeProvider.jsx → AppThemeProvider.tsx} +20 -7
- package/src/components/library/theme/{tokens.jsx → tokens.tsx} +37 -3
- package/src/components/library/chat/index.jsx +0 -10
- package/src/components/library/chat/useChatState.jsx +0 -130
- package/src/components/library/forms/index.jsx +0 -5
- /package/src/components/library/filters/{index.jsx → index.ts} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
* Row of action buttons — typically used at the bottom of a dashboard section.
|
|
3
|
-
*
|
|
4
|
-
* @param {{ label: string, [key]: any }[] | string[]} actions
|
|
5
|
-
* @param {string} title
|
|
6
|
-
* @param {Function} onAction Called with the action object/string when clicked
|
|
7
|
-
*/
|
|
8
|
-
export default function ActionList({ actions, title, onAction, className, }: {
|
|
1
|
+
export interface Action {
|
|
9
2
|
label: string;
|
|
10
|
-
[key]:
|
|
11
|
-
}
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface ActionListProps {
|
|
6
|
+
actions?: (Action | string)[];
|
|
7
|
+
title?: string;
|
|
8
|
+
onAction?: (action: Action | string) => void;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export default function ActionList({ actions, title, onAction, className, }: ActionListProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsxs as i, jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
import m from "../ui/UIButton.js";
|
|
4
|
-
function
|
|
3
|
+
function p({
|
|
5
4
|
actions: s = [],
|
|
6
5
|
title: t,
|
|
7
6
|
onAction: l,
|
|
@@ -22,6 +21,6 @@ function x({
|
|
|
22
21
|
] });
|
|
23
22
|
}
|
|
24
23
|
export {
|
|
25
|
-
|
|
24
|
+
p as default
|
|
26
25
|
};
|
|
27
26
|
//# sourceMappingURL=ActionList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionList.js","sources":["../../../../src/components/library/cards/ActionList.
|
|
1
|
+
{"version":3,"file":"ActionList.js","sources":["../../../../src/components/library/cards/ActionList.tsx"],"sourcesContent":["import UIButton from \"../ui/UIButton\";\n\nexport interface Action {\n label: string;\n [key: string]: unknown;\n}\n\nexport interface ActionListProps {\n actions?: (Action | string)[];\n title?: string;\n onAction?: (action: Action | string) => void;\n className?: string;\n}\n\nexport default function ActionList({\n actions = [],\n title,\n onAction,\n className = \"\",\n}: ActionListProps) {\n return (\n <div className={`rounded-2xl border border-slate-200 bg-white p-4 dark:border-slate-800 dark:bg-slate-900 ${className}`}>\n {title && (\n <div className=\"mb-3 text-sm font-medium text-slate-900 dark:text-slate-50\">\n {title}\n </div>\n )}\n <div className=\"flex flex-wrap gap-2\">\n {actions.map((action, i) => (\n <UIButton\n key={i}\n size=\"sm\"\n variant={i === 0 ? \"primary\" : \"outline\"}\n onClick={() => onAction?.(action)}\n >\n {typeof action === \"string\" ? action : action.label}\n </UIButton>\n ))}\n </div>\n </div>\n );\n}\n"],"names":["ActionList","actions","title","onAction","className","jsxs","jsx","action","i","UIButton"],"mappings":";;AAcA,SAAwBA,EAAW;AAAA,EACjC,SAAAC,IAAU,CAAA;AAAA,EACV,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAoB;AAClB,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAW,4FAA4FD,CAAS,IAClH,UAAA;AAAA,IAAAF,KACC,gBAAAI,EAAC,OAAA,EAAI,WAAU,8DACZ,UAAAJ,GACH;AAAA,IAEF,gBAAAI,EAAC,SAAI,WAAU,wBACZ,YAAQ,IAAI,CAACC,GAAQC,MACpB,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,SAASD,MAAM,IAAI,YAAY;AAAA,QAC/B,SAAS,MAAML,IAAWI,CAAM;AAAA,QAE/B,UAAA,OAAOA,KAAW,WAAWA,IAASA,EAAO;AAAA,MAAA;AAAA,MALzCC;AAAA,IAAA,CAOR,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
type ActionStatus = "working" | "pending" | "complete" | "error";
|
|
2
|
+
export interface ActivityAction {
|
|
3
|
+
id: string;
|
|
4
|
+
status: ActionStatus;
|
|
5
|
+
title?: string;
|
|
6
|
+
action?: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
traveler?: string;
|
|
9
|
+
timestamp?: string;
|
|
10
|
+
startedAt?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ActivityCardProps {
|
|
13
|
+
title?: string;
|
|
14
|
+
actions?: ActivityAction[];
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
export default function ActivityCard({ title, actions, className }: ActivityCardProps): import("react/jsx-runtime").JSX.Element | null;
|
|
18
|
+
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
import { AnimatePresence as n, motion as o } from "framer-motion";
|
|
4
3
|
import { ExclamationCircleIcon as c, CheckCircleIcon as d, ClockIcon as m, ArrowPathIcon as p } from "@heroicons/react/24/outline";
|
|
5
4
|
import x from "../ui/Text.js";
|
|
@@ -28,13 +27,13 @@ function u({ action: e }) {
|
|
|
28
27
|
}
|
|
29
28
|
);
|
|
30
29
|
}
|
|
31
|
-
function
|
|
30
|
+
function g({ title: e = "Activity", actions: r = [], className: a = "" }) {
|
|
32
31
|
return r.length === 0 ? null : /* @__PURE__ */ i("div", { className: a, children: [
|
|
33
|
-
e && /* @__PURE__ */ t(x, { as: "div", size: "xs", weight: "
|
|
32
|
+
e && /* @__PURE__ */ t(x, { as: "div", size: "xs", weight: "medium", muted: !0, className: "mb-2 uppercase tracking-wider", children: e }),
|
|
34
33
|
/* @__PURE__ */ t("div", { className: "space-y-2", children: /* @__PURE__ */ t(n, { children: r.map((s) => /* @__PURE__ */ t(u, { action: s }, s.id)) }) })
|
|
35
34
|
] });
|
|
36
35
|
}
|
|
37
36
|
export {
|
|
38
|
-
|
|
37
|
+
g as default
|
|
39
38
|
};
|
|
40
39
|
//# sourceMappingURL=ActivityCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityCard.js","sources":["../../../../src/components/library/cards/ActivityCard.
|
|
1
|
+
{"version":3,"file":"ActivityCard.js","sources":["../../../../src/components/library/cards/ActivityCard.tsx"],"sourcesContent":["import React from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { ArrowPathIcon, CheckCircleIcon, ExclamationCircleIcon, ClockIcon } from \"@heroicons/react/24/outline\";\nimport UIText from \"../ui/Text\";\n\ntype ActionStatus = \"working\" | \"pending\" | \"complete\" | \"error\";\n\ninterface StatusIconConfig {\n Icon: React.ComponentType<{ className?: string }>;\n color: string;\n spin: boolean;\n}\n\nconst STATUS_ICON: Record<ActionStatus, StatusIconConfig> = {\n working: { Icon: ArrowPathIcon, color: \"text-indigo-500\", spin: true },\n pending: { Icon: ClockIcon, color: \"text-slate-400\", spin: false },\n complete: { Icon: CheckCircleIcon, color: \"text-emerald-500\", spin: false },\n error: { Icon: ExclamationCircleIcon, color: \"text-red-500\", spin: false },\n};\n\nexport interface ActivityAction {\n id: string;\n status: ActionStatus;\n title?: string;\n action?: string;\n subtitle?: string;\n traveler?: string;\n timestamp?: string;\n startedAt?: string;\n}\n\ninterface ActionItemProps {\n action: ActivityAction;\n}\n\nfunction ActionItem({ action }: ActionItemProps) {\n const s = STATUS_ICON[action.status] ?? STATUS_ICON.pending;\n return (\n <motion.div\n initial={{ y: 12, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n exit={{ y: -12, opacity: 0 }}\n className=\"rounded-lg border border-slate-100 bg-slate-50 p-3 dark:border-slate-800 dark:bg-slate-950/40\"\n >\n <div className=\"flex items-start gap-2\">\n <s.Icon className={`mt-0.5 h-4 w-4 shrink-0 ${s.color} ${s.spin ? \"animate-spin\" : \"\"}`} />\n <div className=\"min-w-0\">\n <div className=\"text-xs font-medium text-slate-700 dark:text-slate-200\">{action.title ?? action.action}</div>\n {(action.subtitle ?? action.traveler ?? action.timestamp ?? action.startedAt) && (\n <div className=\"mt-0.5 text-[10px] text-slate-400\">\n {[action.subtitle, action.traveler, action.timestamp ?? action.startedAt].filter(Boolean).join(\" · \")}\n </div>\n )}\n </div>\n </div>\n </motion.div>\n );\n}\n\nexport interface ActivityCardProps {\n title?: string;\n actions?: ActivityAction[];\n className?: string;\n}\n\nexport default function ActivityCard({ title = \"Activity\", actions = [], className = \"\" }: ActivityCardProps) {\n if (actions.length === 0) return null;\n\n return (\n <div className={className}>\n {title && (\n <UIText as=\"div\" size=\"xs\" weight=\"medium\" muted className=\"mb-2 uppercase tracking-wider\">\n {title}\n </UIText>\n )}\n <div className=\"space-y-2\">\n <AnimatePresence>\n {actions.map(a => (\n <ActionItem key={a.id} action={a} />\n ))}\n </AnimatePresence>\n </div>\n </div>\n );\n}\n"],"names":["STATUS_ICON","ArrowPathIcon","ClockIcon","CheckCircleIcon","ExclamationCircleIcon","ActionItem","action","s","jsx","motion","jsxs","ActivityCard","title","actions","className","UIText","AnimatePresence","a"],"mappings":";;;;AAaA,MAAMA,IAAsD;AAAA,EAC1D,SAAU,EAAE,MAAMC,GAAsB,OAAO,mBAAoB,MAAM,GAAA;AAAA,EACzE,SAAU,EAAE,MAAMC,GAAsB,OAAO,kBAAoB,MAAM,GAAA;AAAA,EACzE,UAAU,EAAE,MAAMC,GAAsB,OAAO,oBAAoB,MAAM,GAAA;AAAA,EACzE,OAAU,EAAE,MAAMC,GAAuB,OAAO,gBAAoB,MAAM,GAAA;AAC5E;AAiBA,SAASC,EAAW,EAAE,QAAAC,KAA2B;AAC/C,QAAMC,IAAIP,EAAYM,EAAO,MAAM,KAAKN,EAAY;AACpD,SACE,gBAAAQ;AAAA,IAACC,EAAO;AAAA,IAAP;AAAA,MACC,SAAS,EAAE,GAAG,IAAI,SAAS,EAAA;AAAA,MAC3B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,MAC1B,MAAM,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,MACzB,WAAU;AAAA,MAEV,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,QAAA,gBAAAF,EAACD,EAAE,MAAF,EAAO,WAAW,2BAA2BA,EAAE,KAAK,IAAIA,EAAE,OAAO,iBAAiB,EAAE,GAAA,CAAI;AAAA,QACzF,gBAAAG,EAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,UAAA,gBAAAF,EAAC,SAAI,WAAU,0DAA0D,UAAAF,EAAO,SAASA,EAAO,QAAO;AAAA,WACrGA,EAAO,YAAYA,EAAO,YAAYA,EAAO,aAAaA,EAAO,cACjE,gBAAAE,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA,CAACF,EAAO,UAAUA,EAAO,UAAUA,EAAO,aAAaA,EAAO,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,KAAK,EAAA,CACtG;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAQA,SAAwBK,EAAa,EAAE,OAAAC,IAAQ,YAAY,SAAAC,IAAU,IAAI,WAAAC,IAAY,MAAyB;AAC5G,SAAID,EAAQ,WAAW,IAAU,OAG/B,gBAAAH,EAAC,SAAI,WAAAI,GACF,UAAA;AAAA,IAAAF,KACC,gBAAAJ,EAACO,GAAA,EAAO,IAAG,OAAM,MAAK,MAAK,QAAO,UAAS,OAAK,IAAC,WAAU,iCACxD,UAAAH,GACH;AAAA,sBAED,OAAA,EAAI,WAAU,aACb,UAAA,gBAAAJ,EAACQ,KACE,UAAAH,EAAQ,IAAI,CAAAI,MACX,gBAAAT,EAACH,KAAsB,QAAQY,EAAA,GAAdA,EAAE,EAAe,CACnC,GACH,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,24 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
type Variant = "default" | "metric" | "chart" | "table" | "widget" | "status";
|
|
3
|
+
type Size = "xs" | "sm" | "md" | "lg" | "xl" | "full";
|
|
4
|
+
type Padding = "none" | "xs" | "sm" | "default" | "lg" | "xl";
|
|
5
|
+
type Radius = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
|
|
6
|
+
export interface BaseCardProps extends Omit<React.HTMLAttributes<HTMLDivElement | HTMLButtonElement>, "onPress"> {
|
|
7
|
+
header?: React.ReactNode;
|
|
8
|
+
body?: React.ReactNode;
|
|
9
|
+
footer?: React.ReactNode;
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
variant?: Variant;
|
|
12
|
+
size?: Size;
|
|
13
|
+
padding?: Padding;
|
|
14
|
+
shadow?: boolean;
|
|
15
|
+
radius?: Radius;
|
|
16
|
+
border?: boolean;
|
|
17
|
+
isHoverable?: boolean;
|
|
18
|
+
isPressable?: boolean;
|
|
19
|
+
isLoading?: boolean;
|
|
20
|
+
isDisabled?: boolean;
|
|
21
|
+
isSelected?: boolean;
|
|
22
|
+
className?: string;
|
|
23
|
+
headerClassName?: string;
|
|
24
|
+
bodyClassName?: string;
|
|
25
|
+
footerClassName?: string;
|
|
26
|
+
onPress?: () => void;
|
|
27
|
+
onHover?: () => void;
|
|
28
|
+
}
|
|
29
|
+
export default function BaseCard({ header, body, footer, children, variant, size, padding, shadow, radius, border, isHoverable, isPressable, isLoading, isDisabled, isSelected, className, headerClassName, bodyClassName, footerClassName, onPress, onHover, ...rest }: BaseCardProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx as a, jsxs as e, Fragment as z } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
const c = {
|
|
4
3
|
default: "",
|
|
5
4
|
metric: "",
|
|
@@ -22,7 +21,7 @@ const c = {
|
|
|
22
21
|
lg: "p-6",
|
|
23
22
|
xl: "p-8"
|
|
24
23
|
};
|
|
25
|
-
function
|
|
24
|
+
function G({
|
|
26
25
|
header: t,
|
|
27
26
|
body: n,
|
|
28
27
|
footer: d,
|
|
@@ -84,6 +83,6 @@ function M({
|
|
|
84
83
|
);
|
|
85
84
|
}
|
|
86
85
|
export {
|
|
87
|
-
|
|
86
|
+
G as default
|
|
88
87
|
};
|
|
89
88
|
//# sourceMappingURL=BaseCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseCard.js","sources":["../../../../src/components/library/cards/BaseCard.
|
|
1
|
+
{"version":3,"file":"BaseCard.js","sources":["../../../../src/components/library/cards/BaseCard.tsx"],"sourcesContent":["import React from \"react\";\n\ntype Variant = \"default\" | \"metric\" | \"chart\" | \"table\" | \"widget\" | \"status\";\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\ntype Padding = \"none\" | \"xs\" | \"sm\" | \"default\" | \"lg\" | \"xl\";\ntype Radius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\n\nconst VARIANT_CLASSES: Record<Variant, string> = {\n default: \"\",\n metric: \"\",\n chart: \"\",\n table: \"\",\n widget: \"\",\n status: \"\"\n};\n\nconst SIZE_CLASSES: Record<Size, string> = {\n xs: \"\",\n sm: \"min-h-[80px]\",\n md: \"min-h-[120px]\",\n lg: \"min-h-[160px]\",\n xl: \"min-h-[220px]\",\n full: \"\"\n};\n\nconst PADDING_CLASSES: Record<Padding, string> = {\n none: \"p-0\",\n xs: \"p-2\",\n sm: \"p-3\",\n default: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\"\n};\n\nexport interface BaseCardProps extends Omit<React.HTMLAttributes<HTMLDivElement | HTMLButtonElement>, \"onPress\"> {\n header?: React.ReactNode;\n body?: React.ReactNode;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n variant?: Variant;\n size?: Size;\n padding?: Padding;\n shadow?: boolean;\n radius?: Radius;\n border?: boolean;\n isHoverable?: boolean;\n isPressable?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n onPress?: () => void;\n onHover?: () => void;\n}\n\nexport default function BaseCard({\n header,\n body,\n footer,\n children,\n variant = \"default\",\n size = \"md\",\n padding = \"default\",\n shadow = true,\n radius = \"2xl\",\n border = true,\n isHoverable = false,\n isPressable = false,\n isLoading = false,\n isDisabled = false,\n isSelected = false,\n className = \"\",\n headerClassName = \"\",\n bodyClassName = \"\",\n footerClassName = \"\",\n onPress,\n onHover,\n ...rest\n}: BaseCardProps) {\n const Comp = isPressable ? \"button\" : \"div\";\n\n const radiusClass = radius ? `rounded-${radius}` : \"rounded-2xl\";\n const paddingClass = PADDING_CLASSES[padding] ?? PADDING_CLASSES.default;\n const sizeClass = SIZE_CLASSES[size] ?? SIZE_CLASSES.md;\n const variantClass = VARIANT_CLASSES[variant] ?? VARIANT_CLASSES.default;\n\n const interactive = isHoverable || isPressable;\n const disabled = isDisabled || (isPressable && !onPress);\n\n return (\n <Comp\n type={isPressable ? \"button\" : undefined}\n onClick={isPressable ? onPress : undefined}\n onMouseEnter={onHover}\n disabled={isPressable ? disabled : undefined}\n className={[\n \"w-full text-left\",\n radiusClass,\n border ? \"border border-slate-200 dark:border-slate-800\" : \"border border-transparent\",\n \"bg-white dark:bg-slate-900\",\n shadow ? \"shadow-sm\" : \"\",\n sizeClass,\n variantClass,\n interactive ? \"transition hover:-translate-y-[1px] hover:shadow-md\" : \"\",\n isSelected ? \"ring-2 ring-brand-500\" : \"\",\n disabled ? \"opacity-60\" : \"\",\n className\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n <div className={paddingClass}>\n {header != null ? <div className={headerClassName}>{header}</div> : null}\n\n {isLoading ? (\n <div className={[\"mt-3 space-y-3\", bodyClassName].filter(Boolean).join(\" \")}>\n <div className=\"h-4 w-1/3 animate-pulse rounded bg-slate-200 dark:bg-slate-800\" />\n <div className=\"h-4 w-2/3 animate-pulse rounded bg-slate-200 dark:bg-slate-800\" />\n <div className=\"h-4 w-1/2 animate-pulse rounded bg-slate-200 dark:bg-slate-800\" />\n </div>\n ) : (\n <>\n {body != null ? <div className={bodyClassName}>{body}</div> : null}\n {children}\n </>\n )}\n\n {footer != null ? <div className={footerClassName}>{footer}</div> : null}\n </div>\n </Comp>\n );\n}\n"],"names":["VARIANT_CLASSES","SIZE_CLASSES","PADDING_CLASSES","BaseCard","header","body","footer","children","variant","size","padding","shadow","radius","border","isHoverable","isPressable","isLoading","isDisabled","isSelected","className","headerClassName","bodyClassName","footerClassName","onPress","onHover","rest","Comp","radiusClass","paddingClass","sizeClass","variantClass","interactive","disabled","jsx","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
type Tone = "neutral" | "success" | "warning" | "danger" | "info";
|
|
3
|
+
export interface CalloutCardProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
message: string | React.ReactNode;
|
|
6
|
+
tone?: Tone;
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export default function CalloutCard({ title, message, tone, icon, className, }: CalloutCardProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsx as e, jsxs as d } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
const t = {
|
|
4
3
|
neutral: "border-slate-200 bg-slate-50 text-slate-700 dark:border-slate-800 dark:bg-slate-950/30 dark:text-slate-200",
|
|
5
4
|
success: "border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200",
|
|
@@ -7,7 +6,7 @@ const t = {
|
|
|
7
6
|
danger: "border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200",
|
|
8
7
|
info: "border-blue-200 bg-blue-50 text-blue-800 dark:border-blue-900/40 dark:bg-blue-950/20 dark:text-blue-200"
|
|
9
8
|
};
|
|
10
|
-
function
|
|
9
|
+
function m({
|
|
11
10
|
title: r,
|
|
12
11
|
message: l,
|
|
13
12
|
tone: b = "neutral",
|
|
@@ -23,6 +22,6 @@ function n({
|
|
|
23
22
|
] }) });
|
|
24
23
|
}
|
|
25
24
|
export {
|
|
26
|
-
|
|
25
|
+
m as default
|
|
27
26
|
};
|
|
28
27
|
//# sourceMappingURL=CalloutCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutCard.js","sources":["../../../../src/components/library/cards/CalloutCard.
|
|
1
|
+
{"version":3,"file":"CalloutCard.js","sources":["../../../../src/components/library/cards/CalloutCard.tsx"],"sourcesContent":["import React from \"react\";\n\ntype Tone = \"neutral\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\nconst TONE_CLASSES: Record<Tone, string> = {\n neutral: \"border-slate-200 bg-slate-50 text-slate-700 dark:border-slate-800 dark:bg-slate-950/30 dark:text-slate-200\",\n success: \"border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900/40 dark:bg-emerald-950/20 dark:text-emerald-200\",\n warning: \"border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-900/40 dark:bg-amber-950/20 dark:text-amber-200\",\n danger: \"border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900/40 dark:bg-rose-950/20 dark:text-rose-200\",\n info: \"border-blue-200 bg-blue-50 text-blue-800 dark:border-blue-900/40 dark:bg-blue-950/20 dark:text-blue-200\",\n};\n\nexport interface CalloutCardProps {\n title?: string;\n message: string | React.ReactNode;\n tone?: Tone;\n icon?: React.ReactNode;\n className?: string;\n}\n\nexport default function CalloutCard({\n title,\n message,\n tone = \"neutral\",\n icon,\n className = \"\",\n}: CalloutCardProps) {\n return (\n <div className={`rounded-xl border p-4 ${TONE_CLASSES[tone] ?? TONE_CLASSES.neutral} ${className}`}>\n <div className=\"flex gap-3\">\n {icon && <div className=\"mt-0.5 shrink-0\">{icon}</div>}\n <div>\n {title && <div className=\"mb-1 text-sm font-semibold\">{title}</div>}\n <div className=\"text-sm\">{message}</div>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["TONE_CLASSES","CalloutCard","title","message","tone","icon","className","jsx","jsxs"],"mappings":";AAIA,MAAMA,IAAqC;AAAA,EACzC,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AACR;AAUA,SAAwBC,EAAY;AAAA,EAClC,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAqB;AACnB,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAW,yBAAyBP,EAAaI,CAAI,KAAKJ,EAAa,OAAO,IAAIM,CAAS,IAC9F,UAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,cACZ,UAAA;AAAA,IAAAH,KAAQ,gBAAAE,EAAC,OAAA,EAAI,WAAU,mBAAmB,UAAAF,GAAK;AAAA,sBAC/C,OAAA,EACE,UAAA;AAAA,MAAAH,KAAS,gBAAAK,EAAC,OAAA,EAAI,WAAU,8BAA8B,UAAAL,GAAM;AAAA,MAC7D,gBAAAK,EAAC,OAAA,EAAI,WAAU,WAAW,UAAAJ,EAAA,CAAQ;AAAA,IAAA,EAAA,CACpC;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
@@ -1,17 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { BaseCardProps } from "./BaseCard";
|
|
3
|
+
interface TimeRangeOption {
|
|
4
|
+
value: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TimeRange {
|
|
8
|
+
current: string;
|
|
9
|
+
options?: (TimeRangeOption | string)[];
|
|
10
|
+
onChange?: (value: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export interface ChartCardProps extends Omit<BaseCardProps, "variant" | "header" | "body"> {
|
|
13
|
+
chart: React.ReactNode;
|
|
14
|
+
chartType?: string;
|
|
15
|
+
title?: string;
|
|
16
|
+
subtitle?: string;
|
|
17
|
+
filters?: React.ReactNode;
|
|
18
|
+
timeRange?: TimeRange;
|
|
19
|
+
actions?: React.ReactNode;
|
|
20
|
+
legend?: React.ReactNode;
|
|
21
|
+
height?: number;
|
|
22
|
+
showGrid?: boolean;
|
|
23
|
+
showAxes?: boolean;
|
|
24
|
+
data?: unknown[];
|
|
25
|
+
loading?: boolean;
|
|
26
|
+
error?: string | Error;
|
|
27
|
+
}
|
|
28
|
+
export default function ChartCard({ chart, chartType, title, subtitle, filters, timeRange, actions, legend, height, showGrid, showAxes, data, loading, error, ...cardProps }: ChartCardProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import "
|
|
3
|
-
import f from "./BaseCard.js";
|
|
2
|
+
import v from "./BaseCard.js";
|
|
4
3
|
import g from "../ui/Text.js";
|
|
5
4
|
import k from "../ui/Chip.js";
|
|
6
|
-
function
|
|
5
|
+
function z({
|
|
7
6
|
chart: b,
|
|
8
7
|
chartType: s,
|
|
9
8
|
title: t,
|
|
10
9
|
subtitle: i,
|
|
11
|
-
filters:
|
|
10
|
+
filters: n,
|
|
12
11
|
timeRange: r,
|
|
13
|
-
actions:
|
|
12
|
+
actions: d,
|
|
14
13
|
legend: m,
|
|
15
14
|
height: N = 280,
|
|
16
15
|
showGrid: c,
|
|
@@ -20,13 +19,13 @@ function I({
|
|
|
20
19
|
error: u,
|
|
21
20
|
...x
|
|
22
21
|
}) {
|
|
23
|
-
const
|
|
22
|
+
const f = /* @__PURE__ */ a("div", { className: "flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
24
23
|
/* @__PURE__ */ a("div", { className: "min-w-0", children: [
|
|
25
24
|
t ? /* @__PURE__ */ e(g, { as: "div", size: "sm", weight: "medium", children: t }) : null,
|
|
26
25
|
i ? /* @__PURE__ */ e(g, { as: "div", size: "xs", muted: !0, className: "mt-1", children: i }) : null
|
|
27
26
|
] }),
|
|
28
27
|
/* @__PURE__ */ a("div", { className: "flex flex-wrap items-center justify-end gap-2", children: [
|
|
29
|
-
|
|
28
|
+
n ? /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: n }) : null,
|
|
30
29
|
r ? /* @__PURE__ */ e(
|
|
31
30
|
"select",
|
|
32
31
|
{
|
|
@@ -34,26 +33,26 @@ function I({
|
|
|
34
33
|
value: r.current,
|
|
35
34
|
onChange: (l) => r.onChange?.(l.target.value),
|
|
36
35
|
"aria-label": "Time range",
|
|
37
|
-
children: r.options?.map((l) => /* @__PURE__ */ e("option", { value: l
|
|
36
|
+
children: r.options?.map((l) => /* @__PURE__ */ e("option", { value: typeof l == "string" ? l : l.value, children: typeof l == "string" ? l : l.label }, typeof l == "string" ? l : l.value))
|
|
38
37
|
}
|
|
39
38
|
) : null,
|
|
40
|
-
|
|
39
|
+
d ? /* @__PURE__ */ e("div", { className: "flex items-center gap-2", children: d }) : null
|
|
41
40
|
] })
|
|
42
41
|
] });
|
|
43
42
|
return u ? /* @__PURE__ */ e(
|
|
44
|
-
|
|
43
|
+
v,
|
|
45
44
|
{
|
|
46
45
|
variant: "chart",
|
|
47
|
-
header:
|
|
46
|
+
header: f,
|
|
48
47
|
body: /* @__PURE__ */ e("div", { className: "mt-4 rounded-xl border border-rose-200 bg-rose-50 p-4 text-sm text-rose-900 dark:border-rose-900/40 dark:bg-rose-950/30 dark:text-rose-100", children: String(u) }),
|
|
49
48
|
...x
|
|
50
49
|
}
|
|
51
50
|
) : /* @__PURE__ */ e(
|
|
52
|
-
|
|
51
|
+
v,
|
|
53
52
|
{
|
|
54
53
|
variant: "chart",
|
|
55
54
|
header: /* @__PURE__ */ a("div", { className: "flex items-center justify-between gap-3", children: [
|
|
56
|
-
/* @__PURE__ */ e("div", { className: "min-w-0", children:
|
|
55
|
+
/* @__PURE__ */ e("div", { className: "min-w-0", children: f }),
|
|
57
56
|
s ? /* @__PURE__ */ e(k, { children: s }) : null
|
|
58
57
|
] }),
|
|
59
58
|
body: /* @__PURE__ */ a("div", { className: "mt-4", children: [
|
|
@@ -74,6 +73,6 @@ function I({
|
|
|
74
73
|
);
|
|
75
74
|
}
|
|
76
75
|
export {
|
|
77
|
-
|
|
76
|
+
z as default
|
|
78
77
|
};
|
|
79
78
|
//# sourceMappingURL=ChartCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartCard.js","sources":["../../../../src/components/library/cards/ChartCard.
|
|
1
|
+
{"version":3,"file":"ChartCard.js","sources":["../../../../src/components/library/cards/ChartCard.tsx"],"sourcesContent":["import React from \"react\";\nimport BaseCard, { BaseCardProps } from \"./BaseCard\";\nimport UIText from \"../ui/Text\";\nimport UIChip from \"../ui/Chip\";\n\ninterface TimeRangeOption {\n value: string;\n label: string;\n}\n\nexport interface TimeRange {\n current: string;\n options?: (TimeRangeOption | string)[];\n onChange?: (value: string) => void;\n}\n\nexport interface ChartCardProps extends Omit<BaseCardProps, \"variant\" | \"header\" | \"body\"> {\n chart: React.ReactNode;\n chartType?: string;\n title?: string;\n subtitle?: string;\n filters?: React.ReactNode;\n timeRange?: TimeRange;\n actions?: React.ReactNode;\n legend?: React.ReactNode;\n height?: number;\n showGrid?: boolean;\n showAxes?: boolean;\n data?: unknown[];\n loading?: boolean;\n error?: string | Error;\n}\n\nexport default function ChartCard({\n chart,\n chartType,\n title,\n subtitle,\n filters,\n timeRange,\n actions,\n legend,\n height = 280,\n showGrid,\n showAxes,\n data,\n loading = false,\n error,\n ...cardProps\n}: ChartCardProps) {\n const header = (\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n {title ? (\n <UIText as=\"div\" size=\"sm\" weight=\"medium\">\n {title}\n </UIText>\n ) : null}\n {subtitle ? (\n <UIText as=\"div\" size=\"xs\" muted className=\"mt-1\">\n {subtitle}\n </UIText>\n ) : null}\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-2\">\n {filters ? <div className=\"flex items-center gap-2\">{filters}</div> : null}\n {timeRange ? (\n <select\n className=\"h-9 rounded-lg border border-slate-200 bg-white px-3 text-sm text-slate-900 shadow-sm dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50\"\n value={timeRange.current}\n onChange={(e) => timeRange.onChange?.(e.target.value)}\n aria-label=\"Time range\"\n >\n {timeRange.options?.map((opt) => (\n <option key={typeof opt === \"string\" ? opt : opt.value} value={typeof opt === \"string\" ? opt : opt.value}>\n {typeof opt === \"string\" ? opt : opt.label}\n </option>\n ))}\n </select>\n ) : null}\n {actions ? <div className=\"flex items-center gap-2\">{actions}</div> : null}\n </div>\n </div>\n );\n\n if (error) {\n return (\n <BaseCard\n variant=\"chart\"\n header={header}\n body={\n <div className=\"mt-4 rounded-xl border border-rose-200 bg-rose-50 p-4 text-sm text-rose-900 dark:border-rose-900/40 dark:bg-rose-950/30 dark:text-rose-100\">\n {String(error)}\n </div>\n }\n {...cardProps}\n />\n );\n }\n\n const hint = chartType ? <UIChip>{chartType}</UIChip> : null;\n\n return (\n <BaseCard\n variant=\"chart\"\n header={\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">{header}</div>\n {hint}\n </div>\n }\n body={\n <div className=\"mt-4\">\n <div className=\"w-full\" style={{ height }}>\n {chart}\n </div>\n {legend ? <div className=\"mt-3\">{legend}</div> : null}\n {(showGrid != null || showAxes != null) && data ? (\n <div className=\"mt-2 text-xs text-slate-500 dark:text-slate-400\">\n grid: {String(!!showGrid)} · axes: {String(!!showAxes)} · points: {data.length}\n </div>\n ) : null}\n {loading ? (\n <div className=\"mt-3 text-xs text-slate-500 dark:text-slate-400\">Loading…</div>\n ) : null}\n </div>\n }\n {...cardProps}\n />\n );\n}\n"],"names":["ChartCard","chart","chartType","title","subtitle","filters","timeRange","actions","legend","height","showGrid","showAxes","data","loading","error","cardProps","header","jsxs","jsx","UIText","e","opt","BaseCard","UIChip"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
title
|
|
4
|
-
subtitle
|
|
5
|
-
actions
|
|
6
|
-
children
|
|
7
|
-
width
|
|
8
|
-
className?: string
|
|
9
|
-
headerClassName?: string
|
|
10
|
-
bodyClassName?: string
|
|
11
|
-
}
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface FeedPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
3
|
+
title?: string;
|
|
4
|
+
subtitle?: string;
|
|
5
|
+
actions?: React.ReactNode;
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
width?: number | string;
|
|
8
|
+
className?: string;
|
|
9
|
+
headerClassName?: string;
|
|
10
|
+
bodyClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
export default function FeedPanel({ title, subtitle, actions, children, width, className, headerClassName, bodyClassName, ...rest }: FeedPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import "react";
|
|
3
2
|
import i from "../ui/Text.js";
|
|
4
|
-
function
|
|
3
|
+
function v({
|
|
5
4
|
title: s,
|
|
6
5
|
subtitle: d,
|
|
7
6
|
actions: a,
|
|
@@ -22,7 +21,7 @@ function b({
|
|
|
22
21
|
children: [
|
|
23
22
|
(s || d || a) && /* @__PURE__ */ e("div", { className: `shrink-0 border-b border-slate-100 px-4 py-3 dark:border-slate-800 ${n}`, children: /* @__PURE__ */ l("div", { className: "flex items-start justify-between gap-3", children: [
|
|
24
23
|
/* @__PURE__ */ l("div", { className: "min-w-0", children: [
|
|
25
|
-
s && /* @__PURE__ */ e(i, { as: "div", size: "sm", weight: "
|
|
24
|
+
s && /* @__PURE__ */ e(i, { as: "div", size: "sm", weight: "medium", children: s }),
|
|
26
25
|
d && /* @__PURE__ */ e(i, { as: "div", size: "xs", muted: !0, className: "mt-0.5", children: d })
|
|
27
26
|
] }),
|
|
28
27
|
a && /* @__PURE__ */ e("div", { className: "shrink-0", children: a })
|
|
@@ -33,6 +32,6 @@ function b({
|
|
|
33
32
|
);
|
|
34
33
|
}
|
|
35
34
|
export {
|
|
36
|
-
|
|
35
|
+
v as default
|
|
37
36
|
};
|
|
38
37
|
//# sourceMappingURL=FeedPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedPanel.js","sources":["../../../../src/components/library/cards/FeedPanel.
|
|
1
|
+
{"version":3,"file":"FeedPanel.js","sources":["../../../../src/components/library/cards/FeedPanel.tsx"],"sourcesContent":["import React from \"react\";\nimport UIText from \"../ui/Text\";\n\nexport interface FeedPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: string;\n subtitle?: string;\n actions?: React.ReactNode;\n children?: React.ReactNode;\n width?: number | string;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n}\n\nexport default function FeedPanel({\n title,\n subtitle,\n actions,\n children,\n width,\n className = \"\",\n headerClassName = \"\",\n bodyClassName = \"\",\n ...rest\n}: FeedPanelProps) {\n const widthStyle = width ? (typeof width === \"number\" ? { width: `${width}px` } : { width }) : undefined;\n\n return (\n <div\n className={`flex shrink-0 flex-col overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900 ${className}`}\n style={widthStyle}\n {...rest}\n >\n {(title || subtitle || actions) && (\n <div className={`shrink-0 border-b border-slate-100 px-4 py-3 dark:border-slate-800 ${headerClassName}`}>\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n {title && <UIText as=\"div\" size=\"sm\" weight=\"medium\">{title}</UIText>}\n {subtitle && <UIText as=\"div\" size=\"xs\" muted className=\"mt-0.5\">{subtitle}</UIText>}\n </div>\n {actions && <div className=\"shrink-0\">{actions}</div>}\n </div>\n </div>\n )}\n <div className={`flex-1 overflow-y-auto ${bodyClassName}`}>\n {children}\n </div>\n </div>\n );\n}\n"],"names":["FeedPanel","title","subtitle","actions","children","width","className","headerClassName","bodyClassName","rest","widthStyle","jsxs","jsx","UIText"],"mappings":";;AAcA,SAAwBA,EAAU;AAAA,EAChC,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,iBAAAC,IAAkB;AAAA,EAClB,eAAAC,IAAgB;AAAA,EAChB,GAAGC;AACL,GAAmB;AACjB,QAAMC,IAAaL,IAAS,OAAOA,KAAU,WAAW,EAAE,OAAO,GAAGA,CAAK,KAAA,IAAS,EAAE,OAAAA,MAAW;AAE/F,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,wIAAwIL,CAAS;AAAA,MAC5J,OAAOI;AAAA,MACN,GAAGD;AAAA,MAEF,UAAA;AAAA,SAAAR,KAASC,KAAYC,MACrB,gBAAAS,EAAC,OAAA,EAAI,WAAW,sEAAsEL,CAAe,IACnG,UAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,WACZ,UAAA;AAAA,YAAAV,KAAS,gBAAAW,EAACC,KAAO,IAAG,OAAM,MAAK,MAAK,QAAO,UAAU,UAAAZ,EAAA,CAAM;AAAA,YAC3DC,KAAY,gBAAAU,EAACC,GAAA,EAAO,IAAG,OAAM,MAAK,MAAK,OAAK,IAAC,WAAU,UAAU,UAAAX,EAAA,CAAS;AAAA,UAAA,GAC7E;AAAA,UACCC,KAAW,gBAAAS,EAAC,OAAA,EAAI,WAAU,YAAY,UAAAT,EAAA,CAAQ;AAAA,QAAA,EAAA,CACjD,EAAA,CACF;AAAA,0BAED,OAAA,EAAI,WAAW,0BAA0BK,CAAa,IACpD,UAAAJ,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { BaseCardProps } from "./BaseCard";
|
|
3
|
+
export interface ListItem {
|
|
4
|
+
id?: string | number;
|
|
5
|
+
title?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
status?: string;
|
|
9
|
+
timestamp?: string | Date;
|
|
10
|
+
value?: string | number;
|
|
11
|
+
unit?: string;
|
|
12
|
+
avatar?: string | React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export interface ListCardProps extends Omit<BaseCardProps, "variant" | "header" | "body"> {
|
|
15
|
+
items?: ListItem[];
|
|
16
|
+
title?: string;
|
|
17
|
+
subtitle?: string;
|
|
18
|
+
showAvatars?: boolean;
|
|
19
|
+
showStatus?: boolean;
|
|
20
|
+
showActions?: boolean;
|
|
21
|
+
showTimestamp?: boolean;
|
|
22
|
+
dense?: boolean;
|
|
23
|
+
divided?: boolean;
|
|
24
|
+
actions?: React.ReactNode;
|
|
25
|
+
itemActions?: (item: ListItem, index: number) => React.ReactNode;
|
|
26
|
+
onItemClick?: (item: ListItem, index: number) => void;
|
|
27
|
+
loading?: boolean;
|
|
28
|
+
error?: string | Error;
|
|
29
|
+
emptyMessage?: string;
|
|
30
|
+
emptyIcon?: React.ReactNode;
|
|
31
|
+
maxBodyHeight?: string | number;
|
|
32
|
+
}
|
|
33
|
+
export default function ListCard({ items, title, subtitle, showAvatars, showStatus, showActions, showTimestamp, dense, divided, actions, itemActions, onItemClick, loading, error, emptyMessage, emptyIcon, maxBodyHeight, ...cardProps }: ListCardProps): import("react/jsx-runtime").JSX.Element;
|