@turnipxenon/pineapple 5.0.0-alpha.9 → 5.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 (49) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/remoteIndex.remote.d.ts +2 -0
  5. package/dist/remoteIndex.remote.d.ts.map +1 -0
  6. package/dist/remoteIndex.remote.js +2 -0
  7. package/dist/styles/app.css +0 -82
  8. package/dist/styles/tailwind.css +0 -12
  9. package/dist/styles/turnip-theme.css +1 -0
  10. package/dist/ui/components/FourPartCard.svelte +5 -0
  11. package/dist/ui/components/MeltToaster/MeltToaster.svelte +4 -1
  12. package/dist/ui/components/MeltToaster/MeltToaster.svelte.d.ts.map +1 -1
  13. package/dist/ui/components/NestedNavigation.svelte +0 -1
  14. package/dist/ui/components/NestedNavigation.svelte.d.ts.map +1 -1
  15. package/dist/ui/elements/CodeBlock/CodeBlock.svelte +161 -18
  16. package/dist/ui/elements/CodeBlock/CodeBlock.svelte.d.ts.map +1 -1
  17. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +4 -4
  18. package/dist/ui/modules/projects/ThisWebpage.svelte +9 -0
  19. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts.map +1 -1
  20. package/dist/ui/modules/universal-overlay/SettingsPanel.svelte +29 -24
  21. package/dist/ui/modules/universal-overlay/SettingsPanel.svelte.d.ts.map +1 -1
  22. package/dist/ui/modules/universal-overlay/UniversalOverlay.svelte +7 -2
  23. package/dist/ui/modules/universal-overlay/UniversalOverlay.svelte.d.ts.map +1 -1
  24. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte +32 -21
  25. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +1 -1
  26. package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts.map +1 -1
  27. package/dist/ui/templates/PinyaPageLayout/pinyaPageLayoutRunes.svelte.d.ts.map +1 -1
  28. package/dist/ui/templates/blog_template/BlogTemplate.svelte +5 -2
  29. package/dist/ui/templates/blog_template/BlogTemplate.svelte.d.ts.map +1 -1
  30. package/dist/ui/templates/pinya-base/PinyaBase.svelte +45 -4
  31. package/dist/ui/templates/pinya-base/PinyaBase.svelte.d.ts +15 -3
  32. package/dist/ui/templates/pinya-base/PinyaBase.svelte.d.ts.map +1 -1
  33. package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte +1 -0
  34. package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte.d.ts +27 -0
  35. package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte.d.ts.map +1 -0
  36. package/dist/util/context/PineappleBaseContext.svelte +20 -8
  37. package/dist/util/context/PineappleBaseContext.svelte.d.ts.map +1 -1
  38. package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts +21 -13
  39. package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts.map +1 -1
  40. package/dist/util/context/pineappleBaseContextDefinitions.svelte.js +21 -19
  41. package/dist/util/getParsnipData.remote.d.ts +12 -0
  42. package/dist/util/getParsnipData.remote.d.ts.map +1 -0
  43. package/dist/util/getParsnipData.remote.js +3 -0
  44. package/dist/util/localStore.svelte.d.ts +10 -3
  45. package/dist/util/localStore.svelte.d.ts.map +1 -1
  46. package/dist/util/localStore.svelte.js +56 -38
  47. package/dist/util/util.js +1 -1
  48. package/package.json +17 -8
  49. package/src/lib/styles/app.css +0 -82
package/dist/index.d.ts CHANGED
@@ -13,4 +13,5 @@ export { default as BlogTemplate } from "./ui/templates/blog_template/BlogTempla
13
13
  export { default as UniversalOverlay } from "./ui/modules/universal-overlay/UniversalOverlay.svelte";
14
14
  export { dialogManager } from "./components/dialog_manager/DialogManager";
15
15
  export * from "./modules/parsnip/index";
