funuicss 2.7.16 → 3.0.1

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.
Files changed (116) hide show
  1. package/css/fun.css +6663 -6653
  2. package/index.d.ts +2 -0
  3. package/index.js +5 -1
  4. package/js/google/AnalyticsHandler.d.ts +10 -0
  5. package/js/google/AnalyticsHandler.js +20 -0
  6. package/js/google/analytics.d.ts +6 -0
  7. package/js/google/analytics.js +53 -0
  8. package/package.json +1 -1
  9. package/tsconfig.tsbuildinfo +1 -1
  10. package/ui/button/Button.js +1 -1
  11. package/ui/flex/Flex.d.ts +3 -3
  12. package/ui/flex/Flex.js +2 -2
  13. package/ui/notification/Notification.d.ts +7 -3
  14. package/ui/notification/Notification.js +18 -14
  15. package/ui/scrolltotop/ScrollToTop.d.ts +3 -0
  16. package/ui/scrolltotop/ScrollToTop.js +61 -0
  17. package/ui/view/View.d.ts +27 -38
  18. package/ui/view/View.js +10 -38
  19. package/ui/vista/Vista.d.ts +6 -1
  20. package/ui/vista/Vista.js +33 -4
  21. package/assets/colors/colors.d.ts +0 -347
  22. package/assets/colors/colors.js +0 -348
  23. package/assets/colors/colors.tsx +0 -697
  24. package/hooks/useHls.tsx +0 -69
  25. package/index.tsx +0 -58
  26. package/js/Cookie.tsx +0 -91
  27. package/js/Fun.jsx +0 -225
  28. package/js/Fun.tsx +0 -239
  29. package/tsconfig.json +0 -20
  30. package/types/react-easy-export.d.ts +0 -4
  31. package/ui/ScrollInView/ScrollInView.tsx +0 -69
  32. package/ui/accordion/Accordion.tsx +0 -125
  33. package/ui/alert/Alert.tsx +0 -106
  34. package/ui/aos/AOS.tsx +0 -24
  35. package/ui/appbar/AppBar.tsx +0 -115
  36. package/ui/appbar/Hamburger.tsx +0 -30
  37. package/ui/avatar/Avatar.tsx +0 -52
  38. package/ui/blob/Blob.tsx +0 -34
  39. package/ui/breadcrumb/BreadCrumb.tsx +0 -48
  40. package/ui/button/Button.tsx +0 -153
  41. package/ui/calendar/ActivityCard.tsx +0 -27
  42. package/ui/calendar/Calendar.tsx +0 -343
  43. package/ui/card/Card.tsx +0 -117
  44. package/ui/card/CardBody.tsx +0 -14
  45. package/ui/card/CardFab.tsx +0 -16
  46. package/ui/card/CardFooter.tsx +0 -14
  47. package/ui/card/CardHeader.tsx +0 -14
  48. package/ui/carousel/Carousel.tsx +0 -148
  49. package/ui/chart/Bar.tsx +0 -121
  50. package/ui/chart/Line.tsx +0 -186
  51. package/ui/chart/Pie.tsx +0 -127
  52. package/ui/container/Container.tsx +0 -38
  53. package/ui/datepicker/DatePicker.tsx +0 -148
  54. package/ui/div/Div.tsx +0 -61
  55. package/ui/drop/Action.tsx +0 -16
  56. package/ui/drop/Down.tsx +0 -18
  57. package/ui/drop/Dropdown.tsx +0 -117
  58. package/ui/drop/Item.tsx +0 -15
  59. package/ui/drop/Menu.tsx +0 -40
  60. package/ui/drop/Up.tsx +0 -18
  61. package/ui/flex/Flex.tsx +0 -97
  62. package/ui/flex/FlexItem.tsx +0 -64
  63. package/ui/grid/Col.tsx +0 -43
  64. package/ui/grid/Grid.tsx +0 -37
  65. package/ui/input/Iconic.tsx +0 -43
  66. package/ui/input/Input.tsx +0 -409
  67. package/ui/list/Item.tsx +0 -18
  68. package/ui/list/List.tsx +0 -45
  69. package/ui/loader/Loader.tsx +0 -47
  70. package/ui/modal/Action.tsx +0 -14
  71. package/ui/modal/Close.tsx +0 -14
  72. package/ui/modal/Content.tsx +0 -15
  73. package/ui/modal/Header.tsx +0 -19
  74. package/ui/modal/Modal.tsx +0 -140
  75. package/ui/notification/Content.tsx +0 -14
  76. package/ui/notification/Footer.tsx +0 -14
  77. package/ui/notification/Header.tsx +0 -14
  78. package/ui/notification/Notification.tsx +0 -62
  79. package/ui/page/NotFound.tsx +0 -67
  80. package/ui/page/UnAuthorized.tsx +0 -64
  81. package/ui/progress/Bar.tsx +0 -114
  82. package/ui/richtext/RichText.tsx +0 -156
  83. package/ui/sidebar/SideBar.tsx +0 -202
  84. package/ui/sidebar/SideContent.tsx +0 -16
  85. package/ui/slider/Slider.tsx +0 -75
  86. package/ui/snackbar/SnackBar.tsx +0 -56
  87. package/ui/specials/Circle.tsx +0 -49
  88. package/ui/specials/CircleGroup.tsx +0 -49
  89. package/ui/specials/FullCenteredPage.tsx +0 -25
  90. package/ui/specials/Hr.tsx +0 -16
  91. package/ui/specials/RowFlex.tsx +0 -56
  92. package/ui/specials/Section.tsx +0 -18
  93. package/ui/step/Container.tsx +0 -27
  94. package/ui/step/Header.tsx +0 -16
  95. package/ui/step/Line.tsx +0 -17
  96. package/ui/step/Step.tsx +0 -17
  97. package/ui/table/Body.tsx +0 -10
  98. package/ui/table/Data.tsx +0 -15
  99. package/ui/table/Head.tsx +0 -10
  100. package/ui/table/Row.tsx +0 -16
  101. package/ui/table/Table.tsx +0 -372
  102. package/ui/text/Text.tsx +0 -179
  103. package/ui/theme/dark.tsx +0 -45
  104. package/ui/theme/darkenUtils.ts +0 -15
  105. package/ui/theme/theme.tsx +0 -48
  106. package/ui/theme/themes.ts +0 -154
  107. package/ui/tooltip/Tip.tsx +0 -34
  108. package/ui/tooltip/ToolTip.tsx +0 -20
  109. package/ui/video/Video.tsx +0 -348
  110. package/ui/video/videoFunctions.tsx +0 -19
  111. package/ui/video/videoShortcuts.ts +0 -13
  112. package/ui/view/View.tsx +0 -157
  113. package/ui/vista/Vista.tsx +0 -165
  114. package/utils/Emojis.tsx +0 -59
  115. package/utils/Functions.tsx +0 -9
  116. package/utils/getCssVariable.tsx +0 -9
