@turnipxenon/pineapple 2.4.24 → 2.4.26

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 (57) hide show
  1. package/.idea/workspace.xml +55 -51
  2. package/.svelte-kit/__package__/components/overrideable_meta/OverridableMeta.svelte +51 -0
  3. package/.svelte-kit/__package__/components/overrideable_meta/OverridableMeta.svelte.d.ts +20 -0
  4. package/.svelte-kit/__package__/components/overrideable_meta/OverridableMetaProps.d.ts +7 -0
  5. package/.svelte-kit/__package__/components/overrideable_meta/OverridableMetaProps.js +1 -0
  6. package/.svelte-kit/__package__/components/overrideable_meta/index.d.ts +2 -0
  7. package/.svelte-kit/__package__/components/overrideable_meta/index.js +3 -0
  8. package/.svelte-kit/__package__/index.d.ts +1 -0
  9. package/.svelte-kit/__package__/index.js +2 -0
  10. package/.svelte-kit/__package__/template/Seaweed/GameSection.svelte +184 -184
  11. package/.svelte-kit/__package__/template/Seaweed/ProjectSection.svelte +268 -268
  12. package/.svelte-kit/__package__/template/Seaweed/SeaweedTemplate.svelte +135 -18
  13. package/.svelte-kit/__package__/template/Seaweed/SeaweedTemplate.svelte.d.ts +1 -0
  14. package/.svelte-kit/__package__/template/Seaweed/seaweed.postcss +133 -133
  15. package/.svelte-kit/__package__/util/util.d.ts +3 -0
  16. package/.svelte-kit/ambient.d.ts +0 -2
  17. package/.svelte-kit/generated/client/nodes/5.js +2 -0
  18. package/.svelte-kit/generated/client/nodes/6.js +2 -0
  19. package/.svelte-kit/generated/client/nodes/7.js +2 -0
  20. package/.svelte-kit/generated/client/nodes/8.js +1 -1
  21. package/.svelte-kit/generated/server/internal.js +1 -1
  22. package/.svelte-kit/types/route_meta_data.json +7 -2
  23. package/.svelte-kit/types/src/routes/(pineapple)/pineapple/$types.d.ts +3 -1
  24. package/.svelte-kit/types/src/routes/(seaweed)/portfolio/$types.d.ts +4 -2
  25. package/.svelte-kit/types/src/routes/(seaweed)/portfolio/actual/$types.d.ts +3 -1
  26. package/dist/components/overrideable_meta/OverridableMeta.svelte +51 -0
  27. package/dist/components/overrideable_meta/OverridableMeta.svelte.d.ts +20 -0
  28. package/dist/components/overrideable_meta/OverridableMetaProps.d.ts +7 -0
  29. package/dist/components/overrideable_meta/OverridableMetaProps.js +1 -0
  30. package/dist/components/overrideable_meta/index.d.ts +2 -0
  31. package/dist/components/overrideable_meta/index.js +3 -0
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.js +2 -0
  34. package/dist/template/Seaweed/GameSection.svelte +184 -184
  35. package/dist/template/Seaweed/ProjectSection.svelte +268 -268
  36. package/dist/template/Seaweed/SeaweedTemplate.svelte +135 -18
  37. package/dist/template/Seaweed/SeaweedTemplate.svelte.d.ts +1 -0
  38. package/dist/template/Seaweed/seaweed.postcss +133 -133
  39. package/dist/util/util.d.ts +3 -0
  40. package/package.json +1 -1
  41. package/src/lib/components/overrideable_meta/OverridableMeta.svelte +56 -0
  42. package/src/lib/components/overrideable_meta/OverridableMetaProps.ts +7 -0
  43. package/src/lib/components/overrideable_meta/index.ts +4 -0
  44. package/src/lib/index.ts +3 -0
  45. package/src/lib/template/Seaweed/GameSection.svelte +213 -213
  46. package/src/lib/template/Seaweed/ProjectSection.svelte +298 -298
  47. package/src/lib/template/Seaweed/SeaweedTemplate.svelte +180 -21
  48. package/src/lib/template/Seaweed/seaweed.postcss +133 -133
  49. package/src/lib/util/util.ts +38 -34
  50. package/src/routes/(pineapple)/+layout.svelte +0 -15
  51. package/src/routes/(pineapple)/+page.svelte +0 -12
  52. package/src/routes/(pineapple)/pineapple/+page.svelte +0 -10
  53. package/src/routes/(pineapple)/pineapple/+page.ts +8 -0
  54. package/src/routes/(seaweed)/portfolio/+page.svelte +0 -11
  55. package/src/routes/(seaweed)/portfolio/+page.ts +8 -0
  56. package/src/routes/(seaweed)/portfolio/actual/+page.ts +8 -0
  57. package/src/routes/+layout.svelte +21 -0
