@turnipxenon/pineapple 2.10.0 → 3.0.0-alpha-3

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 (223) hide show
  1. package/dist/assets/icons/icon-check-dark-contrast.svg +1 -0
  2. package/dist/assets/icons/icon-check-light-contrast.svg +1 -0
  3. package/dist/assets/icons/icon-contrast.svg +1 -0
  4. package/dist/assets/icons/icon-copy-dark-contrast.svg +1 -0
  5. package/dist/assets/icons/icon-copy-light-contrast.svg +1 -0
  6. package/dist/assets/icons/icon-dark-mode.svg +1 -0
  7. package/dist/assets/icons/icon-light-mode.svg +1 -0
  8. package/dist/assets/icons/icon-settings.svg +1 -0
  9. package/dist/components/Card.svelte +43 -41
  10. package/dist/components/Card.svelte.d.ts +11 -24
  11. package/dist/components/CarouselElement.svelte +15 -8
  12. package/dist/components/CarouselElement.svelte.d.ts +7 -18
  13. package/dist/components/ElementVisbilityDetector.svelte +23 -14
  14. package/dist/components/ElementVisbilityDetector.svelte.d.ts +6 -17
  15. package/dist/components/LazyAsset.svelte +93 -65
  16. package/dist/components/LazyAsset.svelte.d.ts +9 -19
  17. package/dist/components/PineappleSlideToggle.svelte +28 -10
  18. package/dist/components/PineappleSlideToggle.svelte.d.ts +9 -19
  19. package/dist/components/RandomizedBackground.svelte +46 -27
  20. package/dist/components/RandomizedBackground.svelte.d.ts +5 -15
  21. package/dist/components/RandomizedImage.svelte +15 -8
  22. package/dist/components/RandomizedImage.svelte.d.ts +6 -16
  23. package/dist/components/StickyElement.svelte +25 -16
  24. package/dist/components/StickyElement.svelte.d.ts +6 -17
  25. package/dist/components/ToggleableContent.svelte +88 -59
  26. package/dist/components/ToggleableContent.svelte.d.ts +6 -17
  27. package/dist/components/blog_template/BlogTemplate.svelte +45 -25
  28. package/dist/components/blog_template/BlogTemplate.svelte.d.ts +9 -20
  29. package/dist/components/blog_template/BlogTemplateInner.svelte +11 -3
  30. package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +6 -17
  31. package/dist/components/chip/Chip.svelte +33 -57
  32. package/dist/components/chip/Chip.svelte.d.ts +7 -18
  33. package/dist/components/combo_box/ComboBox.svelte +10 -4
  34. package/dist/components/combo_box/ComboBox.svelte.d.ts +6 -16
  35. package/dist/components/combo_box/ComboBoxWithButton.svelte +16 -9
  36. package/dist/components/combo_box/ComboBoxWithButton.svelte.d.ts +7 -17
  37. package/dist/components/combo_box/combo-box.postcss +2 -2
  38. package/dist/components/dialog_manager/DialogManager.d.ts +0 -1
  39. package/dist/components/dialog_manager/DialogManagerStore.d.ts +0 -1
  40. package/dist/components/dialog_manager/DialogManagerStore.js +1 -1
  41. package/dist/components/dialog_overlay/DialogOverlay.svelte +42 -34
  42. package/dist/components/dialog_overlay/DialogOverlay.svelte.d.ts +3 -14
  43. package/dist/components/index.d.ts +1 -1
  44. package/dist/components/index.js +1 -1
  45. package/dist/components/layouts/SeaweedBaseLayout.svelte +80 -43
  46. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +8 -21
  47. package/dist/components/navigation_component/NavigationComponent.svelte +52 -141
  48. package/dist/components/navigation_component/NavigationComponent.svelte.d.ts +17 -26
  49. package/dist/components/navigation_component/NavigationControl.svelte +52 -103
  50. package/dist/components/navigation_component/NavigationControl.svelte.d.ts +7 -17
  51. package/dist/components/overrideable_meta/OverridableMeta.svelte +37 -22
  52. package/dist/components/overrideable_meta/OverridableMeta.svelte.d.ts +9 -19
  53. package/dist/components/pineapple/PineappleBaseLayout.svelte +132 -188
  54. package/dist/components/pineapple/PineappleBaseLayout.svelte.d.ts +6 -17
  55. package/dist/components/pineapple/toast/DefaultToastBody.svelte +14 -16
  56. package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +7 -17
  57. package/dist/components/pineapple/toast/Toast.d.ts +0 -1
  58. package/dist/components/pineapple/toast/Toast.svelte +92 -64
  59. package/dist/components/pineapple/toast/Toast.svelte.d.ts +3 -14
  60. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +22 -19
  61. package/dist/paraglide/messages/_index.d.ts +2 -0
  62. package/dist/paraglide/messages/_index.js +3 -0
  63. package/dist/paraglide/messages/example_message.d.ts +5 -0
  64. package/dist/paraglide/messages/example_message.js +39 -0
  65. package/dist/paraglide/messages/settings.d.ts +3 -0
  66. package/dist/paraglide/messages/settings.js +38 -0
  67. package/dist/paraglide/messages.d.ts +2 -0
  68. package/dist/paraglide/messages.js +4 -0
  69. package/dist/paraglide/registry.d.ts +21 -0
  70. package/dist/paraglide/registry.js +31 -0
  71. package/dist/paraglide/runtime.d.ts +400 -0
  72. package/dist/paraglide/runtime.js +1060 -0
  73. package/dist/paraglide/server.d.ts +64 -0
  74. package/dist/paraglide/server.js +161 -0
  75. package/dist/scripts/util/FileManagement.d.ts +1 -1
  76. package/dist/store.d.ts +0 -1
  77. package/dist/styles/app.css +144 -0
  78. package/dist/styles/turnip-theme.css +327 -0
  79. package/dist/template/seaweed/CreateUrlForm.svelte +59 -41
  80. package/dist/template/seaweed/CreateUrlForm.svelte.d.ts +8 -15
  81. package/dist/template/seaweed/SeaweedTemplate.svelte +244 -195
  82. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +28 -25
  83. package/dist/template/seaweed/ToastSettings.d.ts +15 -0
  84. package/dist/template/seaweed/ToastSettings.js +1 -0
  85. package/dist/template/seaweed/entries/ChefWings.svelte +37 -39
  86. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +5 -15
  87. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +32 -24
  88. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +5 -15
  89. package/dist/template/seaweed/entries/Hepcat.svelte +58 -49
  90. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +5 -15
  91. package/dist/template/seaweed/entries/Pengi.svelte +51 -43
  92. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +5 -15
  93. package/dist/template/seaweed/entries/Soulwork.svelte +44 -36
  94. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +5 -15
  95. package/dist/template/seaweed/entries/ThisWebpage.svelte +47 -38
  96. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +5 -15
  97. package/dist/template/seaweed/entries/WorkExperience.svelte +109 -92
  98. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +6 -16
  99. package/dist/template/seaweed/entries/Workset.svelte +51 -42
  100. package/dist/template/seaweed/entries/Workset.svelte.d.ts +5 -15
  101. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +169 -259
  102. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +10 -21
  103. package/dist/template/seaweed/seaweed.postcss +1 -9
  104. package/dist/{theme.postcss → theme.css} +1 -4
  105. package/dist/ui/components/FourPartCard.svelte +47 -0
  106. package/dist/ui/components/FourPartCard.svelte.d.ts +10 -0
  107. package/dist/ui/components/ModalBase.svelte +75 -0
  108. package/dist/ui/components/ModalBase.svelte.d.ts +8 -0
  109. package/dist/ui/components/SocialSection.svelte +87 -0
  110. package/dist/ui/components/SocialSection.svelte.d.ts +9 -0
  111. package/dist/ui/components/index.d.ts +3 -0
  112. package/dist/ui/components/index.js +3 -0
  113. package/dist/ui/components/randomized-background/RandomizedBackground.svelte +87 -0
  114. package/dist/ui/components/randomized-background/RandomizedBackground.svelte.d.ts +6 -0
  115. package/dist/ui/components/randomized-background/RandomizedImage.svelte +42 -0
  116. package/dist/ui/components/randomized-background/RandomizedImage.svelte.d.ts +7 -0
  117. package/dist/ui/elements/CodeBlock/CodeBlock.svelte +65 -0
  118. package/dist/ui/elements/CodeBlock/CodeBlock.svelte.d.ts +5 -0
  119. package/dist/ui/elements/CodeBlock/CodeBlockProps.d.ts +11 -0
  120. package/dist/ui/elements/CodeBlock/CodeBlockProps.js +1 -0
  121. package/dist/ui/elements/CodeBlock/index.d.ts +2 -0
  122. package/dist/ui/elements/CodeBlock/index.js +2 -0
  123. package/dist/ui/elements/ColorScheme.d.ts +10 -0
  124. package/dist/ui/elements/ColorScheme.js +11 -0
  125. package/dist/ui/elements/GeneralUIProps.d.ts +12 -0
  126. package/dist/ui/elements/GeneralUIProps.js +1 -0
  127. package/dist/ui/elements/ImageIcon.svelte +54 -0
  128. package/dist/ui/elements/ImageIcon.svelte.d.ts +6 -0
  129. package/dist/ui/elements/OnBackground.d.ts +3 -0
  130. package/dist/ui/elements/OnBackground.js +4 -0
  131. package/dist/ui/elements/PineappleSwitch.svelte +29 -0
  132. package/dist/ui/elements/PineappleSwitch.svelte.d.ts +10 -0
  133. package/dist/ui/elements/TextLink.svelte +17 -0
  134. package/dist/ui/elements/TextLink.svelte.d.ts +8 -0
  135. package/dist/ui/elements/WrapperProps.d.ts +4 -0
  136. package/dist/ui/elements/WrapperProps.js +1 -0
  137. package/dist/ui/elements/index.d.ts +10 -0
  138. package/dist/ui/elements/index.js +10 -0
  139. package/dist/ui/elements/pinya-button/component.svelte +47 -0
  140. package/dist/ui/elements/pinya-button/component.svelte.d.ts +4 -0
  141. package/dist/ui/elements/pinya-button/index.d.ts +2 -0
  142. package/dist/ui/elements/pinya-button/index.js +2 -0
  143. package/dist/ui/elements/pinya-button/props.d.ts +13 -0
  144. package/dist/ui/elements/pinya-button/props.js +6 -0
  145. package/dist/ui/elements/pinya-card/component.svelte +21 -0
  146. package/dist/ui/elements/pinya-card/component.svelte.d.ts +7 -0
  147. package/dist/ui/elements/pinya-card/index.d.ts +2 -0
  148. package/dist/ui/elements/pinya-card/index.js +2 -0
  149. package/dist/ui/elements/pinya-card/props.d.ts +10 -0
  150. package/dist/ui/elements/pinya-card/props.js +1 -0
  151. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +35 -0
  152. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte.d.ts +18 -0
  153. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +18 -0
  154. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.js +1 -0
  155. package/dist/ui/elements/text-chip/TextChip.svelte +15 -0
  156. package/dist/ui/elements/text-chip/TextChip.svelte.d.ts +4 -0
  157. package/dist/ui/elements/text-chip/TextChipProps.d.ts +4 -0
  158. package/dist/ui/elements/text-chip/TextChipProps.js +1 -0
  159. package/dist/ui/elements/text-chip/index.d.ts +2 -0
  160. package/dist/ui/elements/text-chip/index.js +2 -0
  161. package/dist/ui/modules/index.d.ts +2 -0
  162. package/dist/ui/modules/index.js +2 -0
  163. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +110 -0
  164. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts +4 -0
  165. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +38 -0
  166. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts +3 -0
  167. package/dist/ui/modules/projects/Hepcat.svelte +71 -0
  168. package/dist/ui/modules/projects/Hepcat.svelte.d.ts +22 -0
  169. package/dist/ui/modules/projects/Pengi.svelte +60 -0
  170. package/dist/ui/modules/projects/Pengi.svelte.d.ts +22 -0
  171. package/dist/ui/modules/projects/Soulwork.svelte +55 -0
  172. package/dist/ui/modules/projects/Soulwork.svelte.d.ts +22 -0
  173. package/dist/ui/modules/projects/ThisWebpage.svelte +62 -0
  174. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +22 -0
  175. package/dist/ui/modules/projects/index.d.ts +4 -0
  176. package/dist/ui/modules/projects/index.js +4 -0
  177. package/dist/ui/modules/seaweed/ChumBucket.svelte +86 -0
  178. package/dist/ui/modules/seaweed/ChumBucket.svelte.d.ts +3 -0
  179. package/dist/ui/modules/seaweed/index.d.ts +3 -0
  180. package/dist/ui/modules/seaweed/index.js +4 -0
  181. package/dist/ui/templates/PinyaBase.svelte +48 -0
  182. package/dist/ui/templates/PinyaBase.svelte.d.ts +7 -0
  183. package/dist/ui/templates/confirmation-modal/component.svelte +47 -0
  184. package/dist/ui/templates/confirmation-modal/component.svelte.d.ts +4 -0
  185. package/dist/ui/templates/confirmation-modal/index.d.ts +2 -0
  186. package/dist/ui/templates/confirmation-modal/index.js +2 -0
  187. package/dist/ui/templates/confirmation-modal/props.d.ts +10 -0
  188. package/dist/ui/templates/confirmation-modal/props.js +1 -0
  189. package/dist/ui/templates/index.d.ts +4 -0
  190. package/dist/ui/templates/index.js +4 -0
  191. package/dist/ui/templates/pinya-page-layout/component.svelte +120 -0
  192. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +9 -0
  193. package/dist/ui/templates/pinya-page-layout/index.d.ts +2 -0
  194. package/dist/ui/templates/pinya-page-layout/index.js +2 -0
  195. package/dist/ui/templates/pinya-page-layout/runes.svelte.d.ts +7 -0
  196. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +3 -0
  197. package/dist/ui/templates/seaweed-layout/EntryGroup.svelte +89 -0
  198. package/dist/ui/templates/seaweed-layout/EntryGroup.svelte.d.ts +4 -0
  199. package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte +45 -0
  200. package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte.d.ts +9 -0
  201. package/dist/ui/templates/seaweed-layout/ProjectComponentProps.d.ts +4 -0
  202. package/dist/ui/templates/seaweed-layout/ProjectComponentProps.js +1 -0
  203. package/dist/ui/templates/seaweed-layout/ProjectGroupConfig.svelte +316 -0
  204. package/dist/ui/templates/seaweed-layout/ProjectGroupConfig.svelte.d.ts +14 -0
  205. package/dist/ui/templates/seaweed-layout/SeaweedLayout.md +4 -0
  206. package/dist/ui/templates/seaweed-layout/SeaweedLayout.svelte +196 -0
  207. package/dist/ui/templates/seaweed-layout/SeaweedLayout.svelte.d.ts +4 -0
  208. package/dist/ui/templates/seaweed-layout/index.d.ts +4 -0
  209. package/dist/ui/templates/seaweed-layout/index.js +4 -0
  210. package/dist/ui/templates/seaweed-layout/props.d.ts +25 -0
  211. package/dist/ui/templates/seaweed-layout/props.js +1 -0
  212. package/dist/util/util.d.ts +1 -0
  213. package/dist/util/util.js +9 -0
  214. package/package.json +37 -20
  215. package/src/lib/styles/app.css +144 -0
  216. package/src/lib/theme.css +114 -0
  217. package/dist/app.postcss +0 -212
  218. package/dist/components/SocialSection.svelte +0 -166
  219. package/dist/components/SocialSection.svelte.d.ts +0 -31
  220. package/dist/postcss.d.ts +0 -3
  221. package/dist/styles/DefaultGridContainer.css +0 -61
  222. package/dist/template/seaweed/ChumBucket.svelte +0 -87
  223. package/dist/template/seaweed/ChumBucket.svelte.d.ts +0 -14
