funuicss 3.7.10 â 3.7.12
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 +67 -48
- package/package.json +1 -1
- package/ui/card/Card.d.ts +22 -2
- package/ui/card/Card.js +51 -162
- package/ui/select/Select.d.ts +2 -1
- package/ui/select/Select.js +2 -2
- package/ui/theme/theme.js +0 -6
- package/ui/video/Video.d.ts +3 -1
- package/ui/video/Video.js +118 -73
- package/ui/vista/Vista.d.ts +28 -2
- package/ui/vista/Vista.js +250 -85
package/css/fun.css
CHANGED
|
@@ -821,31 +821,6 @@ h6, .h6 {
|
|
|
821
821
|
}
|
|
822
822
|
|
|
823
823
|
|
|
824
|
-
/* For WebKit browsers (Chrome, Edge, Brave, Safari) */
|
|
825
|
-
::-webkit-scrollbar {
|
|
826
|
-
width: 10px;
|
|
827
|
-
height: 10px;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
::-webkit-scrollbar-track {
|
|
831
|
-
border-radius: 10px;
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
::-webkit-scrollbar-thumb {
|
|
835
|
-
background-color: var(--borderColor, #999); /* Darker thumb */
|
|
836
|
-
border-radius: 10px;
|
|
837
|
-
border: 2px solid transparent;
|
|
838
|
-
background-clip: content-box;
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
::-webkit-scrollbar-thumb:hover {
|
|
842
|
-
background-color: var(--dark500, #666); /* Hover effect */
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
/* Optional: Hide scrollbar buttons (arrows) */
|
|
846
|
-
::-webkit-scrollbar-button {
|
|
847
|
-
display: none;
|
|
848
|
-
}
|
|
849
824
|
|
|
850
825
|
|
|
851
826
|
|
|
@@ -986,12 +961,6 @@ link:hover {
|
|
|
986
961
|
line-height: 1 !important;
|
|
987
962
|
height: var(--inputButtonHeight);
|
|
988
963
|
}
|
|
989
|
-
.button.primary{outline:1px solid var(--primary);}
|
|
990
|
-
.button.primary:active{outline:1px solid var(--primary300);}
|
|
991
|
-
.button.secondary{outline:1px solid var(--secondary);}
|
|
992
|
-
.button.secondary:active{outline:1px solid var(--secondary300);}
|
|
993
|
-
.button.accent{outline:1px solid var(--accent);}
|
|
994
|
-
.button.accent:active{outline:1px solid var(--accent300);}
|
|
995
964
|
|
|
996
965
|
|
|
997
966
|
/* Ripple effect */
|
|
@@ -1093,6 +1062,8 @@ link:hover {
|
|
|
1093
1062
|
|
|
1094
1063
|
|
|
1095
1064
|
|
|
1065
|
+
|
|
1066
|
+
|
|
1096
1067
|
.roundBtn {
|
|
1097
1068
|
border-radius: 100rem;
|
|
1098
1069
|
}
|
|
@@ -1103,9 +1074,10 @@ link:hover {
|
|
|
1103
1074
|
filter: var(--hoverable);
|
|
1104
1075
|
}
|
|
1105
1076
|
.button.smallBtn {
|
|
1106
|
-
padding: 0.
|
|
1077
|
+
padding: 0.5rem 0.6rem !important;
|
|
1107
1078
|
font-size: var(--smallerFont) ;
|
|
1108
1079
|
height: fit-content !important;
|
|
1080
|
+
border-radius: calc(var(--radius) / 1.5);
|
|
1109
1081
|
}
|
|
1110
1082
|
.smallBtn.roundBtn{
|
|
1111
1083
|
padding: 0.3rem 0.8rem !important;
|
|
@@ -1473,12 +1445,12 @@ border-radius: var(--borderRadius);
|
|
|
1473
1445
|
/* Beautiful Progress Bar */
|
|
1474
1446
|
.progress-container {
|
|
1475
1447
|
width: 100%;
|
|
1476
|
-
padding: 0 0.5rem;
|
|
1477
1448
|
}
|
|
1478
1449
|
|
|
1479
1450
|
.progress-wrapper {
|
|
1480
1451
|
position: relative;
|
|
1481
1452
|
width: 100%;
|
|
1453
|
+
|
|
1482
1454
|
}
|
|
1483
1455
|
|
|
1484
1456
|
.video-progress {
|
|
@@ -1486,7 +1458,7 @@ border-radius: var(--borderRadius);
|
|
|
1486
1458
|
appearance: none;
|
|
1487
1459
|
width: 100%;
|
|
1488
1460
|
padding: 0 !important;
|
|
1489
|
-
height:
|
|
1461
|
+
height: 8px !important;
|
|
1490
1462
|
border-radius: 10px;
|
|
1491
1463
|
background: linear-gradient(
|
|
1492
1464
|
to right,
|
|
@@ -1499,12 +1471,11 @@ border-radius: var(--borderRadius);
|
|
|
1499
1471
|
cursor: pointer;
|
|
1500
1472
|
transition: all 0.3s ease;
|
|
1501
1473
|
position: relative;
|
|
1502
|
-
}
|
|
1503
1474
|
|
|
1504
|
-
.video-progress:hover {
|
|
1505
|
-
height: 8px;
|
|
1506
1475
|
}
|
|
1507
1476
|
|
|
1477
|
+
|
|
1478
|
+
|
|
1508
1479
|
.video-progress::-webkit-slider-thumb {
|
|
1509
1480
|
-webkit-appearance: none;
|
|
1510
1481
|
appearance: none;
|
|
@@ -1615,22 +1586,28 @@ border-radius: var(--borderRadius);
|
|
|
1615
1586
|
transform: scale(1.1);
|
|
1616
1587
|
}
|
|
1617
1588
|
|
|
1618
|
-
|
|
1619
|
-
.video_time {
|
|
1620
|
-
background-color: var(--raiseThemes);
|
|
1621
|
-
backdrop-filter: var(--raiseBackdrop);
|
|
1622
|
-
border-radius: 1rem;
|
|
1623
|
-
padding: 0.5rem 1rem;
|
|
1624
|
-
line-height: 1;
|
|
1625
|
-
font-size: 0.875rem;
|
|
1626
|
-
font-weight: 500;
|
|
1627
|
-
}
|
|
1589
|
+
|
|
1628
1590
|
|
|
1629
1591
|
/* Control buttons hover effects */
|
|
1630
1592
|
.video_container .circle {
|
|
1631
1593
|
transition: all 0.2s ease;
|
|
1632
1594
|
}
|
|
1633
1595
|
|
|
1596
|
+
.videoProgressContainer,
|
|
1597
|
+
.videoRightContainer,
|
|
1598
|
+
.videoLeftContainer{
|
|
1599
|
+
background-color: var(--dark);
|
|
1600
|
+
height: 30px !important;
|
|
1601
|
+
display: flex;
|
|
1602
|
+
align-items: center !important;
|
|
1603
|
+
align-content: center !important;
|
|
1604
|
+
justify-content: center !important;
|
|
1605
|
+
line-height: 0rem;
|
|
1606
|
+
color: var(--white) !important;
|
|
1607
|
+
border-radius: 0.5rem;
|
|
1608
|
+
padding: 0 0.5rem;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1634
1611
|
.video_container .circle:hover {
|
|
1635
1612
|
background-color: var(--primary) !important;
|
|
1636
1613
|
color: var(--white) !important;
|
|
@@ -1657,6 +1634,7 @@ border-radius: var(--borderRadius);
|
|
|
1657
1634
|
}
|
|
1658
1635
|
}
|
|
1659
1636
|
|
|
1637
|
+
|
|
1660
1638
|
/* Fullscreen adjustments */
|
|
1661
1639
|
.video_container:fullscreen {
|
|
1662
1640
|
width: 100vw;
|
|
@@ -4348,7 +4326,6 @@ opacity: 1;
|
|
|
4348
4326
|
color: white;
|
|
4349
4327
|
}
|
|
4350
4328
|
|
|
4351
|
-
|
|
4352
4329
|
.vista{
|
|
4353
4330
|
display: flex;
|
|
4354
4331
|
align-items: center;
|
|
@@ -10732,3 +10709,45 @@ z-index: 10;
|
|
|
10732
10709
|
@keyframes ping {
|
|
10733
10710
|
75%, 100% { transform: scale(2); opacity: 0; }
|
|
10734
10711
|
}
|
|
10712
|
+
|
|
10713
|
+
|
|
10714
|
+
|
|
10715
|
+
/* Make all scrollbars thin */
|
|
10716
|
+
* {
|
|
10717
|
+
scrollbar-width: thin;
|
|
10718
|
+
scrollbar-color: var(--borderColor,#aaa) transparent;
|
|
10719
|
+
}
|
|
10720
|
+
|
|
10721
|
+
/* Chrome / Safari / Edge */
|
|
10722
|
+
::-webkit-scrollbar {
|
|
10723
|
+
width: 6px !important;
|
|
10724
|
+
}
|
|
10725
|
+
|
|
10726
|
+
::-webkit-scrollbar-thumb {
|
|
10727
|
+
background-color: var(--borderColor,#aaa) !important;
|
|
10728
|
+
border-radius: 20px !important;
|
|
10729
|
+
border: 2px solid transparent !important;
|
|
10730
|
+
background-clip: content-box !important;
|
|
10731
|
+
|
|
10732
|
+
/* <<â Force thumb to always appear shorter visually */
|
|
10733
|
+
min-height: 40px !important;
|
|
10734
|
+
}
|
|
10735
|
+
|
|
10736
|
+
::-webkit-scrollbar-thumb:hover {
|
|
10737
|
+
background-color: var(--dark500,#666) !important;
|
|
10738
|
+
}
|
|
10739
|
+
|
|
10740
|
+
::-webkit-scrollbar-track {
|
|
10741
|
+
background: transparent !important;
|
|
10742
|
+
}
|
|
10743
|
+
|
|
10744
|
+
::-webkit-scrollbar-button {
|
|
10745
|
+
display: none !important;
|
|
10746
|
+
}
|
|
10747
|
+
|
|
10748
|
+
/* Make content scroll more so thumb shrinks */
|
|
10749
|
+
*::-webkit-scrollbar-thumb {
|
|
10750
|
+
min-height: 40px !important;
|
|
10751
|
+
}
|
|
10752
|
+
|
|
10753
|
+
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.7.
|
|
2
|
+
"version": "3.7.12",
|
|
3
3
|
"name": "funuicss",
|
|
4
4
|
"description": "React and Next.js component UI Library for creating Easy and good looking websites with fewer lines of code. Elevate your web development experience with our cutting-edge React/Next.js component UI Library. Craft stunning websites effortlessly, boasting both seamless functionality and aesthetic appealâall achieved with minimal lines of code. Unleash the power of simplicity and style in your projects!",
|
|
5
5
|
"main": "index.js",
|
package/ui/card/Card.d.ts
CHANGED
|
@@ -32,7 +32,6 @@ interface CardProps {
|
|
|
32
32
|
gradient?: string;
|
|
33
33
|
opacity?: number;
|
|
34
34
|
border?: string;
|
|
35
|
-
hoverEffect?: 'none' | 'lift' | 'glow';
|
|
36
35
|
heading?: ReactNode;
|
|
37
36
|
headingSize?: string;
|
|
38
37
|
headingWeight?: number;
|
|
@@ -67,6 +66,27 @@ interface CardProps {
|
|
|
67
66
|
ctaPrimaryText?: string;
|
|
68
67
|
ctaSecondaryText?: string;
|
|
69
68
|
ctaAccentText?: string;
|
|
69
|
+
ctaPrimaryRounded?: boolean;
|
|
70
|
+
ctaPrimaryFlat?: boolean;
|
|
71
|
+
ctaPrimaryPrefix?: string;
|
|
72
|
+
ctaPrimarySuffix?: string;
|
|
73
|
+
primaryIconSize?: number;
|
|
74
|
+
primaryButtonFuncss?: string;
|
|
75
|
+
primaryButtonSmall?: boolean;
|
|
76
|
+
ctaSecondaryRounded?: boolean;
|
|
77
|
+
ctaSecondaryFlat?: boolean;
|
|
78
|
+
ctaSecondaryPrefix?: string;
|
|
79
|
+
ctaSecondarySuffix?: string;
|
|
80
|
+
secondaryIconSize?: number;
|
|
81
|
+
secondaryButtonFuncss?: string;
|
|
82
|
+
secondaryButtonSmall?: boolean;
|
|
83
|
+
ctaAccentRounded?: boolean;
|
|
84
|
+
ctaAccentFlat?: boolean;
|
|
85
|
+
ctaAccentPrefix?: string;
|
|
86
|
+
ctaAccentSuffix?: string;
|
|
87
|
+
accentIconSize?: number;
|
|
88
|
+
accentButtonFuncss?: string;
|
|
89
|
+
accentButtonSmall?: boolean;
|
|
70
90
|
ctaGap?: number;
|
|
71
91
|
ctaFlexJustify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';
|
|
72
92
|
ctaClass?: string;
|
|
@@ -78,5 +98,5 @@ interface CardProps {
|
|
|
78
98
|
footerClass?: string;
|
|
79
99
|
variant?: string;
|
|
80
100
|
}
|
|
81
|
-
export default function Card(
|
|
101
|
+
export default function Card(localProps: CardProps): React.JSX.Element;
|
|
82
102
|
export {};
|
package/ui/card/Card.js
CHANGED
|
@@ -11,17 +11,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
return __assign.apply(this, arguments);
|
|
13
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
14
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
16
|
};
|
|
@@ -37,113 +26,13 @@ var Button_1 = __importDefault(require("../button/Button"));
|
|
|
37
26
|
var Flex_1 = __importDefault(require("../flex/Flex"));
|
|
38
27
|
var Text_1 = __importDefault(require("../text/Text"));
|
|
39
28
|
var View_1 = __importDefault(require("../view/View"));
|
|
40
|
-
function Card(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
pattern = _b === void 0 ? 'none' : _b, _c = _a.patternOpacity, patternOpacity = _c === void 0 ? 0.1 : _c, gradient = _a.gradient, _d = _a.opacity, opacity = _d === void 0 ? 1 : _d, border = _a.border, _e = _a.hoverEffect, hoverEffect = _e === void 0 ? 'none' : _e,
|
|
48
|
-
// Enhanced Content Props
|
|
49
|
-
heading = _a.heading, _f = _a.headingSize, headingSize = _f === void 0 ? 'xl' : _f, _g = _a.headingWeight, headingWeight = _g === void 0 ? 700 : _g, headingColor = _a.headingColor, headingClass = _a.headingClass, headingLineHeight = _a.headingLineHeight, subheading = _a.subheading, _h = _a.subheadingSize, subheadingSize = _h === void 0 ? 'base' : _h, _j = _a.subheadingWeight, subheadingWeight = _j === void 0 ? 400 : _j, _k = _a.subheadingColor, subheadingColor = _k === void 0 ? 'light' : _k, subheadingClass = _a.subheadingClass, subheadingLineHeight = _a.subheadingLineHeight, content = _a.content, _l = _a.contentSize, contentSize = _l === void 0 ? 'base' : _l, _m = _a.contentWeight, contentWeight = _m === void 0 ? 400 : _m, contentColor = _a.contentColor, contentClass = _a.contentClass, contentLineHeight = _a.contentLineHeight,
|
|
50
|
-
// Image Props
|
|
51
|
-
imageUrl = _a.imageUrl, _o = _a.imageAlt, imageAlt = _o === void 0 ? '' : _o, _p = _a.imageClass, imageClass = _p === void 0 ? '' : _p, _q = _a.imageSize, imageSize = _q === void 0 ? '100%' : _q,
|
|
52
|
-
// Enhanced Footer/CTA Props
|
|
53
|
-
_r = _a.showPrimaryCTA,
|
|
54
|
-
// Enhanced Footer/CTA Props
|
|
55
|
-
showPrimaryCTA = _r === void 0 ? false : _r, _s = _a.showSecondaryCTA, showSecondaryCTA = _s === void 0 ? false : _s, _t = _a.showAccentCTA, showAccentCTA = _t === void 0 ? false : _t, _u = _a.primaryButtonOutlined, primaryButtonOutlined = _u === void 0 ? false : _u, _v = _a.secondaryButtonOutlined, secondaryButtonOutlined = _v === void 0 ? false : _v, _w = _a.accentButtonOutlined, accentButtonOutlined = _w === void 0 ? false : _w, _x = _a.ctaPrimaryUrl, ctaPrimaryUrl = _x === void 0 ? '' : _x, _y = _a.ctaSecondaryUrl, ctaSecondaryUrl = _y === void 0 ? '' : _y, _z = _a.ctaAccentUrl, ctaAccentUrl = _z === void 0 ? '' : _z, _0 = _a.ctaPrimaryText, ctaPrimaryText = _0 === void 0 ? 'Primary Action' : _0, _1 = _a.ctaSecondaryText, ctaSecondaryText = _1 === void 0 ? 'Secondary Action' : _1, _2 = _a.ctaAccentText, ctaAccentText = _2 === void 0 ? 'Accent Action' : _2, _3 = _a.ctaGap, ctaGap = _3 === void 0 ? 1 : _3, _4 = _a.ctaFlexJustify, ctaFlexJustify = _4 === void 0 ? 'center' : _4, _5 = _a.ctaClass, ctaClass = _5 === void 0 ? '' : _5,
|
|
56
|
-
// Section Styling Props
|
|
57
|
-
headerStyle = _a.headerStyle, headerClass = _a.headerClass, bodyStyle = _a.bodyStyle, bodyClass = _a.bodyClass, footerStyle = _a.footerStyle, footerClass = _a.footerClass,
|
|
58
|
-
// Configuration
|
|
59
|
-
variant = _a.variant, rest = __rest(_a, ["color", "bg", "width", "height", "minHeight", "minWidth", "margin", "padding", "funcss", "children", "roundEdge", "maxHeight", "maxWidth", "horizontal", "id", "header", "body", "footer", "noGap", "fab", "image", "shadowless", "flat", "responsiveMedium", "xl", "responsiveSmall", "style", "pattern", "patternOpacity", "gradient", "opacity", "border", "hoverEffect", "heading", "headingSize", "headingWeight", "headingColor", "headingClass", "headingLineHeight", "subheading", "subheadingSize", "subheadingWeight", "subheadingColor", "subheadingClass", "subheadingLineHeight", "content", "contentSize", "contentWeight", "contentColor", "contentClass", "contentLineHeight", "imageUrl", "imageAlt", "imageClass", "imageSize", "showPrimaryCTA", "showSecondaryCTA", "showAccentCTA", "primaryButtonOutlined", "secondaryButtonOutlined", "accentButtonOutlined", "ctaPrimaryUrl", "ctaSecondaryUrl", "ctaAccentUrl", "ctaPrimaryText", "ctaSecondaryText", "ctaAccentText", "ctaGap", "ctaFlexJustify", "ctaClass", "headerStyle", "headerClass", "bodyStyle", "bodyClass", "footerStyle", "footerClass", "variant"]);
|
|
60
|
-
// Use the component config hook
|
|
61
|
-
var mergeWithLocal = (0, componentUtils_1.useComponentConfiguration)('Card', variant).mergeWithLocal;
|
|
62
|
-
// Merge config with local props
|
|
63
|
-
var mergedProps = mergeWithLocal({
|
|
64
|
-
// Original props
|
|
65
|
-
color: color,
|
|
66
|
-
bg: bg,
|
|
67
|
-
width: width,
|
|
68
|
-
height: height,
|
|
69
|
-
minHeight: minHeight,
|
|
70
|
-
minWidth: minWidth,
|
|
71
|
-
margin: margin,
|
|
72
|
-
padding: padding,
|
|
73
|
-
funcss: funcss,
|
|
74
|
-
children: children,
|
|
75
|
-
roundEdge: roundEdge,
|
|
76
|
-
maxHeight: maxHeight,
|
|
77
|
-
maxWidth: maxWidth,
|
|
78
|
-
horizontal: horizontal,
|
|
79
|
-
id: id,
|
|
80
|
-
header: header,
|
|
81
|
-
body: body,
|
|
82
|
-
footer: footer,
|
|
83
|
-
noGap: noGap,
|
|
84
|
-
fab: fab,
|
|
85
|
-
image: image,
|
|
86
|
-
shadowless: shadowless,
|
|
87
|
-
flat: flat,
|
|
88
|
-
responsiveMedium: responsiveMedium,
|
|
89
|
-
xl: xl,
|
|
90
|
-
responsiveSmall: responsiveSmall,
|
|
91
|
-
style: style,
|
|
92
|
-
// Pattern props
|
|
93
|
-
pattern: pattern,
|
|
94
|
-
patternOpacity: patternOpacity,
|
|
95
|
-
gradient: gradient,
|
|
96
|
-
opacity: opacity,
|
|
97
|
-
border: border,
|
|
98
|
-
hoverEffect: hoverEffect,
|
|
99
|
-
// Enhanced content props
|
|
100
|
-
heading: heading,
|
|
101
|
-
headingSize: headingSize,
|
|
102
|
-
headingWeight: headingWeight,
|
|
103
|
-
headingColor: headingColor,
|
|
104
|
-
headingClass: headingClass,
|
|
105
|
-
headingLineHeight: headingLineHeight,
|
|
106
|
-
subheading: subheading,
|
|
107
|
-
subheadingSize: subheadingSize,
|
|
108
|
-
subheadingWeight: subheadingWeight,
|
|
109
|
-
subheadingColor: subheadingColor,
|
|
110
|
-
subheadingClass: subheadingClass,
|
|
111
|
-
subheadingLineHeight: subheadingLineHeight,
|
|
112
|
-
content: content,
|
|
113
|
-
contentSize: contentSize,
|
|
114
|
-
contentWeight: contentWeight,
|
|
115
|
-
contentColor: contentColor,
|
|
116
|
-
contentClass: contentClass,
|
|
117
|
-
contentLineHeight: contentLineHeight,
|
|
118
|
-
// Image props
|
|
119
|
-
imageUrl: imageUrl,
|
|
120
|
-
imageAlt: imageAlt,
|
|
121
|
-
imageClass: imageClass,
|
|
122
|
-
imageSize: imageSize,
|
|
123
|
-
// CTA props
|
|
124
|
-
showPrimaryCTA: showPrimaryCTA,
|
|
125
|
-
showSecondaryCTA: showSecondaryCTA,
|
|
126
|
-
showAccentCTA: showAccentCTA,
|
|
127
|
-
primaryButtonOutlined: primaryButtonOutlined,
|
|
128
|
-
secondaryButtonOutlined: secondaryButtonOutlined,
|
|
129
|
-
accentButtonOutlined: accentButtonOutlined,
|
|
130
|
-
ctaPrimaryUrl: ctaPrimaryUrl,
|
|
131
|
-
ctaSecondaryUrl: ctaSecondaryUrl,
|
|
132
|
-
ctaAccentUrl: ctaAccentUrl,
|
|
133
|
-
ctaPrimaryText: ctaPrimaryText,
|
|
134
|
-
ctaSecondaryText: ctaSecondaryText,
|
|
135
|
-
ctaAccentText: ctaAccentText,
|
|
136
|
-
ctaGap: ctaGap,
|
|
137
|
-
ctaFlexJustify: ctaFlexJustify,
|
|
138
|
-
ctaClass: ctaClass,
|
|
139
|
-
// Section styling props
|
|
140
|
-
headerStyle: headerStyle,
|
|
141
|
-
headerClass: headerClass,
|
|
142
|
-
bodyStyle: bodyStyle,
|
|
143
|
-
bodyClass: bodyClass,
|
|
144
|
-
footerStyle: footerStyle,
|
|
145
|
-
footerClass: footerClass,
|
|
146
|
-
}).props;
|
|
29
|
+
function Card(localProps) {
|
|
30
|
+
// Use the component config hook with the variant from localProps
|
|
31
|
+
var mergeWithLocal = (0, componentUtils_1.useComponentConfiguration)('Card', localProps.variant).mergeWithLocal;
|
|
32
|
+
// Merge config with local props - local props override config
|
|
33
|
+
var mergedProps = mergeWithLocal(localProps).props;
|
|
34
|
+
// Use mergedProps directly - they already have the correct merge logic applied
|
|
35
|
+
var final = mergedProps;
|
|
147
36
|
var themeVariant = (0, theme_1.useVariant)().variant;
|
|
148
37
|
// Handle content - if string, use dangerouslySetInnerHTML, otherwise render as is
|
|
149
38
|
var renderContent = function (content) {
|
|
@@ -152,74 +41,74 @@ function Card(_a) {
|
|
|
152
41
|
}
|
|
153
42
|
return content;
|
|
154
43
|
};
|
|
44
|
+
// CTA Buttons Component
|
|
45
|
+
var CTAButtons = function () {
|
|
46
|
+
var hasCTAs = final.showPrimaryCTA || final.showSecondaryCTA || final.showAccentCTA;
|
|
47
|
+
if (!hasCTAs)
|
|
48
|
+
return null;
|
|
49
|
+
return (react_1.default.createElement(Flex_1.default, { gap: final.ctaGap, justify: final.ctaFlexJustify, className: "mt-4 ".concat(final.ctaClass), wrap: "wrap", width: '100%' },
|
|
50
|
+
final.showPrimaryCTA && (react_1.default.createElement(Button_1.default, { bg: "primary", outlined: final.primaryButtonOutlined, onClick: function () { return final.ctaPrimaryUrl && (window.location.href = final.ctaPrimaryUrl); }, rounded: final.ctaPrimaryRounded, flat: final.ctaPrimaryFlat, stringPrefix: final.ctaPrimaryPrefix, stringSuffix: final.ctaPrimarySuffix, iconSize: final.primaryIconSize, funcss: final.primaryButtonFuncss, small: final.primaryButtonSmall }, final.ctaPrimaryText)),
|
|
51
|
+
final.showSecondaryCTA && (react_1.default.createElement(Button_1.default, { bg: "secondary", outlined: final.secondaryButtonOutlined, onClick: function () { return final.ctaSecondaryUrl && (window.location.href = final.ctaSecondaryUrl); }, rounded: final.ctaSecondaryRounded, flat: final.ctaSecondaryFlat, stringPrefix: final.ctaSecondaryPrefix, stringSuffix: final.ctaSecondarySuffix, iconSize: final.secondaryIconSize, funcss: final.secondaryButtonFuncss, small: final.secondaryButtonSmall }, final.ctaSecondaryText)),
|
|
52
|
+
final.showAccentCTA && (react_1.default.createElement(Button_1.default, { bg: "accent", outlined: final.accentButtonOutlined, onClick: function () { return final.ctaAccentUrl && (window.location.href = final.ctaAccentUrl); }, rounded: final.ctaAccentRounded, flat: final.ctaAccentFlat, stringPrefix: final.ctaAccentPrefix, stringSuffix: final.ctaAccentSuffix, iconSize: final.accentIconSize, funcss: final.accentButtonFuncss, small: final.accentButtonSmall }, final.ctaAccentText))));
|
|
53
|
+
};
|
|
155
54
|
// Enhanced Text Content with flexible styling
|
|
156
55
|
var EnhancedTextContent = (react_1.default.createElement("div", { className: "card-enhanced-content" },
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
56
|
+
final.heading && (react_1.default.createElement(Text_1.default, { block: true, size: final.headingSize, weight: final.headingWeight, color: final.headingColor, funcss: final.headingClass, lineHeight: final.headingLineHeight }, renderContent(final.heading))),
|
|
57
|
+
final.subheading && (react_1.default.createElement(Text_1.default, { block: true, size: final.subheadingSize, weight: final.subheadingWeight, color: final.subheadingColor, funcss: "mt-1 ".concat(final.subheadingClass), lineHeight: final.subheadingLineHeight }, renderContent(final.subheading))),
|
|
58
|
+
final.content && (react_1.default.createElement(Text_1.default, { block: true, size: final.contentSize, weight: final.contentWeight, color: final.contentColor, funcss: "mt-3 ".concat(final.contentClass), lineHeight: final.contentLineHeight, article: true }, renderContent(final.content)))));
|
|
160
59
|
// Image Content - uses imageUrl if no image component provided
|
|
161
|
-
var ImageContent = (
|
|
162
|
-
width:
|
|
60
|
+
var ImageContent = (final.image || final.imageUrl) && (react_1.default.createElement("div", { className: "card-image-content" }, final.image ? (final.image) : (final.imageUrl && (react_1.default.createElement("img", { src: final.imageUrl, alt: final.imageAlt, className: final.imageClass, style: {
|
|
61
|
+
width: final.imageSize,
|
|
163
62
|
height: 'auto',
|
|
164
63
|
objectFit: 'cover',
|
|
165
64
|
borderRadius: 'inherit'
|
|
166
65
|
} })))));
|
|
167
|
-
// CTA Buttons Component
|
|
168
|
-
var CTAButtons = function () {
|
|
169
|
-
var hasCTAs = mergedProps.showPrimaryCTA || mergedProps.showSecondaryCTA || mergedProps.showAccentCTA;
|
|
170
|
-
if (!hasCTAs)
|
|
171
|
-
return null;
|
|
172
|
-
return (react_1.default.createElement(Flex_1.default, { gap: mergedProps.ctaGap, justify: mergedProps.ctaFlexJustify, className: "mt-4 ".concat(mergedProps.ctaClass), wrap: "wrap", width: '100%' },
|
|
173
|
-
mergedProps.showPrimaryCTA && (react_1.default.createElement(Button_1.default, { bg: "primary", outlined: mergedProps.primaryButtonOutlined, onClick: function () { return mergedProps.ctaPrimaryUrl && (window.location.href = mergedProps.ctaPrimaryUrl); } }, mergedProps.ctaPrimaryText)),
|
|
174
|
-
mergedProps.showSecondaryCTA && (react_1.default.createElement(Button_1.default, { bg: "secondary", outlined: mergedProps.secondaryButtonOutlined, onClick: function () { return mergedProps.ctaSecondaryUrl && (window.location.href = mergedProps.ctaSecondaryUrl); } }, mergedProps.ctaSecondaryText)),
|
|
175
|
-
mergedProps.showAccentCTA && (react_1.default.createElement(Button_1.default, { bg: "accent", outlined: mergedProps.accentButtonOutlined, onClick: function () { return mergedProps.ctaAccentUrl && (window.location.href = mergedProps.ctaAccentUrl); } }, mergedProps.ctaAccentText))));
|
|
176
|
-
};
|
|
177
66
|
// Determine if we should use enhanced content
|
|
178
|
-
var hasEnhancedContent =
|
|
179
|
-
var hasEnhancedFooter =
|
|
180
|
-
var hasImageContent =
|
|
181
|
-
return (react_1.default.createElement("div",
|
|
182
|
-
|
|
67
|
+
var hasEnhancedContent = final.heading || final.subheading || final.content;
|
|
68
|
+
var hasEnhancedFooter = final.showPrimaryCTA || final.showSecondaryCTA || final.showAccentCTA;
|
|
69
|
+
var hasImageContent = final.image || final.imageUrl;
|
|
70
|
+
return (react_1.default.createElement("div", { id: final.id || '', className: "\n card \n card_flex\n ".concat(!final.image && !final.imageUrl ? "p" : "", "\n ").concat(final.noGap ? 'no-gap' : '', " \n ").concat(final.xl ? 'xl' : '', " \n text-").concat(final.color || '', " \n ").concat(final.bg || '', " \n ").concat(final.funcss || '', " \n ").concat(final.roundEdge ? 'round-edge' : '', " \n ").concat(final.shadowless ? 'shadowless' : '', " \n ").concat(final.flat ? 'flat' : '', " \n ").concat(final.horizontal ? 'horizontalCard' : '', "\n ").concat(final.responsiveMedium ? 'responsiveMedium' : '', "\n ").concat(final.responsiveSmall ? 'responsiveSmall' : '', "\n ").concat(final.pattern !== 'none' ? "pattern-".concat(final.pattern) : '', "\n "), style: __assign({ width: "".concat(final.width || ''), height: "".concat(final.height || ''), minHeight: "".concat(final.minHeight || ''), minWidth: "".concat(final.minWidth || ''), maxHeight: final.maxHeight || '', maxWidth: final.maxWidth || '', margin: "".concat(final.margin || ''), padding: "".concat(final.padding || ''), background: final.gradient, opacity: final.opacity, position: 'relative', overflow: 'hidden' }, final.style) },
|
|
71
|
+
final.pattern !== 'none' && (react_1.default.createElement("div", { className: "card-pattern-overlay", style: {
|
|
183
72
|
position: 'absolute',
|
|
184
73
|
top: 0,
|
|
185
74
|
left: 0,
|
|
186
75
|
right: 0,
|
|
187
76
|
bottom: 0,
|
|
188
77
|
pointerEvents: 'none',
|
|
189
|
-
opacity:
|
|
78
|
+
opacity: final.patternOpacity,
|
|
190
79
|
mixBlendMode: 'multiply',
|
|
191
|
-
backgroundImage:
|
|
80
|
+
backgroundImage: final.pattern === 'grid' ?
|
|
192
81
|
"linear-gradient(to right, rgba(var(--borderRgb), 1) 1px, transparent 1px),\n linear-gradient(to bottom, rgba(var(--borderRgb), 1) 1px, transparent 1px)" :
|
|
193
|
-
|
|
82
|
+
final.pattern === 'dots' ?
|
|
194
83
|
"radial-gradient(rgba(var(--borderRgb), 1) 1px, transparent 1px)" :
|
|
195
|
-
|
|
84
|
+
final.pattern === 'diagonal' ?
|
|
196
85
|
"repeating-linear-gradient(45deg, rgba(var(--borderRgb), 1), rgba(var(--borderRgb), 1) 1px, transparent 1px, transparent 10px)" :
|
|
197
|
-
|
|
86
|
+
final.pattern === 'checkerboard' ?
|
|
198
87
|
"linear-gradient(45deg, rgba(var(--borderRgb), 1) 25%, transparent 25%), \n linear-gradient(-45deg, rgba(var(--borderRgb), 1) 25%, transparent 25%), \n linear-gradient(45deg, transparent 75%, rgba(var(--borderRgb), 1) 75%), \n linear-gradient(-45deg, transparent 75%, rgba(var(--borderRgb), 1) 75%)" :
|
|
199
|
-
|
|
88
|
+
final.pattern === 'horizontal' ?
|
|
200
89
|
"linear-gradient(to bottom, rgba(var(--borderRgb), 1) 1px, transparent 1px)" :
|
|
201
|
-
|
|
90
|
+
final.pattern === 'vertical' ?
|
|
202
91
|
"linear-gradient(to right, rgba(var(--borderRgb), 1) 1px, transparent 1px)" : 'none',
|
|
203
|
-
backgroundSize:
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
92
|
+
backgroundSize: final.pattern === 'grid' ? '20px 20px' :
|
|
93
|
+
final.pattern === 'dots' ? '10px 10px' :
|
|
94
|
+
final.pattern === 'diagonal' ? '20px 20px' :
|
|
95
|
+
final.pattern === 'checkerboard' ? '20px 20px' :
|
|
96
|
+
final.pattern === 'horizontal' ? '100% 10px' :
|
|
97
|
+
final.pattern === 'vertical' ? '10px 100%' : 'auto'
|
|
209
98
|
} })),
|
|
210
|
-
hasImageContent ? (ImageContent) : (
|
|
211
|
-
|
|
99
|
+
hasImageContent ? (ImageContent) : (final.image ? react_1.default.createElement("div", { className: "".concat(final.fab ? 'relative' : '') },
|
|
100
|
+
final.image,
|
|
212
101
|
" ",
|
|
213
|
-
|
|
102
|
+
final.fab ? final.fab : '') : ''),
|
|
214
103
|
react_1.default.createElement(View_1.default, { funcss: hasImageContent ? 'p' : '' },
|
|
215
|
-
hasEnhancedContent ? (react_1.default.createElement(CardHeader_1.default, { style:
|
|
216
|
-
|
|
104
|
+
hasEnhancedContent ? (react_1.default.createElement(CardHeader_1.default, { style: final.headerStyle, className: final.headerClass }, EnhancedTextContent)) : (final.header && !final.horizontal ? (react_1.default.createElement(CardHeader_1.default, { style: final.headerStyle, className: final.headerClass }, renderContent(final.header))) : ''),
|
|
105
|
+
final.body ?
|
|
217
106
|
react_1.default.createElement("div", null,
|
|
218
|
-
|
|
219
|
-
react_1.default.createElement(CardBody_1.default, { style:
|
|
220
|
-
|
|
107
|
+
final.horizontal && !hasEnhancedContent ? (react_1.default.createElement(CardHeader_1.default, { style: final.headerStyle, className: final.headerClass }, renderContent(final.header))) : '',
|
|
108
|
+
react_1.default.createElement(CardBody_1.default, { style: final.bodyStyle, className: final.bodyClass }, hasEnhancedContent ? EnhancedTextContent : renderContent(final.body)),
|
|
109
|
+
final.horizontal && !hasEnhancedFooter ? (react_1.default.createElement(CardFooter_1.default, { style: final.footerStyle, className: final.footerClass }, renderContent(final.footer))) : '')
|
|
221
110
|
: '',
|
|
222
|
-
|
|
223
|
-
hasEnhancedFooter ? (react_1.default.createElement(CardFooter_1.default, { style:
|
|
224
|
-
react_1.default.createElement(CTAButtons, null))) : (
|
|
111
|
+
final.children && (react_1.default.createElement(CardBody_1.default, { style: final.bodyStyle, className: final.bodyClass }, renderContent(final.children))),
|
|
112
|
+
hasEnhancedFooter ? (react_1.default.createElement(CardFooter_1.default, { style: final.footerStyle, className: final.footerClass },
|
|
113
|
+
react_1.default.createElement(CTAButtons, null))) : (final.footer && !final.horizontal ? (react_1.default.createElement(CardFooter_1.default, { style: final.footerStyle, className: final.footerClass }, renderContent(final.footer))) : ''))));
|
|
225
114
|
}
|
package/ui/select/Select.d.ts
CHANGED
package/ui/select/Select.js
CHANGED
|
@@ -57,7 +57,7 @@ var Select = function (_a) {
|
|
|
57
57
|
(0, react_1.useEffect)(function () {
|
|
58
58
|
if (searchQuery) {
|
|
59
59
|
var filtered = options.filter(function (option) {
|
|
60
|
-
return option.text.toLowerCase().includes(searchQuery.toLowerCase());
|
|
60
|
+
return (option.text || option.label || "").toLowerCase().includes(searchQuery.toLowerCase());
|
|
61
61
|
});
|
|
62
62
|
setFilteredOptions(filtered);
|
|
63
63
|
setFocusedIndex(filtered.length > 0 ? 0 : -1);
|
|
@@ -208,7 +208,7 @@ var Select = function (_a) {
|
|
|
208
208
|
pointerEvents: 'none'
|
|
209
209
|
}, tabIndex: -1 },
|
|
210
210
|
!label && react_1.default.createElement("option", { value: "" }, "Select an option"),
|
|
211
|
-
options.map(function (option) { return (react_1.default.createElement("option", { key: option.value, value: option.value }, option.text)); })),
|
|
211
|
+
options.map(function (option) { return (react_1.default.createElement("option", { key: option.value, value: option.value }, option.text || option.label || option.value)); })),
|
|
212
212
|
react_1.default.createElement("div", { ref: triggerRef, className: "".concat(funcss, " ").concat(rounded && 'round-edge', " ").concat(getTriggerClasses()), onClick: openDropdown, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, role: "button", "aria-expanded": isOpen, "aria-haspopup": "listbox" },
|
|
213
213
|
react_1.default.createElement("span", { className: "select-value ".concat(!selectedOption ? 'select-placeholder' : '') }, selectedOption ? selectedOption.text : label),
|
|
214
214
|
react_1.default.createElement("div", { className: "select-arrow ".concat(isOpen ? 'open' : '') },
|
package/ui/theme/theme.js
CHANGED
|
@@ -146,7 +146,6 @@ var validateOriginAccess = function (projectId) { return __awaiter(void 0, void
|
|
|
146
146
|
console.log('đ Trusted domains:', trustedDomains.map(function (d) { return d.domain; }));
|
|
147
147
|
return [2 /*return*/, false];
|
|
148
148
|
}
|
|
149
|
-
console.log('â
Origin validation passed');
|
|
150
149
|
return [2 /*return*/, true];
|
|
151
150
|
case 3:
|
|
152
151
|
error_1 = _a.sent();
|
|
@@ -174,7 +173,6 @@ var loadLocalTheme = function () { return __awaiter(void 0, void 0, void 0, func
|
|
|
174
173
|
return [4 /*yield*/, response.json()];
|
|
175
174
|
case 2:
|
|
176
175
|
data = _a.sent();
|
|
177
|
-
console.log('â
Loaded theme from local file');
|
|
178
176
|
return [2 /*return*/, data];
|
|
179
177
|
case 3: return [3 /*break*/, 5];
|
|
180
178
|
case 4:
|
|
@@ -210,7 +208,6 @@ var loadThemeFromCDN = function (projectId) { return __awaiter(void 0, void 0, v
|
|
|
210
208
|
return [4 /*yield*/, response.json()];
|
|
211
209
|
case 3:
|
|
212
210
|
data = _a.sent();
|
|
213
|
-
console.log('â
Loaded theme from Firebase Storage CDN');
|
|
214
211
|
return [2 /*return*/, data];
|
|
215
212
|
case 4:
|
|
216
213
|
console.error('â Firebase Storage fetch failed:', response.status, response.statusText);
|
|
@@ -327,7 +324,6 @@ var ThemeProvider = function (_a) {
|
|
|
327
324
|
switch (_a.label) {
|
|
328
325
|
case 0:
|
|
329
326
|
_a.trys.push([0, 8, 9, 10]);
|
|
330
|
-
console.log('đ Starting theme loading process...');
|
|
331
327
|
finalTheme = null;
|
|
332
328
|
finalVersion = null;
|
|
333
329
|
return [4 /*yield*/, loadLocalTheme()];
|
|
@@ -335,7 +331,6 @@ var ThemeProvider = function (_a) {
|
|
|
335
331
|
localTheme = _a.sent();
|
|
336
332
|
localVersion = (localTheme === null || localTheme === void 0 ? void 0 : localTheme.version) || 0;
|
|
337
333
|
if (!projectId) return [3 /*break*/, 6];
|
|
338
|
-
console.log('đ Project ID provided, attempting CDN load with origin validation...');
|
|
339
334
|
return [4 /*yield*/, validateOriginAccess(projectId)];
|
|
340
335
|
case 2:
|
|
341
336
|
hasAccess = _a.sent();
|
|
@@ -352,7 +347,6 @@ var ThemeProvider = function (_a) {
|
|
|
352
347
|
console.log("\uD83D\uDD04 Version mismatch: Local(".concat(localVersion, ") vs CDN(").concat(cdnVersion, ")"));
|
|
353
348
|
console.log('âšī¸ Using CDN version. Please update your local funui.json file manually.');
|
|
354
349
|
}
|
|
355
|
-
console.log('â
Theme loaded from CDN');
|
|
356
350
|
}
|
|
357
351
|
else if (localTheme) {
|
|
358
352
|
// CDN not available but we have local theme
|
package/ui/video/Video.d.ts
CHANGED
|
@@ -43,7 +43,9 @@ interface VideoProps {
|
|
|
43
43
|
rewindCss?: string;
|
|
44
44
|
forwardCss?: string;
|
|
45
45
|
buttonCss?: string;
|
|
46
|
+
style?: React.CSSProperties;
|
|
47
|
+
volumeStyle?: 'slider' | 'compact' | 'hover';
|
|
46
48
|
variant?: string;
|
|
47
49
|
}
|
|
48
|
-
export default function Video({ src, poster, onDuration, onEnded, isPause, spacebarPlay, className, autoPlay, showControls, showPlayPause, showProgress, showVolume, showTime, showFullscreen, showDownload, showSeekButtons, playIcon, pauseIcon, fullscreenIcon, downloadIcon, volumeIcon, muteIcon, rewindIcon, forwardIcon, hideControlsDelay, loop, muted, seekAmount, funcss, containerCss, videoCss, controlsCss, progressCss, progressBarCss, timeCss, playCss, pauseCss, volumeCss, fullscreenCss, downloadCss, rewindCss, forwardCss, buttonCss, variant, ...rest }: VideoProps): React.JSX.Element;
|
|
50
|
+
export default function Video({ src, poster, onDuration, onEnded, isPause, spacebarPlay, className, autoPlay, showControls, showPlayPause, showProgress, showVolume, showTime, showFullscreen, showDownload, showSeekButtons, playIcon, pauseIcon, fullscreenIcon, downloadIcon, volumeIcon, muteIcon, rewindIcon, forwardIcon, hideControlsDelay, loop, muted, seekAmount, funcss, containerCss, videoCss, controlsCss, progressCss, progressBarCss, timeCss, playCss, pauseCss, volumeCss, fullscreenCss, downloadCss, rewindCss, forwardCss, buttonCss, volumeStyle, style, variant, ...rest }: VideoProps): React.JSX.Element;
|
|
49
51
|
export {};
|