@@ -3,11 +3,12 @@
3
3
  export let name = "Turnip";
4
4
  export let email = "turnipxenon@gmail.com";
5
5
  export let linkedinSlug = "turnip-xenon";
6
+ export let domain = "http://localhost:5173/portfolio/actual/";
6
7
 
7
8
  import SocialSection from "$pkg/components/SocialSection.svelte";
8
9
  import "./seaweed.postcss";
9
10
  import SeaweedBaseLayout from "$pkg/components/layouts/SeaweedBaseLayout.svelte";
10
- import { Accordion, AccordionItem, SlideToggle } from "@skeletonlabs/skeleton";
11
+ import { Accordion, AccordionItem, CodeBlock, SlideToggle } from "@skeletonlabs/skeleton";
11
12
  import { page } from "$app/stores";
12
13
  import Card from "$pkg/components/Card.svelte";
13
14
  import { onMount } from "svelte";
@@ -20,11 +21,71 @@
20
21
 
21
22
  $: isSocialsGone = !isVisible;
22
23
 
24
+ // region query params
25
+ import gameContent from "./GameSection.svelte?raw";
26
+ import projectContent from "./ProjectSection.svelte?raw";
27
+ import selfContent from "./SeaweedTemplate.svelte?raw";
23
28
 
29
+ let qtMap = new Map<string, boolean>();
30
+ const paramQTSet = new Set<string>();
31
+
32
+ const syncQT = () => {
33
+ if (qtMap.size === 0 || paramQTSet.size === 0) {
34
+ return;
35
+ }
36
+
37
+ qtMap.forEach((_, k) => {
38
+ qtMap.set(k, paramQTSet.has(k));
39
+ });
40
+
41
+ // force svelte refresh
42
+ qtMap = qtMap;
43
+ };
44
+
45
+ const parseQTTerms = async () => {
46
+ const qtSet = new Set<string>();
47
+ const rawTermList: string[] = [];
48
+ [gameContent, projectContent, selfContent].forEach(body => {
49
+ // parse the qt-* term which exists within elements like:
50
+ // <span class="qt-*">TERM</span>
51
+ rawTermList.push(
52
+ ...body // step 3: destructure the array
53
+ .split("\"") // step 1: split the text as double quotations (") as the delimiter
54
+ .filter(s => s.startsWith("qt-")) // step 2: filter out texts that does not begin with "qt-"
55
+ );
56
+ });
57
+
58
+ // step 4: some spans contain multiple classes, split them up
59
+ // then add them to qtTerms
60
+ // e.g. <span class="qt-1 qt-2">TERM</span>
61
+ rawTermList.forEach(t => {
62
+ t.split(" ").forEach(nt => {
63
+ // filter out some of this meta terms
64
+ if (["qt-1", "qt-2", "qt-*", "qt-"].includes(nt)) {
65
+ return;
66
+ }
67
+
68
+ // adding to set ensures the entry is unique
69
+ qtSet.add(nt);
70
+ });
71
+ });
72
+
73
+ // activate svelte reactivity
74
+ qtSet.forEach(t => qtMap.set(t, true));
75
+ syncQT();
76
+ };
77
+ parseQTTerms();
78
+
79
+ // todo: fix fragile relative reference to the root
80
+ // const fileList = import.meta.glob("./**/+page.svelte", { query: "?raw", eager: true });
81
+ // const titleToLink = new Map<string, string>();
82
+
83
+ let gameSectionFirst = true;
24
84
  let qtfontWeight = "normal";
