@dnanpm/ui-components 0.6.0 → 0.8.0

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 (205) hide show
  1. package/dist/components/AccordionItem/AccordionItem.css +16 -16
  2. package/dist/components/AccordionItem/AccordionItem.module.css.cjs +11 -11
  3. package/dist/components/AccordionItem/AccordionItem.module.css.js +11 -11
  4. package/dist/components/Breadcrumb/Breadcrumb.css +9 -9
  5. package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +6 -6
  6. package/dist/components/Breadcrumb/Breadcrumb.module.css.js +6 -6
  7. package/dist/components/Button/Button.css +32 -30
  8. package/dist/components/Button/Button.module.css.cjs +11 -11
  9. package/dist/components/Button/Button.module.css.js +11 -11
  10. package/dist/components/ButtonCard/ButtonCard.cjs +105 -0
  11. package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -0
  12. package/dist/components/ButtonCard/ButtonCard.css +167 -0
  13. package/dist/components/ButtonCard/ButtonCard.d.ts +3 -0
  14. package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -0
  15. package/dist/components/ButtonCard/ButtonCard.js +105 -0
  16. package/dist/components/ButtonCard/ButtonCard.js.map +1 -0
  17. package/dist/components/ButtonCard/ButtonCard.module.css.cjs +18 -0
  18. package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -0
  19. package/dist/components/ButtonCard/ButtonCard.module.css.js +19 -0
  20. package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -0
  21. package/dist/components/ButtonCard/ButtonCard.types.d.ts +103 -0
  22. package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -0
  23. package/dist/components/ButtonCard/index.d.ts +3 -0
  24. package/dist/components/ButtonCard/index.d.ts.map +1 -0
  25. package/dist/components/Drawer/Drawer.cjs +101 -0
  26. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  27. package/dist/components/Drawer/Drawer.css +219 -0
  28. package/dist/components/Drawer/Drawer.d.ts +3 -0
  29. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  30. package/dist/components/Drawer/Drawer.js +101 -0
  31. package/dist/components/Drawer/Drawer.js.map +1 -0
  32. package/dist/components/Drawer/Drawer.module.css.cjs +37 -0
  33. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
  34. package/dist/components/Drawer/Drawer.module.css.js +37 -0
  35. package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
  36. package/dist/components/Drawer/Drawer.types.d.ts +63 -0
  37. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  38. package/dist/components/Drawer/index.d.ts +3 -0
  39. package/dist/components/Drawer/index.d.ts.map +1 -0
  40. package/dist/components/Footer/Footer.cjs +272 -0
  41. package/dist/components/Footer/Footer.cjs.map +1 -0
  42. package/dist/components/Footer/Footer.css +473 -0
  43. package/dist/components/Footer/Footer.d.ts +3 -0
  44. package/dist/components/Footer/Footer.d.ts.map +1 -0
  45. package/dist/components/Footer/Footer.js +272 -0
  46. package/dist/components/Footer/Footer.js.map +1 -0
  47. package/dist/components/Footer/Footer.module.css.cjs +80 -0
  48. package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
  49. package/dist/components/Footer/Footer.module.css.js +80 -0
  50. package/dist/components/Footer/Footer.module.css.js.map +1 -0
  51. package/dist/components/Footer/Footer.types.d.ts +128 -0
  52. package/dist/components/Footer/Footer.types.d.ts.map +1 -0
  53. package/dist/components/Footer/Footer.utils.cjs +41 -0
  54. package/dist/components/Footer/Footer.utils.cjs.map +1 -0
  55. package/dist/components/Footer/Footer.utils.d.ts +13 -0
  56. package/dist/components/Footer/Footer.utils.d.ts.map +1 -0
  57. package/dist/components/Footer/Footer.utils.js +41 -0
  58. package/dist/components/Footer/Footer.utils.js.map +1 -0
  59. package/dist/components/Footer/assets/app-store-badge.svg.cjs +4 -0
  60. package/dist/components/Footer/assets/app-store-badge.svg.cjs.map +1 -0
  61. package/dist/components/Footer/assets/app-store-badge.svg.js +5 -0
  62. package/dist/components/Footer/assets/app-store-badge.svg.js.map +1 -0
  63. package/dist/components/Footer/assets/google-play-badge.svg.cjs +4 -0
  64. package/dist/components/Footer/assets/google-play-badge.svg.cjs.map +1 -0
  65. package/dist/components/Footer/assets/google-play-badge.svg.js +5 -0
  66. package/dist/components/Footer/assets/google-play-badge.svg.js.map +1 -0
  67. package/dist/components/Footer/index.d.ts +3 -0
  68. package/dist/components/Footer/index.d.ts.map +1 -0
  69. package/dist/components/FunctionButton/FunctionButton.cjs +34 -0
  70. package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -0
  71. package/dist/components/FunctionButton/FunctionButton.css +125 -0
  72. package/dist/components/FunctionButton/FunctionButton.d.ts +3 -0
  73. package/dist/components/FunctionButton/FunctionButton.d.ts.map +1 -0
  74. package/dist/components/FunctionButton/FunctionButton.js +34 -0
  75. package/dist/components/FunctionButton/FunctionButton.js.map +1 -0
  76. package/dist/components/FunctionButton/FunctionButton.module.css.cjs +11 -0
  77. package/dist/components/FunctionButton/FunctionButton.module.css.cjs.map +1 -0
  78. package/dist/components/FunctionButton/FunctionButton.module.css.js +12 -0
  79. package/dist/components/FunctionButton/FunctionButton.module.css.js.map +1 -0
  80. package/dist/components/FunctionButton/FunctionButton.types.d.ts +21 -0
  81. package/dist/components/FunctionButton/FunctionButton.types.d.ts.map +1 -0
  82. package/dist/components/FunctionButton/index.d.ts +3 -0
  83. package/dist/components/FunctionButton/index.d.ts.map +1 -0
  84. package/dist/components/Hero/Hero.cjs +44 -30
  85. package/dist/components/Hero/Hero.cjs.map +1 -1
  86. package/dist/components/Hero/Hero.css +89 -100
  87. package/dist/components/Hero/Hero.d.ts +1 -1
  88. package/dist/components/Hero/Hero.d.ts.map +1 -1
  89. package/dist/components/Hero/Hero.js +45 -31
  90. package/dist/components/Hero/Hero.js.map +1 -1
  91. package/dist/components/Hero/Hero.module.css.cjs +17 -20
  92. package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
  93. package/dist/components/Hero/Hero.module.css.js +17 -20
  94. package/dist/components/Hero/Hero.module.css.js.map +1 -1
  95. package/dist/components/Hero/Hero.types.d.ts +8 -3
  96. package/dist/components/Hero/Hero.types.d.ts.map +1 -1
  97. package/dist/components/Hero/Hero.utils.cjs +5 -8
  98. package/dist/components/Hero/Hero.utils.cjs.map +1 -1
  99. package/dist/components/Hero/Hero.utils.d.ts +2 -2
  100. package/dist/components/Hero/Hero.utils.d.ts.map +1 -1
  101. package/dist/components/Hero/Hero.utils.js +5 -8
  102. package/dist/components/Hero/Hero.utils.js.map +1 -1
  103. package/dist/components/IconButton/IconButton.css +31 -32
  104. package/dist/components/IconButton/IconButton.module.css.cjs +9 -9
  105. package/dist/components/IconButton/IconButton.module.css.js +9 -9
  106. package/dist/components/MainNavigation/MainNavigation.cjs +1094 -0
  107. package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -0
  108. package/dist/components/MainNavigation/MainNavigation.css +948 -0
  109. package/dist/components/MainNavigation/MainNavigation.d.ts +3 -0
  110. package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -0
  111. package/dist/components/MainNavigation/MainNavigation.js +1094 -0
  112. package/dist/components/MainNavigation/MainNavigation.js.map +1 -0
  113. package/dist/components/MainNavigation/MainNavigation.module.css.cjs +74 -0
  114. package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -0
  115. package/dist/components/MainNavigation/MainNavigation.module.css.js +75 -0
  116. package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -0
  117. package/dist/components/MainNavigation/MainNavigation.types.d.ts +149 -0
  118. package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -0
  119. package/dist/components/MainNavigation/MainNavigation.utils.cjs +168 -0
  120. package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -0
  121. package/dist/components/MainNavigation/MainNavigation.utils.d.ts +29 -0
  122. package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -0
  123. package/dist/components/MainNavigation/MainNavigation.utils.js +168 -0
  124. package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -0
  125. package/dist/components/MainNavigation/index.d.ts +3 -0
  126. package/dist/components/MainNavigation/index.d.ts.map +1 -0
  127. package/dist/components/Modal/Modal.cjs +101 -0
  128. package/dist/components/Modal/Modal.cjs.map +1 -0
  129. package/dist/components/Modal/Modal.css +205 -0
  130. package/dist/components/Modal/Modal.d.ts +3 -0
  131. package/dist/components/Modal/Modal.d.ts.map +1 -0
  132. package/dist/components/Modal/Modal.js +101 -0
  133. package/dist/components/Modal/Modal.js.map +1 -0
  134. package/dist/components/Modal/Modal.module.css.cjs +39 -0
  135. package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
  136. package/dist/components/Modal/Modal.module.css.js +39 -0
  137. package/dist/components/Modal/Modal.module.css.js.map +1 -0
  138. package/dist/components/Modal/Modal.types.d.ts +62 -0
  139. package/dist/components/Modal/Modal.types.d.ts.map +1 -0
  140. package/dist/components/Modal/index.d.ts +3 -0
  141. package/dist/components/Modal/index.d.ts.map +1 -0
  142. package/dist/components/Modal/useDialogDismissal.cjs +41 -0
  143. package/dist/components/Modal/useDialogDismissal.cjs.map +1 -0
  144. package/dist/components/Modal/useDialogDismissal.d.ts +17 -0
  145. package/dist/components/Modal/useDialogDismissal.d.ts.map +1 -0
  146. package/dist/components/Modal/useDialogDismissal.js +41 -0
  147. package/dist/components/Modal/useDialogDismissal.js.map +1 -0
  148. package/dist/components/Modal/useNativeDialog.cjs +126 -0
  149. package/dist/components/Modal/useNativeDialog.cjs.map +1 -0
  150. package/dist/components/Modal/useNativeDialog.d.ts +14 -0
  151. package/dist/components/Modal/useNativeDialog.d.ts.map +1 -0
  152. package/dist/components/Modal/useNativeDialog.js +126 -0
  153. package/dist/components/Modal/useNativeDialog.js.map +1 -0
  154. package/dist/components/Pictograph/Pictograph.css +69 -57
  155. package/dist/components/Pictograph/Pictograph.module.css.cjs +11 -11
  156. package/dist/components/Pictograph/Pictograph.module.css.js +11 -11
  157. package/dist/components/Pictograph/Pictograph.types.d.ts +2 -2
  158. package/dist/components/Pictograph/PictographItem.cjs +15 -4
  159. package/dist/components/Pictograph/PictographItem.cjs.map +1 -1
  160. package/dist/components/Pictograph/PictographItem.css +26 -23
  161. package/dist/components/Pictograph/PictographItem.d.ts.map +1 -1
  162. package/dist/components/Pictograph/PictographItem.js +15 -4
  163. package/dist/components/Pictograph/PictographItem.js.map +1 -1
  164. package/dist/components/Pictograph/PictographItem.module.css.cjs +3 -3
  165. package/dist/components/Pictograph/PictographItem.module.css.js +3 -3
  166. package/dist/components/Quote/Quote.cjs +32 -0
  167. package/dist/components/Quote/Quote.cjs.map +1 -0
  168. package/dist/components/Quote/Quote.css +95 -0
  169. package/dist/components/Quote/Quote.d.ts +3 -0
  170. package/dist/components/Quote/Quote.d.ts.map +1 -0
  171. package/dist/components/Quote/Quote.js +32 -0
  172. package/dist/components/Quote/Quote.js.map +1 -0
  173. package/dist/components/Quote/Quote.module.css.cjs +22 -0
  174. package/dist/components/Quote/Quote.module.css.cjs.map +1 -0
  175. package/dist/components/Quote/Quote.module.css.js +22 -0
  176. package/dist/components/Quote/Quote.module.css.js.map +1 -0
  177. package/dist/components/Quote/Quote.types.d.ts +12 -0
  178. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  179. package/dist/components/Quote/index.d.ts +3 -0
  180. package/dist/components/Quote/index.d.ts.map +1 -0
  181. package/dist/index.cjs +14 -0
  182. package/dist/index.cjs.map +1 -1
  183. package/dist/index.d.ts +14 -0
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +14 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/styles/utils/elevation.module.css.cjs +3 -0
  188. package/dist/styles/utils/elevation.module.css.cjs.map +1 -1
  189. package/dist/styles/utils/elevation.module.css.js +4 -1
  190. package/dist/styles/utils/elevation.module.css.js.map +1 -1
  191. package/dist/styles/utils/focus.css +21 -13
  192. package/dist/styles/utils/focus.module.css.cjs +3 -3
  193. package/dist/styles/utils/focus.module.css.js +3 -3
  194. package/dist/styles/utils/overlay.css +37 -0
  195. package/dist/styles/utils/overlay.module.css.cjs +13 -0
  196. package/dist/styles/utils/overlay.module.css.cjs.map +1 -0
  197. package/dist/styles/utils/overlay.module.css.js +13 -0
  198. package/dist/styles/utils/overlay.module.css.js.map +1 -0
  199. package/dist/styles/utils/text-decoration.css +9 -1
  200. package/dist/styles/utils/text-decoration.module.css.cjs +5 -2
  201. package/dist/styles/utils/text-decoration.module.css.cjs.map +1 -1
  202. package/dist/styles/utils/text-decoration.module.css.js +6 -3
  203. package/dist/styles/utils/text-decoration.module.css.js.map +1 -1
  204. package/dist/styles.css +24 -7
  205. package/package.json +4 -3
