@xleddyl/443-components-vue 0.10.2 → 0.12.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 (72) hide show
  1. package/CATALOG.md +195 -180
  2. package/README.md +107 -23
  3. package/dist/components/data/Tag.vue +2 -0
  4. package/dist/components/data/Tag.vue.d.ts +2 -0
  5. package/dist/components/data/TagList.vue +239 -0
  6. package/dist/components/data/TagList.vue.d.ts +53 -0
  7. package/dist/components/data/index.d.ts +1 -0
  8. package/dist/components/data/index.mjs +1 -0
  9. package/dist/components/data/types.d.ts +15 -0
  10. package/dist/components/forms/Combobox.vue +33 -4
  11. package/dist/components/forms/Combobox.vue.d.ts +3 -1
  12. package/dist/components/forms/NumberInput.vue.d.ts +1 -1
  13. package/dist/components/forms/PinInput.vue.d.ts +2 -2
  14. package/dist/components/forms/types.d.ts +2 -0
  15. package/dist/components/layout/AppShell.vue +14 -2
  16. package/dist/components/layout/AppShell.vue.d.ts +3 -1
  17. package/dist/components/layout/Sidebar.vue +8 -3
  18. package/dist/components/layout/Sidebar.vue.d.ts +6 -1
  19. package/dist/components/layout/Stepper.vue +148 -0
  20. package/dist/components/layout/Stepper.vue.d.ts +420 -0
  21. package/dist/components/layout/index.d.ts +1 -0
  22. package/dist/components/layout/index.mjs +1 -0
  23. package/dist/components/layout/types.d.ts +13 -0
  24. package/dist/components/overlays/Toaster.vue +10 -0
  25. package/dist/components/overlays/Toaster.vue.d.ts +1 -1
  26. package/dist/components/templates/DashboardLayout.vue +13 -1
  27. package/dist/components/templates/DashboardLayout.vue.d.ts +7 -2
  28. package/dist/components/templates/SettingsModal.vue +95 -4
  29. package/dist/components/templates/SettingsModal.vue.d.ts +6 -1
  30. package/dist/components/templates/types.d.ts +4 -1
  31. package/dist/composables/data.d.ts +1 -0
  32. package/dist/composables/data.mjs +1 -0
  33. package/dist/composables/layout.d.ts +1 -0
  34. package/dist/composables/layout.mjs +1 -0
  35. package/dist/composables/useRouteState.d.ts +13 -0
  36. package/dist/composables/useRouteState.mjs +37 -0
  37. package/dist/composables/useSortable.d.ts +38 -0
  38. package/dist/composables/useSortable.mjs +215 -0
  39. package/dist/grid/DataGrid.vue +7 -1
  40. package/dist/grid/DataGrid.vue.d.ts +8 -1
  41. package/dist/grid/GridToolbar.vue +57 -2
  42. package/dist/grid/GridToolbar.vue.d.ts +13 -2
  43. package/dist/grid/cells/BadgeCell.vue +90 -18
  44. package/dist/grid/cells/BadgeCell.vue.d.ts +14 -14
  45. package/dist/grid/data-grid.css +57 -0
  46. package/dist/grid/spreadsheet.mjs +8 -4
  47. package/dist/grid/types.d.ts +3 -0
  48. package/dist/icons/builtin.d.ts +2 -0
  49. package/dist/icons/builtin.mjs +2 -0
  50. package/dist/internal/data/sortable.d.ts +5 -0
  51. package/dist/internal/data/sortable.mjs +23 -0
  52. package/dist/internal/layout/query.d.ts +6 -0
  53. package/dist/internal/layout/query.mjs +64 -0
  54. package/dist/internal/layout/route.d.ts +9 -2
  55. package/dist/internal/overlays/avoid.d.ts +26 -0
  56. package/dist/internal/overlays/avoid.mjs +134 -0
  57. package/dist/locale/de.mjs +24 -0
  58. package/dist/locale/en.mjs +24 -0
  59. package/dist/locale/it.mjs +24 -0
  60. package/dist/locale/types.d.ts +24 -0
  61. package/dist/nuxt/module.mjs +14 -0
  62. package/dist/nuxt/runtime/layouts/dashboard.vue +9 -1
  63. package/dist/styles/data/tag-list.css +93 -0
  64. package/dist/styles/data.css +1 -0
  65. package/dist/styles/forced-colors.css +10 -0
  66. package/dist/styles/layout/app-shell.css +25 -6
  67. package/dist/styles/layout/sidebar.css +11 -2
  68. package/dist/styles/layout/stepper.css +244 -0
  69. package/dist/styles/layout.css +1 -0
  70. package/dist/styles/overlays/toast.css +17 -12
  71. package/dist/styles/templates/settings-modal.css +5 -1
  72. package/package.json +1 -1
