plugin-ui-for-kzt 0.0.9 → 0.0.10

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 (93) hide show
  1. package/example/App.vue +355 -0
  2. package/example/index.html +12 -0
  3. package/example/main.ts +8 -0
  4. package/example/shims-vue.d.ts +5 -0
  5. package/package.json +17 -7
  6. package/src/assets/icons/arrow-down.svg +3 -0
  7. package/src/assets/icons/calendar.svg +12 -0
  8. package/src/assets/icons/checkbox-circle.svg +3 -0
  9. package/src/assets/icons/checkbox.svg +3 -0
  10. package/src/assets/icons/email-sms.svg +4 -0
  11. package/src/assets/icons/help.svg +3 -0
  12. package/src/assets/icons/kg.svg +16 -0
  13. package/src/assets/icons/kz.svg +42 -0
  14. package/src/assets/icons/loader.svg +13 -0
  15. package/src/assets/icons/ru.svg +12 -0
  16. package/src/assets/icons/uz.svg +26 -0
  17. package/src/components/BaseBreadCrumbs/BaseBreadCrumbs.vue +142 -0
  18. package/src/components/BaseBreadCrumbs/README.md +49 -0
  19. package/src/components/BaseButton/BaseButton.vue +489 -0
  20. package/src/components/BaseButton/README.md +53 -0
  21. package/src/components/BaseCalendar/BaseCalendar.vue +231 -0
  22. package/src/components/BaseCalendar/README.md +126 -0
  23. package/src/components/BaseCheckbox/BaseCheckbox.vue +252 -0
  24. package/src/components/BaseCheckbox/README.md +110 -0
  25. package/src/components/BaseDropdown/BaseDropdown.vue +160 -0
  26. package/src/components/BaseDropdown/README.md +91 -0
  27. package/src/components/BaseIcon/BaseIcon.vue +47 -0
  28. package/src/components/BaseIcon/README.md +35 -0
  29. package/src/components/BaseInput/BaseInput.vue +300 -0
  30. package/src/components/BaseInput/README.md +85 -0
  31. package/src/components/BaseInputCalendar/BaseInputCalendar.vue +242 -0
  32. package/src/components/BaseInputCalendar/README.md +84 -0
  33. package/src/components/BaseInputCurrency/BaseInputCurrency.vue +198 -0
  34. package/src/components/BaseInputCurrency/README.md +57 -0
  35. package/src/components/BaseInputEmail/BaseInputEmail.vue +89 -0
  36. package/src/components/BaseInputEmail/README.md +71 -0
  37. package/src/components/BaseInputPhone/BaseInputPhone.vue +175 -0
  38. package/src/components/BaseLoader/BaseLoader.vue +45 -0
  39. package/src/components/BaseLoader/README.md +29 -0
  40. package/src/components/BaseOpenedListItem/BaseOpenedListItem.vue +216 -0
  41. package/src/components/BaseOpenedListItem/README.md +67 -0
  42. package/src/components/BaseRadio/BaseRadio.vue +283 -0
  43. package/src/components/BaseRadio/README.md +74 -0
  44. package/src/components/BaseSegmentedButtons/BaseSegmentedButtons.vue +89 -0
  45. package/src/components/BaseSegmentedButtons/README.md +75 -0
  46. package/src/components/BaseSelect/BaseSelect.vue +370 -0
  47. package/src/components/BaseSelect/README.md +95 -0
  48. package/src/components/BaseSiteInput/BaseSiteInput.vue +153 -0
  49. package/src/components/BaseTextarea/BaseTextarea.vue +212 -0
  50. package/src/components/BaseTextarea/README.md +75 -0
  51. package/src/components/BaseToggle/BaseToggle.vue +271 -0
  52. package/src/components/BaseToggle/README.md +76 -0
  53. package/src/components/BaseTooltip/BaseTooltip.vue +318 -0
  54. package/src/components/BaseTooltip/README.md +74 -0
  55. package/src/components/Modal/Modal.vue +3 -1
  56. package/src/components/Spinner/Spinner.vue +2 -1
  57. package/src/composables/kit/color.ts +14 -0
  58. package/src/composables/kit/interactive.ts +53 -0
  59. package/src/composables/kit/size.ts +15 -0
  60. package/src/composables/kit/state.ts +28 -0
  61. package/src/composables/kit/style.ts +18 -0
  62. package/src/composables/kit/utils.ts +7 -0
  63. package/src/icons/index.ts +9 -0
  64. package/src/index.ts +93 -2
  65. package/src/shims-context.d.ts +19 -0
  66. package/src/styles/index.scss +2 -1
  67. package/src/styles/root.scss +167 -0
  68. package/src/styles/variables.scss +160 -0
  69. package/src/types/breadcrumbs.d.ts +13 -0
  70. package/src/types/button.d.ts +13 -0
  71. package/src/types/calendar.d.ts +16 -0
  72. package/src/types/checkbox-radio.d.ts +15 -0
  73. package/src/types/dropdown.d.ts +20 -0
  74. package/src/types/icon.d.ts +8 -0
  75. package/src/types/input.d.ts +56 -0
  76. package/src/types/toggle.d.ts +12 -0
  77. package/src/types/tooltip.d.ts +8 -0
  78. package/src/types/utils.d.ts +37 -0
  79. package/src/vue-virtual-scroller.d.ts +9 -0
  80. package/tsconfig.json +3 -1
  81. package/webpack.config.js +90 -35
  82. package/dist/components/DataTable/DataTable.vue.d.ts +0 -3
  83. package/dist/components/Modal/Modal.vue.d.ts +0 -3
  84. package/dist/components/Spinner/Spinner.vue.d.ts +0 -3
  85. package/dist/components/Toaster/Toaster.vue.d.ts +0 -3
  86. package/dist/components/Toaster/timer.d.ts +0 -12
  87. package/dist/components/Tooltip/Tooltip.vue.d.ts +0 -3
  88. package/dist/index.d.ts +0 -11
  89. package/dist/index.js +0 -4929
  90. package/dist/plugins/modalPlugin.d.ts +0 -17
  91. package/dist/plugins/toasterPlugin.d.ts +0 -26
  92. package/dist/store/modal.d.ts +0 -11
  93. package/dist/types/index.d.ts +0 -5
