M: Minor UI fixes
Some checks failed
Frontend CI / build (22.x) (push) Has been cancelled
Frontend CI / notify-failure (push) Has been cancelled

This commit is contained in:
Ivan 2025-08-08 13:08:35 +03:00
parent 7ec53509b1
commit b20787a741
13 changed files with 50 additions and 24 deletions

View File

@ -12,8 +12,8 @@ export { BiX as IconRemove } from 'react-icons/bi';
export { BiTrash as IconDestroy } from 'react-icons/bi'; export { BiTrash as IconDestroy } from 'react-icons/bi';
export { BiReset as IconReset } from 'react-icons/bi'; export { BiReset as IconReset } from 'react-icons/bi';
export { TbArrowsDiagonal2 as IconResize } from 'react-icons/tb'; export { TbArrowsDiagonal2 as IconResize } from 'react-icons/tb';
export { LiaEdit as IconEdit } from 'react-icons/lia'; export { FiEdit as IconEdit } from 'react-icons/fi';
export { FiEdit as IconEdit2 } from 'react-icons/fi'; export { AiOutlineEdit as IconEdit2 } from 'react-icons/ai';
export { BiSearchAlt2 as IconSearch } from 'react-icons/bi'; export { BiSearchAlt2 as IconSearch } from 'react-icons/bi';
export { BiDownload as IconDownload } from 'react-icons/bi'; export { BiDownload as IconDownload } from 'react-icons/bi';
export { BiUpload as IconUpload } from 'react-icons/bi'; export { BiUpload as IconUpload } from 'react-icons/bi';

View File

