procode-vs-theme 2.2.0 → 2.4.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/CHANGELOG.md +214 -45
- package/dist/components.esm.js +28 -4
- package/dist/components.esm.js.map +1 -1
- package/dist/components.js +35 -3
- package/dist/components.js.map +1 -1
- package/dist/index.esm.js +41 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +41 -5
- package/dist/index.js.map +1 -1
- package/dist/src/base/_border.scss +21 -12
- package/dist/src/base/_color.scss +106 -47
- package/dist/src/base/_custom-properties.scss +166 -111
- package/dist/src/base/_font.scss +61 -37
- package/dist/src/base/_size.scss +30 -17
- package/dist/src/base/_space.scss +53 -33
- package/dist/src/base/_variants.scss +128 -0
- package/dist/src/components/_alert.scss +83 -0
- package/dist/src/components/_badge.scss +100 -0
- package/dist/src/components/_buttons.scss +189 -420
- package/dist/src/components/_cards.scss +130 -0
- package/dist/src/components/_input.scss +186 -32
- package/dist/src/components/_link.scss +34 -0
- package/dist/src/components/_page.scss +87 -0
- package/dist/src/components/_pagination.scss +71 -0
- package/dist/src/components/_table.scss +171 -0
- package/dist/src/components/_tabs.scss +77 -0
- package/dist/src/components.ts +47 -23
- package/dist/src/index.scss +82 -71
- package/dist/src/utilities/_interaction.scss +72 -0
- package/dist/src/utilities/background-color/index.scss +13 -0
- package/dist/src/utilities/border/_border-color.scss +2 -0
- package/dist/src/utilities/box-shadow/index.scss +8 -8
- package/dist/src/utilities/typography/_color.scss +38 -34
- package/dist/src/variables.ts +38 -35
- package/dist/types/components.d.ts +18 -2
- package/dist/types/variables.d.ts +2 -0
- package/dist/variables.esm.js +4 -1
- package/dist/variables.esm.js.map +1 -1
- package/dist/variables.js +4 -0
- package/dist/variables.js.map +1 -1
- package/package.json +84 -84
- package/src/base/_border.scss +21 -12
- package/src/base/_color.scss +106 -47
- package/src/base/_custom-properties.scss +166 -111
- package/src/base/_font.scss +61 -37
- package/src/base/_size.scss +30 -17
- package/src/base/_space.scss +53 -33
- package/src/base/_variants.scss +128 -0
- package/src/components/_alert.scss +83 -0
- package/src/components/_badge.scss +100 -0
- package/src/components/_buttons.scss +189 -420
- package/src/components/_cards.scss +130 -0
- package/src/components/_input.scss +186 -32
- package/src/components/_link.scss +34 -0
- package/src/components/_page.scss +87 -0
- package/src/components/_pagination.scss +71 -0
- package/src/components/_table.scss +171 -0
- package/src/components/_tabs.scss +77 -0
- package/src/components.ts +47 -23
- package/src/index.scss +82 -71
- package/src/utilities/_interaction.scss +72 -0
- package/src/utilities/background-color/index.scss +13 -0
- package/src/utilities/border/_border-color.scss +2 -0
- package/src/utilities/box-shadow/index.scss +8 -8
- package/src/utilities/typography/_color.scss +38 -34
- package/src/variables.ts +38 -35
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
@use "../base/color" as cl;
|
|
2
|
+
@use "../base/border" as bo;
|
|
3
|
+
@use "../base/font" as ft;
|
|
4
|
+
@use "../base/space" as sp;
|
|
5
|
+
@use "../base/size" as sz;
|
|
6
|
+
|
|
7
|
+
// Data grid
|
|
8
|
+
//
|
|
9
|
+
// <div class="qo-grid-shell">
|
|
10
|
+
// <div class="qo-grid-scroll">
|
|
11
|
+
// <table class="qo-table">
|
|
12
|
+
// <thead><tr class="qo-table-header">…</tr>
|
|
13
|
+
// <tr class="qo-table-filter">…</tr></thead>
|
|
14
|
+
// <tbody>…</tbody>
|
|
15
|
+
// </table>
|
|
16
|
+
// </div>
|
|
17
|
+
// <div class="qo-grid-footer">…</div>
|
|
18
|
+
// </div>
|
|
19
|
+
//
|
|
20
|
+
// Row heights come from the component-height tokens, so a grid lines up with
|
|
21
|
+
// the toolbar above it without either side re-deciding.
|
|
22
|
+
|
|
23
|
+
.qo-grid-shell {
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
background-color: cl.$background-default;
|
|
26
|
+
border: bo.$border-width-sm solid cl.$border-light;
|
|
27
|
+
border-radius: bo.$border-radius-md;
|
|
28
|
+
box-shadow: cl.$shadow-sm;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Horizontal scroll rather than squeezing columns until text is unreadable.
|
|
32
|
+
.qo-grid-scroll {
|
|
33
|
+
width: 100%;
|
|
34
|
+
overflow-x: auto;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.qo-table {
|
|
38
|
+
width: 100%;
|
|
39
|
+
border-collapse: separate;
|
|
40
|
+
border-spacing: 0;
|
|
41
|
+
table-layout: fixed;
|
|
42
|
+
color: cl.$text-dark;
|
|
43
|
+
font-family: ft.$font-family-primary;
|
|
44
|
+
font-size: ft.$font-size-md;
|
|
45
|
+
|
|
46
|
+
th,
|
|
47
|
+
td {
|
|
48
|
+
border-right: bo.$border-width-sm solid cl.$border-light;
|
|
49
|
+
border-bottom: bo.$border-width-sm solid cl.$border-light;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
tr > *:last-child { border-right: 0; }
|
|
53
|
+
tbody tr:last-child td { border-bottom: 0; }
|
|
54
|
+
|
|
55
|
+
tbody tr {
|
|
56
|
+
height: sz.$grid-row-height;
|
|
57
|
+
transition: background-color 0.15s ease;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
tbody tr:hover { background-color: cl.$background-hover; }
|
|
61
|
+
|
|
62
|
+
tbody td {
|
|
63
|
+
padding: sp.$space-3;
|
|
64
|
+
background: inherit;
|
|
65
|
+
vertical-align: middle;
|
|
66
|
+
font-size: ft.$font-size-md;
|
|
67
|
+
font-weight: ft.$font-weight-regular;
|
|
68
|
+
line-height: 1.35;
|
|
69
|
+
overflow-wrap: anywhere;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Variants
|
|
73
|
+
&.qo-table-auto { table-layout: auto; }
|
|
74
|
+
&.qo-table-borderless th,
|
|
75
|
+
&.qo-table-borderless td { border: 0; }
|
|
76
|
+
&.qo-table-striped tbody tr:nth-child(even) { background-color: cl.$background-light; }
|
|
77
|
+
&.qo-table-compact tbody tr { height: sz.$grid-filter-height; }
|
|
78
|
+
&.qo-table-compact tbody td { padding: sp.$space-2; }
|
|
79
|
+
&.qo-table-static tbody tr:hover { background-color: transparent; }
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.qo-table-header th {
|
|
83
|
+
height: sz.$grid-header-height;
|
|
84
|
+
padding: 0 sp.$space-3;
|
|
85
|
+
background-color: cl.$background-header;
|
|
86
|
+
color: cl.$text-dark;
|
|
87
|
+
text-align: left;
|
|
88
|
+
vertical-align: middle;
|
|
89
|
+
font-size: ft.$font-size-sm;
|
|
90
|
+
font-weight: ft.$font-weight-semibold;
|
|
91
|
+
line-height: 1.2;
|
|
92
|
+
white-space: nowrap;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// A sortable header is a button in spirit — it needs hover and focus.
|
|
96
|
+
.qo-table-sort {
|
|
97
|
+
display: inline-flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: sp.$space-1;
|
|
100
|
+
cursor: pointer;
|
|
101
|
+
user-select: none;
|
|
102
|
+
|
|
103
|
+
&:hover { color: cl.$text-primary; }
|
|
104
|
+
&:focus-visible { outline: 0; box-shadow: cl.$focus-ring; }
|
|
105
|
+
&.qo-table-sort-active { color: cl.$text-primary; }
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.qo-table-filter th {
|
|
109
|
+
height: sz.$grid-filter-height;
|
|
110
|
+
padding: sp.$space-2;
|
|
111
|
+
background-color: cl.$background-default;
|
|
112
|
+
vertical-align: middle;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Cell content helpers
|
|
116
|
+
.qo-table-link {
|
|
117
|
+
color: cl.$text-primary;
|
|
118
|
+
font-size: ft.$font-size-md;
|
|
119
|
+
font-weight: ft.$font-weight-medium;
|
|
120
|
+
text-decoration: none;
|
|
121
|
+
|
|
122
|
+
&:hover { text-decoration: underline; }
|
|
123
|
+
&:focus-visible { outline: 0; box-shadow: cl.$focus-ring; border-radius: bo.$border-radius-sm; }
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.qo-table-meta {
|
|
127
|
+
display: block;
|
|
128
|
+
margin-top: 2px;
|
|
129
|
+
color: cl.$text-secondary;
|
|
130
|
+
font-size: ft.$font-size-xs;
|
|
131
|
+
font-weight: ft.$font-weight-regular;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.qo-table-cell-group {
|
|
135
|
+
display: inline-flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
gap: sp.$space-2;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// A row the user must not act on — protected/system records.
|
|
141
|
+
.qo-table-row-locked {
|
|
142
|
+
background-color: cl.$background-light;
|
|
143
|
+
&:hover { background-color: cl.$background-secondary; }
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.qo-lock-icon {
|
|
147
|
+
color: cl.$text-default;
|
|
148
|
+
font-size: ft.$font-size-sm;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Footer / results summary
|
|
152
|
+
.qo-grid-footer {
|
|
153
|
+
min-height: sz.$grid-filter-height;
|
|
154
|
+
padding: sp.$space-2 sp.$space-3;
|
|
155
|
+
display: flex;
|
|
156
|
+
align-items: center;
|
|
157
|
+
justify-content: space-between;
|
|
158
|
+
gap: sp.$space-3;
|
|
159
|
+
background-color: cl.$background-default;
|
|
160
|
+
|
|
161
|
+
@media (max-width: 768px) {
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
align-items: flex-start;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.qo-grid-summary {
|
|
168
|
+
color: cl.$text-dark;
|
|
169
|
+
font-size: ft.$font-size-sm;
|
|
170
|
+
font-weight: ft.$font-weight-regular;
|
|
171
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
@use "../base/color" as cl;
|
|
2
|
+
@use "../base/border" as bo;
|
|
3
|
+
@use "../base/font" as ft;
|
|
4
|
+
@use "../base/space" as sp;
|
|
5
|
+
|
|
6
|
+
// Tabs
|
|
7
|
+
//
|
|
8
|
+
// <nav class="qo-tabs">
|
|
9
|
+
// <button class="qo-tab qo-tab-active">Users</button>
|
|
10
|
+
// <button class="qo-tab">User Roles</button>
|
|
11
|
+
// </nav>
|
|
12
|
+
|
|
13
|
+
.qo-tabs {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
gap: sp.$space-6;
|
|
17
|
+
height: 56px;
|
|
18
|
+
|
|
19
|
+
&.qo-tabs-sm { height: 40px; gap: sp.$space-4; }
|
|
20
|
+
&.qo-tabs-pill { gap: sp.$space-2; height: auto; }
|
|
21
|
+
|
|
22
|
+
@media (max-width: 768px) { height: 40px; }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.qo-tab {
|
|
26
|
+
position: relative;
|
|
27
|
+
height: 56px;
|
|
28
|
+
padding: 0 2px;
|
|
29
|
+
display: inline-flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
border: 0;
|
|
32
|
+
background: transparent;
|
|
33
|
+
color: cl.$text-darker;
|
|
34
|
+
font-family: ft.$font-family-primary;
|
|
35
|
+
font-size: ft.$font-size-lg;
|
|
36
|
+
font-weight: ft.$font-weight-medium;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
transition: color 0.2s ease;
|
|
39
|
+
|
|
40
|
+
&:hover { color: cl.$text-primary; }
|
|
41
|
+
&:focus-visible { outline: 0; box-shadow: cl.$focus-ring; border-radius: bo.$border-radius-sm; }
|
|
42
|
+
|
|
43
|
+
&:disabled { opacity: 0.48; cursor: not-allowed; }
|
|
44
|
+
|
|
45
|
+
// The 2px underline is drawn on a pseudo-element so the tab does not shift
|
|
46
|
+
// by 2px when it becomes active.
|
|
47
|
+
&.qo-tab-active {
|
|
48
|
+
color: cl.$text-primary;
|
|
49
|
+
font-weight: ft.$font-weight-semibold;
|
|
50
|
+
|
|
51
|
+
&::after {
|
|
52
|
+
content: "";
|
|
53
|
+
position: absolute;
|
|
54
|
+
left: 0;
|
|
55
|
+
right: 0;
|
|
56
|
+
bottom: 0;
|
|
57
|
+
height: bo.$border-width-md;
|
|
58
|
+
background-color: cl.$background-primary;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.qo-tabs-sm & { height: 40px; }
|
|
63
|
+
|
|
64
|
+
// Pill tabs: filled chip instead of an underline.
|
|
65
|
+
.qo-tabs-pill & {
|
|
66
|
+
height: auto;
|
|
67
|
+
padding: sp.$space-2 sp.$space-3;
|
|
68
|
+
border-radius: bo.$border-radius-pill;
|
|
69
|
+
|
|
70
|
+
&.qo-tab-active {
|
|
71
|
+
background-color: cl.$background-primary-soft;
|
|
72
|
+
&::after { content: none; }
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@media (max-width: 768px) { height: 40px; }
|
|
77
|
+
}
|
package/dist/src/components.ts
CHANGED
|
@@ -1,23 +1,47 @@
|
|
|
1
|
-
// VS Theme Components Export
|
|
2
|
-
// Provides access to all component styles
|
|
3
|
-
|
|
4
|
-
export const buttons = './components/_buttons.scss';
|
|
5
|
-
export const
|
|
6
|
-
export const
|
|
7
|
-
export const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
// VS Theme Components Export
|
|
2
|
+
// Provides access to all component styles
|
|
3
|
+
|
|
4
|
+
export const buttons = './components/_buttons.scss';
|
|
5
|
+
export const badge = './components/_badge.scss';
|
|
6
|
+
export const input = './components/_input.scss';
|
|
7
|
+
export const link = './components/_link.scss';
|
|
8
|
+
export const cards = './components/_cards.scss';
|
|
9
|
+
export const table = './components/_table.scss';
|
|
10
|
+
export const pagination = './components/_pagination.scss';
|
|
11
|
+
export const tabs = './components/_tabs.scss';
|
|
12
|
+
export const alert = './components/_alert.scss';
|
|
13
|
+
export const page = './components/_page.scss';
|
|
14
|
+
export const placeholder = './components/_placeholder.scss';
|
|
15
|
+
export const disabled = './components/_disabled.scss';
|
|
16
|
+
|
|
17
|
+
// All components combined
|
|
18
|
+
export const allComponents = [
|
|
19
|
+
buttons,
|
|
20
|
+
badge,
|
|
21
|
+
input,
|
|
22
|
+
link,
|
|
23
|
+
cards,
|
|
24
|
+
table,
|
|
25
|
+
pagination,
|
|
26
|
+
tabs,
|
|
27
|
+
alert,
|
|
28
|
+
page,
|
|
29
|
+
placeholder,
|
|
30
|
+
disabled
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
export default {
|
|
34
|
+
buttons,
|
|
35
|
+
badge,
|
|
36
|
+
input,
|
|
37
|
+
link,
|
|
38
|
+
cards,
|
|
39
|
+
table,
|
|
40
|
+
pagination,
|
|
41
|
+
tabs,
|
|
42
|
+
alert,
|
|
43
|
+
page,
|
|
44
|
+
placeholder,
|
|
45
|
+
disabled,
|
|
46
|
+
all: allComponents
|
|
47
|
+
};
|
package/dist/src/index.scss
CHANGED
|
@@ -1,71 +1,82 @@
|
|
|
1
|
-
// Reset
|
|
2
|
-
@forward "./utilities/reset";
|
|
3
|
-
|
|
4
|
-
// CSS Custom Properties
|
|
5
|
-
@forward "./base/custom-properties";
|
|
6
|
-
|
|
7
|
-
// Typography
|
|
8
|
-
@forward "./utilities/typography/font";
|
|
9
|
-
@forward "./utilities/typography/color";
|
|
10
|
-
|
|
11
|
-
// Background
|
|
12
|
-
@forward "./utilities/background-color/index.scss";
|
|
13
|
-
|
|
14
|
-
// Border
|
|
15
|
-
@forward "./utilities/border/border-color";
|
|
16
|
-
@forward "./utilities/border/border-radius";
|
|
17
|
-
@forward "./utilities/border/border-size";
|
|
18
|
-
|
|
19
|
-
// Spacing
|
|
20
|
-
@forward "./utilities/spaces/gap";
|
|
21
|
-
@forward "./utilities/spaces/margin";
|
|
22
|
-
@forward "./utilities/spaces/padding";
|
|
23
|
-
|
|
24
|
-
// Box shadow
|
|
25
|
-
@forward "./utilities/box-shadow/index.scss";
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
@forward "./base/
|
|
59
|
-
@forward "./base/
|
|
60
|
-
@forward "./base/
|
|
61
|
-
@forward "./base/
|
|
62
|
-
@forward "./base/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
@forward "./
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@forward "./components/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
@forward "./
|
|
1
|
+
// Reset
|
|
2
|
+
@forward "./utilities/reset";
|
|
3
|
+
|
|
4
|
+
// CSS Custom Properties
|
|
5
|
+
@forward "./base/custom-properties";
|
|
6
|
+
|
|
7
|
+
// Typography
|
|
8
|
+
@forward "./utilities/typography/font";
|
|
9
|
+
@forward "./utilities/typography/color";
|
|
10
|
+
|
|
11
|
+
// Background
|
|
12
|
+
@forward "./utilities/background-color/index.scss";
|
|
13
|
+
|
|
14
|
+
// Border
|
|
15
|
+
@forward "./utilities/border/border-color";
|
|
16
|
+
@forward "./utilities/border/border-radius";
|
|
17
|
+
@forward "./utilities/border/border-size";
|
|
18
|
+
|
|
19
|
+
// Spacing
|
|
20
|
+
@forward "./utilities/spaces/gap";
|
|
21
|
+
@forward "./utilities/spaces/margin";
|
|
22
|
+
@forward "./utilities/spaces/padding";
|
|
23
|
+
|
|
24
|
+
// Box shadow
|
|
25
|
+
@forward "./utilities/box-shadow/index.scss";
|
|
26
|
+
|
|
27
|
+
// Interaction, elevation, component heights, focus
|
|
28
|
+
@forward "./utilities/interaction";
|
|
29
|
+
|
|
30
|
+
// Display
|
|
31
|
+
@forward "./utilities/display";
|
|
32
|
+
|
|
33
|
+
// Flex
|
|
34
|
+
@forward "./utilities/flex";
|
|
35
|
+
|
|
36
|
+
// Text
|
|
37
|
+
@forward "./utilities/text";
|
|
38
|
+
|
|
39
|
+
// Position
|
|
40
|
+
@forward "./utilities/position";
|
|
41
|
+
|
|
42
|
+
// Overflow
|
|
43
|
+
@forward "./utilities/overflow";
|
|
44
|
+
|
|
45
|
+
// Opacity
|
|
46
|
+
@forward "./utilities/opacity";
|
|
47
|
+
|
|
48
|
+
// Cursor
|
|
49
|
+
@forward "./utilities/cursor";
|
|
50
|
+
|
|
51
|
+
// Sizing (width/height)
|
|
52
|
+
@forward "./utilities/sizing";
|
|
53
|
+
|
|
54
|
+
// Visibility
|
|
55
|
+
@forward "./utilities/visibility";
|
|
56
|
+
|
|
57
|
+
// Base variables & mixins
|
|
58
|
+
@forward "./base/mixins/media-query-mx";
|
|
59
|
+
@forward "./base/mixins/breakpoints";
|
|
60
|
+
@forward "./base/border";
|
|
61
|
+
@forward "./base/color";
|
|
62
|
+
@forward "./base/font";
|
|
63
|
+
@forward "./base/space";
|
|
64
|
+
@forward "./base/size";
|
|
65
|
+
@forward "./base/variants";
|
|
66
|
+
|
|
67
|
+
// Components
|
|
68
|
+
@forward "./components/buttons";
|
|
69
|
+
@forward "./components/badge";
|
|
70
|
+
@forward "./components/input";
|
|
71
|
+
@forward "./components/link";
|
|
72
|
+
@forward "./components/cards";
|
|
73
|
+
@forward "./components/table";
|
|
74
|
+
@forward "./components/pagination";
|
|
75
|
+
@forward "./components/tabs";
|
|
76
|
+
@forward "./components/alert";
|
|
77
|
+
@forward "./components/page";
|
|
78
|
+
@forward "./components/placeholder";
|
|
79
|
+
@forward "./components/disabled";
|
|
80
|
+
|
|
81
|
+
// Layout
|
|
82
|
+
@forward "./layout/drawer";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@use "../base/color" as cl;
|
|
2
|
+
@use "../base/size" as sz;
|
|
3
|
+
@use "../base/mixins/meta-class" as mc;
|
|
4
|
+
|
|
5
|
+
// Interaction & elevation utilities
|
|
6
|
+
//
|
|
7
|
+
// These carry their own states, so there is no separate `qo-hover-*` family
|
|
8
|
+
// to remember — `qo-focusable` is the focus ring, `qo-clickable` is the whole
|
|
9
|
+
// pointer affordance.
|
|
10
|
+
|
|
11
|
+
@include mc.meta("qo-shadow-none", (box-shadow: none));
|
|
12
|
+
@include mc.meta("qo-shadow-sm", (box-shadow: cl.$shadow-sm));
|
|
13
|
+
@include mc.meta("qo-shadow-md", (box-shadow: cl.$shadow-md));
|
|
14
|
+
@include mc.meta("qo-shadow-lg", (box-shadow: cl.$shadow-lg));
|
|
15
|
+
@include mc.meta("qo-shadow-xl", (box-shadow: cl.$shadow-xl));
|
|
16
|
+
|
|
17
|
+
// Component heights, so a bare div can line up with a control.
|
|
18
|
+
@include mc.meta("qo-h-control", (height: sz.$control-height));
|
|
19
|
+
@include mc.meta("qo-h-control-sm", (height: sz.$control-height-sm));
|
|
20
|
+
@include mc.meta("qo-h-badge", (height: sz.$badge-height));
|
|
21
|
+
@include mc.meta("qo-h-grid-header", (height: sz.$grid-header-height));
|
|
22
|
+
@include mc.meta("qo-h-grid-filter", (height: sz.$grid-filter-height));
|
|
23
|
+
@include mc.meta("qo-h-grid-row", (height: sz.$grid-row-height));
|
|
24
|
+
@include mc.meta("qo-min-h-control", (min-height: sz.$control-height));
|
|
25
|
+
|
|
26
|
+
// Give anything the theme's single focus treatment.
|
|
27
|
+
.qo-focusable:focus-visible {
|
|
28
|
+
outline: 0;
|
|
29
|
+
box-shadow: cl.$focus-ring;
|
|
30
|
+
}
|
|
31
|
+
.qo-focus-ring { box-shadow: cl.$focus-ring; }
|
|
32
|
+
|
|
33
|
+
// The full interactive affordance for a non-button element.
|
|
34
|
+
.qo-clickable {
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
transition: background-color 0.15s ease, color 0.15s ease;
|
|
37
|
+
|
|
38
|
+
&:hover { background-color: cl.$background-hover; }
|
|
39
|
+
&:focus-visible { outline: 0; box-shadow: cl.$focus-ring; }
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Hover feedback without a colour change — for cards and tiles.
|
|
43
|
+
.qo-hoverable {
|
|
44
|
+
transition: box-shadow 0.2s ease;
|
|
45
|
+
&:hover { box-shadow: cl.$shadow-md; }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.qo-no-hover:hover { background-color: transparent; }
|
|
49
|
+
|
|
50
|
+
// Screen-reader-only, for the icon-button labels the spec requires.
|
|
51
|
+
.qo-sr-only {
|
|
52
|
+
position: absolute !important;
|
|
53
|
+
width: 1px !important;
|
|
54
|
+
height: 1px !important;
|
|
55
|
+
padding: 0 !important;
|
|
56
|
+
margin: -1px !important;
|
|
57
|
+
overflow: hidden !important;
|
|
58
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
59
|
+
white-space: nowrap !important;
|
|
60
|
+
border: 0 !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Honour a reduced-motion preference across every transition above.
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
*,
|
|
66
|
+
*::before,
|
|
67
|
+
*::after {
|
|
68
|
+
scroll-behavior: auto !important;
|
|
69
|
+
transition: none !important;
|
|
70
|
+
animation: none !important;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -14,3 +14,16 @@
|
|
|
14
14
|
@include mc.meta("qo-bg-light", (background-color: cl.$background-light));
|
|
15
15
|
@include mc.meta("qo-bg-tertiary", (background-color: cl.$background-tertiary));
|
|
16
16
|
@include mc.meta("qo-bg-lime", (background-color: cl.$background-lime));
|
|
17
|
+
@include mc.meta("qo-bg-disabled", (background-color: cl.$background-disabled));
|
|
18
|
+
@include mc.meta("qo-bg-hover", (background-color: cl.$background-hover));
|
|
19
|
+
@include mc.meta("qo-bg-header", (background-color: cl.$background-header));
|
|
20
|
+
|
|
21
|
+
// Soft / tint fills — badges, banners, icon chips
|
|
22
|
+
@include mc.meta("qo-bg-primary-soft", (background-color: cl.$background-primary-soft));
|
|
23
|
+
@include mc.meta("qo-bg-success-soft", (background-color: cl.$background-success-soft));
|
|
24
|
+
@include mc.meta("qo-bg-warning-soft", (background-color: cl.$background-warning-soft));
|
|
25
|
+
@include mc.meta("qo-bg-danger-soft", (background-color: cl.$background-danger-soft));
|
|
26
|
+
@include mc.meta("qo-bg-info-soft", (background-color: cl.$background-info-soft));
|
|
27
|
+
@include mc.meta("qo-bg-lite-soft", (background-color: cl.$background-lite-soft));
|
|
28
|
+
@include mc.meta("qo-bg-system-soft", (background-color: cl.$background-system-soft));
|
|
29
|
+
@include mc.meta("qo-bg-custom-soft", (background-color: cl.$background-custom-soft));
|
|
@@ -9,3 +9,5 @@
|
|
|
9
9
|
@include mc.meta("qo-border-info", (border-color: cl.$border-info));
|
|
10
10
|
@include mc.meta("qo-border-light", (border-color: cl.$border-light));
|
|
11
11
|
@include mc.meta("qo-border-dark", (border-color: cl.$border-dark));
|
|
12
|
+
@include mc.meta("qo-border-default", (border-color: cl.$border-default));
|
|
13
|
+
@include mc.meta("qo-border-primary-soft", (border-color: cl.$border-primary-soft));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
@use "../../base/color" as cl;
|
|
2
|
-
@use "../../base/mixins/meta-class" as mc;
|
|
3
|
-
|
|
4
|
-
@include mc.meta("qo-boxshadow-none", (box-shadow: none));
|
|
5
|
-
@include mc.meta("qo-boxshadow-sm", (box-shadow:
|
|
6
|
-
@include mc.meta("qo-boxshadow-md", (box-shadow:
|
|
7
|
-
@include mc.meta("qo-boxshadow-lg", (box-shadow:
|
|
8
|
-
@include mc.meta("qo-boxshadow-xl", (box-shadow:
|
|
1
|
+
@use "../../base/color" as cl;
|
|
2
|
+
@use "../../base/mixins/meta-class" as mc;
|
|
3
|
+
|
|
4
|
+
@include mc.meta("qo-boxshadow-none", (box-shadow: none));
|
|
5
|
+
@include mc.meta("qo-boxshadow-sm", (box-shadow: cl.$shadow-sm));
|
|
6
|
+
@include mc.meta("qo-boxshadow-md", (box-shadow: cl.$shadow-md));
|
|
7
|
+
@include mc.meta("qo-boxshadow-lg", (box-shadow: cl.$shadow-lg));
|
|
8
|
+
@include mc.meta("qo-boxshadow-xl", (box-shadow: cl.$shadow-xl));
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
@use "sass:color";
|
|
2
|
-
@use "../../base/color" as cl;
|
|
3
|
-
@use "../../base/mixins/meta-class" as mc;
|
|
4
|
-
|
|
5
|
-
@include mc.meta("qo-text-primary", (color: cl.$text-primary));
|
|
6
|
-
@include mc.meta("qo-text-secondary", (color: cl.$text-secondary));
|
|
7
|
-
@include mc.meta("qo-text-success", (color: cl.$text-success));
|
|
8
|
-
@include mc.meta("qo-text-warning", (color: cl.$text-warning));
|
|
9
|
-
@include mc.meta("qo-text-danger", (color: cl.$text-danger));
|
|
10
|
-
@include mc.meta("qo-text-info", (color: cl.$text-info));
|
|
11
|
-
@include mc.meta("qo-text-default", (color: cl.$text-default));
|
|
12
|
-
@include mc.meta("qo-text-dark", (color: cl.$text-dark));
|
|
13
|
-
@include mc.meta("qo-text-darker", (color: cl.$text-darker));
|
|
14
|
-
@include mc.meta("qo-text-light", (color: cl.$text-light));
|
|
15
|
-
@include mc.meta("qo-text-tertiary", (color: cl.$text-tertiary));
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.qo-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
&.qo-text-
|
|
25
|
-
&.qo-text-
|
|
26
|
-
&.qo-text-
|
|
27
|
-
&.qo-text-
|
|
28
|
-
&.qo-text-
|
|
29
|
-
&.qo-text-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
color: cl.$text-
|
|
34
|
-
}
|
|
1
|
+
@use "sass:color";
|
|
2
|
+
@use "../../base/color" as cl;
|
|
3
|
+
@use "../../base/mixins/meta-class" as mc;
|
|
4
|
+
|
|
5
|
+
@include mc.meta("qo-text-primary", (color: cl.$text-primary));
|
|
6
|
+
@include mc.meta("qo-text-secondary", (color: cl.$text-secondary));
|
|
7
|
+
@include mc.meta("qo-text-success", (color: cl.$text-success));
|
|
8
|
+
@include mc.meta("qo-text-warning", (color: cl.$text-warning));
|
|
9
|
+
@include mc.meta("qo-text-danger", (color: cl.$text-danger));
|
|
10
|
+
@include mc.meta("qo-text-info", (color: cl.$text-info));
|
|
11
|
+
@include mc.meta("qo-text-default", (color: cl.$text-default));
|
|
12
|
+
@include mc.meta("qo-text-dark", (color: cl.$text-dark));
|
|
13
|
+
@include mc.meta("qo-text-darker", (color: cl.$text-darker));
|
|
14
|
+
@include mc.meta("qo-text-light", (color: cl.$text-light));
|
|
15
|
+
@include mc.meta("qo-text-tertiary", (color: cl.$text-tertiary));
|
|
16
|
+
@include mc.meta("qo-text-placeholder", (color: cl.$text-placeholder));
|
|
17
|
+
@include mc.meta("qo-text-lite", (color: cl.$text-lite));
|
|
18
|
+
@include mc.meta("qo-text-system", (color: cl.$text-system));
|
|
19
|
+
@include mc.meta("qo-text-custom", (color: cl.$text-custom));
|
|
20
|
+
|
|
21
|
+
// Higher specificity variants when used with .qo-btn (beats Kendo .k-button-* selectors)
|
|
22
|
+
// Intentionally NOT wrapped in meta() — button overrides must stay high specificity
|
|
23
|
+
.qo-btn {
|
|
24
|
+
&.qo-text-primary { color: cl.$text-primary; &:hover, &:focus, &:active { color: cl.$text-primary-hover; } }
|
|
25
|
+
&.qo-text-secondary { color: cl.$text-secondary; &:hover, &:focus, &:active { color: cl.$text-dark; } }
|
|
26
|
+
&.qo-text-success { color: cl.$text-success; &:hover, &:focus, &:active { color: color.adjust(cl.$text-success, $lightness: -10%); } }
|
|
27
|
+
&.qo-text-warning { color: cl.$text-warning; &:hover, &:focus, &:active { color: color.adjust(cl.$text-warning, $lightness: -10%); } }
|
|
28
|
+
&.qo-text-danger { color: cl.$text-danger; &:hover, &:focus, &:active { color: cl.$text-danger-hover; } }
|
|
29
|
+
&.qo-text-info { color: cl.$text-info; &:hover, &:focus, &:active { color: color.adjust(cl.$text-info, $lightness: -10%); } }
|
|
30
|
+
&.qo-text-default { color: cl.$text-default; &:hover, &:focus, &:active { color: cl.$text-dark; } }
|
|
31
|
+
&.qo-text-dark { color: cl.$text-dark; &:hover, &:focus, &:active { color: color.adjust(cl.$text-dark, $lightness: -10%); } }
|
|
32
|
+
&.qo-text-light { color: cl.$text-light; &:hover, &:focus, &:active { color: cl.$text-light; } }
|
|
33
|
+
&.qo-text-tertiary { color: cl.$text-tertiary; &:hover, &:focus, &:active { color: color.adjust(cl.$text-tertiary, $lightness: -10%); } }
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.qo-validation {
|
|
37
|
+
color: cl.$text-danger;
|
|
38
|
+
}
|