diff --git a/src/app/(app)/signin/page.tsx b/src/app/(app)/signin/page.tsx index b5fb29b..853f246 100644 --- a/src/app/(app)/signin/page.tsx +++ b/src/app/(app)/signin/page.tsx @@ -9,7 +9,7 @@ import { useFeatureFlag } from '@/contexts/RuntimeConfigContext'; import { showPrivacyModal } from '@/components/PrivacyModal'; import { GithubIcon } from '@/components/icons/Icons'; import { LoadingSpinner } from '@/components/Spinner'; -import { Button, Field, Input, Surface } from '@/components/ui'; +import { Button, Checkbox, Field, InlineButton, Input, Surface } from '@/components/ui'; function SessionExpiredLoader({ setSessionExpired }: { setSessionExpired: (v: boolean) => void }) { const searchParams = useSearchParams(); @@ -169,11 +169,9 @@ function SignInContent() { {/* Remember Me */} @@ -238,12 +236,9 @@ function SignInContent() { )}

By signing in, you agree to our{' '} - +

diff --git a/src/app/(app)/signup/page.tsx b/src/app/(app)/signup/page.tsx index f2b1ad8..f5833cc 100644 --- a/src/app/(app)/signup/page.tsx +++ b/src/app/(app)/signup/page.tsx @@ -8,7 +8,7 @@ import { useAuthConfig, useAuthRateLimit } from '@/contexts/AuthRateLimitContext import { useFeatureFlag } from '@/contexts/RuntimeConfigContext'; import { showPrivacyModal } from '@/components/PrivacyModal'; import { LoadingSpinner } from '@/components/Spinner'; -import { Button, Field, IconButton, Input, Surface } from '@/components/ui'; +import { Button, Field, IconButton, InlineButton, Input, Surface } from '@/components/ui'; import toast from 'react-hot-toast'; export default function SignUpPage() { @@ -241,12 +241,9 @@ export default function SignUpPage() {

By creating an account, you agree to our{' '} - +

diff --git a/src/components/AudiobookExportModal.tsx b/src/components/AudiobookExportModal.tsx index 254ac1f..a50a928 100644 --- a/src/components/AudiobookExportModal.tsx +++ b/src/components/AudiobookExportModal.tsx @@ -1,7 +1,6 @@ 'use client'; -import { Fragment, useState, useRef, useCallback, useEffect, useMemo } from 'react'; -import { Transition, Menu, MenuButton } from '@headlessui/react'; +import { useState, useRef, useCallback, useEffect, useMemo } from 'react'; import { useTimeEstimation } from '@/hooks/useTimeEstimation'; import { ProgressPopup } from '@/components/ProgressPopup'; import { ProgressCard } from '@/components/ProgressCard'; @@ -14,7 +13,7 @@ import { ReaderSidebarShell } from '@/components/reader/ReaderSidebarShell'; import { resolveTtsProviderModelPolicy } from '@/lib/shared/tts-provider-policy'; import { getTtsLanguageCompatibilityWarnings, resolveTtsLanguage } from '@/lib/shared/language'; import type { TTSAudiobookChapter, TTSAudiobookFormat } from '@/types/tts'; -import { Button, Card, IconButton, MenuActionItem, MenuItemsSurface, RangeInput, Select } from '@/components/ui'; +import { Button, Card, IconButton, MenuActionItem, MenuItemsSurface, MenuRoot, MenuTransition, MenuTrigger, RangeInput, Select } from '@/components/ui'; import { getAudiobookStatus, deleteAudiobookChapter, @@ -762,23 +761,15 @@ export function AudiobookExportModal({
{((onRegenerateChapter && !isGenerating) || chapter.status === 'completed') && ( - - + - - + + {/* end of menu items */} - - + + )}
diff --git a/src/components/ColorPicker.tsx b/src/components/ColorPicker.tsx index 374ec34..8a700d1 100644 --- a/src/components/ColorPicker.tsx +++ b/src/components/ColorPicker.tsx @@ -1,10 +1,9 @@ 'use client'; import { useRef, useState, useEffect, useCallback } from 'react'; -import { Popover, PopoverButton } from '@headlessui/react'; import { isLightColor, type CustomThemeColors } from '@/contexts/ThemeContext'; import { PaletteIcon } from '@/components/icons/Icons'; -import { IconButton, Input, PopoverSurface } from '@/components/ui'; +import { IconButton, Input, PopoverIconTrigger, PopoverRoot, PopoverSurface } from '@/components/ui'; /** * Curated swatch palettes per color role, sourced from existing themes @@ -78,8 +77,8 @@ export function ColorPicker({ value, field, label, onChange }: ColorPickerProps) const swatches = ROLE_SWATCHES[field]; return ( - - + +
- +
-
+ ); } diff --git a/src/components/PrivacyModal.tsx b/src/components/PrivacyModal.tsx index 600c7c7..a82e172 100644 --- a/src/components/PrivacyModal.tsx +++ b/src/components/PrivacyModal.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from 'react'; import { updateAppConfig } from '@/lib/client/dexie'; -import { Button, ModalFrame, ModalTitle } from '@/components/ui'; +import { Button, Checkbox, ModalFrame, ModalTitle } from '@/components/ui'; interface PrivacyModalProps { isOpen: boolean; @@ -78,13 +78,11 @@ export function PrivacyModal({ isOpen, onAccept, onDismiss }: PrivacyModalProps)
- setAgreed(e.target.checked)} - className="h-4 w-4 rounded border-line text-accent focus:ring-accent-line bg-surface" />
diff --git a/src/components/SettingsModal.tsx b/src/components/SettingsModal.tsx index c15bec2..b9465ea 100644 --- a/src/components/SettingsModal.tsx +++ b/src/components/SettingsModal.tsx @@ -46,10 +46,10 @@ import { ChoiceTile, IconButton, Input, + Textarea, ModalFrame, ModalTitle, Select, - inputClass, } from '@/components/ui'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; @@ -697,7 +697,6 @@ export function SettingsModal({ value={localBaseUrl} onChange={(e) => handleInputChange('baseUrl', e.target.value)} placeholder="Using environment variable" - className={inputClass} />
)} @@ -713,7 +712,6 @@ export function SettingsModal({ value={localApiKey} onChange={(e) => handleInputChange('apiKey', e.target.value)} placeholder="Using environment variable" - className={inputClass} />
)} @@ -774,7 +772,6 @@ export function SettingsModal({ setModelValue(e.target.value); }} placeholder="Enter custom model name" - className={inputClass} /> )}
@@ -783,11 +780,11 @@ export function SettingsModal({ {providerModelPolicy.supportsInstructions && (
-