funuicss 2.7.6 → 2.7.7
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/css/fun.css +21 -11
- package/index.d.ts +1 -0
- package/index.js +3 -1
- package/index.tsx +1 -0
- package/package.json +3 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/ui/ScrollInView/ScrollInView.d.ts +72 -0
- package/ui/ScrollInView/ScrollInView.js +70 -0
- package/ui/ScrollInView/ScrollInView.tsx +69 -0
- package/ui/accordion/Accordion.d.ts +1 -0
- package/ui/accordion/Accordion.js +12 -7
- package/ui/accordion/Accordion.tsx +16 -15
- package/ui/alert/Alert.js +1 -1
- package/ui/alert/Alert.tsx +2 -2
- package/ui/avatar/Avatar.d.ts +4 -2
- package/ui/avatar/Avatar.js +5 -5
- package/ui/avatar/Avatar.tsx +18 -6
- package/ui/specials/Circle.js +1 -1
- package/ui/specials/Circle.tsx +1 -1
- package/ui/theme/theme.d.ts +1 -1
- package/ui/theme/theme.js +1 -1
- package/ui/theme/theme.tsx +2 -2
- package/ui/theme/themes.d.ts +113 -0
- package/ui/theme/themes.js +48 -3
- package/ui/theme/themes.ts +75 -0
- package/ui/view/View.d.ts +44 -0
- package/ui/view/View.js +64 -0
- package/ui/view/View.tsx +157 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
declare const animationVariants: {
|
|
3
|
+
'fade-up': {
|
|
4
|
+
hidden: {
|
|
5
|
+
opacity: number;
|
|
6
|
+
y: number;
|
|
7
|
+
};
|
|
8
|
+
visible: {
|
|
9
|
+
opacity: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
'fade-down': {
|
|
14
|
+
hidden: {
|
|
15
|
+
opacity: number;
|
|
16
|
+
y: number;
|
|
17
|
+
};
|
|
18
|
+
visible: {
|
|
19
|
+
opacity: number;
|
|
20
|
+
y: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
'fade-in': {
|
|
24
|
+
hidden: {
|
|
25
|
+
opacity: number;
|
|
26
|
+
};
|
|
27
|
+
visible: {
|
|
28
|
+
opacity: number;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
'zoom-in': {
|
|
32
|
+
hidden: {
|
|
33
|
+
scale: number;
|
|
34
|
+
opacity: number;
|
|
35
|
+
};
|
|
36
|
+
visible: {
|
|
37
|
+
scale: number;
|
|
38
|
+
opacity: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
'slide-left': {
|
|
42
|
+
hidden: {
|
|
43
|
+
x: number;
|
|
44
|
+
opacity: number;
|
|
45
|
+
};
|
|
46
|
+
visible: {
|
|
47
|
+
x: number;
|
|
48
|
+
opacity: number;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
'slide-right': {
|
|
52
|
+
hidden: {
|
|
53
|
+
x: number;
|
|
54
|
+
opacity: number;
|
|
55
|
+
};
|
|
56
|
+
visible: {
|
|
57
|
+
x: number;
|
|
58
|
+
opacity: number;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
interface ScrollInViewProps {
|
|
63
|
+
children: ReactNode;
|
|
64
|
+
animationType?: keyof typeof animationVariants;
|
|
65
|
+
delay?: number;
|
|
66
|
+
duration?: number;
|
|
67
|
+
threshold?: number;
|
|
68
|
+
once?: boolean;
|
|
69
|
+
className?: string;
|
|
70
|
+
}
|
|
71
|
+
declare const ScrollInView: React.FC<ScrollInViewProps>;
|
|
72
|
+
export default ScrollInView;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
var react_1 = __importStar(require("react"));
|
|
38
|
+
var framer_motion_1 = require("framer-motion");
|
|
39
|
+
var react_intersection_observer_1 = require("react-intersection-observer");
|
|
40
|
+
var animationVariants = {
|
|
41
|
+
'fade-up': { hidden: { opacity: 0, y: 40 }, visible: { opacity: 1, y: 0 } },
|
|
42
|
+
'fade-down': { hidden: { opacity: 0, y: -40 }, visible: { opacity: 1, y: 0 } },
|
|
43
|
+
'fade-in': { hidden: { opacity: 0 }, visible: { opacity: 1 } },
|
|
44
|
+
'zoom-in': { hidden: { scale: 0.9, opacity: 0 }, visible: { scale: 1, opacity: 1 } },
|
|
45
|
+
'slide-left': { hidden: { x: 40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
|
|
46
|
+
'slide-right': { hidden: { x: -40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
|
|
47
|
+
};
|
|
48
|
+
var ScrollInView = function (_a) {
|
|
49
|
+
var children = _a.children, _b = _a.animationType, animationType = _b === void 0 ? 'fade-up' : _b, _c = _a.delay, delay = _c === void 0 ? 0 : _c, _d = _a.duration, duration = _d === void 0 ? 0.6 : _d, _e = _a.threshold, threshold = _e === void 0 ? 0.2 : _e, _f = _a.once, once = _f === void 0 ? false : _f, _g = _a.className, className = _g === void 0 ? '' : _g;
|
|
50
|
+
var controls = (0, framer_motion_1.useAnimation)();
|
|
51
|
+
var _h = (0, react_intersection_observer_1.useInView)({
|
|
52
|
+
threshold: threshold,
|
|
53
|
+
triggerOnce: once,
|
|
54
|
+
}), ref = _h[0], inView = _h[1];
|
|
55
|
+
(0, react_1.useEffect)(function () {
|
|
56
|
+
if (inView) {
|
|
57
|
+
controls.start('visible');
|
|
58
|
+
}
|
|
59
|
+
else if (!once) {
|
|
60
|
+
controls.start('hidden');
|
|
61
|
+
}
|
|
62
|
+
}, [inView, once, controls]);
|
|
63
|
+
var variants = animationVariants[animationType] || animationVariants['fade-up'];
|
|
64
|
+
return (react_1.default.createElement(framer_motion_1.motion.div, { ref: ref, variants: variants, initial: "hidden", animate: controls, transition: {
|
|
65
|
+
delay: delay,
|
|
66
|
+
duration: duration,
|
|
67
|
+
ease: [0.25, 1, 0.5, 1], // Natural cubic bezier
|
|
68
|
+
}, className: className }, children));
|
|
69
|
+
};
|
|
70
|
+
exports.default = ScrollInView;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { ReactNode, useEffect } from 'react';
|
|
4
|
+
import { motion, useAnimation } from 'framer-motion';
|
|
5
|
+
import { useInView } from 'react-intersection-observer';
|
|
6
|
+
|
|
7
|
+
const animationVariants = {
|
|
8
|
+
'fade-up': { hidden: { opacity: 0, y: 40 }, visible: { opacity: 1, y: 0 } },
|
|
9
|
+
'fade-down': { hidden: { opacity: 0, y: -40 }, visible: { opacity: 1, y: 0 } },
|
|
10
|
+
'fade-in': { hidden: { opacity: 0 }, visible: { opacity: 1 } },
|
|
11
|
+
'zoom-in': { hidden: { scale: 0.9, opacity: 0 }, visible: { scale: 1, opacity: 1 } },
|
|
12
|
+
'slide-left': { hidden: { x: 40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
|
|
13
|
+
'slide-right': { hidden: { x: -40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
interface ScrollInViewProps {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
animationType?: keyof typeof animationVariants;
|
|
19
|
+
delay?: number;
|
|
20
|
+
duration?: number;
|
|
21
|
+
threshold?: number;
|
|
22
|
+
once?: boolean;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const ScrollInView: React.FC<ScrollInViewProps> = ({
|
|
27
|
+
children,
|
|
28
|
+
animationType = 'fade-up',
|
|
29
|
+
delay = 0,
|
|
30
|
+
duration = 0.6,
|
|
31
|
+
threshold = 0.2,
|
|
32
|
+
once = false,
|
|
33
|
+
className = '',
|
|
34
|
+
}) => {
|
|
35
|
+
const controls = useAnimation();
|
|
36
|
+
const [ref, inView] = useInView({
|
|
37
|
+
threshold,
|
|
38
|
+
triggerOnce: once,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (inView) {
|
|
43
|
+
controls.start('visible');
|
|
44
|
+
} else if (!once) {
|
|
45
|
+
controls.start('hidden');
|
|
46
|
+
}
|
|
47
|
+
}, [inView, once, controls]);
|
|
48
|
+
|
|
49
|
+
const variants = animationVariants[animationType] || animationVariants['fade-up'];
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<motion.div
|
|
53
|
+
ref={ref}
|
|
54
|
+
variants={variants}
|
|
55
|
+
initial="hidden"
|
|
56
|
+
animate={controls}
|
|
57
|
+
transition={{
|
|
58
|
+
delay,
|
|
59
|
+
duration,
|
|
60
|
+
ease: [0.25, 1, 0.5, 1], // Natural cubic bezier
|
|
61
|
+
}}
|
|
62
|
+
className={className}
|
|
63
|
+
>
|
|
64
|
+
{children}
|
|
65
|
+
</motion.div>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default ScrollInView;
|
|
@@ -42,17 +42,22 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
42
42
|
}
|
|
43
43
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
44
|
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
45
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
49
|
var react_1 = __importStar(require("react"));
|
|
47
50
|
var pi_1 = require("react-icons/pi");
|
|
51
|
+
var RowFlex_1 = __importDefault(require("../specials/RowFlex"));
|
|
48
52
|
var AccordionItem = function (_a) {
|
|
49
|
-
var title = _a.title, content = _a.content, isOpen = _a.isOpen, onToggle = _a.onToggle, _b = _a.itemClass, itemClass = _b === void 0 ? '' : _b, _c = _a.titleClass, titleClass = _c === void 0 ? '' : _c, _d = _a.iconClass, iconClass = _d === void 0 ? '' : _d, _e = _a.contentClass, contentClass = _e === void 0 ? '' : _e, _f = _a.activeClass, activeClass = _f === void 0 ? '' : _f;
|
|
53
|
+
var icon = _a.icon, title = _a.title, content = _a.content, isOpen = _a.isOpen, onToggle = _a.onToggle, _b = _a.itemClass, itemClass = _b === void 0 ? '' : _b, _c = _a.titleClass, titleClass = _c === void 0 ? '' : _c, _d = _a.iconClass, iconClass = _d === void 0 ? '' : _d, _e = _a.contentClass, contentClass = _e === void 0 ? '' : _e, _f = _a.activeClass, activeClass = _f === void 0 ? '' : _f;
|
|
50
54
|
return (react_1.default.createElement("div", { className: "accordion-item ".concat(itemClass, " ").concat(isOpen ? activeClass : '') },
|
|
51
|
-
react_1.default.createElement("
|
|
52
|
-
react_1.default.createElement(
|
|
53
|
-
|
|
54
|
-
react_1.default.createElement(
|
|
55
|
-
|
|
55
|
+
react_1.default.createElement("div", { className: "accordion-header ".concat(titleClass), onClick: onToggle },
|
|
56
|
+
react_1.default.createElement(RowFlex_1.default, { alignItems: 'center', gap: 0.6 },
|
|
57
|
+
icon && react_1.default.createElement("div", { style: { lineHeight: 0 } }, icon),
|
|
58
|
+
react_1.default.createElement("div", { className: 'col fit' }, title)),
|
|
59
|
+
react_1.default.createElement("div", { style: { lineHeight: 0 }, className: "".concat(iconClass, " ").concat(isOpen ? "accordion-rotated" : "") },
|
|
60
|
+
react_1.default.createElement(pi_1.PiCaretDown, null))),
|
|
56
61
|
react_1.default.createElement("div", { className: "accordion-content ".concat(contentClass, " ").concat(isOpen ? 'open' : '') },
|
|
57
62
|
react_1.default.createElement("div", { className: "accordion-inner" }, content))));
|
|
58
63
|
};
|
|
@@ -75,6 +80,6 @@ var Accordion = function (_a) {
|
|
|
75
80
|
setOpenIndexes(openIndexes.includes(index) ? [] : [index]);
|
|
76
81
|
}
|
|
77
82
|
};
|
|
78
|
-
return (react_1.default.createElement("div", { className: "accordion" }, items.map(function (item, index) { return (react_1.default.createElement(AccordionItem, { key: index, index: index, title: item.title, content: item.content, isOpen: openIndexes.includes(index), onToggle: function () { return toggleIndex(index); }, itemClass: itemClass, titleClass: titleClass, iconClass: iconClass, contentClass: contentClass, activeClass: activeClass })); })));
|
|
83
|
+
return (react_1.default.createElement("div", { className: "accordion" }, items.map(function (item, index) { return (react_1.default.createElement(AccordionItem, { key: index, index: index, icon: item.icon, title: item.title, content: item.content, isOpen: openIndexes.includes(index), onToggle: function () { return toggleIndex(index); }, itemClass: itemClass, titleClass: titleClass, iconClass: iconClass, contentClass: contentClass, activeClass: activeClass })); })));
|
|
79
84
|
};
|
|
80
85
|
exports.default = Accordion;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import { PiCaretDown, PiCaretUp } from 'react-icons/pi';
|
|
4
|
+
import RowFlex from '../specials/RowFlex';
|
|
4
5
|
|
|
5
6
|
interface AccordionItemProps {
|
|
6
7
|
title: string;
|
|
@@ -8,7 +9,7 @@ interface AccordionItemProps {
|
|
|
8
9
|
isOpen?: boolean;
|
|
9
10
|
onToggle?: () => void;
|
|
10
11
|
index?: number;
|
|
11
|
-
|
|
12
|
+
icon?: React.ReactNode;
|
|
12
13
|
// Customization
|
|
13
14
|
itemClass?: string;
|
|
14
15
|
titleClass?: string;
|
|
@@ -18,6 +19,7 @@ interface AccordionItemProps {
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
const AccordionItem: React.FC<AccordionItemProps> = ({
|
|
22
|
+
icon,
|
|
21
23
|
title,
|
|
22
24
|
content,
|
|
23
25
|
isOpen,
|
|
@@ -30,20 +32,17 @@ const AccordionItem: React.FC<AccordionItemProps> = ({
|
|
|
30
32
|
}) => {
|
|
31
33
|
return (
|
|
32
34
|
<div className={`accordion-item ${itemClass} ${isOpen ? activeClass : ''}`}>
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
)}
|
|
45
|
-
</span>
|
|
46
|
-
</button>
|
|
35
|
+
<div className={`accordion-header ${titleClass}`} onClick={onToggle}>
|
|
36
|
+
<RowFlex alignItems='center' gap={0.6}>
|
|
37
|
+
{
|
|
38
|
+
icon && <div style={{lineHeight:0}}>{icon}</div>
|
|
39
|
+
}
|
|
40
|
+
<div className='col fit'>{title}</div>
|
|
41
|
+
</RowFlex>
|
|
42
|
+
<div style={{lineHeight:0}} className={`${iconClass} ${isOpen ? "accordion-rotated" : ""}`}>
|
|
43
|
+
<PiCaretDown />
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
47
46
|
<div className={`accordion-content ${contentClass} ${isOpen ? 'open' : ''}`}>
|
|
48
47
|
<div className="accordion-inner">{content}</div>
|
|
49
48
|
</div>
|
|
@@ -55,6 +54,7 @@ interface AccordionProps {
|
|
|
55
54
|
items: {
|
|
56
55
|
title: string;
|
|
57
56
|
content: React.ReactNode;
|
|
57
|
+
icon?: React.ReactNode;
|
|
58
58
|
}[];
|
|
59
59
|
allowMultiple?: boolean; // ✅ NEW
|
|
60
60
|
defaultOpenIndexes?: number[]; // optional
|
|
@@ -99,6 +99,7 @@ const Accordion: React.FC<AccordionProps> = ({
|
|
|
99
99
|
<AccordionItem
|
|
100
100
|
key={index}
|
|
101
101
|
index={index}
|
|
102
|
+
icon={item.icon}
|
|
102
103
|
title={item.title}
|
|
103
104
|
content={item.content}
|
|
104
105
|
isOpen={openIndexes.includes(index)}
|
package/ui/alert/Alert.js
CHANGED
|
@@ -82,7 +82,7 @@ function Alert(_a) {
|
|
|
82
82
|
type === 'success' && react_1.default.createElement(pi_1.PiCheckCircleDuotone, null),
|
|
83
83
|
type === 'info' && react_1.default.createElement(pi_1.PiInfo, null),
|
|
84
84
|
type === 'warning' && react_1.default.createElement(pi_1.PiWarning, null),
|
|
85
|
-
type === 'error' && react_1.default.createElement(pi_1.PiX, null))) : (react_1.default.createElement("
|
|
85
|
+
type === 'error' && react_1.default.createElement(pi_1.PiX, null))) : (react_1.default.createElement("div", { className: "rotate", style: { lineHeight: "0" } },
|
|
86
86
|
react_1.default.createElement(pi_1.PiSpinner, null)))),
|
|
87
87
|
react_1.default.createElement("div", { className: "alert-text" }, message || children))));
|
|
88
88
|
}
|
package/ui/alert/Alert.tsx
CHANGED
|
@@ -94,9 +94,9 @@ export default function Alert({
|
|
|
94
94
|
{type === 'error' && <PiX />}
|
|
95
95
|
</div>
|
|
96
96
|
) : (
|
|
97
|
-
<
|
|
97
|
+
<div className="rotate" style={{lineHeight:"0"}}>
|
|
98
98
|
<PiSpinner />
|
|
99
|
-
</
|
|
99
|
+
</div>
|
|
100
100
|
)}
|
|
101
101
|
</div>
|
|
102
102
|
<div className="alert-text">{message || children}</div>
|
package/ui/avatar/Avatar.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ import * as React from 'react';
|
|
|
3
3
|
interface AvatarProps {
|
|
4
4
|
funcss?: string;
|
|
5
5
|
children?: ReactNode;
|
|
6
|
-
size?:
|
|
6
|
+
size?: number;
|
|
7
7
|
bg?: string;
|
|
8
|
+
bordered?: boolean;
|
|
9
|
+
color?: string;
|
|
8
10
|
content?: ReactNode;
|
|
9
11
|
}
|
|
10
|
-
export default function Avatar({ funcss, children, size, bg, content, }: AvatarProps): React.JSX.Element;
|
|
12
|
+
export default function Avatar({ funcss, children, size, bordered, bg, content, color }: AvatarProps): React.JSX.Element;
|
|
11
13
|
export {};
|
package/ui/avatar/Avatar.js
CHANGED
|
@@ -37,10 +37,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
exports.default = Avatar;
|
|
38
38
|
var React = __importStar(require("react"));
|
|
39
39
|
function Avatar(_a) {
|
|
40
|
-
var funcss = _a.funcss, children = _a.children,
|
|
41
|
-
return (React.createElement("div", { className: "avatar ".concat(funcss || '', " ").concat(bg || ''), style: {
|
|
42
|
-
width: "".concat(size
|
|
43
|
-
height: "".concat(size
|
|
40
|
+
var funcss = _a.funcss, children = _a.children, _b = _a.size, size = _b === void 0 ? 2 : _b, _c = _a.bordered, bordered = _c === void 0 ? true : _c, bg = _a.bg, content = _a.content, color = _a.color;
|
|
41
|
+
return (React.createElement("div", { className: "\n animated \n fade-in \n avatar \n ".concat(funcss || '', " \n ").concat(bg || 'lighter', " \n ").concat(bordered ? 'border' : '', "\n ").concat("text-".concat(color), "\n "), style: {
|
|
42
|
+
width: "".concat(size, "rem"),
|
|
43
|
+
height: "".concat(size, "rem"),
|
|
44
44
|
} },
|
|
45
|
-
React.createElement(React.Fragment, null, content
|
|
45
|
+
React.createElement(React.Fragment, null, content || children)));
|
|
46
46
|
}
|
package/ui/avatar/Avatar.tsx
CHANGED
|
@@ -4,27 +4,39 @@ import * as React from 'react'
|
|
|
4
4
|
interface AvatarProps {
|
|
5
5
|
funcss?: string;
|
|
6
6
|
children?: ReactNode;
|
|
7
|
-
size?:
|
|
7
|
+
size?: number;
|
|
8
8
|
bg?: string;
|
|
9
|
+
bordered?:boolean ,
|
|
10
|
+
color?: string,
|
|
9
11
|
content?: ReactNode;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
export default function Avatar({
|
|
13
15
|
funcss,
|
|
14
16
|
children,
|
|
15
|
-
size,
|
|
17
|
+
size = 2,
|
|
18
|
+
bordered = true,
|
|
16
19
|
bg,
|
|
17
20
|
content,
|
|
21
|
+
color
|
|
18
22
|
}: AvatarProps) {
|
|
19
23
|
return (
|
|
20
24
|
<div
|
|
21
|
-
className={`
|
|
25
|
+
className={`
|
|
26
|
+
animated
|
|
27
|
+
fade-in
|
|
28
|
+
avatar
|
|
29
|
+
${funcss || ''}
|
|
30
|
+
${bg || 'lighter'}
|
|
31
|
+
${bordered ? 'border' : ''}
|
|
32
|
+
${`text-${color}`}
|
|
33
|
+
`}
|
|
22
34
|
style={{
|
|
23
|
-
width: `${size
|
|
24
|
-
height: `${size
|
|
35
|
+
width: `${size}rem`,
|
|
36
|
+
height: `${size}rem`,
|
|
25
37
|
}}
|
|
26
38
|
>
|
|
27
|
-
<>{content
|
|
39
|
+
<>{content || children}</>
|
|
28
40
|
</div>
|
|
29
41
|
);
|
|
30
42
|
}
|
package/ui/specials/Circle.js
CHANGED
|
@@ -60,7 +60,7 @@ exports.default = Circle;
|
|
|
60
60
|
var React = __importStar(require("react"));
|
|
61
61
|
function Circle(_a) {
|
|
62
62
|
var _b = _a.size, size = _b === void 0 ? 2 : _b, funcss = _a.funcss, bg = _a.bg, color = _a.color, children = _a.children, hoverable = _a.hoverable, raised = _a.raised, key = _a.key, onClick = _a.onClick, bordered = _a.bordered, rest = __rest(_a, ["size", "funcss", "bg", "color", "children", "hoverable", "raised", "key", "onClick", "bordered"]);
|
|
63
|
-
return (React.createElement("div", __assign({ className: " animated fade-in ".concat(bordered ? "border" : "", " pointer avatar ").concat(funcss || '', " ").concat("text-" + (color === null || color === void 0 ? void 0 : color.trim()) || '', " ").concat(raised ? "raised" : '', " ").concat(bg || '', " ").concat(hoverable ? 'hoverable' : ''), style: {
|
|
63
|
+
return (React.createElement("div", __assign({ className: " animated fade-in ".concat(bordered ? "border" : "", " pointer avatar ").concat(funcss || '', " ").concat("text-" + (color === null || color === void 0 ? void 0 : color.trim()) || '', " ").concat(raised ? "raised" : '', " ").concat(bg || 'lighter', " ").concat(hoverable ? 'hoverable' : ''), style: {
|
|
64
64
|
width: "".concat(size + "rem" || '2.3rem'),
|
|
65
65
|
height: "".concat(size + "rem" || '2.3rem'),
|
|
66
66
|
}, key: key, onClick: onClick }, rest),
|
package/ui/specials/Circle.tsx
CHANGED
|
@@ -32,7 +32,7 @@ export default function Circle({
|
|
|
32
32
|
}: Circle_Props) {
|
|
33
33
|
return (
|
|
34
34
|
<div
|
|
35
|
-
className={` animated fade-in ${bordered ? "border" : ""} pointer avatar ${funcss || ''} ${`text-` + color?.trim() || ''} ${raised ? "raised" : ''} ${bg || ''} ${
|
|
35
|
+
className={` animated fade-in ${bordered ? "border" : ""} pointer avatar ${funcss || ''} ${`text-` + color?.trim() || ''} ${raised ? "raised" : ''} ${bg || 'lighter'} ${
|
|
36
36
|
hoverable ? 'hoverable' : ''
|
|
37
37
|
}`}
|
|
38
38
|
style={{
|
package/ui/theme/theme.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface ThemeProviderProps {
|
|
3
|
-
theme: 'light' | 'dark' | 'dark-blue' | 'light-gray';
|
|
3
|
+
theme: 'light' | 'dark' | 'dark-blue' | 'light-gray' | 'pastel-green' | 'warm-orange' | 'frosted-glass' | 'midnight-purple' | 'cyber-metal';
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
}
|
|
6
6
|
declare const ThemeProvider: React.FC<ThemeProviderProps>;
|
package/ui/theme/theme.js
CHANGED
|
@@ -48,7 +48,7 @@ var ThemeProvider = function (_a) {
|
|
|
48
48
|
root.style.setProperty(key, value);
|
|
49
49
|
});
|
|
50
50
|
// Apply darkened RGBA versions (for dark themes only)
|
|
51
|
-
if (theme === 'dark' || theme === 'dark-blue') {
|
|
51
|
+
if (theme === 'dark' || theme === 'dark-blue' || theme === 'midnight-purple' || theme === 'cyber-metal') {
|
|
52
52
|
themes_1.colorVarsToDarken.forEach(function (varName) {
|
|
53
53
|
var original = getComputedStyle(root).getPropertyValue(varName).trim();
|
|
54
54
|
if (original) {
|
package/ui/theme/theme.tsx
CHANGED
|
@@ -4,7 +4,7 @@ import { colorVarsToDarken, themes } from './themes';
|
|
|
4
4
|
import { getDarkenAmount, darkenToRgba } from './darkenUtils';
|
|
5
5
|
|
|
6
6
|
interface ThemeProviderProps {
|
|
7
|
-
theme: 'light' | 'dark' | 'dark-blue' | 'light-gray';
|
|
7
|
+
theme: 'light' | 'dark' | 'dark-blue' | 'light-gray' | 'pastel-green' | 'warm-orange' | 'frosted-glass' | 'midnight-purple' | 'cyber-metal';
|
|
8
8
|
children: React.ReactNode;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -19,7 +19,7 @@ const ThemeProvider: React.FC<ThemeProviderProps> = ({ theme, children }) => {
|
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
// Apply darkened RGBA versions (for dark themes only)
|
|
22
|
-
if (theme === 'dark' || theme === 'dark-blue') {
|
|
22
|
+
if (theme === 'dark' || theme === 'dark-blue' || theme === 'midnight-purple' || theme === 'cyber-metal') {
|
|
23
23
|
colorVarsToDarken.forEach((varName) => {
|
|
24
24
|
const original = getComputedStyle(root).getPropertyValue(varName).trim();
|
|
25
25
|
if (original) {
|
package/ui/theme/themes.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export declare const themes: {
|
|
|
52
52
|
'--raiseThemes': string;
|
|
53
53
|
'--raiseOpaque': string;
|
|
54
54
|
'--borderColor': string;
|
|
55
|
+
'--borderRgb': string;
|
|
55
56
|
'--lighter': string;
|
|
56
57
|
'--linkColor': string;
|
|
57
58
|
'--cardBg': string;
|
|
@@ -84,6 +85,7 @@ export declare const themes: {
|
|
|
84
85
|
'--raiseThemes': string;
|
|
85
86
|
'--raiseOpaque': string;
|
|
86
87
|
'--borderColor': string;
|
|
88
|
+
'--borderRgb': string;
|
|
87
89
|
'--lighter': string;
|
|
88
90
|
'--linkColor': string;
|
|
89
91
|
'--accent': string;
|
|
@@ -97,6 +99,117 @@ export declare const themes: {
|
|
|
97
99
|
'--raiseThemes': string;
|
|
98
100
|
'--raiseOpaque': string;
|
|
99
101
|
'--borderColor': string;
|
|
102
|
+
'--borderRgb': string;
|
|
103
|
+
'--lighter': string;
|
|
104
|
+
'--linkColor': string;
|
|
105
|
+
'--accent': string;
|
|
106
|
+
'--cardBg': string;
|
|
107
|
+
'--card': string;
|
|
108
|
+
};
|
|
109
|
+
'pastel-green': {
|
|
110
|
+
'--page-bg': string;
|
|
111
|
+
'--text-color': string;
|
|
112
|
+
'--text-muted': string;
|
|
113
|
+
'--raiseThemes': string;
|
|
114
|
+
'--raiseOpaque': string;
|
|
115
|
+
'--borderColor': string;
|
|
116
|
+
'--borderRgb': string;
|
|
117
|
+
'--lighter': string;
|
|
118
|
+
'--linkColor': string;
|
|
119
|
+
'--accent': string;
|
|
120
|
+
'--cardBg': string;
|
|
121
|
+
'--card': string;
|
|
122
|
+
};
|
|
123
|
+
'warm-orange': {
|
|
124
|
+
'--page-bg': string;
|
|
125
|
+
'--text-color': string;
|
|
126
|
+
'--text-muted': string;
|
|
127
|
+
'--raiseThemes': string;
|
|
128
|
+
'--raiseOpaque': string;
|
|
129
|
+
'--borderColor': string;
|
|
130
|
+
'--borderRgb': string;
|
|
131
|
+
'--lighter': string;
|
|
132
|
+
'--linkColor': string;
|
|
133
|
+
'--accent': string;
|
|
134
|
+
'--cardBg': string;
|
|
135
|
+
'--card': string;
|
|
136
|
+
};
|
|
137
|
+
'frosted-glass': {
|
|
138
|
+
'--page-bg': string;
|
|
139
|
+
'--text-color': string;
|
|
140
|
+
'--text-muted': string;
|
|
141
|
+
'--raiseThemes': string;
|
|
142
|
+
'--raiseOpaque': string;
|
|
143
|
+
'--borderColor': string;
|
|
144
|
+
'--borderRgb': string;
|
|
145
|
+
'--lighter': string;
|
|
146
|
+
'--linkColor': string;
|
|
147
|
+
'--accent': string;
|
|
148
|
+
'--cardBg': string;
|
|
149
|
+
'--card': string;
|
|
150
|
+
};
|
|
151
|
+
'midnight-purple': {
|
|
152
|
+
'--success50': string;
|
|
153
|
+
'--success100': string;
|
|
154
|
+
'--success200': string;
|
|
155
|
+
'--success300': string;
|
|
156
|
+
'--success400': string;
|
|
157
|
+
'--warning50': string;
|
|
158
|
+
'--warning100': string;
|
|
159
|
+
'--warning200': string;
|
|
160
|
+
'--warning300': string;
|
|
161
|
+
'--warning400': string;
|
|
162
|
+
'--info50': string;
|
|
163
|
+
'--info100': string;
|
|
164
|
+
'--info200': string;
|
|
165
|
+
'--info300': string;
|
|
166
|
+
'--info400': string;
|
|
167
|
+
'--error50': string;
|
|
168
|
+
'--error100': string;
|
|
169
|
+
'--error200': string;
|
|
170
|
+
'--error300': string;
|
|
171
|
+
'--error400': string;
|
|
172
|
+
'--page-bg': string;
|
|
173
|
+
'--text-color': string;
|
|
174
|
+
'--text-muted': string;
|
|
175
|
+
'--raiseThemes': string;
|
|
176
|
+
'--raiseOpaque': string;
|
|
177
|
+
'--borderColor': string;
|
|
178
|
+
'--borderRgb': string;
|
|
179
|
+
'--lighter': string;
|
|
180
|
+
'--linkColor': string;
|
|
181
|
+
'--accent': string;
|
|
182
|
+
'--cardBg': string;
|
|
183
|
+
'--card': string;
|
|
184
|
+
};
|
|
185
|
+
'cyber-metal': {
|
|
186
|
+
'--success50': string;
|
|
187
|
+
'--success100': string;
|
|
188
|
+
'--success200': string;
|
|
189
|
+
'--success300': string;
|
|
190
|
+
'--success400': string;
|
|
191
|
+
'--warning50': string;
|
|
192
|
+
'--warning100': string;
|
|
193
|
+
'--warning200': string;
|
|
194
|
+
'--warning300': string;
|
|
195
|
+
'--warning400': string;
|
|
196
|
+
'--info50': string;
|
|
197
|
+
'--info100': string;
|
|
198
|
+
'--info200': string;
|
|
199
|
+
'--info300': string;
|
|
200
|
+
'--info400': string;
|
|
201
|
+
'--error50': string;
|
|
202
|
+
'--error100': string;
|
|
203
|
+
'--error200': string;
|
|
204
|
+
'--error300': string;
|
|
205
|
+
'--error400': string;
|
|
206
|
+
'--page-bg': string;
|
|
207
|
+
'--text-color': string;
|
|
208
|
+
'--text-muted': string;
|
|
209
|
+
'--raiseThemes': string;
|
|
210
|
+
'--raiseOpaque': string;
|
|
211
|
+
'--borderColor': string;
|
|
212
|
+
'--borderRgb': string;
|
|
100
213
|
'--lighter': string;
|
|
101
214
|
'--linkColor': string;
|
|
102
215
|
'--accent': string;
|