@@ -1,175 +1,238 @@
1
- <script>import { afterUpdate, onMount } from "svelte";
2
- import EntryOrderConfig from "./entry_order_config/EntryOrderConfig.svelte";
3
- import { runChaos } from "./RunChaos";
4
- import SocialSection from "../../components/SocialSection.svelte";
5
- import "./seaweed.postcss";
6
- import SeaweedBaseLayout from "../../components/layouts/SeaweedBaseLayout.svelte";
7
- import { CodeBlock } from "@skeletonlabs/skeleton";
8
- import { page } from "$app/stores";
9
- import Card from "../../components/Card.svelte";
10
- import {
11
- TurnGroupEntriesMutable
12
- } from "./SeaweedTemplateData";
13
- import { parseQueryTerms } from "./ParseQueryTerms";
14
- import UrlShortenerForm from "./CreateUrlForm.svelte";
15
- import PineappleSlideToggle from "../../components/PineappleSlideToggle.svelte";
16
- import { Chip } from "../../index";
17
- import ChumBucket from "./ChumBucket.svelte";
18
- export let seaweedTemplateData;
19
- export let projectFirstGroupedEntries;
20
- export let getAllEntryFromGlobal;
21
- export let getEntryFromGlobal;
22
- export let letChaos = true;
23
- export let name = "Turnip";
24
- export let email = "turnipxenon@gmail.com";
25
- export let linkedinSlug = "turnip-xenon";
26
- export let domain = "http://localhost:5173/portfolio/actual/";
27
- export let serverSideQueryParams = "";
28
- export let experienceSection;
29
- let entryProps = {
30
- email,
31
- letChaos,
32
- linkedinSlug,
33
- name,
34
- seaweedTemplateData
35
- };
36
- let isVisible = true;
37
- const paramQTSet = /* @__PURE__ */ new Set();
38
- let isAdvanceSettingOn = false;
39
- $:
40
- isSocialsGone = !isVisible;
41
- let qtfontWeight = "normal";
42
- let additionalFontWeight = "";
43
- let chaosDone = false;
44
- let mainVisibility = "visible";
45
- $:
46
- mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
47
- const syncQT = () => {
48
- if (seaweedTemplateData.queryTermMap.size === 0 || paramQTSet.size === 0) {
49
- return;
50
- }
51
- seaweedTemplateData.queryTermMap.forEach((_, k) => {
52
- seaweedTemplateData.queryTermMap.set(k, paramQTSet.has(k));
53
- });
54
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
55
- };
56
- const parseQueryTermsLocal = async () => {
57
- const qtSet = /* @__PURE__ */ new Set();
58
- parseQueryTerms(document.body, qtSet);
59
- qtSet.forEach((t) => seaweedTemplateData.queryTermMap.set(t, true));
60
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
61
- syncQT();
62
- };
63
- const filterSearchParams = (searchParams) => {
64
- const isFunOn = searchParams.get("fun")?.trim();
65
- if (isFunOn === "true") {
66
- seaweedTemplateData.shouldAddFunNote = true;
67
- }
68
- const gameSectionFirstParam = searchParams.get("game-section-first")?.trim();
69
- const orderParam = searchParams.get("order")?.trim();
70
- if (orderParam) {
71
- seaweedTemplateData.groupedEntries = [];
72
- orderParam.split(",").forEach((groupDefinition) => {
73
- const pair = groupDefinition.split(":");
74
- if (pair.length >= 2) {
75
- const group = {
76
- name: pair[0],
77
- items: [],
78
- gridClass: pair[2]
79
- };
80
- pair[1].split("|").forEach((e) => {
81
- const component = getEntryFromGlobal(e);
82
- if (component) {
83
- group.items.push(component);
84
- }
85
- });
86
- seaweedTemplateData.groupedEntries.push(group);
87
- }
88
- });
89
- seaweedTemplateData.groupedEntries = seaweedTemplateData.groupedEntries;
90
- } else if (gameSectionFirstParam === "false") {
91
- seaweedTemplateData.groupedEntries = TurnGroupEntriesMutable(projectFirstGroupedEntries);
92
- }
93
- const qtValue = searchParams.get("qt")?.trim();
94
- if (qtValue !== void 0) {
95
- qtfontWeight = "normal";
96
- const dynamicStyle = qtValue.split(",").map((term) => {
97
- paramQTSet.add(`qt-${term}`);
98
- return `span.qt-${term} { font-weight: bold !important; }`;
99
- }).join("\n");
100
- const style = document.createElement("style");
101
- style.type = "text/css";
102
- style.innerText = dynamicStyle;
103
- document.head.appendChild(style);
104
- syncQT();
105
- } else {
106
- qtfontWeight = "bold";
107
- }
108
- };
109
- onMount(async () => {
110
- if (!letChaos && serverSideQueryParams) {
111
- filterSearchParams(new URLSearchParams(serverSideQueryParams));
112
- } else if (!letChaos && $page.url.searchParams) {
113
- filterSearchParams($page.url.searchParams);
114
- }
115
- if (letChaos) {
116
- runChaos(document.body);
117
- chaosDone = true;
118
- }
119
- });
120
- let isParsed = false;
121
- afterUpdate(async () => {
122
- if (!letChaos && !isParsed) {
123
- isParsed = true;
124
- await parseQueryTermsLocal();
125
- }
126
- });
127
- const toggleTerm = (term) => {
128
- seaweedTemplateData.queryTermMap.set(term, !seaweedTemplateData.queryTermMap.get(term));
129
- seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
130
- };
131
- let orderUrl = "";
132
- let advancedUrl = domain;
133
- let advancedQuery = "";
134
- const updateUrl = (seaweedTemplateData2) => {
135
- if (seaweedTemplateData2 === void 0) {
136
- return;
137
- }
138
- const queryParams = [];
139
- if (orderUrl) {
140
- queryParams.push(orderUrl);
141
- }
142
- const qtList = [];
143
- seaweedTemplateData2.queryTermMap.forEach((shouldBold, term) => {
144
- if (shouldBold) {
145
- qtList.push(term);
146
- }
147
- });
148
- if (qtList.length === 0) {
149
- queryParams.push("qt=clear");
150
- } else if (seaweedTemplateData2.queryTermMap.size !== qtList.length) {
151
- queryParams.push(`qt=${qtList.map((t) => t.slice(3, t.length)).join(",")}`);
152
- }
153
- if (seaweedTemplateData2.shouldAddFunNote) {
154
- queryParams.push("fun=true");
155
- }
156
- if (!seaweedTemplateData2.gameSectionFirst) {
157
- queryParams.push("game-section-first=false");
158
- }
159
- if (queryParams.length > 0) {
160
- advancedQuery = queryParams.join("&");
161
- advancedUrl = `${domain}?${advancedQuery}`;
162
- } else {
163
- advancedUrl = domain;
164
- }
165
- };
166
- $:
167
- updateUrl(seaweedTemplateData);
168
- const updateSeaweedWhenFunNoteChanged = (_) => {
169
- entryProps = entryProps;
170
- };
171
- $:
172
- updateSeaweedWhenFunNoteChanged(seaweedTemplateData.shouldAddFunNote);
1
+ <!-- @migration-task Error while migrating Svelte code: Can't migrate code with afterUpdate. Please migrate by hand. -->
2
+ <script lang="ts">
3
+ import { afterUpdate, type ComponentType, onMount } from "svelte";
4
+ import EntryOrderConfig from "./entry_order_config/EntryOrderConfig.svelte";
5
+ import { runChaos } from "./RunChaos";
6
+ import SocialSection from "../../ui/components/SocialSection.svelte";
7
+ import SeaweedBaseLayout from "../../components/layouts/SeaweedBaseLayout.svelte";
8
+ import { page } from "$app/stores";
9
+ import Card from "../../components/Card.svelte";
10
+ import {
11
+ type ComponentMeta,
12
+ type EntryGroup,
13
+ type SeaweedTemplateData,
14
+ TurnGroupEntriesMutable
15
+ } from "./SeaweedTemplateData";
16
+ import type { EntryProps } from "./entries/EntryProps";
17
+ import { parseQueryTerms } from "./ParseQueryTerms";
18
+ import UrlShortenerForm from "./CreateUrlForm.svelte";
19
+ import PineappleSlideToggle from "../../components/PineappleSlideToggle.svelte";
20
+ import { Chip } from "../../index";
21
+ import ChumBucket from "../../ui/modules/seaweed/ChumBucket.svelte";
22
+
23
+ export let seaweedTemplateData: SeaweedTemplateData;
24
+ export let projectFirstGroupedEntries: ReadonlyArray<EntryGroup>;
25
+ export let getAllEntryFromGlobal: () => Map<string, ComponentMeta>;
26
+ export let getEntryFromGlobal: (name: string) => undefined | ComponentMeta;
27
+ export let letChaos = true;
28
+ export let name = "Turnip";
29
+ export let email = "turnipxenon@gmail.com";
30
+ export let linkedinSlug = "turnip-xenon";
31
+ export let domain = "http://localhost:5173/portfolio/actual/";
32
+ export let serverSideQueryParams = "";
33
+ export let experienceSection: ComponentType;
34
+
35
+ // region query params
36
+ let entryProps: EntryProps = {
37
+ email,
38
+ letChaos,
39
+ linkedinSlug,
40
+ name,
41
+ seaweedTemplateData
42
+ };
43
+
44
+ let isVisible = true;
45
+ const paramQTSet = new Set<string>();
46
+
47
+ let isAdvanceSettingOn = false;
48
+ $: isSocialsGone = !isVisible;
49
+ $: console.log("is visible", isVisible);
50
+
51
+ let qtfontWeight = "normal";
52
+ let additionalFontWeight = "";
53
+
54
+ let chaosDone = false;
55
+ let mainVisibility = "visible";
56
+ $: mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
57
+
58
+ const syncQT = () => {
59
+ if (seaweedTemplateData.queryTermMap.size === 0 || paramQTSet.size === 0) {
60
+ return;
61
+ }
62
+
63
+ seaweedTemplateData.queryTermMap.forEach((_, k) => {
64
+ seaweedTemplateData.queryTermMap.set(k, paramQTSet.has(k));
65
+ });
66
+
67
+ // force svelte refresh
68
+ seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
69
+ };
70
+
71
+ const parseQueryTermsLocal = async () => {
72
+ const qtSet = new Set<string>();
73
+ parseQueryTerms(document.body, qtSet);
74
+ qtSet.forEach(t => seaweedTemplateData.queryTermMap.set(t, true));
75
+ // force svelte update
76
+ seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
77
+ syncQT();
78
+ };
79
+
80
+ /** qt values and what they mean:
81
+ * undefined: set all qt terms to font-weight: bold
82
+ * todo: implement clear
83
+ * clear: unset all terms to font-weight: normal
84
+ * <term>: only set qt-<term> to bold
85
+ * <term1>,<term2>: only set qt-<term1> and qt-<term2> to bold,
86
+ *
87
+ * ONLY CALL INSIDE onMount()
88
+ **/
89
+ const filterSearchParams = (searchParams: URLSearchParams) => {
90
+ const isFunOn = searchParams.get("fun")?.trim();
91
+ if (isFunOn === "true") {
92
+ seaweedTemplateData.shouldAddFunNote = true;
93
+ }
94
+
95
+ // region Order
96
+ const gameSectionFirstParam = searchParams.get("game-section-first")?.trim();
97
+ const orderParam = searchParams.get("order")?.trim();
98
+ if (orderParam) {
99
+ seaweedTemplateData.groupedEntries = [];
100
+
101
+ orderParam.split(",").forEach(groupDefinition => {
102
+ const pair = groupDefinition.split(":");
103
+ if (pair.length >= 2) {
104
+ const group: EntryGroup = {
105
+ name: pair[0],
106
+ items: [],
107
+ gridClass: pair[2]
108
+ };
109
+
110
+ pair[1].split("|").forEach(e => {
111
+ const component = getEntryFromGlobal(e);
112
+ if (component) {
113
+ group.items.push(component);
114
+ }
115
+ });
116
+
117
+ seaweedTemplateData.groupedEntries.push(group);
118
+ }
119
+
120
+ });
121
+
122
+ seaweedTemplateData.groupedEntries = seaweedTemplateData.groupedEntries;
123
+ } else if (gameSectionFirstParam === "false") {
124
+ seaweedTemplateData.groupedEntries = TurnGroupEntriesMutable(projectFirstGroupedEntries);
125
+ }
126
+ // endregion
127
+
128
+ // region Bold terms
129
+ const qtValue = searchParams.get("qt")?.trim();
130
+ if (qtValue !== undefined) {
131
+ qtfontWeight = "normal";
132
+ const dynamicStyle = qtValue.split(",").map((term) => {
133
+ // side-effect
134
+ paramQTSet.add(`qt-${term}`);
135
+
136
+ // main effect
137
+ return `span.qt-${term} { font-weight: bold !important; }`;
138
+ }).join("\n");
139
+
140
+ // https://stackoverflow.com/a/24285947/17836168
141
+ const style = document.createElement("style");
142
+ // noinspection JSDeprecatedSymbols
143
+ style.type = "text/css";
144
+ style.innerText = dynamicStyle;
145
+ document.head.appendChild(style);
146
+ syncQT();
147
+ } else {
148
+ qtfontWeight = "bold";
149
+ }
150
+ // endregion Bold terms
151
+ };
152
+ // endregion query params
153
+
154
+ /* region chaos scripts */
155
+ /* endregion chaos scripts */
156
+
157
+ onMount(async () => {
158
+ if (!letChaos && serverSideQueryParams) {
159
+ filterSearchParams(new URLSearchParams(serverSideQueryParams));
160
+ } else if (!letChaos && $page.url.searchParams) {
161
+ filterSearchParams($page.url.searchParams);
162
+ }
163
+
164
+ if (letChaos) {
165
+ runChaos(document.body);
166
+ chaosDone = true;
167
+ }
168
+ });
169
+
170
+ // todo: figure out what this does #migration
171
+ // let isParsed = false;
172
+ // afterUpdate(async () => {
173
+ // if (!letChaos && !isParsed) {
174
+ // isParsed = true;
175
+ // await parseQueryTermsLocal();
176
+ // }
177
+ // });
178
+
179
+ const toggleTerm = (term: string) => {
180
+ seaweedTemplateData.queryTermMap.set(term, !seaweedTemplateData.queryTermMap.get(term));
181
+ seaweedTemplateData.queryTermMap = seaweedTemplateData.queryTermMap;
182
+ };
183
+
184
+ // when either gameSectionFirst or the queryTerms are updated, update advancedUrl
185
+ let orderUrl = "";
186
+ let advancedUrl = domain;
187
+ let advancedQuery = "";
188
+ const updateUrl = (seaweedTemplateData: SeaweedTemplateData) => {
189
+ if (seaweedTemplateData === undefined) {
190
+ return;
191
+ }
192
+
193
+ const queryParams: string[] = [];
194
+
195
+ if (orderUrl) {
196
+ queryParams.push(orderUrl);
197
+ }
198
+
199
+ const qtList: string[] = [];
200
+ seaweedTemplateData.queryTermMap.forEach((shouldBold, term) => {
201
+ if (shouldBold) {
202
+ qtList.push(term);
203
+ }
204
+ });
205
+
206
+ if (qtList.length === 0) {
207
+ queryParams.push("qt=clear");
208
+ } else if (seaweedTemplateData.queryTermMap.size !== qtList.length) {
209
+ // we'll only add if the lengths are not equal
210
+ // dont need to add query if all terms in qtMap is true
211
+ queryParams.push(`qt=${qtList.map(t => t.slice(3, t.length)).join(",")}`);
212
+ }
213
+
214
+ if (seaweedTemplateData.shouldAddFunNote) {
215
+ queryParams.push("fun=true");
216
+ }
217
+
218
+ if (!seaweedTemplateData.gameSectionFirst) {
219
+ queryParams.push("game-section-first=false");
220
+ }
221
+
222
+ if (queryParams.length > 0) {
223
+ advancedQuery = queryParams.join("&");
224
+ advancedUrl = `${domain}?${advancedQuery}`;
225
+ } else {
226
+ advancedUrl = domain;
227
+ }
228
+ };
229
+ $: updateUrl(seaweedTemplateData);
230
+
231
+ // eslint-disable-next-line
232
+ const updateSeaweedWhenFunNoteChanged = (_: boolean) => {
233
+ entryProps = entryProps;
234
+ };
235
+ $: updateSeaweedWhenFunNoteChanged(seaweedTemplateData.shouldAddFunNote);
173
236
  </script>
