@vmz/ui 0.3.6 → 0.3.8

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.
Files changed (68) hide show
  1. package/README.md +53 -51
  2. package/contracts/token-requirements.v0.json +58 -1
  3. package/package.json +5 -2
  4. package/presets/web-surface.v0.json +14 -12
  5. package/src/components/Accordion.vmz +127 -94
  6. package/src/components/Alert.vmz +125 -28
  7. package/src/components/AppShell.vmz +125 -57
  8. package/src/components/Autocomplete.vmz +261 -154
  9. package/src/components/Avatar.vmz +20 -12
  10. package/src/components/Badge.vmz +62 -70
  11. package/src/components/Breadcrumb.vmz +86 -72
  12. package/src/components/BulkActions.vmz +56 -51
  13. package/src/components/Button.vmz +237 -211
  14. package/src/components/Callout.vmz +178 -77
  15. package/src/components/Card.vmz +141 -120
  16. package/src/components/Checkbox.vmz +131 -55
  17. package/src/components/CodeBlock.vmz +77 -30
  18. package/src/components/Collapse.vmz +64 -11
  19. package/src/components/ConsoleShell.vmz +405 -251
  20. package/src/components/Content.vmz +15 -1
  21. package/src/components/DataTable.vmz +294 -194
  22. package/src/components/DatePicker.vmz +766 -674
  23. package/src/components/Descriptions.vmz +90 -0
  24. package/src/components/Dialog.vmz +137 -38
  25. package/src/components/Divider.vmz +8 -1
  26. package/src/components/Drawer.vmz +518 -427
  27. package/src/components/Dropdown.vmz +195 -51
  28. package/src/components/Empty.vmz +96 -54
  29. package/src/components/Field.vmz +170 -115
  30. package/src/components/FilterBar.vmz +34 -4
  31. package/src/components/Flex.vmz +3 -1
  32. package/src/components/Footer.vmz +6 -3
  33. package/src/components/Form.vmz +41 -0
  34. package/src/components/FormItem.vmz +78 -79
  35. package/src/components/Grid.vmz +6 -3
  36. package/src/components/Header.vmz +193 -6
  37. package/src/components/Layout.vmz +3 -1
  38. package/src/components/Link.vmz +25 -10
  39. package/src/components/List.vmz +124 -102
  40. package/src/components/Menu.vmz +416 -243
  41. package/src/components/Message.vmz +167 -0
  42. package/src/components/Notification.vmz +132 -37
  43. package/src/components/Pagination.vmz +237 -69
  44. package/src/components/Popconfirm.vmz +287 -0
  45. package/src/components/Popover.vmz +341 -223
  46. package/src/components/Progress.vmz +16 -5
  47. package/src/components/Prose.vmz +180 -81
  48. package/src/components/QueryForm.vmz +31 -9
  49. package/src/components/RadioGroup.vmz +204 -124
  50. package/src/components/Result.vmz +60 -27
  51. package/src/components/Segmented.vmz +86 -51
  52. package/src/components/Select.vmz +620 -533
  53. package/src/components/Sider.vmz +120 -7
  54. package/src/components/Skeleton.vmz +9 -7
  55. package/src/components/Space.vmz +9 -3
  56. package/src/components/Spinner.vmz +5 -4
  57. package/src/components/Steps.vmz +118 -103
  58. package/src/components/Switch.vmz +131 -98
  59. package/src/components/Table.vmz +270 -165
  60. package/src/components/Tabs.vmz +125 -110
  61. package/src/components/Tag.vmz +60 -43
  62. package/src/components/TextArea.vmz +125 -118
  63. package/src/components/Timeline.vmz +111 -76
  64. package/src/components/Toc.vmz +90 -74
  65. package/src/components/Tooltip.vmz +107 -58
  66. package/src/components/Tree.vmz +214 -191
  67. package/src/components/Typography.vmz +23 -8
  68. package/src/components/Upload.vmz +1394 -1289