@@ -1,4 +0,0 @@
1
- declare module 'react-easy-export' {
2
- export function exportToCSV(data: any, filename?: string): void;
3
- // add more exports here if needed, or use `any` as fallback
4
- }
@@ -1,69 +0,0 @@
1
- 'use client';
2
-
3
- import React, { ReactNode, useEffect } from 'react';
4
- import { motion, useAnimation } from 'framer-motion';
5
- import { useInView } from 'react-intersection-observer';
6
-
7
- const animationVariants = {
8
- 'fade-up': { hidden: { opacity: 0, y: 20 }, visible: { opacity: 1, y: 0 } },
9
- 'fade-down': { hidden: { opacity: 0, y: -20 }, visible: { opacity: 1, y: 0 } },
10
- 'fade-in': { hidden: { opacity: 0 }, visible: { opacity: 1 } },
11
- 'zoom-in': { hidden: { scale: 0.95, opacity: 0 }, visible: { scale: 1, opacity: 1 } },
12
- 'slide-left': { hidden: { x: 20, opacity: 0 }, visible: { x: 0, opacity: 1 } },
13
- 'slide-right': { hidden: { x: -20, opacity: 0 }, visible: { x: 0, opacity: 1 } },
14
- };
15
-
16
- interface ScrollInViewProps {
17
- children: ReactNode;
18
- animationType?: keyof typeof animationVariants;
19
- delay?: number;
20
- duration?: number;
21
- threshold?: number;
22
- once?: boolean;
23
- className?: string;
24
- }
25
-
26
- const ScrollInView: React.FC<ScrollInViewProps> = ({
27
- children,
28
- animationType = 'fade-up',
29
- delay = 0,
30
- duration = 0.6,
31
- threshold = 0.2,
32
- once = true,
33
- className = '',
34
- }) => {
35
- const controls = useAnimation();
36
- const [ref, inView] = useInView({
37
- threshold,
38
- triggerOnce: once,
39
- });
40
-
41
- useEffect(() => {
42
- if (inView) {
43
- controls.start('visible');
44
- } else if (!once) {
45
- controls.start('hidden');
46
- }
47
- }, [inView, once, controls]);
48
-
49
- const variants = animationVariants[animationType] || animationVariants['fade-up'];
50
-
51
- return (
52
- <motion.div
53
- ref={ref}
54
- variants={variants}
55
- initial="hidden"
56
- animate={controls}
57
- transition={{
58
- delay,
59
- duration,
60
- ease: 'linear', // SMOOTH and STRAIGHT
61
- }}
62
- className={className}
63
- >
64
- {children}
65
- </motion.div>
66
- );
67
- };
68
-
69
- export default ScrollInView;
@@ -1,125 +0,0 @@
1
- 'use client';
2
- import React, { useState } from 'react';
3
- import { PiCaretDown } from 'react-icons/pi';
4
- import RowFlex from '../specials/RowFlex';
5
-
6
- export type AccordionItemProps = {
7
- title: string;
8
- content: React.ReactNode;
9
- isOpen?: boolean;
10
- onToggle?: () => void;
11
- index?: number;
12
- icon?: React.ReactNode;
13
-
14
- // Customization
15
- itemClass?: string;
16
- titleClass?: string;
17
- iconClass?: string;
18
- contentClass?: string;
19
- activeClass?: string;
20
- };
21
-
22
- export const AccordionItem: React.FC<AccordionItemProps> = ({
23
- icon,
24
- title,
25
- content,
26
- isOpen,
27
- onToggle,
28
- itemClass = '',
29
- titleClass = '',
30
- iconClass = '',
31
- contentClass = '',
32
- activeClass = '',
33
- }) => {
34
- return (
35
- <div className={`accordion-item ${itemClass} ${isOpen ? activeClass : ''}`}>
36
- <div
37
- className={`accordion-header ${titleClass}`}
38
- onClick={onToggle}
39
- role="button"
40
- aria-expanded={isOpen}
41
- >
42
- <RowFlex alignItems="center" gap={0.6}>
43
- {icon && <div style={{ lineHeight: 0 }}>{icon}</div>}
44
- <div className="col fit">{title}</div>
45
- </RowFlex>
46
- <div
47
- style={{ lineHeight: 0 }}
48
- className={`${iconClass} ${isOpen ? 'accordion-rotated' : ''}`}
49
- >
50
- <PiCaretDown />
51
- </div>
52
- </div>
53
- <div className={`accordion-content ${contentClass} ${isOpen ? 'open' : ''}`}>
54
- <div className="accordion-inner">{content}</div>
55
- </div>
56
- </div>
57
- );
58
- };
59
-
60
- export type AccordionProps = {
61
- items: {
62
- title: string;
63
- content: React.ReactNode;
64
- icon?: React.ReactNode;
65
- }[];
66
- allowMultiple?: boolean;
67
- defaultOpenIndexes?: number[];
68
-
69
- // Custom styles
70
- itemClass?: string;
71
- titleClass?: string;
72
- iconClass?: string;
73
- contentClass?: string;
74
- activeClass?: string;
75
- };
76
-
77
- const Accordion: React.FC<AccordionProps> = ({
78
- items,
79
- allowMultiple = false,
80
- defaultOpenIndexes = [],
81
- itemClass,
82
- titleClass,
83
- iconClass,
84
- contentClass,
85
- activeClass,
86
- }) => {
87
- const [openIndexes, setOpenIndexes] = useState<number[]>(
88
- allowMultiple ? defaultOpenIndexes : [defaultOpenIndexes[0] ?? -1]
89
- );
90
-
91
- const toggleIndex = (index: number) => {
92
- if (allowMultiple) {
93
- if (openIndexes.includes(index)) {
94
- setOpenIndexes(openIndexes.filter((i) => i !== index));
95
- } else {
96
- setOpenIndexes([...openIndexes, index]);
97
- }
98
- } else {
99
- setOpenIndexes(openIndexes.includes(index) ? [] : [index]);
100
- }
101
- };
102
-
103
- return (
104
- <div className="accordion">
105
- {items.map((item, index) => (
106
- <AccordionItem
107
- key={index}
108
- index={index}
109
- icon={item.icon}
110
- title={item.title}
111
- content={item.content}
112
- isOpen={openIndexes.includes(index)}
113
- onToggle={() => toggleIndex(index)}
114
- itemClass={itemClass}
115
- titleClass={titleClass}
116
- iconClass={iconClass}
117
- contentClass={contentClass}
118
- activeClass={activeClass}
119
- />
120
- ))}
121
- </div>
122
- );
123
- };
124
-
125
- export default Accordion;
@@ -1,106 +0,0 @@
1
- 'use client';
2
- import { PiInfo , PiCheckCircleDuotone , PiWarning , PiX , PiSpinner } from "react-icons/pi";
3
- import React, { ReactNode, useEffect, useState } from 'react';
4
-
5
- interface AlertProps {
6
- message?: string;
7
- funcss?: string;
8
- type?: 'success' | 'info' | 'warning' | 'error';
9
- outlined?: boolean;
10
- fixed?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-middle' | 'bottom-middle' | 'middle';
11
- fullWidth?: boolean;
12
- isLoading?: boolean;
13
- children?: ReactNode;
14
- animation?: string;
15
- duration?: string;
16
- raised?: boolean;
17
- card?: boolean;
18
- variant?: string;
19
- flat?: boolean;
20
- standard?: boolean;
21
- style?: React.CSSProperties;
22
- autoHide?: boolean;
23
- autoHideDuration?: number;
24
- onClose?: () => void;
25
- }
26
-
27
- export default function Alert({
28
- message,
29
- funcss,
30
- type,
31
- outlined,
32
- fixed,
33
- raised,
34
- fullWidth,
35
- isLoading,
36
- children,
37
- animation,
38
- duration,
39
- variant,
40
- flat,
41
- standard,
42
- card,
43
- style,
44
- autoHide = false,
45
- autoHideDuration = 3000,
46
- onClose,
47
- ...rest
48
- }: AlertProps) {
49
- const [visible, setVisible] = useState(true);
50
-
51
- useEffect(() => {
52
- let timeout: NodeJS.Timeout;
53
- if (autoHide) {
54
- timeout = setTimeout(() => {
55
- setVisible(false);
56
- onClose?.();
57
- }, autoHideDuration);
58
- }
59
- return () => clearTimeout(timeout);
60
- }, [autoHide, autoHideDuration, onClose]);
61
-
62
- if (!visible) return null;
63
-
64
- return (
65
- <div
66
- className={`${
67
- fixed ? 'alert-container ' : ''
68
- } ${fixed === 'top-left' ? 'top-left' : ''}
69
- ${fixed === 'top-right' ? 'top-right' : ''}
70
- ${fixed === 'bottom-left' ? 'bottom-left' : ''}
71
- ${fixed === 'bottom-right' ? 'bottom-right' : ''}
72
- ${fixed === 'middle' ? 'middle-alert' : ''}
73
- ${fixed === 'top-middle' ? 'top-middle' : ''}
74
- ${fixed === 'bottom-middle' ? 'bottom-middle' : ''}`}
75
- >
76
- <div
77
- style={{
78
- animation: `${duration || '0.3'}s ${animation || 'ScaleUp'}`,
79
- ...style,
80
- }}
81
- className={`text-${type}800 alert ${card ? 'card' : ''} ${flat ? 'flat' : ''} ${raised ? 'raised' : ''} ${
82
- outlined
83
- ? `outline-${type}500`
84
- : `${variant || (standard ? `top-${type}` : `${type}200` + ` outline-${type}300 `)}`
85
- } ${funcss || ''} ${fullWidth ? 'width-100-p' : ''}`}
86
- {...rest}
87
- >
88
- <div className="alert-icon">
89
- {!isLoading ? (
90
- <div className={`text-${type}900`} style={{lineHeight:"0"}}>
91
- {type === 'success' && <PiCheckCircleDuotone />}
92
- {type === 'info' && <PiInfo />}
93
- {type === 'warning' && <PiWarning />}
94
- {type === 'error' && <PiX />}
95
- </div>
96
- ) : (
97
- <div className="rotate" style={{lineHeight:"0"}}>
98
- <PiSpinner />
99
- </div>
100
- )}
101
- </div>
102
- <div className="alert-text">{message || children}</div>
103
- </div>
104
- </div>
105
- );
106
- }
package/ui/aos/AOS.tsx DELETED
@@ -1,24 +0,0 @@
1
- import * as React from 'react';
2
- interface ListItemProps {
3
- children?: React.ReactNode;
4
- funcss?: string;
5
- animation?: string
6
- anchorPlacement? : string
7
- }
8
-
9
-
10
- export default function Animation({
11
- children,
12
- funcss,
13
- animation ,
14
- anchorPlacement,
15
- ...rest
16
- }: ListItemProps) {
17
-
18
- return (
19
- <div data-aos-anchor-placement={anchorPlacement || ""} className={`list ${funcss ? funcss : ''}`} {...rest} data-aos={animation ? animation : "fade-up"}>
20
- {children}
21
- </div>
22
- )
23
-
24
- }
@@ -1,115 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
- import { useState, useEffect } from 'react';
4
- import { usePathname } from 'next/navigation'; // <-- Updated import
5
- import Hamburger from './Hamburger';
6
-
7
- interface NavbarProps {
8
- fixedTop?: boolean;
9
- funcss?: string;
10
- padding?: string;
11
- fixedBottom?: boolean;
12
- justify?: string;
13
- children?: React.ReactNode;
14
- left?: React.ReactNode;
15
- center?: React.ReactNode;
16
- right?: React.ReactNode;
17
- sidebarTrigger?: React.ReactNode;
18
- transparent?: boolean;
19
- sideBar?: number;
20
- hasSidebar?: boolean;
21
- sidebarOpen?: boolean;
22
- openSidebar?: () => void;
23
- }
24
-
25
- export default function AppBar({
26
- fixedTop,
27
- funcss,
28
- padding,
29
- fixedBottom,
30
- justify,
31
- left,
32
- center,
33
- right,
34
- sideBar,
35
- sidebarTrigger,
36
- transparent,
37
- hasSidebar,
38
- openSidebar,
39
- sidebarOpen = false
40
- }: NavbarProps) {
41
- const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
42
- const [isMobileScreen, setIsMobileScreen] = useState(false);
43
- const pathname = usePathname(); // <-- New hook to detect path changes
44
-
45
- const toggleMenu = () => setIsMobileMenuOpen((prev) => !prev);
46
- const closeMenu = () => setIsMobileMenuOpen(false);
47
-
48
- useEffect(() => {
49
- const handleResize = () => {
50
- const isMobile = window.innerWidth < 992;
51
- setIsMobileScreen(isMobile);
52
- if (!isMobile) {
53
- closeMenu(); // close on larger screens
54
- }
55
- };
56
-
57
- handleResize(); // initial check
58
- window.addEventListener('resize', handleResize);
59
- return () => window.removeEventListener('resize', handleResize);
60
- }, []);
61
-
62
- // Automatically close menu on route (pathname) change
63
- useEffect(() => {
64
- closeMenu();
65
- }, [pathname]);
66
-
67
- const Trigger = ({ isOpen }: { isOpen: boolean }) => {
68
- return <Hamburger isOpen={isOpen} />;
69
- };
70
-
71
- return (
72
- <nav
73
- // the id will be used to get the height for the sidebar in the sidebar file
74
- id='appBar'
75
- className={`navigation-bar
76
- ${isMobileMenuOpen ? 'navbar-mobile-open' : ''}
77
- ${funcss || ''}
78
- ${fixedTop ? 'fixed_top_navbar' : ''}
79
- ${sideBar ? 'there_is_sidebar' : ''}
80
- ${transparent ? 'transparent' : ''}
81
- ${fixedBottom ? 'fixedBottom' : ''}
82
- `}
83
- style={{
84
- padding: `${padding || ''}`,
85
- justifyContent: `${justify || ''}`,
86
- }}
87
- >
88
- <div className="logoWrapper">
89
- {left}
90
- {isMobileScreen && isMobileMenuOpen && (
91
- <div className="hover-text-error pointer _closeNav" onClick={closeMenu}>
92
- <Trigger isOpen={isMobileMenuOpen} />
93
- </div>
94
- )}
95
- </div>
96
-
97
- <div className="linkWrapper">{center}</div>
98
- <div className="linkWrapper">{right}</div>
99
-
100
- {isMobileScreen && !isMobileMenuOpen && (
101
- <>
102
- {
103
- hasSidebar ?
104
- <span className="sidebar-trigger pointer hover-text-primary" onClick={openSidebar}>
105
- {sidebarTrigger || <Trigger isOpen={sidebarOpen} />}
106
- </span>
107
- : <span className="sidebar-trigger pointer hover-text-primary" onClick={toggleMenu}>
108
- {sidebarTrigger || <Trigger isOpen={isMobileMenuOpen} />}
109
- </span>
110
- }
111
- </>
112
- )}
113
- </nav>
114
- );
115
- }
@@ -1,30 +0,0 @@
1
- 'use client';
2
- import React, { useState } from 'react';
3
-
4
- interface HamburgerProps {
5
- isOpen?: boolean;
6
- toggle?: () => void;
7
- }
8
-
9
- const Hamburger: React.FC<HamburgerProps> = ({ isOpen: controlledOpen, toggle }) => {
10
- const [internalOpen, setInternalOpen] = useState(false);
11
- const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen;
12
-
13
- const handleClick = () => {
14
- if (toggle) {
15
- toggle();
16
- } else {
17
- setInternalOpen(!isOpen);
18
- }
19
- };
20
-
21
- return (
22
- <div className={`navhamburger ${isOpen ? 'navopen' : ''}`} onClick={handleClick}>
23
- <span className="navline navtop"></span>
24
- <span className="navline navmiddle"></span>
25
- <span className="navline navbottom"></span>
26
- </div>
27
- );
28
- };
29
-
30
- export default Hamburger;
@@ -1,52 +0,0 @@
1
- 'use client';
2
-
3
- import { ReactNode, MouseEventHandler } from 'react';
4
- import * as React from 'react';
5
-
6
- interface AvatarProps {
7
- funcss?: string;
8
- children?: ReactNode;
9
- size?: number;
10
- bg?: string;
11
- bordered?: boolean;
12
- color?: string;
13
- content?: ReactNode;
14
- onClick?: MouseEventHandler<HTMLDivElement>;
15
- }
16
-
17
- export default function Avatar({
18
- funcss,
19
- children,
20
- size = 2,
21
- bordered = true,
22
- bg,
23
- content,
24
- color,
25
- onClick,
26
- ...rest
27
- }: AvatarProps) {
28
- return (
29
- <div>
30
- <div
31
- className={`
32
- animated
33
- pointer
34
- fade-in
35
- avatar
36
- ${funcss || ''}
37
- ${bg || 'lighter'}
38
- ${bordered ? 'border' : ''}
39
- ${color ? `text-${color}` : ''}
40
- `}
41
- style={{
42
- width: `${size}rem`,
43
- height: `${size}rem`,
44
- }}
45
- onClick={onClick}
46
- {...rest}
47
- >
48
- {content || children}
49
- </div>
50
- </div>
51
- );
52
- }
package/ui/blob/Blob.tsx DELETED
@@ -1,34 +0,0 @@
1
- import * as React from 'react';
2
-
3
- interface BlobProps {
4
- height?: string;
5
- width?: string;
6
- background?: string;
7
- funcss?: string;
8
- shape?: string;
9
- }
10
-
11
- const Blob: React.FC<BlobProps> = ({
12
- height = '',
13
- width = '',
14
- background = '',
15
- funcss = '',
16
- shape = '',
17
- }) => {
18
- return (
19
- <div
20
- className={`${funcss}`}
21
- style={{
22
- height,
23
- width,
24
- background: background ? `url(${background})` : '',
25
- backgroundSize: 'cover',
26
- backgroundRepeat: 'no-repeat',
27
- borderRadius: shape,
28
- transition: '0.3s linear',
29
- }}
30
- ></div>
31
- );
32
- };
33
-
34
- export default Blob;
@@ -1,48 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
- import { PiCaretLeft, PiCaretRight } from 'react-icons/pi';
4
- interface BreadCrumbProps {
5
- type?: 'slash' | 'greater' | 'less' | 'straight';
6
- funcss?: string;
7
- color?: string;
8
- }
9
-
10
- export default function BreadCrumb({ type, funcss, color }: BreadCrumbProps) {
11
- return (
12
- <span >
13
- {type === 'slash' && (
14
- <span
15
- style={{lineHeight:"0"}}
16
- className={` ${funcss ? funcss : ''} ${color ? 'text-' + color : ''}`}
17
- >
18
- {' / '}
19
- </span>
20
- )}
21
- {type === 'greater' && (
22
- <span
23
- className={` ${funcss ? funcss : ''} ${color ? 'text-' + color : ''}`}
24
- >
25
- <span style={{lineHeight:"0"}} className={`${color ? `text-${color}` : ''}`}>
26
- <PiCaretRight />
27
- </span>
28
- </span>
29
- )}
30
- {type === 'less' && (
31
- <span
32
- className={` ${funcss ? funcss : ''} ${color ? 'text-' + color : ''}`}
33
- > <span style={{lineHeight:"0"}} className={`${color ? `text-${color}` : ''}`}>
34
- <PiCaretLeft />
35
- </span>
36
- </span>
37
- )}
38
- {type === 'straight' && (
39
- <span
40
- style={{lineHeight:"0"}}
41
- className={` ${funcss ? funcss : ''} ${color ? 'text-' + color : ''}`}
42
- >
43
- {' | '}
44
- </span>
45
- )}
46
- </span>
47
- );
48
- }