@zeyos/zx 4.1.0 → 4.2.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.
Files changed (83) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/DESIGN-SYSTEM.md +33 -3
  3. package/README.md +17 -5
  4. package/dist/types/components/app-icon/app-icon.d.ts +8 -1
  5. package/dist/types/components/aurora/aurora.d.ts +72 -0
  6. package/dist/types/components/calendar/calendar-model.d.ts +202 -0
  7. package/dist/types/components/calendar/calendar.d.ts +500 -0
  8. package/dist/types/components/card-view/card-view.d.ts +303 -0
  9. package/dist/types/components/card-view/record-card.d.ts +242 -0
  10. package/dist/types/components/kanban-view/kanban-view.d.ts +572 -0
  11. package/dist/types/components/table/table.d.ts +120 -31
  12. package/dist/types/components/table-view/table-view.d.ts +192 -0
  13. package/dist/types/components/view/record-view.d.ts +464 -0
  14. package/dist/types/index.d.ts +7 -0
  15. package/dist/types/zeyos/calendar.d.ts +91 -0
  16. package/dist/types/zeyos/icons.d.ts +19 -3
  17. package/dist/types/zeyos/index.d.ts +4 -0
  18. package/dist/types/zeyos/legacy-saved-views.d.ts +66 -0
  19. package/dist/types/zeyos/saved-views.d.ts +331 -0
  20. package/dist/types/zeyos/view.d.ts +305 -0
  21. package/dist/zx-zeyos.esm.js +4627 -1460
  22. package/dist/zx-zeyos.esm.min.js +1 -1
  23. package/dist/zx.css +2492 -410
  24. package/dist/zx.esm.js +4891 -115
  25. package/dist/zx.esm.min.js +3 -3
  26. package/dist/zx.global.js +4891 -115
  27. package/dist/zx.global.min.js +3 -3
  28. package/dist/zx.min.css +1 -1
  29. package/docs/api.json +1702 -191
  30. package/docs/llms.md +207 -20
  31. package/docs/llms.txt +16 -6
  32. package/package.json +1 -1
  33. package/src/components/app-icon/app-icon.css +140 -30
  34. package/src/components/app-icon/app-icon.js +32 -5
  35. package/src/components/app-rail/app-rail.css +11 -2
  36. package/src/components/app-sidebar/app-sidebar.css +11 -2
  37. package/src/components/aurora/aurora.css +143 -0
  38. package/src/components/aurora/aurora.js +146 -0
  39. package/src/components/avatar/avatar.css +1 -1
  40. package/src/components/button/button.css +34 -2
  41. package/src/components/calendar/calendar-model.js +402 -0
  42. package/src/components/calendar/calendar.css +567 -0
  43. package/src/components/calendar/calendar.js +1524 -0
  44. package/src/components/card/card.css +25 -3
  45. package/src/components/card-view/card-view.css +389 -0
  46. package/src/components/card-view/card-view.js +527 -0
  47. package/src/components/card-view/record-card.js +392 -0
  48. package/src/components/context-menu/context-menu.css +2 -2
  49. package/src/components/date-picker/date-picker.css +15 -3
  50. package/src/components/datebox/date-range-box.css +15 -2
  51. package/src/components/datebox/datebox.css +16 -3
  52. package/src/components/dropdown/dropdown.css +15 -3
  53. package/src/components/kanban-view/kanban-view.css +216 -0
  54. package/src/components/kanban-view/kanban-view.js +1228 -0
  55. package/src/components/launcher/launcher.css +18 -5
  56. package/src/components/master-panel/master-panel.css +14 -3
  57. package/src/components/menu-button/menu-button.css +2 -2
  58. package/src/components/message/message.css +15 -10
  59. package/src/components/modal/modal.css +15 -3
  60. package/src/components/navigation-bar/navigation-bar.css +17 -5
  61. package/src/components/panel/panel.css +10 -2
  62. package/src/components/select/select.css +20 -4
  63. package/src/components/sheet/sheet.css +4 -1
  64. package/src/components/table/table.css +80 -4
  65. package/src/components/table/table.js +322 -37
  66. package/src/components/table-view/table-view.css +18 -0
  67. package/src/components/table-view/table-view.js +347 -0
  68. package/src/components/tag-picker/tag-picker.css +15 -3
  69. package/src/components/tooltip/tooltip.css +15 -3
  70. package/src/components/view/record-view.css +114 -0
  71. package/src/components/view/record-view.js +770 -0
  72. package/src/index.js +15 -0
  73. package/src/zeyos/calendar.js +115 -0
  74. package/src/zeyos/icons.js +15 -8
  75. package/src/zeyos/index.js +13 -0
  76. package/src/zeyos/launcher.js +2 -2
  77. package/src/zeyos/legacy-saved-views.js +155 -0
  78. package/src/zeyos/saved-views.js +815 -0
  79. package/src/zeyos/table.js +3 -1
  80. package/src/zeyos/view.js +543 -0
  81. package/styles/icons.css +3 -10
  82. package/styles/tokens/semantic.css +74 -2
  83. package/styles/zx.css +6 -0
