@turnipxenon/pineapple 3.0.0-alpha.9 → 3.1.0-alpha.1

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 (142) hide show
  1. package/dist/components/blog_template/BlogTemplate.svelte +2 -2
  2. package/dist/components/blog_template/BlogTemplate.svelte.d.ts +1 -1
  3. package/dist/components/blog_template/BlogTemplateInner.svelte +1 -1
  4. package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +1 -1
  5. package/dist/components/dialog_manager/DialogManager.d.ts +2 -1
  6. package/dist/components/dialog_manager/DialogMangerInit.d.ts +2 -15
  7. package/dist/components/dialog_manager/DialogMangerInit.js +8 -2
  8. package/dist/components/dialog_manager/IDialogManager.d.ts +39 -0
  9. package/dist/components/dialog_manager/IDialogManager.js +4 -0
  10. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +3 -0
  11. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +15 -3
  12. package/dist/components/dialog_overlay/DialogOverlay.svelte +155 -36
  13. package/dist/components/layouts/SeaweedBaseLayout.svelte +0 -6
  14. package/dist/components/pineapple/PineappleBaseLayout.svelte +2 -21
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.js +2 -3
  17. package/dist/styles/app.css +9 -14
  18. package/dist/ui/components/ModalBase.svelte +74 -74
  19. package/dist/ui/components/SocialSection.svelte +6 -2
  20. package/dist/ui/components/accordion/PinyaAccordion.svelte +20 -20
  21. package/dist/ui/components/accordion/PinyaAccordionItem.svelte +28 -28
  22. package/dist/ui/elements/CodeBlock/CodeBlock.svelte +64 -64
  23. package/dist/ui/elements/ImageIcon.svelte +53 -53
  24. package/dist/ui/elements/{pinya-button/component.svelte → PinyaButton/PinyaButton.svelte} +4 -3
  25. package/dist/ui/elements/PinyaButton/PinyaButton.svelte.d.ts +4 -0
  26. package/dist/ui/elements/{pinya-button/props.d.ts → PinyaButton/PinyaButtonProps.d.ts} +1 -0
  27. package/dist/ui/elements/PinyaButton/index.d.ts +2 -0
  28. package/dist/ui/elements/PinyaButton/index.js +2 -0
  29. package/dist/ui/elements/{pinya-card/component.svelte → PinyaCard/PinyaCard.svelte} +21 -20
  30. package/dist/ui/elements/PinyaCard/PinyaCard.svelte.d.ts +7 -0
  31. package/dist/ui/elements/PinyaCard/index.d.ts +2 -0
  32. package/dist/ui/elements/PinyaCard/index.js +2 -0
  33. package/dist/ui/elements/Placeholder.svelte +17 -17
  34. package/dist/ui/elements/TextLink.svelte +16 -16
  35. package/dist/ui/elements/index.d.ts +2 -2
  36. package/dist/ui/elements/index.js +2 -2
  37. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +34 -34
  38. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +1 -0
  39. package/dist/ui/elements/text-chip/TextChip.svelte +14 -14
  40. package/dist/{components/navigation_component → ui/modules/NavigationMenu}/NavigationControl.svelte +24 -20
  41. package/dist/{components/navigation_component/NavigationComponent.svelte → ui/modules/NavigationMenu/NavigationMenu.svelte} +69 -43
  42. package/dist/{components/navigation_component/NavigationComponent.svelte.d.ts → ui/modules/NavigationMenu/NavigationMenu.svelte.d.ts} +6 -6
  43. package/dist/{components/navigation_component → ui/modules/NavigationMenu}/PageMeta.d.ts +4 -4
  44. package/dist/ui/modules/NavigationMenu/index.d.ts +2 -0
  45. package/dist/ui/modules/NavigationMenu/index.js +2 -0
  46. package/dist/ui/modules/index.d.ts +1 -1
  47. package/dist/ui/modules/index.js +1 -1
  48. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +109 -109
  49. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +42 -37
  50. package/dist/ui/modules/projects/Hepcat.svelte +6 -4
  51. package/dist/ui/modules/projects/Hepcat.svelte.d.ts +1 -1
  52. package/dist/ui/modules/projects/Pengi.svelte +61 -59
  53. package/dist/ui/modules/projects/Pengi.svelte.d.ts +1 -1
  54. package/dist/ui/modules/projects/Soulwork.svelte +7 -5
  55. package/dist/ui/modules/projects/ThisWebpage.svelte +19 -16
  56. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +1 -1
  57. package/dist/ui/templates/{pinya-page-layout/component.svelte → PinyaPageLayout/PinyaPageLayout.svelte} +1 -1
  58. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +9 -0
  59. package/dist/ui/templates/PinyaPageLayout/index.d.ts +2 -0
  60. package/dist/ui/templates/PinyaPageLayout/index.js +2 -0
  61. package/dist/ui/templates/{pinya-page-layout → PinyaPageLayout}/runes.svelte.d.ts +3 -0
  62. package/dist/ui/templates/PinyaPageLayout/runes.svelte.js +4 -0
  63. package/dist/ui/{modules/seaweed → templates/SeaweedLayout}/ChumBucket.svelte +1 -1
  64. package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte +2 -2
  65. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte +65 -88
  66. package/dist/ui/templates/SeaweedLayout/EntryOrderConfig.svelte.d.ts +9 -0
  67. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.d.ts +1 -0
  68. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte +316 -316
  69. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte.d.ts +1 -1
  70. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.md +3 -3
  71. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte +278 -276
  72. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.d.ts +2 -2
  73. package/dist/ui/templates/confirmation-modal/component.svelte +46 -46
  74. package/dist/ui/templates/index.d.ts +2 -2
  75. package/dist/ui/templates/index.js +2 -2
  76. package/package.json +3 -2
  77. package/src/lib/styles/app.css +9 -14
  78. package/dist/components/navigation_component/index.d.ts +0 -2
  79. package/dist/components/navigation_component/index.js +0 -3
  80. package/dist/template/seaweed/ParseQueryTerms.d.ts +0 -1
  81. package/dist/template/seaweed/ParseQueryTerms.js +0 -23
  82. package/dist/template/seaweed/RunChaos.d.ts +0 -1
  83. package/dist/template/seaweed/RunChaos.js +0 -41
  84. package/dist/template/seaweed/SeaweedTemplate.svelte +0 -336
  85. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +0 -32
  86. package/dist/template/seaweed/SeaweedTemplateData.d.ts +0 -30
  87. package/dist/template/seaweed/SeaweedTemplateData.js +0 -79
  88. package/dist/template/seaweed/entries/ChefWings.svelte +0 -45
  89. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +0 -7
  90. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +0 -40
  91. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +0 -7
  92. package/dist/template/seaweed/entries/EntryProps.d.ts +0 -16
  93. package/dist/template/seaweed/entries/EntryProps.js +0 -5
  94. package/dist/template/seaweed/entries/Hepcat.svelte +0 -64
  95. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +0 -7
  96. package/dist/template/seaweed/entries/Pengi.svelte +0 -57
  97. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +0 -7
  98. package/dist/template/seaweed/entries/Soulwork.svelte +0 -54
  99. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +0 -7
  100. package/dist/template/seaweed/entries/ThisWebpage.svelte +0 -55
  101. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +0 -7
  102. package/dist/template/seaweed/entries/WorkExperience.svelte +0 -130
  103. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +0 -8
  104. package/dist/template/seaweed/entries/Workset.svelte +0 -57
  105. package/dist/template/seaweed/entries/Workset.svelte.d.ts +0 -7
  106. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.d.ts +0 -1
  107. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.js +0 -8
  108. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +0 -297
  109. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +0 -12
  110. package/dist/template/seaweed/entry_order_config/entry-order-config.postcss +0 -35
  111. package/dist/template/seaweed/index.d.ts +0 -4
  112. package/dist/template/seaweed/index.js +0 -4
  113. package/dist/template/seaweed/seaweed.postcss +0 -125
  114. package/dist/ui/elements/pinya-button/component.svelte.d.ts +0 -4
  115. package/dist/ui/elements/pinya-button/index.d.ts +0 -2
  116. package/dist/ui/elements/pinya-button/index.js +0 -2
  117. package/dist/ui/elements/pinya-card/component.svelte.d.ts +0 -7
  118. package/dist/ui/elements/pinya-card/index.d.ts +0 -2
  119. package/dist/ui/elements/pinya-card/index.js +0 -2
  120. package/dist/ui/modules/seaweed/index.d.ts +0 -3
  121. package/dist/ui/modules/seaweed/index.js +0 -4
  122. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +0 -9
  123. package/dist/ui/templates/pinya-page-layout/index.d.ts +0 -2
  124. package/dist/ui/templates/pinya-page-layout/index.js +0 -2
  125. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +0 -3
  126. package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte.d.ts +0 -9
  127. /package/dist/ui/elements/{pinya-button/props.js → PinyaButton/PinyaButtonProps.js} +0 -0
  128. /package/dist/ui/elements/{pinya-card/props.d.ts → PinyaCard/PinyaCardProps.d.ts} +0 -0
  129. /package/dist/{template/seaweed/ToastSettings.js → ui/elements/PinyaCard/PinyaCardProps.js} +0 -0
  130. /package/dist/{components/navigation_component → ui/modules/NavigationMenu}/NavigationControl.svelte.d.ts +0 -0
  131. /package/dist/{components/navigation_component → ui/modules/NavigationMenu}/PageMeta.js +0 -0
  132. /package/dist/ui/{modules/seaweed → templates/SeaweedLayout}/ChumBucket.svelte.d.ts +0 -0
  133. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte.d.ts +0 -0
  134. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte.d.ts +0 -0
  135. /package/dist/ui/templates/{seaweed-layout/EntryOrderConfig2.svelte → SeaweedLayout/EntryOrderConfig.svelte} +0 -0
  136. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.js +0 -0
  137. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte.d.ts +0 -0
  138. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.d.ts +0 -0
  139. /package/dist/ui/{elements/pinya-card/props.js → templates/SeaweedLayout/ToastSettings.js} +0 -0
  140. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.d.ts +0 -0
  141. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.js +0 -0
  142. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.js +0 -0
