@sondor-technology/sondor-components 1.0.0 → 1.0.1-develop.10

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 (168) hide show
  1. package/README.md +8 -0
  2. package/dist/components/alert/alert.d.ts +13 -0
  3. package/dist/components/alert/alert.d.ts.map +1 -0
  4. package/dist/components/alert/alert.js +105 -0
  5. package/dist/components/badge/badge.d.ts +13 -0
  6. package/dist/components/badge/badge.d.ts.map +1 -0
  7. package/dist/components/badge/badge.js +101 -0
  8. package/dist/components/breadcrumb/breadcrumb.d.ts +19 -0
  9. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  10. package/dist/components/breadcrumb/breadcrumb.js +99 -0
  11. package/dist/components/button/button.d.ts +23 -0
  12. package/dist/components/button/button.d.ts.map +1 -0
  13. package/dist/components/button/button.js +304 -0
  14. package/dist/components/button-group/button-group.d.ts +6 -0
  15. package/dist/components/button-group/button-group.d.ts.map +1 -0
  16. package/dist/components/button-group/button-group.js +74 -0
  17. package/dist/components/card/card.d.ts +11 -0
  18. package/dist/components/card/card.d.ts.map +1 -0
  19. package/dist/components/card/card.js +54 -0
  20. package/dist/components/checkbox/checkbox.d.ts +31 -0
  21. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  22. package/dist/components/checkbox/checkbox.js +265 -0
  23. package/dist/components/code-block/code-block.d.ts +20 -0
  24. package/dist/components/code-block/code-block.d.ts.map +1 -0
  25. package/dist/components/code-block/code-block.js +260 -0
  26. package/dist/components/content-card/content-card.d.ts +13 -0
  27. package/dist/components/content-card/content-card.d.ts.map +1 -0
  28. package/dist/components/content-card/content-card.js +140 -0
  29. package/dist/components/divider/divider.d.ts +16 -0
  30. package/dist/components/divider/divider.d.ts.map +1 -0
  31. package/dist/components/divider/divider.js +82 -0
  32. package/dist/components/drawer/drawer.d.ts +22 -0
  33. package/dist/components/drawer/drawer.d.ts.map +1 -0
  34. package/dist/components/drawer/drawer.js +226 -0
  35. package/dist/components/field/field.d.ts +11 -0
  36. package/dist/components/field/field.d.ts.map +1 -0
  37. package/dist/components/field/field.js +32 -0
  38. package/dist/components/footer/footer.d.ts +6 -0
  39. package/dist/components/footer/footer.d.ts.map +1 -0
  40. package/dist/components/footer/footer.js +65 -0
  41. package/dist/components/form/form-step.d.ts +13 -0
  42. package/dist/components/form/form-step.d.ts.map +1 -0
  43. package/dist/components/form/form-step.js +41 -0
  44. package/dist/components/form/form.d.ts +25 -0
  45. package/dist/components/form/form.d.ts.map +1 -0
  46. package/dist/components/form/form.js +364 -0
  47. package/dist/components/grid/grid-row.d.ts +17 -0
  48. package/dist/components/grid/grid-row.d.ts.map +1 -0
  49. package/dist/components/grid/grid-row.js +92 -0
  50. package/dist/components/grid/grid.d.ts +13 -0
  51. package/dist/components/grid/grid.d.ts.map +1 -0
  52. package/dist/components/grid/grid.js +42 -0
  53. package/dist/components/icon/icon-paths.d.ts +132 -0
  54. package/dist/components/icon/icon-paths.d.ts.map +1 -0
  55. package/dist/components/icon/icon-paths.js +137 -0
  56. package/dist/components/icon/icon.d.ts +17 -0
  57. package/dist/components/icon/icon.d.ts.map +1 -0
  58. package/dist/components/icon/icon.js +95 -0
  59. package/dist/components/input/input.d.ts +31 -0
  60. package/dist/components/input/input.d.ts.map +1 -0
  61. package/dist/components/input/input.js +268 -0
  62. package/dist/components/link/link.d.ts +16 -0
  63. package/dist/components/link/link.d.ts.map +1 -0
  64. package/dist/components/link/link.js +116 -0
  65. package/dist/components/metadata/metadata.d.ts +18 -0
  66. package/dist/components/metadata/metadata.d.ts.map +1 -0
  67. package/dist/components/metadata/metadata.js +71 -0
  68. package/dist/components/modal/modal.d.ts +35 -0
  69. package/dist/components/modal/modal.d.ts.map +1 -0
  70. package/dist/components/modal/modal.js +251 -0
  71. package/dist/components/page-layout/page-layout.d.ts +46 -0
  72. package/dist/components/page-layout/page-layout.d.ts.map +1 -0
  73. package/dist/components/page-layout/page-layout.js +697 -0
  74. package/dist/components/radio/radio.d.ts +16 -0
  75. package/dist/components/radio/radio.d.ts.map +1 -0
  76. package/dist/components/radio/radio.js +152 -0
  77. package/dist/components/radio-group/radio-group.d.ts +27 -0
  78. package/dist/components/radio-group/radio-group.d.ts.map +1 -0
  79. package/dist/components/radio-group/radio-group.js +161 -0
  80. package/dist/components/router/router.d.ts +31 -0
  81. package/dist/components/router/router.d.ts.map +1 -0
  82. package/dist/components/router/router.js +97 -0
  83. package/dist/components/select/select.d.ts +16 -0
  84. package/dist/components/select/select.d.ts.map +1 -0
  85. package/dist/components/select/select.js +172 -0
  86. package/dist/components/skeleton/skeleton.d.ts +16 -0
  87. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  88. package/dist/components/skeleton/skeleton.js +149 -0
  89. package/dist/components/switch/switch.d.ts +25 -0
  90. package/dist/components/switch/switch.d.ts.map +1 -0
  91. package/dist/components/switch/switch.js +185 -0
  92. package/dist/components/table/data-table.d.ts +72 -0
  93. package/dist/components/table/data-table.d.ts.map +1 -0
  94. package/dist/components/table/data-table.js +551 -0
  95. package/dist/components/table/table.d.ts +22 -0
  96. package/dist/components/table/table.d.ts.map +1 -0
  97. package/dist/components/table/table.js +167 -0
  98. package/dist/components/tabs/tab-panel.d.ts +8 -0
  99. package/dist/components/tabs/tab-panel.d.ts.map +1 -0
  100. package/dist/components/tabs/tab-panel.js +46 -0
  101. package/dist/components/tabs/tab.d.ts +9 -0
  102. package/dist/components/tabs/tab.d.ts.map +1 -0
  103. package/dist/components/tabs/tab.js +91 -0
  104. package/dist/components/tabs/tabs.d.ts +14 -0
  105. package/dist/components/tabs/tabs.d.ts.map +1 -0
  106. package/dist/components/tabs/tabs.js +85 -0
  107. package/dist/components/textarea/textarea.d.ts +36 -0
  108. package/dist/components/textarea/textarea.d.ts.map +1 -0
  109. package/dist/components/textarea/textarea.js +231 -0
  110. package/dist/components/theme-toggle/theme-toggle.d.ts +15 -0
  111. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
  112. package/dist/components/theme-toggle/theme-toggle.js +130 -0
  113. package/dist/components/vertical-nav/vertical-nav-group.d.ts +15 -0
  114. package/dist/components/vertical-nav/vertical-nav-group.d.ts.map +1 -0
  115. package/dist/components/vertical-nav/vertical-nav-group.js +127 -0
  116. package/dist/components/vertical-nav/vertical-nav-item.d.ts +14 -0
  117. package/dist/components/vertical-nav/vertical-nav-item.d.ts.map +1 -0
  118. package/dist/components/vertical-nav/vertical-nav-item.js +85 -0
  119. package/dist/styles/index.css +171 -0
  120. package/dist/styles/reset.d.ts +2 -0
  121. package/dist/styles/reset.d.ts.map +1 -0
  122. package/dist/styles/reset.js +50 -0
  123. package/package.json +7 -2
  124. package/src/components/alert/alert.ts +100 -100
  125. package/src/components/badge/badge.ts +96 -96
  126. package/src/components/breadcrumb/breadcrumb.ts +98 -98
  127. package/src/components/button/button.ts +281 -281
  128. package/src/components/button-group/button-group.ts +67 -67
  129. package/src/components/card/card.ts +52 -52
  130. package/src/components/checkbox/checkbox.ts +266 -238
  131. package/src/components/code-block/code-block.ts +256 -256
  132. package/src/components/content-card/content-card.ts +133 -133
  133. package/src/components/divider/divider.ts +68 -68
  134. package/src/components/drawer/drawer.ts +217 -217
  135. package/src/components/field/field.ts +30 -30
  136. package/src/components/footer/footer.ts +58 -58
  137. package/src/components/form/form-step.ts +32 -32
  138. package/src/components/form/form.ts +385 -376
  139. package/src/components/grid/grid-row.ts +75 -75
  140. package/src/components/grid/grid.ts +36 -36
  141. package/src/components/icon/icon-paths.ts +140 -124
  142. package/src/components/icon/icon.ts +84 -82
  143. package/src/components/input/input.ts +248 -248
  144. package/src/components/link/link.ts +97 -97
  145. package/src/components/metadata/metadata.ts +66 -66
  146. package/src/components/modal/modal.ts +246 -158
  147. package/src/components/page-layout/page-layout.ts +704 -704
  148. package/src/components/radio/radio.ts +142 -142
  149. package/src/components/radio-group/radio-group.ts +157 -157
  150. package/src/components/router/router.ts +133 -46
  151. package/src/components/select/select.ts +161 -161
  152. package/src/components/skeleton/skeleton.ts +134 -67
  153. package/src/components/switch/switch.ts +181 -181
  154. package/src/components/table/data-table.ts +556 -556
  155. package/src/components/table/table.ts +153 -153
  156. package/src/components/tabs/tab-panel.ts +30 -30
  157. package/src/components/tabs/tab.ts +76 -76
  158. package/src/components/tabs/tabs.ts +88 -88
  159. package/src/components/textarea/textarea.ts +215 -215
  160. package/src/components/theme-toggle/theme-toggle.ts +131 -131
  161. package/src/components/vertical-nav/vertical-nav-group.ts +115 -96
  162. package/src/components/vertical-nav/vertical-nav-item.ts +72 -49
  163. package/src/styles/globals.css +58 -58
  164. package/src/styles/index.css +80 -80
  165. package/src/styles/reset.ts +50 -50
  166. package/src/styles/theme.css +58 -58
  167. package/src/styles/typography.css +25 -25
  168. package/tsconfig.json +15 -15
