@makolabs/ripple 0.4.1-0 → 1.0.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.
Files changed (59) hide show
  1. package/README.md +165 -205
  2. package/dist/adapters/ai/OpenAIAdapter.d.ts +115 -0
  3. package/dist/adapters/ai/OpenAIAdapter.js +568 -0
  4. package/dist/adapters/ai/index.d.ts +3 -0
  5. package/dist/adapters/ai/index.js +3 -0
  6. package/dist/adapters/ai/types.d.ts +108 -0
  7. package/dist/adapters/ai/types.js +31 -0
  8. package/dist/adapters/storage/BaseAdapter.js +31 -31
  9. package/dist/ai/AIChatInterface.svelte +435 -0
  10. package/dist/ai/AIChatInterface.svelte.d.ts +18 -0
  11. package/dist/ai/ChatInput.svelte +211 -0
  12. package/dist/ai/ChatInput.svelte.d.ts +18 -0
  13. package/dist/ai/CodeRenderer.svelte +174 -0
  14. package/dist/ai/CodeRenderer.svelte.d.ts +8 -0
  15. package/dist/ai/ComposeDropdown.svelte +171 -0
  16. package/dist/ai/ComposeDropdown.svelte.d.ts +9 -0
  17. package/dist/ai/MermaidRenderer.svelte +89 -0
  18. package/dist/ai/MermaidRenderer.svelte.d.ts +7 -0
  19. package/dist/ai/MessageBox.svelte +403 -0
  20. package/dist/ai/MessageBox.svelte.d.ts +12 -0
  21. package/dist/ai/ThinkingDisplay.svelte +275 -0
  22. package/dist/ai/ThinkingDisplay.svelte.d.ts +9 -0
  23. package/dist/ai/ai-chat-interface.d.ts +161 -0
  24. package/dist/ai/ai-chat-interface.js +63 -0
  25. package/dist/ai/content-detector.d.ts +41 -0
  26. package/dist/ai/content-detector.js +153 -0
  27. package/dist/config/ai.d.ts +13 -0
  28. package/dist/config/ai.js +43 -0
  29. package/dist/elements/accordion/accordion.js +1 -1
  30. package/dist/elements/badge/Badge.svelte +14 -3
  31. package/dist/elements/dropdown/Dropdown.svelte +2 -2
  32. package/dist/elements/dropdown/Select.svelte +1 -1
  33. package/dist/elements/progress/Progress.svelte +7 -10
  34. package/dist/file-browser/FileBrowser.svelte +1 -1
  35. package/dist/forms/DateRange.svelte +18 -16
  36. package/dist/forms/NumberInput.svelte +1 -1
  37. package/dist/forms/RadioInputs.svelte +1 -1
  38. package/dist/forms/RadioPill.svelte +1 -1
  39. package/dist/forms/Tags.svelte +2 -2
  40. package/dist/helper/date.d.ts +1 -0
  41. package/dist/helper/date.js +6 -0
  42. package/dist/index.d.ts +65 -21
  43. package/dist/index.js +11 -0
  44. package/dist/layout/activity-list/ActivityList.svelte +94 -0
  45. package/dist/layout/activity-list/ActivityList.svelte.d.ts +4 -0
  46. package/dist/layout/activity-list/activity-list.d.ts +152 -0
  47. package/dist/layout/activity-list/activity-list.js +59 -0
  48. package/dist/layout/card/Card.svelte +1 -5
  49. package/dist/layout/card/metric-card.d.ts +18 -18
  50. package/dist/layout/table/Cells.svelte +1 -7
  51. package/dist/layout/table/Cells.svelte.d.ts +1 -1
  52. package/dist/modal/Modal.svelte +74 -174
  53. package/dist/modal/Modal.svelte.d.ts +2 -2
  54. package/dist/modal/modal.d.ts +61 -165
  55. package/dist/modal/modal.js +23 -64
  56. package/dist/sonner/sonner.svelte +1 -7
  57. package/dist/types/markdown.d.ts +14 -0
  58. package/dist/utils/Portal.svelte +1 -1
  59. package/package.json +128 -121
@@ -14,11 +14,7 @@
14
14
  bodyclass: bodyClass = ''
