@xleddyl/443-components-vue 0.10.2 → 0.11.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 (53) hide show
  1. package/CATALOG.md +185 -175
  2. package/README.md +47 -21
  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/Stepper.vue +148 -0
  18. package/dist/components/layout/Stepper.vue.d.ts +420 -0
  19. package/dist/components/layout/index.d.ts +1 -0
  20. package/dist/components/layout/index.mjs +1 -0
  21. package/dist/components/layout/types.d.ts +12 -0
  22. package/dist/components/overlays/Toaster.vue +10 -0
  23. package/dist/components/overlays/Toaster.vue.d.ts +1 -1
  24. package/dist/components/templates/DashboardLayout.vue +2 -0
  25. package/dist/components/templates/DashboardLayout.vue.d.ts +3 -1
  26. package/dist/components/templates/types.d.ts +2 -1
  27. package/dist/composables/data.d.ts +1 -0
  28. package/dist/composables/data.mjs +1 -0
  29. package/dist/composables/useSortable.d.ts +38 -0
  30. package/dist/composables/useSortable.mjs +215 -0
  31. package/dist/grid/cells/BadgeCell.vue +90 -18
  32. package/dist/grid/cells/BadgeCell.vue.d.ts +14 -14
  33. package/dist/grid/data-grid.css +24 -0
  34. package/dist/grid/spreadsheet.mjs +8 -4
  35. package/dist/grid/types.d.ts +2 -0
  36. package/dist/internal/data/sortable.d.ts +5 -0
  37. package/dist/internal/data/sortable.mjs +23 -0
  38. package/dist/internal/overlays/avoid.d.ts +26 -0
  39. package/dist/internal/overlays/avoid.mjs +134 -0
  40. package/dist/locale/de.mjs +20 -0
  41. package/dist/locale/en.mjs +20 -0
  42. package/dist/locale/it.mjs +20 -0
  43. package/dist/locale/types.d.ts +20 -0
  44. package/dist/nuxt/module.mjs +14 -0
  45. package/dist/nuxt/runtime/layouts/dashboard.vue +8 -1
  46. package/dist/styles/data/tag-list.css +93 -0
  47. package/dist/styles/data.css +1 -0
  48. package/dist/styles/forced-colors.css +10 -0
  49. package/dist/styles/layout/app-shell.css +23 -0
  50. package/dist/styles/layout/stepper.css +244 -0
  51. package/dist/styles/layout.css +1 -0
  52. package/dist/styles/overlays/toast.css +17 -12
  53. package/package.json +1 -1