@@ -1,159 +1,247 @@
1
- import { LitElement, html, css, PropertyValues } from 'lit';
2
- import { customElement, property, query } from 'lit/decorators.js';
3
- import { resetStyles } from '../../styles/reset.js';
4
-
5
- @customElement('st-modal')
6
- export class StModal extends LitElement {
7
- /**
8
- * Controls whether the modal is open.
9
- */
10
- @property({ type: Boolean, reflect: true }) open = false;
11
-
12
- /**
13
- * Title text displayed in the modal header.
14
- */
15
- @property({ type: String }) heading = '';
16
-
17
- @query('dialog') private dialogEl!: HTMLDialogElement;
18
-
19
- static styles = [
20
- resetStyles,
21
- css`
22
- :host {
23
- display: contents;
24
- }
25
-
26
- dialog {
27
- padding: 0;
28
- border: 1px solid var(--st-color-border);
29
- border-radius: var(--st-radius-lg, 0.5rem);
30
- background-color: var(--st-color-surface);
31
- color: var(--st-color-text);
32
- width: 100%;
33
- max-width: 500px;
34
- box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
35
- font-family: var(--st-font-family, inherit);
36
- }
37
-
38
- dialog::backdrop {
39
- background-color: rgba(0, 0, 0, 0.5);
40
- backdrop-filter: blur(2px);
41
- }
42
-
43
- .modal-header {
44
- display: flex;
45
- align-items: center;
46
- justify-content: space-between;
47
- padding: var(--st-spacing-md) var(--st-spacing-lg);
48
- border-bottom: 1px solid var(--st-color-border);
49
- }
50
-
51
- .modal-title {
52
- font-size: 1.125rem;
53
- font-weight: 600;
54
- margin: 0;
55
- }
56
-
57
- .close-btn {
58
- background: none;
59
- border: none;
60
- cursor: pointer;
61
- color: var(--st-color-text-muted);
62
- padding: 0.25rem;
63
- display: flex;
64
- align-items: center;
65
- justify-content: center;
66
- border-radius: var(--st-radius-sm);
67
- transition: color 0.2s, background-color 0.2s;
68
- }
69
-
70
- .close-btn:hover {
71
- color: var(--st-color-text);
72
- background-color: var(--st-color-surface-muted, #f1f5f9);
73
- }
74
-
75
- .modal-body {
76
- padding: var(--st-spacing-lg);
77
- font-size: var(--st-font-size-sm, 0.875rem);
78
- line-height: 1.5;
79
- }
80
-
81
- .modal-footer {
82
- display: flex;
83
- align-items: center;
84
- justify-content: flex-end;
85
- gap: var(--st-spacing-sm);
86
- padding: var(--st-spacing-md) var(--st-spacing-lg);
87
- border-top: 1px solid var(--st-color-border);
88
- background-color: var(--st-color-surface-muted, #f8fafc);
89
- }
90
- `
91
- ];
92
-
93
- updated(changedProperties: PropertyValues) {
94
- if (changedProperties.has('open')) {
95
- if (this.dialogEl) {
96
- if (this.open && !this.dialogEl.open) {
97
- this.dialogEl.showModal();
98
- } else if (!this.open && this.dialogEl.open) {
99
- this.dialogEl.close();
100
- }
101
- }
102
- }
103
- }
104
-
105
- private handleClose() {
106
- this.open = false;
107
- this.dispatchEvent(new CustomEvent('st-close', { bubbles: true, composed: true }));
108
- }
109
-
110
- private onDialogClose() {
111
- if (this.open) {
112
- this.open = false;
113
- this.dispatchEvent(new CustomEvent('st-close', { bubbles: true, composed: true }));
114
- }
115
- }
116
-
117
- private handleBackdropClick(e: MouseEvent) {
118
- const rect = this.dialogEl.getBoundingClientRect();
119
- if (
120
- e.clientX < rect.left ||
121
- e.clientX > rect.right ||
122
- e.clientY < rect.top ||
123
- e.clientY > rect.bottom
124
- ) {
125
- this.handleClose();
126
- }
127
- }
128
-
129
- render() {
130
- return html`
131
- <dialog
132
- @cancel=${this.handleClose}
133
- @click=${this.handleBackdropClick}
134
- @close=${this.onDialogClose}
135
- >
136
- <div class="modal-header" @click=${(e: MouseEvent) => e.stopPropagation()}>
137
- <slot name="header">
138
- <h3 class="modal-title">${this.heading}</h3>
139
- </slot>
140
- <button class="close-btn" @click=${this.handleClose} aria-label="Close modal">
141
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
142
- </button>
143
- </div>
144
- <div class="modal-body" @click=${(e: MouseEvent) => e.stopPropagation()}>
145
- <slot></slot>
146
- </div>
147
- <div class="modal-footer" @click=${(e: MouseEvent) => e.stopPropagation()}>
148
- <slot name="footer"></slot>
149
- </div>
150
- </dialog>
151
- `;
152
- }
153
- }
154
-
155
- declare global {
156
- interface HTMLElementTagNameMap {
157
- 'st-modal': StModal;
158
- }
1
+ import { LitElement, html, css, PropertyValues, nothing } from 'lit';
2
+ import { customElement, property, query } from 'lit/decorators.js';
3
+ import { resetStyles } from '../../styles/reset.js';
4
+
5
+ @customElement('st-modal')
6
+ export class StModal extends LitElement {
7
+ /**
8
+ * Controls whether the modal is open.
9
+ */
10
+ @property({ type: Boolean, reflect: true }) open = false;
11
+
12
+ /**
13
+ * Title text displayed in the modal header.
14
+ */
15
+ @property({ type: String }) heading = '';
16
+
17
+ /**
18
+ * Size of the modal (sm, md, lg, xl, xxl).
19
+ */
20
+ @property({ type: String }) size: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' = 'md';
21
+
22
+ /**
23
+ * If true, the modal cannot be closed by clicking the backdrop or pressing Esc.
24
+ */
25
+ @property({ type: Boolean }) static = false;
26
+
27
+ @query('dialog') private dialogEl!: HTMLDialogElement;
28
+
29
+ private isClosing = false;
30
+
31
+ static styles = [
32
+ resetStyles,
33
+ css`
34
+ :host {
35
+ display: contents;
36
+ }
37
+
38
+ dialog {
39
+ padding: 0;
40
+ border: 1px solid var(--st-color-border);
41
+ border-radius: var(--st-radius-lg, 0.5rem);
42
+ background-color: var(--st-color-surface);
43
+ color: var(--st-color-text);
44
+
45
+ /* Responsive width calculation */
46
+ width: calc(100% - 2rem);
47
+ margin: auto;
48
+
49
+ box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
50
+ font-family: var(--st-font-family, inherit);
51
+ }
52
+
53
+ /* Sizes */
54
+ dialog.size-sm { max-width: 400px; }
55
+ dialog.size-md { max-width: 500px; }
56
+ dialog.size-lg { max-width: 800px; }
57
+ dialog.size-xl { max-width: 1024px; }
58
+ dialog.size-xxl { max-width: 1280px; }
59
+
60
+ dialog::backdrop {
61
+ background-color: rgba(0, 0, 0, 0.5);
62
+ backdrop-filter: blur(2px);
63
+ }
64
+
65
+ /* Animations */
66
+ @keyframes fade-in {
67
+ from { opacity: 0; }
68
+ to { opacity: 1; }
69
+ }
70
+ @keyframes fade-out {
71
+ from { opacity: 1; }
72
+ to { opacity: 0; }
73
+ }
74
+ @keyframes slide-up {
75
+ from { opacity: 0; transform: translateY(20px) scale(0.95); }
76
+ to { opacity: 1; transform: translateY(0) scale(1); }
77
+ }
78
+ @keyframes slide-down {
79
+ from { opacity: 1; transform: translateY(0) scale(1); }
80
+ to { opacity: 0; transform: translateY(20px) scale(0.95); }
81
+ }
82
+
83
+ dialog[open] {
84
+ animation: slide-up 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
85
+ }
86
+ dialog[open]::backdrop {
87
+ animation: fade-in 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
88
+ }
89
+
90
+ dialog.closing {
91
+ animation: slide-down 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
92
+ }
93
+ dialog.closing::backdrop {
94
+ animation: fade-out 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
95
+ }
96
+
97
+ .modal-header {
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: space-between;
101
+ padding: var(--st-spacing-md) var(--st-spacing-lg);
102
+ border-bottom: 1px solid var(--st-color-border);
103
+ }
104
+
105
+ .modal-title {
106
+ font-size: 1.125rem;
107
+ font-weight: 600;
108
+ margin: 0;
109
+ }
110
+
111
+ .close-btn {
112
+ background: none;
113
+ border: none;
114
+ cursor: pointer;
115
+ color: var(--st-color-text-muted);
116
+ padding: 0.25rem;
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ border-radius: var(--st-radius-sm);
121
+ transition: color 0.2s, background-color 0.2s;
122
+ }
123
+
124
+ .close-btn:hover {
125
+ color: var(--st-color-text);
126
+ background-color: var(--st-color-surface-muted, #f1f5f9);
127
+ }
128
+
129
+ .modal-body {
130
+ padding: var(--st-spacing-lg);
131
+ font-size: var(--st-font-size-sm, 0.875rem);
132
+ line-height: 1.5;
133
+ }
134
+
135
+ .modal-footer {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: flex-end;
139
+ gap: var(--st-spacing-sm);
140
+ padding: var(--st-spacing-md) var(--st-spacing-lg);
141
+ border-top: 1px solid var(--st-color-border);
142
+ background-color: var(--st-color-surface-muted, #f8fafc);
143
+ }
144
+ `
145
+ ];
146
+
147
+ updated(changedProperties: PropertyValues) {
148
+ if (changedProperties.has('open')) {
149
+ if (this.open) {
150
+ this.dialogEl.classList.remove('closing');
151
+ this.isClosing = false;
152
+ if (!this.dialogEl.open) {
153
+ this.dialogEl.showModal();
154
+ }
155
+ } else if (this.dialogEl.open && !this.isClosing) {
156
+ this.closeWithAnimation();
157
+ }
158
+ }
159
+ }
160
+
161
+ private closeWithAnimation() {
162
+ if (this.isClosing) return;
163
+ this.isClosing = true;
164
+ this.dialogEl.classList.add('closing');
165
+
166
+ const onAnimationEnd = () => {
167
+ this.dialogEl.removeEventListener('animationend', onAnimationEnd);
168
+ this.dialogEl.classList.remove('closing');
169
+ this.isClosing = false;
170
+ if (!this.open) {
171
+ this.dialogEl.close();
172
+ }
173
+ };
174
+
175
+ this.dialogEl.addEventListener('animationend', onAnimationEnd);
176
+ }
177
+
178
+ private handleClose() {
179
+ this.open = false;
180
+ this.dispatchEvent(new CustomEvent('st-close', { bubbles: true, composed: true }));
181
+ }
182
+
183
+ private handleCancel(e: Event) {
184
+ e.preventDefault();
185
+ if (!this.static) {
186
+ this.handleClose();
187
+ }
188
+ }
189
+
190
+ private onDialogClose() {
191
+ if (this.open) {
192
+ this.open = false;
193
+ this.dispatchEvent(new CustomEvent('st-close', { bubbles: true, composed: true }));
194
+ }
195
+ }
196
+
197
+ private handleBackdropClick(e: MouseEvent) {
198
+ if (this.static) return;
199
+
200
+ const rect = this.dialogEl.getBoundingClientRect();
201
+ const clickedOutside =
202
+ e.clientX < rect.left ||
203
+ e.clientX > rect.right ||
204
+ e.clientY < rect.top ||
205
+ e.clientY > rect.bottom;
206
+
207
+ if (clickedOutside) {
208
+ this.handleClose();
209
+ }
210
+ }
211
+
212
+ render() {
213
+ return html`
214
+ <dialog
215
+ class="size-${this.size}"
216
+ aria-labelledby=${this.heading ? 'modal-heading' : nothing}
217
+ @cancel=${this.handleCancel}
218
+ @click=${this.handleBackdropClick}
219
+ @close=${this.onDialogClose}
220
+ >
221
+ <div class="modal-header" @click=${(e: MouseEvent) => e.stopPropagation()}>
222
+ <slot name="header">
223
+ <h3 class="modal-title" id="modal-heading">${this.heading}</h3>
224
+ </slot>
225
+
226
+ ${!this.static ? html`
227
+ <button class="close-btn" @click=${this.handleClose} aria-label="Close modal">
228
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
229
+ </button>
230
+ ` : nothing}
231
+ </div>
232
+ <div class="modal-body" @click=${(e: MouseEvent) => e.stopPropagation()}>
233
+ <slot></slot>
234
+ </div>
235
+ <div class="modal-footer" @click=${(e: MouseEvent) => e.stopPropagation()}>
236
+ <slot name="footer"></slot>
237
+ </div>
238
+ </dialog>
239
+ `;
240
+ }
241
+ }
242
+
243
+ declare global {
244
+ interface HTMLElementTagNameMap {
245
+ 'st-modal': StModal;
246
+ }
159
247
  }