@@ -0,0 +1,205 @@
1
+ @layer dds-components {._modal_ewl1e_1 {
2
+ --_modal-transition-duration-open: 400ms;
3
+ --_modal-transition-duration-close: 200ms;
4
+ display: flex;
5
+ flex-direction: column;
6
+ width: min(90vw, 768px);
7
+ max-width: calc(100vw - var(--spacing-space-40));
8
+ min-height: 33.333dvh;
9
+ max-height: 90dvh;
10
+ margin: auto;
11
+ padding: 0;
12
+ border: none;
13
+ border-radius: var(--radius-semantic-md);
14
+ background: var(--color-semantic-surface-base);
15
+ color: var(--color-semantic-foreground-default);
16
+ font: var(--typography-body-md);
17
+ opacity: 1;
18
+ transition: opacity var(--_modal-transition-duration-close) ease;
19
+ }
20
+
21
+ ._modal--align-top_ewl1e_21 {
22
+ margin-block: 5dvh auto;
23
+ }
24
+
25
+ ._modal_ewl1e_1:not([open]) {
26
+ display: none;
27
+ }
28
+
29
+ ._modal_ewl1e_1::backdrop {
30
+ background: var(--color-semantic-utility-overlay-strong);
31
+ opacity: 0;
32
+ transition-property: opacity, overlay;
33
+ transition-duration: var(--_modal-transition-duration-close);
34
+ transition-timing-function: ease;
35
+ transition-behavior: allow-discrete;
36
+ }
37
+
38
+ ._modal--small_ewl1e_38 {
39
+ width: 480px;
40
+ min-height: auto;
41
+ }
42
+ ._modal--medium_ewl1e_42 {
43
+ width: 768px;
44
+ }
45
+ ._modal--large_ewl1e_45 {
46
+ width: 960px;
47
+ }
48
+
49
+ ._modal--opening_ewl1e_49 {
50
+ animation: _modal-open_ewl1e_1 var(--_modal-transition-duration-open) ease both;
51
+ }
52
+ ._modal--closing_ewl1e_52 {
53
+ animation: _modal-close_ewl1e_1 var(--_modal-transition-duration-close) ease both;
54
+ }
55
+ ._modal--opening_ewl1e_49::backdrop {
56
+ opacity: 1;
57
+ transition-duration: var(--_modal-transition-duration-open);
58
+ }
59
+ ._modal--closing_ewl1e_52::backdrop {
60
+ opacity: 0;
61
+ transition-duration: var(--_modal-transition-duration-close);
62
+ }
63
+
64
+ ._modal__container_ewl1e_64 {
65
+ display: flex;
66
+ min-height: 0;
67
+ flex: 1 1 auto;
68
+ flex-direction: column;
69
+ overflow: auto;
70
+ }
71
+
72
+ ._modal--fixed-title_ewl1e_72 ._modal__container_ewl1e_64 {
73
+ overflow: hidden;
74
+ }
75
+
76
+ ._modal__title_ewl1e_76 {
77
+ display: flex;
78
+ flex: 0 0 auto;
79
+ flex-direction: column;
80
+ gap: var(--spacing-space-4);
81
+ padding: var(--spacing-space-20) var(--spacing-space-40) var(--spacing-space-20)
82
+ var(--spacing-space-20);
83
+ background: var(--color-semantic-surface-base);
84
+ }
85
+
86
+ ._modal__heading_ewl1e_86 {
87
+ margin: 0;
88
+ font: var(--typography-heading-md);
89
+ }
90
+
91
+ ._modal--small_ewl1e_38 ._modal__heading_ewl1e_86 {
92
+ font: var(--typography-heading-sm);
93
+ }
94
+ ._modal__description_ewl1e_94 {
95
+ margin: 0;
96
+ }
97
+
98
+ ._modal__content_ewl1e_98 {
99
+ flex: 1 1 auto;
100
+ padding: var(--spacing-space-20);
101
+ overflow-wrap: anywhere;
102
+ }
103
+
104
+ ._modal--fixed-title_ewl1e_72 ._modal__content_ewl1e_98 {
105
+ overflow: auto;
106
+ }
107
+ ._modal__container_ewl1e_64:not(:has(._modal__title_ewl1e_76)) ._modal__content_ewl1e_98 {
108
+ padding-top: var(--spacing-space-40);
109
+ }
110
+
111
+ ._modal__close_ewl1e_111 {
112
+ position: absolute;
113
+ z-index: 1;
114
+ top: 0;
115
+ right: 0;
116
+ display: grid;
117
+ width: 40px;
118
+ height: 40px;
119
+ place-items: center;
120
+ padding: 0;
121
+ border: none;
122
+ border-bottom-left-radius: var(--radius-semantic-md);
123
+ background: var(--color-semantic-surface-neutral-mid);
124
+ color: var(--color-semantic-foreground-secondary-strong);
125
+ cursor: pointer;
126
+ }
127
+
128
+ ._modal__close_ewl1e_111 svg {
129
+ width: 24px;
130
+ height: 24px;
131
+ }
132
+ ._modal__bottom-bar_ewl1e_132 {
133
+ flex: 0 0 auto;
134
+ padding: var(--spacing-space-8) var(--spacing-space-20) var(--spacing-space-20);
135
+ }
136
+
137
+ ._modal--dark_ewl1e_137 ._modal__title_ewl1e_76 {
138
+ background: var(--color-semantic-surface-secondary-strong);
139
+ color: var(--color-semantic-foreground-inverse);
140
+ }
141
+
142
+ ._modal--dark_ewl1e_137 ._modal__close_ewl1e_111 {
143
+ background: var(--color-semantic-surface-secondary-mid);
144
+ color: var(--color-semantic-foreground-inverse);
145
+ }
146
+
147
+ @keyframes _modal-open_ewl1e_1 {
148
+ from {
149
+ opacity: 0;
150
+ }
151
+ to {
152
+ opacity: 1;
153
+ }
154
+ }
155
+ @keyframes _modal-close_ewl1e_1 {
156
+ from {
157
+ opacity: 1;
158
+ }
159
+ to {
160
+ opacity: 0;
161
+ }
162
+ }
163
+
164
+ ._modal--opening_ewl1e_49::backdrop {
165
+ @starting-style {
166
+ opacity: 0;
167
+ }
168
+ }
169
+
170
+ @media (max-width: 359px) {
171
+ ._modal_ewl1e_1 {
172
+ width: 100vw;
173
+ max-width: 100vw;
174
+ height: 100dvh;
175
+ max-height: 100dvh;
176
+ border-radius: 0;
177
+ }
178
+ }
179
+
180
+ @media (prefers-reduced-motion: reduce) {
181
+ ._modal_ewl1e_1,
182
+ ._modal--opening_ewl1e_49,
183
+ ._modal--closing_ewl1e_52,
184
+ ._modal_ewl1e_1::backdrop {
185
+ animation: none;
186
+ transition: none;
187
+ }
188
+ }
189
+
190
+ @media (forced-colors: active) {
191
+ ._modal_ewl1e_1 {
192
+ border: 2px solid CanvasText;
193
+ box-shadow: none;
194
+ }
195
+ ._modal_ewl1e_1::backdrop {
196
+ background: Canvas;
197
+ opacity: 0.7;
198
+ }
199
+ ._modal__close_ewl1e_111 {
200
+ border: 1px solid ButtonBorder;
201
+ background: ButtonFace;
202
+ color: ButtonText;
203
+ }
204
+ }
205
+ }
@@ -0,0 +1,3 @@
1
+ import { ModalProps } from './Modal.types';
2
+ export declare const Modal: ({ open, onOpenChange, title, description, children, footer, size, headerStyle, fixedTitle, alignToTop, disableCloseOptions, closeLabel, keepMounted, className, ref, onKeyDown, onClick, onPointerDown, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: ModalProps) => import("react/jsx-runtime").JSX.Element | null;
3
+ //# sourceMappingURL=Modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,KAAK,GAAI,qTAuBnB,UAAU,mDA4EZ,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useId } from "react";
3
+ import { Close } from "@dnanpm/icons";
4
+ import elevationStyles from "../../styles/utils/elevation.module.css.js";
5
+ import focusStyles from "../../styles/utils/focus.module.css.js";
6
+ import styles from "./Modal.module.css.js";
7
+ import { useDialogDismissal } from "./useDialogDismissal.js";
8
+ import { useNativeDialog } from "./useNativeDialog.js";
9
+ import { cn } from "../../utils/cn/cn.js";
10
+ const Modal = ({
11
+ open,
12
+ onOpenChange,
13
+ title,
14
+ description,
15
+ children,
16
+ footer,
17
+ size = "medium",
18
+ headerStyle = "light",
19
+ fixedTitle = false,
20
+ alignToTop = false,
21
+ disableCloseOptions = false,
22
+ closeLabel = "Sulje dialogi",
23
+ keepMounted = false,
24
+ className,
25
+ ref,
26
+ onKeyDown,
27
+ onClick,
28
+ onPointerDown,
29
+ "aria-label": ariaLabel,
30
+ "aria-labelledby": ariaLabelledBy,
31
+ "aria-describedby": ariaDescribedBy,
32
+ ...props
33
+ }) => {
34
+ const titleId = useId();
35
+ const descriptionId = useId();
36
+ const { dialogRef, close, phase, isPresent } = useNativeDialog({
37
+ open: open ?? false,
38
+ keepMounted,
39
+ onOpenChange
40
+ });
41
+ const describedBy = [description ? descriptionId : void 0, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
42
+ const dialogDismissalProps = useDialogDismissal({
43
+ close,
44
+ disableCloseOptions,
45
+ onClick,
46
+ onKeyDown,
47
+ onPointerDown
48
+ });
49
+ if (!isPresent) return null;
50
+ return /* @__PURE__ */ jsxs(
51
+ "dialog",
52
+ {
53
+ ...props,
54
+ ref: (node) => {
55
+ dialogRef.current = node;
56
+ if (typeof ref === "function") ref(node);
57
+ else if (ref) ref.current = node;
58
+ },
59
+ className: cn(
60
+ styles.modal,
61
+ elevationStyles.elevationHigh,
62
+ styles[`modal--${size}`],
63
+ styles[`modal--${headerStyle}`],
64
+ { [styles["modal--fixed-title"]]: fixedTitle },
65
+ { [styles["modal--align-top"]]: alignToTop },
66
+ { [styles["modal--opening"]]: phase !== "closing" },
67
+ { [styles["modal--closing"]]: phase === "closing" },
68
+ className
69
+ ),
70
+ "aria-label": ariaLabel,
71
+ "aria-labelledby": ariaLabelledBy ?? (!ariaLabel && title ? titleId : void 0),
72
+ "aria-describedby": describedBy,
73
+ ...dialogDismissalProps,
74
+ children: [
75
+ /* @__PURE__ */ jsxs("div", { className: styles.modal__container, children: [
76
+ !disableCloseOptions && /* @__PURE__ */ jsx(
77
+ "button",
78
+ {
79
+ type: "button",
80
+ className: cn(styles.modal__close, focusStyles.focusable),
81
+ "aria-label": closeLabel,
82
+ "data-dialog-autofocus": "true",
83
+ onClick: close,
84
+ children: /* @__PURE__ */ jsx(Close, { "aria-hidden": "true" })
85
+ }
86
+ ),
87
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: styles.modal__title, children: [
88
+ title && /* @__PURE__ */ jsx("h2", { id: titleId, className: styles.modal__heading, children: title }),
89
+ description && /* @__PURE__ */ jsx("div", { id: descriptionId, className: styles.modal__description, children: description })
90
+ ] }),
91
+ /* @__PURE__ */ jsx("div", { className: styles.modal__content, children })
92
+ ] }),
93
+ footer && /* @__PURE__ */ jsx("div", { className: styles["modal__bottom-bar"], children: footer })
94
+ ]
95
+ }
96
+ );
97
+ };
98
+ export {
99
+ Modal
100
+ };
101
+ //# sourceMappingURL=Modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import { useId } from 'react';\nimport { Close } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport elevationStyles from '../../styles/utils/elevation.module.css';\nimport focusStyles from '../../styles/utils/focus.module.css';\nimport styles from './Modal.module.css';\nimport { useDialogDismissal } from './useDialogDismissal';\nimport { useNativeDialog } from './useNativeDialog';\nimport type { ModalProps } from './Modal.types';\n\nexport const Modal = ({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n size = 'medium',\n headerStyle = 'light',\n fixedTitle = false,\n alignToTop = false,\n disableCloseOptions = false,\n closeLabel = 'Sulje dialogi',\n keepMounted = false,\n className,\n ref,\n onKeyDown,\n onClick,\n onPointerDown,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: ModalProps) => {\n const titleId = useId();\n const descriptionId = useId();\n const { dialogRef, close, phase, isPresent } = useNativeDialog({\n open: open ?? false,\n keepMounted,\n onOpenChange,\n });\n const describedBy =\n [description ? descriptionId : undefined, ariaDescribedBy].filter(Boolean).join(' ') ||\n undefined;\n const dialogDismissalProps = useDialogDismissal({\n close,\n disableCloseOptions,\n onClick,\n onKeyDown,\n onPointerDown,\n });\n\n if (!isPresent) return null;\n\n return (\n <dialog\n {...props}\n ref={(node) => {\n dialogRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cn(\n styles.modal,\n elevationStyles.elevationHigh,\n styles[`modal--${size}`],\n styles[`modal--${headerStyle}`],\n { [styles['modal--fixed-title']]: fixedTitle },\n { [styles['modal--align-top']]: alignToTop },\n { [styles['modal--opening']]: phase !== 'closing' },\n { [styles['modal--closing']]: phase === 'closing' },\n className,\n )}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy ?? (!ariaLabel && title ? titleId : undefined)}\n aria-describedby={describedBy}\n {...dialogDismissalProps}\n >\n <div className={styles.modal__container}>\n {!disableCloseOptions && (\n <button\n type=\"button\"\n className={cn(styles.modal__close, focusStyles.focusable)}\n aria-label={closeLabel}\n data-dialog-autofocus=\"true\"\n onClick={close}\n >\n <Close aria-hidden=\"true\" />\n </button>\n )}\n {(title || description) && (\n <div className={styles.modal__title}>\n {title && (\n <h2 id={titleId} className={styles.modal__heading}>\n {title}\n </h2>\n )}\n {description && (\n <div id={descriptionId} className={styles.modal__description}>\n {description}\n </div>\n )}\n </div>\n )}\n <div className={styles.modal__content}>{children}</div>\n </div>\n {footer && <div className={styles['modal__bottom-bar']}>{footer}</div>}\n </dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAUO,MAAM,QAAQ,CAAC;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,GAAG;AACP,MAAkB;AACd,QAAM,UAAU,MAAA;AAChB,QAAM,gBAAgB,MAAA;AACtB,QAAM,EAAE,WAAW,OAAO,OAAO,UAAA,IAAc,gBAAgB;AAAA,IAC3D,MAAM,QAAQ;AAAA,IACd;AAAA,IACA;AAAA,EAAA,CACH;AACD,QAAM,cACF,CAAC,cAAc,gBAAgB,QAAW,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KACnF;AACJ,QAAM,uBAAuB,mBAAmB;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACH;AAED,MAAI,CAAC,UAAW,QAAO;AAEvB,SACI;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ,KAAK,CAAC,SAAS;AACX,kBAAU,UAAU;AACpB,YAAI,OAAO,QAAQ,WAAY,KAAI,IAAI;AAAA,iBAC9B,SAAS,UAAU;AAAA,MAChC;AAAA,MACA,WAAW;AAAA,QACP,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,OAAO,UAAU,IAAI,EAAE;AAAA,QACvB,OAAO,UAAU,WAAW,EAAE;AAAA,QAC9B,EAAE,CAAC,OAAO,oBAAoB,CAAC,GAAG,WAAA;AAAA,QAClC,EAAE,CAAC,OAAO,kBAAkB,CAAC,GAAG,WAAA;AAAA,QAChC,EAAE,CAAC,OAAO,gBAAgB,CAAC,GAAG,UAAU,UAAA;AAAA,QACxC,EAAE,CAAC,OAAO,gBAAgB,CAAC,GAAG,UAAU,UAAA;AAAA,QACxC;AAAA,MAAA;AAAA,MAEJ,cAAY;AAAA,MACZ,mBAAiB,mBAAmB,CAAC,aAAa,QAAQ,UAAU;AAAA,MACpE,oBAAkB;AAAA,MACjB,GAAG;AAAA,MAEJ,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAW,OAAO,kBAClB,UAAA;AAAA,UAAA,CAAC,uBACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,WAAW,GAAG,OAAO,cAAc,YAAY,SAAS;AAAA,cACxD,cAAY;AAAA,cACZ,yBAAsB;AAAA,cACtB,SAAS;AAAA,cAET,UAAA,oBAAC,OAAA,EAAM,eAAY,OAAA,CAAO;AAAA,YAAA;AAAA,UAAA;AAAA,WAGhC,SAAS,gBACP,qBAAC,OAAA,EAAI,WAAW,OAAO,cAClB,UAAA;AAAA,YAAA,6BACI,MAAA,EAAG,IAAI,SAAS,WAAW,OAAO,gBAC9B,UAAA,MAAA,CACL;AAAA,YAEH,mCACI,OAAA,EAAI,IAAI,eAAe,WAAW,OAAO,oBACrC,UAAA,YAAA,CACL;AAAA,UAAA,GAER;AAAA,UAEJ,oBAAC,OAAA,EAAI,WAAW,OAAO,gBAAiB,SAAA,CAAS;AAAA,QAAA,GACrD;AAAA,QACC,UAAU,oBAAC,OAAA,EAAI,WAAW,OAAO,mBAAmB,GAAI,UAAA,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG5E;"}
@@ -0,0 +1,39 @@
1
+ require('./Modal.css');
2
+ "use strict";
3
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
+ const modal = "_modal_ewl1e_1";
5
+ const modal__container = "_modal__container_ewl1e_64";
6
+ const modal__title = "_modal__title_ewl1e_76";
7
+ const modal__heading = "_modal__heading_ewl1e_86";
8
+ const modal__description = "_modal__description_ewl1e_94";
9
+ const modal__content = "_modal__content_ewl1e_98";
10
+ const modal__close = "_modal__close_ewl1e_111";
11
+ const styles = {
12
+ modal,
13
+ "modal--align-top": "_modal--align-top_ewl1e_21",
14
+ "modal--small": "_modal--small_ewl1e_38",
15
+ "modal--medium": "_modal--medium_ewl1e_42",
16
+ "modal--large": "_modal--large_ewl1e_45",
17
+ "modal--opening": "_modal--opening_ewl1e_49",
18
+ "modal-open": "_modal-open_ewl1e_1",
19
+ "modal--closing": "_modal--closing_ewl1e_52",
20
+ "modal-close": "_modal-close_ewl1e_1",
21
+ modal__container,
22
+ "modal--fixed-title": "_modal--fixed-title_ewl1e_72",
23
+ modal__title,
24
+ modal__heading,
25
+ modal__description,
26
+ modal__content,
27
+ modal__close,
28
+ "modal__bottom-bar": "_modal__bottom-bar_ewl1e_132",
29
+ "modal--dark": "_modal--dark_ewl1e_137"
30
+ };
31
+ exports.default = styles;
32
+ exports.modal = modal;
33
+ exports.modal__close = modal__close;
34
+ exports.modal__container = modal__container;
35
+ exports.modal__content = modal__content;
36
+ exports.modal__description = modal__description;
37
+ exports.modal__heading = modal__heading;
38
+ exports.modal__title = modal__title;
39
+ //# sourceMappingURL=Modal.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,39 @@
1
+ import './Modal.css';
2
+ const modal = "_modal_ewl1e_1";
3
+ const modal__container = "_modal__container_ewl1e_64";
4
+ const modal__title = "_modal__title_ewl1e_76";
5
+ const modal__heading = "_modal__heading_ewl1e_86";
6
+ const modal__description = "_modal__description_ewl1e_94";
7
+ const modal__content = "_modal__content_ewl1e_98";
8
+ const modal__close = "_modal__close_ewl1e_111";
9
+ const styles = {
10
+ modal,
11
+ "modal--align-top": "_modal--align-top_ewl1e_21",
12
+ "modal--small": "_modal--small_ewl1e_38",
13
+ "modal--medium": "_modal--medium_ewl1e_42",
14
+ "modal--large": "_modal--large_ewl1e_45",
15
+ "modal--opening": "_modal--opening_ewl1e_49",
16
+ "modal-open": "_modal-open_ewl1e_1",
17
+ "modal--closing": "_modal--closing_ewl1e_52",
18
+ "modal-close": "_modal-close_ewl1e_1",
19
+ modal__container,
20
+ "modal--fixed-title": "_modal--fixed-title_ewl1e_72",
21
+ modal__title,
22
+ modal__heading,
23
+ modal__description,
24
+ modal__content,
25
+ modal__close,
26
+ "modal__bottom-bar": "_modal__bottom-bar_ewl1e_132",
27
+ "modal--dark": "_modal--dark_ewl1e_137"
28
+ };
29
+ export {
30
+ styles as default,
31
+ modal,
32
+ modal__close,
33
+ modal__container,
34
+ modal__content,
35
+ modal__description,
36
+ modal__heading,
37
+ modal__title
38
+ };
39
+ //# sourceMappingURL=Modal.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,62 @@
1
+ import { ComponentPropsWithRef, ReactNode } from 'react';
2
+ export type ModalSize = 'small' | 'medium' | 'large';
3
+ export type ModalHeaderStyle = 'light' | 'dark';
4
+ type ModalAccessibleName = {
5
+ readonly title: ReactNode;
6
+ readonly 'aria-label'?: string;
7
+ readonly 'aria-labelledby'?: never;
8
+ } | {
9
+ readonly title: ReactNode;
10
+ readonly 'aria-label'?: never;
11
+ readonly 'aria-labelledby': string;
12
+ } | {
13
+ readonly title: ReactNode;
14
+ readonly 'aria-label'?: never;
15
+ readonly 'aria-labelledby'?: never;
16
+ } | {
17
+ readonly title?: never;
18
+ readonly 'aria-label': string;
19
+ readonly 'aria-labelledby'?: never;
20
+ } | {
21
+ readonly title?: never;
22
+ readonly 'aria-label'?: never;
23
+ readonly 'aria-labelledby': string;
24
+ };
25
+ export type ModalProps = Omit<ComponentPropsWithRef<'dialog'>, 'children' | 'open' | 'onClose' | 'onCancel' | 'aria-label' | 'aria-labelledby' | 'title'> & ModalAccessibleName & {
26
+ /**
27
+ * Controls whether the dialog is open. The dialog unmounts after its close animation unless
28
+ * `keepMounted` is true.
29
+ * `undefined` is treated as closed. @default false
30
+ */
31
+ readonly open?: boolean;
32
+ /**
33
+ * Keeps the closed dialog and its descendants mounted, preserving their React state and effects.
34
+ * @default false
35
+ */
36
+ readonly keepMounted?: boolean;
37
+ /** Called with false when the user requests closing. Opening and closing are controlled by `open`. */
38
+ readonly onOpenChange?: (open: boolean) => void;
39
+ /** Supporting text displayed below the heading. */
40
+ readonly description?: ReactNode;
41
+ /** Content displayed in the dialog body. */
42
+ readonly children: ReactNode;
43
+ /** Optional content displayed in the bottom action bar. */
44
+ readonly footer?: ReactNode;
45
+ /** Dialog width. */
46
+ readonly size?: ModalSize;
47
+ /** Visual style of the header and close button. */
48
+ readonly headerStyle?: ModalHeaderStyle;
49
+ /** Keeps the header fixed while the body scrolls. @default false */
50
+ readonly fixedTitle?: boolean;
51
+ /** Aligns the dialog to the top instead of vertically centering it. @default false */
52
+ readonly alignToTop?: boolean;
53
+ /**
54
+ * Disables the close button, backdrop click, and Escape key. Provide an action that sets
55
+ * `open` to false when this is enabled. @default false
56
+ */
57
+ readonly disableCloseOptions?: boolean;
58
+ /** Accessible label for the close button. @default 'Sulje dialogi' */
59
+ readonly closeLabel?: string;
60
+ };
61
+ export {};
62
+ //# sourceMappingURL=Modal.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.types.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/Modal.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEhD,KAAK,mBAAmB,GAClB;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;CACtC,GACD;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACtC,GACD;IACI,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;CACtC,GACD;IACI,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;CACtC,GACD;IACI,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACtC,CAAC;AAER,MAAM,MAAM,UAAU,GAAG,IAAI,CACzB,qBAAqB,CAAC,QAAQ,CAAC,EAC/B,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,iBAAiB,GAAG,OAAO,CAC5F,GACG,mBAAmB,GAAG;IAClB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,sGAAsG;IACtG,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,mDAAmD;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Modal } from './Modal';
2
+ export type { ModalHeaderStyle, ModalProps, ModalSize } from './Modal.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const useDialogDismissal = ({
5
+ close,
6
+ disableCloseOptions,
7
+ onClick,
8
+ onKeyDown,
9
+ onPointerDown
10
+ }) => {
11
+ const backdropPointerDownRef = react.useRef(false);
12
+ return {
13
+ onCancel: (event) => {
14
+ event.preventDefault();
15
+ backdropPointerDownRef.current = false;
16
+ if (!disableCloseOptions) close();
17
+ },
18
+ onKeyDownCapture: (event) => {
19
+ if (event.key === "Escape") {
20
+ backdropPointerDownRef.current = false;
21
+ if (disableCloseOptions) event.preventDefault();
22
+ }
23
+ },
24
+ onKeyDown: (event) => {
25
+ onKeyDown?.(event);
26
+ },
27
+ onPointerDown: (event) => {
28
+ backdropPointerDownRef.current = event.target === event.currentTarget;
29
+ onPointerDown?.(event);
30
+ },
31
+ onClick: (event) => {
32
+ onClick?.(event);
33
+ if (!disableCloseOptions && event.target === event.currentTarget) close();
34
+ setTimeout(() => {
35
+ backdropPointerDownRef.current = false;
36
+ }, 0);
37
+ }
38
+ };
39
+ };
40
+ exports.useDialogDismissal = useDialogDismissal;
41
+ //# sourceMappingURL=useDialogDismissal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDialogDismissal.cjs","sources":["../../../src/components/Modal/useDialogDismissal.ts"],"sourcesContent":["import { useRef } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\n\ninterface UseDialogDismissalOptions {\n close: () => void;\n disableCloseOptions: boolean;\n onClick?: ComponentPropsWithRef<'dialog'>['onClick'];\n onKeyDown?: ComponentPropsWithRef<'dialog'>['onKeyDown'];\n onPointerDown?: ComponentPropsWithRef<'dialog'>['onPointerDown'];\n}\n\nexport const useDialogDismissal = ({\n close,\n disableCloseOptions,\n onClick,\n onKeyDown,\n onPointerDown,\n}: UseDialogDismissalOptions) => {\n const backdropPointerDownRef = useRef(false);\n\n return {\n onCancel: (event: React.SyntheticEvent<HTMLDialogElement>) => {\n event.preventDefault();\n backdropPointerDownRef.current = false;\n if (!disableCloseOptions) close();\n },\n onKeyDownCapture: (event: React.KeyboardEvent<HTMLDialogElement>) => {\n if (event.key === 'Escape') {\n backdropPointerDownRef.current = false;\n if (disableCloseOptions) event.preventDefault();\n }\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(event);\n },\n onPointerDown: (event: React.PointerEvent<HTMLDialogElement>) => {\n backdropPointerDownRef.current = event.target === event.currentTarget;\n onPointerDown?.(event);\n },\n onClick: (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (!disableCloseOptions && event.target === event.currentTarget) close();\n setTimeout(() => {\n backdropPointerDownRef.current = false;\n }, 0);\n },\n };\n};\n"],"names":["useRef"],"mappings":";;;AAWO,MAAM,qBAAqB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAiC;AAC7B,QAAM,yBAAyBA,MAAAA,OAAO,KAAK;AAE3C,SAAO;AAAA,IACH,UAAU,CAAC,UAAmD;AAC1D,YAAM,eAAA;AACN,6BAAuB,UAAU;AACjC,UAAI,CAAC,oBAAqB,OAAA;AAAA,IAC9B;AAAA,IACA,kBAAkB,CAAC,UAAkD;AACjE,UAAI,MAAM,QAAQ,UAAU;AACxB,+BAAuB,UAAU;AACjC,YAAI,2BAA2B,eAAA;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,WAAW,CAAC,UAAkD;AAC1D,kBAAY,KAAK;AAAA,IACrB;AAAA,IACA,eAAe,CAAC,UAAiD;AAC7D,6BAAuB,UAAU,MAAM,WAAW,MAAM;AACxD,sBAAgB,KAAK;AAAA,IACzB;AAAA,IACA,SAAS,CAAC,UAA+C;AACrD,gBAAU,KAAK;AACf,UAAI,CAAC,uBAAuB,MAAM,WAAW,MAAM,cAAe,OAAA;AAClE,iBAAW,MAAM;AACb,+BAAuB,UAAU;AAAA,MACrC,GAAG,CAAC;AAAA,IACR;AAAA,EAAA;AAER;;"}
@@ -0,0 +1,17 @@
1
+ import { ComponentPropsWithRef } from 'react';
2
+ interface UseDialogDismissalOptions {
3
+ close: () => void;
4
+ disableCloseOptions: boolean;
5
+ onClick?: ComponentPropsWithRef<'dialog'>['onClick'];
6
+ onKeyDown?: ComponentPropsWithRef<'dialog'>['onKeyDown'];
7
+ onPointerDown?: ComponentPropsWithRef<'dialog'>['onPointerDown'];
8
+ }
9
+ export declare const useDialogDismissal: ({ close, disableCloseOptions, onClick, onKeyDown, onPointerDown, }: UseDialogDismissalOptions) => {
10
+ onCancel: (event: React.SyntheticEvent<HTMLDialogElement>) => void;
11
+ onKeyDownCapture: (event: React.KeyboardEvent<HTMLDialogElement>) => void;
12
+ onKeyDown: (event: React.KeyboardEvent<HTMLDialogElement>) => void;
13
+ onPointerDown: (event: React.PointerEvent<HTMLDialogElement>) => void;
14
+ onClick: (event: React.MouseEvent<HTMLDialogElement>) => void;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=useDialogDismissal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDialogDismissal.d.ts","sourceRoot":"","sources":["../../../src/components/Modal/useDialogDismissal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,UAAU,yBAAyB;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;IACzD,aAAa,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,kBAAkB,GAAI,oEAMhC,yBAAyB;sBAIF,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC;8BAK/B,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC;uBAM7C,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC;2BAGlC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;qBAI3C,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC;CAQ3D,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { useRef } from "react";
2
+ const useDialogDismissal = ({
3
+ close,
4
+ disableCloseOptions,
5
+ onClick,
6
+ onKeyDown,
7
+ onPointerDown
8
+ }) => {
9
+ const backdropPointerDownRef = useRef(false);
10
+ return {
11
+ onCancel: (event) => {
12
+ event.preventDefault();
13
+ backdropPointerDownRef.current = false;
14
+ if (!disableCloseOptions) close();
15
+ },
16
+ onKeyDownCapture: (event) => {
17
+ if (event.key === "Escape") {
18
+ backdropPointerDownRef.current = false;
19
+ if (disableCloseOptions) event.preventDefault();
20
+ }
21
+ },
22
+ onKeyDown: (event) => {
23
+ onKeyDown?.(event);
24
+ },
25
+ onPointerDown: (event) => {
26
+ backdropPointerDownRef.current = event.target === event.currentTarget;
27
+ onPointerDown?.(event);
28
+ },
29
+ onClick: (event) => {
30
+ onClick?.(event);
31
+ if (!disableCloseOptions && event.target === event.currentTarget) close();
32
+ setTimeout(() => {
33
+ backdropPointerDownRef.current = false;
34
+ }, 0);
35
+ }
36
+ };
37
+ };
38
+ export {
39
+ useDialogDismissal
40
+ };
41
+ //# sourceMappingURL=useDialogDismissal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDialogDismissal.js","sources":["../../../src/components/Modal/useDialogDismissal.ts"],"sourcesContent":["import { useRef } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\n\ninterface UseDialogDismissalOptions {\n close: () => void;\n disableCloseOptions: boolean;\n onClick?: ComponentPropsWithRef<'dialog'>['onClick'];\n onKeyDown?: ComponentPropsWithRef<'dialog'>['onKeyDown'];\n onPointerDown?: ComponentPropsWithRef<'dialog'>['onPointerDown'];\n}\n\nexport const useDialogDismissal = ({\n close,\n disableCloseOptions,\n onClick,\n onKeyDown,\n onPointerDown,\n}: UseDialogDismissalOptions) => {\n const backdropPointerDownRef = useRef(false);\n\n return {\n onCancel: (event: React.SyntheticEvent<HTMLDialogElement>) => {\n event.preventDefault();\n backdropPointerDownRef.current = false;\n if (!disableCloseOptions) close();\n },\n onKeyDownCapture: (event: React.KeyboardEvent<HTMLDialogElement>) => {\n if (event.key === 'Escape') {\n backdropPointerDownRef.current = false;\n if (disableCloseOptions) event.preventDefault();\n }\n },\n onKeyDown: (event: React.KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(event);\n },\n onPointerDown: (event: React.PointerEvent<HTMLDialogElement>) => {\n backdropPointerDownRef.current = event.target === event.currentTarget;\n onPointerDown?.(event);\n },\n onClick: (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (!disableCloseOptions && event.target === event.currentTarget) close();\n setTimeout(() => {\n backdropPointerDownRef.current = false;\n }, 0);\n },\n };\n};\n"],"names":[],"mappings":";AAWO,MAAM,qBAAqB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAiC;AAC7B,QAAM,yBAAyB,OAAO,KAAK;AAE3C,SAAO;AAAA,IACH,UAAU,CAAC,UAAmD;AAC1D,YAAM,eAAA;AACN,6BAAuB,UAAU;AACjC,UAAI,CAAC,oBAAqB,OAAA;AAAA,IAC9B;AAAA,IACA,kBAAkB,CAAC,UAAkD;AACjE,UAAI,MAAM,QAAQ,UAAU;AACxB,+BAAuB,UAAU;AACjC,YAAI,2BAA2B,eAAA;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,WAAW,CAAC,UAAkD;AAC1D,kBAAY,KAAK;AAAA,IACrB;AAAA,IACA,eAAe,CAAC,UAAiD;AAC7D,6BAAuB,UAAU,MAAM,WAAW,MAAM;AACxD,sBAAgB,KAAK;AAAA,IACzB;AAAA,IACA,SAAS,CAAC,UAA+C;AACrD,gBAAU,KAAK;AACf,UAAI,CAAC,uBAAuB,MAAM,WAAW,MAAM,cAAe,OAAA;AAClE,iBAAW,MAAM;AACb,+BAAuB,UAAU;AAAA,MACrC,GAAG,CAAC;AAAA,IACR;AAAA,EAAA;AAER;"}