@morscherlab/mint-sdk 1.4.0-beta.15 → 1.4.0-beta.17

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 (36) hide show
  1. package/dist/{AppSidebar-Bi8g9mRt.js → AppSidebar-CB0-RQ4m.js} +876 -114
  2. package/dist/AppSidebar-CB0-RQ4m.js.map +1 -0
  3. package/dist/{SettingsModal-jra_2u0o.js → SettingsModal-CoZK3EDN.js} +2 -2
  4. package/dist/{SettingsModal-jra_2u0o.js.map → SettingsModal-CoZK3EDN.js.map} +1 -1
  5. package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
  6. package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
  7. package/dist/components/AppTopBar.vue.d.ts +4 -4
  8. package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
  9. package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
  10. package/dist/composables/useOnboarding.d.ts +119 -0
  11. package/dist/index.js +5 -5
  12. package/dist/{install-Bx_6KwJA.js → install-BKgb5qZw.js} +5 -5
  13. package/dist/{install-Bx_6KwJA.js.map → install-BKgb5qZw.js.map} +1 -1
  14. package/dist/install.js +1 -1
  15. package/dist/{runtime-BJvGms6h.js → runtime-Cz1GJa_O.js} +2 -2
  16. package/dist/{runtime-BJvGms6h.js.map → runtime-Cz1GJa_O.js.map} +1 -1
  17. package/dist/runtime.js +2 -2
  18. package/dist/{shell-Czyrzk7l.js → shell-kq9p4VsX.js} +7 -2
  19. package/dist/{shell-Czyrzk7l.js.map → shell-kq9p4VsX.js.map} +1 -1
  20. package/dist/shell.d.ts +1 -0
  21. package/dist/shell.js +3 -3
  22. package/dist/styles.css +385 -0
  23. package/package.json +1 -1
  24. package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
  25. package/src/__tests__/composables/useOnboarding.test.ts +317 -0
  26. package/src/__tests__/styles/v2AuditRules.test.ts +8 -0
  27. package/src/components/AppTopBar.onboarding.story.vue +69 -0
  28. package/src/components/AppTopBar.vue +11 -2
  29. package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
  30. package/src/components/internal/OnboardingLayerInternal.vue +173 -0
  31. package/src/composables/useOnboarding.ts +465 -0
  32. package/src/shell.ts +17 -0
  33. package/src/styles/components/onboarding.css +368 -0
  34. package/src/styles/index.css +1 -0
  35. package/src/styles/variables.css +16 -0
  36. package/dist/AppSidebar-Bi8g9mRt.js.map +0 -1
