@topvisor/ui 0.0.35 → 0.0.36

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 (266) hide show
  1. package/{src/components/forms/inputDate/datepicker.css → .chunks/datepicker-1e725859.amd.js} +3 -2
  2. package/.chunks/datepicker-1e725859.amd.js.map +1 -0
  3. package/.chunks/datepicker-ad465c48.es.js +275 -0
  4. package/.chunks/datepicker-ad465c48.es.js.map +1 -0
  5. package/.chunks/forms-2891e074.amd.js +3 -0
  6. package/.chunks/forms-2891e074.amd.js.map +1 -0
  7. package/.chunks/forms-db4cb24d.es.js +946 -0
  8. package/.chunks/forms-db4cb24d.es.js.map +1 -0
  9. package/.chunks/popup-0f540839.es.js +700 -0
  10. package/.chunks/popup-0f540839.es.js.map +1 -0
  11. package/.chunks/popup-e49a9bab.amd.js +341 -0
  12. package/.chunks/popup-e49a9bab.amd.js.map +1 -0
  13. package/README.md +63 -30
  14. package/common/common.amd.js +2 -0
  15. package/common/common.amd.js.map +1 -0
  16. package/common/common.js +2 -0
  17. package/common/common.js.map +1 -0
  18. package/core/core.amd.js +2 -0
  19. package/core/core.amd.js.map +1 -0
  20. package/core/core.js +6 -0
  21. package/core/core.js.map +1 -0
  22. package/core.css +1 -0
  23. package/dark.css +1 -0
  24. package/forms/forms.amd.js +2 -0
  25. package/forms/forms.amd.js.map +1 -0
  26. package/forms/forms.js +15 -0
  27. package/forms/forms.js.map +1 -0
  28. package/forms/helpers.amd.js +2 -0
  29. package/forms/helpers.amd.js.map +1 -0
  30. package/forms/helpers.js +9 -0
  31. package/forms/helpers.js.map +1 -0
  32. package/forms.css +1 -0
  33. package/formsExt/formsExt.amd.js +3 -0
  34. package/formsExt/formsExt.amd.js.map +1 -0
  35. package/formsExt/formsExt.js +207 -0
  36. package/formsExt/formsExt.js.map +1 -0
  37. package/formsExt.css +1 -0
  38. package/light.css +1 -0
  39. package/package.json +1 -50
  40. package/popup/popup.amd.js +3 -0
  41. package/popup/popup.amd.js.map +1 -0
  42. package/popup/popup.js +144 -0
  43. package/popup/popup.js.map +1 -0
  44. package/popup/worker.amd.js +2 -0
  45. package/popup/worker.amd.js.map +1 -0
  46. package/popup/worker.js +154 -0
  47. package/popup/worker.js.map +1 -0
  48. package/popup.css +1 -0
  49. package/tabs/tabs.amd.js +3 -0
  50. package/tabs/tabs.amd.js.map +1 -0
  51. package/tabs/tabs.js +97 -0
  52. package/tabs/tabs.js.map +1 -0
  53. package/tabs.css +1 -0
  54. package/utils/date.amd.js +2 -0
  55. package/utils/date.amd.js.map +1 -0
  56. package/utils/date.js +6 -0
  57. package/utils/date.js.map +1 -0
  58. package/utils/device.amd.js +2 -0
  59. package/utils/device.amd.js.map +1 -0
  60. package/utils/device.js +6 -0
  61. package/utils/device.js.map +1 -0
  62. package/utils/dom.amd.js +2 -0
  63. package/utils/dom.amd.js.map +1 -0
  64. package/utils/dom.js +64 -0
  65. package/utils/dom.js.map +1 -0
  66. package/.storybook/TopTheme.js +0 -82
  67. package/.storybook/TopThemeManager.js +0 -44
  68. package/.storybook/main.ts +0 -43
  69. package/.storybook/manager.ts +0 -28
  70. package/.storybook/preview-head.html +0 -16
  71. package/.storybook/preview.ts +0 -48
  72. package/.storybook/vue/coreDecorator.ts +0 -19
  73. package/.storybook/vue/vModelDecorator.ts +0 -27
  74. package/.vscode/extensions.json +0 -11
  75. package/.vscode/keybindings.example.json +0 -121
  76. package/.vscode/settings.json +0 -46
  77. package/Dockerfile +0 -3
  78. package/NPM.md +0 -25
  79. package/PUBLISH.md +0 -18
  80. package/STORYBOOK.md +0 -27
  81. package/USE_IN_PROJECT.md +0 -29
  82. package/build/afterBuild.sh +0 -12
  83. package/build/cssModules.ts +0 -39
  84. package/build/plugin/amdFix.ts +0 -46
  85. package/build/rollup.config.ts +0 -18
  86. package/nbproject/project.properties +0 -11
  87. package/nbproject/project.xml +0 -9
  88. package/public/README.md +0 -63
  89. package/src/components/common/common.ts +0 -1
  90. package/src/components/common/icon/icon.ts +0 -4
  91. package/src/components/common/icon/icon.vue +0 -15
  92. package/src/components/component.ts +0 -133
  93. package/src/components/forms/button/button.stories.ts +0 -112
  94. package/src/components/forms/button/button.ts +0 -51
  95. package/src/components/forms/button/button.vue +0 -75
  96. package/src/components/forms/button/stories/README.md +0 -35
  97. package/src/components/forms/button/stories/overview.vue +0 -33
  98. package/src/components/forms/button/style/button.css +0 -124
  99. package/src/components/forms/button/style/style-outline.css +0 -42
  100. package/src/components/forms/button/style/style-soft.css +0 -31
  101. package/src/components/forms/button/style/style-transparent.css +0 -35
  102. package/src/components/forms/checkbox/checkbox.stories.ts +0 -33
  103. package/src/components/forms/checkbox/checkbox.ts +0 -23
  104. package/src/components/forms/checkbox/checkbox.vue +0 -135
  105. package/src/components/forms/checkbox/stories/overview.vue +0 -171
  106. package/src/components/forms/controlLabel/controlLabel.stories.ts +0 -38
  107. package/src/components/forms/controlLabel/controlLabel.ts +0 -4
  108. package/src/components/forms/controlLabel/controlLabel.vue +0 -48
  109. package/src/components/forms/forms.ts +0 -10
  110. package/src/components/forms/helpers.ts +0 -10
  111. package/src/components/forms/hint/hint.stories.ts +0 -46
  112. package/src/components/forms/hint/hint.ts +0 -8
  113. package/src/components/forms/hint/hint.vue +0 -32
  114. package/src/components/forms/input/input.stories.ts +0 -31
  115. package/src/components/forms/input/input.ts +0 -34
  116. package/src/components/forms/input/input.vue +0 -170
  117. package/src/components/forms/input/stories/overview.vue +0 -61
  118. package/src/components/forms/inputDate/datepicker.ts +0 -101
  119. package/src/components/forms/inputDate/inputDate.stories.ts +0 -41
  120. package/src/components/forms/inputDate/inputDate.ts +0 -4
  121. package/src/components/forms/inputDate/inputDate.vue +0 -127
  122. package/src/components/forms/inputDate/stories/overview.vue +0 -35
  123. package/src/components/forms/radio/radio.stories.ts +0 -34
  124. package/src/components/forms/radio/radio.ts +0 -15
  125. package/src/components/forms/radio/radio.vue +0 -107
  126. package/src/components/forms/radio/stories/overview.vue +0 -79
  127. package/src/components/forms/select/select.stories.ts +0 -34
  128. package/src/components/forms/select/select.ts +0 -36
  129. package/src/components/forms/select/select.vue +0 -253
  130. package/src/components/forms/select/stories/exampleOptions.ts +0 -71
  131. package/src/components/forms/select/stories/overview.vue +0 -60
  132. package/src/components/forms/switcher/stories/overview.vue +0 -139
  133. package/src/components/forms/switcher/switcher.stories.ts +0 -33
  134. package/src/components/forms/switcher/switcher.ts +0 -22
  135. package/src/components/forms/switcher/switcher.vue +0 -113
  136. package/src/components/forms/textarea/stories/overview.vue +0 -62
  137. package/src/components/forms/textarea/textarea.stories.ts +0 -33
  138. package/src/components/forms/textarea/textarea.ts +0 -38
  139. package/src/components/forms/textarea/textarea.vue +0 -119
  140. package/src/components/formsExt/editArea/editArea.stories.ts +0 -72
  141. package/src/components/formsExt/editArea/editArea.ts +0 -25
  142. package/src/components/formsExt/editArea/editArea.vue +0 -172
  143. package/src/components/formsExt/editArea/stories/README.md +0 -17
  144. package/src/components/formsExt/editArea/stories/overview.vue +0 -66
  145. package/src/components/formsExt/editInput/editInput.stories.ts +0 -36
  146. package/src/components/formsExt/editInput/editInput.ts +0 -20
  147. package/src/components/formsExt/editInput/editInput.vue +0 -57
  148. package/src/components/formsExt/editInput/stories/overview.vue +0 -54
  149. package/src/components/formsExt/formsExt.ts +0 -3
  150. package/src/components/formsExt/radioGroup/radioGroup.stories.ts +0 -51
  151. package/src/components/formsExt/radioGroup/radioGroup.ts +0 -28
  152. package/src/components/formsExt/radioGroup/radioGroup.vue +0 -143
  153. package/src/components/formsExt/radioGroup/stories/overview.vue +0 -78
  154. package/src/components/formsExt/radioGroup/styles/top-scrollBar.css +0 -52
  155. package/src/components/helper.js +0 -10
  156. package/src/components/helpersStories.ts +0 -151
  157. package/src/components/popup/lib/popup.globalEvents.js +0 -205
  158. package/src/components/popup/lib/popup.js +0 -702
  159. package/src/components/popup/lib/worker.globalEvents.js +0 -78
  160. package/src/components/popup/lib/worker.js +0 -232
  161. package/src/components/popup/popup/listItem.vue +0 -42
  162. package/src/components/popup/popup/opener.vue +0 -74
  163. package/src/components/popup/popup/popup.stories.ts +0 -68
  164. package/src/components/popup/popup/popup.ts +0 -93
  165. package/src/components/popup/popup/popup.vue +0 -95
  166. package/src/components/popup/popup/stories/README.md +0 -34
  167. package/src/components/popup/popup/stories/listItems.vue +0 -44
  168. package/src/components/popup/popup/stories/listSubItems.vue +0 -52
  169. package/src/components/popup/popup/stories/overview.vue +0 -208
  170. package/src/components/popup/popup/style/popup.css +0 -243
  171. package/src/components/popup/popup/style/popup.m.css +0 -71
  172. package/src/components/popup/popup/style/popup.pc.css +0 -28
  173. package/src/components/popup/popup.ts +0 -3
  174. package/src/components/popup/worker.ts +0 -1
  175. package/src/components/tabs/tabs/content.vue +0 -24
  176. package/src/components/tabs/tabs/stories/README.md +0 -10
  177. package/src/components/tabs/tabs/tab.vue +0 -52
  178. package/src/components/tabs/tabs/tabs.stories.ts +0 -171
  179. package/src/components/tabs/tabs/tabs.ts +0 -22
  180. package/src/components/tabs/tabs/tabs.vue +0 -64
  181. package/src/components/tabs/tabs.ts +0 -3
  182. package/src/core/base/Colors.stories.ts +0 -15
  183. package/src/core/base/Layout.stories.ts +0 -15
  184. package/src/core/base/Properties.stories.ts +0 -15
  185. package/src/core/base/base.mdx +0 -21
  186. package/src/core/core/core.ts +0 -144
  187. package/src/core/core/events.ts +0 -54
  188. package/src/core/core/options.ts +0 -15
  189. package/src/core/core/state.ts +0 -44
  190. package/src/core/directives/tooltip.ts +0 -55
  191. package/src/core/theme/Colors.stories.ts +0 -15
  192. package/src/core/theme/Properties.stories.ts +0 -15
  193. package/src/core/theme/theme.mdx +0 -15
  194. package/src/core/utils/date.ts +0 -164
  195. package/src/core/utils/device.ts +0 -48
  196. package/src/core/utils/dom.ts +0 -185
  197. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272/gallery.vue" +0 -72
  198. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272.mdx" +0 -31
  199. package/src/core//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272//320/235/320/260/320/261/320/276/321/200 /320/270/320/272/320/276/320/275/320/276/320/272.stories.ts" +0 -14
  200. package/src/docs/CSS/FAQ.mdx +0 -43
  201. package/src/docs/CSS//320/236/320/261/321/211/320/270/320/265 /320/274/320/276/320/264/320/270/321/204/320/270/320/272/320/260/321/202/320/276/321/200/321/213.mdx" +0 -156
  202. package/src/docs/CSS//320/237/320/265/321/200/320/265/320/274/320/265/320/275/320/275/321/213/320/265.mdx +0 -47
  203. package/src/docs/CSS//320/237/321/200/320/265/320/264/320/277/321/200/320/276/321/206/320/265/321/201/321/201/320/276/321/200/321/213.mdx +0 -15
  204. package/src/docs/CSS//320/240/320/265/320/272/320/276/320/274/320/265/320/275/320/264/320/260/321/206/320/270/320/270 /320/221/320/255/320/234.mdx" +0 -49
  205. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.md +0 -53
  206. package/src/docs/CSS//320/241/321/202/320/270/320/273/320/270.mdx +0 -4
  207. package/src/docs/CSS//320/247/321/202/320/276 /321/202/320/260/320/272/320/276/320/265 css /320/274/320/276/320/264/321/203/320/273/321/214.mdx" +0 -53
  208. package/src/docs/ROADMAP.md +0 -17
  209. package/src/docs/Roadmap.mdx +0 -4
  210. package/src/docs//320/222/320/262/320/265/320/264/320/265/320/275/320/270/320/265 /320/262 Storybook.mdx" +0 -323
  211. package/src/docs//320/232/320/276/320/274/320/277/320/276/320/275/320/265/320/275/321/202/321/213.mdx +0 -20
  212. package/src/docs//320/237/320/276/320/273/320/265/320/267/320/275/320/260/321/217 /320/270/320/275/321/204/320/276/321/200/320/274/320/260/321/206/320/270/321/217.mdx" +0 -8
  213. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260/IDE.mdx" +0 -42
  214. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/233/320/270/320/275/321/202/320/265/321/200.mdx" +0 -72
  215. package/src/docs//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260//320/241/321/202/320/260/320/275/320/264/320/260/321/200/321/202/321/213 /320/272/320/276/320/264/320/260.mdx" +0 -29
  216. package/src/globals.d.ts +0 -1
  217. package/src/resources/styles/core/colors.css +0 -204
  218. package/src/resources/styles/core/components.css +0 -70
  219. package/src/resources/styles/core/core.ts +0 -10
  220. package/src/resources/styles/core/forms/clear.css +0 -19
  221. package/src/resources/styles/core/forms/controls.css +0 -20
  222. package/src/resources/styles/core/forms/focusable.css +0 -26
  223. package/src/resources/styles/core/forms/forms.css +0 -100
  224. package/src/resources/styles/core/icon.css +0 -58
  225. package/src/resources/styles/core/layout.css +0 -40
  226. package/src/resources/styles/core/modifiers/as.css +0 -9
  227. package/src/resources/styles/core/modifiers/ellipsis.css +0 -18
  228. package/src/resources/styles/core/modifiers/modifiers.css +0 -81
  229. package/src/resources/styles/core/modifiers/only.css +0 -19
  230. package/src/resources/styles/core/select.css +0 -16
  231. package/src/resources/styles/jquery-ui.min.css +0 -6
  232. package/src/resources/styles/storybook.css +0 -11
  233. package/src/resources/styles/themes/dark/theme.css +0 -139
  234. package/src/resources/styles/themes/dark.ts +0 -1
  235. package/src/resources/styles/themes/light/theme.css +0 -139
  236. package/src/resources/styles/themes/light.ts +0 -1
  237. package/src/storybook/components/color.vue +0 -45
  238. package/src/storybook/components/colors.vue +0 -34
  239. package/src/storybook/components/icomoon.ts +0 -38
  240. package/src/storybook/components/properties.vue +0 -82
  241. package/src/storybook/resources/accessibility.png +0 -0
  242. package/src/storybook/resources/accessibility.svg +0 -5
  243. package/src/storybook/resources/addon-library.png +0 -0
  244. package/src/storybook/resources/assets.png +0 -0
  245. package/src/storybook/resources/context.png +0 -0
  246. package/src/storybook/resources/discord.svg +0 -15
  247. package/src/storybook/resources/docs.png +0 -0
  248. package/src/storybook/resources/figma-plugin.png +0 -0
  249. package/src/storybook/resources/github.svg +0 -3
  250. package/src/storybook/resources/share.png +0 -0
  251. package/src/storybook/resources/styling.png +0 -0
  252. package/src/storybook/resources/testing.png +0 -0
  253. package/src/storybook/resources/theming.png +0 -0
  254. package/src/storybook/resources/tutorials.svg +0 -12
  255. package/src/storybook/resources/youtube.svg +0 -4
  256. package/src//320/224/320/276/320/261/321/200/320/276 /320/277/320/276/320/266/320/260/320/273/320/276/320/262/320/260/321/202/321/214.mdx" +0 -3
  257. package/tsconfig.json +0 -62
  258. package/vite.config.ts +0 -91
  259. /package/{src/resources/icomoon → icomoon}/demo-files/demo.css +0 -0
  260. /package/{src/resources/icomoon → icomoon}/demo-files/demo.js +0 -0
  261. /package/{src/resources/icomoon → icomoon}/demo.html +0 -0
  262. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.svg +0 -0
  263. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.ttf +0 -0
  264. /package/{src/resources/icomoon → icomoon}/fonts/Topvisor-2.woff +0 -0
  265. /package/{src/resources/icomoon → icomoon}/selection.json +0 -0
  266. /package/{src/resources/icomoon → icomoon}/style.css +0 -0
