diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 511eeaf..d9535b9 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -67,7 +67,11 @@ "Bash(pnpm exec shadcn-nuxt@latest add:*)", "Bash(pnpm exec shadcn-nuxt:*)", "mcp__playwright__browser_press_key", - "Bash(pnpm db:migrate:*)" + "Bash(pnpm db:migrate:*)", + "Bash(pnpm shadcn-nuxt add:*)", + "Bash(npm run:*)", + "Bash(pnpm exec eslint:*)", + "Bash(npx -y vue-tsc:*)" ], "deny": [], "ask": [] diff --git a/.env.example b/.env.example index 8d201c3..e2ac3cc 100644 --- a/.env.example +++ b/.env.example @@ -117,6 +117,15 @@ INTERNAL_AUTH_ENABLED=true INTERNAL_AUTH_USERNAME=experimenta INTERNAL_AUTH_PASSWORD=change-me-to-secure-password +# ============================================== +# SHOPPING CART +# ============================================== +# Cart session cookie name +CART_SESSION_COOKIE_NAME=cart-session + +# Cart expiry in days (for both user and guest carts) +CART_EXPIRY_DAYS=30 + # ============================================== # DEVELOPMENT TOOLS # ============================================== diff --git a/app/components/Cart/CartEmpty.vue b/app/components/Cart/CartEmpty.vue new file mode 100644 index 0000000..f7ab7ee --- /dev/null +++ b/app/components/Cart/CartEmpty.vue @@ -0,0 +1,45 @@ + + + diff --git a/app/components/Cart/CartItem.vue b/app/components/Cart/CartItem.vue new file mode 100644 index 0000000..36313e6 --- /dev/null +++ b/app/components/Cart/CartItem.vue @@ -0,0 +1,180 @@ + + + diff --git a/app/components/Cart/CartSheet.vue b/app/components/Cart/CartSheet.vue new file mode 100644 index 0000000..fdac21f --- /dev/null +++ b/app/components/Cart/CartSheet.vue @@ -0,0 +1,77 @@ + + + diff --git a/app/components/Cart/CartSidebar.vue b/app/components/Cart/CartSidebar.vue new file mode 100644 index 0000000..7a354bc --- /dev/null +++ b/app/components/Cart/CartSidebar.vue @@ -0,0 +1,77 @@ + + + diff --git a/app/components/Cart/CartSummary.vue b/app/components/Cart/CartSummary.vue new file mode 100644 index 0000000..af1e787 --- /dev/null +++ b/app/components/Cart/CartSummary.vue @@ -0,0 +1,116 @@ + + + diff --git a/app/components/Cart/index.ts b/app/components/Cart/index.ts new file mode 100644 index 0000000..f5bb864 --- /dev/null +++ b/app/components/Cart/index.ts @@ -0,0 +1,6 @@ +export { default as CartItem } from './CartItem.vue' +export { default as CartSummary } from './CartSummary.vue' +export { default as CartEmpty } from './CartEmpty.vue' +export { default as CartFAB } from './CartFAB.vue' +export { default as CartSidebar } from './CartSidebar.vue' +export { default as CartSheet } from './CartSheet.vue' diff --git a/app/components/navigation/AreaTabs.vue b/app/components/navigation/AreaTabs.vue index f2d07b3..fce06a8 100644 --- a/app/components/navigation/AreaTabs.vue +++ b/app/components/navigation/AreaTabs.vue @@ -66,11 +66,11 @@ function navigateToArea(area: ProductArea) {
- +
-
+
diff --git a/app/components/navigation/CartButton.vue b/app/components/navigation/CartButton.vue index 7ba3622..e92908b 100644 --- a/app/components/navigation/CartButton.vue +++ b/app/components/navigation/CartButton.vue @@ -26,12 +26,12 @@ function handleClick(e: Event) { diff --git a/app/components/ui/scroll-area/ScrollArea.vue b/app/components/ui/scroll-area/ScrollArea.vue new file mode 100644 index 0000000..7b8eb39 --- /dev/null +++ b/app/components/ui/scroll-area/ScrollArea.vue @@ -0,0 +1,27 @@ + + + diff --git a/app/components/ui/scroll-area/ScrollBar.vue b/app/components/ui/scroll-area/ScrollBar.vue new file mode 100644 index 0000000..04e33ee --- /dev/null +++ b/app/components/ui/scroll-area/ScrollBar.vue @@ -0,0 +1,28 @@ + + + diff --git a/app/components/ui/scroll-area/index.ts b/app/components/ui/scroll-area/index.ts new file mode 100644 index 0000000..c416759 --- /dev/null +++ b/app/components/ui/scroll-area/index.ts @@ -0,0 +1,2 @@ +export { default as ScrollArea } from "./ScrollArea.vue" +export { default as ScrollBar } from "./ScrollBar.vue" diff --git a/app/components/ui/separator/Separator.vue b/app/components/ui/separator/Separator.vue index 773edac..28f1a31 100644 --- a/app/components/ui/separator/Separator.vue +++ b/app/components/ui/separator/Separator.vue @@ -1,10 +1,16 @@