funuicss 3.9.10 → 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 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
- animation: dropdownFadeIn 0.15s ease-out;
2099
+ z-index: 9999;
2100
+ animation: fadeIn 0.15s ease-out;
2102
2101
  }
2103
2102
 
2104
- /* Position Variants - Vertical (Top/Bottom) */
2105
- .dropdown-menu.bottom-left {
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
- /* Position Variants - Horizontal (Left/Right) */
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.no-hover:hover {
2173
- background-color: transparent;
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
- /* Animations */
2195
- @keyframes dropdownFadeIn {
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;
@@ -6899,6 +6822,7 @@ color: var(--primary) !important;
6899
6822
  .h-100-p , .h-full { height: 100% !important; }
6900
6823
 
6901
6824
 
6825
+
6902
6826
  .height-10-p {
6903
6827
  height: 10%;
6904
6828
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.9.10",
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",
@@ -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", openOnHover: false, button: react_1.default.createElement(Avatar_1.default, null,
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;
@@ -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, _h = _a.controlerSize, controlerSize = _h === void 0 ? 2.5 : _h, _j = _a.controlerIconSize, controlerIconSize = _j === void 0 ? 20 : _j, _k = _a.infiniteScroll, infiniteScroll = _k === void 0 ? false : _k, _l = _a.infiniteScrollSpeed, infiniteScrollSpeed = _l === void 0 ? 50 : _l, _m = _a.infiniteScrollDirection, infiniteScrollDirection = _m === void 0 ? 'left' : _m, _o = _a.overflowPadding, overflowPadding = _o === void 0 ? '' : _o, _p = _a.overflowCss, overflowCss = _p === void 0 ? '' : _p, rest = __rest(_a, ["scrollNumber", "gap", "funcss", "showDashes", "allowVerticalOverflow", "itemPadding", "children", "controlerSize", "controlerIconSize", "infiniteScroll", "infiniteScrollSpeed", "infiniteScrollDirection", "overflowPadding", "overflowCss"]);
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 _q = (0, react_1.useState)('start'), scrollPosition = _q[0], setScrollPosition = _q[1];
96
- var _r = (0, react_1.useState)(false), isPhone = _r[0], setIsPhone = _r[1];
97
- var _s = (0, react_1.useState)(false), isScrollable = _s[0], setIsScrollable = _s[1];
98
- var _t = (0, react_1.useState)(infiniteScrollDirection === 'right' ? 'right' : 'left'), autoScrollDirection = _t[0], setAutoScrollDirection = _t[1];
99
- var _u = (0, react_1.useState)(false), isPaused = _u[0], setIsPaused = _u[1];
100
- var _v = (0, react_1.useState)(false), isReady = _v[0], setIsReady = _v[1];
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
- justifyItems: (isScrollable || isPhone) ? 'flex-start' : 'center',
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))); }))),
@@ -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;