@turnipxenon/pineapple 2.10.0 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/assets/icons/icon-contrast.svg +1 -0
  2. package/dist/assets/icons/icon-dark-mode.svg +1 -0
  3. package/dist/assets/icons/icon-light-mode.svg +1 -0
  4. package/dist/assets/icons/icon-settings.svg +1 -0
  5. package/dist/components/Card.svelte +43 -41
  6. package/dist/components/Card.svelte.d.ts +11 -24
  7. package/dist/components/CarouselElement.svelte +15 -8
  8. package/dist/components/CarouselElement.svelte.d.ts +7 -18
  9. package/dist/components/ElementVisbilityDetector.svelte +23 -14
  10. package/dist/components/ElementVisbilityDetector.svelte.d.ts +6 -17
  11. package/dist/components/LazyAsset.svelte +93 -65
  12. package/dist/components/LazyAsset.svelte.d.ts +9 -19
  13. package/dist/components/PineappleSlideToggle.svelte +19 -7
  14. package/dist/components/PineappleSlideToggle.svelte.d.ts +8 -19
  15. package/dist/components/RandomizedBackground.svelte +46 -27
  16. package/dist/components/RandomizedBackground.svelte.d.ts +5 -15
  17. package/dist/components/RandomizedImage.svelte +15 -8
  18. package/dist/components/RandomizedImage.svelte.d.ts +6 -16
  19. package/dist/components/StickyElement.svelte +25 -16
  20. package/dist/components/StickyElement.svelte.d.ts +6 -17
  21. package/dist/components/ToggleableContent.svelte +88 -59
  22. package/dist/components/ToggleableContent.svelte.d.ts +6 -17
  23. package/dist/components/blog_template/BlogTemplate.svelte +45 -25
  24. package/dist/components/blog_template/BlogTemplate.svelte.d.ts +9 -20
  25. package/dist/components/blog_template/BlogTemplateInner.svelte +11 -3
  26. package/dist/components/blog_template/BlogTemplateInner.svelte.d.ts +6 -17
  27. package/dist/components/chip/Chip.svelte +33 -57
  28. package/dist/components/chip/Chip.svelte.d.ts +7 -18
  29. package/dist/components/combo_box/ComboBox.svelte +10 -4
  30. package/dist/components/combo_box/ComboBox.svelte.d.ts +6 -16
  31. package/dist/components/combo_box/ComboBoxWithButton.svelte +16 -9
  32. package/dist/components/combo_box/ComboBoxWithButton.svelte.d.ts +7 -17
  33. package/dist/components/combo_box/combo-box.postcss +2 -2
  34. package/dist/components/dialog_manager/DialogManager.d.ts +0 -1
  35. package/dist/components/dialog_manager/DialogManagerStore.d.ts +0 -1
  36. package/dist/components/dialog_manager/DialogManagerStore.js +1 -1
  37. package/dist/components/dialog_overlay/DialogOverlay.svelte +42 -34
  38. package/dist/components/dialog_overlay/DialogOverlay.svelte.d.ts +3 -14
  39. package/dist/components/index.d.ts +1 -1
  40. package/dist/components/index.js +1 -1
  41. package/dist/components/layouts/SeaweedBaseLayout.svelte +80 -43
  42. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +8 -21
  43. package/dist/components/navigation_component/NavigationComponent.svelte +52 -141
  44. package/dist/components/navigation_component/NavigationComponent.svelte.d.ts +17 -26
  45. package/dist/components/navigation_component/NavigationControl.svelte +52 -103
  46. package/dist/components/navigation_component/NavigationControl.svelte.d.ts +7 -17
  47. package/dist/components/overrideable_meta/OverridableMeta.svelte +37 -22
  48. package/dist/components/overrideable_meta/OverridableMeta.svelte.d.ts +9 -19
  49. package/dist/components/pineapple/PineappleBaseLayout.svelte +132 -188
  50. package/dist/components/pineapple/PineappleBaseLayout.svelte.d.ts +6 -17
  51. package/dist/components/pineapple/toast/DefaultToastBody.svelte +14 -16
  52. package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +7 -17
  53. package/dist/components/pineapple/toast/Toast.d.ts +0 -1
  54. package/dist/components/pineapple/toast/Toast.svelte +92 -64
  55. package/dist/components/pineapple/toast/Toast.svelte.d.ts +3 -14
  56. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +22 -19
  57. package/dist/paraglide/messages/_index.d.ts +2 -0
  58. package/dist/paraglide/messages/_index.js +3 -0
  59. package/dist/paraglide/messages/example_message.d.ts +5 -0
  60. package/dist/paraglide/messages/example_message.js +39 -0
  61. package/dist/paraglide/messages/settings.d.ts +3 -0
  62. package/dist/paraglide/messages/settings.js +38 -0
  63. package/dist/paraglide/messages.d.ts +2 -0
  64. package/dist/paraglide/messages.js +4 -0
  65. package/dist/paraglide/registry.d.ts +21 -0
  66. package/dist/paraglide/registry.js +31 -0
  67. package/dist/paraglide/runtime.d.ts +400 -0
  68. package/dist/paraglide/runtime.js +1060 -0
  69. package/dist/paraglide/server.d.ts +64 -0
  70. package/dist/paraglide/server.js +161 -0
  71. package/dist/scripts/util/FileManagement.d.ts +1 -1
  72. package/dist/store.d.ts +0 -1
  73. package/dist/styles/app.css +53 -0
  74. package/dist/styles/turnip-theme.css +323 -0
  75. package/dist/template/seaweed/CreateUrlForm.svelte +50 -38
  76. package/dist/template/seaweed/CreateUrlForm.svelte.d.ts +5 -15
  77. package/dist/template/seaweed/SeaweedTemplate.svelte +244 -195
  78. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +28 -25
  79. package/dist/template/seaweed/entries/ChefWings.svelte +37 -39
  80. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +5 -15
  81. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +32 -24
  82. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +5 -15
  83. package/dist/template/seaweed/entries/Hepcat.svelte +58 -49
  84. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +5 -15
  85. package/dist/template/seaweed/entries/Pengi.svelte +51 -43
  86. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +5 -15
  87. package/dist/template/seaweed/entries/Soulwork.svelte +44 -36
  88. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +5 -15
  89. package/dist/template/seaweed/entries/ThisWebpage.svelte +47 -38
  90. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +5 -15
  91. package/dist/template/seaweed/entries/WorkExperience.svelte +109 -92
  92. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +6 -16
  93. package/dist/template/seaweed/entries/Workset.svelte +51 -42
  94. package/dist/template/seaweed/entries/Workset.svelte.d.ts +5 -15
  95. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +136 -259
  96. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +10 -20
  97. package/dist/template/seaweed/seaweed.postcss +1 -9
  98. package/dist/{theme.postcss → theme.css} +1 -4
  99. package/dist/ui/components/FourPartCard.svelte +47 -0
  100. package/dist/ui/components/FourPartCard.svelte.d.ts +10 -0
  101. package/dist/ui/components/ModalBase.svelte +75 -0
  102. package/dist/ui/components/ModalBase.svelte.d.ts +8 -0
  103. package/dist/ui/components/SocialSection.svelte +87 -0
  104. package/dist/ui/components/SocialSection.svelte.d.ts +9 -0
  105. package/dist/ui/components/index.d.ts +3 -0
  106. package/dist/ui/components/index.js +3 -0
  107. package/dist/ui/components/randomized-background/RandomizedBackground.svelte +87 -0
  108. package/dist/ui/components/randomized-background/RandomizedBackground.svelte.d.ts +6 -0
  109. package/dist/ui/components/randomized-background/RandomizedImage.svelte +42 -0
  110. package/dist/ui/components/randomized-background/RandomizedImage.svelte.d.ts +7 -0
  111. package/dist/ui/elements/ColorScheme.d.ts +10 -0
  112. package/dist/ui/elements/ColorScheme.js +11 -0
  113. package/dist/ui/elements/GeneralUIProps.d.ts +12 -0
  114. package/dist/ui/elements/GeneralUIProps.js +1 -0
  115. package/dist/ui/elements/ImageIcon.svelte +54 -0
  116. package/dist/ui/elements/ImageIcon.svelte.d.ts +6 -0
  117. package/dist/ui/elements/OnBackground.d.ts +3 -0
  118. package/dist/ui/elements/OnBackground.js +4 -0
  119. package/dist/ui/elements/TextLink.svelte +17 -0
  120. package/dist/ui/elements/TextLink.svelte.d.ts +8 -0
  121. package/dist/ui/elements/WrapperProps.d.ts +4 -0
  122. package/dist/ui/elements/WrapperProps.js +1 -0
  123. package/dist/ui/elements/index.d.ts +8 -0
  124. package/dist/ui/elements/index.js +8 -0
  125. package/dist/ui/elements/pinya-button/component.svelte +47 -0
  126. package/dist/ui/elements/pinya-button/component.svelte.d.ts +4 -0
  127. package/dist/ui/elements/pinya-button/index.d.ts +2 -0
  128. package/dist/ui/elements/pinya-button/index.js +2 -0
  129. package/dist/ui/elements/pinya-button/props.d.ts +13 -0
  130. package/dist/ui/elements/pinya-button/props.js +6 -0
  131. package/dist/ui/elements/pinya-card/component.svelte +19 -0
  132. package/dist/ui/elements/pinya-card/component.svelte.d.ts +7 -0
  133. package/dist/ui/elements/pinya-card/index.d.ts +2 -0
  134. package/dist/ui/elements/pinya-card/index.js +2 -0
  135. package/dist/ui/elements/pinya-card/props.d.ts +7 -0
  136. package/dist/ui/elements/pinya-card/props.js +1 -0
  137. package/dist/ui/modules/index.d.ts +1 -0
  138. package/dist/ui/modules/index.js +1 -0
  139. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte +110 -0
  140. package/dist/ui/modules/modals/general-settings/GeneralSettingsModal.svelte.d.ts +4 -0
  141. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +48 -0
  142. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts +3 -0
  143. package/dist/{template → ui/modules}/seaweed/ChumBucket.svelte +28 -28
  144. package/dist/ui/modules/seaweed/ChumBucket.svelte.d.ts +3 -0
  145. package/dist/ui/modules/seaweed/index.d.ts +3 -0
  146. package/dist/ui/modules/seaweed/index.js +4 -0
  147. package/dist/ui/templates/PinyaBase.svelte +45 -0
  148. package/dist/ui/templates/PinyaBase.svelte.d.ts +7 -0
  149. package/dist/ui/templates/confirmation-modal/component.svelte +47 -0
  150. package/dist/ui/templates/confirmation-modal/component.svelte.d.ts +4 -0
  151. package/dist/ui/templates/confirmation-modal/index.d.ts +2 -0
  152. package/dist/ui/templates/confirmation-modal/index.js +2 -0
  153. package/dist/ui/templates/confirmation-modal/props.d.ts +10 -0
  154. package/dist/ui/templates/confirmation-modal/props.js +1 -0
  155. package/dist/ui/templates/index.d.ts +3 -0
  156. package/dist/ui/templates/index.js +3 -0
  157. package/dist/ui/templates/pinya-page-layout/component.svelte +113 -0
  158. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +8 -0
  159. package/dist/ui/templates/pinya-page-layout/index.d.ts +2 -0
  160. package/dist/ui/templates/pinya-page-layout/index.js +2 -0
  161. package/dist/ui/templates/pinya-page-layout/runes.svelte.d.ts +7 -0
  162. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +3 -0
  163. package/package.json +36 -18
  164. package/src/lib/styles/app.css +53 -0
  165. package/src/lib/theme.css +114 -0
  166. package/dist/app.postcss +0 -212
  167. package/dist/components/SocialSection.svelte +0 -166
  168. package/dist/components/SocialSection.svelte.d.ts +0 -31
  169. package/dist/postcss.d.ts +0 -3
  170. package/dist/styles/DefaultGridContainer.css +0 -61
  171. package/dist/template/seaweed/ChumBucket.svelte.d.ts +0 -14
