@turnipxenon/pineapple 2.4.12 → 2.4.14

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 (127) hide show
  1. package/.idea/discord.xml +1 -1
  2. package/.idea/workspace.xml +139 -121
  3. package/.svelte-kit/__package__/app.postcss +28 -2
  4. package/.svelte-kit/__package__/assets/icons/close.svg +1 -0
  5. package/.svelte-kit/__package__/components/Card.svelte +28 -28
  6. package/.svelte-kit/__package__/components/CarouselElement.svelte +16 -16
  7. package/.svelte-kit/__package__/components/Chip.svelte +13 -12
  8. package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte +5 -5
  9. package/.svelte-kit/__package__/components/SocialSection.svelte +162 -159
  10. package/.svelte-kit/__package__/components/StickyElement.svelte +20 -20
  11. package/.svelte-kit/__package__/components/ToggleableContent.svelte +8 -8
  12. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte +1 -8
  13. package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
  14. package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
  15. package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
  16. package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.js +1 -0
  17. package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
  18. package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.js +1 -0
  19. package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte +48 -0
  20. package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
  21. package/.svelte-kit/__package__/components/pineapple/toast/Toast.d.ts +27 -0
  22. package/.svelte-kit/__package__/components/pineapple/toast/Toast.js +37 -0
  23. package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte +89 -0
  24. package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte.d.ts +14 -0
  25. package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
  26. package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
  27. package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
  28. package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
  29. package/.svelte-kit/__package__/index.d.ts +1 -1
  30. package/.svelte-kit/__package__/index.js +1 -1
  31. package/.svelte-kit/__package__/postcss.d.ts +3 -3
  32. package/.svelte-kit/__package__/styles/global.css +1 -1
  33. package/.svelte-kit/__package__/theme.postcss +2 -1
  34. package/.svelte-kit/ambient.d.ts +4 -0
  35. package/.svelte-kit/generated/client/app.js +6 -5
  36. package/.svelte-kit/generated/client/nodes/2.js +1 -1
  37. package/.svelte-kit/generated/client/nodes/3.js +1 -1
  38. package/.svelte-kit/generated/client/nodes/4.js +1 -1
  39. package/.svelte-kit/generated/client/nodes/5.js +1 -1
  40. package/.svelte-kit/generated/client/nodes/6.js +1 -1
  41. package/.svelte-kit/generated/client/nodes/7.js +1 -0
  42. package/.svelte-kit/generated/server/internal.js +1 -1
  43. package/.svelte-kit/types/route_meta_data.json +6 -4
  44. package/.svelte-kit/types/src/routes/$types.d.ts +1 -4
  45. package/.svelte-kit/types/src/routes/{personal → (pineapple)}/$types.d.ts +2 -2
  46. package/.svelte-kit/types/src/routes/{portfolio/actual → (pineapple)/pineapple}/$types.d.ts +2 -2
  47. package/.svelte-kit/types/src/routes/(seaweed)/$types.d.ts +19 -0
  48. package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/$types.d.ts +3 -3
  49. package/.svelte-kit/types/src/routes/(seaweed)/portfolio/actual/$types.d.ts +17 -0
  50. package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/proxy+page.server.ts +1 -1
  51. package/README.md +8 -18
  52. package/dist/app.postcss +28 -2
  53. package/dist/assets/icons/close.svg +1 -0
  54. package/dist/components/Card.svelte +28 -28
  55. package/dist/components/CarouselElement.svelte +16 -16
  56. package/dist/components/Chip.svelte +13 -12
  57. package/dist/components/ElementVisbilityDetector.svelte +5 -5
  58. package/dist/components/SocialSection.svelte +162 -159
  59. package/dist/components/StickyElement.svelte +20 -20
  60. package/dist/components/ToggleableContent.svelte +8 -8
  61. package/dist/components/layouts/SeaweedBaseLayout.svelte +1 -8
  62. package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
  63. package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
  64. package/dist/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
  65. package/dist/components/pineapple/overlay_manager/OverlayManager.js +1 -0
  66. package/dist/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
  67. package/dist/components/pineapple/toast/DefaultToastBody.js +1 -0
  68. package/dist/components/pineapple/toast/DefaultToastBody.svelte +48 -0
  69. package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
  70. package/dist/components/pineapple/toast/Toast.d.ts +27 -0
  71. package/dist/components/pineapple/toast/Toast.js +37 -0
  72. package/dist/components/pineapple/toast/Toast.svelte +89 -0
  73. package/dist/components/pineapple/toast/Toast.svelte.d.ts +14 -0
  74. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
  75. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
  76. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
  77. package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
  78. package/dist/index.d.ts +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/postcss.d.ts +3 -3
  81. package/dist/styles/global.css +1 -1
  82. package/dist/theme.postcss +2 -1
  83. package/docs/OverlaySpec.md +23 -0
  84. package/docs/pull_request_template.md +34 -0
  85. package/package.json +1 -1
  86. package/src/lib/app.postcss +28 -2
  87. package/src/lib/assets/icons/close.svg +1 -0
  88. package/src/lib/components/Card.svelte +32 -32
  89. package/src/lib/components/CarouselElement.svelte +22 -22
  90. package/src/lib/components/Chip.svelte +13 -12
  91. package/src/lib/components/ElementVisbilityDetector.svelte +22 -22
  92. package/src/lib/components/OnElementVisbilityChanged.ts +1 -1
  93. package/src/lib/components/SocialSection.svelte +95 -92
  94. package/src/lib/components/StickyElement.svelte +39 -39
  95. package/src/lib/components/ToggleableContent.svelte +85 -85
  96. package/src/lib/components/ToggleableContentType.ts +4 -4
  97. package/src/lib/components/layouts/LayoutConstants.ts +1 -1
  98. package/src/lib/components/layouts/SeaweedBaseLayout.svelte +1 -8
  99. package/src/lib/components/pineapple/PineappleBaseLayout.svelte +207 -0
  100. package/src/lib/components/pineapple/overlay_manager/OverlayManager.ts +0 -0
  101. package/src/lib/components/pineapple/toast/DefaultToastBody.svelte +43 -0
  102. package/src/lib/components/pineapple/toast/DefaultToastBody.ts +10 -0
  103. package/src/lib/components/pineapple/toast/Toast.svelte +113 -0
  104. package/src/lib/components/pineapple/toast/Toast.ts +57 -0
  105. package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
  106. package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.ts +6 -0
  107. package/src/lib/consts.ts +2 -2
  108. package/src/lib/index.ts +1 -1
  109. package/src/lib/postcss.d.ts +3 -3
  110. package/src/lib/styles/global.css +1 -1
  111. package/src/lib/theme.postcss +2 -1
  112. package/src/lib/util/create_go_to_function.ts +5 -5
  113. package/src/routes/{personal → (pineapple)}/+layout.svelte +1 -1
  114. package/src/routes/(pineapple)/+page.svelte +36 -0
  115. package/src/routes/(pineapple)/pineapple/+page.svelte +44 -0
  116. package/src/routes/(seaweed)/+layout.svelte +10 -0
  117. package/src/routes/{portfolio → (seaweed)/portfolio}/+page.server.ts +1 -1
  118. package/src/routes/{portfolio → (seaweed)/portfolio}/+page.svelte +2 -2
  119. package/src/routes/{portfolio → (seaweed)/portfolio}/.gitignore +1 -1
  120. package/src/routes/{portfolio → (seaweed)/portfolio}/actual/+page.svelte +1 -1
  121. package/src/routes/+layout.svelte +0 -7
  122. package/static/robots.txt +5 -5
  123. package/src/lib/components/layouts/PineappleBaseLayout.svelte +0 -161
  124. package/src/routes/+page.svelte +0 -38
  125. package/src/routes/personal/+page.svelte +0 -37
  126. /package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
  127. /package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
