@latte-macchiat-io/latte-vanilla-components 0.0.236 → 0.0.238

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latte-macchiat-io/latte-vanilla-components",
3
- "version": "0.0.236",
3
+ "version": "0.0.238",
4
4
  "description": "Beautiful components for amazing projects, with a touch of Vanilla 🥤",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -1,7 +1,7 @@
1
- import { clsx } from 'clsx';
1
+ import clsx from 'clsx';
2
2
  import { useState } from 'react';
3
3
 
4
- import { HeaderToggleNav } from './HeaderToggleNav/export';
4
+ import { HeaderToggleNav } from './HeaderToggleNav';
5
5
  import { headerOverlayRecipe, headerPlaceholder, headerRecipe, headerToggleNav, HeaderToggleNavVariants } from './styles.css';
6
6
 
7
7
  export type HeaderProps = React.HTMLAttributes<HTMLDivElement> &
@@ -9,13 +9,24 @@ export type HeaderProps = React.HTMLAttributes<HTMLDivElement> &
9
9
  isFixed?: boolean;
10
10
  children: React.ReactNode;
11
11
  childrenOverlay?: React.ReactNode;
12
- childrenToggleNav?: React.ReactNode;
12
+ childrenToggleNav?: React.ReactNode | ((args: { isOpen: boolean; onToggle: () => void }) => React.ReactNode);
13
13
  };
14
14
 
15
15
  export const Header = ({ children, childrenOverlay, childrenToggleNav, isFixed = false, toggleNavVisibility, className }: HeaderProps) => {
16
16
  const [isNavOpen, setNavOpen] = useState(false);
17
17
  const onToggleNav = () => setNavOpen(!isNavOpen);
18
18
 
19
+ const renderToggleNav = () => {
20
+ if (typeof childrenToggleNav === 'function') {
21
+ return childrenToggleNav({ isOpen: isNavOpen, onToggle: onToggleNav });
22
+ }
23
+ return (
24
+ <button onClick={onToggleNav} aria-label="Toggle navigation" className={headerToggleNav({ toggleNavVisibility })}>
25
+ {childrenToggleNav || <HeaderToggleNav isOpen={isNavOpen} />}
26
+ </button>
27
+ );
28
+ };
29
+
19
30
  return (
20
31
  <>
21
32
  <header className={clsx(headerRecipe({ isFixed }), className)}>
@@ -23,11 +34,7 @@ export const Header = ({ children, childrenOverlay, childrenToggleNav, isFixed =
23
34
 
24
35
  {children}
25
36
 
26
- {toggleNavVisibility !== 'hide' && (
27
- <button onClick={onToggleNav} aria-label="Toggle navigation" className={headerToggleNav({ toggleNavVisibility })}>
28
- {childrenToggleNav || <HeaderToggleNav isOpen={isNavOpen} />}
29
- </button>
30
- )}
37
+ {toggleNavVisibility !== 'hide' && renderToggleNav()}
31
38
  </header>
32
39
 
33
40
  {isFixed && <div className={headerPlaceholder} />}
@@ -1,2 +1,2 @@
1
- export { Modal, type ModalProps } from './';
1
+ export { Modal, type ModalProps, type ModalRenderProp } from './';
2
2
  export { type ModalVariants } from './styles.css';
@@ -10,7 +10,7 @@ import { Actions } from '../Actions';
10
10
  import { Button } from '../Button';
11
11
  import { Icon } from '../Icon';
12
12
 
13
- type ModalRenderProp = (args: { closeModal: () => void }) => ReactNode;
13
+ export type ModalRenderProp = (args: { closeModal: () => void }) => ReactNode;
14
14
 
15
15
  export type ModalProps = React.HTMLAttributes<HTMLDivElement> &
16
16
  ModalVariants & {