25
85
  let additionalFontWeight = "";
26
86
  /** qt values and what they mean:
27
87
  * undefined: set all qt terms to font-weight: bold
88
+ * todo: implement clear
28
89
  * clear: unset all terms to font-weight: normal
29
90
  * <term>: only set qt-<term> to bold
30
91
  * <term1>,<term2>: only set qt-<term1> and qt-<term2> to bold,
@@ -32,6 +93,12 @@
32
93
  * ONLY CALL INSIDE onMount()
33
94
  **/
34
95
  const filterSearchParams = (searchParams: URLSearchParams) => {
96
+ const gameSectionFirstParam = searchParams.get("game-section-first")?.trim();
97
+ if (gameSectionFirstParam === "false") {
98
+ gameSectionFirst = false;
99
+ }
100
+
101
+ // region Bold terms
35
102
  const qtValue = searchParams.get("qt")?.trim();
36
103
  if (qtValue === undefined) {
37
104
  qtfontWeight = "bold";
@@ -39,6 +106,10 @@
39
106
  }
40
107
  qtfontWeight = "normal";
41
108
  const dynamicStyle = qtValue.split(",").map((term) => {
109
+ // side-effect
110
+ paramQTSet.add(`qt-${term}`);
111
+
112
+ // main effect
42
113
  return `span.qt-${term} { font-weight: bold !important; }`;
43
114
  }).join("\n");
44
115
 
@@ -48,7 +119,10 @@
48
119
  style.type = "text/css";
49
120
  style.innerText = dynamicStyle;
50
121
  document.head.appendChild(style);
122
+ syncQT();
123
+ // endregion Bold terms
51
124
  };
125
+ // endregion query params
52
126
 
53
127
  /* region chaos scripts */
54
128
  const chaoticWordBank = ["niko", "toba", "seal", "aquarium", "ojisan", "baikal"];
@@ -96,6 +170,10 @@
96
170
  }
97
171
  };
98
172
 
173
+ let mainVisibility = "visible";
174
+ $: mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
175
+ /* endregion chaos scripts */
176
+
99
177
  onMount(() => {
100
178
  if (!letChaos && $page.url.searchParams) {
101
179
  filterSearchParams($page.url.searchParams);
@@ -107,9 +185,45 @@
107
185
  }
108
186
  });
109
187
 
110
- let mainVisibility = "visible";
111
- $: mainVisibility = letChaos && !chaosDone ? "hidden" : "visible";
112
- /* endregion chaos scripts */
188
+ const toggleTerm = (term: string) => {
189
+ qtMap.set(term, !qtMap.get(term));
190
+ qtMap = qtMap;
191
+ };
192
+
193
+ // when either gameSectionFirst or the queryTerms are updated, update advancedUrl
194
+ let advancedUrl = domain;
195
+ const updateUrl = () => {
196
+ const queryParams: string[] = [];
197
+
198
+ const qtList: string[] = [];
199
+ qtMap.forEach((shouldBold, term) => {
200
+ if (shouldBold) {
201
+ qtList.push(term);
202
+ }
203
+ });
204
+
205
+ if (qtList.length === 0) {
206
+ queryParams.push("qt=clear");
207
+ } else if (qtMap.size !== qtList.length) {
208
+ // we'll only add if the lengths are not equal
209
+ // dont need to add query if all terms in qtMap is true
210
+ queryParams.push(`qt=${qtList.map(t => t.slice(3, t.length)).join(",")}`);
211
+ }
212
+
213
+ if (!gameSectionFirst) {
214
+ queryParams.push("game-section-first=false");
215
+ }
216
+
217
+ if (queryParams.length > 0) {
218
+ advancedUrl = `${domain}?${queryParams.join("&")}`;
219
+ } else {
220
+ advancedUrl = domain;
221
+ }
222
+ // advancedUrl = `${domain}?${q}`;
223
+ };
224
+ $: // noinspection CommaExpressionJS
225
+ gameSectionFirst, qtMap, updateUrl();
226
+ // $: gameSectionQuery = gameSectionFirst ? "" : "game-section-first=false";
113
227
  </script>
