funuicss 3.7.2 → 3.7.4

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
@@ -1653,6 +1653,195 @@ border-radius: var(--borderRadius);
1653
1653
  cursor: pointer;
1654
1654
  }
1655
1655
 
1656
+ /* AppBar Dropdown Styles */
1657
+ .nav_item {
1658
+ position: relative;
1659
+ }
1660
+
1661
+ .nav_item.has-dropdown .nav_link {
1662
+ cursor: pointer;
1663
+ }
1664
+
1665
+ .nav_link-arrow {
1666
+ transition: transform 0.3s ease;
1667
+ margin-left: 0.25rem;
1668
+ }
1669
+
1670
+ .nav_item.dropdown-open .nav_link-arrow {
1671
+ transform: rotate(180deg);
1672
+ }
1673
+
1674
+ /* Dropdown Menu */
1675
+ .nav_dropdown-menu {
1676
+ position: absolute;
1677
+ top: 100%;
1678
+ left: 0;
1679
+ background: var(--page-bg);
1680
+ border: var(--border);
1681
+ border-radius: 0.5rem;
1682
+ box-shadow: var(--card);
1683
+ min-width: 200px;
1684
+ z-index: 1000;
1685
+ opacity: 0;
1686
+ transform: translateY(-10px);
1687
+ font-size: var(--minifiedFontSize);
1688
+ visibility: hidden;
1689
+ transition: all 0.3s ease;
1690
+ }
1691
+
1692
+ .nav_item.dropdown-open .nav_dropdown-menu {
1693
+ opacity: 1;
1694
+ transform: translateY(0);
1695
+ visibility: visible;
1696
+ }
1697
+
1698
+ /* Dropdown Links */
1699
+ .nav_dropdown-menu .nav_item {
1700
+ border-bottom: var(--border);
1701
+ }
1702
+
1703
+ .nav_dropdown-menu .nav_item:last-child {
1704
+ border-bottom: none;
1705
+ }
1706
+
1707
+ .nav_dropdown-menu .nav_link {
1708
+ display: block;
1709
+ text-decoration: none;
1710
+ transition: all 0.2s ease;
1711
+ border-radius: 0;
1712
+ }
1713
+
1714
+ .nav_dropdown-menu .nav_link:hover {
1715
+ background: var(--lighter);
1716
+ color: var(--primary) !important;
1717
+ }
1718
+
1719
+ .nav_dropdown-menu .nav_link.active {
1720
+ background: var(--primary100);
1721
+ color: var(--primary);
1722
+ font-weight: 500;
1723
+ }
1724
+
1725
+ /* Nested Dropdowns */
1726
+ .nav_dropdown-menu .nav_dropdown-menu {
1727
+ top: 0;
1728
+ left: 100%;
1729
+ margin-left: 0.25rem;
1730
+ }
1731
+
1732
+ .nav_dropdown-menu .nav_item.has-dropdown .nav_link {
1733
+ display: flex;
1734
+ justify-content: space-between;
1735
+ align-items: center;
1736
+ }
1737
+
1738
+ /* Mobile Dropdown Styles */
1739
+ .nav_dropdown-mobile {
1740
+ position: static !important;
1741
+ box-shadow: none !important;
1742
+ border: none !important;
1743
+ background: var(--raiseOpaque) !important;
1744
+ margin-left: 1rem;
1745
+ margin-top: 0.5rem;
1746
+ opacity: 1 !important;
1747
+ transform: none !important;
1748
+ visibility: visible !important;
1749
+ max-height: 0;
1750
+ overflow: hidden;
1751
+ transition: max-height 0.3s ease;
1752
+ }
1753
+
1754
+ .nav_item.dropdown-open .nav_dropdown-mobile {
1755
+ max-height: 500px;
1756
+ }
1757
+
1758
+ .nav_dropdown-mobile .nav_link {
1759
+ padding: 0.5rem 1rem !important;
1760
+ }
1761
+
1762
+ /* Mobile Menu */
1763
+ .nav_mobile-menu {
1764
+ position: fixed;
1765
+ top: var(--navHeight);
1766
+ left: 0;
1767
+ right: 0;
1768
+ bottom: 0;
1769
+ background: var(--raiseOpaque);
1770
+ z-index: 999;
1771
+ overflow-y: auto;
1772
+ padding: 1rem;
1773
+ border-top: var(--border);
1774
+ }
1775
+
1776
+ .nav_mobile-menu .nav_links {
1777
+ align-items: flex-start !important;
1778
+ }
1779
+
1780
+ .nav_mobile-menu .nav_item {
1781
+ width: 100%;
1782
+ }
1783
+
1784
+ .nav_mobile-menu .nav_link {
1785
+ width: 100%;
1786
+ justify-content: space-between;
1787
+ padding: 1rem !important;
1788
+ border-bottom: var(--border);
1789
+ }
1790
+
1791
+ /* Active Link Styles */
1792
+ .nav_link.active {
1793
+ color: var(--primary) !important;
1794
+ font-weight: 600;
1795
+ }
1796
+
1797
+ /* Hover Effects */
1798
+ .nav_link:hover {
1799
+ color: var(--primary) !important;
1800
+ }
1801
+
1802
+ /* Icon Styles */
1803
+ .nav_link-icon {
1804
+ display: flex;
1805
+ align-items: center;
1806
+ transition: transform 0.2s ease;
1807
+ }
1808
+
1809
+ .nav_link:hover .nav_link-icon.prefix {
1810
+ transform: translateX(-2px);
1811
+ }
1812
+
1813
+ .nav_link:hover .nav_link-icon.suffix {
1814
+ transform: translateX(2px);
1815
+ }
1816
+
1817
+ /* Smooth Transitions */
1818
+ .nav_link,
1819
+ .nav_link-content,
1820
+ .nav_dropdown-menu {
1821
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1822
+ }
1823
+
1824
+ /* Focus States */
1825
+ .nav_link:focus {
1826
+ outline: 2px solid var(--primary);
1827
+ outline-offset: 2px;
1828
+ }
1829
+
1830
+ /* Responsive */
1831
+ @media (max-width: 768px) {
1832
+ .nav_dropdown-menu {
1833
+ position: static;
1834
+ box-shadow: none;
1835
+ border: none;
1836
+ background: var(--raiseOpaque);
1837
+ margin-left: 1rem;
1838
+ }
1839
+
1840
+ .nav_item.dropdown-open .nav_dropdown-menu {
1841
+ max-height: 500px;
1842
+ }
1843
+ }
1844
+
1656
1845
 
