@julseb-lib/react 0.1.10 → 0.1.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/dist/index.css +61 -117
- package/dist/julseb-lib-react.cjs.js +12 -12
- package/dist/julseb-lib-react.es.js +1868 -1794
- package/dist/julseb-lib-react.umd.js +12 -12
- package/dist/lib/Variables.ts +20 -19
- package/dist/lib/components/Accordion/Accordion.tsx +1 -1
- package/dist/lib/components/Accordion/AccordionContent.tsx +2 -2
- package/dist/lib/components/Accordion/AccordionTitle.tsx +4 -3
- package/dist/lib/components/Alert/Alert.tsx +2 -2
- package/dist/lib/components/Autocomplete/Autocomplete.tsx +1 -1
- package/dist/lib/components/Avatar/Avatar.tsx +3 -7
- package/dist/lib/components/BackToTop/BackToTop.tsx +4 -3
- package/dist/lib/components/Badge/Badge.tsx +1 -1
- package/dist/lib/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
- package/dist/lib/components/Burger/Burger.tsx +11 -4
- package/dist/lib/components/Button/Button.tsx +5 -4
- package/dist/lib/components/ButtonGroup/ButtonGroup.tsx +4 -2
- package/dist/lib/components/ButtonIcon/ButtonFn.tsx +3 -1
- package/dist/lib/components/ButtonIcon/ButtonIcon.tsx +9 -2
- package/dist/lib/components/CodeContainer/CodeContainer.tsx +5 -5
- package/dist/lib/components/Cover/Cover.tsx +1 -1
- package/dist/lib/components/DragList/DragList.tsx +1 -1
- package/dist/lib/components/DragList/DragListItem.tsx +4 -3
- package/dist/lib/components/Drawer/Drawer.tsx +1 -1
- package/dist/lib/components/Dropdown/Dropdown.tsx +1 -1
- package/dist/lib/components/Fade/Fade.tsx +4 -4
- package/dist/lib/components/Fieldset/Fieldset.tsx +2 -2
- package/dist/lib/components/Footer/Footer.tsx +103 -0
- package/dist/lib/components/Footer/index.ts +1 -0
- package/dist/lib/components/Footer/types.ts +54 -0
- package/dist/lib/components/Form/Form.tsx +1 -1
- package/dist/lib/components/Header/Header.tsx +15 -6
- package/dist/lib/components/Header/types.ts +1 -1
- package/dist/lib/components/Image/Image.tsx +1 -1
- package/dist/lib/components/Input/Input.tsx +2 -2
- package/dist/lib/components/Input/templates/ColorInput.tsx +4 -0
- package/dist/lib/components/InputCheck/InputCheck.tsx +2 -2
- package/dist/lib/components/InputComponents/InputButton.tsx +7 -2
- package/dist/lib/components/InputComponents/classes.ts +1 -1
- package/dist/lib/components/InputContainer/InputContainer.tsx +1 -1
- package/dist/lib/components/InputCounter/InputCounter.tsx +2 -2
- package/dist/lib/components/InputImage/InputImage.tsx +1 -1
- package/dist/lib/components/InputPhone/InputPhone.tsx +1 -1
- package/dist/lib/components/InputPin/InputPin.tsx +3 -1
- package/dist/lib/components/InputSlider/InputSlider.tsx +1 -1
- package/dist/lib/components/Key/Key.tsx +2 -2
- package/dist/lib/components/ListGroup/ListGroup.tsx +1 -1
- package/dist/lib/components/ListGroup/ListGroupItem.tsx +1 -1
- package/dist/lib/components/ListGroup/ListGroupTitle.tsx +1 -1
- package/dist/lib/components/Loader/Loader.tsx +1 -1
- package/dist/lib/components/Loader/templates/LoaderOne.tsx +1 -1
- package/dist/lib/components/Loader/templates/LoaderThree.tsx +3 -3
- package/dist/lib/components/Loader/templates/LoaderTwo.tsx +2 -2
- package/dist/lib/components/MarkdownContainer/MarkdownContainer.tsx +2 -2
- package/dist/lib/components/Meta/Meta.tsx +125 -0
- package/dist/lib/components/Meta/index.ts +1 -0
- package/dist/lib/components/Meta/types.ts +35 -0
- package/dist/lib/components/Modal/Modal.tsx +1 -1
- package/dist/lib/components/PageLayout/PageLayout.tsx +64 -0
- package/dist/lib/components/PageLayout/index.ts +1 -0
- package/dist/lib/components/PageLayout/types.ts +29 -0
- package/dist/lib/components/PageLoading/PageLoading.tsx +1 -1
- package/dist/lib/components/Pagination/Pagination.tsx +1 -1
- package/dist/lib/components/Pagination/PaginationButton.tsx +1 -1
- package/dist/lib/components/Paginator/Paginator.tsx +1 -1
- package/dist/lib/components/ProgressBar/ProgressBar.tsx +4 -7
- package/dist/lib/components/ProgressBar/types.ts +1 -1
- package/dist/lib/components/ProgressCircle/ProgressCircle.tsx +7 -3
- package/dist/lib/components/ProgressCircle/types.ts +1 -2
- package/dist/lib/components/Rating/Rating.tsx +1 -1
- package/dist/lib/components/Select/Select.tsx +1 -1
- package/dist/lib/components/Skeleton/Skeleton.tsx +5 -2
- package/dist/lib/components/Skeleton/SkeletonCard.tsx +4 -1
- package/dist/lib/components/Slideshow/Slideshow.tsx +1 -1
- package/dist/lib/components/Slideshow/SlideshowPagination.tsx +1 -1
- package/dist/lib/components/SrOnly/SrOnly.tsx +33 -0
- package/dist/lib/components/SrOnly/index.ts +1 -0
- package/dist/lib/components/SrOnly/types.ts +7 -0
- package/dist/lib/components/Sticky/Sticky.tsx +8 -8
- package/dist/lib/components/Table/Table.tsx +8 -5
- package/dist/lib/components/Tabs/Tabs.tsx +1 -1
- package/dist/lib/components/Tabs/TabsButton.tsx +4 -2
- package/dist/lib/components/Tabs/TabsButtonsContainer.tsx +1 -1
- package/dist/lib/components/Tabs/TabsContainer.tsx +1 -1
- package/dist/lib/components/Tabs/TabsContent.tsx +1 -1
- package/dist/lib/components/Tag/Tag.tsx +1 -1
- package/dist/lib/components/Text/templates/Blockquote.tsx +1 -1
- package/dist/lib/components/Text/templates/Dl.tsx +1 -1
- package/dist/lib/components/Text/templates/H1.tsx +2 -2
- package/dist/lib/components/Text/templates/H2.tsx +2 -2
- package/dist/lib/components/Text/templates/H3.tsx +2 -2
- package/dist/lib/components/Text/templates/H4.tsx +2 -2
- package/dist/lib/components/Text/templates/H5.tsx +2 -2
- package/dist/lib/components/Text/templates/H6.tsx +1 -1
- package/dist/lib/components/Text/templates/Ol.tsx +1 -1
- package/dist/lib/components/Text/templates/P.tsx +1 -1
- package/dist/lib/components/Text/templates/Small.tsx +1 -1
- package/dist/lib/components/Text/templates/Ul.tsx +1 -1
- package/dist/lib/components/Toast/Toast.tsx +5 -4
- package/dist/lib/components/Tooltip/Tooltip.tsx +29 -22
- package/dist/lib/components/Wrapper/Wrapper.tsx +1 -1
- package/dist/lib/index.css +61 -117
- package/dist/lib/index.ts +4 -1
- package/dist/lib/types/components-items-props.ts +1 -24
- package/dist/lib/types/components-props.ts +4 -1
- package/dist/lib/types/global.ts +11 -13
- package/dist/lib/utils/design-tokens.ts +2 -7
- package/dist/lib/utils/gen-gap.ts +21 -21
- package/dist/lib/utils/gen-ring-color.ts +21 -0
- package/dist/lib/utils/index.ts +1 -0
- package/package.json +3 -3
- package/dist/lib/components/IconMenu/IconMenu.module.css +0 -239
- package/dist/lib/components/IconMenu/IconMenu.tsx +0 -101
- package/dist/lib/components/IconMenu/IconMenuItem.tsx +0 -53
- package/dist/lib/components/IconMenu/index.ts +0 -1
- package/dist/lib/components/IconMenu/types.ts +0 -48
- package/dist/react.css +0 -1
package/dist/lib/Variables.ts
CHANGED
|
@@ -81,24 +81,24 @@ export enum OVERLAYS {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
export enum FONT_FAMILIES {
|
|
84
|
-
/** Primary font family for body text */
|
|
85
|
-
/** Font family for code and monospaced text */
|
|
84
|
+
/** Primary font family for body text */ SANS = "var(--font-sans)",
|
|
85
|
+
/** Font family for code and monospaced text */ MONO = "var(--font-mono)",
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
export enum FONT_SIZES {
|
|
89
|
-
/** 5rem */ DISPLAY_H1 = "var(--
|
|
90
|
-
/** 4rem */ DISPLAY_H2 = "var(--
|
|
91
|
-
/** 3.5rem */ DISPLAY_H3 = "var(--
|
|
92
|
-
/** 3rem */ DISPLAY_H4 = "var(--
|
|
93
|
-
/** 2.5rem */ DISPLAY_H5 = "var(--
|
|
94
|
-
/** 2.5rem */ H1 = "var(--
|
|
95
|
-
/** 2rem */ H2 = "var(--
|
|
96
|
-
/** 1.8rem */ H3 = "var(--
|
|
97
|
-
/** 1.5rem */ H4 = "var(--
|
|
98
|
-
/** 1.3rem */ H5 = "var(--
|
|
99
|
-
/** 1.1rem */ H6 = "var(--
|
|
100
|
-
/** 1rem */ BODY = "var(--
|
|
101
|
-
/** 0.875rem */ SMALL = "var(--
|
|
89
|
+
/** 5rem */ DISPLAY_H1 = "var(--text-display-h1)",
|
|
90
|
+
/** 4rem */ DISPLAY_H2 = "var(--text-display-h2)",
|
|
91
|
+
/** 3.5rem */ DISPLAY_H3 = "var(--text-display-h3)",
|
|
92
|
+
/** 3rem */ DISPLAY_H4 = "var(--text-display-h4)",
|
|
93
|
+
/** 2.5rem */ DISPLAY_H5 = "var(--text-display-h5)",
|
|
94
|
+
/** 2.5rem */ H1 = "var(--text-h1)",
|
|
95
|
+
/** 2rem */ H2 = "var(--text-h2)",
|
|
96
|
+
/** 1.8rem */ H3 = "var(--text-h3)",
|
|
97
|
+
/** 1.5rem */ H4 = "var(--text-h4)",
|
|
98
|
+
/** 1.3rem */ H5 = "var(--text-h5)",
|
|
99
|
+
/** 1.1rem */ H6 = "var(--text-h6)",
|
|
100
|
+
/** 1rem */ BODY = "var(--text-body)",
|
|
101
|
+
/** 0.875rem */ SMALL = "var(--text-small)",
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
export enum FONT_WEIGHTS {
|
|
@@ -138,6 +138,7 @@ export enum SHADOWS {
|
|
|
138
138
|
/** 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) */ LG = "var(--shadow-lg)",
|
|
139
139
|
/** 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04) */ XL = "var(--shadow-xl)",
|
|
140
140
|
/** 0 25px 50px -12px rgba(0, 0, 0, 0.25) */ "2XL" = "var(--shadow-2xl)",
|
|
141
|
+
/** inset 0 2px 4px 0 rgb(0 0 0 / 0.06) */ INNER = "var(--shadow-inner)",
|
|
141
142
|
/** none */ NONE = "var(--shadow-none)",
|
|
142
143
|
}
|
|
143
144
|
|
|
@@ -168,7 +169,7 @@ export enum RADIUS {
|
|
|
168
169
|
/** 1rem (16px) */ "2XL" = "var(--radius-2xl)",
|
|
169
170
|
/** 1.5rem (24px) */ "3XL" = "var(--radius-3xl)",
|
|
170
171
|
/** */ "4XL" = "var(--radius-4xl)",
|
|
171
|
-
/** 9999px */ FULL = "var(--
|
|
172
|
+
/** 9999px */ FULL = "var(--radius-full)",
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
export enum LAYOUTS {
|
|
@@ -181,9 +182,9 @@ export enum LAYOUTS {
|
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
export enum TRANSITIONS {
|
|
184
|
-
/** all
|
|
185
|
-
/** all
|
|
186
|
-
/** all
|
|
185
|
+
/** all 200ms ease */ SHORT = "var(--transition-short)",
|
|
186
|
+
/** all 500ms ease */ LONG = "var(--transition-long)",
|
|
187
|
+
/** all 500ms cubic-bezier(0.25, 0.75, 0, 0.66) */ BEZIER = "var(--transition-bezier)",
|
|
187
188
|
}
|
|
188
189
|
|
|
189
190
|
export enum MEDIA {
|
|
@@ -23,7 +23,7 @@ import type { ILibAccordion } from "./types"
|
|
|
23
23
|
*
|
|
24
24
|
* @prop {string} [props.className] - Additional CSS classes to apply to the accordion container.
|
|
25
25
|
* @prop {React.ReactNode} [props.children] - Child AccordionItem components to render when not using items prop.
|
|
26
|
-
* @prop {React.Ref<
|
|
26
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the accordion container element.
|
|
27
27
|
* @prop {"basic" | "rounded"} [props.variant="basic"] - Visual style variant of the accordion.
|
|
28
28
|
* @prop {"plus" | "chevron"} [props.icon="plus"] - Type of icon to display for expand/collapse indicators.
|
|
29
29
|
* @prop {Array} [props.items] - Array of accordion items with title, content, and defaultOpen properties.
|
|
@@ -41,9 +41,9 @@ export const AccordionContent: FC<ILibAccordionContent> = ({
|
|
|
41
41
|
ref={ref}
|
|
42
42
|
className={clsx(
|
|
43
43
|
"overflow-hidden transition-all duration-200 ease",
|
|
44
|
+
"py-0 max-h-0 opacity-0",
|
|
44
45
|
variant === "rounded" && "px-2",
|
|
45
|
-
isOpen && "open",
|
|
46
|
-
"py-0 max-h-0 opacity-0 [&.open]:py-2 [&.open]:max-h-auto",
|
|
46
|
+
isOpen && "open py-2 max-h-auto opacity-100",
|
|
47
47
|
"accordion-content",
|
|
48
48
|
className,
|
|
49
49
|
)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type FC } from "react"
|
|
2
2
|
import { BiPlus, BiChevronDown } from "react-icons/bi"
|
|
3
|
-
import { clsx, genTextColorHover } from "../../utils"
|
|
3
|
+
import { clsx, genRingColor, genTextColorHover } from "../../utils"
|
|
4
4
|
import type { ILibAccordionTitle } from "./subtypes"
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -43,10 +43,11 @@ export const AccordionTitle: FC<ILibAccordionTitle> = ({
|
|
|
43
43
|
<button
|
|
44
44
|
ref={ref}
|
|
45
45
|
className={clsx(
|
|
46
|
-
"flex justify-between items-center border-b w-full",
|
|
46
|
+
"flex justify-between items-center border-b outline-none w-full",
|
|
47
47
|
variant === "rounded"
|
|
48
48
|
? "bg-primary-500 text-white py-1 px-2 border-b-white"
|
|
49
|
-
: [genTextColorHover["primary"], "border-b-gray-200"],
|
|
49
|
+
: [genTextColorHover["primary"], "border-b-gray-200 "],
|
|
50
|
+
genRingColor["primary"],
|
|
50
51
|
"accordion-title",
|
|
51
52
|
className,
|
|
52
53
|
)}
|
|
@@ -21,7 +21,7 @@ import type { ILibAlert } from "./types"
|
|
|
21
21
|
*
|
|
22
22
|
* @prop {string} [props.className] - Additional CSS classes to apply to the alert container.
|
|
23
23
|
* @prop {React.ElementType} [props.element=typeof children === "string" ? Text : "div"] - HTML element type to render as the container.
|
|
24
|
-
* @prop {React.Ref<
|
|
24
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the alert element.
|
|
25
25
|
* @prop {React.ReactNode} [props.children] - Content to display inside the alert.
|
|
26
26
|
* @prop {LibAllColors} [props.color="primary"] - Color theme for the alert background and border.
|
|
27
27
|
*
|
|
@@ -43,7 +43,7 @@ export const Alert: FC<ILibAlert> = ({
|
|
|
43
43
|
<Element
|
|
44
44
|
ref={ref}
|
|
45
45
|
className={clsx(
|
|
46
|
-
"flex flex-col gap-2 px-4 py-2 border rounded-
|
|
46
|
+
"flex flex-col gap-2 px-4 py-2 border rounded-md w-full max-w-[400px]",
|
|
47
47
|
genBgColor50[color],
|
|
48
48
|
genBorderColorShort[color],
|
|
49
49
|
"alert",
|
|
@@ -39,7 +39,7 @@ import type { ILibAutocomplete } from "./types"
|
|
|
39
39
|
* @extends HTMLInputElement
|
|
40
40
|
*
|
|
41
41
|
* @prop {string} [props.className] - Additional CSS classes to apply to the autocomplete container.
|
|
42
|
-
* @prop {React.Ref<
|
|
42
|
+
* @prop {React.Ref<HTMLInputElement>} [props.ref] - Ref to the input element.
|
|
43
43
|
* @prop {string} [props.label] - Label text to display above the autocomplete.
|
|
44
44
|
* @prop {string} [props.labelComment] - Additional comment text next to the label.
|
|
45
45
|
* @prop {string} [props.helper] - Helper text to display below the label.
|
|
@@ -16,7 +16,7 @@ import type { ILibAvatar } from "./types"
|
|
|
16
16
|
*
|
|
17
17
|
* @prop {string} [props.className] - Additional CSS classes to apply to the avatar.
|
|
18
18
|
* @prop {keyof JSX.IntrinsicElements} [props.element="span"] - The HTML element to render as the avatar.
|
|
19
|
-
* @prop {React.Ref<
|
|
19
|
+
* @prop {React.Ref<HTMLSpanElement>} [props.ref] - Ref to the avatar element.
|
|
20
20
|
* @prop {React.ReactNode} [props.children] - Content to display inside the avatar (image, initials, or icon).
|
|
21
21
|
* @prop {string | { content?: React.ReactNode; backgroundColor?: string; contentColor?: string; className?: string }} [props.badge] - Badge to display on the avatar, can be a string or an object with content and colors.
|
|
22
22
|
* @prop {React.CSSProperties} [props.containerStyle] - Inline styles for the avatar container.
|
|
@@ -72,13 +72,9 @@ export const Avatar: FC<ILibAvatar> = ({
|
|
|
72
72
|
contentColor={
|
|
73
73
|
typeof badge === "object" ? badge.contentColor : "white"
|
|
74
74
|
}
|
|
75
|
-
color={
|
|
76
|
-
typeof badge === "object"
|
|
77
|
-
? badge.color
|
|
78
|
-
: "primary"
|
|
79
|
-
}
|
|
75
|
+
color={typeof badge === "object" ? badge.color : "primary"}
|
|
80
76
|
className={clsx(
|
|
81
|
-
"top-0 right-0 absolute -translate-y-
|
|
77
|
+
"top-0 right-0 absolute -translate-y-2 translate-x-2",
|
|
82
78
|
typeof badge === "object"
|
|
83
79
|
? badge.className
|
|
84
80
|
: (undefined as any),
|
|
@@ -2,7 +2,7 @@ import { useEffect, useState, type FC } from "react"
|
|
|
2
2
|
import { BiUpArrowAlt } from "react-icons/bi"
|
|
3
3
|
import { scrollToTop } from "@julseb-lib/utils"
|
|
4
4
|
import { ButtonIcon } from "../ButtonIcon"
|
|
5
|
-
import { clsx } from "../../utils"
|
|
5
|
+
import { clsx, genRingColor } from "../../utils"
|
|
6
6
|
import type { ILibBackToTop } from "./types"
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -71,7 +71,8 @@ export const BackToTop: FC<ILibBackToTop> = ({
|
|
|
71
71
|
<ButtonIcon
|
|
72
72
|
ref={ref}
|
|
73
73
|
className={clsx(
|
|
74
|
-
isVisible ? "opacity-100 visible" : "opacity-0 invisible",
|
|
74
|
+
isVisible ? "opacity-100 visible " : "opacity-0 invisible",
|
|
75
|
+
genRingColor[color],
|
|
75
76
|
"back-to-top",
|
|
76
77
|
className,
|
|
77
78
|
)}
|
|
@@ -82,7 +83,7 @@ export const BackToTop: FC<ILibBackToTop> = ({
|
|
|
82
83
|
showTooltip && {
|
|
83
84
|
position: "left",
|
|
84
85
|
className: [
|
|
85
|
-
"fixed bottom-
|
|
86
|
+
"fixed bottom-5 right-5 [&_.tooltip]:translate-y-[10px] [&_.tooltip]:translate-x-[-50%] transition-all duration-200 ease-in-out",
|
|
86
87
|
isVisible ? "opacity-100" : "opacity-0",
|
|
87
88
|
],
|
|
88
89
|
...(showTooltip as any),
|
|
@@ -19,7 +19,7 @@ import type { ILibBadge } from "./types"
|
|
|
19
19
|
*
|
|
20
20
|
* @prop {string} [props.className] - Additional CSS classes to apply to the badge.
|
|
21
21
|
* @prop {keyof JSX.IntrinsicElements} [props.element="span"] - The HTML element to render as the badge.
|
|
22
|
-
* @prop {React.Ref<
|
|
22
|
+
* @prop {React.Ref<HTMLSpanElement>} [props.ref] - Ref to the badge element.
|
|
23
23
|
* @prop {React.ReactNode} [props.children] - Content to display inside the badge.
|
|
24
24
|
* @prop {LibAllColors} [props.color="primary"] - Background color of the badge.
|
|
25
25
|
* @prop {LibAllColors} [props.contentColor="white"] - Text color of the badge.
|
|
@@ -20,7 +20,7 @@ import type { ILibBreadcrumbs } from "./types"
|
|
|
20
20
|
*
|
|
21
21
|
* @prop {string} [props.className] - Additional CSS classes to apply to the breadcrumbs container.
|
|
22
22
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
23
|
-
* @prop {React.Ref<
|
|
23
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the breadcrumbs container element.
|
|
24
24
|
* @prop {React.ReactNode} [props.children] - Navigation items to display in the breadcrumb trail.
|
|
25
25
|
* @prop {string | React.ReactNode} [props.separator="/"] - Separator to display between breadcrumb items.
|
|
26
26
|
* @prop {any} [props.rest] - Additional props spread to the container element.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FC } from "react"
|
|
2
|
-
import { clsx, genBgAllColors } from "../../utils"
|
|
2
|
+
import { clsx, genBgAllColors, genRingColor } from "../../utils"
|
|
3
3
|
import type { ILibBurger } from "./types"
|
|
4
4
|
import type { LibColorsHover } from "../../types"
|
|
5
5
|
|
|
@@ -12,17 +12,23 @@ const SPAN_COMMON =
|
|
|
12
12
|
* @component
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
|
-
* <Burger
|
|
15
|
+
* <Burger
|
|
16
|
+
* isOpen={isMenuOpen}
|
|
17
|
+
* color="primary"
|
|
18
|
+
* onClick={toggleMenu}
|
|
19
|
+
* />
|
|
16
20
|
*
|
|
17
21
|
* @extends HTMLButtonElement
|
|
18
22
|
*
|
|
19
23
|
* @prop {string} [props.className] - Additional CSS classes to apply to the burger.
|
|
20
24
|
* @prop {keyof JSX.IntrinsicElements} [props.element="button"] - The HTML element to render as the burger.
|
|
21
|
-
* @prop {React.Ref<
|
|
25
|
+
* @prop {React.Ref<HTMLButtonElement>} [props.ref] - Ref to the burger element.
|
|
22
26
|
* @prop {string} [props.role="button"] - ARIA role for accessibility.
|
|
23
27
|
* @prop {string} [props.aria-label="Burger"] - ARIA label for accessibility.
|
|
24
28
|
* @prop {boolean} [props.isOpen] - Whether the burger menu is open or closed.
|
|
25
|
-
* @prop {"primary" | "secondary" | "success" | "danger" | "warning" | "white"} [props.color="primary"] - Color of the burger lines.
|
|
29
|
+
* @prop {"primary" | "secondary" | "success" | "danger" | "warning" | "gray" | "white"} [props.color="primary"] - Color of the burger lines.
|
|
30
|
+
* @prop {string} [props.type="button"] - Button type attribute.
|
|
31
|
+
* @prop {boolean} [props.noHover] - Whether to disable hover effects.
|
|
26
32
|
* @prop {any} [props.rest] - Additional props spread to the burger element.
|
|
27
33
|
*
|
|
28
34
|
* @returns {JSX.Element} The rendered Burger component.
|
|
@@ -49,6 +55,7 @@ export const Burger: FC<ILibBurger> = ({
|
|
|
49
55
|
className={clsx(
|
|
50
56
|
"relative w-8 h-6",
|
|
51
57
|
!noHover && genHover[color],
|
|
58
|
+
!noHover && genRingColor[color],
|
|
52
59
|
"burger",
|
|
53
60
|
className,
|
|
54
61
|
)}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
genBgColorGhostHover,
|
|
9
9
|
genBorderRadius,
|
|
10
10
|
genButtonDisabled,
|
|
11
|
+
genRingColor,
|
|
11
12
|
} from "../../utils"
|
|
12
13
|
import { Loader } from "../Loader"
|
|
13
14
|
import type { ILibButton } from "./types"
|
|
@@ -24,7 +25,7 @@ import type { ILibButton } from "./types"
|
|
|
24
25
|
*
|
|
25
26
|
* @prop {string} [props.className] - Additional CSS classes to apply to the button.
|
|
26
27
|
* @prop {keyof JSX.IntrinsicElements} [props.element="button"] - The HTML element to render as the button.
|
|
27
|
-
* @prop {React.Ref<
|
|
28
|
+
* @prop {React.Ref<HTMLButtonElement>} [props.ref] - Ref to the button element.
|
|
28
29
|
* @prop {React.ReactNode} [props.children] - Content to display inside the button.
|
|
29
30
|
* @prop {"plain" | "ghost" | "outline" | "transparent"} [props.variant="plain"] - Button variant style.
|
|
30
31
|
* @prop {"primary" | "secondary" | "success" | "danger" | "warning" | "gray" | "white"} [props.color="primary"] - Button color theme.
|
|
@@ -59,7 +60,7 @@ export const Button: FC<ILibButton> = ({
|
|
|
59
60
|
<Element
|
|
60
61
|
ref={ref}
|
|
61
62
|
className={clsx(
|
|
62
|
-
"inline-flex items-center self-start gap-2 px-4 py-2 font-bold text-base",
|
|
63
|
+
"inline-flex items-center self-start gap-2 px-4 py-2 outline-none font-bold text-base",
|
|
63
64
|
genBorderRadius[borderRadius],
|
|
64
65
|
variant === "plain" && [
|
|
65
66
|
genBgColorHover[color],
|
|
@@ -78,6 +79,7 @@ export const Button: FC<ILibButton> = ({
|
|
|
78
79
|
],
|
|
79
80
|
variant === "transparent" && [genTextColorHover[color]],
|
|
80
81
|
size === "small" && "text-sm px-2 py-1",
|
|
82
|
+
genRingColor[color],
|
|
81
83
|
genButtonDisabled[variant],
|
|
82
84
|
"button",
|
|
83
85
|
className,
|
|
@@ -97,8 +99,7 @@ export const Button: FC<ILibButton> = ({
|
|
|
97
99
|
? "border-3 size-4"
|
|
98
100
|
: loaderVariant === 2
|
|
99
101
|
? "size-4 [&_span]:border-3"
|
|
100
|
-
: loaderVariant === 3 &&
|
|
101
|
-
"[&_span]:size-2 translate-y-[5px]",
|
|
102
|
+
: loaderVariant === 3 && "[&_span]:size-2",
|
|
102
103
|
"button-loader",
|
|
103
104
|
)}
|
|
104
105
|
/>
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
genButtonDisabled,
|
|
11
11
|
genTextColorShort,
|
|
12
12
|
genTextColorHover,
|
|
13
|
+
genRingColor,
|
|
13
14
|
} from "../../utils"
|
|
14
15
|
import type { ILibButtonGroup } from "./types"
|
|
15
16
|
|
|
@@ -32,7 +33,7 @@ import type { ILibButtonGroup } from "./types"
|
|
|
32
33
|
*
|
|
33
34
|
* @prop {string} [props.className] - Additional CSS classes to apply to the button group.
|
|
34
35
|
* @prop {React.ComponentType} [props.element=Flexbox] - The component to render as the container element.
|
|
35
|
-
* @prop {React.Ref<
|
|
36
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the button group element.
|
|
36
37
|
* @prop {React.ReactNode} [props.children] - Content to display inside the button group when not using buttons prop.
|
|
37
38
|
* @prop {"primary" | "secondary" | "success" | "danger" | "warning" | "gray" | "white"} [props.color="primary"] - Color theme for the button group.
|
|
38
39
|
* @prop {"plain" | "ghost" | "outline" | "transparent"} [props.variant="plain"] - Visual variant style of the button group.
|
|
@@ -81,9 +82,10 @@ export const ButtonGroup: FC<ILibButtonGroup> = ({
|
|
|
81
82
|
<Fragment key={button.id}>
|
|
82
83
|
<button
|
|
83
84
|
className={clsx(
|
|
84
|
-
"px-2 py-1 h-full",
|
|
85
|
+
"px-2 py-1 outline-none h-full",
|
|
85
86
|
size === "small" && "text-sm px-2 py-1",
|
|
86
87
|
genButtonDisabled[variant],
|
|
88
|
+
genRingColor[color],
|
|
87
89
|
variant === "plain" && [
|
|
88
90
|
color === "white"
|
|
89
91
|
? "text-primary-500"
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
genTextAllColor,
|
|
8
8
|
genTextColorHover,
|
|
9
9
|
genButtonDisabled,
|
|
10
|
+
genRingColor,
|
|
10
11
|
} from "../../utils"
|
|
11
12
|
import type { ILibButtonIcon } from "./types"
|
|
12
13
|
import { Loader } from "../Loader"
|
|
@@ -36,8 +37,9 @@ export const ButtonIconFn: FC<
|
|
|
36
37
|
<Element
|
|
37
38
|
ref={ref}
|
|
38
39
|
className={clsx(
|
|
39
|
-
"inline-flex justify-center items-center size-12",
|
|
40
|
+
"inline-flex justify-center items-center outline-none size-12",
|
|
40
41
|
genButtonDisabled[variant],
|
|
42
|
+
genRingColor[color],
|
|
41
43
|
variant === "plain" && [
|
|
42
44
|
genBgColorHover[color],
|
|
43
45
|
"text-white",
|
|
@@ -10,13 +10,19 @@ import type { ILibButtonIcon } from "./types"
|
|
|
10
10
|
* @component
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
|
-
* <ButtonIcon
|
|
13
|
+
* <ButtonIcon
|
|
14
|
+
* icon={<BiUser />}
|
|
15
|
+
* color="primary"
|
|
16
|
+
* variant="plain"
|
|
17
|
+
* tooltip="User profile"
|
|
18
|
+
* showTooltip
|
|
19
|
+
* />
|
|
14
20
|
*
|
|
15
21
|
* @extends HTMLButtonElement
|
|
16
22
|
*
|
|
17
23
|
* @prop {string} [props.className] - Additional CSS classes to apply to the button.
|
|
18
24
|
* @prop {keyof JSX.IntrinsicElements} [props.element="button"] - The HTML element to render as the button.
|
|
19
|
-
* @prop {React.Ref<
|
|
25
|
+
* @prop {React.Ref<HTMLButtonElement>} [props.ref] - Ref to the button element.
|
|
20
26
|
* @prop {React.ReactNode} [props.icon] - Icon element to display inside the button.
|
|
21
27
|
* @prop {"primary" | "secondary" | "success" | "danger" | "warning" | "gray" | "white"} [props.color="primary"] - Button color theme.
|
|
22
28
|
* @prop {string} [props.borderRadius="full"] - Border radius of the button.
|
|
@@ -29,6 +35,7 @@ import type { ILibButtonIcon } from "./types"
|
|
|
29
35
|
* @prop {React.CSSProperties} [props.containerStyle] - Inline styles for the container.
|
|
30
36
|
* @prop {string} [props.containerClasses] - Additional CSS classes for the container.
|
|
31
37
|
* @prop {string} [props.aria-label] - ARIA label for accessibility, defaults to tooltip value.
|
|
38
|
+
* @prop {string} [props.type="button"] - Button type attribute.
|
|
32
39
|
* @prop {any} [props.rest] - Additional props spread to the button element.
|
|
33
40
|
*
|
|
34
41
|
* @returns {JSX.Element} The rendered ButtonIcon component.
|
|
@@ -2,9 +2,8 @@ import { useState, type FC } from "react"
|
|
|
2
2
|
import SyntaxHighlighter from "react-syntax-highlighter"
|
|
3
3
|
import { atomOneDark } from "react-syntax-highlighter/dist/esm/styles/hljs"
|
|
4
4
|
import { BiCheck, BiClipboard } from "react-icons/bi"
|
|
5
|
-
import {} from "@julseb-lib/utils"
|
|
6
5
|
import { ButtonIcon } from "../ButtonIcon"
|
|
7
|
-
import { clsx, genTextAllColor } from "../../utils"
|
|
6
|
+
import { clsx, genRingColor, genTextAllColor } from "../../utils"
|
|
8
7
|
import type { ILibCodeContainer } from "./types"
|
|
9
8
|
|
|
10
9
|
/**
|
|
@@ -18,11 +17,11 @@ import type { ILibCodeContainer } from "./types"
|
|
|
18
17
|
* console.log(hello);
|
|
19
18
|
* </CodeContainer>
|
|
20
19
|
*
|
|
21
|
-
* @extends
|
|
20
|
+
* @extends HTMLDivElement
|
|
22
21
|
*
|
|
23
22
|
* @prop {string} [props.className] - Additional CSS classes to apply to the code container.
|
|
24
23
|
* @prop {React.ElementType} [props.element] - HTML element type to render as the container.
|
|
25
|
-
* @prop {React.Ref<
|
|
24
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the code container element.
|
|
26
25
|
* @prop {React.ReactNode} [props.children] - Code content to display and highlight.
|
|
27
26
|
* @prop {object} [props.highlighterProps] - Additional props to pass to the syntax highlighter.
|
|
28
27
|
* @prop {LibAllColors} [props.textColor] - Text color for the code content.
|
|
@@ -73,10 +72,11 @@ export const CodeContainer: FC<ILibCodeContainer> = ({
|
|
|
73
72
|
<Element
|
|
74
73
|
ref={ref}
|
|
75
74
|
className={clsx(
|
|
76
|
-
"relative",
|
|
75
|
+
"relative outline-none",
|
|
77
76
|
"code-container-wrapper",
|
|
78
77
|
"[&>pre]:bg-gray-800! [&>pre]:p-4!",
|
|
79
78
|
textColor && genTextAllColor[textColor],
|
|
79
|
+
genRingColor["primary"],
|
|
80
80
|
className,
|
|
81
81
|
)}
|
|
82
82
|
{...rest}
|
|
@@ -26,7 +26,7 @@ import type { ILibCover } from "./types"
|
|
|
26
26
|
*
|
|
27
27
|
* @prop {string} [props.className] - Additional CSS classes to apply to the cover container.
|
|
28
28
|
* @prop {React.ElementType} [props.element=Flexbox] - HTML element type to render as the container.
|
|
29
|
-
* @prop {React.Ref<
|
|
29
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the cover element.
|
|
30
30
|
* @prop {string} [props.img] - URL of the background image to display.
|
|
31
31
|
* @prop {string} [props.alt] - Alt text for the background image.
|
|
32
32
|
* @prop {LibBgOverlay} [props.overlay] - Overlay variant to apply over the background image.
|
|
@@ -21,7 +21,7 @@ import type { ILibDragList } from "./types"
|
|
|
21
21
|
*
|
|
22
22
|
* @prop {string} [props.className] - Additional CSS classes to apply to the drag list container.
|
|
23
23
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
24
|
-
* @prop {React.Ref<
|
|
24
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the drag list element.
|
|
25
25
|
* @prop {React.ReactNode} [props.children] - Child components to render when not using items prop.
|
|
26
26
|
* @prop {React.ReactNode} [props.iconDrag] - Icon to display as the drag handle for each item.
|
|
27
27
|
* @prop {"xs" | "sm" | "md" | "lg" | "xl" | "full"} [props.borderRadius] - Border radius size for the drag list container.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type FC, type DragEvent } from "react"
|
|
2
2
|
import { BiDotsVerticalRounded } from "react-icons/bi"
|
|
3
3
|
import { Text } from "../Text"
|
|
4
|
-
import { clsx } from "../../utils"
|
|
4
|
+
import { clsx, genRingColor } from "../../utils"
|
|
5
5
|
import type { ILibDragListItem } from "./types"
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -22,7 +22,7 @@ import type { ILibDragListItem } from "./types"
|
|
|
22
22
|
*
|
|
23
23
|
* @prop {string} [props.className] - Additional CSS classes to apply to the drag list item.
|
|
24
24
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
25
|
-
* @prop {React.Ref<
|
|
25
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the drag list item element.
|
|
26
26
|
* @prop {React.ReactNode} [props.children] - Child components to render when not using item prop.
|
|
27
27
|
* @prop {number} [props.index] - Index position of the item in the drag list.
|
|
28
28
|
* @prop {React.ReactNode} [props.iconDrag=<BiDotsVerticalRounded size={24} />] - Icon to display as the drag handle.
|
|
@@ -72,8 +72,9 @@ export const DragListItem: FC<ILibDragListItem> = ({
|
|
|
72
72
|
role="button"
|
|
73
73
|
aria-label={iconLabel}
|
|
74
74
|
className={clsx(
|
|
75
|
-
"cursor-grab! active:cursor-grabbing",
|
|
75
|
+
"outline-none cursor-grab! active:cursor-grabbing",
|
|
76
76
|
"drag-list-item-button",
|
|
77
|
+
genRingColor["gray"],
|
|
77
78
|
)}
|
|
78
79
|
>
|
|
79
80
|
{iconDrag}
|
|
@@ -35,7 +35,7 @@ import type { ILibDrawer } from "./types"
|
|
|
35
35
|
*
|
|
36
36
|
* @prop {string} [props.className] - Additional CSS classes to apply to the drawer container.
|
|
37
37
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
38
|
-
* @prop {React.Ref<
|
|
38
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the drawer element.
|
|
39
39
|
* @prop {React.ReactNode} [props.children] - Content to display inside the drawer.
|
|
40
40
|
* @prop {boolean} [props.isOpen] - Whether the drawer is currently open.
|
|
41
41
|
* @prop {function} [props.setIsOpen] - Function to control the drawer's open/closed state.
|
|
@@ -23,7 +23,7 @@ import type { ILibDropdown } from "./types"
|
|
|
23
23
|
* ]}
|
|
24
24
|
* />
|
|
25
25
|
*
|
|
26
|
-
* @extends
|
|
26
|
+
* @extends HTMLDivElement
|
|
27
27
|
*
|
|
28
28
|
* @prop {string} [props.className] - Additional CSS classes to apply to the dropdown container.
|
|
29
29
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
@@ -12,14 +12,14 @@ import type { ILibFade } from "./types"
|
|
|
12
12
|
* <Fade>
|
|
13
13
|
* <h1>This content will fade in when visible</h1>
|
|
14
14
|
* </Fade>
|
|
15
|
-
*
|
|
16
|
-
* @extends
|
|
15
|
+
*
|
|
16
|
+
* @extends HTMLDivElement
|
|
17
17
|
*
|
|
18
18
|
* @prop {string} [props.className] - Additional CSS classes to apply to the fade container.
|
|
19
19
|
* @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
|
|
20
|
-
* @prop {React.Ref<
|
|
20
|
+
* @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the fade element.
|
|
21
21
|
* @prop {React.ReactNode} [props.children] - Content to animate with fade effect.
|
|
22
|
-
*
|
|
22
|
+
*
|
|
23
23
|
* @returns {JSX.Element} The rendered Fade component.
|
|
24
24
|
*
|
|
25
25
|
* @see https://doc-julseb-lib-react.vercel.app/components/fade
|
|
@@ -22,7 +22,7 @@ import type { ILibFieldset } from "./types"
|
|
|
22
22
|
* @extends HTMLFieldSetElement
|
|
23
23
|
*
|
|
24
24
|
* @prop {string} [props.className] - Additional CSS classes to apply to the fieldset container.
|
|
25
|
-
* @prop {React.Ref<
|
|
25
|
+
* @prop {React.Ref<HTMLFieldSetElement>} [props.ref] - Ref to the fieldset element.
|
|
26
26
|
* @prop {React.ReactNode} [props.children] - Form controls and content to display inside the fieldset.
|
|
27
27
|
* @prop {string} [props.label] - Label text to display above the fieldset.
|
|
28
28
|
* @prop {string} [props.labelComment] - Additional comment text next to the label.
|
|
@@ -74,7 +74,7 @@ export const Fieldset: FC<ILibFieldset> = ({
|
|
|
74
74
|
)}
|
|
75
75
|
{...rest}
|
|
76
76
|
>
|
|
77
|
-
<legend className="px-3 font-
|
|
77
|
+
<legend className="px-3 font-bold fieldset-legend">
|
|
78
78
|
{legend}
|
|
79
79
|
</legend>
|
|
80
80
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Children, Fragment, type FC } from "react"
|
|
2
|
+
import { uuid } from "@julseb-lib/utils"
|
|
3
|
+
import { clsx, genTextAllColor } from "../../utils"
|
|
4
|
+
import type { ILibFooter } from "./types"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Footer component for displaying a page footer with logo, links, and customizable layout options.
|
|
8
|
+
*
|
|
9
|
+
* @component
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <Footer
|
|
13
|
+
* logo={<img src="/logo.png" alt="Logo" />}
|
|
14
|
+
* direction="horizontal"
|
|
15
|
+
* linksSeparator="dot"
|
|
16
|
+
* items={[
|
|
17
|
+
* <a href="/privacy">Privacy</a>,
|
|
18
|
+
* <a href="/terms">Terms</a>,
|
|
19
|
+
* <a href="/contact">Contact</a>
|
|
20
|
+
* ]}
|
|
21
|
+
* />
|
|
22
|
+
*
|
|
23
|
+
* @extends ILibFooter
|
|
24
|
+
*
|
|
25
|
+
* @prop {string} [props.className] - Additional CSS classes to apply to the footer container.
|
|
26
|
+
* @prop {React.ElementType} [props.element="footer"] - HTML element type to render as the container.
|
|
27
|
+
* @prop {React.Ref<any>} [props.ref] - Ref to the footer element.
|
|
28
|
+
* @prop {React.ReactNode} [props.children] - Child elements to display in the footer links section.
|
|
29
|
+
* @prop {boolean} [props.hideSeparator] - Whether to hide the top border separator line.
|
|
30
|
+
* @prop {boolean} [props.hideLinksSeparator] - Whether to hide separators between footer links.
|
|
31
|
+
* @prop {"dot" | "dash"} [props.linksSeparator="dot"] - Type of separator to display between links.
|
|
32
|
+
* @prop {Array<React.ReactNode>} [props.items] - Array of footer link items to display.
|
|
33
|
+
* @prop {React.ReactNode} [props.logo] - Logo element to display in the footer.
|
|
34
|
+
* @prop {"horizontal" | "vertical"} [props.direction="horizontal"] - Layout direction for footer content.
|
|
35
|
+
* @prop {LibAllColors} [props.linksSeparatorColor="gray-500"] - Color for the separator between links.
|
|
36
|
+
*
|
|
37
|
+
* @returns {JSX.Element} The rendered Footer component.
|
|
38
|
+
*
|
|
39
|
+
* @see https://doc-julseb-lib-react.vercel.app/components/footer
|
|
40
|
+
*/
|
|
41
|
+
export const Footer: FC<ILibFooter> = ({
|
|
42
|
+
className,
|
|
43
|
+
element = "footer",
|
|
44
|
+
ref,
|
|
45
|
+
children,
|
|
46
|
+
hideSeparator,
|
|
47
|
+
hideLinksSeparator,
|
|
48
|
+
linksSeparator = "dot",
|
|
49
|
+
items,
|
|
50
|
+
logo,
|
|
51
|
+
direction = "horizontal",
|
|
52
|
+
linksSeparatorColor = "gray-500",
|
|
53
|
+
...rest
|
|
54
|
+
}) => {
|
|
55
|
+
const Element = element
|
|
56
|
+
const childrenArray = Children.toArray(children)
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<Element
|
|
60
|
+
ref={ref}
|
|
61
|
+
className={clsx(
|
|
62
|
+
"relative flex px-[5%] pb-4",
|
|
63
|
+
direction === "horizontal"
|
|
64
|
+
? "flex-row justify-between"
|
|
65
|
+
: "flex-col items-center gap-2",
|
|
66
|
+
!hideSeparator &&
|
|
67
|
+
"before:w-[90%] before:h-[1px] before:absolute before:top-0 before:left-[5%] before:bg-gray-200 pt-4",
|
|
68
|
+
"footer",
|
|
69
|
+
className,
|
|
70
|
+
)}
|
|
71
|
+
{...rest}
|
|
72
|
+
>
|
|
73
|
+
{logo}
|
|
74
|
+
|
|
75
|
+
<div className="flex items-container gap-2">
|
|
76
|
+
{items?.map((item, i) => (
|
|
77
|
+
<Fragment key={uuid()}>
|
|
78
|
+
{item}
|
|
79
|
+
|
|
80
|
+
{i !== items.length - 1 && !hideLinksSeparator && (
|
|
81
|
+
<span
|
|
82
|
+
className={clsx(
|
|
83
|
+
genTextAllColor[linksSeparatorColor],
|
|
84
|
+
)}
|
|
85
|
+
>
|
|
86
|
+
{linksSeparator === "dot" ? "•" : "-"}
|
|
87
|
+
</span>
|
|
88
|
+
)}
|
|
89
|
+
</Fragment>
|
|
90
|
+
)) ??
|
|
91
|
+
childrenArray.map((child, i) => (
|
|
92
|
+
<Fragment key={uuid()}>
|
|
93
|
+
{child}
|
|
94
|
+
|
|
95
|
+
{i !== childrenArray.length - 1 &&
|
|
96
|
+
!hideLinksSeparator &&
|
|
97
|
+
(linksSeparator === "dot" ? "•" : "-")}
|
|
98
|
+
</Fragment>
|
|
99
|
+
))}
|
|
100
|
+
</div>
|
|
101
|
+
</Element>
|
|
102
|
+
)
|
|
103
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Footer"
|