@cocoar/vue-ui 0.1.0-beta.23
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/dist/index.css +1 -0
- package/dist/index.js +17574 -0
- package/package.json +45 -0
- package/styles/all.css +22 -0
- package/styles/base.css +143 -0
- package/styles/components.css +124 -0
- package/styles/link.css +68 -0
- package/styles/shared/form-field-message.css +28 -0
- package/styles/tokens/all.css +39 -0
- package/styles/tokens/code-block.css +72 -0
- package/styles/tokens/colors-primitives-dark.css +84 -0
- package/styles/tokens/colors-primitives-light.css +75 -0
- package/styles/tokens/colors-usage.css +277 -0
- package/styles/tokens/components-shared.css +42 -0
- package/styles/tokens/elevation.css +30 -0
- package/styles/tokens/focus.css +37 -0
- package/styles/tokens/layers.css +17 -0
- package/styles/tokens/menu.css +51 -0
- package/styles/tokens/motion.css +93 -0
- package/styles/tokens/new-components.css +104 -0
- package/styles/tokens/radius.css +14 -0
- package/styles/tokens/select-overlay.css +48 -0
- package/styles/tokens/shadows.css +39 -0
- package/styles/tokens/sidebar.css +68 -0
- package/styles/tokens/spacing.css +17 -0
- package/styles/tokens/stroke-width.css +12 -0
- package/styles/tokens/tooltip.css +19 -0
- package/styles/tokens/type-primitives.css +23 -0
- package/styles/tokens/typography-responsive.css +44 -0
- package/styles/tokens/typography.css +57 -0
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cocoar/vue-ui",
|
|
3
|
+
"version": "0.1.0-beta.23",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"sideEffects": [
|
|
6
|
+
"*.css"
|
|
7
|
+
],
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./styles": "./styles/all.css",
|
|
17
|
+
"./styles/*": "./styles/*"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"styles"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "vite build",
|
|
25
|
+
"test": "vitest run",
|
|
26
|
+
"lint": "eslint src/"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@cocoar/vue-localization": "0.1.0-beta.23",
|
|
30
|
+
"@cocoar/vue-fragment-parser": "0.1.0-beta.23",
|
|
31
|
+
"@js-temporal/polyfill": "^0.5.1",
|
|
32
|
+
"@maskito/core": "^5.1.1",
|
|
33
|
+
"@maskito/kit": "^5.1.1",
|
|
34
|
+
"@maskito/vue": "^5.1.1",
|
|
35
|
+
"prismjs": "^1.30.0"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"vue": "^3.5.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/prismjs": "^1.26.6",
|
|
42
|
+
"overlayscrollbars": "^2.14.0",
|
|
43
|
+
"vue": "^3.5.0"
|
|
44
|
+
}
|
|
45
|
+
}
|
package/styles/all.css
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - All Styles
|
|
3
|
+
*
|
|
4
|
+
* Import this file to get all design tokens and component global styles:
|
|
5
|
+
* @import '@cocoar/vue-ui/styles';
|
|
6
|
+
*
|
|
7
|
+
* CSS Cascade Layers (lowest → highest priority):
|
|
8
|
+
* 1. cocoar.tokens — design token custom properties
|
|
9
|
+
* 2. cocoar.base — body reset + typography utilities
|
|
10
|
+
* 3. cocoar.components — global component styles (link, select dropdowns, form messages)
|
|
11
|
+
*
|
|
12
|
+
* Vue scoped component styles and consumer styles are unlayered,
|
|
13
|
+
* so they always take priority over library globals.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
@layer cocoar.tokens, cocoar.base, cocoar.components;
|
|
17
|
+
|
|
18
|
+
@import './tokens/all.css' layer(cocoar.tokens);
|
|
19
|
+
@import './shared/form-field-message.css' layer(cocoar.components);
|
|
20
|
+
@import './base.css' layer(cocoar.base);
|
|
21
|
+
@import './components.css' layer(cocoar.components);
|
|
22
|
+
@import 'overlayscrollbars/overlayscrollbars.css';
|
package/styles/base.css
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - Base Styles
|
|
3
|
+
*
|
|
4
|
+
* Applies design tokens to html/body so the design system fonts,
|
|
5
|
+
* colors, and sizing work globally without per-component overrides.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
body {
|
|
9
|
+
font-family: var(--coar-body-base-family, Poppins, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
|
|
10
|
+
font-size: var(--coar-body-base-size, 14px);
|
|
11
|
+
font-weight: var(--coar-body-base-weight, 400);
|
|
12
|
+
line-height: var(--coar-body-base-line-height, 1.5);
|
|
13
|
+
color: var(--coar-text-neutral-primary, #1a1a1a);
|
|
14
|
+
-webkit-font-smoothing: antialiased;
|
|
15
|
+
-moz-osx-font-smoothing: grayscale;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* ========================================
|
|
19
|
+
TYPOGRAPHY UTILITY CLASSES
|
|
20
|
+
======================================== */
|
|
21
|
+
|
|
22
|
+
/* Titles - Inter */
|
|
23
|
+
.coar-display {
|
|
24
|
+
font-family: var(--coar-titles-display-family), sans-serif;
|
|
25
|
+
font-size: var(--coar-titles-display-size);
|
|
26
|
+
font-weight: var(--coar-titles-display-weight);
|
|
27
|
+
line-height: var(--coar-line-height-tight);
|
|
28
|
+
color: var(--coar-text-neutral-primary);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.coar-title {
|
|
32
|
+
font-family: var(--coar-titles-title-family), sans-serif;
|
|
33
|
+
font-size: var(--coar-titles-title-size);
|
|
34
|
+
font-weight: var(--coar-titles-title-weight);
|
|
35
|
+
line-height: var(--coar-line-height-tight);
|
|
36
|
+
color: var(--coar-text-neutral-primary);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.coar-subtitle {
|
|
40
|
+
font-family: var(--coar-titles-subtitle-family), sans-serif;
|
|
41
|
+
font-size: var(--coar-titles-subtitle-size);
|
|
42
|
+
font-weight: var(--coar-titles-subtitle-weight);
|
|
43
|
+
line-height: var(--coar-line-height-snug);
|
|
44
|
+
color: var(--coar-text-neutral-primary);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Headings - Poppins */
|
|
48
|
+
.coar-heading {
|
|
49
|
+
font-family: var(--coar-headings-heading-family), sans-serif;
|
|
50
|
+
font-size: var(--coar-headings-heading-size);
|
|
51
|
+
font-weight: var(--coar-headings-heading-weight);
|
|
52
|
+
line-height: var(--coar-line-height-snug);
|
|
53
|
+
color: var(--coar-text-neutral-primary);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.coar-subheading {
|
|
57
|
+
font-family: var(--coar-headings-subheading-family), sans-serif;
|
|
58
|
+
font-size: var(--coar-headings-subheading-size);
|
|
59
|
+
font-weight: var(--coar-headings-subheading-weight);
|
|
60
|
+
line-height: var(--coar-line-height-normal);
|
|
61
|
+
color: var(--coar-text-neutral-primary);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Body - Poppins */
|
|
65
|
+
.coar-body {
|
|
66
|
+
font-family: var(--coar-body-base-family), sans-serif;
|
|
67
|
+
font-size: var(--coar-body-base-size);
|
|
68
|
+
font-weight: var(--coar-body-base-weight);
|
|
69
|
+
line-height: var(--coar-line-height-loose);
|
|
70
|
+
color: var(--coar-text-neutral-primary);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.coar-body-bold {
|
|
74
|
+
font-family: var(--coar-body-bold-family), sans-serif;
|
|
75
|
+
font-size: var(--coar-body-bold-size);
|
|
76
|
+
font-weight: var(--coar-body-bold-weight);
|
|
77
|
+
line-height: var(--coar-line-height-loose);
|
|
78
|
+
color: var(--coar-text-neutral-primary);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.coar-body-small {
|
|
82
|
+
font-family: var(--coar-body-small-base-family), sans-serif;
|
|
83
|
+
font-size: var(--coar-body-small-base-size);
|
|
84
|
+
font-weight: var(--coar-body-small-base-weight);
|
|
85
|
+
line-height: var(--coar-line-height-relaxed);
|
|
86
|
+
color: var(--coar-text-neutral-primary);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.coar-body-small-bold {
|
|
90
|
+
font-family: var(--coar-body-small-bold-family), sans-serif;
|
|
91
|
+
font-size: var(--coar-body-small-bold-size);
|
|
92
|
+
font-weight: var(--coar-body-small-bold-weight);
|
|
93
|
+
line-height: var(--coar-line-height-relaxed);
|
|
94
|
+
color: var(--coar-text-neutral-primary);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.coar-caption {
|
|
98
|
+
font-family: var(--coar-body-caption-family), sans-serif;
|
|
99
|
+
font-size: var(--coar-body-caption-size);
|
|
100
|
+
font-weight: var(--coar-body-caption-weight);
|
|
101
|
+
line-height: var(--coar-line-height-normal);
|
|
102
|
+
text-transform: uppercase;
|
|
103
|
+
letter-spacing: 0.05em;
|
|
104
|
+
color: var(--coar-text-neutral-secondary);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.coar-footnote {
|
|
108
|
+
font-family: var(--coar-body-footnote-family), sans-serif;
|
|
109
|
+
font-size: var(--coar-body-footnote-size);
|
|
110
|
+
font-weight: var(--coar-body-footnote-weight);
|
|
111
|
+
line-height: var(--coar-line-height-normal);
|
|
112
|
+
color: var(--coar-text-neutral-tertiary);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* ========================================
|
|
116
|
+
RESPONSIVE TYPOGRAPHY
|
|
117
|
+
========================================
|
|
118
|
+
Scale down heading and title sizes at smaller breakpoints.
|
|
119
|
+
Body text (14-16px) stays unchanged — already appropriate for mobile.
|
|
120
|
+
Tokens defined in tokens/typography-responsive.css are applied here.
|
|
121
|
+
======================================== */
|
|
122
|
+
|
|
123
|
+
/* Tablet and below (< 1024px) */
|
|
124
|
+
@media (max-width: 1023px) {
|
|
125
|
+
:root {
|
|
126
|
+
--coar-titles-display-size: var(--coar-titles-display-size-tablet);
|
|
127
|
+
--coar-titles-title-size: var(--coar-titles-title-size-tablet);
|
|
128
|
+
--coar-titles-subtitle-size: var(--coar-titles-subtitle-size-tablet);
|
|
129
|
+
--coar-headings-heading-size: var(--coar-headings-heading-size-tablet);
|
|
130
|
+
--coar-headings-subheading-size: var(--coar-headings-subheading-size-tablet);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* Mobile (< 768px) */
|
|
135
|
+
@media (max-width: 767px) {
|
|
136
|
+
:root {
|
|
137
|
+
--coar-titles-display-size: var(--coar-titles-display-size-mobile);
|
|
138
|
+
--coar-titles-title-size: var(--coar-titles-title-size-mobile);
|
|
139
|
+
--coar-titles-subtitle-size: var(--coar-titles-subtitle-size-mobile);
|
|
140
|
+
--coar-headings-heading-size: var(--coar-headings-heading-size-mobile);
|
|
141
|
+
--coar-headings-subheading-size: var(--coar-headings-subheading-size-mobile);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar UI Components - Global Styles
|
|
3
|
+
*
|
|
4
|
+
* This file contains global styles for components that render content
|
|
5
|
+
* outside of view encapsulation (e.g., overlay panels),
|
|
6
|
+
* and CSS-only components that use plain class selectors.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* ========================================
|
|
10
|
+
LINK (CSS-only component)
|
|
11
|
+
======================================== */
|
|
12
|
+
@import './link.css';
|
|
13
|
+
|
|
14
|
+
/* ========================================
|
|
15
|
+
SELECT DROPDOWN SIZE VARIANTS
|
|
16
|
+
========================================
|
|
17
|
+
These styles target dropdown options when rendered via @cocoar/ui/overlay.
|
|
18
|
+
The overlay applies panelClass (e.g., coar-select-dropdown--xs) to .coar-overlay-panel.
|
|
19
|
+
|
|
20
|
+
We use .coar-overlay-panel.coar-select-dropdown--XX to ensure higher specificity
|
|
21
|
+
than Angular's scoped component styles (which use attribute selectors).
|
|
22
|
+
======================================== */
|
|
23
|
+
|
|
24
|
+
/* Single Select option sizes */
|
|
25
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-select-option {
|
|
26
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
27
|
+
font-size: var(--coar-component-xs-font-size);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-select-option {
|
|
31
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
32
|
+
font-size: var(--coar-component-s-font-size);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-select-option {
|
|
36
|
+
padding: var(--coar-spacing-m) var(--coar-spacing-l);
|
|
37
|
+
font-size: var(--coar-component-l-font-size);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Single Select search input sizes */
|
|
41
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-select-search-input {
|
|
42
|
+
height: 24px;
|
|
43
|
+
font-size: var(--coar-component-xs-font-size);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-select-search-input {
|
|
47
|
+
height: 28px;
|
|
48
|
+
font-size: var(--coar-component-s-font-size);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-select-search-input {
|
|
52
|
+
height: 40px;
|
|
53
|
+
font-size: var(--coar-component-l-font-size);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Multi Select option sizes */
|
|
57
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-multi-option {
|
|
58
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
59
|
+
font-size: var(--coar-component-xs-font-size);
|
|
60
|
+
gap: var(--coar-spacing-xs);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-multi-option {
|
|
64
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
65
|
+
font-size: var(--coar-component-s-font-size);
|
|
66
|
+
gap: var(--coar-spacing-xs);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-multi-option {
|
|
70
|
+
padding: var(--coar-spacing-m) var(--coar-spacing-l);
|
|
71
|
+
font-size: var(--coar-component-l-font-size);
|
|
72
|
+
gap: var(--coar-spacing-m);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Multi Select checkbox sizes */
|
|
76
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-multi-checkbox {
|
|
77
|
+
width: 12px;
|
|
78
|
+
height: 12px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-multi-checkbox {
|
|
82
|
+
width: 14px;
|
|
83
|
+
height: 14px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-multi-checkbox {
|
|
87
|
+
width: 18px;
|
|
88
|
+
height: 18px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Tag Select option sizes */
|
|
92
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-tag-option {
|
|
93
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
94
|
+
font-size: var(--coar-component-xs-font-size);
|
|
95
|
+
gap: var(--coar-spacing-xs);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-tag-option {
|
|
99
|
+
padding: var(--coar-spacing-xs) var(--coar-spacing-s);
|
|
100
|
+
font-size: var(--coar-component-s-font-size);
|
|
101
|
+
gap: var(--coar-spacing-xs);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-tag-option {
|
|
105
|
+
padding: var(--coar-spacing-m) var(--coar-spacing-l);
|
|
106
|
+
font-size: var(--coar-component-l-font-size);
|
|
107
|
+
gap: var(--coar-spacing-m);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Empty state sizes */
|
|
111
|
+
.coar-overlay-panel.coar-select-dropdown--xs .coar-select-empty {
|
|
112
|
+
padding: var(--coar-spacing-s);
|
|
113
|
+
font-size: var(--coar-component-xs-font-size);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.coar-overlay-panel.coar-select-dropdown--s .coar-select-empty {
|
|
117
|
+
padding: var(--coar-spacing-s);
|
|
118
|
+
font-size: var(--coar-component-s-font-size);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.coar-overlay-panel.coar-select-dropdown--l .coar-select-empty {
|
|
122
|
+
padding: var(--coar-spacing-l);
|
|
123
|
+
font-size: var(--coar-component-l-font-size);
|
|
124
|
+
}
|
package/styles/link.css
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* ========================================
|
|
2
|
+
LINK - CSS-only component
|
|
3
|
+
========================================
|
|
4
|
+
Applied to native <a> elements.
|
|
5
|
+
Usage: <a class="coar-link" href="...">Link</a>
|
|
6
|
+
======================================== */
|
|
7
|
+
|
|
8
|
+
.coar-link {
|
|
9
|
+
color: var(--coar-text-accent-primary);
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
transition: color var(--coar-duration-fast) ease;
|
|
13
|
+
font-size: var(--coar-component-m-font-size);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.coar-link:hover {
|
|
17
|
+
color: var(--coar-text-accent-secondary);
|
|
18
|
+
text-decoration: underline;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.coar-link:focus-visible {
|
|
22
|
+
outline: none;
|
|
23
|
+
box-shadow: var(--coar-focus-shadow);
|
|
24
|
+
border-radius: var(--coar-radius-xs);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.coar-link:active {
|
|
28
|
+
color: var(--coar-text-accent-secondary);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Subtle variant */
|
|
32
|
+
.coar-link--subtle {
|
|
33
|
+
color: var(--coar-text-neutral-secondary);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.coar-link--subtle:hover {
|
|
37
|
+
color: var(--coar-text-accent-primary);
|
|
38
|
+
text-decoration: underline;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Size variants */
|
|
42
|
+
.coar-link--s {
|
|
43
|
+
font-size: var(--coar-component-s-font-size);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.coar-link--m {
|
|
47
|
+
font-size: var(--coar-component-m-font-size);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.coar-link--l {
|
|
51
|
+
font-size: var(--coar-component-l-font-size);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Disabled */
|
|
55
|
+
.coar-link[aria-disabled='true'],
|
|
56
|
+
.coar-link--disabled {
|
|
57
|
+
color: var(--coar-text-neutral-disabled);
|
|
58
|
+
pointer-events: none;
|
|
59
|
+
cursor: default;
|
|
60
|
+
text-decoration: none;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Reduced motion */
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
.coar-link {
|
|
66
|
+
transition: none;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - Shared Form Field Message Styles
|
|
3
|
+
*
|
|
4
|
+
* Common styles for hint/error messages below form fields.
|
|
5
|
+
* Used by: CoarTextInput, CoarPasswordInput, CoarRadioGroup, CoarSelect, CoarCheckbox
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.coar-form-field-message {
|
|
9
|
+
display: block;
|
|
10
|
+
margin-top: var(--coar-spacing-xs);
|
|
11
|
+
height: calc(var(--coar-body-caption-size) * 1.4);
|
|
12
|
+
font-family: var(--coar-body-caption-family);
|
|
13
|
+
font-size: var(--coar-body-caption-size);
|
|
14
|
+
font-weight: var(--coar-body-caption-weight);
|
|
15
|
+
line-height: 1.4;
|
|
16
|
+
color: var(--coar-text-neutral-secondary);
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
text-overflow: ellipsis;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.coar-form-field-message:empty {
|
|
23
|
+
visibility: hidden;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.coar-form-field-message--error {
|
|
27
|
+
color: var(--coar-text-semantic-error-bold);
|
|
28
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - All Design Tokens
|
|
3
|
+
*
|
|
4
|
+
* Import this file to get all design tokens at once:
|
|
5
|
+
* @import '@cocoar/vue-ui/styles/tokens/all.css';
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* 1. Farb-Primitives (RAW) */
|
|
9
|
+
@import './colors-primitives-light.css';
|
|
10
|
+
@import './colors-primitives-dark.css';
|
|
11
|
+
|
|
12
|
+
/* 2. Farb-Semantik */
|
|
13
|
+
@import './colors-usage.css';
|
|
14
|
+
|
|
15
|
+
/* 3. Typografie-Primitives & -Semantik */
|
|
16
|
+
@import './type-primitives.css'; /* Font families, weights, etc. */
|
|
17
|
+
@import './typography.css'; /* Headings, titles, body, etc. */
|
|
18
|
+
@import './typography-responsive.css'; /* Responsive size variants for tablet/mobile */
|
|
19
|
+
|
|
20
|
+
/* 4. Layout / Shape-Primitives */
|
|
21
|
+
@import './spacing.css';
|
|
22
|
+
@import './radius.css';
|
|
23
|
+
@import './stroke-width.css';
|
|
24
|
+
|
|
25
|
+
/* 5. Motion & Shadows & Focus */
|
|
26
|
+
@import './motion.css';
|
|
27
|
+
@import './shadows.css';
|
|
28
|
+
@import './elevation.css';
|
|
29
|
+
@import './layers.css';
|
|
30
|
+
@import './focus.css';
|
|
31
|
+
|
|
32
|
+
/* 6. Shared Component Tokens */
|
|
33
|
+
@import './components-shared.css';
|
|
34
|
+
@import './code-block.css';
|
|
35
|
+
@import './menu.css';
|
|
36
|
+
@import './sidebar.css';
|
|
37
|
+
@import './select-overlay.css';
|
|
38
|
+
@import './tooltip.css';
|
|
39
|
+
@import './new-components.css';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - Code Block Tokens
|
|
3
|
+
* Theming tokens for the coar-code-block component
|
|
4
|
+
*
|
|
5
|
+
* These tokens allow consumers to customize code block appearance
|
|
6
|
+
* from a central location for consistent theming.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
/* ========================================
|
|
11
|
+
CODE BLOCK - LIGHT THEME (Default)
|
|
12
|
+
======================================== */
|
|
13
|
+
|
|
14
|
+
/* Layout */
|
|
15
|
+
--coar-code-block-bg: var(--coar-color-white);
|
|
16
|
+
--coar-code-block-header-bg: var(--coar-color-gray-50);
|
|
17
|
+
--coar-code-block-border: #e1e4e8;
|
|
18
|
+
|
|
19
|
+
/* Text */
|
|
20
|
+
--coar-code-block-text: #24292e;
|
|
21
|
+
--coar-code-block-text-muted: #6a737d;
|
|
22
|
+
|
|
23
|
+
/* Interactive */
|
|
24
|
+
--coar-code-block-button-bg-hover: rgba(0, 0, 0, 0.08);
|
|
25
|
+
|
|
26
|
+
/* Syntax Highlighting - Light (GitHub inspired) */
|
|
27
|
+
--coar-code-block-keyword: #d73a49;
|
|
28
|
+
--coar-code-block-string: #032f62;
|
|
29
|
+
--coar-code-block-number: #005cc5;
|
|
30
|
+
--coar-code-block-comment: #6a737d;
|
|
31
|
+
--coar-code-block-function: #6f42c1;
|
|
32
|
+
--coar-code-block-class: #22863a;
|
|
33
|
+
--coar-code-block-property: #005cc5;
|
|
34
|
+
--coar-code-block-operator: #24292e;
|
|
35
|
+
--coar-code-block-punctuation: #24292e;
|
|
36
|
+
--coar-code-block-tag: #22863a;
|
|
37
|
+
--coar-code-block-attr-name: #6f42c1;
|
|
38
|
+
--coar-code-block-attr-value: #032f62;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ========================================
|
|
42
|
+
CODE BLOCK - DARK THEME
|
|
43
|
+
======================================== */
|
|
44
|
+
|
|
45
|
+
:root.dark-mode,
|
|
46
|
+
.dark-mode {
|
|
47
|
+
/* Layout */
|
|
48
|
+
--coar-code-block-bg: var(--coar-color-gray-100, #27272a);
|
|
49
|
+
--coar-code-block-header-bg: var(--coar-color-gray-200, #3f3f46);
|
|
50
|
+
--coar-code-block-border: var(--coar-color-gray-300, #52525b);
|
|
51
|
+
|
|
52
|
+
/* Text */
|
|
53
|
+
--coar-code-block-text: #d4d4d4;
|
|
54
|
+
--coar-code-block-text-muted: #888888;
|
|
55
|
+
|
|
56
|
+
/* Interactive */
|
|
57
|
+
--coar-code-block-button-bg-hover: rgba(255, 255, 255, 0.12);
|
|
58
|
+
|
|
59
|
+
/* Syntax Highlighting - Dark (VS Code inspired) */
|
|
60
|
+
--coar-code-block-keyword: #569cd6;
|
|
61
|
+
--coar-code-block-string: #ce9178;
|
|
62
|
+
--coar-code-block-number: #b5cea8;
|
|
63
|
+
--coar-code-block-comment: #6a9955;
|
|
64
|
+
--coar-code-block-function: #dcdcaa;
|
|
65
|
+
--coar-code-block-class: #4ec9b0;
|
|
66
|
+
--coar-code-block-property: #9cdcfe;
|
|
67
|
+
--coar-code-block-operator: #d4d4d4;
|
|
68
|
+
--coar-code-block-punctuation: #808080;
|
|
69
|
+
--coar-code-block-tag: #569cd6;
|
|
70
|
+
--coar-code-block-attr-name: #9cdcfe;
|
|
71
|
+
--coar-code-block-attr-value: #ce9178;
|
|
72
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cocoar Design System - Design Tokens
|
|
3
|
+
* Color Primitives - Dark Mode
|
|
4
|
+
* Manually tuned for optimal dark theme appearance
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
:root.dark-mode,
|
|
8
|
+
.dark-mode {
|
|
9
|
+
--coar-color-black: #000000;
|
|
10
|
+
--coar-color-white: #ffffff;
|
|
11
|
+
|
|
12
|
+
/* Gray scale for dark mode - adjusted for better contrast */
|
|
13
|
+
--coar-color-gray-50: #18181b; /* Page background - slightly lighter */
|
|
14
|
+
--coar-color-gray-100: #27272a; /* Secondary background - more contrast */
|
|
15
|
+
--coar-color-gray-200: #3f3f46; /* Tertiary / cards */
|
|
16
|
+
--coar-color-gray-300: #52525b;
|
|
17
|
+
--coar-color-gray-400: #71717a;
|
|
18
|
+
--coar-color-gray-500: #a1a1aa;
|
|
19
|
+
--coar-color-gray-600: #d4d4d8;
|
|
20
|
+
--coar-color-gray-700: #e4e4e7;
|
|
21
|
+
--coar-color-gray-800: #f4f4f5;
|
|
22
|
+
--coar-color-gray-900: #fafafa;
|
|
23
|
+
|
|
24
|
+
/* Slate for brand/accent areas in dark mode */
|
|
25
|
+
--coar-color-slate-50: #0f172a;
|
|
26
|
+
--coar-color-slate-100: #1e293b;
|
|
27
|
+
--coar-color-slate-200: #334155;
|
|
28
|
+
--coar-color-slate-300: #475569;
|
|
29
|
+
--coar-color-slate-400: #64748b;
|
|
30
|
+
--coar-color-slate-500: #94a3b8;
|
|
31
|
+
--coar-color-slate-600: #b8c5d6;
|
|
32
|
+
--coar-color-slate-700: #cbd5e1;
|
|
33
|
+
--coar-color-slate-800: #e2e8f0;
|
|
34
|
+
--coar-color-slate-900: #f1f5f9;
|
|
35
|
+
|
|
36
|
+
/* Accent Colors - Primary brand accent for dark mode
|
|
37
|
+
THEMING: Override these to customize the primary accent color */
|
|
38
|
+
--coar-color-accent-50: #0a487a;
|
|
39
|
+
--coar-color-accent-100: #0f5a99;
|
|
40
|
+
--coar-color-accent-200: #156db7;
|
|
41
|
+
--coar-color-accent-300: #1e80d1;
|
|
42
|
+
--coar-color-accent-400: #278fe4;
|
|
43
|
+
--coar-color-accent-500: #459fea;
|
|
44
|
+
--coar-color-accent-600: #6eb4ef;
|
|
45
|
+
--coar-color-accent-700: #9fcdf5;
|
|
46
|
+
--coar-color-accent-800: #cde6fa;
|
|
47
|
+
--coar-color-accent-900: #e8f4fc;
|
|
48
|
+
|
|
49
|
+
/* Green - success colors for dark mode */
|
|
50
|
+
--coar-color-green-50: #0e3a1f;
|
|
51
|
+
--coar-color-green-100: #134f2b;
|
|
52
|
+
--coar-color-green-200: #186f39;
|
|
53
|
+
--coar-color-green-300: #1e8f48;
|
|
54
|
+
--coar-color-green-400: #25b95a;
|
|
55
|
+
--coar-color-green-500: #4ac771;
|
|
56
|
+
--coar-color-green-600: #76d591;
|
|
57
|
+
--coar-color-green-700: #a4e3b5;
|
|
58
|
+
--coar-color-green-800: #d2f1da;
|
|
59
|
+
--coar-color-green-900: #e8f9ed;
|
|
60
|
+
|
|
61
|
+
/* Red - error colors for dark mode */
|
|
62
|
+
--coar-color-red-50: #4d1414;
|
|
63
|
+
--coar-color-red-100: #6f1d1d;
|
|
64
|
+
--coar-color-red-200: #922626;
|
|
65
|
+
--coar-color-red-300: #b52f2f;
|
|
66
|
+
--coar-color-red-400: #d63b3b;
|
|
67
|
+
--coar-color-red-500: #e45555;
|
|
68
|
+
--coar-color-red-600: #ec7c7c;
|
|
69
|
+
--coar-color-red-700: #f3a8a8;
|
|
70
|
+
--coar-color-red-800: #f9d3d3;
|
|
71
|
+
--coar-color-red-900: #fdecec;
|
|
72
|
+
|
|
73
|
+
/* Yellow - warning colors for dark mode */
|
|
74
|
+
--coar-color-amber-50: #402908;
|
|
75
|
+
--coar-color-amber-100: #66430f;
|
|
76
|
+
--coar-color-amber-200: #996217;
|
|
77
|
+
--coar-color-amber-300: #cc821f;
|
|
78
|
+
--coar-color-amber-400: #ffa326;
|
|
79
|
+
--coar-color-amber-500: #ffba4d;
|
|
80
|
+
--coar-color-amber-600: #ffce78;
|
|
81
|
+
--coar-color-amber-700: #ffdfa0;
|
|
82
|
+
--coar-color-amber-800: #ffeec2;
|
|
83
|
+
--coar-color-amber-900: #fff8e6;
|
|
84
|
+
}
|