@@ -0,0 +1,368 @@
1
+ /* Onboarding: the top-bar Help button and checklist chip, the Help panel,
2
+ * the tour layer (scrim, hole, card) and the what's-new dots. */
3
+
4
+ :root {
5
+ --mint-onboarding-scrim: rgba(15, 23, 42, 0.45);
6
+ }
7
+
8
+ html.dark {
9
+ --mint-onboarding-scrim: rgba(2, 6, 23, 0.62);
10
+ }
11
+
12
+ /* ---- Top bar ---- */
13
+
14
+ .mint-onboarding-help {
15
+ position: relative;
16
+ display: inline-flex;
17
+ align-items: center;
18
+ gap: 0.375rem;
19
+ }
20
+
21
+ .mint-topbar__settings-btn--open {
22
+ background: var(--color-primary-soft);
23
+ color: var(--_ink-primary);
24
+ }
25
+
26
+ .mint-onboarding-help__chip {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 0.375rem;
30
+ height: 2rem;
31
+ padding: 0 0.625rem;
32
+ border: 1px solid var(--border-color);
33
+ border-radius: var(--radius-md);
34
+ background: transparent;
35
+ color: var(--text-primary);
36
+ font: 500 0.8125rem/1 var(--font-sans);
37
+ white-space: nowrap;
38
+ cursor: pointer;
39
+ transition: background-color var(--mint-transition), border-color var(--mint-transition);
40
+ }
41
+
42
+ .mint-onboarding-help__chip:hover {
43
+ background: var(--bg-hover);
44
+ }
45
+
46
+ .mint-onboarding-help__chip--open {
47
+ border-color: var(--color-primary);
48
+ background: var(--color-primary-soft);
49
+ color: var(--_ink-primary);
50
+ }
51
+
52
+ .mint-onboarding-help__chip:focus-visible {
53
+ outline: none;
54
+ box-shadow: var(--focus-ring-offset);
55
+ }
56
+
57
+ .mint-onboarding-help__count {
58
+ color: var(--text-muted);
59
+ font: 500 0.75rem/1 var(--font-mono);
60
+ }
61
+
62
+ .mint-onboarding-help__bar {
63
+ width: 1.75rem;
64
+ height: 3px;
65
+ border-radius: 2px;
66
+ background: var(--bg-tertiary);
67
+ overflow: hidden;
68
+ }
69
+
70
+ .mint-onboarding-help__bar > span {
71
+ display: block;
72
+ height: 100%;
73
+ background: var(--color-primary);
74
+ transition: width var(--mint-transition);
75
+ }
76
+
77
+ .mint-onboarding-help__badge {
78
+ position: absolute;
79
+ top: -4px;
80
+ right: -4px;
81
+ min-width: 16px;
82
+ height: 16px;
83
+ padding: 0 4px;
84
+ box-sizing: border-box;
85
+ border-radius: 8px;
86
+ background: var(--color-primary);
87
+ color: var(--text-on-accent);
88
+ font: 600 11px/16px var(--font-sans);
89
+ text-align: center;
90
+ box-shadow: 0 0 0 2px var(--bg-card);
91
+ }
92
+
93
+ /* ---- Help panel ---- */
94
+
95
+ .mint-onboarding-help__panel {
96
+ position: fixed;
97
+ z-index: 1000;
98
+ width: 18rem;
99
+ padding: 0 0 4px;
100
+ overflow: hidden;
101
+ }
102
+
103
+ .mint-onboarding-help__header {
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: space-between;
107
+ padding: 0.75rem 0.75rem 0.5rem;
108
+ }
109
+
110
+ .mint-onboarding-help__heading {
111
+ color: var(--text-secondary);
112
+ font-size: 0.6875rem;
113
+ font-weight: 600;
114
+ }
115
+
116
+ .mint-onboarding-help__progress {
117
+ height: 3px;
118
+ margin: 0 0.75rem 0.25rem;
119
+ border-radius: 2px;
120
+ background: var(--bg-tertiary);
121
+ overflow: hidden;
122
+ }
123
+
124
+ .mint-onboarding-help__progress > span {
125
+ display: block;
126
+ height: 100%;
127
+ background: var(--color-primary);
128
+ transition: width var(--mint-transition);
129
+ }
130
+
131
+ .mint-onboarding-help__todos {
132
+ margin: 0;
133
+ padding: 0;
134
+ list-style: none;
135
+ }
136
+
137
+ .mint-onboarding-help__todo {
138
+ display: grid;
139
+ grid-template-columns: 1rem 1fr auto;
140
+ align-items: center;
141
+ gap: 0.5rem;
142
+ min-height: 1.875rem;
143
+ padding: 0 0.75rem;
144
+ color: var(--text-primary);
145
+ font-size: 0.8125rem;
146
+ }
147
+
148
+ .mint-onboarding-help__check {
149
+ display: grid;
150
+ place-items: center;
151
+ width: 1rem;
152
+ height: 1rem;
153
+ box-sizing: border-box;
154
+ border: 1.5px solid var(--border-color);
155
+ border-radius: 50%;
156
+ }
157
+
158
+ .mint-onboarding-help__todo--done .mint-onboarding-help__check {
159
+ border: 0;
160
+ background: var(--color-primary);
161
+ color: var(--text-on-accent);
162
+ }
163
+
164
+ .mint-onboarding-help__todo--done .mint-onboarding-help__todo-title {
165
+ color: var(--text-muted);
166
+ }
167
+
168
+ .mint-onboarding-help__link {
169
+ padding: 0;
170
+ border: 0;
171
+ background: transparent;
172
+ color: var(--_ink-primary);
173
+ font-size: 0.75rem;
174
+ font-weight: 500;
175
+ white-space: nowrap;
176
+ cursor: pointer;
177
+ }
178
+
179
+ .mint-onboarding-help__link:hover {
180
+ text-decoration: underline;
181
+ }
182
+
183
+ .mint-onboarding-help__link:focus-visible {
184
+ outline: none;
185
+ border-radius: var(--radius-sm);
186
+ box-shadow: var(--focus-ring-offset);
187
+ }
188
+
189
+ .mint-onboarding-help__hide {
190
+ display: block;
191
+ text-align: left;
192
+ margin: 0.25rem 0.75rem 0.5rem;
193
+ color: var(--text-secondary);
194
+ }
195
+
196
+ .mint-onboarding-help__section {
197
+ padding: 0.625rem 0.75rem 0.25rem;
198
+ border-top: 1px solid var(--border-color);
199
+ color: var(--text-secondary);
200
+ font-size: 0.6875rem;
201
+ font-weight: 600;
202
+ }
203
+
204
+ .mint-onboarding-help__icon {
205
+ width: 0.8125rem;
206
+ height: 0.8125rem;
207
+ flex-shrink: 0;
208
+ color: var(--text-muted);
209
+ }
210
+
211
+ .mint-onboarding-help__panel > .mint-menu-item {
212
+ width: calc(100% - 8px);
213
+ margin: 0 4px;
214
+ }
215
+
216
+ .mint-onboarding-help__new {
217
+ margin-left: auto;
218
+ padding: 3px 4px;
219
+ border-radius: var(--radius-sm);
220
+ background: var(--color-primary);
221
+ color: var(--text-on-accent);
222
+ font-size: 0.6875rem;
223
+ font-weight: 600;
224
+ line-height: 1;
225
+ }
226
+
227
+ /* ---- Tour layer ---- */
228
+
229
+ .mint-onboarding {
230
+ position: fixed;
231
+ inset: 0;
232
+ z-index: 1100;
233
+ pointer-events: none;
234
+ }
235
+
236
+ /* Takes every click outside the card. An advanceOn 'click' step cuts the hole out of it. */
237
+ .mint-onboarding__blocker {
238
+ position: absolute;
239
+ inset: 0;
240
+ pointer-events: auto;
241
+ }
242
+
243
+ .mint-onboarding__hole {
244
+ position: fixed;
245
+ border-radius: var(--radius-lg);
246
+ box-shadow: 0 0 0 2px var(--color-primary), 0 0 0 9999px var(--mint-onboarding-scrim);
247
+ pointer-events: none;
248
+ transition: left 200ms ease, top 200ms ease, width 200ms ease, height 200ms ease;
249
+ }
250
+
251
+ .mint-onboarding__card {
252
+ position: fixed;
253
+ display: grid;
254
+ gap: 0.5rem;
255
+ box-sizing: border-box;
256
+ width: 17rem;
257
+ max-width: calc(100vw - 24px);
258
+ padding: 0.875rem;
259
+ border: 1px solid var(--border-color);
260
+ border-radius: var(--radius-lg);
261
+ background: var(--bg-card);
262
+ box-shadow: var(--shadow-lg);
263
+ color: var(--text-primary);
264
+ pointer-events: auto;
265
+ }
266
+
267
+ .mint-onboarding__card:focus {
268
+ outline: none;
269
+ }
270
+
271
+ .mint-onboarding__close {
272
+ position: absolute;
273
+ top: 0.5rem;
274
+ right: 0.5rem;
275
+ display: grid;
276
+ place-items: center;
277
+ width: 1.5rem;
278
+ height: 1.5rem;
279
+ padding: 0;
280
+ border: 0;
281
+ border-radius: var(--radius);
282
+ background: transparent;
283
+ color: var(--text-muted);
284
+ cursor: pointer;
285
+ }
286
+
287
+ .mint-onboarding__close:hover {
288
+ background: var(--bg-hover);
289
+ color: var(--text-primary);
290
+ }
291
+
292
+ .mint-onboarding__close:focus-visible {
293
+ outline: none;
294
+ box-shadow: var(--focus-ring-offset);
295
+ }
296
+
297
+ .mint-onboarding__title {
298
+ margin: 0;
299
+ padding-right: 1.5rem;
300
+ font-size: 0.875rem;
301
+ font-weight: 600;
302
+ }
303
+
304
+ .mint-onboarding__body {
305
+ margin: 0;
306
+ color: var(--text-secondary);
307
+ font-size: 0.8125rem;
308
+ line-height: 1.45;
309
+ }
310
+
311
+ .mint-onboarding__footer {
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: flex-end;
315
+ gap: 0.375rem;
316
+ margin-top: 0.25rem;
317
+ }
318
+
319
+ .mint-onboarding__count {
320
+ color: var(--text-muted);
321
+ font: 500 0.75rem/1.5rem var(--font-mono);
322
+ margin-top: -0.375rem;
323
+ }
324
+
325
+ /* Read by screen readers only. */
326
+ .mint-onboarding__sr {
327
+ position: absolute;
328
+ width: 1px;
329
+ height: 1px;
330
+ overflow: hidden;
331
+ clip-path: inset(50%);
332
+ white-space: nowrap;
333
+ }
334
+
335
+ .mint-onboarding__hint {
336
+ margin-right: auto;
337
+ color: var(--text-muted);
338
+ font-size: 0.75rem;
339
+ }
340
+
341
+ /* A dot at the top-right corner of an element with unseen news. */
342
+ .mint-onboarding__dot {
343
+ position: fixed;
344
+ z-index: 40;
345
+ width: 8px;
346
+ height: 8px;
347
+ padding: 0;
348
+ border: 0;
349
+ border-radius: 50%;
350
+ background: var(--color-primary);
351
+ box-shadow: 0 0 0 2px var(--bg-card);
352
+ transform: translate(-50%, -50%);
353
+ cursor: pointer;
354
+ }
355
+
356
+ .mint-onboarding__dot:focus-visible {
357
+ outline: none;
358
+ box-shadow: var(--focus-ring-offset);
359
+ }
360
+
361
+ @media (prefers-reduced-motion: reduce) {
362
+ .mint-onboarding-help__chip,
363
+ .mint-onboarding-help__bar > span,
364
+ .mint-onboarding-help__progress > span,
365
+ .mint-onboarding__hole {
366
+ transition: none;
367
+ }
368
+ }
@@ -29,6 +29,7 @@
29
29
  @import './components/input.css';
30
30
  @import './components/modal.css';
31
31
  @import './components/number-input.css';
32
+ @import './components/onboarding.css';
32
33
  @import './components/plate-editor.css';
33
34
  @import './components/radio-group.css';
34
35
  @import './components/section-card.css';
@@ -393,6 +393,22 @@ body {
393
393
  transition: background-color 0.15s, color 0.15s;
394
394
  }
395
395
 
396
+ /* No page-level rubber-band bounce or pull-to-refresh; overflow: hidden does
397
+ not stop it. Panels still scroll, and their overscroll stops at their own
398
+ edge. A browser tab keeps the horizontal swipe for back and forward; an
399
+ installed PWA has no history swipe, so it drops both axes. */
400
+ html,
401
+ body {
402
+ overscroll-behavior-y: none;
403
+ }
404
+
405
+ @media (display-mode: standalone) {
406
+ html,
407
+ body {
408
+ overscroll-behavior: none;
409
+ }
410
+ }
411
+
396
412
  code, pre {
397
413
  font-family: var(--font-mono);
398
414
  }