funuicss 3.9.11 → 3.9.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 +28 -105
- package/package.json +1 -1
- package/ui/calendar/Calendar.js +1 -1
- package/ui/carousel/Carousel.d.ts +1 -0
- package/ui/carousel/Carousel.js +9 -10
- package/ui/drop/Dropdown.d.ts +0 -3
- package/ui/drop/Dropdown.js +116 -823
- package/ui/loader/Loader.js +2 -2
- package/ui/richtext/RichText.js +1 -1
- package/ui/sidebar/SideBar.d.ts +4 -2
- package/ui/sidebar/SideBar.js +470 -14
- package/ui/table/Table.js +969 -201
package/css/fun.css
CHANGED
|
@@ -2082,70 +2082,72 @@ border-radius: var(--borderRadius);
|
|
|
2082
2082
|
}
|
|
2083
2083
|
|
|
2084
2084
|
|
|
2085
|
-
|
|
2086
2085
|
/* Dropdown Container */
|
|
2087
2086
|
.dropdown-container {
|
|
2088
2087
|
position: relative;
|
|
2089
2088
|
width: fit-content;
|
|
2089
|
+
display: inline-block;
|
|
2090
2090
|
}
|
|
2091
2091
|
|
|
2092
|
-
/* Dropdown Menu */
|
|
2092
|
+
/* Dropdown Menu - Base Styles */
|
|
2093
2093
|
.dropdown-menu {
|
|
2094
|
-
position: absolute;
|
|
2095
|
-
z-index: 9999 !important;
|
|
2096
2094
|
background-color: var(--page-bg);
|
|
2097
2095
|
border: var(--border);
|
|
2098
2096
|
border-radius: 0.5rem;
|
|
2099
2097
|
box-shadow: var(--card);
|
|
2100
2098
|
overflow: auto;
|
|
2101
|
-
|
|
2099
|
+
z-index: 9999;
|
|
2100
|
+
animation: fadeIn 0.15s ease-out;
|
|
2102
2101
|
}
|
|
2103
2102
|
|
|
2104
|
-
/*
|
|
2105
|
-
.dropdown-
|
|
2103
|
+
/* For non-portal mode (absolute positioning within container) */
|
|
2104
|
+
.dropdown-container .dropdown-menu:not([style*="position: fixed"]) {
|
|
2105
|
+
position: absolute;
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
/* Position Variants - For non-portal mode */
|
|
2109
|
+
.dropdown-container .dropdown-menu.bottom-left:not([style*="position: fixed"]) {
|
|
2106
2110
|
top: calc(100% + 8px);
|
|
2107
2111
|
left: 0;
|
|
2108
2112
|
}
|
|
2109
2113
|
|
|
2110
|
-
.dropdown-menu.bottom-right {
|
|
2114
|
+
.dropdown-container .dropdown-menu.bottom-right:not([style*="position: fixed"]) {
|
|
2111
2115
|
top: calc(100% + 8px);
|
|
2112
2116
|
right: 0;
|
|
2113
2117
|
}
|
|
2114
2118
|
|
|
2115
|
-
.dropdown-menu.bottom {
|
|
2119
|
+
.dropdown-container .dropdown-menu.bottom:not([style*="position: fixed"]) {
|
|
2116
2120
|
top: calc(100% + 8px);
|
|
2117
2121
|
left: 50%;
|
|
2118
2122
|
transform: translateX(-50%);
|
|
2119
2123
|
}
|
|
2120
2124
|
|
|
2121
|
-
.dropdown-menu.top-left {
|
|
2125
|
+
.dropdown-container .dropdown-menu.top-left:not([style*="position: fixed"]) {
|
|
2122
2126
|
bottom: calc(100% + 8px);
|
|
2123
2127
|
left: 0;
|
|
2124
2128
|
}
|
|
2125
2129
|
|
|
2126
|
-
.dropdown-menu.top-right {
|
|
2130
|
+
.dropdown-container .dropdown-menu.top-right:not([style*="position: fixed"]) {
|
|
2127
2131
|
bottom: calc(100% + 8px);
|
|
2128
2132
|
right: 0;
|
|
2129
2133
|
}
|
|
2130
2134
|
|
|
2131
|
-
.dropdown-menu.top {
|
|
2135
|
+
.dropdown-container .dropdown-menu.top:not([style*="position: fixed"]) {
|
|
2132
2136
|
bottom: calc(100% + 8px);
|
|
2133
2137
|
left: 50%;
|
|
2134
2138
|
transform: translateX(-50%);
|
|
2135
2139
|
}
|
|
2136
2140
|
|
|
2137
|
-
|
|
2138
|
-
.dropdown-menu.left {
|
|
2141
|
+
.dropdown-container .dropdown-menu.left:not([style*="position: fixed"]) {
|
|
2139
2142
|
right: calc(100% + 8px);
|
|
2140
2143
|
top: 0;
|
|
2141
2144
|
}
|
|
2142
2145
|
|
|
2143
|
-
.dropdown-menu.right {
|
|
2146
|
+
.dropdown-container .dropdown-menu.right:not([style*="position: fixed"]) {
|
|
2144
2147
|
left: calc(100% + 8px);
|
|
2145
2148
|
top: 0;
|
|
2146
2149
|
}
|
|
2147
2150
|
|
|
2148
|
-
|
|
2149
2151
|
/* Dropdown Item */
|
|
2150
2152
|
.dropdown-item {
|
|
2151
2153
|
padding: 0.4rem 0.8rem;
|
|
@@ -2157,6 +2159,7 @@ z-index: 9999 !important;
|
|
|
2157
2159
|
flex-wrap: nowrap;
|
|
2158
2160
|
font-size: var(--smallFont);
|
|
2159
2161
|
transition: background-color 0.15s ease;
|
|
2162
|
+
white-space: nowrap;
|
|
2160
2163
|
}
|
|
2161
2164
|
|
|
2162
2165
|
.dropdown-item:hover {
|
|
@@ -2169,8 +2172,8 @@ z-index: 9999 !important;
|
|
|
2169
2172
|
pointer-events: none;
|
|
2170
2173
|
}
|
|
2171
2174
|
|
|
2172
|
-
.dropdown-item
|
|
2173
|
-
|
|
2175
|
+
.dropdown-item:last-child {
|
|
2176
|
+
border-bottom: none;
|
|
2174
2177
|
}
|
|
2175
2178
|
|
|
2176
2179
|
/* Dropdown Item Icons */
|
|
@@ -2182,106 +2185,24 @@ z-index: 9999 !important;
|
|
|
2182
2185
|
|
|
2183
2186
|
.dropdown-item-label {
|
|
2184
2187
|
flex: 1;
|
|
2188
|
+
overflow: hidden;
|
|
2189
|
+
text-overflow: ellipsis;
|
|
2185
2190
|
}
|
|
2186
2191
|
|
|
2187
2192
|
/* Dropdown Divider */
|
|
2188
2193
|
.dropdown-divider {
|
|
2189
2194
|
height: 1px;
|
|
2190
|
-
background-color: var(--border);
|
|
2195
|
+
background-color: var(--border-color, #e5e7eb);
|
|
2191
2196
|
margin: 0.25rem 0;
|
|
2192
2197
|
}
|
|
2193
2198
|
|
|
2194
|
-
/*
|
|
2195
|
-
@keyframes
|
|
2196
|
-
from {
|
|
2197
|
-
opacity: 0;
|
|
2198
|
-
transform: translateY(-4px);
|
|
2199
|
-
}
|
|
2200
|
-
to {
|
|
2201
|
-
opacity: 1;
|
|
2202
|
-
transform: translateY(0);
|
|
2203
|
-
}
|
|
2204
|
-
}
|
|
2205
|
-
|
|
2206
|
-
/* Animation for centered positions */
|
|
2207
|
-
.dropdown-menu.top,
|
|
2208
|
-
.dropdown-menu.bottom {
|
|
2209
|
-
animation: dropdownFadeInCentered 0.15s ease-out;
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2212
|
-
@keyframes dropdownFadeInCentered {
|
|
2213
|
-
from {
|
|
2214
|
-
opacity: 0;
|
|
2215
|
-
transform: translateX(-50%) translateY(-4px);
|
|
2216
|
-
}
|
|
2217
|
-
to {
|
|
2218
|
-
opacity: 1;
|
|
2219
|
-
transform: translateX(-50%) translateY(0);
|
|
2220
|
-
}
|
|
2221
|
-
}
|
|
2222
|
-
|
|
2223
|
-
/* Animation for top positions */
|
|
2224
|
-
.dropdown-menu.top-left,
|
|
2225
|
-
.dropdown-menu.top-right,
|
|
2226
|
-
.dropdown-menu.top {
|
|
2227
|
-
animation: dropdownFadeInTop 0.15s ease-out;
|
|
2228
|
-
}
|
|
2229
|
-
|
|
2230
|
-
@keyframes dropdownFadeInTop {
|
|
2231
|
-
from {
|
|
2232
|
-
opacity: 0;
|
|
2233
|
-
transform: translateY(4px);
|
|
2234
|
-
}
|
|
2235
|
-
to {
|
|
2236
|
-
opacity: 1;
|
|
2237
|
-
transform: translateY(0);
|
|
2238
|
-
}
|
|
2239
|
-
}
|
|
2240
|
-
|
|
2241
|
-
/* Animation for top centered */
|
|
2242
|
-
.dropdown-menu.top {
|
|
2243
|
-
animation: dropdownFadeInTopCentered 0.15s ease-out;
|
|
2244
|
-
}
|
|
2245
|
-
|
|
2246
|
-
@keyframes dropdownFadeInTopCentered {
|
|
2247
|
-
from {
|
|
2248
|
-
opacity: 0;
|
|
2249
|
-
transform: translateX(-50%) translateY(4px);
|
|
2250
|
-
}
|
|
2251
|
-
to {
|
|
2252
|
-
opacity: 1;
|
|
2253
|
-
transform: translateX(-50%) translateY(0);
|
|
2254
|
-
}
|
|
2255
|
-
}
|
|
2256
|
-
|
|
2257
|
-
/* Animation for horizontal positions */
|
|
2258
|
-
.dropdown-menu.left {
|
|
2259
|
-
animation: dropdownFadeInLeft 0.15s ease-out;
|
|
2260
|
-
}
|
|
2261
|
-
|
|
2262
|
-
@keyframes dropdownFadeInLeft {
|
|
2263
|
-
from {
|
|
2264
|
-
opacity: 0;
|
|
2265
|
-
transform: translateX(4px);
|
|
2266
|
-
}
|
|
2267
|
-
to {
|
|
2268
|
-
opacity: 1;
|
|
2269
|
-
transform: translateX(0);
|
|
2270
|
-
}
|
|
2271
|
-
}
|
|
2272
|
-
|
|
2273
|
-
.dropdown-menu.right {
|
|
2274
|
-
animation: dropdownFadeInRight 0.15s ease-out;
|
|
2275
|
-
}
|
|
2276
|
-
|
|
2277
|
-
@keyframes dropdownFadeInRight {
|
|
2199
|
+
/* Simple fade-in animation only */
|
|
2200
|
+
@keyframes fadeIn {
|
|
2278
2201
|
from {
|
|
2279
2202
|
opacity: 0;
|
|
2280
|
-
transform: translateX(-4px);
|
|
2281
2203
|
}
|
|
2282
2204
|
to {
|
|
2283
2205
|
opacity: 1;
|
|
2284
|
-
transform: translateX(0);
|
|
2285
2206
|
}
|
|
2286
2207
|
}
|
|
2287
2208
|
|
|
@@ -3992,6 +3913,8 @@ padding-right: 2.5rem;
|
|
|
3992
3913
|
cursor: pointer;
|
|
3993
3914
|
}
|
|
3994
3915
|
|
|
3916
|
+
|
|
3917
|
+
|
|
3995
3918
|
/* Empty State */
|
|
3996
3919
|
.table-empty {
|
|
3997
3920
|
display: flex;
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.9.
|
|
2
|
+
"version": "3.9.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/calendar/Calendar.js
CHANGED
|
@@ -175,7 +175,7 @@ var Calendar = function (_a) {
|
|
|
175
175
|
var year = (0, dayjs_1.default)().year() - 10 + i;
|
|
176
176
|
return { value: year.toString(), text: year.toString() };
|
|
177
177
|
}), borderless: true, funcss: "round-edge" })),
|
|
178
|
-
react_1.default.createElement(Dropdown_1.default, { position: "bottom",
|
|
178
|
+
react_1.default.createElement(Dropdown_1.default, { position: "bottom", button: react_1.default.createElement(Avatar_1.default, null,
|
|
179
179
|
react_1.default.createElement(hi_1.HiOutlineDotsVertical, null)), items: [
|
|
180
180
|
{
|
|
181
181
|
label: react_1.default.createElement("span", { className: "text-sm" }, "Today"),
|
|
@@ -14,6 +14,7 @@ interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
14
14
|
infiniteScrollDirection?: 'left' | 'right' | 'alternate';
|
|
15
15
|
overflowCss?: string;
|
|
16
16
|
overflowPadding?: string;
|
|
17
|
+
justify?: string;
|
|
17
18
|
}
|
|
18
19
|
declare const Carousel: React.FC<CarouselProps>;
|
|
19
20
|
export default Carousel;
|
package/ui/carousel/Carousel.js
CHANGED
|
@@ -89,15 +89,15 @@ var RowFlex = function (_a) {
|
|
|
89
89
|
} }, children));
|
|
90
90
|
};
|
|
91
91
|
var Carousel = function (_a) {
|
|
92
|
-
var _b = _a.scrollNumber, scrollNumber = _b === void 0 ? 320 : _b, _c = _a.gap, gap = _c === void 0 ? 0.5 : _c, _d = _a.funcss, funcss = _d === void 0 ? '' : _d, _e = _a.showDashes, showDashes = _e === void 0 ? true : _e, _f = _a.allowVerticalOverflow, allowVerticalOverflow = _f === void 0 ? false : _f, _g = _a.itemPadding, itemPadding = _g === void 0 ? '' : _g, children = _a.children,
|
|
92
|
+
var _b = _a.scrollNumber, scrollNumber = _b === void 0 ? 320 : _b, _c = _a.gap, gap = _c === void 0 ? 0.5 : _c, _d = _a.funcss, funcss = _d === void 0 ? '' : _d, _e = _a.showDashes, showDashes = _e === void 0 ? true : _e, _f = _a.allowVerticalOverflow, allowVerticalOverflow = _f === void 0 ? false : _f, _g = _a.itemPadding, itemPadding = _g === void 0 ? '' : _g, _h = _a.justify, justify = _h === void 0 ? '' : _h, children = _a.children, _j = _a.controlerSize, controlerSize = _j === void 0 ? 2.5 : _j, _k = _a.controlerIconSize, controlerIconSize = _k === void 0 ? 20 : _k, _l = _a.infiniteScroll, infiniteScroll = _l === void 0 ? false : _l, _m = _a.infiniteScrollSpeed, infiniteScrollSpeed = _m === void 0 ? 50 : _m, _o = _a.infiniteScrollDirection, infiniteScrollDirection = _o === void 0 ? 'left' : _o, _p = _a.overflowPadding, overflowPadding = _p === void 0 ? '' : _p, _q = _a.overflowCss, overflowCss = _q === void 0 ? '' : _q, rest = __rest(_a, ["scrollNumber", "gap", "funcss", "showDashes", "allowVerticalOverflow", "itemPadding", "justify", "children", "controlerSize", "controlerIconSize", "infiniteScroll", "infiniteScrollSpeed", "infiniteScrollDirection", "overflowPadding", "overflowCss"]);
|
|
93
93
|
var scrollRef = (0, react_1.useRef)(null);
|
|
94
94
|
var containerRef = (0, react_1.useRef)(null);
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
-
var
|
|
98
|
-
var
|
|
99
|
-
var
|
|
100
|
-
var
|
|
95
|
+
var _r = (0, react_1.useState)('start'), scrollPosition = _r[0], setScrollPosition = _r[1];
|
|
96
|
+
var _s = (0, react_1.useState)(false), isPhone = _s[0], setIsPhone = _s[1];
|
|
97
|
+
var _t = (0, react_1.useState)(false), isScrollable = _t[0], setIsScrollable = _t[1];
|
|
98
|
+
var _u = (0, react_1.useState)(infiniteScrollDirection === 'right' ? 'right' : 'left'), autoScrollDirection = _u[0], setAutoScrollDirection = _u[1];
|
|
99
|
+
var _v = (0, react_1.useState)(false), isPaused = _v[0], setIsPaused = _v[1];
|
|
100
|
+
var _w = (0, react_1.useState)(false), isReady = _w[0], setIsReady = _w[1];
|
|
101
101
|
var animationFrameRef = (0, react_1.useRef)(null);
|
|
102
102
|
var lastTimestampRef = (0, react_1.useRef)(0);
|
|
103
103
|
var startDelayRef = (0, react_1.useRef)(false);
|
|
@@ -255,7 +255,7 @@ var Carousel = function (_a) {
|
|
|
255
255
|
setIsPaused(false);
|
|
256
256
|
}, 1000);
|
|
257
257
|
};
|
|
258
|
-
return (react_1.default.createElement("div", __assign({ ref: containerRef, className: "carousel-wrapper", onTouchStart: handleTouchStart, onTouchEnd: handleTouchEnd }, rest),
|
|
258
|
+
return (react_1.default.createElement("div", __assign({ ref: containerRef, className: "carousel-wrapper", onTouchStart: handleTouchStart, onTouchEnd: handleTouchEnd, style: { padding: (isScrollable && overflowPadding) ? overflowPadding : itemPadding } }, rest),
|
|
259
259
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
260
260
|
!isPhone && isScrollable && !infiniteScroll && (react_1.default.createElement("div", { className: 'carouselLeft' },
|
|
261
261
|
react_1.default.createElement(Circle, { bordered: true, size: controlerSize, onClick: function () { return scroll('left'); } },
|
|
@@ -266,10 +266,9 @@ var Carousel = function (_a) {
|
|
|
266
266
|
overflowX: 'auto',
|
|
267
267
|
overflowY: 'visible',
|
|
268
268
|
display: 'flex',
|
|
269
|
-
|
|
269
|
+
justifyContent: justify ? justify : (isScrollable || isPhone) ? 'flex-start' : 'center',
|
|
270
270
|
scrollSnapType: infiniteScroll ? 'none' : 'x mandatory',
|
|
271
271
|
scrollBehavior: 'smooth',
|
|
272
|
-
padding: (isScrollable && overflowPadding) ? overflowPadding : itemPadding,
|
|
273
272
|
cursor: infiniteScroll ? 'grab' : 'default'
|
|
274
273
|
}, onScroll: handleScroll }, infiniteScroll ? cloneChildren() : (react_1.default.Children.map(children, function (child, index) { return (react_1.default.createElement("div", { className: "carousel-item", style: { flexShrink: 0 }, onMouseEnter: function () { return !infiniteScroll && setIsPaused(true); }, onMouseLeave: function () { return !infiniteScroll && setIsPaused(false); } },
|
|
275
274
|
react_1.default.createElement("div", { className: "carousel-card" }, child))); }))),
|
package/ui/drop/Dropdown.d.ts
CHANGED
|
@@ -12,8 +12,6 @@ interface DropdownProps {
|
|
|
12
12
|
position?: Position;
|
|
13
13
|
button: React.ReactNode;
|
|
14
14
|
items: DropdownItem[];
|
|
15
|
-
hoverable?: boolean;
|
|
16
|
-
openOnHover?: boolean;
|
|
17
15
|
closableOnlyOutside?: boolean;
|
|
18
16
|
className?: string;
|
|
19
17
|
menuClassName?: string;
|
|
@@ -24,7 +22,6 @@ interface DropdownProps {
|
|
|
24
22
|
minHeight?: string;
|
|
25
23
|
maxHeight?: string;
|
|
26
24
|
usePortal?: boolean;
|
|
27
|
-
fixed?: boolean;
|
|
28
25
|
}
|
|
29
26
|
declare const Dropdown: React.FC<DropdownProps>;
|
|
30
27
|
export default Dropdown;
|