@@ -0,0 +1,244 @@
1
+ .k-stepper {
2
+ --k-stepper-indicator: 1.75rem;
3
+ --k-stepper-tone: var(--k-accent);
4
+ container-type: inline-size;
5
+ min-width: 0;
6
+ }
7
+
8
+ .k-stepper-sm {
9
+ --k-stepper-indicator: 1.5rem;
10
+ }
11
+
12
+ .k-stepper-list {
13
+ display: flex;
14
+ margin: 0;
15
+ padding: 0;
16
+ list-style: none;
17
+ }
18
+
19
+ .k-stepper-horizontal .k-stepper-list {
20
+ align-items: flex-start;
21
+ }
22
+
23
+ .k-stepper-vertical .k-stepper-list {
24
+ flex-direction: column;
25
+ }
26
+
27
+ .k-stepper-item {
28
+ position: relative;
29
+ display: flex;
30
+ min-width: 0;
31
+ }
32
+
33
+ .k-stepper-horizontal .k-stepper-item {
34
+ flex: 1 1 auto;
35
+ align-items: flex-start;
36
+ }
37
+
38
+ .k-stepper-horizontal .k-stepper-item:last-child {
39
+ flex: 0 1 auto;
40
+ }
41
+
42
+ .k-stepper-vertical .k-stepper-item {
43
+ flex-direction: column;
44
+ }
45
+
46
+ .k-stepper-step {
47
+ --k-icon-size: 0.875rem;
48
+ display: flex;
49
+ align-items: flex-start;
50
+ gap: 0.625rem;
51
+ min-width: 0;
52
+ padding: 0.25rem;
53
+ margin: -0.25rem;
54
+ border-radius: var(--k-radius-md);
55
+ color: var(--k-text-muted);
56
+ text-align: start;
57
+ transition:
58
+ background-color var(--k-duration) var(--k-ease),
59
+ color var(--k-duration) var(--k-ease);
60
+ }
61
+
62
+ .k-stepper-horizontal .k-stepper-step {
63
+ flex-shrink: 1;
64
+ max-width: calc(100% + 0.5rem);
65
+ }
66
+
67
+ button.k-stepper-step:hover {
68
+ background: var(--k-hover);
69
+ color: var(--k-text);
70
+ }
71
+
72
+ button.k-stepper-step:active {
73
+ background: var(--k-press);
74
+ }
75
+
76
+ .k-stepper-item.is-disabled > .k-stepper-step {
77
+ cursor: default;
78
+ }
79
+
80
+ .k-stepper-indicator {
81
+ display: grid;
82
+ flex-shrink: 0;
83
+ place-items: center;
84
+ width: var(--k-stepper-indicator);
85
+ height: var(--k-stepper-indicator);
86
+ border: 1px solid var(--k-line-strong);
87
+ border-radius: var(--k-radius-full);
88
+ background: var(--k-surface);
89
+ color: var(--k-text-muted);
90
+ font-size: 0.75rem;
91
+ font-weight: var(--k-font-weight-strong, 600);
92
+ font-variant-numeric: tabular-nums;
93
+ transition:
94
+ background-color var(--k-duration) var(--k-ease),
95
+ border-color var(--k-duration) var(--k-ease),
96
+ color var(--k-duration) var(--k-ease);
97
+ }
98
+
99
+ .k-stepper-item.is-current .k-stepper-indicator {
100
+ border-color: var(--k-stepper-tone);
101
+ background: var(--k-stepper-tone);
102
+ color: var(--k-accent-contrast);
103
+ }
104
+
105
+ .k-stepper-item.is-complete .k-stepper-indicator {
106
+ border-color: var(--k-accent-line);
107
+ background: var(--k-accent-soft);
108
+ color: var(--k-accent-text);
109
+ }
110
+
111
+ .k-stepper-item.is-current.is-complete .k-stepper-indicator {
112
+ border-color: var(--k-stepper-tone);
113
+ background: var(--k-stepper-tone);
114
+ color: var(--k-accent-contrast);
115
+ }
116
+
117
+ .k-stepper-item.is-error .k-stepper-indicator {
118
+ border-color: var(--k-danger);
119
+ background: color-mix(in oklab, var(--k-danger) 12%, var(--k-surface));
120
+ color: var(--k-danger-text);
121
+ }
122
+
123
+ .k-stepper-item.is-current.is-error .k-stepper-indicator {
124
+ background: var(--k-danger);
125
+ color: var(--k-text-inverted);
126
+ }
127
+
128
+ .k-stepper-text {
129
+ display: flex;
130
+ flex-direction: column;
131
+ gap: 0.125rem;
132
+ min-width: 0;
133
+ padding-top: calc((var(--k-stepper-indicator) - 1.25rem) / 2);
134
+ }
135
+
136
+ .k-stepper-label {
137
+ overflow: hidden;
138
+ font-size: 0.8125rem;
139
+ font-weight: var(--k-font-weight-medium, 500);
140
+ line-height: 1.25rem;
141
+ text-overflow: ellipsis;
142
+ white-space: nowrap;
143
+ }
144
+
145
+ .k-stepper-item.is-current .k-stepper-label,
146
+ .k-stepper-item.is-complete .k-stepper-label {
147
+ color: var(--k-text);
148
+ }
149
+
150
+ .k-stepper-item.is-error .k-stepper-label {
151
+ color: var(--k-danger-text);
152
+ }
153
+
154
+ .k-stepper-description {
155
+ overflow: hidden;
156
+ font-size: 0.75rem;
157
+ line-height: 1.35;
158
+ color: var(--k-text-muted);
159
+ text-overflow: ellipsis;
160
+ }
161
+
162
+ .k-stepper-horizontal .k-stepper-description {
163
+ white-space: nowrap;
164
+ }
165
+
166
+ .k-stepper-connector {
167
+ flex: 1 1 auto;
168
+ background: var(--k-line-strong);
169
+ transition: background-color var(--k-duration-lg) var(--k-ease);
170
+ }
171
+
172
+ .k-stepper-item.is-complete > .k-stepper-connector {
173
+ background: var(--k-accent-line);
174
+ }
175
+
176
+ .k-stepper-horizontal .k-stepper-connector {
177
+ min-width: 1rem;
178
+ height: 1px;
179
+ margin: calc(var(--k-stepper-indicator) / 2) 0.75rem 0;
180
+ }
181
+
182
+ .k-stepper-vertical .k-stepper-connector {
183
+ width: 1px;
184
+ min-height: 1rem;
185
+ margin: 0.375rem 0 0.375rem calc(var(--k-stepper-indicator) / 2);
186
+ }
187
+
188
+ .k-stepper-vertical .k-stepper-item:not(:last-child) {
189
+ min-height: 3.5rem;
190
+ }
191
+
192
+ .k-stepper-summary {
193
+ display: none;
194
+ gap: 0.375rem;
195
+ align-items: baseline;
196
+ min-width: 0;
197
+ margin: 0.625rem 0 0;
198
+ font-size: 0.8125rem;
199
+ }
200
+
201
+ .k-stepper-summary-position {
202
+ flex-shrink: 0;
203
+ color: var(--k-text-muted);
204
+ }
205
+
206
+ .k-stepper-summary-label {
207
+ overflow: hidden;
208
+ font-weight: var(--k-font-weight-medium, 500);
209
+ color: var(--k-text);
210
+ text-overflow: ellipsis;
211
+ white-space: nowrap;
212
+ }
213
+
214
+ .k-stepper-horizontal.is-compact .k-stepper-text {
215
+ position: absolute;
216
+ width: 1px;
217
+ height: 1px;
218
+ padding: 0;
219
+ margin: -1px;
220
+ overflow: hidden;
221
+ clip-path: inset(50%);
222
+ white-space: nowrap;
223
+ }
224
+
225
+ .k-stepper-horizontal.is-compact .k-stepper-summary {
226
+ display: flex;
227
+ }
228
+
229
+ @container (max-width: 36rem) {
230
+ .k-stepper-horizontal.is-auto-compact .k-stepper-text {
231
+ position: absolute;
232
+ width: 1px;
233
+ height: 1px;
234
+ padding: 0;
235
+ margin: -1px;
236
+ overflow: hidden;
237
+ clip-path: inset(50%);
238
+ white-space: nowrap;
239
+ }
240
+
241
+ .k-stepper-horizontal.is-auto-compact .k-stepper-summary {
242
+ display: flex;
243
+ }
244
+ }
@@ -6,6 +6,7 @@
6
6
  @import './layout/breadcrumbs.css';