package/src/index.ts CHANGED
@@ -5,8 +5,70 @@ import Tooltip from "./components/Tooltip/Tooltip.vue";
5
5
  import Spinner from "./components/Spinner/Spinner.vue";
6
6
  import ModalPlugin, { useModal } from "./plugins/modalPlugin";
7
7
  import ToasterPlugin, { useToast } from "./plugins/toasterPlugin";
8
+ import "./icons"; // Импортируем иконки для генерации спрайта
9
+ import "./styles/root.scss";
10
+ import BaseIcon from "./components/BaseIcon/BaseIcon.vue";
11
+ import BaseBreadCrumbs from "./components/BaseBreadCrumbs/BaseBreadCrumbs.vue";
12
+ import BaseButton from "./components/BaseButton/BaseButton.vue";
13
+ import BaseLoader from "./components/BaseLoader/BaseLoader.vue";
14
+ import BaseCalendar from "./components/BaseCalendar/BaseCalendar.vue";
15
+ import BaseCheckbox from "./components/BaseCheckbox/BaseCheckbox.vue";
16
+ import BaseRadio from "./components/BaseRadio/BaseRadio.vue";
17
+ import BaseTextarea from "./components/BaseTextarea/BaseTextarea.vue";
18
+ import BaseToggle from "./components/BaseToggle/BaseToggle.vue";
19
+ import BaseTooltip from "./components/BaseTooltip/BaseTooltip.vue";
20
+ import BaseInput from "./components/BaseInput/BaseInput.vue";
21
+ import BaseInputEmail from "./components/BaseInputEmail/BaseInputEmail.vue";
22
+ import BaseInputCalendar from "./components/BaseInputCalendar/BaseInputCalendar.vue";
23
+ import BaseOpenedListItem from "./components/BaseOpenedListItem/BaseOpenedListItem.vue";
24
+ import BaseDropdown from "./components/BaseDropdown/BaseDropdown.vue";
25
+ import BaseSelect from "./components/BaseSelect/BaseSelect.vue";
26
+ import BaseSiteInput from "./components/BaseSiteInput/BaseSiteInput.vue";
27
+ import BaseInputPhone from "./components/BaseInputPhone/BaseInputPhone.vue";
28
+ import BaseInputCurrency from "./components/BaseInputCurrency/BaseInputCurrency.vue";
29
+ import BaseSegmentedButtons from "./components/BaseSegmentedButtons/BaseSegmentedButtons.vue";
8
30
 
