funuicss 2.5.14 → 2.6.1

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.
@@ -12,6 +12,9 @@ interface NavbarProps {
12
12
  sidebarTrigger?: React.ReactNode;
13
13
  transparent?: boolean;
14
14
  sideBar?: number;
15
+ hasSidebar?: boolean;
16
+ sidebarOpen?: boolean;
17
+ openSidebar?: () => void;
15
18
  }
16
- export default function AppBar({ fixedTop, funcss, padding, fixedBottom, justify, left, center, right, sideBar, sidebarTrigger, transparent, }: NavbarProps): React.JSX.Element;
19
+ export default function AppBar({ fixedTop, funcss, padding, fixedBottom, justify, left, center, right, sideBar, sidebarTrigger, transparent, hasSidebar, openSidebar, sidebarOpen }: NavbarProps): React.JSX.Element;
17
20
  export {};
@@ -43,9 +43,9 @@ var react_1 = require("react");
43
43
  var navigation_1 = require("next/navigation"); // <-- Updated import
44
44
  var Hamburger_1 = __importDefault(require("./Hamburger"));
45
45
  function AppBar(_a) {
46
- var fixedTop = _a.fixedTop, funcss = _a.funcss, padding = _a.padding, fixedBottom = _a.fixedBottom, justify = _a.justify, left = _a.left, center = _a.center, right = _a.right, sideBar = _a.sideBar, sidebarTrigger = _a.sidebarTrigger, transparent = _a.transparent;
47
- var _b = (0, react_1.useState)(false), isMobileMenuOpen = _b[0], setIsMobileMenuOpen = _b[1];
48
- var _c = (0, react_1.useState)(false), isMobileScreen = _c[0], setIsMobileScreen = _c[1];
46
+ var fixedTop = _a.fixedTop, funcss = _a.funcss, padding = _a.padding, fixedBottom = _a.fixedBottom, justify = _a.justify, left = _a.left, center = _a.center, right = _a.right, sideBar = _a.sideBar, sidebarTrigger = _a.sidebarTrigger, transparent = _a.transparent, hasSidebar = _a.hasSidebar, openSidebar = _a.openSidebar, _b = _a.sidebarOpen, sidebarOpen = _b === void 0 ? false : _b;
47
+ var _c = (0, react_1.useState)(false), isMobileMenuOpen = _c[0], setIsMobileMenuOpen = _c[1];
48
+ var _d = (0, react_1.useState)(false), isMobileScreen = _d[0], setIsMobileScreen = _d[1];
49
49
  var pathname = (0, navigation_1.usePathname)(); // <-- New hook to detect path changes
50
50
  var toggleMenu = function () { return setIsMobileMenuOpen(function (prev) { return !prev; }); };
51
51
  var closeMenu = function () { return setIsMobileMenuOpen(false); };
@@ -69,7 +69,9 @@ function AppBar(_a) {
69
69
  var isOpen = _a.isOpen;
70
70
  return React.createElement(Hamburger_1.default, { isOpen: isOpen });
71
71
  };
72
- return (React.createElement("nav", { className: "navigation-bar\n ".concat(isMobileMenuOpen ? 'navbar-mobile-open' : '', "\n ").concat(funcss || '', "\n ").concat(fixedTop ? 'fixed_top_navbar' : '', "\n ").concat(sideBar ? 'there_is_sidebar' : '', "\n ").concat(transparent ? 'transparent' : '', "\n ").concat(fixedBottom ? 'fixedBottom' : '', "\n "), style: {
72
+ return (React.createElement("nav", {
73
+ // the id will be used to get the height for the sidebar in the sidebar file
74
+ id: 'appBar', className: "navigation-bar\n ".concat(isMobileMenuOpen ? 'navbar-mobile-open' : '', "\n ").concat(funcss || '', "\n ").concat(fixedTop ? 'fixed_top_navbar' : '', "\n ").concat(sideBar ? 'there_is_sidebar' : '', "\n ").concat(transparent ? 'transparent' : '', "\n ").concat(fixedBottom ? 'fixedBottom' : '', "\n "), style: {
73
75
  padding: "".concat(padding || ''),
74
76
  justifyContent: "".concat(justify || ''),
75
77
  } },
@@ -79,5 +81,7 @@ function AppBar(_a) {
79
81
  React.createElement(Trigger, { isOpen: isMobileMenuOpen })))),
80
82
  React.createElement("div", { className: "linkWrapper" }, center),
81
83
  React.createElement("div", { className: "linkWrapper" }, right),
82
- isMobileScreen && !isMobileMenuOpen && (React.createElement("span", { className: "sidebar-trigger pointer hover-text-primary", onClick: toggleMenu }, sidebarTrigger || React.createElement(Trigger, { isOpen: isMobileMenuOpen })))));
84
+ isMobileScreen && !isMobileMenuOpen && (React.createElement(React.Fragment, null, hasSidebar ?
85
+ React.createElement("span", { className: "sidebar-trigger pointer hover-text-primary", onClick: openSidebar }, sidebarTrigger || React.createElement(Trigger, { isOpen: sidebarOpen }))
86
+ : React.createElement("span", { className: "sidebar-trigger pointer hover-text-primary", onClick: toggleMenu }, sidebarTrigger || React.createElement(Trigger, { isOpen: isMobileMenuOpen }))))));
83
87
  }