@@ -92,6 +92,7 @@ export const de = {
92
92
  no: "Nein",
93
93
  label: "Datentabelle",
94
94
  rowCount: "Keine Zeilen | {count} Zeile | {count} Zeilen",
95
+ moreValues: "{count} weitere",
95
96
  checked: "ausgew\xE4hlt",
96
97
  unchecked: "nicht ausgew\xE4hlt",
97
98
  indeterminate: "teilweise ausgew\xE4hlt",
@@ -248,6 +249,25 @@ export const de = {
248
249
  tabs: {
249
250
  dot: "Erfordert Aufmerksamkeit"
250
251
  },
252
+ sortable: {
253
+ moved: "{label} an Position {position} von {count} verschoben"
254
+ },
255
+ tagList: {
256
+ label: "Elemente",
257
+ empty: "Keine Elemente",
258
+ sortHint: "Mit den Pfeiltasten zwischen Elementen wechseln, mit Alt und einer Pfeiltaste ein Element verschieben",
259
+ removeHint: "Entf dr\xFCcken zum Entfernen",
260
+ moveEarlier: "{label} nach vorne verschieben",
261
+ moveLater: "{label} nach hinten verschieben",
262
+ removed: "{label} entfernt",
263
+ added: "{label} hinzugef\xFCgt"
264
+ },
265
+ stepper: {
266
+ label: "Fortschritt",
267
+ position: "Schritt {step} von {count}",
268
+ complete: "abgeschlossen",
269
+ error: "enth\xE4lt Fehler"
270
+ },
251
271
  listPage: {
252
272
  toolbar: "Ergebnisse filtern",
253
273
  emptyTitle: "Noch nichts vorhanden",
@@ -92,6 +92,7 @@ export const en = {
92
92
  no: "No",
93
93
  label: "Data grid",
94
94
  rowCount: "No rows | {count} row | {count} rows",
95
+ moreValues: "{count} more",
95
96
  checked: "checked",
96
97
  unchecked: "not checked",
97
98
  indeterminate: "partially checked",
@@ -248,6 +249,25 @@ export const en = {
248
249
  tabs: {
249
250
  dot: "Needs attention"
250
251
  },
252
+ sortable: {
253
+ moved: "{label} moved to position {position} of {count}"
254
+ },
255
+ tagList: {
256
+ label: "Items",
257
+ empty: "No items",
258
+ sortHint: "Use the arrow keys to move between items, Alt with an arrow key to move an item",
259
+ removeHint: "Press Delete to remove",
260
+ moveEarlier: "Move {label} earlier",
261
+ moveLater: "Move {label} later",
262
+ removed: "{label} removed",
263
+ added: "{label} added"
264
+ },
265
+ stepper: {
266
+ label: "Progress",
267
+ position: "Step {step} of {count}",
268
+ complete: "completed",
269
+ error: "has errors"
270
+ },
251
271
  listPage: {
252
272
  toolbar: "Filter results",
253
273
  emptyTitle: "Nothing here yet",
@@ -92,6 +92,7 @@ export const it = {
92
92
  no: "No",
93
93
  label: "Griglia dati",
94
94
  rowCount: "Nessuna riga | {count} riga | {count} righe",
95
+ moreValues: "altri {count}",
95
96
  checked: "selezionato",
96
97
  unchecked: "non selezionato",
97
98
  indeterminate: "parzialmente selezionato",
@@ -248,6 +249,25 @@ export const it = {
248
249
  tabs: {
249
250
  dot: "Richiede attenzione"
250
251
  },
252
+ sortable: {
253
+ moved: "{label} spostato in posizione {position} di {count}"
254
+ },
255
+ tagList: {
256
+ label: "Elementi",
257
+ empty: "Nessun elemento",
258
+ sortHint: "Usa le frecce per spostarti tra gli elementi, Alt con una freccia per spostare un elemento",
259
+ removeHint: "Premi Canc per rimuovere",
260
+ moveEarlier: "Sposta {label} prima",
261
+ moveLater: "Sposta {label} dopo",
262
+ removed: "{label} rimosso",
263
+ added: "{label} aggiunto"
264
+ },
265
+ stepper: {
266
+ label: "Avanzamento",
267
+ position: "Passo {step} di {count}",
268
+ complete: "completato",
269
+ error: "contiene errori"
270
+ },
251
271
  listPage: {
252
272
  toolbar: "Filtra i risultati",
253
273
  emptyTitle: "Ancora niente qui",
@@ -90,6 +90,7 @@ export interface KMessages {
90
90
  no: string;
91
91
  label: string;
92
92
  rowCount: string;
93
+ moreValues: string;
93
94
  checked: string;
94
95
  unchecked: string;
95
96
  indeterminate: string;
@@ -246,6 +247,25 @@ export interface KMessages {
246
247
  tabs: {
247
248
  dot: string;
248
249
  };
250
+ sortable: {
251
+ moved: string;
252
+ };
253
+ tagList: {
254
+ label: string;
255
+ empty: string;
256
+ sortHint: string;
257
+ removeHint: string;
258
+ moveEarlier: string;
259
+ moveLater: string;
260
+ removed: string;
261
+ added: string;
262
+ };
263
+ stepper: {
264
+ label: string;
265
+ position: string;
266
+ complete: string;
267
+ error: string;
268
+ };
249
269
  listPage: {
250
270
  toolbar: string;
251
271
  emptyTitle: string;
@@ -9,6 +9,7 @@ import {
9
9
  addPlugin,
10
10
  addPluginTemplate,
11
11
  addTemplate,
12
+ addTypeTemplate,
12
13
  createResolver,
13
14
  defineNuxtModule,
14
15
  directoryToURL,
@@ -124,6 +125,19 @@ export default defineNuxtModule({
124
125
  addImports({ name: "useDashboard", from: resolver.resolve("./runtime/dashboard") });
125
126
  const layouts = resolveLayouts(options.layouts);
126
127
  if (layouts.length) {
128
+ addTypeTemplate({
129
+ filename: "types/k-page-meta.d.ts",
130
+ getContents: () => [
131
+ `import type { ShellContent } from '@xleddyl/443-components-vue'`,
132
+ `declare module '#app' {`,
133
+ ` interface PageMeta {`,
134
+ ` content?: ShellContent`,
135
+ ` fill?: boolean`,
136
+ ` }`,
137
+ `}`,
138
+ `export {}`
139
+ ].join("\n")
140
+ });
127
141
  nuxt.hook("app:templates", (app) => {
128
142
  for (const layout of layouts) {
129
143
  if (layout.name in app.layouts) continue;
@@ -20,7 +20,7 @@
20
20
  :collapsible="dashboard.collapsible"
21
21
  :storage-key="dashboard.storageKey"
22
22
  :fluid="dashboard.fluid"
23
- :fill="route.meta.fill === true || Boolean(dashboard.fill)"
23
+ :content="content"
24
24
  >
25
25
  <slot />
26
26
  </DashboardLayout>
@@ -49,6 +49,13 @@ const dashboard = computed(() => config.value.dashboard ?? {});
49
49
  const account = computed(() => state.value.account ?? config.value.account);
50
50
  const settings = computed(() => config.value.settings ?? {});
51
51
  const signOutTarget = computed(() => settings.value.signOutTo);
52
+ const CONTENT_MODES = ["page", "fill", "centered", "bleed"];
53
+ function contentOf(value) {
54
+ return CONTENT_MODES.includes(value) ? value : void 0;
55
+ }
56
+ const content = computed(
57
+ () => contentOf(route.meta.content) ?? (route.meta.fill === true ? "bleed" : void 0) ?? contentOf(dashboard.value.content) ?? (dashboard.value.fill ? "bleed" : "page")
58
+ );
52
59
  function signOut() {
53
60
  if (signOutTarget.value) return navigateTo(signOutTarget.value);
54
61
  }
@@ -0,0 +1,93 @@
1
+ .k-tag-list {
2
+ min-width: 0;
3
+ border-radius: var(--k-radius-md);
4
+ transition:
5
+ background-color var(--k-duration) var(--k-ease),
6
+ box-shadow var(--k-duration) var(--k-ease);
7
+ }
8
+
9
+ .k-tag-list.is-drop-target {
10
+ background: var(--k-accent-soft);
11
+ box-shadow: 0 0 0 1px var(--k-accent-line);
12
+ }
13
+
14
+ .k-tag-list-items {
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ align-items: center;
18
+ gap: 0.375rem;
19
+ min-width: 0;
20
+ margin: 0;
21
+ padding: 0;
22
+ list-style: none;
23
+ }
24
+
25
+ .k-tag-list-item {
26
+ position: relative;
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 0.125rem;
30
+ max-width: 100%;
31
+ min-width: 0;
32
+ border-radius: var(--k-radius-sm);
33
+ }
34
+
35
+ .k-tag-list.is-sortable .k-tag-list-item {
36
+ cursor: grab;
37
+ touch-action: none;
38
+ user-select: none;
39
+ -webkit-user-select: none;
40
+ }
41
+
42
+ .k-tag-list.is-sortable .k-tag-list-item.is-locked {
43
+ cursor: default;
44
+ }
45
+
46
+ .k-tag-list.is-dragging .k-tag-list-item {
47
+ cursor: grabbing;
48
+ }
49
+
50
+ .k-tag-list-item.is-moving {
51
+ z-index: 1;
52
+ }
53
+
54
+ .k-tag-list-item.is-moving > .k-tag {
55
+ box-shadow: var(--k-shadow-raised);
56
+ scale: 1.03;
57
+ }
58
+
59
+ .k-tag-list.is-sortable .k-tag-list-item:not(.is-moving) > .k-tag {
60
+ transition:
61
+ box-shadow var(--k-duration) var(--k-ease),
62
+ scale var(--k-duration) var(--k-ease);
63
+ }
64
+
65
+ .k-tag-list-item[data-drop='before']::after,
66
+ .k-tag-list-end[data-drop='before']::after {
67
+ content: '';
68
+ position: absolute;
69
+ inset-block: 0.125rem;
70
+ inset-inline-start: -0.25rem;
71
+ width: 2px;
72
+ border-radius: var(--k-radius-full);
73
+ background: var(--k-ring);
74
+ }
75
+
76
+ .k-tag-list-end {
77
+ position: relative;
78
+ align-self: stretch;
79
+ width: 0;
80
+ min-height: 1.625rem;
81
+ margin-inline-start: 0.25rem;
82
+ }
83
+
84
+ .k-tag-list-move {
85
+ display: inline-flex;
86
+ }
87
+
88
+ .k-tag-list-empty {
89
+ margin: 0;
90
+ padding: 0.25rem 0;
91
+ font-size: 0.8125rem;
92
+ color: var(--k-text-muted);
93
+ }
@@ -2,6 +2,7 @@
2
2
  @import './data/pagination.css';
3
3
  @import './data/badge.css';
4
4
  @import './data/tag.css';
5
+ @import './data/tag-list.css';
5
6
  @import './data/avatar.css';
6
7
  @import './data/description-list.css';
7
8
  @import './data/stat.css';
@@ -139,6 +139,7 @@
139
139
  .k-navlink.is-active,
140
140
  .k-settings-modal-tab[aria-current='true'],
141
141
  .k-tab[aria-selected='true'],
142
+ .k-stepper-item.is-current .k-stepper-indicator,
142
143
  .k-theme-switch-option.is-active,
143
144
  .k-color-input-preset[aria-checked='true'],
144
145
  .k-tree-row[aria-selected='true'],
@@ -221,4 +222,13 @@
221
222
  forced-color-adjust: none;
222
223
  background: CanvasText;
223
224
  }
225
+
226
+ .k-tag-list.is-drop-target {
227
+ outline: 2px dashed Highlight;
228
+ }
229
+
230
+ :is(.k-tag-list-item, .k-tag-list-end)[data-drop='before']::after {
231
+ forced-color-adjust: none;
232
+ background: Highlight;
233
+ }
224
234
  }
@@ -126,6 +126,29 @@ html.k-root body {
126
126
  padding: 0;
127
127
  }
128
128
 
129
+ .k-shell:is([data-content='fill'], [data-content='centered']) .k-shell-body {
130
+ overflow: hidden;
131
+ }
132
+
133
+ .k-shell:is([data-content='fill'], [data-content='centered']) .k-shell-main {
134
+ min-height: 0;
135
+ }
136
+
137
+ .k-shell-content:is(.k-shell-content-fill, .k-shell-content-centered) {
138
+ min-height: 0;
139
+ overflow-y: auto;
140
+ overscroll-behavior: contain;
141
+ }
142
+
143
+ .k-shell-content.k-shell-content-fill {
144
+ max-width: none;
145
+ }
146
+
147
+ .k-shell-content:is(.k-shell-content-fill, .k-shell-content-centered) > .k-page {
148
+ flex: 1;
149
+ min-height: 0;
150
+ }
151
+
129
152
  .k-shell[data-variant='sidebar'] .k-shell-sidebar {
130
153
  border-right: 1px solid var(--k-line);
131
154
  }
@@ -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
 
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.11.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)",