@@ -1,14 +1,26 @@
1
1
  .zx-launcher {
2
2
  inline-size: min(760px, calc(100vw - (2 * var(--zx-space-4))));
3
3
  max-block-size: min(720px, calc(100vh - (2 * var(--zx-space-6))));
4
- border: 1px solid var(--zx-color-border);
4
+ border: 1px solid var(--zx-color-overlay-border);
5
5
  border-radius: var(--zx-radius-xl);
6
- background: var(--zx-color-bg-raised);
7
- box-shadow: var(--zx-overlay-shadow);
6
+ background: var(--zx-color-overlay-panel);
7
+ -webkit-backdrop-filter: var(--zx-glass-filter-panel);
8
+ backdrop-filter: var(--zx-glass-filter-panel);
9
+ box-shadow: var(--zx-glass-raised-shadow);
8
10
  color: var(--zx-color-text);
9
11
  padding: 0;
10
12
  }
11
13
 
14
+ @media (prefers-reduced-transparency: reduce) {
15
+ .zx-launcher {
16
+ border-color: var(--zx-color-border);
17
+ background: var(--zx-color-bg-raised);
18
+ -webkit-backdrop-filter: none;
19
+ backdrop-filter: none;
20
+ box-shadow: var(--zx-overlay-shadow);
21
+ }
22
+ }
23
+
12
24
  .zx-launcher::backdrop {
13
25
  background: var(--zx-color-bg-backdrop);
14
26
  }
@@ -121,7 +133,8 @@
121
133
  }
122
134
 
123
135
  .zx-launcher__option[aria-current="page"] {
124
- box-shadow: inset 2px 0 var(--zx-color-accent);
136
+ background: var(--zx-color-bg-selected);
137
+ color: var(--zx-color-accent);
125
138
  }
126
139
 
127
140
  .zx-launcher__option[data-kind="application"] {
@@ -135,7 +148,7 @@
135
148
  }
136
149
 
137
150
  .zx-launcher__option[data-kind="application"][aria-current="page"] {
138
- box-shadow: inset 0 -2px var(--zx-color-accent);
151
+ background: var(--zx-color-bg-selected);
139
152
  }
140
153
 
141
154
  .zx-launcher__option[data-kind="application"] .zx-launcher__icon {
@@ -6,7 +6,7 @@
6
6
  overflow: hidden;
7
7
  border: 1px solid var(--zx-color-border);
8
8
  border-radius: var(--zx-radius-lg);
9
- background: var(--zx-color-bg-surface);
9
+ background: var(--zx-color-glass-chrome);
10
10
  }
11
11
 
