@qtalo/qt-ui-library 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["days: CalendarDay[]","toasts: ToastItem[]","positionClasses: Record<ToastPosition, string>","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/toast/toast-store.ts","../src/primitives/toast/toast.tsx","../src/primitives/toast/toaster.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/airtable.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/types/sizes.ts","../src/patterns/preview-card/preview-card.tsx","../src/patterns/search-input/search-input.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type JSX,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableProps = {\n as?: keyof JSX.IntrinsicElements;\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\nexport function Pressable({\n as: Component = \"div\",\n disabled = false,\n onPress,\n className,\n children,\n}: PressableProps) {\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport type ToastItem = {\n id: string;\n content: ReactNode;\n position: ToastPosition;\n duration: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n};\n","import type { ReactNode } from \"react\";\n\nimport { toastStore, type ToastPosition } from \"./toast-store\";\n\nexport type ShowToastOptions = {\n content: ReactNode;\n duration?: number;\n position?: ToastPosition;\n};\n\nfunction showToast({\n content,\n duration = 4000,\n position = \"bottom-right\",\n}: ShowToastOptions) {\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({\n content,\n ...options,\n });\n}\n","import { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { toastStore, type ToastItem, type ToastPosition } from \"./toast-store\";\n\n// Position classes\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\n// Toaster\nexport function Toaster() {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const timers = useRef<Map<string, number>>(new Map());\n\n /* Subscribe once */\n useEffect(() => {\n return toastStore.subscribe(setToasts);\n }, []);\n\n // Timer helpers\n\n const clearTimer = useCallback((id: string) => {\n const timer = timers.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timers.current.delete(id);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(() => {\n toastStore.remove(toast.id);\n }, toast.duration);\n\n timers.current.set(toast.id, timeout);\n },\n [clearTimer]\n );\n\n const pauseAll = () => {\n timers.current.forEach(clearTimeout);\n timers.current.clear();\n };\n\n const restartAll = () => {\n toasts.forEach((toast, index) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(\n () => {\n toastStore.remove(toast.id);\n },\n toast.duration + index * 120\n );\n\n timers.current.set(toast.id, timeout);\n });\n };\n\n /* Start timers when new toasts appear */\n useEffect(() => {\n toasts.forEach((toast) => {\n if (!timers.current.has(toast.id)) {\n startTimer(toast);\n }\n });\n }, [toasts, startTimer]);\n\n /* Group by position */\n const grouped = toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastItem[]>\n );\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, ToastItem[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"fixed z-1000 flex flex-col items-end gap-2 p-4\",\n positionClasses[position]\n )}\n onMouseEnter={pauseAll}\n onMouseLeave={restartAll}\n >\n {items.map((toast) => (\n <Fragment key={toast.id}>{toast.content}</Fragment>\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionProps = {\n children: ReactNode;\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n if (type === \"single\") {\n return defaultValue ? new Set([defaultValue as string]) : new Set();\n }\n return Array.isArray(defaultValue)\n ? new Set(defaultValue)\n : new Set([defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n const next = new Set(prev);\n if (type === \"single\") {\n // Close all items and open only the clicked one\n if (next.has(value)) {\n return new Set(); // Close if already open\n }\n return new Set([value]);\n } else {\n // Toggle the item in multiple mode\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n return next;\n }\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className}>{children}</div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLButtonElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n type=\"button\"\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AirtableIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M16.56 6.99L6.49 11.16C5.93 11.39 5.94 12.18 6.5 12.41L16.61 16.42C17.5 16.77 18.49 16.77 19.37 16.42L29.48 12.41C30.05 12.18 30.05 11.39 29.49 11.16L19.43 6.99C18.51 6.61 17.48 6.61 16.56 6.99\"\n fill=\"#FCB400\"\n />\n <path\n d=\"M18.89 18.6V28.62C18.89 29.09 19.37 29.42 19.81 29.25L31.07 24.87C31.2 24.82 31.31 24.74 31.38 24.63C31.46 24.51 31.5 24.38 31.5 24.25V14.23C31.5 13.76 31.02 13.43 30.58 13.61L19.31 17.98C19.19 18.03 19.08 18.11 19 18.23C18.93 18.34 18.89 18.47 18.89 18.6Z\"\n fill=\"#18BFFF\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L12.57 20.9L5.52 24.28C5.07 24.5 4.5 24.17 4.5 23.67V14.28C4.5 14.1 4.59 13.94 4.72 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.06 13.59 5.3 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"#F82B60\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L4.71 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.05 13.59 5.29 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"black\"\n fillOpacity=\"0.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <div className=\"contents\">\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={\n <MinusIcon size={12} className=\"text-neutral-900\" />\n }\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n </div>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({count})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\ntype DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child) => cloneElement(child, {}))}\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","export const PREVIEW_CARD_HEIGHT_SIZE = {\n normal: 165,\n compact: 60,\n};\n","import type { ReactNode } from \"react\";\n\nimport { PREVIEW_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type PreviewStatusType = \"fire\" | \"insight\" | \"done\";\nexport type PreviewActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusConfig = {\n label?: string;\n onAction?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type PreviewStatuses = Partial<Record<PreviewStatusType, StatusConfig>>;\nexport type PreviewActions = Partial<Record<PreviewActionType, ActionConfig>>;\n\nexport type PreviewCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statuses?: PreviewStatuses;\n actions?: PreviewActions;\n\n // Density\n density?: Density;\n};\n\nconst PREVIEW_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction PreviewCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction PreviewStatusesList({\n statuses,\n density,\n}: {\n statuses: PreviewStatuses;\n density?: Density;\n}) {\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statuses) as PreviewStatusType[]).map((status) => {\n const config = statuses[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onAction}\n density={density}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nfunction PreviewActionsList({ actions }: { actions: PreviewActions }) {\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(actions) as PreviewActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...PREVIEW_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function PreviewCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statuses = {},\n actions = {},\n density = \"normal\",\n}: PreviewCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `h-[${PREVIEW_CARD_HEIGHT_SIZE.normal}px]`\n : `h-[${PREVIEW_CARD_HEIGHT_SIZE.compact}px]`\n )}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <PreviewStatusesList statuses={statuses} />\n <PreviewActionsList actions={actions} />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_auto_minmax(0,1fr)_auto_auto_auto] items-center gap-2\">\n {icon}\n\n <PreviewStatusesList statuses={statuses} density={density} />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <PreviewActionsList actions={actions} />\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { useState } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["days: CalendarDay[]","toasts: ToastItem[]","positionClasses: Record<ToastPosition, string>","align: Align","DIRECTION_CLASS: Record<ArrowDirection, string>","colorKey: AvatarColorKey","actionGroups: Record<string, BulkAction[]>","densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }>"],"sources":["../src/tokens/colors.ts","../src/utils/calendar.ts","../src/utils/classnames.ts","../src/utils/string.ts","../src/utils/color.ts","../src/utils/hooks/use-long-press.ts","../src/primitives/button.tsx","../src/primitives/checkbox.tsx","../src/primitives/dropdown/dropdown-context.tsx","../src/primitives/dropdown/dropdown.tsx","../src/primitives/input.tsx","../src/primitives/pressable.tsx","../src/primitives/stop-propagation.tsx","../src/primitives/toast/toast-store.ts","../src/primitives/toast/toast.tsx","../src/primitives/toast/toaster.tsx","../src/primitives/tooltip.tsx","../src/components/accordion/accordion-context.tsx","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion-item.tsx","../src/components/accordion/accordion-trigger.tsx","../src/components/accordion/accordion-content.tsx","../src/icons/icon.tsx","../src/icons/brand/logo.tsx","../src/icons/integrations/airtable.tsx","../src/icons/integrations/asana.tsx","../src/icons/integrations/clickup.tsx","../src/icons/integrations/gmail.tsx","../src/icons/integrations/google-calendar.tsx","../src/icons/integrations/jira.tsx","../src/icons/integrations/outlook-calendar.tsx","../src/icons/integrations/outlook.tsx","../src/icons/integrations/slack.tsx","../src/icons/integrations/teams.tsx","../src/icons/states/checkbox.tsx","../src/icons/states/check-cirlcle-empty.tsx","../src/icons/states/check-circle.tsx","../src/icons/states/fire.tsx","../src/icons/states/insight.tsx","../src/icons/states/not-fire.tsx","../src/icons/states/read.tsx","../src/icons/states/unread.tsx","../src/icons/system/account.tsx","../src/icons/system/add.tsx","../src/icons/system/arrow.tsx","../src/icons/system/calendar.tsx","../src/icons/system/close.tsx","../src/icons/system/compact-density.tsx","../src/icons/system/copy.tsx","../src/icons/system/dark.tsx","../src/icons/system/external-link.tsx","../src/icons/system/light.tsx","../src/icons/system/minus.tsx","../src/icons/system/more.tsx","../src/icons/system/normal-density.tsx","../src/icons/system/search.tsx","../src/icons/system/summary.tsx","../src/icons/system/system.tsx","../src/components/badge/badge.tsx","../src/components/card/card.tsx","../src/components/card/card-layout.tsx","../src/components/card/card-sidebar.tsx","../src/components/card/card-header.tsx","../src/components/card/card-title.tsx","../src/components/card/card-content.tsx","../src/components/card/card-footer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/patterns/avatar/types/avatar.ts","../src/patterns/avatar/avatar.tsx","../src/patterns/badges/status-badge.tsx","../src/patterns/buttons/icon-button/icon-button.tsx","../src/patterns/tooltips/info-tooltip.tsx","../src/patterns/bulk-actions/bulk-actions.tsx","../src/components/skeleton/skeleton.tsx","../src/patterns/bulk-actions/bulk-actions-skeleton.tsx","../src/patterns/buttons/filter-button/filter-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button.tsx","../src/patterns/buttons/icon-count-button/icon-count-button-skeleton.tsx","../src/patterns/dropdowns/action-menu/action-menu.tsx","../src/patterns/dropdowns/date-picker/date-picker.tsx","../src/patterns/filter-bar/filter-bar.tsx","../src/patterns/filter-bar/filter-bar-skeleton.tsx","../src/patterns/layout/divider.tsx","../src/patterns/integration-bar/integration-bar.tsx","../src/patterns/integration-bar/integration-bar-skeleton.tsx","../src/types/sizes.ts","../src/patterns/preview-card/preview-card.tsx","../src/patterns/preview-card/preview-card-skeleton.tsx","../src/patterns/search-input/search-input.tsx"],"sourcesContent":["/**\n * Brand color tokens\n *\n * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css\n *\n * The single source of truth is src/styles/tailwind.css (@theme directive).\n * These TypeScript tokens are provided for programmatic access in components.\n *\n * When updating colors:\n * 1. Update the value in src/styles/tailwind.css first\n * 2. Then update the corresponding value here to keep them in sync\n *\n * Usage:\n * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)\n * - For programmatic access: Import and use these tokens\n */\nexport const colors = {\n brandPrimary: \"#6558fd\", // Must match --color-brand-primary in tailwind.css\n brandSecondary: \"#ceff1a\", // Must match --color-brand-secondary in tailwind.css\n} as const;\n","/**\n * Calendar utility functions using native Date API\n */\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\nconst WEEKDAYS = [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"] as const;\n\n/**\n * Get the number of days in a given month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n // month is 0-indexed (0 = January, 11 = December)\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)\n * Returns 0-6 where 0 is Sunday\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)\n * Sunday (0) becomes 6, Monday (1) becomes 0, etc.\n */\nexport function toMondayBased(dayOfWeek: number): number {\n return dayOfWeek === 0 ? 6 : dayOfWeek - 1;\n}\n\n/**\n * Format a date to \"Dec 3, 2025\" format\n */\nexport function formatDate(date: Date | null): string {\n if (!date) return \"\";\n const monthName = MONTH_NAMES[date.getMonth()] ?? \"\";\n const monthAbbr = monthName.substring(0, 3);\n const day = date.getDate();\n const year = date.getFullYear();\n return `${monthAbbr} ${day}, ${year}`;\n}\n\n/**\n * Parse MM/DD/YYYY format to Date\n */\nexport function parseDate(dateString: string): Date | null {\n if (!dateString) return null;\n const parts = dateString.split(\"/\");\n if (parts.length !== 3) return null;\n const month = parseInt(parts[0], 10) - 1; // 0-indexed\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n // Validate the date\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== month ||\n date.getDate() !== day\n ) {\n return null;\n }\n return date;\n}\n\n/**\n * Check if two dates are the same day\n */\nexport function isSameDay(date1: Date | null, date2: Date | null): boolean {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n}\n\n/**\n * Check if a date is today\n */\nexport function isToday(date: Date): boolean {\n const today = new Date();\n return isSameDay(date, today);\n}\n\n/**\n * Check if date1 is before date2 (ignoring time)\n */\nexport function isDateBefore(date1: Date, date2: Date): boolean {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1 < d2;\n}\n\n/**\n * Check if a date is within a range (inclusive)\n */\nexport function isDateInRange(\n date: Date,\n startDate: Date | null,\n endDate: Date | null\n): boolean {\n if (!startDate || !endDate) return false;\n const d = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const start = new Date(\n startDate.getFullYear(),\n startDate.getMonth(),\n startDate.getDate()\n );\n const end = new Date(\n endDate.getFullYear(),\n endDate.getMonth(),\n endDate.getDate()\n );\n return d >= start && d <= end;\n}\n\n/**\n * Format a date or date range for display\n * Single day: \"Dec 3, 2025\"\n * Same year range: \"Jan 5 - Jan 17, 2026\"\n * Different years: \"Nov 5, 2025 - Jan 17, 2026\"\n */\nexport function formatDateRange(\n startDate: Date | null,\n endDate: Date | null\n): string {\n if (!startDate) return \"\";\n\n // If only start date exists, treat as single date\n if (!endDate) {\n return formatSingleDate(startDate);\n }\n\n const isSameDay =\n startDate.getFullYear() === endDate.getFullYear() &&\n startDate.getMonth() === endDate.getMonth() &&\n startDate.getDate() === endDate.getDate();\n\n if (isSameDay) {\n return formatSingleDate(startDate);\n }\n\n const startMonth = MONTH_NAMES[startDate.getMonth()]?.substring(0, 3) ?? \"\";\n const startDay = startDate.getDate();\n const startYear = startDate.getFullYear();\n\n const endMonth = MONTH_NAMES[endDate.getMonth()]?.substring(0, 3) ?? \"\";\n const endDay = endDate.getDate();\n const endYear = endDate.getFullYear();\n\n if (startYear === endYear) {\n return `${startMonth} ${startDay} - ${endMonth} ${endDay}, ${startYear}`;\n }\n\n return `${startMonth} ${startDay}, ${startYear} - ${endMonth} ${endDay}, ${endYear}`;\n}\n\n/**\n * Format a single date\n * \"Dec 3, 2025\"\n */\nfunction formatSingleDate(date: Date): string {\n const month = MONTH_NAMES[date.getMonth()]?.substring(0, 3) ?? \"\";\n const day = date.getDate();\n const year = date.getFullYear();\n\n return `${month} ${day}, ${year}`;\n}\n\n/**\n * Get month name\n */\nexport function getMonthName(month: number): string {\n return MONTH_NAMES[month] ?? \"\";\n}\n\n/**\n * Get weekday labels\n */\nexport function getWeekdays(): readonly string[] {\n return WEEKDAYS;\n}\n\n/**\n * Calendar day metadata\n */\nexport type CalendarDay = {\n date: Date;\n day: number;\n isCurrentMonth: boolean;\n};\n\n/**\n * Generate a full calendar grid with days from previous, current, and next month\n * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)\n * The first column is always Monday\n */\nexport function generateCalendarDays(\n year: number,\n month: number\n): CalendarDay[] {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDayMondayBased = toMondayBased(getFirstDayOfMonth(year, month));\n\n const days: CalendarDay[] = [];\n\n // Add days from previous month\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\n\n // Start from the day that fills the first empty slot\n const startDayPrevMonth = daysInPrevMonth - firstDayMondayBased + 1;\n for (let day = startDayPrevMonth; day <= daysInPrevMonth; day++) {\n days.push({\n date: new Date(prevYear, prevMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n // Add all days from current month\n for (let day = 1; day <= daysInMonth; day++) {\n days.push({\n date: new Date(year, month, day),\n day,\n isCurrentMonth: true,\n });\n }\n\n // Calculate how many days from next month are needed to complete the grid\n const totalDays = days.length;\n const remainingDays = (7 - (totalDays % 7)) % 7; // Ensure we get a multiple of 7\n\n // Add days from next month\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n for (let day = 1; day <= remainingDays; day++) {\n days.push({\n date: new Date(nextYear, nextMonth, day),\n day,\n isCurrentMonth: false,\n });\n }\n\n return days;\n}\n","import clsx, { type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export const capitalize = (s: string) => {\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport function stringHash(input: string): number {\n let hash = 0;\n\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash) + i * 31;\n }\n\n return hash + input.length * 997;\n}\n\nexport function getInitials(value: string) {\n const parts = value.trim().split(/\\s+/);\n const initials =\n parts.length >= 2\n ? parts[0][0] + parts[1][0]\n : (parts[0]?.substring(0, 2) ?? \"\");\n\n return initials.toUpperCase();\n}\n","import { stringHash } from \"./string\";\n\nexport function pickColorFromPalette<T>(\n value: string,\n palette: readonly T[]\n): T {\n const normalized = value.trim().toLowerCase();\n const hash = stringHash(normalized);\n const index = Math.abs(hash) % palette.length;\n return palette[index];\n}\n","import { useRef } from \"react\";\n\nexport function useLongPress(\n onLongPress: () => void,\n onClick: () => void,\n delay = 450\n) {\n const timer = useRef<number | null>(null);\n const isLongPress = useRef(false);\n\n const start = () => {\n isLongPress.current = false;\n timer.current = window.setTimeout(() => {\n onLongPress();\n isLongPress.current = true;\n }, delay);\n };\n\n const clear = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n };\n\n const click = () => {\n if (!isLongPress.current) {\n onClick();\n }\n };\n\n return {\n onMouseDown: start,\n onMouseUp: clear,\n onMouseLeave: clear,\n onTouchStart: start,\n onTouchEnd: clear,\n onClick: click,\n };\n}\n","import { type ButtonHTMLAttributes } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n className?: string;\n};\n\nexport function Button({ className, children, ...props }: ButtonProps) {\n return (\n <button {...props} className={cn(\"btn-base\", className)}>\n {children}\n </button>\n );\n}\n","import {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CheckboxProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n indeterminate?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n children?: ReactNode;\n icon?: ReactNode;\n indeterminateIcon?: ReactNode;\n};\n\nexport function Checkbox({\n checked,\n defaultChecked,\n icon,\n indeterminate,\n indeterminateIcon,\n onChange,\n disabled,\n children,\n className,\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Internal state for uncontrolled usage\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked ?? false\n );\n\n const isChecked = checked ?? internalChecked;\n\n // Set indeterminate state\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminate);\n }\n }, [indeterminate]);\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.checked;\n\n if (checked === undefined) {\n setInternalChecked(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <label\n className={cn(\n \"relative inline-flex w-fit cursor-pointer items-center gap-2 select-none\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n >\n {/* Hidden native checkbox */}\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={cn(\n \"absolute h-px w-px overflow-hidden p-0 whitespace-nowrap\",\n \"[clip-path:inset(50%)]\",\n \"border-0\"\n )}\n disabled={disabled}\n onChange={handleChange}\n {...(checked !== undefined ? { checked } : { defaultChecked })}\n />\n\n {/* Visual checkbox */}\n <span\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n tabIndex={-1}\n data-state={\n indeterminate ? \"indeterminate\" : isChecked ? \"checked\" : \"unchecked\"\n }\n className=\"checkbox-box inline-flex items-center justify-center\"\n >\n <span\n className={cn(\n \"checkbox-icon\",\n !(isChecked || indeterminate) && \"opacity-0\"\n )}\n >\n {indeterminate ? (indeterminateIcon ?? \"—\") : (icon ?? \"✓\")}\n </span>\n </span>\n\n {/* Label */}\n {children && <span className=\"checkbox-label\">{children}</span>}\n </label>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype DropdownContextValue = {\n close: () => void;\n};\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\"useDropdown must be used inside Dropdown\");\n }\n return ctx;\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { DropdownContext } from \"./dropdown-context\";\n\ntype DropdownAlign = \"start\" | \"end\";\n\nexport type DropdownProps = {\n trigger: ReactNode;\n children: ReactNode;\n align?: DropdownAlign;\n disabled?: boolean;\n};\n\nexport function Dropdown({\n trigger,\n children,\n align = \"start\",\n disabled = false,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const closeTimeout = useRef<number | null>(null);\n\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n // Position the dropdown content based on the trigger and alignment\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n let left = triggerRect.left;\n\n if (align === \"end\") {\n left = triggerRect.right - contentRect.width;\n }\n\n setPosition({\n top: triggerRect.bottom,\n left,\n });\n }, [open, align]);\n\n // Open the dropdown on hover or click\n function openDropdown() {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n closeTimeout.current = null;\n }\n setOpen(true);\n }\n\n // Schedule the close of the dropdown after a delay\n function scheduleClose() {\n closeTimeout.current = window.setTimeout(() => {\n setOpen(false);\n }, 120);\n }\n\n // Close the dropdown if clicked outside\n useEffect(() => {\n function onClickOutside(e: MouseEvent) {\n const target = e.target as Node;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n }\n\n document.addEventListener(\"mousedown\", onClickOutside);\n return () => document.removeEventListener(\"mousedown\", onClickOutside);\n }, []);\n\n // Clear the timeout when the component unmounts\n useEffect(() => {\n return () => {\n if (closeTimeout.current) {\n clearTimeout(closeTimeout.current);\n }\n };\n }, []);\n\n return (\n <DropdownContext.Provider value={{ close: () => setOpen(false) }}>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n >\n {trigger}\n </div>\n\n {/* Content (Portal) */}\n {open &&\n !disabled &&\n createPortal(\n <div\n ref={contentRef}\n onMouseEnter={openDropdown}\n onMouseLeave={scheduleClose}\n style={{\n position: \"fixed\",\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n visibility: position ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n >\n {children}\n </div>,\n document.body\n )}\n </DropdownContext.Provider>\n );\n}\n","import { useState, type ChangeEvent } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype InputProps = {\n type?: \"text\" | \"email\" | \"password\";\n value?: string;\n defaultValue?: string;\n disabled?: boolean;\n error?: boolean;\n placeholder?: string;\n onChange?: (value: string) => void;\n className?: string;\n};\n\nexport function Input({\n type = \"text\",\n value,\n defaultValue,\n disabled = false,\n error = false,\n placeholder,\n onChange,\n className,\n}: InputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const next = e.target.value;\n\n if (!isControlled) {\n setInternalValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <input\n type={type}\n value={currentValue}\n placeholder={placeholder}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n aria-invalid={error || undefined}\n onChange={handleChange}\n className={cn(\n \"bg-transparent outline-none\",\n disabled && \"pointer-events-none\",\n className\n )}\n />\n );\n}\n","import {\n useCallback,\n type ComponentPropsWithoutRef,\n type ElementType,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype PressableOwnProps = {\n disabled?: boolean;\n onPress?: () => void;\n className?: string;\n children?: ReactNode;\n};\n\ntype PressableProps<T extends ElementType = \"div\"> = PressableOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof PressableOwnProps | \"as\">;\n\nexport function Pressable<T extends ElementType = \"div\">({\n as,\n disabled = false,\n onPress,\n className,\n children,\n ...props\n}: PressableProps<T>) {\n const Component = as || \"div\";\n const handleClick = useCallback(() => {\n if (disabled) return;\n onPress?.();\n }, [disabled, onPress]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onPress?.();\n }\n },\n [disabled, onPress]\n );\n\n return (\n <Component\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"select-none\",\n !disabled && \"cursor-pointer\",\n disabled && \"pointer-events-none opacity-50\",\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\ntype StopPropagationProps = {\n children: ReactNode;\n};\n\n/**\n * Prevents click and keyboard events from bubbling to parent components\n * (e.g. Pressable, Card, ListRow).\n */\nexport function StopPropagation({ children }: StopPropagationProps) {\n return (\n <div\n className=\"contents\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport type ToastItem = {\n id: string;\n content: ReactNode;\n position: ToastPosition;\n duration: number;\n};\n\ntype Listener = (toasts: ToastItem[]) => void;\n\nlet toasts: ToastItem[] = [];\nconst listeners = new Set<Listener>();\n\nfunction notify() {\n listeners.forEach((l) => l(toasts));\n}\n\nexport const toastStore = {\n subscribe(listener: Listener) {\n listeners.add(listener);\n listener(toasts);\n\n return () => {\n listeners.delete(listener);\n };\n },\n\n add(toast: ToastItem) {\n toasts = [toast, ...toasts];\n notify();\n },\n\n remove(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n },\n};\n","import type { ReactNode } from \"react\";\n\nimport { toastStore, type ToastPosition } from \"./toast-store\";\n\nexport type ShowToastOptions = {\n content: ReactNode;\n duration?: number;\n position?: ToastPosition;\n};\n\nfunction showToast({\n content,\n duration = 4000,\n position = \"bottom-right\",\n}: ShowToastOptions) {\n const id = crypto.randomUUID();\n\n toastStore.add({\n id,\n content,\n duration,\n position,\n });\n\n return {\n id,\n dismiss: () => toastStore.remove(id),\n };\n}\n\nfunction isShowToastOptions(value: unknown): value is ShowToastOptions {\n return typeof value === \"object\" && value !== null && \"content\" in value;\n}\n\nexport function toast(\n content: ReactNode | ShowToastOptions,\n options?: Omit<ShowToastOptions, \"content\">\n) {\n if (isShowToastOptions(content)) {\n return showToast(content);\n }\n\n return showToast({\n content,\n ...options,\n });\n}\n","import { Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nimport { toastStore, type ToastItem, type ToastPosition } from \"./toast-store\";\n\n// Position classes\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-left\": \"top-0 left-0 items-start\",\n \"top-center\": \"top-0 left-1/2 -translate-x-1/2 items-center\",\n \"top-right\": \"top-0 right-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n};\n\n// Toaster\nexport function Toaster() {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const timers = useRef<Map<string, number>>(new Map());\n\n /* Subscribe once */\n useEffect(() => {\n return toastStore.subscribe(setToasts);\n }, []);\n\n // Timer helpers\n\n const clearTimer = useCallback((id: string) => {\n const timer = timers.current.get(id);\n if (timer) {\n clearTimeout(timer);\n timers.current.delete(id);\n }\n }, []);\n\n const startTimer = useCallback(\n (toast: ToastItem) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(() => {\n toastStore.remove(toast.id);\n }, toast.duration);\n\n timers.current.set(toast.id, timeout);\n },\n [clearTimer]\n );\n\n const pauseAll = () => {\n timers.current.forEach(clearTimeout);\n timers.current.clear();\n };\n\n const restartAll = () => {\n toasts.forEach((toast, index) => {\n clearTimer(toast.id);\n\n const timeout = window.setTimeout(\n () => {\n toastStore.remove(toast.id);\n },\n toast.duration + index * 120\n );\n\n timers.current.set(toast.id, timeout);\n });\n };\n\n /* Start timers when new toasts appear */\n useEffect(() => {\n toasts.forEach((toast) => {\n if (!timers.current.has(toast.id)) {\n startTimer(toast);\n }\n });\n }, [toasts, startTimer]);\n\n /* Group by position */\n const grouped = toasts.reduce(\n (acc, toast) => {\n (acc[toast.position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastItem[]>\n );\n\n return createPortal(\n <>\n {(Object.entries(grouped) as [ToastPosition, ToastItem[]][]).map(\n ([position, items]) => (\n <div\n key={position}\n className={cn(\n \"fixed z-1000 flex flex-col items-end gap-2 p-4\",\n positionClasses[position]\n )}\n onMouseEnter={pauseAll}\n onMouseLeave={restartAll}\n >\n {items.map((toast) => (\n <Fragment key={toast.id}>{toast.content}</Fragment>\n ))}\n </div>\n )\n )}\n </>,\n document.body\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type TooltipPosition =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n className?: string;\n};\n\nfunction getHorizontalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.left;\n if (align === \"end\") return trigger.right - tooltip.width;\n return trigger.left + trigger.width / 2 - tooltip.width / 2;\n}\n\nfunction getVerticalAlign(trigger: DOMRect, tooltip: DOMRect, align: Align) {\n if (align === \"start\") return trigger.top;\n if (align === \"end\") return trigger.bottom - tooltip.height;\n return trigger.top + trigger.height / 2 - tooltip.height / 2;\n}\n\nexport function Tooltip({\n children,\n content,\n position = \"top\",\n delay = 120,\n className,\n}: TooltipProps) {\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n\n const [open, setOpen] = useState(false);\n const [coords, setCoords] = useState<{ top: number; left: number } | null>(\n null\n );\n\n const openTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delay);\n };\n\n const closeTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setOpen(false);\n };\n\n useLayoutEffect(() => {\n if (!open || !triggerRef.current || !tooltipRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const tooltip = tooltipRef.current.getBoundingClientRect();\n const offset = 4;\n\n const [side, rawAlign] = position.split(\"-\") as [Side, Align | undefined];\n const align: Align = rawAlign ?? \"center\";\n\n let top = 0;\n let left = 0;\n\n if (side === \"top\" || side === \"bottom\") {\n top =\n side === \"top\"\n ? trigger.top - tooltip.height - offset\n : trigger.bottom + offset;\n\n left = getHorizontalAlign(trigger, tooltip, align);\n } else {\n left =\n side === \"left\"\n ? trigger.left - tooltip.width - offset\n : trigger.right + offset;\n\n top = getVerticalAlign(trigger, tooltip, align);\n }\n\n setCoords((prev) =>\n prev && prev.top === top && prev.left === left ? prev : { top, left }\n );\n }, [open, position]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <>\n {/* Trigger */}\n <div\n ref={triggerRef}\n className=\"inline-flex\"\n onMouseEnter={openTooltip}\n onMouseLeave={closeTooltip}\n onFocus={openTooltip}\n onBlur={closeTooltip}\n >\n {children}\n </div>\n\n {/* Tooltip */}\n {open &&\n createPortal(\n <div\n ref={tooltipRef}\n role=\"tooltip\"\n style={{\n position: \"fixed\",\n top: coords?.top ?? 0,\n left: coords?.left ?? 0,\n visibility: coords ? \"visible\" : \"hidden\",\n zIndex: 1000,\n }}\n className={cn(className)}\n >\n {content}\n </div>,\n document.body\n )}\n </>\n );\n}\n","import { createContext, useContext } from \"react\";\n\ntype AccordionContextValue = {\n openItems: Set<string>;\n toggleItem: (value: string) => void;\n type: \"single\" | \"multiple\";\n};\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n null\n);\n\nexport function useAccordion() {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"useAccordion must be used inside Accordion\");\n }\n return ctx;\n}\n","import { useState, type ReactNode } from \"react\";\n\nimport { AccordionContext } from \"./accordion-context\";\n\nexport type AccordionProps = {\n children: ReactNode;\n type?: \"single\" | \"multiple\";\n defaultValue?: string | string[];\n className?: string;\n};\n\nexport function Accordion({\n children,\n type = \"single\",\n defaultValue,\n className,\n}: AccordionProps) {\n const getInitialOpenItems = (): Set<string> => {\n if (!defaultValue) return new Set();\n if (type === \"single\") {\n return defaultValue ? new Set([defaultValue as string]) : new Set();\n }\n return Array.isArray(defaultValue)\n ? new Set(defaultValue)\n : new Set([defaultValue]);\n };\n\n const [openItems, setOpenItems] = useState<Set<string>>(getInitialOpenItems);\n\n const toggleItem = (value: string) => {\n setOpenItems((prev) => {\n const next = new Set(prev);\n if (type === \"single\") {\n // Close all items and open only the clicked one\n if (next.has(value)) {\n return new Set(); // Close if already open\n }\n return new Set([value]);\n } else {\n // Toggle the item in multiple mode\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n return next;\n }\n });\n };\n\n return (\n <AccordionContext.Provider value={{ openItems, toggleItem, type }}>\n <div className={className}>{children}</div>\n </AccordionContext.Provider>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionItemProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionItem({\n value,\n children,\n className,\n ...props\n}: AccordionItemProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import {\n cloneElement,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\n\nimport { Button } from \"@primitives/button\";\nimport { Pressable } from \"@primitives/pressable\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionTriggerProps = {\n value: string;\n children: ReactNode;\n className?: string;\n asChild?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport function AccordionTrigger({\n value,\n children,\n className,\n asChild = false,\n onClick,\n ...props\n}: AccordionTriggerProps) {\n const { toggleItem, openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n const handleClick = (e?: MouseEvent<HTMLButtonElement>) => {\n toggleItem(value);\n if (e && onClick) {\n onClick(e);\n }\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children, {\n onClick: handleClick,\n \"aria-expanded\": isOpen,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n } as Record<string, unknown>);\n }\n\n return (\n <Pressable\n as={Button}\n type=\"button\"\n className={className}\n onPress={() => handleClick(undefined)}\n aria-expanded={isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n {...props}\n >\n {children}\n </Pressable>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { useAccordion } from \"./accordion-context\";\n\nexport type AccordionContentProps = {\n value: string;\n children: ReactNode;\n className?: string;\n} & ComponentPropsWithoutRef<\"div\">;\n\nexport function AccordionContent({\n value,\n children,\n className,\n ...props\n}: AccordionContentProps) {\n const { openItems } = useAccordion();\n const isOpen = openItems.has(value);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={className}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-value={value}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import type { SVGProps } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\nexport type IconProps = SVGProps<SVGSVGElement> & {\n size?: number;\n};\n\nexport function Icon({\n size = 16,\n className,\n viewBox = \"0 0 24 24\",\n children,\n ...props\n}: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n fill=\"none\"\n aria-hidden\n focusable=\"false\"\n className={cn(\"shrink-0\", className)}\n {...props}\n >\n {children}\n </svg>\n );\n}\n","\"use client\";\n\nimport { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LogoIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 32 32\" {...props}>\n <path\n d=\"M25.82 25.44C28.07 23.02 29.5 19.74 29.5 15.92C29.5 7.7 22.8 2 15.98 2C9.16 2 2.5 7.7 2.5 15.92C2.5 24.15 9.2 29.84 15.98 29.84C18.23 29.84 20.43 29.22 22.41 28.13L23.61 29.38C24 29.77 24.54 30 25.12 30C26.32 30 27.29 29.03 27.29 27.82C27.29 27.27 27.05 26.76 26.7 26.33L25.81 25.44H25.82ZM22.18 21.73L19.66 19.12C19.31 18.69 18.72 18.46 18.15 18.46C16.95 18.46 15.98 19.47 15.98 20.64C15.98 21.22 16.25 21.73 16.64 22.13L18.77 24.35C17.88 24.66 16.95 24.86 15.98 24.86C11.72 24.86 7.96 21.27 7.96 15.93C7.96 10.58 11.72 7 15.98 7C20.24 7 24.03 10.58 24.03 15.93C24.03 18.23 23.34 20.22 22.18 21.74V21.73Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AirtableIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M16.56 6.99L6.49 11.16C5.93 11.39 5.94 12.18 6.5 12.41L16.61 16.42C17.5 16.77 18.49 16.77 19.37 16.42L29.48 12.41C30.05 12.18 30.05 11.39 29.49 11.16L19.43 6.99C18.51 6.61 17.48 6.61 16.56 6.99\"\n fill=\"#FCB400\"\n />\n <path\n d=\"M18.89 18.6V28.62C18.89 29.09 19.37 29.42 19.81 29.25L31.07 24.87C31.2 24.82 31.31 24.74 31.38 24.63C31.46 24.51 31.5 24.38 31.5 24.25V14.23C31.5 13.76 31.02 13.43 30.58 13.61L19.31 17.98C19.19 18.03 19.08 18.11 19 18.23C18.93 18.34 18.89 18.47 18.89 18.6Z\"\n fill=\"#18BFFF\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L12.57 20.9L5.52 24.28C5.07 24.5 4.5 24.17 4.5 23.67V14.28C4.5 14.1 4.59 13.94 4.72 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.06 13.59 5.3 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"#F82B60\"\n />\n <path\n d=\"M16.26 19.12L12.91 20.74L4.71 13.82C4.77 13.77 4.82 13.73 4.89 13.7C5.05 13.59 5.29 13.57 5.5 13.65L16.2 17.89C16.74 18.1 16.79 18.87 16.26 19.12Z\"\n fill=\"black\"\n fillOpacity=\"0.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AsanaIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.46 8.33C9.99 8.33 8.8 9.5 8.8 10.94C8.8 12.38 9.99 13.55 11.46 13.55C12.92 13.55 14.11 12.38 14.11 10.94C14.11 9.5 12.92 8.33 11.46 8.33ZM4.55 8.33C3.08 8.33 1.89 9.5 1.89 10.94C1.89 12.38 3.08 13.55 4.55 13.55C6.02 13.55 7.21 12.38 7.21 10.94C7.21 9.5 6.02 8.33 4.55 8.33ZM10.66 5.06C10.66 6.5 9.47 7.67 8 7.67C6.53 7.67 5.34 6.5 5.34 5.06C5.34 3.61 6.53 2.44 8 2.44C9.47 2.44 10.66 3.61 10.66 5.06Z\"\n fill=\"#F06A6A\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ClickUpIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.03 11.43L10.65 17.81L7.23 13.84L18.05 4.5L28.78 13.85L25.35 17.81L18.03 11.43Z\"\n fill=\"url(#paint0_linear_5796_19610)\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.76 25.23L10.91 22.05C13.11 24.93 15.46 26.26 18.06 26.26C20.67 26.26 22.93 24.95 25.03 22.08L29.24 25.19C26.21 29.32 22.43 31.5 18.06 31.5C13.69 31.5 9.89 29.33 6.76 25.23Z\"\n fill=\"url(#paint1_linear_5796_19610)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19610\"\n x1=\"6.83\"\n y1=\"10.64\"\n x2=\"28.36\"\n y2=\"10.64\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FF02F0\" />\n <stop offset=\"1\" stopColor=\"#FFC800\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19610\"\n x1=\"6.37\"\n y1=\"26.25\"\n x2=\"28.82\"\n y2=\"26.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#8930FD\" />\n <stop offset=\"1\" stopColor=\"#49CCF9\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GmailIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M3.02 14.09H5.2V8.79L2.09 6.45V13.15C2.09 13.67 2.51 14.09 3.02 14.09Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.68 14.09H14.87C15.38 14.09 15.8 13.67 15.8 13.15V6.45L12.68 8.79\"\n fill=\"#34A853\"\n />\n <path\n d=\"M12.68 4.74V8.79L15.8 6.45V5.21C15.8 4.05 14.48 3.39 13.56 4.08\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M5.2 8.79V4.74L8.94 7.54L12.68 4.74V8.79L8.94 11.59\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M2.09 5.21V6.45L5.2 8.79V4.74L4.33 4.08C3.4 3.39 2.09 4.05 2.09 5.21Z\"\n fill=\"#C5221F\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function GoogleCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M25.1 10.89L18.71 10.18L10.89 10.89L10.18 18L10.89 25.1L18 25.99L25.1 25.1L25.82 17.82L25.1 10.89Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.81 21.92C13.28 21.56 12.91 21.04 12.71 20.34L13.94 19.83C14.06 20.26 14.25 20.59 14.53 20.83C14.81 21.06 15.14 21.18 15.54 21.18C15.94 21.18 16.29 21.05 16.58 20.81C16.87 20.56 17.01 20.25 17.01 19.87C17.01 19.48 16.86 19.17 16.55 18.92C16.25 18.68 15.87 18.56 15.41 18.56H14.7V17.34H15.33C15.73 17.34 16.06 17.23 16.33 17.02C16.6 16.8 16.74 16.51 16.74 16.14C16.74 15.81 16.62 15.55 16.37 15.35C16.13 15.15 15.83 15.05 15.46 15.05C15.09 15.05 14.81 15.15 14.59 15.34C14.38 15.54 14.22 15.77 14.13 16.05L12.91 15.55C13.07 15.09 13.36 14.68 13.8 14.33C14.24 13.98 14.79 13.81 15.47 13.81C15.97 13.81 16.41 13.9 16.81 14.1C17.21 14.29 17.52 14.56 17.75 14.9C17.97 15.24 18.09 15.63 18.09 16.05C18.09 16.49 17.98 16.86 17.77 17.16C17.56 17.46 17.3 17.69 17 17.85V17.93C17.4 18.09 17.73 18.35 17.99 18.7C18.25 19.04 18.38 19.46 18.38 19.94C18.38 20.42 18.25 20.86 18.01 21.23C17.76 21.61 17.43 21.91 17 22.13C16.56 22.34 16.08 22.45 15.54 22.45C14.92 22.46 14.34 22.28 13.81 21.92Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M21.37 15.8L20.03 16.78L19.35 15.75L21.78 14H22.71V22.26H21.37V15.8Z\"\n fill=\"#1A73E8\"\n />\n <path\n d=\"M25.1 31.5L31.5 25.1L28.3 23.68L25.1 25.1L23.68 28.3L25.1 31.5Z\"\n fill=\"#EA4335\"\n />\n <path\n d=\"M9.47 28.3L10.89 31.5H25.1V25.11H10.89L9.47 28.3Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M6.63 4.5C5.45 4.5 4.5 5.45 4.5 6.63V25.1L7.7 26.53L10.89 25.1V10.89H25.11L26.53 7.7L25.11 4.5H6.63Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M4.5 25.11V29.37C4.5 30.55 5.45 31.5 6.63 31.5H10.89V25.11H4.5Z\"\n fill=\"#188038\"\n />\n <path\n d=\"M25.1 10.89V25.11H31.5V10.89L28.3 9.47L25.1 10.89Z\"\n fill=\"#FBBC04\"\n />\n <path\n d=\"M31.5 10.89V6.63C31.5 5.45 30.54 4.5 29.37 4.5H25.1V10.89H31.5Z\"\n fill=\"#1967D2\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function JiraIcon(props: IconProps) {\n const gradientId0 = \"jira-gradient-0\";\n const gradientId1 = \"jira-gradient-1\";\n\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M16.42 3H9.68C9.68 4.68 11.04 6.04 12.72 6.04H13.96V7.24C13.96 8.92 15.32 10.28 17 10.28V3.58C17 3.26 16.74 3 16.42 3Z\"\n fill=\"#2684FF\"\n />\n <path\n d=\"M13.08 6.36H6.34C6.34 8.04 7.7 9.4 9.38 9.4H10.62V10.6C10.62 12.28 11.98 13.64 13.66 13.64V6.94C13.66 6.62 13.4 6.36 13.08 6.36Z\"\n fill={`url(#${gradientId0})`}\n />\n <path\n d=\"M9.74 9.72H3C3 11.4 4.36 12.76 6.04 12.76H7.28V13.96C7.28 15.64 8.64 17 10.32 17V10.3C10.32 9.98 10.06 9.72 9.74 9.72Z\"\n fill={`url(#${gradientId1})`}\n />\n <defs>\n <linearGradient\n id={gradientId0}\n x1=\"16.73\"\n y1=\"3.02\"\n x2=\"11.22\"\n y2=\"8.67\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n <linearGradient\n id={gradientId1}\n x1=\"10.37\"\n y1=\"9.75\"\n x2=\"7.06\"\n y2=\"12.97\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.176\" stopColor=\"#0052CC\" />\n <stop offset=\"1\" stopColor=\"#2684FF\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookCalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <path\n d=\"M31.5 11.93V9.35C31.5 6.67 29.33 4.5 26.65 4.5H9.35C6.67 4.5 4.5 6.67 4.5 9.35V11.93H31.5Z\"\n fill=\"url(#paint0_linear_5796_19583)\"\n />\n <path\n d=\"M4.5 11.91V26.65C4.5 29.33 6.67 31.5 9.35 31.5H26.65C29.33 31.5 31.5 29.33 31.5 26.65V11.91H4.5Z\"\n fill=\"url(#paint1_linear_5796_19583)\"\n />\n <g filter=\"url(#filter0_d_5796_19583)\">\n <path\n d=\"M18.0186 25.5176C19.0579 25.5176 19.9004 24.6751 19.9004 23.6358C19.9004 22.5964 19.0579 21.7539 18.0186 21.7539C16.9793 21.7539 16.1367 22.5964 16.1367 23.6358C16.1367 24.6751 16.9793 25.5176 18.0186 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter1_d_5796_19583)\">\n <path\n d=\"M11.5987 25.5176C12.638 25.5176 13.4805 24.6751 13.4805 23.6358C13.4805 22.5964 12.638 21.7539 11.5987 21.7539C10.5593 21.7539 9.7168 22.5964 9.7168 23.6358C9.7168 24.6751 10.5593 25.5176 11.5987 25.5176Z\"\n fill=\"#C7F4FF\"\n />\n </g>\n <g filter=\"url(#filter2_d_5796_19583)\">\n <path\n d=\"M18.0186 19.5C19.0579 19.5 19.9004 18.6575 19.9004 17.6182C19.9004 16.5789 19.0579 15.7363 18.0186 15.7363C16.9793 15.7363 16.1367 16.5789 16.1367 17.6182C16.1367 18.6575 16.9793 19.5 18.0186 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter3_d_5796_19583)\">\n <path\n d=\"M24.4385 19.5C25.4778 19.5 26.3203 18.6575 26.3203 17.6182C26.3203 16.5789 25.4778 15.7363 24.4385 15.7363C23.3992 15.7363 22.5566 16.5789 22.5566 17.6182C22.5566 18.6575 23.3992 19.5 24.4385 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <g filter=\"url(#filter4_d_5796_19583)\">\n <path\n d=\"M11.5987 19.5C12.638 19.5 13.4805 18.6575 13.4805 17.6182C13.4805 16.5789 12.638 15.7363 11.5987 15.7363C10.5593 15.7363 9.7168 16.5789 9.7168 17.6182C9.7168 18.6575 10.5593 19.5 11.5987 19.5Z\"\n fill=\"#E3FAFF\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_5796_19583\"\n x=\"14.4916\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_5796_19583\"\n x=\"8.07168\"\n y=\"20.9113\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_5796_19583\"\n x=\"14.4916\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_5796_19583\"\n x=\"20.9115\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_5796_19583\"\n x=\"8.07168\"\n y=\"14.8937\"\n width=\"7.05391\"\n height=\"7.05391\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"0.8\" />\n <feGaussianBlur stdDeviation=\"0.82\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0156863 0 0 0 0 0.431373 0 0 0 0 0.788235 0 0 0 0.7 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_5796_19583\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_5796_19583\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_5796_19583\"\n x1=\"4.5\"\n y1=\"8.21\"\n x2=\"31.38\"\n y2=\"10.12\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#0879D1\" />\n <stop offset=\"1\" stopColor=\"#056EC9\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5796_19583\"\n x1=\"18\"\n y1=\"11.91\"\n x2=\"18\"\n y2=\"31.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#44CBFD\" />\n <stop offset=\"1\" stopColor=\"#1195EA\" />\n </linearGradient>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function OutlookIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <mask\n id=\"mask0_5796_22925\"\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"5\"\n width=\"26\"\n height=\"26\"\n >\n <path d=\"M30.38 5.63H5.63V30.38H30.38V5.63Z\" fill=\"white\" />\n </mask>\n <g mask=\"url(#mask0_5796_22925)\">\n <path\n d=\"M27.74 7.17H14.45C13.85 7.17 13.36 7.66 13.36 8.26V9.49L20.85 11.81L28.83 9.49V8.26C28.83 7.66 28.34 7.17 27.74 7.17Z\"\n fill=\"#0364B8\"\n />\n <path\n d=\"M30.1 19.09C30.22 18.73 30.31 18.37 30.37 18C30.37 17.82 30.28 17.65 30.12 17.55L30.11 17.55L30.1 17.55L21.72 12.77C21.69 12.75 21.65 12.73 21.61 12.71C21.28 12.55 20.9 12.55 20.58 12.71C20.54 12.73 20.5 12.75 20.47 12.77L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18C11.88 18.37 11.97 18.73 12.08 19.09L20.97 25.59L30.1 19.09Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M24.19 9.49H18.77L17.21 11.81L18.77 14.13L24.19 18.77H28.83V14.13L24.19 9.49Z\"\n fill=\"#28A8EA\"\n />\n <path d=\"M13.36 9.49H18.77V14.13H13.36V9.49Z\" fill=\"#0078D4\" />\n <path d=\"M24.19 9.49H28.83V14.13H24.19V9.49Z\" fill=\"#50D9FF\" />\n <path\n d=\"M24.19 18.77L18.77 14.13H13.36V18.77L18.77 23.41L27.15 24.78L24.19 18.77Z\"\n fill=\"#0364B8\"\n />\n <path d=\"M18.77 14.13H24.19V18.77H18.77V14.13Z\" fill=\"#0078D4\" />\n <path d=\"M13.36 18.77H18.77V23.42H13.36V18.77Z\" fill=\"#064A8C\" />\n <path d=\"M24.19 18.77H28.83V23.42H24.19V18.77Z\" fill=\"#0078D4\" />\n <path\n opacity=\"0.5\"\n d=\"M21.24 25.13L12.12 18.48L12.5 17.81C12.5 17.81 20.81 22.54 20.94 22.61C21.04 22.65 21.16 22.65 21.26 22.6L29.72 17.78L30.1 18.46L21.24 25.13Z\"\n fill=\"#0A2767\"\n />\n <path\n d=\"M30.12 18.45L30.11 18.45L30.11 18.45L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67V18C30.38 18.18 30.28 18.35 30.12 18.45Z\"\n fill=\"#1490DF\"\n />\n <path\n opacity=\"0.05\"\n d=\"M30.38 27.67V27.1L22.66 22.7L21.72 23.23C21.38 23.45 20.96 23.47 20.59 23.3L23.51 27.21L29.9 28.6V28.61C30.2 28.39 30.38 28.04 30.38 27.67Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M30.34 27.97L21.87 23.14L21.72 23.23C21.38 23.45 20.96 23.48 20.59 23.3L23.51 27.22L29.9 28.61V28.61C30.11 28.45 30.27 28.22 30.34 27.97Z\"\n fill=\"black\"\n />\n <path\n d=\"M12.08 18.46V18.45H12.08L12.05 18.43C11.9 18.34 11.81 18.18 11.81 18V27.67C11.81 28.31 12.33 28.83 12.97 28.83C12.97 28.83 12.97 28.83 12.97 28.83H29.21C29.31 28.83 29.41 28.81 29.5 28.79C29.55 28.78 29.6 28.77 29.64 28.75C29.66 28.74 29.67 28.74 29.69 28.73C29.75 28.7 29.81 28.67 29.86 28.63C29.88 28.62 29.89 28.62 29.9 28.6L12.08 18.46Z\"\n fill=\"#28A8EA\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.55 24.7V12.07C19.55 11.5 19.08 11.04 18.52 11.04H13.38V16.81L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.65 11.81 17.82 11.81 18V25.73H18.52C19.08 25.73 19.55 25.27 19.55 24.7Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 25.48V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V26.51H17.74C18.31 26.51 18.77 26.04 18.77 25.48Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.77 23.93V12.84C18.77 12.27 18.31 11.81 17.74 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H17.74C18.31 24.96 18.77 24.5 18.77 23.93Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18 23.93V12.84C18 12.27 17.54 11.81 16.97 11.81H13.38V16.8L12.08 17.55L12.08 17.55L12.07 17.55C11.91 17.64 11.81 17.81 11.81 18V24.96H16.97C17.54 24.96 18 24.5 18 23.93Z\"\n fill=\"black\"\n />\n <path\n d=\"M6.66 11.81H16.97C17.54 11.81 18 12.27 18 12.84V23.16C18 23.72 17.54 24.19 16.97 24.19H6.66C6.09 24.19 5.63 23.72 5.63 23.16V12.84C5.63 12.27 6.09 11.81 6.66 11.81Z\"\n fill=\"#0078D4\"\n />\n <path\n d=\"M8.62 16.04C8.89 15.46 9.33 14.97 9.89 14.64C10.5 14.29 11.2 14.11 11.91 14.13C12.56 14.12 13.21 14.28 13.77 14.61C14.31 14.93 14.73 15.4 15.01 15.95C15.31 16.57 15.45 17.24 15.44 17.92C15.46 18.64 15.3 19.34 15 19.99C14.72 20.56 14.27 21.05 13.72 21.37C13.13 21.71 12.46 21.88 11.79 21.87C11.12 21.88 10.46 21.72 9.88 21.38C9.34 21.06 8.9 20.6 8.62 20.04C8.33 19.43 8.17 18.77 8.19 18.09C8.17 17.38 8.32 16.68 8.62 16.04ZM9.97 19.33C10.12 19.7 10.36 20.02 10.68 20.26C11.01 20.49 11.4 20.6 11.8 20.59C12.23 20.61 12.64 20.49 12.99 20.25C13.31 20.01 13.55 19.69 13.69 19.32C13.84 18.91 13.91 18.47 13.91 18.03C13.91 17.59 13.84 17.15 13.7 16.73C13.57 16.35 13.34 16.02 13.03 15.77C12.69 15.52 12.27 15.39 11.85 15.4C11.44 15.39 11.04 15.51 10.71 15.74C10.38 15.98 10.13 16.3 9.98 16.67C9.64 17.53 9.64 18.48 9.97 19.33Z\"\n fill=\"white\"\n />\n </g>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SlackIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M5.26 10.79C5.29 11.53 4.7 12.17 3.96 12.19C3.21 12.22 2.58 11.64 2.55 10.89C2.52 10.14 3.11 9.51 3.86 9.48L5.21 9.43L5.26 10.79Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M5.95 10.76C5.92 10.01 6.51 9.38 7.25 9.35C8 9.33 8.63 9.91 8.66 10.66L8.79 14.06C8.81 14.8 8.23 15.44 7.48 15.46C6.73 15.49 6.1 14.9 6.07 14.16L5.95 10.76Z\"\n fill=\"#E01E5A\"\n />\n <path\n d=\"M7.1 5.26C6.35 5.29 5.72 4.7 5.69 3.96C5.67 3.21 6.25 2.58 7 2.55C7.75 2.52 8.38 3.11 8.41 3.86L8.46 5.21L7.1 5.26Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M7.13 5.95C7.87 5.92 8.51 6.51 8.53 7.25C8.56 8 7.97 8.63 7.23 8.66L3.83 8.79C3.08 8.82 2.45 8.23 2.42 7.48C2.4 6.73 2.98 6.1 3.73 6.07L7.13 5.95Z\"\n fill=\"#36C5F0\"\n />\n <path\n d=\"M12.62 7.1C12.6 6.35 13.18 5.72 13.93 5.69C14.68 5.67 15.31 6.25 15.34 7C15.37 7.75 14.78 8.38 14.03 8.41L12.68 8.46L12.62 7.1Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M11.94 7.13C11.97 7.87 11.38 8.51 10.63 8.53C9.89 8.56 9.25 7.97 9.23 7.23L9.1 3.83C9.07 3.08 9.66 2.45 10.41 2.42C11.15 2.4 11.78 2.98 11.81 3.73L11.94 7.13Z\"\n fill=\"#2EB67D\"\n />\n <path\n d=\"M10.79 12.63C11.53 12.6 12.17 13.18 12.19 13.93C12.22 14.68 11.63 15.31 10.89 15.34C10.14 15.37 9.51 14.78 9.48 14.03L9.43 12.68L10.79 12.63Z\"\n fill=\"#ECB22E\"\n />\n <path\n d=\"M10.76 11.94C10.01 11.97 9.38 11.38 9.35 10.63C9.33 9.89 9.91 9.26 10.66 9.23L14.06 9.1C14.8 9.07 15.44 9.66 15.46 10.41C15.49 11.15 14.9 11.79 14.16 11.81L10.76 11.94Z\"\n fill=\"#ECB22E\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function TeamsIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 36 36\" {...props}>\n <g clipPath=\"url(#clip0_5796_19548)\">\n <path\n d=\"M23.33 14.85H30.31C30.97 14.85 31.5 15.39 31.5 16.05V22.42C31.5 24.84 29.54 26.81 27.12 26.81H27.09C24.67 26.81 22.71 24.84 22.71 22.42V15.48C22.71 15.13 22.99 14.85 23.33 14.85Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M28.05 13.59C29.61 13.59 30.87 12.33 30.87 10.76C30.87 9.2 29.61 7.93 28.05 7.93C26.49 7.93 25.22 9.2 25.22 10.76C25.22 12.33 26.49 13.59 28.05 13.59Z\"\n fill=\"#5059C9\"\n />\n <path\n d=\"M19.26 13.6C21.51 13.6 23.34 11.76 23.34 9.51C23.34 7.25 21.51 5.42 19.26 5.42C17 5.42 15.17 7.25 15.17 9.51C15.17 11.76 17 13.6 19.26 13.6Z\"\n fill=\"#7B83EB\"\n />\n <path\n d=\"M24.7 14.85H13.19C12.54 14.87 12.02 15.41 12.04 16.06V23.33C11.94 27.24 15.04 30.49 18.94 30.59C22.85 30.49 25.94 27.24 25.85 23.33V16.06C25.86 15.41 25.35 14.87 24.7 14.85Z\"\n fill=\"#7B83EB\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5704 14.8545V25.0293C19.5673 25.4958 19.2851 25.915 18.8546 26.0927C18.7175 26.1508 18.5702 26.1807 18.4213 26.1808H12.588C12.5064 25.9731 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H19.5704Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V25.6585C18.9424 25.8077 18.9126 25.9553 18.8546 26.0927C18.6773 26.5241 18.259 26.8069 17.7934 26.81H12.8832C12.7764 26.6023 12.676 26.3947 12.588 26.1808C12.5001 25.9668 12.4311 25.7655 12.3683 25.5515C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9425 14.8545V24.4C18.9377 25.034 18.426 25.5467 17.7934 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1845 14.8545H18.9425Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3145 14.8545V24.4C18.3098 25.034 17.7981 25.5467 17.1655 25.5515H12.3683C12.1485 24.8295 12.0363 24.0789 12.0355 23.324V16.0626C12.0204 15.4112 12.5346 14.8706 13.1846 14.8545H18.3145Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.1\"\n d=\"M19.5694 11.6017V13.5838C19.4627 13.5901 19.3622 13.5964 19.2555 13.5964C19.1487 13.5964 19.0483 13.5901 18.9415 13.5838C18.7296 13.5697 18.5194 13.536 18.3136 13.4831C17.0421 13.1814 15.9916 12.2877 15.488 11.0794C15.4014 10.8765 15.3341 10.6658 15.2871 10.4502H18.4204C19.054 10.4526 19.567 10.9667 19.5694 11.6017Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.9418 12.2296V13.5825C18.7298 13.5684 18.5196 13.5347 18.3139 13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.7927C18.4263 11.0805 18.9394 11.5947 18.9418 12.2296Z\"\n fill=\"black\"\n />\n <path\n opacity=\"0.2\"\n d=\"M18.3139 12.2296V13.4818C17.0423 13.1801 15.9919 12.2864 15.4883 11.0781H17.1648C17.7984 11.0805 18.3115 11.5947 18.3139 12.2296Z\"\n fill=\"black\"\n />\n <path\n d=\"M5.65 11.08H17.16C17.8 11.08 18.31 11.59 18.31 12.23V23.77C18.31 24.4 17.8 24.92 17.16 24.92H5.65C5.02 24.92 4.5 24.4 4.5 23.77V12.23C4.5 11.59 5.02 11.08 5.65 11.08Z\"\n fill=\"url(#paint0_linear_5796_19548)\"\n />\n <path\n d=\"M14.44 15.47H12.14V21.75H10.67V15.47H8.38V14.25H14.44V15.47Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_5796_19548\"\n x1=\"6.9\"\n y1=\"10.18\"\n x2=\"15.94\"\n y2=\"25.81\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5A62C3\" />\n <stop offset=\"0.5\" stopColor=\"#4D55BD\" />\n <stop offset=\"1\" stopColor=\"#3940AB\" />\n </linearGradient>\n <clipPath id=\"clip0_5796_19548\">\n <rect\n width=\"27\"\n height=\"25.1695\"\n fill=\"white\"\n transform=\"translate(4.5 5.41504)\"\n />\n </clipPath>\n </defs>\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckboxIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M4 8L6.5 10.5L12 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleEmptyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 28 28\" {...props}>\n <circle\n cx=\"14\"\n cy=\"14\"\n r=\"10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CheckCircleIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M8.82 13.55L14.42 7.94L13.54 7.06L8.82 11.79L6.44 9.41L5.56 10.29L8.82 13.55ZM10 17.92C8.91 17.92 7.88 17.71 6.91 17.29C5.95 16.88 5.11 16.31 4.4 15.6C3.69 14.89 3.12 14.05 2.71 13.09C2.29 12.13 2.08 11.1 2.08 10C2.08 8.91 2.29 7.88 2.71 6.91C3.12 5.95 3.69 5.11 4.4 4.4C5.11 3.69 5.95 3.12 6.91 2.71C7.88 2.29 8.9 2.08 10 2.08C11.09 2.08 12.12 2.29 13.09 2.71C14.05 3.12 14.89 3.69 15.6 4.4C16.31 5.11 16.88 5.95 17.29 6.91C17.71 7.87 17.92 8.9 17.92 10C17.92 11.09 17.71 12.12 17.29 13.09C16.88 14.05 16.31 14.89 15.6 15.6C14.89 16.31 14.05 16.88 13.09 17.29C12.13 17.71 11.1 17.92 10 17.92ZM10 16.67C11.86 16.67 13.44 16.02 14.73 14.73C16.02 13.44 16.67 11.86 16.67 10C16.67 8.14 16.02 6.56 14.73 5.27C13.44 3.98 11.86 3.33 10 3.33C8.14 3.33 6.56 3.98 5.27 5.27C3.98 6.56 3.33 8.14 3.33 10C3.33 11.86 3.98 13.44 5.27 14.73C6.56 16.02 8.14 16.67 10 16.67Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function FireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function InsightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M8 4.52C8.72 6.07 10.03 7.31 11.64 8.01C10.03 8.71 8.72 9.95 8 11.5C7.27 9.95 5.97 8.71 4.36 8.01C5.97 7.31 7.27 6.07 8 4.52Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NotFireIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M5 11.67C5 12.51 5.2 13.29 5.6 14.01C6 14.73 6.55 15.32 7.26 15.76C7.19 15.64 7.15 15.53 7.12 15.41C7.1 15.29 7.08 15.17 7.08 15.04C7.08 14.66 7.16 14.29 7.31 13.95C7.45 13.61 7.67 13.3 7.94 13.03L10 11L12.07 13.03C12.34 13.3 12.55 13.61 12.7 13.95C12.84 14.29 12.92 14.66 12.92 15.04C12.92 15.17 12.9 15.29 12.88 15.41C12.85 15.53 12.81 15.64 12.74 15.76C13.45 15.32 14 14.73 14.4 14.01C14.8 13.29 15 12.51 15 11.67C15 10.97 14.87 10.32 14.61 9.7C14.36 9.08 13.99 8.53 13.5 8.04C13.22 8.22 12.93 8.36 12.63 8.45C12.32 8.54 12.01 8.58 11.69 8.58C10.82 8.58 10.07 8.3 9.44 7.73C8.81 7.16 8.45 6.45 8.35 5.61C7.81 6.06 7.33 6.53 6.92 7.03C6.5 7.52 6.15 8.02 5.86 8.54C5.58 9.05 5.36 9.57 5.22 10.1C5.07 10.62 5 11.15 5 11.67ZM10 12.75L8.81 13.92C8.66 14.07 8.54 14.24 8.46 14.44C8.38 14.63 8.33 14.83 8.33 15.04C8.33 15.49 8.5 15.87 8.82 16.19C9.15 16.51 9.54 16.67 10 16.67C10.46 16.67 10.85 16.51 11.18 16.19C11.5 15.87 11.67 15.49 11.67 15.04C11.67 14.82 11.63 14.61 11.54 14.43C11.46 14.24 11.34 14.07 11.19 13.92L10 12.75ZM9.58 3.25V5.25C9.58 5.84 9.79 6.33 10.19 6.73C10.6 7.13 11.1 7.33 11.69 7.33C11.94 7.33 12.19 7.29 12.42 7.19C12.65 7.09 12.86 6.95 13.05 6.76L13.42 6.39C14.3 6.96 14.99 7.71 15.49 8.64C16 9.58 16.25 10.59 16.25 11.67C16.25 13.41 15.64 14.89 14.43 16.1C13.22 17.31 11.74 17.92 10 17.92C8.26 17.92 6.78 17.31 5.57 16.1C4.36 14.89 3.75 13.41 3.75 11.67C3.75 10.06 4.27 8.51 5.32 7.02C6.37 5.53 7.79 4.27 9.58 3.25Z\"\n fill=\"currentColor\"\n />\n <line\n x1=\"17.8311\"\n y1=\"3.53033\"\n x2=\"2.83111\"\n y2=\"18.5303\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ReadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M10.77 1.78L17.32 5.69C17.5 5.81 17.65 5.97 17.76 6.16C17.86 6.36 17.92 6.57 17.92 6.79V15.58C17.92 16 17.77 16.35 17.48 16.65C17.19 16.94 16.83 17.08 16.41 17.08H3.59C3.17 17.08 2.81 16.94 2.52 16.65C2.23 16.35 2.08 16 2.08 15.58V6.79C2.08 6.57 2.14 6.36 2.24 6.16C2.35 5.97 2.5 5.81 2.68 5.69L9.23 1.78C9.46 1.65 9.72 1.58 10 1.58C10.28 1.58 10.54 1.65 10.77 1.78ZM10.13 10.46L16.5 6.67L10.13 2.87C10.09 2.84 10.04 2.83 10 2.83C9.96 2.83 9.92 2.84 9.87 2.87L3.5 6.67L9.87 10.46C9.92 10.49 9.96 10.5 10 10.5C10.04 10.5 10.09 10.49 10.13 10.46ZM9.23 11.54L3.33 8.02V15.58C3.33 15.65 3.36 15.71 3.41 15.76C3.45 15.81 3.52 15.83 3.59 15.83H16.41C16.49 15.83 16.55 15.81 16.6 15.76C16.64 15.71 16.67 15.65 16.67 15.58V8.02L10.77 11.54C10.54 11.67 10.28 11.74 10 11.74C9.72 11.74 9.46 11.67 9.23 11.54ZM10.77 15.83H16.67H3.33H10.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function UnreadIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M3.59 16.25C3.17 16.25 2.81 16.1 2.52 15.81C2.23 15.52 2.08 15.16 2.08 14.74V5.26C2.08 4.84 2.23 4.48 2.52 4.19C2.81 3.9 3.17 3.75 3.59 3.75H11.23C11.4 3.75 11.55 3.81 11.68 3.93C11.8 4.06 11.86 4.21 11.85 4.38C11.85 4.56 11.78 4.7 11.66 4.82C11.54 4.94 11.4 5 11.23 5H3.33V14.74C3.33 14.82 3.36 14.88 3.41 14.93C3.45 14.98 3.52 15 3.59 15H16.41C16.49 15 16.55 14.98 16.6 14.93C16.64 14.88 16.67 14.82 16.67 14.74V9.17C16.67 8.99 16.73 8.84 16.85 8.72C16.97 8.6 17.12 8.54 17.29 8.54C17.47 8.54 17.62 8.6 17.74 8.72C17.86 8.84 17.92 8.99 17.92 9.17V14.74C17.92 15.16 17.77 15.52 17.48 15.81C17.19 16.1 16.83 16.25 16.41 16.25H3.59ZM10 9.17L12.71 7.44C12.86 7.35 13.01 7.32 13.14 7.37C13.27 7.41 13.38 7.5 13.45 7.62C13.53 7.74 13.56 7.87 13.54 8C13.52 8.14 13.43 8.26 13.28 8.36L10.4 10.21C10.27 10.29 10.14 10.33 10 10.33C9.86 10.33 9.73 10.3 9.6 10.22L3.33 6.29V5L10 9.17ZM15.83 6.78C15.2 6.78 14.66 6.56 14.21 6.11C13.77 5.66 13.54 5.12 13.54 4.49C13.54 3.85 13.77 3.31 14.21 2.86C14.66 2.42 15.2 2.2 15.83 2.2C16.47 2.2 17.01 2.42 17.46 2.86C17.9 3.31 18.13 3.85 18.13 4.49C18.13 5.12 17.9 5.66 17.46 6.11C17.01 6.56 16.47 6.78 15.83 6.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AccountIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.02 17.29C6.87 16.66 7.8 16.16 8.8 15.8C9.8 15.43 10.87 15.25 12 15.25C13.13 15.25 14.2 15.43 15.2 15.8C16.2 16.16 17.13 16.66 17.98 17.29C18.6 16.61 19.09 15.82 19.45 14.92C19.82 14.02 20 13.05 20 12C20 9.78 19.22 7.9 17.66 6.34C16.1 4.78 14.22 4 12 4C9.78 4 7.9 4.78 6.34 6.34C4.78 7.9 4 9.78 4 12C4 13.05 4.18 14.02 4.55 14.92C4.91 15.82 5.4 16.61 6.02 17.29ZM12 12.75C11.09 12.75 10.32 12.44 9.69 11.81C9.06 11.18 8.75 10.41 8.75 9.5C8.75 8.59 9.06 7.82 9.69 7.19C10.32 6.56 11.09 6.25 12 6.25C12.91 6.25 13.68 6.56 14.31 7.19C14.94 7.82 15.25 8.59 15.25 9.5C15.25 10.41 14.94 11.18 14.31 11.81C13.68 12.44 12.91 12.75 12 12.75ZM12 21.5C10.68 21.5 9.44 21.25 8.29 20.76C7.13 20.26 6.13 19.58 5.27 18.73C4.42 17.87 3.74 16.87 3.24 15.71C2.75 14.56 2.5 13.32 2.5 12C2.5 10.68 2.75 9.44 3.24 8.29C3.74 7.13 4.42 6.13 5.27 5.27C6.13 4.42 7.13 3.74 8.29 3.24C9.44 2.75 10.68 2.5 12 2.5C13.32 2.5 14.56 2.75 15.71 3.24C16.87 3.74 17.87 4.42 18.73 5.27C19.58 6.13 20.26 7.13 20.76 8.29C21.25 9.44 21.5 10.68 21.5 12C21.5 13.32 21.25 14.56 20.76 15.71C20.26 16.87 19.58 17.87 18.73 18.73C17.87 19.58 16.87 20.26 15.71 20.76C14.56 21.25 13.32 21.5 12 21.5ZM12 20C12.9 20 13.77 19.85 14.61 19.56C15.45 19.27 16.19 18.87 16.84 18.35C16.19 17.84 15.46 17.45 14.64 17.17C13.82 16.89 12.94 16.75 12 16.75C11.06 16.75 10.18 16.89 9.36 17.17C8.53 17.44 7.8 17.84 7.16 18.35C7.81 18.87 8.55 19.27 9.39 19.56C10.23 19.85 11.1 20 12 20ZM12 11.25C12.5 11.25 12.91 11.08 13.25 10.75C13.58 10.41 13.75 10 13.75 9.5C13.75 9 13.58 8.59 13.25 8.25C12.91 7.92 12.5 7.75 12 7.75C11.5 7.75 11.09 7.92 10.75 8.25C10.42 8.59 10.25 9 10.25 9.5C10.25 10 10.42 10.41 10.75 10.75C11.09 11.08 11.5 11.25 12 11.25Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function AddIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.5 12.5H6V11.5H11.5V6H12.5V11.5H18V12.5H12.5V18H11.5V12.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Icon, type IconProps } from \"@icons/index\";\n\ntype ArrowDirection = \"up\" | \"down\" | \"left\" | \"right\";\n\nconst DIRECTION_CLASS: Record<ArrowDirection, string> = {\n down: \"\",\n left: \"rotate-90\",\n up: \"-rotate-180\",\n right: \"-rotate-90\",\n};\n\nexport type ArrowIconProps = IconProps & {\n direction?: ArrowDirection;\n};\n\nexport default function ArrowIcon({\n direction = \"down\",\n className,\n ...props\n}: ArrowIconProps) {\n return (\n <Icon\n viewBox=\"0 0 24 24\"\n className={cn(DIRECTION_CLASS[direction], className)}\n {...props}\n >\n <path\n d=\"m5 8.5 7 7 7-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CalendarIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M5.31 21.5C4.8 21.5 4.38 21.33 4.03 20.98C3.68 20.63 3.5 20.2 3.5 19.69V6.31C3.5 5.8 3.68 5.38 4.03 5.03C4.38 4.68 4.8 4.5 5.31 4.5H6.69V2.38H8.23V4.5H15.81V2.38H17.31V4.5H18.69C19.2 4.5 19.63 4.68 19.98 5.03C20.33 5.38 20.5 5.8 20.5 6.31V19.69C20.5 20.2 20.33 20.63 19.98 20.98C19.63 21.33 19.2 21.5 18.69 21.5H5.31ZM5.31 20H18.69C18.77 20 18.84 19.97 18.9 19.9C18.97 19.84 19 19.77 19 19.69V10.31H5V19.69C5 19.77 5.03 19.84 5.1 19.9C5.16 19.97 5.23 20 5.31 20ZM5 8.81H19V6.31C19 6.23 18.97 6.16 18.9 6.1C18.84 6.03 18.77 6 18.69 6H5.31C5.23 6 5.16 6.03 5.1 6.1C5.03 6.16 5 6.23 5 6.31V8.81Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CloseIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M6.4 18.65L5.35 17.6L10.95 12L5.35 6.4L6.4 5.35L12 10.95L17.6 5.35L18.65 6.4L13.05 12L18.65 17.6L17.6 18.65L12 13.05L6.4 18.65Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CompactDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 16.625V15.125H20.5V16.625H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 8.875V7.375H20.5V8.875H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function CopyIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M9.06 17.5C8.55 17.5 8.13 17.33 7.78 16.98C7.43 16.63 7.25 16.2 7.25 15.69V4.31C7.25 3.8 7.43 3.38 7.78 3.03C8.13 2.68 8.55 2.5 9.06 2.5H17.44C17.95 2.5 18.38 2.68 18.73 3.03C19.08 3.38 19.25 3.8 19.25 4.31V15.69C19.25 16.2 19.08 16.63 18.73 16.98C18.38 17.33 17.95 17.5 17.44 17.5H9.06ZM9.06 16H17.44C17.52 16 17.59 15.97 17.65 15.9C17.72 15.84 17.75 15.77 17.75 15.69V4.31C17.75 4.23 17.72 4.16 17.65 4.1C17.59 4.03 17.52 4 17.44 4H9.06C8.98 4 8.91 4.03 8.85 4.1C8.78 4.16 8.75 4.23 8.75 4.31V15.69C8.75 15.77 8.78 15.84 8.85 15.9C8.91 15.97 8.98 16 9.06 16ZM5.56 21C5.05 21 4.63 20.83 4.28 20.48C3.93 20.13 3.75 19.7 3.75 19.19V6.31H5.25V19.19C5.25 19.27 5.28 19.34 5.35 19.4C5.41 19.47 5.48 19.5 5.56 19.5H15.44V21H5.56Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function DarkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M12.1 21.5C10.77 21.5 9.52 21.25 8.36 20.74C7.2 20.24 6.18 19.55 5.31 18.69C4.45 17.82 3.76 16.8 3.26 15.64C2.75 14.48 2.5 13.23 2.5 11.9C2.5 9.71 3.17 7.76 4.5 6.05C5.84 4.34 7.56 3.22 9.68 2.68C9.5 4.29 9.66 5.84 10.18 7.35C10.69 8.86 11.52 10.19 12.67 11.33C13.81 12.48 15.14 13.31 16.65 13.82C18.16 14.34 19.71 14.5 21.32 14.32C20.79 16.44 19.67 18.16 17.96 19.5C16.24 20.83 14.29 21.5 12.1 21.5ZM12.1 20C13.57 20 14.93 19.63 16.18 18.9C17.43 18.17 18.41 17.16 19.13 15.87C17.69 15.74 16.33 15.38 15.05 14.78C13.77 14.19 12.62 13.39 11.6 12.37C10.58 11.35 9.78 10.2 9.18 8.92C8.58 7.64 8.22 6.28 8.1 4.85C6.82 5.57 5.81 6.55 5.09 7.81C4.36 9.07 4 10.43 4 11.9C4 14.15 4.79 16.06 6.36 17.64C7.94 19.21 9.85 20 12.1 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function ExternalLinkIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 20 20\" {...props}>\n <path\n d=\"M4.42 17.08C4 17.08 3.64 16.94 3.35 16.65C3.06 16.35 2.91 16 2.91 15.58V4.42C2.91 4 3.06 3.65 3.35 3.35C3.64 3.06 4 2.92 4.42 2.92H9.68V4.17H4.42C4.36 4.17 4.3 4.19 4.24 4.25C4.19 4.3 4.16 4.36 4.16 4.42V15.58C4.16 15.64 4.19 15.7 4.24 15.75C4.3 15.81 4.36 15.83 4.42 15.83H15.57C15.64 15.83 15.7 15.81 15.75 15.75C15.8 15.7 15.83 15.64 15.83 15.58V10.32H17.08V15.58C17.08 16 16.93 16.35 16.64 16.65C16.35 16.94 16 17.08 15.57 17.08H4.42ZM8.1 12.78L7.22 11.9L14.95 4.17H11.66V2.92H17.08V8.33H15.83V5.04L8.1 12.78Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function LightIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M11.25 5.21V1.52H12.75V5.21H11.25ZM17.32 7.73L16.29 6.7L18.87 4.04L19.94 5.12L17.32 7.73ZM18.79 12.75V11.25H22.48V12.75H18.79ZM11.25 22.48V18.8H12.75V22.48H11.25ZM6.7 7.69L4.04 5.13L5.13 4.07L7.74 6.68L6.7 7.69ZM18.86 19.96L16.29 17.3L17.31 16.29L19.93 18.84L18.86 19.96ZM1.52 12.75V11.25H5.21V12.75H1.52ZM5.12 19.96L4.07 18.87L6.65 16.29L7.19 16.81L7.75 17.33L5.12 19.96ZM12 17.5C10.48 17.5 9.18 16.97 8.11 15.9C7.04 14.83 6.5 13.53 6.5 12C6.5 10.48 7.03 9.18 8.1 8.11C9.17 7.04 10.47 6.5 12 6.5C13.53 6.5 14.82 7.03 15.89 8.1C16.97 9.17 17.5 10.47 17.5 12C17.5 13.53 16.97 14.82 15.9 15.89C14.83 16.97 13.53 17.5 12 17.5ZM12 16C13.1 16 14.04 15.61 14.83 14.83C15.61 14.04 16 13.1 16 12C16 10.9 15.61 9.96 14.83 9.18C14.04 8.39 13.1 8 12 8C10.9 8 9.96 8.39 9.18 9.18C8.39 9.96 8 10.9 8 12C8 13.1 8.39 14.04 9.18 14.83C9.96 15.61 10.9 16 12 16Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MinusIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 16 16\" {...props}>\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function MoreIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M10.5 6.23C10.5 5.82 10.65 5.47 10.94 5.17C11.23 4.88 11.59 4.73 12 4.73C12.41 4.73 12.77 4.88 13.06 5.17C13.35 5.47 13.5 5.82 13.5 6.23C13.5 6.64 13.35 7 13.06 7.29C12.77 7.58 12.41 7.73 12 7.73C11.59 7.73 11.23 7.58 10.94 7.29C10.65 7 10.5 6.64 10.5 6.23ZM10.5 12C10.5 11.59 10.65 11.23 10.94 10.94C11.23 10.65 11.59 10.5 12 10.5C12.41 10.5 12.77 10.65 13.06 10.94C13.35 11.23 13.5 11.59 13.5 12C13.5 12.41 13.35 12.77 13.06 13.06C12.77 13.35 12.41 13.5 12 13.5C11.59 13.5 11.23 13.35 10.94 13.06C10.65 12.77 10.5 12.41 10.5 12ZM10.5 17.77C10.5 17.36 10.65 17 10.94 16.71C11.23 16.42 11.59 16.27 12 16.27C12.41 16.27 12.77 16.42 13.06 16.71C13.35 17 13.5 17.36 13.5 17.77C13.5 18.18 13.35 18.54 13.06 18.83C12.77 19.12 12.41 19.27 12 19.27C11.59 19.27 11.23 19.12 10.94 18.83C10.65 18.54 10.5 18.18 10.5 17.77Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function NormalDensityIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 20.5V19H20.5V20.5H3.5ZM3.5 12.75V11.25H20.5V12.75H3.5ZM3.5 5V3.5H20.5V5H3.5Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SearchIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SummaryIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <path\n d=\"M3.5 17.6347V16.135H9.5V17.6347H3.5ZM3.5 12.7502V11.2502H13.5V12.7502H3.5ZM3.5 7.86547V6.36572H20.5V7.86547H3.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M17.12 12.22C17.87 13.84 19.23 15.13 20.91 15.85C19.23 16.57 17.87 17.86 17.13 19.48C16.38 17.86 15.02 16.57 13.34 15.85C15.02 15.13 16.38 13.84 17.12 12.22Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.25\"\n />\n </Icon>\n );\n}\n","import { Icon, type IconProps } from \"@icons/index\";\n\nexport default function SystemIcon(props: IconProps) {\n return (\n <Icon viewBox=\"0 0 24 24\" {...props}>\n <g>\n <path\n d=\"M10.07 13.93C9.49 13.34 8.96 12.72 8.48 12.07C8.01 11.42 7.59 10.72 7.21 9.99C7.05 10.31 6.94 10.63 6.87 10.97C6.81 11.31 6.77 11.65 6.77 12C6.77 13.45 7.28 14.69 8.3 15.7C9.31 16.72 10.55 17.23 12 17.23C12.34 17.23 12.68 17.19 13.03 17.11C13.37 17.04 13.7 16.93 14.01 16.78C13.28 16.41 12.58 15.99 11.93 15.51C11.28 15.04 10.66 14.51 10.07 13.93ZM11.14 12.88C11.96 13.7 12.87 14.41 13.88 15.01C14.88 15.61 15.95 16.08 17.1 16.43C16.46 17.16 15.7 17.73 14.82 18.14C13.94 18.55 13 18.75 12.02 18.75C10.14 18.75 8.55 18.1 7.24 16.79C5.93 15.48 5.27 13.88 5.27 12C5.27 11.02 5.48 10.09 5.89 9.2C6.29 8.32 6.86 7.56 7.6 6.93C7.95 8.07 8.42 9.14 9.02 10.15C9.62 11.15 10.32 12.06 11.14 12.88ZM18.3 14.49C18.05 14.43 17.81 14.36 17.56 14.28C17.32 14.2 17.08 14.11 16.84 14.02C16.98 13.7 17.08 13.37 17.15 13.03C17.22 12.7 17.25 12.35 17.25 12C17.25 10.55 16.74 9.31 15.71 8.29C14.69 7.26 13.45 6.75 12 6.75C11.65 6.75 11.3 6.78 10.96 6.85C10.63 6.91 10.3 7.01 9.98 7.15C9.89 6.91 9.8 6.68 9.73 6.44C9.66 6.21 9.6 5.97 9.53 5.72C9.93 5.56 10.33 5.45 10.75 5.37C11.17 5.29 11.59 5.25 12.02 5.25C13.9 5.25 15.5 5.91 16.81 7.21C18.12 8.52 18.77 10.12 18.77 12C18.77 12.43 18.74 12.86 18.66 13.28C18.58 13.69 18.46 14.1 18.3 14.49ZM11.25 3.13V0.44H12.75V3.13H11.25ZM11.25 23.56V20.87H12.75V23.56H11.25ZM18.8 6.26L17.74 5.19L19.62 3.33L20.69 4.38L18.8 6.26ZM4.38 20.68L3.31 19.62L5.19 17.74L6.26 18.81L4.38 20.68ZM20.86 12.75V11.25H23.56V12.75H20.86ZM0.44 12.75V11.25H3.13V12.75H0.44ZM19.62 20.69L17.74 18.81L18.8 17.74L20.67 19.62L19.62 20.69ZM5.19 6.26L3.32 4.38L4.38 3.31L6.26 5.19L5.19 6.26Z\"\n fill=\"currentColor\"\n />\n </g>\n </Icon>\n );\n}\n","import type { ReactElement, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactElement<IconProps>;\n label?: ReactNode;\n action?: ReactElement<ButtonProps>;\n className?: string;\n};\n\nexport function Badge({\n icon,\n label,\n action,\n className,\n ...props\n}: BadgeProps) {\n return (\n <div className={cn(\"w-fit\", className)} {...props}>\n {icon}\n {label}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardOwnProps = {\n children: ReactNode;\n className?: string;\n};\n\ntype CardProps<T extends ElementType = \"div\"> = CardOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | \"as\">;\n\nexport function Card<T extends ElementType = \"div\">({\n as,\n children,\n className,\n ...props\n}: CardProps<T>) {\n const Component = as || \"div\";\n\n return (\n <Component className={cn(className)} {...props}>\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardLayoutProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardLayout({ children, className }: CardLayoutProps) {\n return (\n <div\n className={cn(\n `grid h-full grid-cols-[auto_1fr] grid-rows-[auto_auto_1fr_auto]`,\n className\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardSidebarProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardSidebar({ children, className }: CardSidebarProps) {\n return <div className={cn(\"row-span-4\", className)}>{children}</div>;\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardHeaderProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardHeader({ children, className }: CardHeaderProps) {\n return (\n <div className={cn(\"col-start-2 row-start-1\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardTitleProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardTitle({ children, className }: CardTitleProps) {\n return (\n <h3 className={cn(\"col-start-2 row-start-2\", className)}>{children}</h3>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardContentProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardContent({ children, className }: CardContentProps) {\n return (\n <div className={cn(\"col-start-2 row-start-3\", className)}>{children}</div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\n\ntype CardFooterProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function CardFooter({ children, className }: CardFooterProps) {\n return (\n <div className={cn(\"col-start-2 row-start-4\", className)}>{children}</div>\n );\n}\n","import { Children, cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { Dropdown, type DropdownProps } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\n\nexport type DropdownMenuItemProps = ButtonProps & {\n closeOnClick?: boolean;\n};\n\nexport type DropdownMenuProps = DropdownProps & {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n};\n\nfunction DropdownMenuContent({\n children,\n className,\n}: {\n children:\n | ReactElement<DropdownMenuItemProps>\n | ReactElement<DropdownMenuItemProps>[];\n className?: string;\n}) {\n const { close } = useDropdown();\n\n return (\n <div\n role=\"menu\"\n tabIndex={-1}\n className={cn(\"flex flex-col outline-none\", className)}\n >\n {Children.map(children, (child) =>\n cloneElement(child, {\n role: \"menuitem\",\n onClick: (e) => {\n child.props.onClick?.(e);\n if (child.props.closeOnClick !== false) {\n close();\n }\n },\n })\n )}\n </div>\n );\n}\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n return <Button {...props} />;\n}\n\nexport function DropdownMenu({\n trigger,\n children,\n className,\n ...props\n}: DropdownMenuProps) {\n return (\n <Dropdown trigger={trigger} {...props}>\n <DropdownMenuContent className={className}>\n {children}\n </DropdownMenuContent>\n </Dropdown>\n );\n}\n","export const AVATAR_COLOR = {\n amber: { bg: \"bg-amber-200\", text: \"text-amber-700\" },\n blue: { bg: \"bg-blue-200\", text: \"text-blue-700\" },\n cyan: { bg: \"bg-cyan-200\", text: \"text-cyan-700\" },\n emerald: { bg: \"bg-emerald-200\", text: \"text-emerald-700\" },\n fuchsia: { bg: \"bg-fuchsia-200\", text: \"text-fuchsia-700\" },\n green: { bg: \"bg-green-200\", text: \"text-green-700\" },\n indigo: { bg: \"bg-indigo-200\", text: \"text-indigo-700\" },\n lime: { bg: \"bg-lime-200\", text: \"text-lime-700\" },\n orange: { bg: \"bg-orange-200\", text: \"text-orange-700\" },\n pink: { bg: \"bg-pink-200\", text: \"text-pink-700\" },\n purple: { bg: \"bg-purple-200\", text: \"text-purple-700\" },\n rose: { bg: \"bg-rose-200\", text: \"text-rose-700\" },\n sky: { bg: \"bg-sky-200\", text: \"text-sky-700\" },\n slate: { bg: \"bg-slate-200\", text: \"text-slate-700\" },\n stone: { bg: \"bg-stone-200\", text: \"text-stone-700\" },\n teal: { bg: \"bg-teal-200\", text: \"text-teal-700\" },\n violet: { bg: \"bg-violet-200\", text: \"text-violet-700\" },\n} as const;\n\nexport type AvatarColorKey = keyof typeof AVATAR_COLOR;\nexport type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];\n\nexport const AVATAR_COLOR_KEYS = Object.keys(AVATAR_COLOR) as AvatarColorKey[];\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { pickColorFromPalette } from \"@utils/color\";\nimport { getInitials } from \"@utils/string\";\n\nimport {\n AVATAR_COLOR,\n AVATAR_COLOR_KEYS,\n type AvatarColorKey,\n} from \"./types/avatar\";\n\nconst avatarStyles = tv({\n base: \"flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none\",\n variants: {\n size: {\n xs: \"h-[16px] w-[16px] text-[0.5em]\",\n sm: \"h-[20px] w-[20px] text-[0.625em]\",\n md: \"h-[28px] w-[28px] text-[0.75em]\",\n lg: \"h-[36px] w-[36px] text-[0.875em]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type AvatarProps = {\n name: string;\n className?: string;\n} & VariantProps<typeof avatarStyles>;\n\nfunction getAvatarInitials(name: string) {\n const base = name.includes(\"@\") ? name.split(\"@\")[0] : name;\n return getInitials(base);\n}\n\nexport function Avatar({ name, size = \"sm\", className }: AvatarProps) {\n const initials = getAvatarInitials(name);\n\n const colorKey: AvatarColorKey = pickColorFromPalette(\n name,\n AVATAR_COLOR_KEYS\n );\n\n const color = AVATAR_COLOR[colorKey];\n\n return (\n <div\n role=\"img\"\n aria-label={name}\n className={cn(avatarStyles({ size }), color.bg, color.text, className)}\n >\n {initials}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Badge, type BadgeProps } from \"@components/badge/badge\";\nimport {\n CheckCircleIcon,\n CloseIcon,\n FireIcon,\n InsightIcon,\n} from \"@icons/index\";\n\nconst statusBadgeStyles = tv({\n slots: {\n root: \"relative flex items-center gap-1 rounded-full border\",\n text: \"truncate text-xs font-semibold whitespace-nowrap\",\n },\n variants: {\n status: {\n fire: {\n root: \"border-tertiary-400 bg-tertiary-50\",\n text: \"text-tertiary-500-variant-2\",\n },\n insight: {\n root: \"border-primary-400-variant-1 bg-primary-subtle\",\n text: \"text-primary-600\",\n },\n done: {\n root: \"border-success-base bg-success-light\",\n text: \"text-success-base\",\n },\n },\n },\n});\n\ntype BadgeLayout =\n | \"icon-label\"\n | \"icon-action\"\n | \"icon-label-action\"\n | \"label-only\";\n\nconst STATUS_CONFIG = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insight\",\n compact: \"label-only\",\n normal: \"icon-label\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n compact: \"icon-action\",\n normal: \"icon-label-action\",\n },\n} as const satisfies Record<\n string,\n {\n icon: React.FC<{ size?: number; className?: string }>;\n label: string;\n compact: BadgeLayout;\n normal: BadgeLayout;\n }\n>;\n\nexport type StatusBadgeProps = Omit<BadgeProps, \"icon\" | \"action\" | \"label\"> &\n Required<VariantProps<typeof statusBadgeStyles>> & {\n label?: ReactNode;\n onAction?: () => void;\n density?: Density;\n };\n\nexport function StatusBadge({\n className,\n label,\n status,\n onAction,\n density = \"normal\",\n}: StatusBadgeProps) {\n const [hovered, setHovered] = useState(false);\n\n const isCompact = density === \"compact\";\n const config = STATUS_CONFIG[status];\n const layout = isCompact ? config.compact : config.normal;\n\n const styles = statusBadgeStyles({ status });\n\n const showIcon = layout.includes(\"icon\");\n const showLabel = layout.includes(\"label\");\n const showAction = layout.includes(\"action\") && onAction;\n\n return (\n <Badge\n className={cn(\n styles.root(),\n isCompact ? \"h-6 w-6\" : \"py-1 pr-2.5 pl-2\",\n className\n )}\n icon={\n showIcon ? (\n <config.icon\n size={16}\n className={cn(\n styles.text(),\n isCompact && showAction && \"absolute inset-0 m-auto\",\n isCompact && showAction && hovered && \"opacity-0\"\n )}\n />\n ) : undefined\n }\n label={\n showLabel ? (\n <span\n className={cn(\n styles.text(),\n isCompact &&\n \"absolute inset-0 flex items-center justify-center text-center text-[10px]\"\n )}\n >\n {label ?? config.label}\n </span>\n ) : undefined\n }\n action={\n showAction ? (\n <Button\n onClick={onAction}\n aria-label=\"Dismiss status\"\n className={cn(\n \"group\",\n isCompact\n ? cn(\n \"absolute inset-0 m-auto transition-opacity\",\n hovered ? \"opacity-100\" : \"opacity-0\"\n )\n : undefined\n )}\n >\n <CloseIcon\n size={16}\n className={cn(styles.text(), \"group-hover:scale-90\")}\n />\n </Button>\n ) : undefined\n }\n onMouseEnter={isCompact ? () => setHovered(true) : undefined}\n onMouseLeave={isCompact ? () => setHovered(false) : undefined}\n />\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n icon: ReactElement<IconProps>;\n};\n\n// IconButton is a button with an icon. It only supports one child icon.\n// The icon is only decorative and should not be focusable.\nexport function IconButton({ icon, ...props }: IconButtonProps) {\n return (\n <Button {...props}>\n {cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n className: cn(\"shrink-0\", icon.props.className),\n })}\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Tooltip, type TooltipProps } from \"@primitives/tooltip\";\n\n// InfoTooltip is a styled preset of Tooltip.\n// It intentionally exposes the same API as Tooltip.\nexport type InfoTooltipProps = TooltipProps;\n\nexport function InfoTooltip({ className, ...props }: InfoTooltipProps) {\n return (\n <Tooltip\n {...props}\n className={cn(\n \"rounded bg-neutral-700 px-2 py-1 text-[0.625em] font-medium whitespace-nowrap text-white\",\n className\n )}\n />\n );\n}\n","import { useState, type ReactElement } from \"react\";\n\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n CompactDensityIcon,\n FireIcon,\n MinusIcon,\n NormalDensityIcon,\n NotFireIcon,\n ReadIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\ntype BulkAction = {\n id: string;\n tooltip: string;\n icon: ReactElement<IconProps>;\n onClick: () => void;\n};\n\ntype BulkActionsProps = {\n totalItems: number;\n selectedItems: number;\n\n onSelectAll: (select: boolean) => void;\n\n actions: {\n fire: { on: () => void; off: () => void };\n done: { on: () => void; off: () => void };\n read: { on: () => void; off: () => void };\n };\n\n defaultDensity?: Density;\n onDensityChange: (density: Density) => void;\n\n className?: string;\n};\n\nexport function BulkActions({\n totalItems = 0,\n selectedItems = 0,\n onSelectAll,\n actions,\n defaultDensity = \"normal\",\n onDensityChange,\n className,\n}: BulkActionsProps) {\n const hasItems = totalItems > 0;\n const isAllSelected = hasItems && selectedItems === totalItems;\n const isPartiallySelected =\n hasItems && selectedItems > 0 && selectedItems < totalItems;\n\n const label = isAllSelected\n ? `All (${totalItems})`\n : isPartiallySelected\n ? `${selectedItems}/${totalItems} selected`\n : `Select all (${totalItems})`;\n\n const [density, setDensity] = useState<Density>(defaultDensity ?? \"normal\");\n\n const handleSelectAll = () => {\n onSelectAll(!isAllSelected);\n };\n\n function changeDensity(next: Density) {\n setDensity(next);\n onDensityChange?.(next);\n }\n\n const actionGroups: Record<string, BulkAction[]> = {\n fire: [\n {\n id: \"fire\",\n tooltip: \"Mark as fire\",\n icon: <FireIcon size={20} className=\"text-tertiary-500-variant-2\" />,\n onClick: actions.fire.on,\n },\n {\n id: \"not-fire\",\n tooltip: \"Mark as not fire\",\n icon: <NotFireIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.fire.off,\n },\n ],\n done: [\n {\n id: \"done\",\n tooltip: \"Mark as done\",\n icon: <CheckCircleIcon size={20} className=\"text-success-base\" />,\n onClick: actions.done.on,\n },\n {\n id: \"not-done\",\n tooltip: \"Mark as not done\",\n icon: <CheckCircleEmptyIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.done.off,\n },\n ],\n read: [\n {\n id: \"unread\",\n tooltip: \"Mark as unread\",\n icon: <UnreadIcon size={20} className=\"text-primary-600-variant-1\" />,\n onClick: actions.read.on,\n },\n {\n id: \"read\",\n tooltip: \"Mark as read\",\n icon: <ReadIcon size={20} className=\"text-neutral-900\" />,\n onClick: actions.read.off,\n },\n ],\n };\n\n const densityOptions: Array<{\n value: Density;\n tooltip: string;\n icon: ReactElement<IconProps>;\n }> = [\n {\n value: \"normal\",\n tooltip: \"Normal density\",\n icon: <NormalDensityIcon size={20} />,\n },\n {\n value: \"compact\",\n tooltip: \"Compact density\",\n icon: <CompactDensityIcon size={20} />,\n },\n ];\n\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all */}\n <Checkbox\n checked={isAllSelected}\n indeterminate={isPartiallySelected}\n onChange={handleSelectAll}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n indeterminateIcon={<MinusIcon size={12} className=\"text-neutral-900\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n >\n {label}\n </Checkbox>\n\n {/* Bulk actions */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\">\n {selectedItems > 0 && (\n <>\n {Object.entries(actionGroups).map(([groupKey, actions]) => (\n <div key={groupKey} className=\"flex items-center gap-2 px-1\">\n {actions.map((action) => (\n <InfoTooltip\n key={action.id}\n content={action.tooltip}\n className=\"border-black\"\n >\n <IconButton\n className=\"h-7 w-7 p-0\"\n onClick={action.onClick}\n icon={action.icon}\n />\n </InfoTooltip>\n ))}\n </div>\n ))}\n </>\n )}\n </div>\n\n {/* Density */}\n <div className=\"flex items-center gap-2\">\n {densityOptions.map(({ value, tooltip, icon }) => {\n const isActive = density === value;\n\n return (\n <InfoTooltip key={value} content={tooltip}>\n <IconButton\n className={cn(\n \"h-7 w-7 p-0 text-neutral-900\",\n isActive && \"bg-white-variant-4\"\n )}\n onClick={() => changeDensity(value)}\n icon={icon}\n aria-pressed={isActive}\n />\n </InfoTooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\n\ntype SkeletonProps = {\n className?: string;\n};\n\nexport function Skeleton({ className }: SkeletonProps) {\n return <div className={cn(\"skeleton rounded-md\", className)} />;\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type BulkActionsSkeletonProps = {\n className?: string;\n};\n\nexport function BulkActionsSkeleton({ className }: BulkActionsSkeletonProps) {\n return (\n <div\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-4\",\n className\n )}\n >\n {/* Select all skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n <Skeleton className=\"h-4 w-30\" />\n </div>\n\n {/* Bulk actions skeleton */}\n <div className=\"flex items-center divide-x divide-neutral-400-variant-1\" />\n\n {/* Density skeleton */}\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n <Skeleton className=\"m-1 h-5 w-5 rounded\" />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ComponentType, type ReactElement } from \"react\";\n\nimport { tv } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport {\n CheckCircleIcon,\n FireIcon,\n InsightIcon,\n UnreadIcon,\n type IconProps,\n} from \"@icons/index\";\n\nconst filterButtonStyles = tv({\n slots: {\n root: \"inline-flex w-fit items-center gap-1 rounded-full border px-2 py-1 transition-colors\",\n label: \"flex shrink-0 items-center gap-1 text-xs whitespace-nowrap\",\n },\n variants: {\n selected: {\n false: {\n root: \"border-neutral-300 bg-white hover:border-neutral-500-variant-4 hover:bg-neutral-100\",\n label:\n \"font-semibold text-neutral-800 opacity-80 group-hover:opacity-100\",\n },\n true: {\n root: \"border-primary-400 bg-primary-light hover:border-primary-400\",\n label: \"font-semibold text-neutral-900\",\n },\n },\n },\n defaultVariants: {\n selected: false,\n },\n});\n\nconst FILTER_BUTTON_META = {\n fire: {\n icon: FireIcon,\n label: \"Fire\",\n iconColor: \"text-tertiary-500\",\n },\n unread: {\n icon: UnreadIcon,\n label: \"Unread\",\n iconColor: \"text-primary-500\",\n },\n insight: {\n icon: InsightIcon,\n label: \"Insights\",\n iconColor: \"text-primary-600\",\n },\n done: {\n icon: CheckCircleIcon,\n label: \"Done\",\n iconColor: \"text-success-base\",\n },\n} as const;\n\ntype FilterButtonVariant = keyof typeof FILTER_BUTTON_META | \"custom\";\n\ntype FilterButtonClassNames = Partial<{\n root: string;\n icon: string;\n label: string;\n count: string;\n}>;\n\nexport type FilterButtonProps = Omit<ButtonProps, \"children\" | \"className\"> & {\n variant?: FilterButtonVariant;\n label?: string;\n count?: number;\n selected?: boolean;\n icon?: ReactElement<IconProps>;\n classNames?: FilterButtonClassNames;\n};\n\nfunction renderIcon(\n Icon: ReactElement<IconProps> | ComponentType<IconProps>,\n className: string\n) {\n if (typeof Icon === \"function\") {\n return <Icon size={20} className={className} />;\n }\n\n return cloneElement(Icon, {\n size: Icon.props.size ?? 20,\n className: cn(className, Icon.props.className),\n });\n}\n\nexport function FilterButton({\n variant = \"custom\",\n label,\n count,\n selected = false,\n icon,\n classNames,\n disabled,\n ...props\n}: FilterButtonProps) {\n const isDisabled = Boolean(disabled);\n\n const styles = filterButtonStyles({\n selected: !isDisabled && selected,\n });\n\n const meta = variant !== \"custom\" ? FILTER_BUTTON_META[variant] : undefined;\n\n const resolvedIcon = icon ?? meta?.icon;\n const resolvedLabel = label ?? meta?.label;\n\n const iconColor = isDisabled\n ? \"text-neutral-400\"\n : selected && meta?.iconColor\n ? meta.iconColor\n : \"text-neutral-900 opacity-60 group-hover:opacity-80\";\n\n return (\n <Button\n {...props}\n disabled={disabled}\n aria-label={props[\"aria-label\"] ?? resolvedLabel}\n className={cn(\n \"group\",\n styles.root(),\n isDisabled && \"border-neutral-300 bg-white hover:border-neutral-300\",\n classNames?.root\n )}\n >\n {resolvedIcon && (\n <span className={cn(\"flex items-center\", classNames?.icon)}>\n {renderIcon(resolvedIcon, cn(\"shrink-0\", iconColor))}\n </span>\n )}\n\n {resolvedLabel && (\n <span\n className={cn(\n styles.label(),\n isDisabled && \"font-medium text-neutral-400\",\n classNames?.label\n )}\n >\n <span>{resolvedLabel}</span>\n\n {typeof count === \"number\" && count > 0 && (\n <span\n aria-label={`${count} items`}\n className={cn(\"font-medium\", classNames?.count)}\n >\n ({count})\n </span>\n )}\n </span>\n )}\n </Button>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button, type ButtonProps } from \"@primitives/button\";\nimport { type IconProps } from \"@icons/index\";\n\nconst iconCountButtonStyles = tv({\n slots: {\n root: \"flex w-fit items-center\",\n bubble:\n \"flex size-8 items-center justify-center rounded-full border-[1.5px] transition-opacity hover:opacity-70\",\n label: \"flex items-center gap-1 transition-colors\",\n count: \"font-normal\",\n icon: \"\",\n },\n variants: {\n variant: {\n primary: {},\n secondary: {},\n minimal: {\n bubble: \"border-none text-primary-500\",\n label: \"text-primary-500\",\n },\n },\n status: {\n active: {},\n inactive: {},\n },\n orientation: {\n vertical: {\n root: \"flex-col gap-1\",\n label: \"text-[9px] font-semibold\",\n },\n horizontal: {\n root: \"flex-row gap-2\",\n label: \"text-xs font-semibold\",\n },\n },\n },\n compoundVariants: [\n // Primary - Active\n {\n variant: \"primary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n },\n },\n // Primary - Inactive\n {\n variant: \"primary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"opacity-60\",\n icon: \"opacity-50 grayscale\",\n },\n },\n // Secondary - Active\n {\n variant: \"secondary\",\n status: \"active\",\n class: {\n bubble: \"border-primary-400-variant-1\",\n label: \"text-neutral-900\",\n icon: \"text-success-base\",\n },\n },\n // Secondary - Inactive\n {\n variant: \"secondary\",\n status: \"inactive\",\n class: {\n bubble: \"border-neutral-300\",\n label: \"text-neutral-900\",\n },\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n orientation: \"vertical\",\n status: \"active\",\n },\n});\n\ntype IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;\n\ntype IconCountButtonClassNames = Partial<{\n root: string;\n bubble: string;\n label: string;\n count: string;\n}>;\n\nexport type IconCountButtonProps = IconCountButtonVariant &\n Omit<ButtonProps, \"children\" | \"className\"> & {\n icon: ReactElement<IconProps>;\n label: string;\n count?: number;\n alwaysShowCount?: boolean;\n classNames?: IconCountButtonClassNames;\n };\n\nexport function IconCountButton({\n icon,\n label,\n count,\n variant = \"primary\",\n orientation = \"vertical\",\n status = \"active\",\n alwaysShowCount = false,\n classNames,\n ...props\n}: IconCountButtonProps) {\n const styles = iconCountButtonStyles({ variant, orientation, status });\n\n function formatCount(count: number, max = 99): string {\n return count > max ? `${max}+` : String(count);\n }\n\n return (\n <Button {...props} className={cn(styles.root(), classNames?.root)}>\n <div className={cn(styles.bubble(), classNames?.bubble)}>\n {cloneElement(icon, {\n size: icon.props.size ?? 20,\n className: cn(styles.icon(), icon.props.className),\n })}\n </div>\n\n <div className={cn(styles.label(), classNames?.label)}>\n <span>{label}</span>\n {typeof count === \"number\" &&\n count > 0 &&\n (alwaysShowCount || status === \"active\") && (\n <span\n aria-label={`${count} items`}\n className={cn(styles.count(), classNames?.count)}\n >\n ({formatCount(count)})\n </span>\n )}\n </div>\n </Button>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\ntype IconCountButtonOrientation = \"vertical\" | \"horizontal\";\n\nexport type IconCountButtonSkeletonProps = {\n orientation?: IconCountButtonOrientation;\n className?: string;\n};\n\nexport function IconCountButtonSkeleton({\n orientation = \"vertical\",\n className,\n}: IconCountButtonSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <div\n className={cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\",\n className\n )}\n >\n <Skeleton className=\"size-8 rounded-full\" />\n\n <div\n className={cn(\"flex items-center gap-1\", isVertical && \"text-[9px]\")}\n >\n <Skeleton className={cn(\"h-3\", isVertical ? \"w-10\" : \"w-14\")} />\n </div>\n </div>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport {\n DropdownMenu,\n type DropdownMenuItemProps,\n type DropdownMenuProps,\n} from \"@components/dropdown-menu/dropdown-menu\";\nimport { type IconProps } from \"@icons/index\";\n\ntype ActionMenuProps = DropdownMenuProps;\n\ntype ActionMenuItemProps = DropdownMenuItemProps & {\n icon?: ReactElement<IconProps>;\n label: string;\n selected?: boolean;\n};\n\nexport function ActionMenuItem({\n icon,\n label,\n className,\n selected,\n ...props\n}: ActionMenuItemProps) {\n return (\n <Button\n className={cn(\n \"flex items-center justify-start gap-2 bg-white px-3 py-2 hover:bg-neutral-100\",\n selected && \"bg-primary-500 text-white hover:bg-primary-bright\",\n className\n )}\n {...props}\n >\n {icon &&\n cloneElement(icon, {\n size: icon.props.size ?? 16,\n className: cn(\n selected ? \"text-white\" : \"text-neutral-600-variant-7\",\n icon.props.className\n ),\n })}\n <span\n className={cn(\n \"text-xs font-medium transition-colors\",\n selected ? \"text-white\" : \"text-neutral-900\"\n )}\n >\n {label}\n </span>\n </Button>\n );\n}\n\nexport function ActionMenu({\n trigger,\n children,\n className,\n ...props\n}: ActionMenuProps) {\n return (\n <DropdownMenu\n trigger={trigger}\n className={cn(\n \"mt-1 min-w-20 overflow-hidden rounded border border-neutral-400 bg-white p-0 shadow-lg\",\n className\n )}\n {...props}\n >\n {children}\n </DropdownMenu>\n );\n}\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n formatDate,\n formatDateRange,\n generateCalendarDays,\n getMonthName,\n getWeekdays,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isToday,\n} from \"@utils/calendar\";\nimport { cn } from \"@utils/classnames\";\nimport { Button } from \"@primitives/button\";\nimport { Dropdown } from \"@primitives/dropdown/dropdown\";\nimport { useDropdown } from \"@primitives/dropdown/dropdown-context\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { ArrowIcon, CalendarIcon, CloseIcon } from \"@icons/index\";\n\ntype DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype DatePickerProps = {\n mode?: \"single\" | \"range\";\n value?: Date | null | DateRange;\n defaultValue?: Date | null | DateRange;\n onChange?: (date: Date | null | DateRange) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n};\n\nfunction CalendarPanel({\n mode,\n selectedDate,\n selectedRange,\n onDateSelect,\n onRangeSelect,\n}: {\n mode: \"single\" | \"range\";\n selectedDate: Date | null;\n selectedRange: DateRange;\n onDateSelect: (date: Date) => void;\n onRangeSelect: (range: DateRange) => void;\n}) {\n const { close } = useDropdown();\n const today = useMemo(() => new Date(), []);\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const prevSelectedDateRef = useRef<Date | null>(selectedDate);\n const prevSelectedRangeRef = useRef<DateRange>(selectedRange);\n\n // Initialize to selected date/range or today\n const [currentMonth, setCurrentMonth] = useState(() => {\n const date =\n mode === \"single\"\n ? (selectedDate ?? today)\n : (selectedRange.startDate ?? selectedRange.endDate ?? today);\n return { year: date.getFullYear(), month: date.getMonth() };\n });\n\n // Update current month when selectedDate/selectedRange changes\n useEffect(() => {\n // Only update if the selected date/range actually changed\n const hasChanged =\n (mode === \"single\" &&\n selectedDate &&\n (!prevSelectedDateRef.current ||\n selectedDate.getTime() !== prevSelectedDateRef.current.getTime())) ||\n (mode === \"range\" &&\n (selectedRange.startDate?.getTime() !==\n prevSelectedRangeRef.current.startDate?.getTime() ||\n selectedRange.endDate?.getTime() !==\n prevSelectedRangeRef.current.endDate?.getTime()));\n\n if (hasChanged) {\n // Defer state update to avoid cascading renders\n queueMicrotask(() => {\n if (mode === \"single\" && selectedDate) {\n setCurrentMonth({\n year: selectedDate.getFullYear(),\n month: selectedDate.getMonth(),\n });\n } else if (mode === \"range\") {\n const date = selectedRange.startDate ?? selectedRange.endDate;\n if (date) {\n setCurrentMonth({\n year: date.getFullYear(),\n month: date.getMonth(),\n });\n }\n }\n });\n }\n\n // Update refs\n prevSelectedDateRef.current = selectedDate;\n prevSelectedRangeRef.current = selectedRange;\n }, [mode, selectedDate, selectedRange]);\n\n // Generate full calendar days array with previous/next month days\n const calendarDays = useMemo(() => {\n return generateCalendarDays(currentMonth.year, currentMonth.month);\n }, [currentMonth.year, currentMonth.month]);\n\n function handleDateClick(date: Date) {\n // If clicking a day from previous/next month, update currentMonth first\n const clickedMonth = date.getMonth();\n const clickedYear = date.getFullYear();\n\n if (\n clickedMonth !== currentMonth.month ||\n clickedYear !== currentMonth.year\n ) {\n setCurrentMonth({\n year: clickedYear,\n month: clickedMonth,\n });\n }\n\n if (mode === \"single\") {\n onDateSelect(date);\n close();\n } else {\n // Range mode\n const { startDate, endDate } = selectedRange;\n\n if (!startDate || endDate) {\n // No start date or range is complete - start a new range\n onRangeSelect({ startDate: date, endDate: null });\n // Don't close - wait for end date\n } else {\n // Start date exists, selecting end date\n if (isDateBefore(date, startDate)) {\n // Date is before start - make it the new start\n onRangeSelect({ startDate: date, endDate: null });\n } else {\n // Valid end date\n onRangeSelect({ startDate, endDate: date });\n close();\n }\n }\n }\n }\n\n function handlePrevMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 0) {\n return { year: prev.year - 1, month: 11 };\n }\n return { year: prev.year, month: prev.month - 1 };\n });\n }\n\n function handleNextMonth() {\n setCurrentMonth((prev) => {\n if (prev.month === 11) {\n return { year: prev.year + 1, month: 0 };\n }\n return { year: prev.year, month: prev.month + 1 };\n });\n }\n\n const weekdays = getWeekdays();\n\n return (\n <div className=\"mt-1 w-fit rounded-lg border border-neutral-400 bg-white p-2 shadow-lg\">\n {/* Header */}\n <div className=\"mb-4 flex items-center justify-between border-b border-neutral-400 pb-2\">\n <IconButton\n icon={<ArrowIcon direction=\"left\" size={20} />}\n onClick={handlePrevMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Previous month\"\n />\n <div className=\"text-[10px] font-bold text-neutral-900\">\n {getMonthName(currentMonth.month)} {currentMonth.year}\n </div>\n <IconButton\n icon={<ArrowIcon direction=\"right\" size={20} />}\n onClick={handleNextMonth}\n className=\"hover:opacity-60\"\n aria-label=\"Next month\"\n />\n </div>\n\n {/* Weekdays */}\n <div className=\"mb-2 grid grid-cols-7\">\n {weekdays.map((day) => (\n <div\n key={day}\n className=\"flex items-center justify-center p-0.5 text-[9px] font-bold text-neutral-900\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7\">\n {calendarDays.map(({ day, date, isCurrentMonth }) => {\n const isTodayDate = isToday(date);\n\n // Single mode states\n const isSelectedSingle =\n mode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n\n // Range mode states\n const { startDate, endDate } = selectedRange;\n const isStart = startDate && isSameDay(date, startDate);\n const isEnd = endDate && isSameDay(date, endDate);\n\n // Determine preview range (hover state)\n let previewStart = startDate;\n let previewEnd = hoveredDate;\n\n // Only show preview if startDate exists, no endDate yet, and hovered date is after start\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n hoveredDate &&\n !isDateBefore(hoveredDate, startDate)\n ) {\n previewStart = startDate;\n previewEnd = hoveredDate;\n } else {\n previewStart = null;\n previewEnd = null;\n }\n\n const isInRange =\n mode === \"range\" &&\n (isDateInRange(date, startDate, endDate) ||\n isDateInRange(date, previewStart, previewEnd));\n\n // Visual state priority: start/end > selected (single) > inRange > today > base\n const isSelected = isSelectedSingle || isStart || isEnd;\n\n return (\n <Button\n key={`${date.getFullYear()}-${date.getMonth()}-${day}`}\n type=\"button\"\n onClick={() => handleDateClick(date)}\n onMouseEnter={() => {\n if (\n mode === \"range\" &&\n startDate &&\n !endDate &&\n !isDateBefore(date, startDate)\n ) {\n setHoveredDate(date);\n }\n }}\n onMouseLeave={() => {\n if (mode === \"range\") {\n setHoveredDate(null);\n }\n }}\n className=\"p-0.5\"\n aria-label={`Select ${formatDate(date)}`}\n aria-selected={isSelected || undefined}\n >\n <div\n className={cn(\n \"flex h-[26px] w-[26px] items-center justify-center rounded text-[9px] transition-colors\",\n // Start/End/Selected state (highest priority)\n isSelected &&\n \"bg-primary-500 font-semibold text-white-variant-1 hover:bg-primary-500\",\n // In-range state (between start and end, or in preview)\n isInRange &&\n !isSelected &&\n \"bg-primary-500/20 font-normal text-neutral-900 hover:bg-primary-500/30\",\n // Today state (only if not selected and not in range)\n isTodayDate &&\n !isSelected &&\n !isInRange &&\n \"border border-primary-500 bg-primary-500/15 font-bold hover:bg-primary-500 hover:text-white\",\n // Base styles (only if not selected and not in range)\n !isSelected &&\n !isInRange &&\n (isCurrentMonth\n ? \"text-neutral-900 hover:bg-neutral-300\"\n : \"text-neutral-600 hover:bg-neutral-200\")\n )}\n >\n {day}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction DatePickerTrigger({\n displayText,\n disabled,\n className,\n onClear,\n}: {\n displayText: string | null;\n disabled: boolean;\n className?: string;\n onClear: () => void;\n}) {\n const { close } = useDropdown();\n\n function handleClear() {\n onClear();\n close();\n }\n\n return (\n <Pressable\n disabled={disabled}\n className={cn(\n \"flex items-center justify-start gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1 text-left text-xs text-neutral-800 transition-colors hover:border-neutral-500\",\n displayText &&\n \"border-primary-400 hover:border-primary-500 hover:bg-primary-light\",\n className\n )}\n >\n <CalendarIcon size={20} className=\"text-primary-600\" />\n <span className=\"font-semibold\">Date</span>\n {displayText && (\n <>\n <span className=\"font-normal\">({displayText})</span>\n <StopPropagation>\n <IconButton\n icon={<CloseIcon size={16} />}\n onClick={handleClear}\n className=\"text-neutral-600 hover:opacity-70\"\n aria-label=\"Close\"\n />\n </StopPropagation>\n </>\n )}\n </Pressable>\n );\n}\n\nexport function DatePicker({\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n}: DatePickerProps) {\n // Single mode state\n const [internalValue, setInternalValue] = useState<Date | null>(\n mode === \"single\" && (defaultValue as Date | null | undefined)\n ? (defaultValue as Date | null)\n : null\n );\n\n // Range mode state\n const [internalRange, setInternalRange] = useState<DateRange>(() => {\n if (mode === \"range\" && defaultValue) {\n const range = defaultValue as DateRange;\n return {\n startDate: range.startDate ?? null,\n endDate: range.endDate ?? null,\n };\n }\n return { startDate: null, endDate: null };\n });\n\n const isControlled = value !== undefined;\n\n // Get current values based on mode\n const currentValue =\n mode === \"single\"\n ? isControlled\n ? ((value as Date | null | undefined) ?? null)\n : internalValue\n : null;\n\n const currentRange =\n mode === \"range\"\n ? isControlled\n ? ((value as DateRange | undefined) ?? {\n startDate: null,\n endDate: null,\n })\n : internalRange\n : { startDate: null, endDate: null };\n\n function handleDateSelect(date: Date | null) {\n if (mode === \"single\") {\n if (!isControlled) {\n setInternalValue(date);\n }\n onChange?.(date);\n }\n }\n\n function handleRangeSelect(range: DateRange) {\n if (mode === \"range\") {\n if (!isControlled) {\n setInternalRange(range);\n }\n onChange?.(range);\n }\n }\n\n function handleClear() {\n if (mode === \"single\") {\n handleDateSelect(null);\n } else {\n handleRangeSelect({ startDate: null, endDate: null });\n }\n }\n\n // Format display text\n const displayText =\n mode === \"single\"\n ? formatDate(currentValue)\n : formatDateRange(currentRange.startDate, currentRange.endDate);\n\n return (\n <>\n <Dropdown\n trigger={\n <DatePickerTrigger\n displayText={displayText}\n disabled={disabled}\n className={className}\n onClear={handleClear}\n />\n }\n disabled={disabled}\n >\n <CalendarPanel\n mode={mode}\n selectedDate={currentValue}\n selectedRange={currentRange}\n onDateSelect={handleDateSelect}\n onRangeSelect={handleRangeSelect}\n />\n </Dropdown>\n </>\n );\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport type { FilterButtonProps } from \"@patterns/buttons/filter-button/filter-button\";\n\ntype FilterBarProps = {\n children: ReactElement<FilterButtonProps>[];\n className?: string;\n};\n\nexport function FilterBar({ children, className }: FilterBarProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {children.map((child, index) => cloneElement(child, { key: index }))}\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type FilterBarSkeletonProps = {\n itemCount?: number;\n className?: string;\n};\n\nexport function FilterBarSkeleton({\n itemCount = 3,\n className,\n}: FilterBarSkeletonProps) {\n return (\n <div className={cn(\"flex flex-wrap items-center gap-2\", className)}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <FilterChipSkeleton key={index} />\n ))}\n </div>\n );\n}\n\nfunction FilterChipSkeleton() {\n return (\n <div className=\"flex items-center gap-1 rounded-full border border-neutral-300 bg-white px-2 py-1\">\n <Skeleton className=\"m-0.5 size-4 rounded-full\" />\n <Skeleton className=\"h-3 w-15\" />\n </div>\n );\n}\n","import { tv, type VariantProps } from \"tailwind-variants\";\n\nimport { cn } from \"@utils/classnames\";\n\nconst dividerStyles = tv({\n base: \"bg-neutral-400-variant-4\",\n variants: {\n orientation: {\n horizontal: \"h-px w-full\",\n vertical: \"h-full w-px\",\n },\n inset: {\n none: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n /* Horizontal */\n { orientation: \"horizontal\", inset: \"sm\", class: \"mx-2\" },\n { orientation: \"horizontal\", inset: \"md\", class: \"mx-4\" },\n { orientation: \"horizontal\", inset: \"lg\", class: \"mx-6\" },\n /* Vertical */\n { orientation: \"vertical\", inset: \"sm\", class: \"my-2\" },\n { orientation: \"vertical\", inset: \"md\", class: \"my-4\" },\n { orientation: \"vertical\", inset: \"lg\", class: \"my-6\" },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n inset: \"none\",\n },\n});\n\ntype DividerVariants = VariantProps<typeof dividerStyles>;\n\ntype DividerProps = DividerVariants & {\n className?: string;\n};\n\nexport function Divider({ className, ...variants }: DividerProps) {\n return <div className={cn(dividerStyles(variants), className)} />;\n}\n","import { cloneElement, type ReactElement } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport {\n IconCountButton,\n type IconCountButtonProps,\n} from \"@patterns/buttons/icon-count-button/icon-count-button\";\nimport { Divider } from \"@patterns/layout/divider\";\nimport { AddIcon } from \"@icons/index\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\ntype IntegrationBarProps = {\n orientation?: IntegrationBarOrientation;\n children: ReactElement<IconCountButtonProps>[];\n onAddMore: () => void;\n className?: string;\n};\n\nexport function IntegrationBar({\n orientation = \"vertical\",\n children,\n onAddMore,\n className,\n}: IntegrationBarProps) {\n return (\n <div\n className={cn(\n \"size-full\",\n orientation === \"vertical\" ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n )}\n >\n <div\n className={cn(\n \"grid h-full w-full place-items-center gap-4\",\n orientation === \"vertical\"\n ? \"grid-cols-1\"\n : \"auto-cols-max grid-flow-col\",\n className\n )}\n >\n {children.map((child) => cloneElement(child, {}))}\n <Divider\n orientation={orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n />\n <IconCountButton\n icon={<AddIcon size={24} />}\n label=\"Add\"\n onClick={onAddMore}\n variant=\"minimal\"\n orientation={orientation}\n />\n </div>\n </div>\n );\n}\n","import { cn } from \"@utils/classnames\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\nimport { Divider } from \"@patterns/layout/divider\";\n\ntype IntegrationBarOrientation = \"horizontal\" | \"vertical\";\n\nexport type IntegrationBarSkeletonProps = {\n orientation?: IntegrationBarOrientation;\n itemCount?: number;\n className?: string;\n};\n\nexport function IntegrationBarSkeleton({\n orientation = \"vertical\",\n itemCount = 3,\n className,\n}: IntegrationBarSkeletonProps) {\n const isVertical = orientation === \"vertical\";\n\n const containerClasses = cn(\n \"size-full\",\n isVertical ? \"overflow-x-hidden\" : \"overflow-y-hidden\"\n );\n\n const gridClasses = cn(\n \"grid h-full w-full place-items-center gap-4\",\n isVertical ? \"grid-cols-1\" : \"auto-cols-max grid-flow-col\",\n className\n );\n\n const itemClasses = cn(\n \"flex w-fit items-center\",\n isVertical ? \"flex-col gap-1\" : \"flex-row gap-2\"\n );\n\n const labelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-12 text-[9px]\" : \"w-16 text-xs\"\n );\n\n const addLabelSkeletonClasses = cn(\n \"h-3\",\n isVertical ? \"w-8 text-[9px]\" : \"w-10 text-xs\"\n );\n\n return (\n <div className={containerClasses}>\n <div className={gridClasses}>\n {Array.from({ length: itemCount }).map((_, index) => (\n <div key={index} className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={labelSkeletonClasses} />\n </div>\n ))}\n\n <Divider orientation={isVertical ? \"horizontal\" : \"vertical\"} />\n\n <div className={itemClasses}>\n <Skeleton className=\"size-8 rounded-full\" />\n <Skeleton className={addLabelSkeletonClasses} />\n </div>\n </div>\n </div>\n );\n}\n","export const PREVIEW_CARD_HEIGHT_SIZE = {\n normal: { style: \"h-[165px]\", value: 165 },\n compact: { style: \"h-[60px]\", value: 60 },\n};\n","import type { ReactNode } from \"react\";\n\nimport { PREVIEW_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport { Checkbox } from \"@primitives/checkbox\";\nimport { Pressable } from \"@primitives/pressable\";\nimport { StopPropagation } from \"@primitives/stop-propagation\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Avatar } from \"@patterns/avatar/avatar\";\nimport { StatusBadge } from \"@patterns/badges/status-badge\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { InfoTooltip } from \"@patterns/tooltips/info-tooltip\";\nimport {\n CheckCircleEmptyIcon,\n CheckCircleIcon,\n CheckboxIcon,\n ExternalLinkIcon,\n FireIcon,\n} from \"@icons/index\";\n\nexport type PreviewStatusBadgeType = \"fire\" | \"insight\" | \"done\";\nexport type PreviewActionType = \"fire\" | \"done\" | \"link\";\n\ntype StatusBadgeConfig = {\n label?: string;\n onClick?: () => void;\n};\n\ntype ActionConfig = {\n onClick: () => void;\n};\n\nexport type PreviewStatusBadges = Partial<\n Record<PreviewStatusBadgeType, StatusBadgeConfig>\n>;\nexport type PreviewActions = Partial<Record<PreviewActionType, ActionConfig>>;\n\nexport type PreviewCardProps = {\n icon: ReactNode;\n sender: string;\n title: string;\n content: string;\n timestamp: string;\n workspace: string;\n\n read?: boolean;\n selected?: boolean;\n onSelect?: () => void;\n\n // Checkbox (bulk selection)\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n\n statusBadges?: PreviewStatusBadges;\n actions?: PreviewActions;\n\n // Density\n density?: Density;\n\n // Styles\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst PREVIEW_ACTION_CONFIG = {\n fire: {\n className: \"group\",\n icon: (\n <FireIcon\n size={20}\n className=\"text-neutral-600 group-hover:text-tertiary-500-variant-2\"\n />\n ),\n },\n done: {\n className: \"group relative flex items-center justify-center w-6 h-6\",\n icon: (\n <span className=\"contents\">\n <CheckCircleEmptyIcon\n size={24}\n className=\"block text-neutral-600-variant-1 group-hover:hidden\"\n />\n <CheckCircleIcon\n size={24}\n className=\"hidden text-success-base group-hover:block\"\n />\n </span>\n ),\n },\n link: {\n className: \"\",\n icon: <ExternalLinkIcon size={20} className=\"text-primary-500\" />,\n },\n} as const;\n\nfunction PreviewCheckbox({\n checked,\n onCheckedChange,\n}: {\n checked: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}) {\n return (\n <StopPropagation>\n <Checkbox\n checked={checked}\n onChange={onCheckedChange}\n icon={<CheckboxIcon size={16} className=\"text-white-variant-7\" />}\n className={cn(\n \"[&_.checkbox-box]:rounded\",\n \"[&_.checkbox-box]:border\",\n \"[&_.checkbox-box]:border-neutral-600\",\n \"[&_.checkbox-box]:bg-white\",\n \"[&_.checkbox-box[data-state=checked]]:border-primary-500\",\n \"[&_.checkbox-box[data-state=checked]]:bg-primary-500\",\n \"[&_.checkbox-box[data-state=indeterminate]]:h-[18px]\",\n \"[&_.checkbox-box[data-state=indeterminate]]:w-[18px]\",\n \"[&_.checkbox-label]:flex\",\n \"[&_.checkbox-label]:items-center\",\n \"[&_.checkbox-label]:gap-1\",\n \"[&_.checkbox-label]:text-xs\",\n \"[&_.checkbox-label]:font-medium\",\n \"[&_.checkbox-label]:text-neutral-900\"\n )}\n />\n </StopPropagation>\n );\n}\n\nfunction PreviewStatusesList({\n statusBadges,\n density,\n}: {\n statusBadges: PreviewStatusBadges;\n density?: Density;\n}) {\n if (Object.keys(statusBadges).length === 0) return null;\n\n return (\n <div className=\"flex gap-2\">\n <StopPropagation>\n {(Object.keys(statusBadges) as PreviewStatusBadgeType[]).map(\n (status) => {\n const config = statusBadges[status];\n if (!config) return null;\n\n return (\n <StatusBadge\n key={status}\n status={status}\n label={config.label}\n onAction={config.onClick}\n density={density}\n />\n );\n }\n )}\n </StopPropagation>\n </div>\n );\n}\n\nfunction PreviewActionsList({\n actions,\n className,\n}: {\n actions: PreviewActions;\n className?: string;\n}) {\n if (Object.keys(actions).length === 0) return null;\n\n return (\n <div className={cn(\"flex gap-2\", className)}>\n <StopPropagation>\n {(Object.keys(actions) as PreviewActionType[]).map((type) => {\n const action = actions[type];\n if (!action) return null;\n\n return (\n <IconButton\n key={type}\n {...PREVIEW_ACTION_CONFIG[type]}\n onClick={action.onClick}\n />\n );\n })}\n </StopPropagation>\n </div>\n );\n}\n\nexport function PreviewCard({\n icon,\n sender,\n title,\n content,\n timestamp,\n workspace,\n read = false,\n selected = false,\n onSelect,\n checked = false,\n onCheckedChange,\n statusBadges = {},\n actions = {},\n density = \"normal\",\n className,\n style,\n}: PreviewCardProps) {\n return (\n <Card\n as={Pressable}\n onPress={onSelect}\n className={cn(\n \"w-full rounded-lg border-[1.5px] border-primary-400 bg-white-variant-5 p-4 hover:bg-primary-light\",\n read && \"border-neutral-400\",\n selected && \"border-primary-500 bg-primary-light\",\n density === \"normal\"\n ? `${PREVIEW_CARD_HEIGHT_SIZE.normal.style}`\n : `${PREVIEW_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n {icon}\n\n <span\n className={cn(\n \"min-w-0 -translate-x-0.5 truncate text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {sender}\n </span>\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n\n <CardTitle\n className={cn(\n \"line-clamp-1 text-sm font-bold text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n {title}\n </CardTitle>\n\n <CardContent className=\"line-clamp-2 min-w-0 text-sm text-neutral-900\">\n {content}\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <PreviewStatusesList statusBadges={statusBadges} />\n\n <PreviewActionsList\n actions={actions}\n className=\"col-start-2 justify-self-end\"\n />\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <PreviewCheckbox\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n {icon}\n\n <PreviewStatusesList\n statusBadges={statusBadges}\n density={density}\n />\n\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 text-sm font-bold whitespace-nowrap text-neutral-900\",\n read && \"font-medium\"\n )}\n >\n <span className=\"truncate\">{sender}</span>\n <span className=\"shrink-0 text-sm text-neutral-500\">•</span>\n <span className=\"truncate\">{title}</span>\n </div>\n\n <div className=\"flex-1\" />\n\n <PreviewActionsList actions={actions} />\n\n <span className=\"text-xs leading-tight font-semibold tracking-wide whitespace-nowrap text-neutral-800\">\n {timestamp}\n </span>\n\n <InfoTooltip content={workspace}>\n <Avatar name={workspace} />\n </InfoTooltip>\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { PREVIEW_CARD_HEIGHT_SIZE } from \"@ui-types/sizes\";\nimport type { Density } from \"@ui-types/types\";\nimport { cn } from \"@utils/classnames\";\nimport {\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardLayout,\n CardSidebar,\n CardTitle,\n} from \"@components/card\";\nimport { Skeleton } from \"@components/skeleton/skeleton\";\n\nexport type PreviewCardSkeletonProps = {\n density?: Density;\n className?: string;\n style?: CSSProperties;\n};\n\nexport function PreviewCardSkeleton({\n density = \"normal\",\n className,\n style,\n}: PreviewCardSkeletonProps) {\n return (\n <Card\n className={cn(\n \"w-full rounded-lg bg-white-variant-5 p-4\",\n density === \"normal\"\n ? `${PREVIEW_CARD_HEIGHT_SIZE.normal.style}`\n : `${PREVIEW_CARD_HEIGHT_SIZE.compact.style}`,\n className\n )}\n style={style}\n >\n {density === \"normal\" ? (\n <CardLayout className=\"gap-x-2 gap-y-1\">\n <CardSidebar>\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"grid grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n\n <CardTitle className=\"flex h-5 items-center\">\n <Skeleton className=\"h-4 w-48\" />\n </CardTitle>\n\n <CardContent>\n <Skeleton className=\"my-1 h-4 w-full\" />\n <Skeleton className=\"my-1 h-4 w-3/4\" />\n </CardContent>\n\n <CardFooter className=\"mt-3 grid grid-cols-[minmax(0,1fr)_auto] items-center gap-1\">\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-23 rounded-full\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n <Skeleton className=\"h-6 w-6 rounded-full\" />\n </div>\n </CardFooter>\n </CardLayout>\n ) : (\n <CardLayout className=\"grid grid-cols-[auto_1fr] grid-rows-1 gap-x-2\">\n <CardSidebar className=\"flex items-center justify-center\">\n <Skeleton className=\"h-5 w-5\" />\n </CardSidebar>\n\n <CardHeader className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-4\" />\n\n <div className=\"flex min-w-0 items-center gap-2\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n\n <div className=\"flex-1\" />\n\n <Skeleton className=\"h-3 w-12\" />\n <Skeleton className=\"h-5 w-5 rounded-full\" />\n </CardHeader>\n </CardLayout>\n )}\n </Card>\n );\n}\n","import { useState } from \"react\";\n\nimport { cn } from \"@utils/classnames\";\nimport { Input } from \"@primitives/input\";\nimport { IconButton } from \"@patterns/buttons/icon-button/icon-button\";\nimport { CloseIcon, SearchIcon } from \"@icons/index\";\n\ntype SearchInputProps = {\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n onChange?: (value: string) => void;\n onClear?: () => void;\n disabled?: boolean;\n className?: string;\n};\n\nexport function SearchInput({\n value,\n defaultValue,\n placeholder = \"Search...\",\n onChange,\n onClear,\n disabled = false,\n className,\n}: SearchInputProps) {\n const [internalValue, setInternalValue] = useState(defaultValue ?? \"\");\n\n const isControlled = typeof value === \"string\";\n const currentValue = isControlled ? value : internalValue;\n const hasValue = currentValue.length > 0;\n\n function handleChange(newValue: string) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n\n function handleClear() {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n onClear?.();\n }\n\n return (\n <fieldset\n role=\"search\"\n className={cn(\n \"flex h-8 min-w-0 items-center gap-1.5 rounded-full border border-neutral-500-variant-3 bg-white px-2 py-1\",\n disabled && \"pointer-events-none bg-neutral-200 opacity-70\",\n className\n )}\n disabled={disabled}\n >\n <SearchIcon size={20} className=\"text-neutral-700\" />\n\n <Input\n type=\"text\"\n value={currentValue}\n placeholder={placeholder}\n onChange={handleChange}\n className={cn(\n \"m-0 h-5 min-w-0 flex-1 border-0 p-0 text-xs text-neutral-800\",\n \"bg-transparent outline-none\",\n \"placeholder:text-neutral-700-alpha-60\",\n disabled && \"text-neutral-700-alpha-60\"\n )}\n />\n\n {hasValue && !disabled && (\n <IconButton\n type=\"button\"\n icon={<CloseIcon size={16} className=\"text-neutral-700\" />}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"rounded p-0 transition-opacity hover:opacity-70\"\n />\n )}\n </fieldset>\n );\n}\n"],"mappings":"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"}