16
+ export * from "./util/context/pineappleBaseContextDefinitions.svelte";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gDAAgD,CAAC;AAC/D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gDAAgD,CAAC;AAC/D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,YAAY,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAE7E,cAAc,yBAAyB,CAAC;AACxC,cAAc,uDAAuD,CAAA"}
package/dist/index.js CHANGED
@@ -13,3 +13,4 @@ export { default as BlogTemplate } from "./ui/templates/blog_template/BlogTempla
13
13
  export { default as UniversalOverlay } from "./ui/modules/universal-overlay/UniversalOverlay.svelte";
14
14
  export { dialogManager } from "./components/dialog_manager/DialogManager";
15
15
  export * from "./modules/parsnip/index";
16
+ export * from "./util/context/pineappleBaseContextDefinitions.svelte";
@@ -0,0 +1,2 @@
1
+ export * from "./util/getParsnipData.remote";
2
+ //# sourceMappingURL=remoteIndex.remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteIndex.remote.d.ts","sourceRoot":"","sources":["../src/lib/remoteIndex.remote.ts"],"names":[],"mappings":"AAEA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ // noinspection JSUnusedGlobalSymbols
2
+ export * from "./util/getParsnipData.remote";
@@ -76,88 +76,6 @@ a.external-link {
76
76
  }
77
77
  }
78
78
 
79
- /*https://shiki.style/guide/dual-themes*/
80
- html.dark .shiki,
81
- html.dark .shiki span {
82
- color: var(--shiki-dark) !important;
83
- background-color: var(--shiki-dark-bg) !important;
84
- /* Optional, if you also want font styles */
85
- font-style: var(--shiki-dark-font-style) !important;
86
- font-weight: var(--shiki-dark-font-weight) !important;
87
- text-decoration: var(--shiki-dark-text-decoration) !important;
88
- }
89
-
90
- .inline-code {
91
- background-color: aliceblue;
92
- padding: 0.2rem;
93
- border-radius: 0.2rem;
94
- }
95
-
96
- html.dark .inline-code {
97
- background-color: #303446;
98
- }
99
-
100
- .shiki {
101
- span {
102
- white-space: pre-wrap;
103
- word-wrap: break-word;
104
- }
105
- }
106
-
107
- /* region shiki copy button */
108
- pre:has(code) {
109
- position: relative;
110
- }
111
-
112
- pre button.copy {
113
- position: absolute;
114
- right: 16px;
115
- top: 16px;
116
- height: 28px;
117
- width: 28px;
118
- padding: 0;
119
- display: flex;
120
-
121
- & span {
122
- width: 100%;
123
- aspect-ratio: 1 / 1;
124
- background-repeat: no-repeat;
125
- background-position: center;
126
- background-size: cover;
127
- }
128
-
129
- & .ready {
130
- background-image: url("$pkg/assets/icons/icon-copy-light-contrast.svg");
131
- /*todo*/
132
- /*@variant dark {*/
133
- /* background-image: url("$pkg/assets/icons/icon-copy-dark-contrast.svg");*/
134
- /*}*/
135
- }
136
-
137
- & .success {
138
- display: none;
139
- background-image: url("$pkg/assets/icons/icon-check-light-contrast.svg");
140
-
141
- /*todo: migration*/
142
- /*@variant dark {*/
143
- /* background-image: url("$pkg/assets/icons/icon-check-dark-contrast.svg");*/
144
- /*}*/
145
- }
146
-
147
- &.copied {
148
- & .success {
149
- display: block;
150
- }
151
-
152
- & .ready {
153
- display: none;
154
- }
155
- }
156
- }
157
-
158
- /* endregion shiki copy button */
159
-
160
-
161
79
  ul + h2, ol + h2 {
162
80
  margin-top: 1rlh;
163
81
  }
@@ -536,9 +536,6 @@
536
536
  .ig-textarea::placeholder {
537
537
  color:var(--color-surface-700-300)
538
538
  }
539
- ::selection {
540
- background-color:#73737380
541
- }
542
539
  :disabled,