@@ -1,72 +1,86 @@
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, index) 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
+ <span v-if="index < items.length - 1" aria-hidden="true" class="vmz-ui-breadcrumb__sep">
12
+ <Icon name="action.chevron-right" size="xs" decorative />
13
+ </span>
14
+ </li>
15
+ </ol>
16
+ </nav>
17
+ </template>
18
+ <style>
19
+ .vmz-ui-breadcrumb {
20
+ font: inherit;
21
+ font-size: 0.875rem;
22
+ color: var(--vmz-text-steel);
23
+ }
24
+
25
+ .vmz-ui-breadcrumb__list {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+ gap: 0.25rem;
29
+ margin: 0;
30
+ padding: 0;
31
+ list-style: none;
32
+ align-items: center;
33
+ }
34
+
35
+ .vmz-ui-breadcrumb__item {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: 0.25rem;
39
+ min-width: 0;
40
+ }
41
+
42
+ .vmz-ui-breadcrumb__link {
43
+ color: var(--vmz-text-steel);
44
+ text-decoration: none;
45
+ border-radius: var(--vmz-radius-xs, 2px);
46
+ transition: color var(--vmz-motion-control-duration, 150ms)
47
+ var(--vmz-motion-control-easing, cubic-bezier(0.4, 0, 0.2, 1));
48
+ }
49
+
50
+ .vmz-ui-breadcrumb__link:hover {
51
+ color: var(--vmz-action-primary-background);
52
+ }
53
+
54
+ .vmz-ui-breadcrumb__link:focus-visible {
55
+ outline: none;
56
+ box-shadow: 0 0 0 3px var(--vmz-focus-ring);
57
+ }
58
+
59
+ .vmz-ui-breadcrumb__current {
60
+ color: var(--vmz-text-ink);
61
+ font-weight: 500;
62
+ }
63
+
64
+ .vmz-ui-breadcrumb__sep {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ font-size: 0.75rem;
68
+ color: var(--vmz-text-tertiary);
69
+ }
70
+ </style>
71
+ <script client>
72
+ /**
73
+ * VMZ UI — Breadcrumb (commercial path).
74
+ * Parent owns items; last crumb typically has no href (current page).
75
+ * Separators use the shared chevron-right Icon (no CSS pseudo-elements).
76
+ */
77
+ export default class Breadcrumb {
78
+ public label: string = "";
79
+ /** @type {{ id: string, title: string, href?: string }[]} */
80
+ public items: {
81
+ id: string;
82
+ title: string;
83
+ href?: string;
84
+ }[] = [];
85
+ }
86
+ </script>
@@ -1,51 +1,56 @@
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.5rem 1rem;
18
+ padding: 0.5rem 0.75rem;
19
+ border: 1px solid var(--vmz-action-primary-background);
20
+ border-radius: var(--vmz-radius-md, 6px);
21
+ background: var(--vmz-action-primary-soft);
22
+ color: var(--vmz-text-ink);
23
+ }
24
+
25
+ /* Keep host+slot mounted so default slot projects at create time (not inside v-if). */
26
+ .vmz-ui-bulk-actions[data-open="false"] {
27
+ display: none;
28
+ }
29
+
30
+ .vmz-ui-bulk-actions__count {
31
+ margin: 0;
32
+ font-size: 0.875rem;
33
+ font-weight: 500;
34
+ color: var(--vmz-text-ink);
35
+ }
36
+
37
+ .vmz-ui-bulk-actions__actions {
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ align-items: center;
41
+ gap: 0.5rem;
42
+ margin-left: auto;
43
+ }
44
+ </style>
45
+ <script client>
46
+ /**
47
+ * VMZ UI — BulkActions (selection toolbar).
48
+ * Hides when selectedCount is falsy but keeps the tree mounted so parent slot children project.
49
+ * Count copy is parent-owned via `count-label`.
50
+ */
51
+ export default class BulkActions {
52
+ public label: string = "";
53
+ public selectedCount: number = 0;
54
+ public countLabel: string = "";
55
+ }
56
+ </script>