funuicss 3.7.14 → 3.7.15

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
@@ -8728,6 +8728,436 @@ z-index: 10;
8728
8728
  }
8729
8729
 
8730
8730
 
8731
+
8732
+
8733
+
8734
+
8735
+ /* FOOTER */
8736
+ /* Footer Base Styles */
8737
+ .funui-footer {
8738
+ width: 100%;
8739
+ position: relative;
8740
+ }
8741
+
8742
+ .funui-footer__container {
8743
+ width: 100%;
8744
+ margin-left: auto;
8745
+ margin-right: auto;
8746
+ padding-left: 1rem;
8747
+ padding-right: 1rem;
8748
+ }
8749
+
8750
+ /* Top Section */
8751
+ .funui-footer__top {
8752
+ display: grid;
8753
+ gap: 2rem;
8754
+ padding-top: 2rem;
8755
+ padding-bottom: 2rem;
8756
+ }
8757
+
8758
+ /* Brand Section */
8759
+ .funui-footer__brand {
8760
+ display: flex;
8761
+ flex-direction: column;
8762
+ gap: 1rem;
8763
+ }
8764
+
8765
+ .funui-footer__logo-link {
8766
+ display: inline-block;
8767
+ text-decoration: none;
8768
+ transition: opacity 0.2s ease;
8769
+ }
8770
+
8771
+ .funui-footer__logo-link:hover {
8772
+ opacity: 0.8;
8773
+ }
8774
+
8775
+ .funui-footer__logo-image {
8776
+ max-width: 100%;
8777
+ height: auto;
8778
+ }
8779
+
8780
+ .funui-footer__description {
8781
+ line-height: 1.6;
8782
+ }
8783
+
8784
+ .funui-footer__description p {
8785
+ margin: 0;
8786
+ }
8787
+
8788
+ /* Contact Info */
8789
+ .funui-footer__contact {
8790
+ display: flex;
8791
+ flex-direction: column;
8792
+ gap: 0.75rem;
8793
+ }
8794
+
8795
+ .funui-footer__contact-item {
8796
+ display: flex;
8797
+ align-items: flex-start;
8798
+ gap: 0.5rem;
8799
+ font-size: 0.875rem;
8800
+ }
8801
+
8802
+ .funui-footer__contact-icon {
8803
+ display: flex;
8804
+ align-items: center;
8805
+ flex-shrink: 0;
8806
+ margin-top: 0.125rem;
8807
+ }
8808
+
8809
+ .funui-footer__contact-link {
8810
+ color: inherit;
8811
+ text-decoration: none;
8812
+ transition: color 0.2s ease;
8813
+ }
8814
+
8815
+ .funui-footer__contact-link:hover {
8816
+ color: var(--primary);
8817
+ text-decoration: underline;
8818
+ }
8819
+
8820
+ .funui-footer__contact-text {
8821
+ line-height: 1.4;
8822
+ }
8823
+
8824
+ /* Social Links */
8825
+ .funui-footer__socials {
8826
+ display: flex;
8827
+ gap: 0.75rem;
8828
+ flex-wrap: wrap;
8829
+ }
8830
+
8831
+ .funui-footer__social-link {
8832
+ display: inline-flex;
8833
+ align-items: center;
8834
+ justify-content: center;
8835
+ width: 2.5rem;
8836
+ height: 2.5rem;
8837
+ border-radius: 50%;
8838
+ color: inherit;
8839
+ background-color: var(--lighter);
8840
+ transition: all 0.2s ease;
8841
+ text-decoration: none;
8842
+ }
8843
+
8844
+ .funui-footer__social-link:hover {
8845
+ color: var(--primary);
8846
+ transform: translateY(-2px);
8847
+ }
8848
+
8849
+ .funui-footer__social-icon {
8850
+ display: flex;
8851
+ align-items: center;
8852
+ justify-content: center;
8853
+ }
8854
+
8855
+ /* Link Sections */
8856
+ .funui-footer__section {
8857
+ display: flex;
8858
+ flex-direction: column;
8859
+ gap: 1rem;
8860
+ }
8861
+
8862
+ .funui-footer__section-title {
8863
+ font-size: 0.875rem;
8864
+ font-weight: 600;
8865
+ text-transform: uppercase;
8866
+ letter-spacing: 0.05em;
8867
+ margin: 0;
8868
+ color: inherit;
8869
+ opacity: 0.9;
8870
+ }
8871
+
8872
+ .funui-footer__links {
8873
+ list-style: none;
8874
+ padding: 0;
8875
+ margin: 0;
8876
+ display: flex;
8877
+ flex-direction: column;
8878
+ gap: 0.75rem;
8879
+ }
8880
+
8881
+ .funui-footer__link-item {
8882
+ margin: 0;
8883
+ }
8884
+
8885
+ .funui-footer__link {
8886
+ display: inline-flex;
8887
+ align-items: center;
8888
+ gap: 0.5rem;
8889
+ color: inherit;
8890
+ text-decoration: none;
8891
+ font-size: 0.875rem;
8892
+ transition: color 0.2s ease;
8893
+ }
8894
+
8895
+ .funui-footer__link:hover {
8896
+ color: var(--primary) !important;
8897
+ text-decoration: underline;
8898
+ }
8899
+
8900
+ .funui-footer__link-icon {
8901
+ display: inline-flex;
8902
+ align-items: center;
8903
+ }
8904
+
8905
+ /* Divider */
8906
+ /* .funui-footer__divider {
8907
+ width: 100%;
8908
+ height: 1px;
8909
+ background-color: var(--borderColor) !important;
8910
+ opacity: 0.1;
8911
+ margin: 0;
8912
+ } */
8913
+
8914
+ /* Bottom Section */
8915
+ .funui-footer__bottom {
8916
+ display: flex;
8917
+ flex-direction: column;
8918
+ gap: 1rem;
8919
+ padding-top: 1.5rem;
8920
+ padding-bottom: 1.5rem;
8921
+ font-size: 0.875rem;
8922
+ }
8923
+
8924
+ .funui-footer__copyright {
8925
+ color: inherit;
8926
+ opacity: 0.8;
8927
+ }
8928
+
8929
+ .funui-footer__legal {
8930
+ display: flex;
8931
+ flex-wrap: wrap;
8932
+ gap: 1.5rem;
8933
+ }
8934
+
8935
+ .funui-footer__legal-link {
8936
+ color: inherit;
8937
+ text-decoration: none;
8938
+ transition: color 0.2s ease;
8939
+ }
8940
+
8941
+ .funui-footer__legal-link:hover {
8942
+ color: var(--primary);
8943
+ text-decoration: underline;
8944
+ }
8945
+
8946
+ /* Screen Reader Only */
8947
+ .sr-only {
8948
+ position: absolute;
8949
+ width: 1px;
8950
+ height: 1px;
8951
+ padding: 0;
8952
+ margin: -1px;
8953
+ overflow: hidden;
8954
+ clip: rect(0, 0, 0, 0);
8955
+ white-space: nowrap;
8956
+ border: 0;
8957
+ }
8958
+
8959
+ /* Responsive Layouts */
8960
+
8961
+ /* Default Layout (Desktop First) */
8962
+ .funui-footer--default .funui-footer__top {
8963
+ grid-template-columns: minmax(250px, 1fr) repeat(auto-fit, minmax(150px, 1fr));
8964
+ }
8965
+
8966
+ /* Centered Layout */
8967
+ .funui-footer--centered {
8968
+ text-align: center;
8969
+ }
8970
+
8971
+ .funui-footer--centered .funui-footer__top {
8972
+ grid-template-columns: 1fr;
8973
+ }
8974
+
8975
+ .funui-footer--centered .funui-footer__brand {
8976
+ align-items: center;
8977
+ max-width: 600px;
8978
+ margin-left: auto;
8979
+ margin-right: auto;
8980
+ }
8981
+
8982
+ .funui-footer--centered .funui-footer__contact-item {
8983
+ justify-content: center;
8984
+ }
8985
+
8986
+ .funui-footer--centered .funui-footer__socials {
8987
+ justify-content: center;
8988
+ }
8989
+
8990
+ .funui-footer--centered .funui-footer__bottom {
8991
+ align-items: center;
8992
+ text-align: center;
8993
+ }
8994
+
8995
+ /* Compact Layout */
8996
+ .funui-footer--compact .funui-footer__top {
8997
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
8998
+ }
8999
+
9000
+ /* Stacked Layout */
9001
+ .funui-footer--stacked .funui-footer__top {
9002
+ grid-template-columns: 1fr;
9003
+ }
9004
+
9005
+ .funui-footer--stacked .funui-footer__section {
9006
+ text-align: center;
9007
+ }
9008
+
9009
+ .funui-footer--stacked .funui-footer__section-title {
9010
+ margin-bottom: 0.5rem;
9011
+ }
9012
+
9013
+ .funui-footer--stacked .funui-footer__links {
9014
+ align-items: center;
9015
+ }
9016
+
9017
+ /* Responsive Breakpoints */
9018
+
9019
+ /* Tablet (768px and up) */
9020
+ @media (min-width: 768px) {
9021
+ .funui-footer__container {
9022
+ padding-left: 1.5rem;
9023
+ padding-right: 1.5rem;
9024
+ }
9025
+
9026
+ .funui-footer__top {
9027
+ gap: 3rem;
9028
+ }
9029
+
9030
+ .funui-footer--default .funui-footer__top {
9031
+ grid-template-columns: minmax(300px, 1fr) repeat(auto-fit, minmax(180px, 1fr));
9032
+ }
9033
+
9034
+ .funui-footer__bottom {
9035
+ flex-direction: row;
9036
+ justify-content: space-between;
9037
+ align-items: center;
9038
+ }
9039
+
9040
+ .funui-footer--centered .funui-footer__bottom {
9041
+ flex-direction: column;
9042
+ gap: 1.5rem;
9043
+ }
9044
+ }
9045
+
9046
+ /* Desktop (1024px and up) */
9047
+ @media (min-width: 1024px) {
9048
+ .funui-footer__container {
9049
+ padding-left: 2rem;
9050
+ padding-right: 2rem;
9051
+ }
9052
+
9053
+ .funui-footer__top {
9054
+ padding-top: 3rem;
9055
+ padding-bottom: 3rem;
9056
+ }
9057
+
9058
+ .funui-footer--default .funui-footer__top {
9059
+ grid-template-columns: minmax(350px, 1fr) repeat(auto-fit, minmax(200px, 1fr));
9060
+ }
9061
+ }
9062
+
9063
+ /* Mobile (below 640px) */
9064
+ @media (max-width: 639px) {
9065
+ .funui-footer {
9066
+ padding-left: 1rem;
9067
+ padding-right: 1rem;
9068
+ }
9069
+
9070
+ .funui-footer__container {
9071
+ padding-left: 0;
9072
+ padding-right: 0;
9073
+ }
9074
+
9075
+ .funui-footer__top {
9076
+ grid-template-columns: 1fr !important;
9077
+ gap: 2rem;
9078
+ }
9079
+
9080
+ .funui-footer__section {
9081
+ text-align: center;
9082
+ }
9083
+
9084
+ .funui-footer__links {
9085
+ align-items: center;
9086
+ }
9087
+
9088
+ .funui-footer__contact-item {
9089
+ justify-content: center;
9090
+ }
9091
+
9092
+ .funui-footer__socials {
9093
+ justify-content: center;
9094
+ }
9095
+
9096
+ .funui-footer__legal {
9097
+ justify-content: center;
9098
+ }
9099
+
9100
+ .funui-footer__bottom {
9101
+ text-align: center;
9102
+ gap: 1rem;
9103
+ }
9104
+ }
9105
+
9106
+ /* Small Mobile (below 480px) */
9107
+ @media (max-width: 479px) {
9108
+ .funui-footer__socials {
9109
+ gap: 0.5rem;
9110
+ }
9111
+
9112
+ .funui-footer__social-link {
9113
+ width: 2rem;
9114
+ height: 2rem;
9115
+ }
9116
+
9117
+ .funui-footer__legal {
9118
+ gap: 1rem;
9119
+ justify-content: center;
9120
+ }
9121
+
9122
+ .funui-footer__description {
9123
+ text-align: center;
9124
+ }
9125
+ }
9126
+
9127
+ /* Accessibility Improvements */
9128
+ .funui-footer__link:focus-visible,
9129
+ .funui-footer__social-link:focus-visible,
9130
+ .funui-footer__legal-link:focus-visible,
9131
+ .funui-footer__contact-link:focus-visible {
9132
+ outline: 2px solid currentColor;
9133
+ outline-offset: 2px;
9134
+ border-radius: 2px;
9135
+ }
9136
+
9137
+ @media print {
9138
+ .funui-footer {
9139
+ border-top: 1px solid var(--borderColor);
9140
+ background-color: transparent !important;
9141
+ color: #000 !important;
9142
+ }
9143
+
9144
+ .funui-footer__social-link,
9145
+ .funui-footer__link:hover,
9146
+ .funui-footer__legal-link:hover {
9147
+ color: #000 !important;
9148
+ text-decoration: none;
9149
+ }
9150
+
9151
+ .funui-footer__social-link {
9152
+ background-color: transparent !important;
9153
+ border: 1px solid var(--borderColor);
9154
+ }
9155
+ }
9156
+
9157
+
9158
+
9159
+
9160
+
8731
9161
  /* colors */
