@topvisor/ui 0.0.13 → 0.0.14

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 (57) hide show
  1. package/.chunks/forms-1b3f76e9.es.js +410 -0
  2. package/.chunks/forms-1b3f76e9.es.js.map +1 -0
  3. package/.chunks/forms-512abfa7.amd.js +413 -0
  4. package/.chunks/forms-512abfa7.amd.js.map +1 -0
  5. package/README.md +62 -85
  6. package/{l/common → common}/common.amd.js +0 -1
  7. package/{l/common → common}/common.amd.js.map +1 -1
  8. package/{l/common → common}/common.js +0 -1
  9. package/{l/common → common}/common.js.map +1 -1
  10. package/core.css +442 -371
  11. package/dark.css +127 -115
  12. package/forms/forms.amd.js +11 -0
  13. package/forms/forms.amd.js.map +1 -0
  14. package/forms/forms.js +11 -0
  15. package/forms/forms.js.map +1 -0
  16. package/{c/style.css → forms.css} +301 -252
  17. package/helpers/helpers.amd.js +6 -0
  18. package/helpers/helpers.amd.js.map +1 -0
  19. package/helpers/helpers.js +6 -0
  20. package/helpers/helpers.js.map +1 -0
  21. package/icomoon/demo-files/Read Me.txt +7 -7
  22. package/icomoon/demo-files/demo.css +161 -161
  23. package/icomoon/demo-files/demo.js +30 -30
  24. package/icomoon/demo.html +2931 -2931
  25. package/icomoon/fonts/Topvisor-2.svg +231 -231
  26. package/icomoon/style.css +644 -644
  27. package/light.css +127 -128
  28. package/package.json +19 -19
  29. package/c/_plugin-vue_export-helper-cb5c78ba.js +0 -12
  30. package/c/_plugin-vue_export-helper-cb5c78ba.js.map +0 -1
  31. package/c/_plugin-vue_export-helper-cc2b3d55.js +0 -11
  32. package/c/_plugin-vue_export-helper-cc2b3d55.js.map +0 -1
  33. package/c/button/button.amd.js +0 -99
  34. package/c/button/button.amd.js.map +0 -1
  35. package/c/button/button.js +0 -100
  36. package/c/button/button.js.map +0 -1
  37. package/c/checkbox/checkbox.amd.js +0 -58
  38. package/c/checkbox/checkbox.amd.js.map +0 -1
  39. package/c/checkbox/checkbox.js +0 -59
  40. package/c/checkbox/checkbox.js.map +0 -1
  41. package/c/example/example.amd.js +0 -35
  42. package/c/example/example.amd.js.map +0 -1
  43. package/c/example/example.js +0 -36
  44. package/c/example/example.js.map +0 -1
  45. package/c/icon/icon.amd.js +0 -22
  46. package/c/icon/icon.amd.js.map +0 -1
  47. package/c/icon/icon.js +0 -22
  48. package/c/icon/icon.js.map +0 -1
  49. package/c/radio/radio.amd.js +0 -49
  50. package/c/radio/radio.amd.js.map +0 -1
  51. package/c/radio/radio.js +0 -50
  52. package/c/radio/radio.js.map +0 -1
  53. package/l/forms/forms.amd.js +0 -206
  54. package/l/forms/forms.amd.js.map +0 -1
  55. package/l/forms/forms.js +0 -205
  56. package/l/forms/forms.js.map +0 -1
  57. package/l/style.css +0 -352
