@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.
Files changed (117) hide show
  1. package/dist/index.css +61 -117
  2. package/dist/julseb-lib-react.cjs.js +12 -12
  3. package/dist/julseb-lib-react.es.js +1868 -1794
  4. package/dist/julseb-lib-react.umd.js +12 -12
  5. package/dist/lib/Variables.ts +20 -19
  6. package/dist/lib/components/Accordion/Accordion.tsx +1 -1
  7. package/dist/lib/components/Accordion/AccordionContent.tsx +2 -2
  8. package/dist/lib/components/Accordion/AccordionTitle.tsx +4 -3
  9. package/dist/lib/components/Alert/Alert.tsx +2 -2
  10. package/dist/lib/components/Autocomplete/Autocomplete.tsx +1 -1
  11. package/dist/lib/components/Avatar/Avatar.tsx +3 -7
  12. package/dist/lib/components/BackToTop/BackToTop.tsx +4 -3
  13. package/dist/lib/components/Badge/Badge.tsx +1 -1
  14. package/dist/lib/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  15. package/dist/lib/components/Burger/Burger.tsx +11 -4
  16. package/dist/lib/components/Button/Button.tsx +5 -4
  17. package/dist/lib/components/ButtonGroup/ButtonGroup.tsx +4 -2
  18. package/dist/lib/components/ButtonIcon/ButtonFn.tsx +3 -1
  19. package/dist/lib/components/ButtonIcon/ButtonIcon.tsx +9 -2
  20. package/dist/lib/components/CodeContainer/CodeContainer.tsx +5 -5
  21. package/dist/lib/components/Cover/Cover.tsx +1 -1
  22. package/dist/lib/components/DragList/DragList.tsx +1 -1
  23. package/dist/lib/components/DragList/DragListItem.tsx +4 -3
  24. package/dist/lib/components/Drawer/Drawer.tsx +1 -1
  25. package/dist/lib/components/Dropdown/Dropdown.tsx +1 -1
  26. package/dist/lib/components/Fade/Fade.tsx +4 -4
  27. package/dist/lib/components/Fieldset/Fieldset.tsx +2 -2
  28. package/dist/lib/components/Footer/Footer.tsx +103 -0
  29. package/dist/lib/components/Footer/index.ts +1 -0
  30. package/dist/lib/components/Footer/types.ts +54 -0
  31. package/dist/lib/components/Form/Form.tsx +1 -1
  32. package/dist/lib/components/Header/Header.tsx +15 -6
  33. package/dist/lib/components/Header/types.ts +1 -1
  34. package/dist/lib/components/Image/Image.tsx +1 -1
  35. package/dist/lib/components/Input/Input.tsx +2 -2
  36. package/dist/lib/components/Input/templates/ColorInput.tsx +4 -0
  37. package/dist/lib/components/InputCheck/InputCheck.tsx +2 -2
  38. package/dist/lib/components/InputComponents/InputButton.tsx +7 -2
  39. package/dist/lib/components/InputComponents/classes.ts +1 -1
  40. package/dist/lib/components/InputContainer/InputContainer.tsx +1 -1
  41. package/dist/lib/components/InputCounter/InputCounter.tsx +2 -2
  42. package/dist/lib/components/InputImage/InputImage.tsx +1 -1
  43. package/dist/lib/components/InputPhone/InputPhone.tsx +1 -1
  44. package/dist/lib/components/InputPin/InputPin.tsx +3 -1
  45. package/dist/lib/components/InputSlider/InputSlider.tsx +1 -1
  46. package/dist/lib/components/Key/Key.tsx +2 -2
  47. package/dist/lib/components/ListGroup/ListGroup.tsx +1 -1
  48. package/dist/lib/components/ListGroup/ListGroupItem.tsx +1 -1
  49. package/dist/lib/components/ListGroup/ListGroupTitle.tsx +1 -1
  50. package/dist/lib/components/Loader/Loader.tsx +1 -1
  51. package/dist/lib/components/Loader/templates/LoaderOne.tsx +1 -1
  52. package/dist/lib/components/Loader/templates/LoaderThree.tsx +3 -3
  53. package/dist/lib/components/Loader/templates/LoaderTwo.tsx +2 -2
  54. package/dist/lib/components/MarkdownContainer/MarkdownContainer.tsx +2 -2
  55. package/dist/lib/components/Meta/Meta.tsx +125 -0
  56. package/dist/lib/components/Meta/index.ts +1 -0
  57. package/dist/lib/components/Meta/types.ts +35 -0
  58. package/dist/lib/components/Modal/Modal.tsx +1 -1
  59. package/dist/lib/components/PageLayout/PageLayout.tsx +64 -0
  60. package/dist/lib/components/PageLayout/index.ts +1 -0
  61. package/dist/lib/components/PageLayout/types.ts +29 -0
  62. package/dist/lib/components/PageLoading/PageLoading.tsx +1 -1
  63. package/dist/lib/components/Pagination/Pagination.tsx +1 -1
  64. package/dist/lib/components/Pagination/PaginationButton.tsx +1 -1
  65. package/dist/lib/components/Paginator/Paginator.tsx +1 -1
  66. package/dist/lib/components/ProgressBar/ProgressBar.tsx +4 -7
  67. package/dist/lib/components/ProgressBar/types.ts +1 -1
  68. package/dist/lib/components/ProgressCircle/ProgressCircle.tsx +7 -3
  69. package/dist/lib/components/ProgressCircle/types.ts +1 -2
  70. package/dist/lib/components/Rating/Rating.tsx +1 -1
  71. package/dist/lib/components/Select/Select.tsx +1 -1
  72. package/dist/lib/components/Skeleton/Skeleton.tsx +5 -2
  73. package/dist/lib/components/Skeleton/SkeletonCard.tsx +4 -1
  74. package/dist/lib/components/Slideshow/Slideshow.tsx +1 -1
  75. package/dist/lib/components/Slideshow/SlideshowPagination.tsx +1 -1
  76. package/dist/lib/components/SrOnly/SrOnly.tsx +33 -0
  77. package/dist/lib/components/SrOnly/index.ts +1 -0
  78. package/dist/lib/components/SrOnly/types.ts +7 -0
  79. package/dist/lib/components/Sticky/Sticky.tsx +8 -8
  80. package/dist/lib/components/Table/Table.tsx +8 -5
  81. package/dist/lib/components/Tabs/Tabs.tsx +1 -1
  82. package/dist/lib/components/Tabs/TabsButton.tsx +4 -2
  83. package/dist/lib/components/Tabs/TabsButtonsContainer.tsx +1 -1
  84. package/dist/lib/components/Tabs/TabsContainer.tsx +1 -1
  85. package/dist/lib/components/Tabs/TabsContent.tsx +1 -1
  86. package/dist/lib/components/Tag/Tag.tsx +1 -1
  87. package/dist/lib/components/Text/templates/Blockquote.tsx +1 -1
  88. package/dist/lib/components/Text/templates/Dl.tsx +1 -1
  89. package/dist/lib/components/Text/templates/H1.tsx +2 -2
  90. package/dist/lib/components/Text/templates/H2.tsx +2 -2
  91. package/dist/lib/components/Text/templates/H3.tsx +2 -2
  92. package/dist/lib/components/Text/templates/H4.tsx +2 -2
  93. package/dist/lib/components/Text/templates/H5.tsx +2 -2
  94. package/dist/lib/components/Text/templates/H6.tsx +1 -1
  95. package/dist/lib/components/Text/templates/Ol.tsx +1 -1
  96. package/dist/lib/components/Text/templates/P.tsx +1 -1
  97. package/dist/lib/components/Text/templates/Small.tsx +1 -1
  98. package/dist/lib/components/Text/templates/Ul.tsx +1 -1
  99. package/dist/lib/components/Toast/Toast.tsx +5 -4
  100. package/dist/lib/components/Tooltip/Tooltip.tsx +29 -22
  101. package/dist/lib/components/Wrapper/Wrapper.tsx +1 -1
  102. package/dist/lib/index.css +61 -117
  103. package/dist/lib/index.ts +4 -1
  104. package/dist/lib/types/components-items-props.ts +1 -24
  105. package/dist/lib/types/components-props.ts +4 -1
  106. package/dist/lib/types/global.ts +11 -13
  107. package/dist/lib/utils/design-tokens.ts +2 -7
  108. package/dist/lib/utils/gen-gap.ts +21 -21
  109. package/dist/lib/utils/gen-ring-color.ts +21 -0
  110. package/dist/lib/utils/index.ts +1 -0
  111. package/package.json +3 -3
  112. package/dist/lib/components/IconMenu/IconMenu.module.css +0 -239
  113. package/dist/lib/components/IconMenu/IconMenu.tsx +0 -101
  114. package/dist/lib/components/IconMenu/IconMenuItem.tsx +0 -53
  115. package/dist/lib/components/IconMenu/index.ts +0 -1
  116. package/dist/lib/components/IconMenu/types.ts +0 -48
  117. package/dist/react.css +0 -1
