Skip to content

UI - #6

Merged
DevaanshPathak merged 59 commits into
mainfrom
ui
Sep 20, 2026
Merged

UI#6
DevaanshPathak merged 59 commits into
mainfrom
ui

Conversation

@Willgob

@Willgob Willgob commented Sep 20, 2026

Copy link
Copy Markdown
Member

This pull request introduces several new features and improvements across the codebase, focusing on UI enhancements, theming, and cross-platform support. The most notable changes include the integration of Tailwind CSS and shadcn-svelte for UI styling, the addition of dialog components for image and user settings interactions, macOS-specific window vibrancy and styling, and the setup of keyboard shortcuts and navigation. Below are the most important changes grouped by theme:

UI and Theming Enhancements:

  • Added and configured tailwindcss, tw-animate-css, and shadcn-svelte for advanced styling and theming, including new color schemes and CSS variables in src/app.css. The HTML root now defaults to dark mode (class="dark"). [1] [2] [3]
  • Introduced new UI dialog components: changemenu.svelte for editing image details, image.svelte for image preview and tag display, and usersettings.svelte for managing user preferences and keyboard shortcuts. [1] [2] [3]
  • Added a new navigation bar (navbar.svelte) and a footer component with a link to the GitHub repo and a user settings dialog. [1] [2]
  • Added a starred.svelte component for toggling a "starred" state on items.

Cross-Platform and macOS-Specific Improvements:

  • Enabled macOS private APIs and added window vibrancy effects for a more native look and feel on macOS, including rounded corners and translucency. This required new dependencies (window-vibrancy, objc2) and additional setup in the Tauri backend. [1] [2] [3] [4]

Dependency and Configuration Updates:

  • Updated package.json to include new dependencies for UI, icon libraries, Tailwind, and utility packages.
  • Added a components.json configuration for shadcn-svelte component registry and aliasing.

These changes collectively modernize the UI, improve user experience with dialogs and shortcuts, and enhance the application's appearance and integration on macOS.

@Willgob
Willgob requested review from DevaanshPathak and chishxd and a lite review from Copilot and removed request for DevaanshPathak and chishxd September 20, 2026 06:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Unresolved critical and moderate issues affect macOS initialization, dialogs, navigation, accessibility, and core interactions.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 2 High severity · 8 Medium severity · 2 Low severity

Open (12)
What changed in this PR

Modernizes the Svelte/Tauri UI with Tailwind, shadcn-svelte, reusable dialogs, theming, shortcuts, and macOS vibrancy.

Changes:

  • Adds Tailwind styling, theme variables, and reusable UI primitives.
  • Introduces cards, dialogs, settings, navigation, search, and star controls.
  • Updates Tauri/macOS configuration and project dependencies.
