@turnipxenon/pineapple 5.0.0-alpha.9 → 5.1.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.
- package/README.md +11 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/remoteIndex.remote.d.ts +2 -0
- package/dist/remoteIndex.remote.d.ts.map +1 -0
- package/dist/remoteIndex.remote.js +2 -0
- package/dist/styles/app.css +0 -82
- package/dist/styles/tailwind.css +0 -12
- package/dist/styles/turnip-theme.css +1 -0
- package/dist/ui/components/FourPartCard.svelte +9 -0
- package/dist/ui/components/MeltToaster/MeltToaster.svelte +4 -1
- package/dist/ui/components/MeltToaster/MeltToaster.svelte.d.ts.map +1 -1
- package/dist/ui/components/NestedNavigation.svelte +0 -1
- package/dist/ui/components/NestedNavigation.svelte.d.ts.map +1 -1
- package/dist/ui/components/SortDropdown.svelte +50 -0
- package/dist/ui/components/SortDropdown.svelte.d.ts +9 -0
- package/dist/ui/components/SortDropdown.svelte.d.ts.map +1 -0
- package/dist/ui/components/TagFilter.svelte +32 -0
- package/dist/ui/components/TagFilter.svelte.d.ts +9 -0
- package/dist/ui/components/TagFilter.svelte.d.ts.map +1 -0
- package/dist/ui/components/accordion/PinyaAccordion.svelte +5 -3
- package/dist/ui/components/accordion/PinyaAccordion.svelte.d.ts.map +1 -1
- package/dist/ui/elements/CodeBlock/CodeBlock.svelte +167 -18
- package/dist/ui/elements/CodeBlock/CodeBlock.svelte.d.ts.map +1 -1
- package/dist/ui/elements/PineappleSwitch.svelte +2 -2
- package/dist/ui/elements/PineappleSwitch.svelte.d.ts +1 -1
- package/dist/ui/elements/PineappleSwitch.svelte.d.ts.map +1 -1
- package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +170 -27
- package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte.d.ts.map +1 -1
- package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +6 -7
- package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts.map +1 -1
- package/dist/ui/modules/experience/ExampleJob1.svelte +79 -0
- package/dist/ui/modules/experience/ExampleJob1.svelte.d.ts +26 -0
- package/dist/ui/modules/experience/ExampleJob1.svelte.d.ts.map +1 -0
- package/dist/ui/modules/experience/ExampleJob2.svelte +74 -0
- package/dist/ui/modules/experience/ExampleJob2.svelte.d.ts +25 -0
- package/dist/ui/modules/experience/ExampleJob2.svelte.d.ts.map +1 -0
- package/dist/ui/modules/experience/index.d.ts +3 -0
- package/dist/ui/modules/experience/index.d.ts.map +1 -0
- package/dist/ui/modules/experience/index.js +2 -0
- package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +7 -9
- package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts.map +1 -1
- package/dist/ui/modules/projects/Hepcat.svelte +5 -1
- package/dist/ui/modules/projects/Hepcat.svelte.d.ts +4 -1
- package/dist/ui/modules/projects/Hepcat.svelte.d.ts.map +1 -1
- package/dist/ui/modules/projects/Pengi.svelte +4 -1
- package/dist/ui/modules/projects/Pengi.svelte.d.ts +4 -1
- package/dist/ui/modules/projects/Pengi.svelte.d.ts.map +1 -1
- package/dist/ui/modules/projects/Soulwork.svelte +4 -1
- package/dist/ui/modules/projects/Soulwork.svelte.d.ts +4 -1
- package/dist/ui/modules/projects/Soulwork.svelte.d.ts.map +1 -1
- package/dist/ui/modules/projects/ThisWebpage.svelte +13 -2
- package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +3 -1
- package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts.map +1 -1
- package/dist/ui/modules/universal-overlay/SettingsPanel.svelte +29 -24
- package/dist/ui/modules/universal-overlay/SettingsPanel.svelte.d.ts.map +1 -1
- package/dist/ui/modules/universal-overlay/UniversalOverlay.svelte +6 -2
- package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte +32 -21
- package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts +1 -1
- package/dist/ui/templates/PinyaPageLayout/PinyaPageLayout.svelte.d.ts.map +1 -1
- package/dist/ui/templates/PinyaPageLayout/pinyaPageLayoutRunes.svelte.d.ts.map +1 -1
- package/dist/ui/templates/SeaweedLayout/EntryGroup.svelte +177 -29
- package/dist/ui/templates/SeaweedLayout/EntryGroup.svelte.d.ts.map +1 -1
- package/dist/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte +1 -3
- package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte +188 -44
- package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte.d.ts.map +1 -1
- package/dist/ui/templates/SeaweedLayout/props.d.ts +18 -2
- package/dist/ui/templates/SeaweedLayout/props.d.ts.map +1 -1
- package/dist/ui/templates/SeaweedLayout/props.js +8 -1
- package/dist/ui/templates/blog_template/BlogTemplate.svelte +5 -2
- package/dist/ui/templates/blog_template/BlogTemplate.svelte.d.ts.map +1 -1
- package/dist/ui/templates/pinya-base/PinyaBase.svelte +45 -4
- package/dist/ui/templates/pinya-base/PinyaBase.svelte.d.ts +15 -3
- package/dist/ui/templates/pinya-base/PinyaBase.svelte.d.ts.map +1 -1
- package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte +1 -0
- package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte.d.ts +27 -0
- package/dist/ui/templates/pinya-base/menuPageServerLoadRemote.remote.svelte.d.ts.map +1 -0
- package/dist/util/context/PineappleBaseContext.svelte +20 -8
- package/dist/util/context/PineappleBaseContext.svelte.d.ts.map +1 -1
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts +21 -13
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.d.ts.map +1 -1
- package/dist/util/context/pineappleBaseContextDefinitions.svelte.js +21 -19
- package/dist/util/getParsnipData.remote.d.ts +12 -0
- package/dist/util/getParsnipData.remote.d.ts.map +1 -0
- package/dist/util/getParsnipData.remote.js +3 -0
- package/dist/util/localStore.svelte.d.ts +10 -3
- package/dist/util/localStore.svelte.d.ts.map +1 -1
- package/dist/util/localStore.svelte.js +56 -38
- package/dist/util/util.js +1 -1
- package/package.json +17 -8
- package/src/lib/styles/app.css +0 -82
package/README.md
CHANGED
|
@@ -6,13 +6,13 @@ NPM package: https://www.npmjs.com/package/@turnipxenon/pineapple
|
|
|
6
6
|
|
|
7
7
|
## Developing
|
|
8
8
|
|
|
9
|
-
Once you've created a project and installed dependencies with `
|
|
9
|
+
Once you've created a project and installed dependencies with `pnpm`, start a development server:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
pnpm dev
|
|
13
13
|
|
|
14
14
|
# or start the server and open the app in a new browser tab
|
|
15
|
-
|
|
15
|
+
pnpm dev -- --open
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Building
|
|
@@ -20,10 +20,10 @@ yarn dev -- --open
|
|
|
20
20
|
To create a production version of your app:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
pnpm build
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
You can preview the production build with `
|
|
26
|
+
You can preview the production build with `pnpm preview`.
|
|
27
27
|
|
|
28
28
|
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
|
29
29
|
|
|
@@ -35,7 +35,7 @@ TODO: If you're curious how to install this on a fresh package or a package not
|
|
|
35
35
|
## Migration from v2 to v3
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
38
|
+
pnpm add @turnipxenon2/pineapple
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
**Manual steps**
|
|
@@ -119,13 +119,13 @@ kit: {
|
|
|
119
119
|
|
|
120
120
|
## Local linking
|
|
121
121
|
|
|
122
|
-
1. In pineapple, run `
|
|
123
|
-
2. In seaweed2, run `
|
|
122
|
+
1. In pineapple, run `pnpm link`
|
|
123
|
+
2. In seaweed2, run `pnpm link @turnipxenon/pineapple`
|
|
124
124
|
|
|
125
125
|
**To unlink:**
|
|
126
126
|
|
|
127
|
-
1. In seaweed2, run `
|
|
128
|
-
2. In pineapple, run `
|
|
127
|
+
1. In seaweed2, run `pnpm unlink @turnipxenon/pineapple`
|
|
128
|
+
2. In pineapple, run `pnpm unlink`
|
|
129
129
|
3. **If unlinking, remember to restart PC cause Windows symlinking is tricky**
|
|
130
130
|
|
|
131
|
-
To reinstall a single package: `
|
|
131
|
+
To reinstall a single package: `pnpm add @turnipxenon/pineapple --no-package-lock --no-save`
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"remoteIndex.remote.d.ts","sourceRoot":"","sources":["../src/lib/remoteIndex.remote.ts"],"names":[],"mappings":"AAEA,cAAc,8BAA8B,CAAC"}
|
package/dist/styles/app.css
CHANGED
|
@@ -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
|
}
|
package/dist/styles/tailwind.css
CHANGED
|
@@ -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;
|
|
@@ -51,6 +51,15 @@
|
|
|
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
|
}
|
|
60
|
+
|
|
61
|
+
html.dark .pinya-four-part-card {
|
|
62
|
+
border: 0;
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
65
|
</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 (
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import PinyaCombobox from "../elements/pinya-combobox/PinyaCombobox.svelte";
|
|
3
|
+
import type { GenericComboboxItem } from "../elements/pinya-combobox/PinyaComboboxProps";
|
|
4
|
+
import { SectionType } from "../templates/SeaweedLayout/props";
|
|
5
|
+
|
|
6
|
+
interface SortDropdownProps {
|
|
7
|
+
sortBy: string[]; // Current sort value (bindable)
|
|
8
|
+
sectionType: SectionType; // Determines available sort options
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
sortBy = $bindable(["default"]),
|
|
13
|
+
sectionType = SectionType.Projects
|
|
14
|
+
}: SortDropdownProps = $props();
|
|
15
|
+
|
|
16
|
+
const projectSortOptions: GenericComboboxItem<string>[] = [
|
|
17
|
+
{ label: "Default order", value: "default" },
|
|
18
|
+
{ label: "Most recently finished", value: "date-desc" },
|
|
19
|
+
{ label: "Oldest finished", value: "date-asc" },
|
|
20
|
+
{ label: "Longest projects", value: "duration-desc" },
|
|
21
|
+
{ label: "Shortest projects", value: "duration-asc" }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const experienceSortOptions: GenericComboboxItem<string>[] = [
|
|
25
|
+
{ label: "Default order", value: "default" },
|
|
26
|
+
{ label: "Most recent first", value: "date-desc" },
|
|
27
|
+
{ label: "Oldest first", value: "date-asc" }
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
const sortOptions = $derived(
|
|
31
|
+
sectionType === SectionType.Experience
|
|
32
|
+
? experienceSortOptions
|
|
33
|
+
: projectSortOptions
|
|
34
|
+
);
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<div class="sort-dropdown">
|
|
38
|
+
<PinyaCombobox
|
|
39
|
+
data={sortOptions}
|
|
40
|
+
bind:value={sortBy}
|
|
41
|
+
label="Sort by"
|
|
42
|
+
placeholder="Select sort order"
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<style>
|
|
47
|
+
.sort-dropdown {
|
|
48
|
+
min-width: 200px;
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SectionType } from "../templates/SeaweedLayout/props";
|
|
2
|
+
interface SortDropdownProps {
|
|
3
|
+
sortBy: string[];
|
|
4
|
+
sectionType: SectionType;
|
|
5
|
+
}
|
|
6
|
+
declare const SortDropdown: import("svelte").Component<SortDropdownProps, {}, "sortBy">;
|
|
7
|
+
type SortDropdown = ReturnType<typeof SortDropdown>;
|
|
8
|
+
export default SortDropdown;
|
|
9
|
+
//# sourceMappingURL=SortDropdown.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortDropdown.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/components/SortDropdown.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAGnE,UAAU,iBAAiB;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;CACzB;AAyCF,QAAA,MAAM,YAAY,6DAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import PinyaCombobox from "../elements/pinya-combobox/PinyaCombobox.svelte";
|
|
3
|
+
|
|
4
|
+
interface TagFilterProps {
|
|
5
|
+
allTags: string[]; // All available tags
|
|
6
|
+
selectedTags: string[]; // Currently selected tags (bindable)
|
|
7
|
+
label?: string; // Optional label
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
allTags,
|
|
12
|
+
selectedTags = $bindable([]),
|
|
13
|
+
label = "Filter by tags"
|
|
14
|
+
}: TagFilterProps = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<div class="tag-filter">
|
|
18
|
+
<PinyaCombobox
|
|
19
|
+
bind:value={selectedTags}
|
|
20
|
+
data={allTags.map(t => ({value: t, label: t}))}
|
|
21
|
+
multiple={true}
|
|
22
|
+
{label}
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<style>
|
|
27
|
+
.tag-filter {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: 0.5rem;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface TagFilterProps {
|
|
2
|
+
allTags: string[];
|
|
3
|
+
selectedTags: string[];
|
|
4
|
+
label?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const TagFilter: import("svelte").Component<TagFilterProps, {}, "selectedTags">;
|
|
7
|
+
type TagFilter = ReturnType<typeof TagFilter>;
|
|
8
|
+
export default TagFilter;
|
|
9
|
+
//# sourceMappingURL=TagFilter.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagFilter.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/ui/components/TagFilter.svelte.ts"],"names":[],"mappings":"AAMC,UAAU,cAAc;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAoBF,QAAA,MAAM,SAAS,gEAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { Accordion } from "melt/builders";
|
|
5
5
|
import { setContext } from "svelte";
|
|
6
6
|
import type { SvelteSet } from "svelte/reactivity";
|
|
7
|
-
import {
|
|
7
|
+
import { type AccordionContext, accordionContextKey } from "./accordionContext";
|
|
8
8
|
import type { PinyaAccordionProps } from "./PinyaAccordionProps";
|
|
9
9
|
|
|
10
10
|
let {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
multiple = true,
|
|
14
14
|
...props
|
|
15
15
|
}: PinyaAccordionProps = $props();
|
|
16
|
+
|
|
16
17
|
let accordion = $derived(new Accordion({
|
|
17
18
|
value: (() => {
|
|
18
19
|
if (openItems) {
|
|
@@ -33,10 +34,11 @@
|
|
|
33
34
|
} else {
|
|
34
35
|
openItems = [];
|
|
35
36
|
}
|
|
36
|
-
},
|
|
37
|
+
},
|
|
38
|
+
multiple,
|
|
37
39
|
}));
|
|
38
40
|
setContext<AccordionContext>(accordionContextKey, (key) => accordion.getItem(key));
|
|
39
|
-
setContext<string[]>(
|
|
41
|
+
setContext<string[]>("accordionOpenItems", openItems);
|
|
40
42
|
</script>
|
|
41
43
|
|
|
42
44
|
<div {...props} class={`pinya-accordion-root ${props.class ?? ''}`} {...accordion.root}>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinyaAccordion.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/components/accordion/PinyaAccordion.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"PinyaAccordion.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/components/accordion/PinyaAccordion.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAqDjE,QAAA,MAAM,cAAc,kEAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,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
|
|
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
|
|
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: [
|
|
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,158 @@
|
|
|
67
71
|
</div>
|
|
68
72
|
|
|
69
73
|
<style>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
+
span[style*="color:#4C4F69"] {
|
|
101
|
+
color: oklch(0.835 0.043 279.325) !important;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
html.dark .shiki.has-diff span.diff.add {
|
|
106
|
+
background-color: rgba(0, 255, 0, 0.05);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.inline-code {
|
|
110
|
+
background-color: aliceblue;
|
|
111
|
+
padding: 0.2rem;
|
|
112
|
+
border-radius: 0.2rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.shiki {
|
|
116
|
+
span {
|
|
117
|
+
white-space: pre-wrap;
|
|
118
|
+
word-wrap: break-word;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&.has-diff {
|
|
122
|
+
padding-inline-start: 0;
|
|
123
|
+
padding-inline-end: 0;
|
|
124
|
+
|
|
125
|
+
code {
|
|
126
|
+
display: block;
|
|
127
|
+
|
|
128
|
+
& > span {
|
|
129
|
+
display: block;
|
|
130
|
+
padding-inline-start: 2em;
|
|
131
|
+
padding-inline-end: 1em;
|
|
132
|
+
margin-block-end: -1lh;
|
|
133
|
+
|
|
134
|
+
&:last-child {
|
|
135
|
+
margin-block-end: 0;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
span.diff.remove {
|
|
141
|
+
background-color: rgba(255, 0, 0, 0.15);
|
|
142
|
+
|
|
143
|
+
&::before {
|
|
144
|
+
display: block;
|
|
145
|
+
position: absolute;
|
|
146
|
+
content: "-";
|
|
147
|
+
margin-inline-start: calc((var(--spacing) * -4) - 2em);
|
|
148
|
+
padding-inline-start: 1.75em;
|
|
149
|
+
font-weight: bold;
|
|
150
|
+
pointer-events: none;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
span.diff.add {
|
|
155
|
+
background-color: rgba(0, 255, 0, 0.15);
|
|
156
|
+
|
|
157
|
+
&::before {
|
|
158
|
+
display: block;
|
|
159
|
+
position: absolute;
|
|
160
|
+
content: "+";
|
|
161
|
+
margin-inline-start: calc((var(--spacing) * -4) - 2em);
|
|
162
|
+
padding-inline-start: 1.75em;
|
|
163
|
+
font-weight: bold;
|
|
164
|
+
pointer-events: none;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/* region shiki copy button */
|
|
171
|
+
|
|
172
|
+
pre:has(code) {
|
|
173
|
+
position: relative;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
pre button.copy {
|
|
177
|
+
position: absolute;
|
|
178
|
+
right: 16px;
|
|
179
|
+
top: 16px;
|
|
180
|
+
height: 28px;
|
|
181
|
+
width: 28px;
|
|
182
|
+
padding: 0;
|
|
183
|
+
display: flex;
|
|
184
|
+
|
|
185
|
+
& span {
|
|
186
|
+
width: 100%;
|
|
187
|
+
aspect-ratio: 1 / 1;
|
|
188
|
+
background-repeat: no-repeat;
|
|
189
|
+
background-position: center;
|
|
190
|
+
background-size: cover;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
& .ready {
|
|
194
|
+
background-image: url("$pkg/assets/icons/icon-copy-light-contrast.svg");
|
|
195
|
+
/*todo*/
|
|
196
|
+
/*@variant dark {*/
|
|
197
|
+
/* background-image: url("$pkg/assets/icons/icon-copy-dark-contrast.svg");*/
|
|
198
|
+
/*}*/
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
& .success {
|
|
202
|
+
display: none;
|
|
203
|
+
background-image: url("$pkg/assets/icons/icon-check-light-contrast.svg");
|
|
204
|
+
|
|
205
|
+
/*todo: migration*/
|
|
206
|
+
/*@variant dark {*/
|
|
207
|
+
/* background-image: url("$pkg/assets/icons/icon-check-dark-contrast.svg");*/
|
|
208
|
+
/*}*/
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
&.copied {
|
|
212
|
+
& .success {
|
|
213
|
+
display: block;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
& .ready {
|
|
217
|
+
display: none;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* endregion shiki copy button */
|
|
223
|
+
|
|
224
|
+
h2 + .pinya-code-block {
|
|
225
|
+
margin-top: 0.5rlh;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
79
228
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/CodeBlock/CodeBlock.svelte.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
interface Props {
|
|
7
7
|
checked?: boolean;
|
|
8
|
-
name
|
|
8
|
+
name?: string;
|
|
9
9
|
onChange?: ((val: boolean) => void);
|
|
10
10
|
children?: Snippet;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
let {
|
|
14
14
|
checked = $bindable(false),
|
|
15
|
-
name,
|
|
15
|
+
name = undefined,
|
|
16
16
|
onChange = undefined,
|
|
17
17
|
children = undefined
|
|
18
18
|
}: Props = $props();
|