7
7
  @import './layout/card.css';
8
8
  @import './layout/tabs.css';
9
+ @import './layout/stepper.css';
9
10
  @import './layout/accordion.css';
10
11
  @import './layout/separator.css';
11
12
  @import './layout/stack.css';
@@ -18,6 +18,11 @@
18
18
  color: var(--k-text-toned);
19
19
  background: transparent;
20
20
  border: 0;
21
+ transition:
22
+ top var(--k-duration-lg) var(--k-ease-out),
23
+ right var(--k-duration-lg) var(--k-ease-out),
24
+ bottom var(--k-duration-lg) var(--k-ease-out),
25
+ left var(--k-duration-lg) var(--k-ease-out);
21
26
  }
22
27
 
23
28
  .k-toaster[data-y='top'] {
@@ -37,34 +42,34 @@
37
42
  }
38
43
 
39
44
  .k-toaster-bottom-right {
40
- right: 1rem;
41
- bottom: 1rem;
45
+ right: calc(1rem + var(--k-toaster-avoid-right, 0px));
46
+ bottom: calc(1rem + var(--k-toaster-avoid-bottom, 0px));
42
47
  }
43
48
 
44
49
  .k-toaster-bottom-left {
45
- bottom: 1rem;
46
- left: 1rem;
50
+ bottom: calc(1rem + var(--k-toaster-avoid-bottom, 0px));
51
+ left: calc(1rem + var(--k-toaster-avoid-left, 0px));
47
52
  }