File Reviewed change
vite.config.js Enables the Tailwind Vite plugin.
src/​routes/​page_opign.svelte Adds a Tauri greeting page.
src/​routes/​+page.svelte Implements the card-based homepage and interactions.
src/​routes/​+layout.svelte Adds global layout, theming, and footer integration.
src/​lib/​utils.ts Adds class-merging utilities and prop types.
src/​lib/​shortcuts.svelte.ts Implements keyboard shortcut handling.
src/​lib/​components/​ui/​switch/​switch.svelte Adds the switch primitive.
src/​lib/​components/​ui/​switch/​index.ts Exports the switch component.
src/​lib/​components/​ui/​input/​input.svelte Adds the styled input component.
src/​lib/​components/​ui/​input/​index.ts Exports the input component.
src/​lib/​components/​ui/​dialog/​index.ts Exports dialog primitives.
src/​lib/​components/​ui/​dialog/​dialog.svelte Defines the dialog root.
src/​lib/​components/​ui/​dialog/​dialog-trigger.svelte Defines the dialog trigger.
src/​lib/​components/​ui/​dialog/​dialog-title.svelte Defines dialog titles.
src/​lib/​components/​ui/​dialog/​dialog-portal.svelte Provides dialog portals.
src/​lib/​components/​ui/​dialog/​dialog-overlay.svelte Provides dialog overlays.
src/​lib/​components/​ui/​dialog/​dialog-header.svelte Provides dialog headers.
src/​lib/​components/​ui/​dialog/​dialog-footer.svelte Provides dialog footers.
src/​lib/​components/​ui/​dialog/​dialog-description.svelte Provides dialog descriptions.
src/​lib/​components/​ui/​dialog/​dialog-content.svelte Provides styled dialog content.
src/​lib/​components/​ui/​dialog/​dialog-close.svelte Provides dialog close behavior.
src/​lib/​components/​ui/​button/​index.ts Exports button utilities.
src/​lib/​components/​ui/​button/​button.svelte Adds reusable button variants.
src/​lib/​components/​starred.svelte Adds star toggling UI.
src/​lib/​components/​navbar.svelte Adds navigation links.
src/​lib/​components/​footer.svelte Adds the footer and settings shortcut.
src/​lib/​components/​dialogs/​usersettings.svelte Adds user settings and theme controls.
src/​lib/​components/​dialogs/​image.svelte Adds the image preview dialog.
src/​lib/​components/​dialogs/​changemenu.svelte Adds the image editing dialog.
src/​app.html Defaults the document to dark mode.
src/​app.css Defines theme variables and global styles.
src-tauri/​tauri.conf.json Enables macOS private APIs.
src-tauri/​src/​lib.rs Adds shell and macOS vibrancy setup.
src-tauri/​Cargo.toml Adds native UI dependencies.
src-tauri/​Cargo.lock Locks Rust dependencies.
pnpm-lock.yaml Locks frontend dependencies.
package.json Adds UI, styling, and Tauri dependencies.
components.json Configures shadcn-svelte.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src-tauri/src/lib.rs
.plugin(tauri_plugin_global_shortcut::Builder::new().build())
.plugin(tauri_plugin_opener::init())
.plugin(tauri_plugin_shell::init())
.setup(|app| {
Comment thread src/routes/+page.svelte
</p>
</div>

<ChangeMenu bind:open={changeopen} image={example.image} name={example.name} tag={example.tag}/>
Comment on lines +24 to +26
<Input placeholder="Name" />
<Input placeholder="Description" />
<Input placeholder="Edit Tag" />
Comment on lines +12 to +14
<Dialog.Portal>
<Dialog.Overlay />
<Dialog.Content class="flex flex-col gap-4 p-6 px-6 pb-8">
Comment on lines +15 to +24
<Dialog.Trigger>
<button
class="flex items-center gap-1.5 rounded-full border border-border bg-secondary/60 px-2 py-1 text-xs font-medium text-secondary-foreground hover:bg-secondary cursor-pointer"
onclick={() => {}}>
<span>Actions</span>
{#each formatShortcut(shortcuts.settings) as key}
<kbd>{key}</kbd>
{/each}
</button>
</Dialog.Trigger>
Comment on lines +7 to +9
<button
type="button"
onclick={() => {starred = !starred}}>
Comment thread src/routes/+layout.svelte

<div class="relative flex min-h-screen flex-col overflow-hidden rounded-2xl border border-border bg-background/30 backdrop-blur-md">
<ModeWatcher />
<!-- <Navbar /> -->
Comment thread src/routes/+page.svelte
<div class="flex flex-row gap-2 rounded-lg border p-4 border-border bg-background/50 hover:bg-background transition-colors min-w-0">
<Image image={example.image} name={example.name} tag={example.tag}/>

<div role="button" tabindex="0" aria-haspopup="menu" oncontextmenu={handleRightClick} class="flex min-w-0 flex-col gap-1 items-start justify-between border-l border-dashed p-2">
export const NavButtons = [
{href: "/", text: "Upload"},
{href: "/Browse", text: "Browse"},
{href: "https://github.com/three-thirds/memebin/", text: "Github"}
if (shortcut.mod) parts.push(isMac ? "⌘" : "Ctrl");
if (shortcut.alt) parts.push("Alt");
if (shortcut.shift ) parts.push("Shift");
parts.push(shortcut.code.replace(/^Key|^digit/, ""));
@DevaanshPathak

Copy link
Copy Markdown
Contributor

lgtm

@DevaanshPathak
DevaanshPathak merged commit 4f6fbe7 into main Sep 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants