@julseb-lib/react 0.1.11 → 0.1.13

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 (118) hide show
  1. package/README.md +195 -8
  2. package/dist/index.css +57 -116
  3. package/dist/julseb-lib-react.cjs.js +12 -12
  4. package/dist/julseb-lib-react.es.js +1868 -1794
  5. package/dist/julseb-lib-react.umd.js +12 -12
  6. package/dist/lib/Variables.ts +20 -19
  7. package/dist/lib/components/Accordion/Accordion.tsx +1 -1
  8. package/dist/lib/components/Accordion/AccordionContent.tsx +2 -2
  9. package/dist/lib/components/Accordion/AccordionTitle.tsx +4 -3
  10. package/dist/lib/components/Alert/Alert.tsx +2 -2
  11. package/dist/lib/components/Autocomplete/Autocomplete.tsx +1 -1
  12. package/dist/lib/components/Avatar/Avatar.tsx +3 -7
  13. package/dist/lib/components/BackToTop/BackToTop.tsx +4 -3
  14. package/dist/lib/components/Badge/Badge.tsx +1 -1
  15. package/dist/lib/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  16. package/dist/lib/components/Burger/Burger.tsx +11 -4
  17. package/dist/lib/components/Button/Button.tsx +5 -4
  18. package/dist/lib/components/ButtonGroup/ButtonGroup.tsx +4 -2
  19. package/dist/lib/components/ButtonIcon/ButtonFn.tsx +3 -1
  20. package/dist/lib/components/ButtonIcon/ButtonIcon.tsx +9 -2
  21. package/dist/lib/components/CodeContainer/CodeContainer.tsx +5 -5
  22. package/dist/lib/components/Cover/Cover.tsx +1 -1
  23. package/dist/lib/components/DragList/DragList.tsx +1 -1
  24. package/dist/lib/components/DragList/DragListItem.tsx +4 -3
  25. package/dist/lib/components/Drawer/Drawer.tsx +1 -1
  26. package/dist/lib/components/Dropdown/Dropdown.tsx +1 -1
  27. package/dist/lib/components/Fade/Fade.tsx +4 -4
  28. package/dist/lib/components/Fieldset/Fieldset.tsx +2 -2
  29. package/dist/lib/components/Footer/Footer.tsx +103 -0
  30. package/dist/lib/components/Footer/index.ts +1 -0
  31. package/dist/lib/components/Footer/types.ts +54 -0
  32. package/dist/lib/components/Form/Form.tsx +1 -1
  33. package/dist/lib/components/Header/Header.tsx +15 -6
  34. package/dist/lib/components/Header/types.ts +1 -1
  35. package/dist/lib/components/Image/Image.tsx +1 -1
  36. package/dist/lib/components/Input/Input.tsx +2 -2
  37. package/dist/lib/components/Input/templates/ColorInput.tsx +4 -0
  38. package/dist/lib/components/InputCheck/InputCheck.tsx +2 -2
  39. package/dist/lib/components/InputComponents/InputButton.tsx +7 -2
  40. package/dist/lib/components/InputComponents/classes.ts +1 -1
  41. package/dist/lib/components/InputContainer/InputContainer.tsx +1 -1
  42. package/dist/lib/components/InputCounter/InputCounter.tsx +2 -2
  43. package/dist/lib/components/InputImage/InputImage.tsx +1 -1
  44. package/dist/lib/components/InputPhone/InputPhone.tsx +1 -1
  45. package/dist/lib/components/InputPin/InputPin.tsx +3 -1
  46. package/dist/lib/components/InputSlider/InputSlider.tsx +1 -1
  47. package/dist/lib/components/Key/Key.tsx +2 -2
  48. package/dist/lib/components/ListGroup/ListGroup.tsx +1 -1
  49. package/dist/lib/components/ListGroup/ListGroupItem.tsx +1 -1
  50. package/dist/lib/components/ListGroup/ListGroupTitle.tsx +1 -1
  51. package/dist/lib/components/Loader/Loader.tsx +1 -1
  52. package/dist/lib/components/Loader/templates/LoaderOne.tsx +1 -1
  53. package/dist/lib/components/Loader/templates/LoaderThree.tsx +3 -3
  54. package/dist/lib/components/Loader/templates/LoaderTwo.tsx +2 -2
  55. package/dist/lib/components/MarkdownContainer/MarkdownContainer.tsx +2 -2
  56. package/dist/lib/components/Meta/Meta.tsx +125 -0
  57. package/dist/lib/components/Meta/index.ts +1 -0
  58. package/dist/lib/components/Meta/types.ts +35 -0
  59. package/dist/lib/components/Modal/Modal.tsx +1 -1
  60. package/dist/lib/components/PageLayout/PageLayout.tsx +64 -0
  61. package/dist/lib/components/PageLayout/index.ts +1 -0
  62. package/dist/lib/components/PageLayout/types.ts +29 -0
  63. package/dist/lib/components/PageLoading/PageLoading.tsx +1 -1
  64. package/dist/lib/components/Pagination/Pagination.tsx +1 -1
  65. package/dist/lib/components/Pagination/PaginationButton.tsx +1 -1
  66. package/dist/lib/components/Paginator/Paginator.tsx +1 -1
  67. package/dist/lib/components/ProgressBar/ProgressBar.tsx +4 -7
  68. package/dist/lib/components/ProgressBar/types.ts +1 -1
  69. package/dist/lib/components/ProgressCircle/ProgressCircle.tsx +7 -3
  70. package/dist/lib/components/ProgressCircle/types.ts +1 -2
  71. package/dist/lib/components/Rating/Rating.tsx +1 -1
  72. package/dist/lib/components/Select/Select.tsx +1 -1
  73. package/dist/lib/components/Skeleton/Skeleton.tsx +5 -2
  74. package/dist/lib/components/Skeleton/SkeletonCard.tsx +4 -1
  75. package/dist/lib/components/Slideshow/Slideshow.tsx +1 -1
  76. package/dist/lib/components/Slideshow/SlideshowPagination.tsx +1 -1
  77. package/dist/lib/components/SrOnly/SrOnly.tsx +33 -0
  78. package/dist/lib/components/SrOnly/index.ts +1 -0
  79. package/dist/lib/components/SrOnly/types.ts +7 -0
  80. package/dist/lib/components/Sticky/Sticky.tsx +8 -8
  81. package/dist/lib/components/Table/Table.tsx +8 -5
  82. package/dist/lib/components/Tabs/Tabs.tsx +1 -1
  83. package/dist/lib/components/Tabs/TabsButton.tsx +4 -2
  84. package/dist/lib/components/Tabs/TabsButtonsContainer.tsx +1 -1
  85. package/dist/lib/components/Tabs/TabsContainer.tsx +1 -1
  86. package/dist/lib/components/Tabs/TabsContent.tsx +1 -1
  87. package/dist/lib/components/Tag/Tag.tsx +1 -1
  88. package/dist/lib/components/Text/templates/Blockquote.tsx +1 -1
  89. package/dist/lib/components/Text/templates/Dl.tsx +1 -1
  90. package/dist/lib/components/Text/templates/H1.tsx +2 -2
  91. package/dist/lib/components/Text/templates/H2.tsx +2 -2
  92. package/dist/lib/components/Text/templates/H3.tsx +2 -2
  93. package/dist/lib/components/Text/templates/H4.tsx +2 -2
  94. package/dist/lib/components/Text/templates/H5.tsx +2 -2
  95. package/dist/lib/components/Text/templates/H6.tsx +1 -1
  96. package/dist/lib/components/Text/templates/Ol.tsx +1 -1
  97. package/dist/lib/components/Text/templates/P.tsx +1 -1
  98. package/dist/lib/components/Text/templates/Small.tsx +1 -1
  99. package/dist/lib/components/Text/templates/Ul.tsx +1 -1
  100. package/dist/lib/components/Toast/Toast.tsx +5 -4
  101. package/dist/lib/components/Tooltip/Tooltip.tsx +29 -22
  102. package/dist/lib/components/Wrapper/Wrapper.tsx +1 -1
  103. package/dist/lib/index.css +57 -116
  104. package/dist/lib/index.ts +4 -1
  105. package/dist/lib/types/components-items-props.ts +1 -24
  106. package/dist/lib/types/components-props.ts +4 -1
  107. package/dist/lib/types/global.ts +11 -13
  108. package/dist/lib/utils/design-tokens.ts +2 -7
  109. package/dist/lib/utils/gen-gap.ts +21 -21
  110. package/dist/lib/utils/gen-ring-color.ts +21 -0
  111. package/dist/lib/utils/index.ts +1 -0
  112. package/package.json +3 -9
  113. package/dist/lib/components/IconMenu/IconMenu.module.css +0 -239
  114. package/dist/lib/components/IconMenu/IconMenu.tsx +0 -101
  115. package/dist/lib/components/IconMenu/IconMenuItem.tsx +0 -53
  116. package/dist/lib/components/IconMenu/index.ts +0 -1
  117. package/dist/lib/components/IconMenu/types.ts +0 -48
  118. 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],
