@flipdish/ui-library 0.4.3 → 0.6.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/molecules/EmptyState/index.cjs +1 -1
- package/dist/components/molecules/EmptyState/index.cjs.map +1 -1
- package/dist/components/molecules/EmptyState/index.js +1 -1
- package/dist/components/molecules/EmptyState/index.js.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.cjs.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.d.ts.map +1 -1
- package/dist/components/molecules/ProgressSteps/index.js.map +1 -1
- package/dist/components/organisms/ActivityFeed/index.d.ts +1 -2
- package/dist/components/organisms/ActivityFeed/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/index.cjs +16 -6
- package/dist/components/organisms/Calendar/index.cjs.map +1 -1
- package/dist/components/organisms/Calendar/index.d.ts +8 -2
- package/dist/components/organisms/Calendar/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/index.js +16 -6
- package/dist/components/organisms/Calendar/index.js.map +1 -1
- package/dist/components/organisms/Charts/components/activity-gauge.cjs.map +1 -1
- package/dist/components/organisms/Charts/components/activity-gauge.d.ts.map +1 -1
- package/dist/components/organisms/Charts/components/activity-gauge.js.map +1 -1
- package/dist/components/organisms/Charts/components/metrics.cjs +127 -0
- package/dist/components/organisms/Charts/components/metrics.cjs.map +1 -0
- package/dist/components/organisms/Charts/components/metrics.d.ts +13 -2
- package/dist/components/organisms/Charts/components/metrics.d.ts.map +1 -1
- package/dist/components/organisms/Charts/components/metrics.js +116 -0
- package/dist/components/organisms/Charts/components/metrics.js.map +1 -0
- package/dist/components/organisms/Charts/components/pie-chart.cjs +35 -69
- package/dist/components/organisms/Charts/components/pie-chart.cjs.map +1 -1
- package/dist/components/organisms/Charts/components/pie-chart.d.ts +45 -33
- package/dist/components/organisms/Charts/components/pie-chart.d.ts.map +1 -1
- package/dist/components/organisms/Charts/components/pie-chart.js +30 -66
- package/dist/components/organisms/Charts/components/pie-chart.js.map +1 -1
- package/dist/components/organisms/Charts/components/radar-chart.cjs.map +1 -1
- package/dist/components/organisms/Charts/components/radar-chart.d.ts.map +1 -1
- package/dist/components/organisms/Charts/components/radar-chart.js.map +1 -1
- package/dist/components/organisms/Charts/index.cjs +17 -4
- package/dist/components/organisms/Charts/index.cjs.map +1 -1
- package/dist/components/organisms/Charts/index.d.ts +1 -0
- package/dist/components/organisms/Charts/index.d.ts.map +1 -1
- package/dist/components/organisms/Charts/index.js +2 -1
- package/dist/components/organisms/Charts/index.js.map +1 -1
- package/dist/components/organisms/ColorPicker/index.d.ts +1 -1
- package/dist/components/organisms/ColorPicker/index.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/commandMenu.utils.cjs +1 -0
- package/dist/components/organisms/CommandMenu/commandMenu.utils.cjs.map +1 -1
- package/dist/components/organisms/CommandMenu/commandMenu.utils.d.ts +1 -1
- package/dist/components/organisms/CommandMenu/commandMenu.utils.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/commandMenu.utils.js +1 -0
- package/dist/components/organisms/CommandMenu/commandMenu.utils.js.map +1 -1
- package/dist/components/organisms/CommandMenu/index.cjs +2 -2
- package/dist/components/organisms/CommandMenu/index.cjs.map +1 -1
- package/dist/components/organisms/CommandMenu/index.d.ts +1 -1
- package/dist/components/organisms/CommandMenu/index.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/index.js +2 -2
- package/dist/components/organisms/CommandMenu/index.js.map +1 -1
- package/dist/components/organisms/DatePicker/components/date-range-picker.cjs +82 -0
- package/dist/components/organisms/DatePicker/components/date-range-picker.cjs.map +1 -0
- package/dist/components/organisms/DatePicker/components/date-range-picker.js +80 -0
- package/dist/components/organisms/DatePicker/components/date-range-picker.js.map +1 -0
- package/dist/components/organisms/DatePicker/components/range-calendar.cjs +8 -0
- package/dist/components/organisms/DatePicker/components/range-calendar.cjs.map +1 -1
- package/dist/components/organisms/DatePicker/components/range-calendar.js +8 -1
- package/dist/components/organisms/DatePicker/components/range-calendar.js.map +1 -1
- package/dist/components/organisms/DatePicker/index.cjs +8 -0
- package/dist/components/organisms/DatePicker/index.cjs.map +1 -1
- package/dist/components/organisms/DatePicker/index.d.ts +8 -1
- package/dist/components/organisms/DatePicker/index.d.ts.map +1 -1
- package/dist/components/organisms/DatePicker/index.js +7 -0
- package/dist/components/organisms/DatePicker/index.js.map +1 -1
- package/dist/components/organisms/FileUpload/index.cjs +1 -1
- package/dist/components/organisms/FileUpload/index.cjs.map +1 -1
- package/dist/components/organisms/FileUpload/index.js +1 -1
- package/dist/components/organisms/FileUpload/index.js.map +1 -1
- package/dist/components/organisms/FilterBar/components/filter-dropdown-menu.cjs +1 -1
- package/dist/components/organisms/FilterBar/components/filter-dropdown-menu.cjs.map +1 -1
- package/dist/components/organisms/FilterBar/components/filter-dropdown-menu.js +1 -1
- package/dist/components/organisms/FilterBar/components/filter-dropdown-menu.js.map +1 -1
- package/dist/components/organisms/FilterBar/index.cjs +1 -1
- package/dist/components/organisms/FilterBar/index.cjs.map +1 -1
- package/dist/components/organisms/FilterBar/index.d.ts +1 -0
- package/dist/components/organisms/FilterBar/index.d.ts.map +1 -1
- package/dist/components/organisms/FilterBar/index.js +1 -1
- package/dist/components/organisms/FilterBar/index.js.map +1 -1
- package/dist/components/organisms/GradientPicker/index.cjs +1 -1
- package/dist/components/organisms/GradientPicker/index.cjs.map +1 -1
- package/dist/components/organisms/GradientPicker/index.js +1 -1
- package/dist/components/organisms/GradientPicker/index.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs +5 -21
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts +28 -4
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js +6 -22
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.js +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.cjs +6 -4
- package/dist/components/organisms/HeaderNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.d.ts +23 -3
- package/dist/components/organisms/HeaderNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.js +6 -6
- package/dist/components/organisms/HeaderNavigation/index.js.map +1 -1
- package/dist/components/organisms/ImagePicker/imagePicker.utils.cjs +1 -1
- package/dist/components/organisms/ImagePicker/imagePicker.utils.cjs.map +1 -1
- package/dist/components/organisms/ImagePicker/imagePicker.utils.js +1 -1
- package/dist/components/organisms/ImagePicker/imagePicker.utils.js.map +1 -1
- package/dist/components/organisms/Messaging/index.cjs +1 -1
- package/dist/components/organisms/Messaging/index.cjs.map +1 -1
- package/dist/components/organisms/Messaging/index.d.ts +1 -1
- package/dist/components/organisms/Messaging/index.d.ts.map +1 -1
- package/dist/components/organisms/Messaging/index.js +1 -1
- package/dist/components/organisms/Messaging/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +14 -24
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +49 -4
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js +16 -26
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts +4 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs +3 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts +6 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js +3 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts +6 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts +5 -5
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs +6 -8
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts +4 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js +8 -10
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.cjs +10 -5
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts +7 -5
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +7 -5
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/components/organisms/SlideoutMenu/index.d.ts +2 -2
- package/dist/components/organisms/SlideoutMenu/index.d.ts.map +1 -1
- package/dist/components/organisms/TextEditor/components/text-editor-toolbar.d.ts +1 -1
- package/dist/components/organisms/TextEditor/components/text-editor-toolbar.d.ts.map +1 -1
- package/dist/components/organisms/TextEditor/index.cjs +2 -2
- package/dist/components/organisms/TextEditor/index.cjs.map +1 -1
- package/dist/components/organisms/TextEditor/index.js +2 -2
- package/dist/components/organisms/TextEditor/index.js.map +1 -1
- package/dist/components/organisms/TreeView/index.cjs +1 -1
- package/dist/components/organisms/TreeView/index.cjs.map +1 -1
- package/dist/components/organisms/TreeView/index.d.ts +2 -2
- package/dist/components/organisms/TreeView/index.d.ts.map +1 -1
- package/dist/components/organisms/TreeView/index.js +1 -1
- package/dist/components/organisms/TreeView/index.js.map +1 -1
- package/dist/components/organisms/TreeView/treeView.utils.cjs +2 -0
- package/dist/components/organisms/TreeView/treeView.utils.cjs.map +1 -1
- package/dist/components/organisms/TreeView/treeView.utils.d.ts.map +1 -1
- package/dist/components/organisms/TreeView/treeView.utils.js +2 -0
- package/dist/components/organisms/TreeView/treeView.utils.js.map +1 -1
- package/dist/components/organisms/VideoPlayer/index.d.ts +1 -2
- package/dist/components/organisms/VideoPlayer/index.d.ts.map +1 -1
- package/dist/providers/UIProvider/index.cjs +8 -16
- package/dist/providers/UIProvider/index.cjs.map +1 -1
- package/dist/providers/UIProvider/index.d.ts +13 -13
- package/dist/providers/UIProvider/index.d.ts.map +1 -1
- package/dist/providers/UIProvider/index.js +8 -16
- package/dist/providers/UIProvider/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { ArrowDownRight, TrendDown01, ArrowDown, ArrowUpRight, TrendUp01, ArrowUp, Eye, Zap } from '@flipdish/ui-icons';
|
|
3
|
+
import { FeaturedIcon } from '@flipdish/ui-library/components/atoms/FeaturedIcon';
|
|
4
|
+
import { Dropdown } from '@flipdish/ui-library/components/molecules/Dropdown';
|
|
5
|
+
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
6
|
+
import { useId } from 'react';
|
|
7
|
+
import { AreaChart, Area, ResponsiveContainer } from 'recharts';
|
|
8
|
+
|
|
9
|
+
const ActionsDropdown = ({ actions }) => (jsxs(Dropdown.Root, { children: [jsx(Dropdown.DotsButton, {}), jsx(Dropdown.Popover, { className: "w-min", children: jsx(Dropdown.Menu, { children: actions.map(({ id, label, icon, onPress }) => (jsx(Dropdown.Item, { icon: icon, onAction: onPress, children: jsx("span", { className: "pr-4", children: label }) }, id))) }) })] }));
|
|
10
|
+
const MetricChangeIndicator = ({ type, trend, value, className }) => {
|
|
11
|
+
const icons = {
|
|
12
|
+
positive: {
|
|
13
|
+
simple: ArrowUp,
|
|
14
|
+
trend: TrendUp01,
|
|
15
|
+
modern: ArrowUpRight,
|
|
16
|
+
},
|
|
17
|
+
negative: {
|
|
18
|
+
simple: ArrowDown,
|
|
19
|
+
trend: TrendDown01,
|
|
20
|
+
modern: ArrowDownRight,
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
const Icon = icons[trend][type];
|
|
24
|
+
return (jsxs("div", { className: cx('flex items-center', type === 'simple' ? 'gap-0.5' : 'gap-1', type === 'modern' && 'rounded-md bg-primary py-0.5 pr-2 pl-1.5 shadow-xs ring-1 ring-primary ring-inset', className), children: [jsx(Icon, { className: cx('stroke-[3px] text-fg-success-secondary', type === 'modern' ? 'size-3' : 'size-4', trend === 'negative' ? 'text-fg-error-secondary' : 'text-fg-success-secondary') }), jsx("span", { className: cx('text-sm font-medium text-secondary', type === 'modern' ? 'text-secondary' : trend === 'negative' ? 'text-error-primary' : 'text-success-primary'), children: value })] }));
|
|
25
|
+
};
|
|
26
|
+
const MetricsSimple = ({ title = '2,000', subtitle = 'View 24 hours', type, trend, change, dropdownActions, footer, className, }) => {
|
|
27
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-2 px-4 py-5 md:px-5", children: [jsx("h3", { className: "text-sm font-medium text-tertiary", children: subtitle }), jsxs("div", { className: "flex items-end gap-4", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsx(MetricChangeIndicator, { type: type, trend: trend, value: change })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-4 md:px-5", children: footer })] }));
|
|
28
|
+
};
|
|
29
|
+
const MetricsIcon01 = ({ icon = TrendUp01, title = '2,000', subtitle = 'View 24 hours', change = '100%', changeTrend = 'positive', dropdownActions, footer, className, }) => {
|
|
30
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:gap-5 md:px-5", children: [jsx(FeaturedIcon, { color: changeTrend === 'positive' ? 'success' : 'error', theme: "light", icon: icon, size: "lg" }), jsxs("div", { className: "flex flex-col gap-2", children: [jsx("h3", { className: "text-sm font-medium text-tertiary", children: subtitle }), jsxs("div", { className: "flex items-end gap-4", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsx(MetricChangeIndicator, { type: "modern", trend: changeTrend, value: change })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-4 md:px-5", children: footer })] }));
|
|
31
|
+
};
|
|
32
|
+
const MetricsIcon02 = ({ icon = Zap, title = '2,000', subtitle = 'View 24 hours', change = '100%', changeTrend = 'positive', changeDescription = 'vs last month', dropdownActions, footer, className, }) => {
|
|
33
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:gap-5 md:px-5", children: [jsxs("div", { className: "flex items-center gap-3", children: [jsx(FeaturedIcon, { color: "brand", theme: "light", size: "lg", icon: icon }), jsx("h3", { className: "text-md font-semibold text-primary", children: subtitle })] }), jsxs("div", { className: "flex flex-col gap-3", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsxs("div", { className: "flex gap-2", children: [jsx(MetricChangeIndicator, { type: "simple", trend: changeTrend, value: change }), changeDescription && jsx("span", { className: "text-sm font-medium text-tertiary", children: changeDescription })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-4 md:px-5", children: footer })] }));
|
|
34
|
+
};
|
|
35
|
+
const MetricsIcon03 = ({ icon = TrendUp01, title = '2,000', subtitle = 'View 24 hours', change = '100%', changeTrend = 'positive', dropdownActions, className, footer, }) => {
|
|
36
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:gap-5 md:px-5", children: [jsx(FeaturedIcon, { color: "gray", theme: "modern", icon: icon || TrendUp01, size: "lg" }), jsxs("div", { className: "flex flex-col gap-2", children: [jsx("h3", { className: "text-sm font-semibold text-tertiary", children: subtitle }), jsxs("div", { className: "flex flex-wrap items-center gap-3 lg:gap-4", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsxs("div", { className: "flex gap-2", children: [jsx(MetricChangeIndicator, { type: "trend", trend: changeTrend, value: change }), jsx("span", { className: "text-sm font-medium text-tertiary", children: "vs last month" })] })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-3 pr-4 md:p-4 md:pr-5", children: footer })] }));
|
|
37
|
+
};
|
|
38
|
+
const MetricsIcon04 = ({ icon = TrendUp01, title = '2,000', subtitle = 'View 24 hours', change = '100%', changeTrend = 'positive', dropdownActions, footer, className, }) => {
|
|
39
|
+
return (jsxs("div", { className: cx('min-w-70 rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:flex-row md:px-5", children: [jsx(FeaturedIcon, { color: "gray", theme: "modern", icon: icon, size: "md" }), jsxs("div", { className: "flex w-full flex-col gap-2", children: [jsx("h3", { className: "text-sm font-semibold text-tertiary", children: subtitle }), jsxs("div", { className: "flex w-full flex-wrap items-center justify-between gap-4", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsx(MetricChangeIndicator, { type: "modern", trend: changeTrend, value: change })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-3 pr-4 md:p-4 md:pr-5", children: footer })] }));
|
|
40
|
+
};
|
|
41
|
+
const CustomizedDot = (props) => {
|
|
42
|
+
if (!props.payload?.highlight) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const size = 20;
|
|
46
|
+
return (
|
|
47
|
+
// biome-ignore lint/a11y/noSvgWithoutTitle: we don't need a title for this svg
|
|
48
|
+
jsxs("svg", { x: Number(props.cx) - size / 2, y: Number(props.cy) - size / 2, width: size, height: size, viewBox: "0 0 20 20", fill: "none", className: cx('text-fg-success-secondary', props.dotColor), children: [jsx("rect", { x: "1.75", y: "1.625", width: "17.25", height: "17.25", rx: "8.625", className: "stroke-current", strokeOpacity: 0.2, strokeWidth: "2" }), jsx("rect", { x: "6.125", y: "6", width: "8.5", height: "8.5", rx: "4.25", className: "fill-bg-primary stroke-current", strokeWidth: "2" })] }));
|
|
49
|
+
};
|
|
50
|
+
const lineData = [
|
|
51
|
+
{ value: 10 },
|
|
52
|
+
{ value: 15 },
|
|
53
|
+
{ value: 12 },
|
|
54
|
+
{ value: 20 },
|
|
55
|
+
{ value: 18 },
|
|
56
|
+
{ value: 25 },
|
|
57
|
+
{ value: 30 },
|
|
58
|
+
{ value: 28 },
|
|
59
|
+
{ value: 32 },
|
|
60
|
+
{ value: 35 },
|
|
61
|
+
{ value: 40, highlight: true },
|
|
62
|
+
{ value: 32 },
|
|
63
|
+
{ value: 40 },
|
|
64
|
+
{ value: 50 },
|
|
65
|
+
{ value: 55 },
|
|
66
|
+
];
|
|
67
|
+
const MetricsChart01 = ({ title = '2,000', subtitle = 'View 24 hours', change = '100%', changeDescription = 'vs last month', dropdownActions, chartData = lineData, trend = 'positive', footer, className, }) => {
|
|
68
|
+
const id = useId();
|
|
69
|
+
const chartColor = trend === 'positive' ? 'text-fg-success-secondary' : 'text-fg-error-secondary';
|
|
70
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-5 px-4 py-5 md:px-5", children: [jsx("h3", { className: "text-md font-semibold text-primary", children: subtitle }), jsxs("div", { className: "flex items-end justify-between gap-4", children: [jsxs("div", { className: "flex flex-col gap-3", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsxs("div", { className: "flex gap-2", children: [jsx(MetricChangeIndicator, { type: "simple", trend: trend, value: change }), jsx("span", { className: "text-sm font-medium text-tertiary", children: changeDescription })] })] }), jsxs(AreaChart, { height: 56, width: 112, data: chartData, margin: {
|
|
71
|
+
left: 0,
|
|
72
|
+
right: 0,
|
|
73
|
+
top: 0,
|
|
74
|
+
bottom: 0,
|
|
75
|
+
}, children: [jsx("defs", { children: jsxs("linearGradient", { id: `gradient-${id}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "5%", stopColor: "currentColor", className: chartColor, stopOpacity: "1" }), jsx("stop", { offset: "95%", stopColor: "currentColor", className: chartColor, stopOpacity: "0" })] }) }), jsx(Area, { isAnimationActive: false, className: chartColor, dataKey: "value", type: "monotone", stroke: "currentColor", strokeWidth: 2, fill: `url(#gradient-${id})`, fillOpacity: 0.2, dot: jsx(CustomizedDot, { dotColor: chartColor }), activeDot: false })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-4 md:px-5", children: footer })] }));
|
|
76
|
+
};
|
|
77
|
+
const lineData2 = [
|
|
78
|
+
{ a: 10, b: 0 },
|
|
79
|
+
{ a: 5, b: 30 },
|
|
80
|
+
{ a: 30, b: 20 },
|
|
81
|
+
{ a: 20, b: 35 },
|
|
82
|
+
];
|
|
83
|
+
const MetricsChart02 = ({ icon = Eye, title = '2,000', subtitle = 'View 24 hours', change = '100%', changeTrend = 'positive', dropdownActions, footer, className, }) => {
|
|
84
|
+
const id = useId();
|
|
85
|
+
const chartColor = changeTrend === 'positive' ? 'text-fg-success-secondary' : 'text-fg-error-secondary';
|
|
86
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:gap-5 md:px-5", children: [jsxs("div", { className: "flex items-center gap-3", children: [jsx(FeaturedIcon, { color: "gray", theme: "modern", size: "lg", icon: icon }), jsx("h3", { className: "text-md font-semibold text-primary", children: subtitle })] }), jsxs("div", { className: "flex items-end justify-between gap-4", children: [jsxs("div", { className: "flex items-start gap-2", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary lg:text-display-md", children: title }), jsx(MetricChangeIndicator, { type: "trend", trend: changeTrend, value: change })] }), jsxs(AreaChart, { height: 56, width: 128, data: lineData2, margin: {
|
|
87
|
+
left: 0,
|
|
88
|
+
right: 0,
|
|
89
|
+
top: 0,
|
|
90
|
+
bottom: 0,
|
|
91
|
+
}, children: [jsx("defs", { children: jsxs("linearGradient", { id: `gradient-${id}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "5%", stopColor: "currentColor", className: chartColor, stopOpacity: "1" }), jsx("stop", { offset: "95%", stopColor: "currentColor", className: chartColor, stopOpacity: "0" })] }) }), jsx(Area, { className: chartColor, dataKey: "a", type: "monotone", strokeWidth: 0, fill: "currentColor", fillOpacity: 0.2, isAnimationActive: false, activeDot: false }), jsx(Area, { dataKey: "b", type: "monotone", strokeWidth: 0, fill: `url(#gradient-${id})`, fillOpacity: 0.2, isAnimationActive: false, activeDot: false })] })] }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-3 pr-4 md:p-4 md:pr-5", children: footer })] }));
|
|
92
|
+
};
|
|
93
|
+
const lineData3 = [{ value: 0 }, { value: 9 }, { value: 6 }, { value: 15 }];
|
|
94
|
+
const MetricsChart03 = ({ title = '2,000', subtitle = 'View 24 hours', type = 'trend', change, changeTrend, changeDescription, chartColor, chartAreaFill, chartCurveType, chartData = lineData3, dropdownActions, footer, className, }) => {
|
|
95
|
+
const id = useId();
|
|
96
|
+
chartColor = chartColor ?? (changeTrend === 'positive' ? 'text-fg-success-secondary' : 'text-fg-error-secondary');
|
|
97
|
+
return (jsxs("div", { className: cx('rounded-xl bg-primary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsxs("div", { className: "relative flex flex-col gap-4 px-4 py-5 md:gap-5 md:px-5", children: [jsxs("div", { className: "flex flex-col gap-2", children: [jsx("h3", { className: "text-sm font-medium text-tertiary", children: subtitle }), jsxs("div", { className: "flex items-center gap-4", children: [jsx("p", { className: "flex-1 text-display-sm font-semibold text-primary", children: title }), jsxs("div", { className: "flex gap-2", children: [jsx(MetricChangeIndicator, { type: type, trend: changeTrend, value: change }), changeDescription && jsx("span", { className: "text-sm font-medium text-tertiary", children: changeDescription })] })] })] }), jsx(ResponsiveContainer, { initialDimension: { width: 1, height: 1 }, height: 72, children: jsxs(AreaChart, { data: chartData, margin: {
|
|
98
|
+
left: 0,
|
|
99
|
+
right: 0,
|
|
100
|
+
top: 0,
|
|
101
|
+
bottom: 0,
|
|
102
|
+
}, children: [jsx("defs", { children: jsxs("linearGradient", { id: `gradient-${id}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "5%", stopColor: "currentColor", className: chartColor, stopOpacity: "1" }), jsx("stop", { offset: "95%", stopColor: "currentColor", className: chartColor, stopOpacity: "0" })] }) }), jsx(Area, { isAnimationActive: false, className: chartColor, dataKey: "value", type: chartCurveType || 'monotone', stroke: "currentColor", strokeWidth: 2, fill: chartAreaFill || `url(#gradient-${id})`, fillOpacity: 0.2, activeDot: false })] }) }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end border-t border-secondary p-3 pr-4 md:p-4 md:pr-5", children: footer })] }));
|
|
103
|
+
};
|
|
104
|
+
const MetricsChart04 = ({ title, subtitle, type = 'trend', change, changeTrend, changeDescription, chartColor = 'text-fg-success-secondary', chartAreaFill, chartCurveType, chartData = lineData3, dropdownActions, footer, className, }) => {
|
|
105
|
+
const id = useId();
|
|
106
|
+
chartColor = chartColor ?? (changeTrend === 'positive' ? 'text-fg-success-secondary' : 'text-fg-error-secondary');
|
|
107
|
+
return (jsxs("div", { className: cx('flex flex-col overflow-hidden rounded-xl bg-secondary shadow-xs ring-1 ring-secondary ring-inset', className), children: [jsx("div", { className: "mb-0.5 px-4 pt-3 pb-2 md:px-5", children: jsx("h3", { className: "text-sm font-semibold text-primary", children: subtitle }) }), jsxs("div", { className: "relative flex flex-col gap-4 rounded-xl bg-primary px-4 py-5 shadow-xs ring-1 ring-secondary ring-inset md:gap-5 md:px-5", children: [jsx("div", { className: "flex flex-col gap-2", children: jsxs("div", { className: "flex items-center gap-3", children: [jsx("p", { className: "text-display-sm font-semibold text-primary", children: title }), jsxs("div", { className: "flex gap-2", children: [jsx(MetricChangeIndicator, { type: type, trend: changeTrend, value: change }), changeDescription && jsx("span", { className: "text-sm font-medium text-tertiary", children: changeDescription })] })] }) }), jsx(ResponsiveContainer, { initialDimension: { width: 1, height: 1 }, height: 56, children: jsxs(AreaChart, { data: chartData, margin: {
|
|
108
|
+
left: 0,
|
|
109
|
+
right: 0,
|
|
110
|
+
top: 0,
|
|
111
|
+
bottom: 0,
|
|
112
|
+
}, className: chartColor, children: [jsx("defs", { children: jsxs("linearGradient", { id: `gradient-${id}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [jsx("stop", { offset: "5%", stopColor: "currentColor", className: chartColor, stopOpacity: "1" }), jsx("stop", { offset: "95%", stopColor: "currentColor", className: chartColor, stopOpacity: "0" })] }) }), jsx(Area, { isAnimationActive: false, className: chartColor, dataKey: "value", type: chartCurveType || 'monotone', stroke: "currentColor", strokeWidth: 2, fill: chartAreaFill || `url(#gradient-${id})`, fillOpacity: 0.2, activeDot: false })] }) }), dropdownActions && dropdownActions.length > 0 && (jsx("div", { className: "absolute top-4 right-4 md:top-5 md:right-5", children: jsx(ActionsDropdown, { actions: dropdownActions }) }))] }), footer && jsx("div", { className: "flex items-center justify-end py-3 pr-4 pl-3 md:pr-5 md:pl-4", children: footer })] }));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export { MetricChangeIndicator, MetricsChart01, MetricsChart02, MetricsChart03, MetricsChart04, MetricsIcon01, MetricsIcon02, MetricsIcon03, MetricsIcon04, MetricsSimple };
|
|
116
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sources":["../../../../../src/components/organisms/Charts/components/metrics.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -2,79 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
5
|
+
var recharts = require('recharts');
|
|
6
|
+
var chartsBase = require('./charts-base.cjs');
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
for (let i = 0; i < count; i++) {
|
|
20
|
-
selectedItems.push(dataArray[0]);
|
|
21
|
-
}
|
|
22
|
-
return selectedItems;
|
|
23
|
-
}
|
|
24
|
-
for (let i = 0; i < count; i++) {
|
|
25
|
-
const targetIndex = Math.round((i * (dataArray.length - 1)) / (count - 1));
|
|
26
|
-
const boundedIndex = Math.max(0, Math.min(targetIndex, dataArray.length - 1));
|
|
27
|
-
selectedItems.push(dataArray[boundedIndex]);
|
|
28
|
-
}
|
|
29
|
-
return selectedItems;
|
|
8
|
+
const defaultData = [
|
|
9
|
+
{ name: 'Series 1', value: 200, className: 'text-utility-brand-600' },
|
|
10
|
+
{ name: 'Series 2', value: 350, className: 'text-utility-brand-500' },
|
|
11
|
+
{ name: 'Series 3', value: 100, className: 'text-utility-brand-400' },
|
|
12
|
+
{ name: 'Series 4', value: 120, className: 'text-utility-brand-300' },
|
|
13
|
+
{ name: 'Series 5', value: 230, className: 'text-utility-neutral-200' },
|
|
14
|
+
];
|
|
15
|
+
const sizeConfig = {
|
|
16
|
+
xxs: { height: 120, maxWidthClassName: 'max-w-52.5', innerRadius: 30, outerRadius: 60 },
|
|
17
|
+
xs: { height: 160, maxWidthClassName: 'max-w-62.5', innerRadius: 40, outerRadius: 80 },
|
|
18
|
+
sm: { height: 200, maxWidthClassName: 'max-w-72.5', innerRadius: 50, outerRadius: 100 },
|
|
19
|
+
md: { height: 240, maxWidthClassName: 'max-w-96', innerRadius: 60, outerRadius: 120 },
|
|
20
|
+
lg: { height: 280, maxWidthClassName: 'max-w-96', innerRadius: 70, outerRadius: 140 },
|
|
30
21
|
};
|
|
31
22
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @
|
|
38
|
-
* @returns The legend content.
|
|
23
|
+
* Plots each row as a slice of a donut, sized by its share of the total — here,
|
|
24
|
+
* five tokenised series. Pick a `size` preset for the footprint and colour each
|
|
25
|
+
* slice with a semantic `text-utility-*` token. Use it to show the composition
|
|
26
|
+
* of a whole when a handful of parts matter.
|
|
27
|
+
*
|
|
28
|
+
* @summary donut showing each part's share of a whole
|
|
39
29
|
*/
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
return (jsxRuntime.jsx(
|
|
43
|
-
? `flex-col gap-1 pl-4 ${align === 'center' ? 'items-center' : align === 'right' ? 'items-start' : 'items-start'}`
|
|
44
|
-
: `flex-row gap-3 ${align === 'center' ? 'justify-center' : align === 'right' ? 'justify-end' : 'justify-start'}`, className), children: payload?.map((entry, index) => (
|
|
45
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: we need to use the index as the key because the payload is an array of objects
|
|
46
|
-
jsxRuntime.jsxs("li", { className: "flex items-center gap-2 text-sm text-tertiary", children: [jsxRuntime.jsx("span", { className: cx.cx('block size-2 rounded-full bg-current ring-[0.5px] ring-black/10 ring-inset', entry.payload?.className) }), entry.value] }, index))) }));
|
|
47
|
-
};
|
|
48
|
-
const ChartTooltipContent = ({ active, payload, label, isRadialChart, isPieChart, formatter, labelFormatter }) => {
|
|
49
|
-
const canRender = active && payload && payload.length;
|
|
50
|
-
if (!canRender) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
const isSingleDataPoint = payload.length === 1;
|
|
54
|
-
// If it's a single data point, we use the value as the title and
|
|
55
|
-
// the name as the secondary title.
|
|
56
|
-
let title = isSingleDataPoint ? (isRadialChart ? payload[0].value : isPieChart ? payload[0].value : payload[0].value) : label;
|
|
57
|
-
let secondaryTitle = isSingleDataPoint ? (isRadialChart ? payload[0].payload.name : isPieChart ? payload[0].name : label) : payload;
|
|
58
|
-
title =
|
|
59
|
-
isSingleDataPoint && formatter
|
|
60
|
-
? formatter(title, payload?.[0].name || label, payload[0], 0, payload)
|
|
61
|
-
: labelFormatter
|
|
62
|
-
? labelFormatter(title, payload)
|
|
63
|
-
: title;
|
|
64
|
-
secondaryTitle = isSingleDataPoint && labelFormatter ? labelFormatter(secondaryTitle, payload) : secondaryTitle;
|
|
65
|
-
return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 rounded-lg bg-primary-solid px-3 py-2 shadow-lg", children: [jsxRuntime.jsx("p", { className: "text-xs font-semibold text-white", children: title }), !secondaryTitle ? null : Array.isArray(secondaryTitle) ? (jsxRuntime.jsx("div", { children: secondaryTitle.map((entry, index) => (
|
|
66
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: we need to use the index as the key because the secondaryTitle is an array of objects
|
|
67
|
-
jsxRuntime.jsx("p", { className: cx.cx('text-xs text-tooltip-supporting-text'), children: `${entry.name}: ${formatter ? formatter(entry.value, entry.name, entry, index, entry.payload) : entry.value}` }, index))) })) : (jsxRuntime.jsx("p", { className: "text-xs text-tooltip-supporting-text", children: secondaryTitle }))] }));
|
|
68
|
-
};
|
|
69
|
-
const ChartActiveDot = ({ cx = 0, cy = 0 }) => {
|
|
70
|
-
const size = 12;
|
|
71
|
-
return (
|
|
72
|
-
// biome-ignore lint/a11y/noSvgWithoutTitle: this is an icon
|
|
73
|
-
jsxRuntime.jsx("svg", { x: cx - size / 2, y: cy - size / 2, width: size, height: size, viewBox: "0 0 12 12", fill: "none", children: jsxRuntime.jsx("rect", { x: "2", y: "2", width: "8", height: "8", rx: "6", className: "fill-bg-primary stroke-utility-brand-600", strokeWidth: "2" }) }));
|
|
30
|
+
const PieChart = ({ data = defaultData, size = 'xs', showLegend = true, showTooltip = true, valueFormatter, className }) => {
|
|
31
|
+
const config = sizeConfig[size];
|
|
32
|
+
return (jsxRuntime.jsx(recharts.ResponsiveContainer, { initialDimension: { width: 1, height: 1 }, height: config.height, className: cx.cx(config.maxWidthClassName, className), children: jsxRuntime.jsxs(recharts.PieChart, { className: "text-tertiary [&_.recharts-text]:text-xs", margin: { left: 0, right: 0, top: 0, bottom: 0 }, children: [showLegend && jsxRuntime.jsx(recharts.Legend, { verticalAlign: "top", align: "right", layout: "vertical", content: jsxRuntime.jsx(chartsBase.ChartLegendContent, {}) }), showTooltip && jsxRuntime.jsx(recharts.Tooltip, { content: jsxRuntime.jsx(chartsBase.ChartTooltipContent, { isPieChart: true }), formatter: valueFormatter }), jsxRuntime.jsx(recharts.Pie, { isAnimationActive: false, startAngle: -270, endAngle: -630, stroke: "none", data: data, dataKey: "value", nameKey: "name", fill: "currentColor", innerRadius: config.innerRadius, outerRadius: config.outerRadius })] }) }));
|
|
74
33
|
};
|
|
34
|
+
const PieChartXxs = (props) => jsxRuntime.jsx(PieChart, { ...props, size: "xxs" });
|
|
35
|
+
const PieChartXs = (props) => jsxRuntime.jsx(PieChart, { ...props, size: "xs" });
|
|
36
|
+
const PieChartSm = (props) => jsxRuntime.jsx(PieChart, { ...props, size: "sm" });
|
|
37
|
+
const PieChartMd = (props) => jsxRuntime.jsx(PieChart, { ...props, size: "md" });
|
|
38
|
+
const PieChartLg = (props) => jsxRuntime.jsx(PieChart, { ...props, size: "lg" });
|
|
75
39
|
|
|
76
|
-
exports.
|
|
77
|
-
exports.
|
|
78
|
-
exports.
|
|
79
|
-
exports.
|
|
40
|
+
exports.PieChart = PieChart;
|
|
41
|
+
exports.PieChartLg = PieChartLg;
|
|
42
|
+
exports.PieChartMd = PieChartMd;
|
|
43
|
+
exports.PieChartSm = PieChartSm;
|
|
44
|
+
exports.PieChartXs = PieChartXs;
|
|
45
|
+
exports.PieChartXxs = PieChartXxs;
|
|
80
46
|
//# sourceMappingURL=pie-chart.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie-chart.cjs","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"sourcesContent":[null],"names":["_jsx","cx","_jsxs"
|
|
1
|
+
{"version":3,"file":"pie-chart.cjs","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"sourcesContent":[null],"names":["_jsx","ResponsiveContainer","cx","_jsxs","RechartsPieChart","Legend","ChartLegendContent","Tooltip","ChartTooltipContent","Pie"],"mappings":"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"}
|
|
@@ -1,38 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* @param dataArray - The array of items to select from.
|
|
9
|
-
* @param count - The number of items to select.
|
|
10
|
-
* @returns The selected items.
|
|
11
|
-
*/
|
|
12
|
-
export declare const selectEvenlySpacedItems: <T extends readonly unknown[]>(dataArray: T, count: number) => Array<T[number]>;
|
|
13
|
-
/**
|
|
14
|
-
* Renders the legend content for a chart.
|
|
15
|
-
* @param reversed - Whether to reverse the payload.
|
|
16
|
-
* @param payload - The payload of the legend.
|
|
17
|
-
* @param align - The alignment of the legend.
|
|
18
|
-
* @param layout - The layout of the legend.
|
|
19
|
-
* @param className - The class name of the legend.
|
|
20
|
-
* @returns The legend content.
|
|
21
|
-
*/
|
|
22
|
-
export declare const ChartLegendContent: ({ reversed, payload, align, layout, className, }: LegendContentProps & {
|
|
23
|
-
reversed?: boolean;
|
|
1
|
+
type ChartValueFormatter = (value: any) => string;
|
|
2
|
+
export interface PieChartDataItem {
|
|
3
|
+
/** Display name shown in the legend and tooltip. */
|
|
4
|
+
name: string;
|
|
5
|
+
/** Numeric value determining this slice's share of the whole. */
|
|
6
|
+
value: number;
|
|
7
|
+
/** Tailwind `text-*` utility controlling the slice colour. */
|
|
24
8
|
className?: string;
|
|
25
|
-
}) => import("react").JSX.Element;
|
|
26
|
-
interface ChartTooltipContentProps extends TooltipProps<ValueType, NameType> {
|
|
27
|
-
isRadialChart?: boolean;
|
|
28
|
-
isPieChart?: boolean;
|
|
29
|
-
label?: string;
|
|
30
|
-
payload?: any;
|
|
31
9
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
10
|
+
/** Preset radii and footprint for the pie. */
|
|
11
|
+
export type PieChartSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
|
|
12
|
+
export interface PieChartProps {
|
|
13
|
+
/** Slices to plot. Each slice's share is its `value` over the total. */
|
|
14
|
+
data?: PieChartDataItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Preset that controls the chart height and inner/outer radii.
|
|
17
|
+
* @default 'xs'
|
|
18
|
+
*/
|
|
19
|
+
size?: PieChartSize;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to render the legend.
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
showLegend?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether to render the tooltip on hover.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
showTooltip?: boolean;
|
|
30
|
+
/** Formats the tooltip value. Defaults to the raw value. */
|
|
31
|
+
valueFormatter?: ChartValueFormatter;
|
|
32
|
+
/** Additional class name for the chart container. */
|
|
33
|
+
className?: string;
|
|
35
34
|
}
|
|
36
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Plots each row as a slice of a donut, sized by its share of the total — here,
|
|
37
|
+
* five tokenised series. Pick a `size` preset for the footprint and colour each
|
|
38
|
+
* slice with a semantic `text-utility-*` token. Use it to show the composition
|
|
39
|
+
* of a whole when a handful of parts matter.
|
|
40
|
+
*
|
|
41
|
+
* @summary donut showing each part's share of a whole
|
|
42
|
+
*/
|
|
43
|
+
export declare const PieChart: ({ data, size, showLegend, showTooltip, valueFormatter, className }: PieChartProps) => import("react").JSX.Element;
|
|
44
|
+
export declare const PieChartXxs: (props: Omit<PieChartProps, "size">) => import("react").JSX.Element;
|
|
45
|
+
export declare const PieChartXs: (props: Omit<PieChartProps, "size">) => import("react").JSX.Element;
|
|
46
|
+
export declare const PieChartSm: (props: Omit<PieChartProps, "size">) => import("react").JSX.Element;
|
|
47
|
+
export declare const PieChartMd: (props: Omit<PieChartProps, "size">) => import("react").JSX.Element;
|
|
48
|
+
export declare const PieChartLg: (props: Omit<PieChartProps, "size">) => import("react").JSX.Element;
|
|
37
49
|
export {};
|
|
38
50
|
//# sourceMappingURL=pie-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie-chart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pie-chart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"names":[],"mappings":"AAOA,KAAK,mBAAmB,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,oEAAuG,aAAa,gCAyB5I,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gCAAuC,CAAC;AACtG,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gCAAsC,CAAC;AACpG,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gCAAsC,CAAC;AACpG,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gCAAsC,CAAC;AACpG,eAAO,MAAM,UAAU,GAAI,OAAO,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,gCAAsC,CAAC"}
|
|
@@ -1,75 +1,39 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
3
|
+
import { ResponsiveContainer, PieChart as PieChart$1, Legend, Tooltip, Pie } from 'recharts';
|
|
4
|
+
import { ChartLegendContent, ChartTooltipContent } from './charts-base.js';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
for (let i = 0; i < count; i++) {
|
|
18
|
-
selectedItems.push(dataArray[0]);
|
|
19
|
-
}
|
|
20
|
-
return selectedItems;
|
|
21
|
-
}
|
|
22
|
-
for (let i = 0; i < count; i++) {
|
|
23
|
-
const targetIndex = Math.round((i * (dataArray.length - 1)) / (count - 1));
|
|
24
|
-
const boundedIndex = Math.max(0, Math.min(targetIndex, dataArray.length - 1));
|
|
25
|
-
selectedItems.push(dataArray[boundedIndex]);
|
|
26
|
-
}
|
|
27
|
-
return selectedItems;
|
|
6
|
+
const defaultData = [
|
|
7
|
+
{ name: 'Series 1', value: 200, className: 'text-utility-brand-600' },
|
|
8
|
+
{ name: 'Series 2', value: 350, className: 'text-utility-brand-500' },
|
|
9
|
+
{ name: 'Series 3', value: 100, className: 'text-utility-brand-400' },
|
|
10
|
+
{ name: 'Series 4', value: 120, className: 'text-utility-brand-300' },
|
|
11
|
+
{ name: 'Series 5', value: 230, className: 'text-utility-neutral-200' },
|
|
12
|
+
];
|
|
13
|
+
const sizeConfig = {
|
|
14
|
+
xxs: { height: 120, maxWidthClassName: 'max-w-52.5', innerRadius: 30, outerRadius: 60 },
|
|
15
|
+
xs: { height: 160, maxWidthClassName: 'max-w-62.5', innerRadius: 40, outerRadius: 80 },
|
|
16
|
+
sm: { height: 200, maxWidthClassName: 'max-w-72.5', innerRadius: 50, outerRadius: 100 },
|
|
17
|
+
md: { height: 240, maxWidthClassName: 'max-w-96', innerRadius: 60, outerRadius: 120 },
|
|
18
|
+
lg: { height: 280, maxWidthClassName: 'max-w-96', innerRadius: 70, outerRadius: 140 },
|
|
28
19
|
};
|
|
29
20
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @
|
|
36
|
-
* @returns The legend content.
|
|
21
|
+
* Plots each row as a slice of a donut, sized by its share of the total — here,
|
|
22
|
+
* five tokenised series. Pick a `size` preset for the footprint and colour each
|
|
23
|
+
* slice with a semantic `text-utility-*` token. Use it to show the composition
|
|
24
|
+
* of a whole when a handful of parts matter.
|
|
25
|
+
*
|
|
26
|
+
* @summary donut showing each part's share of a whole
|
|
37
27
|
*/
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
return (jsx(
|
|
41
|
-
? `flex-col gap-1 pl-4 ${align === 'center' ? 'items-center' : align === 'right' ? 'items-start' : 'items-start'}`
|
|
42
|
-
: `flex-row gap-3 ${align === 'center' ? 'justify-center' : align === 'right' ? 'justify-end' : 'justify-start'}`, className), children: payload?.map((entry, index) => (
|
|
43
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: we need to use the index as the key because the payload is an array of objects
|
|
44
|
-
jsxs("li", { className: "flex items-center gap-2 text-sm text-tertiary", children: [jsx("span", { className: cx('block size-2 rounded-full bg-current ring-[0.5px] ring-black/10 ring-inset', entry.payload?.className) }), entry.value] }, index))) }));
|
|
45
|
-
};
|
|
46
|
-
const ChartTooltipContent = ({ active, payload, label, isRadialChart, isPieChart, formatter, labelFormatter }) => {
|
|
47
|
-
const canRender = active && payload && payload.length;
|
|
48
|
-
if (!canRender) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
const isSingleDataPoint = payload.length === 1;
|
|
52
|
-
// If it's a single data point, we use the value as the title and
|
|
53
|
-
// the name as the secondary title.
|
|
54
|
-
let title = isSingleDataPoint ? (isRadialChart ? payload[0].value : isPieChart ? payload[0].value : payload[0].value) : label;
|
|
55
|
-
let secondaryTitle = isSingleDataPoint ? (isRadialChart ? payload[0].payload.name : isPieChart ? payload[0].name : label) : payload;
|
|
56
|
-
title =
|
|
57
|
-
isSingleDataPoint && formatter
|
|
58
|
-
? formatter(title, payload?.[0].name || label, payload[0], 0, payload)
|
|
59
|
-
: labelFormatter
|
|
60
|
-
? labelFormatter(title, payload)
|
|
61
|
-
: title;
|
|
62
|
-
secondaryTitle = isSingleDataPoint && labelFormatter ? labelFormatter(secondaryTitle, payload) : secondaryTitle;
|
|
63
|
-
return (jsxs("div", { className: "flex flex-col gap-0.5 rounded-lg bg-primary-solid px-3 py-2 shadow-lg", children: [jsx("p", { className: "text-xs font-semibold text-white", children: title }), !secondaryTitle ? null : Array.isArray(secondaryTitle) ? (jsx("div", { children: secondaryTitle.map((entry, index) => (
|
|
64
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: we need to use the index as the key because the secondaryTitle is an array of objects
|
|
65
|
-
jsx("p", { className: cx('text-xs text-tooltip-supporting-text'), children: `${entry.name}: ${formatter ? formatter(entry.value, entry.name, entry, index, entry.payload) : entry.value}` }, index))) })) : (jsx("p", { className: "text-xs text-tooltip-supporting-text", children: secondaryTitle }))] }));
|
|
66
|
-
};
|
|
67
|
-
const ChartActiveDot = ({ cx = 0, cy = 0 }) => {
|
|
68
|
-
const size = 12;
|
|
69
|
-
return (
|
|
70
|
-
// biome-ignore lint/a11y/noSvgWithoutTitle: this is an icon
|
|
71
|
-
jsx("svg", { x: cx - size / 2, y: cy - size / 2, width: size, height: size, viewBox: "0 0 12 12", fill: "none", children: jsx("rect", { x: "2", y: "2", width: "8", height: "8", rx: "6", className: "fill-bg-primary stroke-utility-brand-600", strokeWidth: "2" }) }));
|
|
28
|
+
const PieChart = ({ data = defaultData, size = 'xs', showLegend = true, showTooltip = true, valueFormatter, className }) => {
|
|
29
|
+
const config = sizeConfig[size];
|
|
30
|
+
return (jsx(ResponsiveContainer, { initialDimension: { width: 1, height: 1 }, height: config.height, className: cx(config.maxWidthClassName, className), children: jsxs(PieChart$1, { className: "text-tertiary [&_.recharts-text]:text-xs", margin: { left: 0, right: 0, top: 0, bottom: 0 }, children: [showLegend && jsx(Legend, { verticalAlign: "top", align: "right", layout: "vertical", content: jsx(ChartLegendContent, {}) }), showTooltip && jsx(Tooltip, { content: jsx(ChartTooltipContent, { isPieChart: true }), formatter: valueFormatter }), jsx(Pie, { isAnimationActive: false, startAngle: -270, endAngle: -630, stroke: "none", data: data, dataKey: "value", nameKey: "name", fill: "currentColor", innerRadius: config.innerRadius, outerRadius: config.outerRadius })] }) }));
|
|
72
31
|
};
|
|
32
|
+
const PieChartXxs = (props) => jsx(PieChart, { ...props, size: "xxs" });
|
|
33
|
+
const PieChartXs = (props) => jsx(PieChart, { ...props, size: "xs" });
|
|
34
|
+
const PieChartSm = (props) => jsx(PieChart, { ...props, size: "sm" });
|
|
35
|
+
const PieChartMd = (props) => jsx(PieChart, { ...props, size: "md" });
|
|
36
|
+
const PieChartLg = (props) => jsx(PieChart, { ...props, size: "lg" });
|
|
73
37
|
|
|
74
|
-
export {
|
|
38
|
+
export { PieChart, PieChartLg, PieChartMd, PieChartSm, PieChartXs, PieChartXxs };
|
|
75
39
|
//# sourceMappingURL=pie-chart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pie-chart.js","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pie-chart.js","sources":["../../../../../src/components/organisms/Charts/components/pie-chart.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","RechartsPieChart"],"mappings":"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"}
|