543
540
  .disabled {
544
541
  opacity:.5
@@ -2715,15 +2712,6 @@ a.external-link {
2715
2712
  #toast-progress::-moz-progress-bar {
2716
2713
  background:rgba(var(--color-secondary-500))
2717
2714
  }
2718
- html.dark .shiki,
2719
- html.dark .shiki span {
2720
- color:var(--shiki-dark)!important;
2721
- background-color:var(--shiki-dark-bg)!important;
2722
- font-style:var(--shiki-dark-font-style)!important;
2723
- font-weight:var(--shiki-dark-font-weight)!important;
2724
- -webkit-text-decoration:var(--shiki-dark-text-decoration)!important;
2725
- text-decoration:var(--shiki-dark-text-decoration)!important
2726
- }
2727
2715
  .inline-code {
2728
2716
  background-color:#f0f8ff;
2729
2717
  border-radius:.2rem;
@@ -217,6 +217,7 @@
217
217
 
218
218
  html.dark {
219
219
  --header-color: var(--color-primary-100);
220
+ --body-background-color: var(--body-background-color-dark);
220
221
  /*todo: migration*/
221
222
  /*@variant turnip {*/
222
223
  /* --border-card: 0;*/
@@ -51,6 +51,11 @@
51
51
  :global {
52
52
  .pinya-four-part-card.pinya-card {
53
53
  padding: 0;
54
+
55
+ .card-header-cover > img {
56
+ border-top-right-radius: var(--radius-xl);
57
+ border-top-left-radius: var(--radius-xl);
58
+ }
54
59
  }
55
60
  }
56
61
  </style>
@@ -11,6 +11,7 @@
11
11
  </script>
12
12
 
13
13
  <script lang="ts">
14
+ import { browser } from "$app/environment";
14
15
  import { onDestroy, onMount } from "svelte";
15
16
 
16
17
  let toasterRoot: HTMLDivElement;
@@ -39,7 +40,9 @@
39
40
  });
40
41
 
41
42
  onDestroy(() => {
42
- if (observer) observer.disconnect();
43
+ if (browser) {
44
+ if (observer) observer.disconnect();
45
+ }
43
46
  });
44
47
  </script>
45
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"MeltToaster.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/components/MeltToaster/MeltToaster.svelte.ts"],"names":[],"mappings":"AAGC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmB,CAAC;AA4D1C;;;;GAIG;AACH,QAAA,MAAM,WAAW,2DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MeltToaster.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/components/MeltToaster/MeltToaster.svelte.ts"],"names":[],"mappings":"AAGC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmB,CAAC;AAgE1C;;;;GAIG;AACH,QAAA,MAAM,WAAW,2DAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -48,7 +48,6 @@
48
48
  let bestMatch: string | null = null;
49
49
 