@@ -1,21 +1,21 @@
1
1
  <script>export let activeGameIndex;
2
2
  export let selfIndex;
3
3
  import { fly, slide, scale } from "svelte/transition";
4
- </script>
5
-
6
- {#if (activeGameIndex === selfIndex)}
7
- <!--todo: make section consistent size for all-->
8
- <section class="game-showcase"
9
- in:fly={{x: '100%'}} out:fly={{x: '-100%'}}>
10
- <slot/>
11
- </section>
12
- {/if}
13
-
14
- <style>
15
- .game-showcase {
16
- scroll-snap-align: center;
17
- border-radius: var(--theme-rounded-container);
18
- margin: auto;
4
+ </script>
5
+
6
+ {#if (activeGameIndex === selfIndex)}
7
+ <!--todo: make section consistent size for all-->
8
+ <section class="game-showcase"
9
+ in:fly={{x: '100%'}} out:fly={{x: '-100%'}}>
10
+ <slot/>
11
+ </section>
12
+ {/if}
13
+
14
+ <style>
15
+ .game-showcase {
16
+ scroll-snap-align: center;
17
+ border-radius: var(--theme-rounded-container);
18
+ margin: auto;
19
19
  width: 100%
20
- }
20
+ }
21
21
  </style>
@@ -1,12 +1,13 @@
1
- <span class="chip variant-filled-tertiary">
2
- <slot />
3
- </span>
4
-
5
- <style>
6
- .chip {
7
- border-radius: 1em;
8
- margin: 0.25em;
9
- font-weight: bold;
10
- pointer-events: none;
11
- }
12
- </style>
1
+ <span class="chip variant-filled-tertiary">
2
+ <slot />
3
+ </span>
4
+
5
+ <style>
6
+ .chip {
7
+ border-radius: 1em;
8
+ margin: 0.25em;
9
+ font-weight: bold;
10
+ pointer-events: none;
11
+ background-color: rgb(var(--color-tertiary-500) / var(--tw-bg-opacity));
12
+ }
13
+ </style>
@@ -11,8 +11,8 @@ onMount(() => {
11
11
  );
12
12
  observer.observe(stickyElem);
13
13
  });
14
- </script>
15
-
16
- <span bind:this={stickyElem}>
17
- <slot/>
18
- </span>
14
+ </script>
15
+
16
+ <span bind:this={stickyElem}>
17
+ <slot/>
18
+ </span>
@@ -1,160 +1,163 @@
1
- <script>
2
- import MailIcon from "../assets/icons/mail.svg";
3
- import GithubIcon from "../assets/icons/github-mark.svg";
4
- import { ItchLogoHotLink } from "../consts";
5
- import LinkedinIcon from "../assets/icons/linkedin.svg";
6
- import { onMount } from "svelte";
7
-
8
- export let isSmallVersion = false;
9
- export let email = "turnipxenon@gmail.com";
10
- export let linkedinSlug = "turnip-xenon";
11
- export let isSlot = false;
12
-
13
- let shouldShowExtra = false;
14
- const style = `
15
- --preferred-justify-content: ${isSlot ? "flex-start" : "center"};
16
- --preferred-overall-margin-bottom: ${isSlot ? "0" : "0.75lh"};
17
- `;
18
-
19
- onMount(() => {
20
- shouldShowExtra = window.screen.availWidth >= 440;
21
- });
22
- </script>
23
-
24
- <div class="socials" class:isSmall={isSmallVersion} style={style} data-nosnippet>
25
- <button type="button" class="social-button turnip-button"
26
- role="link"
27
- title="https://github.com/TurnipXenon"
28
- on:click={() => window.open("https://github.com/TurnipXenon")}>
29
- <img src={GithubIcon} alt="github icon">
30
- {#if (!isSmallVersion)}
31
- <span>TurnipXenon</span>
32
- {/if}
33
- </button>
34
- <button type="button" class="social-button turnip-button"
35
- role="link"
36
- title={`https://www.linkedin.com/in/${linkedinSlug}/`}
37
- on:click={() => window.open(`https://www.linkedin.com/in/${linkedinSlug}/`)}>
38
- <img src={LinkedinIcon} alt="linkedikn icon">
39
- {#if (!isSmallVersion)}
40
- <span>{linkedinSlug}</span>
41
- {/if}
42
- </button>
43
- <button type="button" class="social-button turnip-button"
44
- role="link"
45
- title={`mailto:${email}`}
46
- on:click={() => window.open(`mailto:${email}`)}>
47
- <img src={MailIcon} alt="mail icon" />
48
- {#if (!isSmallVersion)}
49
- <span>{email}</span>
50
- {/if}
51
- </button>
52
- {#if (shouldShowExtra)}
53
- <button type="button" class="social-button turnip-button"
54
- role="link"
55
- title="https://turnipxenon.itch.io/"
56
- on:click={() => window.open("https://turnipxenon.itch.io/")}>
57
- <img src={ItchLogoHotLink} alt="itch icon">
58
- {#if (!isSmallVersion)}
59
- <span>TurnipXenon</span>
60
- {/if}
61
- </button>
62
- {/if}
63
- </div>
64
-
65
- <style>
66
- :is(.dark .social-button) {
67
- --tw-bg-opacity: 1;
68
- background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
69
- color: rgb(var(--on-primary));
70
- }
71
-
72
- .social-button:disabled {
73
- cursor: not-allowed;
74
- opacity: 0.5;
75
- }
76
-
77
- .social-button:disabled:hover {
78
- --tw-brightness: brightness(1);
79
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
80
- }
81
-
82
- .social-button:disabled:active {
83
- --tw-scale-x: 1;
84
- --tw-scale-y: 1;
85
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
86
- }
87
-
88
- .social-button {
89
- font-size: 1rem;
90
- line-height: 1.5rem;
91
- padding-left: 1.25rem;
92
- padding-right: 1.25rem;
93
- padding-top: 9px;
94
- padding-bottom: 9px;
95
- white-space: nowrap;
96
- text-align: center;
97
- display: inline-flex;
98
- align-items: center;
99
- justify-content: center;
100
- transition-property: all;
101
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
102
- transition-duration: 150ms;
103
- border-radius: var(--theme-rounded-base);
104
- }
105
-
106
- .social-button > :not([hidden]) ~ :not([hidden]) {
107
- --tw-space-x-reverse: 0;
108
- margin-right: calc(0.5rem * var(--tw-space-x-reverse));
109
- margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
110
- }
111
-
112
- .social-button:hover {
113
- --tw-brightness: brightness(1.15);
114
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
115
- }
116
-
117
- .social-button:active {
118
- --tw-scale-x: 95%;
119
- --tw-scale-y: 95%;
120
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
121
- --tw-brightness: brightness(.9);
122
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
123
- }
124
-
125
- .social-button {
126
- --tw-bg-opacity: 1;
127
- background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
128
- color: rgb(var(--on-primary));
129
- }
130
-
131
- :is(.dark .social-button) {
132
- --tw-bg-opacity: 1;
133
- background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
134
- color: rgb(var(--on-primary));
135
- }
136
-
137
- button > img {
138
- max-height: 1lh;
139
- }
140
-
141
- button {
142
- min-width: 0;
143
- min-height: 0;
144
- }
145
-
146
- .socials {
147
- display: flex;
148
- flex-wrap: wrap;
149
- justify-content: var(--preferred-justify-content);
150
- }
151
-
152
- .socials > button {
153
- margin: 0 0.5em var(--preferred-overall-margin-bottom);
154
- }
155
-
156
- .socials.isSmall > button {
157
- margin-left: 0.25em;
158
- margin-right: 0.25em;
159
- }
1
+ <script>
2
+ export let isSmallVersion = false;
3
+ export let email = "turnipxenon@gmail.com";
4
+ export let linkedinSlug = "turnip-xenon";
5
+ export let isSlot = false;
6
+
7
+ import { ItchLogoHotLink } from "../consts";
8
+ import { onMount } from "svelte";
9
+ import { scale } from "svelte/transition";
10
+
11
+ import MailIcon from "../assets/icons/mail.svg";
12
+ import GithubIcon from "../assets/icons/github-mark.svg";
13
+ import LinkedinIcon from "../assets/icons/linkedin.svg";
14
+
15
+ let shouldShowExtra = false;
16
+ const style = `
17
+ --preferred-justify-content: ${isSlot ? "flex-start" : "center"};
18
+ --preferred-overall-margin-bottom: ${isSlot ? "0" : "0.75lh"};
19
+ `;
20
+
21
+ onMount(() => {
22
+ shouldShowExtra = window.screen.availWidth >= 440;
23
+ });
24
+ </script>
25
+
26
+ <div class="socials" class:isSmall={isSmallVersion} style={style} data-nosnippet>
27
+ <button type="button" class="social-button turnip-button"
28
+ role="link"
29
+ title="https://github.com/TurnipXenon"
30
+ on:click={() => window.open("https://github.com/TurnipXenon")}>
31
+ <img src={GithubIcon} alt="github icon">
32
+ {#if (!isSmallVersion)}
33
+ <span>TurnipXenon</span>
34
+ {/if}
35
+ </button>
36
+ <button type="button" class="social-button turnip-button"
37
+ role="link"
38
+ title={`https://www.linkedin.com/in/${linkedinSlug}/`}
39
+ on:click={() => window.open(`https://www.linkedin.com/in/${linkedinSlug}/`)}>
40
+ <img src={LinkedinIcon} alt="linkedikn icon">
41
+ {#if (!isSmallVersion)}
42
+ <span>{linkedinSlug}</span>
43
+ {/if}
44
+ </button>
45
+ <button type="button" class="social-button turnip-button"
46
+ role="link"
47
+ title={`mailto:${email}`}
48
+ on:click={() => window.open(`mailto:${email}`)}>
49
+ <img src={MailIcon} alt="mail icon" />
50
+ {#if (!isSmallVersion)}
51
+ <span>{email}</span>
52
+ {/if}
53
+ </button>
54
+ {#if (shouldShowExtra)}
55
+ <button type="button" class="social-button turnip-button"
56
+ role="link"
57
+ title="https://turnipxenon.itch.io/"
58
+ transition:scale
59
+ on:click={() => window.open("https://turnipxenon.itch.io/")}>
60
+ <img src={ItchLogoHotLink} alt="itch icon">
61
+ {#if (!isSmallVersion)}
62
+ <span>TurnipXenon</span>
63
+ {/if}
64
+ </button>
65
+ {/if}
66
+ </div>
67
+
68
+ <style>
69
+ :is(.dark .social-button) {
70
+ --tw-bg-opacity: 1;
71
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
72
+ color: rgb(var(--on-primary));
73
+ }
74
+
75
+ .social-button:disabled {
76
+ cursor: not-allowed;
77
+ opacity: 0.5;
78
+ }
79
+
80
+ .social-button:disabled:hover {
81
+ --tw-brightness: brightness(1);
82
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
83
+ }
84
+
85
+ .social-button:disabled:active {
86
+ --tw-scale-x: 1;
87
+ --tw-scale-y: 1;
88
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
89
+ }
90
+
91
+ .social-button {
92
+ font-size: 1rem;
93
+ line-height: 1.5rem;
94
+ padding-left: 1.25rem;
95
+ padding-right: 1.25rem;
96
+ padding-top: 9px;
97
+ padding-bottom: 9px;
98
+ white-space: nowrap;
99
+ text-align: center;
100
+ display: inline-flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ transition-property: all;
104
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
105
+ transition-duration: 150ms;
106
+ border-radius: var(--theme-rounded-base);
107
+ }
108
+
109
+ .social-button > :not([hidden]) ~ :not([hidden]) {
110
+ --tw-space-x-reverse: 0;
111
+ margin-right: calc(0.5rem * var(--tw-space-x-reverse));
112
+ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
113
+ }
114
+
115
+ .social-button:hover {
116
+ --tw-brightness: brightness(1.15);
117
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
118
+ }
119
+
120
+ .social-button:active {
121
+ --tw-scale-x: 95%;
122
+ --tw-scale-y: 95%;
123
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
124
+ --tw-brightness: brightness(.9);
125
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
126
+ }
127
+
128
+ .social-button {
129
+ --tw-bg-opacity: 1;
130
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
131
+ color: rgb(var(--on-primary));
132
+ }
133
+
134
+ :is(.dark .social-button) {
135
+ --tw-bg-opacity: 1;
136
+ background-color: rgb(var(--color-primary-500) / var(--tw-bg-opacity));
137
+ color: rgb(var(--on-primary));
138
+ }
139
+
140
+ button > img {
141
+ max-height: 1lh;
142
+ }
143
+
144
+ button {
145
+ min-width: 0;
146
+ min-height: 0;
147
+ }
148
+
149
+ .socials {
150
+ display: flex;
151
+ flex-wrap: wrap;
152
+ justify-content: var(--preferred-justify-content);
153
+ }
154
+
155
+ .socials > button {
156
+ margin: 0 0.5em var(--preferred-overall-margin-bottom);
157
+ }
158
+
159
+ .socials.isSmall > button {
160
+ margin-left: 0.25em;
161
+ margin-right: 0.25em;
162
+ }
160
163
  </style>
@@ -13,24 +13,24 @@ onMount(() => {
13
13
  );
14
14
  observer.observe(stickyElem);
15
15
  });
16
- </script>
17
-
18
- <span transition:fly={{y: -100}}>
19
- {#if (isFirst && !isSticky)}
20
- <!-- intentionally empty -->
21
- {:else if (isSticky)}
22
- {" | "}
23
- {:else }
24
- <br>
25
- {/if}
26
- <span class="sticky-div" bind:this={stickyElem}>
27
- <slot/>
28
- </span>
29
- </span>
30
-
31
- <style>
32
- .sticky-div {
33
- position: sticky;
34
- top: -1px;
35
- }
16
+ </script>
17
+
18
+ <span transition:fly={{y: -100}}>
19
+ {#if (isFirst && !isSticky)}
20
+ <!-- intentionally empty -->
21
+ {:else if (isSticky)}
22
+ {" | "}
23
+ {:else }
24
+ <br>
25
+ {/if}
26
+ <span class="sticky-div" bind:this={stickyElem}>
27
+ <slot/>
28
+ </span>
29
+ </span>
30
+
31
+ <style>
32
+ .sticky-div {
33
+ position: sticky;
34
+ top: -1px;
35
+ }
36
36
  </style>
@@ -55,12 +55,12 @@ onMount(() => {
55
55
  });
56
56
  $:
57
57
  attachGibberish(gibberishParent);
58
- </script>
59
-
60
- {#if toggle === ToggleableContentType.Default}
61
- <slot />
62
- {:else if (ToggleableContentType.Gibberish === toggle)}
63
- <div bind:this={defaultSlot} style={`visibility: ${gibberishState === GibberishState.Binded}`}>
64
- <slot />
65
- </div>
58
+ </script>
59
+
60
+ {#if toggle === ToggleableContentType.Default}
61
+ <slot />
62
+ {:else if (ToggleableContentType.Gibberish === toggle)}
63
+ <div bind:this={defaultSlot} style={`visibility: ${gibberishState === GibberishState.Binded}`}>
64
+ <slot />
65
+ </div>
66
66
  {/if}
@@ -18,13 +18,6 @@ let shouldDisplaySocialIcons = writable(false);
18
18
  {@html `<script>${autoModeWatcher.toString()} autoModeWatcher();</script>`}
19
19
  </svelte:head>
20
20
 
21
- <!--todo: turn off hidden when it's time-->
22
- <!--<button type="button" class="fab" on:click={()=>{-->
23
- <!-- enableDialogueOverlay.set(!enableDialogueOverlayValue);-->
24
- <!--}}>-->
25
- <!-- <img src={FABIcon} alt="interactive floating action button represented as a turnip">-->
26
- <!--</button>-->
27
-
28
21
  <AppShell>
29
22
  <svelte:fragment slot="header">
30
23
  <!-- App Bar -->
@@ -39,7 +32,7 @@ let shouldDisplaySocialIcons = writable(false);
39
32
  </div>
40
33
  {:else if $$slots.extraLeadingIcons}
41
34
  <div hidden>
42
- <slot name="extraLeadingIcons" />
35
+ <slot name="s" />
43
36
  </div>
44
37
  {/if}
45
38
  </svelte:fragment>
@@ -8,6 +8,7 @@ declare const __propDef: {
8
8
  };
9
9
  slots: {
10
10
  extraLeadingIcons: {};
11
+ s: {};
11
12
  default: {
12
13
  shouldDisplaySocialIcons: import("svelte/store").Writable<boolean>;
13
14
  };
@@ -2,9 +2,10 @@
2
2
  import RandomizedBackground from "../RandomizedBackground.svelte";
3
3
  import { page } from "$app/stores";
4
4
  import { enableBackground } from "../../store";
5
- import DialogOverlay from "../DialogOverlay.svelte";
6
5
  import AresLogo from "../../assets/characters/ares/ares_logo.webp";
6
+ import FABIcon from "../../assets/placeholder/placeholder_circle.png";
7
7
  import { enableDialogueOverlay } from "../dialog_manager/DialogManagerStore";
8
+ import Toast from "./toast/Toast.svelte";
8
9
  let pages = [];
9
10
  const updateBreadcrumb = (pathname) => {
10
11
  pages = [];
@@ -46,18 +47,28 @@ enableDialogueOverlay.subscribe((value) => {
46
47
  {@html `<script>${autoModeWatcher.toString()} autoModeWatcher();</script>`}
47
48
  </svelte:head>
48
49
 
50
+ <!--todo: turn off hidden when it's time-->
51
+ <button type="button" class="fab" on:click={()=>{
52
+ enableDialogueOverlay.set(!enableDialogueOverlayValue);
53
+ }}>
54
+ <img src={FABIcon} alt="interactive floating action button represented as a turnip">
55
+ </button>
56
+
49
57
  <AppShell>
50
58
  <svelte:fragment slot="header">
51
59
  <!-- App Bar -->
52
- <AppBar slotDefault="place-content-start" slotTrail="place-content-end">
60
+ <AppBar
61
+ background="app-shell-token"
62
+ slotDefault="place-content-start"
63
+ slotTrail="place-content-end">
53
64
  <svelte:fragment slot="lead">
54
65
  <!--TODO: add logo or something for the lead in layout-->
55
66
  <img
56
- alt="Ares's head titled towards the left with his tongue out and winking"
57
- class="ares-logo"
58
- src={AresLogo}
67
+ alt="Ares's head titled towards the left with his tongue out and winking"
68
+ class="ares-logo"
69
+ src={AresLogo}
59
70
  />
60
- <span class="mr-2"/>
71
+ <span class="mr-2" />
61
72
  <ol class="breadcrumb">
62
73
  {#each pages as crumb, i}
63
74
  {#if i < pages.length - 1}
@@ -72,24 +83,30 @@ enableDialogueOverlay.subscribe((value) => {
72
83
  </ol>
73
84
  </svelte:fragment>
74
85
  <svelte:fragment slot="trail">
75
- <LightSwitch bgLight="bg-surface-400"/>
86
+ <LightSwitch bgLight="bg-surface-400" />
76
87
  </svelte:fragment>
77
88
  </AppBar>
78
89
  </svelte:fragment>
79
90
 
80
- <RandomizedBackground enable={enableBackgroundValue}/>
81
-
82
- {#if enableDialogueOverlayValue}
83
- <!-- Page Route Content -->
84
- <div class="default-page-container">
85
- <slot/>
86
- <div class="footer-space"/>
87
- </div>
88
- <DialogOverlay/>
89
- {:else}
90
- <DialogOverlay/>
91
- <slot/>
92
- {/if}
91
+ <RandomizedBackground enable={enableBackgroundValue} />
92
+
93
+ <Toast></Toast>
94
+
95
+ <div class="default-page-container">
96
+ <slot />
97
+ <div class="footer-space" />
98
+ </div>
99
+ <!--{#if enableDialogueOverlayValue}-->
100
+ <!-- &lt;!&ndash; Page Route Content &ndash;&gt;-->
101
+ <!-- <div class="default-page-container">-->
102
+ <!-- <slot />-->
103
+ <!-- <div class="footer-space" />-->
104
+ <!-- </div>-->
105
+ <!-- <DialogOverlay />-->
106
+ <!--{:else}-->
107
+ <!-- <DialogOverlay />-->
108
+ <!-- <slot />-->
109
+ <!--{/if}-->
93
110
  </AppShell>
94
111
 
95
112
  <style>
@@ -97,6 +114,19 @@ enableDialogueOverlay.subscribe((value) => {
97
114
  --dialog-left-pad: clamp(0em, 5vw, 2em);
98
115
  --dialog-box-width: min(calc(50em + 4em), calc(100vw - var(--dialog-left-pad) - var(--theme-border-base)));
99
116
  --dialog-box-height: clamp(15em, 50vw, 18em);
117
+
118
+ /** FAB icon margin/position calculation origin:
119
+ Criteria:
120
+ - We want at mobile (360px) our margin to be at 1em (16px)
121
+ - We want at web (1960px) our margin to be at 2em (32px)
122
+
123
+ A useful scaling factor might vw. At 360px, 16px would be around 4.44vw (360/16).
124
+ At 360px: margin is at 16px or 1em.
125
+ At 1960px: 4.44vw is at 87px but that will be clamped to 32px or 2em.
126
+ The calculation implies that the natural point that the margin becomes 2em is clamped on
127
+ wider screens is at 727px.
128
+ */
129
+ --fab-margin: clamp(1em, 4.44vw, 2em);
100
130
  }
101
131
 
102
132
  .default-page-container {
@@ -184,4 +214,19 @@ enableDialogueOverlay.subscribe((value) => {
184
214
  .breadcrumb li:nth-last-child(1) {
185
215
  display: block;
186
216
  }
217
+
218
+ .fab {
219
+ position: fixed;
220
+ bottom: var(--fab-margin);
221
+ width: 4em;
222
+ border-radius: 50%;
223
+ }
224
+
225
+ .fab:dir(ltr) {
226
+ right: var(--fab-margin);
227
+ }
228
+
229
+ .fab:dir(rtl) {
230
+ left: var(--fab-margin);
231
+ }
187
232
  </style>
@@ -0,0 +1,8 @@
1
+ import DefaultToastBody from "./DefaultToastBody.svelte";
2
+ export interface Props {
3
+ message: string;
4
+ }
5
+ export interface DefaultToastPair {
6
+ component: typeof DefaultToastBody;
7
+ props: Props;
8
+ }
@@ -0,0 +1 @@
1
+ import DefaultToastBody from "./DefaultToastBody.svelte";