9
- const components = { Modal, DataTable, Tooltip, Spinner };
31
+ const components = {
32
+ Modal,
33
+ DataTable,
34
+ Tooltip,
35
+ Spinner,
36
+ BaseIcon,
37
+ BaseBreadCrumbs,
38
+ BaseButton,
39
+ BaseLoader,
40
+ BaseCalendar,
41
+ BaseCheckbox,
42
+ BaseRadio,
43
+ BaseTextarea,
44
+ BaseToggle,
45
+ BaseTooltip,
46
+ BaseInput,
47
+ BaseInputEmail,
48
+ BaseInputCalendar,
49
+ BaseOpenedListItem,
50
+ BaseDropdown,
51
+ BaseSelect,
52
+ BaseSiteInput,
53
+ BaseInputPhone,
54
+ BaseInputCurrency,
55
+ BaseSegmentedButtons
56
+ };
57
+
58
+ // Функция для загрузки sprite.svg
59
+ const loadSprite = () => {
60
+ fetch("/sprite.svg")
61
+ .then((response) => response.text())
62
+ .then((svg) => {
63
+ const div = document.createElement("div");
64
+ div.style.display = "none";
65
+ div.innerHTML = svg;
66
+ document.body.appendChild(div);
67
+ })
68
+ .catch((error) => {
69
+ console.error("Ошибка загрузки SVG-спрайта:", error);
70
+ });
71
+ };
10
72
 
