startup-ui 0.12.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/AGENTS.md +18 -0
  2. package/CHANGELOG.md +39 -0
  3. package/CLAUDE.md +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +54 -0
  6. package/dist/defaults.css +83 -0
  7. package/dist/index.css +1 -1
  8. package/dist/startup-ui.cjs.js +33 -586
  9. package/dist/startup-ui.cjs.js.map +1 -1
  10. package/dist/startup-ui.es.js +7157 -8837
  11. package/dist/startup-ui.es.js.map +1 -1
  12. package/dist/types/components/SActionIcon.d.ts +2 -1
  13. package/dist/types/components/SActionIcon.d.ts.map +1 -1
  14. package/dist/types/components/SCanvas.d.ts +0 -1
  15. package/dist/types/components/SCanvas.d.ts.map +1 -1
  16. package/dist/types/components/SCheckbox.d.ts.map +1 -1
  17. package/dist/types/components/SCheckboxGroup.d.ts +4 -0
  18. package/dist/types/components/SCheckboxGroup.d.ts.map +1 -1
  19. package/dist/types/components/SColumnSettings.d.ts +4 -4
  20. package/dist/types/components/SColumnSettings.d.ts.map +1 -1
  21. package/dist/types/components/SConfirm/SConfirm.d.ts +2 -0
  22. package/dist/types/components/SConfirm/SConfirm.d.ts.map +1 -1
  23. package/dist/types/components/SCopyText.d.ts.map +1 -1
  24. package/dist/types/components/SDatePicker.d.ts +3 -4
  25. package/dist/types/components/SDatePicker.d.ts.map +1 -1
  26. package/dist/types/components/SDialog.d.ts.map +1 -1
  27. package/dist/types/components/SFilterGroup.d.ts +3 -3
  28. package/dist/types/components/SFilterGroup.d.ts.map +1 -1
  29. package/dist/types/components/SFooter.d.ts.map +1 -1
  30. package/dist/types/components/SForm.d.ts.map +1 -1
  31. package/dist/types/components/SFormRow.d.ts.map +1 -1
  32. package/dist/types/components/SHtmlEditor.d.ts +20 -0
  33. package/dist/types/components/SHtmlEditor.d.ts.map +1 -1
  34. package/dist/types/components/SImagePreview.d.ts.map +1 -1
  35. package/dist/types/components/SInput.d.ts +9 -2
  36. package/dist/types/components/SInput.d.ts.map +1 -1
  37. package/dist/types/components/SMenu.d.ts +39 -0
  38. package/dist/types/components/SMenu.d.ts.map +1 -0
  39. package/dist/types/components/SNote.d.ts.map +1 -1
  40. package/dist/types/components/SPagination.d.ts.map +1 -1
  41. package/dist/types/components/SProgressbar.d.ts.map +1 -1
  42. package/dist/types/components/SRadio.d.ts.map +1 -1
  43. package/dist/types/components/SRadioGroup.d.ts +4 -0
  44. package/dist/types/components/SRadioGroup.d.ts.map +1 -1
  45. package/dist/types/components/SSelect.d.ts +6 -0
  46. package/dist/types/components/SSelect.d.ts.map +1 -1
  47. package/dist/types/components/SStatus.d.ts.map +1 -1
  48. package/dist/types/components/STable.d.ts +4 -4
  49. package/dist/types/components/STable.d.ts.map +1 -1
  50. package/dist/types/components/SToggle.d.ts.map +1 -1
  51. package/dist/types/components/STooltip.d.ts +0 -1
  52. package/dist/types/components/STooltip.d.ts.map +1 -1
  53. package/dist/types/components/STree.d.ts +11 -5
  54. package/dist/types/components/STree.d.ts.map +1 -1
  55. package/dist/types/components/SUpload.d.ts +5 -4
  56. package/dist/types/components/SUpload.d.ts.map +1 -1
  57. package/dist/types/components/SVerticalMenu.d.ts.map +1 -1
  58. package/dist/types/components/htmlEditor/contentStyle.d.ts +9 -0
  59. package/dist/types/components/htmlEditor/contentStyle.d.ts.map +1 -0
  60. package/dist/types/components/icons.d.ts +23 -0
  61. package/dist/types/components/icons.d.ts.map +1 -0
  62. package/dist/types/config.d.ts +49 -0
  63. package/dist/types/config.d.ts.map +1 -0
  64. package/dist/types/global-components.d.ts +3 -6
  65. package/dist/types/global-components.d.ts.map +1 -1
  66. package/dist/types/index.d.ts +12 -2
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/locale/index.d.ts +49 -0
  69. package/dist/types/locale/index.d.ts.map +1 -0
  70. package/dist/types/locale/messages/en-US.d.ts +4 -0
  71. package/dist/types/locale/messages/en-US.d.ts.map +1 -0
  72. package/dist/types/locale/messages/en.d.ts +4 -0
  73. package/dist/types/locale/messages/en.d.ts.map +1 -0
  74. package/dist/types/locale/messages/ru.d.ts +4 -0
  75. package/dist/types/locale/messages/ru.d.ts.map +1 -0
  76. package/dist/types/locale/types.d.ts +74 -0
  77. package/dist/types/locale/types.d.ts.map +1 -0
  78. package/dist/types/plugin.d.ts +2 -1
  79. package/dist/types/plugin.d.ts.map +1 -1
  80. package/dist/types/utils/deepMerge.d.ts +9 -0
  81. package/dist/types/utils/deepMerge.d.ts.map +1 -0
  82. package/dist/types/utils/options.d.ts +25 -0
  83. package/dist/types/utils/options.d.ts.map +1 -0
  84. package/llms/components/data/sfilter.md +194 -0
  85. package/llms/components/data/spagination.md +114 -0
  86. package/llms/components/data/stable.md +638 -0
  87. package/llms/components/data/stree.md +213 -0
  88. package/llms/components/forms/scheckbox.md +139 -0
  89. package/llms/components/forms/sdatepicker.md +161 -0
  90. package/llms/components/forms/sform.md +240 -0
  91. package/llms/components/forms/shtmleditor.md +143 -0
  92. package/llms/components/forms/sinput.md +165 -0
  93. package/llms/components/forms/sradio.md +164 -0
  94. package/llms/components/forms/sselect.md +149 -0
  95. package/llms/components/forms/sswitch.md +69 -0
  96. package/llms/components/forms/supload.md +189 -0
  97. package/llms/components/interfaces/sactionbar.md +40 -0
  98. package/llms/components/interfaces/sactionicon.md +126 -0
  99. package/llms/components/interfaces/salert.md +87 -0
  100. package/llms/components/interfaces/sbutton.md +167 -0
  101. package/llms/components/interfaces/scolumnsettings.md +204 -0
  102. package/llms/components/interfaces/sconfirm.md +57 -0
  103. package/llms/components/interfaces/scopytext.md +67 -0
  104. package/llms/components/interfaces/sdashboard.md +130 -0
  105. package/llms/components/interfaces/sdialog.md +158 -0
  106. package/llms/components/interfaces/simagepreview.md +98 -0
  107. package/llms/components/interfaces/snote.md +64 -0
  108. package/llms/components/interfaces/sprogressbar.md +48 -0
  109. package/llms/components/interfaces/sstat.md +79 -0
  110. package/llms/components/interfaces/sstatus.md +76 -0
  111. package/llms/components/interfaces/stag.md +70 -0
  112. package/llms/components/interfaces/stimeline.md +47 -0
  113. package/llms/components/interfaces/stoggle.md +120 -0
  114. package/llms/components/interfaces/stooltip.md +88 -0
  115. package/llms/components/template/scanvas.md +61 -0
  116. package/llms/components/template/smenu.md +88 -0
  117. package/llms/components/template/sverticalmenu.md +113 -0
  118. package/llms/llms.txt +49 -0
  119. package/package.json +37 -4
  120. package/dist/types/components/SDropdownMenu.d.ts +0 -39
  121. package/dist/types/components/SDropdownMenu.d.ts.map +0 -1
  122. package/dist/types/components/SHorizontalMenu.d.ts +0 -33
  123. package/dist/types/components/SHorizontalMenu.d.ts.map +0 -1