50
50
  layout.forEach(site => {
51
- console.log(`Current path (${currentPath}) vs layout path (${site.relativeLink})`);
52
51
  const link = site.relativeLink;
53
52
  if (!link) {
54
53
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"NestedNavigation.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/components/NestedNavigation.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAKrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrD,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;CAEvD,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;AAqGhD,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"NestedNavigation.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/components/NestedNavigation.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAKrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGrD,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;CAEvD,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;AAoGhD,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
@@ -1,23 +1,25 @@
1
1
  <!-- @component Code Block based on: https://shiki.style/ and https://www.skeleton.dev/docs/integrations/code-block/svelte/ -->
2
2
 
3
3
  <script module lang="ts">
4
+ import { transformerNotationDiff } from "@shikijs/transformers";
4
5
  import { addCopyButton } from "shiki-transformer-copy-button";
5
6
  import { createHighlighterCoreSync } from "shiki/core";
6
7
  import { createJavaScriptRegexEngine } from "shiki/engine/javascript";
7
- // Themes
8
- // https://shiki.style/themes
9
- import themeLight from "shiki/themes/catppuccin-latte.mjs";
10
- import themeDark from "shiki/themes/catppuccin-frappe.mjs";
11
8
  // Languages
12
9
  // https://shiki.style/languages
13
- import console from "shiki/langs/console.mjs";
14
- import html from "shiki/langs/html.mjs";
10
+ import shikiConsole from "shiki/langs/console.mjs";
15
11
  import css from "shiki/langs/css.mjs";
12
+ import html from "shiki/langs/html.mjs";
16
13
  import js from "shiki/langs/javascript.mjs";
17
- import ts from "shiki/langs/typescript.mjs";
14
+ import json from "shiki/langs/json.mjs";
18
15
  import markdown from "shiki/langs/markdown.mjs";
19
- import xml from "shiki/langs/xml.mjs";
20
16
  import svelte from "shiki/langs/svelte.mjs";
17
+ import ts from "shiki/langs/typescript.mjs";
18
+ import xml from "shiki/langs/xml.mjs";
19
+ // Themes
20
+ // https://shiki.style/themes
21
+ import themeDark from "shiki/themes/catppuccin-frappe.mjs";
22
+ import themeLight from "shiki/themes/catppuccin-latte.mjs";
21
23
 
22
24
  // https://shiki.style/guide/sync-usage
23
25
  const shiki = createHighlighterCoreSync({
@@ -25,11 +27,12 @@
25
27
  // Implement your import theme.
26
28
  themes: [themeLight, themeDark],
27
29
  // Implement your imported and supported languages.
28
- langs: [console, html, css, js, ts, markdown, xml, svelte]
30
+ langs: [shikiConsole, html, css, js, ts, markdown, xml, svelte, json]
29
31
  });
30
32
  </script>
31
33
 
32
34
  <script lang="ts">
35
+ import { onMount } from "svelte";
33
36
  import type { CodeBlockProps } from "./CodeBlockProps";
34
37
 
35
38
  let {
@@ -54,6 +57,7 @@
54
57
  dark: "catppuccin-frappe"
55
58
  },
56
59
  transformers: [
60
+ transformerNotationDiff(),
57
61
  addCopyButton({ toggle: 2000 })
58
62
  ]
59
63
  }));
@@ -67,13 +71,152 @@
67
71
  </div>
68
72
 
69
73
  <style>
