@sierra-95/svelte-scaffold 1.0.71 → 1.0.73

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.
@@ -1,17 +1,4 @@
1
- export type SectionItem = {
2
- id?: string;
3
- path: string;
4
- label: string;
5
- icon?: string;
6
- hidden?: boolean;
7
- children?: SectionItem[];
8
- TOC?: Partial<Record<string, string>>;
9
- };
10
- export type Section = {
11
- label: string;
12
- hidden?: boolean;
13
- items: SectionItem[];
14
- };
1
+ import type { Section } from '../index.js';
15
2
  export type SearchResult = {
16
3
  label: string;
17
4
  path: string;
@@ -1 +1,8 @@
1
+ import type { Section } from '../index.js';
1
2
  export declare function validateLayoutMenuSections(sections: Array<any>): void;
3
+ export declare function filterSectionsByRole(sections: Section[], userRole: string): {
4
+ items: import("../index.js").SectionItem[];
5
+ label: string;
6
+ hidden?: boolean;
7
+ role?: string;
8
+ }[];
@@ -1,4 +1,5 @@
1
- import { setToastMessage } from '../index.js';
1
+ import { get } from 'svelte/store';
2
+ import { setToastMessage, layoutStore } from '../index.js';
2
3
  export function validateLayoutMenuSections(sections) {
3
4
  const seenPaths = new Set();
4
5
  for (const section of sections) {
@@ -22,3 +23,50 @@ export function validateLayoutMenuSections(sections) {
22
23
  }
23
24
  }
24
25
  }
26
+ function getRoleLevel(role) {
27
+ if (!role)
28
+ return 0;
29
+ const state = get(layoutStore);
30
+ return role in state.ROLE_LEVELS ? state.ROLE_LEVELS[role] : 0;
31
+ }
32
+ function hasAccess(userRole, requiredRole) {
33
+ if (!requiredRole)
34
+ return true;
35
+ return getRoleLevel(userRole) >= getRoleLevel(requiredRole);
36
+ }
37
+ function isDefined(value) {
38
+ return value != null;
39
+ }
40
+ export function filterSectionsByRole(sections, userRole) {
41
+ return sections
42
+ .map(section => {
43
+ // No access to section → remove entirely
44
+ if (!hasAccess(userRole, section.role))
45
+ return null;
46
+ const items = section.items
47
+ .map(item => {
48
+ const itemRole = item.role ?? section.role;
49
+ // No access to item → remove
50
+ if (!hasAccess(userRole, itemRole))
51
+ return null;
52
+ // Handle children
53
+ if (item.children) {
54
+ const children = item.children.filter((child) => {
55
+ const childRole = child.role ?? itemRole;
56
+ return hasAccess(userRole, childRole);
57
+ });
58
+ // No visible children → remove parent
59
+ if (children.length === 0)
60
+ return null;
61
+ return { ...item, children };
62
+ }
63
+ return item;
64
+ })
65
+ .filter(isDefined);
66
+ // No visible items → remove section
67
+ if (items.length === 0)
68
+ return null;
69
+ return { ...section, items };
70
+ })
71
+ .filter(isDefined);
72
+ }
@@ -6,24 +6,6 @@
6
6
  border-bottom: 1px solid var(--border);
7
7
  background-color: var(--header);
8
8
  }
9
- #sierra-header .bar {
10
- width: 30px;
11
- height: 3px;
12
- margin: 4px auto;
13
- border-radius: 5px;
14
- transition: 0.3s;
15
- }
16
- #sierra-header button:hover .bar:nth-of-type(1) {
17
- -webkit-transform: translateY(1.5px) rotate(-4.5deg);
18
- -ms-transform: translateY(1.5px) rotate(-4.5deg);
19
- transform: translateY(1.5px) rotate(-4.5deg);
20
- }
21
-
22
- #sierra-header button:hover .bar:nth-of-type(3) {
23
- -webkit-transform: translateY(-1.5px) rotate(4.5deg);
24
- -ms-transform: translateY(-1.5px) rotate(4.5deg);
25
- transform: translateY(-1.5px) rotate(4.5deg);
26
- }
27
9
 
28
10
  #sierra-header img{
