@donotdev/ui 0.0.12 → 0.0.13

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 (29) hide show
  1. package/dist/components/common/FeatureCard.js +1 -1
  2. package/dist/components/common/RedirectOverlay.js +1 -1
  3. package/dist/components/cookie-consent/CookieConsent.js +3 -3
  4. package/dist/components/layout/GameContainer.d.ts +24 -8
  5. package/dist/components/layout/GameContainer.d.ts.map +1 -1
  6. package/dist/components/layout/GameContainer.js +21 -3
  7. package/dist/components/layout/GameFlow.d.ts.map +1 -1
  8. package/dist/components/layout/GameFlow.js +27 -11
  9. package/dist/components/layout/components/header/CacheSettings.js +1 -1
  10. package/dist/crud/components/EntityCardList.d.ts.map +1 -1
  11. package/dist/crud/components/EntityCardList.js +16 -10
  12. package/dist/crud/components/EntityDisplayRenderer.js +2 -2
  13. package/dist/crud/components/EntityFormRenderer.d.ts.map +1 -1
  14. package/dist/crud/components/EntityList.d.ts.map +1 -1
  15. package/dist/crud/components/EntityList.js +7 -9
  16. package/dist/crud/components/Form.js +1 -1
  17. package/dist/dndev.css +99 -39
  18. package/dist/index.js +4 -4
  19. package/dist/internal/common/RouteErrorFallback.js +3 -3
  20. package/dist/internal/devtools/components/ConfigTab.js +1 -1
  21. package/dist/internal/devtools/components/CookieTab.js +1 -1
  22. package/dist/internal/devtools/components/DesignTab.js +2 -2
  23. package/dist/internal/devtools/components/StoresTab.js +2 -2
  24. package/dist/internal/layout/zones/DnDevFooter.js +1 -1
  25. package/dist/internal/layout/zones/DnDevMergedBar.js +1 -1
  26. package/dist/routing/404.js +3 -3
  27. package/dist/routing/AuthGuardFallback.js +2 -2
  28. package/dist/styles/index.css +99 -39
  29. package/package.json +1 -1
package/dist/dndev.css CHANGED
@@ -3147,7 +3147,6 @@ em {
3147
3147
  flex-direction: row;
3148
3148
  gap: var(--gap-md);
3149
3149
  justify-content: center;
3150
-
3151
3150
  }
3152
3151
 