114
228
 
115
229
  <SeaweedBaseLayout bind:shouldDisplayLeadingIcons={isSocialsGone}>
@@ -246,25 +360,51 @@
246
360
 
247
361
  </div>
248
362
 
249
- <GameSection email={email}></GameSection>
250
-
251
- <ProjectSection email={email}></ProjectSection>
252
-
253
- <div aria-hidden="true" style="height: 25vh" />
363
+ {#if (gameSectionFirst)}
364
+ <GameSection email={email}></GameSection>
365
+ <ProjectSection email={email}></ProjectSection>
366
+ {:else }
367
+ <ProjectSection email={email}></ProjectSection>
368
+ <GameSection email={email}></GameSection>
369
+ {/if}
254
370
 
255
- <Card>
256
- <div slot="content" class="default-card">
257
- <h1>Advanced settings</h1>
258
- <p>This one is for those curious how I customize this page.</p>
259
- <SlideToggle name="slider-label" bind:checked={isAdvanceSettingOn}>
260
- Advanced settings: {isAdvanceSettingOn ? "On" : "Off"}
261
- </SlideToggle>
262
- {#if (isAdvanceSettingOn)}
263
- <br>
264
- {/if}
265
- </div>
266
- </Card>
371
+ {#if (!letChaos)}
372
+ <div aria-hidden="true" style="height: 25vh" />
267
373
 
374
+ <Card>
375
+ <div slot="content" class="default-card advanced-setting">
376
+ <h1>Advanced settings</h1>
377
+ <p>This one is for those curious how I customize this page.</p>
378
+ <SlideToggle name="advanced-setting-slider" bind:checked={isAdvanceSettingOn}>
379
+ Advanced settings: {isAdvanceSettingOn ? "On" : "Off"}
380
+ </SlideToggle>
381
+ {#if (isAdvanceSettingOn)}
382
+ <SlideToggle name="game-section-slider" bind:checked={gameSectionFirst}>
383
+ Should game section appear first over projects: {gameSectionFirst ? "On" : "Off"}
384
+ </SlideToggle>
385
+
386
+ <h3>Query terms to bold</h3>
387
+ <div class="query-term-grid">
388
+ {#each qtMap.entries() as [term, shouldBold]}
389
+ <!--{@const shouldBold = false}-->
390
+ <button
391
+ class="chip {shouldBold ? 'variant-filled-tertiary' : 'variant-soft-tertiary'}"
392
+ on:click={() => {toggleTerm(term)}}
393
+ >
394
+ <!-- todo: change shouldBold -->
395
+ {#if (shouldBold)}&check;{/if}
396
+ {term}
397
+ </button>
398
+ {/each}
399
+ </div>
400
+
401
+ <br>
402
+ <p>Copy the url below and open a new page with it</p>
403
+ <CodeBlock language="url" code={advancedUrl}></CodeBlock>
404
+ {/if}
405
+ </div>
406
+ </Card>
407
+ {/if}
268
408
  </main>
269
409
 
270
410
  <SocialSection slot="extraLeadingIcons"
@@ -273,3 +413,22 @@
273
413
  linkedinSlug={linkedinSlug}
274
414
  isSmallVersion={true}></SocialSection>
275
415
  </SeaweedBaseLayout>
416
+
417
+ <style lang="postcss">
418
+ .advanced-setting {
419
+ display: flex;
420
+ flex-direction: column;
421
+ gap: 0.5lh;
422
+ }
423
+
424
+ h3 {
425
+ font-size: 1.5em;
426
+ line-height: 1.5lh;
427
+ }
428
+
429
+ .query-term-grid {
430
+ display: flex;
431
+ gap: 0.25em;
432
+ flex-wrap: wrap;
433
+ }
434
+ </style>
@@ -1,133 +1,133 @@
1
- main {
2
- width: 100%;
3
- overflow: visible;
4
- display: flex;
5
- flex-direction: column;
6
- justify-content: center;
7
- align-items: center;
8
- }
9
-
10
- h1 {
11
- font-size: 2em;
12
- }
13
-
14
- h2 {
15
- font-size: 1.5em;
16
- }
17
-
18
- .section-card {
19
- padding: 3em;
20
- max-width: 800px;
21
- }
22
-
23
- .game-card, .project-card {
24
- width: 100vw;
25
- max-width: 36em;
26
- margin-bottom: 3em;
27
- }
28
-
29
- .game-card > video {
30
- border-top-left-radius: 1em;
31
- border-top-right-radius: 1em;
32
- max-height: 24em;
33
- width: 100%;
34
- object-fit: cover;
35
- }
36
-
37
- #migrante-alberta, .game-card > img, .project-card > img {
38
- border-top-left-radius: 1em;
39
- border-top-right-radius: 1em;
40
- }
41
-
42
- #migrante-alberta {
43
- width: 100%;
44
- object-fit: cover;
45
- }
46
-
47
- .game-button {
48
- @apply btn variant-filled-primary;
49
- }
50
-
51
- .game-button > img {
52
- max-height: 1lh;
53
- /* todo: consider night mode day mode */
54
- }
55
-
56
- .two-column-separated {
57
- display: flex;
58
- justify-content: space-between;
59
- }
60
-
61
- .more-section {
62
- padding: 1em;
63
- }
64
-
65
- .greater-about-div {
66
- display: flex;
67
- flex-direction: column;
68
- max-width: 36em;
69
- }
70
-
71
- .experience-and-about-div {
72
- display: flex;
73
- gap: 2em;
74
- flex-wrap: wrap;
75
- justify-content: center;
76
- align-items: flex-start;
77
- }
78
-
79
- .game-card-body, .project-card-body {
80
- padding: 1em;
81
- }
82
-
83
- .game-card-body > blockquote {
84
- margin-bottom: 0.7lh;
85
- }
86
-
87
- .game-card-body > h1, .project-card-body > h2 {
88
- text-align: center;
89
- }
90
-
91
- .game-link-section {
92
- display: flex;
93
- flex-direction: row;
94
- justify-content: center;
95
- gap: 1em;
96
- margin-top: 1em;
97
- }
98
-
99
- .games-section, .projects-section {
100
- display: flex;
101
- flex-wrap: wrap;
102
- gap: 2em;
103
- justify-content: center;
104
- }
105
-
106
- .projects-section {
107
- align-items: flex-start;
108
- /*justify-content: flex-start;*/
109
- }
110
-
111
- .long-btn-image {
112
- max-height: 1lh;
113
- }
114
-
115
- .itch-promo {
116
- padding: 4em;
117
- }
118
-
119
- #hepcat-video {
120
- object-position: 0 0;
121
- }
122
-
123
- .title-card {
124
- width: clamp(360px, 80vw, 800px);
125
- }
126
-
127
- [class*='qt-'] {
128
- font-weight: var(--qt-font-weight);
129
- }
130
-
131
- .accordion-header {
132
- margin-top: 0.25em;
133
- }
1
+ main {
2
+ width: 100%;
3
+ overflow: visible;
4
+ display: flex;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: center;
8
+ }
9
+
10
+ h1 {
11
+ font-size: 2em;
12
+ }
13
+
14
+ h2 {
15
+ font-size: 1.5em;
16
+ }
17
+
18
+ .section-card {
19
+ padding: 3em;
20
+ max-width: 800px;
21
+ }
22
+
23
+ .game-card, .project-card {
24
+ width: 100vw;
25
+ max-width: 36em;
26
+ margin-bottom: 3em;
27
+ }
28
+
29
+ .game-card > video {
30
+ border-top-left-radius: 1em;
31
+ border-top-right-radius: 1em;
32
+ max-height: 24em;
33
+ width: 100%;
34
+ object-fit: cover;
35
+ }
36
+
37
+ #migrante-alberta, .game-card > img, .project-card > img {
38
+ border-top-left-radius: 1em;
39
+ border-top-right-radius: 1em;
40
+ }
41
+
42
+ #migrante-alberta {
43
+ width: 100%;
44
+ object-fit: cover;
45
+ }
46
+
47
+ .game-button {
48
+ @apply btn variant-filled-primary;
49
+ }
50
+
51
+ .game-button > img {
52
+ max-height: 1lh;
53
+ /* todo: consider night mode day mode */
54
+ }
55
+
56
+ .two-column-separated {
57
+ display: flex;
58
+ justify-content: space-between;
59
+ }
60
+
61
+ .more-section {
62
+ padding: 1em;
63
+ }
64
+
65
+ .greater-about-div {
66
+ display: flex;
67
+ flex-direction: column;
68
+ max-width: 36em;
69
+ }
70
+
71
+ .experience-and-about-div {
72
+ display: flex;
73
+ gap: 2em;
74
+ flex-wrap: wrap;
75
+ justify-content: center;
76
+ align-items: flex-start;
77
+ }
78
+
79
+ .game-card-body, .project-card-body {
80
+ padding: 1em;
81
+ }
82
+
83
+ .game-card-body > blockquote {
84
+ margin-bottom: 0.7lh;
85
+ }
86
+
87
+ .game-card-body > h1, .project-card-body > h2 {
88
+ text-align: center;
89
+ }
90
+
91
+ .game-link-section {
92
+ display: flex;
93
+ flex-direction: row;
94
+ justify-content: center;
95
+ gap: 1em;
96
+ margin-top: 1em;
97
+ }
98
+
99
+ .games-section, .projects-section {
100
+ display: flex;
101
+ flex-wrap: wrap;
102
+ gap: 2em;
103
+ justify-content: center;
104
+ }
105
+
106
+ .projects-section {
107
+ align-items: flex-start;
108
+ /*justify-content: flex-start;*/
109
+ }
110
+
111
+ .long-btn-image {
112
+ max-height: 1lh;
113
+ }
114
+
115
+ .itch-promo {
116
+ padding: 4em;
117
+ }
118
+
119
+ #hepcat-video {
120
+ object-position: 0 0;
121
+ }
122
+
123
+ .title-card {
124
+ width: clamp(360px, 80vw, 800px);
125
+ }
126
+
127
+ [class*='qt-'] {
128
+ font-weight: var(--qt-font-weight);
129
+ }
130
+
131
+ .accordion-header {
132
+ margin-top: 0.25em;
133
+ }
@@ -1,34 +1,38 @@
1
- export const generatedDailySeed = (): number => {
2
- const date = new Date();
3
- const time = date.getTime() + 86400000;
4
- return time - (time % 86400000);
5
- };
6
-
7
- // psuedo misc with seed
8
- // from https://stackoverflow.com/a/47593316
9
- export const mulberry32Generator = (a: number): (() => number) => {
10
- return function() {
11
- var t = (a += 0x6d2b79f5);
12
- t = Math.imul(t ^ (t >>> 15), t | 1);
13
- t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
14
- return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
15
- };
16
- };
17
-
18
- export const createGoToFunction = (path: string): (() => void) => {
19
- return (() => {
20
- location.href = path;
21
- });
22
- };
23
-
24
- export interface ExternalLinkWarningArgs {
25
- href: string;
26
- }
27
-
28
- export const createExternalLinkWarningFunction = (args: ExternalLinkWarningArgs): (() => void) => {
29
- return (() => {
30
- // todo: https://github.com/TurnipXenon/pineapple/issues/99
31
- // add the warning here for future functions
32
- location.href = args.href;
33
- });
34
- };
1
+ export const generatedDailySeed = (): number => {
2
+ const date = new Date();
3
+ const time = date.getTime() + 86400000;
4
+ return time - (time % 86400000);
5
+ };
6
+
7
+ // psuedo misc with seed
8
+ // from https://stackoverflow.com/a/47593316
9
+ export const mulberry32Generator = (a: number): (() => number) => {
10
+ return function() {
11
+ var t = (a += 0x6d2b79f5);
12
+ t = Math.imul(t ^ (t >>> 15), t | 1);
13
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
14
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
15
+ };
16
+ };
17
+
18
+ export const createGoToFunction = (path: string): (() => void) => {
19
+ return (() => {
20
+ location.href = path;
21
+ });
22
+ };
23
+
24
+ export interface ExternalLinkWarningArgs {
25
+ href: string;
26
+ }
27
+
28
+ export const createExternalLinkWarningFunction = (args: ExternalLinkWarningArgs): (() => void) => {
29
+ return (() => {
30
+ // todo: https://github.com/TurnipXenon/pineapple/issues/99
31
+ // add the warning here for future functions
32
+ location.href = args.href;
33
+ });
34
+ };
35
+
36
+ export interface RawGlob {
37
+ default: string;
38
+ }
@@ -1,22 +1,7 @@
1
1
  <script lang="ts">
