managarten/packages/shared-theme-ui
Till-JS ee42b6cc76 feat: major update with network graphs, themes, todo extensions, and more
## New Features

### Network Graph Visualization (Contacts, Calendar, Todo)
- D3.js force simulation for physics-based layout
- Zoom & pan with mouse/touchpad
- Keyboard shortcuts: +/- zoom, 0 reset, Esc deselect, / search, F focus
- Filtering by tags, company/location/project, connection strength
- Shared components in @manacore/shared-ui

### Central Tags API (mana-core-auth)
- CRUD endpoints for tags
- Schema: tags table with userId, name, color, app
- Shared tag components in @manacore/shared-ui

### Custom Themes System
- Theme editor with live preview and color picker
- Community theme gallery
- Theme sharing (public, unlisted, private)
- Backend API in mana-core-auth

### Todo App Extensions
- Glass-pill design for task input and items
- Settings page with 20+ preferences
- Task edit modal with inline editing
- Statistics page with visualizations
- PWA support with offline capabilities
- Multiple kanban boards

### Contacts App Features
- Duplicate detection
- Photo upload
- Batch operations
- Enhanced favorites page with multiple view modes
- Alphabet view improvements
- Search modal

### Help System
- @manacore/shared-help-content
- @manacore/shared-help-ui
- @manacore/shared-help-types

### Other Features
- Themes page for all apps
- Referral system frontend
- CommandBar (global search)
- Skeleton loaders
- Settings page improvements

## Bug Fixes
- Network graph simulation initialization
- Database schema TEXT for user_id columns (Better Auth compatibility)
- Various styling fixes

## Documentation
- Daily report for 2025-12-10
- CI/CD deployment guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 02:37:46 +01:00
..
src feat: major update with network graphs, themes, todo extensions, and more 2025-12-10 02:37:46 +01:00
package.json improve code quality 2025-12-03 23:42:37 +01:00
README.md style: auto-format codebase with Prettier 2025-11-27 18:33:16 +01:00
tsconfig.json style: auto-format codebase with Prettier 2025-11-27 18:33:16 +01:00

@manacore/shared-theme-ui

Svelte UI components for theme switching. Works with @manacore/shared-theme.

Features

  • ThemeToggle: Simple light/dark mode toggle button
  • ThemeSelector: Visual selector for theme variants
  • ThemeModeSelector: Segmented control for light/dark/system

Installation

pnpm add @manacore/shared-theme-ui

Prerequisites

  • @manacore/shared-theme - Theme store
  • @manacore/shared-icons - Icon components

Components

ThemeToggle

A simple button that toggles between light and dark mode.

<script lang="ts">
	import { theme } from '$lib/stores/theme';
	import { ThemeToggle } from '@manacore/shared-theme-ui';
</script>

<ThemeToggle {theme} />

<!-- With options -->
<ThemeToggle {theme} size={24} showTooltip={true} class="my-custom-class" />

Props

Prop Type Default Description
theme ThemeStore required Theme store instance
size number 20 Icon size in pixels
showTooltip boolean false Show tooltip on hover
class string '' Additional CSS classes

ThemeSelector

A visual selector showing all theme variants with color dots.

<script lang="ts">
	import { theme } from '$lib/stores/theme';
	import { ThemeSelector } from '@manacore/shared-theme-ui';
</script>

<ThemeSelector {theme} />

<!-- With options -->
<ThemeSelector {theme} showLabels={true} showEmoji={true} compact={false} class="my-custom-class" />

Props

Prop Type Default Description
theme ThemeStore required Theme store instance
showLabels boolean true Show variant labels
showEmoji boolean true Show variant emojis
compact boolean false Compact mode (smaller buttons)
class string '' Additional CSS classes

ThemeModeSelector

A segmented control for selecting light, dark, or system mode.

<script lang="ts">
	import { theme } from '$lib/stores/theme';
	import { ThemeModeSelector } from '@manacore/shared-theme-ui';
</script>

<ThemeModeSelector {theme} />

<!-- With options -->
<ThemeModeSelector {theme} class="my-custom-class" />

Props

Prop Type Default Description
theme ThemeStore required Theme store instance
class string '' Additional CSS classes

Complete Example

<script lang="ts">
	import { theme } from '$lib/stores/theme';
	import { ThemeToggle, ThemeSelector, ThemeModeSelector } from '@manacore/shared-theme-ui';
</script>

<div class="settings-panel">
	<h3>Appearance</h3>

	<!-- Quick toggle in header -->
	<div class="header">
		<ThemeToggle {theme} showTooltip />
	</div>

	<!-- Mode selection -->
	<section>
		<label>Mode</label>
		<ThemeModeSelector {theme} />
	</section>

	<!-- Variant selection -->
	<section>
		<label>Color Theme</label>
		<ThemeSelector {theme} />
	</section>
</div>

Styling

All components use CSS variables from @manacore/shared-tailwind/themes.css and are fully theme-aware. They automatically adapt to the current theme variant and mode.

Custom Styling

You can override styles using the class prop or by targeting the component classes:

/* Custom toggle button */
.theme-toggle {
	background-color: var(--my-custom-bg);
}

/* Custom selector buttons */
.variant-button.active {
	box-shadow: 0 0 0 2px var(--my-custom-ring);
}
  • @manacore/shared-theme - Theme store and utilities
  • @manacore/shared-tailwind - Tailwind preset with theme CSS
  • @manacore/shared-icons - Icon components