70
- :global {
71
- .pinya-code-block {
72
- margin-bottom: 1rlh;
73
- }
74
-
75
- h2 + .pinya-code-block {
76
- margin-top: 0.5rlh;
77
- }
78
- }
74
+ :global {
75
+ .pinya-code-block {
76
+ margin-bottom: 1rlh;
77
+ }
78
+
79
+ /*https://shiki.style/guide/dual-themes*/
80
+
81
+ html.dark .shiki,
82
+ html.dark .shiki > span {
83
+ color: var(--shiki-dark);
84
+ background-color: var(--shiki-dark-bg);
85
+ /* Optional, if you also want font styles */
86
+ font-style: var(--shiki-dark-font-style);
87
+ font-weight: var(--shiki-dark-font-weight);
88
+ text-decoration: var(--shiki-dark-text-decoration);
89
+ }
90
+
91
+
92
+ html.dark .shiki {
93
+ color: var(--shiki-dark) !important;
94
+ background-color: var(--shiki-dark-bg) !important;
95
+ font-style: var(--shiki-dark-font-style) !important;
96
+ font-weight: var(--shiki-dark-font-weight) !important;
97
+ -webkit-text-decoration: var(--shiki-dark-text-decoration) !important;
98
+ text-decoration: var(--shiki-dark-text-decoration) !important
99
+ }
100
+
101
+ html.dark .shiki.has-diff span.diff.add {
102
+ background-color: rgba(0, 255, 0, 0.05);
103
+ }
104
+
105
+ .inline-code {
106
+ background-color: aliceblue;
107
+ padding: 0.2rem;
108
+ border-radius: 0.2rem;
109
+ }
110
+
111
+ .shiki {
112
+ span {
113
+ white-space: pre-wrap;
114
+ word-wrap: break-word;
115
+ }
116
+
117
+ &.has-diff {
118
+ padding-inline-start: 0;
119
+ padding-inline-end: 0;
120
+
121
+ code {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 0.2lh;
125
+
126
+ & > span {
127
+ display: flex;
128
+ flex-wrap: wrap;
129
+ padding-inline-start: 2em;
130
+ padding-inline-end: 1em;
131
+ }
132
+ }
133
+
134
+ span.diff.remove {
135
+ background-color: rgba(255, 0, 0, 0.15);
136
+
137
+ &::before {
138
+ display: block;
139
+ position: absolute;
140
+ content: "-";
141
+ margin-inline-start: calc((var(--spacing) * -4) - 2em);
142
+ padding-inline-start: 1.75em;
143
+ font-weight: bold;
144
+ pointer-events: none;
145
+ }
146
+ }
147
+
148
+ span.diff.add {
149
+ background-color: rgba(0, 255, 0, 0.15);
150
+
151
+ &::before {
152
+ display: block;
153
+ position: absolute;
154
+ content: "+";
155
+ margin-inline-start: calc((var(--spacing) * -4) - 2em);
156
+ padding-inline-start: 1.75em;
157
+ font-weight: bold;
158
+ pointer-events: none;
159
+ }
160
+ }
161
+ }
162
+ }
163
+
164
+ /* region shiki copy button */
165
+
166
+ pre:has(code) {
167
+ position: relative;
168
+ }
169
+
170
+ pre button.copy {
171
+ position: absolute;
172
+ right: 16px;
173
+ top: 16px;
174
+ height: 28px;
175
+ width: 28px;
176
+ padding: 0;
177
+ display: flex;
178
+
179
+ & span {
180
+ width: 100%;
181
+ aspect-ratio: 1 / 1;
182
+ background-repeat: no-repeat;
183
+ background-position: center;
184
+ background-size: cover;
185
+ }
186
+
187
+ & .ready {
188
+ background-image: url("$pkg/assets/icons/icon-copy-light-contrast.svg");
189
+ /*todo*/
190
+ /*@variant dark {*/
191
+ /* background-image: url("$pkg/assets/icons/icon-copy-dark-contrast.svg");*/
192
+ /*}*/
193
+ }
194
+
195
+ & .success {
196
+ display: none;
197
+ background-image: url("$pkg/assets/icons/icon-check-light-contrast.svg");
198
+
199
+ /*todo: migration*/
200
+ /*@variant dark {*/
201
+ /* background-image: url("$pkg/assets/icons/icon-check-dark-contrast.svg");*/
202
+ /*}*/
203
+ }
204
+
205
+ &.copied {
206
+ & .success {
207
+ display: block;
208
+ }
209
+
210
+ & .ready {
211
+ display: none;
212
+ }
213
+ }
214
+ }
215
+
216
+ /* endregion shiki copy button */
217
+
218
+ h2 + .pinya-code-block {
219
+ margin-top: 0.5rlh;
220
+ }
221
+ }
79
222
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/CodeBlock/CodeBlock.svelte.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA6CvD,kHAAkH;AAClH,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"CodeBlock.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/CodeBlock/CodeBlock.svelte.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA+CvD,kHAAkH;AAClH,QAAA,MAAM,SAAS,oDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -28,7 +28,7 @@
28
28
  inputValue: function() {
29
29
  return props.data.find((o) => o.value === value)?.label ?? "---";
30
30
  },
31
- onValueChange: onValueChangeBase ?? onValueChangeBaseImpl
31
+ onValueChange: onValueChangeBase ?? onValueChangeBaseImpl,
32
32
  });
33
33
 
