plugin-ui-for-kzt 0.0.8 → 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.
- package/README.md +21 -9
- package/example/App.vue +355 -0
- package/example/index.html +12 -0
- package/example/main.ts +8 -0
- package/example/shims-vue.d.ts +5 -0
- package/package.json +17 -7
- package/src/assets/icons/arrow-down.svg +3 -0
- package/src/assets/icons/calendar.svg +12 -0
- package/src/assets/icons/checkbox-circle.svg +3 -0
- package/src/assets/icons/checkbox.svg +3 -0
- package/src/assets/icons/email-sms.svg +4 -0
- package/src/assets/icons/help.svg +3 -0
- package/src/assets/icons/kg.svg +16 -0
- package/src/assets/icons/kz.svg +42 -0
- package/src/assets/icons/loader.svg +13 -0
- package/src/assets/icons/ru.svg +12 -0
- package/src/assets/icons/uz.svg +26 -0
- package/src/components/BaseBreadCrumbs/BaseBreadCrumbs.vue +142 -0
- package/src/components/BaseBreadCrumbs/README.md +49 -0
- package/src/components/BaseButton/BaseButton.vue +489 -0
- package/src/components/BaseButton/README.md +53 -0
- package/src/components/BaseCalendar/BaseCalendar.vue +231 -0
- package/src/components/BaseCalendar/README.md +126 -0
- package/src/components/BaseCheckbox/BaseCheckbox.vue +252 -0
- package/src/components/BaseCheckbox/README.md +110 -0
- package/src/components/BaseDropdown/BaseDropdown.vue +160 -0
- package/src/components/BaseDropdown/README.md +91 -0
- package/src/components/BaseIcon/BaseIcon.vue +47 -0
- package/src/components/BaseIcon/README.md +35 -0
- package/src/components/BaseInput/BaseInput.vue +300 -0
- package/src/components/BaseInput/README.md +85 -0
- package/src/components/BaseInputCalendar/BaseInputCalendar.vue +242 -0
- package/src/components/BaseInputCalendar/README.md +84 -0
- package/src/components/BaseInputCurrency/BaseInputCurrency.vue +198 -0
- package/src/components/BaseInputCurrency/README.md +57 -0
- package/src/components/BaseInputEmail/BaseInputEmail.vue +89 -0
- package/src/components/BaseInputEmail/README.md +71 -0
- package/src/components/BaseInputPhone/BaseInputPhone.vue +175 -0
- package/src/components/BaseLoader/BaseLoader.vue +45 -0
- package/src/components/BaseLoader/README.md +29 -0
- package/src/components/BaseOpenedListItem/BaseOpenedListItem.vue +216 -0
- package/src/components/BaseOpenedListItem/README.md +67 -0
- package/src/components/BaseRadio/BaseRadio.vue +283 -0
- package/src/components/BaseRadio/README.md +74 -0
- package/src/components/BaseSegmentedButtons/BaseSegmentedButtons.vue +89 -0
- package/src/components/BaseSegmentedButtons/README.md +75 -0
- package/src/components/BaseSelect/BaseSelect.vue +370 -0
- package/src/components/BaseSelect/README.md +95 -0
- package/src/components/BaseSiteInput/BaseSiteInput.vue +153 -0
- package/src/components/BaseTextarea/BaseTextarea.vue +212 -0
- package/src/components/BaseTextarea/README.md +75 -0
- package/src/components/BaseToggle/BaseToggle.vue +271 -0
- package/src/components/BaseToggle/README.md +76 -0
- package/src/components/BaseTooltip/BaseTooltip.vue +318 -0
- package/src/components/BaseTooltip/README.md +74 -0
- package/src/components/Modal/Modal.vue +21 -23
- package/src/components/Spinner/Spinner.vue +2 -1
- package/src/composables/kit/color.ts +14 -0
- package/src/composables/kit/interactive.ts +53 -0
- package/src/composables/kit/size.ts +15 -0
- package/src/composables/kit/state.ts +28 -0
- package/src/composables/kit/style.ts +18 -0
- package/src/composables/kit/utils.ts +7 -0
- package/src/icons/index.ts +9 -0
- package/src/index.ts +93 -2
- package/src/plugins/modalPlugin.ts +22 -9
- package/src/shims-context.d.ts +19 -0
- package/src/styles/index.scss +2 -1
- package/src/styles/root.scss +167 -0
- package/src/styles/variables.scss +160 -0
- package/src/types/breadcrumbs.d.ts +13 -0
- package/src/types/button.d.ts +13 -0
- package/src/types/calendar.d.ts +16 -0
- package/src/types/checkbox-radio.d.ts +15 -0
- package/src/types/dropdown.d.ts +20 -0
- package/src/types/icon.d.ts +8 -0
- package/src/types/input.d.ts +56 -0
- package/src/types/toggle.d.ts +12 -0
- package/src/types/tooltip.d.ts +8 -0
- package/src/types/utils.d.ts +37 -0
- package/src/vue-virtual-scroller.d.ts +9 -0
- package/tsconfig.json +6 -3
- package/webpack.config.js +90 -35
- package/dist/index.js +0 -4922
- package/dist/types/components/Toaster/timer.d.ts +0 -12
- package/dist/types/index.d.ts +0 -11
- package/dist/types/plugins/modalPlugin.d.ts +0 -16
- package/dist/types/plugins/toasterPlugin.d.ts +0 -26
- package/dist/types/store/modal.d.ts +0 -11
- package/dist/types/types/index.d.ts +0 -4
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ICoreStyle } from '../../types/utils';
|
|
2
|
+
import { computed } from 'vue';
|
|
3
|
+
|
|
4
|
+
export function useKitStyle(props: ICoreStyle) {
|
|
5
|
+
const styleClassList = computed(() => {
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
'--is-outline': props.outline,
|
|
9
|
+
'--is-rounded': props.rounded,
|
|
10
|
+
'--is-underline': props.underline,
|
|
11
|
+
},
|
|
12
|
+
];
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
styleClassList,
|
|
17
|
+
};
|
|
18
|
+
}
|
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 = {
|
|
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 {
|
|
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
|
+
};
|
|
@@ -30,18 +30,17 @@ export default {
|
|
|
30
30
|
// Очищаем контейнер
|
|
31
31
|
modalContainer.innerHTML = "";
|
|
32
32
|
|
|
33
|
+
// Обновляем data-атрибут и класс
|
|
34
|
+
if (newModals.length > 1) {
|
|
35
|
+
modalContainer.classList.add("modal");
|
|
36
|
+
} else {
|
|
37
|
+
modalContainer.classList.remove("modal");
|
|
38
|
+
}
|
|
39
|
+
|
|
33
40
|
// Добавляем модалки в DOM
|
|
34
41
|
newModals.forEach((modal) => {
|
|
35
42
|
modalContainer.dataset.modalId = String(modal.id);
|
|
36
|
-
|
|
37
|
-
modalContainer.addEventListener("click", (event) => {
|
|
38
|
-
console.log(`Closing modal with id: ${modal.id}`);
|
|
39
|
-
console.log("this click on background", modalStore.modals);
|
|
40
|
-
if (modalStore.modals.length === 1) modalContainer.classList.remove("modal")
|
|
41
|
-
modalStore.closeModal(modal.id);
|
|
42
|
-
});
|
|
43
43
|
modalContainer.setAttribute("name", modal.name);
|
|
44
|
-
modalContainer.classList.add("modal");
|
|
45
44
|
|
|
46
45
|
const modalApp = createApp({
|
|
47
46
|
render() {
|
|
@@ -49,17 +48,31 @@ export default {
|
|
|
49
48
|
options: modal.options,
|
|
50
49
|
name: modal.name,
|
|
51
50
|
onClose: () => {
|
|
52
|
-
modalContainer.classList.remove("modal");
|
|
53
51
|
modalStore.closeModal(modal.id);
|
|
54
52
|
},
|
|
55
53
|
});
|
|
56
54
|
},
|
|
57
55
|
});
|
|
56
|
+
|
|
58
57
|
modalApp.mount(modalContainer);
|
|
59
58
|
});
|
|
60
59
|
},
|
|
61
60
|
{deep: true}
|
|
62
61
|
);
|
|
62
|
+
// ✅ Добавляем ОДИН обработчик клика по фону
|
|
63
|
+
modalContainer.addEventListener("click", (event) => {
|
|
64
|
+
console.log("click on background", modalStore.modals.length);
|
|
65
|
+
|
|
66
|
+
if (modalStore.modals.length > 0) {
|
|
67
|
+
const lastModal = modalStore.modals[modalStore.modals.length - 1];
|
|
68
|
+
modalStore.closeModal(lastModal.id);
|
|
69
|
+
|
|
70
|
+
// Удаляем класс, если это была последняя модалка
|
|
71
|
+
if (modalStore.modals.length <= 1) {
|
|
72
|
+
modalContainer.classList.remove("modal");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
63
76
|
},
|
|
64
77
|
};
|
|
65
78
|
|
|
@@ -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
|
+
}
|
package/src/styles/index.scss
CHANGED
|
@@ -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;
|