@pure-ds/core 0.6.6 → 0.6.8

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.
@@ -3274,10 +3274,12 @@ tbody {
3274
3274
  /* Dialog base styles */
3275
3275
  dialog {
3276
3276
  position: fixed;
3277
- inset: 0;
3277
+ left: 50%;
3278
+ top: 50%;
3279
+ width: min(600px, calc(100vw - var(--spacing-8)));
3278
3280
  max-width: min(600px, calc(100vw - var(--spacing-8)));
3279
- max-height: calc(100vh - var(--spacing-8));
3280
- margin: auto;
3281
+ max-height: calc(100dvh - var(--spacing-8));
3282
+ margin: 0;
3281
3283
  padding: 0;
3282
3284
  border: none;
3283
3285
  border-radius: var(--radius-lg);
@@ -3289,7 +3291,7 @@ dialog {
3289
3291
 
3290
3292
  /* Smooth transitions */
3291
3293
  opacity: 0;
3292
- transform: scale(0.95);
3294
+ transform: translate(-50%, -50%) scale(0.95);
3293
3295
  transition:
3294
3296
  opacity var(--transition-normal) ease,
3295
3297
  transform var(--transition-normal) ease;
@@ -3300,21 +3302,37 @@ dialog {
3300
3302
  /* Open state */
3301
3303
  dialog[open] {
3302
3304
  opacity: 1;
3303
- transform: scale(1);
3305
+ transform: translate(-50%, -50%) scale(1);
3304
3306
  animation: pds-dialog-enter var(--transition-normal) ease;
3305
3307
  }
3306
3308
 
3307
3309
  @keyframes pds-dialog-enter {
3308
3310
  from {
3309
3311
  opacity: 0;
3310
- transform: scale(0.95);
3312
+ transform: translate(-50%, -50%) scale(0.95);
3311
3313
  }
3312
3314
  to {
3313
3315
  opacity: 1;
3314
- transform: scale(1);
3316
+ transform: translate(-50%, -50%) scale(1);
3315
3317
  }
3316
3318
  }
3317
3319
 
3320
+ /* Safari fallback: disable scale animation to avoid dialog clipping bugs */
3321
+ dialog.dialog-no-scale-animation {
3322
+ transform: translate(-50%, -50%);
3323
+ transition: opacity var(--transition-normal) ease;
3324
+ }
3325
+
3326
+ dialog.dialog-no-scale-animation[open] {
3327
+ transform: translate(-50%, -50%);
3328
+ animation: pds-dialog-fade-enter var(--transition-normal) ease;
3329
+ }
3330
+
3331
+ @keyframes pds-dialog-fade-enter {
3332
+ from { opacity: 0; }
3333
+ to { opacity: 1; }
3334
+ }
3335
+
3318
3336
  /* Backdrop styling */
3319
3337
  dialog::backdrop {
3320
3338
  background: var(--backdrop-bg);
@@ -3427,19 +3445,60 @@ dialog {
3427
3445
  }
3428
3446
 
3429
3447
  /* Dialog size modifiers */
3430
- dialog.dialog-sm { max-width: min(400px, calc(100vw - var(--spacing-8))); }
3431
- dialog.dialog-lg { max-width: min(800px, calc(100vw - var(--spacing-8))); }
3432
- dialog.dialog-xl { max-width: min(1200px, calc(100vw - var(--spacing-8))); }
3433
- dialog.dialog-full { max-width: calc(100vw - var(--spacing-8)); max-height: calc(100vh - var(--spacing-8)); }
3448
+ dialog.dialog-sm { width: min(400px, calc(100vw - var(--spacing-8))); max-width: min(400px, calc(100vw - var(--spacing-8))); }
3449
+ dialog.dialog-lg { width: min(800px, calc(100vw - var(--spacing-8))); max-width: min(800px, calc(100vw - var(--spacing-8))); }
3450
+ dialog.dialog-xl { width: min(1200px, calc(100vw - var(--spacing-8))); max-width: min(1200px, calc(100vw - var(--spacing-8))); }
3451
+ dialog.dialog-full { width: calc(100vw - var(--spacing-8)); max-width: calc(100vw - var(--spacing-8)); max-height: calc(100dvh - var(--spacing-8)); }
3434
3452
 
3435
3453
  /* Mobile responsiveness - maximize on mobile */
3436
3454
  @media (max-width: ${breakpoints.sm - 1}px) {
3455
+ dialog,
3456
+ dialog.dialog-no-scale-animation,
3457
+ dialog.dialog-no-scale-animation[open] {
3458
+ left: 0 !important;
3459
+ top: 0 !important;
3460
+ }
3461
+
3462
+ dialog.dialog-no-scale-animation,
3463
+ dialog.dialog-no-scale-animation[open] {
3464
+ transform: none !important;
3465
+ }
3466
+
3467
+ dialog[open] {
3468
+ left: 0 !important;
3469
+ top: 0 !important;
3470
+ }
3471
+
3437
3472
  dialog {
3438
3473
  max-width: 100vw;
3439
- max-height: 100vh;
3440
- --dialog-max-height: 100vh; /* Override custom maxHeight on mobile */
3474
+ width: 100vw;
3475
+ height: 100dvh;
3476
+ max-height: 100dvh;
3477
+ --dialog-max-height: 100dvh; /* Override custom maxHeight on mobile */
3441
3478
  border-radius: 0;
3442
- margin: 0;
3479
+ margin: 0;
3480
+ transform: scale(0.98);
3481
+ }
3482
+ dialog[open] {
3483
+ transform: scale(1);
3484
+ animation: pds-dialog-enter-mobile var(--transition-normal) ease;
3485
+ }
3486
+
3487
+ dialog.dialog-no-scale-animation {
3488
+ transition: opacity var(--transition-normal) ease;
3489
+ }
3490
+ dialog.dialog-no-scale-animation[open] {
3491
+ animation: pds-dialog-fade-enter var(--transition-normal) ease;
3492
+ }
3493
+ @keyframes pds-dialog-enter-mobile {
3494
+ from {
3495
+ opacity: 0;
3496
+ transform: scale(0.98);
3497
+ }
3498
+ to {
3499
+ opacity: 1;
3500
+ transform: scale(1);
3501
+ }
3443
3502
  }
3444
3503
  dialog header, dialog form > header, dialog article, dialog form > article, dialog footer, dialog form > footer { padding: var(--spacing-4); }
3445
3504
  }
@@ -3802,9 +3861,12 @@ nav[data-dropdown] {
3802
3861
  }
3803
3862
  }
3804
3863
 
3805
- &[data-mode="auto"] > :last-child {
3864
+ &[data-mode="auto"]:not([data-dropdown-direction]) > :last-child {
3806
3865
  top: 100%;
3807
3866
  bottom: auto;
3867
+ margin-top: var(--spacing-2);
3868
+ margin-bottom: 0;
3869
+ transform-origin: top center;
3808
3870
  }
3809
3871
 
3810
3872
  @media (prefers-reduced-motion: reduce) {