@turnipxenon/pineapple 3.0.0-alpha.9 → 3.0.0

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 (101) hide show
  1. package/dist/components/blog_template/BlogTemplate.svelte +1 -1
  2. package/dist/components/dialog_manager/DialogManager.d.ts +2 -1
  3. package/dist/components/dialog_manager/DialogMangerInit.d.ts +2 -15
  4. package/dist/components/dialog_manager/DialogMangerInit.js +8 -2
  5. package/dist/components/dialog_manager/IDialogManager.d.ts +39 -0
  6. package/dist/components/dialog_manager/IDialogManager.js +4 -0
  7. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.d.ts +3 -0
  8. package/dist/components/dialog_manager/behavior_tree/line_processors/commands/JumpCommand.js +15 -3
  9. package/dist/components/dialog_overlay/DialogOverlay.svelte +31 -22
  10. package/dist/components/pineapple/PineappleBaseLayout.svelte +2 -2
  11. package/dist/index.d.ts +2 -2
  12. package/dist/index.js +1 -2
  13. package/dist/ui/components/SocialSection.svelte +6 -2
  14. package/dist/ui/elements/{pinya-button/component.svelte → PinyaButton/PinyaButton.svelte} +4 -3
  15. package/dist/ui/elements/PinyaButton/PinyaButton.svelte.d.ts +4 -0
  16. package/dist/ui/elements/{pinya-button/props.d.ts → PinyaButton/PinyaButtonProps.d.ts} +1 -0
  17. package/dist/ui/elements/PinyaButton/index.d.ts +2 -0
  18. package/dist/ui/elements/PinyaButton/index.js +2 -0
  19. package/dist/ui/elements/index.d.ts +1 -1
  20. package/dist/ui/elements/index.js +1 -1
  21. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +1 -0
  22. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +7 -2
  23. package/dist/ui/modules/projects/Hepcat.svelte +6 -4
  24. package/dist/ui/modules/projects/Hepcat.svelte.d.ts +1 -1
  25. package/dist/ui/modules/projects/Pengi.svelte +6 -4
  26. package/dist/ui/modules/projects/Pengi.svelte.d.ts +1 -1
  27. package/dist/ui/modules/projects/Soulwork.svelte +7 -5
  28. package/dist/ui/modules/projects/ThisWebpage.svelte +9 -8
  29. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +1 -1
  30. package/dist/ui/templates/{pinya-page-layout/component.svelte → PinyaPageLayout/PinyaPageLayout.svelte} +1 -1
  31. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +9 -0
  32. package/dist/ui/templates/PinyaPageLayout/index.d.ts +2 -0
  33. package/dist/ui/templates/PinyaPageLayout/index.js +2 -0
  34. package/dist/ui/templates/{pinya-page-layout → PinyaPageLayout}/runes.svelte.d.ts +1 -0
  35. package/dist/ui/templates/PinyaPageLayout/runes.svelte.js +4 -0
  36. package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte +2 -2
  37. package/dist/ui/templates/SeaweedLayout/EntryOrderConfig.svelte.d.ts +9 -0
  38. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte.d.ts +1 -1
  39. package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte +6 -6
  40. package/dist/ui/templates/confirmation-modal/component.svelte +1 -1
  41. package/dist/ui/templates/index.d.ts +2 -2
  42. package/dist/ui/templates/index.js +2 -2
  43. package/package.json +3 -2
  44. package/dist/template/seaweed/ParseQueryTerms.d.ts +0 -1
  45. package/dist/template/seaweed/ParseQueryTerms.js +0 -23
  46. package/dist/template/seaweed/RunChaos.d.ts +0 -1
  47. package/dist/template/seaweed/RunChaos.js +0 -41
  48. package/dist/template/seaweed/SeaweedTemplate.svelte +0 -336
  49. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +0 -32
  50. package/dist/template/seaweed/SeaweedTemplateData.d.ts +0 -30
  51. package/dist/template/seaweed/SeaweedTemplateData.js +0 -79
  52. package/dist/template/seaweed/entries/ChefWings.svelte +0 -45
  53. package/dist/template/seaweed/entries/ChefWings.svelte.d.ts +0 -7
  54. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte +0 -40
  55. package/dist/template/seaweed/entries/CustomizedYarnspinner.svelte.d.ts +0 -7
  56. package/dist/template/seaweed/entries/EntryProps.d.ts +0 -16
  57. package/dist/template/seaweed/entries/EntryProps.js +0 -5
  58. package/dist/template/seaweed/entries/Hepcat.svelte +0 -64
  59. package/dist/template/seaweed/entries/Hepcat.svelte.d.ts +0 -7
  60. package/dist/template/seaweed/entries/Pengi.svelte +0 -57
  61. package/dist/template/seaweed/entries/Pengi.svelte.d.ts +0 -7
  62. package/dist/template/seaweed/entries/Soulwork.svelte +0 -54
  63. package/dist/template/seaweed/entries/Soulwork.svelte.d.ts +0 -7
  64. package/dist/template/seaweed/entries/ThisWebpage.svelte +0 -55
  65. package/dist/template/seaweed/entries/ThisWebpage.svelte.d.ts +0 -7
  66. package/dist/template/seaweed/entries/WorkExperience.svelte +0 -130
  67. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +0 -8
  68. package/dist/template/seaweed/entries/Workset.svelte +0 -57
  69. package/dist/template/seaweed/entries/Workset.svelte.d.ts +0 -7
  70. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.d.ts +0 -1
  71. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.js +0 -8
  72. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +0 -297
  73. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +0 -12
  74. package/dist/template/seaweed/entry_order_config/entry-order-config.postcss +0 -35
  75. package/dist/template/seaweed/index.d.ts +0 -4
  76. package/dist/template/seaweed/index.js +0 -4
  77. package/dist/template/seaweed/seaweed.postcss +0 -125
  78. package/dist/ui/elements/pinya-button/component.svelte.d.ts +0 -4
  79. package/dist/ui/elements/pinya-button/index.d.ts +0 -2
  80. package/dist/ui/elements/pinya-button/index.js +0 -2
  81. package/dist/ui/templates/pinya-page-layout/component.svelte.d.ts +0 -9
  82. package/dist/ui/templates/pinya-page-layout/index.d.ts +0 -2
  83. package/dist/ui/templates/pinya-page-layout/index.js +0 -2
  84. package/dist/ui/templates/pinya-page-layout/runes.svelte.js +0 -3
  85. package/dist/ui/templates/seaweed-layout/EntryOrderConfig2.svelte.d.ts +0 -9
  86. /package/dist/ui/elements/{pinya-button/props.js → PinyaButton/PinyaButtonProps.js} +0 -0
  87. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/CreateUrlForm.svelte.d.ts +0 -0
  88. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte +0 -0
  89. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/EntryGroup.svelte.d.ts +0 -0
  90. /package/dist/ui/templates/{seaweed-layout/EntryOrderConfig2.svelte → SeaweedLayout/EntryOrderConfig.svelte} +0 -0
  91. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.d.ts +0 -0
  92. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectComponentProps.js +0 -0
  93. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/ProjectGroupConfig.svelte +0 -0
  94. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.md +0 -0
  95. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/SeaweedLayout.svelte.d.ts +0 -0
  96. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.d.ts +0 -0
  97. /package/dist/{template/seaweed → ui/templates/SeaweedLayout}/ToastSettings.js +0 -0
  98. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.d.ts +0 -0
  99. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/index.js +0 -0
  100. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.d.ts +0 -0
  101. /package/dist/ui/templates/{seaweed-layout → SeaweedLayout}/props.js +0 -0