15
15
  }: CardProps = $props();
16
16
 
17
- const {
18
- base,
19
- title: titleSlot,
20
- body: bodySlot
21
- } = $derived(card({ color }));
17
+ const { base, title: titleSlot, body: bodySlot } = $derived(card({ color }));
22
18
 
23
19
  const baseClass = $derived(cn(base(), className));
24
20
  const titleClasses = $derived(cn(titleSlot(), titleClass));
@@ -1,21 +1,21 @@
1
1
  export declare const metricCard: import("tailwind-variants").TVReturnType<{
2
2
  [key: string]: {
3
- [key: string]: import("tailwind-merge").ClassNameValue | {
4
- base?: import("tailwind-merge").ClassNameValue;
5
- value?: import("tailwind-merge").ClassNameValue;
6
- title?: import("tailwind-merge").ClassNameValue;
7
- progress?: import("tailwind-merge").ClassNameValue;
8
- detail?: import("tailwind-merge").ClassNameValue;
3
+ [key: string]: import("tailwind-variants").ClassValue | {
4
+ base?: import("tailwind-variants").ClassValue;
5
+ title?: import("tailwind-variants").ClassValue;
6
+ value?: import("tailwind-variants").ClassValue;
7
+ progress?: import("tailwind-variants").ClassValue;
8
+ detail?: import("tailwind-variants").ClassValue;
9
9
  };
10
10
  };
11
11
  } | {
12
12
  [x: string]: {
13
- [x: string]: import("tailwind-merge").ClassNameValue | {
14
- base?: import("tailwind-merge").ClassNameValue;
15
- value?: import("tailwind-merge").ClassNameValue;
16
- title?: import("tailwind-merge").ClassNameValue;
17
- progress?: import("tailwind-merge").ClassNameValue;
18
- detail?: import("tailwind-merge").ClassNameValue;
13
+ [x: string]: import("tailwind-variants").ClassValue | {
14
+ base?: import("tailwind-variants").ClassValue;
15
+ title?: import("tailwind-variants").ClassValue;
16
+ value?: import("tailwind-variants").ClassValue;
17
+ progress?: import("tailwind-variants").ClassValue;
18
+ detail?: import("tailwind-variants").ClassValue;
19
19
  };
20
20
  };
21
21
  } | {}, {
@@ -26,12 +26,12 @@ export declare const metricCard: import("tailwind-variants").TVReturnType<{
26
26
  progress: string;
27
27
  }, undefined, {
28
28
  [key: string]: {
29
- [key: string]: import("tailwind-merge").ClassNameValue | {
30
- base?: import("tailwind-merge").ClassNameValue;
31
- value?: import("tailwind-merge").ClassNameValue;
32
- title?: import("tailwind-merge").ClassNameValue;
33
- progress?: import("tailwind-merge").ClassNameValue;
34
- detail?: import("tailwind-merge").ClassNameValue;
29
+ [key: string]: import("tailwind-variants").ClassValue | {
30
+ base?: import("tailwind-variants").ClassValue;
31
+ title?: import("tailwind-variants").ClassValue;
32
+ value?: import("tailwind-variants").ClassValue;
33
+ progress?: import("tailwind-variants").ClassValue;
34
+ detail?: import("tailwind-variants").ClassValue;
35
35
  };
36
36
  };
37
37
  } | {}, {
@@ -1,5 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { StatusType, KeyType, DataRow } from './table.js';
3
+ import { formatTime } from '../../helper/date.js';
3
4
 
4
5
  export { DateCell, Currency, Percentage, PhoneNumber, Email, Status, Time };
5
6
 
@@ -24,13 +25,6 @@
24
25
  return match ? `(${match[1]}) ${match[2]}-${match[3]}` : String(phoneNumber);
25
26
  }
26
27
 
27
- function formatTime(time: string | number | Date): KeyType {
28
- return new Date(time).toLocaleTimeString('en-US', {
29
- hour: '2-digit',
30
- minute: '2-digit'
31
- });
32
- }
33
-
34
28
  function formatCurrency(value: number): KeyType {
35
29
  return new Intl.NumberFormat('en-US', {
36
30
  style: 'currency',
@@ -1,5 +1,4 @@
1
1
  import type { KeyType, DataRow } from './table.js';
2
- export { DateCell, Currency, Percentage, PhoneNumber, Email, Status, Time };
3
2
  declare const DateCell: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
4
3
  declare const Currency: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
5
4
  declare const Percentage: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
@@ -7,6 +6,7 @@ declare const PhoneNumber: (row: DataRow, key: KeyType) => ReturnType<import("sv
7
6
  declare const Email: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
8
7
  declare const Status: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
9
8
  declare const Time: (row: DataRow, key: KeyType) => ReturnType<import("svelte").Snippet>;
9
+ export { DateCell, Currency, Percentage, PhoneNumber, Email, Status, Time };
10
10
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
11
11
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
12
12
  $$bindings?: Bindings;
@@ -1,207 +1,107 @@
1
1
  <script lang="ts">
2
- import { onMount, onDestroy, tick } from 'svelte';
3
- import { browser } from '$app/environment';
4
2
  import { fade, scale } from 'svelte/transition';
5
3
  import { quintOut } from 'svelte/easing';
6
- import { cn } from '../helper/cls.js';
7
- import { modal } from './modal.js';
8
- import type { MakeModalProps } from '../index.js';
9
-
4
+ import { modal, type ModalProps } from './modal.js';
5
+
10
6
  let {
11
7
  open = $bindable(false),
12
- onclose: onClose = () => {},
8
+ onclose = () => {},
13
9
  title,
14
10
  description,
15
- position = 'center',
16
- children,
17
- header,
18
- custom,
11
+ size,
12
+ hideCloseButton = false,
19
13
  class: className = '',
20
- backdropclass: backdropClassName = '',
21
- contentclass: contentClassName = '',
22
- headerclass: headerClassName = '',
23
- titleclass: titleClass = '',
24
- bodyclass: bodyClassName = ''
25
- }: MakeModalProps = $props();
26
-
27
- let modalElement: HTMLDivElement | undefined = $state();
28
-
29
- const {
30
- base,
31
- backdrop,
32
- contentWrapper,
33
- content,
34
- header: headerVClass,
35
- title: titleVClass,
36
- closeButton,
37
- body
38
- } = $derived(
39
- modal({
40
- open,
41
- position
42
- })
43
- );
44
-
45
- const closeButtonClasses = $derived(closeButton());
46
- const contentItemClass = $derived(content());
47
- const baseClass = $derived(cn(base(), className));
48
- const backdropClass = $derived(cn(backdrop(), backdropClassName));
49
- const contentWrapperClass = $derived(cn(contentWrapper(), contentClassName));
50
- const headerClass = $derived(cn(headerVClass(), headerClassName));
51
- const titleClasses = $derived(cn(titleVClass(), titleClass));
52
- const bodyClasses = $derived(cn(body(), bodyClassName));
14
+ children,
15
+ footer
16
+ }: ModalProps = $props();
53
17
 
54
- function handleBackdropClick(e: MouseEvent) {
55
- if (e.target === e.currentTarget) {
56
- onClose();
57
- }
18
+ const styles = $derived(modal({ size }));
19
+
20
+ function handleBackdropClick() {
21
+ onclose();
58
22
  }
59
-
60
- function handleEscapeKey(e: KeyboardEvent) {
23
+
24
+ function handleKeydown(e: KeyboardEvent) {
61
25
  if (e.key === 'Escape' && open) {
62
- onClose();
63
- e.preventDefault();
64
- e.stopPropagation();
26
+ onclose();
65
27
  }
66
28
  }
67
-
68
- function handleCloseClick() {
69
- onClose();
70
- }
71
-
72
- // Focus trap functionality
73
- let previouslyFocusedElement: HTMLElement | null = null;
74
-
75
- function trapFocus(element: HTMLElement) {
76
- const focusableElements = element.querySelectorAll(
77
- 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])'
78
- );
79
-
80
- if (focusableElements.length === 0) return;
81
-
82
- const firstElement = focusableElements[0] as HTMLElement;
83
- const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;
84
-
85
- function handleTabKey(e: KeyboardEvent) {
86
- if (e.key !== 'Tab') return;
87
-
88
- if (e.shiftKey) {
89
- if (document.activeElement === firstElement) {
90
- lastElement.focus();
91
- e.preventDefault();
92
- }
93
- } else {
94
- if (document.activeElement === lastElement) {
95
- firstElement.focus();
96
- e.preventDefault();
97
- }
98
- }
99
- }
100
-
101
- element.addEventListener('keydown', handleTabKey);
102
- firstElement.focus();
103
-
104
- return () => {
105
- element.removeEventListener('keydown', handleTabKey);
106
- };
107
- }
108
-
109
- onMount(() => {
110
- document.addEventListener('keydown', handleEscapeKey);
111
- return () => {
112
- document.removeEventListener('keydown', handleEscapeKey);
113
- };
114
- });
115
-
29
+
116
30
  $effect(() => {
117
- if (!browser) return;
118
31
  if (open) {
119
- previouslyFocusedElement = document.activeElement as HTMLElement;
120
32
  document.body.style.overflow = 'hidden';
121
-
122
- tick().then(() => {
123
- if (modalElement) {
124
- trapFocus(modalElement);
125
- }
126
- });
33
+ document.addEventListener('keydown', handleKeydown);
127
34
  } else {
128
35
  document.body.style.overflow = '';
129
- if (previouslyFocusedElement) {
130
- previouslyFocusedElement.focus();
131
- }
36
+ document.removeEventListener('keydown', handleKeydown);
132
37
  }
133
- });
134
-
135
- onDestroy(() => {
136
- if (browser && document.body.style.overflow === 'hidden') {
38
+
39
+ return () => {
137
40
  document.body.style.overflow = '';
138
- }
41
+ document.removeEventListener('keydown', handleKeydown);
42
+ };
139
43
  });
140
44
  </script>
141
45
 
142
- {#if browser}
143
- <div
144
- class={baseClass}
145
- bind:this={modalElement}
146
- role="dialog"
147
- aria-modal="true"
148
- aria-labelledby={title ? 'modal-title' : undefined}
149
- aria-describedby={description ? 'modal-description' : undefined}
150
- >
46
+ {#if open}
47
+ <div class={styles.base()} role="dialog" aria-modal="true">
151
48
  <!-- Backdrop -->
152
- <button
153
- class={backdropClass}
49
+ <div
50
+ class={styles.backdrop()}
154
51
  onclick={handleBackdropClick}
155
52
  transition:fade={{ duration: 200 }}
156
- aria-label="Close modal"
157
- ></button>
158
-
159
- <!-- Modal content -->
160
- <div
161
- class={contentWrapperClass}
53
+ role="presentation"></div>
54
+
55
+ <!-- Modal Container -->
56
+ <div
57
+ class="{styles.container()} {className}"
162
58
  transition:scale={{ duration: 200, easing: quintOut, start: 0.95 }}
163
59
  >
164
- {#if custom}
165
- {@render custom()}
166
- {:else}
167
- <div class={contentItemClass}>
168
- {#if header || title}
169
- <div class={headerClass}>
170
- {#if header}
171
- {@render header()}
172
- {:else}
173
- {#if title}
174
- <h3 id="modal-title" class={titleClasses}>{title}</h3>
175
- {/if}
176
- <button
177
- type="button"
178
- class={closeButtonClasses}
179
- onclick={handleCloseClick}
180
- aria-label="Close modal"
181
- >
182
- <svg
183
- xmlns="http://www.w3.org/2000/svg"
184
- width="12"
185
- height="12"
186
- viewBox="0 0 12 12"
187
- >
188
- <path
189
- fill="currentColor"
190
- d="m1.897 2.054l.073-.084a.75.75 0 0 1 .976-.073l.084.073L6 4.939l2.97-2.97a.75.75 0 1 1 1.06 1.061L7.061 6l2.97 2.97a.75.75 0 0 1 .072.976l-.073.084a.75.75 0 0 1-.976.073l-.084-.073L6 7.061l-2.97 2.97A.75.75 0 1 1 1.97 8.97L4.939 6l-2.97-2.97a.75.75 0 0 1-.072-.976l.073-.084z"
191
- />
192
- </svg>
193
- </button>
194
- {/if}
195
- </div>
196
- {/if}
197
-
198
- {#if children}
199
- <div class={bodyClasses}>
200
- {@render children()}
201
- </div>
60
+ <!-- Header -->
61
+ {#if title || !hideCloseButton}
62
+ <header class={styles.header()}>
63
+ <div class="flex-1">
64
+ {#if title}
65
+ <h2 class={styles.title()}>{title}</h2>
66
+ {/if}
67
+ {#if description}
68
+ <p class={styles.description()}>{description}</p>
69
+ {/if}
70
+ </div>
71
+
72
+ {#if !hideCloseButton}
73
+ <button
74
+ type="button"
75
+ class={styles.close()}
76
+ onclick={onclose}
77
+ aria-label="Close"
78
+ >
79
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none">
80
+ <path
81
+ d="M15 5L5 15M5 5L15 15"
82
+ stroke="currentColor"
83
+ stroke-width="2"
84
+ stroke-linecap="round"
85
+ />
86
+ </svg>
87
+ </button>
202
88
  {/if}
89
+ </header>
90
+ {/if}
91
+
92
+ <!-- Body -->
93
+ {#if children}
94
+ <div class={styles.body()}>
95
+ {@render children()}
203
96
  </div>
204
97
  {/if}
98
+
99
+ <!-- Footer -->
100
+ {#if footer}
101
+ <footer class={styles.footer()}>
102
+ {@render footer()}
103
+ </footer>
104
+ {/if}
205
105
  </div>
206
106
  </div>
207
- {/if}
107
+ {/if}
@@ -1,4 +1,4 @@
1
- import type { MakeModalProps } from '../index.js';
2
- declare const Modal: import("svelte").Component<MakeModalProps, {}, "open">;
1
+ import { type ModalProps } from './modal.js';
2
+ declare const Modal: import("svelte").Component<ModalProps, {}, "open">;
3
3
  type Modal = ReturnType<typeof Modal>;
4
4
  export default Modal;
@@ -1,211 +1,107 @@
1
+ import { Size, type VariantSizes } from '../index.js';
2
+ import type { Snippet } from 'svelte';
1
3
  export declare const modal: import("tailwind-variants").TVReturnType<{
2
- open: {
3
- true: {
4
- base: string;
5
- backdrop: string;
6
- contentWrapper: string;
7
- };
8
- false: {
9
- base: string;
10
- backdrop: string;
11
- contentWrapper: string;
12
- };
13
- };
14
- position: {
15
- center: {
16
- contentWrapper: string;
17
- };
18
- top: {
19
- contentWrapper: string;
20
- };
21
- bottom: {
22
- contentWrapper: string;
23
- };
24
- left: {
25
- contentWrapper: string;
26
- };
27
- right: {
28
- contentWrapper: string;
29
- };
30
- };
31
4
  size: {
32
- xs: {
33
- contentWrapper: string;
34
- };
35
- sm: {
36
- contentWrapper: string;
5
+ [Size.XS]: {
6
+ container: string;
37
7
  };
38
- base: {
39
- contentWrapper: string;
8
+ [Size.SM]: {
9
+ container: string;
40
10
  };
41
- lg: {
42
- contentWrapper: string;
11
+ [Size.BASE]: {
12
+ container: string;
43
13
  };
44
- xl: {
45
- contentWrapper: string;
14
+ [Size.LG]: {
15
+ container: string;
46
16
  };
47
- '2xl': {
48
- contentWrapper: string;
17
+ [Size.XL]: {
18
+ container: string;
49
19
  };
50
- };
51
- border: {
52
- none: {
53
- content: string;
54
- };
55
- default: {
56
- content: string;
57
- };
58
- colored: {
59
- content: string;
20
+ [Size.XXL]: {
21
+ container: string;
60
22
  };
61
23
  };
62
24
  }, {
63
25
  base: string;
64
26
  backdrop: string;
65
- contentWrapper: string;
66
- content: string;
27
+ container: string;
67
28
  header: string;
68
29
  body: string;
30
+ footer: string;
69
31
  title: string;
70
- closeButton: string;
32
+ description: string;
33
+ close: string;
71
34
  }, undefined, {
72
- open: {
73
- true: {
74
- base: string;
75
- backdrop: string;
76
- contentWrapper: string;
77
- };
78
- false: {
79
- base: string;
80
- backdrop: string;
81
- contentWrapper: string;
82
- };
83
- };
84
- position: {
85
- center: {
86
- contentWrapper: string;
87
- };
88
- top: {
89
- contentWrapper: string;
90
- };
91
- bottom: {
92
- contentWrapper: string;
93
- };
94
- left: {
95
- contentWrapper: string;
96
- };
97
- right: {
98
- contentWrapper: string;
99
- };
100
- };
101
35
  size: {
102
- xs: {
103
- contentWrapper: string;
104
- };
105
- sm: {
106
- contentWrapper: string;
107
- };
108
- base: {
109
- contentWrapper: string;
110
- };
111
- lg: {
112
- contentWrapper: string;
36
+ [Size.XS]: {
37
+ container: string;
113
38
  };
114
- xl: {
115
- contentWrapper: string;
39
+ [Size.SM]: {
40
+ container: string;
116
41
  };
117
- '2xl': {
118
- contentWrapper: string;
42
+ [Size.BASE]: {
43
+ container: string;
119
44
  };
120
- };
121
- border: {
122
- none: {
123
- content: string;
45
+ [Size.LG]: {
46
+ container: string;
124
47
  };
125
- default: {
126
- content: string;
48
+ [Size.XL]: {
49
+ container: string;
127
50
  };
128
- colored: {
129
- content: string;
51
+ [Size.XXL]: {
52
+ container: string;
130
53
  };
131
54
  };
132
55
  }, {
133
56
  base: string;
134
57
  backdrop: string;
135
- contentWrapper: string;
136
- content: string;
58
+ container: string;
137
59
  header: string;
138
60
  body: string;
61
+ footer: string;
139
62
  title: string;
140
- closeButton: string;
63
+ description: string;
64
+ close: string;
141
65
  }, import("tailwind-variants").TVReturnType<{
142
- open: {
143
- true: {
144
- base: string;
145
- backdrop: string;
146
- contentWrapper: string;
147
- };
148
- false: {
149
- base: string;
150
- backdrop: string;
151
- contentWrapper: string;
152
- };
153
- };
154
- position: {
155
- center: {
156
- contentWrapper: string;
157
- };
158
- top: {
159
- contentWrapper: string;
160
- };
161
- bottom: {
162
- contentWrapper: string;
163
- };
164
- left: {
165
- contentWrapper: string;
166
- };
167
- right: {
168
- contentWrapper: string;
169
- };
170
- };
171
66
  size: {
172
- xs: {
173
- contentWrapper: string;
67
+ [Size.XS]: {
68
+ container: string;
174
69
  };
175
- sm: {
176
- contentWrapper: string;
70
+ [Size.SM]: {
71
+ container: string;
177
72
  };
178
- base: {
179
- contentWrapper: string;
73
+ [Size.BASE]: {
74
+ container: string;
180
75
  };
181
- lg: {
182
- contentWrapper: string;
183
- };
184
- xl: {
185
- contentWrapper: string;
186
- };
187
- '2xl': {
188
- contentWrapper: string;
189
- };
190
- };
191
- border: {
192
- none: {
193
- content: string;
76
+ [Size.LG]: {
77
+ container: string;
194
78
  };
195
- default: {
196
- content: string;
79
+ [Size.XL]: {
80
+ container: string;
197
81
  };
198
- colored: {
199
- content: string;
82
+ [Size.XXL]: {
83
+ container: string;
200
84
  };
201
85
  };
202
86
  }, {
203
87
  base: string;
204
88
  backdrop: string;
205
- contentWrapper: string;
206
- content: string;
89
+ container: string;
207
90
  header: string;
208
91
  body: string;
92
+ footer: string;
209
93
  title: string;
210
- closeButton: string;
94
+ description: string;
95
+ close: string;
211
96
  }, undefined, unknown, unknown, undefined>>;
97
+ export type ModalProps = {
98
+ open?: boolean;
99
+ onclose?: () => void;
100
+ title?: string;
101
+ description?: string;
102
+ size?: VariantSizes;
103
+ hideCloseButton?: boolean;
104
+ class?: string;
105
+ children?: Snippet;
106
+ footer?: Snippet;
107
+ };