+
{helpTopic && !hideHelpWhen?.() ? (
{label}
diff --git a/rsconcept/frontend/src/features/help/items/ui/help-library.tsx b/rsconcept/frontend/src/features/help/items/ui/help-library.tsx
index 37023ac8..3278e75c 100644
--- a/rsconcept/frontend/src/features/help/items/ui/help-library.tsx
+++ b/rsconcept/frontend/src/features/help/items/ui/help-library.tsx
@@ -62,7 +62,7 @@ export function HelpLibrary() {
сбросить фильтры
- переключение между Проводник и Поиск
+ переключение между Проводник и Таблица
diff --git a/rsconcept/frontend/src/features/help/items/ui/help-rseditor.tsx b/rsconcept/frontend/src/features/help/items/ui/help-rseditor.tsx
index 07731110..3b330868 100644
--- a/rsconcept/frontend/src/features/help/items/ui/help-rseditor.tsx
+++ b/rsconcept/frontend/src/features/help/items/ui/help-rseditor.tsx
@@ -1,10 +1,10 @@
import {
IconChild,
IconClone,
- IconControls,
IconDestroy,
IconEdit,
IconFilter,
+ IconKeyboard,
IconList,
IconMoveDown,
IconMoveUp,
@@ -94,7 +94,7 @@ export function HelpRSEditor() {
индикатор статуса определения сверху
- специальная клавиатура и горячие клавиши
+ специальная клавиатура и горячие клавиши
отображение{' '}
diff --git a/rsconcept/frontend/src/features/library/components/editor-library-item.tsx b/rsconcept/frontend/src/features/library/components/editor-library-item.tsx
index 81f54e1a..c7ac1a49 100644
--- a/rsconcept/frontend/src/features/library/components/editor-library-item.tsx
+++ b/rsconcept/frontend/src/features/library/components/editor-library-item.tsx
@@ -137,14 +137,14 @@ export function EditorLibraryItem({ schema, isAttachedToOSS }: EditorLibraryItem
}
+ icon={}
value={new Date(schema.time_update).toLocaleString(intl.locale)}
/>
}
+ icon={}
value={new Date(schema.time_create).toLocaleString(intl.locale, {
year: '2-digit',
month: '2-digit',
diff --git a/rsconcept/frontend/src/features/library/components/icon-role.tsx b/rsconcept/frontend/src/features/library/components/icon-role.tsx
index bc840178..9007de34 100644
--- a/rsconcept/frontend/src/features/library/components/icon-role.tsx
+++ b/rsconcept/frontend/src/features/library/components/icon-role.tsx
@@ -1,21 +1,16 @@
import { UserRole } from '@/features/users';
-import { IconAdmin, IconEditor, IconOwner, IconReader } from '@/components/icons';
+import { type DomIconProps, IconAdmin, IconEditor, IconOwner, IconReader } from '@/components/icons';
-interface IconRoleProps {
- role: UserRole;
- size?: string;
-}
-
-export function IconRole({ role, size = '1.25rem' }: IconRoleProps) {
- switch (role) {
+export function IconRole({ value, size = '1.25rem', className }: DomIconProps) {
+ switch (value) {
case UserRole.ADMIN:
- return ;
+ return ;
case UserRole.OWNER:
- return ;
+ return ;
case UserRole.EDITOR:
- return ;
+ return ;
case UserRole.READER:
- return ;
+ return ;
}
}
diff --git a/rsconcept/frontend/src/features/library/components/menu-role.tsx b/rsconcept/frontend/src/features/library/components/menu-role.tsx
index df6d8c48..c34ea3f8 100644
--- a/rsconcept/frontend/src/features/library/components/menu-role.tsx
+++ b/rsconcept/frontend/src/features/library/components/menu-role.tsx
@@ -3,7 +3,7 @@ import { useAuthSuspense } from '@/features/auth';
import { useRoleStore, UserRole } from '@/features/users';
import { describeUserRole, labelUserRole } from '@/features/users/labels';
-import { Button } from '@/components/control';
+import { MiniButton } from '@/components/control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import { IconAlert } from '@/components/icons';
@@ -29,13 +29,12 @@ export function MenuRole({ isOwned, isEditor }: MenuRoleProps) {
if (isAnonymous) {
return (
- }
onClick={() => router.push({ path: urls.login })}
/>
@@ -44,44 +43,45 @@ export function MenuRole({ isOwned, isEditor }: MenuRoleProps) {
return (
- }
+ className='h-full pr-2 bg-transparent text-muted-foreground hover:text-primary'
+ icon={}
onClick={accessMenu.toggle}
/>
}
+ icon={}
onClick={() => handleChangeMode(UserRole.READER)}
/>
}
+ icon={}
onClick={() => handleChangeMode(UserRole.EDITOR)}
disabled={!isOwned && !isEditor}
/>
}
+ icon={}
onClick={() => handleChangeMode(UserRole.OWNER)}
disabled={!isOwned}
/>
- }
- onClick={() => handleChangeMode(UserRole.ADMIN)}
- disabled={!user.is_staff}
- />
+ {user.is_staff ? (
+ }
+ onClick={() => handleChangeMode(UserRole.ADMIN)}
+ disabled={!user.is_staff}
+ />
+ ) : null}
);
diff --git a/rsconcept/frontend/src/features/library/pages/library-page/library-page.tsx b/rsconcept/frontend/src/features/library/pages/library-page/library-page.tsx
index b5625f02..9d2079e4 100644
--- a/rsconcept/frontend/src/features/library/pages/library-page/library-page.tsx
+++ b/rsconcept/frontend/src/features/library/pages/library-page/library-page.tsx
@@ -56,9 +56,10 @@ export function LibraryPage() {
}
+ icon={}
onClick={handleDownloadCSV}
/>
diff --git a/rsconcept/frontend/src/features/library/pages/library-page/use-library-columns.tsx b/rsconcept/frontend/src/features/library/pages/library-page/use-library-columns.tsx
index 591d906f..d010f964 100644
--- a/rsconcept/frontend/src/features/library/pages/library-page/use-library-columns.tsx
+++ b/rsconcept/frontend/src/features/library/pages/library-page/use-library-columns.tsx
@@ -42,7 +42,7 @@ export function useLibraryColumns() {
noHover
className='pl-2 max-h-4 -translate-y-0.5'
onClick={handleToggleFolder}
- icon={}
+ icon={}
/>
),
size: 50,
diff --git a/rsconcept/frontend/src/features/library/pages/library-page/view-side-location.tsx b/rsconcept/frontend/src/features/library/pages/library-page/view-side-location.tsx
index 62562ffe..6700e9fb 100644
--- a/rsconcept/frontend/src/features/library/pages/library-page/view-side-location.tsx
+++ b/rsconcept/frontend/src/features/library/pages/library-page/view-side-location.tsx
@@ -86,8 +86,9 @@ export function ViewSideLocation({ isVisible, onRenameLocation }: ViewSideLocati
/>
) : null}
}
+ noHover
+ title='Переключение в режим Таблица'
+ icon={}
onClick={toggleFolderMode}
/>
diff --git a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx
index f8701e40..a78403a2 100644
--- a/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx
+++ b/rsconcept/frontend/src/features/oss/dialogs/dlg-create-block/dlg-create-block.tsx
@@ -84,13 +84,8 @@ export function DlgCreateBlock() {
className='w-160 px-6 h-110'
helpTopic={HelpTopic.CC_OSS}
>
- setActiveTab(index as TabID)}
- >
-
+ setActiveTab(index as TabID)}>
+
handleSelectTab(index as TabID, last as TabID)}
>
-
+
activeTab !== TabID.SUBSTITUTION}
>
- setActiveTab(index as TabID)}
- >
-
+ setActiveTab(index as TabID)}>
+
Всего
{stats.count_all}
-
}
- value={stats.count_block}
- />
+
} value={stats.count_block} />
}
+ icon={
}
value={stats.count_inputs}
/>
}
+ icon={
}
value={stats.count_synthesis}
/>
}
+ icon={
}
value={stats.count_schemas}
/>
}
+ icon={
}
value={stats.count_owned}
/>
}
+ icon={
}
value={stats.count_schemas - stats.count_owned}
/>
diff --git a/rsconcept/frontend/src/features/oss/pages/oss-page/menu-edit-oss.tsx b/rsconcept/frontend/src/features/oss/pages/oss-page/menu-edit-oss.tsx
index 6ec908ff..95548b9b 100644
--- a/rsconcept/frontend/src/features/oss/pages/oss-page/menu-edit-oss.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/oss-page/menu-edit-oss.tsx
@@ -1,6 +1,6 @@
import { useAuthSuspense } from '@/features/auth';
-import { Button } from '@/components/control';
+import { MiniButton } from '@/components/control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import { IconChild, IconEdit2 } from '@/components/icons';
import { useDialogsStore } from '@/stores/dialogs';
@@ -31,14 +31,13 @@ export function MenuEditOss() {
return (
-
}
+ className='h-full px-3 bg-transparent text-muted-foreground hover:text-primary'
+ icon={
}
onClick={menu.toggle}
/>
@@ -47,7 +46,7 @@ export function MenuEditOss() {
titleHtml='Перенос конституентмежду схемами'
aria-label='Перенос конституент между схемами'
icon={}
- disabled={isProcessing}
+ disabled={isProcessing || !isMutable}
onClick={handleRelocate}
/>
diff --git a/rsconcept/frontend/src/features/oss/pages/oss-page/menu-main.tsx b/rsconcept/frontend/src/features/oss/pages/oss-page/menu-main.tsx
index 4b363749..58a18ddb 100644
--- a/rsconcept/frontend/src/features/oss/pages/oss-page/menu-main.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/oss-page/menu-main.tsx
@@ -3,7 +3,7 @@ import { useAuthSuspense } from '@/features/auth';
import { useRoleStore, UserRole } from '@/features/users';
import { Divider } from '@/components/container';
-import { Button } from '@/components/control';
+import { MiniButton } from '@/components/control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import { IconDestroy, IconLibrary, IconMenu, IconNewItem, IconQR, IconShare } from '@/components/icons';
import { useDialogsStore } from '@/stores/dialogs';
@@ -47,14 +47,13 @@ export function MenuMain() {
return (
-
}
- className='h-full pl-2'
+ icon={
}
+ className='h-full pl-2 text-muted-foreground hover:text-primary bg-transparent'
onClick={menu.toggle}
/>
diff --git a/rsconcept/frontend/src/features/oss/pages/oss-page/oss-tabs.tsx b/rsconcept/frontend/src/features/oss/pages/oss-page/oss-tabs.tsx
index 30d1f78c..6dd546f7 100644
--- a/rsconcept/frontend/src/features/oss/pages/oss-page/oss-tabs.tsx
+++ b/rsconcept/frontend/src/features/oss/pages/oss-page/oss-tabs.tsx
@@ -58,10 +58,9 @@ export function OssTabs({ activeTab }: OssTabsProps) {
selectedIndex={activeTab}
onSelect={onSelectTab}
defaultFocus
- selectedTabClassName='cc-selected'
className='relative flex flex-col mx-auto min-w-fit items-center'
>
-
+
diff --git a/rsconcept/frontend/src/features/rsform/components/icon-show-keyboard.tsx b/rsconcept/frontend/src/features/rsform/components/icon-show-keyboard.tsx
new file mode 100644
index 00000000..324caf02
--- /dev/null
+++ b/rsconcept/frontend/src/features/rsform/components/icon-show-keyboard.tsx
@@ -0,0 +1,9 @@
+import { type DomIconProps, IconKeyboard, IconKeyboardOff } from '@/components/icons';
+
+export function IconShowKeyboard({ value, size = '1.25rem', className }: DomIconProps) {
+ if (value) {
+ return ;
+ } else {
+ return ;
+ }
+}
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx b/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx
index 215f2eed..aa51753e 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/dlg-cst-template/dlg-cst-template.tsx
@@ -76,13 +76,8 @@ export function DlgCstTemplate() {
onSubmit={event => void methods.handleSubmit(onSubmit)(event)}
helpTopic={HelpTopic.RSL_TEMPLATES}
>
- setActiveTab(index as TabID)}
- >
-
+ setActiveTab(index as TabID)}>
+
diff --git a/rsconcept/frontend/src/features/rsform/dialogs/dlg-edit-reference/dlg-edit-reference.tsx b/rsconcept/frontend/src/features/rsform/dialogs/dlg-edit-reference/dlg-edit-reference.tsx
index 537309c2..e378082e 100644
--- a/rsconcept/frontend/src/features/rsform/dialogs/dlg-edit-reference/dlg-edit-reference.tsx
+++ b/rsconcept/frontend/src/features/rsform/dialogs/dlg-edit-reference/dlg-edit-reference.tsx
@@ -106,8 +106,8 @@ export function DlgEditReference() {
className='w-160 px-6 h-128'
helpTopic={HelpTopic.TERM_CONTROL}
>
-
-
+
+
void methods.handleSubmit(onSubmit)(event)}
>
- setActiveTab(index as TabID)}
- >
-
+ setActiveTab(index as TabID)}>
+
}
+ icon={}
disabled={isModified}
/>
) : null}
@@ -184,7 +184,7 @@ export function FormConstituenta({ disabled, id, toggleReset, schema, activeCst,
aria-label='Переименовать конституенту'
noHover
onClick={handleRenameCst}
- icon={}
+ icon={}
disabled={isModified}
/>
) : null}
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsexpression/toolbar-rsexpression.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsexpression/toolbar-rsexpression.tsx
index 148d4089..81c9b188 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsexpression/toolbar-rsexpression.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsexpression/toolbar-rsexpression.tsx
@@ -1,7 +1,9 @@
import clsx from 'clsx';
+import { IconShowKeyboard } from '@/features/rsform/components/icon-show-keyboard';
+
import { MiniButton } from '@/components/control';
-import { IconControls, IconTree, IconTypeGraph } from '@/components/icons';
+import { IconTree, IconTypeGraph } from '@/components/icons';
import { usePreferencesStore } from '@/stores/preferences';
import { useMutatingRSForm } from '../../../backend/use-mutating-rsform';
@@ -22,20 +24,23 @@ export function ToolbarRSExpression({ className, disabled, showTypeGraph, showAS
{!disabled || isProcessing ? (
}
+ icon={}
onClick={toggleControls}
/>
) : null}
}
+ icon={}
onClick={showTypeGraph}
/>
}
+ icon={}
/>
);
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
index 0a1b3f7a..97e8cacc 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rsform-card/rsform-stats.tsx
@@ -39,12 +39,12 @@ export function RSFormStats({ className, stats, isArchive }: RSFormStatsProps) {
}
+ icon={}
value={stats.count_all - stats.count_inherited}
/>
}
+ icon={}
value={stats.count_inherited}
titleHtml={isArchive ? 'Архивные схемы не хранят
информацию о наследовании' : 'Наследованные'}
/>
@@ -53,94 +53,91 @@ export function RSFormStats({ className, stats, isArchive }: RSFormStatsProps) {
id='count_ok'
title='Корректные'
className='col-start-1'
- icon={}
+ icon={}
value={stats.count_all - stats.count_errors - stats.count_property - stats.count_incalculable}
/>
}
+ icon={}
value={stats.count_errors}
/>
}
+ icon={}
value={stats.count_incalculable}
/>
}
+ icon={ 0 ? 'text-destructive' : undefined} />}
value={stats.count_errors}
/>
}
+ icon={}
value={stats.count_base}
/>
}
+ icon={}
value={stats.count_constant}
/>
}
+ icon={}
value={stats.count_structured}
/>
- }
- value={stats.count_axiom}
- />
+ } value={stats.count_axiom} />
- }
- value={stats.count_term}
- />
+ } value={stats.count_term} />
}
+ icon={}
value={stats.count_function}
/>
}
+ icon={}
value={stats.count_predicate}
/>
}
+ icon={}
value={stats.count_theorem}
/>
}
+ icon={}
value={stats.count_text_term}
/>
}
+ icon={}
value={stats.count_definition}
/>
}
+ icon={
+
+ }
value={stats.count_convention}
/>
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/editor-rslist.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/editor-rslist.tsx
index a70079fa..d1be7718 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/editor-rslist.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-rslist/editor-rslist.tsx
@@ -149,7 +149,7 @@ export function EditorRSList() {
}
+ icon={
}
onClick={handleDownloadCSV}
/>
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-edit-schema.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-edit-schema.tsx
index d251f65d..7b56d74e 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-edit-schema.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-edit-schema.tsx
@@ -2,7 +2,7 @@ import { urls, useConceptNavigation } from '@/app';
import { useAuthSuspense } from '@/features/auth';
import { Divider } from '@/components/container';
-import { Button } from '@/components/control';
+import { MiniButton } from '@/components/control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import {
IconArchive,
@@ -103,13 +103,12 @@ export function MenuEditSchema() {
if (isArchive) {
return (
-
}
onClick={event => router.push({ path: urls.schema(schema.id), newTab: event.ctrlKey || event.metaKey })}
/>
@@ -118,14 +117,13 @@ export function MenuEditSchema() {
return (
-
}
+ className='h-full px-3 bg-transparent text-muted-foreground hover:text-primary'
+ icon={
}
onClick={menu.toggle}
/>
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-main.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-main.tsx
index 4565ef49..a6debcf7 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-main.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/menu-main.tsx
@@ -7,7 +7,7 @@ import { AccessPolicy, LocationHead } from '@/features/library';
import { useRoleStore, UserRole } from '@/features/users';
import { Divider } from '@/components/container';
-import { Button } from '@/components/control';
+import { MiniButton } from '@/components/control';
import { Dropdown, DropdownButton, useDropdown } from '@/components/dropdown';
import {
IconClone,
@@ -128,14 +128,13 @@ export function MenuMain() {
return (
- }
- className='h-full pl-2'
+ icon={}
+ className='h-full pl-2 text-muted-foreground hover:text-primary bg-transparent'
onClick={menu.toggle}
/>
diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx
index 7c038e65..72dddb7d 100644
--- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx
+++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx
@@ -76,10 +76,9 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) {
selectedIndex={activeTab}
onSelect={onSelectTab}
defaultFocus
- selectedTabClassName='cc-selected'
className='relative flex flex-col min-w-fit items-center'
>
-
+