11
73
  export default {
12
74
  install(app: any) {
@@ -21,7 +83,36 @@ export default {
21
83
 
22
84
  app.use(ModalPlugin);
23
85
  app.use(ToasterPlugin);
86
+
87
+ loadSprite();
24
88
  },
25
89
  };
26
90
 
27
- export { Modal, DataTable, Tooltip, Spinner, useModal, useToast };
91
+ export {
92
+ Modal,
93
+ DataTable,
94
+ Tooltip,
95
+ Spinner,
96
+ useModal,
97
+ useToast,
98
+ BaseIcon,
99
+ BaseBreadCrumbs,
100
+ BaseButton,
101
+ BaseLoader,
102
+ BaseCalendar,
103
+ BaseCheckbox,
104
+ BaseRadio,
105
+ BaseTextarea,
106
+ BaseToggle,
107
+ BaseTooltip,
108
+ BaseInput,
109
+ BaseInputEmail,
110
+ BaseInputCalendar,
111
+ BaseOpenedListItem,
112
+ BaseDropdown,
113
+ BaseSelect,
114
+ BaseSiteInput,
115
+ BaseInputPhone,
116
+ BaseInputCurrency,
117
+ BaseSegmentedButtons
118
+ };
@@ -0,0 +1,19 @@
1
+ declare module "*.svg?sprite" {
2
+ const content: string;
3
+ export default content;
4
+ }
5
+
6
+ declare function require(context: string): {
7
+ keys(): string[];
8
+ (id: string): any;
9
+ };
10
+ declare namespace require {
11
+ function context(
12
+ directory: string,
13
+ useSubdirectories?: boolean,
14
+ regExp?: RegExp
15
+ ): {
16
+ keys(): string[];
17
+ (id: string): any;
18
+ };
19
+ }
@@ -1,3 +1,4 @@
1
1
  body {
2
- font-family: Arial, sans-serif;
2
+ font-family: 'Roboto Condensed', 'Helvetica Neue', sans-serif;
3
+ font-size: 100%;
3
4
  }
@@ -0,0 +1,167 @@
1
+ :root {
2
+ /* Primary colors */
3
+ --primary-blue-deep: #0085BE;
4
+ --primary-blue: #0096D7;
5
+ --primary-blue-900: #1AA0DB;
6
+ --primary-blue-800: #33ABDF;
7
+ --primary-blue-700: #4DB6E3;
8
+ --primary-blue-600: #66C0E7;
9
+ --primary-blue-500: #80CAEB;
10
+ --primary-blue-400: #99D5EF;
11
+ --primary-blue-300: #B3DAEC;
12
+ --primary-blue-200: #CCEAF7;
13
+ --primary-blue-100: #E6F5FB;
14
+ --primary-blue-50: #F2FAFD;
15
+
16
+ /* Black & Grayscale */
17
+ --primary-black: #090E17;
18
+ --primary-black-900: #101828;
19
+ --primary-black-800: #1D2939;
20
+ --primary-black-700: #344054;
21
+ --primary-black-600: #475467;
22
+ --primary-black-500: #667085;
23
+ --primary-black-400: #98A2B3;
24
+ --primary-black-300: #D0D5DD;
25
+ --primary-black-200: #E4E7EC;
26
+ --primary-black-100: #F2F4F7;
27
+ --primary-black-50: #F9FAFB;
28
+ --primary-black-white: #FFFFFF;
29
+
30
+ /* Secondary colors */
31
+ --error-red-deep: #D92D20;
32
+ --error-red: #F04438;
33
+ --error-red-light-01: #F97066;
34
+ --error-red-light-02: #FDA19B;
35
+ --error-red-light-03: #FECDC9;
36
+ --error-red-light-04: #FEE4E2;
37
+ --error-red-light-05: #FEF3F2;
38
+
39
+ /* Warning colors */
40
+ --warning-orange-deep: #EE7A00;
41
+ --warning-orange: #FC9700;
42
+ --warning-orange-light-01: #FDB022;
43
+ --warning-orange-light-02: #FEC84B;
44
+ --warning-orange-light-03: #FEDF89;
45
+ --warning-orange-light-04: #FEEFC6;
46
+ --warning-orange-light-05: #FFFAEB;
47
+
48
+ /* Success colors */
49
+ --success-green-deep: #039855;
50
+ --success-green: #12B76A;
51
+ --success-green-light-01: #32D583;
52
+ --success-green-light-02: #6CE9A6;
53
+ --success-green-light-03: #A6F4C5;
54
+ --success-green-light-04: #D1FADF;
55
+ --success-green-light-05: #ECFDF3;
56
+
57
+ /* Primary text colors */
58
+ --primary-text-primary: #090E17;
59
+ --primary-text-secondary: #344054;
60
+ --primary-text-tertiary: #667085;
61
+ --primary-text-quaternary: #98A2B3;
62
+ --primary-text-disabled-default: #D0D5DD;
63
+ --primary-text-on-color: #FFFFFF;
64
+ --primary-text-on-color-disabled: rgb(255 255 255 / 60%);
65
+
66
+ /* Secondary text colors */
67
+ --secondary-text-link-default-focus: #0096D7;
68
+ --secondary-text-link-hover: #4DB6E3;
69
+ --secondary-text-link-pressed: #0085BE;
70
+ --secondary-text-link-disabled: #98A2B3;
71
+ --secondary-text-gray-link-default-focus: #090E17;
72
+ --secondary-text-gray-link-hover: #667085;
73
+ --secondary-text-gray-link-pressed: #344054;
74
+ --secondary-text-gray-link-disabled: #98A2B3;
75
+ --secondary-text-positive: #12B76A;
76
+ --secondary-text-negative: #F04438;
77
+
78
+ /* Background colors */
79
+ --bg-darken: #F2F4F7;
80
+ --bg-light: #FFFFFF;
81
+
82
+ /* Effects colors */
83
+ --effects-primary-focus: #CCEAF7;
84
+ --effects-gray-focus: #E4E7EC;
85
+ --effects-error-focus: #FEE4E2;
86
+ --effects-drop-shadows-100: #101828;
87
+ --effects-drop-shadows-200: #101828;
88
+ --effects-drop-shadows-300: #101828;
89
+ --effects-toggles-shadows: #101828;
90
+ --effects-drop-shadows-s: rgb(128 128 128 / 85%) blur(10px);
91
+ --effects-drop-shadows-m: rgba(128 128 128 / 80%) blur(20px);
92
+ --effects-drop-shadows-l: rgba(128 128 128 / 75%) blur(30px);
93
+
94
+
95
+ // Typography variables
96
+ --font-size-h1: 48px;
97
+ --typography-h1-bold: 700 48px/60px "Roboto Condensed", "Helvetica Neue", sans-serif;
98
+ --typography-h1-medium: 500 48px/60px "Roboto Condensed", "Helvetica Neue", sans-serif;
99
+ --typography-h1-regular: 400 48px/60px "Roboto Condensed", "Helvetica Neue", sans-serif;
100
+ --typography-h1-semibold: 600 48px/60px "Roboto Condensed", "Helvetica Neue", sans-serif;
101
+ --font-size-h2: 36px;
102
+ --typography-h2-bold: 700 36px/48px "Roboto Condensed", "Helvetica Neue", sans-serif;
103
+ --typography-h2-medium: 500 36px/48px "Roboto Condensed", "Helvetica Neue", sans-serif;
104
+ --typography-h2-regular: 400 36px/48px "Roboto Condensed", "Helvetica Neue", sans-serif;
105
+ --typography-h2-semibold: 600 36px/48px "Roboto Condensed", "Helvetica Neue", sans-serif;
106
+ --font-size-h3: 30px;
107
+ --typography-h3-bold: 700 30px/38px "Roboto Condensed", "Helvetica Neue", sans-serif;
108
+ --typography-h3-medium: 500 30px/38px "Roboto Condensed", "Helvetica Neue", sans-serif;
109
+ --typography-h3-regular: 400 30px/38px "Roboto Condensed", "Helvetica Neue", sans-serif;
110
+ --typography-h3-semibold: 600 30px/38px "Roboto Condensed", "Helvetica Neue", sans-serif;
111
+ --font-size-h4: 24px;
112
+ --typography-h4-bold: 700 24px/32px "Roboto Condensed", "Helvetica Neue", sans-serif;
113
+ --typography-h4-medium: 500 24px/32px "Roboto Condensed", "Helvetica Neue", sans-serif;
114
+ --typography-h4-regular: 400 24px/32px "Roboto Condensed", "Helvetica Neue", sans-serif;
115
+ --typography-h4-semibold: 600 24px/32px "Roboto Condensed", "Helvetica Neue", sans-serif;
116
+ --font-size-extra-large: 20px;
117
+ --font-size-large: 18px;
118
+ --font-size-medium: 16px;
119
+ --font-size-small: 14px;
120
+ --font-size-extra-small: 12px;
121
+ --typography-text-xl-bold: 700 20px/30px "Roboto Condensed", "Helvetica Neue", sans-serif;
122
+ --typography-text-xl-medium: 500 20px/30px "Roboto Condensed", "Helvetica Neue", sans-serif;
123
+ --typography-text-xl-regular: 400 20px/30px "Roboto Condensed", "Helvetica Neue", sans-serif;
124
+ --typography-text-xl-semibold: 600 20px/30px "Roboto Condensed", "Helvetica Neue", sans-serif;
125
+ --typography-text-l-bold: 700 18px/28px "Roboto Condensed", "Helvetica Neue", sans-serif;
126
+ --typography-text-l-medium: 500 18px/28px "Roboto Condensed", "Helvetica Neue", sans-serif;
127
+ --typography-text-l-regular: 400 18px/28px "Roboto Condensed", "Helvetica Neue", sans-serif;
128
+ --typography-text-l-semibold: 600 18px/28px "Roboto Condensed", "Helvetica Neue", sans-serif;
129
+ --typography-text-m-bold: 700 16px/24px "Roboto Condensed", "Helvetica Neue", sans-serif;
130
+ --typography-text-m-medium: 500 16px/24px "Roboto Condensed", "Helvetica Neue", sans-serif;
131
+ --typography-text-m-regular: 400 16px/24px "Roboto Condensed", "Helvetica Neue", sans-serif;
132
+ --typography-text-m-semibold: 600 16px/24px "Roboto Condensed", "Helvetica Neue", sans-serif;
133
+ --typography-text-s-bold: 700 14px/20px "Roboto Condensed", "Helvetica Neue", sans-serif;
134
+ --typography-text-s-medium: 500 14px/20px "Roboto Condensed", "Helvetica Neue", sans-serif;
135
+ --typography-text-s-regular: 400 14px/20px "Roboto Condensed", "Helvetica Neue", sans-serif;
136
+ --typography-text-s-semibold: 600 14px/20px "Roboto Condensed", "Helvetica Neue", sans-serif;
137
+ --typography-text-xs-bold: 700 12px/18px "Roboto Condensed", "Helvetica Neue", sans-serif;
138
+ --typography-text-xs-medium: 500 12px/18px "Roboto Condensed", "Helvetica Neue", sans-serif;
139
+ --typography-text-xs-regular: 400 12px/18px "Roboto Condensed", "Helvetica Neue", sans-serif;
140
+ --typography-text-xs-semibold: 600 12px/18px "Roboto Condensed", "Helvetica Neue", sans-serif;
141
+ --font-weight-bold: 700;
142
+ --font-weight-medium: 500;
143
+ --font-weight-regular: 400;
144
+ --font-weight-semibold: 600;
145
+ --corner-radius-xxs: 4px;
146
+ --corner-radius-xs: 8px;
147
+ --corner-radius-s: 10px;
148
+ --corner-radius-m: 12px;
149
+ --corner-radius-l: 16px;
150
+ --spacing-2xs: 2px;
151
+ --spacing-xs: 4px;
152
+ --spacing-2s: 6px;
153
+ --spacing-s: 8px;
154
+ --spacing-2m: 10px;
155
+ --spacing-m: 12px;
156
+ --spacing-2l: 14px;
157
+ --spacing-l: 16px;
158
+ --spacing-xl: 24px;
159
+ --spacing-2xl: 32px;
160
+ --spacing-3xl: 40px;
161
+ --spacing-4xl: 48px;
162
+
163
+ /* UI variables */
164
+ --transition-duration: 0.25s;
165
+ --transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
166
+ --transition: var(--transition-duration) var(--transition-timing-function);
167
+ }
@@ -0,0 +1,160 @@
1
+ /* Breakpoints */
2
+ $mobile-max-320: 'screen and (max-width: 320px)';
3
+ $mobile-max-375: 'screen and (max-width: 370px)';
4
+ $mobile-max-450: 'screen and (max-width: 450px)';
5
+ $mobile-max-576: 'screen and (max-width: 576px)';
6
+ $mobile-max-767: 'screen and (max-width: 767px)';
7
+ $tablet-max-1366: 'screen and (max-width: 1366px)';
8
+ $mobile: 'screen and (min-width: 375px)';
9
+ $mobile-landscape: 'screen and (min-width: 576px)';
10
+ $tablet: 'screen and (min-width: 768px)';
11
+ $desktop-sm: 'screen and (min-width: 1366px)';
12
+ $laptop: 'screen and (min-width: 992px)';
13
+ $laptop-lg: 'screen and (min-width: 1280px)';
14
+ $desktop: 'screen and (min-width: 1440px)';
15
+ $desktop-lg: 'screen and (min-width: 1920px)';
16
+ $retina: '(min-resolution: 1.5dppx), (min-resolution: 144dpi)';
17
+
18
+ @mixin hover {
19
+ @media (hover), (width >= 0\0) {
20
+ &:hover {
21
+ @content;
22
+ }
23
+ }
24
+ }
25
+
26
+ @mixin pressed {
27
+ @media (any-pointer: fine), (width >= 0\0) {
28
+ &:active {
29
+ @content;
30
+ }
31
+ }
32
+ }
33
+
34
+ @mixin focused {
35
+ &:focus,
36
+ &:focus-visible {
37
+ @content;
38
+ }
39
+ }
40
+
41
+
42
+ @mixin reset-list {
43
+ padding: 0;
44
+ margin: 0;
45
+ list-style: none;
46
+ }
47
+
48
+ @mixin aspect-ratio($width, $height) {
49
+ position: relative;
50
+
51
+ &::before {
52
+ display: block;
53
+ width: 100%;
54
+ padding-top: calc($height / $width) * 100%;
55
+ content: '';
56
+ }
57
+ }
58
+
59
+ @mixin text-clamp($number: 3) {
60
+ display: -webkit-box;
61
+ overflow: hidden;
62
+ text-overflow: ellipsis;
63
+ -webkit-box-orient: vertical;
64
+ -webkit-line-clamp: $number;
65
+ }
66
+
67
+ @mixin disabled-element {
68
+ cursor: not-allowed;
69
+
70
+ & > * {
71
+ pointer-events: none;
72
+ }
73
+ }
74
+
75
+ @mixin is-disabled-state {
76
+ &.--is-disabled,
77
+ &:disabled,
78
+ &[data-disabled='true'] {
79
+ @include disabled-element;
80
+
81
+ @content;
82
+ }
83
+ }
84
+
85
+ @mixin loading-element {
86
+ cursor: progress;
87
+
88
+ & > * {
89
+ pointer-events: none;
90
+ }
91
+ }
92
+
93
+ @mixin reset-button {
94
+ background: none;
95
+ border: none;
96
+ outline: none;
97
+
98
+ &:focus {
99
+ outline: none;
100
+ }
101
+ }
102
+
103
+ @mixin scrollbar {
104
+ &::-webkit-scrollbar {
105
+ width: 8px;
106
+ background: transparent;
107
+ }
108
+
109
+ &::-webkit-scrollbar-thumb {
110
+ background: var(--primary-black-200);
111
+ border: 6px solid transparent;
112
+ border-radius: 8px;
113
+ }
114
+
115
+ &::-webkit-scrollbar-button {
116
+ display: block;
117
+ height: 3px;
118
+ background-color: transparent;
119
+ }
120
+ }
121
+
122
+ .fade-enter-active,
123
+ .fade-leave-active {
124
+ transition: opacity 0.25s ease-out;
125
+ }
126
+
127
+ .fade-enter-from,
128
+ .fade-leave-to {
129
+ opacity: 0;
130
+ }
131
+
132
+ .right-enter-from {
133
+ opacity: 0;
134
+ transform: translate3d(-8px, 0, 0);
135
+ }
136
+
137
+ .right-leave-active {
138
+ opacity: 0;
139
+ transform: translate3d(8px, 0, 0);
140
+ }
141
+
142
+ .right-enter-active,
143
+ .right-leave-active {
144
+ transition:
145
+ opacity 0.25s ease-out,
146
+ transform 0.25s ease-out;
147
+ }
148
+
149
+ .top-enter-from,
150
+ .top-leave-to {
151
+ opacity: 0;
152
+ transform: translate3d(0, -8px, 0);
153
+ }
154
+
155
+ .top-enter-active,
156
+ .top-leave-active {
157
+ transition:
158
+ opacity 0.25s ease,
159
+ transform 0.25s ease;
160
+ }
@@ -0,0 +1,13 @@
1
+ import type { ICoreSize } from './utils';
2
+
3
+ interface ICoreBreadcrumbItem {
4
+ label: string
5
+ to?: string
6
+ isEllipsis?: boolean
7
+ }
8
+
9
+ interface ICoreBreadcrumbs {
10
+ crumbs: ICoreBreadcrumbItem[]
11
+ }
12
+
13
+ export type IBaseBreadCrumbProps = ICoreBreadcrumbs & ICoreSize;
@@ -0,0 +1,13 @@
1
+ import type { ICoreColor, ICoreInteractive, ICoreSize, ICoreState, ICoreStyle } from './utils';
2
+
3
+ export type ICoreButtonProps = ICoreSize & ICoreColor & ICoreInteractive & ICoreState & ICoreStyle;
4
+
5
+ interface IOptionButtonSegment {
6
+ label: string;
7
+ value: string;
8
+ }
9
+
10
+ export type TSegmentedButtonsProps = ICoreButtonProps & {
11
+ options: IOptionButtonSegment[];
12
+ modelValue: string;
13
+ }
@@ -0,0 +1,16 @@
1
+ import type { RangeConfig } from '@vuepic/vue-datepicker';
2
+ import type { ICoreSize, ICoreState } from './utils';
3
+ import type { InputProps } from './input';
4
+
5
+ export type DateRange = [Date, Date] | Date | string | null;
6
+
7
+ export interface IBaseCalendarProps {
8
+ modelValue?: DateRange
9
+ range?: boolean | RangeConfig | undefined
10
+ minDate?: Date | null
11
+ readonly?: boolean
12
+ }
13
+
14
+ export type TCoreCalendarProps = IBaseCalendarProps & ICoreSize;
15
+
16
+ export type TCoreInputCalendarProps = InputProps & ICoreSize & ICoreState & IBaseCalendarProps;
@@ -0,0 +1,15 @@
1
+ import type { ICoreSize, ICoreState } from './utils';
2
+
3
+ interface ICoreRadioProps {
4
+ id: string
5
+ modelValue: boolean;
6
+ name?: string
7
+ label?: string
8
+ subLabel?: string
9
+ labelPosition?: 'left' | 'right'
10
+ readonly?: boolean
11
+ }
12
+
13
+ interface ICoreCheckboxProps extends ICoreRadioProps {}
14
+ export type IBaseCheckboxProps = ICoreCheckboxProps & ICoreSize & ICoreState;
15
+ export type IBaseRadioProps = ICoreRadioProps & ICoreSize & ICoreState;
@@ -0,0 +1,20 @@
1
+ import type { ICoreSize, ICoreState } from './utils';
2
+
3
+ interface ICoreDropdownBaseProps {
4
+ modelValue: boolean
5
+ parentWidth?: boolean
6
+ preventControl?: boolean
7
+ autoClose?: boolean
8
+ transitionName?: string
9
+ }
10
+
11
+ interface ICoreOpenedListItemProps {
12
+ tag?: 'button'
13
+ icon?: string
14
+ postfixIcon?: string
15
+ externalIcon?: string
16
+ active?: boolean
17
+ }
18
+
19
+ export type ICoreDropdownProps = ICoreDropdownBaseProps & ICoreSize & ICoreState;
20
+ export type IBaseOpenedListItemProps = ICoreOpenedListItemProps & ICoreSize & ICoreState;
@@ -0,0 +1,8 @@
1
+ import type { ICoreSize } from './utils';
2
+
3
+
4
+ interface IIconProps{
5
+ name: string;
6
+ }
7
+
8
+ export type TIconProps = IIconProps & ICoreSize;
@@ -0,0 +1,56 @@
1
+ import type { Nullable } from './utils';
2
+ import type { ITooltipProps } from './tooltip';
3
+ import type { ICorePlaceholder, ICoreSize, ICoreState, ICoreStyle } from './utils';
4
+
5
+ export interface InputProps {
6
+ modelValue: string
7
+ id: string
8
+ mask?: string
9
+ type?: string
10
+ placeholder?: string
11
+ error?: string | boolean
12
+ readonly?: boolean
13
+ hint?: string
14
+ label?: string
15
+ tooltipOptions?: ITooltipProps
16
+ validationText?: string
17
+ }
18
+
19
+ interface IPropsBaseSiteInput extends InputProps {}
20
+
21
+ type TTextareaProps = Omit<InputProps, 'type'>;
22
+
23
+ export type ICorePropsBaseSiteInput = Omit<IPropsBaseSiteInput, 'id'> & ICoreSize;
24
+
25
+ export type ICoreInputProps = InputProps & ICoreSize & ICoreState;
26
+
27
+ export type ICoreTextareaProps = ICoreState & TTextareaProps & ICoreSize;
28
+
29
+ export type TSelectValue = Nullable<string | number | boolean>;
30
+
31
+ export interface ICoreSelectOption {
32
+ id: TSelectValue
33
+ name: string
34
+ disabled?: boolean
35
+ icon?: string
36
+ style?: [key: string]
37
+
38
+ [key: string]: string
39
+ }
40
+
41
+ export interface ICoreSelectBaseProps {
42
+ id: string
43
+ icon?: string
44
+ name?: string
45
+ readonly?: boolean
46
+ disabled?: boolean
47
+ options?: ICoreSelectOption[]
48
+ parentWidth?: boolean
49
+ multiple?: boolean
50
+ style?: [key: string]
51
+ transitionName?: string
52
+ label?: string
53
+ hint?: string
54
+ }
55
+
56
+ export type ICoreSelectProps = ICoreSelectBaseProps & ICoreSize & ICoreState & ICoreStyle & ICorePlaceholder;
@@ -0,0 +1,12 @@
1
+ import type { ICoreSize, ICoreState } from './utils';
2
+
3
+ interface ICoreToggleBaseProps {
4
+ id: string
5
+ modelValue: boolean
6
+ readonly?: boolean
7
+ label?: string
8
+ subLabel?: string
9
+ labelPosition?: 'left' | 'right'
10
+ }
11
+
12
+ export type ICoreToggleProps = ICoreToggleBaseProps & ICoreSize & ICoreState;
@@ -0,0 +1,8 @@
1
+ export interface ITooltipProps {
2
+ title: string
3
+ content?: string
4
+ arrow?: boolean
5
+ theme?: 'dark' | 'light'
6
+ position?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'left' | 'right'
7
+ trigger?: 'hover' | 'click'
8
+ }
@@ -0,0 +1,37 @@
1
+ export type Nullable<T> = T | null;
2
+
3
+ export type TCoreSize = 'large' | 'medium' | 'small' | 'extra-small' | 'custom';
4
+
5
+ export type TCoreColor = string | 'primary' | 'secondary' | 'tertiary-gray' | 'tertiary-blue' | 'quaternary-gray' | 'quaternary-blue' | 'link-blue' | 'link-critical' | 'link-gray' | 'custom';
6
+ export type TCoreInteractiveTag = 'link' | 'button' | 'span' | 'div' | 'a';
7
+
8
+ export interface ICoreSize {
9
+ size?: TCoreSize
10
+ }
11
+
12
+ export interface ICoreColor {
13
+ color?: TCoreColor
14
+ }
15
+
16
+ export interface ICoreInteractive {
17
+ tag?: TCoreInteractiveTag
18
+ }
19
+
20
+ export interface ICorePlaceholder {
21
+ placeholder?: string
22
+ }
23
+
24
+ export interface ICoreState {
25
+ selected?: boolean
26
+ active?: boolean
27
+ disabled?: boolean
28
+ required?: boolean
29
+ error?: Nullable<string | number | boolean> | undefined
30
+ loading?: boolean
31
+ }
32
+
33
+ export interface ICoreStyle {
34
+ outline?: boolean
35
+ rounded?: boolean
36
+ underline?: boolean
37
+ }
@@ -0,0 +1,9 @@
1
+ declare module 'vue-virtual-scroller' {
2
+
3
+ import type { DefineComponent } from 'vue';
4
+
5
+ export const DynamicScroller: DefineComponent;
6
+
7
+ export const DynamicScrollerItem: DefineComponent;
8
+
9
+ }