12
12
  .zx-master-panel__header {
@@ -15,9 +15,9 @@
15
15
  align-items: center;
16
16
  gap: var(--zx-space-4);
17
17
  min-block-size: calc(var(--zx-control-height) + var(--zx-space-4));
18
- border-block-start: 4px solid var(--zx-master-panel-accent, var(--zx-module-default));
19
18
  border-block-end: 1px solid var(--zx-color-border);
20
- background: var(--zx-color-bg-raised);
19
+ background: var(--zx-color-glass-chrome);
20
+ box-shadow: var(--zx-glass-chrome-shadow);
21
21
  padding: var(--zx-space-2) var(--zx-space-4);
22
22
  }
23
23
 
@@ -49,3 +49,14 @@
49
49
  padding: var(--zx-space-3) var(--zx-space-4);
50
50
  color: var(--zx-color-text-muted);
51
51
  }
52
+
53
+ @media (prefers-reduced-transparency: reduce) {
54
+ .zx-master-panel {
55
+ background: var(--zx-color-bg-surface);
56
+ }
57
+
58
+ .zx-master-panel__header {
59
+ background: var(--zx-color-bg-raised);
60
+ box-shadow: none;
61
+ }
62
+ }
@@ -16,8 +16,8 @@
16
16
  gap: var(--zx-space-2);
17
17
  inline-size: 100%;
18
18
  min-block-size: var(--zx-control-height);
19
- border-color: var(--zx-color-bg-raised);
20
- background: var(--zx-color-bg-raised);
19
+ border-color: transparent;
20
+ background: transparent;
21
21
  padding-inline: var(--zx-control-pad-x);
22
22
  text-align: start;
23
23
  }
@@ -32,11 +32,10 @@
32
32
  grid-template-columns: auto minmax(0, 1fr) auto;
33
33
  align-items: start;
34
34
  gap: var(--zx-space-3);
35
- border: 1px solid var(--zx-color-border);
36
- border-inline-start: 4px solid var(--zx-message-kind);
35
+ border: 1px solid var(--zx-color-overlay-border);
37
36
  border-radius: var(--zx-radius-md);
38
37
  background: var(--zx-color-info-bg);
39
- box-shadow: var(--zx-overlay-shadow);
38
+ box-shadow: inset 0 0 0 1px var(--zx-message-kind), var(--zx-glass-raised-shadow);
40
39
  padding: var(--zx-space-3);
41
40
  color: var(--zx-color-text);
42
41
  }
@@ -58,26 +57,32 @@
58
57
 
59
58
  @supports (backdrop-filter: blur(1px)) {
60
59
  .zx-message__toast {
61
- background: color-mix(in srgb, var(--zx-color-info-bg) 38%, var(--zx-color-glass-surface));
62
- backdrop-filter: blur(var(--zx-overlay-blur)) saturate(var(--zx-glass-saturation));
63
- box-shadow: inset 0 1px 0 var(--zx-color-glass-highlight), var(--zx-overlay-shadow);
60
+ background: color-mix(in srgb, var(--zx-color-info-bg) 34%, var(--zx-color-overlay-surface));
61
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
62
+ backdrop-filter: var(--zx-glass-filter-overlay);
63
+ box-shadow: inset 0 0 0 1px var(--zx-message-kind), var(--zx-glass-raised-shadow);
64
64
  }
65
65
 
66
66
  .zx-message__toast[data-kind="success"] {
67
- background: color-mix(in srgb, var(--zx-color-success-bg) 38%, var(--zx-color-glass-surface));
67
+ background: color-mix(in srgb, var(--zx-color-success-bg) 34%, var(--zx-color-overlay-surface));
68
68
  }
69
69
 
70
70
  .zx-message__toast[data-kind="warning"] {
71
- background: color-mix(in srgb, var(--zx-color-warning-bg) 38%, var(--zx-color-glass-surface));
71
+ background: color-mix(in srgb, var(--zx-color-warning-bg) 34%, var(--zx-color-overlay-surface));
72
72
  }
73
73
 
74
74
  .zx-message__toast[data-kind="error"] {
75
- background: color-mix(in srgb, var(--zx-color-danger-bg) 38%, var(--zx-color-glass-surface));
75
+ background: color-mix(in srgb, var(--zx-color-danger-bg) 34%, var(--zx-color-overlay-surface));
76
76
  }
77
77
  }