@ -5,7 +5,7 @@ import { toast } from 'react-toastify';
import { urls, useConceptNavigation } from '@/app'; import { urls, useConceptNavigation } from '@/app';
import { MiniButton } from '@/components/control'; import { MiniButton } from '@/components/control';
import { IconClone, IconEdit2 } from '@/components/icons'; import { IconClone, IconEdit } from '@/components/icons';
import { useDialogsStore } from '@/stores/dialogs'; import { useDialogsStore } from '@/stores/dialogs';
import { infoMsg } from '@/utils/labels'; import { infoMsg } from '@/utils/labels';
@ -36,7 +36,7 @@ export function MenuAIPrompt({ promptID, generatedPrompt }: MenuAIPromptProps) {
title='Редактировать шаблон' title='Редактировать шаблон'
noHover noHover
noPadding noPadding
icon={<IconEdit2 size='1.25rem' />} icon={<IconEdit size='1.25rem' />}
className='h-full pl-2 text-muted-foreground hover:text-primary cc-animate-color bg-transparent' className='h-full pl-2 text-muted-foreground hover:text-primary cc-animate-color bg-transparent'
onClick={navigatePrompt} onClick={navigatePrompt}
/> />

View File

@ -63,11 +63,19 @@ export function BadgeHelp({
className={cn('max-w-120', contentClass)} className={cn('max-w-120', contentClass)}
{...restProps} {...restProps}
> >
<Suspense fallback={<Loader />}> <Suspense
<div className='absolute right-1 text-sm top-2 bg-' onClick={event => event.stopPropagation()}> fallback={
<TextURL text='Справка...' href={`/manuals?topic=${topic}`} /> <div className={cn('w-full min-w-80', contentClass)}>
<Loader />
</div>
}
>
<div className='cc-fade-in'>
<div className='absolute right-2 text-sm top-1' onClick={event => event.stopPropagation()}>
<TextURL text='Справка' href={`/manuals?topic=${topic}`} />
</div>
<TopicPage topic={topic} />
</div> </div>
<TopicPage topic={topic} />
</Suspense> </Suspense>
</Tooltip> </Tooltip>
</div> </div>

View File

@ -8,7 +8,7 @@ import {
IconConsolidation, IconConsolidation,
IconCoordinates, IconCoordinates,
IconDestroy, IconDestroy,
IconEdit2, IconEdit,
IconExecute, IconExecute,
IconFitImage, IconFitImage,
IconGrid, IconGrid,
@ -83,7 +83,7 @@ export function HelpOssGraph() {
<IconNewItem className='inline-icon icon-green' /> Новый узел <IconNewItem className='inline-icon icon-green' /> Новый узел
</li> </li>
<li> <li>
<IconEdit2 className='inline-icon' /> Редактирование узла <IconEdit className='inline-icon' /> Редактирование узла
</li> </li>
<li> <li>
<IconDestroy className='inline-icon icon-red' /> <kbd>Delete</kbd> удалить выбранный <IconDestroy className='inline-icon icon-red' /> <kbd>Delete</kbd> удалить выбранный

View File

@ -1,7 +1,7 @@
import { import {
IconClone, IconClone,
IconDestroy, IconDestroy,
IconEdit2, IconEdit,
IconGenerateNames, IconGenerateNames,
IconLeftOpen, IconLeftOpen,
IconMoveDown, IconMoveDown,
@ -40,7 +40,7 @@ export function HelpOssSidebar() {
<IconGenerateNames className='inline-icon' /> перенумеровать <IconGenerateNames className='inline-icon' /> перенумеровать
</li> </li>
<li> <li>
<IconEdit2 className='inline-icon' /> редактировать конституенты <IconEdit className='inline-icon' /> редактировать конституенты
</li> </li>
<li> <li>
<IconNewItem className='inline-icon icon-green' /> новая конституента <IconNewItem className='inline-icon icon-green' /> новая конституента

View File

@ -86,6 +86,7 @@ export function ViewSideLocation({ isVisible, onRenameLocation }: ViewSideLocati
</div> </div>
</div> </div>
<SelectLocation <SelectLocation
className='cc-scroll-left cc-scroll-stable'
value={location} value={location}
prefix={prefixes.folders_list} prefix={prefixes.folders_list}
onClick={handleClickFolder} onClick={handleClickFolder}

View File

@ -20,11 +20,16 @@ interface OssStatsProps {
export function OssStats({ className, stats }: OssStatsProps) { export function OssStats({ className, stats }: OssStatsProps) {
return ( return (
<aside className={cn('grid grid-cols-3 gap-1 justify-items-end h-min select-none', className)}> <aside className={cn('grid grid-cols-3 gap-1 justify-items-end h-min select-none', className)}>
<div id='count_operations' className='w-fit flex gap-3 hover:cursor-default '> <div id='count_operations' className='w-fit flex gap-3 hover:cursor-default col-span-2'>
<span>Всего</span> <span>Всего</span>
<span>{stats.count_all}</span> <span>{stats.count_all}</span>
</div> </div>
<ValueStats id='count_block' title='Блоки' icon={<IconConceptBlock size='1.25rem' />} value={stats.count_block} /> <ValueStats
id='count_block' //
title='Блоки'
icon={<IconConceptBlock size='1.25rem' />}
value={stats.count_block}
/>
<ValueStats <ValueStats
id='count_inputs' id='count_inputs'

View File

@ -58,14 +58,14 @@ export function EditorOssCard() {
isNarrow={isNarrow} isNarrow={isNarrow}
/> />
<div className='cc-column px-3 mx-0 md:mx-auto'> <div className='cc-column mx-0 md:mx-auto'>
<FormOSS key={schema.id} /> <FormOSS key={schema.id} />
<EditorLibraryItem schema={schema} isAttachedToOSS={false} /> <EditorLibraryItem schema={schema} isAttachedToOSS={false} />
</div> </div>
<OssStats <OssStats
className={clsx( className={clsx(
'w-80 md:w-56 mt-3 md:mt-8 mx-auto md:ml-8 md:mr-0', 'w-80 md:w-56 mt-3 md:mt-8 mx-auto md:ml-5 md:mr-0',
'cc-animate-sidebar', 'cc-animate-sidebar',
showOSSStats ? 'max-w-full' : 'opacity-0 max-w-0' showOSSStats ? 'max-w-full' : 'opacity-0 max-w-0'
)} )}

View File

@ -1,7 +1,7 @@
'use client'; 'use client';
import { DropdownButton } from '@/components/dropdown'; import { DropdownButton } from '@/components/dropdown';
import { IconDestroy, IconEdit2 } from '@/components/icons'; import { IconDestroy, IconEdit } from '@/components/icons';
import { useDialogsStore } from '@/stores/dialogs'; import { useDialogsStore } from '@/stores/dialogs';
import { useDeleteBlock } from '../../../../backend/use-delete-block'; import { useDeleteBlock } from '../../../../backend/use-delete-block';
@ -45,7 +45,7 @@ export function MenuBlock({ block, onHide }: MenuBlockProps) {
<DropdownButton <DropdownButton
text='Редактировать' text='Редактировать'
title='Редактировать блок' title='Редактировать блок'
icon={<IconEdit2 size='1rem' className='icon-primary' />} icon={<IconEdit size='1rem' className='icon-primary' />}
onClick={handleEditBlock} onClick={handleEditBlock}
disabled={!isMutable || isProcessing} disabled={!isMutable || isProcessing}
/> />

View File

@ -12,7 +12,7 @@ import {
IconClone, IconClone,
IconConnect, IconConnect,
IconDestroy, IconDestroy,
IconEdit2, IconEdit,
IconExecute, IconExecute,
IconNewRSForm, IconNewRSForm,
IconReference, IconReference,
@ -223,7 +223,7 @@ export function MenuOperation({ operation, onHide }: MenuOperationProps) {
<DropdownButton <DropdownButton
text='Редактировать' text='Редактировать'
title='Редактировать операцию' title='Редактировать операцию'
icon={<IconEdit2 size='1rem' className='icon-primary' />} icon={<IconEdit size='1rem' className='icon-primary' />}
onClick={handleEditOperation} onClick={handleEditOperation}
disabled={!isMutable || isProcessing} disabled={!isMutable || isProcessing}
/> />

View File

@ -18,7 +18,7 @@ import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import { import {
IconClone, IconClone,
IconDestroy, IconDestroy,
IconEdit2, IconEdit,
IconGenerateNames, IconGenerateNames,
IconMoveDown, IconMoveDown,
IconMoveUp, IconMoveUp,
@ -239,7 +239,7 @@ export function ToolbarSchema({
</div> </div>
<MiniButton <MiniButton
title='Редактировать конституенту' title='Редактировать конституенту'
icon={<IconEdit2 size='1rem' className='icon-primary' />} icon={<IconEdit size='1rem' className='icon-primary' />}
onClick={onEditActive} onClick={onEditActive}
disabled={!isMutable || isProcessing || !activeCst} disabled={!isMutable || isProcessing || !activeCst}
/> />

View File

@ -15,7 +15,7 @@ import {
IconConceptBlock, IconConceptBlock,
IconDestroy, IconDestroy,
IconDownload, IconDownload,
IconEdit2, IconEdit,
IconFilter, IconFilter,
IconFitImage, IconFitImage,
IconNewItem, IconNewItem,
@ -156,7 +156,7 @@ export function ToolbarOssGraph({
aria-label='Редактировать выбранную' aria-label='Редактировать выбранную'
titleHtml={prepareTooltip('Редактировать выбранную', isIOS() ? '' : 'Правый клик')} titleHtml={prepareTooltip('Редактировать выбранную', isIOS() ? '' : 'Правый клик')}
hideTitle={isContextMenuOpen || menu.isOpen} hideTitle={isContextMenuOpen || menu.isOpen}
icon={<IconEdit2 size='1.25rem' className='icon-primary' />} icon={<IconEdit size='1.25rem' className='icon-primary' />}
onClick={handleEditItem} onClick={handleEditItem}
disabled={selectedItems.length !== 1 || isProcessing} disabled={selectedItems.length !== 1 || isProcessing}
/> />

View File

@ -132,6 +132,18 @@
scroll-snap-type: y mandatory; scroll-snap-type: y mandatory;
} }
@utility cc-scroll-stable {
scrollbar-gutter: stable;
}
@utility cc-scroll-left {
direction: rtl;
& > * {
direction: ltr;
}
}
@utility cc-shadow-border { @utility cc-shadow-border {
box-shadow: 0 1px 2px 0 var(--color-border); box-shadow: 0 1px 2px 0 var(--color-border);
} }