@@ -4,7 +4,8 @@
4
4
 
5
5
  :root {
6
6
  --font-lato: "Lato", sans-serif;
7
- --font-family-body: var(--font-lato);
7
+ --font-sans: var(--font-lato);
8
+ --font-mono: monospace;
8
9
  }
9
10
 
10
11
  @theme {
@@ -78,10 +79,6 @@
78
79
  --color-background: var(--color-white);
79
80
  --color-font: var(--color-black);
80
81
 
81
- --font-lato: "Lato", sans-serif;
82
- --font-family-body: var(--font-lato);
83
- --font-family-code: monospace;
84
-
85
82
  --font-weight-thin: 100;
86
83
  --font-weight-light: 300;
87
84
  --font-weight-normal: 400;
@@ -103,7 +100,16 @@
103
100
  rgba(255, 255, 255, 0.35) 100%
104
101
  );
105
102
 
106
- --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;
107
113
 
108
114
  --main-default: 600px;
109
115
  --main-large: 800px;
@@ -112,64 +118,54 @@
112
118
  --aside-default: 250px;
113
119
  --aside-small: 200px;
114
120
 
115
- --shadow-2xl:
116
- 0px 10px 14px 8px rgba(0, 0, 0, 0.2), 0px 4px 4px rgba(0, 0, 0, 0.3);
117
- --shadow-xl:
118
- 0px 8px 12px 6px rgba(0, 0, 0, 0.15), 0px 4px 4px rgba(0, 0, 0, 0.3);
119
- --shadow-lg:
120
- 0px 6px 10px 4px rgba(0, 0, 0, 0.15), 0px 2px 3px rgba(0, 0, 0, 0.3);
121
- --shadow-md:
122
- 0px 4px 8px 3px rgba(0, 0, 0, 0.15), 0px 1px 3px rgba(0, 0, 0, 0.3);
123
- --shadow-sm:
124
- 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);
125
122
  --shadow-xs:
