flowbite-svelte 0.9.1 → 0.9.2

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 (43) hide show
  1. package/accordions/AccordionItem.svelte +31 -34
  2. package/accordions/AccordionItem.svelte.d.ts +6 -16
  3. package/buttongroups/ButtonGroup.svelte +1 -14
  4. package/buttongroups/ButtonGroup.svelte.d.ts +1 -1
  5. package/buttongroups/ButtonGroupOutline.svelte +1 -14
  6. package/buttongroups/ButtonGroupOutline.svelte.d.ts +1 -1
  7. package/cards/CtaCard.svelte +8 -19
  8. package/cards/CtaCard.svelte.d.ts +2 -2
  9. package/cards/EcommerceCard.svelte +1 -1
  10. package/cards/EcommerceCard.svelte.d.ts +2 -2
  11. package/cards/HorizontalCard.svelte +21 -24
  12. package/cards/HorizontalCard.svelte.d.ts +9 -22
  13. package/cards/InteractiveCard.svelte +96 -110
  14. package/cards/InteractiveCard.svelte.d.ts +10 -50
  15. package/darkmode/DarkMode.svelte +60 -69
  16. package/darkmode/DarkMode.svelte.d.ts +5 -12
  17. package/footer/LogoFooter.svelte +32 -48
  18. package/footer/LogoFooter.svelte.d.ts +11 -46
  19. package/footer/SimpleFooter.svelte +20 -33
  20. package/footer/SimpleFooter.svelte.d.ts +8 -36
  21. package/footer/SitemapFooter.svelte +43 -112
  22. package/footer/SitemapFooter.svelte.d.ts +13 -59
  23. package/footer/SocialMediaFooter.svelte.d.ts +14 -14
  24. package/navbar/DropdownNavbar.svelte +116 -201
  25. package/navbar/DropdownNavbar.svelte.d.ts +8 -52
  26. package/navbar/Navbar.svelte +68 -99
  27. package/navbar/Navbar.svelte.d.ts +8 -26
  28. package/package.json +1 -1
  29. package/spinners/Spinner.svelte +63 -57
  30. package/spinners/Spinner.svelte.d.ts +8 -17
  31. package/spinners/SpinnerButton.svelte +31 -31
  32. package/spinners/SpinnerButton.svelte.d.ts +6 -15
  33. package/tabs/DefaultTabs.svelte +13 -39
  34. package/tabs/DefaultTabs.svelte.d.ts +7 -23
  35. package/tabs/InteractiveTabs.svelte +33 -63
  36. package/tabs/InteractiveTabs.svelte.d.ts +7 -35
  37. package/tabs/PillTabs.svelte +12 -34
  38. package/tabs/PillTabs.svelte.d.ts +7 -21
  39. package/tooltips/LightTooltip.svelte +112 -114
  40. package/tooltips/LightTooltip.svelte.d.ts +6 -21
  41. package/tooltips/Tooltip.svelte +113 -114
  42. package/tooltips/Tooltip.svelte.d.ts +6 -21
  43. package/types.d.ts +48 -5