78
78
 
79
79
  @media (prefers-reduced-transparency: reduce) {
80
- .zx-message__toast { backdrop-filter: none; }
80
+ .zx-message__toast {
81
+ border-color: var(--zx-color-border);
82
+ -webkit-backdrop-filter: none;
83
+ backdrop-filter: none;
84
+ box-shadow: var(--zx-overlay-shadow);
85
+ }
81
86
  .zx-message__toast[data-kind="info"] { background: var(--zx-color-info-bg); }
82
87
  .zx-message__toast[data-kind="success"] { background: var(--zx-color-success-bg); }
83
88
  .zx-message__toast[data-kind="warning"] { background: var(--zx-color-warning-bg); }
@@ -2,14 +2,26 @@
2
2
  max-inline-size: calc(100vw - (2 * var(--zx-space-4)));
3
3
  max-block-size: calc(100vh - (2 * var(--zx-space-4)));
4
4
  overflow: auto;
5
- border: 1px solid var(--zx-color-border);
5
+ border: 1px solid var(--zx-color-overlay-border);
6
6
  border-radius: var(--zx-radius-lg);
7
- background: var(--zx-color-bg-raised);
8
- box-shadow: var(--zx-overlay-shadow);
7
+ background: var(--zx-color-overlay-panel);
8
+ -webkit-backdrop-filter: var(--zx-glass-filter-panel);
9
+ backdrop-filter: var(--zx-glass-filter-panel);
10
+ box-shadow: var(--zx-glass-raised-shadow);
9
11
  color: var(--zx-color-text);
10
12
  padding: 0;
11
13
  }
12
14
 
15
+ @media (prefers-reduced-transparency: reduce) {
16
+ .zx-modal {
17
+ border-color: var(--zx-color-border);
18
+ background: var(--zx-color-bg-raised);
19
+ -webkit-backdrop-filter: none;
20
+ backdrop-filter: none;
21
+ box-shadow: var(--zx-overlay-shadow);
22
+ }
23
+ }
24
+
13
25
  .zx-modal::backdrop {
14
26
  background: var(--zx-color-bg-backdrop);
15
27
  }
@@ -15,11 +15,13 @@
15
15
  min-inline-size: 0;
16
16
  align-items: center;
17
17
  gap: var(--zx-space-3);
18
- border: 1px solid var(--zx-color-border);
18
+ border: 1px solid var(--zx-color-glass-border);
19
19
  border-radius: var(--zx-radius-lg);
20
- background: var(--zx-color-bg-raised);
20
+ background: var(--zx-color-glass-chrome);
21
21
  padding: var(--zx-space-2) var(--zx-space-3);
22
- box-shadow: var(--zx-overlay-shadow);
22
+ -webkit-backdrop-filter: var(--zx-glass-filter-chrome);
23
+ backdrop-filter: var(--zx-glass-filter-chrome);
24
+ box-shadow: var(--zx-glass-chrome-shadow);
23
25
  }
24
26
 
