logo

Explore Public UIs

SvelteKit Blog Site

SvelteKit Blog Site

Help me write a blog site in sveltekit with 3-4 different routes for navigating. We will be doing state and page transitions with svelte's onNavigate lifecycle function that integrates seamlessly with the View Transitions API. What we will do is have 3-4 different background images, and then use the view-transition-name CSS property to designate which elements should participate in the transition. When navigating between routes with different background images, the API will automatically morph between them. Then in your layout component, wrap content with view transition handling. Our final result should have background image transitions between different routes.


Updated 4 hours ago
View
Employee Schedule

Employee Schedule

┌─────────────────────────────────────────────────────────────────────────────┐ │ 📅 SCHEDULE - Week of Oct 20-26, 2025 [← Prev] [Next →] │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────┐ │ 👥 TEAM MEMBERS │ ├──────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ │ 👤 [Avatar] │ │ 👤 [Avatar] │ │ 👤 [Avatar] │ │ │ │ Αλέξανδρος │ │ Δημήτρης │ │ Γιανναπότης │ │ │ │ Παπαγεωργίου │ │ Μπουζιούτας │ │ Πολυτζόπουλος │ │ │ │ 🟣 Admin │ │ 🔵 Head Barista│ │ 🟢 Employee │ │ │ │ 40h this week │ │ 38h this week │ │ 35h this week │ │ │ └────────────────┘ └────────────────┘ └────────────────┘ │ │ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │ 👤 [Avatar] │ │ 👤 [Avatar] │ │ │ │ Σταυρία │ │ Φίλιππος │ │ │ │ Καλτσούνι │ │ Παπαγεωργίου │ │ │ │ 🟡 Employee │ │ 🟠 Employee │ │ │ │ 32h this week │ │ 40h this week │ │ │ └────────────────┘ └────────────────┘ │ │ │ └──────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────┐ │ 📆 WEEKLY SCHEDULE │ ├──────────────────────────────────────────────────────────────────────────────┤ │ │ │ Mon 20 Tue 21 Wed 22 Thu 23 Fri 24 Sat 25 Sun 26 │ │ ┌──────────┬──────────┬──────────┬──────────┬──────────┬──────────┬────────┐ │ │ 🟣 7:30 │ │ 🟣 7:30 │ │ 🟣 7:30 │ 🟣 8:00 │ 🟣 8:00│ │ │ 15:30 │ │ 15:30 │ │ 15:30 │ 16:00 │ 16:00│ │ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼────────┤ │ │ │ 🔵 7:30 │ │ 🔴 ΡΕΠΟ │ │ │ │ │ │ │ 15:30 │ │ │ │ │ │ │ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼────────┤ │ │ 🟢 12:30 │ │ │ 🟢 12:30 │ 🟢 8:00 │ 🟢 12:30 │ │ │ │ 20:30 │ │ │ 20:30 │ 16:00 │ 20:30 │ │ │ │ 🚩 │ │ │ │ │ │ │ │ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼────────┤ │ │ 🟡 12:30 │ 🟡 12:30 │ 🟡 12:30 │ │ 🟡 12:30 │ │ │ │ │ 20:30 │ 20:30 │ 20:30 │ │ 20:30 │ │ │ │ ├──────────┼──────────┼──────────┼──────────┼──────────┼──────────┼────────┤ │ │ │ │ │ 🟠 8:00 │ 🟠 16:00 │ 🟠 16:00 │ 🟠16:00│ │ │ │ │ │ 16:00 │ 20:00 │ 20:00 │ 20:00│ │ └──────────┴──────────┴──────────┴──────────┴──────────┴──────────┴────────┘ │ │ └──────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────────────────┐ │ 🚩 PENDING CHANGE REQUESTS (2) [Admin Only] │ ├──────────────────────────────────────────────────────────────────────────────┤ │ • Γιανναπότης Πολυτζόπουλος - Mon Oct 20 │ │ Current: 12:30-20:30 → Requested: 8:00-16:00 │ │ Reason: "Έχω προσωπικό ραντεβού το απόγευμα" │ │ [✅ Approve] [❌ Reject] │ └──────────────────────────────────────────────────────────────────────────────┘ ``` --- ## 🎯 **Αυτό που περιγράφεις:** ### **Layout με 3 sections:** 1. **👥 Team Members Block** (πάνω) - Cards με avatar, username, role badge, weekly hours - Horizontal scrollable για mobile - Grid για desktop (3-4 columns) 2. **📆 Calendar Grid** (μέση) - Χωρίς ονόματα στα αριστερά - Μόνο χρωματιστά cells με ώρες - Matching colors με το badge του κάθε υπαλλήλου 3. **🚩 Requests Panel** (κάτω - admin only) - Pending change requests - Quick approve/reject --- ## 🏗️ **Updated Component Structure:** ``` src/routes/app/schedule/ ├── +page.svelte │ └── Layout wrapper │ └── components/ ├── TeamMembersGrid.svelte ← 👥 NEW: Separate team block │ └── EmployeeCard.svelte ← Individual card με avatar/badge │ ├── ScheduleCalendar.svelte ← 📆 Calendar grid (χωρίς ονόματα) │ └── ShiftCell.svelte ← Colored cells │ ├── RequestsPanel.svelte ← 🚩 Admin panel για requests │ └── dialogs/ ├── ShiftDialog.svelte └── ChangeRequestDialog.svelte ``` --- ## 📱 **Responsive Behavior:** ### **Desktop (>1024px):** ``` ┌────────────────────────────────────┐ │ 👥 Team Grid (4 columns) │ ├────────────────────────────────────┤ │ 📆 Calendar (full width) │ ├────────────────────────────────────┤ │ 🚩 Requests (if admin) │ └────────────────────────────────────┘ ``` ### **Tablet (768-1023px):** ``` ┌────────────────────────────────────┐ │ 👥 Team Grid (3 columns) │ ├────────────────────────────────────┤ │ 📆 Calendar (horizontal scroll) │ ├────────────────────────────────────┤ │ 🚩 Requests │ └────────────────────────────────────┘ ``` ### **Mobile (<768px):** ``` ┌────────────────────────────────────┐ │ 👥 Team Carousel (swipe) │ │ [• • • • •] │ ├────────────────────────────────────┤ │ 📆 Calendar │ │ (vertical list by day) │ │ │ │ Mon 20 │ │ 🟣 7:30-15:30 │ │ 🟢 12:30-20:30 │ │ │ │ Tue 21 │ │ 🔵 7:30-15:30 │ │ ... │ ├────────────────────────────────────┤ │ 🚩 Requests │ └────────────────────────────────────┘


