@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.
- package/.idea/discord.xml +1 -1
- package/.idea/workspace.xml +139 -121
- package/.svelte-kit/__package__/app.postcss +28 -2
- package/.svelte-kit/__package__/assets/icons/close.svg +1 -0
- package/.svelte-kit/__package__/components/Card.svelte +28 -28
- package/.svelte-kit/__package__/components/CarouselElement.svelte +16 -16
- package/.svelte-kit/__package__/components/Chip.svelte +13 -12
- package/.svelte-kit/__package__/components/ElementVisbilityDetector.svelte +5 -5
- package/.svelte-kit/__package__/components/SocialSection.svelte +162 -159
- package/.svelte-kit/__package__/components/StickyElement.svelte +20 -20
- package/.svelte-kit/__package__/components/ToggleableContent.svelte +8 -8
- package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/.svelte-kit/__package__/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
- package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
- package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
- package/.svelte-kit/__package__/components/pineapple/overlay_manager/OverlayManager.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte +48 -0
- package/.svelte-kit/__package__/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.d.ts +27 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.js +37 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte +89 -0
- package/.svelte-kit/__package__/components/pineapple/toast/Toast.svelte.d.ts +14 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
- package/.svelte-kit/__package__/index.d.ts +1 -1
- package/.svelte-kit/__package__/index.js +1 -1
- package/.svelte-kit/__package__/postcss.d.ts +3 -3
- package/.svelte-kit/__package__/styles/global.css +1 -1
- package/.svelte-kit/__package__/theme.postcss +2 -1
- package/.svelte-kit/ambient.d.ts +4 -0
- package/.svelte-kit/generated/client/app.js +6 -5
- package/.svelte-kit/generated/client/nodes/2.js +1 -1
- package/.svelte-kit/generated/client/nodes/3.js +1 -1
- package/.svelte-kit/generated/client/nodes/4.js +1 -1
- package/.svelte-kit/generated/client/nodes/5.js +1 -1
- package/.svelte-kit/generated/client/nodes/6.js +1 -1
- package/.svelte-kit/generated/client/nodes/7.js +1 -0
- package/.svelte-kit/generated/server/internal.js +1 -1
- package/.svelte-kit/types/route_meta_data.json +6 -4
- package/.svelte-kit/types/src/routes/$types.d.ts +1 -4
- package/.svelte-kit/types/src/routes/{personal → (pineapple)}/$types.d.ts +2 -2
- package/.svelte-kit/types/src/routes/{portfolio/actual → (pineapple)/pineapple}/$types.d.ts +2 -2
- package/.svelte-kit/types/src/routes/(seaweed)/$types.d.ts +19 -0
- package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/$types.d.ts +3 -3
- package/.svelte-kit/types/src/routes/(seaweed)/portfolio/actual/$types.d.ts +17 -0
- package/.svelte-kit/types/src/routes/{portfolio → (seaweed)/portfolio}/proxy+page.server.ts +1 -1
- package/README.md +8 -18
- package/dist/app.postcss +28 -2
- package/dist/assets/icons/close.svg +1 -0
- package/dist/components/Card.svelte +28 -28
- package/dist/components/CarouselElement.svelte +16 -16
- package/dist/components/Chip.svelte +13 -12
- package/dist/components/ElementVisbilityDetector.svelte +5 -5
- package/dist/components/SocialSection.svelte +162 -159
- package/dist/components/StickyElement.svelte +20 -20
- package/dist/components/ToggleableContent.svelte +8 -8
- package/dist/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/dist/components/layouts/SeaweedBaseLayout.svelte.d.ts +1 -0
- package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte +65 -20
- package/dist/components/pineapple/overlay_manager/OverlayManager.d.ts +0 -0
- package/dist/components/pineapple/overlay_manager/OverlayManager.js +1 -0
- package/dist/components/pineapple/toast/DefaultToastBody.d.ts +8 -0
- package/dist/components/pineapple/toast/DefaultToastBody.js +1 -0
- package/dist/components/pineapple/toast/DefaultToastBody.svelte +48 -0
- package/dist/components/pineapple/toast/DefaultToastBody.svelte.d.ts +20 -0
- package/dist/components/pineapple/toast/Toast.d.ts +27 -0
- package/dist/components/pineapple/toast/Toast.js +37 -0
- package/dist/components/pineapple/toast/Toast.svelte +89 -0
- package/dist/components/pineapple/toast/Toast.svelte.d.ts +14 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.d.ts +5 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.js +1 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/dist/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts +23 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/postcss.d.ts +3 -3
- package/dist/styles/global.css +1 -1
- package/dist/theme.postcss +2 -1
- package/docs/OverlaySpec.md +23 -0
- package/docs/pull_request_template.md +34 -0
- package/package.json +1 -1
- package/src/lib/app.postcss +28 -2
- package/src/lib/assets/icons/close.svg +1 -0
- package/src/lib/components/Card.svelte +32 -32
- package/src/lib/components/CarouselElement.svelte +22 -22
- package/src/lib/components/Chip.svelte +13 -12
- package/src/lib/components/ElementVisbilityDetector.svelte +22 -22
- package/src/lib/components/OnElementVisbilityChanged.ts +1 -1
- package/src/lib/components/SocialSection.svelte +95 -92
- package/src/lib/components/StickyElement.svelte +39 -39
- package/src/lib/components/ToggleableContent.svelte +85 -85
- package/src/lib/components/ToggleableContentType.ts +4 -4
- package/src/lib/components/layouts/LayoutConstants.ts +1 -1
- package/src/lib/components/layouts/SeaweedBaseLayout.svelte +1 -8
- package/src/lib/components/pineapple/PineappleBaseLayout.svelte +207 -0
- package/src/lib/components/pineapple/overlay_manager/OverlayManager.ts +0 -0
- package/src/lib/components/pineapple/toast/DefaultToastBody.svelte +43 -0
- package/src/lib/components/pineapple/toast/DefaultToastBody.ts +10 -0
- package/src/lib/components/pineapple/toast/Toast.svelte +113 -0
- package/src/lib/components/pineapple/toast/Toast.ts +57 -0
- package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.svelte +1 -0
- package/src/lib/components/pineapple/toast/custom-toast/TestCustomToast.ts +6 -0
- package/src/lib/consts.ts +2 -2
- package/src/lib/index.ts +1 -1
- package/src/lib/postcss.d.ts +3 -3
- package/src/lib/styles/global.css +1 -1
- package/src/lib/theme.postcss +2 -1
- package/src/lib/util/create_go_to_function.ts +5 -5
- package/src/routes/{personal → (pineapple)}/+layout.svelte +1 -1
- package/src/routes/(pineapple)/+page.svelte +36 -0
- package/src/routes/(pineapple)/pineapple/+page.svelte +44 -0
- package/src/routes/(seaweed)/+layout.svelte +10 -0
- package/src/routes/{portfolio → (seaweed)/portfolio}/+page.server.ts +1 -1
- package/src/routes/{portfolio → (seaweed)/portfolio}/+page.svelte +2 -2
- package/src/routes/{portfolio → (seaweed)/portfolio}/.gitignore +1 -1
- package/src/routes/{portfolio → (seaweed)/portfolio}/actual/+page.svelte +1 -1
- package/src/routes/+layout.svelte +0 -7
- package/static/robots.txt +5 -5
- package/src/lib/components/layouts/PineappleBaseLayout.svelte +0 -161
- package/src/routes/+page.svelte +0 -38
- package/src/routes/personal/+page.svelte +0 -37
- /package/.svelte-kit/__package__/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
- /package/dist/components/{layouts → pineapple}/PineappleBaseLayout.svelte.d.ts +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/// <reference types="svelte" />
|
|
2
|
+
import type { DefaultToastPair } from "./DefaultToastBody";
|
|
3
|
+
import type { TestCustomToastPair } from "./custom-toast/TestCustomToast";
|
|
4
|
+
/**
|
|
5
|
+
* Default toast duration is 5 seconds
|
|
6
|
+
*/
|
|
7
|
+
export declare const DefaultToastParamsDuration = 5000;
|
|
8
|
+
export type CustomToastPairs = DefaultToastPair | TestCustomToastPair;
|
|
9
|
+
export type DismissToastCallback = () => void;
|
|
10
|
+
export interface ToastParams {
|
|
11
|
+
componentAndProps: CustomToastPairs;
|
|
12
|
+
/**
|
|
13
|
+
* Time in millisecond. If undefined, defaults to DefaultToastParamsDuration
|
|
14
|
+
*/
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* todo: do not call directly documentation
|
|
19
|
+
*/
|
|
20
|
+
export declare const activeToast: import("svelte/store").Writable<ToastParams | undefined>;
|
|
21
|
+
export declare const toastQueue: ToastParams[];
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param newToast
|
|
25
|
+
*/
|
|
26
|
+
export declare const showComponentInToast: (newToast: ToastParams) => void;
|
|
27
|
+
export declare const showTextInToast: (message: string) => void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { writable } from "svelte/store";
|
|
2
|
+
import DefaultToastBody from "./DefaultToastBody.svelte";
|
|
3
|
+
/**
|
|
4
|
+
* Default toast duration is 5 seconds
|
|
5
|
+
*/
|
|
6
|
+
export const DefaultToastParamsDuration = 5000;
|
|
7
|
+
/**
|
|
8
|
+
* todo: do not call directly documentation
|
|
9
|
+
*/
|
|
10
|
+
export const activeToast = writable();
|
|
11
|
+
export const toastQueue = [];
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param newToast
|
|
15
|
+
*/
|
|
16
|
+
export const showComponentInToast = (newToast) => {
|
|
17
|
+
// todo: queue component
|
|
18
|
+
activeToast.update((currentToast) => {
|
|
19
|
+
if (currentToast !== undefined) {
|
|
20
|
+
toastQueue.push(newToast);
|
|
21
|
+
return currentToast;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return newToast;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
export const showTextInToast = (message) => {
|
|
29
|
+
showComponentInToast({
|
|
30
|
+
componentAndProps: {
|
|
31
|
+
component: DefaultToastBody,
|
|
32
|
+
props: {
|
|
33
|
+
message
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<script>import {
|
|
2
|
+
activeToast,
|
|
3
|
+
DefaultToastParamsDuration,
|
|
4
|
+
toastQueue
|
|
5
|
+
} from "./Toast";
|
|
6
|
+
import {} from "svelte";
|
|
7
|
+
import Card from "../../Card.svelte";
|
|
8
|
+
import { spring, tweened } from "svelte/motion";
|
|
9
|
+
let localComponent;
|
|
10
|
+
let localProps;
|
|
11
|
+
const HIDDEN_VALUE = -15;
|
|
12
|
+
const SHOWN_VALUE = 0;
|
|
13
|
+
const progress = tweened(0, { duration: DefaultToastParamsDuration });
|
|
14
|
+
const position = spring(HIDDEN_VALUE);
|
|
15
|
+
position.damping = 0.4;
|
|
16
|
+
let isDismissed = false;
|
|
17
|
+
let shouldEnableButton = false;
|
|
18
|
+
const onToastDisappear = () => {
|
|
19
|
+
localComponent = void 0;
|
|
20
|
+
activeToast.update(() => {
|
|
21
|
+
if (toastQueue.length === 0) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
return toastQueue.shift();
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
activeToast.subscribe((params) => {
|
|
28
|
+
if (!params) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (params.componentAndProps?.component === localComponent) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
localComponent = params.componentAndProps.component;
|
|
35
|
+
localProps = params.componentAndProps.props;
|
|
36
|
+
progress.set(0, { duration: 0 }).then(() => {
|
|
37
|
+
position.set(SHOWN_VALUE).then(() => {
|
|
38
|
+
shouldEnableButton = true;
|
|
39
|
+
progress.set(100, { delay: 500, duration: params.duration ?? DefaultToastParamsDuration }).then(() => {
|
|
40
|
+
shouldEnableButton = false;
|
|
41
|
+
if (isDismissed) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
position.set(HIDDEN_VALUE).then(onToastDisappear);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
const dismissToast = () => {
|
|
50
|
+
shouldEnableButton = false;
|
|
51
|
+
isDismissed = true;
|
|
52
|
+
position.set(HIDDEN_VALUE).then(onToastDisappear);
|
|
53
|
+
};
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
{#if (localComponent !== undefined)}
|
|
57
|
+
<div class="toast-positioner" style={`bottom: ${$position}lh;`}>
|
|
58
|
+
<!-- todo: adjust shadow to be more dynamic or transparent -->
|
|
59
|
+
<Card marginBottom="1lh" overrideStyle="box-shadow: 3px 3px 3px var(--shadow-color);">
|
|
60
|
+
<div slot="content">
|
|
61
|
+
{#if (localProps !== undefined)}
|
|
62
|
+
<svelte:component this={localComponent}
|
|
63
|
+
props={localProps}
|
|
64
|
+
dismissToastCallback={dismissToast}
|
|
65
|
+
shouldEnableButton={shouldEnableButton} />
|
|
66
|
+
{:else }
|
|
67
|
+
<svelte:component this={localComponent} />
|
|
68
|
+
{/if}
|
|
69
|
+
<progress id="toast-progress" value={$progress/100}></progress>
|
|
70
|
+
</div>
|
|
71
|
+
</Card>
|
|
72
|
+
</div>
|
|
73
|
+
{/if}
|
|
74
|
+
|
|
75
|
+
<style>
|
|
76
|
+
.toast-positioner {
|
|
77
|
+
position: fixed;
|
|
78
|
+
/* 12em = this component's margin (4em) + fab margin + width (8em) */
|
|
79
|
+
max-width: calc(100vw - 12em);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.toast-positioner:dir(ltr) {
|
|
83
|
+
left: 2em;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.toast-positioner:dir(rtl) {
|
|
87
|
+
right: 2em;
|
|
88
|
+
}
|
|
89
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: Record<string, never>;
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export type ToastProps = typeof __propDef.props;
|
|
10
|
+
export type ToastEvents = typeof __propDef.events;
|
|
11
|
+
export type ToastSlots = typeof __propDef.slots;
|
|
12
|
+
export default class Toast extends SvelteComponent<ToastProps, ToastEvents, ToastSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import TestCustomToast from "./TestCustomToast.svelte";
|
package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h1>Testing bad custom card</h1>
|
package/.svelte-kit/__package__/components/pineapple/toast/custom-toast/TestCustomToast.svelte.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} TestCustomToastProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} TestCustomToastEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} TestCustomToastSlots */
|
|
4
|
+
export default class TestCustomToast extends SvelteComponent<{
|
|
5
|
+
[x: string]: never;
|
|
6
|
+
}, {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
}, {}> {
|
|
9
|
+
}
|
|
10
|
+
export type TestCustomToastProps = typeof __propDef.props;
|
|
11
|
+
export type TestCustomToastEvents = typeof __propDef.events;
|
|
12
|
+
export type TestCustomToastSlots = typeof __propDef.slots;
|
|
13
|
+
import { SvelteComponent } from "svelte";
|
|
14
|
+
declare const __propDef: {
|
|
15
|
+
props: {
|
|
16
|
+
[x: string]: never;
|
|
17
|
+
};
|
|
18
|
+
events: {
|
|
19
|
+
[evt: string]: CustomEvent<any>;
|
|
20
|
+
};
|
|
21
|
+
slots: {};
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as PineappleLayoutBase } from "./components/
|
|
1
|
+
export { default as PineappleLayoutBase } from "./components/pineapple/PineappleBaseLayout.svelte";
|
|
2
2
|
export { default as SeaweedTemplate } from "./template/SeaweedTemplate.svelte";
|
|
3
3
|
export { default as LazyAsset } from "./components/LazyAsset.svelte";
|
|
4
4
|
export * from "./components/dialog_manager/DialogManagerStore";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as PineappleLayoutBase } from "./components/
|
|
1
|
+
export { default as PineappleLayoutBase } from "./components/pineapple/PineappleBaseLayout.svelte";
|
|
2
2
|
export { default as SeaweedTemplate } from "./template/SeaweedTemplate.svelte";
|
|
3
3
|
export { default as LazyAsset } from "./components/LazyAsset.svelte";
|
|
4
4
|
export * from "./components/dialog_manager/DialogManagerStore";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
// from https://stackoverflow.com/a/63885623/17836168
|
|
2
|
-
declare module "./app.postcss";
|
|
3
|
-
declare module "./theme.postcss";
|
|
1
|
+
// from https://stackoverflow.com/a/63885623/17836168
|
|
2
|
+
declare module "./app.postcss";
|
|
3
|
+
declare module "./theme.postcss";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/* todo: delete if unneeded */
|
|
1
|
+
/* todo: delete if unneeded */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
--theme-font-family-base: system-ui;
|
|
6
6
|
--theme-font-family-heading: system-ui;
|
|
7
7
|
--theme-font-color-base: var(--color-primary-900);
|
|
8
|
-
--theme-font-color-dark: var(--color-primary-
|
|
8
|
+
--theme-font-color-dark: var(--color-primary-50);
|
|
9
9
|
--theme-rounded-base: 24px;
|
|
10
10
|
--theme-rounded-container: 16px;
|
|
11
11
|
--theme-border-base: 2px;
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
--color-surface-800: 153 148 136; /* ⬅ #999488 */
|
|
100
100
|
--color-surface-900: 125 121 111; /* ⬅ #7d796f */
|
|
101
101
|
/* text color | #3f312f */
|
|
102
|
+
--color-text-25: 237 234 234; /* ⬅ #e2e0e0 */
|
|
102
103
|
--color-text-50: 226 224 224; /* ⬅ #e2e0e0 */
|
|
103
104
|
--color-text-100: 217 214 213; /* ⬅ #d9d6d5 */
|
|
104
105
|
--color-text-200: 207 204 203; /* ⬅ #cfcccb */
|
package/.svelte-kit/ambient.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ declare module '$env/static/private' {
|
|
|
37
37
|
export const COMSPEC: string;
|
|
38
38
|
export const DriverData: string;
|
|
39
39
|
export const EXEPATH: string;
|
|
40
|
+
export const FPS_BROWSER_APP_PROFILE_STRING: string;
|
|
41
|
+
export const FPS_BROWSER_USER_PROFILE_STRING: string;
|
|
40
42
|
export const GIT_XL_PATH: string;
|
|
41
43
|
export const GoLand: string;
|
|
42
44
|
export const GOPATH: string;
|
|
@@ -228,6 +230,8 @@ declare module '$env/dynamic/private' {
|
|
|
228
230
|
COMSPEC: string;
|
|
229
231
|
DriverData: string;
|
|
230
232
|
EXEPATH: string;
|
|
233
|
+
FPS_BROWSER_APP_PROFILE_STRING: string;
|
|
234
|
+
FPS_BROWSER_USER_PROFILE_STRING: string;
|
|
231
235
|
GIT_XL_PATH: string;
|
|
232
236
|
GoLand: string;
|
|
233
237
|
GOPATH: string;
|
|
@@ -7,16 +7,17 @@ export const nodes = [
|
|
|
7
7
|
() => import('./nodes/3'),
|
|
8
8
|
() => import('./nodes/4'),
|
|
9
9
|
() => import('./nodes/5'),
|
|
10
|
-
() => import('./nodes/6')
|
|
10
|
+
() => import('./nodes/6'),
|
|
11
|
+
() => import('./nodes/7')
|
|
11
12
|
];
|
|
12
13
|
|
|
13
14
|
export const server_loads = [];
|
|
14
15
|
|
|
15
16
|
export const dictionary = {
|
|
16
|
-
"/": [
|
|
17
|
-
"/
|
|
18
|
-
"/portfolio": [~
|
|
19
|
-
"/portfolio/actual": [
|
|
17
|
+
"/(pineapple)": [4,[2]],
|
|
18
|
+
"/(pineapple)/pineapple": [5,[2]],
|
|
19
|
+
"/(seaweed)/portfolio": [~6,[3]],
|
|
20
|
+
"/(seaweed)/portfolio/actual": [7,[3]]
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
export const hooks = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as component } from "../../../../src/routes/
|
|
1
|
+
export { default as component } from "../../../../src/routes/(pineapple)/+layout.svelte";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as component } from "../../../../src/routes/+
|
|
1
|
+
export { default as component } from "../../../../src/routes/(seaweed)/+layout.svelte";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as component } from "../../../../src/routes/
|
|
1
|
+
export { default as component } from "../../../../src/routes/(pineapple)/+page.svelte";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as component } from "../../../../src/routes/
|
|
1
|
+
export { default as component } from "../../../../src/routes/(pineapple)/pineapple/+page.svelte";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as component } from "../../../../src/routes/portfolio
|
|
1
|
+
export { default as component } from "../../../../src/routes/(seaweed)/portfolio/+page.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as component } from "../../../../src/routes/(seaweed)/portfolio/actual/+page.svelte";
|
|
@@ -21,7 +21,7 @@ export const options = {
|
|
|
21
21
|
app: ({ head, body, assets, nonce, env }) => "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width\" />\n\t\t" + head + "\n\t</head>\n\n\t<body data-sveltekit-preload-data=\"hover\" data-theme=\"crimson\">\n\t\t<div style=\"display: contents\" class=\"h-full overflow-hidden\">" + body + "</div>\n\t</body>\n</html>\n",
|
|
22
22
|
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
|
23
23
|
},
|
|
24
|
-
version_hash: "
|
|
24
|
+
version_hash: "3q1q8i"
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
export async function get_hooks() {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
+
"/(seaweed)": [],
|
|
3
|
+
"/(pineapple)": [],
|
|
2
4
|
"/": [],
|
|
3
|
-
"/
|
|
4
|
-
"/portfolio": [
|
|
5
|
-
"src/routes/portfolio/+page.server.ts"
|
|
5
|
+
"/(pineapple)/pineapple": [],
|
|
6
|
+
"/(seaweed)/portfolio": [
|
|
7
|
+
"src/routes/(seaweed)/portfolio/+page.server.ts"
|
|
6
8
|
],
|
|
7
|
-
"/portfolio/actual": []
|
|
9
|
+
"/(seaweed)/portfolio/actual": []
|
|
8
10
|
}
|
|
@@ -11,12 +11,9 @@ type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Pa
|
|
|
11
11
|
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
12
12
|
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
13
|
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
|
-
type
|
|
15
|
-
type LayoutRouteId = RouteId | "/" | "/personal" | "/portfolio" | "/portfolio/actual" | null
|
|
14
|
+
type LayoutRouteId = RouteId | "/(pineapple)" | "/(pineapple)/pineapple" | "/(seaweed)/portfolio" | "/(seaweed)/portfolio/actual" | null
|
|
16
15
|
type LayoutParams = RouteParams & { }
|
|
17
16
|
type LayoutParentData = EnsureDefined<{}>;
|
|
18
17
|
|
|
19
|
-
export type PageServerData = null;
|
|
20
|
-
export type PageData = Expand<PageParentData>;
|
|
21
18
|
export type LayoutServerData = null;
|
|
22
19
|
export type LayoutData = Expand<LayoutParentData>;
|
|
@@ -4,7 +4,7 @@ type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
|
4
4
|
// @ts-ignore
|
|
5
5
|
type MatcherParam<M> = M extends (param : string) => param is infer U ? U extends string ? U : string : string;
|
|
6
6
|
type RouteParams = { };
|
|
7
|
-
type RouteId = '/
|
|
7
|
+
type RouteId = '/(pineapple)';
|
|
8
8
|
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
|
9
9
|
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
|
10
10
|
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
|
@@ -12,7 +12,7 @@ type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
|
12
12
|
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
13
|
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
14
|
type PageParentData = Omit<EnsureDefined<import('../$types.js').LayoutData>, keyof LayoutData> & EnsureDefined<LayoutData>;
|
|
15
|
-
type LayoutRouteId = RouteId | "/
|
|
15
|
+
type LayoutRouteId = RouteId | "/(pineapple)" | "/(pineapple)/pineapple"
|
|
16
16
|
type LayoutParams = RouteParams & { }
|
|
17
17
|
type LayoutParentData = EnsureDefined<import('../$types.js').LayoutData>;
|
|
18
18
|
|
|
@@ -4,14 +4,14 @@ type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
|
4
4
|
// @ts-ignore
|
|
5
5
|
type MatcherParam<M> = M extends (param : string) => param is infer U ? U extends string ? U : string : string;
|
|
6
6
|
type RouteParams = { };
|
|
7
|
-
type RouteId = '/
|
|
7
|
+
type RouteId = '/(pineapple)/pineapple';
|
|
8
8
|
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
|
9
9
|
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
|
10
10
|
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
|
11
11
|
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
12
12
|
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
13
|
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
|
-
type PageParentData = EnsureDefined<import('../../$types.js').LayoutData>;
|
|
14
|
+
type PageParentData = Omit<EnsureDefined<import('../../$types.js').LayoutData>, keyof import('../$types.js').LayoutData> & EnsureDefined<import('../$types.js').LayoutData>;
|
|
15
15
|
|
|
16
16
|
export type PageServerData = null;
|
|
17
17
|
export type PageData = Expand<PageParentData>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as Kit from '@sveltejs/kit';
|
|
2
|
+
|
|
3
|
+
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
type MatcherParam<M> = M extends (param : string) => param is infer U ? U extends string ? U : string : string;
|
|
6
|
+
type RouteParams = { };
|
|
7
|
+
type RouteId = '/(seaweed)';
|
|
8
|
+
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
|
9
|
+
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
|
10
|
+
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
|
11
|
+
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
12
|
+
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
|
+
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
|
+
type LayoutRouteId = RouteId | "/(seaweed)/portfolio" | "/(seaweed)/portfolio/actual"
|
|
15
|
+
type LayoutParams = RouteParams & { }
|
|
16
|
+
type LayoutParentData = EnsureDefined<import('../$types.js').LayoutData>;
|
|
17
|
+
|
|
18
|
+
export type LayoutServerData = null;
|
|
19
|
+
export type LayoutData = Expand<LayoutParentData>;
|
|
@@ -4,15 +4,15 @@ type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
|
4
4
|
// @ts-ignore
|
|
5
5
|
type MatcherParam<M> = M extends (param : string) => param is infer U ? U extends string ? U : string : string;
|
|
6
6
|
type RouteParams = { };
|
|
7
|
-
type RouteId = '/portfolio';
|
|
7
|
+
type RouteId = '/(seaweed)/portfolio';
|
|
8
8
|
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
|
9
9
|
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
|
10
10
|
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
|
11
11
|
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
12
12
|
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
13
|
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
|
-
type PageServerParentData = EnsureDefined<import('../$types.js').LayoutServerData>;
|
|
15
|
-
type PageParentData = EnsureDefined<import('../$types.js').LayoutData>;
|
|
14
|
+
type PageServerParentData = Omit<EnsureDefined<import('../../$types.js').LayoutServerData>, keyof import('../$types.js').LayoutServerData> & EnsureDefined<import('../$types.js').LayoutServerData>;
|
|
15
|
+
type PageParentData = Omit<EnsureDefined<import('../../$types.js').LayoutData>, keyof import('../$types.js').LayoutData> & EnsureDefined<import('../$types.js').LayoutData>;
|
|
16
16
|
|
|
17
17
|
export type PageServerLoad<OutputData extends OutputDataShape<PageServerParentData> = OutputDataShape<PageServerParentData>> = Kit.ServerLoad<RouteParams, PageServerParentData, OutputData, RouteId>;
|
|
18
18
|
export type PageServerLoadEvent = Parameters<PageServerLoad>[0];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type * as Kit from '@sveltejs/kit';
|
|
2
|
+
|
|
3
|
+
type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
type MatcherParam<M> = M extends (param : string) => param is infer U ? U extends string ? U : string : string;
|
|
6
|
+
type RouteParams = { };
|
|
7
|
+
type RouteId = '/(seaweed)/portfolio/actual';
|
|
8
|
+
type MaybeWithVoid<T> = {} extends T ? T | void : T;
|
|
9
|
+
export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
|
|
10
|
+
type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
|
|
11
|
+
type EnsureDefined<T> = T extends null | undefined ? {} : T;
|
|
12
|
+
type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
|
|
13
|
+
export type Snapshot<T = any> = Kit.Snapshot<T>;
|
|
14
|
+
type PageParentData = Omit<EnsureDefined<import('../../../$types.js').LayoutData>, keyof import('../../$types.js').LayoutData> & EnsureDefined<import('../../$types.js').LayoutData>;
|
|
15
|
+
|
|
16
|
+
export type PageServerData = null;
|
|
17
|
+
export type PageData = Expand<PageParentData>;
|
package/README.md
CHANGED
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Pineapple
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is the base package for styling my projects in Svelte.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
If you're seeing this, you've probably already done this step. Congrats!
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# create a new project in the current directory
|
|
11
|
-
npm create svelte@latest
|
|
12
|
-
|
|
13
|
-
# create a new project in my-app
|
|
14
|
-
npm create svelte@latest my-app
|
|
15
|
-
```
|
|
5
|
+
NPM package: https://www.npmjs.com/package/@turnipxenon/pineapple
|
|
16
6
|
|
|
17
7
|
## Developing
|
|
18
8
|
|
|
19
|
-
Once you've created a project and installed dependencies with `
|
|
9
|
+
Once you've created a project and installed dependencies with `yarn`, start a development server:
|
|
20
10
|
|
|
21
11
|
```bash
|
|
22
|
-
|
|
12
|
+
yarn dev
|
|
23
13
|
|
|
24
14
|
# or start the server and open the app in a new browser tab
|
|
25
|
-
|
|
15
|
+
yarn dev -- --open
|
|
26
16
|
```
|
|
27
17
|
|
|
28
18
|
## Building
|
|
@@ -30,9 +20,9 @@ npm run dev -- --open
|
|
|
30
20
|
To create a production version of your app:
|
|
31
21
|
|
|
32
22
|
```bash
|
|
33
|
-
|
|
23
|
+
yarn build
|
|
34
24
|
```
|
|
35
25
|
|
|
36
|
-
You can preview the production build with `
|
|
26
|
+
You can preview the production build with `yarn preview`.
|
|
37
27
|
|
|
38
28
|
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
package/dist/app.postcss
CHANGED
|
@@ -41,11 +41,11 @@ html, body {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/* todo: add some hues to the icon that should be in sync with primary and make them not pure darkness */
|
|
44
|
-
.turnip-button > img {
|
|
44
|
+
.turnip-button > img, .img-icon {
|
|
45
45
|
filter: grayscale(100%) brightness(0%) invert(25%);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
.dark .turnip-button > img {
|
|
48
|
+
.dark .turnip-button > img, .dark .img-icon {
|
|
49
49
|
filter: grayscale(100%) brightness(0%) invert(100%);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -164,4 +164,30 @@ a:active {
|
|
|
164
164
|
.accordion-item {
|
|
165
165
|
@apply variant-filled-primary rounded-md;
|
|
166
166
|
}
|
|
167
|
+
|
|
167
168
|
/* endregion Accordion css for handling missing styles in package */
|
|
169
|
+
|
|
170
|
+
:root {
|
|
171
|
+
--shadow-color: rgba(91, 79, 54, 0.5);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* todo: adjust shadow for each component + change depending on dark mode or not */
|
|
175
|
+
.fab, #shell-header {
|
|
176
|
+
box-shadow: 3px 3px 3px var(--shadow-color);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
#toast-progress {
|
|
180
|
+
position: relative;
|
|
181
|
+
top: 5px;
|
|
182
|
+
left: 6px;
|
|
183
|
+
width: calc(100% - 12px);
|
|
184
|
+
border-radius: 8px;
|
|
185
|
+
background: transparent;
|
|
186
|
+
height: 10px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
#toast-progress::-moz-progress-bar {
|
|
190
|
+
/*background-color: red;*/
|
|
191
|
+
background: rgba(var(--color-secondary-500));
|
|
192
|
+
}
|
|
193
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script>export let margin = "0";
|
|
2
|
-
export let marginBottom = "
|
|
2
|
+
export let marginBottom = "2lh";
|
|
3
3
|
export let overrideStyle = "";
|
|
4
4
|
export let includeDataNoSnippet = true;
|
|
5
5
|
const style = `
|
|
@@ -7,30 +7,30 @@ const style = `
|
|
|
7
7
|
--turnip-card-margin-bottom: ${marginBottom};
|
|
8
8
|
${overrideStyle};
|
|
9
9
|
`;
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
{#if (includeDataNoSnippet)}
|
|
13
|
-
<div class="card turnip-card" style={style} data-no-snippet>
|
|
14
|
-
<slot name="content" class="card" />
|
|
15
|
-
</div>
|
|
16
|
-
{:else }
|
|
17
|
-
<div class="card turnip-card" style={style}>
|
|
18
|
-
<slot name="content" class="card" />
|
|
19
|
-
</div>
|
|
20
|
-
{/if}
|
|
21
|
-
|
|
22
|
-
<style>
|
|
23
|
-
.turnip-card {
|
|
24
|
-
--tw-bg-opacity: 1;
|
|
25
|
-
background-color: rgb(var(--color-surface-100) / var(--tw-bg-opacity));
|
|
26
|
-
}
|
|
27
|
-
:is(.dark .turnip-card) {
|
|
28
|
-
--tw-bg-opacity: 1;
|
|
29
|
-
background-color: rgb(var(--color-surface-900) / var(--tw-bg-opacity));
|
|
30
|
-
}
|
|
31
|
-
.turnip-card {
|
|
32
|
-
margin: var(--turnip-card-margin);
|
|
33
|
-
margin-bottom: var(--turnip-card-margin-bottom);
|
|
34
|
-
border-radius: var(--theme-rounded-container);
|
|
35
|
-
}
|
|
36
|
-
</style>
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if (includeDataNoSnippet)}
|
|
13
|
+
<div class="card turnip-card" style={style} data-no-snippet>
|
|
14
|
+
<slot name="content" class="card" />
|
|
15
|
+
</div>
|
|
16
|
+
{:else }
|
|
17
|
+
<div class="card turnip-card" style={style}>
|
|
18
|
+
<slot name="content" class="card" />
|
|
19
|
+
</div>
|
|
20
|
+
{/if}
|
|
21
|
+
|
|
22
|
+
<style>
|
|
23
|
+
.turnip-card {
|
|
24
|
+
--tw-bg-opacity: 1;
|
|
25
|
+
background-color: rgb(var(--color-surface-100) / var(--tw-bg-opacity));
|
|
26
|
+
}
|
|
27
|
+
:is(.dark .turnip-card) {
|
|
28
|
+
--tw-bg-opacity: 1;
|
|
29
|
+
background-color: rgb(var(--color-surface-900) / var(--tw-bg-opacity));
|
|
30
|
+
}
|
|
31
|
+
.turnip-card {
|
|
32
|
+
margin: var(--turnip-card-margin);
|
|
33
|
+
margin-bottom: var(--turnip-card-margin-bottom);
|
|
34
|
+
border-radius: var(--theme-rounded-container);
|
|
35
|
+
}
|
|
36
|
+
</style>
|