126
123
  0px 1px 2px rgba(0, 0, 0, 0.3), 0px 1px 3px 1px rgba(0, 0, 0, 0.15);
127
- --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);
128
134
  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.06);
129
135
  --shadow-none: none;
130
136
 
131
- --spacer-2xs: 4px;
132
- --spacer-xs: 8px;
133
- --spacer-sm: 12px;
134
- --spacer-md: 16px;
135
- --spacer-lg: 24px;
136
- --spacer-xl: 32px;
137
- --spacer-2xl: 48px;
138
-
139
137
  --animate-cubic-bezier: cubic-bezier(0.5, 0, 0.5, 1);
140
138
 
141
- --font-size-display-h1: 5rem;
142
- --font-size-display-h2: 4rem;
143
- --font-size-display-h3: 3.5rem;
144
- --font-size-display-h4: 3rem;
145
- --font-size-display-h5: 2.5rem;
146
- --font-size-h1: 2.5rem;
147
- --font-size-h2: 2rem;
148
- --font-size-h3: 1.8rem;
149
- --font-size-h4: 1.5rem;
150
- --font-size-h5: 1.3rem;
151
- --font-size-h6: 1.1rem;
152
- --font-size-body: 1rem;
153
- --font-size-small: 0.875rem;
154
- }
155
-
156
- @layer base {
157
- html,
158
- body {
159
- font-family: var(--font-family-body);
160
- }
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;
161
156
  }