174
237
 
175
238
  <SeaweedBaseLayout bind:shouldDisplayLeadingIcons={isSocialsGone}>
@@ -235,7 +298,7 @@ $:
235
298
  checked={shouldBold}>
236
299
  <!-- todo: change shouldBold -->
237
300
  <span style={`font-weight: ${shouldBold ? "bold" : "normal"}`}>
238
- {#if (shouldBold)}&check;{/if}
301
+ {#if (shouldBold)}{/if}
239
302
  {term}
240
303
  </span>
241
304
  </Chip>
@@ -260,28 +323,14 @@ $:
260
323
  {/if}
261
324
  </main>
262
325
 
263
- <SocialSection slot="extraLeadingIcons"
264
- isSlot={true}
265
- email={email}
266
- linkedinSlug={linkedinSlug}
267
- isSmallVersion={true}></SocialSection>
326
+ {#snippet extraLeadingIcons()}
327
+ <SocialSection
328
+ isSlot={true}
329
+ email={email}
330
+ linkedinSlug={linkedinSlug}
331
+ isSmallVersion={true}></SocialSection>
332
+ {/snippet}
268
333
  </SeaweedBaseLayout>
269
334
 
270
- <style>
271
- .advanced-setting {
272
- display: flex;
273
- flex-direction: column;
274
- gap: 0.5lh;
275
- }
276
-
277
- h3 {
278
- font-size: 1.5em;
279
- line-height: 1.5lh;
280
- }
281
-
282
- .query-term-grid {
283
- display: flex;
284
- gap: 0.25em;
285
- flex-wrap: wrap;
286
- }
335
+ <style>/*$$__STYLE_CONTENT__$$*/
287
336
  </style>
@@ -1,29 +1,32 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import { type ComponentType } from "svelte";
3
- import "./seaweed.postcss";
4
2
  import { type ComponentMeta, type EntryGroup, type SeaweedTemplateData } from "./SeaweedTemplateData";
5
- declare const __propDef: {
6
- props: {
7
- seaweedTemplateData: SeaweedTemplateData;
8
- projectFirstGroupedEntries: ReadonlyArray<EntryGroup>;
9
- getAllEntryFromGlobal: () => Map<string, ComponentMeta>;
10
- getEntryFromGlobal: (name: string) => undefined | ComponentMeta;
11
- letChaos?: boolean | undefined;
12
- name?: string | undefined;
13
- email?: string | undefined;
14
- linkedinSlug?: string | undefined;
15
- domain?: string | undefined;
16
- serverSideQueryParams?: string | undefined;
17
- experienceSection: ComponentType;
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
18
13
  };
19
- events: {
20
- [evt: string]: CustomEvent<any>;
21
- };
22
- slots: {};
23
- };
24
- export type SeaweedTemplateProps = typeof __propDef.props;
25
- export type SeaweedTemplateEvents = typeof __propDef.events;
26
- export type SeaweedTemplateSlots = typeof __propDef.slots;
27
- export default class SeaweedTemplate extends SvelteComponent<SeaweedTemplateProps, SeaweedTemplateEvents, SeaweedTemplateSlots> {
14
+ z_$$bindings?: Bindings;
28
15
  }
29
- export {};
16
+ declare const SeaweedTemplate: $$__sveltets_2_IsomorphicComponent<{
17
+ seaweedTemplateData: SeaweedTemplateData;
18
+ projectFirstGroupedEntries: ReadonlyArray<EntryGroup>;
19
+ getAllEntryFromGlobal: () => Map<string, ComponentMeta>;
20
+ getEntryFromGlobal: (name: string) => undefined | ComponentMeta;
21
+ letChaos?: boolean;
22
+ name?: string;
23
+ email?: string;
24
+ linkedinSlug?: string;
25
+ domain?: string;
26
+ serverSideQueryParams?: string;
27
+ experienceSection: ComponentType;
28
+ }, {
29
+ [evt: string]: CustomEvent<any>;
30
+ }, {}, {}, string>;
31
+ type SeaweedTemplate = InstanceType<typeof SeaweedTemplate>;
32
+ export default SeaweedTemplate;
@@ -0,0 +1,15 @@
1
+ export interface ToastSettings {
2
+ /** The unique toast ID. */
3
+ id?: string;
4
+ /** The unique toast title text. */
5
+ title?: string;
6
+ /** The unique toast description text. */
7
+ description?: string;
8
+ /**
9
+ * Define the toast type.
10
+ * @default info
11
+ */
12
+ type?: "info" | "error" | "success";
13
+ /** The duration of the toast. Default varies by type. */
14
+ duration?: number;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,47 +1,45 @@
1
- <script>export let props;
2
- import {} from "./EntryProps";
3
- import HeaderChefWings from "../../../assets/game_dev/footage-chef-wings.gif";
4
- import LinkIcon from "../../../assets/icons/link-icon.svg";
5
- import Card from "../../../components/Card.svelte";
6
- import { getModalStore } from "@skeletonlabs/skeleton";
7
- const modalStore = getModalStore();
8
- const chefWingsWarning = {
9
- type: "confirm",
10
- title: "Warning: please confirm",
11
- body: `This will directly link to the game itself, since this game does not have any game page or any publicly viewable source code. The game is only playable on desktop. Are you sure you wish to proceed? If there are any bugs, please report at <a href='mailto:${props.email}' target='_blank'>${props.email}</a>.`,
12
- response: (r) => {
13
- if (r) {
14
- window.open("https://selk.io/birb-project/trunk/");
15
- }
16
- }
17
- };
1
+ <script lang="ts">
2
+
3
+ import { type EntryProps } from "./EntryProps";
4
+ import HeaderChefWings from "../../../assets/game_dev/footage-chef-wings.gif";
5
+ import LinkIcon from "../../../assets/icons/link-icon.svg";
6
+ import Card from "../../../components/Card.svelte";
7
+
8
+ interface Props {
9
+ props: EntryProps;
10
+ }
11
+
12
+ let { props }: Props = $props();
13
+
18
14
  </script>
19
15
 
20
16
  <Card>
21
- <section class="game-card" slot="content">
22
- <img src={HeaderChefWings} alt="todo" loading="lazy">
23
- <section class="game-card-body">
17
+ {#snippet content()}
18
+ <section class="game-card" >
19
+ <img src={HeaderChefWings} alt="todo" loading="lazy">
20
+ <section class="game-card-body">
24
21
 
25
- <h1>Chef Wings</h1>
26
- <p>
27
- A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
28
- them to cook for customers and then critics!
29
- </p>
30
- <p>
31
- I built and documented several of the game’s systems including the game state management
32
- system that extends <span class="qt-unity">Unity’s</span> existing Monobehavior lifecycle with new events,
33
- and the dialogue, event, and level systems that coordinate the game flow using the interactive
34
- dialogue tool YarnSpinner
35
- </p>
22
+ <h1>Chef Wings</h1>
23
+ <p>
24
+ A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
25
+ them to cook for customers and then critics!
26
+ </p>
27
+ <p>
28
+ I built and documented several of the game’s systems including the game state management
29
+ system that extends <span class="qt-unity">Unity’s</span> existing Monobehavior lifecycle with new events,
30
+ and the dialogue, event, and level systems that coordinate the game flow using the interactive
31
+ dialogue tool YarnSpinner
32
+ </p>
36
33
 
37
- <section class="game-link-section">
38
- <button type="button" class="game-button turnip-button"
39
- title="https://selk.io/birb-project/trunk/"
40
- on:click={()=>modalStore.trigger(chefWingsWarning)}>
41
- <img alt="itch.io icon" src={LinkIcon}>
42
- <span>selk.io/birb-project/trunk/</span>
43
- </button>
34
+ <section class="game-link-section">
35
+ <button type="button" class="game-button turnip-button"
36
+ title="https://selk.io/birb-project/trunk/"
37
+ onclick={()=>{alert('not implemented')}}>
38
+ <img alt="itch.io icon" src={LinkIcon}>
39
+ <span>selk.io/birb-project/trunk/</span>
40
+ </button>
41
+ </section>
44
42
  </section>
45
43
  </section>
46
- </section>
44
+ {/snippet}
47
45
  </Card>
@@ -1,17 +1,7 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import { type EntryProps } from "./EntryProps";
3
- declare const __propDef: {
4
- props: {
5
- props: EntryProps;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type ChefWingsProps = typeof __propDef.props;
13
- export type ChefWingsEvents = typeof __propDef.events;
14
- export type ChefWingsSlots = typeof __propDef.slots;
15
- export default class ChefWings extends SvelteComponent<ChefWingsProps, ChefWingsEvents, ChefWingsSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const ChefWings: import("svelte").Component<Props, {}, "">;
6
+ type ChefWings = ReturnType<typeof ChefWings>;
7
+ export default ChefWings;