Skip to content

Commit

Permalink
feat: add UseCases component + deps update
Browse files Browse the repository at this point in the history
  • Loading branch information
BlackySoul committed Apr 10, 2024
1 parent c71f070 commit d85bdc6
Show file tree
Hide file tree
Showing 9 changed files with 660 additions and 211 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { UseCases } from '@site/src/components/UseCases/UseCases';

## Страничка для дизайна

Инпуты позволяют пользователям вводить текст в пользовательский интерфейс
Expand All @@ -6,40 +8,40 @@

Следуя этим правилам, вы можете обеспечить правильное применение текстовых полей в пользовательском интерфейсе, что улучшит удобство использования и повысит удовлетворенность пользователей.

### Выделение:
### Выделение

Текстовые поля должны быть четко выделены, чтобы пользователи могли легко их идентифицировать и понять, что они предназначены для ввода необходимой информации. Это можно сделать с помощью обводки, заливки или других визуальных подсказок.

| Правильно | Неправильно |
| ---------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| ![Четко выделенное текстовое поле](/img/components/input/marked-correct.png) | ![Поле формы слишком ярко выделено](/img/components/input/marked-wrong.png) |

<table>
<tbody>
<tr>
<td>![Четко выделенное текстовое поле](/img/components/input/marked-correct.png)</td>
<td>![Поле формы слишком ярко выделено](/img/components/input/marked-wrong.png)</td>
</tr>
</tbody>
</table>

