@dolanske/vui 0.3.4 → 0.5.0
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/LICENSE +673 -673
- package/README.md +41 -40
- package/dist/components/Dropdown/DropdownItem.vue.d.ts +1 -0
- package/dist/components/Flex/Flex.vue.d.ts +3 -1
- package/dist/components/Grid/Grid.vue.d.ts +3 -1
- package/dist/components/Tabs/Tabs.vue.d.ts +4 -0
- package/dist/style.css +1 -1
- package/dist/vui.js +1547 -1534
- package/package.json +68 -68
- package/src/App.vue +176 -175
- package/src/components/Accordion/Accordion.vue +91 -91
- package/src/components/Accordion/AccordionGroup.vue +43 -43
- package/src/components/Accordion/accordion.scss +81 -80
- package/src/components/Alert/Alert.vue +53 -53
- package/src/components/Alert/alert.scss +80 -80
- package/src/components/Avatar/Avatar.vue +50 -50
- package/src/components/Avatar/avatar.scss +52 -52
- package/src/components/Badge/Badge.vue +21 -21
- package/src/components/Badge/badge.scss +89 -89
- package/src/components/Breadcrumbs/BreadcrumbItem.vue +26 -26
- package/src/components/Breadcrumbs/Breadcrumbs.vue +33 -33
- package/src/components/Breadcrumbs/breadcrumbs.scss +30 -30
- package/src/components/Button/Button.vue +90 -90
- package/src/components/Button/button.scss +178 -176
- package/src/components/ButtonGroup/ButtonGroup.vue +25 -25
- package/src/components/ButtonGroup/button-group.scss +51 -51
- package/src/components/Calendar/Calendar.vue +63 -60
- package/src/components/Calendar/calendar.scss +60 -56
- package/src/components/Card/Card.vue +48 -48
- package/src/components/Card/card.scss +53 -53
- package/src/components/Checkbox/Checkbox.vue +51 -52
- package/src/components/Checkbox/checkbox.scss +75 -66
- package/src/components/CopyClipboard/CopyClipboard.vue +82 -82
- package/src/components/CopyClipboard/copy-clipboard.scss +17 -17
- package/src/components/Divider/Divider.vue +44 -44
- package/src/components/Divider/divider.scss +35 -35
- package/src/components/Drawer/Drawer.vue +97 -97
- package/src/components/Drawer/drawer.scss +36 -36
- package/src/components/Dropdown/Dropdown.vue +111 -111
- package/src/components/Dropdown/DropdownItem.vue +33 -29
- package/src/components/Dropdown/DropdownTitle.vue +8 -8
- package/src/components/Dropdown/dropdown-item.scss +77 -0
- package/src/components/Dropdown/dropdown.scss +39 -117
- package/src/components/Flex/Flex.vue +113 -106
- package/src/components/Grid/Grid.vue +60 -54
- package/src/components/Input/Counter.vue +70 -70
- package/src/components/Input/Dropzone.vue +65 -65
- package/src/components/Input/File.vue +15 -15
- package/src/components/Input/Input.vue +121 -121
- package/src/components/Input/Password.vue +47 -47
- package/src/components/Input/Textarea.vue +76 -76
- package/src/components/Input/input.scss +208 -208
- package/src/components/Kbd/Kbd.vue +48 -48
- package/src/components/Kbd/KbdGroup.vue +31 -31
- package/src/components/Kbd/kbd.scss +18 -18
- package/src/components/Modal/Confirm.vue +56 -56
- package/src/components/Modal/Modal.vue +91 -91
- package/src/components/Modal/modal.scss +49 -49
- package/src/components/OTP/OTP.vue +133 -133
- package/src/components/OTP/OTPItem.vue +37 -37
- package/src/components/OTP/otp.scss +83 -83
- package/src/components/Pagination/Pagination.vue +74 -74
- package/src/components/Pagination/pagination.ts +78 -78
- package/src/components/Popout/Popout.vue +42 -42
- package/src/components/Popout/popout.scss +8 -8
- package/src/components/Progress/Progress.vue +90 -90
- package/src/components/Progress/progress.scss +41 -41
- package/src/components/Radio/Radio.vue +36 -36
- package/src/components/Radio/RadioGroup.vue +40 -40
- package/src/components/Radio/radio.scss +68 -59
- package/src/components/Select/Select.vue +180 -180
- package/src/components/Select/select.scss +44 -44
- package/src/components/Sheet/Sheet.vue +92 -92
- package/src/components/Sheet/sheet.scss +60 -60
- package/src/components/Sidebar/Sidebar.vue +102 -0
- package/src/components/Sidebar/sidebar.scss +123 -0
- package/src/components/Skeleton/Skeleton.vue +43 -43
- package/src/components/Skeleton/skeleton.scss +14 -14
- package/src/components/Spinner/Spinner.vue +42 -42
- package/src/components/Spinner/spinner.scss +46 -46
- package/src/components/Switch/Switch.vue +30 -30
- package/src/components/Switch/switch.scss +60 -52
- package/src/components/Table/Cell.vue +23 -23
- package/src/components/Table/Header.vue +59 -59
- package/src/components/Table/Row.vue +9 -9
- package/src/components/Table/SelectAll.vue +23 -23
- package/src/components/Table/SelectRow.vue +29 -29
- package/src/components/Table/Table.vue +66 -66
- package/src/components/Table/table.scss +134 -134
- package/src/components/Table/table.ts +244 -244
- package/src/components/Tabs/Tab.vue +27 -27
- package/src/components/Tabs/Tabs.vue +89 -82
- package/src/components/Tabs/tabs.scss +80 -79
- package/src/components/Toast/Toasts.vue +47 -47
- package/src/components/Toast/toast.scss +41 -41
- package/src/components/Toast/toast.ts +68 -68
- package/src/components/Tooltip/Tooltip.vue +86 -86
- package/src/components/Tooltip/tooltip.scss +4 -4
- package/src/index.scss +1 -1
- package/src/index.ts +119 -119
- package/src/internal/Backdrop/Backdrop.vue +22 -22
- package/src/internal/Backdrop/backdrop.scss +28 -28
- package/src/main.ts +5 -5
- package/src/shared/helpers.ts +74 -74
- package/src/shared/types.ts +29 -29
- package/src/style/animation.scss +21 -21
- package/src/style/core.scss +150 -148
- package/src/style/layout.scss +168 -136
- package/src/style/media-query.scss +29 -29
- package/src/style/reset.scss +135 -135
- package/src/style/{fonts.scss → text.scss} +74 -53
- package/src/style/tooltip.scss +128 -128
- package/src/style/typography.scss +338 -338
- package/src/style/utils.scss +36 -36
package/src/shared/helpers.ts
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
export function createArray(length: number, startOffset: number = 0): number[] {
|
|
2
|
-
return Array
|
|
3
|
-
.from({ length })
|
|
4
|
-
.map((_, index) => startOffset + index)
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
// Searches through the input and checkes wether it contains match
|
|
8
|
-
// It searches the input by splitting it by whitespace and matching each
|
|
9
|
-
// word against the string
|
|
10
|
-
export function searchString(match: string | string[], input: string): boolean {
|
|
11
|
-
if (!match)
|
|
12
|
-
return false
|
|
13
|
-
|
|
14
|
-
const joint: string = Array.isArray(match) ? match.join(' ') : match
|
|
15
|
-
|
|
16
|
-
const split = input.trim().split(/\s+/)
|
|
17
|
-
return split.every(s => joint.toLowerCase().includes(s.toLowerCase()))
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function getMaybeRefLength(value: string | number): number {
|
|
21
|
-
return typeof value === 'number' ? value : value.length
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export function isNil(value: any): value is undefined | null {
|
|
25
|
-
return value === undefined || value === null
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Checks wether a color is light or dark, depending on
|
|
30
|
-
*/
|
|
31
|
-
export function calculateColorLightness(r: number, g: number, b: number): 'dark' | 'light' {
|
|
32
|
-
const yiq = (r * 299 + g * 587 + b * 114) / 1000
|
|
33
|
-
return yiq >= 128 ? 'light' : 'dark'
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Convert a CSS rgb string to a tuple of actual r,g,b values
|
|
38
|
-
*
|
|
39
|
-
* 'rgb(12,16,24)' --> [12, 16, 24]
|
|
40
|
-
*/
|
|
41
|
-
export function stringRgbToValues(rgbString: string): [number, number, number] {
|
|
42
|
-
return rgbString.match(/\d+/g)!.map(Number) as any as [number, number, number]
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export function randomMinMax(min: number, max: number): number {
|
|
46
|
-
min = Math.ceil(min)
|
|
47
|
-
max = Math.floor(max)
|
|
48
|
-
return Math.floor(Math.random() * (max - min + 1)) + min
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function delay(amount: number): Promise<any> {
|
|
52
|
-
return new Promise(r => setTimeout(r, amount))
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function setCharAt(str: string, char: string | number, index: number): string {
|
|
56
|
-
if (str.length === 0)
|
|
57
|
-
return char.toString()
|
|
58
|
-
return str.substring(0, index) + char + str.substring(index + 1)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Takes in a value and if it is a number, appends "px" to it, otherwise returns
|
|
63
|
-
* the original value.
|
|
64
|
-
*
|
|
65
|
-
*/
|
|
66
|
-
export function formatUnitValue(value: string | number, unit: string = 'px'): string {
|
|
67
|
-
return typeof value === 'number'
|
|
68
|
-
? `${value}${unit}`
|
|
69
|
-
// If last value of string is NOT a number, do not add "px" at the end
|
|
70
|
-
// eslint-disable-next-line unicorn/prefer-number-properties
|
|
71
|
-
: isNaN(Number(value[value.length - 1]))
|
|
72
|
-
? value
|
|
73
|
-
: `${value}${unit}`
|
|
74
|
-
}
|
|
1
|
+
export function createArray(length: number, startOffset: number = 0): number[] {
|
|
2
|
+
return Array
|
|
3
|
+
.from({ length })
|
|
4
|
+
.map((_, index) => startOffset + index)
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// Searches through the input and checkes wether it contains match
|
|
8
|
+
// It searches the input by splitting it by whitespace and matching each
|
|
9
|
+
// word against the string
|
|
10
|
+
export function searchString(match: string | string[], input: string): boolean {
|
|
11
|
+
if (!match)
|
|
12
|
+
return false
|
|
13
|
+
|
|
14
|
+
const joint: string = Array.isArray(match) ? match.join(' ') : match
|
|
15
|
+
|
|
16
|
+
const split = input.trim().split(/\s+/)
|
|
17
|
+
return split.every(s => joint.toLowerCase().includes(s.toLowerCase()))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function getMaybeRefLength(value: string | number): number {
|
|
21
|
+
return typeof value === 'number' ? value : value.length
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function isNil(value: any): value is undefined | null {
|
|
25
|
+
return value === undefined || value === null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Checks wether a color is light or dark, depending on
|
|
30
|
+
*/
|
|
31
|
+
export function calculateColorLightness(r: number, g: number, b: number): 'dark' | 'light' {
|
|
32
|
+
const yiq = (r * 299 + g * 587 + b * 114) / 1000
|
|
33
|
+
return yiq >= 128 ? 'light' : 'dark'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Convert a CSS rgb string to a tuple of actual r,g,b values
|
|
38
|
+
*
|
|
39
|
+
* 'rgb(12,16,24)' --> [12, 16, 24]
|
|
40
|
+
*/
|
|
41
|
+
export function stringRgbToValues(rgbString: string): [number, number, number] {
|
|
42
|
+
return rgbString.match(/\d+/g)!.map(Number) as any as [number, number, number]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function randomMinMax(min: number, max: number): number {
|
|
46
|
+
min = Math.ceil(min)
|
|
47
|
+
max = Math.floor(max)
|
|
48
|
+
return Math.floor(Math.random() * (max - min + 1)) + min
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function delay(amount: number): Promise<any> {
|
|
52
|
+
return new Promise(r => setTimeout(r, amount))
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function setCharAt(str: string, char: string | number, index: number): string {
|
|
56
|
+
if (str.length === 0)
|
|
57
|
+
return char.toString()
|
|
58
|
+
return str.substring(0, index) + char + str.substring(index + 1)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Takes in a value and if it is a number, appends "px" to it, otherwise returns
|
|
63
|
+
* the original value.
|
|
64
|
+
*
|
|
65
|
+
*/
|
|
66
|
+
export function formatUnitValue(value: string | number, unit: string = 'px'): string {
|
|
67
|
+
return typeof value === 'number'
|
|
68
|
+
? `${value}${unit}`
|
|
69
|
+
// If last value of string is NOT a number, do not add "px" at the end
|
|
70
|
+
// eslint-disable-next-line unicorn/prefer-number-properties
|
|
71
|
+
: isNaN(Number(value[value.length - 1]))
|
|
72
|
+
? value
|
|
73
|
+
: `${value}${unit}`
|
|
74
|
+
}
|
package/src/shared/types.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import type { ComponentPublicInstance } from 'vue'
|
|
2
|
-
|
|
3
|
-
export enum Size {
|
|
4
|
-
s = 's',
|
|
5
|
-
m = 'm',
|
|
6
|
-
l = 'l',
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export type Sizes = 's' | 'm' | 'l'
|
|
10
|
-
|
|
11
|
-
export type DeepRequired<T> = { [K in keyof T]: DeepRequired<T[K]> } & Required<T>
|
|
12
|
-
|
|
13
|
-
export type VueClass = string | Record<string, | boolean> | Array<string | Record<string, string | boolean>>
|
|
14
|
-
|
|
15
|
-
// FLoating UI imported types were ruining the build so here we go
|
|
16
|
-
export type PopoutMaybeElement<T> = T | ComponentPublicInstance | null | undefined
|
|
17
|
-
export type Placement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end'
|
|
18
|
-
|
|
19
|
-
export type Space = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl'
|
|
20
|
-
export enum SpaceSize {
|
|
21
|
-
xxs = 'xxs',
|
|
22
|
-
xs = 'xs',
|
|
23
|
-
s = 's',
|
|
24
|
-
m = 'm',
|
|
25
|
-
l = 'l',
|
|
26
|
-
xl = 'xl',
|
|
27
|
-
xxl = 'xxl',
|
|
28
|
-
xxxl = 'xxxl',
|
|
29
|
-
}
|
|
1
|
+
import type { ComponentPublicInstance } from 'vue'
|
|
2
|
+
|
|
3
|
+
export enum Size {
|
|
4
|
+
s = 's',
|
|
5
|
+
m = 'm',
|
|
6
|
+
l = 'l',
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type Sizes = 's' | 'm' | 'l'
|
|
10
|
+
|
|
11
|
+
export type DeepRequired<T> = { [K in keyof T]: DeepRequired<T[K]> } & Required<T>
|
|
12
|
+
|
|
13
|
+
export type VueClass = string | Record<string, | boolean> | Array<string | Record<string, string | boolean>>
|
|
14
|
+
|
|
15
|
+
// FLoating UI imported types were ruining the build so here we go
|
|
16
|
+
export type PopoutMaybeElement<T> = T | ComponentPublicInstance | null | undefined
|
|
17
|
+
export type Placement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end'
|
|
18
|
+
|
|
19
|
+
export type Space = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl'
|
|
20
|
+
export enum SpaceSize {
|
|
21
|
+
xxs = 'xxs',
|
|
22
|
+
xs = 'xs',
|
|
23
|
+
s = 's',
|
|
24
|
+
m = 'm',
|
|
25
|
+
l = 'l',
|
|
26
|
+
xl = 'xl',
|
|
27
|
+
xxl = 'xxl',
|
|
28
|
+
xxxl = 'xxxl',
|
|
29
|
+
}
|
package/src/style/animation.scss
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
.fade-enter-active,
|
|
2
|
-
.fade-leave-active {
|
|
3
|
-
transition: var(--transition);
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.fade-enter-from,
|
|
7
|
-
.fade-leave-to {
|
|
8
|
-
opacity: 0;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.fade-up-enter-active,
|
|
12
|
-
.fade-up-leave-active {
|
|
13
|
-
transition: var(--transition);
|
|
14
|
-
transition-property: transform, opacity;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.fade-up-enter-from,
|
|
18
|
-
.fade-up-leave-to {
|
|
19
|
-
opacity: 0;
|
|
20
|
-
transform: translateY(8px);
|
|
21
|
-
}
|
|
1
|
+
.fade-enter-active,
|
|
2
|
+
.fade-leave-active {
|
|
3
|
+
transition: var(--transition);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.fade-enter-from,
|
|
7
|
+
.fade-leave-to {
|
|
8
|
+
opacity: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.fade-up-enter-active,
|
|
12
|
+
.fade-up-leave-active {
|
|
13
|
+
transition: var(--transition);
|
|
14
|
+
transition-property: transform, opacity;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.fade-up-enter-from,
|
|
18
|
+
.fade-up-leave-to {
|
|
19
|
+
opacity: 0;
|
|
20
|
+
transform: translateY(8px);
|
|
21
|
+
}
|
package/src/style/core.scss
CHANGED
|
@@ -1,148 +1,150 @@
|
|
|
1
|
-
@use 'sass:meta';
|
|
2
|
-
// Core of the UI library, it should only contain styles which are relevant to
|
|
3
|
-
// the library and each component should import it
|
|
4
|
-
|
|
5
|
-
// To overwrite any of these styles, simply create a style file and import it
|
|
6
|
-
// after this one
|
|
7
|
-
@use './reset.scss';
|
|
8
|
-
@use './
|
|
9
|
-
|
|
10
|
-
:root {
|
|
11
|
-
color-scheme: dark;
|
|
12
|
-
|
|
13
|
-
--container-xs: 360px;
|
|
14
|
-
--container-s: 498px;
|
|
15
|
-
--container-m: 856px;
|
|
16
|
-
--container-l: 1140px;
|
|
17
|
-
--container-xl: 1540px;
|
|
18
|
-
--container-xxl: 1920px;
|
|
19
|
-
|
|
20
|
-
--border-radius-xs: 2px;
|
|
21
|
-
--border-radius-s: 4px;
|
|
22
|
-
--border-radius-m: 8px;
|
|
23
|
-
--border-radius-l: 12px;
|
|
24
|
-
|
|
25
|
-
--font-size-xxs: 1rem;
|
|
26
|
-
--font-size-xs: 1.15rem;
|
|
27
|
-
--font-size-s: 1.3rem;
|
|
28
|
-
--font-size-ms: 1.45rem;
|
|
29
|
-
--font-size-m: 1.6rem;
|
|
30
|
-
--font-size-l: 1.8rem;
|
|
31
|
-
--font-size-xl: 2rem;
|
|
32
|
-
--font-size-xxl: 2.6rem;
|
|
33
|
-
--font-size-xxxl: 3.4rem;
|
|
34
|
-
--font-size-xxxxl: 4.8rem;
|
|
35
|
-
|
|
36
|
-
--space-xxs: 4px;
|
|
37
|
-
--space-xs: 8px;
|
|
38
|
-
--space-s: 12px;
|
|
39
|
-
--space-m: 18px;
|
|
40
|
-
--space-l: 24px;
|
|
41
|
-
--space-xl: 34px;
|
|
42
|
-
--space-xxl: 48px;
|
|
43
|
-
--space-xxxl: 64px;
|
|
44
|
-
|
|
45
|
-
--transition-fast: 0.
|
|
46
|
-
--transition: 0.
|
|
47
|
-
--transition-slow: 0.
|
|
48
|
-
|
|
49
|
-
--color-bg: rgb(18, 18, 18);
|
|
50
|
-
--color-bg-raised: rgb(28, 28, 28);
|
|
51
|
-
--color-bg-lowered: rgb(14, 14, 14);
|
|
52
|
-
|
|
53
|
-
--color-text: rgb(231, 231, 231);
|
|
54
|
-
--color-text-light: rgb(158, 158, 158);
|
|
55
|
-
--color-text-lighter: rgb(100, 100, 100);
|
|
56
|
-
--color-text-lightest: rgb(65, 65, 65);
|
|
57
|
-
--color-text-invert: rgb(17, 17, 17);
|
|
58
|
-
|
|
59
|
-
--color-button-gray: rgb(28, 28, 28);
|
|
60
|
-
--color-button-gray-hover: rgb(38, 38, 38);
|
|
61
|
-
|
|
62
|
-
--color-text-red: rgb(243, 78, 70);
|
|
63
|
-
--color-bg-red-lowered: rgb(66, 22, 20);
|
|
64
|
-
--color-bg-red-raised: rgb(119, 31, 26);
|
|
65
|
-
--color-border-red: rgb(94, 23, 19);
|
|
66
|
-
|
|
67
|
-
--color-text-green: rgb(44, 214, 52);
|
|
68
|
-
--color-text-green-disabled: rgb(109, 193, 113);
|
|
69
|
-
--color-bg-green-lowered: rgb(19, 46, 9);
|
|
70
|
-
--color-bg-green-raised: rgb(48, 122, 22);
|
|
71
|
-
--color-border-green: rgb(27, 70, 12);
|
|
72
|
-
|
|
73
|
-
--color-text-yellow: rgb(243, 231, 70);
|
|
74
|
-
--color-bg-yellow-lowered: rgb(59, 46, 10);
|
|
75
|
-
--color-bg-yellow-raised: rgb(119, 82, 26);
|
|
76
|
-
--color-border-yellow: rgb(99, 97, 16);
|
|
77
|
-
|
|
78
|
-
--color-text-blue: rgb(85, 141, 245);
|
|
79
|
-
--color-bg-blue-lowered: rgb(10, 25, 59);
|
|
80
|
-
--color-bg-blue-raised: rgb(26, 59, 119);
|
|
81
|
-
--color-border-blue: rgb(20, 45, 112);
|
|
82
|
-
|
|
83
|
-
--color-border: rgb(
|
|
84
|
-
--color-border-strong: rgb(54, 54, 54);
|
|
85
|
-
--color-border-weak: rgb(36, 36, 36);
|
|
86
|
-
|
|
87
|
-
--color-accent: rgb(
|
|
88
|
-
--color-accent-disabled: hsl(from var(--color-accent) calc(h) calc(s * 0.4) calc(l));
|
|
89
|
-
--color-bg-accent-lowered: hsl(from var(--color-accent) calc(h) s calc(l * 0.2));
|
|
90
|
-
--color-bg-accent-raised: hsl(from var(--color-accent) calc(h) s calc(l * 0.
|
|
91
|
-
--color-border-accent: hsl(from var(--color-accent) calc(h) s calc(l * 0.
|
|
92
|
-
|
|
93
|
-
--box-shadow: 0 2px 12px rgba(8, 8, 8, 0.2);
|
|
94
|
-
--box-shadow-strong: 0 4px 15px rgba(8, 8, 8, 0.4);
|
|
95
|
-
|
|
96
|
-
--global-font: Geist, sans-serif;
|
|
97
|
-
--global-font-mono: 'Geist Mono', 'Courier New', Courier, monospace;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
font-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
box-sizing: border-box;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
@include meta.load-css('
|
|
144
|
-
@include meta.load-css('
|
|
145
|
-
@include meta.load-css('
|
|
146
|
-
@include meta.load-css('
|
|
147
|
-
|
|
148
|
-
@include meta.load-css('
|
|
1
|
+
@use 'sass:meta';
|
|
2
|
+
// Core of the UI library, it should only contain styles which are relevant to
|
|
3
|
+
// the library and each component should import it
|
|
4
|
+
|
|
5
|
+
// To overwrite any of these styles, simply create a style file and import it
|
|
6
|
+
// after this one
|
|
7
|
+
@use './reset.scss';
|
|
8
|
+
// @use './text.scss';
|
|
9
|
+
|
|
10
|
+
:root {
|
|
11
|
+
color-scheme: dark;
|
|
12
|
+
|
|
13
|
+
--container-xs: 360px;
|
|
14
|
+
--container-s: 498px;
|
|
15
|
+
--container-m: 856px;
|
|
16
|
+
--container-l: 1140px;
|
|
17
|
+
--container-xl: 1540px;
|
|
18
|
+
--container-xxl: 1920px;
|
|
19
|
+
|
|
20
|
+
--border-radius-xs: 2px;
|
|
21
|
+
--border-radius-s: 4px;
|
|
22
|
+
--border-radius-m: 8px;
|
|
23
|
+
--border-radius-l: 12px;
|
|
24
|
+
|
|
25
|
+
--font-size-xxs: 1rem;
|
|
26
|
+
--font-size-xs: 1.15rem;
|
|
27
|
+
--font-size-s: 1.3rem;
|
|
28
|
+
--font-size-ms: 1.45rem;
|
|
29
|
+
--font-size-m: 1.6rem;
|
|
30
|
+
--font-size-l: 1.8rem;
|
|
31
|
+
--font-size-xl: 2rem;
|
|
32
|
+
--font-size-xxl: 2.6rem;
|
|
33
|
+
--font-size-xxxl: 3.4rem;
|
|
34
|
+
--font-size-xxxxl: 4.8rem;
|
|
35
|
+
|
|
36
|
+
--space-xxs: 4px;
|
|
37
|
+
--space-xs: 8px;
|
|
38
|
+
--space-s: 12px;
|
|
39
|
+
--space-m: 18px;
|
|
40
|
+
--space-l: 24px;
|
|
41
|
+
--space-xl: 34px;
|
|
42
|
+
--space-xxl: 48px;
|
|
43
|
+
--space-xxxl: 64px;
|
|
44
|
+
|
|
45
|
+
--transition-fast: 0.15s all cubic-bezier(0.65, 0, 0.35, 1);
|
|
46
|
+
--transition: 0.2s all cubic-bezier(0.65, 0, 0.35, 1);
|
|
47
|
+
--transition-slow: 0.35s all cubic-bezier(0.65, 0, 0.35, 1);
|
|
48
|
+
|
|
49
|
+
--color-bg: rgb(18, 18, 18);
|
|
50
|
+
--color-bg-raised: rgb(28, 28, 28);
|
|
51
|
+
--color-bg-lowered: rgb(14, 14, 14);
|
|
52
|
+
|
|
53
|
+
--color-text: rgb(231, 231, 231);
|
|
54
|
+
--color-text-light: rgb(158, 158, 158);
|
|
55
|
+
--color-text-lighter: rgb(100, 100, 100);
|
|
56
|
+
--color-text-lightest: rgb(65, 65, 65);
|
|
57
|
+
--color-text-invert: rgb(17, 17, 17);
|
|
58
|
+
|
|
59
|
+
--color-button-gray: rgb(28, 28, 28);
|
|
60
|
+
--color-button-gray-hover: rgb(38, 38, 38);
|
|
61
|
+
|
|
62
|
+
--color-text-red: rgb(243, 78, 70);
|
|
63
|
+
--color-bg-red-lowered: rgb(66, 22, 20);
|
|
64
|
+
--color-bg-red-raised: rgb(119, 31, 26);
|
|
65
|
+
--color-border-red: rgb(94, 23, 19);
|
|
66
|
+
|
|
67
|
+
--color-text-green: rgb(44, 214, 52);
|
|
68
|
+
--color-text-green-disabled: rgb(109, 193, 113);
|
|
69
|
+
--color-bg-green-lowered: rgb(19, 46, 9);
|
|
70
|
+
--color-bg-green-raised: rgb(48, 122, 22);
|
|
71
|
+
--color-border-green: rgb(27, 70, 12);
|
|
72
|
+
|
|
73
|
+
--color-text-yellow: rgb(243, 231, 70);
|
|
74
|
+
--color-bg-yellow-lowered: rgb(59, 46, 10);
|
|
75
|
+
--color-bg-yellow-raised: rgb(119, 82, 26);
|
|
76
|
+
--color-border-yellow: rgb(99, 97, 16);
|
|
77
|
+
|
|
78
|
+
--color-text-blue: rgb(85, 141, 245);
|
|
79
|
+
--color-bg-blue-lowered: rgb(10, 25, 59);
|
|
80
|
+
--color-bg-blue-raised: rgb(26, 59, 119);
|
|
81
|
+
--color-border-blue: rgb(20, 45, 112);
|
|
82
|
+
|
|
83
|
+
--color-border: rgb(40, 40, 40);
|
|
84
|
+
--color-border-strong: rgb(54, 54, 54);
|
|
85
|
+
--color-border-weak: rgb(36, 36, 36);
|
|
86
|
+
|
|
87
|
+
--color-accent: rgb(238, 120, 17);
|
|
88
|
+
--color-accent-disabled: hsl(from var(--color-accent) calc(h) calc(s * 0.4) calc(l));
|
|
89
|
+
--color-bg-accent-lowered: hsl(from var(--color-accent) calc(h) s calc(l * 0.2));
|
|
90
|
+
--color-bg-accent-raised: hsl(from var(--color-accent) calc(h) s calc(l * 0.45));
|
|
91
|
+
--color-border-accent: hsl(from var(--color-accent) calc(h) s calc(l * 0.3));
|
|
92
|
+
|
|
93
|
+
--box-shadow: 0 2px 12px rgba(8, 8, 8, 0.2);
|
|
94
|
+
--box-shadow-strong: 0 4px 15px rgba(8, 8, 8, 0.4);
|
|
95
|
+
|
|
96
|
+
--global-font: Geist, sans-serif;
|
|
97
|
+
--global-font-mono: 'Geist Mono', 'Courier New', Courier, monospace;
|
|
98
|
+
|
|
99
|
+
--interactive-el-height: 34px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
:root {
|
|
103
|
+
font-family: var(--global-font);
|
|
104
|
+
font-size: 63.5%;
|
|
105
|
+
// TODO remove - should remove?
|
|
106
|
+
position: relative;
|
|
107
|
+
background-color: var(--color-bg);
|
|
108
|
+
|
|
109
|
+
overflow-x: hidden;
|
|
110
|
+
width: 100%;
|
|
111
|
+
|
|
112
|
+
font-feature-settings: normal;
|
|
113
|
+
font-variation-settings: normal;
|
|
114
|
+
|
|
115
|
+
font-synthesis: none;
|
|
116
|
+
text-rendering: optimizeLegibility;
|
|
117
|
+
-webkit-font-smoothing: antialiased;
|
|
118
|
+
-moz-osx-font-smoothing: grayscale;
|
|
119
|
+
// TODO end remove
|
|
120
|
+
|
|
121
|
+
* {
|
|
122
|
+
-webkit-box-sizing: border-box;
|
|
123
|
+
-moz-box-sizing: border-box;
|
|
124
|
+
box-sizing: border-box;
|
|
125
|
+
outline: none;
|
|
126
|
+
|
|
127
|
+
&:focus-visible {
|
|
128
|
+
outline: 2px solid var(--color-text);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
body {
|
|
134
|
+
color: var(--color-text);
|
|
135
|
+
min-height: 100dvh;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Set base icon color
|
|
139
|
+
.iconify {
|
|
140
|
+
color: var(--color-text-light);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@include meta.load-css('typography.scss');
|
|
144
|
+
@include meta.load-css('layout.scss');
|
|
145
|
+
@include meta.load-css('animation.scss');
|
|
146
|
+
@include meta.load-css('tooltip.scss');
|
|
147
|
+
@include meta.load-css('utils.scss');
|
|
148
|
+
@include meta.load-css('text.scss');
|
|
149
|
+
|
|
150
|
+
@include meta.load-css('media-query.scss');
|