34
34
  const filtered = $derived.by(() => {
@@ -46,11 +46,11 @@ Melt-based Combobox
46
46
  When migrating from Skeleton to Melt, change the value is no longer an array T[] but it's now T | undefined
47
47
  -->
48
48
 
49
- <div class={`pinya-combobox-wrapper ${props.class}`}>
49
+ <div class={`pinya-combobox-wrapper ${props.class}`} {...props}>
50
50
  <label {...combobox.label}>{props.label}</label>
51
51
  <div class="pinya-combobox-control">
52
- <input {...combobox.input} />
53
- <button class="size-[3rem]" {...combobox.trigger}>
52
+ <input {...combobox.input} disabled={props.disabled} />
53
+ <button class="size-[3rem]" {...combobox.trigger} disabled={props.disabled}>
54
54
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity: 0.5" class="size-[2rem] m-auto">
55
55
  <path d="m6 9 6 6 6-6"></path>
56
56
  </svg>
@@ -3,6 +3,7 @@
3
3
  <script module lang="ts">
4
4
  import GithubIcon from "../../../assets/icons/github-mark.svg";
5
5
  import ThisWebsiteFootage from "../../../assets/others/seaweed-showcase.mp4";
6
+ import LinkIcon from "../../../assets/icons/link-icon.svg";
6
7
  import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
7
8
  import { default as FourPartCard } from "../../components/FourPartCard.svelte";
8
9
  import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
@@ -62,6 +63,14 @@
62
63
  onclick={() => window.open("https://github.com/TurnipXenon/pineapple")}>
63
64
  <ImageIcon src={GithubIcon} class="long-btn-image" alt="github icon" />
64
65
  </PinyaButton>
66
+ <PinyaButton
67
+ data-nosnippet
68
+ buttonVariant={ButtonVariant.SmallIcon}
69
+ title="https://pineapple.turnipxenon.com/documentation"
70
+ onclick={() => window.open("https://pineapple.turnipxenon.com/documentation")}>
71
+ <ImageIcon src={LinkIcon} aria-hidden />
72
+ <span>pineapple.turnipxenon.com</span>
73
+ </PinyaButton>
65
74
  </section>
66
75
  </FourPartCard>
67
76
  {/snippet}
@@ -1 +1 @@
1
- {"version":3,"file":"ThisWebpage.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/projects/ThisWebpage.svelte.ts"],"names":[],"mappings":"AAKC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAMnG,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CA4ChG,CAAC;AAE7B,QAAA,MAAM,GAAG,iBAAiB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAS3B,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,WAAW;;kBAA+E,CAAC;AAC/E,KAAK,WAAW,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ThisWebpage.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/projects/ThisWebpage.svelte.ts"],"names":[],"mappings":"AAMC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAMnG,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CAgDhG,CAAC;AAE7B,QAAA,MAAM,GAAG,iBAAiB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAS3B,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,WAAW;;kBAA+E,CAAC;AAC/E,KAAK,WAAW,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,eAAe,WAAW,CAAC"}
@@ -13,6 +13,7 @@ TODO: delete GeneralSettingsModal.svelte
13
13
  import PineappleSwitch from "../../elements/PineappleSwitch.svelte";
14
14
 
15
15
  import LanguagePicker from "../modals/general-settings/LanguagePicker.svelte";