@@ -0,0 +1,67 @@
1
+ # SCopyText
2
+
3
+ Копируемый текст.
4
+
5
+ <SToggle title="В чем отличие от аналогов?">В популярных библиотеках элементов для Vue3 прямого аналога нет.</SToggle>
6
+
7
+ ## Базовый пример
8
+
9
+ ```vue
10
+ <template>
11
+ <SCopyText>ABCD-EFGH-1234-5678</SCopyText>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { SCopyText } from 'startup-ui'
16
+ </script>
17
+ ```
18
+
19
+ ## Внутристрочный пример
20
+
21
+ ```vue
22
+ <template>
23
+ <SCopyText layout="inline">Секретный код для копирования</SCopyText> в обычном тексте.
24
+ </template>
25
+
26
+ <script setup>
27
+ import { SCopyText } from 'startup-ui'
28
+ </script>
29
+ ```
30
+
31
+ ## Копируем не то, что выводим
32
+
33
+ ```vue
34
+ <template>
35
+ <SCopyText copytext="777">Секретный код: 777</SCopyText>
36
+ </template>
37
+
38
+ <script setup>
39
+ import { SCopyText } from 'startup-ui'
40
+ </script>
41
+ ```
42
+
43
+ ## Интерфейс компонента
44
+
45
+ ### Свойства (Props)
46
+
47
+ | Название | Тип | По умолчанию | Описание |
48
+ |----------|-----|--------------|----------|
49
+ | layout | `'input'` \| `'inline'` | `'input'` | Вид компонента. `'input'` — блок с рамкой, `'inline'` — текст с пунктирным подчёркиванием. |
50
+ | copytext | string | undefined | Строка, которая будет скопирована в буфер. Если не указана, копируется текст из слота. |
51
+ | size | `'small'` \| `'normal'` \| `'large'` | `'normal'` | Размер компонента. |
52
+
53
+ ### Слоты (Slots)
54
+
55
+ | Название | Описание |
56
+ |----------|----------|
57
+ | default | Текстовое содержимое, отображаемое пользователю. |
58
+
59
+ <script setup lang="ts">
60
+ import SToggle from '../../../../packages/startup-ui/src/components/SToggle.vue';
61
+ </script>
62
+
63
+ <style lang="scss">
64
+ .block .s-copytext {
65
+ max-width: 450px;
66
+ }
67
+ </style>
@@ -0,0 +1,130 @@
1
+ # SDashboard > SDashboardItem
2
+
3
+ Дешборд блоков (как правило, удобно использовать для отчетов).
4
+
5
+ <SToggle title="В чем отличие от аналогов?">
6
+ В попурярных библиотеках компонентов для Vue3 прямого аналога нет.
7
+ </SToggle>
8
+
9
+ ## Базовый пример
10
+
11
+ ```vue
12
+ <template>
13
+ <SDashboard>
14
+ <SDashboardItem title="Продажи">
15
+ Информация о продажах.
16
+ </SDashboardItem>
17
+ <SDashboardItem title="Списания за услуги">
18
+ Информация о стоимости услуг.
19
+ </SDashboardItem>
20
+ </SDashboard>
21
+ </template>
22
+
23
+ <script setup>
24
+ import { SDashboard, SDashboardItem } from 'startup-ui'
25
+ </script>
26
+ ```
27
+
28
+ ## Кастомный заголовок
29
+
30
+ Если текста не достаточно, то для заголовка можно использовать слот:
31
+
32
+ ```vue
33
+ <SDashboard>
34
+ <SDashboardItem>
35
+ <template #title>
36
+ Продажи <STooltip>Только с подписанными актами</STooltip>
37
+ </template>
38
+ Информация о продажах.
39
+ </SDashboardItem>
40
+ </SDashboard>
41
+ ```
42
+
43
+ ## Доп.элемент справа от заголовка
44
+
45
+ Справа от заголовка часто бывает сподручно разместить дополнительную ссылку или что-то ещё. Сделать это можно в слоте #extra:
46
+
47
+ ```vue
48
+ <SDashboard>
49
+ <SDashboardItem title="Мой тариф">
50
+ <template #extra>
51
+ <a href="/docs/plans/">Как работают тарифы?</a>
52
+ </template>
53
+ Описание работы тарифов
54
+ </SDashboardItem>
55
+ </SDashboard>
56
+ ```
57
+
58
+ ## Максимальная высота контента
59
+
60
+ Иногда динамически генерируемый контент внутри SDashboardItem может превращаться в длинную простыню. Чтобы не занимать большое пространство подобным блоком, такой контент можно ограничить по высоте, и в случае превышения в блоке появится свой внутренний горизонтальный скролл.
61
+
62
+ ```vue
63
+ <template>
64
+ <SDashboard>
65
+ <SDashboardItem title="Регистрации пользователей" :max-content-height="300">
66
+ ...
67
+ </SDashboardItem>
68
+ </SDashboard>
69
+ </template>
70
+
71
+ <script setup>
72
+ import { SDashboard, SDashboardItem } from 'startup-ui'
73
+ </script>
74
+ ```
75
+
76
+ ## Цвета
77
+
78
+ По умолчанию блоки идут в самом светлом цвете акцента, но при необходимости можно использовать кастомные выделения цветом:
79
+
80
+ ```vue
81
+ <template>
82
+ <SDashboard>
83
+ <SDashboardItem title="Обычный блок" />
84
+ <SDashboardItem gray title="Серый блок" />
85
+ <SDashboardItem green title="Зеленый блок" />
86
+ <SDashboardItem red title="Красный блок" />
87
+ </SDashboard>
88
+ </template>
89
+
90
+ <script setup>
91
+ import { SDashboard, SDashboardItem } from 'startup-ui'
92
+ </script>
93
+ ```
94
+
95
+ ## Интерфейс компонента SDashboard
96
+
97
+ ### Свойства (Props)
98
+
99
+ _Нет свойств. Это просто контейнер для обертки и автоматического позиционирования (flex/grid)._
100
+
101
+ ## Интерфейс компонента SDashboardItem
102
+
103
+ ### Свойства (Props)
104
+
105
+ | Название | Тип | По умолчанию | Описание |
106
+ |----------|-----|--------------|----------|
107
+ | title | string | undefined | Текстовый заголовок блока дашборда. |
108
+ | maxContentHeight | string \| number | undefined | Фиксированная максимальная высота контента (например, `300` или `'300px'`). При переполнении появится скролл. |
109
+ | gray | boolean | `false` | Применяет серый цвет фона. |
110
+ | green | boolean | `false` | Применяет светло-зеленый цвет фона. |
111
+ | red | boolean | `false` | Применяет светло-красный цвет фона. |
112
+
113
+ ### Слоты (Slots)
114
+
115
+ | Название | Описание |
116
+ |----------|----------|
117
+ | default | Основное содержимое блока. |
118
+ | title | Заменяет строковый заголовок (`title`) на кастомный HTML/компоненты. |
119
+ | extra | Контейнер с правой стороны заголовка, полезен для ссылок или кнопок действий. |
120
+
121
+ <script setup lang="ts">
122
+ import SToggle from '../../../../packages/startup-ui/src/components/SToggle.vue';
123
+ </script>
124
+
125
+ <style lang="scss">
126
+ .s-dashboard {
127
+ color: var(--s-text);
128
+ margin-bottom: 0;
129
+ }
130
+ </style>
@@ -0,0 +1,158 @@
1
+ # SDialog
2
+
3
+ Диалоговое окно.
4
+
5
+ ## Базовый пример
6
+
7
+ ```vue
8
+ <template>
9
+ <SDialog v-model="isShown" title="Войти в личный кабинет">
10
+ <SForm v-model="form" @submit.prevent="submit">
11
+ <SFormRow title="Логин" name="login">
12
+ <SInput />
13
+ </SFormRow>
14
+ <SFormRow title="Пароль" name="password">
15
+ <SInput type="password" />
16
+ </SFormRow>
17
+ <SButton>Войти</SButton>
18
+ </SForm>
19
+ </SDialog>
20
+
21
+ <SButton @click="isShown = true">Открыть окно</SButton>
22
+ </template>
23
+ <script setup>
24
+ import { ref } from 'vue'
25
+
26
+ const isShown = ref(false)
27
+ const form = ref({ login: '', password: '' })
28
+
29
+ function submit() {
30
+ isShown.value = false
31
+ }
32
+ </script>
33
+ ```
34
+
35
+ ## Фиксированная ширина
36
+
37
+ ```vue
38
+ <template>
39
+ <SDialog v-model="isShown" title="Войти в личный кабинет" width="500px">
40
+ <SForm v-model="form" @submit.prevent="submit">
41
+ <SFormRow title="Логин" name="login">
42
+ <SInput />
43
+ </SFormRow>
44
+ <SFormRow title="Пароль" name="password">
45
+ <SInput type="password" />
46
+ </SFormRow>
47
+ <SButton>Войти</SButton>
48
+ </SForm>
49
+ </SDialog>
50
+
51
+ <SButton @click="isShown = true">Открыть окно</SButton>
52
+ </template>
53
+ <script setup>
54
+ import { ref } from 'vue'
55
+
56
+ const isShown = ref(false)
57
+ const form = ref({ login: '', password: '' })
58
+
59
+ function submit() {
60
+ isShown.value = false
61
+ }
62
+ </script>
63
+ ```
64
+
65
+ ## Не-модальное окно
66
+
67
+ По умолчанию окно модальное (нельзя взаимодействовать с другими объектами при открытом окне). Но если нужно отключить модальность, это можно сделать вот так:
68
+
69
+ ```vue
70
+ <template>
71
+ <SDialog v-model="isShown" title="Войти в личный кабинет" not-modal>
72
+ <SForm v-model="form" @submit.prevent="submit">
73
+ <SFormRow title="Логин" name="login">
74
+ <SInput />
75
+ </SFormRow>
76
+ <SFormRow title="Пароль" name="password">
77
+ <SInput type="password" />
78
+ </SFormRow>
79
+ <SButton>Войти</SButton>
80
+ </SForm>
81
+ </SDialog>
82
+
83
+ <SButton @click="isShown = true">Открыть окно</SButton>
84
+ </template>
85
+ <script setup>
86
+ import { ref } from 'vue'
87
+
88
+ const isShown = ref(false)
89
+ const form = ref({ login: '', password: '' })
90
+
91
+ function submit() {
92
+ isShown.value = false
93
+ }
94
+ </script>
95
+ ```
96
+
97
+ ## Не закрывать по клику на оверлей
98
+
99
+ По умолчанию при клике на оверлей окно закрывается, если надо перехватывать-останавливать событие, то:
100
+
101
+ ```vue
102
+ <template>
103
+ <SDialog v-model="isShown" title="Войти в личный кабинет" @overlay-click.stop.prevent>
104
+ <SForm v-model="form" @submit.prevent="submit">
105
+ <SFormRow title="Логин" name="login">
106
+ <SInput />
107
+ </SFormRow>
108
+ <SFormRow title="Пароль" name="password">
109
+ <SInput type="password" />
110
+ </SFormRow>
111
+ <SButton>Войти</SButton>
112
+ </SForm>
113
+ </SDialog>
114
+
115
+ <SButton @click="isShown = true">Открыть окно</SButton>
116
+ </template>
117
+ <script setup>
118
+ import { ref } from 'vue'
119
+
120
+ const isShown = ref(false)
121
+ const form = ref({ login: '', password: '' })
122
+
123
+ function submit() {
124
+ isShown.value = false
125
+ }
126
+ </script>
127
+ ```
128
+
129
+ ## Интерфейс компонента
130
+
131
+ ### Свойства (Props)
132
+
133
+ | Название | Тип | По умолчанию | Описание |
134
+ |----------|-----|--------------|----------|
135
+ | modelValue (v-model) | boolean | false | Управляет видимостью диалога. |
136
+ | title | string | undefined | Текст заголовка в шапке окна. |
137
+ | width | string | undefined | Кастомная ширина окна (например, `'500px'`, `'80vw'`). |
138
+ | notModal | boolean | false | Если `true`, убирает фоновый оверлей (не-модальное окно). |
139
+
140
+ ### События (Events)
141
+
142
+ | Название | Параметры | Описание |
143
+ |----------|-----------|----------|
144
+ | update:modelValue | boolean | Срабатывает при изменении v-model. |
145
+ | overlay-click | — | Срабатывает при клике на фоновый оверлей. Окно закрывается, если не предотвращено (`.stop.prevent`). |
146
+ | hide | — | Срабатывает при закрытии окна (крестиком или кликом на оверлей). |
147
+
148
+ ### Слоты (Slots)
149
+
150
+ | Название | Описание |
151
+ |----------|----------|
152
+ | default | Основное содержимое диалогового окна. |
153
+
154
+ <style lang="scss">
155
+ .s-dialog {
156
+ color: var(--s-text);
157
+ }
158
+ </style>
@@ -0,0 +1,98 @@
1
+ # SImagePreview
2
+
3
+ Картинка, которую можно посмотреть более детально в диалоговом окне.
4
+
5
+ ## Базовый пример
6
+
7
+ Выводим картинку, которая увеличивается при клике.
8
+
9
+ ```vue
10
+ <template>
11
+ <div class="preview-container">
12
+ <SImagePreview src="/animals.webp" />
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import { SImagePreview } from 'startup-ui'
18
+ </script>
19
+ ```
20
+
21
+ ## Кастомное превью
22
+
23
+ Если первоначально до клика показывается другое изображение (напр.меньшего размера), то используем атрибут preview:
24
+
25
+ ```vue
26
+ <template>
27
+ <div class="preview-container">
28
+ <SImagePreview preview="/nature.jpg" src="/animals.webp" />
29
+ </div>
30
+ </template>
31
+
32
+ <script setup>
33
+ import { SImagePreview } from 'startup-ui'
34
+ </script>
35
+ ```
36
+
37
+ Если нужно вставить кастомный контент, используем слот "preview":
38
+
39
+ ```vue
40
+ <div class="preview-container">
41
+ <SImagePreview src="/animals.webp">
42
+ <template #preview>
43
+ <img src="/nature.jpg" />
44
+ </template>
45
+ </SImagePreview>
46
+ </div>
47
+ ```
48
+
49
+ ## Кастомная иконка увеличения
50
+
51
+ В icon-атрибуте указываем название иконки:
52
+
53
+ ```vue
54
+ <template>
55
+ <div class="preview-container">
56
+ <SImagePreview src="/animals.webp" icon="magnifying-glass-plus" />
57
+ </div>
58
+ </template>
59
+
60
+ <script setup>
61
+ import { SImagePreview } from 'startup-ui'
62
+ </script>
63
+ ```
64
+
65
+ Если нужно вставить кастомный контент, используем слот "icon":
66
+
67
+ ```vue
68
+ <div class="preview-container">
69
+ <SImagePreview src="/animals.webp" icon="magnifying-glass-plus">
70
+ <template #icon>
71
+ 🔍
72
+ </template>
73
+ </SImagePreview>
74
+ </div>
75
+ ```
76
+
77
+ ## Интерфейс компонента
78
+
79
+ ### Свойства (Props)
80
+
81
+ | Название | Тип | По умолчанию | Описание |
82
+ |----------|-----|--------------|----------|
83
+ | src | string | undefined | URL полноразмерного изображения, показываемого в модальном окне. |
84
+ | preview | string | undefined | URL миниатюры. Если не указан, используется `src`. |
85
+ | icon | string \| string[] | `'magnifying-glass'` | Имя иконки FontAwesome для оверлея при наведении. |
86
+
87
+ ### Слоты (Slots)
88
+
89
+ | Название | Описание |
90
+ |----------|----------|
91
+ | preview | Полностью заменяет стандартный элемент `<img>` миниатюры. |
92
+ | icon | Заменяет иконку увеличения, появляющуюся при наведении. |
93
+
94
+ <style lang="scss">
95
+ .preview-container {
96
+ max-width: 200px;
97
+ }
98
+ </style>
@@ -0,0 +1,64 @@
1
+ # SNote
2
+
3
+ Текстовая заметка.
4
+
5
+ <SToggle title="В чем отличие от аналогов?">
6
+ <p>В отличие от популярных библиотек компонентов для Vue3:</p>
7
+ <ol>
8
+ <li>Привязка к FontAwesome, который бесплатен и оптимально решает задачи иконок для стартапов.</li>
9
+ </ol>
10
+ </SToggle>
11
+
12
+ ## Базовый пример
13
+
14
+ ```vue
15
+ <template>
16
+ <SNote>Стандартный стиль (основной цвет)</SNote>
17
+ <SNote gray>В сером цвете</SNote>
18
+ <SNote attention>Привлечение внимания</SNote>
19
+ <SNote success>Успешное действие</SNote>
20
+ <SNote error>Описание ошибки</SNote>
21
+ </template>
22
+
23
+ <script setup>
24
+ import { SNote } from 'startup-ui'
25
+ </script>
26
+ ```
27
+
28
+ ## С иконкой и заголовком
29
+
30
+ ```vue
31
+ <template>
32
+ <SNote icon="circle-info" title="В проекте ещё нет ключевиков">
33
+ <ol>
34
+ <li>Добавьте как можно больше запросов, заходы по которым из поиска приносят вам наибольший доход.</li>
35
+ <li>Сервис оценит конкуренцию, шанс выхода в топ и бюджет по каждому ключевику.</li>
36
+ </ol>
37
+ </SNote>
38
+ </template>
39
+
40
+ <script setup>
41
+ import { SNote } from 'startup-ui'
42
+ </script>
43
+ ```
44
+
45
+ В качестве иконок используются названия иконок font-awesome.
46
+
47
+ ## Интерфейс компонента
48
+
49
+ ### Свойства (Props)
50
+
51
+ | Название | Тип | По умолчанию | Описание |
52
+ |----------|-----|--------------|----------|
53
+ | icon | string \| string[] | undefined | Имя иконки FontAwesome для отображения рядом с заголовком |
54
+ | title | string | undefined | Текст заголовка, отображаемый сверху заметки |
55
+ | gray | boolean | false | Стилизует заметку с серым (нейтральным) фоном |
56
+ | attention | boolean | false | Стилизует заметку с желтым фоном (для предупреждений/внимания) |
57
+ | success | boolean | false | Стилизует заметку с зеленым фоном (для сообщений об успехе) |
58
+ | error | boolean | false | Стилизует заметку с красным фоном и границей (для ошибок) |
59
+
60
+ ### Слоты (Slots)
61
+
62
+ | Название | Описание |
63
+ |----------|----------|
64
+ | default | Основное содержимое заметки. Поддерживает текст или HTML (абзацы, списки и т.д.) |
@@ -0,0 +1,48 @@
1
+ # SProgressBar
2
+
3
+ Полоска прогресса.
4
+
5
+ <SToggle title="В чем отличие от аналогов?">
6
+ <p>В отличие от популярных библиотек компонентов для Vue3:</p>
7
+ <ol>
8
+ <li>Есть лейбл-пояснение, формирующий ожидание пользователей, упрощенный до одного атрибута.</li>
9
+ </ol>
10
+ </SToggle>
11
+
12
+ ## Базовый пример
13
+
14
+ ```vue
15
+ <template>
16
+ <SProgressBar :percentage="readyPercentage">Обновляем проект...</SProgressBar>
17
+ </template>
18
+ <script setup>
19
+ import { ref } from 'vue'
20
+ import { SProgressBar } from 'startup-ui'
21
+
22
+ const readyPercentage = ref(50)
23
+ </script>
24
+ ```
25
+
26
+ ## Интерфейс компонента
27
+
28
+ ### Свойства (Props)
29
+
30
+ | Название | Тип | По умолчанию | Описание |
31
+ |----------|-----|--------------|----------|
32
+ | percentage | number | undefined | Обязательный. Текущее значение прогресса от 0 до 100. |
33
+
34
+ ### Слоты (Slots)
35
+
36
+ | Название | Описание |
37
+ |----------|----------|
38
+ | default | Текстовая метка, отображаемая рядом с полосой прогресса (например, «Обновляем проект...»). |
39
+
40
+ <script setup lang="ts">
41
+ import SToggle from '../../../../packages/startup-ui/src/components/SToggle.vue';
42
+ </script>
43
+
44
+ <style lang="scss">
45
+ .s-progressbar {
46
+ color: var(--s-text);
47
+ }
48
+ </style>
@@ -0,0 +1,79 @@
1
+ # SStat
2
+
3
+ Строка статистики, выровненная по заголовкам.
4
+
5
+ <SToggle title="В чем отличие от аналогов?">В популярных библиотеках компонентов для Vue3 прямого аналога нет.</SToggle>
6
+
7
+ ## Базовый пример
8
+
9
+ ```vue
10
+ <template>
11
+ <SStat title="Кол-во платежей">112</SStat>
12
+ <SStat title="Сумма платежей">777 000 ₽</SStat>
13
+ </template>
14
+
15
+ <script setup>
16
+ import { SStat } from 'startup-ui'
17
+ </script>
18
+ ```
19
+
20
+ ## Кастомный заголовок
21
+
22
+ ```vue
23
+ <SStat>
24
+ <template #title>
25
+ Сумма платежей <STooltip>За выбранный период</STooltip>
26
+ </template>
27
+ 777 000 ₽
28
+ </SStat>
29
+ ```
30
+
31
+ ## Модификаторы
32
+
33
+ С помощью логических (boolean) свойств можно изменить внешний вид строки:
34
+
35
+ ```vue
36
+ <template>
37
+ <!-- large — крупный текст значения -->
38
+ <SStat title="Выручка" large>777 000 ₽</SStat>
39
+
40
+ <!-- nowrap запрещает перенос текста, обрезая его многоточием -->
41
+ <SStat title="Описание" nowrap>Очень длинное описание, которое может не поместиться...</SStat>
42
+
43
+ <!-- wide выравнивает заголовок и значение по краям (space-between) -->
44
+ <SStat title="Элементы" wide>10</SStat>
45
+ </template>
46
+
47
+ <script setup>
48
+ import { SStat } from 'startup-ui'
49
+ </script>
50
+ ```
51
+
52
+ ## Интерфейс компонента
53
+
54
+ ### Свойства (Props)
55
+
56
+ | Название | Тип | По умолчанию | Описание |
57
+ |----------|-----|--------------|----------|
58
+ | title | string | undefined | Подпись для статистики. |
59
+ | value | string \| number | undefined | Альтернатива базовому слоту: передает значение статистики через атрибут. |
60
+ | nowrap | boolean | `false` | Запрещает перенос текста и использует многоточие для длинных значений. |
61
+ | large | boolean | `false` | Увеличивает размер шрифта и высоту строки для значения. |
62
+ | wide | boolean | `false` | Использует `justify-content: space-between`, чтобы прижать значение к правому краю. |
63
+
64
+ ### Слоты (Slots)
65
+
66
+ | Название | Описание |
67
+ |----------|----------|
68
+ | default | Основное содержимое для значения статистики. Имеет приоритет над атрибутом `value`. |
69
+ | title | Для кастомного заголовка (например, с иконками или тултипами). Имеет приоритет над атрибутом `title`. |
70
+
71
+ <script setup lang="ts">
72
+ import SToggle from '../../../../packages/startup-ui/src/components/SToggle.vue';
73
+ </script>
74
+
75
+ <style lang="scss" scoped>
76
+ .s-stat {
77
+ margin: 0;
78
+ }
79
+ </style>