@donotdev/ui 0.0.11 → 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 (35) 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 +26 -8
  5. package/dist/components/layout/GameContainer.d.ts.map +1 -1
  6. package/dist/components/layout/GameContainer.js +21 -2
  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/PageContainer.d.ts +1 -1
  10. package/dist/components/layout/PageContainer.d.ts.map +1 -1
  11. package/dist/components/layout/components/header/CacheSettings.js +1 -1
  12. package/dist/crud/components/EntityCardList.d.ts.map +1 -1
  13. package/dist/crud/components/EntityCardList.js +16 -10
  14. package/dist/crud/components/EntityDisplayRenderer.js +2 -2
  15. package/dist/crud/components/EntityFormRenderer.d.ts.map +1 -1
  16. package/dist/crud/components/EntityFormRenderer.js +31 -20
  17. package/dist/crud/components/EntityList.d.ts +1 -1
  18. package/dist/crud/components/EntityList.d.ts.map +1 -1
  19. package/dist/crud/components/EntityList.js +11 -11
  20. package/dist/crud/components/Form.js +1 -1
  21. package/dist/dndev.css +128 -83
  22. package/dist/index.js +4 -4
  23. package/dist/internal/common/RouteErrorFallback.js +3 -3
  24. package/dist/internal/devtools/components/ConfigTab.js +1 -1
  25. package/dist/internal/devtools/components/CookieTab.js +1 -1
  26. package/dist/internal/devtools/components/DesignTab.js +2 -2
  27. package/dist/internal/devtools/components/StoresTab.js +2 -2
  28. package/dist/internal/layout/config/presets/game.d.ts.map +1 -1
  29. package/dist/internal/layout/config/presets/game.js +10 -5
  30. package/dist/internal/layout/zones/DnDevFooter.js +1 -1
  31. package/dist/internal/layout/zones/DnDevMergedBar.js +1 -1
  32. package/dist/routing/404.js +3 -3
  33. package/dist/routing/AuthGuardFallback.js +2 -2
  34. package/dist/styles/index.css +128 -83
  35. package/package.json +5 -5