8732
9162
  .gradient,
8733
9163
  .hover-gradient:hover {
package/index.d.ts CHANGED
@@ -56,6 +56,7 @@ 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
58
  export { default as FileUpload } from "./ui/input/FileUpload";
59
+ export { default as Footer } from "./ui/footer/Footer";
59
60
  export { default as Cookie } from "./js/Cookie";
60
61
  export { useVariable, useAsset, useAssetType, useAssetValue, useAssets, useVariables, } from "./ui/theme/theme";
61
62
  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.FileUpload = 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.Footer = 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");
@@ -121,6 +121,8 @@ var Select_1 = require("./ui/select/Select");
121
121
  Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(Select_1).default; } });
122
122
  var FileUpload_1 = require("./ui/input/FileUpload");
123
123
  Object.defineProperty(exports, "FileUpload", { enumerable: true, get: function () { return __importDefault(FileUpload_1).default; } });
124
+ var Footer_1 = require("./ui/footer/Footer");
125
+ Object.defineProperty(exports, "Footer", { enumerable: true, get: function () { return __importDefault(Footer_1).default; } });
124
126
  // js
125
127
  var Cookie_1 = require("./js/Cookie");
126
128
  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.14",
2
+ "version": "3.7.15",
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",
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+ type LinkItem = {
3
+ label: string;
4
+ url: string;
5
+ external?: boolean;
6
+ icon?: string;
7
+ };
8
+ type LinkSection = {
9
+ title: string;
10
+ links: LinkItem[];
11
+ };
12
+ type SocialMedia = {
13
+ facebook?: React.ReactNode | string;
14
+ instagram?: React.ReactNode | string;
15
+ twitter?: React.ReactNode | string;
16
+ x?: React.ReactNode | string;
17
+ youtube?: React.ReactNode | string;
18
+ linkedin?: React.ReactNode | string;
19
+ github?: React.ReactNode | string;
20
+ [key: string]: React.ReactNode | string | undefined;
21
+ };
22
+ type FooterProps = {
23
+ logo?: React.ReactNode;
24
+ logoUrl?: string;
25
+ logoSize?: string;
26
+ logoClass?: string;
27
+ logoLinkUrl?: string;
28
+ companyName?: string;
29
+ description?: React.ReactNode | string;
30
+ descriptionClass?: string;
31
+ year?: number | string;
32
+ showYear?: boolean;
33
+ showRightsReserved?: boolean;
34
+ copyrightText?: string;
35
+ sections?: LinkSection[] | string;
36
+ privacyUrl?: string;
37
+ termsUrl?: string;
38
+ cookiesUrl?: string;
39
+ privacyText?: string;
40
+ termsText?: string;
41
+ cookiesText?: string;
42
+ facebookUrl?: string;
43
+ instagramUrl?: string;
44
+ twitterUrl?: string;
45
+ xUrl?: string;
46
+ youtubeUrl?: string;
47
+ linkedinUrl?: string;
48
+ githubUrl?: string;
49
+ facebookIcon?: React.ReactNode | string;
50
+ instagramIcon?: React.ReactNode | string;
51
+ twitterIcon?: React.ReactNode | string;
52
+ xIcon?: React.ReactNode | string;
53
+ youtubeIcon?: React.ReactNode | string;
54
+ linkedinIcon?: React.ReactNode | string;
55
+ githubIcon?: React.ReactNode | string;
56
+ socialMedia?: SocialMedia;
57
+ socialIconSize?: number;
58
+ email?: string;
59
+ phone?: string;
60
+ address?: string;
61
+ showContactInfo?: boolean;
62
+ emailIcon?: React.ReactNode | string;
63
+ phoneIcon?: React.ReactNode | string;
64
+ addressIcon?: React.ReactNode | string;
65
+ bg?: string;
66
+ textColor?: string;
67
+ borderColor?: string;
68
+ linkHoverColor?: string;
69
+ layout?: 'default' | 'centered' | 'compact' | 'stacked';
70
+ showDivider?: boolean;
71
+ padding?: string;
72
+ gap?: string;
73
+ maxWidth?: string;
74
+ mobileBreakpoint?: string;
75
+ tabletBreakpoint?: string;
76
+ funcss?: string;
77
+ containerClass?: string;
78
+ topSectionClass?: string;
79
+ bottomSectionClass?: string;
80
+ sectionTitleClass?: string;
81
+ linkClass?: string;
82
+ socialContainerClass?: string;
83
+ legalLinksClass?: string;
84
+ children?: React.ReactNode;
85
+ variant?: string;
86
+ };
87
+ declare const Footer: React.FC<FooterProps>;
88
+ export default Footer;