25
27
  .zx-navigation-bar__brand {
@@ -113,9 +115,19 @@
113
115
 
114
116
  .zx-navigation-bar__panels {
115
117
  border: 1px solid var(--zx-color-border);
116
- border-block-start: 0;
117
- border-radius: 0 0 var(--zx-radius-lg) var(--zx-radius-lg);
118
+ border-radius: var(--zx-radius-lg);
118
119
  background: var(--zx-color-bg-surface);
120
+ margin-block-start: var(--zx-space-2);
121
+ }
122
+
123
+ @media (prefers-reduced-transparency: reduce) {
124
+ .zx-navigation-bar__bar {
125
+ border-color: var(--zx-color-border);
126
+ background: var(--zx-color-bg-raised);
127
+ -webkit-backdrop-filter: none;
128
+ backdrop-filter: none;
129
+ box-shadow: var(--zx-overlay-shadow);
130
+ }
119
131
  }
120
132
 
121
133
  .zx-navigation-bar__panel {
@@ -3,7 +3,7 @@
3
3
  border: 1px solid var(--zx-color-border);
4
4
  border-radius: var(--zx-radius-lg);
5
5
  background: var(--zx-color-bg-surface);
6
- box-shadow: var(--zx-overlay-shadow);
6
+ box-shadow: var(--zx-shadow-1);
7
7
  }
8
8
 
9
9
  /* The header is a row, not one big button: the collapse control takes the title area and the
@@ -13,7 +13,15 @@
13
13
  align-items: center;
14
14
  gap: var(--zx-space-2);
15
15
  min-block-size: var(--zx-control-height);
16
- background: var(--zx-panel-header-bg, var(--zx-color-bg-raised));
16
+ background: var(--zx-panel-header-bg, var(--zx-color-glass-chrome));
17
+ box-shadow: var(--zx-glass-chrome-shadow);
18
+ }
19
+
20
+ @media (prefers-reduced-transparency: reduce) {
21
+ .zx-panel__header {
22
+ background: var(--zx-panel-header-bg, var(--zx-color-bg-raised));
23
+ box-shadow: none;
24
+ }
17
25
  }
18
26
 
19
27
  .zx-panel__toggle {
@@ -96,10 +96,12 @@
96
96
  inline-size: max-content;
97
97
  max-inline-size: calc(100vw - var(--zx-space-4));
98
98
  overflow: hidden;
99
- border: 1px solid var(--zx-color-border-strong);
99
+ border: 1px solid var(--zx-color-overlay-border);
100
100
  border-radius: var(--zx-radius-md);
101
- background: var(--zx-color-bg-raised);
102
- box-shadow: var(--zx-overlay-shadow);
101
+ background: var(--zx-color-overlay-surface);
102
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
103
+ backdrop-filter: var(--zx-glass-filter-overlay);
104
+ box-shadow: var(--zx-glass-raised-shadow);
103
105
  color: var(--zx-color-text);
104
106
  padding: var(--zx-space-1);
105
107
  }
@@ -146,7 +148,7 @@
146
148
  position: sticky;
147
149
  z-index: 1;
148
150
  inset-block-start: 0;
149
- background: var(--zx-color-bg-raised);
151
+ background: var(--zx-color-overlay-surface);
150
152
  color: var(--zx-color-text-muted);
151
153
  font-size: var(--zx-text-xs);
152
154
  font-weight: 700;
@@ -155,6 +157,20 @@
155
157
  text-transform: uppercase;
156
158
  }
157
159
 
160
+ @media (prefers-reduced-transparency: reduce) {
161
+ .zx-select__panel,
162
+ .zx-select__group {
163
+ background: var(--zx-color-bg-raised);
164
+ }
165
+
166
+ .zx-select__panel {
167
+ border-color: var(--zx-color-border-strong);
168
+ -webkit-backdrop-filter: none;
169
+ backdrop-filter: none;
170
+ box-shadow: var(--zx-overlay-shadow);
171
+ }
172
+ }
173
+
158
174
  .zx-select__separator {
159
175
  block-size: 1px;
160
176
  margin: var(--zx-space-1) var(--zx-control-pad-x);
@@ -12,7 +12,7 @@
12
12
  border-radius: 0;
13
13
  /* The header and footer stay put; `.zx-dialog__body` is what scrolls. */
14
14
  overflow: hidden;
15
- box-shadow: var(--zx-overlay-shadow);
15
+ box-shadow: var(--zx-glass-raised-shadow);
16
16
  }
17
17
 
18
18
  /* Horizontal sheets: full height, sized across the inline axis. */
@@ -156,6 +156,9 @@
156
156
  min-inline-size: 0;
