@turnipxenon/pineapple 2.10.0 → 3.0.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 (171) hide show
  1. package/dist/assets/icons/icon-contrast.svg +1 -0
  2. package/dist/assets/icons/icon-dark-mode.svg +1 -0
  3. package/dist/assets/icons/icon-light-mode.svg +1 -0
  4. package/dist/assets/icons/icon-settings.svg +1 -0
  5. package/dist/components/Card.svelte +43 -41
  6. package/dist/components/Card.svelte.d.ts +11 -24
  7. package/dist/components/CarouselElement.svelte +15 -8
  8. package/dist/components/CarouselElement.svelte.d.ts +7 -18
  9. package/dist/components/ElementVisbilityDetector.svelte +23 -14
  10. package/dist/components/ElementVisbilityDetector.svelte.d.ts +6 -17
  11. package/dist/components/LazyAsset.svelte +93 -65
  12. package/dist/components/LazyAsset.svelte.d.ts +9 -19
  13. package/dist/components/PineappleSlideToggle.svelte +19 -7
  14. package/dist/components/PineappleSlideToggle.svelte.d.ts +8 -19
  15. package/dist/components/RandomizedBackground.svelte +46 -27
  16. package/dist/components/RandomizedBackground.svelte.d.ts +5 -15
  17. package/dist/components/RandomizedImage.svelte +15 -8
  18. package/dist/components/RandomizedImage.svelte.d.ts +6 -16
  19. package/dist/components/StickyElement.svelte +25 -16
  20. package/dist/components/StickyElement.svelte.d.ts +6 -17
  21. package/dist/components/ToggleableContent.svelte +88 -59
  22. package/dist/components/ToggleableContent.svelte.d.ts +6 -17
  23. package/dist/components/blog_template/BlogTemplate.svelte +45 -25
  24. package/dist/components/blog_template/BlogTemplate.svelte.d.ts +9 -20
  25. package/dist/components/blog_template/BlogTemplateInner.svelte +11 -3
  26. package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +6 -17
  27. package/dist/components/chip/Chip.svelte +33 -57
  28. package/dist/components/chip/Chip.svelte.d.ts +7 -18
  29. package/dist/components/combo_box/ComboBox.svelte +10 -4
  30. package/dist/components/combo_box/ComboBox.svelte.d.ts +6 -16
  31. package/dist/components/combo_box/ComboBoxWithButton.svelte +16 -9
  32. package/dist/components/combo_box/ComboBoxWithButton.svelte.d.ts +7 -17
  33. package/dist/components/combo_box/combo-box.postcss +2 -2
  34. package/dist/components/dialog_manager/DialogManager.d.ts +0 -1
  35. package/dist/components/dialog_manager/DialogManagerStore.d.ts +0 -1
  36. package/dist/components/dialog_manager/DialogManagerStore.js +1 -1
  37. package/dist/components/dialog_overlay/DialogOverlay.svelte +42 -34
  38. package/dist/components/dialog_overlay/DialogOverlay.svelte.d.ts +3 -14
  39. package/dist/components/index.d.ts +1 -1
  40. package/dist/components/index.js +1 -1
  41. package/dist/components/layouts/SeaweedBaseLayout.svelte +80 -43
  42. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +8 -21
  43. package/dist/components/navigation_component/NavigationComponent.svelte +52 -141
  44. package/dist/components/navigation_component/NavigationComponent.svelte.d.ts +17 -26
  45. package/dist/components/navigation_component/NavigationControl.svelte +52 -103
  46. package/dist/components/navigation_component/NavigationControl.svelte.d.ts +7 -17
  47. package/dist/components/overrideable_meta/OverridableMeta.svelte +37 -22
  48. package/dist/components/overrideable_meta/OverridableMeta.svelte.d.ts +9 -19
  49. package/dist/components/pineapple/PineappleBaseLayout.svelte +132 -188
  50. package/dist/components/pineapple/PineappleBaseLayout.svelte.d.ts +6 -17
  51. package/dist/components/pineapple/toast/DefaultToastBody.svelte +14 -16
  52. package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +7 -17
  53. package/dist/components/pineapple/toast/Toast.d.ts +0 -1
  54. package/dist/components/pineapple/toast/Toast.svelte +92 -64
  55. package/dist/components/pineapple/toast/Toast.svelte.d.ts +3 -14
  56. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +22 -19
  57. package/dist/paraglide/messages/_index.d.ts +2 -0
  58. package/dist/paraglide/messages/_index.js +3 -0
  59. package/dist/paraglide/messages/example_message.d.ts +5 -0
  60. package/dist/paraglide/messages/example_message.js +39 -0
  61. package/dist/paraglide/messages/settings.d.ts +3 -0
  62. package/dist/paraglide/messages/settings.js +38 -0
  63. package/dist/paraglide/messages.d.ts +2 -0
  64. package/dist/paraglide/messages.js +4 -0
  65. package/dist/paraglide/registry.d.ts +21 -0
  66. package/dist/paraglide/registry.js +31 -0
  67. package/dist/paraglide/runtime.d.ts +400 -0
  68. package/dist/paraglide/runtime.js +1060 -0
  69. package/dist/paraglide/server.d.ts +64 -0
  70. package/dist/paraglide/server.js +161 -0
  71. package/dist/scripts/util/FileManagement.d.ts +1 -1
  72. package/dist/store.d.ts +0 -1
  73. package/dist/styles/app.css +53 -0
  74. package/dist/styles/turnip-theme.css +323 -0
  75. package/dist/template/seaweed/CreateUrlForm.svelte +50 -38
  76. package/dist/template/seaweed/CreateUrlForm.svelte.d.ts +5 -15
  77. package/dist/template/seaweed/SeaweedTemplate.svelte +244 -195
  78. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +28 -25
  79. package/dist/template/seaweed/entries/ChefWings.svelte +37 -39
  80. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +5 -15
  81. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +32 -24
  82. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +5 -15
  83. package/dist/template/seaweed/entries/Hepcat.svelte +58 -49
  84. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +5 -15
  85. package/dist/template/seaweed/entries/Pengi.svelte +51 -43
  86. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +5 -15
  87. package/dist/template/seaweed/entries/Soulwork.svelte +44 -36
  88. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +5 -15
  89. package/dist/template/seaweed/entries/ThisWebpage.svelte +47 -38
  90. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +5 -15
  91. package/dist/template/seaweed/entries/WorkExperience.svelte +109 -92
  92. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +6 -16
  93. package/dist/template/seaweed/entries/Workset.svelte +51 -42
  94. package/dist/template/seaweed/entries/Workset.svelte.d.ts +5 -15
  95. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +136 -259
  96. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +10 -20
  97. package/dist/template/seaweed/seaweed.postcss +1 -9
  98. package/dist/{theme.postcss → theme.css} +1 -4
  99. package/dist/ui/components/FourPartCard.svelte +47 -0
  100. package/dist/ui/components/FourPartCard.svelte.d.ts +10 -0
  101. package/dist/ui/components/ModalBase.svelte +75 -0
  102. package/dist/ui/components/ModalBase.svelte.d.ts +8 -0
  103. package/dist/ui/components/SocialSection.svelte +87 -0
  104. package/dist/ui/components/SocialSection.svelte.d.ts +9 -0
  105. package/dist/ui/components/index.d.ts +3 -0
  106. package/dist/ui/components/index.js +3 -0
  107. package/dist/ui/components/randomized-background/RandomizedBackground.svelte +87 -0
  108. package/dist/ui/components/randomized-background/RandomizedBackground.svelte.d.ts +6 -0
  109. package/dist/ui/components/randomized-background/RandomizedImage.svelte +42 -0
  110. package/dist/ui/components/randomized-background/RandomizedImage.svelte.d.ts +7 -0
  111. package/dist/ui/elements/ColorScheme.d.ts +10 -0
  112. package/dist/ui/elements/ColorScheme.js +11 -0
  113. package/dist/ui/elements/GeneralUIProps.d.ts +12 -0
  114. package/dist/ui/elements/GeneralUIProps.js +1 -0
  115. package/dist/ui/elements/ImageIcon.svelte +54 -0
  116. package/dist/ui/elements/ImageIcon.svelte.d.ts +6 -0
  117. package/dist/ui/elements/OnBackground.d.ts +3 -0
  118. package/dist/ui/elements/OnBackground.js +4 -0
  119. package/dist/ui/elements/TextLink.svelte +17 -0
  120. package/dist/ui/elements/TextLink.svelte.d.ts +8 -0
  121. package/dist/ui/elements/WrapperProps.d.ts +4 -0
  122. package/dist/ui/elements/WrapperProps.js +1 -0
  123. package/dist/ui/elements/index.d.ts +8 -0
  124. package/dist/ui/elements/index.js +8 -0
  125. package/dist/ui/elements/pinya-button/component.svelte +47 -0
  126. package/dist/ui/elements/pinya-button/component.svelte.d.ts +4 -0
  127. package/dist/ui/elements/pinya-button/index.d.ts +2 -0
  128. package/dist/ui/elements/pinya-button/index.js +2 -0
  129. package/dist/ui/elements/pinya-button/props.d.ts +13 -0
  130. package/dist/ui/elements/pinya-button/props.js +6 -0
  131. package/dist/ui/elements/pinya-card/component.svelte +19 -0
  132. package/dist/ui/elements/pinya-card/component.svelte.d.ts +7 -0
  133. package/dist/ui/elements/pinya-card/index.d.ts +2 -0
  134. package/dist/ui/elements/pinya-card/index.js +2 -0
  135. package/dist/ui/elements/pinya-card/props.d.ts +7 -0
  136. package/dist/ui/elements/pinya-card/props.js +1 -0
  137. package/dist/ui/modules/index.d.ts +1 -0
  138. package/dist/ui/modules/index.js +1 -0
  139. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +110 -0
  140. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts +4 -0
  141. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +48 -0
  142. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts +3 -0
  143. package/dist/{template → ui/modules}/seaweed/ChumBucket.svelte +28 -28
  144. package/dist/ui/modules/seaweed/ChumBucket.svelte.d.ts +3 -0
  145. package/dist/ui/modules/seaweed/index.d.ts +3 -0
  146. package/dist/ui/modules/seaweed/index.js +4 -0
  147. package/dist/ui/templates/PinyaBase.svelte +45 -0
  148. package/dist/ui/templates/PinyaBase.svelte.d.ts +7 -0
  149. package/dist/ui/templates/confirmation-modal/component.svelte +47 -0
  150. package/dist/ui/templates/confirmation-modal/component.svelte.d.ts +4 -0
  151. package/dist/ui/templates/confirmation-modal/index.d.ts +2 -0
  152. package/dist/ui/templates/confirmation-modal/index.js +2 -0
  153. package/dist/ui/templates/confirmation-modal/props.d.ts +10 -0
  154. package/dist/ui/templates/confirmation-modal/props.js +1 -0
  155. package/dist/ui/templates/index.d.ts +3 -0
  156. package/dist/ui/templates/index.js +3 -0
  157. package/dist/ui/templates/pinya-page-layout/component.svelte +113 -0
  158. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +8 -0
  159. package/dist/ui/templates/pinya-page-layout/index.d.ts +2 -0
  160. package/dist/ui/templates/pinya-page-layout/index.js +2 -0
  161. package/dist/ui/templates/pinya-page-layout/runes.svelte.d.ts +7 -0
  162. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +3 -0
  163. package/package.json +36 -18
  164. package/src/lib/styles/app.css +53 -0
  165. package/src/lib/theme.css +114 -0
  166. package/dist/app.postcss +0 -212
  167. package/dist/components/SocialSection.svelte +0 -166
  168. package/dist/components/SocialSection.svelte.d.ts +0 -31
  169. package/dist/postcss.d.ts +0 -3
  170. package/dist/styles/DefaultGridContainer.css +0 -61
  171. package/dist/template/seaweed/ChumBucket.svelte.d.ts +0 -14
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM200-440H40v-80h160v80Zm720 0H760v-80h160v80ZM440-760v-160h80v160h-80Zm0 720v-160h80v160h-80ZM256-650l-101-97 57-59 96 100-52 56Zm492 496-97-101 53-55 101 97-57 59Zm-98-550 97-101 59 57-100 96-56-52ZM154-212l101-97 55 53-97 101-59-57Zm326-268Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z"/></svg>
@@ -1,59 +1,61 @@
1
- <script>export let margin = "0";
2
- export let marginBottom = "2lh";
3
- export let overrideStyle = "";
4
- export let includeDataNoSnippet = true;
5
- export let additionalClass = [];
6
- export let turnOnLightModeBorder = true;
7
- const style = `
1
+ <script lang="ts">
2
+ import { run } from 'svelte/legacy';
3
+
4
+ interface Props {
5
+ margin?: string;
6
+ marginBottom?: string;
7
+ overrideStyle?: string;
8
+ includeDataNoSnippet?: boolean;
9
+ additionalClass?: string[];
10
+ turnOnLightModeBorder?: boolean;
11
+ content?: import('svelte').Snippet<[any]>;
12
+ }
13
+
14
+ let {
15
+ margin = "0",
16
+ marginBottom = "2lh",
17
+ overrideStyle = "",
18
+ includeDataNoSnippet = true,
19
+ additionalClass = [],
20
+ turnOnLightModeBorder = true,
21
+ content
22
+ }: Props = $props();
23
+
24
+ // warning: don't forget the semi-colon when adding new style!
25
+ const style = `
8
26
  --turnip-card-margin: ${margin};