@@ -17,6 +17,9 @@ interface NavbarProps {
17
17
  sidebarTrigger?: React.ReactNode;
18
18
  transparent?: boolean;
19
19
  sideBar?: number;
20
+ hasSidebar?: boolean;
21
+ sidebarOpen?: boolean;
22
+ openSidebar?: () => void;
20
23
  }
21
24
 
22
25
  export default function AppBar({
@@ -31,6 +34,9 @@ export default function AppBar({
31
34
  sideBar,
32
35
  sidebarTrigger,
33
36
  transparent,
37
+ hasSidebar,
38
+ openSidebar,
39
+ sidebarOpen = false
34
40
  }: NavbarProps) {
35
41
  const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
36
42
  const [isMobileScreen, setIsMobileScreen] = useState(false);
@@ -64,6 +70,8 @@ export default function AppBar({
64
70
 
65
71
  return (
66
72
  <nav
73
+ // the id will be used to get the height for the sidebar in the sidebar file
74
+ id='appBar'
67
75
  className={`navigation-bar
68
76
  ${isMobileMenuOpen ? 'navbar-mobile-open' : ''}
69
77
  ${funcss || ''}
@@ -90,9 +98,17 @@ export default function AppBar({
90
98
  <div className="linkWrapper">{right}</div>
91
99
 
92
100
  {isMobileScreen && !isMobileMenuOpen && (
93
- <span className="sidebar-trigger pointer hover-text-primary" onClick={toggleMenu}>
101
+ <>
102
+ {
103
+ hasSidebar ?
104
+ <span className="sidebar-trigger pointer hover-text-primary" onClick={openSidebar}>
105
+ {sidebarTrigger || <Trigger isOpen={sidebarOpen} />}
106
+ </span>
107
+ : <span className="sidebar-trigger pointer hover-text-primary" onClick={toggleMenu}>
94
108
  {sidebarTrigger || <Trigger isOpen={isMobileMenuOpen} />}
95
109
  </span>
110
+ }
111
+ </>
96
112
  )}
97
113
  </nav>
98
114
  );
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ type DataItem = {
3
+ label: string;
4
+ [key: string]: any;
5
+ };
6
+ type ChartSeries = {
7
+ dataKey: string;
8
+ label?: string;
9
+ color?: string;
10
+ };
11
+ interface BarsProps {
12
+ data: DataItem[];
13
+ series: ChartSeries[];
14
+ showGrid?: boolean;
15
+ funcss?: string;
16
+ showLegend?: boolean;
17
+ showXAxis?: boolean;
18
+ showYAxis?: boolean;
19
+ barRadius?: number;
20
+ barSize?: number;
21
+ }
22
+ declare const Bars: React.FC<BarsProps>;
23
+ export default Bars;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __rest = (this && this.__rest) || function (s, e) {
15
+ var t = {};
16
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
17
+ t[p] = s[p];
18
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
19
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
20
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
21
+ t[p[i]] = s[p[i]];
22
+ }
23
+ return t;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var react_1 = __importDefault(require("react"));
30
+ var recharts_1 = require("recharts");
31
+ // Resolve 'primary' to actual CSS variable value like var(--primary)
32
+ var resolveColor = function (color) {
33
+ if (!color)
34
+ return getCssVar('--primary') || '#8884d8';
35
+ if (color.startsWith('#'))
36
+ return color;
37
+ return getCssVar("--".concat(color)) || color;
38
+ };
39
+ // Helper to get CSS variable value from :root
40
+ var getCssVar = function (varName) {
41
+ if (typeof window === 'undefined')
42
+ return '';
43
+ return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();
44
+ };
45
+ var Bars = function (_a) {
46
+ var data = _a.data, series = _a.series, _b = _a.showGrid, showGrid = _b === void 0 ? true : _b, _c = _a.showLegend, showLegend = _c === void 0 ? true : _c, _d = _a.showXAxis, showXAxis = _d === void 0 ? true : _d, _e = _a.showYAxis, showYAxis = _e === void 0 ? false : _e, _f = _a.barRadius, barRadius = _f === void 0 ? 6 : _f, funcss = _a.funcss, _g = _a.barSize, barSize = _g === void 0 ? 30 : _g, rest = __rest(_a, ["data", "series", "showGrid", "showLegend", "showXAxis", "showYAxis", "barRadius", "funcss", "barSize"]);
47
+ return (react_1.default.createElement(recharts_1.ResponsiveContainer, __assign({ className: funcss || "" }, rest, { width: "100%" }),
48
+ react_1.default.createElement(recharts_1.BarChart, { data: data },
49
+ showGrid && react_1.default.createElement(recharts_1.CartesianGrid, { strokeDasharray: "3 3" }),
50
+ showXAxis && react_1.default.createElement(recharts_1.XAxis, { dataKey: "label" }),
51
+ showYAxis && react_1.default.createElement(recharts_1.YAxis, null),
52
+ react_1.default.createElement(recharts_1.Tooltip, null),
53
+ showLegend && react_1.default.createElement(recharts_1.Legend, null),
54
+ series.map(function (s) { return (react_1.default.createElement(recharts_1.Bar, { key: s.dataKey, dataKey: s.dataKey, name: s.label || s.dataKey, fill: resolveColor(s.color), radius: [barRadius, barRadius, 0, 0], barSize: barSize })); }))));
55
+ };
56
+ exports.default = Bars;
@@ -0,0 +1,86 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import {
5
+ BarChart,
6
+ Bar,
7
+ XAxis,
8
+ YAxis,
9
+ Tooltip,
10
+ Legend,
11
+ CartesianGrid,
12
+ ResponsiveContainer,
13
+ } from 'recharts';
14
+
15
+ type DataItem = {
16
+ label: string;
17
+ [key: string]: any;
18
+ };
19
+
20
+ type ChartSeries = {
21
+ dataKey: string;
22
+ label?: string;
23
+ color?: string; // Can be a CSS variable name like 'primary' or a hex code
24
+ };
25
+
26
+ interface BarsProps {
27
+ data: DataItem[];
28
+ series: ChartSeries[];
29
+ showGrid?: boolean;
30
+ funcss?: string,
31
+ showLegend?: boolean;
32
+ showXAxis?: boolean;
33
+ showYAxis?: boolean;
34
+ barRadius?: number;
35
+ barSize?: number;
36
+ }
37
+
38
+ // Resolve 'primary' to actual CSS variable value like var(--primary)
39
+ const resolveColor = (color?: string): string => {
40
+ if (!color) return getCssVar('--primary') || '#8884d8';
41
+ if (color.startsWith('#')) return color;
42
+ return getCssVar(`--${color}`) || color;
43
+ };
44
+
45
+ // Helper to get CSS variable value from :root
46
+ const getCssVar = (varName: string): string => {
47
+ if (typeof window === 'undefined') return '';
48
+ return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();
49
+ };
50
+
51
+ const Bars: React.FC<BarsProps> = ({
52
+ data,
53
+ series,
54
+ showGrid = true,
55
+ showLegend = true,
56
+ showXAxis = true,
57
+ showYAxis = false,
58
+ barRadius = 6,
59
+ funcss,
60
+ barSize = 30,
61
+ ...rest
62
+ }) => {
63
+ return (
64
+ <ResponsiveContainer className={funcss || ``} {...rest} width="100%" >
65
+ <BarChart data={data}>
66
+ {showGrid && <CartesianGrid strokeDasharray="3 3" />}
67
+ {showXAxis && <XAxis dataKey="label" />}
68
+ {showYAxis && <YAxis />}
69
+ <Tooltip />
70
+ {showLegend && <Legend />}
71
+ {series.map((s) => (
72
+ <Bar
73
+ key={s.dataKey}
74
+ dataKey={s.dataKey}
75
+ name={s.label || s.dataKey}
76
+ fill={resolveColor(s.color)}
77
+ radius={[barRadius, barRadius, 0, 0]}
78
+ barSize={barSize}
79
+ />
80
+ ))}
81
+ </BarChart>
82
+ </ResponsiveContainer>
83
+ );
84
+ };
85
+
86
+ export default Bars;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ type DataItem = {
3
+ label: string;
4
+ [key: string]: any;
5
+ };
6
+ type ChartSeries = {
7
+ dataKey: string;
8
+ label?: string;
9
+ color?: string;
10
+ strokeWidth?: number;
11
+ dot?: boolean;
12
+ fromColor?: string;
13
+ toColor?: string;
14
+ };
15
+ interface AreaChartProps {
16
+ data: DataItem[];
17
+ series: ChartSeries[];
18
+ fromColor?: string;
19
+ toColor?: string;
20
+ showGrid?: boolean;
21
+ showLegend?: boolean;
22
+ showXAxis?: boolean;
23
+ showYAxis?: boolean;
24
+ funcss?: string;
25
+ curveType?: 'linear' | 'monotone' | 'step' | 'basis';
26
+ }
27
+ declare const Lines: React.FC<AreaChartProps>;
28
+ export default Lines;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var react_1 = __importDefault(require("react"));
8
+ var recharts_1 = require("recharts");
9
+ var getCssVar = function (varName) {
10
+ var _a;
11
+ if (typeof window === 'undefined')
12
+ return '';
13
+ return ((_a = getComputedStyle(document.documentElement).getPropertyValue("--".concat(varName))) === null || _a === void 0 ? void 0 : _a.trim()) || '';
14
+ };
15
+ var resolveStrokeColor = function (color) {
16
+ if (!color)
17
+ return getCssVar('primary') || '#8884d8';
18
+ if (color.startsWith('#'))
19
+ return color;
20
+ return getCssVar(color) || color;
21
+ };
22
+ var Lines = function (_a) {
23
+ var data = _a.data, series = _a.series, fromColor = _a.fromColor, toColor = _a.toColor, _b = _a.showGrid, showGrid = _b === void 0 ? true : _b, _c = _a.showLegend, showLegend = _c === void 0 ? true : _c, _d = _a.showXAxis, showXAxis = _d === void 0 ? true : _d, _e = _a.showYAxis, showYAxis = _e === void 0 ? false : _e, funcss = _a.funcss, _f = _a.curveType, curveType = _f === void 0 ? 'monotone' : _f;
24
+ return (react_1.default.createElement(recharts_1.ResponsiveContainer, { width: "100%", className: funcss },
25
+ react_1.default.createElement(recharts_1.AreaChart, { data: data },
26
+ react_1.default.createElement("defs", null,
27
+ react_1.default.createElement("linearGradient", { id: "colorUv", x1: "0", y1: "0", x2: "0", y2: "1" },
28
+ react_1.default.createElement("stop", { offset: "5%", stopColor: getCssVar(fromColor || 'primary'), stopOpacity: 0.8 }),
29
+ react_1.default.createElement("stop", { offset: "95%", stopColor: getCssVar(toColor || 'primary200'), stopOpacity: 0 }))),
30
+ showGrid && react_1.default.createElement(recharts_1.CartesianGrid, { strokeDasharray: "3 3" }),
31
+ showXAxis && react_1.default.createElement(recharts_1.XAxis, { dataKey: "label", angle: 45 }),
32
+ showYAxis && react_1.default.createElement(recharts_1.YAxis, null),
33
+ react_1.default.createElement(recharts_1.Tooltip, null),
34
+ showLegend && react_1.default.createElement(recharts_1.Legend, null),
35
+ series.map(function (s, index) { return (react_1.default.createElement(recharts_1.Area, { key: s.dataKey, type: curveType, dataKey: s.dataKey, name: s.label || s.dataKey, stroke: resolveStrokeColor(s.color), fill: "url(#colorUv)", fillOpacity: 1, strokeWidth: s.strokeWidth || 2, dot: s.dot !== false ? { r: 4 } : false, activeDot: { r: 8 } })); }))));
36
+ };
37
+ exports.default = Lines;
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+
3
+ import React, { useEffect, useState } from 'react';
4
+ import {
5
+ AreaChart,
6
+ Area,
7
+ XAxis,
8
+ YAxis,
9
+ Tooltip,
10
+ Legend,
11
+ CartesianGrid,
12
+ ResponsiveContainer,
13
+ } from 'recharts';
14
+
15
+ type DataItem = {
16
+ label: string;
17
+ [key: string]: any;
18
+ };
19
+
20
+ type ChartSeries = {
21
+ dataKey: string;
22
+ label?: string;
23
+ color?: string;
24
+ strokeWidth?: number;
25
+ dot?: boolean;
26
+ fromColor?: string;
27
+ toColor?: string;
28
+ };
29
+
30
+ interface AreaChartProps {
31
+ data: DataItem[];
32
+ series: ChartSeries[];
33
+ fromColor?: string;
34
+ toColor?: string;
35
+ showGrid?: boolean;
36
+ showLegend?: boolean;
37
+ showXAxis?: boolean;
38
+ showYAxis?: boolean;
39
+ funcss?: string;
40
+ curveType?: 'linear' | 'monotone' | 'step' | 'basis';
41
+ }
42
+
43
+ const getCssVar = (varName: string): string => {
44
+ if (typeof window === 'undefined') return '';
45
+ return getComputedStyle(document.documentElement).getPropertyValue(`--${varName}`)?.trim() || '';
46
+ };
47
+
48
+
49
+
50
+
51
+ const resolveStrokeColor = (color?: string): string => {
52
+ if (!color) return getCssVar('primary') || '#8884d8';
53
+ if (color.startsWith('#')) return color;
54
+ return getCssVar(color) || color;
55
+ };
56
+
57
+ const Lines: React.FC<AreaChartProps> = ({
58
+ data,
59
+ series,
60
+ fromColor,
61
+ toColor,
62
+ showGrid = true,
63
+ showLegend = true,
64
+ showXAxis = true,
65
+ showYAxis = false,
66
+ funcss,
67
+ curveType = 'monotone',
68
+ }) => {
69
+ return (
70
+ <ResponsiveContainer width="100%" className={funcss}>
71
+ <AreaChart data={data}>
72
+
73
+
74
+ <defs>
75
+ <linearGradient id="colorUv" x1="0" y1="0" x2="0" y2="1">
76
+ <stop offset="5%" stopColor={getCssVar(fromColor || 'primary')} stopOpacity={0.8}/>
77
+ <stop offset="95%" stopColor={getCssVar(toColor || 'primary200')} stopOpacity={0}/>
78
+ </linearGradient>
79
+ </defs>
80
+
81
+ {showGrid && <CartesianGrid strokeDasharray="3 3" />}
82
+ {showXAxis && <XAxis dataKey="label" angle={45} />}
83
+ {showYAxis && <YAxis />}
84
+ <Tooltip />
85
+ {showLegend && <Legend />}
86
+ {series.map((s, index) => (
87
+ <Area
88
+ key={s.dataKey}
89
+ type={curveType}
90
+ dataKey={s.dataKey}
91
+ name={s.label || s.dataKey}
92
+ stroke={resolveStrokeColor(s.color)}
93
+ fill="url(#colorUv)"
94
+ fillOpacity={1}
95
+ strokeWidth={s.strokeWidth || 2}
96
+ dot={s.dot !== false ? { r: 4 } : false}
97
+ activeDot={{ r: 8 }}
98
+ />
99
+ ))}
100
+ </AreaChart>
101
+ </ResponsiveContainer>
102
+ );
103
+ };
104
+
105
+ export default Lines;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ type PieDataItem = {
3
+ label: string;
4
+ value: number;
5
+ color?: string;
6
+ };
7
+ interface PieChartProps {
8
+ data: PieDataItem[];
9
+ donut?: boolean;
10
+ showLegend?: boolean;
11
+ funcss?: string;
12
+ width?: number | string;
13
+ height?: number | string;
14
+ }
15
+ declare const ChartPie: React.FC<PieChartProps>;
16
+ export default ChartPie;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ var react_1 = __importDefault(require("react"));
8
+ var recharts_1 = require("recharts");
9
+ var getCssVar = function (varName) {
10
+ var _a;
11
+ if (typeof window === 'undefined')
12
+ return '';
13
+ return (((_a = getComputedStyle(document.documentElement)
14
+ .getPropertyValue("--".concat(varName))) === null || _a === void 0 ? void 0 : _a.trim()) || '');
15
+ };
16
+ var ChartPie = function (_a) {
17
+ var data = _a.data, _b = _a.donut, donut = _b === void 0 ? false : _b, _c = _a.showLegend, showLegend = _c === void 0 ? true : _c, _d = _a.funcss, funcss = _d === void 0 ? '' : _d, width = _a.width, height = _a.height;
18
+ var resolveColor = function (input, fallback) {
19
+ if (fallback === void 0) { fallback = '#8884d8'; }
20
+ if (!input)
21
+ return getCssVar('primary') || fallback;
22
+ if (input.startsWith('#'))
23
+ return input;
24
+ return getCssVar(input) || input;
25
+ };
26
+ var chart = (react_1.default.createElement(recharts_1.PieChart, { width: typeof width === 'number' ? width : undefined, height: typeof height === 'number' ? height : undefined },
27
+ react_1.default.createElement(recharts_1.Tooltip, null),
28
+ showLegend && react_1.default.createElement(recharts_1.Legend, null),
29
+ react_1.default.createElement(recharts_1.Pie, { data: data, dataKey: "value", nameKey: "label", cx: "50%", cy: "50%", outerRadius: 100, innerRadius: donut ? 60 : 0, label: true }, data.map(function (entry, index) { return (react_1.default.createElement(recharts_1.Cell, { key: "cell-".concat(index), fill: resolveColor(entry.color), stroke: "#ffffff", strokeWidth: 1 })); }))));
30
+ // If no width or height is set, use ResponsiveContainer
31
+ if (!width && !height) {
32
+ return (react_1.default.createElement(recharts_1.ResponsiveContainer, { width: "100%", height: 300, className: funcss }, chart));
33
+ }
34
+ return (react_1.default.createElement("div", { className: funcss, style: {
35
+ width: typeof width === 'number' ? "".concat(width, "px") : width || '100%',
36
+ height: typeof height === 'number' ? "".concat(height, "px") : height || '300px',
37
+ } }, chart));
38
+ };
39
+ exports.default = ChartPie;
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+
3
+ import React from 'react';
4
+ import {
5
+ PieChart as RePieChart,
6
+ Pie,
7
+ Cell,
8
+ Tooltip,
9
+ Legend,
10
+ ResponsiveContainer,
11
+ } from 'recharts';
12
+
13
+ type PieDataItem = {
14
+ label: string;
15
+ value: number;
16
+ color?: string;
17
+ };
18
+
19
+ interface PieChartProps {
20
+ data: PieDataItem[];
21
+ donut?: boolean;
22
+ showLegend?: boolean;
23
+ funcss?: string;
24
+ width?: number | string;
25
+ height?: number | string;
26
+ }
27
+
28
+ const getCssVar = (varName: string): string => {
29
+ if (typeof window === 'undefined') return '';
30
+ return (
31
+ getComputedStyle(document.documentElement)
32
+ .getPropertyValue(`--${varName}`)
33
+ ?.trim() || ''
34
+ );
35
+ };
36
+
37
+ const ChartPie: React.FC<PieChartProps> = ({
38
+ data,
39
+ donut = false,
40
+ showLegend = true,
41
+ funcss = '',
42
+ width,
43
+ height,
44
+ }) => {
45
+ const resolveColor = (input?: string, fallback = '#8884d8') => {
46
+ if (!input) return getCssVar('primary') || fallback;
47
+ if (input.startsWith('#')) return input;
48
+ return getCssVar(input) || input;
49
+ };
50
+
51
+ const chart = (
52
+ <RePieChart width={typeof width === 'number' ? width : undefined} height={typeof height === 'number' ? height : undefined}>
53
+ <Tooltip />
54
+ {showLegend && <Legend />}
55
+ <Pie
56
+ data={data}
57
+ dataKey="value"
58
+ nameKey="label"
59
+ cx="50%"
60
+ cy="50%"
61
+ outerRadius={100}
62
+ innerRadius={donut ? 60 : 0}
63
+ label
64
+ >
65
+ {data.map((entry, index) => (
66
+ <Cell
67
+ key={`cell-${index}`}
68
+ fill={resolveColor(entry.color)}
69
+ stroke="#ffffff"
70
+ strokeWidth={1}
71
+ />
72
+ ))}
73
+ </Pie>
74
+ </RePieChart>
75
+ );
76
+
77
+ // If no width or height is set, use ResponsiveContainer
78
+ if (!width && !height) {
79
+ return (
80
+ <ResponsiveContainer width="100%" height={300} className={funcss}>
81
+ {chart}
82
+ </ResponsiveContainer>
83
+ );
84
+ }
85
+
86
+ return (
87
+ <div
88
+ className={funcss}
89
+ style={{
90
+ width: typeof width === 'number' ? `${width}px` : width || '100%',
91
+ height: typeof height === 'number' ? `${height}px` : height || '300px',
92
+ }}
93
+ >
94
+ {chart}
95
+ </div>
96
+ );
97
+ };
98
+
99
+ export default ChartPie;
package/ui/input/Input.js CHANGED
@@ -123,7 +123,8 @@ var Input = function (_a) {
123
123
  }, value: value }, rest))));
124
124
  return (react_1.default.createElement("div", { className: "_upload_container" },
125
125
  react_1.default.createElement("label", { htmlFor: id || "fileInput", className: "_upload_label" },
126
- react_1.default.createElement("div", { className: "_upload_icon" }, icon || react_1.default.createElement(react_1.default.Fragment, null, "\u21EA")),
126
+ react_1.default.createElement("div", { className: "_upload_icon" }, icon || react_1.default.createElement(react_1.default.Fragment, null,
127
+ react_1.default.createElement(pi_1.PiCloudArrowUp, null))),
127
128
  react_1.default.createElement("div", { className: "_upload_text", style: {
128
129
  whiteSpace: 'nowrap',
129
130
  overflow: 'hidden',
@@ -306,7 +306,7 @@ const Input: React.FC<InputProps> = ({
306
306
  return (
307
307
  <div className="_upload_container">
308
308
  <label htmlFor={id || "fileInput"} className="_upload_label">
309
- <div className="_upload_icon">{ icon || <>&#8682;</>}</div>
309
+ <div className="_upload_icon">{ icon || <><PiCloudArrowUp /></>}</div>
310
310
  <div className="_upload_text" style={{
311
311
  whiteSpace: 'nowrap',
312
312
  overflow: 'hidden',
@@ -1,15 +1,24 @@
1
- import { ReactNode } from 'react';
2
- import * as React from 'react';
3
- interface FunLoaderProps {
1
+ import React, { ReactNode } from 'react';
2
+ interface SideBarLink {
3
+ uri: string;
4
+ icon: React.ReactNode;
5
+ text: string;
6
+ section: string;
7
+ }
8
+ interface SideBarProps {
4
9
  funcss?: string;
5
- position?: "left" | "right";
6
- glassy?: boolean;
10
+ position?: 'left' | 'right';
7
11
  open?: boolean;
8
12
  header?: ReactNode;
9
13
  content?: ReactNode;
10
- close?: ReactNode;
11
14
  footer?: ReactNode;
12
- fixed?: boolean;
15
+ top?: number;
16
+ sidebarWidth?: number;
17
+ sidebarCss?: string;
18
+ bodyCss?: string;
19
+ links?: SideBarLink[];
20
+ children?: ReactNode;
21
+ onClose?: () => void;
13
22
  }
14
- export default function SideBar({ funcss, position, glassy, header, open, content, close, footer, fixed, ...rest }: FunLoaderProps): React.JSX.Element;
23
+ export default function SideBar({ funcss, position, open, header, content, footer, top, sidebarWidth, sidebarCss, bodyCss, links, children, onClose, }: SideBarProps): React.JSX.Element;
15
24
  export {};