157
157
  min-block-size: 0;
158
158
  border-radius: 0;
159
+ background: var(--zx-color-bg-raised);
160
+ -webkit-backdrop-filter: none;
161
+ backdrop-filter: none;
159
162
  box-shadow: none;
160
163
  }
161
164
 
@@ -33,15 +33,30 @@
33
33
  inset-inline-end: 0;
34
34
  display: grid;
35
35
  min-inline-size: 190px;
36
- border: 1px solid var(--zx-color-border-strong);
36
+ border: 1px solid var(--zx-color-overlay-border);
37
37
  border-radius: var(--zx-radius-md);
38
- background: var(--zx-color-bg-raised);
39
- box-shadow: var(--zx-overlay-shadow);
38
+ background: var(--zx-color-overlay-surface);
39
+ -webkit-backdrop-filter: var(--zx-glass-filter-overlay);
40
+ backdrop-filter: var(--zx-glass-filter-overlay);
41
+ box-shadow: var(--zx-glass-raised-shadow);
40
42
  padding: var(--zx-space-2);
43
+ max-block-size: min(360px, 70vh);
44
+ overflow: auto;
45
+ }
46
+
47
+ @media (prefers-reduced-transparency: reduce) {
48
+ .zx-table__column-list {
49
+ border-color: var(--zx-color-border-strong);
50
+ background: var(--zx-color-bg-raised);
51
+ -webkit-backdrop-filter: none;
52
+ backdrop-filter: none;
53
+ box-shadow: var(--zx-overlay-shadow);
54
+ }
41
55
  }
42
56
 
43
57
  .zx-table__column-option {
44
- display: flex;
58
+ display: grid;
59
+ grid-template-columns: minmax(0, 1fr) auto;
45
60
  align-items: center;
46
61
  gap: var(--zx-space-2);
47
62
  min-block-size: var(--zx-control-height);
@@ -51,6 +66,67 @@
51
66
 
52
67
  .zx-table__column-option:hover { background: var(--zx-color-bg-hover); }
53
68
 
69
+ .zx-table__column-option > label,
70
+ .zx-table__column-label {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: var(--zx-space-2);
74
+ min-inline-size: 0;
75
+ }
76
+
77
+ .zx-table__column-option > label > span,
78
+ .zx-table__column-label {
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .zx-table__column-order {
85
+ display: inline-flex;
86
+ }
87
+
88
+ .zx-table__column-move {
89
+ display: inline-grid;
90
+ place-items: center;
91
+ inline-size: 26px;
92
+ block-size: 26px;
93
+ border: 0;
94
+ border-radius: var(--zx-radius-sm);
95
+ background: transparent;
96
+ color: var(--zx-color-text-muted);
97
+ cursor: pointer;
98
+ }
99
+
100
+ .zx-table__column-move:hover:not(:disabled) {
101
+ background: var(--zx-color-bg-hover);
102
+ color: var(--zx-color-text);
103
+ }
104
+
105
+ .zx-table__column-move:focus-visible {
106
+ outline: none;
107
+ box-shadow: var(--zx-focus-ring);
108
+ }
109
+
110
+ .zx-table__column-move:disabled {
111
+ opacity: .35;
112
+ cursor: not-allowed;
113
+ }
114
+
115
+ .zx-table__column-status {
116
+ position: absolute;
117
+ inline-size: 1px;
118
+ block-size: 1px;
119
+ overflow: hidden;
120
+ clip-path: inset(50%);
121
+ }
122
+
123
+ @media (prefers-reduced-motion: no-preference) {
124
+ .zx-table__column-move {
125
+ transition: color var(--zx-dur-fast) var(--zx-ease),
126
+ background var(--zx-dur-fast) var(--zx-ease), opacity var(--zx-dur-fast) var(--zx-ease);
127
+ }
128
+ }
129
+
54
130
  .zx-table__reorder-column,
55
131
  .zx-table__reorder-header,
56
132
  .zx-table__reorder-cell {