1657
1846
 
1658
1847
  /* video */
@@ -1727,7 +1916,7 @@ border-radius: var(--borderRadius);
1727
1916
  line-height: 0;
1728
1917
  color: var(--text-color);
1729
1918
  }
1730
-
1919
+
1731
1920
 
1732
1921
 
1733
1922
 
@@ -2927,14 +3116,14 @@ select.input {
2927
3116
  padding-top: 1.3rem;
2928
3117
  padding-bottom: 0.5rem;
2929
3118
  }
2930
- }
2931
-
2932
- .fileInput{
3119
+ }/* Enhanced File Upload Styles */
3120
+ .fileInput {
2933
3121
  position: relative;
2934
3122
  width: fit-content !important;
2935
3123
  cursor: pointer;
2936
3124
  }
2937
- .filedInput{
3125
+
3126
+ .filedInput {
2938
3127
  position: absolute;
2939
3128
  top: 0;
2940
3129
  left: 0;
@@ -2946,39 +3135,103 @@ select.input {
2946
3135
  z-index: 2;
2947
3136
  }
2948
3137
 
2949
-
2950
3138
  ._upload_container {
2951
- border: 0.17rem dashed var(--borderColor);
3139
+ border: 0.17rem dashed var(--borderColor);
2952
3140
  border-radius: 16px;
2953
3141
  padding: var(--space-5);
2954
3142
  text-align: center;
2955
- transition: border-color 0.3s ease;
3143
+ transition: all 0.3s ease;
2956
3144
  cursor: pointer;
2957
3145
  margin: auto;
2958
3146
  color: var(--text-color);
3147
+ position: relative;
3148
+ overflow: hidden;
2959
3149
  }
2960
3150
 
2961
3151
  ._upload_container:hover {
2962
3152
  border-color: var(--primary);
2963
3153
  background-color: var(--lighter);
2964
- /* color: var(--primary800); */
3154
+ }
3155
+
3156
+ ._upload_container.drag-over {
3157
+ border-color: var(--primary);
3158
+ background-color: var(--lighter);
3159
+ transform: scale(1.02);
3160
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
2965
3161
  }
2966
3162
 
2967
3163
  ._upload_label {
2968
3164
  display: block;
2969
3165
  cursor: pointer;
3166
+ position: relative;
3167
+ z-index: 1;
2970
3168
  }
2971
3169
 
2972
3170
  ._upload_icon {
2973
3171
  font-size: 2.4rem;
2974
3172
  color: var(--primary);
2975
3173
  margin-bottom: 0.5rem;
3174
+ transition: all 0.3s ease;
2976
3175
  }
2977
3176
 
2978
3177
  ._upload_input {
2979
3178
  display: none;
2980
3179
  }
2981
3180
 
3181
+ /* Drag and drop overlay */
3182
+ .drag-overlay {
3183
+ position: absolute;
3184
+ top: 0;
3185
+ left: 0;
3186
+ right: 0;
3187
+ bottom: 0;
3188
+ background: var(--primary);
3189
+ opacity: 0.1;
3190
+ border-radius: 14px;
3191
+ pointer-events: none;
3192
+ }
3193
+
3194
+ /* File info display */
3195
+ .file-info {
3196
+ margin-top: var(--space-3);
3197
+ padding: var(--space-3);
3198
+ background-color: var(--light);
3199
+ border-radius: 8px;
3200
+ border: 1px solid var(--borderColor);
3201
+ display: flex;
3202
+ align-items: center;
3203
+ gap: var(--space-3);
3204
+ justify-content: center;
3205
+ animation: fadeIn 0.3s ease;
3206
+ }
3207
+
3208
+ @keyframes fadeIn {
3209
+ from {
3210
+ opacity: 0;
3211
+ transform: translateY(-10px);
3212
+ }
3213
+ to {
3214
+ opacity: 1;
3215
+ transform: translateY(0);
3216
+ }
3217
+ }
3218
+
3219
+ /* Status colors */
3220
+ ._upload_container.success {
3221
+ border-color: var(--success);
3222
+ }
3223
+
3224
+ ._upload_container.warning {
3225
+ border-color: var(--warning);
3226
+ }
3227
+
3228
+ ._upload_container.danger {
3229
+ border-color: var(--danger);
3230
+ }
3231
+
3232
+ ._upload_container.info {
3233
+ border-color: var(--info);
3234
+ }
2982
3235
 
2983
3236
  .custom-select {
2984
3237
  position: relative;
package/index.d.ts CHANGED
@@ -55,6 +55,7 @@ export { default as Slider } from "./ui/slider/Slider";
55
55
  export { default as FlexItem } from "./ui/flex/FlexItem";
56
56
  export { default as ScrollToTop } from "./ui/scrolltotop/ScrollToTop";
57
57
  export { default as Select } from "./ui/select/Select";
58
+ export { default as FileUpload } from "./ui/input/FileUpload";
58
59
  export { default as Cookie } from "./js/Cookie";
59
60
  export { useVariable, useAsset, useAssetType, useAssetValue, useAssets, useVariables, } from "./ui/theme/theme";
60
61
  export { FunGet } from "./js/Fun";
package/index.js CHANGED
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.View = exports.ScrollInView = exports.Accordion = exports.Flex = exports.RichText = exports.Carousel = exports.Video = exports.SideBar = exports.ChartPie = exports.Lines = exports.Bars = exports.FullCenteredPage = exports.CircleGroup = exports.Circle = exports.Hr = exports.Section = exports.RowFlex = exports.Tip = exports.AppBar = exports.ToolTip = exports.Notification = exports.FunLoader = exports.ProgressBar = exports.DropMenu = exports.DropItem = exports.Dropdown = exports.DropDown = exports.DropUp = exports.UnAuthorized = exports.NotFound = exports.StepLine = exports.StepHeader = exports.Step = exports.StepContainer = exports.Div = exports.Text = exports.List = exports.Table = exports.Modal = exports.Loader = exports.SearchableInput = exports.Input = exports.Col = exports.Grid = exports.Container = exports.BreadCrumb = exports.Card = exports.Button = exports.ThemeProvider = exports.Alert = void 0;
7
- exports.GoogleAnalytics = exports.FunGet = exports.useVariables = exports.useAssets = exports.useAssetValue = exports.useAssetType = exports.useAsset = exports.useVariable = exports.Cookie = exports.Select = exports.ScrollToTop = exports.FlexItem = exports.Slider = exports.Vista = exports.Calendar = exports.DatePicker = void 0;
7
+ exports.GoogleAnalytics = exports.FunGet = exports.useVariables = exports.useAssets = exports.useAssetValue = exports.useAssetType = exports.useAsset = exports.useVariable = exports.Cookie = exports.FileUpload = exports.Select = exports.ScrollToTop = exports.FlexItem = exports.Slider = exports.Vista = exports.Calendar = exports.DatePicker = void 0;
8
8
  var Alert_1 = require("./ui/alert/Alert");
9
9
  Object.defineProperty(exports, "Alert", { enumerable: true, get: function () { return __importDefault(Alert_1).default; } });
10
10
  var theme_1 = require("./ui/theme/theme");
@@ -119,6 +119,8 @@ var ScrollToTop_1 = require("./ui/scrolltotop/ScrollToTop");
119
119
  Object.defineProperty(exports, "ScrollToTop", { enumerable: true, get: function () { return __importDefault(ScrollToTop_1).default; } });
120
120
  var Select_1 = require("./ui/select/Select");
121
121
  Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(Select_1).default; } });