@@ -1,17 +1,17 @@
1
- <script lang="ts">
2
- import { type Snippet } from 'svelte';
3
-
4
- let {
5
- children,
6
- href
7
- }: { href: string, children: Snippet } = $props();
8
- </script>
9
-
10
- <a
11
- {href}
12
- class="visited:text-surface-950 dark:visited:text-surface-400">
13
- {@render children?.()}
14
- </a>
15
-
16
- <style>
1
+ <script lang="ts">
2
+ import { type Snippet } from 'svelte';
3
+
4
+ let {
5
+ children,
6
+ href
7
+ }: { href: string, children: Snippet } = $props();
8
+ </script>
9
+
10
+ <a
11
+ {href}
12
+ class="visited:text-surface-950 dark:visited:text-surface-400">
13
+ {@render children?.()}
14
+ </a>
15
+
16
+ <style>
17
17
  </style>
@@ -4,8 +4,8 @@ export { default as ElementVisibilityDetector } from "./ElementVisibilityDetecto
4
4
  export * from "./ColorScheme";
5
5
  export * from "./GeneralUIProps";
6
6
  export * from "./OnBackground";
7
- export * from "./pinya-card/index";
7
+ export * from "./PinyaCard/index";
8
8
  export * from "./WrapperProps";
9
- export * from "./pinya-button/index";
9
+ export * from "./PinyaButton/index";
10
10
  export * from "./text-chip";