@@ -1,133 +0,0 @@
1
- import DOM from '@/core/utils/dom';
2
-
3
- /**
4
- * Базовый компонент для js компонентов, не имеет отношения к Vue
5
- */
6
- class Component {
7
-
8
- static componentName = 'Top';
9
-
10
- componentName: string | undefined; // имя класса компонента
11
- className: string | undefined; // имя css класса компонента
12
- uid: string | undefined; // уникальный id компонента
13
- el: Element | undefined; // элемент, связанный с компонентом
14
- options = {}; // параметры компонента
15
-
16
- unmountEls: Element[] = [];
17
- unmountEvents: any[] = [];
18
-
19
- // переопредлять нельзя
20
- // если компонент инициирован, необходимо сразу его вернуть и выполнить reInit() вместо mount()
21
- // используется init вместо constructor, так как super constructor выполняется до Object.defineProperty() параметров класса
22
- init (componentName: string, el: Element, options: object): Component | void {
23
- if (!el) {
24
- throw componentName + ': el is undefined';
25
- }
26
-
27
- const component = Component.getComponent(el, componentName);
28
-
29
- if (component) {
30
- component.reInit(options);
31
-
32
- return component;
33
- }
34
-
35
- this.componentName = componentName;
36
- this.className = 'top' + componentName[0].toUpperCase() + componentName.substring(1);
37
- this.uid = this.componentName + (Math.random() + '').replace('.', '');
38
-
39
- this._setComponent(el);
40
- this.el = el;
41
- this.el.classList.add(this.className);
42
- this.options = Object.assign(this.options, options);
43
-
44
- this.mount();
45
- }
46
-
47
- // получить инициированный компонент
48
- static getComponent (el: Element, componentName: string): any {
49
- return DOM.storage(el, '#' + componentName);
50
- }
51
-
52
- // устанвоить компонент
53
- _setComponent (el: Element) {
54
- DOM.storage(el, '#' + this.componentName, this);
55
- }
56
-
57
- // функция подключения компонента
58
- mount (): void {
59
- throw 'Please, add method mount() to component: ' + this.componentName;
60
- }
61
-
62
- // функция отключения компонента
63
- unmount (): void {
64
- DOM.storage(this.el, '#' + this.componentName, null);
65
-
66
- this.unmountEls.forEach((el) => {
67
- el.remove();
68
- });
69
-
70
- this.unmountEls = [];
71
-
72
- this.unmountEvents.forEach((eventData) => {
73
- eventData.el.removeEventListener(eventData.type, eventData.listener, eventData.options);
74
- });
75
-
76
- this.unmountEvents = [];
77
- }
78
-
79
- // указание новые элементы, которые должны будут удалиться после unmount
80
- registerElForUnmount (el: Element): void {
81
- this.unmountEls.push(el);
82
- }
83
-
84
- // указание новые события, которые должны будут удалиться после unmount
85
- addEventListenerWithUnmount (
86
- el: Element | Document,
87
- type: keyof GlobalEventHandlersEventMap,
88
- listener: (this: Element, e: Event) => any,
89
- options?: any,
90
- ): void {
91
- el.addEventListener(type, listener, options);
92
-
93
- this.registerEventForUnmount(el, type, listener, options);
94
- }
95
-
96
- // указание новые события, которые должны будут удалиться после unmount
97
- registerEventForUnmount (
98
- el: Element | Document,
99
- type: keyof GlobalEventHandlersEventMap,
100
- listener: (this: Element, e: Event) => any,
101
- options?: any
102
- ): void {
103
- const eventData = {
104
- el: el,
105
- type: type,
106
- listener: listener,
107
- options: options,
108
- };
109
-
110
- this.unmountEvents.push(eventData);
111
- }
112
-
113
- // функция перенастройки уже подключенного компонента
114
- reInit (_options: object): void {
115
- throw 'Please, add method reInit() to component: ' + this.componentName;
116
- }
117
-
118
- static detach (nodes: Node[]): void
119
- static detach (nodes: Element): void
120
-
121
- // удалить элементы из DOM, но не из памяти
122
- static detach (nodes: any): void {
123
- if (nodes.forEach) {
124
- nodes.forEach((node: Node) => node.parentElement?.removeChild(node));
125
- } else {
126
- const el = nodes;
127
- el.parentElement?.removeChild(el);
128
- }
129
- }
130
-
131
- }
132
-
133
- export default Component;
@@ -1,112 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/vue3';
2
-
3
- import { genArgsTypes, genOverviewStory } from '@/components/helpersStories';
4
- import Component from './button.vue';
5
- import * as ComponentsConst from './button';
6
- import ReadMe from './stories/README.md?raw';
7
- import OverviewComponent from './stories/overview.vue';
8
-
9
- const argTypes = genArgsTypes(Component, ComponentsConst, true);
10
-
11
- const meta = {
12
- component: Component,
13
- tags: ['autodocs'],
14
- argTypes,
15
- parameters: {
16
- docs: {
17
- description: {
18
- component: ReadMe,
19
- },
20
- },
21
- design: {
22
- type: 'figma',
23
- url: 'https://www.figma.com/file/M7y5HgfqK3JK3Nyy7XnCJx/Princip-Design-components?type=design&node-id=2505%3A69049&mode=design&t=J7nDcOXsvdJ3b4wE-1',
24
- },
25
- },
26
- } satisfies Meta<typeof Component>;
27
-
28
- type Story = StoryObj<typeof meta>;
29
-
30
- export const Playground = {} satisfies Story;
31
-
32
- export const Overview: Story = genOverviewStory({
33
- args: {
34
- disabled: false,
35
- isSubmit: false,
36
- isActive: false,
37
- isProgress: false,
38
- href: '',
39
- icon: '😊',
40
- icon2: '😁',
41
- },
42
- }, OverviewComponent);
43
-
44
- export const Regular = {
45
- args: {
46
- default: 'Первостепенная цветная',
47
- title: 'Стандартня кнопка первостепенного значения, цвет настраивается через props color',
48
- color: 'blue',
49
- },
50
- } satisfies Story;
51
-
52
- export const RegularTheme = {
53
- args: {
54
- default: 'Второстепенная Theme',
55
- title: 'Стандартня кнопка второстепенного значения, цвет Theme',
56
- color: 'theme',
57
- },
58
- } satisfies Story;
59
-
60
- export const Soft = {
61
- args: {
62
- default: 'Мягкая цветная',
63
- title: 'Для выраженных второстепенных кнопок',
64
- color: 'blue',
65
- styling: 'soft',
66
- },
67
- } satisfies Story;
68
-
69
- export const SoftTheme = {
70
- args: {
71
- default: 'Мягкая Theme',
72
- title: 'Для выраженных второстепенных кнопок',
73
- color: 'theme',
74
- styling: 'soft',
75
- },
76
- } satisfies Story;
77
-
78
- export const Outline = {
79
- args: {
80
- default: 'Без фона цветная',
81
- title: 'Для кнопок дополнительного функционала',
82
- color: 'blue',
83
- styling: 'outline',
84
- },
85
- } satisfies Story;
86
-
87
- export const OutlineTheme = {
88
- args: {
89
- default: 'Без фона Theme',
90
- title: 'Для кнопок дополнительного функционала',
91
- color: 'theme',
92
- styling: 'outline',
93
- },
94
- } satisfies Story;
95
-
96
- export const Icons = {
97
- args: {
98
- default: 'Кнопка с иконками',
99
- title: 'В качестве иконок можно вставлять emoji или символы шрифта с иконками. Меняйте props icon и icon2',
100
- icon: '😊',
101
- icon2: '😁',
102
- },
103
- } satisfies Story;
104
-
105
- export const OnlyOneIcons = {
106
- args: {
107
- title: 'Кнопка с иконкой без текста',
108
- icon: '😊',
109
- },
110
- } satisfies Story;
111
-
112
- export default meta;
@@ -1,51 +0,0 @@
1
- import type { Size } from '@/components/forms/helpers';
2
- import { sizes } from '@/components/forms/helpers';
3
-
4
- /**
5
- * Определение параметров
6
- */
7
- export interface Props {
8
- color?: Color;
9
- styling?: Style; // bug: name = style init with object type
10
- size?: Size;
11
-
12
- name?: string;
13
- title?: string;
14
- icon?: string;
15
- icon2?: string;
16
-
17
- href?: string; // если установлена ссылка, isSubmit не может быть true
18
- // value?: string
19
-
20
- disabled?: boolean;
21
- isSubmit?: boolean;
22
- isActive?: boolean;
23
- isProgress?: boolean;
24
- }
25
-
26
- /**
27
- * Определение событий
28
- */
29
- export interface Emits {}
30
-
31
- export const colors = {
32
- theme: 'theme',
33
- blue: 'blue',
34
- green: 'green',
35
- orange: 'orange',
36
- red: 'red',
37
- pink: 'pink',
38
- } as const;
39
-
40
- export type Color = typeof colors[keyof typeof colors];
41
-
42
- export const styles = {
43
- Regular: '',
44
- Outline: 'outline',
45
- Soft: 'soft',
46
- Transparent: 'transparent',
47
- } as const;
48
-
49
- export type Style = typeof styles[keyof typeof styles];
50
-
51
- export { sizes };
@@ -1,75 +0,0 @@
1
- <script setup lang="ts">
2
- import { computed } from 'vue';
3
- import type { Props } from './button';
4
-
5
- const props = withDefaults(defineProps<Props>(), {
6
- color: 'blue',
7
- styling: '',
8
- size: 's',
9
- });
10
-
11
- const tagName = computed(() => props.href ? 'a' : 'button');
12
-
13
- const type = computed(() => props.isSubmit ? 'submit' : undefined);
14
- </script>
15
-
16
- <template>
17
- <component
18
- :is="tagName"
19
- :class="{
20
- ['top-active']: isActive,
21
- ['top-disabled']: disabled,
22
- ['top-forms-focusable']: !disabled,
23
- ['top-button']: true,
24
- ['top-button-progress']: isProgress,
25
- [`top-size_${size}`]: !!size,
26
- [`top-color_${color}`]: true,
27
- [`top-style_${styling}`]: !!styling,
28
- }"
29
- :name="name"
30
- :title="title"
31
- :href="href"
32
- :type="type"
33
- :data-top-icon="icon || undefined"
34
- :data-top-icon2="icon2 || undefined"
35
- :disabled="disabled || undefined"
36
- :inProgress="isProgress"
37
- >
38
- <!-- @slot Текст или HTML в кнопке -->
39
- <slot>
40
- {{ !icon ? 'Button' : '' }}
41
- </slot>
42
- </component>
43
- </template>
44
-
45
- <style module>
46
- @import "./style/button.css";
47
- @import "./style/style-outline.css";
48
- @import "./style/style-soft.css";
49
- @import "./style/style-transparent.css";
50
-
51
- .top-button {
52
- --top-button-color: var(--color-white);
53
- --top-button-background-color: transparent;
54
- --top-button-background-color-hover: var(--top-button-background-color);
55
- --top-button-background-color-active: var(--top-button-background-color-hover);
56
- --top-button-background-color-selected: var(--top-button-background-color-hover);
57
- --top-button-box-shadow: none;
58
- --top-button-box-shadow-hover: var(--top-shadow-darken-2);
59
- --top-button-box-shadow-active: var(--top-shadow-darken-3);
60
- --top-button-box-shadow-selected: var(--top-shadow-darken-3);
61
- --top-forms-border-width: 0px;
62
- --top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));
63
- --top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));
64
- }
65
-
66
- .top-button.top-size_l {
67
- --top-forms-padding: var(--top-forms-padding_l);
68
- --top-forms-base-height: var(--top-forms-base-height_l);
69
- }
70
-
71
- .top-button.top-size_xl {
72
- --top-forms-padding: var(--top-forms-padding_xl);
73
- --top-forms-base-height: var(--top-forms-base-height_xl);
74
- }
75
- </style>
@@ -1,35 +0,0 @@
1
- Основной компонент всех кнопок на сайте
2
-
3
- Расширяет стандартный button следующими возможностями:
4
-
5
- - выбор цвета кнопки
6
- - выбор стиля кнопки
7
- - вставка в кнопку компонента иконки
8
- - вставка в виде ссылки
9
- - вставка в виде submit
10
-
11
- Модификаторы состояния:
12
-
13
- - .g‑active;
14
- - .top-button-progress.
15
-
16
- Модификаторы цвета:
17
-
18
- - .top-color_theme
19
- - .top-color_blue
20
- - .g‑color_green
21
- - .g‑color_orange
22
- - .g‑color_red
23
- - .g‑color_pink
24
-
25
- Модификаторы стиля:
26
-
27
- - .g‑style_soft ‑ серая кнопка с цветным текстом
28
- - .g‑style_outline ‑ кнопка с обводкой
29
- - .g‑style_transparent - кнопка без фона
30
-
31
- Модификаторы размера:
32
-
33
- - .top-size_s
34
- - .top-size_l
35
- - .g‑size_xl
@@ -1,33 +0,0 @@
1
- <script setup lang="ts">
2
- import { sizes } from '@/components/forms/helpers';
3
- import type { Props } from '../button';
4
- import { colors, styles } from '../button';
5
- import Button from '../button.vue';
6
-
7
- defineProps<Props>();
8
- </script>
9
-
10
- <template>
11
- <div>
12
- <template v-for="styling in styles">
13
- <h2>Стиль: {{ styling || 'regular' }}</h2>
14
-
15
- <template v-for="size in sizes">
16
- <h3>Размер: {{ size || 's' }}</h3>
17
-
18
- <template v-for="color in colors">
19
- <Button
20
- :="$props"
21
- :color="color"
22
- :size="size"
23
- :styling="styling"
24
- >
25
- {{ color }}
26
- </Button>
27
- &nbsp;
28
- </template>
29
- <hr>
30
- </template>
31
- </template>
32
- </div>
33
- </template>
@@ -1,124 +0,0 @@
1
- .top-button {
2
- cursor: pointer;
3
- box-sizing: border-box;
4
- box-shadow: var(--top-button-box-shadow);
5
- border-radius: var(--top-forms-radius);
6
- border: var(--top-forms-border-width) solid var(--top-forms-border-color);
7
- background-color: var(--top-button-background-color);
8
- height: var(--top-forms-base-height);
9
- padding: 0 var(--top-forms-padding);
10
- color: var(--top-button-color);
11
- line-height: 1;
12
- white-space: nowrap;
13
- display: inline-flex;
14
- align-items: center;
15
- justify-content: center;
16
-
17
- transition: background-color 150ms, border-color 150ms, box-shadow 150ms;
18
- }
19
- .top-button:hover {
20
- box-shadow: var(--top-button-box-shadow-hover);
21
- background-color: var(--top-button-background-color-hover);
22
- }
23
- .top-button:active {
24
- box-shadow: var(--top-button-box-shadow-active);
25
- background-color: var(--top-button-background-color-active);
26
- }
27
- .top-button.top-active {
28
- box-shadow: var(--top-button-box-shadow-selected);
29
- background-color: var(--top-button-background-color-selected);
30
- }
31
-
32
- .top-button.top-button-progress {
33
- cursor: help;
34
- box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 64px;
35
- background-image:
36
- linear-gradient(-45deg,
37
- rgba(255, 255, 255, 0.2) 25%,
38
- transparent 25%,
39
- transparent 50%,
40
- rgba(255, 255, 255, 0.2) 50%,
41
- rgba(255, 255, 255, 0.2) 75%,
42
- transparent 75%,
43
- transparent);
44
- background-size: 32px 32px;
45
- animation: progress 1s linear infinite;
46
- }
47
-
48
- @keyframes progress {
49
- 0% {
50
- background-position-x: 0px;
51
- }
52
- 100% {
53
- background-position-x: 32px;
54
- }
55
- }
56
-
57
- a.top-button,
58
- button.top-button {
59
- min-width: 100px;
60
- text-decoration: none;
61
- }
62
-
63
- a.top-button,
64
- a.top-button:hover {
65
- min-width: var(--top-forms-base-height);
66
- text-decoration: none;
67
- }
68
-
69
- .top-button[data-top-icon]:not(:empty),
70
- .top-button[data-top-icon2]:not(:empty) {
71
- justify-content: flex-start;
72
- text-align: left;
73
- }
74
- .top-button[data-top-icon] {
75
- padding-left: 0;
76
- }
77
- .top-button[data-top-icon2] {
78
- padding-right: var(--top-select_arrow-width);
79
- }
80
- .top-button[data-top-icon2]:after {
81
- margin-left: auto;
82
- }
83
-
84
- .top-button:empty {
85
- min-width: var(--top-forms-base-height);
86
- }
87
- .top-button[data-top-icon]:empty,
88
- .top-button[data-top-icon2]:empty {
89
- padding: 0;
90
- }
91
-
92
- .top-button.top-color_blue {
93
- --top-button-background-color: var(--color-blue-500);
94
- }
95
- .top-button.top-color_green {
96
- --top-button-background-color: var(--color-green-500);
97
- }
98
- .top-button.top-color_orange {
99
- --top-button-background-color: var(--color-orange-500);
100
- }
101
- .top-button.top-color_red {
102
- --top-button-background-color: var(--color-red-500);
103
- }
104
- .top-button.top-color_pink {
105
- --top-button-background-color: var(--color-pink-500);
106
- }
107
-
108
- .top-button.top-color_theme {
109
- --top-button-box-shadow-hover: none;
110
- --top-button-box-shadow-active: none;
111
- --top-button-box-shadow-selected: none;
112
-
113
- --top-icon-color: var(--color-text-2);
114
- --top-icon2-color: var(--color-text-2);
115
-
116
- --top-button-color: var(--color-text-1);
117
- --top-button-background-color: transparent;
118
- --top-button-background-color-hover: var(--color-secondary-opacity);
119
- --top-button-background-color-active: var(--color-secondary-2-opacity);
120
- --top-button-background-color-selected: var(--color-secondary-2-opacity);
121
- }
122
- .top-button.top-color_theme.top-active {
123
- --top-icon-color: var(--color-text-2);
124
- }
@@ -1,42 +0,0 @@
1
- .top-button.top-style_outline {
2
- --top-button-box-shadow: none;
3
- --top-button-box-shadow-hover: none;
4
- --top-button-box-shadow-active: none;
5
- --top-button-box-shadow-selected: none;
6
-
7
- --top-forms-border-color: var(--top-style_outline-color);
8
-
9
- --top-style_outline-color: var(--color-steel-400);
10
-
11
- --top-button-color: var(--top-style_outline-color);
12
- --top-button-background-color: var(--content-background-color);
13
- --top-button-background-color-hover: var(--color-theme-100);
14
- --top-button-background-color-active: var(--color-theme-150);
15
- --top-button-background-color-selected: var(--color-theme-125);
16
-
17
- --top-forms-border-width: 1px;
18
- }
19
-
20
- .top-button.top-style_outline.top-color_theme {
21
- --top-button-color: var(--color-text);
22
- }
23
-
24
- .top-button.top-style_outline.top-color_blue {
25
- --top-style_outline-color: var(--color-blue-500);
26
- }
27
-
28
- .top-button.top-style_outline.top-color_green {
29
- --top-style_outline-color: var(--color-green-500);
30
- }
31
-
32
- .top-button.top-style_outline.top-color_orange {
33
- --top-style_outline-color: var(--color-orange-500);
34
- }
35
-
36
- .top-button.top-style_outline.top-color_red {
37
- --top-style_outline-color: var(--color-red-500);
38
- }
39
-
40
- .top-button.top-style_outline.top-color_pink {
41
- --top-style_outline-color: var(--color-pink-500);
42
- }
@@ -1,31 +0,0 @@
1
- .top-button.top-style_soft {
2
- --top-shadow-darken: none;
3
- --top-shadow-darken-2: none;
4
- --top-shadow-darken-3: none;
5
-
6
- --top-button-color: var(--color-text);
7
- --top-button-background-color: var(--color-secondary-opacity);
8
- --top-button-background-color-hover: var(--color-secondary-2-opacity);
9
- --top-button-background-color-active: var(--color-secondary-3-opacity);
10
- --top-button-background-color-selected: var(--color-secondary-3-opacity);
11
- }
12
-
13
- .top-button.top-style_soft.top-color_blue {
14
- --top-button-color: var(--color-blue-500);
15
- }
16
-
17
- .top-button.top-style_soft.top-color_orange {
18
- --top-button-color: var(--color-orange-500);
19
- }
20
-
21
- .top-button.top-style_soft.top-color_green {
22
- --top-button-color: var(--color-green-500);
23
- }
24
-
25
- .top-button.top-style_soft.top-color_red {
26
- --top-button-color: var(--color-red-500);
27
- }
28
-
29
- .top-button.top-style_soft.top-color_pink {
30
- --top-button-color: var(--color-pink-500);
31
- }
@@ -1,35 +0,0 @@
1
- .top-button.top-style_transparent {
2
- --top-shadow-darken: none;
3
- --top-shadow-darken-2: none;
4
- --top-shadow-darken-3: none;
5
-
6
- --top-button-color: var(--color-text);
7
- --top-button-background-color: transparent;
8
- --top-button-background-color-hover: transparent;
9
- --top-button-background-color-active: transparent;
10
- --top-button-background-color-selected: var(--color-steel-200);
11
- }
12
-
13
- .top-button.top-style_transparent:hover {
14
- opacity: 0.8;
15
- }
16
-
17
- .top-button.top-style_transparent.top-color_blue {
18
- --top-button-color: var(--color-blue-450);
19
- }
20
-
21
- .top-button.top-style_transparent.top-color_green {
22
- --top-button-color: var(--color-green-450);
23
- }
24
-
25
- .top-button.top-style_transparent.top-color_orange {
26
- --top-button-color: var(--color-orange-450);
27
- }
28
-
29
- .top-button.top-style_transparent.top-color_red {
30
- --top-button-color: var(--color-red-450);
31
- }
32
-
33
- .top-button.top-style_transparent.top-color_pink {
34
- --top-button-color: var(--color-pink-450);
35
- }