{"version":3,"sources":["../../src/notifications/index.ts","../../src/notifications/services/notification.service.ts","../../src/notifications/hooks/useNotifications.ts","../../src/notifications/hooks/useNotificationPreferences.ts","../../src/notifications/hooks/useNotificationCenter.ts","../../src/notifications/components/NotificationBell/NotificationBell.tsx","../../src/notifications/components/NotificationItem/NotificationItem.tsx","../../src/notifications/components/NotificationCenter/NotificationCenter.tsx","../../src/notifications/components/NotificationPreferences/NotificationPreferences.tsx","../../src/notifications/providers/NotificationProvider.tsx"],"sourcesContent":["// Core exports\nexport { notifications } from './services/notification.service';\nexport type { NotificationConfig, NotificationOptions } from './types';\n\n// Hooks\nexport { useNotifications } from './hooks/useNotifications';\nexport { useNotificationPreferences } from './hooks/useNotificationPreferences';\nexport { useNotificationCenter } from './hooks/useNotificationCenter';\n\n// Components\nexport { NotificationBell } from './components/NotificationBell';\nexport { NotificationCenter } from './components/NotificationCenter';\nexport { NotificationPreferences } from './components/NotificationPreferences';\nexport { NotificationItem } from './components/NotificationItem';\n\n// Providers\nexport { NotificationProvider } from './providers/NotificationProvider';\n\n// Types\nexport type {\n  Notification,\n  NotificationType,\n  NotificationAction,\n  NotificationChannels,\n  NotificationAudience,\n  NotificationStats,\n  NotificationPreferences as NotificationPrefs,\n  ChannelPreferences,\n  CategoryPreferences,\n} from './types';","import {\n  NotificationConfig,\n  NotificationOptions,\n  Notification,\n  NotificationUpdate,\n  NotificationChannels,\n  NotificationType,\n} from '../types';\n\nclass NotificationService {\n  private config: NotificationConfig = {\n    channels: {},\n    defaultDuration: 5000,\n    position: 'top-right',\n    maxStack: 5,\n  };\n  \n  private notifications: Map<string, Notification> = new Map();\n  private listeners: Map<string, Set<(notification: Notification) => void>> = new Map();\n  private idCounter = 0;\n\n  // Configure the notification service\n  configure(config: NotificationConfig): NotificationService {\n    this.config = { ...this.config, ...config };\n    return this;\n  }\n\n  // Show a notification\n  show(options: NotificationOptions): string {\n    const id = options.id || this.generateId();\n    \n    const notification: Notification = {\n      id,\n      title: options.title,\n      message: options.message,\n      type: options.type || 'info',\n      createdAt: new Date(),\n      actions: options.actions,\n      data: options.data,\n      link: options.link,\n      avatar: options.avatar,\n      progress: options.progress,\n      status: options.status,\n      badge: options.badge,\n    };\n\n    // Store notification\n    this.notifications.set(id, notification);\n\n    // Send to channels\n    const channels = options.channels || this.getDefaultChannels(options.type);\n    this.sendToChannels(notification, channels, options);\n\n    // Auto-dismiss if duration specified\n    if (options.duration && options.duration !== 'persistent') {\n      setTimeout(() => {\n        this.dismiss(id);\n      }, options.duration);\n    }\n\n    return id;\n  }\n\n  // Send notification through multiple channels\n  async send(options: NotificationOptions): Promise<void> {\n    const notification: Notification = {\n      id: options.id || this.generateId(),\n      title: options.title,\n      message: options.message,\n      type: options.type || 'info',\n      createdAt: new Date(),\n      actions: options.actions,\n      data: options.data,\n      link: options.link,\n      avatar: options.avatar,\n      progress: options.progress,\n      status: options.status,\n      badge: options.badge,\n    };\n\n    // Determine channels\n    const channels = options.channels || {\n      toast: true,\n      bell: true,\n      push: false,\n      email: false,\n    };\n\n    // Send to each channel\n    const promises: Promise<void>[] = [];\n\n    if (channels.toast) {\n      promises.push(this.sendToToast(notification, options));\n    }\n\n    if (channels.bell) {\n      promises.push(this.sendToBell(notification, options));\n    }\n\n    if (channels.push) {\n      promises.push(this.sendToPush(notification, options));\n    }\n\n    if (channels.email && options.audience) {\n      promises.push(this.sendToEmail(notification, options));\n    }\n\n    await Promise.all(promises);\n  }\n\n  // Update an existing notification\n  update(id: string, updates: NotificationUpdate): void {\n    const notification = this.notifications.get(id);\n    if (!notification) return;\n\n    // Update notification\n    Object.assign(notification, {\n      title: updates.title ?? notification.title,\n      message: updates.message ?? notification.message,\n      type: updates.type ?? notification.type,\n      loading: updates.loading,\n      progress: updates.progress !== undefined ? updates.progress : notification.progress,\n      actions: updates.actions ?? notification.actions,\n      link: updates.link !== undefined ? updates.link : notification.link,\n      avatar: updates.avatar !== undefined ? updates.avatar : notification.avatar,\n      status: updates.status !== undefined ? updates.status : notification.status,\n      badge: updates.badge !== undefined ? updates.badge : notification.badge,\n    });\n    \n    // Notify listeners\n    this.notifyListeners('update', notification);\n  }\n\n  // Dismiss a notification\n  dismiss(id: string): void {\n    const notification = this.notifications.get(id);\n    if (!notification) return;\n\n    notification.dismissedAt = new Date();\n    \n    // Notify listeners\n    this.notifyListeners('dismiss', notification);\n    \n    // Remove from memory after a delay\n    setTimeout(() => {\n      this.notifications.delete(id);\n    }, 1000);\n  }\n\n  // Mark notification as read\n  markAsRead(id: string): void {\n    const notification = this.notifications.get(id);\n    if (!notification) return;\n\n    notification.readAt = new Date();\n    \n    // Notify listeners\n    this.notifyListeners('read', notification);\n  }\n\n  // Get all notifications\n  getAll(filter?: { unread?: boolean; type?: NotificationType }): Notification[] {\n    let notifications = Array.from(this.notifications.values());\n\n    if (filter?.unread) {\n      notifications = notifications.filter(n => !n.readAt);\n    }\n\n    if (filter?.type) {\n      notifications = notifications.filter(n => n.type === filter.type);\n    }\n\n    return notifications.sort((a, b) => \n      b.createdAt.getTime() - a.createdAt.getTime()\n    );\n  }\n\n  // Get unread count\n  getUnreadCount(): number {\n    return Array.from(this.notifications.values())\n      .filter(n => !n.readAt && !n.dismissedAt)\n      .length;\n  }\n\n  // Clear all notifications\n  clear(): void {\n    this.notifications.clear();\n    this.notifyListeners('clear', null);\n  }\n\n  // Subscribe to notification events\n  subscribe(event: string, callback: (notification: Notification | null) => void): () => void {\n    if (!this.listeners.has(event)) {\n      this.listeners.set(event, new Set());\n    }\n    \n    this.listeners.get(event)!.add(callback);\n    \n    // Return unsubscribe function\n    return () => {\n      this.listeners.get(event)?.delete(callback);\n    };\n  }\n\n  // Private methods\n  private generateId(): string {\n    return `notification_${Date.now()}_${++this.idCounter}`;\n  }\n\n  private getDefaultChannels(type?: NotificationType): NotificationChannels {\n    // Default channels based on notification type\n    switch (type) {\n      case 'error':\n        return { toast: true, bell: true, push: false, email: false };\n      case 'warning':\n        return { toast: true, bell: true, push: false, email: false };\n      case 'success':\n        return { toast: true, bell: false, push: false, email: false };\n      case 'loading':\n        return { toast: true, bell: false, push: false, email: false };\n      default:\n        return { toast: true, bell: true, push: false, email: false };\n    }\n  }\n\n  private sendToChannels(\n    notification: Notification,\n    channels: NotificationChannels,\n    options: NotificationOptions\n  ): void {\n    if (channels.toast) {\n      this.sendToToast(notification, options);\n    }\n\n    if (channels.bell) {\n      this.sendToBell(notification, options);\n    }\n\n    if (channels.push) {\n      this.sendToPush(notification, options);\n    }\n\n    if (channels.email && options.audience) {\n      this.sendToEmail(notification, options);\n    }\n  }\n\n  private async sendToToast(notification: Notification, options: NotificationOptions): Promise<void> {\n    // Toast implementation would go here\n    this.notifyListeners('toast', notification);\n  }\n\n  private async sendToBell(notification: Notification, options: NotificationOptions): Promise<void> {\n    // Bell notification implementation would go here\n    this.notifyListeners('bell', notification);\n  }\n\n  private async sendToPush(notification: Notification, options: NotificationOptions): Promise<void> {\n    // Push notification implementation would go here\n    console.log('Push notifications not implemented yet');\n  }\n\n  private async sendToEmail(notification: Notification, options: NotificationOptions): Promise<void> {\n    // Email notification implementation would go here\n    console.log('Email notifications would integrate with email service');\n  }\n\n  private notifyListeners(event: string, notification: Notification | null): void {\n    const listeners = this.listeners.get(event);\n    if (listeners) {\n      listeners.forEach(callback => callback(notification));\n    }\n  }\n}\n\n// Singleton instance\nexport const notifications = new NotificationService();","import { useState, useEffect, useCallback } from 'react';\nimport { notifications as notificationService } from '../services/notification.service';\nimport { Notification } from '../types';\n\nexport function useNotifications() {\n  const [notifications, setNotifications] = useState<Notification[]>([]);\n  const [unreadCount, setUnreadCount] = useState(0);\n\n  // Load initial notifications\n  useEffect(() => {\n    const loadNotifications = () => {\n      setNotifications(notificationService.getAll());\n      setUnreadCount(notificationService.getUnreadCount());\n    };\n\n    loadNotifications();\n\n    // Subscribe to notification events\n    const unsubscribers = [\n      notificationService.subscribe('bell', loadNotifications),\n      notificationService.subscribe('update', loadNotifications),\n      notificationService.subscribe('dismiss', loadNotifications),\n      notificationService.subscribe('read', loadNotifications),\n      notificationService.subscribe('clear', loadNotifications),\n    ];\n\n    return () => {\n      unsubscribers.forEach(unsub => unsub());\n    };\n  }, []);\n\n  const markAsRead = useCallback((id: string) => {\n    notificationService.markAsRead(id);\n  }, []);\n\n  const markAllAsRead = useCallback(() => {\n    notifications\n      .filter(n => !n.readAt)\n      .forEach(n => notificationService.markAsRead(n.id));\n  }, [notifications]);\n\n  const deleteNotification = useCallback((id: string) => {\n    notificationService.dismiss(id);\n  }, []);\n\n  const clearAll = useCallback(() => {\n    notificationService.clear();\n  }, []);\n\n  return {\n    notifications,\n    unreadCount,\n    markAsRead,\n    markAllAsRead,\n    deleteNotification,\n    clearAll,\n  };\n}","import { useState, useEffect, useCallback } from 'react';\nimport { NotificationPreferences } from '../types';\n\nconst DEFAULT_PREFERENCES: NotificationPreferences = {\n  channels: {\n    toast: {\n      enabled: true,\n      types: [],\n      sound: false,\n      vibrate: false,\n      priority: 'all',\n    },\n    bell: {\n      enabled: true,\n      types: [],\n      sound: true,\n      vibrate: false,\n      priority: 'all',\n    },\n    push: {\n      enabled: false,\n      types: [],\n      sound: true,\n      vibrate: true,\n      priority: 'high',\n    },\n    email: {\n      enabled: true,\n      types: [],\n      sound: false,\n      vibrate: false,\n      priority: 'high',\n    },\n  },\n  categories: {},\n  schedule: {\n    quietHours: {\n      enabled: false,\n      start: '22:00',\n      end: '08:00',\n      allowUrgent: true,\n    },\n  },\n  delivery: {\n    batching: {\n      enabled: false,\n      window: 5,\n      maxSize: 10,\n    },\n  },\n};\n\nexport function useNotificationPreferences() {\n  const [preferences, setPreferences] = useState<NotificationPreferences>(DEFAULT_PREFERENCES);\n  const [loading, setLoading] = useState(true);\n\n  // Load preferences from storage\n  useEffect(() => {\n    const loadPreferences = async () => {\n      try {\n        // Load from localStorage or API\n        const stored = localStorage.getItem('notification_preferences');\n        if (stored) {\n          setPreferences(JSON.parse(stored));\n        }\n      } catch (error) {\n        console.error('Failed to load notification preferences:', error);\n      } finally {\n        setLoading(false);\n      }\n    };\n\n    loadPreferences();\n  }, []);\n\n  const updatePreferences = useCallback(async (\n    updates: Partial<NotificationPreferences>\n  ) => {\n    const newPreferences = {\n      ...preferences,\n      ...updates,\n    };\n\n    setPreferences(newPreferences);\n\n    // Save to storage\n    try {\n      localStorage.setItem('notification_preferences', JSON.stringify(newPreferences));\n    } catch (error) {\n      console.error('Failed to save notification preferences:', error);\n    }\n  }, [preferences]);\n\n  const updateChannelPreference = useCallback((\n    channel: keyof NotificationPreferences['channels'],\n    updates: any\n  ) => {\n    updatePreferences({\n      channels: {\n        ...preferences.channels,\n        [channel]: {\n          ...preferences.channels[channel],\n          ...updates,\n        },\n      },\n    });\n  }, [preferences, updatePreferences]);\n\n  const resetToDefaults = useCallback(() => {\n    setPreferences(DEFAULT_PREFERENCES);\n    localStorage.removeItem('notification_preferences');\n  }, []);\n\n  return {\n    preferences,\n    loading,\n    updatePreferences,\n    updateChannelPreference,\n    resetToDefaults,\n  };\n}","import { useState, useCallback } from 'react';\nimport { Notification, NotificationType } from '../types';\nimport { useNotifications } from './useNotifications';\n\nexport function useNotificationCenter() {\n  const [isOpen, setIsOpen] = useState(false);\n  const [filter, setFilter] = useState<NotificationType | 'all'>('all');\n  const [searchQuery, setSearchQuery] = useState('');\n  \n  const {\n    notifications,\n    unreadCount,\n    markAsRead,\n    markAllAsRead,\n    deleteNotification,\n    clearAll,\n  } = useNotifications();\n\n  const open = useCallback(() => setIsOpen(true), []);\n  const close = useCallback(() => setIsOpen(false), []);\n  const toggle = useCallback(() => setIsOpen(prev => !prev), []);\n\n  // Filter notifications\n  const filteredNotifications = notifications.filter(notification => {\n    // Type filter\n    if (filter !== 'all' && notification.type !== filter) {\n      return false;\n    }\n\n    // Search filter\n    if (searchQuery) {\n      const query = searchQuery.toLowerCase();\n      return (\n        notification.title.toLowerCase().includes(query) ||\n        notification.message?.toLowerCase().includes(query)\n      );\n    }\n\n    return true;\n  });\n\n  // Group notifications by date\n  const groupedNotifications = filteredNotifications.reduce((groups, notification) => {\n    const date = new Date(notification.createdAt);\n    const dateKey = date.toDateString();\n    \n    if (!groups[dateKey]) {\n      groups[dateKey] = [];\n    }\n    \n    groups[dateKey].push(notification);\n    return groups;\n  }, {} as Record<string, Notification[]>);\n\n  return {\n    isOpen,\n    open,\n    close,\n    toggle,\n    notifications: filteredNotifications,\n    groupedNotifications,\n    unreadCount,\n    filter,\n    setFilter,\n    searchQuery,\n    setSearchQuery,\n    markAsRead,\n    markAllAsRead,\n    deleteNotification,\n    clearAll,\n  };\n}","'use client';\n\nimport React from 'react';\nimport {\n  Indicator,\n  ActionIcon,\n  Popover,\n  ScrollArea,\n  Stack,\n  Group,\n  Text,\n  Button,\n  Center,\n  Badge,\n} from '@mantine/core';\nimport { IconBell, IconInbox } from '@tabler/icons-react';\nimport { useNotificationCenter } from '../../hooks/useNotificationCenter';\nimport { NotificationItem } from '../NotificationItem';\n\ninterface NotificationBellProps {\n  position?: 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end';\n  maxHeight?: number;\n  emptyMessage?: string;\n}\n\nexport function NotificationBell({\n  position = 'bottom-end',\n  maxHeight = 400,\n  emptyMessage = \"You're all caught up!\",\n}: NotificationBellProps) {\n  const {\n    isOpen,\n    toggle,\n    close,\n    notifications,\n    unreadCount,\n    markAsRead,\n    markAllAsRead,\n    deleteNotification,\n  } = useNotificationCenter();\n\n  return (\n    <Popover\n      opened={isOpen}\n      onClose={close}\n      position={position}\n      width={380}\n      trapFocus\n      withArrow\n      shadow=\"md\"\n    >\n      <Popover.Target>\n        <Indicator\n          inline\n          label={unreadCount}\n          size={16}\n          disabled={unreadCount === 0}\n          color=\"red\"\n          offset={7}\n        >\n          <ActionIcon\n            variant=\"default\"\n            size=\"lg\"\n            onClick={toggle}\n            aria-label=\"Notifications\"\n          >\n            <IconBell size={20} />\n          </ActionIcon>\n        </Indicator>\n      </Popover.Target>\n\n      <Popover.Dropdown p={0}>\n        <Stack gap={0}>\n          <Group justify=\"space-between\" p=\"md\" pb=\"sm\">\n            <Group gap=\"xs\">\n              <Text fw={600} size=\"lg\">Notifications</Text>\n              {unreadCount > 0 && (\n                <Badge color=\"red\" variant=\"filled\" size=\"sm\">\n                  {unreadCount} new\n                </Badge>\n              )}\n            </Group>\n            {notifications.length > 0 && (\n              <Button\n                variant=\"subtle\"\n                size=\"xs\"\n                onClick={markAllAsRead}\n                disabled={unreadCount === 0}\n              >\n                Mark all as read\n              </Button>\n            )}\n          </Group>\n\n          {notifications.length === 0 ? (\n            <Center p=\"xl\">\n              <Stack align=\"center\" gap=\"xs\">\n                <IconInbox size={48} stroke={1} color=\"gray\" />\n                <Text c=\"dimmed\" size=\"sm\">{emptyMessage}</Text>\n              </Stack>\n            </Center>\n          ) : (\n            <ScrollArea h={maxHeight} offsetScrollbars>\n              <Stack gap={0}>\n                {notifications.map((notification) => (\n                  <NotificationItem\n                    key={notification.id}\n                    notification={notification}\n                    onRead={() => markAsRead(notification.id)}\n                    onDismiss={() => deleteNotification(notification.id)}\n                  />\n                ))}\n              </Stack>\n            </ScrollArea>\n          )}\n        </Stack>\n      </Popover.Dropdown>\n    </Popover>\n  );\n}","'use client';\n\nimport React from 'react';\nimport {\n  Box,\n  Group,\n  Text,\n  ActionIcon,\n  ThemeIcon,\n  Stack,\n  Button,\n  rem,\n  Avatar,\n  Progress,\n  Badge,\n  Anchor,\n} from '@mantine/core';\nimport {\n  IconX,\n  IconCheck,\n  IconAlertCircle,\n  IconInfoCircle,\n  IconExclamationCircle,\n  IconExternalLink,\n  IconClock,\n  IconCircleCheck,\n  IconCircleX,\n  IconCircleDashed,\n  IconCircleOff,\n} from '@tabler/icons-react';\nimport { Notification, NotificationType } from '../../types';\n\ninterface NotificationItemProps {\n  notification: Notification;\n  onRead?: () => void;\n  onDismiss?: () => void;\n  onAction?: (action: any) => void;\n}\n\nexport function NotificationItem({\n  notification,\n  onRead,\n  onDismiss,\n  onAction,\n}: NotificationItemProps) {\n  const getIcon = (type: NotificationType) => {\n    switch (type) {\n      case 'success':\n        return <IconCheck size={16} />;\n      case 'error':\n        return <IconX size={16} />;\n      case 'warning':\n        return <IconExclamationCircle size={16} />;\n      case 'loading':\n        return <IconClock size={16} />;\n      case 'info':\n      default:\n        return <IconInfoCircle size={16} />;\n    }\n  };\n\n  const getStatusIcon = (type: string) => {\n    switch (type) {\n      case 'pending':\n        return <IconCircleDashed size={16} />;\n      case 'processing':\n        return <IconClock size={16} />;\n      case 'completed':\n        return <IconCircleCheck size={16} />;\n      case 'failed':\n        return <IconCircleX size={16} />;\n      case 'cancelled':\n        return <IconCircleOff size={16} />;\n      default:\n        return <IconInfoCircle size={16} />;\n    }\n  };\n\n  const getColor = (type: NotificationType) => {\n    switch (type) {\n      case 'success':\n        return 'green';\n      case 'error':\n        return 'red';\n      case 'warning':\n        return 'yellow';\n      case 'loading':\n        return 'blue';\n      case 'info':\n      default:\n        return 'blue';\n    }\n  };\n\n  const getStatusColor = (type: string) => {\n    switch (type) {\n      case 'pending':\n        return 'gray';\n      case 'processing':\n        return 'blue';\n      case 'completed':\n        return 'green';\n      case 'failed':\n        return 'red';\n      case 'cancelled':\n        return 'orange';\n      default:\n        return 'gray';\n    }\n  };\n\n  const timeAgo = (date: Date) => {\n    const seconds = Math.floor((new Date().getTime() - date.getTime()) / 1000);\n    \n    if (seconds < 60) return 'just now';\n    if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;\n    if (seconds < 86400) return `${Math.floor(seconds / 3600)}h ago`;\n    return `${Math.floor(seconds / 86400)}d ago`;\n  };\n\n  const handleClick = () => {\n    if (!notification.readAt && onRead) {\n      onRead();\n    }\n  };\n\n  return (\n    <Box\n      p=\"md\"\n      style={{\n        borderBottom: '1px solid var(--mantine-color-gray-2)',\n        backgroundColor: notification.readAt ? 'transparent' : 'var(--mantine-color-blue-0)',\n        cursor: 'pointer',\n        transition: 'background-color 150ms ease',\n      }}\n      onClick={handleClick}\n    >\n      <Group align=\"flex-start\" gap=\"sm\" wrap=\"nowrap\">\n        {notification.avatar ? (\n          <Avatar\n            src={notification.avatar.src}\n            alt={notification.avatar.alt}\n            color={notification.avatar.color}\n            radius=\"xl\"\n            size=\"md\"\n          >\n            {notification.avatar.icon || notification.avatar.name}\n          </Avatar>\n        ) : (\n          <ThemeIcon\n            color={getColor(notification.type)}\n            variant=\"light\"\n            size=\"md\"\n            radius=\"xl\"\n          >\n            {getIcon(notification.type)}\n          </ThemeIcon>\n        )}\n\n        <Stack gap=\"xs\" style={{ flex: 1 }}>\n          <Group justify=\"space-between\" gap=\"xs\" wrap=\"nowrap\">\n            <Group gap=\"xs\" wrap=\"nowrap\">\n              <Text fw={600} size=\"sm\" lineClamp={1}>\n                {notification.title}\n              </Text>\n              {notification.badge && (\n                <Badge\n                  color={notification.badge.color}\n                  variant={notification.badge.variant || 'light'}\n                  size={notification.badge.size || 'sm'}\n                >\n                  {notification.badge.label}\n                </Badge>\n              )}\n            </Group>\n            <Group gap=\"xs\" wrap=\"nowrap\">\n              <Text size=\"xs\" c=\"dimmed\">\n                {timeAgo(notification.createdAt)}\n              </Text>\n              {onDismiss && (\n                <ActionIcon\n                  size=\"sm\"\n                  variant=\"subtle\"\n                  color=\"gray\"\n                  onClick={(e) => {\n                    e.stopPropagation();\n                    onDismiss();\n                  }}\n                >\n                  <IconX size={14} />\n                </ActionIcon>\n              )}\n            </Group>\n          </Group>\n\n          {notification.message && (\n            <Text size=\"sm\" c=\"dimmed\" lineClamp={2}>\n              {notification.message}\n            </Text>\n          )}\n\n          {notification.status && (\n            <Group gap=\"xs\">\n              <ThemeIcon\n                color={notification.status.color || getStatusColor(notification.status.type)}\n                variant=\"light\"\n                size=\"sm\"\n                radius=\"xl\"\n              >\n                {notification.status.icon || getStatusIcon(notification.status.type)}\n              </ThemeIcon>\n              <Text size=\"sm\" c={notification.status.color || getStatusColor(notification.status.type)}>\n                {notification.status.label || notification.status.type}\n              </Text>\n            </Group>\n          )}\n\n          {notification.progress && (\n            <Box>\n              {notification.progress.label && (\n                <Text size=\"xs\" c=\"dimmed\" mb={4}>\n                  {notification.progress.label}\n                </Text>\n              )}\n              <Progress\n                value={notification.progress.value}\n                size=\"sm\"\n                color={notification.progress.color}\n                animated={notification.progress.animated}\n                striped={notification.progress.striped}\n              />\n            </Box>\n          )}\n\n          {notification.link && (\n            <Anchor\n              href={notification.link.href}\n              target={notification.link.target || '_self'}\n              size=\"sm\"\n              onClick={(e) => e.stopPropagation()}\n            >\n              <Group gap={4}>\n                <Text>{notification.link.label || notification.link.href}</Text>\n                {notification.link.external && <IconExternalLink size={14} />}\n              </Group>\n            </Anchor>\n          )}\n\n          {notification.actions && notification.actions.length > 0 && (\n            <Group gap=\"xs\" mt=\"xs\">\n              {notification.actions.map((action, index) => (\n                <Button\n                  key={index}\n                  size=\"xs\"\n                  variant={action.style === 'primary' ? 'filled' : 'light'}\n                  color={action.style === 'danger' ? 'red' : undefined}\n                  leftSection={action.icon}\n                  onClick={(e) => {\n                    e.stopPropagation();\n                    if (action.action === 'dismiss' && onDismiss) {\n                      onDismiss();\n                    } else if (typeof action.action === 'function') {\n                      action.action();\n                    } else if (onAction) {\n                      onAction(action);\n                    }\n                  }}\n                >\n                  {action.label}\n                </Button>\n              ))}\n            </Group>\n          )}\n        </Stack>\n      </Group>\n    </Box>\n  );\n}","'use client';\n\nimport React from 'react';\nimport { Paper, Title, Text } from '@mantine/core';\n\nexport function NotificationCenter() {\n  return (\n    <Paper shadow=\"sm\" radius=\"md\" p=\"lg\">\n      <Title order={4}>Notification Center</Title>\n      <Text c=\"dimmed\" size=\"sm\">Full notification center coming soon</Text>\n    </Paper>\n  );\n}","'use client';\n\nimport React from 'react';\nimport { Paper, Title, Text } from '@mantine/core';\n\ninterface NotificationPreferencesProps {\n  preferences: any;\n  onChange: (preferences: any) => void;\n}\n\nexport function NotificationPreferences({ preferences, onChange }: NotificationPreferencesProps) {\n  return (\n    <Paper shadow=\"sm\" radius=\"md\" p=\"lg\">\n      <Title order={4}>Notification Preferences</Title>\n      <Text c=\"dimmed\" size=\"sm\">Preference management coming soon</Text>\n    </Paper>\n  );\n}","'use client';\n\nimport React, { createContext, useContext, useEffect, ReactNode } from 'react';\nimport { notifications as notificationService } from '../services/notification.service';\nimport { NotificationConfig } from '../types';\n\ninterface NotificationContextValue {\n  service: typeof notificationService;\n}\n\nconst NotificationContext = createContext<NotificationContextValue | undefined>(undefined);\n\ninterface NotificationProviderProps {\n  children: ReactNode;\n  config?: NotificationConfig;\n}\n\nexport function NotificationProvider({ children, config }: NotificationProviderProps) {\n  useEffect(() => {\n    if (config) {\n      notificationService.configure(config);\n    }\n  }, [config]);\n\n  const value: NotificationContextValue = {\n    service: notificationService,\n  };\n\n  return (\n    <NotificationContext.Provider value={value}>\n      {children}\n    </NotificationContext.Provider>\n  );\n}\n\nexport function useNotificationContext() {\n  const context = useContext(NotificationContext);\n  if (context === undefined) {\n    throw new Error('useNotificationContext must be used within a NotificationProvider');\n  }\n  return context;\n}"],"mappings":"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","names":["notifications","notifications","import_react","import_react","notifications","import_core","import_icons_react","import_jsx_runtime","notifications","import_core","import_jsx_runtime","import_core","import_jsx_runtime","import_react","import_jsx_runtime"]}