@purpurds/modal 8.4.0 → 8.5.1

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.
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- ._purpur-notification_10qwf_1{display:flex;flex-direction:column;padding:var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-250);box-sizing:border-box;width:100%;background:var(--purpur-color-background-primary);border-radius:var(--purpur-border-radius-md);border:var(--purpur-border-width-sm) solid;border-left:var(--purpur-border-width-lg) solid;gap:var(--purpur-spacing-150);position:relative}._purpur-notification__top_10qwf_14{display:flex;align-items:flex-start;align-self:stretch;justify-content:space-between}._purpur-notification__header_10qwf_20{display:flex;align-items:center;gap:var(--purpur-spacing-100)}._purpur-notification__close-button_10qwf_25{position:absolute;right:calc(var(--purpur-spacing-50) + var(--purpur-spacing-25));top:calc(var(--purpur-spacing-50) + var(--purpur-spacing-25))}._purpur-notification__icon_10qwf_30{flex-shrink:0}._purpur-notification__body_10qwf_33{padding:var(--purpur-spacing-0) var(--purpur-spacing-150) var(--purpur-spacing-50) var(--purpur-spacing-0)}._purpur-notification--success_10qwf_36{border-color:var(--purpur-color-border-status-success)}._purpur-notification--success_10qwf_36 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-success-strong)}._purpur-notification--success_10qwf_36 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-success-medium)}._purpur-notification--warning_10qwf_45{border-color:var(--purpur-color-border-status-warning)}._purpur-notification--warning_10qwf_45 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-warning-strong)}._purpur-notification--warning_10qwf_45 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-warning-medium)}._purpur-notification--error_10qwf_54{border-color:var(--purpur-color-border-status-error)}._purpur-notification--error_10qwf_54 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-error-strong)}._purpur-notification--error_10qwf_54 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-error-medium)}._purpur-notification--info_10qwf_63{border-color:var(--purpur-color-border-status-info)}._purpur-notification--info_10qwf_63 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-info-strong)}._purpur-notification--info_10qwf_63 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-info-medium)}._purpur-notification--hidden_10qwf_72{display:none;visibility:hidden}._purpur-notification--has-close-button_10qwf_76 ._purpur-notification__top_10qwf_14{padding-right:var(--purpur-spacing-400)}._purpur-modal-content_4aird_1{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:auto;background-color:var(--purpur-color-background-primary);animation:_fadeIn_4aird_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out)}._purpur-modal-content_4aird_1:focus{outline:0}@media (min-width: 600px){._purpur-modal-content_4aird_1{inset:unset;top:50%;left:50%;width:720px;max-width:calc(100% - var(--purpur-spacing-300) * 2);min-height:320px;max-height:80%;overflow:hidden;border-radius:var(--purpur-border-radius-lg);box-sizing:border-box;transform:translate(-50%,-50%);box-shadow:var(--purpur-shadow-lg)}}@media (min-width: 600px){._purpur-modal-content__overlay_4aird_30{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--purpur-color-overlay-default);animation:_fadeIn_4aird_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out)}}._purpur-modal-content_4aird_1 ._purpur-modal-content__close-button_4aird_37{position:absolute;top:var(--purpur-spacing-100);z-index:2}@media (min-width: 600px){._purpur-modal-content_4aird_1 ._purpur-modal-content__close-button_4aird_37{top:var(--purpur-spacing-150)}}._purpur-modal-content__wrapper_4aird_47{height:100%;overflow:auto}@media (min-width: 600px){._purpur-modal-content__wrapper_4aird_47{display:flex;flex-direction:column}}._purpur-modal-content__wrapper-inner_4aird_57{display:flex;flex-direction:column}._purpur-modal-content__image-wrapper_4aird_61{position:relative;flex-shrink:0;order:-1;width:100%;aspect-ratio:2/1;overflow:hidden}@media (((min-width: 600px) and (max-width: 649px) and (max-height: 720px)) or ((min-width: 650px) and (max-height: 820px))){._purpur-modal-content__image-wrapper_4aird_61{aspect-ratio:3/1}}._purpur-modal-content__image-wrapper_4aird_61 img{position:absolute;top:50%;left:50%;display:block;width:100%;height:auto;transform:translate(-50%,-50%)}._purpur-modal-content__header_4aird_84{position:sticky;top:0;flex-grow:0;padding:var(--purpur-spacing-200) calc(var(--purpur-spacing-600) + var(--purpur-spacing-150)) 0 var(--purpur-spacing-200);background:var(--purpur-color-background-primary);z-index:1}@media (min-width: 600px){._purpur-modal-content__header_4aird_84{padding:var(--purpur-spacing-250) calc(var(--purpur-spacing-800) + var(--purpur-spacing-50)) 0 var(--purpur-spacing-300)}}._purpur-modal-content__title_4aird_97,._purpur-modal-content__description_4aird_100{margin:0}._purpur-modal-content__body_4aird_103{padding:var(--purpur-spacing-200) var(--purpur-spacing-200) 0}@media (min-width: 600px){._purpur-modal-content__body_4aird_103{padding:var(--purpur-spacing-250) var(--purpur-spacing-300) 0}}._purpur-modal-content__body-inner_4aird_111{position:relative;display:flex;flex-direction:column;gap:var(--purpur-spacing-400);padding-bottom:var(--purpur-spacing-250)}@media (min-width: 600px){._purpur-modal-content__body-inner_4aird_111{padding-bottom:var(--purpur-spacing-300)}}._purpur-modal-content__actions-buttons_4aird_123{display:flex;flex-direction:column;gap:var(--purpur-spacing-200);margin-top:auto}@media (min-width: 600px){._purpur-modal-content__actions-buttons_4aird_123{flex-direction:row-reverse;flex-grow:0}._purpur-modal-content__actions-buttons_4aird_123>*{width:auto}._purpur-modal-content__actions-buttons_4aird_123>*:nth-child(3){margin-right:auto}}._purpur-modal-content__notification_4aird_141{padding-top:var(--purpur-spacing-300)}._purpur-modal-content--with-image_4aird_144:not(._purpur-modal-content--overflow_4aird_144) ._purpur-modal-content__header_4aird_84{padding-top:var(--purpur-spacing-250)}@media (min-width: 600px){._purpur-modal-content--overflow_4aird_144:not(._purpur-modal-content--with-image_4aird_144) ._purpur-modal-content__header_4aird_84{position:relative}._purpur-modal-content--overflow_4aird_144:not(._purpur-modal-content--with-image_4aird_144) ._purpur-modal-content__close-button_4aird_37{top:50%;transform:translateY(-50%)}}._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__header_4aird_84{padding-bottom:var(--purpur-spacing-200);border-bottom:1px solid var(--purpur-color-border-weak)}._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__body_4aird_103{padding-top:var(--purpur-spacing-300)}@media (min-width: 600px){._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__body_4aird_103{padding-top:var(--purpur-spacing-400)}}._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__actions_4aird_123{position:relative}._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__actions-buttons_4aird_123{position:relative;z-index:2}._purpur-modal-content--overflow_4aird_144 ._purpur-modal-content__actions-separator_4aird_175{position:absolute;bottom:calc(100% - 1px);left:0;z-index:1;width:calc(100% - var(--purpur-spacing-300));height:calc(var(--purpur-spacing-400) + var(--purpur-spacing-100));background:linear-gradient(transparent,var(--purpur-color-background-primary));pointer-events:none}._purpur-modal-content--overflow_4aird_144._purpur-modal-content--sticky-footer_4aird_185 ._purpur-modal-content__actions-buttons_4aird_123{border-top:1px solid var(--purpur-color-border-weak)}._purpur-modal-content--sticky-footer_4aird_185{justify-content:space-between}._purpur-modal-content--sticky-footer_4aird_185 ._purpur-modal-content__body-inner_4aird_111{padding-bottom:var(--purpur-spacing-300)}._purpur-modal-content--sticky-footer_4aird_185 ._purpur-modal-content__actions-buttons_4aird_123{padding:var(--purpur-spacing-200)}@media (min-width: 600px){._purpur-modal-content--sticky-footer_4aird_185 ._purpur-modal-content__actions-buttons_4aird_123{padding-left:var(--purpur-spacing-300);padding-right:var(--purpur-spacing-300)}}._purpur-modal-content--sticky-footer_4aird_185 ._purpur-modal-content__notification_4aird_141{padding:var(--purpur-spacing-100) var(--purpur-spacing-300) var(--purpur-spacing-200)}@keyframes _fadeIn_4aird_1{0%{opacity:0}to{opacity:1}}
1
+ ._purpur-notification_10qwf_1{display:flex;flex-direction:column;padding:var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-200) var(--purpur-spacing-250);box-sizing:border-box;width:100%;background:var(--purpur-color-background-primary);border-radius:var(--purpur-border-radius-md);border:var(--purpur-border-width-sm) solid;border-left:var(--purpur-border-width-lg) solid;gap:var(--purpur-spacing-150);position:relative}._purpur-notification__top_10qwf_14{display:flex;align-items:flex-start;align-self:stretch;justify-content:space-between}._purpur-notification__header_10qwf_20{display:flex;align-items:center;gap:var(--purpur-spacing-100)}._purpur-notification__close-button_10qwf_25{position:absolute;right:calc(var(--purpur-spacing-50) + var(--purpur-spacing-25));top:calc(var(--purpur-spacing-50) + var(--purpur-spacing-25))}._purpur-notification__icon_10qwf_30{flex-shrink:0}._purpur-notification__body_10qwf_33{padding:var(--purpur-spacing-0) var(--purpur-spacing-150) var(--purpur-spacing-50) var(--purpur-spacing-0)}._purpur-notification--success_10qwf_36{border-color:var(--purpur-color-border-status-success)}._purpur-notification--success_10qwf_36 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-success-strong)}._purpur-notification--success_10qwf_36 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-success-medium)}._purpur-notification--warning_10qwf_45{border-color:var(--purpur-color-border-status-warning)}._purpur-notification--warning_10qwf_45 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-warning-strong)}._purpur-notification--warning_10qwf_45 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-warning-medium)}._purpur-notification--error_10qwf_54{border-color:var(--purpur-color-border-status-error)}._purpur-notification--error_10qwf_54 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-error-strong)}._purpur-notification--error_10qwf_54 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-error-medium)}._purpur-notification--info_10qwf_63{border-color:var(--purpur-color-border-status-info)}._purpur-notification--info_10qwf_63 ._purpur-notification__heading_10qwf_39{color:var(--purpur-color-text-status-info-strong)}._purpur-notification--info_10qwf_63 ._purpur-notification__icon_10qwf_30{color:var(--purpur-color-text-status-info-medium)}._purpur-notification--hidden_10qwf_72{display:none;visibility:hidden}._purpur-notification--has-close-button_10qwf_76 ._purpur-notification__top_10qwf_14{padding-right:var(--purpur-spacing-400)}._purpur-modal-content_slvdi_1{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:auto;background-color:var(--purpur-color-background-primary)}@media (prefers-reduced-motion: no-preference){._purpur-modal-content_slvdi_1[data-state=open]{opacity:0;animation:_fadeIn_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards}._purpur-modal-content_slvdi_1[data-state=closed]{animation:_fadeOut_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards}}._purpur-modal-content_slvdi_1:focus{outline:0}@media (min-width: 600px){._purpur-modal-content_slvdi_1{inset:unset;top:50%;left:50%;width:720px;max-width:calc(100% - var(--purpur-spacing-300) * 2);min-height:320px;max-height:80%;overflow:hidden;border-radius:var(--purpur-border-radius-lg);box-sizing:border-box;transform:translate(-50%,-50%);box-shadow:var(--purpur-shadow-lg)}}@media (min-width: 600px) and (prefers-reduced-motion: no-preference){._purpur-modal-content_slvdi_1[data-state=open]{opacity:0;transform:translate(-50%,-47%);animation:_fadeIn_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards,_slideUp_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards;animation-delay:var(--purpur-motion-duration-100)}._purpur-modal-content_slvdi_1[data-state=closed]{animation:_fadeOut_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards,_slideDown_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards}}@media (min-width: 600px){._purpur-modal-content__overlay_slvdi_49{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--purpur-color-overlay-default)}}@media (min-width: 600px) and (prefers-reduced-motion: no-preference){._purpur-modal-content__overlay_slvdi_49[data-state=open]{opacity:0;animation:_fadeIn_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards}._purpur-modal-content__overlay_slvdi_49[data-state=closed]{opacity:1;animation:_fadeOut_slvdi_1 var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out) forwards}}._purpur-modal-content_slvdi_1 ._purpur-modal-content__close-button_slvdi_65{position:absolute;top:var(--purpur-spacing-100);z-index:2}@media (min-width: 600px){._purpur-modal-content_slvdi_1 ._purpur-modal-content__close-button_slvdi_65{top:var(--purpur-spacing-150)}}._purpur-modal-content__wrapper_slvdi_75{height:100%;overflow:auto}@media (min-width: 600px){._purpur-modal-content__wrapper_slvdi_75{display:flex;flex-direction:column}}._purpur-modal-content__wrapper-inner_slvdi_85{display:flex;flex-direction:column}._purpur-modal-content__image-wrapper_slvdi_89{position:relative;flex-shrink:0;order:-1;width:100%;aspect-ratio:2/1;overflow:hidden}@media (((min-width: 600px) and (max-width: 649px) and (max-height: 720px)) or ((min-width: 650px) and (max-height: 820px))){._purpur-modal-content__image-wrapper_slvdi_89{aspect-ratio:3/1}}._purpur-modal-content__image-wrapper_slvdi_89 img{position:absolute;top:50%;left:50%;display:block;width:100%;height:auto;transform:translate(-50%,-50%)}._purpur-modal-content__header_slvdi_112{position:sticky;top:0;flex-grow:0;padding:var(--purpur-spacing-200) calc(var(--purpur-spacing-600) + var(--purpur-spacing-150)) 0 var(--purpur-spacing-200);background:var(--purpur-color-background-primary);z-index:1}@media (min-width: 600px){._purpur-modal-content__header_slvdi_112{padding:var(--purpur-spacing-250) calc(var(--purpur-spacing-800) + var(--purpur-spacing-50)) 0 var(--purpur-spacing-300)}}._purpur-modal-content__title_slvdi_125,._purpur-modal-content__description_slvdi_128{margin:0}._purpur-modal-content__body_slvdi_131{padding:var(--purpur-spacing-200) var(--purpur-spacing-200) 0}@media (min-width: 600px){._purpur-modal-content__body_slvdi_131{padding:var(--purpur-spacing-250) var(--purpur-spacing-300) 0}}._purpur-modal-content__body-inner_slvdi_139{position:relative;display:flex;flex-direction:column;gap:var(--purpur-spacing-400);padding-bottom:var(--purpur-spacing-250)}@media (min-width: 600px){._purpur-modal-content__body-inner_slvdi_139{padding-bottom:var(--purpur-spacing-300)}}._purpur-modal-content__actions-buttons_slvdi_151{display:flex;flex-direction:column;gap:var(--purpur-spacing-200);margin-top:auto}@media (min-width: 600px){._purpur-modal-content__actions-buttons_slvdi_151{flex-direction:row-reverse;flex-grow:0}._purpur-modal-content__actions-buttons_slvdi_151>*{width:auto}._purpur-modal-content__actions-buttons_slvdi_151>*:nth-child(3){margin-right:auto}}._purpur-modal-content__notification_slvdi_169{padding-top:var(--purpur-spacing-300)}._purpur-modal-content--with-image_slvdi_172:not(._purpur-modal-content--overflow_slvdi_172) ._purpur-modal-content__header_slvdi_112{padding-top:var(--purpur-spacing-250)}@media (min-width: 600px){._purpur-modal-content--overflow_slvdi_172:not(._purpur-modal-content--with-image_slvdi_172) ._purpur-modal-content__header_slvdi_112{position:relative}._purpur-modal-content--overflow_slvdi_172:not(._purpur-modal-content--with-image_slvdi_172) ._purpur-modal-content__close-button_slvdi_65{top:50%;transform:translateY(-50%)}}._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__header_slvdi_112{padding-bottom:var(--purpur-spacing-200);border-bottom:1px solid var(--purpur-color-border-weak)}._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__body_slvdi_131{padding-top:var(--purpur-spacing-300)}@media (min-width: 600px){._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__body_slvdi_131{padding-top:var(--purpur-spacing-400)}}._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__actions_slvdi_151{position:relative}._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__actions-buttons_slvdi_151{position:relative;z-index:2}._purpur-modal-content--overflow_slvdi_172 ._purpur-modal-content__actions-separator_slvdi_203{position:absolute;bottom:calc(100% - 1px);left:0;z-index:1;width:calc(100% - var(--purpur-spacing-300));height:calc(var(--purpur-spacing-400) + var(--purpur-spacing-100));background:linear-gradient(transparent,var(--purpur-color-background-primary));pointer-events:none}._purpur-modal-content--overflow_slvdi_172._purpur-modal-content--sticky-footer_slvdi_213 ._purpur-modal-content__actions-buttons_slvdi_151{border-top:1px solid var(--purpur-color-border-weak)}._purpur-modal-content--sticky-footer_slvdi_213{justify-content:space-between}._purpur-modal-content--sticky-footer_slvdi_213 ._purpur-modal-content__body-inner_slvdi_139{padding-bottom:var(--purpur-spacing-300)}._purpur-modal-content--sticky-footer_slvdi_213 ._purpur-modal-content__actions-buttons_slvdi_151{padding:var(--purpur-spacing-200)}@media (min-width: 600px){._purpur-modal-content--sticky-footer_slvdi_213 ._purpur-modal-content__actions-buttons_slvdi_151{padding-left:var(--purpur-spacing-300);padding-right:var(--purpur-spacing-300)}}._purpur-modal-content--sticky-footer_slvdi_213 ._purpur-modal-content__notification_slvdi_169{padding:var(--purpur-spacing-100) var(--purpur-spacing-300) var(--purpur-spacing-200)}@keyframes _fadeIn_slvdi_1{0%{opacity:0}to{opacity:1}}@keyframes _fadeOut_slvdi_1{0%{opacity:1}to{opacity:0}}@keyframes _slideUp_slvdi_1{0%{transform:translate(-50%,-47%)}to{transform:translate(-50%,-50%)}}@keyframes _slideDown_slvdi_1{0%{transform:translate(-50%,-50%)}to{transform:translate(-50%,-47%)}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpurds/modal",
3
- "version": "8.4.0",
3
+ "version": "8.5.1",
4
4
  "license": "AGPL-3.0-only",
5
5
  "main": "./dist/modal.cjs.js",
6
6
  "types": "./dist/modal.d.ts",
@@ -17,15 +17,15 @@
17
17
  "dependencies": {
18
18
  "@radix-ui/react-dialog": "~1.1.6",
19
19
  "classnames": "~2.5.0",
20
- "@purpurds/common-types": "8.4.0",
21
- "@purpurds/heading": "8.4.0",
22
- "@purpurds/icon": "8.4.0",
23
- "@purpurds/button": "8.4.0",
24
- "@purpurds/notification": "8.4.0",
25
- "@purpurds/paragraph": "8.4.0",
26
- "@purpurds/visually-hidden": "8.4.0",
27
- "@purpurds/text-spacing": "8.4.0",
28
- "@purpurds/tokens": "8.4.0"
20
+ "@purpurds/button": "8.5.1",
21
+ "@purpurds/icon": "8.5.1",
22
+ "@purpurds/heading": "8.5.1",
23
+ "@purpurds/common-types": "8.5.1",
24
+ "@purpurds/notification": "8.5.1",
25
+ "@purpurds/paragraph": "8.5.1",
26
+ "@purpurds/text-spacing": "8.5.1",
27
+ "@purpurds/tokens": "8.5.1",
28
+ "@purpurds/visually-hidden": "8.5.1"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@storybook/react-vite": "^9.0.18",
@@ -1,17 +1,27 @@
1
1
  @use "@purpurds/tokens/breakpoint/variables" as *;
2
2
 
3
- $fadeIn: fadeIn var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out);
3
+ $animation-settings: var(--purpur-motion-duration-200) var(--purpur-motion-easing-ease-in-out)
4
+ forwards;
4
5
 
5
6
  .purpur-modal-content {
6
7
  $root: &;
7
-
8
8
  position: fixed;
9
9
  inset: 0;
10
10
  display: flex;
11
11
  flex-direction: column;
12
12
  overflow: auto;
13
13
  background-color: var(--purpur-color-background-primary);
14
- animation: $fadeIn;
14
+
15
+ @media (prefers-reduced-motion: no-preference) {
16
+ &[data-state="open"] {
17
+ opacity: 0;
18
+ animation: fadeIn $animation-settings;
19
+ }
20
+
21
+ &[data-state="closed"] {
22
+ animation: fadeOut $animation-settings;
23
+ }
24
+ }
15
25
 
16
26
  &:focus {
17
27
  outline: 0;
@@ -30,6 +40,19 @@ $fadeIn: fadeIn var(--purpur-motion-duration-200) var(--purpur-motion-easing-eas
30
40
  box-sizing: border-box;
31
41
  transform: translate(-50%, -50%);
32
42
  box-shadow: var(--purpur-shadow-lg);
43
+
44
+ @media (prefers-reduced-motion: no-preference) {
45
+ &[data-state="open"] {
46
+ opacity: 0;
47
+ transform: translate(-50%, -47%);
48
+ animation: fadeIn $animation-settings, slideUp $animation-settings;
49
+ animation-delay: var(--purpur-motion-duration-100);
50
+ }
51
+
52
+ &[data-state="closed"] {
53
+ animation: fadeOut $animation-settings, slideDown $animation-settings;
54
+ }
55
+ }
33
56
  }
34
57
 
35
58
  &__overlay {
@@ -37,7 +60,18 @@ $fadeIn: fadeIn var(--purpur-motion-duration-200) var(--purpur-motion-easing-eas
37
60
  position: fixed;
38
61
  inset: 0;
39
62
  background: var(--purpur-color-overlay-default);
40
- animation: $fadeIn;
63
+
64
+ @media (prefers-reduced-motion: no-preference) {
65
+ &[data-state="open"] {
66
+ opacity: 0;
67
+ animation: fadeIn $animation-settings;
68
+ }
69
+
70
+ &[data-state="closed"] {
71
+ opacity: 1;
72
+ animation: fadeOut $animation-settings;
73
+ }
74
+ }
41
75
  }
42
76
  }
43
77
 
@@ -244,3 +278,33 @@ $fadeIn: fadeIn var(--purpur-motion-duration-200) var(--purpur-motion-easing-eas
244
278
  opacity: 1;
245
279
  }
246
280
  }
281
+
282
+ @keyframes fadeOut {
283
+ from {
284
+ opacity: 1;
285
+ }
286
+
287
+ to {
288
+ opacity: 0;
289
+ }
290
+ }
291
+
292
+ @keyframes slideUp {
293
+ from {
294
+ transform: translate(-50%, -47%);
295
+ }
296
+
297
+ to {
298
+ transform: translate(-50%, -50%);
299
+ }
300
+ }
301
+
302
+ @keyframes slideDown {
303
+ from {
304
+ transform: translate(-50%, -50%);
305
+ }
306
+
307
+ to {
308
+ transform: translate(-50%, -47%);
309
+ }
310
+ }