@@ -1,78 +1,69 @@
1
- <script>
2
- import { onMount } from "svelte";
3
- export let btnClass =
4
- "text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 fixed left-0 top-8 z-50";
5
-
6
- let mode;
7
-
8
- const toggleTheme = () => {
1
+ <script >import { onMount } from 'svelte';
2
+ export let btnClass = 'text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 fixed left-0 top-8 z-50';
3
+ let mode;
4
+ const toggleTheme = () => {
9
5
  // console.log("clicked theme icon");
10
- if (localStorage.getItem("color-theme") === "dark") {
11
- console.log("it's dark");
12
- mode = "dark";
13
- window.document.documentElement.classList.remove("dark");
14
- window.document.documentElement.classList.add("light");
15
- localStorage.setItem("color-theme", "light");
16
- } else {
17
- console.log("it's light");
18
- mode = "light";
19
- window.document.documentElement.classList.remove("light");
20
- window.document.documentElement.classList.add("dark");
21
- localStorage.setItem("color-theme", "dark");
6
+ if (localStorage.getItem('color-theme') === 'dark') {
7
+ // console.log("it's dark");
8
+ mode = 'dark';
9
+ window.document.documentElement.classList.remove('dark');
10
+ window.document.documentElement.classList.add('light');
11
+ localStorage.setItem('color-theme', 'light');
22
12
  }
23
- };
24
-
25
- onMount(() => {
26
- let themeToggleDarkIcon = document.getElementById("theme-toggle-dark-icon");
27
- let themeToggleLightIcon = document.getElementById(
28
- "theme-toggle-light-icon"
29
- );
30
- if (
31
- localStorage.getItem("color-theme") === "dark" ||
32
- (!("color-theme" in localStorage) &&
33
- window.matchMedia("(prefers-color-scheme: dark)").matches)
34
- ) {
35
- document.documentElement.classList.add("dark");
36
- themeToggleDarkIcon.classList.add("hidden");
37
- } else {
38
- document.documentElement.classList.remove("dark");
39
- themeToggleLightIcon.classList.add("hidden");
13
+ else {
14
+ // console.log("it's light");
15
+ mode = 'light';
16
+ window.document.documentElement.classList.remove('light');
17
+ window.document.documentElement.classList.add('dark');
18
+ localStorage.setItem('color-theme', 'dark');
19
+ }
20
+ };
21
+ onMount(() => {
22
+ let themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
23
+ let themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
24
+ if (localStorage.getItem('color-theme') === 'dark' ||
25
+ (!('color-theme' in localStorage) &&
26
+ window.matchMedia('(prefers-color-scheme: dark)').matches)) {
27
+ document.documentElement.classList.add('dark');
28
+ themeToggleDarkIcon.classList.add('hidden');
29
+ }
30
+ else {
31
+ document.documentElement.classList.remove('dark');
32
+ themeToggleLightIcon.classList.add('hidden');
40
33
  }
41
- });
34
+ });
42
35
  </script>
43
36
 
44
37
  <button
45
- on:click={toggleTheme}
46
- aria-label="Dark mode"
47
- id="theme-toggle"
48
- type="button"
49
- class={btnClass}
38
+ on:click={toggleTheme}
39
+ aria-label="Dark mode"
40
+ id="theme-toggle"
41
+ type="button"
42
+ class={btnClass}
50
43
  >
51
- <svg
52
- class:hidden={mode === "light"}
53
- on:click={() => (mode = "dark")}
54
- id="theme-toggle-dark-icon"
55
- class="hidden w-5 h-5"
56
- fill="currentColor"
57
- viewBox="0 0 20 20"
58
- xmlns="http://www.w3.org/2000/svg"
59
- ><path
60
- d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"
61
- /></svg
62
- >
44
+ <svg
45
+ class:hidden={mode === 'light'}
46
+ on:click={() => (mode = 'dark')}
47
+ id="theme-toggle-dark-icon"
48
+ class="hidden w-5 h-5"
49
+ fill="currentColor"
50
+ viewBox="0 0 20 20"
51
+ xmlns="http://www.w3.org/2000/svg"
52
+ ><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" /></svg
53
+ >
63
54
 
64
- <svg
65
- class:hidden={mode === "dark"}
66
- on:click={() => (mode = "light")}
67
- id="theme-toggle-light-icon"
68
- class="hidden w-5 h-5"
69
- fill="currentColor"
70
- viewBox="0 0 20 20"
71
- xmlns="http://www.w3.org/2000/svg"
72
- ><path
73
- d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
74
- fill-rule="evenodd"
75
- clip-rule="evenodd"
76
- /></svg
77
- >
55
+ <svg
56
+ class:hidden={mode === 'dark'}
57
+ on:click={() => (mode = 'light')}
58
+ id="theme-toggle-light-icon"
59
+ class="hidden w-5 h-5"
60
+ fill="currentColor"
61
+ viewBox="0 0 20 20"
62
+ xmlns="http://www.w3.org/2000/svg"
63
+ ><path
64
+ d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
65
+ fill-rule="evenodd"
66
+ clip-rule="evenodd"
67
+ /></svg
68
+ >
78
69
  </button>
@@ -1,15 +1,3 @@
1
- /** @typedef {typeof __propDef.props} DarkModeProps */
2
- /** @typedef {typeof __propDef.events} DarkModeEvents */
3
- /** @typedef {typeof __propDef.slots} DarkModeSlots */
4
- export default class DarkMode extends SvelteComponentTyped<{
5
- btnClass?: string;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type DarkModeProps = typeof __propDef.props;
11
- export type DarkModeEvents = typeof __propDef.events;
12
- export type DarkModeSlots = typeof __propDef.slots;
13
1
  import { SvelteComponentTyped } from "svelte";
14
2
  declare const __propDef: {
15
3
  props: {
@@ -20,4 +8,9 @@ declare const __propDef: {
20
8
  };
21
9
  slots: {};
22
10
  };
11
+ export declare type DarkModeProps = typeof __propDef.props;
12
+ export declare type DarkModeEvents = typeof __propDef.events;
13
+ export declare type DarkModeSlots = typeof __propDef.slots;
14
+ export default class DarkMode extends SvelteComponentTyped<DarkModeProps, DarkModeEvents, DarkModeSlots> {
15
+ }
23
16
  export {};
@@ -1,52 +1,36 @@
1
- <script>
2
- export let site = {
3
- link: "/",
4
- name: "Flowbite Svelte",
5
- img: "/images/mkdir-logo.png",
6
- };
7
-
8
- export let links = [
9
- { name: "About", link: "/about", rel: undefined },
10
- { name: "Privacy Policy", link: "/", rel: undefined },
11
- { name: "Licensing", link: "/", rel: undefined },
12
- { name: "Contact", link: "/", rel: undefined },
13
- ];
14
- export let footerClass =
15
- "p-4 bg-white rounded-lg shadow md:px-6 md:py-8 dark:bg-gray-800";
16
- export let divClass = "sm:flex sm:items-center sm:justify-between";
17
- export let siteNameClass =
18
- "self-center text-2xl font-semibold whitespace-nowrap dark:text-white";
19
- export let ulClass =
20
- "flex flex-wrap items-center mb-6 text-sm text-gray-500 sm:mb-0 dark:text-gray-400";
21
- export let aClass = "mr-4 hover:underline md:mr-6";
22
- export let siteNameLinkClass = "flex items-center mb-4 sm:mb-0";
23
- export let imgClass = "mr-3 h-8";
24
- export let hrClass =
25
- "my-6 border-gray-200 sm:mx-auto dark:border-gray-700 lg:my-8";
26
- export let copyRightSpanClass =
27
- "block text-sm text-gray-500 sm:text-center dark:text-gray-400";
28
- export let copyRightLinkClass = "hover:underline";
29
- export let copyrightYear = "© 2022";
30
- export let allRightsReserved = "All Rights Reserved.";
1
+ <script >export let site;
2
+ export let links;
3
+ export let footerClass = 'p-4 bg-white rounded-lg shadow md:px-6 md:py-8 dark:bg-gray-800';
4
+ export let divClass = 'sm:flex sm:items-center sm:justify-between';
5
+ export let siteNameClass = 'self-center text-2xl font-semibold whitespace-nowrap dark:text-white';
6
+ export let ulClass = 'flex flex-wrap items-center mb-6 text-sm text-gray-500 sm:mb-0 dark:text-gray-400';
7
+ export let aClass = 'mr-4 hover:underline md:mr-6';
8
+ export let siteNameLinkClass = 'flex items-center mb-4 sm:mb-0';
9
+ export let imgClass = 'mr-3 h-8';
10
+ export let hrClass = 'my-6 border-gray-200 sm:mx-auto dark:border-gray-700 lg:my-8';
11
+ export let copyRightSpanClass = 'block text-sm text-gray-500 sm:text-center dark:text-gray-400';
12
+ export let copyRightLinkClass = 'hover:underline';
13
+ export let copyrightYear = '© 2022';
14
+ export let allRightsReserved = 'All Rights Reserved.';
31
15
  </script>
32
16
 
33
17
  <footer class={footerClass}>
34
- <div class={divClass}>
35
- <a href={site.link} class={siteNameLinkClass}>
36
- <img src={site.img} class={imgClass} alt={site.name} />
37
- <span class={siteNameClass}>{site.name}</span>
38
- </a>
39
- <ul class={ulClass}>
40
- {#each links as { name, link, rel }}
41
- <li>
42
- <a href={link} {rel} class={aClass}>{name}</a>
43
- </li>
44
- {/each}
45
- </ul>
46
- </div>
47
- <hr class={hrClass} />
48
- <span class={copyRightSpanClass}
49
- >{copyrightYear}
50
- <a href={site.link} class={copyRightLinkClass}>{site.name}</a>. {allRightsReserved}
51
- </span>
18
+ <div class={divClass}>
19
+ <a href={site.link} class={siteNameLinkClass}>
20
+ <img src={site.img} class={imgClass} alt={site.name} />
21
+ <span class={siteNameClass}>{site.name}</span>
22
+ </a>
23
+ <ul class={ulClass}>
24
+ {#each links as { name, link, rel }}
25
+ <li>
26
+ <a href={link} {rel} class={aClass}>{name}</a>
27
+ </li>
28
+ {/each}
29
+ </ul>
30
+ </div>
31
+ <hr class={hrClass} />
32
+ <span class={copyRightSpanClass}
33
+ >{copyrightYear}
34
+ <a href={site.link} class={copyRightLinkClass}>{site.name}</a>. {allRightsReserved}
35
+ </span>
52
36
  </footer>
@@ -1,65 +1,30 @@
1
- /** @typedef {typeof __propDef.props} LogoFooterProps */
2
- /** @typedef {typeof __propDef.events} LogoFooterEvents */
3
- /** @typedef {typeof __propDef.slots} LogoFooterSlots */
4
- export default class LogoFooter extends SvelteComponentTyped<{
5
- site?: {
6
- link: string;
7
- name: string;
8
- img: string;
9
- };
10
- links?: {
11
- name: string;
12
- link: string;
13
- rel: any;
14
- }[];
15
- footerClass?: string;
16
- siteNameClass?: string;
17
- ulClass?: string;
18
- aClass?: string;
19
- siteNameLinkClass?: string;
20
- copyrightYear?: string;
21
- allRightsReserved?: string;
22
- divClass?: string;
23
- imgClass?: string;
24
- hrClass?: string;
25
- copyRightSpanClass?: string;
26
- copyRightLinkClass?: string;
27
- }, {
28
- [evt: string]: CustomEvent<any>;
29
- }, {}> {
30
- }
31
- export type LogoFooterProps = typeof __propDef.props;
32
- export type LogoFooterEvents = typeof __propDef.events;
33
- export type LogoFooterSlots = typeof __propDef.slots;
34
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { LinkType, SiteType } from '../types';
35
3
  declare const __propDef: {
36
4
  props: {
37
- site?: {
38
- link: string;
39
- name: string;
40
- img: string;
41
- };
42
- links?: {
43
- name: string;
44
- link: string;
45
- rel: any;
46
- }[];
5
+ site: SiteType;
6
+ links: LinkType[];
47
7
  footerClass?: string;
8
+ divClass?: string;
48
9
  siteNameClass?: string;
49
10
  ulClass?: string;
50
11
  aClass?: string;
51
12
  siteNameLinkClass?: string;
52
- copyrightYear?: string;
53
- allRightsReserved?: string;
54
- divClass?: string;
55
13
  imgClass?: string;
56
14
  hrClass?: string;
57
15
  copyRightSpanClass?: string;
58
16
  copyRightLinkClass?: string;
17
+ copyrightYear?: string;
18
+ allRightsReserved?: string;
59
19
  };
60
20
  events: {
61
21
  [evt: string]: CustomEvent<any>;
62
22
  };
63
23
  slots: {};
64
24
  };
25
+ export declare type LogoFooterProps = typeof __propDef.props;
26
+ export declare type LogoFooterEvents = typeof __propDef.events;
27
+ export declare type LogoFooterSlots = typeof __propDef.slots;
28
+ export default class LogoFooter extends SvelteComponentTyped<LogoFooterProps, LogoFooterEvents, LogoFooterSlots> {
29
+ }
65
30
  export {};
@@ -1,37 +1,24 @@
1
- <script>
2
- export let site = {
3
- link: "/",
4
- name: "Flowbite Svelte",
5
- };
6
- export let links = [
7
- { name: "About", link: "/about", rel: undefined },
8
- { name: "Privacy Policy", link: "/", rel: undefined },
9
- { name: "Licensing", link: "/", rel: undefined },
10
- { name: "Contact", link: "/", rel: undefined },
11
- ];
12
- export let footerClass =
13
- "p-4 bg-white rounded-lg shadow md:flex md:items-center md:justify-between md:p-6 dark:bg-gray-800";
14
- export let siteNameClass =
15
- "text-sm text-gray-500 sm:text-center dark:text-gray-400";
16
- export let ulClass = "flex flex-wrap items-center mt-3 sm:mt-0";
17
- export let aClass =
18
- "mr-4 text-sm text-gray-500 hover:underline md:mr-6 dark:text-gray-400";
19
- export let siteNameLinkClass = "hover:underline";
20
- export let copyrightYear = "© 2022";
21
- export let allRightsReserved = "All Rights Reserved.";
1
+ <script >export let site;
2
+ export let links;
3
+ export let footerClass = 'p-4 bg-white rounded-lg shadow md:flex md:items-center md:justify-between md:p-6 dark:bg-gray-800';
4
+ export let siteNameClass = 'text-sm text-gray-500 sm:text-center dark:text-gray-400';
5
+ export let ulClass = 'flex flex-wrap items-center mt-3 sm:mt-0';
6
+ export let aClass = 'mr-4 text-sm text-gray-500 hover:underline md:mr-6 dark:text-gray-400';
7
+ export let siteNameLinkClass = 'hover:underline';
8
+ export let copyrightYear = 2022';
9
+ export let allRightsReserved = 'All Rights Reserved.';
22
10
  </script>
23
11
 
24
12
  <footer class={footerClass}>
25
- <span class={siteNameClass}
26
- >{copyrightYear}
27
- <a href={site.link} class={siteNameLinkClass} target="_blank">{site.name}</a
28
- >. {allRightsReserved}
29
- </span>
30
- <ul class={ulClass}>
31
- {#each links as { name, link, rel }}
32
- <li>
33
- <a href={link} {rel} class={aClass}>{name}</a>
34
- </li>
35
- {/each}
36
- </ul>
13
+ <span class={siteNameClass}
14
+ >{copyrightYear}
15
+ <a href={site.link} class={siteNameLinkClass} target="_blank">{site.name}</a>. {allRightsReserved}
16
+ </span>
17
+ <ul class={ulClass}>
18
+ {#each links as { name, link, rel }}
19
+ <li>
20
+ <a href={link} {rel} class={aClass}>{name}</a>
21
+ </li>
22
+ {/each}
23
+ </ul>
37
24
  </footer>
@@ -1,42 +1,9 @@
1
- /** @typedef {typeof __propDef.props} SimpleFooterProps */
2
- /** @typedef {typeof __propDef.events} SimpleFooterEvents */
3
- /** @typedef {typeof __propDef.slots} SimpleFooterSlots */
4
- export default class SimpleFooter extends SvelteComponentTyped<{
5
- site?: {
6
- link: string;
7
- name: string;
8
- };
9
- links?: {
10
- name: string;
11
- link: string;
12
- rel: any;
13
- }[];
14
- footerClass?: string;
15
- siteNameClass?: string;
16
- ulClass?: string;
17
- aClass?: string;
18
- siteNameLinkClass?: string;
19
- copyrightYear?: string;
20
- allRightsReserved?: string;
21
- }, {
22
- [evt: string]: CustomEvent<any>;
23
- }, {}> {
24
- }
25
- export type SimpleFooterProps = typeof __propDef.props;
26
- export type SimpleFooterEvents = typeof __propDef.events;
27
- export type SimpleFooterSlots = typeof __propDef.slots;
28
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { LinkType, SiteType } from '../types';
29
3
  declare const __propDef: {
30
4
  props: {
31
- site?: {
32
- link: string;
33
- name: string;
34
- };
35
- links?: {
36
- name: string;
37
- link: string;
38
- rel: any;
39
- }[];
5
+ site: SiteType;
6
+ links: LinkType[];
40
7
  footerClass?: string;
41
8
  siteNameClass?: string;
42
9
  ulClass?: string;
@@ -50,4 +17,9 @@ declare const __propDef: {
50
17
  };
51
18
  slots: {};
52
19
  };
20
+ export declare type SimpleFooterProps = typeof __propDef.props;
21
+ export declare type SimpleFooterEvents = typeof __propDef.events;
22
+ export declare type SimpleFooterSlots = typeof __propDef.slots;
23
+ export default class SimpleFooter extends SvelteComponentTyped<SimpleFooterProps, SimpleFooterEvents, SimpleFooterSlots> {
24
+ }
53
25
  export {};
@@ -1,116 +1,47 @@
1
- <script>
2
- export let site = {
3
- link: "/",
4
- name: "Flowbite Svelte",
5
- img: "/images/mkdir-logo.png",
6
- };
7
- export let links = [
8
- {
9
- parent: "Company",
10
- children: [
11
- { name: "About", link: "/" },
12
- {
13
- name: "Careers",
14
- link: "/",
15
- },
16
- { name: "Brand Center", link: "/" },
17
- {
18
- name: "Blog",
19
- link: "/",
20
- },
21
- ],
22
- },
23
- {
24
- parent: "Help center",
25
- children: [
26
- { name: "Discord Server", link: "/" },
27
- {
28
- name: "Twitter",
29
- link: "/",
30
- },
31
- { name: "Facebook", link: "/" },
32
- {
33
- name: "Contact Us",
34
- link: "/",
35
- },
36
- ],
37
- },
38
- {
39
- parent: "LEGAL",
40
- children: [
41
- { name: "Privacy Policy", link: "/" },
42
- { name: "Licensing", link: "/" },
43
- {
44
- name: "Terms & Conditions",
45
- link: "/",
46
- },
47
- ],
48
- },
49
- {
50
- parent: "Download",
51
- children: [
52
- { name: "iOS", link: "/" },
53
- { name: "Android", link: "/" },
54
- {
55
- name: "Windows",
56
- link: "/",
57
- },
58
- {
59
- name: "MacOS",
60
- link: "/",
61
- },
62
- ],
63
- },
64
- ];
65
- export let socialMedia = [
66
- {
67
- link: "/",
68
- icon: "",
69
- },
70
- ];
71
- export let footerClass = "bg-gray-800";
72
- export let linksClass = "grid grid-cols-2 gap-8 py-8 px-6 md:grid-cols-4";
73
- export let parentClass = "mb-6 text-sm font-semibold text-gray-400 uppercase";
74
- export let ulClass = "text-gray-300";
75
- export let linkClass = "hover:underline";
76
- export let copyrightDivClass =
77
- "py-6 px-4 bg-gray-700 md:flex md:items-center md:justify-between";
78
- export let copyrightClass = "text-sm text-gray-300 sm:text-center";
79
- export let socialMediaDivClass =
80
- "flex mt-4 space-x-6 sm:justify-center md:mt-0";
81
- export let socialMediaLinkClass = "text-gray-400 hover:text-white";
82
- export let iconClass = "h-5 w-5 mr-2";
83
- export let copyrightYear = "© 2022";
84
- export let allRightsReserved = "All Rights Reserved.";
1
+ <script >export let site;
2
+ export let links;
3
+ export let socialMedia;
4
+ export let footerClass = 'bg-gray-800';
5
+ export let linksClass = 'grid grid-cols-2 gap-8 py-8 px-6 md:grid-cols-4';
6
+ export let parentClass = 'mb-6 text-sm font-semibold text-gray-400 uppercase';
7
+ export let ulClass = 'text-gray-300';
8
+ export let linkClass = 'hover:underline';
9
+ export let copyrightDivClass = 'py-6 px-4 bg-gray-700 md:flex md:items-center md:justify-between';
10
+ export let copyrightClass = 'text-sm text-gray-300 sm:text-center';
11
+ export let socialMediaDivClass = 'flex mt-4 space-x-6 sm:justify-center md:mt-0';
12
+ export let socialMediaLinkClass = 'text-gray-400 hover:text-white';
13
+ export let iconClass = 'h-5 w-5 mr-2';
14
+ export let copyrightYear = '© 2022';
15
+ export let allRightsReserved = 'All Rights Reserved.';
85
16
  </script>
86
17
 
87
18
  <footer class={footerClass}>
88
- <div class={linksClass}>
89
- {#each links as { parent, children }}
90
- <div>
91
- <h2 class={parentClass}>
92
- {parent}
93
- </h2>
94
- <ul class={ulClass}>
95
- {#each children as { name, link }}
96
- <li class="mb-4">
97
- <a href={link} class={linkClass}>{name}</a>
98
- </li>
99
- {/each}
100
- </ul>
101
- </div>
102
- {/each}
103
- </div>
104
- <div class={copyrightDivClass}>
105
- <span class={copyrightClass}
106
- >{copyrightYear} <a href={site.link}>{site.name}</a>. {allRightsReserved}
107
- </span>
108
- <div class={socialMediaDivClass}>
109
- {#each socialMedia as { link, icon }}
110
- <a href={link} class={socialMediaLinkClass}>
111
- <svelte:component this={icon} className={iconClass} />
112
- </a>
113
- {/each}
114
- </div>
115
- </div>
19
+ <div class={linksClass}>
20
+ {#each links as { parent, children }}
21
+ <div>
22
+ <h2 class={parentClass}>
23
+ {parent}
24
+ </h2>
25
+ <ul class={ulClass}>
26
+ {#each children as { name, link }}
27
+ <li class="mb-4">
28
+ <a href={link} class={linkClass}>{name}</a>
29
+ </li>
30
+ {/each}
31
+ </ul>
32
+ </div>
33
+ {/each}
34
+ </div>
35
+ <div class={copyrightDivClass}>
36
+ <span class={copyrightClass}
37
+ >{copyrightYear} <a href={site.link}>{site.name}</a>. {allRightsReserved}
38
+ </span>
39
+ <div class={socialMediaDivClass}>
40
+ {#each socialMedia as { link, icon }}
41
+ <a href={link} class={socialMediaLinkClass}>
42
+ <svelte:component this={icon} className={iconClass} />
43
+ </a>
44
+ {/each}
45
+ </div>
46
+ </div>
116
47
  </footer>