@@ -0,0 +1,413 @@
1
+ define(["exports", "vue"], function(exports, vue) {
2
+ "use strict";
3
+ var __vite_style__ = document.createElement("style");
4
+ __vite_style__.textContent = ".top-button {\r\n cursor: pointer;\r\n box-sizing: border-box;\r\n box-shadow: var(--top-button-box-shadow);\r\n border-radius: var(--top-forms-radius);\r\n border: var(--top-forms-border-width) solid var(--top-forms-border-color);\r\n background-color: var(--top-button-background-color);\r\n height: var(--top-forms-base-height);\r\n padding: 0 var(--top-forms-padding);\r\n color: var(--top-button-color);\r\n line-height: 1;\r\n white-space: nowrap;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n transition: background-color 150ms, border-color 150ms, box-shadow 150ms;\n}\n.top-button:hover {\r\n box-shadow: var(--top-button-box-shadow-hover);\r\n background-color: var(--top-button-background-color-hover);\n}\n.top-button:active {\r\n box-shadow: var(--top-button-box-shadow-active);\r\n background-color: var(--top-button-background-color-active);\n}\n.top-button.top-active {\r\n box-shadow: var(--top-button-box-shadow-selected);\r\n background-color: var(--top-button-background-color-selected);\n}\n.top-button.top-button-progress {\r\n cursor: help;\r\n box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 64px;\r\n background-image:\r\n linear-gradient(-45deg,\r\n rgba(255, 255, 255, 0.2) 25%,\r\n transparent 25%,\r\n transparent 50%,\r\n rgba(255, 255, 255, 0.2) 50%,\r\n rgba(255, 255, 255, 0.2) 75%,\r\n transparent 75%,\r\n transparent);\r\n background-size: 32px 32px;\r\n animation: _progress_1f1nw_1 1s linear infinite;\n}\n@keyframes _progress_1f1nw_1 {\n0% {\r\n background-position-x: 0px;\n}\n100% {\r\n background-position-x: 32px;\n}\n}\na.top-button,\r\nbutton.top-button {\r\n min-width: 135px;\r\n text-decoration: none;\n}\na.top-button,\r\na.top-button:hover {\r\n min-width: var(--top-forms-base-height);\r\n text-decoration: none;\n}\n.top-button[data-top-icon]:not(:empty),\r\n.top-button[data-top-icon2]:not(:empty) {\r\n justify-content: flex-start;\r\n text-align: left;\n}\n.top-button[data-top-icon] {\r\n padding-left: 0;\n}\n.top-button[data-top-icon2] {\r\n padding-right: var(--top-select_arrow-width);\n}\n.top-button[data-top-icon2]:after {\r\n margin-left: auto;\n}\n.top-button:empty {\r\n min-width: var(--top-forms-base-height);\n}\n.top-button[data-top-icon]:empty,\r\n.top-button[data-top-icon2]:empty {\r\n padding: 0;\n}\n.top-button.top-color_blue {\r\n --top-button-background-color: var(--color-blue-500);\n}\n.top-button.top-color_green {\r\n --top-button-background-color: var(--color-green-500);\n}\n.top-button.top-color_orange {\r\n --top-button-background-color: var(--color-orange-500);\n}\n.top-button.top-color_red {\r\n --top-button-background-color: var(--color-red-500);\n}\n.top-button.top-color_pink {\r\n --top-button-background-color: var(--color-pink-500);\n}\n.top-button.top-color_theme {\r\n --top-button-box-shadow-hover: none;\r\n --top-button-box-shadow-active: none;\r\n --top-button-box-shadow-selected: none;\r\n\r\n --top-icon-color: var(--color-text-2);\r\n --top-icon2-color: var(--color-text-2);\r\n\r\n --top-button-color: var(--color-text-1);\r\n --top-button-background-color: transparent;\r\n --top-button-background-color-hover: var(--color-secondary-opacity);\r\n --top-button-background-color-active: var(--color-secondary-2-opacity);\r\n --top-button-background-color-selected: var(--color-secondary-2-opacity);\n}\n.top-button.top-color_theme.top-active {\r\n --top-icon-color: var(--color-text-2);\n}\n.top-button.top-style_outline {\r\n --top-button-box-shadow: none;\r\n --top-button-box-shadow-hover: none;\r\n --top-button-box-shadow-active: none;\r\n --top-button-box-shadow-selected: none;\r\n\r\n --top-forms-border-color: var(--top-style_outline-color);\r\n\r\n --top-style_outline-color: var(--color-steel-400);\r\n\r\n --top-button-color: var(--top-style_outline-color);\r\n --top-button-background-color: var(--content-background-color);\r\n --top-button-background-color-hover: var(--color-theme-100);\r\n --top-button-background-color-active: var(--color-theme-150);\r\n --top-button-background-color-selected: var(--color-theme-125);\r\n\r\n --top-forms-border-width: 1px;\n}\n.top-button.top-style_outline.top-color_theme {\r\n --top-button-color: var(--color-text);\n}\n.top-button.top-style_outline.top-color_blue {\r\n --top-style_outline-color: var(--color-blue-500);\n}\n.top-button.top-style_outline.top-color_green {\r\n --top-style_outline-color: var(--color-green-500);\n}\n.top-button.top-style_outline.top-color_orange {\r\n --top-style_outline-color: var(--color-orange-500);\n}\n.top-button.top-style_outline.top-color_red {\r\n --top-style_outline-color: var(--color-red-500);\n}\n.top-button.top-style_outline.top-color_pink {\r\n --top-style_outline-color: var(--color-pink-500);\n}\n.top-button.top-style_soft {\r\n --top-shadow-darken: none;\r\n --top-shadow-darken-2: none;\r\n --top-shadow-darken-3: none;\r\n\r\n --top-button-color: var(--color-text);\r\n --top-button-background-color: var(--color-secondary-opacity);\r\n --top-button-background-color-hover: var(--color-secondary-2-opacity);\r\n --top-button-background-color-active: var(--color-secondary-3-opacity);\r\n --top-button-background-color-selected: var(--color-secondary-3-opacity);\n}\n.top-button.top-style_soft.top-color_blue {\r\n --top-button-color: var(--color-blue-500);\n}\n.top-button.top-style_soft.top-color_orange {\r\n --top-button-color: var(--color-orange-500);\n}\n.top-button.top-style_soft.top-color_green {\r\n --top-button-color: var(--color-green-500);\n}\n.top-button.top-style_soft.top-color_red {\r\n --top-button-color: var(--color-red-500);\n}\n.top-button.top-style_soft.top-color_pink {\r\n --top-button-color: var(--color-pink-500);\n}\n.top-button.top-style_transparent {\r\n --top-shadow-darken: none;\r\n --top-shadow-darken-2: none;\r\n --top-shadow-darken-3: none;\r\n\r\n --top-button-color: var(--color-text);\r\n --top-button-background-color: transparent;\r\n --top-button-background-color-hover: transparent;\r\n --top-button-background-color-active: transparent;\r\n --top-button-background-color-selected: var(--color-steel-200);\n}\n.top-button.top-style_transparent:hover {\r\n opacity: 0.8;\n}\n.top-button.top-style_transparent.top-color_blue {\r\n --top-button-color: var(--color-blue-450);\n}\n.top-button.top-style_transparent.top-color_green {\r\n --top-button-color: var(--color-green-450);\n}\n.top-button.top-style_transparent.top-color_orange {\r\n --top-button-color: var(--color-orange-450);\n}\n.top-button.top-style_transparent.top-color_red {\r\n --top-button-color: var(--color-red-450);\n}\n.top-button.top-style_transparent.top-color_pink {\r\n --top-button-color: var(--color-pink-450);\n}\n.top-button {\r\n --top-button-color: var(--color-white);\r\n --top-button-background-color: transparent;\r\n --top-button-background-color-hover: var(--top-button-background-color);\r\n --top-button-background-color-active: var(--top-button-background-color-hover);\r\n --top-button-background-color-selected: var(--top-button-background-color-hover);\r\n --top-button-box-shadow: none;\r\n --top-button-box-shadow-hover: var(--top-shadow-darken-2);\r\n --top-button-box-shadow-active: var(--top-shadow-darken-3);\r\n --top-button-box-shadow-selected: var(--top-shadow-darken-3);\r\n --top-forms-border-width: 0px;\r\n --top-icon-width: calc(var(--top-icon-size) + var(--top-forms-padding));\r\n --top-icon2-width: calc(var(--top-icon2-size) + var(--top-forms-padding));\n}\n.top-button.top-size_l {\r\n --top-forms-padding: var(--top-forms-padding_l);\r\n --top-forms-base-height: var(--top-forms-base-height_l);\n}\n.top-button.top-size_xl {\r\n --top-forms-padding: var(--top-forms-padding_xl);\r\n --top-forms-base-height: var(--top-forms-base-height_xl);\n}\r\n\n.top-forms-optionLabel_title {\r\n min-height: var(--top-forms-option-height);\r\n display: flex; align-items: center;\n}\n.top-forms-optionLabel_description {\r\n color: var(--color-text-3);\r\n font-size: 0.85em;\r\n line-height: var(--top-forms-option-height);\n}\r\n\n.top-checkbox {\r\n cursor: pointer;\r\n display: inline-flex;\n}\n.top-checkbox_input {\r\n cursor: inherit;\r\n border-radius: 4px;\r\n background: var(--content-background-color);\r\n border: 1px solid var(--top-forms-border-color);\r\n width: calc(var(--top-forms-option-height) - 3px * 2);\r\n height: calc(var(--top-forms-option-height) - 3px * 2);\n}\n.top-checkbox_input:before {\r\n content: ' ';\r\n color: #FFF;\r\n font-family: 'Topvisor-2';\r\n font-size: 16px;\n}\n.top-checkbox_input:not(:checked):not(:indeterminate):hover {\r\n border-color: var(--top-forms-option-color);\r\n background: var(--color-theme-50)\n}\r\n\r\n/* checked / indeterminate */\n.top-checkbox_input:checked,\r\n.top-checkbox_input:indeterminate {\r\n border-color: var(--top-forms-option-color);\r\n background: var(--top-forms-option-color);\n}\n.top-checkbox_input:checked:before {\r\n content: '';\n}\n.top-checkbox_input:indeterminate:before {\r\n content: '';\n}\n.top-checkbox_input:checked:hover,\r\n.top-checkbox_input:indeterminate:hover {\r\n border-color: var(--top-forms-option-color-hover);\r\n background: var(--top-forms-option-color-hover);\n}\r\n\r\n/* disabled */\n.top-checkbox_input:checked:disabled,\r\n.top-checkbox_input:indeterminate:disabled {\r\n border-color: transparent;\r\n background: var(--color-theme-400);\n}\r\n\r\n/* isError */\n.top-checkbox_input.top-error {\r\n border-color: var(--color-negative) !important;\n}\n.top-checkbox_input:checked.top-error,\r\n.top-checkbox_input:indeterminate.top-error {\r\n background: var(--color-negative);\n}\r\n\n.top-input {\r\n width: 180px;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--top-gap-1);\n}\n.top-input_input {\r\n background: var(--top-forms-background-color);\n}\n.top-input_input:hover {\r\n background: var(--top-forms-background-color-hover);\n}\n.top-input_input:focus {\r\n outline-color: var(--color-theme-75);\r\n outline-offset: 0px;\n}\n.top-input-withCleaner .top-input_input:not(:placeholder-shown) {\r\n --top-forms_clear-width: 24px;\n}\r\n\r\n/* TODO: перенести в inputsRange */\n.top-input_input {\r\n width: 50%;\r\n flex-grow: 1;\n}\n.top-input[data-top-icon]:before {\r\n --top-icon-color: var(--color-text-secondary);\n}\r\n\n:root {\r\n --top-radio-background-color: var(--content-background-color);\r\n --top-radio-background-color-hover: var(--top-radio-background-color);\r\n --top-radio-background-color-active: var(--top-radio-background-color);\n}\n.top-radio {\r\n cursor: pointer;\n}\n.top-radio_input {\r\n border-radius: 50%;\r\n background: var(--content-background-color);\r\n border: 1px solid var(--top-forms-border-color);\r\n width: calc(var(--top-forms-option-height) - 3px * 2);\r\n height: calc(var(--top-forms-option-height) - 3px * 2);\n}\n.top-radio_input:hover {\r\n border-color: var(--top-forms-option-color);\n}\n.top-radio_input:checked {\r\n border-color: var(--top-forms-option-color);\r\n border-width: 5px;\n}\n.top-radio_input:checked:hover {\r\n border-color: var(--top-forms-option-color-hover);\n}\r\n\r\n/* isError */\n.top-radio_input.top-error,\r\n.top-radio_input:checked.top-error {\r\n border-color: var(--color-negative);\n}\r\n\n.top-checkboxSwitcher {\r\n cursor: pointer;\r\n display: inline-flex;\r\n gap: 4px;\n}\n.top-checkboxSwitcher_input {\r\n border-radius: 9px;\r\n border: none;\r\n background: var(--color-theme-100);\r\n width: 36px;\r\n height: 18px;\r\n position: relative;\n}\n.top-checkboxSwitcher_input:before {\r\n content: '';\r\n border-radius: 50%;\r\n background: var(--color-white);\r\n width: 12px;\r\n height: 12px;\r\n margin: 3px;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n\r\n transition: left 0.1s;\n}\n.top-checkboxSwitcher_input:hover {\r\n background: var(--color-theme-150);\n}\r\n\r\n/* checked */\n.top-checkboxSwitcher_input:checked {\r\n background: var(--top-forms-option-color);\n}\n.top-checkboxSwitcher_input:checked:hover {\r\n background: var(--top-forms-option-color-hover);\n}\n.top-checkboxSwitcher_input:checked:before {\r\n left: 50%;\n}\r\n\r\n/* disabled */\n.top-checkboxSwitcher_input:disabled {\r\n background: var(--color-theme-400);\n}\r\n\r\n/* isError */\n.top-checkboxSwitcher_input.top-error {\r\n background: var(--color-negative) !important;\n}\r\n";
5
+ document.head.appendChild(__vite_style__);
6
+ var SIZE = /* @__PURE__ */ ((SIZE2) => {
7
+ SIZE2["S"] = "s";
8
+ SIZE2["L"] = "l";
9
+ SIZE2["XL"] = "xl";
10
+ return SIZE2;
11
+ })(SIZE || {});
12
+ var COLOR = /* @__PURE__ */ ((COLOR2) => {
13
+ COLOR2["Theme"] = "theme";
14
+ COLOR2["Blue"] = "blue";
15
+ COLOR2["Green"] = "green";
16
+ COLOR2["Orange"] = "orange";
17
+ COLOR2["Red"] = "red";
18
+ COLOR2["Pink"] = "pink";
19
+ return COLOR2;
20
+ })(COLOR || {});
21
+ var STYLING = /* @__PURE__ */ ((STYLING2) => {
22
+ STYLING2["Regular"] = "";
23
+ STYLING2["Outline"] = "outline";
24
+ STYLING2["Soft"] = "soft";
25
+ STYLING2["Transparent"] = "transparent";
26
+ return STYLING2;
27
+ })(STYLING || {});
28
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
29
+ __name: "button",
30
+ props: {
31
+ color: { default: COLOR.Blue },
32
+ styling: { default: STYLING.Regular },
33
+ size: { default: SIZE.S },
34
+ name: {},
35
+ title: {},
36
+ icon: {},
37
+ icon2: {},
38
+ href: {},
39
+ disabled: { type: Boolean },
40
+ isSubmit: { type: Boolean },
41
+ isActive: { type: Boolean },
42
+ isProgress: { type: Boolean }
43
+ },
44
+ setup(__props) {
45
+ const props = __props;
46
+ const tagName = vue.computed(() => props.href ? "a" : "button");
47
+ const type = vue.computed(() => props.isSubmit ? "submit" : void 0);
48
+ return (_ctx, _cache) => {
49
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName.value), {
50
+ class: vue.normalizeClass({
51
+ ["top-active"]: _ctx.isActive,
52
+ ["top-disabled"]: _ctx.disabled,
53
+ ["top-forms-focusable"]: !_ctx.disabled,
54
+ ["top-button"]: true,
55
+ ["top-button-progress"]: _ctx.isProgress,
56
+ [`top-size_${_ctx.size}`]: !!_ctx.size,
57
+ [`top-color_${_ctx.color}`]: true,
58
+ [`top-style_${_ctx.styling}`]: !!_ctx.styling
59
+ }),
60
+ name: _ctx.name,
61
+ title: _ctx.title,
62
+ href: _ctx.href,
63
+ type: type.value,
64
+ "data-top-icon": _ctx.icon || void 0,
65
+ "data-top-icon2": _ctx.icon2 || void 0,
66
+ disabled: _ctx.disabled || void 0,
67
+ inProgress: _ctx.isProgress
68
+ }, {
69
+ default: vue.withCtx(() => [
70
+ vue.renderSlot(_ctx.$slots, "default", {}, () => [
71
+ vue.createTextVNode(vue.toDisplayString(!_ctx.icon ? "Button" : ""), 1)
72
+ ])
73
+ ]),
74
+ _: 3
75
+ }, 8, ["class", "name", "title", "href", "type", "data-top-icon", "data-top-icon2", "disabled", "inProgress"]);
76
+ };
77
+ }
78
+ });
79
+ const progress = "_progress_1f1nw_1";
80
+ const style0$5 = {
81
+ "top-button": "top-button",
82
+ "top-active": "top-active",
83
+ "top-button-progress": "top-button-progress",
84
+ progress,
85
+ "top-color_blue": "top-color_blue",
86
+ "top-color_green": "top-color_green",
87
+ "top-color_orange": "top-color_orange",
88
+ "top-color_red": "top-color_red",
89
+ "top-color_pink": "top-color_pink",
90
+ "top-color_theme": "top-color_theme",
91
+ "top-style_outline": "top-style_outline",
92
+ "top-style_soft": "top-style_soft",
93
+ "top-style_transparent": "top-style_transparent",
94
+ "top-size_l": "top-size_l",
95
+ "top-size_xl": "top-size_xl"
96
+ };
97
+ const _export_sfc = (sfc, props) => {
98
+ const target = sfc.__vccOpts || sfc;
99
+ for (const [key, val] of props) {
100
+ target[key] = val;
101
+ }
102
+ return target;
103
+ };
104
+ const cssModules$5 = {
105
+ "$style": style0$5
106
+ };
107
+ const button = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$5]]);
108
+ const _hoisted_1$4 = { class: "top-forms-optionLabel" };
109
+ const _hoisted_2$1 = { class: "top-forms-optionLabel_title" };
110
+ const _hoisted_3$1 = {
111
+ key: 0,
112
+ class: "top-forms-optionLabel_description"
113
+ };
114
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
115
+ __name: "controlLabel",
116
+ props: {
117
+ title: {},
118
+ description: {}
119
+ },
120
+ setup(__props) {
121
+ return (_ctx, _cache) => {
122
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
123
+ vue.createElementVNode("div", _hoisted_2$1, vue.toDisplayString(_ctx.title), 1),
124
+ _ctx.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$1, vue.toDisplayString(_ctx.description), 1)) : vue.createCommentVNode("", true)
125
+ ]);
126
+ };
127
+ }
128
+ });
129
+ const style0$4 = {
130
+ "top-forms-optionLabel_title": "top-forms-optionLabel_title",
131
+ "top-forms-optionLabel_description": "top-forms-optionLabel_description"
132
+ };
133
+ const cssModules$4 = {
134
+ "$style": style0$4
135
+ };
136
+ const ControlLabel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$4]]);
137
+ const _hoisted_1$3 = ["name", "value", "checked", "indeterminate", "disabled"];
138
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
139
+ __name: "checkbox",
140
+ props: {
141
+ name: {},
142
+ value: {},
143
+ title: {},
144
+ description: {},
145
+ checked: { type: Boolean },
146
+ disabled: { type: Boolean },
147
+ indeterminate: { type: Boolean },
148
+ isError: { type: Boolean }
149
+ },
150
+ setup(__props) {
151
+ return (_ctx, _cache) => {
152
+ return vue.openBlock(), vue.createElementBlock("label", {
153
+ class: vue.normalizeClass({
154
+ ["top-forms-optionWrapper"]: true,
155
+ ["top-checkbox"]: true,
156
+ ["top-checkbox_" + _ctx.name]: _ctx.name !== "",
157
+ ["top-active"]: _ctx.checked,
158
+ ["top-disabled"]: _ctx.disabled,
159
+ ["top-error"]: _ctx.isError && !_ctx.disabled
160
+ })
161
+ }, [
162
+ vue.createElementVNode("input", {
163
+ type: "checkbox",
164
+ class: vue.normalizeClass({
165
+ ["top-forms-focusable"]: !_ctx.disabled,
166
+ ["top-forms-option"]: true,
167
+ ["top-checkbox_input"]: true,
168
+ ["top-error"]: _ctx.isError && !_ctx.disabled
169
+ }),
170
+ name: _ctx.name,
171
+ value: _ctx.value,
172
+ checked: _ctx.checked,
173
+ indeterminate: _ctx.indeterminate,
174
+ disabled: _ctx.disabled
175
+ }, null, 10, _hoisted_1$3),
176
+ _ctx.title ? (vue.openBlock(), vue.createBlock(ControlLabel, {
177
+ key: 0,
178
+ title: _ctx.title,
179
+ description: _ctx.description
180
+ }, null, 8, ["title", "description"])) : vue.createCommentVNode("", true)
181
+ ], 2);
182
+ };
183
+ }
184
+ });
185
+ const style0$3 = {
186
+ "top-checkbox": "top-checkbox",
187
+ "top-checkbox_input": "top-checkbox_input",
188
+ "top-error": "top-error"
189
+ };
190
+ const cssModules$3 = {
191
+ "$style": style0$3
192
+ };
193
+ const checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$3]]);
194
+ var CAPTION_TYPE = /* @__PURE__ */ ((CAPTION_TYPE2) => {
195
+ CAPTION_TYPE2["NONE"] = "";
196
+ CAPTION_TYPE2["SLIDE"] = "slide";
197
+ CAPTION_TYPE2["TOP"] = "top";
198
+ return CAPTION_TYPE2;
199
+ })(CAPTION_TYPE || {});
200
+ const _hoisted_1$2 = ["data-top-icon"];
201
+ const _hoisted_2 = ["name", "title", "placeholder", "disabled", "readonly"];
202
+ const _hoisted_3 = {
203
+ key: 2,
204
+ class: "top-formsCaption"
205
+ };
206
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
207
+ __name: "input",
208
+ props: {
209
+ modelValue: {},
210
+ name: {},
211
+ disabled: { type: Boolean },
212
+ readonly: { type: Boolean },
213
+ title: {},
214
+ captionType: { default: CAPTION_TYPE.NONE },
215
+ size: { default: SIZE.S },
216
+ icon: {},
217
+ addCleaner: { type: Boolean },
218
+ isError: { type: Boolean }
219
+ },
220
+ emits: ["update:modelValue"],
221
+ setup(__props, { emit }) {
222
+ const props = __props;
223
+ const value = vue.computed({
224
+ get() {
225
+ return props.modelValue;
226
+ },
227
+ set(value2) {
228
+ emit("update:modelValue", value2);
229
+ }
230
+ });
231
+ const placeholder = vue.computed(() => {
232
+ if (props.addCleaner && !props.title)
233
+ return "";
234
+ if (props.captionType !== CAPTION_TYPE.NONE)
235
+ return "";
236
+ return props.title;
237
+ });
238
+ const clean = () => {
239
+ emit("update:modelValue", "");
240
+ };
241
+ return (_ctx, _cache) => {
242
+ return vue.openBlock(), vue.createElementBlock("label", {
243
+ class: vue.normalizeClass({
244
+ ["top-input"]: true,
245
+ ["top-input-" + _ctx.name]: _ctx.name,
246
+ ["top-size_" + _ctx.size]: true,
247
+ ["top-disabled"]: _ctx.disabled,
248
+ ["top-input-withCleaner"]: _ctx.addCleaner,
249
+ ["top-formsCaptionWrapper"]: _ctx.captionType !== vue.unref(CAPTION_TYPE).NONE,
250
+ ["top-formsCaptionWrapper-always"]: _ctx.captionType === vue.unref(CAPTION_TYPE).TOP,
251
+ ["top-input-withButton"]: !!_ctx.$slots.btn
252
+ }),
253
+ "data-top-icon": _ctx.icon
254
+ }, [
255
+ vue.withDirectives(vue.createElementVNode("input", {
256
+ type: "text",
257
+ class: vue.normalizeClass({
258
+ ["top-forms-focusable"]: !_ctx.disabled,
259
+ ["top-input_input"]: true,
260
+ ["top-error"]: _ctx.isError
261
+ }),
262
+ autocomplete: "off_always",
263
+ name: _ctx.name,
264
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
265
+ title: _ctx.title,
266
+ placeholder: placeholder.value,
267
+ disabled: _ctx.disabled,
268
+ readonly: _ctx.readonly,
269
+ onKeydown: _cache[1] || (_cache[1] = vue.withKeys(() => (_ctx.addCleaner || !!_ctx.$slots.btn) && clean(), ["esc"]))
270
+ }, null, 42, _hoisted_2), [
271
+ [vue.vModelText, value.value]
272
+ ]),
273
+ _ctx.addCleaner && value.value ? (vue.openBlock(), vue.createElementBlock("span", {
274
+ key: 0,
275
+ class: "top-input_cleaner top-cleaner",
276
+ "data-top-icon": "",
277
+ onClick: clean
278
+ })) : vue.createCommentVNode("", true),
279
+ value.value ? vue.renderSlot(_ctx.$slots, "btn", { key: 1 }) : vue.createCommentVNode("", true),
280
+ vue.renderSlot(_ctx.$slots, "default"),
281
+ _ctx.captionType !== vue.unref(CAPTION_TYPE).NONE ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, vue.toDisplayString(_ctx.title), 1)) : vue.createCommentVNode("", true)
282
+ ], 10, _hoisted_1$2);
283
+ };
284
+ }
285
+ });
286
+ const style0$2 = {
287
+ "top-input": "top-input",
288
+ "top-input_input": "top-input_input",
289
+ "top-input-withCleaner": "top-input-withCleaner"
290
+ };
291
+ const cssModules$2 = {
292
+ "$style": style0$2
293
+ };
294
+ const input = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$2]]);
295
+ const _hoisted_1$1 = ["name", "value", "checked", "disabled"];
296
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
297
+ __name: "radio",
298
+ props: {
299
+ name: {},
300
+ value: {},
301
+ title: {},
302
+ description: {},
303
+ checked: { type: Boolean },
304
+ disabled: { type: Boolean },
305
+ isError: { type: Boolean }
306
+ },
307
+ setup(__props) {
308
+ return (_ctx, _cache) => {
309
+ return vue.openBlock(), vue.createElementBlock("label", {
310
+ class: vue.normalizeClass({
311
+ ["top-forms-optionWrapper"]: true,
312
+ ["top-radio"]: true,
313
+ ["top-radio_" + _ctx.name]: _ctx.name !== "",
314
+ ["top-active"]: _ctx.checked,
315
+ ["top-disabled"]: _ctx.disabled,
316
+ ["top-error"]: _ctx.isError && !_ctx.disabled
317
+ })
318
+ }, [
319
+ vue.createElementVNode("input", {
320
+ type: "radio",
321
+ class: vue.normalizeClass({
322
+ ["top-forms-focusable"]: !_ctx.disabled,
323
+ ["top-forms-option"]: true,
324
+ ["top-radio_input"]: true,
325
+ ["top-error"]: _ctx.isError && !_ctx.disabled
326
+ }),
327
+ name: _ctx.name,
328
+ value: _ctx.value,
329
+ checked: _ctx.checked,
330
+ disabled: _ctx.disabled
331
+ }, null, 10, _hoisted_1$1),
332
+ _ctx.title ? (vue.openBlock(), vue.createBlock(ControlLabel, {
333
+ key: 0,
334
+ title: _ctx.title,
335
+ description: _ctx.description
336
+ }, null, 8, ["title", "description"])) : vue.createCommentVNode("", true)
337
+ ], 2);
338
+ };
339
+ }
340
+ });
341
+ const style0$1 = {
342
+ "top-radio": "top-radio",
343
+ "top-radio_input": "top-radio_input",
344
+ "top-error": "top-error"
345
+ };
346
+ const cssModules$1 = {
347
+ "$style": style0$1
348
+ };
349
+ const radio = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
350
+ const _hoisted_1 = ["name", "value", "checked", "disabled"];
351
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
352
+ __name: "switcher",
353
+ props: {
354
+ name: {},
355
+ value: {},
356
+ title: {},
357
+ description: {},
358
+ checked: { type: Boolean },
359
+ disabled: { type: Boolean },
360
+ isError: { type: Boolean },
361
+ isSwitcher: { type: Boolean }
362
+ },
363
+ setup(__props) {
364
+ return (_ctx, _cache) => {
365
+ return vue.openBlock(), vue.createElementBlock("label", {
366
+ class: vue.normalizeClass({
367
+ ["top-forms-optionWrapper"]: true,
368
+ ["top-checkboxSwitcher"]: true,
369
+ ["top-active"]: _ctx.checked,
370
+ ["top-disabled"]: _ctx.disabled,
371
+ ["top-error"]: _ctx.isError && !_ctx.disabled
372
+ })
373
+ }, [
374
+ vue.createElementVNode("input", {
375
+ type: "checkbox",
376
+ class: vue.normalizeClass({
377
+ ["top-forms-focusable"]: !_ctx.disabled,
378
+ ["top-forms-option"]: true,
379
+ ["top-checkboxSwitcher_input"]: true,
380
+ ["top-error"]: _ctx.isError && !_ctx.disabled
381
+ }),
382
+ name: _ctx.name,
383
+ value: _ctx.value,
384
+ checked: _ctx.checked,
385
+ disabled: _ctx.disabled
386
+ }, null, 10, _hoisted_1),
387
+ _ctx.title ? (vue.openBlock(), vue.createBlock(ControlLabel, {
388
+ key: 0,
389
+ title: _ctx.title,
390
+ description: _ctx.description
391
+ }, null, 8, ["title", "description"])) : vue.createCommentVNode("", true)
392
+ ], 2);
393
+ };
394
+ }
395
+ });
396
+ const style0 = {
397
+ "top-checkboxSwitcher": "top-checkboxSwitcher",
398
+ "top-checkboxSwitcher_input": "top-checkboxSwitcher_input",
399
+ "top-error": "top-error"
400
+ };
401
+ const cssModules = {
402
+ "$style": style0
403
+ };
404
+ const switcher = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
405
+ exports.ControlLabel = ControlLabel;
406
+ exports.SIZE = SIZE;
407
+ exports.button = button;
408
+ exports.checkbox = checkbox;
409
+ exports.input = input;
410
+ exports.radio = radio;
411
+ exports.switcher = switcher;
412
+ });
413
+ //# sourceMappingURL=forms-512abfa7.amd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-512abfa7.amd.js","sources":["../../src/components/forms/helpers.ts","../../src/components/forms/button/button.ts","../../src/components/forms/button/button.vue","../../src/components/forms/input/input.ts","../../src/components/forms/input/input.vue"],"sourcesContent":["/**\r\n * Размеры\r\n */\r\nexport enum SIZE {\r\n\tS = 's',\r\n\tL = 'l',\r\n\tXL = 'xl',\r\n}","import type { VNode } from 'vue';\nimport { SIZE } from '@/components/forms/helpers';\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\nexport { SIZE };","<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']: isActive,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t['top-button']: true,\r\n\t\t\t['top-button-progress']: isProgress,\r\n\t\t\t[`top-size_${size}`]: !!size,\r\n\t\t\t[`top-color_${color}`]: true,\r\n\t\t\t[`top-style_${styling}`]: !!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</style>","import type { VNode } from 'vue';\r\nimport { SIZE } from '@/components/forms/helpers';\r\n\r\n/**\r\n * Определение параметров\r\n */\r\nexport interface Props {\r\n\tmodelValue?: string\r\n\r\n\tname?: string\r\n\tdisabled?: boolean\r\n\treadonly?: boolean\r\n\r\n\ttitle?: string\r\n\tcaptionType?: CAPTION_TYPE\r\n\r\n\tsize?: SIZE\r\n\ticon?: string\r\n\taddCleaner?: boolean\r\n\tisError?: 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\tbtn(): VNode[];\r\n}\r\n\r\n/**\r\n * Определение событий\r\n */\r\nexport interface Emits {\r\n\t(e: 'update:modelValue', value?: string): void\r\n}\r\n\r\n/**\r\n * Типы заголовка\r\n */\r\nexport enum CAPTION_TYPE {\r\n\tNONE = '',\r\n\tSLIDE = 'slide',\r\n\tTOP = 'top',\r\n}\r\n\r\nexport { SIZE };","<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport type { Props, Emits } from './input';\r\nimport { SIZE, CAPTION_TYPE } from './input';\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n\tsize: SIZE.S,\r\n\tcaptionType: CAPTION_TYPE.NONE,\r\n});\r\n\r\nconst emit = defineEmits<Emits>();\r\n\r\nconst value = computed({\r\n\tget() {\r\n\t\treturn props.modelValue;\r\n\t},\r\n\tset(value) {\r\n\t\temit('update:modelValue', value);\r\n\t}\r\n});\r\n\r\nconst placeholder = computed(() => {\r\n\tif (props.addCleaner && !props.title) return '';\r\n\tif (props.captionType !== CAPTION_TYPE.NONE) return '';\r\n\r\n\treturn props.title;\r\n});\r\n\r\nconst clean = () => {\r\n\temit('update:modelValue', '');\r\n}\r\n</script>\r\n\r\n<template>\r\n\t<label\r\n\t\t:class=\"{\r\n\t\t\t['top-input']: true,\r\n\t\t\t['top-input-' + name]: name,\r\n\t\t\t['top-size_' + size]: true,\r\n\t\t\t['top-disabled']: disabled,\r\n\t\t\t['top-input-withCleaner']: addCleaner,\r\n\t\t\t['top-formsCaptionWrapper']: captionType !== CAPTION_TYPE.NONE,\r\n\t\t\t['top-formsCaptionWrapper-always']: captionType === CAPTION_TYPE.TOP,\r\n\t\t\t['top-input-withButton']: !!$slots.btn,\r\n\t\t}\"\r\n\t\t:data-top-icon=\"icon\"\r\n\t>\r\n\t\t<input\r\n\t\t\ttype=\"text\"\r\n\t\t\t:class=\"{\r\n\t\t\t\t['top-forms-focusable']: !disabled,\r\n\t\t\t\t['top-input_input']: true,\r\n\t\t\t\t['top-error']: isError,\r\n\t\t\t}\"\r\n\t\t\tautocomplete=\"off_always\"\r\n\t\t\t:name=\"name\"\r\n\t\t\tv-model=\"value\"\r\n\t\t\t:title=\"title\"\r\n\t\t\t:placeholder=\"placeholder\"\r\n\t\t\t:disabled=\"disabled\"\r\n\t\t\t:readonly=\"readonly\"\r\n\t\t\t@keydown.esc=\"() => (addCleaner || !!$slots.btn) && clean()\"\r\n\t\t>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"addCleaner && value\"\r\n\t\t\tclass=\"top-input_cleaner top-cleaner\"\r\n\t\t\tdata-top-icon=\"\"\r\n\t\t\t@click=\"clean\"\r\n\t\t></span>\r\n\r\n\t\t<!-- TODO: кнопка должна отоборажаться только при изменении value -->\r\n\t\t<!-- TODO: до нажатия на кнопку, изменеине не должно применяться -->\r\n\t\t<!-- TODO: при отмене состояние должно возвращаться к первоначальному -->\r\n\t\t<slot\r\n\t\t\tv-if=\"value\"\r\n\t\t\tname=\"btn\"\r\n\t\t/>\r\n\r\n\t\t<slot></slot>\r\n\r\n\t\t<span\r\n\t\t\tv-if=\"captionType !== CAPTION_TYPE.NONE\"\r\n\t\t\tclass=\"top-formsCaption\"\r\n\t\t>\r\n\t\t\t{{ title }}\r\n\t\t</span>\r\n\t</label>\r\n</template>\r\n\r\n<style module>\r\n.top-input {\r\n\twidth: 180px;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: var(--top-gap-1);\r\n}\r\n\r\n.top-input_input {\r\n\tbackground: var(--top-forms-background-color);\r\n}\r\n\r\n.top-input_input:hover {\r\n\tbackground: var(--top-forms-background-color-hover);\r\n}\r\n\r\n.top-input_input:focus {\r\n\toutline-color: var(--color-theme-75);\r\n\toutline-offset: 0px;\r\n}\r\n\r\n.top-input-withCleaner .top-input_input:not(:placeholder-shown) {\r\n\t--top-forms_clear-width: 24px;\r\n}\r\n\r\n/* TODO: перенести в inputsRange */\r\n.top-input_input {\r\n\twidth: 50%;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.top-input[data-top-icon]:before {\r\n\t--top-icon-color: var(--color-text-secondary);\r\n}\r\n</style>"],"names":["SIZE","COLOR","STYLING","computed","CAPTION_TYPE","value"],"mappings":";;;;;AAGY,MAAA,yBAAAA,UAAL;AACNA,UAAA,GAAI,IAAA;AACJA,UAAA,GAAI,IAAA;AACJA,UAAA,IAAK,IAAA;AAHMA,WAAAA;AAAAA,EAAA,GAAA,QAAA,CAAA,CAAA;ACwCA,MAAA,0BAAAC,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;;;;;;;;;;;;;;;;;;;AC5CZ,YAAM,UAAUC,IAAAA,SAAS,MAAM,MAAM,OAAO,MAAM,QAAQ;AAE1D,YAAM,OAAOA,IAAAA,SAAS,MAAM,MAAM,WAAW,WAAW,MAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC8BrD,MAAA,iCAAAC,kBAAL;AACNA,kBAAA,MAAO,IAAA;AACPA,kBAAA,OAAQ,IAAA;AACRA,kBAAA,KAAM,IAAA;AAHKA,WAAAA;AAAAA,EAAA,GAAA,gBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AC/BZ,YAAM,QAAQD,IAAAA,SAAS;AAAA,QACtB,MAAM;AACL,iBAAO,MAAM;AAAA,QACd;AAAA,QACA,IAAIE,QAAO;AACV,eAAK,qBAAqBA,MAAK;AAAA,QAChC;AAAA,MAAA,CACA;AAEK,YAAA,cAAcF,IAAAA,SAAS,MAAM;AAC9B,YAAA,MAAM,cAAc,CAAC,MAAM;AAAc,iBAAA;AACzC,YAAA,MAAM,gBAAgB,aAAa;AAAa,iBAAA;AAEpD,eAAO,MAAM;AAAA,MAAA,CACb;AAED,YAAM,QAAQ,MAAM;AACnB,aAAK,qBAAqB,EAAE;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/README.md CHANGED
@@ -1,86 +1,63 @@
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
+ Компоненты поставляются в двух форматах:
6
+
7
+ - amd (requirejs)
8
+ - es
9
+
10
+ Компоненты делятся на разные модули и доступны через импорт этих модулей.
11
+
12
+ Каждый модуль находится в отдельной папке, соответствующей имени модулю.
13
+
14
+ Все стили модулей находятся в корневой папке в файлах соответствующих имени модулю.
15
+
16
+ Список всех компонентов см. на [npmjs](https://www.npmjs.com/package/topvisor-ui?activeTab=code).
17
+
18
+ ## Другие ресурсы
19
+
20
+ - [core.css](core.css) - основная палитра цветов и стили компонентов
21
+ - [light.css](light.css) - светлая тема
22
+ - [dark.css](dark.css) - темная тема
23
+
24
+ ## Подключение стилей
25
+
26
+ Стили компонентов подгружаются автоматически.
27
+
28
+ Стили core.css необходимо подгрузить на страницу.
29
+
30
+ ```js
31
+ import '@topvisor/ui/core.css';
32
+ ```
33
+
34
+ Стили темы необходимо подгрузить на страницу.
35
+
36
+ Для смены темы необходимо подгрузить файл стилей необходимой темы и сразу отключить стили предыдущей темы.
37
+
38
+ ```js
39
+ import '@topvisor/ui/light.css';
40
+ ```
41
+
42
+ Стили icomoon необходимо подгрузить на страницу.
43
+
44
+ ```js
45
+ import '@topvisor/ui/icomoon/style.css';
46
+ ```
47
+
48
+ ## Подключение компонентов
49
+
50
+ Пример подключения библиотеки Forms и компонента Button:
51
+
52
+ ```javascript
53
+ requirejs(['@topvisor/ui/forms/forms.amd'], ({Button}) => {
54
+ console.log(Button);
55
+ });
56
+
57
+ requirejs(['@topvisor/ui/forms/forms.amd'], Forms => {
58
+ const { Button } = Forms;
59
+
60
+ console.log(Forms);
61
+ console.log(Button);
62
+ });
86
63
  ```
@@ -16,7 +16,6 @@ define(["exports", "vue"], function(exports, vue) {
16
16
  };
17
17
  }
18
18
  });
19
- const icon_vue_vue_type_style_index_0_lang = "";
20
19
  exports.Icon = _sfc_main;
21
20
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
22
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"common.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"common.amd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -15,7 +15,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15
15
  };
16
16
  }
17
17
  });
18
- const icon_vue_vue_type_style_index_0_lang = "";
19
18
  export {
20
19
  _sfc_main as Icon
21
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"common.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}