162
157
 
163
158
  /*====================== Common styles ======================*/
164
159
 
165
160
  html,
166
161
  body {
167
- font-family: var(--font-family-body) !important;
162
+ font-family: var(--font-sans);
168
163
  width: 100%;
169
164
  min-height: 100vh;
170
165
  background-color: var(--color-background);
171
166
  color: var(--color-font);
172
167
  max-width: 100dvw;
168
+ line-height: var(--leading-normal);
173
169
 
174
170
  &.dark {
175
171
  --color-background: var(--color-black);
@@ -184,7 +180,7 @@ body {
184
180
  a,
185
181
  button {
186
182
  cursor: pointer;
187
- transition: all 200ms ease;
183
+ transition: var(--transition-short);
188
184
 
189
185
  &:disabled {
190
186
  cursor: not-allowed;
@@ -198,73 +194,73 @@ button {
198
194
  max-width: 100%;
199
195
  }
200
196
 
201
- .no-scrollbar::-webkit-scrollbar {
202
- display: none;
203
- }
204
-
205
197
  .no-scrollbar {
206
198
  -ms-overflow-style: none;
207
199
  scrollbar-width: none;
200
+
201
+ &::-webkit-scrollbar {
202
+ display: none;
203
+ }
208
204
  }
209
205
 
210
206
  /*====================== Fonts ======================*/
211
207
 
212
208
  .lato-thin {
213
- font-family: var(--font-family-body);
209
+ font-family: var(--font-sans);
214
210
  font-weight: var(--font-weight-thin);
215
211
  font-style: normal;
216
212
  }
217
213
 
218
214
  .lato-light {
219
- font-family: var(--font-family-body);
215
+ font-family: var(--font-sans);
220
216
  font-weight: var(--font-weight-light);
221
217
  font-style: normal;
222
218
  }
223
219
 
224
220
  .lato-regular {
225
- font-family: var(--font-family-body);
221
+ font-family: var(--font-sans);
226
222
  font-weight: var(--font-weight-normal);
227
223
  font-style: normal;
228
224
  }
229
225
 
230
226
  .lato-bold {
231
- font-family: var(--font-family-body);
227
+ font-family: var(--font-sans);
232
228
  font-weight: var(--font-weight-bold);
233
229
  font-style: normal;
234
230
  }
235
231
 
236
232
  .lato-black {
237
- font-family: var(--font-family-body);
233
+ font-family: var(--font-sans);
238
234
  font-weight: var(--font-weight-black);
239
235
  font-style: normal;
240
236
  }
241
237
 
242
238
  .lato-thin-italic {
243
- font-family: var(--font-family-body);
239
+ font-family: var(--font-sans);
244
240
  font-weight: var(--font-weight-thin);
245
241
  font-style: italic;
246
242
  }
247
243
 
248
244
  .lato-light-italic {
249
- font-family: var(--font-family-body);
245
+ font-family: var(--font-sans);
250
246
  font-weight: var(--font-weight-light);
251
247
  font-style: italic;
252
248
  }
253
249
 
254
250
  .lato-regular-italic {
255
- font-family: var(--font-family-body);
251
+ font-family: var(--font-sans);
256
252
  font-weight: var(--font-weight-normal);
257
253
  font-style: italic;
258
254
  }
259
255
 
260
256
  .lato-bold-italic {
261
- font-family: var(--font-family-body);
257
+ font-family: var(--font-sans);
262
258
  font-weight: var(--font-weight-bold);
263
259
  font-style: italic;
264
260
  }
265
261
 
266
262
  .lato-black-italic {
267
- font-family: var(--font-family-body);
263
+ font-family: var(--font-sans);
268
264
  font-weight: var(--font-weight-black);
269
265
  font-style: italic;
270
266
  }
@@ -363,24 +359,6 @@ button {
363
359
  }
364
360
  }
365
361
 
366
- .animate-shine {
367
- position: relative;
368
- overflow: hidden;
369
-
370
- &:before {
371
- content: "";
372
- position: absolute;
373
- top: -200px;
374
- bottom: -200px;
375
- background-color: var(--color-white);
376
- opacity: 0.7;
377
- filter: blur(20px);
378
- width: 100px;
379
- transform: skew(-15deg);
380
- animation: shine 2000ms ease-in-out infinite;
381
- }
382
- }
383
-
384
362
  @keyframes spin {
385
363
  from {
386
364
  transform: rotate(0deg);
@@ -391,15 +369,6 @@ button {
391
369
  }
392
370
  }
393
371
 
394
- .animate-spin {
395
- animation: spin 1200ms linear infinite;
396
- }
397
-
398
- .animate-bezier {
399
- animation: spin 1200ms var(--animate-cubic-bezier) infinite;
400
- animation-delay: var(--spinner-delay);
401
- }
402
-
403
372
  @keyframes loader-pulse {
404
373
  0%,
405
374
  100% {
@@ -411,30 +380,6 @@ button {
411
380
  }
412
381
  }
413
382
 
414
- .dot {
415
- animation: loader-pulse 1200ms linear infinite;
416
- animation-delay: var(--dot-delay);
417
- }
418
-
419
- input::-webkit-slider-thumb {
420
- box-shadow: var(--shadow-lg);
421
- }
422
-
423
- @keyframes toast-timer-animation {
424
- 0% {
425
- width: 100%;
426
- }
427
-
428
- 100% {
429
- width: 0;
430
- }
431
- }
432
-
433
- .toast-timer {
434
- animation: toast-timer-animation var(--toast-timer-duration) linear
435
- forwards;
436
- }
437
-
438
383
  .Toastify__progress-bar--bg {
439
384
  background-color: transparent !important;
440
385
  }
@@ -448,8 +393,4 @@ button {
448
393
  width: var(--meter-value);
449
394
  }
450
395
  }
451
-
452
- .progress-bar-animated:before {
453
- animation: progress-bar calc(var(--progress-speed) * 50ms) ease forwards;
454
- }
455
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.11",
4
+ "version": "0.1.13",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -18,16 +18,10 @@
18
18
  "plop:st": "yarn plop subtype",
19
19
  "plop:g": "yarn plop generator",
20
20
  "plop:d": "yarn plop demo",
21
- "cy": "cypress",
22
- "cy:open": "cypress open",
23
- "cy:ct:run": "cypress run --component --browser electron",
24
- "cy:ct:open": "cypress open --component --browser electron",
25
- "docgen": "react-docgen -o ./src/data/docgen.json ./src/lib/components/**/*.tsx",
26
- "cssgen": "cssjson src/lib/index.css --output src/data/styles.json",
27
21
  "check-errors": "tsc --noEmit"
28
22
  },
29
23
  "dependencies": {
30
- "@julseb-lib/utils": "^0.0.13",
24
+ "@julseb-lib/utils": "^0.0.14",
31
25
  "@tailwindcss/forms": "^0.5.10",
32
26
  "@tailwindcss/postcss": "^4.1.11",
33
27
  "@tailwindcss/vite": "^4.1.11",
@@ -37,7 +31,6 @@
37
31
  "postcss": "^8.5.6",
38
32
  "react": "^19.1.0",
39
33
  "react-dom": "^19.1.0",
40
- "react-helmet-async": "^2.0.5",
41
34
  "react-icons": "^5.5.0",
42
35
  "react-router-dom": "^7.6.3",
43
36
  "react-syntax-highlighter": "^15.6.1",
@@ -59,6 +52,7 @@
59
52
  "@typescript-eslint/eslint-plugin": "^8.35.1",
60
53
  "@typescript-eslint/parser": "^8.35.1",
61
54
  "@vitejs/plugin-react": "^4.6.0",
55
+ "axios": "^1.10.0",
62
56
  "cross-env": "^7.0.3",
63
57
  "cssjson-cli": "^1.0.1",
64
58
  "dotenv": "^17.0.0",