11
11
  export * from "./CodeBlock";
@@ -4,8 +4,8 @@ export { default as ElementVisibilityDetector } from "./ElementVisibilityDetecto
4
4
  export * from "./ColorScheme";
5
5
  export * from "./GeneralUIProps";
6
6
  export * from "./OnBackground";
7
- export * from "./pinya-card/index";
7
+ export * from "./PinyaCard/index";
8
8
  export * from "./WrapperProps";
9
- export * from "./pinya-button/index";
9
+ export * from "./PinyaButton/index";
10
10
  export * from "./text-chip";
11
11
  export * from "./CodeBlock";
@@ -1,35 +1,35 @@
1
- <script lang="ts" generics="T extends string">
2
- import { Combobox } from '@skeletonlabs/skeleton-svelte';
3
- import { getLocale, localizeHref } from '../../../paraglide/runtime';
4
- import type { PinyaComboboxProps, ValueChangeDetails } from "./PinyaComboboxProps";
5
-
6
- let {
7
- contentZIndex = 'auto',
8
- value = $bindable(),
9
- onValueChange = () => {},
10
- onValueChangeBase = undefined,
11
- ...props
12
- }: PinyaComboboxProps<T> = $props();
13
-
14
- const onValueChangeBaseImpl = (e: ValueChangeDetails<T>) => {
15
- value = e.value as T[];
16
- onValueChange(e);
17
- };
18
- </script>
19
-
20
- <Combobox
21
- width="w-full"
22
- labelText="text-md"
23
- inputGroupBase="w-full flex items-center border-primary-500 border-2 rounded-xl"
24
- inputGroupInput="grow bg-transparent border-0 dark:placeholder-surface-50 pl-4"
25
- inputGroupButton="size-[3rem]"
26
- inputGroupArrow="size-[2rem] m-auto"
27
- contentBackground="bg-surface-100-900 border-primary-500 border-2"
28
- zIndex={contentZIndex}
29
- optionActive="bg-secondary-400-600"
30
- optionHover="hover:brightness-75 dark:hover:brightness-125"
31
- optionClasses='aria-selected:brightness-75 aria-selected:dark:brightness-125'
32
- onValueChange={onValueChangeBase ?? onValueChangeBaseImpl}
33
- {value}
34
- {...props}
1
+ <script lang="ts" generics="T extends string">
2
+ import { Combobox } from '@skeletonlabs/skeleton-svelte';
3
+ import { getLocale, localizeHref } from '../../../paraglide/runtime';
4
+ import type { PinyaComboboxProps, ValueChangeDetails } from "./PinyaComboboxProps";
5
+
6
+ let {
7
+ contentZIndex = 'auto',
8
+ value = $bindable(),
9
+ onValueChange = () => {},
10
+ onValueChangeBase = undefined,
11
+ ...props
12
+ }: PinyaComboboxProps<T> = $props();
13
+
14
+ const onValueChangeBaseImpl = (e: ValueChangeDetails<T>) => {
15
+ value = e.value as T[];
16
+ onValueChange(e);
17
+ };
18
+ </script>
19
+
20
+ <Combobox
21
+ width="w-full"
22
+ labelText="text-md"
23
+ inputGroupBase="w-full flex items-center border-primary-500 border-2 rounded-xl"
24
+ inputGroupInput="grow bg-transparent border-0 dark:placeholder-surface-50 pl-4"
25
+ inputGroupButton="size-[3rem]"
26
+ inputGroupArrow="size-[2rem] m-auto"
27
+ contentBackground="bg-surface-100-900 border-primary-500 border-2"
28
+ zIndex={contentZIndex}
29
+ optionActive="bg-secondary-400-600"
30
+ optionHover="hover:brightness-75 dark:hover:brightness-125"
31
+ optionClasses='aria-selected:brightness-75 aria-selected:dark:brightness-125'
32
+ onValueChange={onValueChangeBase ?? onValueChangeBaseImpl}
33
+ {value}
34
+ {...props}
35
35
  />
