funuicss 2.7.12 → 2.7.14
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 +115 -3
- package/index.d.ts +1 -0
- package/index.js +3 -1
- package/index.tsx +1 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/ui/carousel/Carousel.js +69 -15
- package/ui/carousel/Carousel.tsx +109 -40
- package/ui/richtext/RichText.d.ts +8 -6
- package/ui/richtext/RichText.js +31 -27
- package/ui/richtext/RichText.tsx +66 -55
- package/ui/slider/Slider.d.ts +14 -0
- package/ui/slider/Slider.js +57 -0
- package/ui/slider/Slider.tsx +75 -0
- package/ui/theme/themes.js +1 -1
- package/ui/theme/themes.ts +3 -3
- package/ui/vista/Vista.d.ts +2 -0
- package/ui/vista/Vista.js +17 -4
- package/ui/vista/Vista.tsx +22 -2
- package/utils/getCssVariable.js +3 -2
- package/utils/getCssVariable.tsx +4 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import React, { useState, useRef } from 'react';
|
|
3
|
+
import { getCssVariableValue } from '../../utils/getCssVariable';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
type RangeSliderProps = {
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
step?: number;
|
|
10
|
+
value: number;
|
|
11
|
+
height?: number;
|
|
12
|
+
onChange: (value: number) => void;
|
|
13
|
+
label?: string;
|
|
14
|
+
showTooltip?: boolean;
|
|
15
|
+
funcss?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const Slider: React.FC<RangeSliderProps> = ({
|
|
19
|
+
min = 0,
|
|
20
|
+
max = 100,
|
|
21
|
+
step = 1,
|
|
22
|
+
value,
|
|
23
|
+
onChange,
|
|
24
|
+
height = 6,
|
|
25
|
+
label,
|
|
26
|
+
showTooltip = true,
|
|
27
|
+
funcss = '',
|
|
28
|
+
}) => {
|
|
29
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
30
|
+
|
|
31
|
+
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
32
|
+
onChange(Number(e.target.value));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const percent = ((value - min) / (max - min)) * 100;
|
|
36
|
+
let pColor = getCssVariableValue("primary")
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<div className={`range-slider-container ${funcss}`}>
|
|
40
|
+
|
|
41
|
+
<div className="range-wrapper">
|
|
42
|
+
{showTooltip && (
|
|
43
|
+
<div
|
|
44
|
+
className={`range-tooltip ${isDragging ? 'visible' : ''}`}
|
|
45
|
+
style={{ left: `calc(${percent}% - 20px)` }}
|
|
46
|
+
>
|
|
47
|
+
{value}%
|
|
48
|
+
</div>
|
|
49
|
+
)}
|
|
50
|
+
|
|
51
|
+
<input
|
|
52
|
+
type="range"
|
|
53
|
+
min={min}
|
|
54
|
+
max={max}
|
|
55
|
+
step={step}
|
|
56
|
+
value={value}
|
|
57
|
+
onChange={handleChange}
|
|
58
|
+
onMouseDown={() => setIsDragging(true)}
|
|
59
|
+
onMouseUp={() => setIsDragging(false)}
|
|
60
|
+
onTouchStart={() => setIsDragging(true)}
|
|
61
|
+
onTouchEnd={() => setIsDragging(false)}
|
|
62
|
+
className="range-slider"
|
|
63
|
+
style={{
|
|
64
|
+
background: `linear-gradient(to right, ${pColor} 0%, ${pColor} ${percent}%, var(--lighter) ${percent}%, var(--lighter) 100%)`,
|
|
65
|
+
height: `${height}px`,
|
|
66
|
+
}}
|
|
67
|
+
/>
|
|
68
|
+
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
</div>
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export default Slider;
|
package/ui/theme/themes.js
CHANGED
|
@@ -103,6 +103,6 @@ exports.themes = {
|
|
|
103
103
|
'--cardBg': 'rgba(255, 255, 255, 0.6)',
|
|
104
104
|
'--card': "4px 4px 10px rgba(0, 0, 0, 0.05), -4px -4px 10px rgba(255, 255, 255, 0.5)",
|
|
105
105
|
},
|
|
106
|
-
'midnight-purple': __assign({ '--page-bg': '#1a1333', '--text-color': '#e0e0ff', '--text-muted': '#b39ddb', '--raiseThemes': 'rgba(26, 19, 51, 0.5)', '--raiseOpaque': 'rgba(26, 19, 51, 0.85)', '--borderColor': '#
|
|
106
|
+
'midnight-purple': __assign({ '--page-bg': '#1a1333', '--text-color': '#e0e0ff', '--text-muted': '#b39ddb', '--raiseThemes': 'rgba(26, 19, 51, 0.5)', '--raiseOpaque': 'rgba(26, 19, 51, 0.85)', '--borderColor': '#443a66', '--borderRgb': '68, 58, 102', '--lighter': '#241b3f', '--linkColor': '#d1c4e9', '--accent': '#9575cd', '--cardBg': '#1a1333', '--card': "4px 4px 8px #120c26, -4px -4px 8px #221a40" }, exports.darkerDefaults),
|
|
107
107
|
'cyber-metal': __assign({ '--page-bg': '#0f1115', '--text-color': '#d0d0d0', '--text-muted': '#888', '--raiseThemes': 'rgba(15, 17, 21, 0.4)', '--raiseOpaque': 'rgba(15, 17, 21, 0.85)', '--borderColor': '#2a2a2a', '--borderRgb': '42, 42, 42', '--lighter': '#1a1a1a', '--linkColor': '#00ffe0', '--accent': '#39ff14', '--cardBg': '#0f1115', '--card': "6px 6px 12px #050607, -6px -6px 12px #1c1f25" }, exports.darkerDefaults)
|
|
108
108
|
};
|
package/ui/theme/themes.ts
CHANGED
|
@@ -127,9 +127,9 @@ export const themes = {
|
|
|
127
127
|
'--text-muted': '#b39ddb',
|
|
128
128
|
'--raiseThemes': 'rgba(26, 19, 51, 0.5)',
|
|
129
129
|
'--raiseOpaque': 'rgba(26, 19, 51, 0.85)',
|
|
130
|
-
'--borderColor': '#
|
|
131
|
-
'--borderRgb': '
|
|
132
|
-
'--lighter': '#
|
|
130
|
+
'--borderColor': '#443a66',
|
|
131
|
+
'--borderRgb': '68, 58, 102',
|
|
132
|
+
'--lighter': '#241b3f',
|
|
133
133
|
'--linkColor': '#d1c4e9',
|
|
134
134
|
'--accent': '#9575cd',
|
|
135
135
|
'--cardBg': '#1a1333',
|
package/ui/vista/Vista.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type VistaProps = {
|
|
3
3
|
layout?: 'centered' | 'imageLeft' | 'imageRight' | 'stacked';
|
|
4
|
+
pattern?: 'grid' | 'dots' | 'diagonal' | 'checkerboard' | 'horizontal' | 'vertical';
|
|
5
|
+
patternOpacity?: number;
|
|
4
6
|
reverse?: boolean;
|
|
5
7
|
background?: string;
|
|
6
8
|
padding?: string;
|
package/ui/vista/Vista.js
CHANGED
|
@@ -19,11 +19,11 @@ var react_1 = __importDefault(require("react"));
|
|
|
19
19
|
var ScrollInView_1 = __importDefault(require("../ScrollInView/ScrollInView"));
|
|
20
20
|
var getCssVariable_1 = require("../../utils/getCssVariable");
|
|
21
21
|
var Vista = function (_a) {
|
|
22
|
-
var _b = _a.layout, layout = _b === void 0 ? 'imageRight' : _b, _c = _a.reverse, reverse = _c === void 0 ? false : _c, _d = _a.background, background = _d === void 0 ? '' : _d, _e = _a.padding, padding = _e === void 0 ? 'padding-lg' : _e, _f = _a.textAlign, textAlign = _f === void 0 ? 'left' : _f, _g = _a.imgPosition, imgPosition = _g === void 0 ? 'top' : _g, _h = _a.funcss, funcss = _h === void 0 ? '' : _h, heading = _a.heading, subheading = _a.subheading, content = _a.content, image = _a.image, cta = _a.cta,
|
|
22
|
+
var _b = _a.layout, layout = _b === void 0 ? 'imageRight' : _b, _c = _a.reverse, reverse = _c === void 0 ? false : _c, _d = _a.background, background = _d === void 0 ? '' : _d, _e = _a.padding, padding = _e === void 0 ? 'padding-lg' : _e, _f = _a.textAlign, textAlign = _f === void 0 ? 'left' : _f, _g = _a.imgPosition, imgPosition = _g === void 0 ? 'top' : _g, _h = _a.funcss, funcss = _h === void 0 ? '' : _h, _j = _a.pattern, pattern = _j === void 0 ? '' : _j, _k = _a.patternOpacity, patternOpacity = _k === void 0 ? pattern === 'grid' ? 0.15 : pattern === 'dots' ? 0.4 : pattern === 'diagonal' ? 0.2 : pattern === 'checkerboard' ? 0.2 : pattern === 'horizontal' ? 0.2 : pattern === 'vertical' ? 0.2 : 0.1 : _k, heading = _a.heading, subheading = _a.subheading, content = _a.content, image = _a.image, cta = _a.cta, _l = _a.sectionClass, sectionClass = _l === void 0 ? '' : _l, _m = _a.containerClass, containerClass = _m === void 0 ? '' : _m, _o = _a.textWrapperClass, textWrapperClass = _o === void 0 ? '' : _o, _p = _a.imageWrapperClass, imageWrapperClass = _p === void 0 ? '' : _p, children = _a.children,
|
|
23
23
|
// Gradient Props
|
|
24
|
-
|
|
24
|
+
_q = _a.showGradient,
|
|
25
25
|
// Gradient Props
|
|
26
|
-
showGradient =
|
|
26
|
+
showGradient = _q === void 0 ? false : _q, _r = _a.gradientPosition, gradientPosition = _r === void 0 ? 'bottom-right' : _r, _s = _a.gradientSize, gradientSize = _s === void 0 ? '300px' : _s, _t = _a.blurry, blurry = _t === void 0 ? 100 : _t, _u = _a.opacity, opacity = _u === void 0 ? 0.4 : _u, gradientColors = _a.gradientColors;
|
|
27
27
|
var layoutClass = [
|
|
28
28
|
layout,
|
|
29
29
|
reverse ? 'reverse' : '',
|
|
@@ -51,7 +51,20 @@ var Vista = function (_a) {
|
|
|
51
51
|
var secondaryColor = (0, getCssVariable_1.getCssVariableValue)('secondary');
|
|
52
52
|
var gradientStyle = __assign({ position: 'absolute', width: gradientSize, height: gradientSize, background: gradientColors || "radial-gradient(circle, ".concat(primaryColor, ", ").concat(secondaryColor, ")"), opacity: opacity, filter: "blur(".concat(blurry, "px)"), pointerEvents: 'none', zIndex: 0 }, positionStyles[gradientPosition]);
|
|
53
53
|
return (react_1.default.createElement(ScrollInView_1.default, null,
|
|
54
|
-
react_1.default.createElement("div", { className: "vista ".concat(
|
|
54
|
+
react_1.default.createElement("div", { className: "vista \n ".concat(pattern === 'grid' ? 'grid-bg' :
|
|
55
|
+
pattern === 'dots' ? 'bg-pattern-dots' :
|
|
56
|
+
pattern === 'diagonal' ? 'bg-pattern-diagonal' :
|
|
57
|
+
pattern === 'checkerboard' ? 'bg-pattern-checkerboard' :
|
|
58
|
+
pattern === 'horizontal' ? 'bg-pattern-horizontal' :
|
|
59
|
+
pattern === 'vertical' ? 'bg-pattern-vertical' : '', " \n ").concat(background, " ").concat(padding, " ").concat(layoutClass, " ").concat(sectionClass, " ").concat(funcss), style: { position: 'relative',
|
|
60
|
+
overflow: 'hidden',
|
|
61
|
+
backgroundImage: pattern === 'grid' ? "linear-gradient(to right, rgba(var(--borderRgb), ".concat(patternOpacity, ") 1px, transparent 1px),\n linear-gradient(to bottom, rgba(var(--borderRgb), ").concat(patternOpacity, ") 1px, transparent 1px)") :
|
|
62
|
+
pattern === 'dots' ? "radial-gradient(rgba(var(--borderRgb), ".concat(patternOpacity, ") 1px, transparent 1px)") :
|
|
63
|
+
pattern === 'diagonal' ? "repeating-linear-gradient(45deg, rgba(var(--borderRgb), ".concat(patternOpacity, "), rgba(var(--borderRgb), ").concat(patternOpacity, ") 1px, transparent 1px, transparent 10px)") :
|
|
64
|
+
pattern === 'checkerboard' ? "linear-gradient(45deg, rgba(var(--borderRgb), ".concat(patternOpacity, ") 25%, transparent 25%), linear-gradient(-45deg, rgba(var(--borderRgb), ").concat(patternOpacity, ") 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(var(--borderRgb), ").concat(patternOpacity, ") 75%), linear-gradient(-45deg, transparent 75%, rgba(var(--borderRgb), ").concat(patternOpacity, ") 75%)") :
|
|
65
|
+
pattern === 'horizontal' ? "linear-gradient(to bottom, rgba(var(--borderRgb), ".concat(patternOpacity, ") 1px, transparent 1px)") :
|
|
66
|
+
pattern === 'vertical' ? "linear-gradient(to right, rgba(var(--borderRgb), ".concat(patternOpacity, ") 1px, transparent 1px)") : ''
|
|
67
|
+
} },
|
|
55
68
|
showGradient && react_1.default.createElement("div", { style: gradientStyle }),
|
|
56
69
|
react_1.default.createElement("div", { className: "vista-container ".concat(containerClass), style: { position: 'relative', zIndex: 1 } }, isCentered || isStacked ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
57
70
|
(imgPosition === 'top') && ImageContent,
|
package/ui/vista/Vista.tsx
CHANGED
|
@@ -5,6 +5,8 @@ import { getCssVariableValue } from '../../utils/getCssVariable';
|
|
|
5
5
|
|
|
6
6
|
type VistaProps = {
|
|
7
7
|
layout?: 'centered' | 'imageLeft' | 'imageRight' | 'stacked';
|
|
8
|
+
pattern?: 'grid' | 'dots' | 'diagonal' | 'checkerboard' | 'horizontal' | 'vertical';
|
|
9
|
+
patternOpacity?: number;
|
|
8
10
|
reverse?: boolean;
|
|
9
11
|
background?: string;
|
|
10
12
|
padding?: string;
|
|
@@ -41,6 +43,8 @@ const Vista: React.FC<VistaProps> = ({
|
|
|
41
43
|
textAlign = 'left',
|
|
42
44
|
imgPosition = 'top',
|
|
43
45
|
funcss = '',
|
|
46
|
+
pattern = '',
|
|
47
|
+
patternOpacity = pattern === 'grid' ? 0.15 : pattern === 'dots' ? 0.4 : pattern === 'diagonal' ? 0.2 : pattern === 'checkerboard' ? 0.2 : pattern === 'horizontal' ? 0.2 : pattern === 'vertical' ? 0.2 : 0.1,
|
|
44
48
|
|
|
45
49
|
heading,
|
|
46
50
|
subheading,
|
|
@@ -113,8 +117,24 @@ const Vista: React.FC<VistaProps> = ({
|
|
|
113
117
|
return (
|
|
114
118
|
<ScrollInView>
|
|
115
119
|
<div
|
|
116
|
-
className={`vista
|
|
117
|
-
|
|
120
|
+
className={`vista
|
|
121
|
+
${pattern === 'grid' ? 'grid-bg' :
|
|
122
|
+
pattern === 'dots' ? 'bg-pattern-dots' :
|
|
123
|
+
pattern === 'diagonal' ? 'bg-pattern-diagonal' :
|
|
124
|
+
pattern === 'checkerboard' ? 'bg-pattern-checkerboard' :
|
|
125
|
+
pattern === 'horizontal' ? 'bg-pattern-horizontal' :
|
|
126
|
+
pattern === 'vertical' ? 'bg-pattern-vertical' : ''}
|
|
127
|
+
${background} ${padding} ${layoutClass} ${sectionClass} ${funcss}`}
|
|
128
|
+
style={{ position: 'relative',
|
|
129
|
+
overflow: 'hidden' ,
|
|
130
|
+
backgroundImage: pattern === 'grid' ? `linear-gradient(to right, rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px),
|
|
131
|
+
linear-gradient(to bottom, rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px)` :
|
|
132
|
+
pattern === 'dots' ? `radial-gradient(rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px)` :
|
|
133
|
+
pattern === 'diagonal' ? `repeating-linear-gradient(45deg, rgba(var(--borderRgb), ${patternOpacity}), rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px, transparent 10px)` :
|
|
134
|
+
pattern === 'checkerboard' ? `linear-gradient(45deg, rgba(var(--borderRgb), ${patternOpacity}) 25%, transparent 25%), linear-gradient(-45deg, rgba(var(--borderRgb), ${patternOpacity}) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(var(--borderRgb), ${patternOpacity}) 75%), linear-gradient(-45deg, transparent 75%, rgba(var(--borderRgb), ${patternOpacity}) 75%)` :
|
|
135
|
+
pattern === 'horizontal' ? `linear-gradient(to bottom, rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px)` :
|
|
136
|
+
pattern === 'vertical' ? `linear-gradient(to right, rgba(var(--borderRgb), ${patternOpacity}) 1px, transparent 1px)` : ''
|
|
137
|
+
}}
|
|
118
138
|
>
|
|
119
139
|
{showGradient && <div style={gradientStyle} />}
|
|
120
140
|
<div className={`vista-container ${containerClass}`} style={{ position: 'relative', zIndex: 1 }}>
|
package/utils/getCssVariable.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getCssVariableValue = getCssVariableValue;
|
|
4
4
|
function getCssVariableValue(name) {
|
|
5
|
-
|
|
5
|
+
if (typeof window === 'undefined' || typeof getComputedStyle === 'undefined') {
|
|
6
|
+
return ''; // or throw an error / return a fallback
|
|
7
|
+
}
|
|
6
8
|
var variableName = name.startsWith('--') ? name : "--".concat(name);
|
|
7
|
-
// Get value from :root style
|
|
8
9
|
var rootStyles = getComputedStyle(document.documentElement);
|
|
9
10
|
return rootStyles.getPropertyValue(variableName).trim();
|
|
10
11
|
}
|
package/utils/getCssVariable.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export function getCssVariableValue(name: string): string {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
if (typeof window === 'undefined' || typeof getComputedStyle === 'undefined') {
|
|
3
|
+
return ''; // or throw an error / return a fallback
|
|
4
|
+
}
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
const variableName = name.startsWith('--') ? name : `--${name}`;
|
|
6
7
|
const rootStyles = getComputedStyle(document.documentElement);
|
|
7
8
|
return rootStyles.getPropertyValue(variableName).trim();
|
|
8
9
|
}
|