### Состояния:
<UseCases>
<UseCases.Correct>
![Четко выделенное текстовое поле](/img/components/input/marked-correct.png#dark-mode-only)
![Четко выделенное текстовое поле](/img/components/input/marked-correct.png#light-mode-only)
Текстовое поле чётко выделено
</UseCases.Correct>
<UseCases.Wrong>
![Поле формы слишком ярко выделено](/img/components/input/marked-wrong.png#dark-mode-only)
![Поле формы слишком ярко выделено](/img/components/input/marked-wrong.png#light-mode-only)
Текстовое поле слишком ярко выделено
</UseCases.Wrong>
</UseCases>

### Состояния

Состояния текстовых полей должны быть четко различимы. Некоторые из примеров: поле может быть в активном состоянии (когда в него вводят текст), не активном состоянии (когда не заполнено) или состоянии ошибки (когда введенный текст неверен).

| Правильно | Неправильно |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| ![Состояния текстовых полей четко различимы](/img/components/input/state-correct.png) | ![Состояния текстовых полей одинаковые](/img/components/input/state-wrong.png) |

### Ясность:
### Ясность

Текстовые поля должны облегчать понимание запрашиваемой информации. Это означает, что названия полей и пояснение к вводу должны быть четкими и краткими, а формат ввода должен быть понятен.

| Правильно | Неправильно |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| ![Понятная запрашиваемая информация](/img/components/input/clear-correct.png) | ![Нет понимания, какой номер ввести](/img/components/input/clear-wrong.png) |

### Устранение ошибок:
### Устранение ошибок

Текстовые поля должны помогать пользователям устранять ошибки. Это можно сделать с помощью проверки ввода, которая предупреждает пользователей о неверном формате или недопустимых значениях, а также с помощью сообщений об ошибках, которые предоставляют конкретные инструкции по исправлению ошибок.

Expand Down Expand Up @@ -168,9 +170,9 @@

- Не размещайте текст ошибки под текстом помощника, так как их внешний вид изменит содержимое.
- Длинные ошибки могут обернуться в несколько строк, если нет достаточно места для четкого описания ошибки. В этом случае убедитесь, что заполнение между текстовыми полями достаточно, чтобы предотвратить попадание содержимого макета многостроковыми ошибками.
:::
</td>
</tr>
:::
</td>
</tr>
</tbody>
</table>

Expand Down
2 changes: 1 addition & 1 deletion docs-beta/docs/components/forms/input.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import InputDesignPage from './_input.design.md';
import InputDesignPage from './_input.design.mdx';

# Input

Expand Down
12 changes: 12 additions & 0 deletions docs-beta/docusaurus.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Options as DocsOptions } from '@docusaurus/plugin-content-docs';
import type { Options as PageOptions } from '@docusaurus/plugin-content-pages';
import type { Options as IdealImageOptions } from '@docusaurus/plugin-ideal-image';
// import type { Options as SitemapOptions } from '@docusaurus/plugin-sitemap';
import type { Options as ThemeClassicOptions } from '@docusaurus/theme-classic';
import type { UserThemeConfig as ClassicThemeConfig } from '@docusaurus/theme-common';
Expand Down Expand Up @@ -78,6 +79,17 @@ const config: Config = {
} satisfies ThemeClassicOptions,
],
'@docusaurus/theme-live-codeblock',
[
'@docusaurus/plugin-ideal-image',
{
quality: 70,
max: 1030,
min: 640,
steps: 2,
// Use false to debug, but it incurs huge perf costs
disableInDev: true,
} satisfies IdealImageOptions,
],
],

themeConfig: {
Expand Down
23 changes: 12 additions & 11 deletions docs-beta/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,24 @@
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "3.1.1",
"@docusaurus/plugin-content-docs": "3.1.1",
"@docusaurus/plugin-content-pages": "3.1.1",
"@docusaurus/plugin-debug": "3.1.1",
"@docusaurus/plugin-sitemap": "3.1.1",
"@docusaurus/theme-classic": "3.1.1",
"@docusaurus/theme-common": "3.1.1",
"@docusaurus/theme-live-codeblock": "^3.1.1",
"@docusaurus/core": "^3.2.1",
"@docusaurus/plugin-content-docs": "^3.2.1",
"@docusaurus/plugin-content-pages": "^3.2.1",
"@docusaurus/plugin-debug": "^3.2.1",
"@docusaurus/plugin-ideal-image": "^3.2.1",
"@docusaurus/plugin-sitemap": "^3.2.1",
"@docusaurus/theme-classic": "^3.2.1",
"@docusaurus/theme-common": "^3.2.1",
"@docusaurus/theme-live-codeblock": "^3.2.1",
"@mdx-js/react": "^3.0.0",
"prism-react-renderer": "^2.3.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.1.1",
"@docusaurus/tsconfig": "3.1.1",
"@docusaurus/types": "3.1.1",
"@docusaurus/module-type-aliases": "^3.2.1",
"@docusaurus/tsconfig": "^3.2.1",
"@docusaurus/types": "^3.2.1",
"typescript": "^5.3.3"
},
"browserslist": {
Expand Down
42 changes: 42 additions & 0 deletions docs-beta/src/components/UseCases/UseCases.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.host {
display: grid;
justify-content: center;
gap: 8px;
grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
margin: 8px;
}

.item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
text-align: center;
color: var(--vkui--color_text_secondary);
/* font-size: var(--vkui--font_footnote--font_size--regular); */
font-size: var(--vkui--font_subhead--font_size--regular);
}

.heading {
font-size: var(--vkui--font_headline--font_size--regular);
font-weight: var(--vkui--font_weight_base1);
text-transform: uppercase;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
/* border-bottom: 1px solid var(--vkui--color_separator_primary); */
margin: 8px;
padding: 8px;
width: 100%;
/* background-color: var(--vkui--color_background_tertiary); */
background-color: rgba(171, 169, 169, 10%);
border-radius: 16px;
}

.good {
color: var(--vkui--color_text_positive);
}
.bad {
color: var(--vkui--color_text_negative);
}
60 changes: 60 additions & 0 deletions docs-beta/src/components/UseCases/UseCases.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import * as React from 'react';
// import MarkedCorrect from '@site/static/img/components/input/marked-correct.png';
// import MarkedWrong from '@site/static/img/components/input/marked-wrong.png';
// import ThemedImage from '@theme/ThemedImage';
import { Icon24CancelCircleFillRed, Icon24CheckCircleFillGreen } from '@vkontakte/icons';
import { classNames } from '@vkontakte/vkjs';
import styles from './UseCases.module.css';

export interface UseCasesProps {
children: React.ReactNode;
sources: {
correctLightUrl: string;
correctDarkUrl: string;
wrongLightUrl: string;
wrongDarkUrl: string;
};
}

function UseCasesCorrect({ children }: { children: React.ReactNode }) {
return (
<div className={styles.item}>
<span className={classNames(styles.heading, styles.good)}>
<Icon24CheckCircleFillGreen /> Правильно
</span>
{/* <ThemedImage
sources={{
light: MarkedCorrect,
dark: MarkedCorrect,
}}
/>
Текстовое поле чётко выделено */}
{children}
</div>
);
}

function UseCasesWrong({ children }: { children: React.ReactNode }) {
return (
<div className={styles.item}>
<span className={classNames(styles.heading, styles.bad)}>
<Icon24CancelCircleFillRed /> Неправильно
</span>
{/* <ThemedImage
sources={{
light: MarkedWrong,
dark: MarkedWrong,
}}
/>
Текстовое поле слишком ярко выделено */}
{children}
</div>
);
}

export function UseCases({ children }: UseCasesProps) {
return <div className={styles.host}>{children}</div>;
}

UseCases.Correct = UseCasesCorrect;
UseCases.Wrong = UseCasesWrong;
5 changes: 5 additions & 0 deletions docs-beta/src/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

[data-theme='light'] img[src$='#dark-mode-only'],
[data-theme='dark'] img[src$='#light-mode-only'] {
display: none;
}

.header-github-link::before {
content: '';
width: 24px;
Expand Down
1 change: 1 addition & 0 deletions docs-beta/src/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
declare module '*.png';
Loading

0 comments on commit d85bdc6

Please sign in to comment.