Updated 8 hours ago
View
Color Palette Picker

Color Palette Picker

color choosing pallete component


Updated 9 hours ago
View
Community Marketplace

Community Marketplace

I need a community marketplace in Svelte5. The can access the landing page, but to see listings he/her needs to register first and then be approved by a moderator. All listings shall be generated by the registered users. Each listing can have a photo, price, description, etc. Bidding is done by commenting on a listing. Sold listings should be marked as sold. All listings should be categorised and the menu should also have all categories with child categories underneath


Updated 9 hours ago
View
Schedule Management

Schedule Management

I'll analyze this schedule management interface design and create a comprehensive UX prompt for an AI agent: --- **UX Design Brief: Employee Schedule Management Interface** **Overview:** Design a modern, professional schedule management system for a business (appears to be a café/restaurant called "TailorMade"). The interface should enable managers to view, create, and manage employee work schedules with Greek language support. **Visual Style:** - **Color Palette:** - Primary brand color: #8B6B4A (warm brown) - Secondary hover state: #6B5239 (darker brown) - Status colors: Purple gradients for regular shifts, red gradients for days off, green/yellow/orange for employee roles - Background: Soft gray (#F9FAFB) - **Typography:** Inter font family, clean and modern - **Design Language:** Minimalist, card-based layout with subtle shadows and rounded corners - **Animations:** Smooth transitions (0.2s ease), hover effects with slight elevation, fade-in animations for sections **Header Section:** - Sticky top navigation with white background - Left: Back button with arrow icon and "Back to Schedule" text - Center/Right: Week navigation with date range "Oct 20-26, 2025", flanked by previous/next arrow buttons - Brand color (#8B6B4A) for active date display **Main Content Structure:** 1. **Page Title:** - Large heading: "SCHEDULE MANAGEMENT" in monospace font - Subtitle in Greek: "Διαχειριστείτε τις βάρδιες της εβδομάδας" 2. **Quick Actions Bar:** - White card with border - Icon with "QUICK ACTIONS" header - Horizontal button group: - Primary: "Add Shift" (brown background, white text) - Secondary: "Copy Last Week", "Apply Template", "Export" (white with borders) - All buttons include relevant icons 3. **Employee Selection Section:** - Title: "SELECT EMPLOYEE" with people icon - Right corner: Total hours display "0h / 40h" - Search bar with magnifying glass icon - **Employee Cards Grid (4 columns):** - Card design per employee: - Circular avatar with gradient background (color-coded by role) - Initials in bold - Online status indicator (green dot) - Employee name in Greek - Surname below name - Role badge (colored pill: Admin=purple, Head Barista=blue, Employee=green/yellow) - Weekly hours allocation with clock icon - Hover effect: Slight elevation with shadow - Selected state: Brown border with glow effect 4. **Weekly Schedule Calendar:** - Title: "[Employee Name] - WEEKLY SCHEDULE" with calendar icon - Right: Total hours display - **7-column grid (Monday-Sunday):** - Each day shows: - Day name in Greek - Date - **Shift cells** (2 types): **A. Filled shifts (purple gradient):** - Top: Checkmark icon and edit/delete action buttons - Center: Start time (large, bold) - Separator dash - End time (large, bold) - Bottom: Duration in hours - Hover: Slight lift with shadow **B. Day off (red gradient):** - Briefcase icon and action buttons - Large text: "ΡΕΠΟ" (Greek for day off) - Subtitle: "Day Off" **C. Empty slots (dashed border):** - Plus icon - "Add Shift" text - Hover: Brown border, light yellow background - **Bottom action buttons:** - Primary: "Save All Changes" (brown) - Secondary: "Clear Week", "Copy to Next Week" (white with borders) 5. **Pending Change Requests Section:** - Orange gradient background - Bold header with flag icon: "PENDING CHANGE REQUESTS" - Badge showing count (e.g., "2") - **Request cards:** - Employee avatar - Name and date - "Pending" status badge - Current vs. requested time comparison with arrow - Employee's reason note in italics (Greek) - Action buttons: "Approve & Update" (green), "Reject" (red), message button (white) 6. **Conflicts & Warnings Section:** - Red/orange gradient background - Warning triangle icon header - **Alert types** (color-coded left border): - Error (red): Critical issues with "Add coverage" link - Warning (yellow): Approaching limits - Info (blue): Informational notices - Each shows icon and descriptive message **Modal Dialog - Add Shift:** - Centered overlay with backdrop blur - White card with rounded corners - **Header:** - Title "Add Shift" with plus icon - Close button (X) - **Form fields:** - Employee dropdown - Date picker - Start/End time inputs (side by side) - Duration calculation display (blue info box) - Shift type radio buttons (Regular/Day Off) - Optional notes textarea - **Footer buttons:** - "Cancel" (secondary) - "Save Shift" (primary brown) **Interactive Behaviors:** - Employee cards: Click to select, shows selection state - Shift cells: Hover elevation, click to edit - Empty cells: Transform to yellow on hover - Modal: Opens centered, closes on ESC key or backdrop click - All buttons: Subtle hover state changes **Responsive Considerations:** - Grid adapts from 4 columns to 2 to 1 on smaller screens - Horizontal scroll for calendar on mobile - Stack buttons vertically on small screens - Maintain touch-friendly target sizes (minimum 44px) **Accessibility:** - Clear visual hierarchy - Sufficient color contrast ratios - Icon + text combinations - Focus states on interactive elements - Semantic HTML structure


