@topvisor/ui 0.0.11 → 0.0.12

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.
package/README.md CHANGED
@@ -1,86 +1,86 @@
1
- # UI kit Topvisor Vue
2
-
3
- ## Vue компоненты
4
-
5
- Компоненты разделены на библиотеки, чтобы их можно было грузить пачками прямо с CDN.
6
-
7
- Компоненты можно грузить по отдельности.
8
-
9
- Компоненты поставляются в двух форматах:
10
-
11
- - amd (requirejs)
12
- - es
13
-
14
- Расположение компонентов и библиотек:
15
- - /c/ - папка с компонентами
16
- - /l/ - папка с библиотеками
17
-
18
- Список всех компонентов см. на [npmjs](https://www.npmjs.com/package/topvisor-ui?activeTab=code).
19
-
20
- ## Другие ресурсы
21
-
22
- - /core.css - основная палитра цветов и стили компонентов
23
- - /light.css - светлая тема
24
- - /dark.css - темная тема
25
-
26
- ## Подключение стилей
27
-
28
- Подключение базовых стилей и переменных палитры.
29
- Подключение базовых стилей, переменных палитры и основных компонентов.
30
- Подключение базовых стилей и переменных палитры.
31
- Стили сложных компонентов рекомендуется грузить асинхронно.
32
-
33
- ```js
34
- import '@topvisor/ui/core.css';
35
- ```
36
-
37
- Подключение стилей темы на примере светлой темы.
38
-
39
- ```js
40
- import '@topvisor/ui/light.css';
41
- ```
42
-
43
- Для смены темы необходимо подгрузить файл стилей необходимой темы и сразу отключить стили предыдущей темы.
44
-
45
- Подключение стилей основных компонентов.
46
-
47
- ```js
48
- import '@topvisor/ui/l/style.css';
49
- ```
50
-
51
- Подключение набора иконок шрифта icomoon.
52
-
53
- ```js
54
- import '@topvisor/ui/icomoon/style.css';
55
- ```
56
-
57
- ## Подключение компонента
58
-
59
- Пример подключения компонента Button.
60
-
61
- ```javascript
62
- requirejs(['topvisor-ui/c/button/button.amd'], Button => {
63
- console.log(Button);
64
- });
65
- ```
66
-
67
- ## Подключение библиотек компонентов
68
-
69
- В большинстве случаев группы компонентов грузить отдельно нет смысла, поэтому она вынесены в библиотеки.
70
-
71
- Не грузите один и тот же компонент двумя способами, это приведет к тому, что он будет загружен дважды.
72
-
73
- Пример подключения библиотеки Forms со всеми ее компонентами:
74
-
75
- ```javascript
76
- requirejs(['topvisor-ui/l/forms/forms.amd'], ({Button}) => {
77
- console.log(Button);
78
- });
79
-
80
- requirejs(['topvisor-ui/l/forms/forms.amd'], Forms => {
81
- const { Button } = Forms;
82
-
83
- console.log(Forms);
84
- console.log(Button);
85
- });
1
+ # UI kit Topvisor Vue
2
+
3
+ ## Vue компоненты
4
+
5
+ Компоненты разделены на библиотеки, чтобы их можно было грузить пачками прямо с CDN.
6
+
7
+ Компоненты можно грузить по отдельности.
8
+
9
+ Компоненты поставляются в двух форматах:
10
+
11
+ - amd (requirejs)
12
+ - es
13
+
14
+ Расположение компонентов и библиотек:
15
+ - /c/ - папка с компонентами
16
+ - /l/ - папка с библиотеками
17
+
18
+ Список всех компонентов см. на [npmjs](https://www.npmjs.com/package/topvisor-ui?activeTab=code).
19
+
20
+ ## Другие ресурсы
21
+
22
+ - /core.css - основная палитра цветов и стили компонентов
23
+ - /light.css - светлая тема
24
+ - /dark.css - темная тема
25
+
26
+ ## Подключение стилей
27
+
28
+ Подключение базовых стилей и переменных палитры.
29
+ Подключение базовых стилей, переменных палитры и основных компонентов.
30
+ Подключение базовых стилей и переменных палитры.
31
+ Стили сложных компонентов рекомендуется грузить асинхронно.
32
+
33
+ ```js
34
+ import '@topvisor/ui/core.css';
35
+ ```
36
+
37
+ Подключение стилей темы на примере светлой темы.
38
+
39
+ ```js
40
+ import '@topvisor/ui/light.css';
41
+ ```
42
+
43
+ Для смены темы необходимо подгрузить файл стилей необходимой темы и сразу отключить стили предыдущей темы.
44
+
45
+ Подключение стилей основных компонентов.
46
+
47
+ ```js
48
+ import '@topvisor/ui/l/style.css';
49
+ ```
50
+
51
+ Подключение набора иконок шрифта icomoon.
52
+
53
+ ```js
54
+ import '@topvisor/ui/icomoon/style.css';
55
+ ```
56
+
57
+ ## Подключение компонента
58
+
59
+ Пример подключения компонента Button.
60
+
61
+ ```javascript
62
+ requirejs(['topvisor-ui/c/button/button.amd'], Button => {
63
+ console.log(Button);
64
+ });
65
+ ```
66
+
67
+ ## Подключение библиотек компонентов
68
+
69
+ В большинстве случаев группы компонентов грузить отдельно нет смысла, поэтому она вынесены в библиотеки.
70
+
71
+ Не грузите один и тот же компонент двумя способами, это приведет к тому, что он будет загружен дважды.
72
+
73
+ Пример подключения библиотеки Forms со всеми ее компонентами:
74
+
75
+ ```javascript
76
+ requirejs(['topvisor-ui/l/forms/forms.amd'], ({Button}) => {
77
+ console.log(Button);
78
+ });
79
+
80
+ requirejs(['topvisor-ui/l/forms/forms.amd'], Forms => {
81
+ const { Button } = Forms;
82
+
83
+ console.log(Forms);
84
+ console.log(Button);
85
+ });
86
86
  ```
@@ -72,7 +72,7 @@ define(["vue", "../_plugin-vue_export-helper-cb5c78ba"], function(vue, _pluginVu
72
72
  };
73
73
  }
74
74
  });
75
- const progress = "_progress_1jgaf_1";
75
+ const progress = "_progress_fevtt_1";
76
76
  const style0 = {
77
77
  "top-button": "top-button",
78
78
  "top-active": "top-active",
@@ -1 +1 @@
1
- {"version":3,"file":"button.amd.js","sources":["../../../src/components/forms/button/button.ts","../../../src/components/forms/button/button.vue"],"sourcesContent":["import type { VNode } from 'vue';\r\n\r\n/**\r\n * Определение параметров\r\n */\r\nexport interface Props {\r\n\tcolor?: COLOR\r\n\tstyling?: STYLING // bug: name = style init with object type\r\n\tsize?: SIZE\r\n\r\n\tname?: string\r\n\ttitle?: string\r\n\ticon?: string\r\n\ticon2?: string\r\n\r\n\thref?: string // если установлена ссылка, isSubmit не может быть true\r\n\t// value?: string\r\n\r\n\tdisabled?: boolean\r\n\tisSubmit?: boolean\r\n\tisActive?: boolean\r\n\tisProgress?: boolean\r\n}\r\n\r\n/**\r\n * Определение слотов\r\n */\r\nexport interface Slots {\r\n\t/**\r\n\t * Cлот с проивзольным содержимым\r\n\t */\r\n\tdefault(): VNode[];\r\n}\r\n\r\n/**\r\n * Определение событий\r\n */\r\nexport interface Emits { }\r\n\r\n/**\r\n * Цвета\r\n */\r\nexport enum COLOR {\r\n\tTheme = 'theme',\r\n\tBlue = 'blue',\r\n\tGreen = 'green',\r\n\tOrange = 'orange',\r\n\tRed = 'red',\r\n\tPink = 'pink',\r\n}\r\n\r\n/**\r\n * Стили\r\n */\r\nexport enum STYLING {\r\n\tRegular = '',\r\n\tOutline = 'outline',\r\n\tSoft = 'soft',\r\n\tTransparent = 'transparent',\r\n}\r\n\r\n/**\r\n * Размеры\r\n */\r\nexport enum SIZE {\r\n\tS = '',\r\n\tL = 'l',\r\n\tXL = 'xl',\r\n}","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './button';\r\nimport { COLOR, STYLING, SIZE } from './button';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: COLOR.Blue,\r\n\tstyling: STYLING.Regular,\r\n\tsize: SIZE.S,\r\n});\r\n\r\nconst tagName = computed(() => props.href ? 'a' : 'button');\r\n\r\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\t:class=\"{\r\n\t\t\t['top-active']: props.isActive,\r\n\t\t\t['top-disabled']: props.disabled,\r\n\t\t\t[$style['top-button']]: true,\r\n\t\t\t[$style['top-button-progress']]: props.isProgress,\r\n\t\t\t[$style[`top-size_${props.size}`]]: !!props.size,\r\n\t\t\t[$style[`top-color_${props.color}`]]: true,\r\n\t\t\t[$style[`top-style_${props.styling}`]]: !!props.styling,\r\n\t\t}\"\r\n\t\t:name=\"name\"\r\n\t\t:title=\"title\"\r\n\t\t:href=\"href\"\r\n\t\t:type=\"type\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:data-top-icon2=\"icon2 || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t:inProgress=\"isProgress\"\r\n\t>\r\n\t\t<slot>{{ !icon ? \"Button\" : \"\" }}</slot>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n@import \"./style/button.css\";\r\n@import \"./style/style-outline.css\";\r\n@import \"./style/style-soft.css\";\r\n@import \"./style/style-transparent.css\";\r\n\r\n.top-button {\r\n\t--top-button-color: var(--color-white);\r\n\t--top-button-background-color: transparent;\r\n\t--top-button-background-color-hover: var(--top-button-background-color);\r\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\r\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\r\n\t--top-button-box-shadow: none;\r\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n\t--top-forms-border-width: 0px;\r\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\r\n}\r\n\r\n.top-button.top-size_l {\r\n\t--top-forms-padding: var(--top-forms-padding_l);\r\n\t--top-forms-base-height: var(--top-forms-base-height_l);\r\n}\r\n\r\n.top-button.top-size_xl {\r\n\t--top-forms-padding: var(--top-forms-padding_xl);\r\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\r\n}\r\n\r\n.top-button-progress {}\r\n</style>"],"names":["COLOR","STYLING","SIZE","computed"],"mappings":";;AA0CY,MAAA,0BAAAA,WAAL;AACNA,WAAA,OAAQ,IAAA;AACRA,WAAA,MAAO,IAAA;AACPA,WAAA,OAAQ,IAAA;AACRA,WAAA,QAAS,IAAA;AACTA,WAAA,KAAM,IAAA;AACNA,WAAA,MAAO,IAAA;AANIA,WAAAA;AAAAA,EAAA,GAAA,SAAA,CAAA,CAAA;AAYA,MAAA,4BAAAC,aAAL;AACNA,aAAA,SAAU,IAAA;AACVA,aAAA,SAAU,IAAA;AACVA,aAAA,MAAO,IAAA;AACPA,aAAA,aAAc,IAAA;AAJHA,WAAAA;AAAAA,EAAA,GAAA,WAAA,CAAA,CAAA;AAUA,MAAA,yBAAAC,UAAL;AACNA,UAAA,GAAI,IAAA;AACJA,UAAA,GAAI,IAAA;AACJA,UAAA,IAAK,IAAA;AAHMA,WAAAA;AAAAA,EAAA,GAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;ACrDZ,YAAM,UAAUC,IAAAA,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ;AAE1D,YAAM,OAAOA,IAAAA,SAAS,MAAM,MAAM,WAAW,WAAW,MAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"button.amd.js","sources":["../../../src/components/forms/button/button.ts","../../../src/components/forms/button/button.vue"],"sourcesContent":["import type { VNode } from 'vue';\n\n/**\n * Определение параметров\n */\nexport interface Props {\n\tcolor?: COLOR\n\tstyling?: STYLING // bug: name = style init with object type\n\tsize?: SIZE\n\n\tname?: string\n\ttitle?: string\n\ticon?: string\n\ticon2?: string\n\n\thref?: string // если установлена ссылка, isSubmit не может быть true\n\t// value?: string\n\n\tdisabled?: boolean\n\tisSubmit?: boolean\n\tisActive?: boolean\n\tisProgress?: boolean\n}\n\n/**\n * Определение слотов\n */\nexport interface Slots {\n\t/**\n\t * Cлот с проивзольным содержимым\n\t */\n\tdefault(): VNode[];\n}\n\n/**\n * Определение событий\n */\nexport interface Emits { }\n\n/**\n * Цвета\n */\nexport enum COLOR {\n\tTheme = 'theme',\n\tBlue = 'blue',\n\tGreen = 'green',\n\tOrange = 'orange',\n\tRed = 'red',\n\tPink = 'pink',\n}\n\n/**\n * Стили\n */\nexport enum STYLING {\n\tRegular = '',\n\tOutline = 'outline',\n\tSoft = 'soft',\n\tTransparent = 'transparent',\n}\n\n/**\n * Размеры\n */\nexport enum SIZE {\n\tS = '',\n\tL = 'l',\n\tXL = 'xl',\n}","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './button';\nimport { COLOR, STYLING, SIZE } from './button';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: COLOR.Blue,\n\tstyling: STYLING.Regular,\n\tsize: SIZE.S,\n});\n\nconst tagName = computed(() => props.href ? 'a' : 'button');\n\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\t:class=\"{\n\t\t\t['top-active']: props.isActive,\n\t\t\t['top-disabled']: props.disabled,\n\t\t\t[$style['top-button']]: true,\n\t\t\t[$style['top-button-progress']]: props.isProgress,\n\t\t\t[$style[`top-size_${props.size}`]]: !!props.size,\n\t\t\t[$style[`top-color_${props.color}`]]: true,\n\t\t\t[$style[`top-style_${props.styling}`]]: !!props.styling,\n\t\t}\"\n\t\t:name=\"name\"\n\t\t:title=\"title\"\n\t\t:href=\"href\"\n\t\t:type=\"type\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:data-top-icon2=\"icon2 || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t:inProgress=\"isProgress\"\n\t>\n\t\t<slot>{{ !icon ? \"Button\" : \"\" }}</slot>\n\t</component>\n</template>\n\n<style module>\n@import \"./style/button.css\";\n@import \"./style/style-outline.css\";\n@import \"./style/style-soft.css\";\n@import \"./style/style-transparent.css\";\n\n.top-button {\n\t--top-button-color: var(--color-white);\n\t--top-button-background-color: transparent;\n\t--top-button-background-color-hover: var(--top-button-background-color);\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\n\t--top-button-box-shadow: none;\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\n\t--top-forms-border-width: 0px;\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\n}\n\n.top-button.top-size_l {\n\t--top-forms-padding: var(--top-forms-padding_l);\n\t--top-forms-base-height: var(--top-forms-base-height_l);\n}\n\n.top-button.top-size_xl {\n\t--top-forms-padding: var(--top-forms-padding_xl);\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\n}\n\n.top-button-progress {}\n</style>"],"names":["COLOR","STYLING","SIZE","computed"],"mappings":";;AA0CY,MAAA,0BAAAA,WAAL;AACNA,WAAA,OAAQ,IAAA;AACRA,WAAA,MAAO,IAAA;AACPA,WAAA,OAAQ,IAAA;AACRA,WAAA,QAAS,IAAA;AACTA,WAAA,KAAM,IAAA;AACNA,WAAA,MAAO,IAAA;AANIA,WAAAA;AAAAA,EAAA,GAAA,SAAA,CAAA,CAAA;AAYA,MAAA,4BAAAC,aAAL;AACNA,aAAA,SAAU,IAAA;AACVA,aAAA,SAAU,IAAA;AACVA,aAAA,MAAO,IAAA;AACPA,aAAA,aAAc,IAAA;AAJHA,WAAAA;AAAAA,EAAA,GAAA,WAAA,CAAA,CAAA;AAUA,MAAA,yBAAAC,UAAL;AACNA,UAAA,GAAI,IAAA;AACJA,UAAA,GAAI,IAAA;AACJA,UAAA,IAAK,IAAA;AAHMA,WAAAA;AAAAA,EAAA,GAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;ACrDZ,YAAM,UAAUC,IAAAA,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ;AAE1D,YAAM,OAAOA,IAAAA,SAAS,MAAM,MAAM,WAAW,WAAW,MAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -72,7 +72,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
72
72
  };
73
73
  }
74
74
  });
75
- const progress = "_progress_1jgaf_1";
75
+ const progress = "_progress_fevtt_1";
76
76
  const style0 = {
77
77
  "top-button": "top-button",
78
78
  "top-active": "top-active",
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../src/components/forms/button/button.ts","../../../src/components/forms/button/button.vue"],"sourcesContent":["import type { VNode } from 'vue';\r\n\r\n/**\r\n * Определение параметров\r\n */\r\nexport interface Props {\r\n\tcolor?: COLOR\r\n\tstyling?: STYLING // bug: name = style init with object type\r\n\tsize?: SIZE\r\n\r\n\tname?: string\r\n\ttitle?: string\r\n\ticon?: string\r\n\ticon2?: string\r\n\r\n\thref?: string // если установлена ссылка, isSubmit не может быть true\r\n\t// value?: string\r\n\r\n\tdisabled?: boolean\r\n\tisSubmit?: boolean\r\n\tisActive?: boolean\r\n\tisProgress?: boolean\r\n}\r\n\r\n/**\r\n * Определение слотов\r\n */\r\nexport interface Slots {\r\n\t/**\r\n\t * Cлот с проивзольным содержимым\r\n\t */\r\n\tdefault(): VNode[];\r\n}\r\n\r\n/**\r\n * Определение событий\r\n */\r\nexport interface Emits { }\r\n\r\n/**\r\n * Цвета\r\n */\r\nexport enum COLOR {\r\n\tTheme = 'theme',\r\n\tBlue = 'blue',\r\n\tGreen = 'green',\r\n\tOrange = 'orange',\r\n\tRed = 'red',\r\n\tPink = 'pink',\r\n}\r\n\r\n/**\r\n * Стили\r\n */\r\nexport enum STYLING {\r\n\tRegular = '',\r\n\tOutline = 'outline',\r\n\tSoft = 'soft',\r\n\tTransparent = 'transparent',\r\n}\r\n\r\n/**\r\n * Размеры\r\n */\r\nexport enum SIZE {\r\n\tS = '',\r\n\tL = 'l',\r\n\tXL = 'xl',\r\n}","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props } from './button';\r\nimport { COLOR, STYLING, SIZE } from './button';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tcolor: COLOR.Blue,\r\n\tstyling: STYLING.Regular,\r\n\tsize: SIZE.S,\r\n});\r\n\r\nconst tagName = computed(() => props.href ? 'a' : 'button');\r\n\r\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\r\n</script>\r\n\r\n<template>\r\n\t<component\r\n\t\t:is=\"tagName\"\r\n\t\t:class=\"{\r\n\t\t\t['top-active']: props.isActive,\r\n\t\t\t['top-disabled']: props.disabled,\r\n\t\t\t[$style['top-button']]: true,\r\n\t\t\t[$style['top-button-progress']]: props.isProgress,\r\n\t\t\t[$style[`top-size_${props.size}`]]: !!props.size,\r\n\t\t\t[$style[`top-color_${props.color}`]]: true,\r\n\t\t\t[$style[`top-style_${props.styling}`]]: !!props.styling,\r\n\t\t}\"\r\n\t\t:name=\"name\"\r\n\t\t:title=\"title\"\r\n\t\t:href=\"href\"\r\n\t\t:type=\"type\"\r\n\t\t:data-top-icon=\"icon || undefined\"\r\n\t\t:data-top-icon2=\"icon2 || undefined\"\r\n\t\t:disabled=\"disabled || undefined\"\r\n\t\t:inProgress=\"isProgress\"\r\n\t>\r\n\t\t<slot>{{ !icon ? \"Button\" : \"\" }}</slot>\r\n\t</component>\r\n</template>\r\n\r\n<style module>\r\n@import \"./style/button.css\";\r\n@import \"./style/style-outline.css\";\r\n@import \"./style/style-soft.css\";\r\n@import \"./style/style-transparent.css\";\r\n\r\n.top-button {\r\n\t--top-button-color: var(--color-white);\r\n\t--top-button-background-color: transparent;\r\n\t--top-button-background-color-hover: var(--top-button-background-color);\r\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\r\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\r\n\t--top-button-box-shadow: none;\r\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n\t--top-forms-border-width: 0px;\r\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\r\n}\r\n\r\n.top-button.top-size_l {\r\n\t--top-forms-padding: var(--top-forms-padding_l);\r\n\t--top-forms-base-height: var(--top-forms-base-height_l);\r\n}\r\n\r\n.top-button.top-size_xl {\r\n\t--top-forms-padding: var(--top-forms-padding_xl);\r\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\r\n}\r\n\r\n.top-button-progress {}\r\n</style>"],"names":["COLOR","STYLING","SIZE"],"mappings":";;AA0CY,IAAA,0BAAAA,WAAL;AACNA,SAAA,OAAQ,IAAA;AACRA,SAAA,MAAO,IAAA;AACPA,SAAA,OAAQ,IAAA;AACRA,SAAA,QAAS,IAAA;AACTA,SAAA,KAAM,IAAA;AACNA,SAAA,MAAO,IAAA;AANIA,SAAAA;AAAA,GAAA,SAAA,CAAA,CAAA;AAYA,IAAA,4BAAAC,aAAL;AACNA,WAAA,SAAU,IAAA;AACVA,WAAA,SAAU,IAAA;AACVA,WAAA,MAAO,IAAA;AACPA,WAAA,aAAc,IAAA;AAJHA,SAAAA;AAAA,GAAA,WAAA,CAAA,CAAA;AAUA,IAAA,yBAAAC,UAAL;AACNA,QAAA,GAAI,IAAA;AACJA,QAAA,GAAI,IAAA;AACJA,QAAA,IAAK,IAAA;AAHMA,SAAAA;AAAA,GAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;ACrDZ,UAAM,UAAU,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ;AAE1D,UAAM,OAAO,SAAS,MAAM,MAAM,WAAW,WAAW,MAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"button.js","sources":["../../../src/components/forms/button/button.ts","../../../src/components/forms/button/button.vue"],"sourcesContent":["import type { VNode } from 'vue';\n\n/**\n * Определение параметров\n */\nexport interface Props {\n\tcolor?: COLOR\n\tstyling?: STYLING // bug: name = style init with object type\n\tsize?: SIZE\n\n\tname?: string\n\ttitle?: string\n\ticon?: string\n\ticon2?: string\n\n\thref?: string // если установлена ссылка, isSubmit не может быть true\n\t// value?: string\n\n\tdisabled?: boolean\n\tisSubmit?: boolean\n\tisActive?: boolean\n\tisProgress?: boolean\n}\n\n/**\n * Определение слотов\n */\nexport interface Slots {\n\t/**\n\t * Cлот с проивзольным содержимым\n\t */\n\tdefault(): VNode[];\n}\n\n/**\n * Определение событий\n */\nexport interface Emits { }\n\n/**\n * Цвета\n */\nexport enum COLOR {\n\tTheme = 'theme',\n\tBlue = 'blue',\n\tGreen = 'green',\n\tOrange = 'orange',\n\tRed = 'red',\n\tPink = 'pink',\n}\n\n/**\n * Стили\n */\nexport enum STYLING {\n\tRegular = '',\n\tOutline = 'outline',\n\tSoft = 'soft',\n\tTransparent = 'transparent',\n}\n\n/**\n * Размеры\n */\nexport enum SIZE {\n\tS = '',\n\tL = 'l',\n\tXL = 'xl',\n}","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Props } from './button';\nimport { COLOR, STYLING, SIZE } from './button';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcolor: COLOR.Blue,\n\tstyling: STYLING.Regular,\n\tsize: SIZE.S,\n});\n\nconst tagName = computed(() => props.href ? 'a' : 'button');\n\nconst type = computed(() => props.isSubmit ? 'submit' : undefined);\n</script>\n\n<template>\n\t<component\n\t\t:is=\"tagName\"\n\t\t:class=\"{\n\t\t\t['top-active']: props.isActive,\n\t\t\t['top-disabled']: props.disabled,\n\t\t\t[$style['top-button']]: true,\n\t\t\t[$style['top-button-progress']]: props.isProgress,\n\t\t\t[$style[`top-size_${props.size}`]]: !!props.size,\n\t\t\t[$style[`top-color_${props.color}`]]: true,\n\t\t\t[$style[`top-style_${props.styling}`]]: !!props.styling,\n\t\t}\"\n\t\t:name=\"name\"\n\t\t:title=\"title\"\n\t\t:href=\"href\"\n\t\t:type=\"type\"\n\t\t:data-top-icon=\"icon || undefined\"\n\t\t:data-top-icon2=\"icon2 || undefined\"\n\t\t:disabled=\"disabled || undefined\"\n\t\t:inProgress=\"isProgress\"\n\t>\n\t\t<slot>{{ !icon ? \"Button\" : \"\" }}</slot>\n\t</component>\n</template>\n\n<style module>\n@import \"./style/button.css\";\n@import \"./style/style-outline.css\";\n@import \"./style/style-soft.css\";\n@import \"./style/style-transparent.css\";\n\n.top-button {\n\t--top-button-color: var(--color-white);\n\t--top-button-background-color: transparent;\n\t--top-button-background-color-hover: var(--top-button-background-color);\n\t--top-button-background-color-active: var(--top-button-background-color-hover);\n\t--top-button-background-color-selected: var(--top-button-background-color-hover);\n\t--top-button-box-shadow: none;\n\t--top-button-box-shadow-hover: var(--top-shadow-darken-2);\n\t--top-button-box-shadow-active: var(--top-shadow-darken-3);\n\t--top-button-box-shadow-selected: var(--top-shadow-darken-3);\n\t--top-forms-border-width: 0px;\n\t--top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\n\t--top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\n}\n\n.top-button.top-size_l {\n\t--top-forms-padding: var(--top-forms-padding_l);\n\t--top-forms-base-height: var(--top-forms-base-height_l);\n}\n\n.top-button.top-size_xl {\n\t--top-forms-padding: var(--top-forms-padding_xl);\n\t--top-forms-base-height: var(--top-forms-base-height_xl);\n}\n\n.top-button-progress {}\n</style>"],"names":["COLOR","STYLING","SIZE"],"mappings":";;AA0CY,IAAA,0BAAAA,WAAL;AACNA,SAAA,OAAQ,IAAA;AACRA,SAAA,MAAO,IAAA;AACPA,SAAA,OAAQ,IAAA;AACRA,SAAA,QAAS,IAAA;AACTA,SAAA,KAAM,IAAA;AACNA,SAAA,MAAO,IAAA;AANIA,SAAAA;AAAA,GAAA,SAAA,CAAA,CAAA;AAYA,IAAA,4BAAAC,aAAL;AACNA,WAAA,SAAU,IAAA;AACVA,WAAA,SAAU,IAAA;AACVA,WAAA,MAAO,IAAA;AACPA,WAAA,aAAc,IAAA;AAJHA,SAAAA;AAAA,GAAA,WAAA,CAAA,CAAA;AAUA,IAAA,yBAAAC,UAAL;AACNA,QAAA,GAAI,IAAA;AACJA,QAAA,GAAI,IAAA;AACJA,QAAA,IAAK,IAAA;AAHMA,SAAAA;AAAA,GAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;ACrDZ,UAAM,UAAU,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ;AAE1D,UAAM,OAAO,SAAS,MAAM,MAAM,WAAW,WAAW,MAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,7 +9,7 @@ define(["vue", "../_plugin-vue_export-helper-cb5c78ba"], function(vue, _pluginVu
9
9
  },
10
10
  setup(__props) {
11
11
  vue.useCssVars((_ctx) => ({
12
- "619a0e24": _ctx.color
12
+ "6eb2e862": _ctx.color
13
13
  }));
14
14
  return (_ctx, _cache) => {
15
15
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -21,7 +21,7 @@ define(["vue", "../_plugin-vue_export-helper-cb5c78ba"], function(vue, _pluginVu
21
21
  };
22
22
  }
23
23
  });
24
- const example$1 = "_example_1xq2e_3";
24
+ const example$1 = "_example_1exbj_2";
25
25
  const style0 = {
26
26
  example: example$1,
27
27
  "top-active": "top-active"
@@ -9,7 +9,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  },
10
10
  setup(__props) {
11
11
  useCssVars((_ctx) => ({
12
- "619a0e24": _ctx.color
12
+ "6eb2e862": _ctx.color
13
13
  }));
14
14
  return (_ctx, _cache) => {
15
15
  return openBlock(), createElementBlock("div", {
@@ -21,7 +21,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21
21
  };
22
22
  }
23
23
  });
24
- const example$1 = "_example_1xq2e_3";
24
+ const example$1 = "_example_1exbj_2";
25
25
  const style0 = {
26
26
  example: example$1,
27
27
  "top-active": "top-active"
@@ -0,0 +1,49 @@
1
+ define(["vue", "../_plugin-vue_export-helper-cb5c78ba"], function(vue, _pluginVue_exportHelper) {
2
+ "use strict"; vue = vue ?? Vue;
3
+ const _hoisted_1 = ["name", "value", "checked", "disabled"];
4
+ const _hoisted_2 = {
5
+ key: 0,
6
+ class: "top-radio_caption"
7
+ };
8
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
9
+ __name: "radio",
10
+ props: {
11
+ name: {},
12
+ value: {},
13
+ title: {},
14
+ checked: { type: Boolean },
15
+ disabled: { type: Boolean }
16
+ },
17
+ setup(__props) {
18
+ return (_ctx, _cache) => {
19
+ return vue.openBlock(), vue.createElementBlock("label", {
20
+ class: vue.normalizeClass(["top-el top-radio", {
21
+ ["top-radio_" + _ctx.name]: _ctx.name !== "",
22
+ ["top-active"]: _ctx.checked,
23
+ ["top-disabled"]: _ctx.disabled
24
+ }])
25
+ }, [
26
+ vue.createElementVNode("input", {
27
+ type: "radio",
28
+ class: "top-el top-radio_input",
29
+ name: _ctx.name,
30
+ value: _ctx.value,
31
+ checked: _ctx.checked,
32
+ disabled: _ctx.disabled
33
+ }, null, 8, _hoisted_1),
34
+ _ctx.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, vue.toDisplayString(_ctx.title), 1)) : vue.createCommentVNode("", true)
35
+ ], 2);
36
+ };
37
+ }
38
+ });
39
+ const style0 = {
40
+ "top-radio": "top-radio",
41
+ "top-el": "top-el"
42
+ };
43
+ const cssModules = {
44
+ "$style": style0
45
+ };
46
+ const radio = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["__cssModules", cssModules]]);
47
+ return radio;
48
+ });
49
+ //# sourceMappingURL=radio.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,50 @@
1
+ import { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from "vue";
2
+ import { _ as _export_sfc } from "../_plugin-vue_export-helper-cc2b3d55.js";
3
+ const _hoisted_1 = ["name", "value", "checked", "disabled"];
4
+ const _hoisted_2 = {
5
+ key: 0,
6
+ class: "top-radio_caption"
7
+ };
8
+ const _sfc_main = /* @__PURE__ */ defineComponent({
9
+ __name: "radio",
10
+ props: {
11
+ name: {},
12
+ value: {},
13
+ title: {},
14
+ checked: { type: Boolean },
15
+ disabled: { type: Boolean }
16
+ },
17
+ setup(__props) {
18
+ return (_ctx, _cache) => {
19
+ return openBlock(), createElementBlock("label", {
20
+ class: normalizeClass(["top-el top-radio", {
21
+ ["top-radio_" + _ctx.name]: _ctx.name !== "",
22
+ ["top-active"]: _ctx.checked,
23
+ ["top-disabled"]: _ctx.disabled
24
+ }])
25
+ }, [
26
+ createElementVNode("input", {
27
+ type: "radio",
28
+ class: "top-el top-radio_input",
29
+ name: _ctx.name,
30
+ value: _ctx.value,
31
+ checked: _ctx.checked,
32
+ disabled: _ctx.disabled
33
+ }, null, 8, _hoisted_1),
34
+ _ctx.title ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true)
35
+ ], 2);
36
+ };
37
+ }
38
+ });
39
+ const style0 = {
40
+ "top-radio": "top-radio",
41
+ "top-el": "top-el"
42
+ };
43
+ const cssModules = {
44
+ "$style": style0
45
+ };
46
+ const radio = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
47
+ export {
48
+ radio as default
49
+ };
50
+ //# sourceMappingURL=radio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/c/style.css CHANGED
@@ -1,12 +1,12 @@
1
-
2
- /* стили этого компонента грузятся всегда: resources/styles/core/icon.css */
3
1
 
4
- ._example_1xq2e_3 {
5
- background: var(--619a0e24);
2
+ /* стили этого компонента грузятся всегда: resources/styles/core/icon.css */
3
+
4
+ ._example_1exbj_2 {
5
+ background: var(--6eb2e862);
6
6
  }
7
- ._example_1xq2e_3.top-active {
7
+ ._example_1exbj_2.top-active {
8
8
  background: green;
9
- }
9
+ }
10
10
  .top-button {
11
11
  cursor: pointer;
12
12
  box-shadow: var(--top-button-box-shadow);
@@ -47,9 +47,9 @@
47
47
  transparent 75%,
48
48
  transparent);
49
49
  background-size: 32px 32px;
50
- animation: _progress_1jgaf_1 1s linear infinite;
50
+ animation: _progress_fevtt_1 1s linear infinite;
51
51
  }
52
- @keyframes _progress_1jgaf_1 {
52
+ @keyframes _progress_fevtt_1 {
53
53
  0% {
54
54
  background-position-x: 0px;
55
55
  }
@@ -211,29 +211,29 @@ a.top-button:hover {
211
211
  .top-button.top-style_transparent.top-color_pink {
212
212
  --top-button-color: var(--color-pink-450);
213
213
  }
214
- .top-button {
215
- --top-button-color: var(--color-white);
216
- --top-button-background-color: transparent;
217
- --top-button-background-color-hover: var(--top-button-background-color);
218
- --top-button-background-color-active: var(--top-button-background-color-hover);
219
- --top-button-background-color-selected: var(--top-button-background-color-hover);
220
- --top-button-box-shadow: none;
221
- --top-button-box-shadow-hover: var(--top-shadow-darken-2);
222
- --top-button-box-shadow-active: var(--top-shadow-darken-3);
223
- --top-button-box-shadow-selected: var(--top-shadow-darken-3);
224
- --top-forms-border-width: 0px;
225
- --top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));
214
+ .top-button {
215
+ --top-button-color: var(--color-white);
216
+ --top-button-background-color: transparent;
217
+ --top-button-background-color-hover: var(--top-button-background-color);
218
+ --top-button-background-color-active: var(--top-button-background-color-hover);
219
+ --top-button-background-color-selected: var(--top-button-background-color-hover);
220
+ --top-button-box-shadow: none;
221
+ --top-button-box-shadow-hover: var(--top-shadow-darken-2);
222
+ --top-button-box-shadow-active: var(--top-shadow-darken-3);
223
+ --top-button-box-shadow-selected: var(--top-shadow-darken-3);
224
+ --top-forms-border-width: 0px;
225
+ --top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));
226
226
  --top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));
227
227
  }
228
- .top-button.top-size_l {
229
- --top-forms-padding: var(--top-forms-padding_l);
228
+ .top-button.top-size_l {
229
+ --top-forms-padding: var(--top-forms-padding_l);
230
230
  --top-forms-base-height: var(--top-forms-base-height_l);
231
231
  }
232
- .top-button.top-size_xl {
233
- --top-forms-padding: var(--top-forms-padding_xl);
232
+ .top-button.top-size_xl {
233
+ --top-forms-padding: var(--top-forms-padding_xl);
234
234
  --top-forms-base-height: var(--top-forms-base-height_xl);
235
235
  }
236
- .top-button-progress {}
236
+ .top-button-progress {}
237
237
 
238
238
  [type="checkbox"].top-el:before {
239
239
  --top-checkbox-color: var(--top-radio-color);
@@ -325,3 +325,35 @@ a.top-button:hover {
325
325
  background: var(--top-checkbox-background-color-checked-hover);
326
326
  color: var(--top-checkbox_input-switcher-color-checked-hover);
327
327
  }
328
+
329
+ :root {
330
+ --top-radio-background-color: var(--content-background-color);
331
+ --top-radio-background-color-hover: var(--top-radio-background-color);
332
+ --top-radio-background-color-active: var(--top-radio-background-color);
333
+ }
334
+ .top-radio {
335
+ cursor: pointer;
336
+ }
337
+ [type="radio"].top-el:before {
338
+ content: ' ';
339
+ border-radius: 100%;
340
+ border: 1px solid var(--color-gray-200);
341
+ width: 16px;
342
+ height: 16px;
343
+ }
344
+ [type="radio"].top-el:hover:before,
345
+ .top-radio:hover > [type="radio"].top-el:before {
346
+ border-color: var(--top-radio-color-hover);
347
+ }
348
+ [type="radio"].top-el:checked:before {
349
+ box-shadow:
350
+ var(--top-radio-background-color) 1px 1px 0 inset,
351
+ var(--top-radio-background-color) -1px -1px 0 inset,
352
+ var(--top-radio-background-color) 1px -1px 0 inset,
353
+ var(--top-radio-background-color) -1px 1px 0 inset;
354
+ background: var(--top-radio-color);
355
+ border-color: var(--top-radio-color);
356
+ }
357
+ [type="radio"].top-el[title]:after {
358
+ margin: 0 0 0 8px;
359
+ }