2
2
  import PinyaBaseLayout from "$pkg/components/pineapple/PineappleBaseLayout.svelte";
3
- import { PUBLIC_CRINGE_USERNAME } from "$env/static/public";
4
3
  </script>
5
4
 
6
- <svelte:head>
7
- <title>{PUBLIC_CRINGE_USERNAME}</title>
8
- <meta content="summary" name="Turnip time!" />
9
- <meta content="@{PUBLIC_CRINGE_USERNAME}" name="twitter:site" />
10
- <meta content="@{PUBLIC_CRINGE_USERNAME}" name="twitter:creator" />
11
- <meta content="https://www.{PUBLIC_CRINGE_USERNAME}.com/" name="og:url" />
12
- <meta content="{PUBLIC_CRINGE_USERNAME} | Home" name="og:title" />
13
- <meta
14
- content="I have no idea! Anyway... Hi! I don't know what I'm doing! Also check out my games!"
15
- name="og:description"
16
- />
17
- <meta content="https://www.{PUBLIC_CRINGE_USERNAME}.com/default-card.png" property="og:image" />
18
- </svelte:head>
19
-
20
5
  <PinyaBaseLayout>
21
6
  <slot />
22
7
  </PinyaBaseLayout>
@@ -1,20 +1,8 @@
1
1
  <script>