package/dist/dndev.css CHANGED
@@ -3144,7 +3144,7 @@ em {
3144
3144
 
3145
3145
  .dndev-cta-actions {
3146
3146
  display: flex;
3147
- flex-direction: column;
3147
+ flex-direction: row;
3148
3148
  gap: var(--gap-md);
3149
3149
  justify-content: center;
3150
3150
  }
@@ -3179,13 +3179,6 @@ em {
3179
3179
  border-color: var(--foreground);
3180
3180
  }
3181
3181
 
3182
- @media (width >= 768px) {
3183
-
3184
- .dndev-cta-actions {
3185
- flex-direction: row;
3186
- }
3187
- }
3188
-
3189
3182
  /* packages/components/src/atomic/Card/Card.css */
3190
3183
 
3191
3184
  /* Card layout - grid with gap */
@@ -3635,12 +3628,10 @@ em {
3635
3628
  /* Code-specific overrides: background color, text color, and layout */
3636
3629
  display: flex;
3637
3630
  flex-direction: column;
3638
- background: var(
3639
- --muted
3640
- ); /* Override surface gradient with code-specific dark background */
3641
- color: var(
3642
- --muted-foreground
3643
- ); /* Override surface text color for dark background */
3631
+ background: var(--muted);
3632
+ /* Override surface gradient with code-specific dark background */
3633
+ color: var(--muted-foreground);
3634
+ /* Override surface text color for dark background */
3644
3635
  overflow: hidden;
3645
3636
  font-family: var(--font-mono);
3646
3637
  font-size: var(--font-size-sm);
@@ -3714,8 +3705,6 @@ em {
3714
3705
  white-space: pre;
3715
3706
  overflow-x: auto;
3716
3707
  overflow-y: visible;
3717
- min-width: -moz-min-content;
3718
- min-width: min-content;
3719
3708
  }
3720
3709
 
3721
3710
  .dndev-code-pre[data-compact='true'] {
@@ -3732,16 +3721,19 @@ em {
3732
3721
  user-select: none;
3733
3722
  padding-inline-end: var(--gap-md);
3734
3723
  text-align: end;
3735
- font-size: inherit; /* Match parent code font-size */
3724
+ font-size: inherit;
3725
+ /* Match parent code font-size */
3736
3726
  opacity: var(--opacity-muted);
3737
3727
  width: 3rem;
3738
3728
  flex-shrink: 0;
3739
3729
  color: var(--muted-foreground);
3740
- line-height: 1.5; /* Consistent line height */
3730
+ line-height: 1.5;
3731
+ /* Consistent line height */
3741
3732
  }
3742
3733
 
3743
3734
  .dndev-code-line-number {
3744
- line-height: inherit; /* Inherit from parent */
3735
+ line-height: inherit;
3736
+ /* Inherit from parent */
3745
3737
  }
3746
3738
 
3747
3739
  .dndev-code-code {
@@ -3749,8 +3741,10 @@ em {
3749
3741
  min-width: 0;
3750
3742
  text-align: start;
3751
3743
  display: block;
3752
- line-height: 1.5; /* Match line numbers */
3753
- font-size: var(--font-size-sm); /* Explicit match with line numbers */
3744
+ line-height: 1.5;
3745
+ /* Match line numbers */
3746
+ font-size: var(--font-size-sm);
3747
+ /* Explicit match with line numbers */
3754
3748
  }
3755
3749
 
3756
3750
  /* Ensure shiki-generated code respects line-height AND font-size */
@@ -3758,7 +3752,8 @@ em {
3758
3752
  .dndev-code-code pre,
3759
3753
  .dndev-code-code code {
3760
3754
  line-height: inherit;
3761
- font-size: inherit; /* Match parent font-size */
3755
+ font-size: inherit;
3756
+ /* Match parent font-size */
3762
3757
  }
3763
3758
 
3764
3759
  /* packages/components/src/atomic/Command/Command.css */
@@ -7539,6 +7534,10 @@ input[type='number'] {
7539
7534
  font-weight: var(--font-weight-bold);
7540
7535
  }
7541
7536
 
7537
+ .dndev-text-base[data-italic] {
7538
+ font-style: italic;
7539
+ }
7540
+
7542
7541
  /* packages/components/src/atomic/Toaster/Toaster.css */
7543
7542
 
7544
7543
  .dndev-toast-viewport {
@@ -7738,8 +7737,9 @@ input[type='number'] {
7738
7737
 
7739
7738
  .dndev-toggle-group {
7740
7739
  display: inline-flex;
7740
+ flex-wrap: wrap;
7741
7741
  align-items: center;
7742
- gap: 0;
7742
+ gap: var(--gap-sm);
7743
7743
  padding: 0.125rem;
7744
7744
  border-radius: var(--radius-interactive);
7745
7745
  background-color: var(--muted);
@@ -7935,12 +7935,16 @@ input[type='number'] {
7935
7935
 
7936
7936
  .dndev-video-dialog {
7937
7937
  max-width: 90vw;
7938
- max-height: 90vh;
7939
7938
  }
7940
7939
 
7941
7940
  .dndev-video-dialog .dndev-modal-body {
7942
7941
  padding: 0;
7942
+ overflow: hidden;
7943
+ }
7944
+
7945
+ .dndev-video-dialog .dndev-video-frame {
7943
7946
  aspect-ratio: 16/9;
7947
+ max-height: calc(90vh - 5rem);
7944
7948
  }
7945
7949
 
7946
7950
  /* 6. Animation keyframes */
@@ -9077,9 +9081,16 @@ h4[data-variant='code'] {
9077
9081
  --sidebar-resize-handle-width: 6px;
9078
9082
 
9079
9083
  /* Content width - max constraint only, grid handles sidebar space */
9080
- /* PageContainer sets --max-content-width, main's 1fr handles available space */
9084
+ /* PageContainer sets --max-content-width per variant, components use --content-width */
9085
+ --max-content-width: 100%;
9081
9086
  --content-width: var(--max-content-width, 100%);
9082
9087
 
9088
+ /* Narrow content (mobile-first PWA, app-like single column) - single source of truth */
9089
+ --narrow-content-max: 37.5rem;
9090
+ /* 600px */
9091
+ --narrow-form-max: 30rem;
9092
+ /* 480px - inner form/input width within narrow layout */
9093
+
9083
9094
  /* Content Area Calculations */
9084
9095
  /* Header content area (excludes sidebar on some presets) */
9085
9096
  --header-content-width: 100%;
@@ -9312,52 +9323,74 @@ main[role='main'][data-routing-animation='none'] {
9312
9323
  auto
9313
9324
  );
9314
9325
  grid-template-columns: var(--sidebar-width) 1fr;
9315
-
9316
- /* Mobile: Grid scrolls instead of main - footer scrolls with content */
9317
9326
  }
9318
9327
 
9319
- @media (width <=1023px) {
9320
-
9321
- .dndev-layout {
9322
- overflow-y: auto;
9323
- overflow-x: hidden;
9324
- /* Keep footer row - grid scrolls so footer scrolls with content */
9325
- grid-template-areas:
9326
- 'header header'
9327
- 'sidebar main'
9328
- 'footer footer';
9329
- grid-template-rows: var(--header-height) min-content auto;
9330
- }
9331
- }
9328
+ /* Footer scroll mode: grid scrolls, footer scrolls with content */
9332
9329
 
9333
- /* Footer scroll mode - grid scrolls, footer scrolls with content (opt-in for desktop) */
9330
+ /* Desktop: opt-in via data-footer-mode="scroll" */
9334
9331
 
9335
9332
  .dndev-layout[data-footer-mode='scroll'] {
9336
9333
  overflow-y: auto;
9337
9334
  overflow-x: hidden;
9338
- grid-template-rows: var(--header-height) min-content auto;
9335
+ grid-template-rows: var(--header-height) 1fr auto;
9339
9336
  }
9340
9337
 
9341
9338
  .dndev-layout[data-footer-mode='scroll'] header[role='banner'] {
9342
- position: sticky;
9343
- top: 0;
9344
- }
9339
+ position: sticky;
9340
+ top: 0;
9341
+ }
9342
+
9343
+ .dndev-layout[data-footer-mode='scroll'] aside.sidebar[role='navigation'] {
9344
+ position: sticky;
9345
+ top: var(--header-height);
9346
+ height: calc(100dvh - var(--header-height));
9347
+ align-self: start;
9348
+ }
9345
9349
 
9346
9350
  .dndev-layout[data-footer-mode='scroll'] main[role='main'] {
9347
- overflow: visible;
9348
- min-height: -moz-min-content;
9349
- min-height: min-content;
9350
- }
9351
+ overflow-y: visible;
9352
+ overflow-x: hidden;
9353
+ }
9351
9354
 
9352
9355
  .dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo'] {
9353
- height: auto;
9354
- }
9356
+ grid-column: 2 / -1;
9357
+ height: auto;
9358
+ }
9355
9359
 
9356
9360
  :is(.dndev-layout[data-footer-mode='scroll'] footer[role='contentinfo']) > * {
9357
- height: auto;
9358
- min-height: var(--footer-height);
9361
+ height: auto;
9362
+ min-height: var(--footer-height);
9363
+ }
9364
+
9365
+ /* Mobile: footer scroll mode ON by default (same rules) */
9366
+
9367
+ @media (width <=1023px) {
9368
+ .dndev-layout {
9369
+ overflow-y: auto;
9370
+ overflow-x: hidden;
9371
+ grid-template-rows: var(--header-height) 1fr auto;
9359
9372
  }
9360
9373
 
9374
+ .dndev-layout header[role='banner'] {
9375
+ position: sticky;
9376
+ top: 0;
9377
+ }
9378
+
9379
+ .dndev-layout main[role='main'] {
9380
+ overflow-y: visible;
9381
+ overflow-x: hidden;
9382
+ }
9383
+
9384
+ .dndev-layout footer[role='contentinfo'] {
9385
+ height: auto;
9386
+ }
9387
+
9388
+ :is(.dndev-layout footer[role='contentinfo']) > * {
9389
+ height: auto;
9390
+ min-height: var(--footer-height);
9391
+ }
9392
+ }
9393
+
9361
9394
  /* Presets with no footer at all */
9362
9395
 
9363
9396
  [data-layout='moolti'] footer[role='contentinfo'],
@@ -9722,17 +9755,6 @@ main[role='main'] > *:not(.breadcrumbs-container):first-of-type,main[role='main'
9722
9755
  flex: 1 1 auto;
9723
9756
  }
9724
9757
 
9725
- /* Mobile: Grid scrolls, main doesn't */
9726
-
9727
- @media (width <=1023px) {
9728
-
9729
- main[role='main'] {
9730
- overflow: visible;
9731
- min-height: -moz-min-content;
9732
- min-height: min-content;
9733
- }
9734
- }
9735
-
9736
9758
  /* Footer: Full width by default, app presets start after sidebar */
9737
9759
 
9738
9760
  /* box-sizing: border-box ensures borders are included in height */
@@ -10211,32 +10233,26 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10211
10233
  /* Standard width - responsive */
10212
10234
 
10213
10235
  .dndev-container[data-variant='standard'] {
10214
- --max-content-width: 100%;
10236
+ --max-content-width: min(87.5rem, 100%);
10237
+ max-width: var(--content-width);
10238
+ /* 1480px max, but never exceeds container width */
10215
10239
  }
10216
10240
 
10217
- @media (width >=1024px) {
10218
-
10219
- .dndev-container[data-variant='standard'] {
10220
- --max-content-width: 87.5rem;
10221
- /* 1480px */
10222
- /* Padding stays: part of centering space when max-width applies */
10223
- }
10224
- }
10225
-
10226
10241
  /* Docs width - responsive */
10227
10242
 
10228
10243
  .dndev-container[data-variant='docs'] {
10229
- --max-content-width: 100%;
10244
+ --max-content-width: min(56.25rem, 100%);
10245
+ max-width: var(--content-width);
10246
+ /* 900px max, but never exceeds container width */
10230
10247
  }
10231
10248
 
10232
- @media (width >=1024px) {
10249
+ /* Narrow width - mobile-first single column (PWA, app-like on every device) */
10233
10250
 
10234
- .dndev-container[data-variant='docs'] {
10235
- --max-content-width: 56.25rem;
10236
- /* 900px */
10237
- /* Padding stays: always prevents edge touching */
10251
+ .dndev-container[data-variant='narrow'] {
10252
+ --max-content-width: min(var(--narrow-content-max), 100%);
10253
+ max-width: var(--content-width);
10254
+ /* 600px max, but never exceeds container width */
10238
10255
  }
10239
- }
10240
10256
 
10241
10257
  /* Fixed frame - fills parent exactly, prevents parent scroll */
10242
10258
 
@@ -10326,7 +10342,16 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10326
10342
  width: 100%;
10327
10343
  }
10328
10344
 
10329
- /* 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 */
10330
10355
 
10331
10356
  .dndev-game-container__scroll {
10332
10357
  width: 100%;
@@ -10365,17 +10390,37 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
10365
10390
  justify-content: space-between;
10366
10391
  }
10367
10392
 
10368
- /* CTA Zone - Fixed at bottom */
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. */
10397
+
10398
+ .dndev-game-container__content-narrow {
10399
+ width: 100%;
10400
+ max-width: var(--narrow-content-max);
10401
+ margin-inline: auto;
10402
+ height: 100%;
10403
+ }
10404
+
10405
+ /* CTA Zone - Fixed at bottom; safe area for notched devices */
10369
10406
 
10370
10407
  .dndev-game-container__cta {
10371
10408
  display: flex;
10372
10409
  flex-direction: column;
10373
10410
  padding-top: var(--gap-md);
10411
+ padding-bottom: env(safe-area-inset-bottom);
10374
10412
  border-top: 2px solid var(--border);
10375
10413
  }
10376
10414
 
10377
10415
  /* CTA Button */
10378
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
+
10379
10424
  .dndev-game-container__cta-button {
10380
10425
  height: var(--touch-target);
10381
10426
  width: 100%;