9
27
  --turnip-card-margin-bottom: ${marginBottom};
10
28
  ${overrideStyle};
11
29
  `;
12
- if (!$$slots.content) {
13
- console.error("Missing content slot in card. No content will be displayed.");
14
- }
15
- const originalClasses = ["card", "turnip-card"].concat(additionalClass).join(" ");
16
- let classes = originalClasses.slice();
17
- const toggleLightModeBorder = (turnOnLightModeBorder2) => {
18
- classes = originalClasses;
19
- if (turnOnLightModeBorder2) {
20
- classes += " light-mode-border";
21
- }
22
- };
23
- $:
24
- toggleLightModeBorder(turnOnLightModeBorder);
30
+
31
+ if (!content) {
32
+ console.error("Missing content slot in card. No content will be displayed.");
33
+ }
34
+
35
+ const originalClasses = ["card", "turnip-card bg-surface-100 dark:bg-surface-900"].concat(additionalClass).join(" ");
36
+ let classes = $state(originalClasses.slice());
37
+ const toggleLightModeBorder = (turnOnLightModeBorder: boolean) => {
38
+ classes = originalClasses;
39
+ if (turnOnLightModeBorder) {
40
+ classes += " light-mode-border border-surface-600 border-2 dark:border-0";
41
+ }
42
+ };
43
+ run(() => {
44
+ toggleLightModeBorder(turnOnLightModeBorder);
45
+ });
25
46
  </script>
26
47
 
27
48
  {#if (includeDataNoSnippet)}
28
49
  <div class={classes} style={style} data-nosnippet>
29
- <slot name="content" class="card" />
50
+ {@render content?.({ class: "card", })}
30
51
  </div>
31
52
  {:else }
32
53
  <div class={classes} style={style}>
33
- <slot name="content" class="card" />
54
+ {@render content?.({ class: "card", })}
34
55
  </div>
35
56
  {/if}
36
57
 
37
58
  <style>
38
- /*noinspection CssUnusedSymbol*/
39
- .light-mode-border {
40
- border-width: 2px;
41
- --tw-border-opacity: 1;
42
- border-color: rgb(var(--color-surface-600) / var(--tw-border-opacity));
43
- }
44
- :is(.dark .light-mode-border) {
45
- border-width: 0px;
46
- }
47
-
48
- /*noinspection CssUnusedSymbol*/
49
- .turnip-card {
50
- --tw-bg-opacity: 1;
51
- background-color: rgb(var(--color-surface-100) / var(--tw-bg-opacity));
52
- }
53
- :is(.dark .turnip-card) {
54
- --tw-bg-opacity: 1;
55
- background-color: rgb(var(--color-surface-900) / var(--tw-bg-opacity));
56
- }
57
59
  .turnip-card {
58
60
  margin: var(--turnip-card-margin);
59
61
  margin-bottom: var(--turnip-card-margin-bottom);
@@ -1,25 +1,12 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- margin?: string | undefined;
5
- marginBottom?: string | undefined;
6
- overrideStyle?: string | undefined;
7
- includeDataNoSnippet?: boolean | undefined;
8
- additionalClass?: string[] | undefined;
9
- turnOnLightModeBorder?: boolean | undefined;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {
15
- content: {
16
- class: string;
17
- };
18
- };
19
- };
20
- export type CardProps = typeof __propDef.props;
21
- export type CardEvents = typeof __propDef.events;
22
- export type CardSlots = typeof __propDef.slots;
23
- export default class Card extends SvelteComponent<CardProps, CardEvents, CardSlots> {
1
+ interface Props {
2
+ margin?: string;
3
+ marginBottom?: string;
4
+ overrideStyle?: string;
5
+ includeDataNoSnippet?: boolean;
6
+ additionalClass?: string[];
7
+ turnOnLightModeBorder?: boolean;
8
+ content?: import('svelte').Snippet<[any]>;
24
9
  }
25
- export {};
10
+ declare const Card: import("svelte").Component<Props, {}, "">;
11
+ type Card = ReturnType<typeof Card>;
12
+ export default Card;
@@ -1,21 +1,28 @@
1
- <script>export let activeGameIndex;
2
- export let selfIndex;
3
- import { fly, slide, scale } from "svelte/transition";
1
+ <script lang="ts">
2
+
3
+ import {fly, slide, scale} from "svelte/transition";
4
+ interface Props {
5
+ activeGameIndex: number;
6
+ selfIndex: number;
7
+ children?: import('svelte').Snippet;
8
+ }
9
+
10
+ let { activeGameIndex, selfIndex, children }: Props = $props();
11
+
4
12
  </script>
5
13
 
6
14
  {#if (activeGameIndex === selfIndex)}
7
15
  <!--todo: make section consistent size for all-->
8
16
  <section class="game-showcase"
9
17
  in:fly={{x: '100%'}} out:fly={{x: '-100%'}}>
10
- <slot/>
18
+ {@render children?.()}
11
19
  </section>
12
20
  {/if}
13
21
 
14
22
  <style>
15
23
  .game-showcase {
16
- scroll-snap-align: center;
17
- border-radius: var(--theme-rounded-container);
24
+ @apply snap-center rounded-container;
18
25
  margin: auto;
19
- width: 100%
20
- }
26
+ width: 100%;
27
+ }
21
28
  </style>
@@ -1,19 +1,8 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- activeGameIndex: number;
5
- selfIndex: number;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {
11
- default: {};
12
- };
13
- };
14
- export type CarouselElementProps = typeof __propDef.props;
15
- export type CarouselElementEvents = typeof __propDef.events;
16
- export type CarouselElementSlots = typeof __propDef.slots;
17
- export default class CarouselElement extends SvelteComponent<CarouselElementProps, CarouselElementEvents, CarouselElementSlots> {
1
+ interface Props {
2
+ activeGameIndex: number;
3
+ selfIndex: number;
4
+ children?: import('svelte').Snippet;
18
5
  }
19
- export {};
6
+ declare const CarouselElement: import("svelte").Component<Props, {}, "">;
7
+ type CarouselElement = ReturnType<typeof CarouselElement>;
8
+ export default CarouselElement;
@@ -1,18 +1,27 @@
1
- <script>import { onMount } from "svelte";
2
- export let isVisible = true;
3
- let stickyElem;
4
- let observer;
5
- onMount(() => {
6
- observer = new IntersectionObserver(
7
- ([e]) => {
8
- isVisible = e.intersectionRatio >= 1;
9
- },
10
- { threshold: [1] }
11
- );
12
- observer.observe(stickyElem);
13
- });
1
+ <script lang="ts">
2
+ import {onMount} from "svelte";
3
+
4
+ interface Props {
5
+ isVisible?: boolean;
6
+ children?: import('svelte').Snippet;
7
+ }
8
+
9
+ let { isVisible = $bindable(true), children }: Props = $props();
10
+
11
+ let stickyElem: HTMLElement = $state();
12
+
13
+ let observer: undefined | IntersectionObserver;
14
+ onMount(() => {
15
+ observer = new IntersectionObserver(
16
+ ([e]) => {
17
+ isVisible = e.intersectionRatio >= 1;
18
+ },
19
+ {threshold: [1]}
20
+ );
21
+ observer.observe(stickyElem);
22
+ });
14
23
  </script>
15
24
 
16
25
  <span bind:this={stickyElem}>
17
- <slot/>
26
+ {@render children?.()}
18
27
  </span>
@@ -1,18 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- isVisible?: boolean | undefined;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {
10
- default: {};
11
- };
12
- };
13
- export type ElementVisbilityDetectorProps = typeof __propDef.props;
14
- export type ElementVisbilityDetectorEvents = typeof __propDef.events;
15
- export type ElementVisbilityDetectorSlots = typeof __propDef.slots;
16
- export default class ElementVisbilityDetector extends SvelteComponent<ElementVisbilityDetectorProps, ElementVisbilityDetectorEvents, ElementVisbilityDetectorSlots> {
1
+ interface Props {
2
+ isVisible?: boolean;
3
+ children?: import('svelte').Snippet;
17
4
  }
18
- export {};
5
+ declare const ElementVisbilityDetector: import("svelte").Component<Props, {}, "isVisible">;
6
+ type ElementVisbilityDetector = ReturnType<typeof ElementVisbilityDetector>;
7
+ export default ElementVisbilityDetector;
@@ -1,68 +1,96 @@
1
- <script>import { LazyAssetStatus, LazyAssetType } from "./LazyAssetType";
2
- import BgTiledAres from "../assets/bg_tiled/bg_tiled_ares.png";
3
- import { onMount } from "svelte";
4
- export let src;
5
- export let alt;
6
- export let width;
7
- export let height;
8
- export let props = {};
9
- props = {
10
- ...props,
11
- alt,
12
- width,
13
- height
14
- };
15
- let extension = "";
16
- const getAssetType = () => {
17
- const srcArray = src.split(".");
18
- extension = srcArray[srcArray.length - 1];
19
- switch (extension) {
20
- case "png":
21
- case "webp":
22
- case "gif":
23
- case "jpg":
24
- return LazyAssetType.Image;
25
- case "ogg":
26
- case "webm":
27
- case "mp4":
28
- return LazyAssetType.Video;
29
- default:
30
- console.log(`Unknown asset type for: ${src}`);
31
- return LazyAssetType.Unknown;
32
- }
33
- };
34
- const assetType = getAssetType();
35
- let actualSrc = "";
36
- let status = LazyAssetStatus.Loading;
37
- onMount(async () => {
38
- const path = src.includes("https://") ? src : `${window.location.origin}${src}`;
39
- switch (assetType) {
40
- case LazyAssetType.Image: {
41
- const img = new Image();
42
- img.onload = () => {
43
- actualSrc = path;
44
- status = LazyAssetStatus.Loaded;
45
- };
46
- img.src = path;
47
- break;
48
- }
49
- case LazyAssetType.Video: {
50
- fetch(path).then((resp) => resp.blob()).then((blob) => {
51
- actualSrc = URL.createObjectURL(blob);
52
- status = LazyAssetStatus.Loaded;
53
- }).catch((error) => {
54
- console.warn(error);
55
- status = LazyAssetStatus.Error;
56
- });
57
- break;
58
- }
59
- case LazyAssetType.Unknown: {
60
- console.warn("Unknown asset: ", path);
61
- status = LazyAssetStatus.Error;
62
- break;
63
- }
64
- }
65
- });
1
+ <script lang="ts">
2
+ import {LazyAssetStatus, LazyAssetType} from "./LazyAssetType";
3
+ import BgTiledAres from "../assets/bg_tiled/bg_tiled_ares.png";
4
+ import {onMount} from "svelte";
5
+
6
+
7
+ // in pixels
8
+
9
+ // playsinline autoplay muted loop
10
+ // whatever your heart's content
11
+ interface Props {
12
+ src: string;
13
+ alt: string;
14
+ width: string;
15
+ height: string;
16
+ props?: any;
17
+ }
18
+
19
+ let {
20
+ src,
21
+ alt,
22
+ width,
23
+ height,
24
+ props = $bindable({})
25
+ }: Props = $props();
26
+ // todo: add size and alt text
27
+
28
+ props = {
29
+ ...props,
30
+ alt,
31
+ width,
32
+ height
33
+ };
34
+
35
+ // auto detect asset type
36
+ let extension = $state("");
37
+ const getAssetType = (): LazyAssetType => {
38
+ const srcArray = src.split(".");
39
+ extension = srcArray[srcArray.length - 1];
40
+ switch (extension) {
41
+ case "png":
42
+ case "webp":
43
+ case "gif":
44
+ case "jpg":
45
+ return LazyAssetType.Image;
46
+ case "ogg":
47
+ case "webm":
48
+ case "mp4":
49
+ return LazyAssetType.Video;
50
+ default:
51
+ console.log(`Unknown asset type for: ${src}`);
52
+ return LazyAssetType.Unknown;
53
+ }
54
+ };
55
+ const assetType: LazyAssetType = getAssetType();
56
+
57
+ let actualSrc = $state("");
58
+ let status: LazyAssetStatus = $state(LazyAssetStatus.Loading);
59
+
60
+ onMount(async () => {
61
+ const path = src.includes("https://") ? src : `${window.location.origin}${src}`;
62
+
63
+ switch(assetType) {
64
+ case LazyAssetType.Image: {
65
+ const img = new Image();
66
+ img.onload = () => {
67
+ actualSrc = path;
68
+ status = LazyAssetStatus.Loaded;
69
+ }
70
+ img.src = path;
71
+ break;
72
+ }
73
+ case LazyAssetType.Video: {
74
+ fetch(path)
75
+ .then(resp => resp.blob())
76
+ .then(blob => {
77
+ actualSrc = URL.createObjectURL(blob);
78
+ status = LazyAssetStatus.Loaded;
79
+ })
80
+ .catch(error => {
81
+ console.warn(error);
82
+ status = LazyAssetStatus.Error;
83
+ });
84
+ break;
85
+ }
86
+ case LazyAssetType.Unknown: {
87
+ console.warn("Unknown asset: ", path)
88
+ status = LazyAssetStatus.Error;
89
+ break;
90
+ }
91
+
92
+ }
93
+ });
66
94
  </script>
67
95
 
68
96
  {#if status === LazyAssetStatus.Loaded}
@@ -1,20 +1,10 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- src: string;
5
- alt: string;
6
- width: string;
7
- height: string;
8
- props?: {} | undefined;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type LazyAssetProps = typeof __propDef.props;
16
- export type LazyAssetEvents = typeof __propDef.events;
17
- export type LazyAssetSlots = typeof __propDef.slots;
18
- export default class LazyAsset extends SvelteComponent<LazyAssetProps, LazyAssetEvents, LazyAssetSlots> {
1
+ interface Props {
2
+ src: string;
3
+ alt: string;
4
+ width: string;
5
+ height: string;
6
+ props?: any;
19
7
  }
20
- export {};
8
+ declare const LazyAsset: import("svelte").Component<Props, {}, "props">;
9
+ type LazyAsset = ReturnType<typeof LazyAsset>;
10
+ export default LazyAsset;
@@ -1,12 +1,24 @@
1
- <script>export let checked = false;
2
- export let name;
3
- export let onChange = void 0;
4
- import { SlideToggle } from "@skeletonlabs/skeleton";
1
+ <script lang="ts">
2
+
3
+ import { Switch } from "@skeletonlabs/skeleton-svelte";
4
+ interface Props {
5
+ checked?: boolean;
6
+ name: string;
7
+ onChange?: undefined | (() => void);
8
+ children?: import('svelte').Snippet;
9
+ }
10
+
11
+ let {
12
+ checked = $bindable(false),
13
+ name,
14
+ onChange = undefined,
15
+ children
16
+ }: Props = $props();
5
17
  </script>
6
18
 
7
- <SlideToggle name={name}
19
+ <Switch name={name}
8
20
  background="bg-surface-700 dark:bg-surface-700"
9
21
  bind:checked={checked}
10
22
  on:change={onChange}>
11
- <slot />
12
- </SlideToggle>
23
+ {@render children?.()}
24
+ </Switch>
@@ -1,20 +1,9 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- checked?: boolean | undefined;
5
- name: string;
6
- onChange?: undefined | (() => void);
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {
12
- default: {};
13
- };
14
- };
15
- export type PineappleSlideToggleProps = typeof __propDef.props;
16
- export type PineappleSlideToggleEvents = typeof __propDef.events;
17
- export type PineappleSlideToggleSlots = typeof __propDef.slots;
18
- export default class PineappleSlideToggle extends SvelteComponent<PineappleSlideToggleProps, PineappleSlideToggleEvents, PineappleSlideToggleSlots> {
1
+ interface Props {
2
+ checked?: boolean;
3
+ name: string;
4
+ onChange?: undefined | (() => void);
5
+ children?: import('svelte').Snippet;
19
6
  }
20
- export {};
7
+ declare const PineappleSlideToggle: import("svelte").Component<Props, {}, "checked">;
8
+ type PineappleSlideToggle = ReturnType<typeof PineappleSlideToggle>;
9
+ export default PineappleSlideToggle;
@@ -1,29 +1,48 @@
1
- <script>import BgTiledAres from "../assets/bg_tiled/bg_tiled_ares.png";
2
- import BgTiledCorn from "../assets/bg_tiled/bg_tiled_corn.png";
3
- import BgTiledPineapple from "../assets/bg_tiled/bg_tiled_pineapple.png";
4
- import BgTiledReinhard from "../assets/bg_tiled/bg_tiled_reinhard.png";
5
- import BgTiledTomato from "../assets/bg_tiled/bg_tiled_tomato.png";
6
- import BgTiledTurnip from "../assets/bg_tiled/bg_tiled_turnip.png";
7
- import RandomizedImage from "./RandomizedImage.svelte";
8
- import { generatedDailySeed, mulberry32Generator } from "../util/util";
9
- export let enable;
10
- const imageList = [BgTiledAres, BgTiledCorn, BgTiledPineapple, BgTiledReinhard, BgTiledTomato, BgTiledTurnip];
11
- const seed = generatedDailySeed();
12
- const rng = mulberry32Generator(seed);
13
- const shuffle = (array) => {
14
- let currentIndex = array.length, randomIndex;
15
- while (currentIndex != 0) {
16
- randomIndex = Math.floor(rng() * currentIndex);
17
- currentIndex--;
18
- [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
19
- }
20
- return array;
21
- };
22
- let generatedImageList = [];
23
- for (let i = 0; i < 20; i++) {
24
- shuffle(imageList);
25
- generatedImageList = generatedImageList.concat(imageList);
26
- }
1
+ <script lang="ts">
2
+ import BgTiledAres from "../assets/bg_tiled/bg_tiled_ares.png";
3
+ import BgTiledCorn from "../assets/bg_tiled/bg_tiled_corn.png";
4
+ import BgTiledPineapple from "../assets/bg_tiled/bg_tiled_pineapple.png";
5
+ import BgTiledReinhard from "../assets/bg_tiled/bg_tiled_reinhard.png";
6
+ import BgTiledTomato from "../assets/bg_tiled/bg_tiled_tomato.png";
7
+ import BgTiledTurnip from "../assets/bg_tiled/bg_tiled_turnip.png";
8
+ import RandomizedImage from "./RandomizedImage.svelte";
9
+ import { generatedDailySeed, mulberry32Generator } from "../util/util";
10
+
11
+ interface Props {
12
+ enable: any;
13
+ }
14
+
15
+ let { enable }: Props = $props();
16
+
17
+ const imageList = [BgTiledAres, BgTiledCorn, BgTiledPineapple, BgTiledReinhard, BgTiledTomato, BgTiledTurnip];
18
+
19
+ const seed = generatedDailySeed();
20
+ const rng = mulberry32Generator(seed);
21
+
22
+ const shuffle = (array: any[]): any[] => {
23
+ // from: community wiki @ https://stackoverflow.com/a/2450976/17836168
24
+ let currentIndex = array.length,
25
+ randomIndex;
26
+
27
+ // While there remain elements to shuffle.
28
+ while (currentIndex != 0) {
29
+ // Pick a remaining element.
30
+ randomIndex = Math.floor(rng() * currentIndex);
31
+ currentIndex--;
32
+
33
+ // And swap it with the current element.
34
+ [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
35
+ }
36
+
37
+ return array;
38
+ };
39
+
40
+ let generatedImageList: string[] = $state([]);
41
+
42
+ for (let i = 0; i < 20; i++) {
43
+ shuffle(imageList);
44
+ generatedImageList = generatedImageList.concat(imageList);
45
+ }
27
46
  </script>
28
47
 
29
48
  <svelte:head>
@@ -42,7 +61,7 @@ for (let i = 0; i < 20; i++) {
42
61
  {#if enable}
43
62
  <div class="default-background" aria-hidden="true">
44
63
  {#each generatedImageList as imageItem}
45
- <svelte:component this={RandomizedImage} src={imageItem} {rng} />
64
+ <RandomizedImage src={imageItem} {rng} />
46
65
  {/each}
47
66
  </div>
48
67
  {/if}
@@ -1,16 +1,6 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- enable: any;
5
- };
6
- events: {
7
- [evt: string]: CustomEvent<any>;
8
- };
9
- slots: {};
10
- };
11
- export type RandomizedBackgroundProps = typeof __propDef.props;
12
- export type RandomizedBackgroundEvents = typeof __propDef.events;
13
- export type RandomizedBackgroundSlots = typeof __propDef.slots;
14
- export default class RandomizedBackground extends SvelteComponent<RandomizedBackgroundProps, RandomizedBackgroundEvents, RandomizedBackgroundSlots> {
1
+ interface Props {
2
+ enable: any;
15
3
  }
16
- export {};
4
+ declare const RandomizedBackground: import("svelte").Component<Props, {}, "">;
5
+ type RandomizedBackground = ReturnType<typeof RandomizedBackground>;
6
+ export default RandomizedBackground;