@@ -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;
@@ -1,32 +1,40 @@
1
- <script>import {} from "./EntryProps";
2
- import Card from "../../../components/Card.svelte";
3
- import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import WeaverFootage from "../../../assets/others/weaver-footage.gif";
5
- export let props;
1
+ <script lang="ts">
2
+ import { type EntryProps } from "./EntryProps";
3
+ import Card from "../../../components/Card.svelte";
4
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
5
+ import WeaverFootage from "../../../assets/others/weaver-footage.gif";
6
+
7
+ interface Props {
8
+ props: EntryProps;
9
+ }
10
+
11
+ let { props }: Props = $props();
6
12
  </script>
7
13
 
8
14
 
9
15
  <Card>
10
- <section class="project-card" slot="content">
11
- <img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"
12
- src={WeaverFootage} />
16
+ {#snippet content()}
17
+ <section class="project-card" >
18
+ <img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"
19
+ src={WeaverFootage} />
13
20
 
14
- <div class="project-card-body">
15
- <h2>Customized Yarnspinner interpreter and dialog runner</h2>
21
+ <div class="project-card-body">
22
+ <h2>Customized Yarnspinner interpreter and dialog runner</h2>
16
23
 
17
- A custom dialog interpreter, written in <span class="qt-ts">Typescript</span>, that tokenizes then
18
- transpiles custom Yarnspinner dialog into a <span class="qt-ts">Typescript</span> file. The said files can
19
- be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
20
- custom-flavor of YarnSpinner dialogs on <span class="qt-svelte">Svelte</span>.
24
+ A custom dialog interpreter, written in <span class="qt-ts">Typescript</span>, that tokenizes then
25
+ transpiles custom Yarnspinner dialog into a <span class="qt-ts">Typescript</span> file. The said files can
26
+ be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
27
+ custom-flavor of YarnSpinner dialogs on <span class="qt-svelte">Svelte</span>.
21
28
 
22
- <section class="game-link-section">
23
- <button type="button" class="game-button turnip-button"
24
- role="link"
25
- title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md"
26
- on:click={() => window.open("https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md")}>
27
- <img src={GithubIcon} alt="github icon">
28
- </button>
29
- </section>
30
- </div>
31
- </section>
29
+ <section class="game-link-section">
30
+ <button type="button" class="game-button turnip-button"
31
+ role="link"
32
+ title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md"
33
+ onclick={() => window.open("https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md")}>
34
+ <img src={GithubIcon} alt="github icon">
35
+ </button>
36
+ </section>
37
+ </div>
38
+ </section>
39
+ {/snippet}
32
40
  </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 CustomizedYarnspinnerProps = typeof __propDef.props;
13
- export type CustomizedYarnspinnerEvents = typeof __propDef.events;
14
- export type CustomizedYarnspinnerSlots = typeof __propDef.slots;
15
- export default class CustomizedYarnspinner extends SvelteComponent<CustomizedYarnspinnerProps, CustomizedYarnspinnerEvents, CustomizedYarnspinnerSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const CustomizedYarnspinner: import("svelte").Component<Props, {}, "">;
6
+ type CustomizedYarnspinner = ReturnType<typeof CustomizedYarnspinner>;
7
+ export default CustomizedYarnspinner;
@@ -1,55 +1,64 @@
1
- <script>import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
2
- import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
3
- import { ItchLogoHotLink } from "../../../consts";
4
- import Card from "../../../components/Card.svelte";
5
- export let props;
1
+ <script lang="ts">
2
+ import type { EntryProps } from "./EntryProps";
3
+ import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
4
+ import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
5
+ import { ItchLogoHotLink } from "../../../consts";
6
+ import Card from "../../../components/Card.svelte";
7
+
8
+ interface Props {
9
+ props: EntryProps;
10
+ }
11
+
12
+ let { props }: Props = $props();
6
13
  </script>
7
14
 
8
15
  <Card>
9
- <section class="game-card" slot="content">
10
- <!-- todo: move the image crop a bit lower -->
11
- <video playsinline autoplay muted loop preload="none" id="hepcat-video">
12
- <source src={HeaderHepCat} type="video/mp4">
13
- </video>
14
-
15
- <section class="game-card-body">
16
-
17
- <h1>Hepcat</h1>
18
-
19
- <blockquote>
20
- "Cats, Jazz, and a little bit of Death. What more could anyone ask for?"
21
- </blockquote>
22
-
23
-
24
- <p>This is a course project made by a team of six for <a
25
- href="https://sites.google.com/ualberta.ca/cmput250/">CMPUT 250</a>, and it won <a
26
- href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/">Game of the year.</a>
27
- </p>
28
-
29
- <p>
30
- Hep Cat is a rhythm game made in <a
31
- href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker">
32
- RPG Maker MV</a> with the help of additional custom-made <span class="qt-js">Javascript</span> plugins. I
33
- wrote the rhythm game plugin's framework. For this plugin to work, I
34
- had to write a <span class="qt-python">Python</span> script that parses osu! files into readable JSON
35
- files.
36
- </p>
37
-
38
-
39
- <section class="game-link-section">
40
- <button type="button" class="game-button turnip-button"
41
- role="link"
42
- title="https://bitbucket.org/egginchicken/hep-cat/src/master/"
43
- on:click={()=> window.open("https://bitbucket.org/egginchicken/hep-cat/src/master/")}>
44
- <img alt="bitbucket icon" src={BitbucketIcon}>
45
- </button>
46
- <button type="button" class="game-button turnip-button"
47
- role="link"
48
- title="https://just-a-phantom.itch.io/hep-cat"
49
- on:click={()=> window.open("https://just-a-phantom.itch.io/hep-cat")}>
50
- <img alt="itch.io icon" src={ItchLogoHotLink}>
51
- </button>
16
+ {#snippet content()}
17
+ <section class="game-card" >
18
+ <!-- todo: move the image crop a bit lower -->
19
+ <video playsinline autoplay muted loop preload="none" id="hepcat-video">
20
+ <source src={HeaderHepCat} type="video/mp4">
21
+ </video>
22
+
23
+ <section class="game-card-body">
24
+
25
+ <h1>Hepcat</h1>
26
+
27
+ <blockquote>
28
+ "Cats, Jazz, and a little bit of Death. What more could anyone ask for?"
29
+ </blockquote>
30
+
31
+
32
+ <p>This is a course project made by a team of six for <a
33
+ href="https://sites.google.com/ualberta.ca/cmput250/">CMPUT 250</a>, and it won <a
34
+ href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/">Game of the year.</a>
35
+ </p>
36
+
37
+ <p>
38
+ Hep Cat is a rhythm game made in <a
39
+ href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker">
40
+ RPG Maker MV</a> with the help of additional custom-made <span class="qt-js">Javascript</span> plugins. I
41
+ wrote the rhythm game plugin's framework. For this plugin to work, I
42
+ had to write a <span class="qt-python">Python</span> script that parses osu! files into readable JSON
43
+ files.
44
+ </p>
45
+
46
+
47
+ <section class="game-link-section">
48
+ <button type="button" class="game-button turnip-button"
49
+ role="link"
50
+ title="https://bitbucket.org/egginchicken/hep-cat/src/master/"
51
+ onclick={()=> window.open("https://bitbucket.org/egginchicken/hep-cat/src/master/")}>
52
+ <img alt="bitbucket icon" src={BitbucketIcon}>
53
+ </button>
54
+ <button type="button" class="game-button turnip-button"
55
+ role="link"
56
+ title="https://just-a-phantom.itch.io/hep-cat"
57
+ onclick={()=> window.open("https://just-a-phantom.itch.io/hep-cat")}>
58
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
59
+ </button>
60
+ </section>
52
61
  </section>
53
62
  </section>
54
- </section>
63
+ {/snippet}
55
64
  </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 HepcatProps = typeof __propDef.props;
13
- export type HepcatEvents = typeof __propDef.events;
14
- export type HepcatSlots = typeof __propDef.slots;
15
- export default class Hepcat extends SvelteComponent<HepcatProps, HepcatEvents, HepcatSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const Hepcat: import("svelte").Component<Props, {}, "">;
6
+ type Hepcat = ReturnType<typeof Hepcat>;
7
+ export default Hepcat;
@@ -1,49 +1,57 @@
1
- <script>import {} from "./EntryProps";
2
- import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
3
- import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import { ItchLogoHotLink } from "../../../consts";
5
- import Card from "../../../components/Card.svelte";
6
- export let props;
1
+ <script lang="ts">
2
+ import { type EntryProps } from "./EntryProps";
3
+ import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
4
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
5
+ import { ItchLogoHotLink } from "../../../consts";
6
+ import Card from "../../../components/Card.svelte";
7
+
8
+ interface Props {
9
+ props: EntryProps;
10
+ }
11
+
12
+ let { props }: Props = $props();
7
13
  </script>
8
14
 
9
15
  <Card>
10
- <section class="game-card" slot="content">
11
- <video playsinline autoplay muted loop preload="none">
12
- video unavailable. original video contains pengi gameplay showing the dynamic dialog
13
- layout and character animation.
14
- <source src={HeaderPengi} type="video/mp4">
15
- </video>
16
-
17
- <section class="game-card-body">
18
-
19
- <h1>Pengi</h1>
20
-
21
- <blockquote>
22
- Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
23
- money...
24
- </blockquote>
25
-
26
- <p>
27
- Pengi is a text-based adventure made in <span class="qt-unity">Unity</span>. I acted as the sole
28
- programmer for the team. Most of the work revolves around UI and creating <a
29
- href="https://yarnspinner.dev/" target="_blank">YarnSpinner</a> commands for writers
30
- to use to create expressive stage directions in the script.
31
- </p>
32
-
33
- <section class="game-link-section">
34
- <button type="button" class="game-button turnip-button"
35
- role="link"
36
- title="https://github.com/GreenTea-M/ProjectPengi"
37
- on:click={()=> window.open("https://github.com/GreenTea-M/ProjectPengi")}>
38
- <img alt="github icon" src={GithubIcon}>
39
- </button>
40
- <button type="button" class="game-button turnip-button"
41
- role="link"
42
- title="https://turnipxenon.itch.io/pengi"
43
- on:click={()=> window.open("https://turnipxenon.itch.io/pengi")}>
44
- <img alt="itch.io icon" src={ItchLogoHotLink}>
45
- </button>
16
+ {#snippet content()}
17
+ <section class="game-card" >
18
+ <video 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
+
24
+ <section class="game-card-body">
25
+
26
+ <h1>Pengi</h1>
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
+
33
+ <p>
34
+ Pengi is a text-based adventure made in <span class="qt-unity">Unity</span>. I 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
+ <button type="button" class="game-button turnip-button"
42
+ role="link"
43
+ title="https://github.com/GreenTea-M/ProjectPengi"
44
+ onclick={()=> window.open("https://github.com/GreenTea-M/ProjectPengi")}>
45
+ <img alt="github icon" src={GithubIcon}>
46
+ </button>
47
+ <button type="button" class="game-button turnip-button"
48
+ role="link"
49
+ title="https://turnipxenon.itch.io/pengi"
50
+ onclick={()=> window.open("https://turnipxenon.itch.io/pengi")}>
51
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
52
+ </button>
53
+ </section>
46
54
  </section>
47
55
  </section>
48
- </section>
56
+ {/snippet}
49
57
  </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 PengiProps = typeof __propDef.props;
13
- export type PengiEvents = typeof __propDef.events;
14
- export type PengiSlots = typeof __propDef.slots;
15
- export default class Pengi extends SvelteComponent<PengiProps, PengiEvents, PengiSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const Pengi: import("svelte").Component<Props, {}, "">;
6
+ type Pengi = ReturnType<typeof Pengi>;
7
+ export default Pengi;
@@ -1,46 +1,54 @@
1
- <script>import {} from "./EntryProps";
2
- import HeaderSoulwork from "../../../assets/temp/header-soulwork.mp4";
3
- import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import { ItchLogoHotLink } from "../../../consts";
5
- import Card from "../../../components/Card.svelte";
6
- export let props;
1
+ <script lang="ts">
2
+ import { type EntryProps } from "./EntryProps";
3
+ import HeaderSoulwork from "../../../assets/temp/header-soulwork.mp4";
4
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
5
+ import { ItchLogoHotLink } from "../../../consts";
6
+ import Card from "../../../components/Card.svelte";
7
+
8
+ interface Props {
9
+ props: EntryProps;
10
+ }
11
+
12
+ let { props }: Props = $props();
7
13
  </script>
8
14
 
9
15
  <Card>
10
- <section class="game-card" slot="content">
11
- <video playsinline autoplay muted loop preload="none">
12
- <source src={HeaderSoulwork} type="video/mp4">
13
- </video>
14
- <section class="game-card-body">
16
+ {#snippet content()}
17
+ <section class="game-card" >
18
+ <video playsinline autoplay muted loop preload="none">
19
+ <source src={HeaderSoulwork} type="video/mp4">
20
+ </video>
21
+ <section class="game-card-body">
15
22
 
16
- <h1>Soulwork</h1>
23
+ <h1>Soulwork</h1>
17
24
 
18
- <p>
19
- Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
20
- This project is a Time to Game Jam entry, restricting game development to be under 48
21
- hours.
22
- </p>
23
- <p>
24
- I helped make the level designing tools used by the designers to drag-and-drop objects
25
- on the stage. I also helped program the unique physics-based gameplay mechanic. This was
26
- was made in <span class="qt-unity">Unity</span> written using <span class="qt-cs">C#</span>.
27
- </p>
25
+ <p>
26
+ Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
27
+ This project is a Time to Game Jam entry, restricting game development to be under 48
28
+ hours.
29
+ </p>
30
+ <p>
31
+ I helped make the level designing tools used by the designers to drag-and-drop objects
32
+ on the stage. I also helped program the unique physics-based gameplay mechanic. This was
33
+ was made in <span class="qt-unity">Unity</span> written using <span class="qt-cs">C#</span>.
34
+ </p>
28
35
 
29
36
 
30
- <section class="game-link-section">
31
- <button type="button" class="game-button turnip-button"
32
- role="link"
33
- title="https://github.com/Zeyu-Li/Clockwork"
34
- on:click={()=> window.open("https://github.com/Zeyu-Li/Clockwork")}>
35
- <img alt="github icon" src={GithubIcon}>
36
- </button>
37
- <button type="button" class="game-button turnip-button"
38
- role="link"
39
- title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331"
40
- on:click={()=> window.open("https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331")}>
41
- <img alt="itch.io icon" src={ItchLogoHotLink}>
42
- </button>
37
+ <section class="game-link-section">
38
+ <button type="button" class="game-button turnip-button"
39
+ role="link"
40
+ title="https://github.com/Zeyu-Li/Clockwork"
41
+ onclick={()=> window.open("https://github.com/Zeyu-Li/Clockwork")}>
42
+ <img alt="github icon" src={GithubIcon}>
43
+ </button>
44
+ <button type="button" class="game-button turnip-button"
45
+ role="link"
46
+ title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331"
47
+ onclick={()=> window.open("https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331")}>
48
+ <img alt="itch.io icon" src={ItchLogoHotLink}>
49
+ </button>
50
+ </section>
43
51
  </section>
44
52
  </section>
45
- </section>
53
+ {/snippet}
46
54
  </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 SoulworkProps = typeof __propDef.props;
13
- export type SoulworkEvents = typeof __propDef.events;
14
- export type SoulworkSlots = typeof __propDef.slots;
15
- export default class Soulwork extends SvelteComponent<SoulworkProps, SoulworkEvents, SoulworkSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const Soulwork: import("svelte").Component<Props, {}, "">;
6
+ type Soulwork = ReturnType<typeof Soulwork>;
7
+ export default Soulwork;