Merge branch 'main' into fix/view_filters
This commit is contained in:
@@ -17,5 +17,5 @@
|
||||
"lib": "@/lib",
|
||||
"hooks": "@/hooks"
|
||||
},
|
||||
"iconLibrary": "lucide"
|
||||
"iconLibrary": "phosphor"
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ The note list opportunistically preloads visible and adjacent markdown/text entr
|
||||
| Raw editor | CodeMirror 6 | - |
|
||||
| Styling | Tailwind CSS v4 + CSS variables | 4.1.18 |
|
||||
| UI primitives | Radix UI + shadcn/ui | - |
|
||||
| Icons | Phosphor Icons + Lucide | - |
|
||||
| Icons | Phosphor Icons | - |
|
||||
| Build | Vite | 7.3.1 |
|
||||
| Backend language | Rust (edition 2021) | 1.77.2 |
|
||||
| Frontmatter parsing | gray_matter | 0.2 |
|
||||
|
||||
@@ -152,7 +152,7 @@ files:
|
||||
settings.titles.description: b94aeeca78dd376cc19b9aa019e53f6c
|
||||
settings.titles.autoRename: 5383db8e790ebf5f956d9c59cb4c4f67
|
||||
settings.titles.autoRenameDescription: cc28c28d8817736e658082a2261d9a6e
|
||||
settings.vaultContent.title: 78b883ce9acb9c25e611158a518d9185
|
||||
settings.vaultContent.title: f15c1cae7882448b3fb0404682e17e61
|
||||
settings.vaultContent.description: a53487bf1c7898a1459dc1510e216f7d
|
||||
settings.dateDisplay.default: 915e8ca934abe6625e17695ee7ae266a
|
||||
settings.dateDisplay.defaultDescription: 502ed7ff7b9c0fe5971e8cb0576e91f6
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
"date-fns": "^4.1.0",
|
||||
"dompurify": "3.4.2",
|
||||
"katex": "^0.16.28",
|
||||
"lucide-react": "^0.564.0",
|
||||
"mermaid": "^11.14.0",
|
||||
"posthog-js": "^1.363.5",
|
||||
"radix-ui": "^1.4.3",
|
||||
|
||||
12
pnpm-lock.yaml
generated
12
pnpm-lock.yaml
generated
@@ -146,9 +146,6 @@ importers:
|
||||
katex:
|
||||
specifier: ^0.16.28
|
||||
version: 0.16.28
|
||||
lucide-react:
|
||||
specifier: ^0.564.0
|
||||
version: 0.564.0(react@19.2.4)
|
||||
mermaid:
|
||||
specifier: ^11.14.0
|
||||
version: 11.14.0
|
||||
@@ -4561,11 +4558,6 @@ packages:
|
||||
lru-cache@5.1.1:
|
||||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||
|
||||
lucide-react@0.564.0:
|
||||
resolution: {integrity: sha512-JJ8GVTQqFwuliifD48U6+h7DXEHdkhJ/E87kksGByII3qHxtPciVb8T8woQONHBQgHVOl7rSMrrip3SeVNy7Fg==}
|
||||
peerDependencies:
|
||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||
|
||||
lz-string@1.5.0:
|
||||
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
|
||||
hasBin: true
|
||||
@@ -10519,10 +10511,6 @@ snapshots:
|
||||
dependencies:
|
||||
yallist: 3.1.1
|
||||
|
||||
lucide-react@0.564.0(react@19.2.4):
|
||||
dependencies:
|
||||
react: 19.2.4
|
||||
|
||||
lz-string@1.5.0: {}
|
||||
|
||||
magic-string@0.30.21:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { CalendarBlank as CalendarIcon, Check, X } from '@phosphor-icons/react'
|
||||
import { useState } from 'react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Calendar } from '@/components/ui/calendar'
|
||||
import { Input } from '@/components/ui/input'
|
||||
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
|
||||
import { CalendarIcon, Check, X } from 'lucide-react'
|
||||
import {
|
||||
type PropertyDisplayMode,
|
||||
formatDateValue,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ArrowUpRight, Bot, CheckCircle2, Cloud, HardDrive, Loader2, Terminal } from 'lucide-react'
|
||||
import { ArrowUpRight, CheckCircle as CheckCircle2, CircleNotch as Loader2, Cloud, HardDrive, Robot as Bot, Terminal } from '@phosphor-icons/react'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
getAiAgentDefinition,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ArrowUpRight, Bot, CheckCircle2, Loader2 } from 'lucide-react'
|
||||
import { ArrowUpRight, CheckCircle as CheckCircle2, CircleNotch as Loader2, Robot as Bot } from '@phosphor-icons/react'
|
||||
import type { ClaudeCodeStatus } from '../hooks/useClaudeCodeStatus'
|
||||
import { openExternalUrl } from '../utils/url'
|
||||
import { Button } from './ui/button'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { AlertTriangle } from 'lucide-react'
|
||||
import { Warning as AlertTriangle } from '@phosphor-icons/react'
|
||||
import { translate, type AppLocale } from '../lib/i18n'
|
||||
|
||||
interface ConflictNoteBannerProps {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Check, CircleNotch as Loader2, FileText, Warning as AlertTriangle } from '@phosphor-icons/react'
|
||||
import { useCallback, useEffect, useRef, useState, type KeyboardEvent } from 'react'
|
||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogDescription } from '@/components/ui/dialog'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { AlertTriangle, FileText, Check, Loader2 } from 'lucide-react'
|
||||
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'
|
||||
import type { ConflictFileState } from '../hooks/useConflictResolver'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CircleNotch as Loader2 } from '@phosphor-icons/react'
|
||||
import { memo } from 'react'
|
||||
import { Loader2 } from 'lucide-react'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
interface DeleteProgressNoticeProps {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { ArrowUpRight, Bug, Chats as MessagesSquare, Check, Copy, GitPullRequest, Lightbulb, Megaphone, Newspaper } from '@phosphor-icons/react'
|
||||
import { type ReactNode, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'
|
||||
import { Megaphone } from '@phosphor-icons/react'
|
||||
import { ArrowUpRight, Bug, Check, Copy, GitPullRequest, Lightbulb, MessagesSquare, Newspaper } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
Card,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { GitBranch } from '@phosphor-icons/react'
|
||||
import { useState } from 'react'
|
||||
import { GitBranch } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
Dialog,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Copy, ShieldCheck } from '@phosphor-icons/react'
|
||||
import { useEffect } from 'react'
|
||||
import { Copy, ShieldCheck } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
Dialog,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ArrowsOut as Maximize2 } from '@phosphor-icons/react'
|
||||
import { useEffect, useId, useMemo, useState } from 'react'
|
||||
import { Maximize2 } from 'lucide-react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
Dialog,
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
import { ArrowUpRight, X as XIcon } from '@phosphor-icons/react'
|
||||
import { useState, useCallback, useRef, type ReactNode } from 'react'
|
||||
import { createPortal } from 'react-dom'
|
||||
import { ArrowUpRight } from '@phosphor-icons/react'
|
||||
import type { FrontmatterValue } from './Inspector'
|
||||
import { EditableValue, TagPillList, UrlValue } from './EditableValue'
|
||||
import { isUrlValue } from '../utils/url'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Calendar } from '@/components/ui/calendar'
|
||||
import { Input } from '@/components/ui/input'
|
||||
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
|
||||
import { XIcon } from 'lucide-react'
|
||||
import { trackDatePropertyDirectEntrySaved } from '../lib/productAnalytics'
|
||||
import { translate, type AppLocale } from '../lib/i18n'
|
||||
import { isValidCssColor } from '../utils/colorUtils'
|
||||
import { isUrlValue } from '../utils/url'
|
||||
import {
|
||||
type PropertyDisplayMode,
|
||||
formatDateValue,
|
||||
@@ -20,6 +17,8 @@ import {
|
||||
DISPLAY_MODE_ICONS,
|
||||
} from '../utils/propertyTypes'
|
||||
import { StatusDropdown } from './StatusDropdown'
|
||||
import type { FrontmatterValue } from './Inspector'
|
||||
import { EditableValue, TagPillList, UrlValue } from './EditableValue'
|
||||
import { getStatusStyle } from '../utils/statusStyles'
|
||||
import { TagsDropdown } from './TagsDropdown'
|
||||
import { getTagStyle } from '../utils/tagStyles'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CaretDown as ChevronDown, CaretRight as ChevronRight, CaretUp as ChevronUp, X } from '@phosphor-icons/react'
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import { ChevronDown, ChevronRight, ChevronUp, X } from 'lucide-react'
|
||||
import { EditorView } from '@codemirror/view'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Input } from '@/components/ui/input'
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Bot, Folder, GitBranch, ListChecks, Palette, RefreshCw, ShieldCheck } from 'lucide-react'
|
||||
import { Article, ArrowsClockwise as RefreshCw, Cube, GitBranch, ListChecks, Palette, Robot as Bot, ShieldCheck, type IconProps } from '@phosphor-icons/react'
|
||||
import type { ComponentType } from 'react'
|
||||
import type { TranslationKey } from '../lib/i18n'
|
||||
import { Button } from './ui/button'
|
||||
import { SETTINGS_SECTION_IDS } from './settingsSectionIds'
|
||||
@@ -7,13 +8,19 @@ interface SettingsBodyNavProps {
|
||||
t: (key: TranslationKey) => string
|
||||
}
|
||||
|
||||
interface SettingsNavItem {
|
||||
id: string
|
||||
label: string
|
||||
Icon: ComponentType<IconProps>
|
||||
}
|
||||
|
||||
export function SettingsBodyNav({ t }: SettingsBodyNavProps) {
|
||||
const items = [
|
||||
const items: SettingsNavItem[] = [
|
||||
{ id: SETTINGS_SECTION_IDS.sync, label: t('settings.sync.title'), Icon: RefreshCw },
|
||||
{ id: SETTINGS_SECTION_IDS.workspaces, label: t('settings.workspaces.title'), Icon: Folder },
|
||||
{ id: SETTINGS_SECTION_IDS.workspaces, label: t('settings.workspaces.title'), Icon: Cube },
|
||||
{ id: SETTINGS_SECTION_IDS.autogit, label: t('settings.autogit.title'), Icon: GitBranch },
|
||||
{ id: SETTINGS_SECTION_IDS.appearance, label: t('settings.appearance.title'), Icon: Palette },
|
||||
{ id: SETTINGS_SECTION_IDS.content, label: t('settings.vaultContent.title'), Icon: Folder },
|
||||
{ id: SETTINGS_SECTION_IDS.content, label: t('settings.vaultContent.title'), Icon: Article },
|
||||
{ id: SETTINGS_SECTION_IDS.ai, label: t('settings.aiAgents.title'), Icon: Bot },
|
||||
{ id: SETTINGS_SECTION_IDS.workflow, label: t('settings.workflow.title'), Icon: ListChecks },
|
||||
{ id: SETTINGS_SECTION_IDS.privacy, label: t('settings.privacy.title'), Icon: ShieldCheck },
|
||||
@@ -31,7 +38,7 @@ export function SettingsBodyNav({ t }: SettingsBodyNavProps) {
|
||||
className="h-10 w-full justify-start gap-2.5 px-2.5 text-sm font-medium text-muted-foreground hover:text-foreground"
|
||||
onClick={() => document.getElementById(item.id)?.scrollIntoView({ block: 'start', behavior: 'smooth' })}
|
||||
>
|
||||
<item.Icon size={16} className="shrink-0" />
|
||||
<item.Icon size={16} weight="regular" className="shrink-0" />
|
||||
<span className="truncate">{item.label}</span>
|
||||
</Button>
|
||||
))}
|
||||
|
||||
@@ -35,13 +35,16 @@ export function SettingsSection({
|
||||
}
|
||||
|
||||
export function SectionHeading({
|
||||
icon,
|
||||
title,
|
||||
}: {
|
||||
icon?: ReactNode
|
||||
title: string
|
||||
description?: string
|
||||
}) {
|
||||
return (
|
||||
<div>
|
||||
<div className="flex items-center gap-2">
|
||||
{icon ? <span className="flex size-5 items-center justify-center text-muted-foreground">{icon}</span> : null}
|
||||
<div
|
||||
style={{
|
||||
fontSize: 14,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Copy, Cube, Monitor, Moon, Sun, X } from '@phosphor-icons/react'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
createMissingAiAgentsStatus,
|
||||
@@ -14,16 +15,14 @@ import {
|
||||
type AiModelProvider,
|
||||
} from '../lib/aiTargets'
|
||||
import {
|
||||
useState,
|
||||
useRef,
|
||||
useCallback,
|
||||
useEffect,
|
||||
useRef,
|
||||
useState,
|
||||
type KeyboardEvent as ReactKeyboardEvent,
|
||||
type MouseEvent as ReactMouseEvent,
|
||||
type ReactNode,
|
||||
} from 'react'
|
||||
import { Moon, Sun, X } from '@phosphor-icons/react'
|
||||
import { Copy, Monitor } from 'lucide-react'
|
||||
import type { Settings } from '../types'
|
||||
import {
|
||||
APP_LOCALES,
|
||||
@@ -638,7 +637,10 @@ function SettingsSyncAndAppearanceSections({
|
||||
/>
|
||||
</SettingsSection>
|
||||
<SettingsSection id={SETTINGS_SECTION_IDS.workspaces}>
|
||||
<SectionHeading title={t('settings.workspaces.title')} />
|
||||
<SectionHeading
|
||||
icon={<Cube size={16} aria-hidden="true" />}
|
||||
title={t('settings.workspaces.title')}
|
||||
/>
|
||||
<WorkspaceSettingsSection
|
||||
defaultWorkspacePath={defaultWorkspacePath}
|
||||
enabled={multiWorkspaceEnabled}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { Component, useEffect, useCallback, useMemo, useRef, useContext, useState, type ReactNode } from 'react'
|
||||
import { ArrowSquareOut as ExternalLink, Copy } from '@phosphor-icons/react'
|
||||
import { Component, useCallback, useContext, useEffect, useMemo, useRef, useState, type ReactNode } from 'react'
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { trackEvent } from '../lib/telemetry'
|
||||
import {
|
||||
useCreateBlockNote,
|
||||
SuggestionMenuController,
|
||||
BlockNoteViewRaw,
|
||||
ComponentsContext,
|
||||
DeleteLinkButton,
|
||||
@@ -11,14 +9,15 @@ import {
|
||||
LinkToolbar,
|
||||
LinkToolbarController,
|
||||
SideMenuController,
|
||||
SuggestionMenuController,
|
||||
useComponentsContext,
|
||||
useCreateBlockNote,
|
||||
useDictionary,
|
||||
type LinkToolbarProps,
|
||||
} from '@blocknote/react'
|
||||
import { components } from '@blocknote/mantine'
|
||||
import { MantineContext, MantineProvider } from '@mantine/core'
|
||||
import { Copy } from '@phosphor-icons/react'
|
||||
import { ExternalLink } from 'lucide-react'
|
||||
import { trackEvent } from '../lib/telemetry'
|
||||
import { useDocumentThemeMode } from '../hooks/useDocumentThemeMode'
|
||||
import { repairMalformedEditorBlocks } from '../hooks/editorBlockRepair'
|
||||
import { useEditorTheme } from '../hooks/useTheme'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { CSSProperties } from 'react'
|
||||
import { Download, ExternalLink, RefreshCw, X } from 'lucide-react'
|
||||
import { ArrowSquareOut as ExternalLink, ArrowsClockwise as RefreshCw, Download, X } from '@phosphor-icons/react'
|
||||
import type { UpdateStatus, UpdateActions } from '../hooks/useUpdater'
|
||||
import { restartApp } from '../hooks/useUpdater'
|
||||
import { Button } from './ui/button'
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Article } from '@phosphor-icons/react'
|
||||
import type { TranslationKey, TranslationValues } from '../lib/i18n'
|
||||
import type { NoteWidthMode } from '../types'
|
||||
import type { AllNotesFileVisibility } from '../utils/allNotesFileVisibility'
|
||||
@@ -76,6 +77,7 @@ export function VaultContentSettingsSection({
|
||||
return (
|
||||
<>
|
||||
<SectionHeading
|
||||
icon={<Article size={16} aria-hidden="true" />}
|
||||
title={t('settings.vaultContent.title')}
|
||||
/>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CircleNotch as Loader2, FolderOpen, Plus, Rocket, Warning as AlertTriangle } from '@phosphor-icons/react'
|
||||
import { useEffect, useMemo, useRef, useState } from 'react'
|
||||
import type { ReactNode } from 'react'
|
||||
import { FolderOpen, Plus, AlertTriangle, Loader2, Rocket } from 'lucide-react'
|
||||
import { OnboardingShell } from './OnboardingShell'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import tolariaIcon from '@/assets/tolaria-icon.svg'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { CaretUpDown, Check } from '@phosphor-icons/react'
|
||||
import { CaretUpDown, Check, Cube } from '@phosphor-icons/react'
|
||||
import { useEffect, useId, useMemo, useRef, useState, type KeyboardEvent, type PointerEvent } from 'react'
|
||||
import type { WorkspaceIdentity } from '../types'
|
||||
import { Button } from '@/components/ui/button'
|
||||
@@ -9,6 +9,7 @@ import { translate, type AppLocale } from '../lib/i18n'
|
||||
import { PROPERTY_CHIP_STYLE } from './propertyChipStyles'
|
||||
import {
|
||||
PROPERTY_PANEL_LABEL_CLASS_NAME,
|
||||
PROPERTY_PANEL_LABEL_ICON_SLOT_CLASS_NAME,
|
||||
PROPERTY_PANEL_ROW_STYLE,
|
||||
} from './propertyPanelLayout'
|
||||
|
||||
@@ -95,6 +96,12 @@ function reportWorkspaceChangeFailure(error: unknown) {
|
||||
function WorkspaceRowLabel({ locale }: { locale: AppLocale }) {
|
||||
return (
|
||||
<span className={PROPERTY_PANEL_LABEL_CLASS_NAME}>
|
||||
<span
|
||||
className={PROPERTY_PANEL_LABEL_ICON_SLOT_CLASS_NAME}
|
||||
data-testid="workspace-row-icon-slot"
|
||||
>
|
||||
<Cube size={14} className="shrink-0" data-testid="workspace-row-icon" />
|
||||
</span>
|
||||
<span className="min-w-0 truncate">{translate(locale, 'inspector.properties.workspace')}</span>
|
||||
</span>
|
||||
)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { Info } from '@phosphor-icons/react'
|
||||
import { Trash2 } from 'lucide-react'
|
||||
import { Info, Trash as Trash2 } from '@phosphor-icons/react'
|
||||
import { type KeyboardEvent, useState } from 'react'
|
||||
import { Button } from './ui/button'
|
||||
import { Input } from './ui/input'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { MagnifyingGlass, Plus, SidebarSimple } from '@phosphor-icons/react'
|
||||
import { Loader2 } from 'lucide-react'
|
||||
import { CircleNotch as Loader2, MagnifyingGlass, Plus, SidebarSimple } from '@phosphor-icons/react'
|
||||
import type { VaultEntry } from '../../types'
|
||||
import type { SortOption, SortDirection } from '../../utils/noteListHelpers'
|
||||
import { translate, type AppLocale } from '../../lib/i18n'
|
||||
|
||||
@@ -39,6 +39,32 @@ const entry: VaultEntry = {
|
||||
sidebarLabel: null,
|
||||
}
|
||||
|
||||
const personalWorkspace = {
|
||||
id: 'personal',
|
||||
label: 'Personal',
|
||||
alias: 'personal',
|
||||
path: '/personal',
|
||||
shortLabel: 'PE',
|
||||
color: 'green',
|
||||
icon: null,
|
||||
mounted: true,
|
||||
available: true,
|
||||
defaultForNewNotes: true,
|
||||
}
|
||||
|
||||
const teamWorkspace = {
|
||||
id: 'team',
|
||||
label: 'Team',
|
||||
alias: 'team',
|
||||
path: '/team',
|
||||
shortLabel: 'TE',
|
||||
color: 'purple',
|
||||
icon: null,
|
||||
mounted: true,
|
||||
available: true,
|
||||
defaultForNewNotes: false,
|
||||
}
|
||||
|
||||
function renderPropertiesPanel(props: ComponentProps<typeof DynamicPropertiesPanel>) {
|
||||
return render(
|
||||
<TooltipProvider>
|
||||
@@ -86,14 +112,17 @@ describe('property panel shared grid layout', () => {
|
||||
expect(row.style.gridColumn).toBe('1 / -1')
|
||||
})
|
||||
|
||||
it('uses the same fixed icon slot size for type, suggested, and add-property rows', () => {
|
||||
it('uses the same fixed icon slot size for metadata, suggested, and add-property rows', () => {
|
||||
renderPropertiesPanel({
|
||||
entry,
|
||||
entry: { ...entry, workspace: personalWorkspace },
|
||||
frontmatter: {},
|
||||
onAddProperty: vi.fn(),
|
||||
onUpdateProperty: vi.fn(),
|
||||
onChangeWorkspace: vi.fn(),
|
||||
workspaces: [personalWorkspace, teamWorkspace],
|
||||
})
|
||||
|
||||
expect(screen.getByTestId('workspace-row-icon-slot')).toHaveClass('size-5')
|
||||
expect(screen.getByTestId('type-row-icon-slot')).toHaveClass('size-5')
|
||||
screen.getAllByTestId('suggested-property-icon-slot').forEach((slot) => {
|
||||
expect(slot).toHaveClass('size-5')
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { MouseEvent, ReactNode } from 'react'
|
||||
import { Folder, Funnel, Plus } from '@phosphor-icons/react'
|
||||
import { SlidersHorizontal } from 'lucide-react'
|
||||
import { Folder, Funnel, Plus, SlidersHorizontal } from '@phosphor-icons/react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { translate, type AppLocale } from '../../lib/i18n'
|
||||
import { SidebarGroupHeader } from './SidebarGroupHeader'
|
||||
|
||||
@@ -11,9 +11,8 @@ import {
|
||||
SortableContext, useSortable, verticalListSortingStrategy,
|
||||
} from '@dnd-kit/sortable'
|
||||
import { CSS } from '@dnd-kit/utilities'
|
||||
import { SlidersHorizontal } from 'lucide-react'
|
||||
import {
|
||||
ArrowLeft, ArrowRight, Palette, PencilSimple, Plus, SidebarSimple, Trash,
|
||||
ArrowLeft, ArrowRight, Palette, PencilSimple, Plus, SidebarSimple, SlidersHorizontal, Trash,
|
||||
} from '@phosphor-icons/react'
|
||||
import { APP_COMMAND_IDS, getAppCommandShortcutDisplay } from '../../hooks/appCommandCatalog'
|
||||
import { Button } from '@/components/ui/button'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { AlertTriangle, ChevronsUpDown } from 'lucide-react'
|
||||
import { Sparkle } from '@phosphor-icons/react'
|
||||
import { CaretUpDown as ChevronsUpDown, Sparkle, Warning as AlertTriangle } from '@phosphor-icons/react'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import {
|
||||
AI_AGENT_DEFINITIONS,
|
||||
@@ -327,7 +326,7 @@ export function AiAgentsBadge({
|
||||
data-testid="status-ai-agents"
|
||||
>
|
||||
<span style={{ ...ICON_STYLE, color: showWarning ? 'var(--accent-orange)' : 'var(--muted-foreground)' }}>
|
||||
<Sparkle size={13} weight="fill" />
|
||||
<Sparkle size={13} weight="regular" />
|
||||
{!compact && (selectedTarget.kind === 'api_model' ? selectedTarget.shortLabel : triggerLabel(defaultAgent))}
|
||||
<TriggerStateIcon showWarning={showWarning} showSwitcherCue={showSwitcherCue} />
|
||||
</span>
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
import { ArrowDown, ArrowsClockwise as RefreshCw, CircleNotch as Loader2, Cpu, GitBranch, GitCommit as GitCommitHorizontal, GitDiff, Pulse, Terminal, Warning as AlertTriangle } from '@phosphor-icons/react'
|
||||
import { useRef, useState, type CSSProperties, type KeyboardEvent as ReactKeyboardEvent, type ReactNode } from 'react'
|
||||
import {
|
||||
AlertTriangle,
|
||||
ArrowDown,
|
||||
Cpu,
|
||||
GitBranch,
|
||||
GitCommitHorizontal,
|
||||
Loader2,
|
||||
RefreshCw,
|
||||
Terminal,
|
||||
} from 'lucide-react'
|
||||
import { GitDiff, Pulse } from '@phosphor-icons/react'
|
||||
import { ActionTooltip, type ActionTooltipCopy } from '@/components/ui/action-tooltip'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { BookOpen, Moon, Package, Settings, Sun } from 'lucide-react'
|
||||
import { Megaphone } from '@phosphor-icons/react'
|
||||
import { BookOpen, GearSix as Settings, Megaphone, Moon, Package, Sun, type IconProps } from '@phosphor-icons/react'
|
||||
import type { ComponentType, MouseEventHandler } from 'react'
|
||||
import type { AiAgentId, AiAgentsStatus } from '../../lib/aiAgents'
|
||||
import type { AiModelProvider } from '../../lib/aiTargets'
|
||||
@@ -132,7 +131,7 @@ function BuildNumberButton({
|
||||
data-testid="status-build-number"
|
||||
>
|
||||
<span style={ICON_STYLE}>
|
||||
<Package size={13} />
|
||||
<Package size={13} weight="regular" />
|
||||
{compact ? null : buildNumber ?? translate(locale, 'status.build.unknown')}
|
||||
</span>
|
||||
</Button>
|
||||
@@ -301,7 +300,7 @@ function StatusBarPrimaryBadges({
|
||||
|
||||
type StatusLinkButtonProps = {
|
||||
compact: boolean
|
||||
icon: ComponentType<{ size?: number }>
|
||||
icon: ComponentType<IconProps>
|
||||
labelKey: TranslationKey
|
||||
locale: AppLocale
|
||||
onClick: MouseEventHandler<HTMLButtonElement>
|
||||
@@ -333,7 +332,7 @@ function StatusLinkButton({
|
||||
aria-label={translate(locale, tooltipKey)}
|
||||
data-testid={testId}
|
||||
>
|
||||
<Icon size={14} />
|
||||
<Icon size={14} weight="regular" />
|
||||
{compact ? null : translate(locale, labelKey)}
|
||||
</Button>
|
||||
</ActionTooltip>
|
||||
@@ -584,7 +583,7 @@ export function StatusBarSecondarySection({
|
||||
aria-label={themeTooltip.label}
|
||||
data-testid="status-theme-mode"
|
||||
>
|
||||
<ThemeIcon size={14} />
|
||||
<ThemeIcon size={14} weight="regular" />
|
||||
</Button>
|
||||
</ActionTooltip>
|
||||
<ActionTooltip copy={{ label: translate(locale, 'status.settings.open'), ...SETTINGS_SHORTCUT }} side="top" align="end">
|
||||
@@ -597,7 +596,7 @@ export function StatusBarSecondarySection({
|
||||
aria-label={translate(locale, 'status.settings.open')}
|
||||
data-testid="status-settings"
|
||||
>
|
||||
<Settings size={14} />
|
||||
<Settings size={14} weight="regular" />
|
||||
</Button>
|
||||
</ActionTooltip>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Check, Cube, FolderOpen, GitBranch, Plus, Rocket, Warning as AlertTriangle, X } from '@phosphor-icons/react'
|
||||
import { useMemo, useRef, useState } from 'react'
|
||||
import type { ReactNode } from 'react'
|
||||
import { AlertTriangle, Check, FolderOpen, GitBranch, Plus, Rocket, X } from 'lucide-react'
|
||||
import { ActionTooltip } from '@/components/ui/action-tooltip'
|
||||
import { Button } from '@/components/ui/button'
|
||||
import { Checkbox } from '@/components/ui/checkbox'
|
||||
@@ -416,7 +416,7 @@ export function VaultMenu(props: VaultMenuProps) {
|
||||
aria-label={translate(locale, 'status.vault.switch')}
|
||||
data-testid="status-vault-trigger"
|
||||
>
|
||||
<FolderOpen size={13} />
|
||||
<Cube size={13} weight="regular" />
|
||||
{compact ? null : <span className="max-w-32 truncate">{activeVaultLabel}</span>}
|
||||
</Button>
|
||||
</ActionTooltip>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { DotsSixVertical as GripVertical, Plus } from '@phosphor-icons/react'
|
||||
import { SideMenuExtension, SuggestionMenu } from '@blocknote/core/extensions'
|
||||
import type {
|
||||
BlockNoteEditor,
|
||||
@@ -15,7 +16,6 @@ import {
|
||||
useExtensionState,
|
||||
type SideMenuProps,
|
||||
} from '@blocknote/react'
|
||||
import { GripVertical, Plus } from 'lucide-react'
|
||||
import {
|
||||
useCallback,
|
||||
useLayoutEffect,
|
||||
|
||||
@@ -100,13 +100,13 @@ vi.mock('@mantine/core', () => ({
|
||||
),
|
||||
}))
|
||||
|
||||
vi.mock('lucide-react', () => ({
|
||||
Bold: MockIcon,
|
||||
ChevronDown: MockIcon,
|
||||
Code2: MockIcon,
|
||||
ExternalLink: MockIcon,
|
||||
Italic: MockIcon,
|
||||
Strikethrough: MockIcon,
|
||||
vi.mock('@phosphor-icons/react', () => ({
|
||||
ArrowSquareOut: MockIcon,
|
||||
CaretDown: MockIcon,
|
||||
Code: MockIcon,
|
||||
TextB: MockIcon,
|
||||
TextItalic: MockIcon,
|
||||
TextStrikethrough: MockIcon,
|
||||
}))
|
||||
|
||||
vi.mock('./tolariaEditorFormattingConfig', () => ({
|
||||
|
||||
@@ -45,14 +45,14 @@ import {
|
||||
Menu as MantineMenu,
|
||||
} from '@mantine/core'
|
||||
import {
|
||||
Bold,
|
||||
ChevronDown,
|
||||
Code2,
|
||||
ExternalLink,
|
||||
Italic,
|
||||
Strikethrough,
|
||||
type LucideIcon,
|
||||
} from 'lucide-react'
|
||||
ArrowSquareOut as ExternalLink,
|
||||
CaretDown as ChevronDown,
|
||||
Code as Code2,
|
||||
TextB as Bold,
|
||||
TextItalic as Italic,
|
||||
TextStrikethrough as Strikethrough,
|
||||
type Icon as PhosphorIcon,
|
||||
} from '@phosphor-icons/react'
|
||||
import {
|
||||
filterTolariaFormattingToolbarItems,
|
||||
getTolariaBlockTypeSelectItems,
|
||||
@@ -186,7 +186,7 @@ const TOLARIA_BASIC_TEXT_STYLE_ICONS = {
|
||||
italic: Italic,
|
||||
strike: Strikethrough,
|
||||
code: Code2,
|
||||
} satisfies Record<TolariaBasicTextStyle, LucideIcon>
|
||||
} satisfies Record<TolariaBasicTextStyle, PhosphorIcon>
|
||||
|
||||
type TolariaSelectedBlock = ReturnType<
|
||||
BlockNoteEditor<BlockSchema, InlineContentSchema, StyleSchema>['getTextCursorPosition']
|
||||
@@ -417,7 +417,7 @@ function TolariaBasicTextStyleButton({
|
||||
|
||||
if (buttonState === undefined) return null
|
||||
|
||||
const Icon = Reflect.get(TOLARIA_BASIC_TEXT_STYLE_ICONS, basicTextStyle) as LucideIcon
|
||||
const Icon = Reflect.get(TOLARIA_BASIC_TEXT_STYLE_ICONS, basicTextStyle) as PhosphorIcon
|
||||
const copy = Reflect.get(TOLARIA_BASIC_TEXT_STYLE_TOOLTIPS, basicTextStyle) as {
|
||||
label: string
|
||||
mainTooltip: string
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
import * as React from "react"
|
||||
import {
|
||||
ChevronDownIcon,
|
||||
ChevronLeftIcon,
|
||||
ChevronRightIcon,
|
||||
} from "lucide-react"
|
||||
CaretDown as ChevronDownIcon,
|
||||
CaretLeft as ChevronLeftIcon,
|
||||
CaretRight as ChevronRightIcon,
|
||||
} from '@phosphor-icons/react'
|
||||
import {
|
||||
DayPicker,
|
||||
getDefaultClassNames,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as React from 'react'
|
||||
import { Check } from 'lucide-react'
|
||||
import { Check } from '@phosphor-icons/react'
|
||||
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as React from "react"
|
||||
import { XIcon } from "lucide-react"
|
||||
import { X as XIcon } from '@phosphor-icons/react'
|
||||
import { Dialog as DialogPrimitive } from "radix-ui"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
|
||||
import { CaretRight as ChevronRightIcon, Check as CheckIcon, Circle as CircleIcon } from '@phosphor-icons/react'
|
||||
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as React from "react"
|
||||
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
|
||||
import { CaretDown as ChevronDownIcon, CaretUp as ChevronUpIcon, Check as CheckIcon } from '@phosphor-icons/react'
|
||||
import { Select as SelectPrimitive } from "radix-ui"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Legen Sie fest, ob Tolaria Dateinamen von unbenannten Notizen automatisch anhand der ersten H1-Überschrift synchronisiert.",
|
||||
"settings.titles.autoRename": "Unbenannte Notizen automatisch anhand der ersten H1-Uberschrift umbenennen",
|
||||
"settings.titles.autoRenameDescription": "Wenn diese Option aktiviert ist, benennt Tolaria Dateien mit unbenannten Notizen um, sobald die erste H1-Überschrift zu einem echten Titel wird. Deaktivieren Sie diese Option, um den Dateinamen unverändert zu lassen, bis Sie ihn manuell über die Breadcrumb-Leiste umbenennen.",
|
||||
"settings.vaultContent.title": "Vault-Inhalt",
|
||||
"settings.vaultContent.title": "Inhalt",
|
||||
"settings.vaultContent.description": "Legen Sie fest, ob Dateien, die der .gitignore-Datei des Vaults entsprechen, in Tolaria angezeigt werden.",
|
||||
"settings.dateDisplay.default": "Datumsanzeige",
|
||||
"settings.dateDisplay.defaultDescription": "Wählen Sie aus, wie Tolaria Datumsangaben außerhalb von editierbaren Datumsfeldern anzeigt.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Choose whether Tolaria automatically syncs untitled note filenames from the first H1 title.",
|
||||
"settings.titles.autoRename": "Auto-rename untitled notes from first H1",
|
||||
"settings.titles.autoRenameDescription": "When enabled, Tolaria renames untitled-note files as soon as the first H1 becomes a real title. Turn this off to keep the filename unchanged until you rename it manually from the breadcrumb bar.",
|
||||
"settings.vaultContent.title": "Vault Content",
|
||||
"settings.vaultContent.title": "Content",
|
||||
"settings.vaultContent.description": "Control whether files matched by the vault .gitignore appear in Tolaria.",
|
||||
"settings.dateDisplay.default": "Date display",
|
||||
"settings.dateDisplay.defaultDescription": "Choose how Tolaria displays dates outside editable date fields.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Elija si desea que Tolaria sincronice automáticamente los nombres de los archivos de notas sin título a partir del primer título H1.",
|
||||
"settings.titles.autoRename": "Cambiar automáticamente el nombre de las notas sin título a partir del primer H1",
|
||||
"settings.titles.autoRenameDescription": "Cuando esta opción está activada, Tolaria cambia el nombre de los archivos de notas sin título tan pronto como el primer H1 se convierte en un título real. Desactive esta opción para que el nombre del archivo no se modifique hasta que lo cambie manualmente desde la barra de navegación.",
|
||||
"settings.vaultContent.title": "Contenido del repositorio",
|
||||
"settings.vaultContent.title": "Contenido",
|
||||
"settings.vaultContent.description": "Controle si los archivos que coinciden con el archivo .gitignore del repositorio aparecen en Tolaria.",
|
||||
"settings.dateDisplay.default": "Formato de fecha",
|
||||
"settings.dateDisplay.defaultDescription": "Elija cómo Tolaria muestra las fechas fuera de los campos de fecha editables.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Decida si Tolaria sincroniza automáticamente los nombres de los archivos de las notas sin título a partir del primer título H1.",
|
||||
"settings.titles.autoRename": "Cambiar automático del nombre de las notas sin título a partir del primer H1",
|
||||
"settings.titles.autoRenameDescription": "Cuando esta opción está activada, Tolaria cambia el nombre de los archivos de notas sin título en cuanto el primer H1 se convierte en un título real. Desactive esta opción para que el nombre del archivo no cambie hasta que lo renombre manualmente desde la barra de navegación.",
|
||||
"settings.vaultContent.title": "Contenido del repositorio",
|
||||
"settings.vaultContent.title": "Contenido",
|
||||
"settings.vaultContent.description": "Controla si los archivos que coinciden con el .gitignore del repositorio aparecen en Tolaria.",
|
||||
"settings.dateDisplay.default": "Formato de fecha",
|
||||
"settings.dateDisplay.defaultDescription": "Elija cómo muestra Tolaria las fechas fuera de los campos de fecha editables.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Indiquez si Tolaria doit synchroniser automatiquement les noms de fichier des notes sans titre à partir du premier titre H1.",
|
||||
"settings.titles.autoRename": "Renommer automatiquement les notes sans titre à partir du premier H1",
|
||||
"settings.titles.autoRenameDescription": "Lorsque cette option est activée, Tolaria renomme les fichiers de notes sans titre dès que le premier H1 devient un véritable titre. Désactivez cette option pour que le nom de fichier reste inchangé jusqu'à ce que vous le renommiez manuellement depuis la barre de navigation.",
|
||||
"settings.vaultContent.title": "Contenu du coffre-fort",
|
||||
"settings.vaultContent.title": "Contenu",
|
||||
"settings.vaultContent.description": "Contrôler si les fichiers correspondants au fichier .gitignore du coffre-fort apparaissent dans Tolaria.",
|
||||
"settings.dateDisplay.default": "Affichage de la date",
|
||||
"settings.dateDisplay.defaultDescription": "Choisissez la manière dont Tolaria affiche les dates en dehors des champs de date modifiables.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Scegli se desideri che Tolaria sincronizzi automaticamente i nomi dei file delle note senza titolo in base al primo titolo H1.",
|
||||
"settings.titles.autoRename": "Rinomina automaticamente le note senza titolo in base al primo titolo H1",
|
||||
"settings.titles.autoRenameDescription": "Se questa opzione è abilitata, Tolaria rinomina i file delle note senza titolo non appena il primo H1 diventa un titolo effettivo. Disattiva questa opzione per mantenere invariato il nome del file finché non lo rinomini manualmente dalla barra di navigazione.",
|
||||
"settings.vaultContent.title": "Contenuto del vault",
|
||||
"settings.vaultContent.title": "Contenuto",
|
||||
"settings.vaultContent.description": "Controlla se i file corrispondenti al file .gitignore del vault vengono visualizzati in Tolaria.",
|
||||
"settings.dateDisplay.default": "Visualizzazione della data",
|
||||
"settings.dateDisplay.defaultDescription": "Scegli come Tolaria visualizza le date al di fuori dei campi data modificabili.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Tolaria が、タイトルのないノートのファイル名を最初の H1 タイトルに基づいて自動的に同期するかどうかを選択します。",
|
||||
"settings.titles.autoRename": "タイトルのないノートのファイル名を最初のH1から自動的に変更する",
|
||||
"settings.titles.autoRenameDescription": "この設定を有効にすると、Tolariaは最初のH1が実際のタイトルになった時点で、タイトルのないノートファイルの名前を変更します。この設定をオフにすると、ブレッドクラムバーから手動で名前を変更するまで、ファイル名は変更されません。",
|
||||
"settings.vaultContent.title": "Vaultのコンテンツ",
|
||||
"settings.vaultContent.title": "コンテンツ",
|
||||
"settings.vaultContent.description": "Vaultの.gitignoreで一致したファイルをTolariaに表示するかどうかを制御します。",
|
||||
"settings.dateDisplay.default": "日付の表示",
|
||||
"settings.dateDisplay.defaultDescription": "編集可能な日付フィールド以外の場所で、Tolariaが日付を表示する方法を選択します。",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Tolaria가 제목 없는 노트의 파일 이름을 첫 번째 H1 제목에서 자동으로 동기화할지 여부를 선택하세요.",
|
||||
"settings.titles.autoRename": "첫 번째 H1 제목으로 제목 없는 노트 파일 이름 자동 변경",
|
||||
"settings.titles.autoRenameDescription": "이 옵션을 활성화하면 Tolaria는 첫 번째 H1이 실제 제목이 되는 즉시 제목 없는 노트 파일의 이름을 변경합니다. 이 옵션을 끄면 브레드크럼 바에서 수동으로 파일 이름을 변경할 때까지 파일 이름이 변경되지 않습니다.",
|
||||
"settings.vaultContent.title": "Vault 콘텐츠",
|
||||
"settings.vaultContent.title": "콘텐츠",
|
||||
"settings.vaultContent.description": "Vault .gitignore와 일치하는 파일이 Tolaria에 표시되는지 여부를 제어합니다.",
|
||||
"settings.dateDisplay.default": "날짜 표시",
|
||||
"settings.dateDisplay.defaultDescription": "편집 가능한 날짜 입력란 외부의 날짜를 Tolaria에서 표시하는 방식을 선택하세요.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Wybierz, czy Tolaria automatycznie synchronizuje nazwy plików notatek bez tytułu z pierwszego nagłówka H1.",
|
||||
"settings.titles.autoRename": "Automatycznie zmieniaj nazwy notatek bez tytułu z pierwszego H1",
|
||||
"settings.titles.autoRenameDescription": "Po włączeniu Tolaria zmienia nazwy plików notatek bez tytułu, gdy tylko pierwszy H1 stanie się prawdziwym tytułem. Wyłącz, aby zachować nazwę pliku bez zmian do ręcznej zmiany z paska ścieżki.",
|
||||
"settings.vaultContent.title": "Zawartość sejfu",
|
||||
"settings.vaultContent.title": "Treść",
|
||||
"settings.vaultContent.description": "Kontroluj, czy pliki pasujące do .gitignore sejfu pojawiają się w Tolaria.",
|
||||
"settings.dateDisplay.default": "Wyświetlanie daty",
|
||||
"settings.dateDisplay.defaultDescription": "Wybierz, w jaki sposób Tolaria ma wyświetlać daty poza edytowalnymi polami daty.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Escolha se o Tolaria deve sincronizar automaticamente os nomes de arquivo das notas sem título com base no primeiro título H1.",
|
||||
"settings.titles.autoRename": "Renomear automaticamente notas sem título com base no primeiro H1",
|
||||
"settings.titles.autoRenameDescription": "Quando ativada, a Tolaria renomeia os arquivos de anotações sem título assim que o primeiro H1 se torna um título de fato. Desative esta opção para manter o nome do arquivo inalterado até que você o renomeie manualmente na barra de navegação.",
|
||||
"settings.vaultContent.title": "Conteúdo do cofre",
|
||||
"settings.vaultContent.title": "Conteúdo",
|
||||
"settings.vaultContent.description": "Controle se os arquivos correspondentes ao .gitignore do cofre aparecem no Tolaria.",
|
||||
"settings.dateDisplay.default": "Exibição de data",
|
||||
"settings.dateDisplay.defaultDescription": "Escolha como o Tolaria exibe datas fora dos campos de data editáveis.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Escolha se a Tolaria deve sincronizar automaticamente os nomes de ficheiro das notas sem título com base no primeiro título H1.",
|
||||
"settings.titles.autoRename": "Renomear automaticamente notas sem título com base no primeiro H1",
|
||||
"settings.titles.autoRenameDescription": "Quando esta opção está ativada, a Tolaria muda o nome dos ficheiros de notas sem título assim que o primeiro H1 se torna um título verdadeiro. Desative esta opção para manter o nome do ficheiro inalterado até o renomear manualmente na barra de navegação.",
|
||||
"settings.vaultContent.title": "Conteúdo do cofre",
|
||||
"settings.vaultContent.title": "Conteúdo",
|
||||
"settings.vaultContent.description": "Controlar se os ficheiros correspondentes ao .gitignore do cofre aparecem na Tolaria.",
|
||||
"settings.dateDisplay.default": "Apresentação da data",
|
||||
"settings.dateDisplay.defaultDescription": "Escolha como a Tolaria apresenta as datas fora dos campos de data editáveis.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Выберите, должна ли Tolaria автоматически синхронизировать имена файлов заметок без названия на основе первого заголовка H1.",
|
||||
"settings.titles.autoRename": "Автоматически переименовывать заметки без названия по первому заголовку H1",
|
||||
"settings.titles.autoRenameDescription": "Если эта функция включена, Tolaria переименовывает файлы заметок без названия, как только первый заголовок H1 становится настоящим заголовком. Отключите эту опцию, чтобы имя файла оставалось неизменным, пока вы не переименуете его вручную в строке навигации.",
|
||||
"settings.vaultContent.title": "Содержимое хранилища",
|
||||
"settings.vaultContent.title": "Содержание",
|
||||
"settings.vaultContent.description": "Управляйте тем, будут ли отображаться в Tolaria файлы, соответствующие списку .gitignore хранилища.",
|
||||
"settings.dateDisplay.default": "Отображение даты",
|
||||
"settings.dateDisplay.defaultDescription": "Выберите, как Tolaria будет отображать даты за пределами редактируемых полей даты.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "Chọn xem Tolaria có tự động đồng bộ tên tệp của ghi chú chưa đặt tên từ tiêu đề H1 đầu tiên hay không.",
|
||||
"settings.titles.autoRename": "Tự đổi tên ghi chú chưa đặt tên từ H1 đầu tiên",
|
||||
"settings.titles.autoRenameDescription": "Khi bật, Tolaria sẽ đổi tên tệp ghi chú chưa đặt tên ngay khi H1 đầu tiên trở thành tiêu đề thật. Tắt tùy chọn này nếu bạn muốn giữ nguyên tên tệp cho đến khi tự đổi thủ công từ thanh breadcrumb.",
|
||||
"settings.vaultContent.title": "Nội dung kho",
|
||||
"settings.vaultContent.title": "Nội dung",
|
||||
"settings.vaultContent.description": "Kiểm soát việc các tệp khớp với .gitignore của kho có xuất hiện trong Tolaria hay không.",
|
||||
"settings.dateDisplay.default": "Hiển thị ngày",
|
||||
"settings.dateDisplay.defaultDescription": "Chọn cách Tolaria hiển thị ngày tháng bên ngoài các trường ngày tháng có thể chỉnh sửa.",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "选择 Tolaria 是否根据第一个 H1 标题自动同步未命名笔记的文件名。",
|
||||
"settings.titles.autoRename": "根据第一个 H1 自动重命名未命名笔记",
|
||||
"settings.titles.autoRenameDescription": "启用后,只要第一个 H1 成为真实标题,Tolaria 就会重命名 untitled-note 文件。关闭后,文件名会保持不变,直到你从面包屑栏手动重命名。",
|
||||
"settings.vaultContent.title": "保管库内容",
|
||||
"settings.vaultContent.title": "内容",
|
||||
"settings.vaultContent.description": "控制与 Vault .gitignore 文件匹配的文件是否显示在 Tolaria 中。",
|
||||
"settings.dateDisplay.default": "日期显示方式",
|
||||
"settings.dateDisplay.defaultDescription": "选择 Tolaria 在可编辑日期字段之外显示日期的方式。",
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
"settings.titles.description": "選擇 Tolaria 是否根據第一個 H1 標題自動同步未命名筆記的檔名。",
|
||||
"settings.titles.autoRename": "根據第一個 H1 自動重新命名未命名筆記",
|
||||
"settings.titles.autoRenameDescription": "啟用後,只要第一個 H1 成為真實標題,Tolaria 就會重新命名 untitled-note 檔案。關閉後,檔名會保持不變,直到你從麵包屑欄手動重新命名。",
|
||||
"settings.vaultContent.title": "保管庫內容",
|
||||
"settings.vaultContent.title": "內容",
|
||||
"settings.vaultContent.description": "控制與 Vault .gitignore 相符的檔案是否顯示在 Tolaria 中。",
|
||||
"settings.dateDisplay.default": "日期顯示方式",
|
||||
"settings.dateDisplay.defaultDescription": "選擇 Tolaria 在可編輯日期欄位外顯示日期的方式。",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import type { FrontmatterValue } from '../components/Inspector'
|
||||
import { CalendarBlank as CalendarIcon, Circle, Hash, Link, Palette, Tag, TextT as Type, ToggleLeft } from '@phosphor-icons/react'
|
||||
import { getAppStorageItem } from '../constants/appStorage'
|
||||
import { isValidCssColor, isColorKeyName } from './colorUtils'
|
||||
import { dateFromParts, parseDashDateParts, parseSlashDateParts, type DateParts } from './dateStringParts'
|
||||
import { DEFAULT_DATE_DISPLAY_FORMAT, formatDateValueForDisplay, type DateDisplayFormat } from './dateDisplay'
|
||||
import { updateVaultConfigField } from './vaultConfigStore'
|
||||
import { CalendarIcon, Type, ToggleLeft, Circle, Link, Tag, Palette, Hash } from 'lucide-react'
|
||||
import { canonicalSystemMetadataKey } from './systemMetadata'
|
||||
|
||||
export type PropertyDisplayMode = 'text' | 'number' | 'date' | 'boolean' | 'status' | 'url' | 'tags' | 'color'
|
||||
|
||||
Reference in New Issue
Block a user