@@ -15,4 +15,5 @@ export interface PinyaComboboxProps<T extends string> {
15
15
  onValueChange?: (selectedList: ValueChangeDetails<T>) => void;
16
16
  onValueChangeBase?: (selectedList: ValueChangeDetails<T>) => void;
17
17
  contentZIndex?: string;
18
+ disabled?: boolean;
18
19
  }
@@ -1,15 +1,15 @@
1
- <script lang="ts">
2
- import type { TextChipProps } from "./TextChipProps";
3
-
4
- let { children, queryClass = "" }: TextChipProps = $props();
5
- </script>
6
-
7
- <span class={`chip text-chip font-bold pointer-events-none ${queryClass}`}>{@render children()}</span>
8
-
9
- <style>
10
- /*noinspection CssUnusedSymbol*/
11
- :global(.highlight-chip.text-chip) {
12
- background-color: var(--color-secondary-500) /* oklch(55.6% 0 0deg) = #737373 */;
13
- color: var(--color-secondary-contrast-500) /* var(--color-secondary-contrast-light) */;
14
- }
1
+ <script lang="ts">
2
+ import type { TextChipProps } from "./TextChipProps";
3
+
4
+ let { children, queryClass = "" }: TextChipProps = $props();
5
+ </script>
6
+
7
+ <span class={`chip text-chip font-bold pointer-events-none ${queryClass}`}>{@render children()}</span>
8
+
9
+ <style>
10
+ /*noinspection CssUnusedSymbol*/
11
+ :global(.highlight-chip.text-chip) {
12
+ background-color: var(--color-secondary-500) /* oklch(55.6% 0 0deg) = #737373 */;
13
+ color: var(--color-secondary-contrast-500) /* var(--color-secondary-contrast-light) */;
14
+ }
15
15
  </style>
