@vmz/ui 0.3.6 → 0.3.7
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 +51 -51
- package/package.json +2 -2
- package/src/components/Accordion.vmz +94 -94
- package/src/components/AppShell.vmz +5 -2
- package/src/components/Autocomplete.vmz +154 -154
- package/src/components/Badge.vmz +70 -70
- package/src/components/Breadcrumb.vmz +72 -72
- package/src/components/BulkActions.vmz +51 -51
- package/src/components/Button.vmz +213 -211
- package/src/components/Callout.vmz +77 -77
- package/src/components/Card.vmz +120 -120
- package/src/components/Checkbox.vmz +55 -55
- package/src/components/CodeBlock.vmz +21 -6
- package/src/components/ConsoleShell.vmz +251 -251
- package/src/components/DataTable.vmz +194 -194
- package/src/components/DatePicker.vmz +674 -674
- package/src/components/Dialog.vmz +17 -1
- package/src/components/Drawer.vmz +427 -427
- package/src/components/Dropdown.vmz +51 -5
- package/src/components/Empty.vmz +54 -54
- package/src/components/Field.vmz +115 -115
- package/src/components/FormItem.vmz +79 -79
- package/src/components/Link.vmz +5 -1
- package/src/components/List.vmz +102 -102
- package/src/components/Menu.vmz +243 -243
- package/src/components/Pagination.vmz +71 -69
- package/src/components/Popover.vmz +223 -223
- package/src/components/Prose.vmz +81 -81
- package/src/components/RadioGroup.vmz +124 -124
- package/src/components/Segmented.vmz +51 -51
- package/src/components/Select.vmz +533 -533
- package/src/components/Steps.vmz +103 -103
- package/src/components/Switch.vmz +98 -98
- package/src/components/Table.vmz +165 -165
- package/src/components/Tabs.vmz +110 -110
- package/src/components/Tag.vmz +43 -43
- package/src/components/TextArea.vmz +118 -118
- package/src/components/Timeline.vmz +76 -76
- package/src/components/Toc.vmz +74 -74
- package/src/components/Tooltip.vmz +58 -58
- package/src/components/Tree.vmz +191 -191
- package/src/components/Upload.vmz +1299 -1289
package/src/components/Badge.vmz
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<span data-vmz-ui="badge" :data-tone="tone" class="vmz-ui-badge">
|
|
3
|
-
<slot />
|
|
4
|
-
</span>
|
|
5
|
-
</template>
|
|
6
|
-
<style>
|
|
7
|
-
.vmz-ui-badge {
|
|
8
|
-
display: inline-flex;
|
|
9
|
-
align-items: center;
|
|
10
|
-
gap: 0.25rem;
|
|
11
|
-
padding: 0.125rem 0.5rem;
|
|
12
|
-
border: 1px solid var(--vmz-line-default);
|
|
13
|
-
border-radius: var(--vmz-radius-md, 6px);
|
|
14
|
-
font-size: 0.75rem;
|
|
15
|
-
font-weight: 700;
|
|
16
|
-
letter-spacing: 0.04em;
|
|
17
|
-
text-transform: uppercase;
|
|
18
|
-
line-height: 1.2;
|
|
19
|
-
background: var(--vmz-surface-mist);
|
|
20
|
-
color: var(--vmz-text-ink);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.vmz-ui-badge[data-tone="brand"] {
|
|
24
|
-
border-color: color-mix(
|
|
25
|
-
in srgb,
|
|
26
|
-
var(--vmz-action-primary-background) 35%,
|
|
27
|
-
var(--vmz-line-default)
|
|
28
|
-
);
|
|
29
|
-
background: color-mix(
|
|
30
|
-
in srgb,
|
|
31
|
-
var(--vmz-action-primary-background) 12%,
|
|
32
|
-
var(--vmz-surface-paper)
|
|
33
|
-
);
|
|
34
|
-
color: var(--vmz-action-primary-active);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.vmz-ui-badge[data-tone="info"] {
|
|
38
|
-
border-color: var(--vmz-status-info-accent);
|
|
39
|
-
background: color-mix(in srgb, var(--vmz-status-info-accent) 12%, var(--vmz-surface-paper));
|
|
40
|
-
color: var(--vmz-status-info-foreground);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.vmz-ui-badge[data-tone="success"] {
|
|
44
|
-
border-color: var(--vmz-status-success-accent);
|
|
45
|
-
background: color-mix(in srgb, var(--vmz-status-success-accent) 12%, var(--vmz-surface-paper));
|
|
46
|
-
color: var(--vmz-status-success-foreground);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.vmz-ui-badge[data-tone="warning"] {
|
|
50
|
-
border-color: var(--vmz-status-warning-accent);
|
|
51
|
-
background: color-mix(in srgb, var(--vmz-status-warning-accent) 12%, var(--vmz-surface-paper));
|
|
52
|
-
color: var(--vmz-status-warning-foreground);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.vmz-ui-badge[data-tone="danger"] {
|
|
56
|
-
border-color: var(--vmz-status-danger-accent);
|
|
57
|
-
background: color-mix(in srgb, var(--vmz-status-danger-accent) 12%, var(--vmz-surface-paper));
|
|
58
|
-
color: var(--vmz-status-danger-foreground);
|
|
59
|
-
}
|
|
60
|
-
</style>
|
|
61
|
-
<script client>
|
|
62
|
-
/**
|
|
63
|
-
* VMZ UI — Badge (Foundation).
|
|
64
|
-
* Compact status / label chip; tones share status.* + action tokens.
|
|
65
|
-
*/
|
|
66
|
-
export default class Badge {
|
|
67
|
-
static __vmzHostBox = "contents";
|
|
68
|
-
public tone: string = "brand";
|
|
69
|
-
}
|
|
70
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<span data-vmz-ui="badge" :data-tone="tone" class="vmz-ui-badge">
|
|
3
|
+
<slot />
|
|
4
|
+
</span>
|
|
5
|
+
</template>
|
|
6
|
+
<style>
|
|
7
|
+
.vmz-ui-badge {
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: 0.25rem;
|
|
11
|
+
padding: 0.125rem 0.5rem;
|
|
12
|
+
border: 1px solid var(--vmz-line-default);
|
|
13
|
+
border-radius: var(--vmz-radius-md, 6px);
|
|
14
|
+
font-size: 0.75rem;
|
|
15
|
+
font-weight: 700;
|
|
16
|
+
letter-spacing: 0.04em;
|
|
17
|
+
text-transform: uppercase;
|
|
18
|
+
line-height: 1.2;
|
|
19
|
+
background: var(--vmz-surface-mist);
|
|
20
|
+
color: var(--vmz-text-ink);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.vmz-ui-badge[data-tone="brand"] {
|
|
24
|
+
border-color: color-mix(
|
|
25
|
+
in srgb,
|
|
26
|
+
var(--vmz-action-primary-background) 35%,
|
|
27
|
+
var(--vmz-line-default)
|
|
28
|
+
);
|
|
29
|
+
background: color-mix(
|
|
30
|
+
in srgb,
|
|
31
|
+
var(--vmz-action-primary-background) 12%,
|
|
32
|
+
var(--vmz-surface-paper)
|
|
33
|
+
);
|
|
34
|
+
color: var(--vmz-action-primary-active);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.vmz-ui-badge[data-tone="info"] {
|
|
38
|
+
border-color: var(--vmz-status-info-accent);
|
|
39
|
+
background: color-mix(in srgb, var(--vmz-status-info-accent) 12%, var(--vmz-surface-paper));
|
|
40
|
+
color: var(--vmz-status-info-foreground);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.vmz-ui-badge[data-tone="success"] {
|
|
44
|
+
border-color: var(--vmz-status-success-accent);
|
|
45
|
+
background: color-mix(in srgb, var(--vmz-status-success-accent) 12%, var(--vmz-surface-paper));
|
|
46
|
+
color: var(--vmz-status-success-foreground);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.vmz-ui-badge[data-tone="warning"] {
|
|
50
|
+
border-color: var(--vmz-status-warning-accent);
|
|
51
|
+
background: color-mix(in srgb, var(--vmz-status-warning-accent) 12%, var(--vmz-surface-paper));
|
|
52
|
+
color: var(--vmz-status-warning-foreground);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.vmz-ui-badge[data-tone="danger"] {
|
|
56
|
+
border-color: var(--vmz-status-danger-accent);
|
|
57
|
+
background: color-mix(in srgb, var(--vmz-status-danger-accent) 12%, var(--vmz-surface-paper));
|
|
58
|
+
color: var(--vmz-status-danger-foreground);
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
61
|
+
<script client>
|
|
62
|
+
/**
|
|
63
|
+
* VMZ UI — Badge (Foundation).
|
|
64
|
+
* Compact status / label chip; tones share status.* + action tokens.
|
|
65
|
+
*/
|
|
66
|
+
export default class Badge {
|
|
67
|
+
static __vmzHostBox = "contents";
|
|
68
|
+
public tone: string = "brand";
|
|
69
|
+
}
|
|
70
|
+
</script>
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<nav data-vmz-ui="breadcrumb" :aria-label="label" class="vmz-ui-breadcrumb">
|
|
3
|
-
<ol class="vmz-ui-breadcrumb__list">
|
|
4
|
-
<li v-for="item in items" :key="item.id" :data-vmz-crumb="item.id" class="vmz-ui-breadcrumb__item">
|
|
5
|
-
<a v-if="item.href" :href="item.href" class="vmz-ui-breadcrumb__link">
|
|
6
|
-
{{ item.title }}
|
|
7
|
-
</a>
|
|
8
|
-
<span v-if="!item.href" aria-current="page" class="vmz-ui-breadcrumb__current">
|
|
9
|
-
{{ item.title }}
|
|
10
|
-
</span>
|
|
11
|
-
</li>
|
|
12
|
-
</ol>
|
|
13
|
-
</nav>
|
|
14
|
-
</template>
|
|
15
|
-
<style>
|
|
16
|
-
.vmz-ui-breadcrumb {
|
|
17
|
-
font: inherit;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.vmz-ui-breadcrumb__list {
|
|
21
|
-
display: flex;
|
|
22
|
-
flex-wrap: wrap;
|
|
23
|
-
gap: 0.375rem 0.5rem;
|
|
24
|
-
margin: 0;
|
|
25
|
-
padding: 0;
|
|
26
|
-
list-style: none;
|
|
27
|
-
align-items: center;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.vmz-ui-breadcrumb__item {
|
|
31
|
-
display: inline-flex;
|
|
32
|
-
align-items: center;
|
|
33
|
-
gap: 0.5rem;
|
|
34
|
-
font-weight: 600;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.vmz-ui-breadcrumb__item:not(:last-child)::after {
|
|
38
|
-
content: "/";
|
|
39
|
-
color: var(--vmz-action-primary-active);
|
|
40
|
-
opacity: 0.55;
|
|
41
|
-
font-weight: 400;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.vmz-ui-breadcrumb__link {
|
|
45
|
-
color: var(--vmz-action-primary-background);
|
|
46
|
-
text-decoration: none;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.vmz-ui-breadcrumb__link:focus-visible {
|
|
50
|
-
outline: none;
|
|
51
|
-
box-shadow: 0 0 0 3px var(--vmz-focus-ring);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.vmz-ui-breadcrumb__current {
|
|
55
|
-
color: var(--vmz-action-primary-active);
|
|
56
|
-
}
|
|
57
|
-
</style>
|
|
58
|
-
<script client>
|
|
59
|
-
/**
|
|
60
|
-
* VMZ UI — Breadcrumb (UI5 Console Surface).
|
|
61
|
-
* Parent owns items; last crumb typically has no href (current page).
|
|
62
|
-
*/
|
|
63
|
-
export default class Breadcrumb {
|
|
64
|
-
public label: string = "Breadcrumb";
|
|
65
|
-
/** @type {{ id: string, title: string, href?: string }[]} */
|
|
66
|
-
public items: {
|
|
67
|
-
id: string;
|
|
68
|
-
title: string;
|
|
69
|
-
href?: string;
|
|
70
|
-
}[] = [];
|
|
71
|
-
}
|
|
72
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<nav data-vmz-ui="breadcrumb" :aria-label="label" class="vmz-ui-breadcrumb">
|
|
3
|
+
<ol class="vmz-ui-breadcrumb__list">
|
|
4
|
+
<li v-for="item in items" :key="item.id" :data-vmz-crumb="item.id" class="vmz-ui-breadcrumb__item">
|
|
5
|
+
<a v-if="item.href" :href="item.href" class="vmz-ui-breadcrumb__link">
|
|
6
|
+
{{ item.title }}
|
|
7
|
+
</a>
|
|
8
|
+
<span v-if="!item.href" aria-current="page" class="vmz-ui-breadcrumb__current">
|
|
9
|
+
{{ item.title }}
|
|
10
|
+
</span>
|
|
11
|
+
</li>
|
|
12
|
+
</ol>
|
|
13
|
+
</nav>
|
|
14
|
+
</template>
|
|
15
|
+
<style>
|
|
16
|
+
.vmz-ui-breadcrumb {
|
|
17
|
+
font: inherit;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.vmz-ui-breadcrumb__list {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-wrap: wrap;
|
|
23
|
+
gap: 0.375rem 0.5rem;
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
list-style: none;
|
|
27
|
+
align-items: center;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.vmz-ui-breadcrumb__item {
|
|
31
|
+
display: inline-flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: 0.5rem;
|
|
34
|
+
font-weight: 600;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.vmz-ui-breadcrumb__item:not(:last-child)::after {
|
|
38
|
+
content: "/";
|
|
39
|
+
color: var(--vmz-action-primary-active);
|
|
40
|
+
opacity: 0.55;
|
|
41
|
+
font-weight: 400;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.vmz-ui-breadcrumb__link {
|
|
45
|
+
color: var(--vmz-action-primary-background);
|
|
46
|
+
text-decoration: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.vmz-ui-breadcrumb__link:focus-visible {
|
|
50
|
+
outline: none;
|
|
51
|
+
box-shadow: 0 0 0 3px var(--vmz-focus-ring);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.vmz-ui-breadcrumb__current {
|
|
55
|
+
color: var(--vmz-action-primary-active);
|
|
56
|
+
}
|
|
57
|
+
</style>
|
|
58
|
+
<script client>
|
|
59
|
+
/**
|
|
60
|
+
* VMZ UI — Breadcrumb (UI5 Console Surface).
|
|
61
|
+
* Parent owns items; last crumb typically has no href (current page).
|
|
62
|
+
*/
|
|
63
|
+
export default class Breadcrumb {
|
|
64
|
+
public label: string = "Breadcrumb";
|
|
65
|
+
/** @type {{ id: string, title: string, href?: string }[]} */
|
|
66
|
+
public items: {
|
|
67
|
+
id: string;
|
|
68
|
+
title: string;
|
|
69
|
+
href?: string;
|
|
70
|
+
}[] = [];
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div data-vmz-ui="bulk-actions" role="region" :aria-label="label" :data-open="selectedCount ? 'true' : 'false'" class="vmz-ui-bulk-actions">
|
|
3
|
-
<p data-vmz-fixture="bulk-count" class="vmz-ui-bulk-actions__count">
|
|
4
|
-
{{ countLabel }}
|
|
5
|
-
</p>
|
|
6
|
-
<div class="vmz-ui-bulk-actions__actions">
|
|
7
|
-
<slot />
|
|
8
|
-
</div>
|
|
9
|
-
</div>
|
|
10
|
-
</template>
|
|
11
|
-
<style>
|
|
12
|
-
.vmz-ui-bulk-actions {
|
|
13
|
-
display: flex;
|
|
14
|
-
flex-wrap: wrap;
|
|
15
|
-
align-items: center;
|
|
16
|
-
justify-content: space-between;
|
|
17
|
-
gap: 0.625rem 1rem;
|
|
18
|
-
padding: 0.625rem 0.85rem;
|
|
19
|
-
border: 1px solid var(--vmz-line-default);
|
|
20
|
-
border-radius: var(--vmz-radius-md, 6px);
|
|
21
|
-
background: transparent;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* Keep host+slot mounted so default slot projects at create time (not inside v-if). */
|
|
25
|
-
.vmz-ui-bulk-actions[data-open="false"] {
|
|
26
|
-
display: none;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.vmz-ui-bulk-actions__count {
|
|
30
|
-
margin: 0;
|
|
31
|
-
font-weight: 700;
|
|
32
|
-
color: var(--vmz-action-primary-active);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.vmz-ui-bulk-actions__actions {
|
|
36
|
-
display: flex;
|
|
37
|
-
flex-wrap: wrap;
|
|
38
|
-
gap: 0.5rem;
|
|
39
|
-
}
|
|
40
|
-
</style>
|
|
41
|
-
<script client>
|
|
42
|
-
/**
|
|
43
|
-
* VMZ UI — BulkActions (Console composition).
|
|
44
|
-
* Hides when selectedCount is falsy but keeps the tree mounted so parent slot children project.
|
|
45
|
-
*/
|
|
46
|
-
export default class BulkActions {
|
|
47
|
-
public label: string = "Bulk actions";
|
|
48
|
-
public selectedCount: number = 0;
|
|
49
|
-
public countLabel: string = "";
|
|
50
|
-
}
|
|
51
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<div data-vmz-ui="bulk-actions" role="region" :aria-label="label" :data-open="selectedCount ? 'true' : 'false'" class="vmz-ui-bulk-actions">
|
|
3
|
+
<p data-vmz-fixture="bulk-count" class="vmz-ui-bulk-actions__count">
|
|
4
|
+
{{ countLabel }}
|
|
5
|
+
</p>
|
|
6
|
+
<div class="vmz-ui-bulk-actions__actions">
|
|
7
|
+
<slot />
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
</template>
|
|
11
|
+
<style>
|
|
12
|
+
.vmz-ui-bulk-actions {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
gap: 0.625rem 1rem;
|
|
18
|
+
padding: 0.625rem 0.85rem;
|
|
19
|
+
border: 1px solid var(--vmz-line-default);
|
|
20
|
+
border-radius: var(--vmz-radius-md, 6px);
|
|
21
|
+
background: transparent;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Keep host+slot mounted so default slot projects at create time (not inside v-if). */
|
|
25
|
+
.vmz-ui-bulk-actions[data-open="false"] {
|
|
26
|
+
display: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.vmz-ui-bulk-actions__count {
|
|
30
|
+
margin: 0;
|
|
31
|
+
font-weight: 700;
|
|
32
|
+
color: var(--vmz-action-primary-active);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.vmz-ui-bulk-actions__actions {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-wrap: wrap;
|
|
38
|
+
gap: 0.5rem;
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
41
|
+
<script client>
|
|
42
|
+
/**
|
|
43
|
+
* VMZ UI — BulkActions (Console composition).
|
|
44
|
+
* Hides when selectedCount is falsy but keeps the tree mounted so parent slot children project.
|
|
45
|
+
*/
|
|
46
|
+
export default class BulkActions {
|
|
47
|
+
public label: string = "Bulk actions";
|
|
48
|
+
public selectedCount: number = 0;
|
|
49
|
+
public countLabel: string = "";
|
|
50
|
+
}
|
|
51
|
+
</script>
|