122
+ var FileUpload_1 = require("./ui/input/FileUpload");
123
+ Object.defineProperty(exports, "FileUpload", { enumerable: true, get: function () { return __importDefault(FileUpload_1).default; } });
122
124
  // js
123
125
  var Cookie_1 = require("./js/Cookie");
124
126
  Object.defineProperty(exports, "Cookie", { enumerable: true, get: function () { return __importDefault(Cookie_1).default; } });
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.7.2",
2
+ "version": "3.7.4",
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",
@@ -1,20 +1,50 @@
1
1
  import * as React from 'react';
2
+ interface NavLink {
3
+ label: string;
4
+ href: string;
5
+ icon?: string;
6
+ iconPosition?: 'prefix' | 'suffix';
7
+ children?: NavLink[];
8
+ active?: boolean;
9
+ className?: string;
10
+ }
2
11
  interface NavbarProps {
3
12
  fixedTop?: boolean;
4
13
  funcss?: string;
5
14
  padding?: string;
6
15
  fixedBottom?: boolean;
7
16
  justify?: string;
17
+ transparent?: boolean;
8
18
  children?: React.ReactNode;
9
19
  left?: React.ReactNode;
10
20
  center?: React.ReactNode;
11
21
  right?: React.ReactNode;
12
22
  sidebarTrigger?: React.ReactNode;
13
- transparent?: boolean;
14
23
  sideBar?: number;
15
24
  hasSidebar?: boolean;
16
25
  sidebarOpen?: boolean;
17
26
  openSidebar?: () => void;
27
+ variant?: string;
28
+ leftLinks?: NavLink[] | string;
29
+ centerLinks?: NavLink[] | string;
30
+ rightLinks?: NavLink[] | string;
31
+ renderLink?: (link: NavLink, index: number) => React.ReactNode;
32
+ mobileMenuBreakpoint?: number;
33
+ logoType?: 'text' | 'image' | 'both' | 'none';
34
+ logoText?: string;
35
+ logoTextSize?: string;
36
+ logoTextColor?: string;
37
+ logoTextWeight?: string;
38
+ logoUrl?: string;
39
+ logoAlt?: string;
40
+ logoWidth?: string;
41
+ logoHeight?: string;
42
+ logoHref?: string;
43
+ onLogoClick?: () => void;
44
+ linkGap?: string;
45
+ linkPadding?: string;
46
+ activeLinkColor?: string;
47
+ dropdownArrow?: boolean;
18
48
  }
19
- export default function AppBar({ fixedTop, funcss, padding, fixedBottom, justify, left, center, right, sideBar, sidebarTrigger, transparent, hasSidebar, openSidebar, sidebarOpen }: NavbarProps): React.JSX.Element;
49
+ export default function AppBar(localProps: NavbarProps): React.JSX.Element;
20
50
  export {};