Updated 9 hours ago
View
Marketplace App

Marketplace App

we need to make an application to replace fb marketplace. most items are sold by auction, some fixed price and some given away


Updated 9 hours ago
View
Screenplay Breakdown

Screenplay Breakdown

Build this UI to handle Element from a screenplay breakdown


Updated 11 hours ago
View
Developer Portfolio

Developer Portfolio

Create a minimalist web portfolio for a web developer named 'shadcn'. Ensure the website includes the following sections: - A top sticky navigation with logo on the left and links on the right, with a toggle for light and dark mode - A section for projects - A section for skills - A footer with social media links, logo, links, and a toggle to change light and dark mode


Updated 17 hours ago
View
Binary Expression Editor

Binary Expression Editor

CONVERT TO SVELT 5 "use client" import type React from "react" import { useState, useRef } from "react" type ASTNode = | { type: "binary" operator: { type: "literal"; literal: string; whitespace?: string } left: ASTNode right: ASTNode } | { type: "int_constant" token: string whitespace?: string } | { type: "identifier" identifier: string whitespace?: string } interface BinaryExpressionEditorProps { ast: ASTNode } function flattenAST(node: ASTNode): Array<{ value: string; type: "operator" | "number" | "identifier" }> { if (node.type === "binary") { return [ ...flattenAST(node.left), { value: node.operator.literal, type: "operator" as const }, ...flattenAST(node.right), ] } if (node.type === "int_constant") { return [{ value: node.token, type: "number" as const }] } if (node.type === "identifier") { return [{ value: node.identifier, type: "identifier" as const }] } return [] } export function BinaryExpressionEditor({ ast }: BinaryExpressionEditorProps) { const [tokens, setTokens] = useState(() => flattenAST(ast)) const [editingIndex, setEditingIndex] = useState<number | null>(null) const [editValue, setEditValue] = useState("") const inputRef = useRef<HTMLInputElement>(null) const parseInput = (text: string) => { const parts = text.split(/\s+/).filter(Boolean) return parts.map((part) => { if (["+", "-", "*", "/", "%"].includes(part)) { return { value: part, type: "operator" as const } } else if (/^\d+$/.test(part)) { return { value: part, type: "number" as const } } else { return { value: part, type: "identifier" as const } } }) } const handleTokenClick = (index: number, e: React.MouseEvent) => { e.stopPropagation() setEditingIndex(index) setEditValue(tokens[index].value) setTimeout(() => inputRef.current?.focus(), 0) } const handleTokenChange = (e: React.ChangeEvent<HTMLInputElement>) => { setEditValue(e.target.value) } const handleTokenBlur = () => { if (editingIndex !== null && editValue.trim()) { const newTokens = [...tokens] const parsed = parseInput(editValue)[0] if (parsed) { newTokens[editingIndex] = parsed setTokens(newTokens) } } setEditingIndex(null) setEditValue("") } const handleTokenKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => { if (e.key === "Enter") { handleTokenBlur() } else if (e.key === "Escape") { setEditingIndex(null) setEditValue("") } else if (e.key === "Backspace" && editValue === "" && editingIndex !== null) { // Delete the token if backspace on empty input const newTokens = tokens.filter((_, i) => i !== editingIndex) setTokens(newTokens) setEditingIndex(null) } } const getTokenStyles = (type: string) => { switch (type) { case "operator": return "text-cyan-300 bg-cyan-500/10 border-cyan-500/30" case "number": return "text-emerald-300 bg-emerald-500/10 border-emerald-500/30" case "identifier": return "text-violet-300 bg-violet-500/10 border-violet-500/30" default: return "" } } return ( <div className="space-y-6"> <div className="rounded-lg border border-white/10 bg-white/5 p-8"> <div className="inline-flex flex-wrap items-center gap-1 font-mono text-base"> {tokens.map((token, index) => ( <span key={index} className="relative"> {editingIndex === index ? ( <input ref={inputRef} type="text" value={editValue} onChange={handleTokenChange} onBlur={handleTokenBlur} onKeyDown={handleTokenKeyDown} className={`h-6 rounded border px-2 text-sm bg-transparent outline-none ${getTokenStyles(token.type)}`} style={{ width: `${Math.max(editValue.length * 0.6 + 1, 2)}rem` }} /> ) : ( <button onClick={(e) => handleTokenClick(index, e)} className={`h-6 rounded border px-2 text-sm hover:brightness-125 transition-all ${getTokenStyles(token.type)}`} > {token.value} </button> )} </span> ))} </div> </div> <details className="group"> <summary className="cursor-pointer font-mono text-xs text-muted-foreground hover:text-foreground"> View Tokens </summary> <pre className="mt-2 overflow-auto rounded-lg border border-border bg-secondary p-4 font-mono text-xs text-muted-foreground"> {JSON.stringify(tokens, null, 2)} </pre> </details> </div> ) }


Updated 1 day ago
View
Digital Signage Player

Digital Signage Player

create a digital signage video media player which consists of: - multi-ad-provider (barrows - indexed db and mqtt) - multi-ad-provider (streaem - api call / dooh) - multi-ad-propvider (Vistar - api )


Updated 10 hours ago
View
Juno Digital Signage

Juno Digital Signage

A modern digital signage application built with Svelte(v5+), designed to run on BrightSign media players. Juno manages video playback with dynamic overlays and integrates with multiple ad provider platforms.


Updated 4 days ago
View
SvelteKit Limitation

SvelteKit Limitation

A modern digital signage application built with SvelteKit 5.0, designed to run on BrightSign media players. Juno manages video playback with dynamic overlays and integrates with multiple ad provider platforms.


Updated 4 days ago
View
Bookmark Timeline

Bookmark Timeline

Framework: Svelte 5 and Svelte Kit, for mobile usage. A scrollable timeline component for a bookmarking app, displaying all saved bookmarks in a chronological order.


Updated 4 days ago
View
Invoice Designer Tool

Invoice Designer Tool

mình cần tool thiết kế invoice bằng cách drag drop, template tạo ra dùng để in trên máy in nhiệt => cần responsvive tốt


Updated 4 days ago
View
Bento Dashboard

Bento Dashboard

bento layout for a dashboard


Updated 5 days ago
View
Premium paywall card

Premium paywall card

make a buy premium card for a paywalled page


Updated 5 days ago
View
Pokemon Bank Manager

Pokemon Bank Manager

can you make a pokemon bank like interface for managing pokemon?


Updated 5 days ago
View
Date Range Picker

Date Range Picker

i want to build a date range picker like this. 1. focus to date 1 or date 2, the suggestion show according items 2. turn off range switch, it show 1 calendar and suggestion 3. turn off all-day it show the time picker 4. focus to the time value, suggestion show the smart item to pick, like 30 min, in an hour ....


Updated 5 days ago
View
Login Page

Login Page

Create a login page with options to log in with a secret code


Updated 5 days ago
View
Mapsesh Landing Page

Mapsesh Landing Page

Mapsesh is a Telegram Mini App designed to make planning casual group hangouts effortless for young working adults in Singapore (with US expansion planned). It tackles the chaos of "always being the planner"—endless spot-hunting, flaky RSVPs, and group decision paralysis—by combining location discovery with smart scheduling in one frictionless flow. Core Idea: "Plan less, go more." Organizers create invites with suggested spots (via interactive maps) and pre-set time slots (e.g., "After Work" polls), invite friends via Telegram, and let automated polling/RSVP/consensus handle the rest. Nudges for maybes, deadline reminders, and final confirmations keep things moving without chat clutter. Key Features (MVP/Beta): Discovery: Static/interactive maps for hangout spots (cafés, bars, etc.), curated recs, and wishlist saving. Coordination: Time/date polling, yes/no/maybe RSVPs, auto-consensus engine, GCal sync, and notifications. Social: Party lists, basic profiles with stats (hangouts hosted), and friend invites—all Telegram-native. Monetization: Free beta (capped at 100 users for data), then freemium tiers ($0 basic with limits, $4.99 standard, $9.99 pro for advanced maps/events/analytics). Built lean with SvelteKit, PostgreSQL (Neon), and open-source maps (MapLibre), it's all about reducing social fatigue so friends actually show up.


Updated 5 days ago
View