2
- import { PUBLIC_CRINGE_USERNAME } from "$env/static/public";
3
-
4
-
5
2
  import { createGoToFunction } from "$pkg/util/util";
6
3
  import { Card } from "$pkg";
7
4
  </script>
8
5
 
9
- <svelte:head>
10
- <title>Welcome to {PUBLIC_CRINGE_USERNAME}'s Home</title>
11
- <meta content="Welcome to {PUBLIC_CRINGE_USERNAME}'s Home" name="og:title" />
12
- <meta
13
- content="Welcome to {PUBLIC_CRINGE_USERNAME}'s home! It's a neat place to be at if you're feeling lost. Come hang around!"
14
- name="og:description"
15
- />
16
- </svelte:head>
17
-
18
6
  <Card>
19
7
  <div slot="content" class="content">
20
8
  <h1 class="mb-8" style="font-weight: bolder">Directory</h1>
@@ -1,5 +1,4 @@
1
1
  <script lang="ts">
2
- import { PUBLIC_CRINGE_USERNAME } from "$env/static/public";
3
2
  import { showComponentInToast, showTextInToast } from "$pkg/components/pineapple/toast/Toast";
4
3
  import TestCard from "$pkg/components/pineapple/toast/custom-toast/TestCustomToast.svelte";
5
4
  import TestDialogYarn from "./TestDialog.yarn?raw";
@@ -27,15 +26,6 @@
27
26
  };
28
27
  </script>
29
28
 
30
- <svelte:head>
31
- <title>Welcome to {PUBLIC_CRINGE_USERNAME}'s Home</title>
32
- <meta content="Welcome to {PUBLIC_CRINGE_USERNAME}'s Home" name="og:title" />
33
- <meta
34
- content="Welcome to {PUBLIC_CRINGE_USERNAME}'s home! It's a neat place to be at if you're feeling lost. Come hang around!"
35
- name="og:description"
36
- />
37
- </svelte:head>
38
-
39
29
  <Card>
40
30
  <div slot="content" class="default-card">
41
31
  <button
@@ -0,0 +1,8 @@
1
+ import type { OverridableMetaProps } from "$pkg/components/overrideable_meta/OverridableMetaProps";
2
+
3
+ export const load = async (): Promise<OverridableMetaProps> => {
4
+ return {
5
+ title: "Pineapple",
6
+ ogTitle: "Pineapple"
7
+ };
8
+ };