@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,110 +1,110 @@
1
- <script lang="ts">
2
- import type { ModalProps } from 'svelte-modals';
3
- import { setMode, userPrefersMode } from 'mode-watcher';
4
-
5
- import { m } from '../../../../paraglide/messages';
6
- import ModalBase from '../../../components/ModalBase.svelte';
7
- import DarkIcon from '../../../../assets/icons/icon-dark-mode.svg';
8
- import LightIcon from '../../../../assets/icons/icon-light-mode.svg';
9
- import ConstrastIcon from '../../../../assets/icons/icon-contrast.svg';
10
- import LanguagePicker from './LanguagePicker.svelte';
11
-
12
- let props: ModalProps = $props();
13
-
14
-
15
- interface ToggleItem {
16
- key: 'light' | 'dark' | 'system'
17
- imageSrc: string,
18
- label: string,
19
- }
20
-
21
- const modes: ToggleItem[] = [
22
- { key: 'light', imageSrc: LightIcon, label: 'Light' },
23
- { key: 'dark', imageSrc: DarkIcon, label: 'Dark' },
24
- { key: 'system', imageSrc: ConstrastIcon, label: 'System' }
25
- ];
26
-
27
- let selectedItem: ToggleItem = $state(modes[0]);
28
-
29
- // when mode is edited outside, adjust toggle button
30
- // do not use runes here because we only want explicit changes outside
31
- // our control here!
32
- userPrefersMode.subscribe((value) => {
33
- const si = modes.find(m => m.key === value);
34
- if (selectedItem !== si && si) {
35
- selectedItem = si;
36
- }
37
- });
38
-
39
- // when mode is changed inside the button, adjust the mode
40
- $effect(() => {
41
- switch (selectedItem?.key) {
42
- case 'dark':
43
- setMode('dark');
44
- break;
45
- case 'light':
46
- setMode('light');
47
- break;
48
- case 'system':
49
- setMode('system');
50
- break;
51
- default:
52
- break;
53
- }
54
- });
55
- </script>
56
-
57
- <ModalBase {...props}>
58
- <div class="wrapper">
59
- <h2>{m.settings()}</h2>
60
-
61
- <fieldset class="btn-group border-primary-500 border-2 flex-col p-2 md:flex-row">
62
- <legend class="bg-surface-100-900 pl-4 pr-4">Mode</legend>
63
- {#each modes as mode (mode)}
64
- <button
65
- type="button"
66
- title={mode.label}
67
- class={`btn pt-3 pb-3 hover:brightness-125
68
- ${mode.key === selectedItem.key ? 'bg-secondary-400 dark:bg-secondary-800' : 'preset-outlined-primary-300-700'}
69
- `}
70
- onclick={() => { setMode(mode.key) }}
71
- >
72
- <img
73
- src={mode.imageSrc}
74
- aria-hidden="true"
75
- alt=""
76
- class={`icon
77
- ${mode.key === selectedItem.key ? 'reverse' : ''}
78
- `}
79
- >
80
- {mode.label}
81
- </button>
82
- {/each}
83
- </fieldset>
84
-
85
- <LanguagePicker />
86
-
87
- <div class="actions">
88
- <button class="btn preset-filled-primary-400-600 text-surface-100" onclick={() => props.close()}
89
- title="Close modal">
90
- Close
91
- </button>
92
- </div>
93
- </div>
94
- </ModalBase>
95
-
96
- <style>
97
- .actions {
98
- display: flex;
99
- flex-direction: row-reverse;
100
- margin-top: 1.4lh;
101
- }
102
-
103
- .wrapper {
104
- display: flex;
105
- flex-direction: column;
106
- justify-content: start;
107
- text-align: start;
108
- gap: 1lh;
109
- }
1
+ <script lang="ts">
2
+ import type { ModalProps } from 'svelte-modals';
3
+ import { setMode, userPrefersMode } from 'mode-watcher';
4
+
5
+ import { m } from '../../../../paraglide/messages';
6
+ import ModalBase from '../../../components/ModalBase.svelte';
7
+ import DarkIcon from '../../../../assets/icons/icon-dark-mode.svg';
8
+ import LightIcon from '../../../../assets/icons/icon-light-mode.svg';
9
+ import ConstrastIcon from '../../../../assets/icons/icon-contrast.svg';
10
+ import LanguagePicker from './LanguagePicker.svelte';
11
+
12
+ let props: ModalProps = $props();
13
+
14
+
15
+ interface ToggleItem {
16
+ key: 'light' | 'dark' | 'system'
17
+ imageSrc: string,
18
+ label: string,
19
+ }
20
+
21
+ const modes: ToggleItem[] = [
22
+ { key: 'light', imageSrc: LightIcon, label: 'Light' },
23
+ { key: 'dark', imageSrc: DarkIcon, label: 'Dark' },
24
+ { key: 'system', imageSrc: ConstrastIcon, label: 'System' }
25
+ ];
26
+
27
+ let selectedItem: ToggleItem = $state(modes[0]);
28
+
29
+ // when mode is edited outside, adjust toggle button
30
+ // do not use runes here because we only want explicit changes outside
31
+ // our control here!
32
+ userPrefersMode.subscribe((value) => {
33
+ const si = modes.find(m => m.key === value);
34
+ if (selectedItem !== si && si) {
35
+ selectedItem = si;
36
+ }
37
+ });
38
+
39
+ // when mode is changed inside the button, adjust the mode
40
+ $effect(() => {
41
+ switch (selectedItem?.key) {
42
+ case 'dark':
43
+ setMode('dark');
44
+ break;
45
+ case 'light':
46
+ setMode('light');
47
+ break;
48
+ case 'system':
49
+ setMode('system');
50
+ break;
51
+ default:
52
+ break;
53
+ }
54
+ });
55
+ </script>
56
+
57
+ <ModalBase {...props}>
58
+ <div class="wrapper">
59
+ <h2>{m.settings()}</h2>
60
+
61
+ <fieldset class="btn-group border-primary-500 border-2 flex-col p-2 md:flex-row">
62
+ <legend class="bg-surface-100-900 pl-4 pr-4">Mode</legend>
63
+ {#each modes as mode (mode)}
64
+ <button
65
+ type="button"
66
+ title={mode.label}
67
+ class={`btn pt-3 pb-3 hover:brightness-125
68
+ ${mode.key === selectedItem.key ? 'bg-secondary-400 dark:bg-secondary-800' : 'preset-outlined-primary-300-700'}
69
+ `}
70
+ onclick={() => { setMode(mode.key) }}
71
+ >
72
+ <img
73
+ src={mode.imageSrc}
74
+ aria-hidden="true"
75
+ alt=""
76
+ class={`icon
77
+ ${mode.key === selectedItem.key ? 'reverse' : ''}
78
+ `}
79
+ >
80
+ {mode.label}
81
+ </button>
82
+ {/each}
83
+ </fieldset>
84
+
85
+ <LanguagePicker />
86
+
87
+ <div class="actions">
88
+ <button class="btn preset-filled-primary-400-600 text-surface-100" onclick={() => props.close()}
89
+ title="Close modal">
90
+ Close
91
+ </button>
92
+ </div>
93
+ </div>
94
+ </ModalBase>
95
+
96
+ <style>
97
+ .actions {
98
+ display: flex;
99
+ flex-direction: row-reverse;
100
+ margin-top: 1.4lh;
101
+ }
102
+
103
+ .wrapper {
104
+ display: flex;
105
+ flex-direction: column;
106
+ justify-content: start;
107
+ text-align: start;
108
+ gap: 1lh;
109
+ }
110
110
  </style>
@@ -1,38 +1,43 @@
1
- <script lang="ts">
2
- import { getLocale, localizeHref } from "../../../../paraglide/runtime";
3
- import PinyaCombobox from "../../../elements/pinya-combobox/PinyaCombobox.svelte";
4
-
5
- interface ComboxData {
6
- label: string;
7
- value: "en" | "fr" | "tl";
8
- }
9
-
10
- const comboboxData: ComboxData[] = [
11
- { label: "English", value: "en" },
12
- { label: "French", value: "fr" },
13
- { label: "Tagalog", value: "tl" }
14
- ];
15
-
16
- let selectedCountry = $state([getLocale()]);
17
-
18
- interface ValueDetail {
19
- value: string[];
20
- }
21
-
22
- const onValueChange = (e: ValueDetail) => {
23
- const data = comboboxData.find((d) => d.value === e.value[0]);
24
- if (data) {
25
- selectedCountry = [data.value];
26
- location.href = localizeHref("./", { locale: data.value });
27
- }
28
- };
29
- </script>
30
-
31
- <PinyaCombobox
32
- data={comboboxData}
33
- value={selectedCountry}
34
- defaultValue={selectedCountry}
35
- label="Select Language"
36
- placeholder="Select Language"
37
- {onValueChange}
1
+ <script lang="ts">
2
+ import { deLocalizeHref, getLocale, localizeHref } from "../../../../paraglide/runtime";
3
+ import PinyaCombobox from "../../../elements/pinya-combobox/PinyaCombobox.svelte";
4
+ import { appState } from "../../../templates/PinyaPageLayout/runes.svelte";
5
+
6
+ interface ComboxData {
7
+ label: string;
8
+ value: "en" | "fr" | "tl";
9
+ }
10
+
11
+ const comboboxData: ComboxData[] = [
12
+ { label: "English", value: "en" },
13
+ { label: "French", value: "fr" },
14
+ { label: "Tagalog", value: "tl" }
15
+ ];
16
+
17
+ let selectedCountry = $state([getLocale()]);
18
+
19
+ interface ValueDetail {
20
+ value: string[];
21
+ }
22
+
23
+ const onValueChange = (e: ValueDetail) => {
24
+ const data = comboboxData.find((d) => d.value === e.value[0]);
25
+ if (data) {
26
+ selectedCountry = [data.value];
27
+ const pathname = deLocalizeHref(location.href);
28
+ location.href = localizeHref(pathname, { locale: data.value });
29
+ }
30
+ };
31
+
32
+ let disabled = $derived(!appState.isLanguagePickerAvailable);
33
+ </script>
34
+
35
+ <PinyaCombobox
36
+ data={comboboxData}
37
+ value={selectedCountry}
38
+ defaultValue={selectedCountry}
39
+ label="Select Language"
40
+ placeholder="Select Language"
41
+ {onValueChange}
42
+ {disabled}
38
43
  />
@@ -1,10 +1,12 @@
1
1
  <script module lang="ts">
2
2
  import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
3
3
  import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
4
- import type { ProjectComponentProps } from "../../templates/seaweed-layout/ProjectComponentProps";
5
- import { FourPartCard } from "../../components/index.js";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
8
10
 
9
11
  const key = "Hepcat";
10
12
  export { component, key };
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from "../../templates/seaweed-layout/ProjectComponentProps";
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "Hepcat";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -1,60 +1,62 @@
1
- <script module lang="ts">
2
- import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
3
- import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import type { ProjectComponentProps } from "../../templates/index";
5
- import { FourPartCard } from "../../components/index.js";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
8
-
9
- const key = "Pengi";
10
- export { component, key };
11
- </script>
12
-
13
- {#snippet component(props: ProjectComponentProps)}
14
- <FourPartCard>
15
- {#snippet headerCover()}
16
- <video class="rounded-t-xl max-h-64 not-prose object-cover w-full" playsinline autoplay muted loop preload="none">
17
- video unavailable. original video contains pengi gameplay showing the dynamic dialog
18
- layout and character animation.
19
- <source src={HeaderPengi} type="video/mp4">
20
- </video>
21
- {/snippet}
22
-
23
- {#snippet header()}
24
- <h3>Pengi</h3>
25
-
26
- <blockquote>
27
- Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
28
- money...
29
- </blockquote>
30
- {/snippet}
31
-
32
- <p>
33
- Pengi is a text-based adventure made in <span class='qt-unity'>Unity</span> (<span class='qt-cs'>C#</span>). I
34
- acted as the sole
35
- programmer for the team. Most of the work revolves around UI and creating <a
36
- href="https://yarnspinner.dev/" target="_blank">YarnSpinner</a> commands for writers
37
- to use to create expressive stage directions in the script.
38
- </p>
39
-
40
- <section class="game-link-section">
41
- <PinyaButton
42
- buttonVariant={ButtonVariant.Image}
43
- aria-label="Click to go to Project Pengi in Github"
44
- title="https://github.com/GreenTea-M/ProjectPengi"
45
- onclick={() => window.open("https://github.com/GreenTea-M/ProjectPengi")}
46
- >
47
- <ImageIcon alt="" aria-hidden="true" src={GithubIcon} />
48
- </PinyaButton>
49
- <PinyaButton
50
- buttonVariant={ButtonVariant.Image}
51
- aria-label="Click to go to Project Pengi in Itch.io"
52
- title="https://turnipxenon.itch.io/pengi"
53
- onclick={() => window.open("https://turnipxenon.itch.io/pengi")}
54
- >
55
- <ImageIcon alt="" aria-hidden="true" src={ItchLogoHotLink} />
56
- </PinyaButton>
57
- </section>
58
-
59
- </FourPartCard>
1
+ <script module lang="ts">
2
+ import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
3
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
10
+
11
+ const key = "Pengi";
12
+ export { component, key };
13
+ </script>
14
+
15
+ {#snippet component(props: ProjectComponentProps)}
16
+ <FourPartCard>
17
+ {#snippet headerCover()}
18
+ <video class="rounded-t-xl max-h-64 not-prose object-cover w-full" playsinline autoplay muted loop preload="none">
19
+ video unavailable. original video contains pengi gameplay showing the dynamic dialog
20
+ layout and character animation.
21
+ <source src={HeaderPengi} type="video/mp4">
22
+ </video>
23
+ {/snippet}
24
+
25
+ {#snippet header()}
26
+ <h3>Pengi</h3>
27
+
28
+ <blockquote>
29
+ Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
30
+ money...
31
+ </blockquote>
32
+ {/snippet}
33
+
34
+ <p>
35
+ Pengi is a text-based adventure made in <span class='qt-unity'>Unity</span> (<span class='qt-cs'>C#</span>). I
36
+ acted as the sole
37
+ programmer for the team. Most of the work revolves around UI and creating <a
38
+ href="https://yarnspinner.dev/" target="_blank">YarnSpinner</a> commands for writers
39
+ to use to create expressive stage directions in the script.
40
+ </p>
41
+
42
+ <section class="game-link-section">
43
+ <PinyaButton
44
+ buttonVariant={ButtonVariant.Image}
45
+ aria-label="Click to go to Project Pengi in Github"
46
+ title="https://github.com/GreenTea-M/ProjectPengi"
47
+ onclick={() => window.open("https://github.com/GreenTea-M/ProjectPengi")}
48
+ >
49
+ <ImageIcon alt="" aria-hidden="true" src={GithubIcon} />
50
+ </PinyaButton>
51
+ <PinyaButton
52
+ buttonVariant={ButtonVariant.Image}
53
+ aria-label="Click to go to Project Pengi in Itch.io"
54
+ title="https://turnipxenon.itch.io/pengi"
55
+ onclick={() => window.open("https://turnipxenon.itch.io/pengi")}
56
+ >
57
+ <ImageIcon alt="" aria-hidden="true" src={ItchLogoHotLink} />
58
+ </PinyaButton>
59
+ </section>
60
+
61
+ </FourPartCard>
60
62
  {/snippet}
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from "../../templates/index";
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "Pengi";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -1,10 +1,12 @@
1
1
  <script module lang="ts">
2
- import HeaderSoulwork from '../../../assets/temp/header-soulwork.mp4';
3
- import GithubIcon from '../../../assets/icons/github-mark.svg';
2
+ import HeaderSoulwork from "../../../assets/temp/header-soulwork.mp4";
3
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
4
4
  import type { ProjectComponentProps } from "../../templates/index";
5
- import { FourPartCard } from "../../components/index";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
8
10
 
9
11
  const key = "Soulwork";
10
12
  export { component, key };
@@ -1,28 +1,31 @@
1
1
  <script module lang="ts">
2
- import GithubIcon from '../../../assets/icons/github-mark.svg';
3
- import ThisWebsiteFootage from '../../../assets/others/seaweed-showcase.mp4';
4
- import type { ProjectComponentProps } from '../../templates/seaweed-layout/ProjectComponentProps';
2
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
3
+ import ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { default as TextChip } from "../../elements/text-chip/TextChip.svelte";
5
10
 
6
- const key = 'This Webpage';
11
+ const key = "This Webpage";
7
12
  export { component, key };
8
13
  </script>
9
- <script>
10
- import { FourPartCard } from "../../components/index";
11
- import { ButtonVariant, ImageIcon, PinyaButton, TextChip } from "../../elements/index.js";
12
- </script>
13
14
 
14
15
  {#snippet component(props: ProjectComponentProps)}
15
16
  <FourPartCard>
16
17
 
17
18
  {#snippet headerCover()}
18
- <video
19
- playsinline autoplay muted loop preload="none"
20
- class="game-video-cover"
21
- >
22
- <source src={ThisWebsiteFootage} type="video/mp4">
23
- video unavailable. original video contains clips of this website being resized and light-dark mode being
24
- toggled.
25
- </video>
19
+ {#if !props.isPineapple}
20
+ <video
21
+ playsinline autoplay muted loop preload="none"
22
+ class="game-video-cover"
23
+ >
24
+ <source src={ThisWebsiteFootage} type="video/mp4">
25
+ video unavailable. original video contains clips of this website being resized and light-dark mode being
26
+ toggled.
27
+ </video>
28
+ {/if}
26
29
  {/snippet}
27
30
 
28
31
  {#snippet header()}
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from '../../templates/seaweed-layout/ProjectComponentProps';
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "This Webpage";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -8,7 +8,7 @@
8
8
  import { modals } from "svelte-modals";
9
9
  import GeneralSettingsModal from "../../modules/modals/general-settings/GeneralSettingsModal.svelte";
10
10
  import { localizeHref } from "../../../paraglide/runtime";
11
- import { appState } from "..";
11
+ import { appState } from "./runes.svelte";
12
12
 
13
13
  let {
14
14
  children,
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ children: Snippet;
4
+ appBarLead?: Snippet;
5
+ footer?: Snippet;
6
+ };
7
+ declare const PinyaPageLayout: import("svelte").Component<$$ComponentProps, {}, "appBarLead">;
8
+ type PinyaPageLayout = ReturnType<typeof PinyaPageLayout>;
9
+ export default PinyaPageLayout;
@@ -0,0 +1,2 @@
1
+ export { default as PinyaPageLayout } from "./PinyaPageLayout.svelte";
2
+ export * from "./runes.svelte";
@@ -0,0 +1,2 @@
1
+ export { default as PinyaPageLayout } from "./PinyaPageLayout.svelte";
2
+ export * from "./runes.svelte";
@@ -2,6 +2,9 @@ import type { Snippet } from 'svelte';
2
2
  interface AppStore {
3
3
  title: string;
4
4
  lead?: Snippet;
5
+ isLanguagePickerAvailable: boolean;
6
+ allowDialog?: boolean;
7
+ enableDialogOnByDefault?: boolean;
5
8
  }
6
9
  export declare const appState: AppStore;
7
10
  export {};
@@ -0,0 +1,4 @@
1
+ export const appState = $state({
2
+ title: '',
3
+ isLanguagePickerAvailable: true,
4
+ });
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { type PageMeta } from "../../../components/navigation_component/index";
2
+ import { type PageMeta } from "../../modules/NavigationMenu/index";
3
3
  import { onMount } from "svelte";
4
4
  import Placeholder from "../../elements/Placeholder.svelte";
5
5
 
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
- import { type CreateUrlRequest, CreateUrlResult, jsonToCreateUrlResponse } from "../../types/api/CreateUrl";
2
+ import { type CreateUrlRequest, CreateUrlResult, jsonToCreateUrlResponse } from "../../../types/api/CreateUrl";
3
3
  import type { ToastContext } from "@skeletonlabs/skeleton-svelte";
4
4
  import { getContext } from "svelte";
5
5
  import type { ToastSettings } from "./ToastSettings";
6
- import { PinyaButton } from "../../ui/elements/index";
6
+ import { PinyaButton } from "../../elements/index";
7
7
 
8
8
  export const toast: ToastContext = getContext("toast");
9
9