@@ -2,7 +2,7 @@ import { type FC } from "react"
2
2
  import { BiX } from "react-icons/bi"
3
3
  import { Text } from "../Text"
4
4
  import { Loader } from "../Loader"
5
- import { clsx, genTextColorHover } from "../../utils"
5
+ import { clsx, genRingColor, genTextColorHover } from "../../utils"
6
6
  import { genToastColors } from "./utils"
7
7
  import type { ILibToast } from "./types"
8
8
 
@@ -19,11 +19,11 @@ import type { ILibToast } from "./types"
19
19
  * closeToast={handleClose}
20
20
  * />
21
21
  *
22
- * @extends ILibToast
22
+ * @extends HTMLDivElement
23
23
  *
24
24
  * @prop {string} [props.className] - Additional CSS classes to apply to the toast container.
25
25
  * @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
26
- * @prop {React.Ref<any>} [props.ref] - Ref to the toast element.
26
+ * @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the toast element.
27
27
  * @prop {React.ReactNode} [props.body] - Body content to display below the title.
28
28
  * @prop {React.ReactNode} [props.title] - Title content to display in the toast header.
29
29
  * @prop {"success" | "error" | "warning" | "info" | "loading"} [props.status="success"] - Status type that determines the toast appearance and behavior.
@@ -85,8 +85,9 @@ export const Toast: FC<ILibToast> = ({
85
85
  <button
86
86
  onClick={closeToast}
87
87
  className={clsx(
88
- "inline-flex justify-center items-center size-6",
88
+ "inline-flex justify-center items-center rounded-md outline-none size-6",
89
89
  genTextColorHover["gray"],
90
+ genRingColor["gray"],
90
91
  "toast-close-button",
91
92
  )}
92
93
  >
@@ -9,36 +9,43 @@ import type {
9
9
  } from "../../types"
10
10
 
11
11
  /**
12
- * Tooltip component for displaying contextual information on hover or click.
12
+ * Tooltip component for displaying contextual information on hover or click interactions.
13
13
  *
14
14
  * @component
15
- * @example
16
- * <Tooltip tooltip="Hello world!" position="top" trigger="hover" backgroundColor="black" textColor="white" />
17
15
  *
18
- * @link https://doc-julseb-lib-react.vercel.app/components/tooltip
16
+ * @example
17
+ * <Tooltip
18
+ * tooltip="This is a helpful tooltip"
19
+ * position="top"
20
+ * trigger="hover"
21
+ * backgroundColor="black-80"
22
+ * textColor="white"
23
+ * >
24
+ * <button>Hover me</button>
25
+ * </Tooltip>
19
26
  *
20
27
  * @extends HTMLDivElement
21
28
  *
22
- * @prop {object} props - Component props.
23
- * @prop {string} [props.className] - Additional class names to apply.
24
- * @prop {ElementType} [props.element="div"] - The HTML element or React component to render as the tooltip container.
25
- * @prop {React.RefObject<HTMLDivElement>} [props.ref] - Ref for the tooltip container.
26
- * @prop {React.ReactNode} props.children - The element that triggers the tooltip.
27
- * @prop {string} props.tooltip - The tooltip text to display.
28
- * @prop {"top" | "bottom" | "left" | "right"} [props.position="top"] - Tooltip position.
29
- * @prop {boolean} [props.hideArrow] - If true, hides the tooltip arrow.
30
- * @prop {"hover" | "click"} [props.trigger="hover"] - Tooltip trigger event.
31
- * @prop {string} [props.backgroundColor="black-80"] - Tooltip background color.
32
- * @prop {string} [props.textColor="white"] - Tooltip text color.
33
- * @prop {"2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "0px"} [props.offset="xs"] - Tooltip offset.
34
- * @prop {string} [props.tooltipClasses] - Additional class names for the tooltip.
35
- * @prop {CSSProperties} [props.tooltipStyle] - Additional style for the tooltip.
36
- * @prop {function} [props.onClick] - Click event handler.
37
- * @prop {function} [props.onMouseEnter] - Mouse enter event handler.
38
- * @prop {function} [props.onMouseLeave] - Mouse leave event handler.
39
- * @prop {object} [props.rest] - Additional props spread to the tooltip container.
29
+ * @prop {string} [props.className] - Additional CSS classes to apply to the tooltip container.
30
+ * @prop {React.ElementType} [props.element="div"] - HTML element type to render as the container.
31
+ * @prop {React.Ref<HTMLDivElement>} [props.ref] - Ref to the tooltip container element.
32
+ * @prop {React.ReactNode} [props.children] - The element that triggers the tooltip on interaction.
33
+ * @prop {string} [props.tooltip] - The tooltip text content to display.
34
+ * @prop {"top" | "bottom" | "left" | "right"} [props.position="top"] - Position of the tooltip relative to the trigger element.
35
+ * @prop {boolean} [props.hideArrow] - Whether to hide the tooltip arrow pointer.
36
+ * @prop {"hover" | "click"} [props.trigger="hover"] - Event that triggers the tooltip display.
37
+ * @prop {LibAllColorsAndOverlays} [props.backgroundColor="black-80"] - Background color for the tooltip.
38
+ * @prop {LibAllColors} [props.textColor="white"] - Text color for the tooltip content.
39
+ * @prop {LibSpacers} [props.offset="xs"] - Distance offset between tooltip and trigger element.
40
+ * @prop {string} [props.tooltipClasses] - Additional CSS classes for the tooltip element.
41
+ * @prop {React.CSSProperties} [props.tooltipStyle] - Additional inline styles for the tooltip element.
42
+ * @prop {function} [props.onClick] - Click event handler for the trigger element.
43
+ * @prop {function} [props.onMouseEnter] - Mouse enter event handler for the trigger element.
44
+ * @prop {function} [props.onMouseLeave] - Mouse leave event handler for the trigger element.
40
45
  *
41
46
  * @returns {JSX.Element} The rendered Tooltip component.
47
+ *
48
+ * @see https://doc-julseb-lib-react.vercel.app/components/tooltip
42
49
  */
43
50
  export const Tooltip: FC<ILibTooltip> = ({
44
51
  className,
@@ -43,7 +43,7 @@ export const Wrapper: FC<ILibWrapper> = ({
43
43
  <Element
44
44
  ref={ref}
45
45
  className={clsx(
46
- "z-10 relative flex sm:flex-row flex-col justify-stretch sm:justify-center-safe gap-6 px-4 md:px-6 lg:px-12 w-full",
46
+ "z-10 relative flex sm:flex-row flex-col justify-stretch sm:justify-center-safe gap-5 px-4 md:px-5 lg:px-12 w-full",
47
47
  (genBgAllColors as any)[backgroundColor],
48
48
  genMinHeight[minHeight],
49
49
  genGap[gap],
@@ -2,6 +2,12 @@
2
2
  @import "tailwindcss";
3
3
  /* @custom-variant dark (&:where(.dark, .dark *)); */
4
4
 
5
+ :root {
6
+ --font-lato: "Lato", sans-serif;
7
+ --font-sans: var(--font-lato);
8
+ --font-mono: monospace;
9
+ }
10
+
5
11
  @theme {
6
12
  --color-primary-50: var(--color-blue-50);
7
13
  --color-primary-100: var(--color-blue-100);
@@ -73,12 +79,6 @@
73
79
  --color-background: var(--color-white);
74
80
  --color-font: var(--color-black);
75
81
 
76
- --font-lato:
77
- "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
78
- sans-serif;
79
- --font-family-body: var(--font-lato);
80
- --font-family-code: monospace;
81
-
82
82
  --font-weight-thin: 100;
83
83
  --font-weight-light: 300;
84
84
  --font-weight-normal: 400;
@@ -100,7 +100,16 @@
100
100
  rgba(255, 255, 255, 0.35) 100%
101
101
  );
102
102
 
103
- --rounded-full: calc(infinity * 1px);
103
+ --font-sans: var(--font-lato);
104
+ --font-mono: monospace;
105
+
106
+ --spacer-2xs: 4px;
107
+ --spacer-xs: 8px;
108
+ --spacer-sm: 12px;
109
+ --spacer-md: 16px;
110
+ --spacer-lg: 24px;
111
+ --spacer-xl: 32px;
112
+ --spacer-2xl: 48px;
104
113
 
105
114
  --main-default: 600px;
106
115
  --main-large: 800px;
@@ -109,64 +118,54 @@
109
118
  --aside-default: 250px;
110
119
  --aside-small: 200px;
111
120
 
112
- --shadow-2xl:
113
- 0px 10px 14px 8px rgba(0, 0, 0, 0.2), 0px 4px 4px rgba(0, 0, 0, 0.3);
114
- --shadow-xl:
115
- 0px 8px 12px 6px rgba(0, 0, 0, 0.15), 0px 4px 4px rgba(0, 0, 0, 0.3);
116
- --shadow-lg:
117
- 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);
118
- --shadow-md:
119
- 0px 4px 8px 3px rgba(0, 0, 0, 0.15), 0px 1px 3px rgba(0, 0, 0, 0.3);
120
- --shadow-sm:
121
- 0px 1px 2px rgba(0, 0, 0, 0.3), 0px 2px 6px 2px rgba(0, 0, 0, 0.15);
121
+ --shadow-2xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
122
122
  --shadow-xs:
123
123
  0px 1px 2px rgba(0, 0, 0, 0.3), 0px 1px 3px 1px rgba(0, 0, 0, 0.15);
124
- --shadow-2xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
124
+ --shadow-sm:
125
+ 0px 1px 2px rgba(0, 0, 0, 0.3), 0px 2px 6px 2px rgba(0, 0, 0, 0.15);
126
+ --shadow-md:
127
+ 0px 4px 8px 3px rgba(0, 0, 0, 0.15), 0px 1px 3px rgba(0, 0, 0, 0.3);
128
+ --shadow-lg:
129
+ 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);
130
+ --shadow-xl:
131
+ 0px 8px 12px 6px rgba(0, 0, 0, 0.15), 0px 4px 4px rgba(0, 0, 0, 0.3);
132
+ --shadow-2xl:
133
+ 0px 10px 14px 8px rgba(0, 0, 0, 0.2), 0px 4px 4px rgba(0, 0, 0, 0.3);
125
134
  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.06);
126
135
  --shadow-none: none;
127
136
 
128
- --spacer-2xs: 4px;
129
- --spacer-xs: 8px;
130
- --spacer-sm: 12px;
131
- --spacer-md: 16px;
132
- --spacer-lg: 24px;
133
- --spacer-xl: 32px;
134
- --spacer-2xl: 48px;
135
-
136
137
  --animate-cubic-bezier: cubic-bezier(0.5, 0, 0.5, 1);
137
138
 
138
- --font-size-display-h1: 5rem;
139
- --font-size-display-h2: 4rem;
140
- --font-size-display-h3: 3.5rem;
141
- --font-size-display-h4: 3rem;
142
- --font-size-display-h5: 2.5rem;
143
- --font-size-h1: 2.5rem;
144
- --font-size-h2: 2rem;
145
- --font-size-h3: 1.8rem;
146
- --font-size-h4: 1.5rem;
147
- --font-size-h5: 1.3rem;
148
- --font-size-h6: 1.1rem;
149
- --font-size-body: 1rem;
150
- --font-size-small: 0.875rem;
151
- }
152
-
153
- @layer base {
154
- html,
155
- body {
156
- font-family: var(--font-family-body);
157
- }
139
+ --transition-short: all 200ms ease;
140
+ --transition-long: all 500ms ease;
141
+ --transition-bezier: all 500ms cubic-bezier(0.25, 0.75, 0, 0.66);
142
+
143
+ --text-display-h1: 5rem;
144
+ --text-display-h2: 4rem;
145
+ --text-display-h3: 3.5rem;
146
+ --text-display-h4: 3rem;
147
+ --text-display-h5: 2.5rem;
148
+ --text-h1: 2.5rem;
149
+ --text-h2: 2rem;
150
+ --text-h3: 1.8rem;
151
+ --text-h4: 1.5rem;
152
+ --text-h5: 1.3rem;
153
+ --text-h6: 1.1rem;
154
+ --text-body: 1rem;
155
+ --text-small: 0.875rem;
158
156
  }
159
157
 
160
158
  /*====================== Common styles ======================*/
161
159
 
162
160
  html,
163
161
  body {
164
- font-family: var(--font-family-body) !important;
162
+ font-family: var(--font-sans);
165
163
  width: 100%;
166
164
  min-height: 100vh;
167
165
  background-color: var(--color-background);
168
166
  color: var(--color-font);
169
167
  max-width: 100dvw;
168
+ line-height: var(--leading-normal);
170
169
 
171
170
  &.dark {
172
171
  --color-background: var(--color-black);
@@ -181,7 +180,7 @@ body {
181
180
  a,
182
181
  button {
183
182
  cursor: pointer;
184
- transition: all 200ms ease;
183
+ transition: var(--transition-short);
185
184
 
186
185
  &:disabled {
187
186
  cursor: not-allowed;
@@ -195,73 +194,73 @@ button {
195
194
  max-width: 100%;
196
195
  }
197
196
 
198
- .no-scrollbar::-webkit-scrollbar {
199
- display: none;
200
- }
201
-
202
197
  .no-scrollbar {
203
198
  -ms-overflow-style: none;
204
199
  scrollbar-width: none;
200
+
201
+ &::-webkit-scrollbar {
202
+ display: none;
203
+ }
205
204
  }
206
205
 
207
206
  /*====================== Fonts ======================*/
208
207
 
209
208
  .lato-thin {
210
- font-family: var(--font-family-body);
209
+ font-family: var(--font-sans);
211
210
  font-weight: var(--font-weight-thin);
212
211
  font-style: normal;
213
212
  }
214
213
 
215
214
  .lato-light {
216
- font-family: var(--font-family-body);
215
+ font-family: var(--font-sans);
217
216
  font-weight: var(--font-weight-light);
218
217
  font-style: normal;
219
218
  }
220
219
 
221
220
  .lato-regular {
222
- font-family: var(--font-family-body);
221
+ font-family: var(--font-sans);
223
222
  font-weight: var(--font-weight-normal);
224
223
  font-style: normal;
225
224
  }
226
225
 
227
226
  .lato-bold {
228
- font-family: var(--font-family-body);
227
+ font-family: var(--font-sans);
229
228
  font-weight: var(--font-weight-bold);
230
229
  font-style: normal;
231
230
  }
232
231
 
233
232
  .lato-black {
234
- font-family: var(--font-family-body);
233
+ font-family: var(--font-sans);
235
234
  font-weight: var(--font-weight-black);
236
235
  font-style: normal;
237
236
  }
238
237
 
239
238
  .lato-thin-italic {
240
- font-family: var(--font-family-body);
239
+ font-family: var(--font-sans);
241
240
  font-weight: var(--font-weight-thin);
242
241
  font-style: italic;
243
242
  }
244
243
 
245
244
  .lato-light-italic {
246
- font-family: var(--font-family-body);
245
+ font-family: var(--font-sans);
247
246
  font-weight: var(--font-weight-light);
248
247
  font-style: italic;
249
248
  }
250
249
 
251
250
  .lato-regular-italic {
252
- font-family: var(--font-family-body);
251
+ font-family: var(--font-sans);
253
252
  font-weight: var(--font-weight-normal);
254
253
  font-style: italic;
255
254
  }
256
255
 
257
256
  .lato-bold-italic {
258
- font-family: var(--font-family-body);
257
+ font-family: var(--font-sans);
259
258
  font-weight: var(--font-weight-bold);
260
259
  font-style: italic;
261
260
  }
262
261
 
263
262
  .lato-black-italic {
264
- font-family: var(--font-family-body);
263
+ font-family: var(--font-sans);
265
264
  font-weight: var(--font-weight-black);
266
265
  font-style: italic;
267
266
  }
@@ -360,24 +359,6 @@ button {
360
359
  }
361
360
  }
362
361
 
363
- .animate-shine {
364
- position: relative;
365
- overflow: hidden;
366
-
367
- &:before {
368
- content: "";
369
- position: absolute;
370
- top: -200px;
371
- bottom: -200px;
372
- background-color: var(--color-white);
373
- opacity: 0.7;
374
- filter: blur(20px);
375
- width: 100px;
376
- transform: skew(-15deg);
377
- animation: shine 2000ms ease-in-out infinite;
378
- }
379
- }
380
-
381
362
  @keyframes spin {
382
363
  from {
383
364
  transform: rotate(0deg);
@@ -388,15 +369,6 @@ button {
388
369
  }
389
370
  }
390
371
 
391
- .animate-spin {
392
- animation: spin 1200ms linear infinite;
393
- }
394
-
395
- .animate-bezier {
396
- animation: spin 1200ms var(--animate-cubic-bezier) infinite;
397
- animation-delay: var(--spinner-delay);
398
- }
399
-
400
372
  @keyframes loader-pulse {
401
373
  0%,
402
374
  100% {
@@ -408,30 +380,6 @@ button {
408
380
  }
409
381
  }
410
382
 
411
- .dot {
412
- animation: loader-pulse 1200ms linear infinite;
413
- animation-delay: var(--dot-delay);
414
- }
415
-
416
- input::-webkit-slider-thumb {
417
- box-shadow: var(--shadow-lg);
418
- }
419
-
420
- @keyframes toast-timer-animation {
421
- 0% {
422
- width: 100%;
423
- }
424
-
425
- 100% {
426
- width: 0;
427
- }
428
- }
429
-
430
- .toast-timer {
431
- animation: toast-timer-animation var(--toast-timer-duration) linear
432
- forwards;
433
- }
434
-
435
383
  .Toastify__progress-bar--bg {
436
384
  background-color: transparent !important;
437
385
  }
@@ -445,8 +393,4 @@ button {
445
393
  width: var(--meter-value);
446
394
  }
447
395
  }
448
-
449
- .progress-bar-animated:before {
450
- animation: progress-bar calc(var(--progress-speed) * 50ms) ease forwards;
451
- }
452
396
  }
package/dist/lib/index.ts CHANGED
@@ -122,5 +122,8 @@ export * from "./components/Fade"
122
122
  export * from "./components/BackToTop"
123
123
  export * from "./components/Drawer"
124
124
  export * from "./components/Header"
125
- export * from "./components/IconMenu"
125
+ export * from "./components/Footer"
126
+ export * from "./components/Meta"
127
+ export * from "./components/PageLayout"
128
+ export * from "./components/SrOnly"
126
129
  /* Prepend here - DO NOT REMOVE */
@@ -1,9 +1,4 @@
1
- import type {
2
- ButtonHTMLAttributes,
3
- ElementType,
4
- RefObject,
5
- ReactElement,
6
- } from "react"
1
+ import type { ButtonHTMLAttributes, ElementType, RefObject } from "react"
7
2
  import type { ClassNames, ReactChildren } from "./global"
8
3
 
9
4
  /**
@@ -187,21 +182,3 @@ export type LibMdEditorOptions = {
187
182
  viewLive?: boolean
188
183
  viewPreview?: boolean
189
184
  }
190
-
191
- /**
192
- * @description Props for button items within IconMenu components, combining base item functionality with button-specific properties.
193
- *
194
- * @extends LibItemBase<HTMLButtonElement>
195
- * @extends ButtonHTMLAttributes<HTMLButtonElement>
196
- * @prop {ElementType} [element] - HTML element type to render as the container.
197
- * @prop {RefObject<HTMLButtonElement>} [ref] - Ref to the button element.
198
- * @prop {string} [id] - Unique identifier for the menu item.
199
- * @prop {string} label - Text label displayed for the menu item.
200
- * @prop {ReactElement} icon - Icon element displayed alongside the label.
201
- */
202
- export interface LibIconMenuItem
203
- extends LibItemBase<HTMLButtonElement>,
204
- Omit<ButtonHTMLAttributes<HTMLButtonElement>, "className"> {
205
- label: string
206
- icon: ReactElement
207
- }
@@ -59,5 +59,8 @@ export * from "../components/Fade/types"
59
59
  export * from "../components/BackToTop/types"
60
60
  export * from "../components/Drawer/types"
61
61
  export * from "../components/Header/types"
62
- export * from "../components/IconMenu/types"
62
+ export * from "../components/Footer/types"
63
+ export * from "../components/Meta/types"
64
+ export * from "../components/PageLayout/types"
65
+ export * from "../components/SrOnly/types"
63
66
  /* Prepend here - DO NOT REMOVE */
@@ -563,25 +563,23 @@ export type LibHeaderPosition = Extract<
563
563
  >
564
564
 
565
565
  /**
566
- * @description All icon menu direction tokens available in the library for controlling the direction of expandable icon menus.
567
- * @type {"up" | "down" | "left" | "right"}
566
+ * @description All footer direction tokens available in the library for controlling the layout direction of footer content.
567
+ * @type {"horizontal" | "vertical"}
568
568
  * @example
569
- * direction="up"
570
- * direction="down"
571
- * direction="left"
572
- * direction="right"
569
+ * direction="horizontal"
570
+ * direction="vertical"
573
571
  */
574
- export type LibIconMenuDirection =
575
- keyof typeof designTokens.libIconMenuDirections
572
+ export type LibFooterDirection = keyof typeof designTokens.libFooterDirection
576
573
 
577
574
  /**
578
- * @description All icon menu icon tokens available in the library for controlling the icon displayed in expandable icon menus.
579
- * @type {"plus" | "burger"}
575
+ * @description All footer links separator tokens available in the library for controlling the visual separator between footer links.
576
+ * @type {"dot" | "dash"}
580
577
  * @example
581
- * icon="plus"
582
- * icon="burger"
578
+ * separator="dot"
579
+ * separator="dash"
583
580
  */
584
- export type LibIconMenuIcon = keyof typeof designTokens.libIconMenuIcon
581
+ export type LibFooterLinksSeparator =
582
+ keyof typeof designTokens.libFooterLinksSeparator
585
583
 
586
584
  /**
587
585
  * @description Type of values for InputPin component representing a collection of pin input values.
@@ -534,14 +534,9 @@ export const designTokens = {
534
534
 
535
535
  libNavMobileVariants: { full: "full", top: "top", drawer: "drawer" },
536
536
 
537
- libIconMenuDirections: {
538
- left: "left",
539
- up: "up",
540
- right: "right",
541
- down: "down",
542
- },
537
+ libFooterDirection: { horizontal: "horizontal", vertical: "vertical" },
543
538
 
544
- libIconMenuIcon: { plus: "plus", burger: "burger" },
539
+ libFooterLinksSeparator: { dot: "dot", dash: "dash" },
545
540
 
546
541
  libCountryCodes: {
547
542
  af: "af",
@@ -1,34 +1,34 @@
1
1
  import type { LibSpacers } from "../types"
2
2
 
3
3
  export const genGap: Record<LibSpacers, string> = {
4
- "2xl": "gap-(--spacer-2xl)",
5
- xl: "gap-(--spacer-xl)",
6
- lg: "gap-(--spacer-lg)",
7
- md: "gap-(--spacer-md)",
8
- sm: "gap-(--spacer-sm)",
9
- xs: "gap-(--spacer-xs)",
10
- "2xs": "gap-(--spacer-2xs)",
4
+ "2xl": "gap-12",
5
+ xl: "gap-8",
6
+ lg: "gap-5",
7
+ md: "gap-4",
8
+ sm: "gap-3",
9
+ xs: "gap-2",
10
+ "2xs": "gap-1",
11
11
  "0px": "0px",
12
12
  }
13
13
 
14
14
  export const genRowGap: Record<LibSpacers, string> = {
15
- "2xl": "gap-y-(--spacer-2xl)",
16
- xl: "gap-y-(--spacer-xl)",
17
- lg: "gap-y-(--spacer-lg)",
18
- md: "gap-y-(--spacer-md)",
19
- sm: "gap-y-(--spacer-sm)",
20
- xs: "gap-y-(--spacer-xs)",
21
- "2xs": "gap-y-(--spacer-2xs)",
15
+ "2xl": "gap-y-12",
16
+ xl: "gap-y-8",
17
+ lg: "gap-y-5",
18
+ md: "gap-y-4",
19
+ sm: "gap-y-3",
20
+ xs: "gap-y-2",
21
+ "2xs": "gap-y-1",
22
22
  "0px": "0px",
23
23
  }
24
24
 
25
25
  export const genColGap: Record<LibSpacers, string> = {
26
- "2xl": "gap-x-(--spacer-2xl)",
27
- xl: "gap-x-(--spacer-xl)",
28
- lg: "gap-x-(--spacer-lg)",
29
- md: "gap-x-(--spacer-md)",
30
- sm: "gap-x-(--spacer-sm)",
31
- xs: "gap-x-(--spacer-xs)",
32
- "2xs": "gap-x-(--spacer-2xs)",
26
+ "2xl": "gap-x-12",
27
+ xl: "gap-x-8",
28
+ lg: "gap-x-5",
29
+ md: "gap-x-4",
30
+ sm: "gap-x-3",
31
+ xs: "gap-x-2",
32
+ "2xs": "gap-x-1",
33
33
  "0px": "0px",
34
34
  }
@@ -0,0 +1,21 @@
1
+ import type { LibColorsHover } from "../types"
2
+
3
+ export const genRingColor: Record<LibColorsHover, string> = {
4
+ primary: "focus:ring-1 focus:ring-primary-800",
5
+ secondary: "focus:ring-1 focus:ring-secondary-800",
6
+ success: "focus:ring-1 focus:ring-success-800",
7
+ danger: "focus:ring-1 focus:ring-danger-800",
8
+ warning: "focus:ring-1 focus:ring-warning-800",
9
+ gray: "focus:ring-1 focus:ring-gray-800",
10
+ white: "focus:ring-1 focus:ring-gray-500",
11
+ }
12
+
13
+ export const genRingColorChildren: Record<LibColorsHover, string> = {
14
+ primary: "[&>*]:focus:ring-1 [&>*]:focus:ring-primary-800",
15
+ secondary: "[&>*]:focus:ring-1 [&>*]:focus:ring-secondary-800",
16
+ success: "[&>*]:focus:ring-1 [&>*]:focus:ring-success-800",
17
+ danger: "[&>*]:focus:ring-1 [&>*]:focus:ring-danger-800",
18
+ warning: "[&>*]:focus:ring-1 [&>*]:focus:ring-warning-800",
19
+ gray: "[&>*]:focus:ring-1 [&>*]:focus:ring-gray-800",
20
+ white: "[&>*]:focus:ring-1 [&>*]:focus:ring-gray-500",
21
+ }
@@ -16,3 +16,4 @@ export * from "./gen-button-color"
16
16
  export * from "./gen-box-shadow"
17
17
  export * from "./gen-vertical-align"
18
18
  export * from "./options-markdown"
19
+ export * from "./gen-ring-color"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@julseb-lib/react",
3
3
  "private": false,
4
- "version": "0.1.10",
4
+ "version": "0.1.12",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -27,7 +27,7 @@
27
27
  "check-errors": "tsc --noEmit"
28
28
  },
29
29
  "dependencies": {
30
- "@julseb-lib/utils": "^0.0.13",
30
+ "@julseb-lib/utils": "^0.0.14",
31
31
  "@tailwindcss/forms": "^0.5.10",
32
32
  "@tailwindcss/postcss": "^4.1.11",
33
33
  "@tailwindcss/vite": "^4.1.11",
@@ -37,7 +37,6 @@
37
37
  "postcss": "^8.5.6",
38
38
  "react": "^19.1.0",
39
39
  "react-dom": "^19.1.0",
40
- "react-helmet-async": "^2.0.5",
41
40
  "react-icons": "^5.5.0",
42
41
  "react-router-dom": "^7.6.3",
43
42
  "react-syntax-highlighter": "^15.6.1",
@@ -59,6 +58,7 @@
59
58
  "@typescript-eslint/eslint-plugin": "^8.35.1",
60
59
  "@typescript-eslint/parser": "^8.35.1",
61
60
  "@vitejs/plugin-react": "^4.6.0",
61
+ "axios": "^1.10.0",
62
62
  "cross-env": "^7.0.3",
63
63
  "cssjson-cli": "^1.0.1",
64
64
  "dotenv": "^17.0.0",