@@ -1,9 +1,8 @@
1
1
  <script lang="ts">
2
2
  import { onMount } from "svelte";
3
3
  import { page } from "$app/state";
4
-
5
- import { Card } from "../index";
6
4
  import { goto } from "$app/navigation";
5
+ import { PinyaButton, PinyaCard } from "../../elements/index";
7
6
 
8
7
  interface Props {
9
8
  currentIndex?: number;
@@ -11,7 +10,11 @@
11
10
  pageSize: number;
12
11
  }
13
12
 
14
- let { currentIndex = $bindable(0), contentLength, pageSize = $bindable() }: Props = $props();
13
+ let {
14
+ currentIndex = $bindable(0),
15
+ contentLength,
16
+ pageSize = $bindable()
17
+ }: Props = $props();
15
18
 
16
19
  const queryIndex = page.url.searchParams.get("index");
17
20
  if (queryIndex) {
@@ -43,28 +46,29 @@
43
46
  </script>
44
47
 
45
48
  <div class="navigation-control-container">
46
- <button class="navigation-control-button"
47
- disabled={currentIndex <= 0}
48
- onclick={() => {movePage(false)}}>{"<"}</button>
49
- <Card marginBottom="0">
50
- {#snippet content()}
51
- <p style="margin: 1em">Page {currentIndex + 1}</p>
52
- {/snippet}
53
- </Card>
54
- <button class="navigation-control-button"
55
- disabled={(currentIndex + 1) * pageSize >= contentLength}
56
- onclick={() => {movePage(true)}}>{">"}</button>
49
+ <PinyaButton
50
+ classes="w-12 h-12"
51
+ disabled={currentIndex <= 0}
52
+ onclick={() => {movePage(false)}}
53
+ >&lt;
54
+ </PinyaButton>
55
+ <div>
56
+ <PinyaCard widthClass="" paddingClass="pt-2 pb-2 pl-8 pr-8">
57
+ <span class="fake-h2">Page {currentIndex + 1}</span>
58
+ </PinyaCard>
59
+ </div>
60
+ <PinyaButton
61
+ classes="w-12 h-12"
62
+ disabled={(currentIndex + 1) * pageSize >= contentLength}
63
+ onclick={() => {movePage(true)}}
64
+ >&gt;
65
+ </PinyaButton>
57
66
  </div>
58
67
 
59
68
  <style>
60
69
  .navigation-control-container {
61
70
  display: flex;
62
71
  justify-content: space-between;
63
- margin: 1lh 0;
64
- }
65
-
66
- .navigation-control-button {
67
- /* todo: migration */
68
- /*@apply btn preset-filled-secondary-500;*/
72
+ align-items: center;
69
73
  }
70
74
  </style>
@@ -1,20 +1,19 @@
1
1
  <script lang="ts">
2
2
  import NavigationControl from "./NavigationControl.svelte";
3
3
  import { parsePageMeta, type ParsePageMetaCompareFn } from "./PageMeta";
4
- import { Card } from "../index";
5
- import { createGoToFunction } from "../../util/util";
4
+ import { Card } from "../../../components/index";
5
+ import { PinyaCard } from "../../elements/index";
6
+ import { localizeHref } from "../../../paraglide/runtime.js";
6
7
 
7
-
8
-
9
8
  interface Props {
10
9
  fileList: Record<string, unknown>;
11
10
  jsonList: Record<string, unknown>;
12
11
  title?: string | undefined;
13
- imageMap?: any;
12
+ imageMap?: Map<string, string>;
14
13
  shouldAllowControl?: boolean;
15
14
  /**
16
- * Should include a slash before and after the path
17
- */
15
+ * Should include a slash before and after the path
16
+ */
18
17
  parentSubpath: string;
19
18
  allowUpperControl?: boolean;
20
19
  compareFn?: undefined | ParsePageMetaCompareFn;
@@ -42,60 +41,65 @@
42
41
 
43
42
  <div class="navigation-wrapper">
44
43
  {#if (title)}
45
- <Card>
46
- {#snippet content()}
47
- <h1 class="default-card navigation-title">
44
+ <div>
45
+ <PinyaCard widthClass="">
46
+ <h1 class="navigation-title">
48
47
  {title}
49
48
  </h1>
50
- {/snippet}
51
- </Card>
49
+ </PinyaCard>
50
+ </div>
52
51
  {/if}
53
52
 
54
53
  {#if allowUpperControl && shouldAllowControl}
55
- <NavigationControl bind:currentIndex={currentIndex}
56
- bind:contentLength={pageFlatList.length}
57
- bind:pageSize={pageSize}></NavigationControl>
54
+ <NavigationControl
55
+ bind:currentIndex={currentIndex}
56
+ contentLength={pageFlatList.length}
57
+ bind:pageSize={pageSize}></NavigationControl
58
+ >
58
59
  {/if}
59
60
 
60
61
  <div class="navigation-component">
61
62
  <!-- all the misc routes-->
62
- {#each visiblePages as pageMeta}
63
+ {#each visiblePages as pageMeta (pageMeta.title)}
63
64
  {@const fullPath=`${parentSubpath}${pageMeta.relativeLink}`}
64
- <button class="navigation-element"
65
- title={fullPath}
66
- onclick={createGoToFunction(fullPath)}>
67
- {#if pageMeta.imageUrl}
68
- <img src={pageMeta.imageUrl}
69
- alt={pageMeta.imageAlt ?? "placeholder alt text please replace me or report me!"} />
70
- {/if}
71
- <section class="blurb-text">
72
- <h2>{pageMeta.title}</h2>
73
- <p>Published: {pageMeta.datePublished ?? "N/A"} | Last updated: {pageMeta.lastUpdated ?? "N/A"}</p>
74
- <p>{pageMeta.description ?? ""}</p>
75
- Tags:
76
- {#if (pageMeta.tags && pageMeta.tags.length !== 0)}
77
- {#each pageMeta.tags as tagValue}
78
- &nbsp;<span class="badge variant-filled tag-container">{tagValue}</span>
79
- {/each}
80
- {:else}
81
- None
65
+ <a href={localizeHref(fullPath)} class="card-anchor">
66
+ <PinyaCard
67
+ widthClass="w-full"
68
+ className="navigation-element"
69
+ >
70
+ {#if pageMeta.imageUrl}
71
+ <img src={pageMeta.imageUrl}
72
+ alt={pageMeta.imageAlt ?? "placeholder alt text please replace me or report me!"} />
82
73
  {/if}
83
- </section>
84
- </button>
74
+ <section class="blurb-text">
75
+ <h2>{pageMeta.title}</h2>
76
+ <p>Published: {pageMeta.datePublished ?? "N/A"} | Last updated: {pageMeta.lastUpdated ?? "N/A"}</p>
77
+ <p>{pageMeta.description ?? ""}</p>
78
+ Tags:
79
+ {#if (pageMeta.tags && pageMeta.tags.length !== 0)}
80
+ {#each pageMeta.tags as tagValue, idx (idx)}
81
+ &nbsp;<span class="badge variant-filled tag-container">{tagValue}</span>
82
+ {/each}
83
+ {:else}
84
+ None
85
+ {/if}
86
+ </section>
87
+ </PinyaCard>
88
+ </a>
85
89
  {/each}
86
90
 
87
91
  {#if visiblePages.length === 0}
88
92
  <Card>
89
93
  {#snippet content()}
90
- <p class="default-card" >Sorry, no content was found</p>
91
- {/snippet}
94
+ <p class="default-card">Sorry, no content was found</p>
95
+ {/snippet}
92
96
  </Card>
93
97
  {/if}
94
98
  </div>
95
99
 
96
100
  {#if shouldAllowControl}
97
101
  <NavigationControl bind:currentIndex={currentIndex}
98
- bind:contentLength={pageFlatList.length}
102
+ contentLength={pageFlatList.length}
99
103
  bind:pageSize={pageSize}></NavigationControl>
100
104
  {/if}
101
105
 
@@ -110,13 +114,13 @@
110
114
  border-radius: var(--theme-rounded-container) var(--theme-rounded-container) 0 0;
111
115
  }
112
116
 
113
- .navigation-element {
117
+ :global(.navigation-element) {
114
118
  flex-direction: column;
115
119
  }
116
120
  }
117
121
 
118
122
  @container (min-width: 801px) {
119
- .navigation-element {
123
+ :global(.navigation-element) {
120
124
  flex-direction: row;
121
125
  }
122
126
 
@@ -125,8 +129,8 @@
125
129
  }
126
130
  }
127
131
 
128
- .navigation-element {
129
- /* todo: migration */
132
+ :global(.navigation-element) {
133
+ /* todo: migration */
130
134
  /*@apply btn card card-hover bg-surface-100 dark:bg-surface-900;*/
131
135
  container-type: inline-size;
132
136
  display: flex;
@@ -166,9 +170,31 @@
166
170
  flex-direction: column;
167
171
  max-width: 1000px;
168
172
  width: 100%;
173
+ gap: 1lh;
169
174
  }
170
175
 
171
176
  .tag-container {
172
177
  margin: 0.25lh 0;
173
178
  }
179
+
180
+ a.card-anchor {
181
+ filter: none;
182
+ }
183
+
184
+ :global(.navigation-element) {
185
+ transition: 0.3s;
186
+ }
187
+
188
+ :global(.navigation-element:hover) {
189
+ transform: scale(1.02);
190
+ box-shadow: 10px 5px 5px rgba(49, 8, 0, 0.25);
191
+ }
192
+
193
+ :global(.dark .navigation-element:hover) {
194
+ box-shadow: 10px 5px 5px rgba(16, 0, 0, 0.35);
195
+ }
196
+
197
+ h2 {
198
+ text-align: start;
199
+ }
174
200
  </style>
@@ -3,17 +3,17 @@ interface Props {
3
3
  fileList: Record<string, unknown>;
4
4
  jsonList: Record<string, unknown>;
5
5
  title?: string | undefined;
6
- imageMap?: any;
6
+ imageMap?: Map<string, string>;
7
7
  shouldAllowControl?: boolean;
8
8
  /**
9
- * Should include a slash before and after the path
10
- */
9
+ * Should include a slash before and after the path
10
+ */
11
11
  parentSubpath: string;
12
12
  allowUpperControl?: boolean;
13
13
  compareFn?: undefined | ParsePageMetaCompareFn;
14
14
  pageSize?: number;
15
15
  currentIndex?: number;
16
16
  }
17
- declare const NavigationComponent: import("svelte").Component<Props, {}, "currentIndex" | "pageSize">;
18
- type NavigationComponent = ReturnType<typeof NavigationComponent>;
19
- export default NavigationComponent;
17
+ declare const NavigationMenu: import("svelte").Component<Props, {}, "currentIndex" | "pageSize">;
18
+ type NavigationMenu = ReturnType<typeof NavigationMenu>;
19
+ export default NavigationMenu;
@@ -3,14 +3,14 @@ export interface PageMeta {
3
3
  description?: string;
4
4
  imageAlt?: string;
5
5
  /**
6
- * imageID is an ID that NavigationComponent can use to identify imported images
6
+ * imageID is an ID that NavigationMenu can use to identify imported images
7
7
  *
8
8
  * To use imageID:
9
9
  * 1. Add the imageID entry to the meta.json for the page
10
10
  * 2. Create a typescript file with the variable ImageMap: Map<string, string>
11
11
  * 3. Add a new entry with your imageID as key, and the image url as the value. Since this is
12
12
  * Typescript, you can use import ImageUrl from "./path.png" as you would normally do.N
13
- * 4. Add ImageMap as an argument to your NavigationComponent.
13
+ * 4. Add ImageMap as an argument to your NavigationMenu.
14
14
  * Overall, this involves four files
15
15
  * - Your navigation page: ./+page.svelte
16
16
  * - Your image map typescript: ImageMap.ts
@@ -45,14 +45,14 @@ export interface SimplePageMeta {
45
45
  description?: string;
46
46
  imageAlt?: string;
47
47
  /**
48
- * imageID is an ID that NavigationComponent can use to identify imported images
48
+ * imageID is an ID that NavigationMenu can use to identify imported images
49
49
  *
50
50
  * To use imageID:
51
51
  * 1. Add the imageID entry to the meta.json for the page
52
52
  * 2. Create a typescript file with the variable ImageMap: Map<string, string>
53
53
  * 3. Add a new entry with your imageID as key, and the image url as the value. Since this is
54
54
  * Typescript, you can use import ImageUrl from "./path.png" as you would normally do.N
55
- * 4. Add ImageMap as an argument to your NavigationComponent.
55
+ * 4. Add ImageMap as an argument to your NavigationMenu.
56
56
  * Overall, this involves four files
57
57
  * - Your navigation page: ./+page.svelte
58
58
  * - Your image map typescript: ImageMap.ts
@@ -0,0 +1,2 @@
1
+ export { default as NavigationMenu } from "./NavigationMenu.svelte";
2
+ export * from "./PageMeta";
@@ -0,0 +1,2 @@
1
+ export { default as NavigationMenu } from "./NavigationMenu.svelte";
2
+ export * from "./PageMeta";
@@ -1,2 +1,2 @@
1
- export * from "./seaweed";
2
1
  export * from "./projects";
2
+ export * from "./NavigationMenu";
@@ -1,2 +1,2 @@
1
- export * from "./seaweed";
2
1
  export * from "./projects";
2
+ export * from "./NavigationMenu";