@vanduo-oss/framework 1.3.8 → 1.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/README.md +87 -41
- package/css/components/affix.css +1 -1
- package/css/components/alerts.css +40 -40
- package/css/components/avatar.css +33 -33
- package/css/components/badges.css +42 -42
- package/css/components/breadcrumbs.css +5 -5
- package/css/components/bubble.css +4 -4
- package/css/components/buttons.css +124 -124
- package/css/components/cards.css +10 -10
- package/css/components/chips.css +28 -28
- package/css/components/code-snippet.css +18 -18
- package/css/components/collapsible.css +28 -20
- package/css/components/collections.css +21 -21
- package/css/components/datepicker.css +13 -13
- package/css/components/doc-search.css +46 -53
- package/css/components/doc-tabs.css +10 -10
- package/css/components/draggable.css +34 -34
- package/css/components/dropdown.css +14 -14
- package/css/components/expanding-cards.css +1 -1
- package/css/components/fab.css +7 -7
- package/css/components/flow.css +3 -3
- package/css/components/footer.css +26 -26
- package/css/components/forms.css +95 -83
- package/css/components/image-box.css +13 -17
- package/css/components/modals.css +8 -8
- package/css/components/music-player.css +26 -26
- package/css/components/navbar.css +27 -27
- package/css/components/pagination.css +15 -15
- package/css/components/preloader.css +10 -10
- package/css/components/progress.css +8 -8
- package/css/components/rating.css +4 -4
- package/css/components/sidenav.css +14 -14
- package/css/components/skeleton.css +10 -9
- package/css/components/spinner.css +10 -10
- package/css/components/spotlight.css +7 -7
- package/css/components/stepper.css +13 -13
- package/css/components/suggest.css +10 -10
- package/css/components/tabs.css +22 -22
- package/css/components/theme-customizer.css +87 -87
- package/css/components/timeline.css +14 -14
- package/css/components/timepicker.css +7 -7
- package/css/components/toast.css +31 -31
- package/css/components/tooltips.css +11 -11
- package/css/components/transfer.css +12 -12
- package/css/components/tree.css +9 -9
- package/css/components/waypoint.css +3 -3
- package/css/core/colors.css +61 -35
- package/css/core/grid.css +1 -6
- package/css/core/helpers.css +11 -11
- package/css/core/tokens.css +114 -36
- package/css/core/typography.css +15 -13
- package/css/core/vd-aliases.css +100 -52
- package/css/effects/morph.css +5 -5
- package/css/utilities/media.css +2 -2
- package/css/utilities/table.css +34 -34
- package/css/utilities/transitions.css +22 -10
- package/css/vanduo.css +14 -34
- package/dist/build-info.json +3 -3
- package/dist/vanduo.cjs.js +935 -294
- package/dist/vanduo.cjs.js.map +3 -3
- package/dist/vanduo.cjs.min.js +7 -7
- package/dist/vanduo.cjs.min.js.map +3 -3
- package/dist/vanduo.css +7942 -7824
- package/dist/vanduo.css.map +1 -1
- package/dist/vanduo.esm.js +935 -294
- package/dist/vanduo.esm.js.map +3 -3
- package/dist/vanduo.esm.min.js +7 -7
- package/dist/vanduo.esm.min.js.map +3 -3
- package/dist/vanduo.js +935 -294
- package/dist/vanduo.js.map +3 -3
- package/dist/vanduo.min.css +2 -2
- package/dist/vanduo.min.css.map +1 -1
- package/dist/vanduo.min.js +7 -7
- package/dist/vanduo.min.js.map +3 -3
- package/js/components/affix.js +2 -2
- package/js/components/bubble.js +3 -3
- package/js/components/code-snippet.js +129 -5
- package/js/components/collapsible.js +2 -3
- package/js/components/datepicker.js +2 -2
- package/js/components/doc-search.js +69 -11
- package/js/components/draggable.js +4 -4
- package/js/components/dropdown.js +2 -3
- package/js/components/expanding-cards.js +2 -2
- package/js/components/flow.js +2 -2
- package/js/components/font-switcher.js +26 -16
- package/js/components/glass.js +2 -2
- package/js/components/grid.js +19 -8
- package/js/components/image-box.js +49 -10
- package/js/components/lazy-load.js +81 -9
- package/js/components/modals.js +28 -12
- package/js/components/morph.js +2 -2
- package/js/components/music-player.js +2 -2
- package/js/components/navbar.js +2 -2
- package/js/components/pagination.js +2 -3
- package/js/components/parallax.js +9 -10
- package/js/components/preloader.js +14 -5
- package/js/components/rating.js +2 -2
- package/js/components/ripple.js +2 -2
- package/js/components/select.js +2 -3
- package/js/components/sidenav.js +43 -14
- package/js/components/spotlight.js +2 -2
- package/js/components/stepper.js +2 -2
- package/js/components/suggest.js +9 -3
- package/js/components/tabs.js +2 -2
- package/js/components/theme-customizer.js +154 -23
- package/js/components/theme-switcher.js +27 -16
- package/js/components/timeline.js +41 -12
- package/js/components/timepicker.js +2 -2
- package/js/components/toast.js +1 -1
- package/js/components/tooltips.js +4 -4
- package/js/components/transfer.js +2 -2
- package/js/components/tree.js +2 -2
- package/js/components/validate.js +2 -2
- package/js/components/vd-hex.js +12 -6
- package/js/components/waypoint.js +2 -2
- package/js/utils/helpers.js +7 -4
- package/js/utils/lifecycle.js +158 -83
- package/js/vanduo.js +203 -34
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Vanduo Framework v1.
|
|
1
|
+
# Vanduo Framework v1.4.0
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<img src="vanduo-banner.svg" alt="Vanduo Framework Banner" width="100%">
|
|
@@ -10,41 +10,43 @@
|
|
|
10
10
|
<a href="https://github.com/vanduo-oss/framework/blob/main/LICENSE"><img src="https://img.shields.io/github/license/vanduo-oss/framework?style=flat-square&color=64748b" alt="License"></a>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Vanduo is a lightweight, zero-dependency UI framework built with pure HTML, CSS, and JavaScript. It ships 47+ components, responsive utilities, dark mode support, and a flexible theming system.
|
|
13
|
+
Vanduo is a zero-dependency UI framework built with HTML, CSS, and vanilla JavaScript. It ships a full component bundle, scoped runtime initialization, a canonical `--vd-*` token API, and compatibility aliases for existing `1.3.x` consumers.
|
|
16
14
|
|
|
17
15
|
[Browse Docs](https://vanduo.dev/#docs)
|
|
18
16
|
|
|
19
17
|
## Highlights
|
|
20
18
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
- Built-in dark
|
|
26
|
-
-
|
|
27
|
-
-
|
|
19
|
+
- Zero runtime dependencies
|
|
20
|
+
- 47+ components across layout, navigation, overlays, search, and effects
|
|
21
|
+
- Scoped runtime APIs for dynamic DOM work
|
|
22
|
+
- Canonical semantic token API under `--vd-*`
|
|
23
|
+
- Built-in dark, light, and system theming
|
|
24
|
+
- Theme customizer with color, font, and radius controls
|
|
25
|
+
- Playwright-based browser coverage across Chromium, Firefox, and WebKit
|
|
28
26
|
|
|
29
27
|
## Quick Start
|
|
30
28
|
|
|
31
|
-
### CDN
|
|
29
|
+
### CDN
|
|
32
30
|
|
|
33
31
|
```html
|
|
34
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.
|
|
35
|
-
<script src="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.
|
|
36
|
-
<script>
|
|
32
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.4.0/dist/vanduo.min.css">
|
|
33
|
+
<script src="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.4.0/dist/vanduo.min.js"></script>
|
|
34
|
+
<script>
|
|
35
|
+
Vanduo.init();
|
|
36
|
+
</script>
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
### Local
|
|
39
|
+
### Local Dist Files
|
|
40
40
|
|
|
41
41
|
```html
|
|
42
42
|
<link rel="stylesheet" href="dist/vanduo.min.css">
|
|
43
43
|
<script src="dist/vanduo.min.js"></script>
|
|
44
|
-
<script>
|
|
44
|
+
<script>
|
|
45
|
+
Vanduo.init();
|
|
46
|
+
</script>
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
### Package
|
|
49
|
+
### Package Install
|
|
48
50
|
|
|
49
51
|
```bash
|
|
50
52
|
pnpm add @vanduo-oss/framework
|
|
@@ -57,39 +59,83 @@ import { Vanduo } from '@vanduo-oss/framework';
|
|
|
57
59
|
Vanduo.init();
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
##
|
|
62
|
+
## Runtime API
|
|
63
|
+
|
|
64
|
+
```js
|
|
65
|
+
Vanduo.init(root);
|
|
66
|
+
Vanduo.initComponents(root);
|
|
67
|
+
Vanduo.reinit('lazyLoad', root);
|
|
68
|
+
Vanduo.destroy(root);
|
|
69
|
+
Vanduo.destroyAll();
|
|
70
|
+
Vanduo.getComponent('docSearch');
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- Omit `root` to target the full document.
|
|
74
|
+
- Pass an `Element` to initialize or destroy only a subtree.
|
|
75
|
+
- Canonical component registry names use `lowerCamelCase`.
|
|
76
|
+
- `LazyLoad` remains available as a compatibility alias for `lazyLoad` in `1.4.x`.
|
|
61
77
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
78
|
+
## Token API
|
|
79
|
+
|
|
80
|
+
Vanduo `1.4.0` treats `--vd-*` as the canonical semantic API:
|
|
81
|
+
|
|
82
|
+
- Colors: `--vd-color-*`
|
|
83
|
+
- Backgrounds: `--vd-bg-*`
|
|
84
|
+
- Text: `--vd-text-*`
|
|
85
|
+
- Borders: `--vd-border-*`
|
|
86
|
+
- Shadows: `--vd-shadow-*`
|
|
87
|
+
|
|
88
|
+
Legacy semantic aliases like `--color-*`, `--bg-*`, and `--text-*` are still supported throughout the `1.4.x` line.
|
|
89
|
+
|
|
90
|
+
```css
|
|
91
|
+
.cta {
|
|
92
|
+
color: var(--vd-text-inverse);
|
|
93
|
+
background: var(--vd-color-primary);
|
|
94
|
+
border-color: var(--vd-border-color);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
More detail lives in [TOKENS.md](TOKENS.md).
|
|
99
|
+
|
|
100
|
+
## CSS Bundle Notes
|
|
101
|
+
|
|
102
|
+
- `css/vanduo.css` remains the main framework entrypoint in `1.4.0`.
|
|
103
|
+
- The main bundle still includes framework-wide form defaults for native inputs and textareas.
|
|
104
|
+
- New component styling should prefer `.vd-*` hooks over new raw element selectors.
|
|
67
105
|
|
|
68
106
|
## Project Structure
|
|
69
107
|
|
|
70
108
|
```text
|
|
71
|
-
|
|
72
|
-
├──
|
|
73
|
-
├──
|
|
74
|
-
├──
|
|
75
|
-
├──
|
|
76
|
-
├──
|
|
77
|
-
└──
|
|
109
|
+
framework/
|
|
110
|
+
├── css/ # Foundation, utilities, effects, components
|
|
111
|
+
├── js/ # Runtime, lifecycle, components
|
|
112
|
+
├── dist/ # Built artifacts
|
|
113
|
+
├── tests/ # Playwright fixtures and specs
|
|
114
|
+
├── scripts/ # Build, verification, and inventory scripts
|
|
115
|
+
└── docs/*.md # Release and architecture notes
|
|
78
116
|
```
|
|
79
117
|
|
|
80
|
-
##
|
|
118
|
+
## Development
|
|
81
119
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
120
|
+
```bash
|
|
121
|
+
corepack enable
|
|
122
|
+
pnpm install
|
|
123
|
+
pnpm run lint
|
|
124
|
+
pnpm run build
|
|
125
|
+
pnpm run check:versions
|
|
126
|
+
pnpm test
|
|
127
|
+
pnpm run stats:css
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Release Notes
|
|
131
|
+
|
|
132
|
+
- Architecture notes: [ARCHITECTURE.md](ARCHITECTURE.md)
|
|
133
|
+
- Token model: [TOKENS.md](TOKENS.md)
|
|
134
|
+
- `1.4.0` migration notes: [changes-v140.md](changes-v140.md)
|
|
135
|
+
- QA strategy: [QA-Automation-Strategy.md](QA-Automation-Strategy.md)
|
|
136
|
+
- Contributor workflow: [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
86
137
|
|
|
87
138
|
## License
|
|
88
139
|
|
|
89
140
|
MIT - see [LICENSE](LICENSE).
|
|
90
141
|
Third-party notices are listed in [THIRD-PARTY-LICENSES](THIRD-PARTY-LICENSES).
|
|
91
|
-
|
|
92
|
-
## Credits
|
|
93
|
-
|
|
94
|
-
- [Open Color](https://yeun.github.io/open-color/) (MIT)
|
|
95
|
-
- [Phosphor Icons](https://phosphoricons.com/) (MIT)
|
package/css/components/affix.css
CHANGED
|
@@ -11,43 +11,43 @@
|
|
|
11
11
|
--alert-border-width: 1px;
|
|
12
12
|
|
|
13
13
|
/* Alert Colors */
|
|
14
|
-
--alert-primary-bg: var(--color-primary-alpha-10);
|
|
15
|
-
--alert-primary-border: var(--color-primary);
|
|
16
|
-
--alert-primary-text: var(--color-primary-dark);
|
|
14
|
+
--alert-primary-bg: var(--vd-color-primary-alpha-10);
|
|
15
|
+
--alert-primary-border: var(--vd-color-primary);
|
|
16
|
+
--alert-primary-text: var(--vd-color-primary-dark);
|
|
17
17
|
|
|
18
|
-
--alert-success-bg: var(--color-success-alpha-10);
|
|
19
|
-
--alert-success-border: var(--color-success);
|
|
20
|
-
--alert-success-text: var(--color-success-dark);
|
|
18
|
+
--alert-success-bg: var(--vd-color-success-alpha-10);
|
|
19
|
+
--alert-success-border: var(--vd-color-success);
|
|
20
|
+
--alert-success-text: var(--vd-color-success-dark);
|
|
21
21
|
|
|
22
|
-
--alert-warning-bg: var(--color-warning-alpha-10);
|
|
23
|
-
--alert-warning-border: var(--color-warning);
|
|
24
|
-
--alert-warning-text: var(--color-warning-dark);
|
|
22
|
+
--alert-warning-bg: var(--vd-color-warning-alpha-10);
|
|
23
|
+
--alert-warning-border: var(--vd-color-warning);
|
|
24
|
+
--alert-warning-text: var(--vd-color-warning-dark);
|
|
25
25
|
|
|
26
|
-
--alert-error-bg: var(--color-error-alpha-10);
|
|
27
|
-
--alert-error-border: var(--color-error);
|
|
28
|
-
--alert-error-text: var(--color-error-dark);
|
|
26
|
+
--alert-error-bg: var(--vd-color-error-alpha-10);
|
|
27
|
+
--alert-error-border: var(--vd-color-error);
|
|
28
|
+
--alert-error-text: var(--vd-color-error-dark);
|
|
29
29
|
|
|
30
|
-
--alert-info-bg: var(--color-info-alpha-10);
|
|
31
|
-
--alert-info-border: var(--color-info);
|
|
32
|
-
--alert-info-text: var(--color-info-dark);
|
|
30
|
+
--alert-info-bg: var(--vd-color-info-alpha-10);
|
|
31
|
+
--alert-info-border: var(--vd-color-info);
|
|
32
|
+
--alert-info-text: var(--vd-color-info-dark);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/* Dark Theme Overrides */
|
|
36
36
|
[data-theme="dark"] {
|
|
37
|
-
--alert-primary-text: var(--color-primary-light);
|
|
38
|
-
--alert-success-text: var(--color-success-light);
|
|
39
|
-
--alert-warning-text: var(--color-warning-light);
|
|
40
|
-
--alert-error-text: var(--color-error-light);
|
|
41
|
-
--alert-info-text: var(--color-info-light);
|
|
37
|
+
--alert-primary-text: var(--vd-color-primary-light);
|
|
38
|
+
--alert-success-text: var(--vd-color-success-light);
|
|
39
|
+
--alert-warning-text: var(--vd-color-warning-light);
|
|
40
|
+
--alert-error-text: var(--vd-color-error-light);
|
|
41
|
+
--alert-info-text: var(--vd-color-info-light);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
@media (prefers-color-scheme: dark) {
|
|
45
45
|
:root:not([data-theme]) {
|
|
46
|
-
--alert-primary-text: var(--color-primary-light);
|
|
47
|
-
--alert-success-text: var(--color-success-light);
|
|
48
|
-
--alert-warning-text: var(--color-warning-light);
|
|
49
|
-
--alert-error-text: var(--color-error-light);
|
|
50
|
-
--alert-info-text: var(--color-info-light);
|
|
46
|
+
--alert-primary-text: var(--vd-color-primary-light);
|
|
47
|
+
--alert-success-text: var(--vd-color-success-light);
|
|
48
|
+
--alert-warning-text: var(--vd-color-warning-light);
|
|
49
|
+
--alert-error-text: var(--vd-color-error-light);
|
|
50
|
+
--alert-info-text: var(--vd-color-info-light);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -164,34 +164,34 @@
|
|
|
164
164
|
|
|
165
165
|
/* Solid Variants (filled background) */
|
|
166
166
|
.vd-alert-solid.vd-alert-primary {
|
|
167
|
-
background-color: var(--color-primary);
|
|
168
|
-
border-color: var(--color-primary);
|
|
169
|
-
color: var(--color-white);
|
|
167
|
+
background-color: var(--vd-color-primary);
|
|
168
|
+
border-color: var(--vd-color-primary);
|
|
169
|
+
color: var(--vd-color-white);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
.vd-alert-solid.vd-alert-success {
|
|
173
|
-
background-color: var(--color-success);
|
|
174
|
-
border-color: var(--color-success);
|
|
175
|
-
color: var(--color-white);
|
|
173
|
+
background-color: var(--vd-color-success);
|
|
174
|
+
border-color: var(--vd-color-success);
|
|
175
|
+
color: var(--vd-color-white);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
.vd-alert-solid.vd-alert-warning {
|
|
179
|
-
background-color: var(--color-warning);
|
|
180
|
-
border-color: var(--color-warning);
|
|
181
|
-
color: var(--color-gray-900);
|
|
179
|
+
background-color: var(--vd-color-warning);
|
|
180
|
+
border-color: var(--vd-color-warning);
|
|
181
|
+
color: var(--vd-color-gray-900);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
.vd-alert-solid.vd-alert-error,
|
|
185
185
|
.vd-alert-solid.vd-alert-danger {
|
|
186
|
-
background-color: var(--color-error);
|
|
187
|
-
border-color: var(--color-error);
|
|
188
|
-
color: var(--color-white);
|
|
186
|
+
background-color: var(--vd-color-error);
|
|
187
|
+
border-color: var(--vd-color-error);
|
|
188
|
+
color: var(--vd-color-white);
|
|
189
189
|
}
|
|
190
190
|
|
|
191
191
|
.vd-alert-solid.vd-alert-info {
|
|
192
|
-
background-color: var(--color-info);
|
|
193
|
-
border-color: var(--color-info);
|
|
194
|
-
color: var(--color-white);
|
|
192
|
+
background-color: var(--vd-color-info);
|
|
193
|
+
border-color: var(--vd-color-info);
|
|
194
|
+
color: var(--vd-color-white);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
/* Outline Variants */
|
|
@@ -14,27 +14,27 @@
|
|
|
14
14
|
--avatar-size-2xl: 14.5625rem;/* 233px - fib */
|
|
15
15
|
|
|
16
16
|
/* Avatar Colors */
|
|
17
|
-
--avatar-bg: var(--color-gray-300);
|
|
18
|
-
--avatar-text: var(--color-gray-700);
|
|
19
|
-
--avatar-border: var(--color-white);
|
|
20
|
-
--avatar-status-online: var(--color-success);
|
|
21
|
-
--avatar-status-offline: var(--color-gray-400);
|
|
22
|
-
--avatar-status-busy: var(--color-error);
|
|
23
|
-
--avatar-status-away: var(--color-warning);
|
|
17
|
+
--avatar-bg: var(--vd-color-gray-300);
|
|
18
|
+
--avatar-text: var(--vd-color-gray-700);
|
|
19
|
+
--avatar-border: var(--vd-color-white);
|
|
20
|
+
--avatar-status-online: var(--vd-color-success);
|
|
21
|
+
--avatar-status-offline: var(--vd-color-gray-400);
|
|
22
|
+
--avatar-status-busy: var(--vd-color-error);
|
|
23
|
+
--avatar-status-away: var(--vd-color-warning);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/* Dark Theme Overrides */
|
|
27
27
|
[data-theme="dark"] {
|
|
28
|
-
--avatar-bg: var(--color-gray-600);
|
|
29
|
-
--avatar-text: var(--color-gray-200);
|
|
30
|
-
--avatar-border: var(--color-gray-800);
|
|
28
|
+
--avatar-bg: var(--vd-color-gray-600);
|
|
29
|
+
--avatar-text: var(--vd-color-gray-200);
|
|
30
|
+
--avatar-border: var(--vd-color-gray-800);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
@media (prefers-color-scheme: dark) {
|
|
34
34
|
:root:not([data-theme]) {
|
|
35
|
-
--avatar-bg: var(--color-gray-600);
|
|
36
|
-
--avatar-text: var(--color-gray-200);
|
|
37
|
-
--avatar-border: var(--color-gray-800);
|
|
35
|
+
--avatar-bg: var(--vd-color-gray-600);
|
|
36
|
+
--avatar-text: var(--vd-color-gray-200);
|
|
37
|
+
--avatar-border: var(--vd-color-gray-800);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -161,19 +161,19 @@
|
|
|
161
161
|
|
|
162
162
|
/* Avatar with Ring/Border */
|
|
163
163
|
.vd-avatar-ring {
|
|
164
|
-
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--color-primary);
|
|
164
|
+
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--vd-color-primary);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
.vd-avatar-ring-success {
|
|
168
|
-
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--color-success);
|
|
168
|
+
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--vd-color-success);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
.vd-avatar-ring-warning {
|
|
172
|
-
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--color-warning);
|
|
172
|
+
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--vd-color-warning);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
.vd-avatar-ring-error {
|
|
176
|
-
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--color-error);
|
|
176
|
+
box-shadow: 0 0 0 3px var(--avatar-border), 0 0 0 5px var(--vd-color-error);
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
/* Avatar Group (stacked avatars) */
|
|
@@ -212,8 +212,8 @@
|
|
|
212
212
|
width: var(--avatar-size);
|
|
213
213
|
height: var(--avatar-size);
|
|
214
214
|
border-radius: 50%;
|
|
215
|
-
background-color: var(--color-gray-200);
|
|
216
|
-
color: var(--text-primary);
|
|
215
|
+
background-color: var(--vd-color-gray-200);
|
|
216
|
+
color: var(--vd-text-primary);
|
|
217
217
|
font-size: var(--font-size-sm);
|
|
218
218
|
font-weight: var(--font-weight-medium);
|
|
219
219
|
border: 2px solid var(--avatar-border);
|
|
@@ -221,38 +221,38 @@
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
[data-theme="dark"] .vd-avatar-group-count {
|
|
224
|
-
background-color: var(--color-gray-700);
|
|
224
|
+
background-color: var(--vd-color-gray-700);
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
/* Color Variants */
|
|
228
228
|
.vd-avatar-primary {
|
|
229
|
-
background-color: var(--color-primary);
|
|
230
|
-
color: var(--color-white);
|
|
229
|
+
background-color: var(--vd-color-primary);
|
|
230
|
+
color: var(--vd-color-white);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
.vd-avatar-secondary {
|
|
234
|
-
background-color: var(--color-secondary);
|
|
235
|
-
color: var(--color-white);
|
|
234
|
+
background-color: var(--vd-color-secondary);
|
|
235
|
+
color: var(--vd-color-white);
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
.vd-avatar-success {
|
|
239
|
-
background-color: var(--color-success);
|
|
240
|
-
color: var(--color-white);
|
|
239
|
+
background-color: var(--vd-color-success);
|
|
240
|
+
color: var(--vd-color-white);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
.vd-avatar-warning {
|
|
244
|
-
background-color: var(--color-warning);
|
|
245
|
-
color: var(--color-gray-900);
|
|
244
|
+
background-color: var(--vd-color-warning);
|
|
245
|
+
color: var(--vd-color-gray-900);
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
.vd-avatar-error {
|
|
249
|
-
background-color: var(--color-error);
|
|
250
|
-
color: var(--color-white);
|
|
249
|
+
background-color: var(--vd-color-error);
|
|
250
|
+
color: var(--vd-color-white);
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
.vd-avatar-info {
|
|
254
|
-
background-color: var(--color-info);
|
|
255
|
-
color: var(--color-white);
|
|
254
|
+
background-color: var(--vd-color-info);
|
|
255
|
+
color: var(--vd-color-white);
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
/* Clickable Avatar */
|
|
@@ -269,7 +269,7 @@ button.vd-avatar:hover {
|
|
|
269
269
|
|
|
270
270
|
a.vd-avatar:focus-visible,
|
|
271
271
|
button.vd-avatar:focus-visible {
|
|
272
|
-
outline: 2px solid var(--color-primary);
|
|
272
|
+
outline: 2px solid var(--vd-color-primary);
|
|
273
273
|
outline-offset: 2px;
|
|
274
274
|
}
|
|
275
275
|
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
|
|
38
38
|
/* Dark Theme - Light badge needs different colors */
|
|
39
39
|
[data-theme="dark"] .vd-badge-light {
|
|
40
|
-
background-color: var(--color-gray-700);
|
|
41
|
-
color: var(--color-gray-100);
|
|
40
|
+
background-color: var(--vd-color-gray-700);
|
|
41
|
+
color: var(--vd-color-gray-100);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
[data-theme="dark"] .vd-badge-outlined.vd-badge-light {
|
|
45
|
-
color: var(--color-gray-300);
|
|
46
|
-
border-color: var(--color-gray-500);
|
|
45
|
+
color: var(--vd-color-gray-300);
|
|
46
|
+
border-color: var(--vd-color-gray-500);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
@media (prefers-color-scheme: dark) {
|
|
50
50
|
:root:not([data-theme]) .vd-badge-light {
|
|
51
|
-
background-color: var(--color-gray-700);
|
|
52
|
-
color: var(--color-gray-100);
|
|
51
|
+
background-color: var(--vd-color-gray-700);
|
|
52
|
+
color: var(--vd-color-gray-100);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
:root:not([data-theme]) .vd-badge-outlined.vd-badge-light {
|
|
56
|
-
color: var(--color-gray-300);
|
|
57
|
-
border-color: var(--color-gray-500);
|
|
56
|
+
color: var(--vd-color-gray-300);
|
|
57
|
+
border-color: var(--vd-color-gray-500);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -65,53 +65,53 @@
|
|
|
65
65
|
font-size: var(--badge-font-size);
|
|
66
66
|
font-weight: var(--badge-font-weight);
|
|
67
67
|
line-height: var(--badge-line-height);
|
|
68
|
-
color: var(--color-white);
|
|
68
|
+
color: var(--vd-color-white);
|
|
69
69
|
text-align: center;
|
|
70
70
|
white-space: nowrap;
|
|
71
71
|
vertical-align: baseline;
|
|
72
72
|
border-radius: var(--badge-border-radius);
|
|
73
|
-
background-color: var(--color-secondary);
|
|
73
|
+
background-color: var(--vd-color-secondary);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/* Badge Variants */
|
|
77
77
|
.vd-badge-primary {
|
|
78
|
-
background-color: var(--color-primary);
|
|
79
|
-
color: var(--color-white);
|
|
78
|
+
background-color: var(--vd-color-primary);
|
|
79
|
+
color: var(--vd-color-white);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
.vd-badge-secondary {
|
|
83
|
-
background-color: var(--color-secondary);
|
|
84
|
-
color: var(--color-white);
|
|
83
|
+
background-color: var(--vd-color-secondary);
|
|
84
|
+
color: var(--vd-color-white);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
.vd-badge-success {
|
|
88
|
-
background-color: var(--color-success);
|
|
89
|
-
color: var(--color-white);
|
|
88
|
+
background-color: var(--vd-color-success);
|
|
89
|
+
color: var(--vd-color-white);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.vd-badge-warning {
|
|
93
|
-
background-color: var(--color-warning);
|
|
94
|
-
color: var(--color-gray-900);
|
|
93
|
+
background-color: var(--vd-color-warning);
|
|
94
|
+
color: var(--vd-color-gray-900);
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
.vd-badge-error {
|
|
98
|
-
background-color: var(--color-error);
|
|
99
|
-
color: var(--color-white);
|
|
98
|
+
background-color: var(--vd-color-error);
|
|
99
|
+
color: var(--vd-color-white);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.vd-badge-info {
|
|
103
|
-
background-color: var(--color-info);
|
|
104
|
-
color: var(--color-white);
|
|
103
|
+
background-color: var(--vd-color-info);
|
|
104
|
+
color: var(--vd-color-white);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.vd-badge-light {
|
|
108
|
-
background-color: var(--color-gray-100);
|
|
109
|
-
color: var(--color-gray-900);
|
|
108
|
+
background-color: var(--vd-color-gray-100);
|
|
109
|
+
color: var(--vd-color-gray-900);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
.vd-badge-dark {
|
|
113
|
-
background-color: var(--color-gray-800);
|
|
114
|
-
color: var(--color-white);
|
|
113
|
+
background-color: var(--vd-color-gray-800);
|
|
114
|
+
color: var(--vd-color-white);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/* Badge Sizes */
|
|
@@ -138,43 +138,43 @@
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
.vd-badge-outlined.vd-badge-primary {
|
|
141
|
-
color: var(--color-primary);
|
|
142
|
-
border-color: var(--color-primary);
|
|
141
|
+
color: var(--vd-color-primary);
|
|
142
|
+
border-color: var(--vd-color-primary);
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
.vd-badge-outlined.vd-badge-secondary {
|
|
146
|
-
color: var(--color-secondary);
|
|
147
|
-
border-color: var(--color-secondary);
|
|
146
|
+
color: var(--vd-color-secondary);
|
|
147
|
+
border-color: var(--vd-color-secondary);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
.vd-badge-outlined.vd-badge-success {
|
|
151
|
-
color: var(--color-success);
|
|
152
|
-
border-color: var(--color-success);
|
|
151
|
+
color: var(--vd-color-success);
|
|
152
|
+
border-color: var(--vd-color-success);
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
.vd-badge-outlined.vd-badge-warning {
|
|
156
|
-
color: var(--color-warning);
|
|
157
|
-
border-color: var(--color-warning);
|
|
156
|
+
color: var(--vd-color-warning);
|
|
157
|
+
border-color: var(--vd-color-warning);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
.vd-badge-outlined.vd-badge-error {
|
|
161
|
-
color: var(--color-error);
|
|
162
|
-
border-color: var(--color-error);
|
|
161
|
+
color: var(--vd-color-error);
|
|
162
|
+
border-color: var(--vd-color-error);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
.vd-badge-outlined.vd-badge-info {
|
|
166
|
-
color: var(--color-info);
|
|
167
|
-
border-color: var(--color-info);
|
|
166
|
+
color: var(--vd-color-info);
|
|
167
|
+
border-color: var(--vd-color-info);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
.vd-badge-outlined.vd-badge-light {
|
|
171
|
-
color: var(--color-gray-600);
|
|
172
|
-
border-color: var(--color-gray-300);
|
|
171
|
+
color: var(--vd-color-gray-600);
|
|
172
|
+
border-color: var(--vd-color-gray-300);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
.vd-badge-outlined.vd-badge-dark {
|
|
176
|
-
color: var(--color-gray-800);
|
|
177
|
-
border-color: var(--color-gray-800);
|
|
176
|
+
color: var(--vd-color-gray-800);
|
|
177
|
+
border-color: var(--vd-color-gray-800);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
/* Badge Positioning (for use with buttons, avatars, etc.) */
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
|
|
12
12
|
/* Breadcrumb Separator */
|
|
13
13
|
--breadcrumb-separator: "/";
|
|
14
|
-
--breadcrumb-separator-color: var(--text-muted);
|
|
14
|
+
--breadcrumb-separator-color: var(--vd-text-muted);
|
|
15
15
|
--breadcrumb-separator-padding: 0.5rem; /* 8px - fib */
|
|
16
16
|
|
|
17
17
|
/* Breadcrumb Colors */
|
|
18
18
|
--breadcrumb-bg: transparent;
|
|
19
|
-
--breadcrumb-link-color: var(--color-primary);
|
|
20
|
-
--breadcrumb-link-hover-color: var(--color-primary-dark);
|
|
21
|
-
--breadcrumb-active-color: var(--text-secondary);
|
|
19
|
+
--breadcrumb-link-color: var(--vd-color-primary);
|
|
20
|
+
--breadcrumb-link-hover-color: var(--vd-color-primary-dark);
|
|
21
|
+
--breadcrumb-active-color: var(--vd-text-secondary);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
/* Dark Theme Overrides - breadcrumbs use CSS variables that already adapt */
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
|
|
71
71
|
.vd-breadcrumb-link:focus,
|
|
72
72
|
.vd-breadcrumb-item > a:focus {
|
|
73
|
-
outline: 2px solid var(--color-primary);
|
|
73
|
+
outline: 2px solid var(--vd-color-primary);
|
|
74
74
|
outline-offset: 2px;
|
|
75
75
|
border-radius: 0.25rem;
|
|
76
76
|
}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
:root {
|
|
8
8
|
/* Bubble Colors */
|
|
9
9
|
--bubble-bg: var(--card-bg, #fff);
|
|
10
|
-
--bubble-text: var(--text-primary, #212529);
|
|
11
|
-
--bubble-border-color: var(--border-color, #dee2e6);
|
|
10
|
+
--bubble-text: var(--vd-text-primary, #212529);
|
|
11
|
+
--bubble-border-color: var(--vd-border-color, #dee2e6);
|
|
12
12
|
--bubble-shadow: 0 0.5rem 1.3125rem rgba(0, 0, 0, 0.12); /* 8px 21px - fib */
|
|
13
13
|
|
|
14
14
|
/* Bubble Spacing (Fibonacci) */
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
/* Dark Theme */
|
|
32
32
|
[data-theme="dark"] {
|
|
33
33
|
--bubble-bg: var(--card-bg, #2d2d44);
|
|
34
|
-
--bubble-border-color: var(--border-color, #3d3d5c);
|
|
34
|
+
--bubble-border-color: var(--vd-border-color, #3d3d5c);
|
|
35
35
|
--bubble-shadow: 0 0.5rem 1.3125rem rgba(0, 0, 0, 0.3);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
@media (prefers-color-scheme: dark) {
|
|
39
39
|
:root:not([data-theme]) {
|
|
40
40
|
--bubble-bg: var(--card-bg, #2d2d44);
|
|
41
|
-
--bubble-border-color: var(--border-color, #3d3d5c);
|
|
41
|
+
--bubble-border-color: var(--vd-border-color, #3d3d5c);
|
|
42
42
|
--bubble-shadow: 0 0.5rem 1.3125rem rgba(0, 0, 0, 0.3);
|
|
43
43
|
}
|
|
44
44
|
}
|