@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,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;
@@ -1,46 +1,55 @@
1
- <script>import {} from "./EntryProps";
2
- import Card from "../../../components/Card.svelte";
3
- import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
5
- import { Chip } from "../../..";
6
- 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 ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
6
+ import { Chip } from "../../..";
7
+
8
+ // noinspection JSUnusedGlobalSymbols
9
+ interface Props {
10
+ props: EntryProps;
11
+ }
12
+
13
+ let { props }: Props = $props();
7
14
  </script>
8
15
 
9
16
  <Card>
10
- <section class="project-card" slot="content">
17
+ {#snippet content()}
18
+ <section class="project-card" >
11
19
 
12
- <video playsinline autoplay muted loop preload="none">
13
- <source src={ThisWebsiteFootage} type="video/mp4">
14
- video unavailable. original video contains clips of this website being resized and light-dark mode being
15
- toggled.
16
- </video>
17
- <div class="project-card-body">
18
- <h2>This webpage!</h2>
20
+ <video playsinline autoplay muted loop preload="none">
21
+ <source src={ThisWebsiteFootage} type="video/mp4">
22
+ video unavailable. original video contains clips of this website being resized and light-dark mode being
23
+ toggled.
24
+ </video>
25
+ <div class="project-card-body">
26
+ <h2>This webpage!</h2>
19
27
 
20
- <p>
21
- The webpage is made with two parts. The webpage that has the content for everything here, I've lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.
22
- </p>
23
- <p>The webpage can dynamically emphasize terms, rearrange the layout, use different terms, and save all these configurations as a shortened link. Additionally fetches the latest blog entries from turnipxenon.com via REST calls.</p>
28
+ <p>
29
+ The webpage is made with two parts. The webpage that has the content for everything here, I've lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.
30
+ </p>
31
+ <p>The webpage can dynamically emphasize terms, rearrange the layout, use different terms, and save all these configurations as a shortened link. Additionally fetches the latest blog entries from turnipxenon.com via REST calls.</p>
24
32
 
25
- <p>
26
- <Chip>Svelte</Chip>
27
- <Chip>Skeleton (Svelte UI library)</Chip>
28
- <Chip>Typescript</Chip>
29
- <Chip>Vercel</Chip>
30
- <Chip>YarnSpinner</Chip>
31
- <Chip>Postgres (SQL database)</Chip>
32
- <Chip>Prisma ORM</Chip>
33
- <Chip>RESTful API</Chip>
34
- </p>
33
+ <p>
34
+ <Chip>Svelte</Chip>
35
+ <Chip>Skeleton (Svelte UI library)</Chip>
36
+ <Chip>Typescript</Chip>
37
+ <Chip>Vercel</Chip>
38
+ <Chip>YarnSpinner</Chip>
39
+ <Chip>Postgres (SQL database)</Chip>
40
+ <Chip>Prisma ORM</Chip>
41
+ <Chip>RESTful API</Chip>
42
+ </p>
35
43
 
36
- <section class="game-link-section">
37
- <button type="button" class="btn variant-filled-primary turnip-button"
38
- role="link"
39
- title="https://github.com/TurnipXenon/pineapple"
40
- on:click={() => window.open("https://github.com/TurnipXenon/pineapple")}>
41
- <img src={GithubIcon} class="long-btn-image" alt="github icon">
42
- </button>
43
- </section>
44
- </div>
45
- </section>
44
+ <section class="game-link-section">
45
+ <button type="button" class="btn preset-filled-primary-500 turnip-button"
46
+ role="link"
47
+ title="https://github.com/TurnipXenon/pineapple"
48
+ onclick={() => window.open("https://github.com/TurnipXenon/pineapple")}>
49
+ <img src={GithubIcon} class="long-btn-image" alt="github icon">
50
+ </button>
51
+ </section>
52
+ </div>
53
+ </section>
54
+ {/snippet}
46
55
  </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 ThisWebpageProps = typeof __propDef.props;
13
- export type ThisWebpageEvents = typeof __propDef.events;
14
- export type ThisWebpageSlots = typeof __propDef.slots;
15
- export default class ThisWebpage extends SvelteComponent<ThisWebpageProps, ThisWebpageEvents, ThisWebpageSlots> {
2
+ interface Props {
3
+ props: EntryProps;
16
4
  }
17
- export {};
5
+ declare const ThisWebpage: import("svelte").Component<Props, {}, "">;
6
+ type ThisWebpage = ReturnType<typeof ThisWebpage>;
7
+ export default ThisWebpage;