3153
3152
  .dndev-cta-actions .dndev-interactive {
@@ -7535,6 +7534,10 @@ input[type='number'] {
7535
7534
  font-weight: var(--font-weight-bold);
7536
7535
  }
7537
7536
 
7537
+ .dndev-text-base[data-italic] {
7538
+ font-style: italic;
7539
+ }
7540
+
7538
7541
  /* packages/components/src/atomic/Toaster/Toaster.css */
7539
7542
 
7540
7543
  .dndev-toast-viewport {
@@ -7734,8 +7737,9 @@ input[type='number'] {
7734
7737
 
7735
7738
  .dndev-toggle-group {
7736
7739
  display: inline-flex;
7740
+ flex-wrap: wrap;
7737
7741
  align-items: center;
7738
- gap: 0;
7742
+ gap: var(--gap-sm);
7739
7743
  padding: 0.125rem;
7740
7744
  border-radius: var(--radius-interactive);
7741
7745
  background-color: var(--muted);
@@ -7931,12 +7935,16 @@ input[type='number'] {
7931
7935
 
7932
7936
  .dndev-video-dialog {
7933
7937
  max-width: 90vw;
7934
- max-height: 90vh;
7935
7938
  }
7936
7939
 
7937
7940
  .dndev-video-dialog .dndev-modal-body {
7938
7941
  padding: 0;
7942
+ overflow: hidden;
7943
+ }
7944
+
7945
+ .dndev-video-dialog .dndev-video-frame {
7939
7946
  aspect-ratio: 16/9;
7947
+ max-height: calc(90vh - 5rem);
7940
7948
  }
7941
7949
 
7942
7950
  /* 6. Animation keyframes */
@@ -9080,6 +9088,8 @@ h4[data-variant='code'] {
9080
9088
  /* Narrow content (mobile-first PWA, app-like single column) - single source of truth */
9081
9089
  --narrow-content-max: 37.5rem;
9082
9090
  /* 600px */
9091
+ --narrow-form-max: 30rem;
9092
+ /* 480px - inner form/input width within narrow layout */
9083
9093
 
9084
9094
  /* Content Area Calculations */
9085
9095
  /* Header content area (excludes sidebar on some presets) */
@@ -9190,7 +9200,8 @@ main[role='main'][data-routing-animation='fade'] {
9190
9200
  /* Slide animation - keyframes handle opacity 0→1 */
9191
9201
 
9192
9202
  main[role='main'][data-routing-animation='slide'] {
9193
- animation: routeSlideIn var(--routing-default-duration, 300ms) ease-in forwards;
9203
+ animation: routeSlideIn var(--routing-default-duration, 300ms) ease-in
9204
+ forwards;
9194
9205
  }
9195
9206
 
9196
9207
  /* No animation - already visible by default, explicit for clarity */
@@ -9204,11 +9215,15 @@ main[role='main'][data-routing-animation='none'] {
9204
9215
 
9205
9216
  @media (width < 768px) {
9206
9217
  main[role='main'][data-routing-animation='fade'] {
9207
- animation: routeFadeIn var(--routing-mobile-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9218
+ animation: routeFadeIn
9219
+ var(--routing-mobile-duration, var(--routing-default-duration, 300ms))
9220
+ ease-in forwards;
9208
9221
  }
9209
9222
 
9210
9223
  main[role='main'][data-routing-animation='slide'] {
9211
- animation: routeSlideIn var(--routing-mobile-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9224
+ animation: routeSlideIn
9225
+ var(--routing-mobile-duration, var(--routing-default-duration, 300ms))
9226
+ ease-in forwards;
9212
9227
  }
9213
9228
  }
9214
9229
 
@@ -9216,11 +9231,15 @@ main[role='main'][data-routing-animation='none'] {
9216
9231
 
9217
9232
  @media (width >=768px) and (width <=1023px) {
9218
9233
  main[role='main'][data-routing-animation='fade'] {
9219
- animation: routeFadeIn var(--routing-tablet-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9234
+ animation: routeFadeIn
9235
+ var(--routing-tablet-duration, var(--routing-default-duration, 300ms))
9236
+ ease-in forwards;
9220
9237
  }
9221
9238
 
9222
9239
  main[role='main'][data-routing-animation='slide'] {
9223
- animation: routeSlideIn var(--routing-tablet-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9240
+ animation: routeSlideIn
9241
+ var(--routing-tablet-duration, var(--routing-default-duration, 300ms))
9242
+ ease-in forwards;
9224
9243
  }
9225
9244
  }
9226
9245
 
@@ -9228,11 +9247,15 @@ main[role='main'][data-routing-animation='none'] {
9228
9247
 
9229
9248
  @media (width >=1024px) and (width <=1439px) {
9230
9249
  main[role='main'][data-routing-animation='fade'] {
9231
- animation: routeFadeIn var(--routing-desktop-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9250
+ animation: routeFadeIn
9251
+ var(--routing-desktop-duration, var(--routing-default-duration, 300ms))
9252
+ ease-in forwards;
9232
9253
  }
9233
9254
 
9234
9255
  main[role='main'][data-routing-animation='slide'] {
9235
- animation: routeSlideIn var(--routing-desktop-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9256
+ animation: routeSlideIn
9257
+ var(--routing-desktop-duration, var(--routing-default-duration, 300ms))
9258
+ ease-in forwards;
9236
9259
  }
9237
9260
  }
9238
9261
 
@@ -9240,11 +9263,15 @@ main[role='main'][data-routing-animation='none'] {
9240
9263
 
9241
9264
  @media (width >=1440px) {
9242
9265
  main[role='main'][data-routing-animation='fade'] {
9243
- animation: routeFadeIn var(--routing-wide-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9266
+ animation: routeFadeIn
9267
+ var(--routing-wide-duration, var(--routing-default-duration, 300ms))
9268
+ ease-in forwards;
9244
9269
  }
9245
9270
 
9246
9271
  main[role='main'][data-routing-animation='slide'] {
9247
- animation: routeSlideIn var(--routing-wide-duration, var(--routing-default-duration, 300ms)) ease-in forwards;
9272
+ animation: routeSlideIn
9273
+ var(--routing-wide-duration, var(--routing-default-duration, 300ms))
9274
+ ease-in forwards;
9248
9275
  }
9249
9276
  }
9250
9277
 
@@ -9268,7 +9295,6 @@ main[role='main'][data-routing-animation='none'] {
9268
9295
  /* Mobile/Tablet: Hide sidebars - WCAG & Lighthouse best practices */
9269
9296
 
9270
9297
  @media (width <=1023px) {
9271
-
9272
9298
  .dndev-layout aside[role='navigation'].sidebar,
9273
9299
  aside[role='navigation'].sidebar {
9274
9300
  display: none !important;
@@ -9292,8 +9318,10 @@ main[role='main'][data-routing-animation='none'] {
9292
9318
  'header header'
9293
9319
  'sidebar main'
9294
9320
  'footer footer';
9295
- grid-template-rows: var(--header-height) 1fr minmax(var(--footer-height),
9296
- auto);
9321
+ grid-template-rows: var(--header-height) 1fr minmax(
9322
+ var(--footer-height),
9323
+ auto
9324
+ );
9297
9325
  grid-template-columns: var(--sidebar-width) 1fr;
9298
9326
  }
9299
9327
 
@@ -9307,7 +9335,10 @@ main[role='main'][data-routing-animation='none'] {
9307
9335
  grid-template-rows: var(--header-height) 1fr auto;
9308
9336
  }
9309
9337
 
9310
- .dndev-layout[data-footer-mode='scroll'] header[role='banner'] { position: sticky; top: 0; }
9338
+ .dndev-layout[data-footer-mode='scroll'] header[role='banner'] {
9339
+ position: sticky;
9340
+ top: 0;
9341
+ }
9311
9342
 
9312
9343
  .dndev-layout[data-footer-mode='scroll'] aside.sidebar[role='navigation'] {
9313
9344
  position: sticky;
@@ -9316,14 +9347,20 @@ main[role='main'][data-routing-animation='none'] {
9316
9347
  align-self: start;
9317
9348
  }
9318
9349
 
9319
- .dndev-layout[data-footer-mode='scroll'] main[role='main'] { overflow-y: visible; overflow-x: hidden; }
9350
+ .dndev-layout[data-footer-mode='scroll'] main[role='main'] {
9351
+ overflow-y: visible;
9352
+ overflow-x: hidden;
9353
+ }
9320
9354
 
9321
9355
  .dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo'] {
9322
9356
  grid-column: 2 / -1;
9323
9357
  height: auto;
9324
9358
  }
9325
9359
 
9326
- :is(.dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo']) > * { height: auto; min-height: var(--footer-height); }
9360
+ :is(.dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo']) > * {
9361
+ height: auto;
9362
+ min-height: var(--footer-height);
9363
+ }
9327
9364
 
9328
9365
  /* Mobile: footer scroll mode ON by default (same rules) */
9329
9366
 
@@ -9334,15 +9371,24 @@ main[role='main'][data-routing-animation='none'] {
9334
9371
  grid-template-rows: var(--header-height) 1fr auto;
9335
9372
  }
9336
9373
 
9337
- .dndev-layout header[role='banner'] { position: sticky; top: 0; }
9374
+ .dndev-layout header[role='banner'] {
9375
+ position: sticky;
9376
+ top: 0;
9377
+ }
9338
9378
 
9339
- .dndev-layout main[role='main'] { overflow-y: visible; overflow-x: hidden; }
9379
+ .dndev-layout main[role='main'] {
9380
+ overflow-y: visible;
9381
+ overflow-x: hidden;
9382
+ }
9340
9383
 
9341
9384
  .dndev-layout footer[role='contentinfo'] {
9342
9385
  height: auto;
9343
9386
  }
9344
9387
 
9345
- :is(.dndev-layout footer[role='contentinfo']) > * { height: auto; min-height: var(--footer-height); }
9388
+ :is(.dndev-layout footer[role='contentinfo']) > * {
9389
+ height: auto;
9390
+ min-height: var(--footer-height);
9391
+ }
9346
9392
  }
9347
9393
 
9348
9394
  /* Presets with no footer at all */
@@ -9510,7 +9556,8 @@ aside[role='navigation'].sidebar .dndev-sidebar-resize-handle:focus-visible {
9510
9556
 
9511
9557
  /* Active drag state */
9512
9558
 
9513
- aside[role='navigation'].sidebar[data-dragging='true'] .dndev-sidebar-resize-handle {
9559
+ aside[role='navigation'].sidebar[data-dragging='true']
9560
+ .dndev-sidebar-resize-handle {
9514
9561
  background: var(--primary);
9515
9562
  }
9516
9563
 
@@ -9526,7 +9573,10 @@ aside[role='navigation'].sidebar[data-dragging='true'] .dndev-sidebar-resize-han
9526
9573
  /* Landing: AUTO display mode - compact below wide breakpoint (< 1440px) */
9527
9574
 
9528
9575
  @media (width < 1440px) {
9529
- [data-layout='landing'] header[role='banner'] [data-display='auto'] .dndev-interactive-label {
9576
+ [data-layout='landing']
9577
+ header[role='banner']
9578
+ [data-display='auto']
9579
+ .dndev-interactive-label {
9530
9580
  display: none;
9531
9581
  }
9532
9582
  }
@@ -9699,7 +9749,6 @@ main[role='main'] {
9699
9749
  contain: layout style;
9700
9750
 
9701
9751
  /* First child after breadcrumbs grows to fill space */
9702
-
9703
9752
  }
9704
9753
 
9705
9754
  main[role='main'] > *:not(.breadcrumbs-container):first-of-type,main[role='main'] > .breadcrumbs-container + * {
@@ -9827,7 +9876,6 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
9827
9876
  /* Mobile (<1024px): Show merged-bar, hide zones */
9828
9877
 
9829
9878
  @media (width <=1023px) {
9830
-
9831
9879
  /* Presets with mergedBar: top (admin, moolti, game, docs) */
9832
9880
  [data-layout='admin'] .merged-bar[data-position='top'],
9833
9881
  [data-layout='moolti'] .merged-bar[data-position='top'],
@@ -10250,10 +10298,10 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10250
10298
 
10251
10299
  /* Breakthrough pattern: only applies inside PageContainer */
10252
10300
 
10253
- .dndev-container>.dndev-section-full-width,
10254
- .dndev-container>.dndev-cta,
10255
- .dndev-container>.dndev-hero-section,
10256
- .dndev-container>.dndev-tech-bento {
10301
+ .dndev-container > .dndev-section-full-width,
10302
+ .dndev-container > .dndev-cta,
10303
+ .dndev-container > .dndev-hero-section,
10304
+ .dndev-container > .dndev-tech-bento {
10257
10305
  /* Break out of PageContainer padding and max-width constraint */
10258
10306
  /* Account for sidebar: --sidebar-width is 0px for presets without sidebar */
10259
10307
  width: calc(100dvw - var(--sidebar-width));
@@ -10294,7 +10342,16 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10294
10342
  width: 100%;
10295
10343
  }
10296
10344
 
10297
- /* ScrollArea wrapper */
10345
+ /* Scroll wrapper - stretches to full width so scrollbar is at viewport edge */
10346
+
10347
+ .dndev-game-container__scroll-wrapper {
10348
+ flex: 1 1 0;
10349
+ min-height: 0;
10350
+ width: 100%;
10351
+ align-self: stretch;
10352
+ }
10353
+
10354
+ /* ScrollArea - fills wrapper */
10298
10355
 
10299
10356
  .dndev-game-container__scroll {
10300
10357
  width: 100%;
@@ -10333,20 +10390,16 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10333
10390
  justify-content: space-between;
10334
10391
  }
10335
10392
 
10336
- /* Narrow content wrapper - constrained by --narrow-content-max (mobile-first PWA) */
10393
+ /* Narrow content wrapper - constrained by --narrow-content-max, centered inside scroll */
10394
+
10395
+ /* height: 100% fills the scroll viewport so children can use percentage heights.
10396
+ Content taller than viewport still scrolls — overflow propagates to the scroll container. */
10337
10397
 
10338
10398
  .dndev-game-container__content-narrow {
10339
10399
  width: 100%;
10340
10400
  max-width: var(--narrow-content-max);
10341
10401
  margin-inline: auto;
10342
- min-height: 0;
10343
- flex: 1 1 auto;
10344
- display: flex;
10345
- flex-direction: column;
10346
- }
10347
-
10348
- .dndev-game-container__content-narrow .dndev-game-container__scroll {
10349
- width: 100%;
10402
+ height: 100%;
10350
10403
  }
10351
10404
 
10352
10405
  /* CTA Zone - Fixed at bottom; safe area for notched devices */
@@ -10361,6 +10414,13 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10361
10414
 
10362
10415
  /* CTA Button */
10363
10416
 
10417
+ .dndev-game-container__cta-buttons {
10418
+ display: grid;
10419
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
10420
+ gap: var(--gap-sm);
10421
+ width: 100%;
10422
+ }
10423
+
10364
10424
  .dndev-game-container__cta-button {
10365
10425
  height: var(--touch-target);
10366
10426
  width: 100%;