@@ -5,7 +5,7 @@
5
5
  import BlogTemplateInner from "./BlogTemplateInner.svelte";
6
6
  import type { SimplePageMeta } from "../navigation_component/index";
7
7
  import { enableDialogueOverlay } from "../dialog_manager/DialogManagerStore";
8
- import { Card } from "../index";
8
+ import { default as Card } from "../Card.svelte";
9
9
 
10
10
  // grab page meta from the adjacent meta.json
11
11
  interface Props {
@@ -4,8 +4,9 @@
4
4
  import type { DialogDetail } from "../../types/pineapple_fiber/DialogDetail";
5
5
  import { DialogState } from "../../types/pineapple_fiber/DialogState";
6
6
  import { DialogProcessor } from "./DialogProcessor";
7
+ import type { IDialogManager } from "./IDialogManager";
7
8
  export type OnSetDialogChoiceCallback = (newMessage: DialogDetail) => void;
8
- export declare class DialogManager {
9
+ export declare class DialogManager implements IDialogManager {
9
10
  dialogMessageMap: Map<string, DialogDetail>;
10
11
  currentDialogTree: DialogDetail[];
11
12
  fullCurrentMessage: string;
@@ -1,15 +1,2 @@
1
- import { DialogManager } from "./DialogManager";
2
- /**
3
- * strictly must be declared last! or you might receive a weird error that looks like:
4
- *
5
- * 2:04:21 AM [vite] Error when evaluating SSR module /src/lib/components/dialog_manager/DialogManagerStore.ts:
6
- * |- TypeError: Cannot read properties of undefined (reading '0')
7
- * at <instance_members_initializer> (/src/lib/components/dialog_manager/DialogManager.ts:38:67)
8
- * at new DialogManager (/src/lib/components/dialog_manager/DialogManager.ts:53:14)
9
- * at eval (/src/lib/components/dialog_manager/DialogManagerStore.ts:15:23)
10
- * at async instantiateModule (file:///C:/Users/Pumpkin/Projects/Web/pineapple/node_modules/vite/dist/node/chunks/dep-934dbc7c.js:54360:9)
11
- *
12
- * what this means is that one member of dialogManager cannot be initialized. in our case, it was the
13
- * defaultDialogMessage not yet being initialized
14
- */
15
- export declare const dialogManager: DialogManager;
1
+ import type { IDialogManager } from "./IDialogManager";
2
+ export declare const getDialogManager: () => Promise<IDialogManager>;
@@ -1,4 +1,3 @@
1
- import { DialogManager } from "./DialogManager";
2
1
  /**
3
2
  * strictly must be declared last! or you might receive a weird error that looks like:
4
3
  *
@@ -12,4 +11,11 @@ import { DialogManager } from "./DialogManager";
12
11
  * what this means is that one member of dialogManager cannot be initialized. in our case, it was the
13
12
  * defaultDialogMessage not yet being initialized
14
13
  */
15
- export const dialogManager = new DialogManager();
14
+ let _dialogManager = undefined;
15
+ export const getDialogManager = async () => {
16
+ if (_dialogManager === undefined) {
17
+ const dm = await import('./DialogManager');
18
+ _dialogManager = new dm.DialogManager();
19
+ }
20
+ return _dialogManager;
21
+ };
@@ -0,0 +1,39 @@
1
+ import type { DialogDetail } from "../../types/pineapple_fiber/DialogDetail";
2
+ import { type Writable } from "svelte/store";
3
+ import { DialogState } from "../../types/pineapple_fiber/DialogState";
4
+ import { type Tweened } from "svelte/motion";
5
+ import { DialogProcessor } from "./DialogProcessor";
6
+ import type { OnSetDialogChoiceCallback } from "./DialogManager";
7
+ export interface IDialogManager {
8
+ dialogMessageMap: Map<string, DialogDetail>;
9
+ currentDialogTree: DialogDetail[];
10
+ fullCurrentMessage: string;
11
+ currentMessageMeta: DialogDetail;
12
+ currentMessage: Writable<string>;
13
+ currentIndex: number;
14
+ previousTimestamp: number;
15
+ isDoneTransition: boolean;
16
+ currentPortrait: Writable<unknown>;
17
+ portraitMap: Map<string, any>;
18
+ currentState: DialogState;
19
+ currentReadableState: Writable<DialogState>;
20
+ hidePercent: Tweened<number>;
21
+ skipNextActiveTime: number;
22
+ dialogProcessor: DialogProcessor;
23
+ _setDialogChoiceQueue: DialogDetail[];
24
+ _setDialogChoiceMutex: boolean;
25
+ onSetDialogListeners: OnSetDialogChoiceCallback[];
26
+ enableDialogueOverlayCache: boolean;
27
+ skipAnimation: () => void;
28
+ enableDialog: (shouldEnable: boolean) => void;
29
+ setDialogTree: (newDialogTree: DialogDetail[]) => void;
30
+ subscribeToSetDialogChoice: (callback: OnSetDialogChoiceCallback) => void;
31
+ unsubscribeToSetDialogChoice: (callback: OnSetDialogChoiceCallback) => void;
32
+ setDialogChoice: (newMessage: (DialogDetail | undefined)) => void;
33
+ _setDialogChoice: () => void;
34
+ setDialogToDefault: () => void;
35
+ update: (timestamp: number) => void;
36
+ enableDialogOverlay(enable: boolean): void;
37
+ toggleDialogOverlay(): void;
38
+ parseAndSetDialogTree(dialogYarn: string): Promise<DialogDetail[]>;
39
+ }
@@ -0,0 +1,4 @@
1
+ import {} from "svelte/store";
2
+ import { DialogState } from "../../types/pineapple_fiber/DialogState";
3
+ import {} from "svelte/motion";
4
+ import { DialogProcessor } from "./DialogProcessor";
@@ -2,7 +2,10 @@ import type { LineBehaviorNode } from "../../line_core/LineBehaviorNode";
2
2
  import type { LineNodeArguments } from "../../line_core/LineNodeArguments";
3
3
  import type { LineBehaviorResult } from "../../line_core/LineBehaviorResult";
4
4
  import { SetVariableNode } from "../SetVariableNode";
5
+ import type { IDialogManager } from "../../../IDialogManager";
5
6
  export declare class JumpCommand implements LineBehaviorNode {
6
7
  setVariableNode: SetVariableNode;
8
+ dialogManager: undefined | IDialogManager;
9
+ constructor();
7
10
  process(nodeArgs: LineNodeArguments): LineBehaviorResult;
8
11
  }
@@ -1,10 +1,22 @@
1
1
  import { BehaviorStatus } from "../../core/BehaviorStatus";
2
2
  import { SetVariableNode } from "../SetVariableNode";
3
3
  import { btreeUtils } from "../../core/BTreeUtils";
4
- import { dialogManager } from "../../../DialogMangerInit";
4
+ import { getDialogManager } from "../../../DialogMangerInit";
5
5
  export class JumpCommand {
6
6
  setVariableNode = new SetVariableNode();
7
+ dialogManager = undefined;
8
+ constructor() {
9
+ getDialogManager().then(dm => this.dialogManager = dm);
10
+ }
7
11
  process(nodeArgs) {
12
+ if (this.dialogManager === undefined) {
13
+ console.warn('Dialog Manger not yet initialized');
14
+ return {
15
+ renderedLine: "",
16
+ nextState: nodeArgs.initState,
17
+ status: BehaviorStatus.Failure
18
+ };
19
+ }
8
20
  if (!nodeArgs.line.startsWith("<<jump")) {
9
21
  return {
10
22
  renderedLine: "",
@@ -23,10 +35,10 @@ export class JumpCommand {
23
35
  .slice("<<jump ".length, nodeArgs.line.length - ">>".length)
24
36
  .replace(/^\{/, "") // remove possible " at the start: https://stackoverflow.com/a/2182602
25
37
  .replace(/}$/, ""); // remove possible " at the end: https://stackoverflow.com/a/12249011;
26
- const dialogChoice = dialogManager.dialogMessageMap.get(btreeUtils.simplifyToken(choiceName));
38
+ const dialogChoice = this.dialogManager.dialogMessageMap.get(btreeUtils.simplifyToken(choiceName));
27
39
  if (dialogChoice !== undefined) {
28
40
  // force choice
29
- dialogManager.setDialogChoice(dialogChoice);
41
+ this.dialogManager.setDialogChoice(dialogChoice);
30
42
  }
31
43
  else {
32
44
  console.error(`Unknown jump node at line ${nodeArgs.lineIndex + 1}: ${choiceName} or ${btreeUtils.simplifyToken(choiceName)}`);
@@ -2,37 +2,46 @@
2
2
  import AresHappy from "../../assets/characters/ares/ares_happy.webp";
3
3
  import { onMount } from "svelte";
4
4
  import { DialogState } from "../../types/pineapple_fiber/DialogState";
5
- import { dialogManager } from "../dialog_manager/DialogMangerInit";
5
+ import { getDialogManager } from "../dialog_manager/DialogMangerInit";
6
+ import type { IDialogManager } from "../dialog_manager/IDialogManager";
6
7
 
7
8
  let currentMessage = $state("");
8
- dialogManager.currentMessage.subscribe((value) => {
9
- currentMessage = value;
10
- });
11
-
12
9
  let currentPortrait = $state(AresHappy);
13
- dialogManager.currentPortrait.subscribe((value) => {
14
- if (value) {
15
- currentPortrait = value;
16
- }
17
- });
18
10
 
19
11
  let hidePercent = $state(100);
20
12
  let isHidden = $state(true);
13
+ let dialogManager: IDialogManager | undefined = $state(undefined);
21
14
  onMount(() => {
22
- dialogManager.hidePercent.subscribe((value) => {
23
- hidePercent = value * 0.4;
24
- isHidden = false;
25
- });
15
+ getDialogManager()
16
+ .then(dm => {
17
+ dialogManager = dm;
18
+
19
+ dialogManager.currentMessage.subscribe((value) => {
20
+ currentMessage = value;
21
+ });
22
+
23
+ dialogManager.currentPortrait.subscribe((value) => {
24
+ if (value) {
25
+ currentPortrait = value;
26
+ }
27
+ });
28
+
29
+ dialogManager.hidePercent.subscribe((value) => {
30
+ hidePercent = value * 0.4;
31
+ isHidden = false;
32
+ });
33
+
34
+ dialogManager.currentReadableState.subscribe((value) => {
35
+ isHidden = value === DialogState.Invisible;
36
+ });
26
37
 
27
- dialogManager.currentReadableState.subscribe((value) => {
28
- isHidden = value === DialogState.Invisible;
29
- });
38
+ dialogManager.update(0);
39
+ });
30
40
 
31
- dialogManager.update(0);
32
41
  });
33
42
 
34
43
  const onDialogClick = () => {
35
- dialogManager.skipAnimation();
44
+ dialogManager?.skipAnimation();
36
45
  };
37
46
 
38
47
  </script>
@@ -89,9 +98,9 @@
89
98
  }
90
99
 
91
100
  .dialog-name {
92
- padding-top: 2rem;
93
- padding-left: 4rem;
94
- padding-right: 4rem;
101
+ padding-top: 2rem;
102
+ padding-left: 4rem;
103
+ padding-right: 4rem;
95
104
  position: fixed;
96
105
  }
97
106
 
@@ -20,7 +20,7 @@
20
20
  import Toast from "./toast/Toast.svelte";
21
21
  import DialogOverlay from "../dialog_overlay/DialogOverlay.svelte";
22
22
  import { fade } from "svelte/transition";
23
- import { dialogManager } from "../dialog_manager/DialogMangerInit";
23
+ import { getDialogManager } from "../dialog_manager/DialogMangerInit";
24
24
 
25
25
  interface Props {
26
26
  showDialogByDefault?: boolean;
@@ -77,7 +77,7 @@
77
77
 
78
78
  <!--todo: turn off hidden when it's time-->
79
79
  <button class="fab" onclick={()=>{
80
- dialogManager.toggleDialogOverlay()
80
+ getDialogManager().then(dm => dm.toggleDialogOverlay());
81
81
  }}>
82
82
  {#if (enableDialogueOverlayValue)}
83
83
  <img class="turnip-icon" src={CloseIcon} alt="interactive floating action button represented as a turnip">
package/dist/index.d.ts CHANGED
@@ -10,5 +10,5 @@ export * from "./types/pineapple_fiber/PortraitType";
10
10
  export * from "./types/pineapple_fiber/DialogDetail";
11
11
  export * from "./util/util";
12
12
  export * from "./api/index";
13
- export * from "./template/seaweed/index";
14
- export { dialogManager } from "./components/dialog_manager/DialogMangerInit";
13
+ export type { IDialogManager } from "./components/dialog_manager/IDialogManager";
14
+ export { getDialogManager } from "./components/dialog_manager/DialogMangerInit";
package/dist/index.js CHANGED
@@ -11,5 +11,4 @@ export * from "./types/pineapple_fiber/PortraitType";
11
11
  export * from "./types/pineapple_fiber/DialogDetail";
12
12
  export * from "./util/util";
13
13
  export * from "./api/index";
14
- export * from "./template/seaweed/index";
15
- export { dialogManager } from "./components/dialog_manager/DialogMangerInit";
14
+ export { getDialogManager } from "./components/dialog_manager/DialogMangerInit";
@@ -5,8 +5,9 @@
5
5
  import MailIcon from "../../assets/icons/mail.svg";
6
6
  import GithubIcon from "../../assets/icons/github-mark.svg";
7
7
  import LinkedinIcon from "../../assets/icons/linkedin.svg";
8
- import { ButtonVariant, ImageIcon, PinyaButton } from "../elements/index";
9
8
  import { ItchLogoHotLink } from "../../consts";
9
+ import { ButtonVariant, PinyaButton } from "../elements/PinyaButton/index";
10
+ import ImageIcon from "../elements/ImageIcon.svelte";
10
11
 
11
12
  /** @type {{isSmallVersion?: boolean, email?: string, linkedinSlug?: string, isSlot?: boolean, allowLinkedIn?: boolean}} */
12
13
  let {
@@ -63,7 +64,9 @@
63
64
  <PinyaButton
64
65
  buttonVariant={ButtonVariant.SmallIcon}
65
66
  title="https://turnipxenon.itch.io/"
66
- onclick={() => window.open("https://turnipxenon.itch.io/")}>
67
+ onclick={() => window.open("https://turnipxenon.itch.io/")}
68
+ classes="h-full"
69
+ >
67
70
  <ImageIcon src={ItchLogoHotLink} alt="itch icon" />
68
71
  {#if (!isSmallVersion)}
69
72
  <span>TurnipXenon</span>
@@ -83,5 +86,6 @@
83
86
  flex-wrap: wrap;
84
87
  justify-content: var(--preferred-justify-content);
85
88
  gap: 0.7rem;
89
+ align-items: stretch;
86
90
  }
87
91
  </style>
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- import { ColorScheme } from '..';
3
- import { ButtonVariant, type PinyaButtonProps } from './props';
2
+ import { ButtonVariant, type PinyaButtonProps } from './PinyaButtonProps';
3
+ import { ColorScheme } from "../ColorScheme";
4
4
 
5
5
  let {
6
6
  children,
@@ -8,6 +8,7 @@
8
8
  paddingClass = '',
9
9
  buttonVariant = ButtonVariant.Default,
10
10
  colorClass = '',
11
+ classes = '',
11
12
  ...props
12
13
  }: PinyaButtonProps = $props();
13
14
 
@@ -41,7 +42,7 @@
41
42
  <button
42
43
  {...props}
43
44
  class:small-icon-button={buttonVariant === ButtonVariant.SmallIcon}
44
- class={`btn rounded-2xl text-xl font-bold ${tailwindClass} ${paddingClass}`}
45
+ class={`btn rounded-2xl text-xl font-bold ${tailwindClass} ${paddingClass} ${classes}`}
45
46
  >
46
47
  {@render children()}
47
48
  </button>
@@ -0,0 +1,4 @@
1
+ import { type PinyaButtonProps } from './PinyaButtonProps';
2
+ declare const PinyaButton: import("svelte").Component<PinyaButtonProps, {}, "">;
3
+ type PinyaButton = ReturnType<typeof PinyaButton>;
4
+ export default PinyaButton;
@@ -10,4 +10,5 @@ export type PinyaButtonProps = WrapperProps & HTMLButtonAttributes & GeneralUIPr
10
10
  paddingClass?: string;
11
11
  buttonVariant?: ButtonVariant;
12
12
  colorClass?: string;
13
+ classes?: string;
13
14
  };
@@ -0,0 +1,2 @@
1
+ export { default as PinyaButton } from './PinyaButton.svelte';
2
+ export * from './PinyaButtonProps';
@@ -0,0 +1,2 @@
1
+ export { default as PinyaButton } from './PinyaButton.svelte';
2
+ export * from './PinyaButtonProps';
@@ -6,6 +6,6 @@ export * from "./GeneralUIProps";
6
6
  export * from "./OnBackground";
7
7
  export * from "./pinya-card/index";
8
8
  export * from "./WrapperProps";
9
- export * from "./pinya-button/index";
9
+ export * from "./PinyaButton/index";
10
10
  export * from "./text-chip";
11
11
  export * from "./CodeBlock";
@@ -6,6 +6,6 @@ export * from "./GeneralUIProps";
6
6
  export * from "./OnBackground";
7
7
  export * from "./pinya-card/index";
8
8
  export * from "./WrapperProps";
9
- export * from "./pinya-button/index";
9
+ export * from "./PinyaButton/index";
10
10
  export * from "./text-chip";
11
11
  export * from "./CodeBlock";
@@ -15,4 +15,5 @@ export interface PinyaComboboxProps<T extends string> {
15
15
  onValueChange?: (selectedList: ValueChangeDetails<T>) => void;
16
16
  onValueChangeBase?: (selectedList: ValueChangeDetails<T>) => void;
17
17
  contentZIndex?: string;
18
+ disabled?: boolean;
18
19
  }
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
- import { getLocale, localizeHref } from "../../../../paraglide/runtime";
2
+ import { deLocalizeHref, getLocale, localizeHref } from "../../../../paraglide/runtime";
3
3
  import PinyaCombobox from "../../../elements/pinya-combobox/PinyaCombobox.svelte";
4
+ import { appState } from "../../../templates/PinyaPageLayout/runes.svelte";
4
5
 
5
6
  interface ComboxData {
6
7
  label: string;
@@ -23,9 +24,12 @@
23
24
  const data = comboboxData.find((d) => d.value === e.value[0]);
24
25
  if (data) {
25
26
  selectedCountry = [data.value];
26
- location.href = localizeHref("./", { locale: data.value });
27
+ const pathname = deLocalizeHref(location.href);
28
+ location.href = localizeHref(pathname, { locale: data.value });
27
29
  }
28
30
  };
31
+
32
+ let disabled = $derived(!appState.isLanguagePickerAvailable);
29
33
  </script>
30
34
 
31
35
  <PinyaCombobox
@@ -35,4 +39,5 @@
35
39
  label="Select Language"
36
40
  placeholder="Select Language"
37
41
  {onValueChange}
42
+ {disabled}
38
43
  />
@@ -1,10 +1,12 @@
1
1
  <script module lang="ts">
2
2
  import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
3
3
  import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
4
- import type { ProjectComponentProps } from "../../templates/seaweed-layout/ProjectComponentProps";
5
- import { FourPartCard } from "../../components/index.js";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
8
10
 
9
11
  const key = "Hepcat";
10
12
  export { component, key };
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from "../../templates/seaweed-layout/ProjectComponentProps";
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "Hepcat";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -1,10 +1,12 @@
1
1
  <script module lang="ts">
2
2
  import HeaderPengi from "../../../assets/temp/header-pengi.mp4";
3
3
  import GithubIcon from "../../../assets/icons/github-mark.svg";
4
- import type { ProjectComponentProps } from "../../templates/index";
5
- import { FourPartCard } from "../../components/index.js";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
8
10
 
9
11
  const key = "Pengi";
10
12
  export { component, key };
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from "../../templates/index";
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "Pengi";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -1,10 +1,12 @@
1
1
  <script module lang="ts">
2
- import HeaderSoulwork from '../../../assets/temp/header-soulwork.mp4';
3
- import GithubIcon from '../../../assets/icons/github-mark.svg';
2
+ import HeaderSoulwork from "../../../assets/temp/header-soulwork.mp4";
3
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
4
4
  import type { ProjectComponentProps } from "../../templates/index";
5
- import { FourPartCard } from "../../components/index";
6
- import { ButtonVariant, ImageIcon, PinyaButton } from "../../elements/index.js";
7
- import { ItchLogoHotLink } from "../../../consts.js";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { ItchLogoHotLink } from "../../../consts";
8
10
 
9
11
  const key = "Soulwork";
10
12
  export { component, key };
@@ -1,15 +1,16 @@
1
1
  <script module lang="ts">
2
- import GithubIcon from '../../../assets/icons/github-mark.svg';
3
- import ThisWebsiteFootage from '../../../assets/others/seaweed-showcase.mp4';
4
- import type { ProjectComponentProps } from '../../templates/seaweed-layout/ProjectComponentProps';
2
+ import GithubIcon from "../../../assets/icons/github-mark.svg";
3
+ import ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
7
+ import { default as PinyaButton } from "../../elements/PinyaButton/PinyaButton.svelte";
8
+ import { ButtonVariant } from "../../elements/PinyaButton/PinyaButtonProps";
9
+ import { default as TextChip } from "../../elements/text-chip/TextChip.svelte";
5
10
 
6
- const key = 'This Webpage';
11
+ const key = "This Webpage";
7
12
  export { component, key };
8
13
  </script>
9
- <script>
10
- import { FourPartCard } from "../../components/index";
11
- import { ButtonVariant, ImageIcon, PinyaButton, TextChip } from "../../elements/index.js";
12
- </script>
13
14
 
14
15
  {#snippet component(props: ProjectComponentProps)}
15
16
  <FourPartCard>
@@ -1,4 +1,4 @@
1
- import type { ProjectComponentProps } from '../../templates/seaweed-layout/ProjectComponentProps';
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const key = "This Webpage";
3
3
  export { component, key };
4
4
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
@@ -8,7 +8,7 @@
8
8
  import { modals } from "svelte-modals";
9
9
  import GeneralSettingsModal from "../../modules/modals/general-settings/GeneralSettingsModal.svelte";
10
10
  import { localizeHref } from "../../../paraglide/runtime";
11
- import { appState } from "..";
11
+ import { appState } from "./runes.svelte";
12
12
 
13
13
  let {
14
14
  children,
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ children: Snippet;
4
+ appBarLead?: Snippet;
5
+ footer?: Snippet;
6
+ };
7
+ declare const PinyaPageLayout: import("svelte").Component<$$ComponentProps, {}, "appBarLead">;
8
+ type PinyaPageLayout = ReturnType<typeof PinyaPageLayout>;
9
+ export default PinyaPageLayout;
@@ -0,0 +1,2 @@
1
+ export { default as PinyaPageLayout } from "./PinyaPageLayout.svelte";
2
+ export * from "./runes.svelte";
@@ -0,0 +1,2 @@
1
+ export { default as PinyaPageLayout } from "./PinyaPageLayout.svelte";
2
+ export * from "./runes.svelte";
@@ -2,6 +2,7 @@ import type { Snippet } from 'svelte';
2
2
  interface AppStore {
3
3
  title: string;
4
4
  lead?: Snippet;
5
+ isLanguagePickerAvailable: boolean;
5
6
  }
6
7
  export declare const appState: AppStore;
7
8
  export {};
@@ -0,0 +1,4 @@
1
+ export const appState = $state({
2
+ title: '',
3
+ isLanguagePickerAvailable: true,
4
+ });
@@ -1,9 +1,9 @@
1
1
  <script lang="ts">
2
- import { type CreateUrlRequest, CreateUrlResult, jsonToCreateUrlResponse } from "../../types/api/CreateUrl";
2
+ import { type CreateUrlRequest, CreateUrlResult, jsonToCreateUrlResponse } from "../../../types/api/CreateUrl";
3
3
  import type { ToastContext } from "@skeletonlabs/skeleton-svelte";
4
4
  import { getContext } from "svelte";
5
5
  import type { ToastSettings } from "./ToastSettings";
6
- import { PinyaButton } from "../../ui/elements/index";
6
+ import { PinyaButton } from "../../elements/index";
7
7
 
8
8
  export const toast: ToastContext = getContext("toast");
9
9
 
@@ -0,0 +1,9 @@
1
+ import type { ProjectGroup, SnippetMeta } from "../index";
2
+ interface Props {
3
+ layout: ProjectGroup[];
4
+ orderUrl: string;
5
+ allEntries: SnippetMeta[];
6
+ }
7
+ declare const EntryOrderConfig: import("svelte").Component<Props, {}, "layout" | "orderUrl">;
8
+ type EntryOrderConfig = ReturnType<typeof EntryOrderConfig>;
9
+ export default EntryOrderConfig;
@@ -9,6 +9,6 @@ interface Props {
9
9
  }
10
10
  declare const ProjectGroupConfig: import("svelte").Component<Props, {
11
11
  toast: ToastContext;
12
- }, "orderUrl" | "layout">;
12
+ }, "layout" | "orderUrl">;
13
13
  type ProjectGroupConfig = ReturnType<typeof ProjectGroupConfig>;
14
14
  export default ProjectGroupConfig;
@@ -2,14 +2,14 @@
2
2
  import { fly } from "svelte/transition";
3
3
  import type { ProjectGroup, SeaweedLayoutProps } from "./props";
4
4
  import ChumBucket from "../../modules/seaweed/ChumBucket.svelte";
5
- import { PinyaPageLayout } from "../index";
6
- import { SocialSection } from "../../components/index";
5
+ import { default as PinyaPageLayout } from "../PinyaPageLayout/PinyaPageLayout.svelte";
6
+ import { default as SocialSection } from "../../components/SocialSection.svelte";
7
7
  import EntryGroup from "./EntryGroup.svelte";
8
8
  import PineappleSwitch from "../../elements/PineappleSwitch.svelte";
9
9
  import { CodeBlock, TextChip } from "../../elements/index";
10
10
  import { SvelteMap } from "svelte/reactivity";
11
- import EntryOrderConfig2 from "./EntryOrderConfig2.svelte";
12
- import CreateUrlForm from "../../../template/seaweed/CreateUrlForm.svelte";
11
+ import EntryOrderConfig from "./EntryOrderConfig.svelte";
12
+ import CreateUrlForm from "./CreateUrlForm.svelte";
13
13
  import { onMount } from "svelte";
14
14
  import { page } from "$app/state";
15
15
 
@@ -223,11 +223,11 @@
223
223
  {/each}
224
224
  </div>
225
225
 
226
- <EntryOrderConfig2
226
+ <EntryOrderConfig
227
227
  bind:layout={actualLayout}
228
228
  bind:orderUrl={orderUrl}
229
229
  allEntries={entryList}
230
- ></EntryOrderConfig2>
230
+ ></EntryOrderConfig>
231
231
 
232
232
  <br>
233
233
  <p>Copy the url below and open a new page with it</p>
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import type { ConfirmationModalProps } from './props';
3
- import { ModalBase } from '../../components';
3
+ import { default as ModalBase } from '../../components/ModalBase.svelte';
4
4
  import { ColorScheme, PinyaButton } from '../../elements';
5
5
 
6
6
  let {