48
53
 
49
54
  .k-toaster-bottom-center {
50
- bottom: 1rem;
51
- left: 50%;
55
+ bottom: calc(1rem + var(--k-toaster-avoid-bottom, 0px));
56
+ left: calc(50% + (var(--k-toaster-avoid-left, 0px) - var(--k-toaster-avoid-right, 0px)) / 2);
52
57
  translate: -50% 0;
53
58
  }
54
59
 
55
60
  .k-toaster-top-right {
56
- top: 1rem;
57
- right: 1rem;
61
+ top: calc(1rem + var(--k-toaster-avoid-top, 0px));
62
+ right: calc(1rem + var(--k-toaster-avoid-right, 0px));
58
63
  }
59
64
 
60
65
  .k-toaster-top-left {
61
- top: 1rem;
62
- left: 1rem;
66
+ top: calc(1rem + var(--k-toaster-avoid-top, 0px));
67
+ left: calc(1rem + var(--k-toaster-avoid-left, 0px));
63
68
  }
64
69
 
65
70
  .k-toaster-top-center {
66
- top: 1rem;
67
- left: 50%;
71
+ top: calc(1rem + var(--k-toaster-avoid-top, 0px));
72
+ left: calc(50% + (var(--k-toaster-avoid-left, 0px) - var(--k-toaster-avoid-right, 0px)) / 2);
68
73
  translate: -50% 0;
69
74
  }
70
75
 
@@ -147,15 +147,17 @@
147
147
 
148
148
  .k-settings-modal-header {
149
149
  display: flex;
150
+ flex-wrap: wrap;
150
151
  align-items: flex-start;
151
152
  justify-content: space-between;
152
153
  flex: none;
153
- gap: 1rem;
154
+ gap: 0.75rem 1rem;
154
155
  padding: 1.25rem 1.5rem 0.875rem;
155
156
  }
156
157
 
157
158
  .k-settings-modal-heading {
158
159
  display: flex;
160
+ flex: 1 1 14rem;
159
161
  flex-direction: column;
160
162
  gap: 0.125rem;
161
163
  min-width: 0;
@@ -216,8 +218,10 @@
216
218
  .k-settings-modal-actions {
217
219
  display: flex;
218
220
  flex: none;
221
+ flex-wrap: wrap;
219
222
  align-items: center;
220
223
  gap: 0.5rem;
224
+ max-width: 100%;
221
225
  }
222
226
 
223
227
  .k-settings-modal-account {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xleddyl/443-components-vue",
3
- "version": "0.10.2",
3
+ "version": "0.12.0",
4
4
  "description": "Compact, scoped dashboard components for Vue and Nuxt",
5
5
  "license": "MIT",
6
6
  "author": "Edoardo Alberti (https://github.com/xleddyl)",