29
11
  width: var(--header-image-size);
@@ -1,47 +1,25 @@
1
1
  <script lang="ts">
2
- import {buttonRipple} from '../../../index.js';
3
- import GridIcon from './gridIcon.svelte';
4
- import Hamburger from './hamburger.svelte';
2
+ import {layoutStore, ButtonHamburger} from '../../../index.js';
5
3
  import './header.css';
6
4
  const {
7
- headerTitle,
8
- headerLink,
9
- headerImage,
10
- headerImageSize,
11
5
  toggleMenu = (() => {}),
12
- headerCenterContent,
13
- headerRightContent,
14
- toggleMenuColor,
15
- toggleMenuSize,
16
- gridToggle
17
6
  } = $props();
18
7
 
19
- function conditionalRipple(node: HTMLElement) {
20
- if (gridToggle) {
21
- return buttonRipple(node);
22
- }
23
- }
24
8
  </script>
25
9
  <header id='sierra-header'>
26
10
  <div style="display: flex; align-items: center; gap: 1rem;">
27
- <a href={headerLink} style="display: flex; align-items: center; gap: 0.5rem; color: inherit; margin-left: 1rem;'}">
28
- {#if headerImage}
29
- <img style="--header-image-size : {headerImageSize}" src={headerImage} alt="Logo"/>
11
+ <a href={$layoutStore.headerLink} style="display: flex; align-items: center; gap: 0.5rem; color: inherit; margin-left: 1rem;'}">
12
+ {#if $layoutStore.headerImage}
13
+ <img style="--header-image-size : {$layoutStore.headerImageSize}" src={$layoutStore.headerImage} alt="Logo"/>
30
14
  {/if}
31
- {#if headerTitle}
32
- <h2>{headerTitle}</h2>
15
+ {#if $layoutStore.headerTitle}
16
+ <h2>{$layoutStore.headerTitle}</h2>
33
17
  {/if}
34
18
  </a>
35
19
  </div>
36
- <div>{@render headerCenterContent?.()}</div>
20
+ <div>{@render $layoutStore.headerCenterContent?.()}</div>
37
21
  <div style="display: flex; gap: 1rem; align-items: center;">
38
- {@render headerRightContent?.()}
39
- <button use:conditionalRipple onclick={toggleMenu} title="Menu" style="display:flex;align-items:center;justify-content:center;margin-right: 1rem; height:40px; width:40px;">
40
- {#if gridToggle}
41
- <GridIcon {toggleMenuColor} {toggleMenuSize} />
42
- {:else}
43
- <Hamburger {toggleMenuColor} />
44
- {/if}
45
- </button>
22
+ {@render $layoutStore.headerRightContent?.()}
23
+ <div style="margin-right: 1rem;"><ButtonHamburger onclick={toggleMenu} barColor={$layoutStore.toggleMenuColor}/></div>
46
24
  </div>
47
25
  </header>
@@ -1,15 +1,6 @@
1
1
  import './header.css';
2
2
  declare const Header: import("svelte").Component<{
3
- headerTitle: any;
4
- headerLink: any;
5
- headerImage: any;
6
- headerImageSize: any;
7
3
  toggleMenu?: any;
8
- headerCenterContent: any;
9
- headerRightContent: any;
10
- toggleMenuColor: any;
11
- toggleMenuSize: any;
12
- gridToggle: any;
13
4
  }, {}, "">;
14
5
  type Header = ReturnType<typeof Header>;
15
6
  export default Header;
@@ -3,20 +3,25 @@
3
3
  import { onMount } from 'svelte';
4
4
  import { page } from '$app/state';
5
5
  import { afterNavigate, beforeNavigate } from '$app/navigation';
6
- import { isLoading, validateLayoutMenuSections, GlobalSearch } from '../../../index.js';
7
- import type {Section} from '../../../index.js';
6
+ import { isLoading, validateLayoutMenuSections, GlobalSearch, layoutStore, filterSectionsByRole } from '../../../index.js';
8
7
 
9
8
  export let toggleMenu: () => void;
10
9
  export let closeMobileMenu: () => void;
11
10
  export let isMenuOpen: boolean;
12
- export let sections: Section[];
13
- export let menuActiveIconColor: string;
11
+
12
+ $: sections = filterSectionsByRole(
13
+ $layoutStore.sections,
14
+ $layoutStore.userRole ?? 'user'
15
+ );
14
16
 
15
17
  function isParentActive(item: any, pathname: string) {
16
18
  if (item.path === '/') {
17
19
  return pathname === '/';
18
20
  }
19
- return pathname === item.path || pathname.startsWith(item.path + '/');
21
+ if (item.children) {
22
+ return pathname === item.path || pathname.startsWith(item.path + '/');
23
+ }
24
+ return pathname === item.path;
20
25
  }
21
26
 
22
27
  let openSubsections = new Set();
@@ -89,7 +94,7 @@
89
94
  closeMobileMenu();
90
95
  }
91
96
  }}
92
- style="{isMenuOpen? '':'border-radius: unset;border-left: none;'}; --menu-active-icon-color: {menuActiveIconColor};"
97
+ style="{isMenuOpen? '':'border-radius: unset;border-left: none;'}; --menu-active-icon-color: {$layoutStore.menuActiveIconColor};"
93
98
  class={`
94
99
  icon-base
95
100
  ${
@@ -1,5 +1,4 @@
1
1
  import './menu.css';
2
- import type { Section } from '../../../index.js';
3
2
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
3
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
4
  $$bindings?: Bindings;
@@ -17,8 +16,6 @@ declare const Menu: $$__sveltets_2_IsomorphicComponent<{
17
16
  toggleMenu: () => void;
18
17
  closeMobileMenu: () => void;
19
18
  isMenuOpen: boolean;
20
- sections: Section[];
21
- menuActiveIconColor: string;
22
19
  }, {
23
20
  [evt: string]: CustomEvent<any>;
24
21
  }, {}, {}, string>;
@@ -1,5 +1,8 @@
1
+ <script>
2
+ import { layoutStore } from "../../stores/modules/layout.js";
3
+ </script>
1
4
  <style>
2
- .background-svg {
5
+ .sierra-layout-background {
3
6
  position: absolute;
4
7
  top: 0;
5
8
  left: 0;
@@ -8,21 +11,24 @@
8
11
  z-index: -1;
9
12
  }
10
13
  </style>
14
+ {#if $layoutStore.backgroundColor}
15
+ <main style="background-color: {$layoutStore.backgroundColor};" class="sierra-layout-background"></main>
16
+ {:else}
17
+ <svg class="sierra-layout-background" viewBox="0 0 1000 1000" preserveAspectRatio="xMidYMid slice">
18
+ <defs>
19
+ <linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="100%">
20
+ <stop offset="0%" stop-color="var(--background-v1-gradient-line-start)" />
21
+ <stop offset="100%" stop-color="var(--background-v1-gradient-line-end)" />
22
+ </linearGradient>
23
+ </defs>
24
+ <line x1="100" y1="0" x2="100" y2="1000" stroke="url(#lineGradient)" stroke-width="2" opacity="0.3" />
25
+ <line x1="300" y1="0" x2="250" y2="1000" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
26
+ <line x1="700" y1="0" x2="750" y2="1000" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
27
+ <line x1="900" y1="0" x2="900" y2="1000" stroke="url(#lineGradient)" stroke-width="2" opacity="0.3" />
11
28
 
12
- <svg class="background-svg" viewBox="0 0 1000 1000" preserveAspectRatio="xMidYMid slice">
13
- <defs>
14
- <linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="100%">
15
- <stop offset="0%" stop-color="var(--background-v1-gradient-line-start)" />
16
- <stop offset="100%" stop-color="var(--background-v1-gradient-line-end)" />
17
- </linearGradient>
18
- </defs>
19
- <line x1="100" y1="0" x2="100" y2="1000" stroke="url(#lineGradient)" stroke-width="2" opacity="0.3" />
20
- <line x1="300" y1="0" x2="250" y2="1000" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
21
- <line x1="700" y1="0" x2="750" y2="1000" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
22
- <line x1="900" y1="0" x2="900" y2="1000" stroke="url(#lineGradient)" stroke-width="2" opacity="0.3" />
23
-
24
- <line x1="0" y1="200" x2="1000" y2="200" stroke="url(#lineGradient)" stroke-width="1" opacity="0.15" />
25
- <line x1="0" y1="400" x2="1000" y2="450" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
26
- <line x1="0" y1="650" x2="1000" y2="600" stroke="url(#lineGradient)" stroke-width="1" opacity="0.15" />
27
- <line x1="0" y1="850" x2="1000" y2="850" stroke="url(#lineGradient)" stroke-width="2" opacity="0.25" />
28
- </svg>
29
+ <line x1="0" y1="200" x2="1000" y2="200" stroke="url(#lineGradient)" stroke-width="1" opacity="0.15" />
30
+ <line x1="0" y1="400" x2="1000" y2="450" stroke="url(#lineGradient)" stroke-width="1.5" opacity="0.2" />
31
+ <line x1="0" y1="650" x2="1000" y2="600" stroke="url(#lineGradient)" stroke-width="1" opacity="0.15" />
32
+ <line x1="0" y1="850" x2="1000" y2="850" stroke="url(#lineGradient)" stroke-width="2" opacity="0.25" />
33
+ </svg>
34
+ {/if}
@@ -1,7 +1,7 @@
1
1
  <script>
2
2
  import './main.css';
3
3
  import { onMount } from 'svelte';
4
- import {LinearProgress, isLoading, isMobile, isTablet, Modal, Toast, theme,FilePicker} from '../../index.js'
4
+ import {LinearProgress, isLoading, isMobile, isTablet, Modal, Toast, theme,FilePicker, layoutStore} from '../../index.js'
5
5
  import Header from './Header/header.svelte';
6
6
  import Menu from './Menu/menu.svelte';
7
7
  import Background from './background.svelte';
@@ -9,19 +9,6 @@
9
9
 
10
10
  let {
11
11
  children,
12
- headerTitle = '',
13
- headerLink = '',
14
- headerImage = '',
15
- headerImageSize = '30px',
16
- sections = [],
17
- contentCenter = false,
18
- headerCenterContent = null,
19
- headerRightContent = null,
20
- paddingOff = false,
21
- gridToggle = false,
22
- toggleMenuColor = 'var(--hamburger)',
23
- toggleMenuSize = "25px",
24
- menuActiveIconColor = 'var(--primary-bg)',
25
12
  } = $props();
26
13
 
27
14
  let isSmallscreen = $state(true);
@@ -75,18 +62,7 @@
75
62
  <Modal />
76
63
  <Toast />
77
64
  <FilePicker />
78
- <Header
79
- {headerTitle}
80
- {headerLink}
81
- {headerImage}
82
- {headerImageSize}
83
- {toggleMenu}
84
- {headerCenterContent}
85
- {headerRightContent}
86
- {toggleMenuColor}
87
- {toggleMenuSize}
88
- {gridToggle}
89
- />
65
+ <Header {toggleMenu}/>
90
66
  {#if $isLoading}<LinearProgress />{/if}
91
67
  <div id="sierra-layout">
92
68
  <div
@@ -99,17 +75,15 @@
99
75
  }
100
76
  >
101
77
  <Menu
102
- {sections}
103
78
  {isMenuOpen}
104
79
  {toggleMenu}
105
80
  {closeMobileMenu}
106
- {menuActiveIconColor}
107
81
  />
108
82
  <Collapse {isMenuOpen} {toggleMenu}/>
109
83
  </div>
110
- <div data-label="Content Container" class="content" role="none" onclick={closeMobileMenu} style={paddingOff ? 'padding: 0px;' : 'padding: 20px'}>
84
+ <div data-label="Content Container" class="content" role="none" onclick={closeMobileMenu} style={$layoutStore.paddingOff ? 'padding: 0px;' : 'padding: 20px'}>
111
85
  <Background />
112
- {#if contentCenter}
86
+ {#if $layoutStore.contentCenter}
113
87
  <div id='sierra-wrapper'>
114
88
  {@render children()}
115
89
  </div>
@@ -5,33 +5,7 @@ type Main = {
5
5
  };
6
6
  declare const Main: import("svelte").Component<{
7
7
  children: any;
8
- headerTitle?: string;
9
- headerLink?: string;
10
- headerImage?: string;
11
- headerImageSize?: string;
12
- sections?: any[];
13
- contentCenter?: boolean;
14
- headerCenterContent?: any;
15
- headerRightContent?: any;
16
- paddingOff?: boolean;
17
- gridToggle?: boolean;
18
- toggleMenuColor?: string;
19
- toggleMenuSize?: string;
20
- menuActiveIconColor?: string;
21
8
  }, {}, "">;
22
9
  type $$ComponentProps = {
23
10
  children: any;
24
- headerTitle?: string;
25
- headerLink?: string;
26
- headerImage?: string;
27
- headerImageSize?: string;
28
- sections?: any[];
29
- contentCenter?: boolean;
30
- headerCenterContent?: any;
31
- headerRightContent?: any;
32
- paddingOff?: boolean;
33
- gridToggle?: boolean;
34
- toggleMenuColor?: string;
35
- toggleMenuSize?: string;
36
- menuActiveIconColor?: string;
37
11
  };
package/dist/index.d.ts CHANGED
@@ -48,9 +48,11 @@ export { editorStore, resetEditorStore } from './stores/modules/editor.js';
48
48
  export { fileInputStore, resetFileInputStore } from './stores/modules/fileInput.js';
49
49
  export type { FileInputStoreMediaItem } from './stores/modules/fileInput.js';
50
50
  export { toastCarrier, setToastMessage, clearToastMessage } from './stores/modules/toast.js';
51
+ export { layoutStore, resetLayoutStore } from './stores/modules/layout.js';
51
52
  export { getPreviewUrlForMedia, toggleSelectForMedia, removeFileForMedia, DOCUMENT_MIME_TYPES, IMAGE_MIME_TYPES_PREVIEW } from './Hooks/preview.js';
52
- export { validateLayoutMenuSections } from './Hooks/layout_menu.js';
53
+ export { validateLayoutMenuSections, filterSectionsByRole } from './Hooks/layout_menu.js';
53
54
  export { buttonRipple } from './Hooks/button.js';
54
55
  export { buildSearchIndex } from './Hooks/buildSearch.js';
55
56
  export { isValidEmail } from './Hooks/validateForms.js';
56
- export type { Section, SectionItem, SearchResult } from './Hooks/buildSearch.js';
57
+ export type { SearchResult } from './Hooks/buildSearch.js';
58
+ export type { Section, SectionItem } from './stores/modules/layout.js';
package/dist/index.js CHANGED
@@ -60,9 +60,10 @@ export { modalStore, resetModalStore } from './stores/core/modal.js';
60
60
  export { editorStore, resetEditorStore } from './stores/modules/editor.js';
61
61
  export { fileInputStore, resetFileInputStore } from './stores/modules/fileInput.js';
62
62
  export { toastCarrier, setToastMessage, clearToastMessage } from './stores/modules/toast.js';
63
+ export { layoutStore, resetLayoutStore } from './stores/modules/layout.js';
63
64
  //#######################HOOKS/UTILS########################
64
65
  export { getPreviewUrlForMedia, toggleSelectForMedia, removeFileForMedia, DOCUMENT_MIME_TYPES, IMAGE_MIME_TYPES_PREVIEW } from './Hooks/preview.js';
65
- export { validateLayoutMenuSections } from './Hooks/layout_menu.js';
66
+ export { validateLayoutMenuSections, filterSectionsByRole } from './Hooks/layout_menu.js';
66
67
  export { buttonRipple } from './Hooks/button.js';
67
68
  export { buildSearchIndex } from './Hooks/buildSearch.js';
68
69
  export { isValidEmail } from './Hooks/validateForms.js';
@@ -0,0 +1,35 @@
1
+ export type SectionItem = {
2
+ id?: string;
3
+ path: string;
4
+ label: string;
5
+ icon?: string;
6
+ hidden?: boolean;
7
+ role?: string;
8
+ children?: SectionItem[];
9
+ TOC?: Partial<Record<string, string>>;
10
+ };
11
+ export type Section = {
12
+ label: string;
13
+ hidden?: boolean;
14
+ role?: string;
15
+ items: SectionItem[];
16
+ };
17
+ export type LayoutState = {
18
+ headerTitle: string;
19
+ headerLink: string;
20
+ headerImage: string;
21
+ headerImageSize: string;
22
+ sections: Section[];
23
+ contentCenter: boolean;
24
+ headerCenterContent: any;
25
+ headerRightContent: any;
26
+ paddingOff: boolean;
27
+ toggleMenuColor: string;
28
+ toggleMenuSize: string;
29
+ menuActiveIconColor: string;
30
+ backgroundColor: string;
31
+ userRole?: string;
32
+ ROLE_LEVELS: Record<any, number>;
33
+ };
34
+ export declare const layoutStore: import("svelte/store").Writable<LayoutState>;
35
+ export declare function resetLayoutStore(): void;
@@ -0,0 +1,24 @@
1
+ import { writable } from 'svelte/store';
2
+ const defaultLayoutState = {
3
+ headerTitle: '',
4
+ headerLink: '',
5
+ headerImage: '',
6
+ headerImageSize: '30px',
7
+ sections: [],
8
+ contentCenter: false,
9
+ headerCenterContent: null,
10
+ headerRightContent: null,
11
+ paddingOff: false,
12
+ toggleMenuColor: 'black',
13
+ toggleMenuSize: "25px",
14
+ menuActiveIconColor: 'var(--primary-bg)',
15
+ backgroundColor: '',
16
+ userRole: 'user',
17
+ ROLE_LEVELS: { user: 1 }
18
+ };
19
+ export const layoutStore = writable({
20
+ ...defaultLayoutState
21
+ });
22
+ export function resetLayoutStore() {
23
+ layoutStore.set({ ...defaultLayoutState });
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sierra-95/svelte-scaffold",
3
- "version": "1.0.71",
3
+ "version": "1.0.73",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run prepack",
@@ -1,16 +0,0 @@
1
- <script>
2
- let {
3
- toggleMenuColor,
4
- toggleMenuSize,
5
- } = $props();
6
- </script>
7
- <svg width={toggleMenuSize} height={toggleMenuSize} viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="#000000" stroke="#000000">
8
- <g id="SVGRepo_bgCarrier" stroke-width="0"/>
9
-
10
- <g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
11
-
12
- <g id="SVGRepo_iconCarrier">
13
-
14
- <path fill={toggleMenuColor} d="M640 384v256H384V384h256zm64 0h192v256H704V384zm-64 512H384V704h256v192zm64 0V704h192v192H704zm-64-768v192H384V128h256zm64 0h192v192H704V128zM320 384v256H128V384h192zm0 512H128V704h192v192zm0-768v192H128V128h192z"/>
15
- </g>
16
- </svg>
@@ -1,13 +0,0 @@
1
- export default GridIcon;
2
- type GridIcon = {
3
- $on?(type: string, callback: (e: any) => void): () => void;
4
- $set?(props: Partial<$$ComponentProps>): void;
5
- };
6
- declare const GridIcon: import("svelte").Component<{
7
- toggleMenuColor: any;
8
- toggleMenuSize: any;
9
- }, {}, "">;
10
- type $$ComponentProps = {
11
- toggleMenuColor: any;
12
- toggleMenuSize: any;
13
- };
@@ -1,10 +0,0 @@
1
- <script>
2
- let {
3
- toggleMenuColor,
4
- } = $props();
5
- </script>
6
- <div>
7
- <div class="bar" style="background-color: {toggleMenuColor};"></div>
8
- <div class="bar" style="background-color: {toggleMenuColor};"></div>
9
- <div class="bar" style="background-color: {toggleMenuColor};"></div>
10
- </div>
@@ -1,11 +0,0 @@
1
- export default Hamburger;
2
- type Hamburger = {
3
- $on?(type: string, callback: (e: any) => void): () => void;
4
- $set?(props: Partial<$$ComponentProps>): void;
5
- };
6
- declare const Hamburger: import("svelte").Component<{
7
- toggleMenuColor: any;
8
- }, {}, "">;
9
- type $$ComponentProps = {
10
- toggleMenuColor: any;
11
- };