16
+ import { appState } from "../../templates/index";
16
17
  import {
17
18
  getEnableDialogPreferenceContext,
18
19
  getEnablePortraitContext
@@ -93,26 +94,30 @@ TODO: delete GeneralSettingsModal.svelte
93
94
  </div>
94
95
  </fieldset>
95
96
 
96
- <LanguagePicker />
97
-
98
- <div class="switch-default">
99
- <PineappleSwitch
100
- name="conversation-preference"
101
- bind:checked={$enableDialogPreference}>
102
- </PineappleSwitch>
103
- <label for="conversation-preference">
104
- Conversation preference: {$enableDialogPreference ? "Always on" : "Always off"}
105
- </label>
106
- </div>
107
- <div class="switch-default">
108
- <PineappleSwitch
109
- name="portrait-preference"
110
- bind:checked={$enablePortraitContext}>
111
- </PineappleSwitch>
112
- <label for="portrait-preference">
113
- Show conversation portrait: {$enablePortraitContext ? "Always on" : "Always off"}
114
- </label>
115
- </div>
97
+ {#if appState.isLanguagePickerAvailable}
98
+ <LanguagePicker />
99
+ {/if}
100
+
101
+ {#if appState.allowDialog}
102
+ <div class="switch-default">
103
+ <PineappleSwitch
104
+ name="conversation-preference"
105
+ bind:checked={enableDialogPreference.value}>
106
+ </PineappleSwitch>
107
+ <label for="conversation-preference">
108
+ Conversation preference: {enableDialogPreference.value ? "Always on" : "Always off"}
109
+ </label>
110
+ </div>
111
+ <div class="switch-default">
112
+ <PineappleSwitch
113
+ name="portrait-preference"
114
+ bind:checked={enablePortraitContext.value}>
115
+ </PineappleSwitch>
116
+ <label for="portrait-preference">
117
+ Show conversation portrait: {enablePortraitContext.value ? "Always on" : "Always off"}
118
+ </label>
119
+ </div>
120
+ {/if}
116
121
  </div>
117
122
 
118
123
  <style>
@@ -149,7 +154,7 @@ TODO: delete GeneralSettingsModal.svelte
149
154
 
150
155
  #field-flex {
151
156
  display: flex;
152
- flex-wrap: wrap;
157
+ flex-wrap: wrap;
153
158
  gap: 1rem;
154
159
  padding: 0.25lh 1rem;
155
160
  }
@@ -170,8 +175,8 @@ TODO: delete GeneralSettingsModal.svelte
170
175
  }
171
176
 
172
177
  .switch-default {
173
- display: flex;
174
- justify-items: center;
175
- gap: 1em;
178
+ display: flex;
179
+ justify-items: center;
180
+ gap: 1em;
176
181
  }
177
182
  </style>
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/SettingsPanel.svelte.ts"],"names":[],"mappings":"AAmHA;;;;GAIG;AACH,QAAA,MAAM,aAAa,2DAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SettingsPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/SettingsPanel.svelte.ts"],"names":[],"mappings":"AAyHA;;;;GAIG;AACH,QAAA,MAAM,aAAa,2DAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -50,6 +50,7 @@ See panels:
50
50
 
51
51
  dialogManager.currentReadableState.subscribe((value) => {
52
52
  isHidden = value === DialogState.Invisible;
53
+ console.log(value, DialogState.Invisible, isHidden)
53
54
  });
54
55
 
55
56
  dialogManager.update(0);
@@ -57,10 +58,10 @@ See panels:
57
58
  </script>
58
59
 
59
60
  <div class="dialog-elements"
60
- hidden={isHidden}
61
+ aria-hidden={hidePercent >= (99 * 0.4)}
61
62
  style="--hidePercentWidth: -{hidePercent}vw;
62
63
  --hidePercentHeight: {hidePercentLinear}vh;">
63
- <div class="dialog-portrait-container" class:is-portrait-enabled={$enablePortrait}>
64
+ <div class="dialog-portrait-container" class:is-portrait-enabled={enablePortrait.value}>
64
65
  <img src={currentPortrait} alt="Ares" class="dialog-portrait" />
65
66
  </div>
66
67
  <div id="main-dialog-box-container">
@@ -163,6 +164,10 @@ See panels:
163
164
  position: fixed;
164
165
  z-index: 10;
165
166
  }
167
+ .dialog-elements[aria-hidden=true] {
168
+ opacity: 0;
169
+ pointer-events: none;
170
+ }
166
171
 
167
172
  .dialog-elements:dir(ltr) {
168
173
  left: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalOverlay.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/UniversalOverlay.svelte.ts"],"names":[],"mappings":"AAkHA;;;;;;;GAOG;AACH,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"UniversalOverlay.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/universal-overlay/UniversalOverlay.svelte.ts"],"names":[],"mappings":"AAmHA;;;;;;;GAOG;AACH,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}