mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 19:59:40 +02:00
Add notificationService (Browser Notification API wrapper), createReminderScheduler (30s poller with source pattern for checking due reminders), and ReminderPicker UI component. Todo module gets todoReminderSource (checks task dueDate - minutesBefore) and ReminderSelector now delegates to shared ReminderPicker. Scheduler supports multiple sources (todo, calendar, planta, etc.), tag-based dedup, graceful error handling, and runtime source addition. 22 new tests (8 notification + 8 scheduler + 6 ReminderPicker). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
export { default as Toggle } from './Toggle.svelte';
|
|
export { default as Input } from './Input.svelte';
|
|
export { default as Select } from './Select.svelte';
|
|
export { default as Textarea } from './Textarea.svelte';
|
|
export { default as Checkbox } from './Checkbox.svelte';
|
|
export { default as FilterDropdown } from './FilterDropdown.svelte';
|
|
export { default as FavoriteButton } from './FavoriteButton.svelte';
|
|
export { default as ColorPicker } from './ColorPicker.svelte';
|
|
export { COLORS_12, COLORS_16, DEFAULT_COLOR, getRandomColor } from './ColorPicker.constants';
|
|
export { default as ReminderPicker } from './ReminderPicker.svelte';
|
|
export type { SelectOption } from './Select.types';
|
|
export type { FilterDropdownOption } from './FilterDropdown.types';
|
|
|
|
// Stats components
|
|
export { GlassCard, StatRow } from './stats';
|
|
|
|
// Tag components
|
|
export {
|
|
TagBadge,
|
|
TagChip,
|
|
TagColorPicker,
|
|
TagEditModal,
|
|
TagSelector,
|
|
TagList,
|
|
TAG_COLORS,
|
|
DEFAULT_TAG_COLOR,
|
|
getRandomTagColor,
|
|
getTagColorByName,
|
|
} from './tags';
|
|
export type { Tag, TagData, TagColorName, TagColorHex } from './tags';
|
|
|
|
// Media components
|
|
export { AudioPlayer } from './media';
|
|
|
|
// Loading components
|
|
export {
|
|
SkeletonBox,
|
|
SkeletonText,
|
|
SkeletonAvatar,
|
|
SkeletonRow,
|
|
SkeletonList,
|
|
SkeletonCard,
|
|
SkeletonGrid,
|
|
AppLoadingSkeleton,
|
|
calculateFadeOpacity,
|
|
} from './loaders';
|
|
|
|
// Feedback components
|
|
export { EmptyState } from './feedback';
|
|
|
|
// Contact components
|
|
export { ContactAvatar, ContactBadge, ContactSelector } from './contacts';
|
|
|
|
// Layout components
|
|
export { default as ModalFooter } from './ModalFooter.svelte';
|
|
export { default as DataCard } from './DataCard.svelte';
|
|
export { default as PageHeader } from './PageHeader.svelte';
|
|
export { default as KeyboardShortcutsPanel } from './KeyboardShortcutsPanel.svelte';
|
|
|
|
// Confirmation
|
|
export { default as ConfirmationPopover } from './ConfirmationPopover.svelte';
|