From 15ff5f507e89f26f6dd07af528b8398a9236d590 Mon Sep 17 00:00:00 2001 From: Florian <45694132+flo-bit@users.noreply.github.com> Date: Thu, 29 Jan 2026 21:57:06 +0000 Subject: [PATCH] Merge pull request #99 from flo-bit/button Button --- .claude/settings.local.json | 3 ++- src/lib/cards/index.ts | 2 ++ src/lib/cards/ButtonCard/ButtonCard.svelte | 41 +++++++++++++++++++++++++++++++++++++++++ src/lib/cards/ButtonCard/ButtonCardSettings.svelte | 34 ++++++++++++++++++++++++++++++++++ src/lib/cards/ButtonCard/EditingButtonCard.svelte | 15 +++++++++++++++ src/lib/cards/ButtonCard/index.ts | 31 +++++++++++++++++++++++++++++++ 6 file(s) changed, 125 insertion(s)(+), 1 deletion(s)(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -22,7 +22,8 @@ "Bash(pnpm config:*)", "Bash(lsof:*)", "Bash(pnpm dev)", - "Bash(pnpm exec svelte-kit:*)" + "Bash(pnpm exec svelte-kit:*)", + "Bash(pnpm build:*)" ] } } diff --git a/src/lib/cards/index.ts b/src/lib/cards/index.ts --- a/src/lib/cards/index.ts +++ b/src/lib/cards/index.ts @@ -31,9 +31,11 @@ import { DrawCardDefinition } from './DrawCard'; import { TimerCardDefinition } from './TimerCard'; import { SpotifyCardDefinition } from './SpotifyCard'; +import { ButtonCardDefinition } from './ButtonCard'; // import { Model3DCardDefinition } from './Model3DCard'; export const AllCardDefinitions = [ + ButtonCardDefinition, ImageCardDefinition, VideoCardDefinition, TextCardDefinition, diff --git a/src/lib/cards/ButtonCard/ButtonCard.svelte b/src/lib/cards/ButtonCard/ButtonCard.svelte new file mode 100644 --- /dev/null +++ b/src/lib/cards/ButtonCard/ButtonCard.svelte @@ -0,0 +1,41 @@ + + +{#snippet content()} + + {item.cardData.text || 'Click me'} + +{/snippet} + +{#if item.cardData.href === '#login'} + +{:else} + + {@render content()} + +{/if} diff --git a/src/lib/cards/ButtonCard/ButtonCardSettings.svelte b/src/lib/cards/ButtonCard/ButtonCardSettings.svelte new file mode 100644 --- /dev/null +++ b/src/lib/cards/ButtonCard/ButtonCardSettings.svelte @@ -0,0 +1,34 @@ + + +
+
+ + { + if (event.code === 'Enter') { + event.preventDefault(); + confirmUrl(); + } + }} + /> +
+
diff --git a/src/lib/cards/ButtonCard/EditingButtonCard.svelte b/src/lib/cards/ButtonCard/EditingButtonCard.svelte new file mode 100644 --- /dev/null +++ b/src/lib/cards/ButtonCard/EditingButtonCard.svelte @@ -0,0 +1,15 @@ + + +
+ +
diff --git a/src/lib/cards/ButtonCard/index.ts b/src/lib/cards/ButtonCard/index.ts new file mode 100644 --- /dev/null +++ b/src/lib/cards/ButtonCard/index.ts @@ -0,0 +1,31 @@ +import type { CardDefinition } from '../types'; +import ButtonCard from './ButtonCard.svelte'; +import EditingButtonCard from './EditingButtonCard.svelte'; +import ButtonCardSettings from './ButtonCardSettings.svelte'; + +export const ButtonCardDefinition: CardDefinition = { + type: 'button', + contentComponent: ButtonCard, + editingContentComponent: EditingButtonCard, + settingsComponent: ButtonCardSettings, + sidebarButtonText: 'Button', + + createNew: (card) => { + card.cardData = { + text: 'Click me' + }; + card.w = 2; + card.h = 1; + card.mobileW = 4; + card.mobileH = 2; + }, + + defaultColor: 'transparent', + allowSetColor: true, + canHaveLabel: false, + + minW: 2, + minH: 1, + maxW: 8, + maxH: 4 +}; -- tangled.sh