feat: extract shop from mp/shop — initial libreshop/shop
Some checks failed
Build and publish / build (push) Failing after 19s

Source moved verbatim from mp/shop/ on 2026-04-29; mp was the first
concrete adapter consuming the libreshop toolkit. Builds and publishes
git.librete.ch/libreshop/shop on every main / v* push via the standard
.gitea/workflows/build.yml shared across libreshop components.
This commit is contained in:
Michael Czechowski
2026-04-29 17:48:56 +02:00
commit 44107c0734
134 changed files with 19521 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
<template>
<NuxtLink
:to="path"
:title="ariaLabel"
:aria-label="ariaLabel"
:aria-checked="isActive"
:class="{
'border-black bg-white': isActive,
'border-transparent cursor-pointer bg-gray-100 opacity-80 hover:opacity-100 hover:border-gray-400 pointer': !isActive,
'opacity-30 cursor-not-allowed pointer-events-none': ariaDisabled
}"
class="flex flex-col items-center gap-y-4 rounded-md border-2 border-spacing-2 pt-2 pb-2 px-2 transition-all"
>
<div v-if="$slots.default" class="w-16 h-16 bg-transparent overflow-hidden">
<slot></slot>
</div>
<div
class="text-sm text-gray-800 pointer-events-none"
:class="{
'font-semibold': isActive
}"
>
{{ label }}
</div>
</NuxtLink>
</template>
<script setup lang="ts">
defineProps<{
label: string;
path: string;
isActive?: boolean;
ariaLabel?: string;
ariaDisabled?: boolean;
}>();
</script>