@app-studio/web 0.9.41 → 0.9.43

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 (88) hide show
  1. package/dist/bot/Bot.d.ts +15 -0
  2. package/dist/bot/Cache.d.ts +13 -0
  3. package/dist/bot/Config.d.ts +13 -0
  4. package/dist/bot/ContentFetcher.d.ts +9 -0
  5. package/dist/bot/DocuCode.d.ts +19 -0
  6. package/dist/bot/FileHandler.d.ts +39 -0
  7. package/dist/bot/ai/AnthropicConnector.d.ts +6 -0
  8. package/dist/bot/ai/GeminiConnector.d.ts +7 -0
  9. package/dist/bot/ai/GroqConnector.d.ts +7 -0
  10. package/dist/bot/ai/HuggingFaceConnector.d.ts +6 -0
  11. package/dist/bot/ai/OpenAIConnector.d.ts +11 -0
  12. package/dist/bot/ai/ReplicateConnector.d.ts +7 -0
  13. package/dist/bot/ai/SambaNovaConnector.d.ts +6 -0
  14. package/dist/bot/ai/ai.config.d.ts +12 -0
  15. package/dist/bot/ai/ai.service.d.ts +36 -0
  16. package/dist/bot/data.d.ts +19 -0
  17. package/dist/bot/extractors.d.ts +8 -0
  18. package/dist/bot/index.d.ts +1 -0
  19. package/dist/bot/prompt/1-project.d.ts +1 -0
  20. package/dist/bot/prompt/2-response.d.ts +1 -0
  21. package/dist/bot/prompt/3-comment.d.ts +1 -0
  22. package/docs/components/Accordion.mdx +74 -121
  23. package/docs/components/Alert.mdx +19 -70
  24. package/docs/components/AspectRatio.mdx +13 -11
  25. package/docs/components/AudioInput.mdx +43 -0
  26. package/docs/components/Avatar.mdx +18 -43
  27. package/docs/components/Background.mdx +100 -492
  28. package/docs/components/Badge.mdx +45 -130
  29. package/docs/components/Button.mdx +76 -128
  30. package/docs/components/Calendar.mdx +7 -7
  31. package/docs/components/Card.mdx +247 -290
  32. package/docs/components/Carousel.mdx +94 -321
  33. package/docs/components/Chart.mdx +171 -26
  34. package/docs/components/ChatInput.mdx +327 -275
  35. package/docs/components/Checkbox.mdx +3 -5
  36. package/docs/components/ColorInput.mdx +6 -6
  37. package/docs/components/ColorPicker.mdx +452 -0
  38. package/docs/components/ComboBox.mdx +13 -13
  39. package/docs/components/Command.mdx +140 -188
  40. package/docs/components/ContextMenu.mdx +47 -171
  41. package/docs/components/CookieConsent.mdx +53 -0
  42. package/docs/components/CountryPicker.mdx +8 -8
  43. package/docs/components/DatePicker.mdx +3 -3
  44. package/docs/components/DragAndDrop.mdx +279 -463
  45. package/docs/components/Drawer.mdx +392 -231
  46. package/docs/components/DropdownMenu.mdx +37 -155
  47. package/docs/components/EmojiPicker.mdx +84 -0
  48. package/docs/components/File.mdx +130 -4
  49. package/docs/components/Formik.mdx +39 -39
  50. package/docs/components/Gradient.mdx +359 -182
  51. package/docs/components/Horizontal.mdx +1 -2
  52. package/docs/components/HoverCard.mdx +57 -125
  53. package/docs/components/KanbanBoard.mdx +9 -9
  54. package/docs/components/Link.mdx +22 -30
  55. package/docs/components/Loader.mdx +230 -413
  56. package/docs/components/Menubar.mdx +73 -69
  57. package/docs/components/Message.mdx +210 -525
  58. package/docs/components/Modal.mdx +351 -475
  59. package/docs/components/NavigationMenu.mdx +8 -8
  60. package/docs/components/OTPInput.mdx +194 -0
  61. package/docs/components/Pagination.mdx +451 -107
  62. package/docs/components/Password.mdx +8 -8
  63. package/docs/components/ProgressBar.mdx +460 -0
  64. package/docs/components/Resizable.mdx +103 -102
  65. package/docs/components/Select.mdx +5 -5
  66. package/docs/components/Separator.mdx +11 -98
  67. package/docs/components/ShareButton.mdx +29 -0
  68. package/docs/components/Sidebar.mdx +70 -131
  69. package/docs/components/Slider.mdx +99 -185
  70. package/docs/components/StatusIndicator.mdx +373 -0
  71. package/docs/components/Switch.mdx +3 -3
  72. package/docs/components/Table.mdx +25 -105
  73. package/docs/components/Tabs.mdx +40 -143
  74. package/docs/components/TagInput.mdx +17 -17
  75. package/docs/components/Text.mdx +3 -3
  76. package/docs/components/TextArea.mdx +6 -6
  77. package/docs/components/TextField.mdx +12 -12
  78. package/docs/components/Title.mdx +267 -525
  79. package/docs/components/Toast.mdx +65 -142
  80. package/docs/components/Toggle.mdx +37 -49
  81. package/docs/components/ToggleGroup.mdx +36 -57
  82. package/docs/components/Tooltip.mdx +501 -138
  83. package/docs/components/Uploader.mdx +205 -351
  84. package/package.json +1 -1
  85. package/dist/components/AuthGuard/AuthGuard.d.ts +0 -35
  86. package/dist/components/AuthGuard/index.d.ts +0 -1
  87. package/docs/adk-components.md +0 -319
  88. package/docs/adk-quick-start.md +0 -268
@@ -1,533 +1,409 @@
1
- ### **Import**
2
-
3
- ```tsx
4
- import { Modal } from '@app-studio/web';
5
- ```
6
-
7
- ### **Default**
8
-
9
- It uses the isOpen and onClose properties to display the modal.
10
-
11
- ```tsx
12
- import { Button } from '../Button/Button';
13
- import { useState } from 'react';
14
-
15
- const [show, setShow] = useState(false);
16
-
17
- <>
18
- <Button onClick={() => setShow(true)} isAuto>
19
- Open Modal
20
- </Button>
21
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)}>
22
- <Modal.Container>
23
- <Modal.Header>Title</Modal.Header>
24
- <Modal.Body>
25
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
26
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
27
- nisl consectetur et.
28
- </Modal.Body>
29
- <Modal.Footer>
30
- <Button onClick={() => setShow(false)}>Cancel</Button>
31
- </Modal.Footer>
32
- </Modal.Container>
33
- </Modal.Overlay>
34
- </>;
35
- ```
36
-
37
- ## **Modal Overlay**
38
-
39
- It represents the overlay or backdrop that appears behind the modal content when the modal is displayed.
40
-
41
- ### **Props**
42
-
43
- | Prop | Type | Description | Default |
44
- | ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------- |
45
- | isOpen | boolean | Whether the modal overlay is open. | false |
46
- | onClose | function | Callback function to close the modal. | |
47
- | position | Position | Positions the modal overlay ('top', 'left', 'right', 'bottom', 'center'). | 'center' |
48
- | blur | number | Adds a blur effect on the modal overlay. | |
49
- | isClosePrevented | boolean | Prevents the user from closing the modal when clicking outside of it. | false |
50
- | styles | CSSProperties | Optional custom styles for the ModalOverlay. | |
51
- | className | string | Optional className for the ModalOverlay container. | |
52
-
53
- ### **Props**
1
+ # Modal
54
2
 
55
- | Prop | Type | Description | Default |
56
- | ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------- |
57
- | isOpen | boolean | Whether the modal overlay is open. | false |
58
- | onClose | function | Callback function to close the modal. | |
59
- | position | Position | Positions the modal overlay ('top', 'left', 'right', 'bottom', 'center'). | 'center' |
60
- | blur | number | Adds a blur effect on the modal overlay. | |
61
- | isClosePrevented | boolean | Prevents the user from closing the modal when clicking outside of it. | false |
62
- | styles | CSSProperties | Optional custom styles for the ModalOverlay. | |
63
- | className | string | Optional className for the ModalOverlay container. | |
64
-
65
- ### **FullScreen**
66
-
67
- “**is*fullScreen***” property changes the width and height of the modal so that it fits the entire screen.
3
+ A custom content overlay that appears on top of the main screen, with support for headers, bodies, footers, and flexible positioning.
68
4
 
5
+ ### **Import**
69
6
  ```tsx
70
- import { Button } from '../Button/Button';
71
- import { useState } from 'react';
72
-
73
- const [show, setShow] = useState(false);
74
-
75
- <>
76
- <Button onClick={() => setShow(true)} isAuto>
77
- Full Screen
78
- </Button>
79
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)}>
80
- <Modal.Container isFullScreen>
81
- <Modal.Header>Title</Modal.Header>
82
- <Modal.Body>
83
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
84
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
85
- nisl consectetur et.
86
- </Modal.Body>
87
- <Modal.Footer>
88
- <Button onClick={() => setShow(false)}>Cancel</Button>
89
- </Modal.Footer>
90
- </Modal.Container>
91
- </Modal.Overlay>
92
- </>;
7
+ import { Modal, useModalStore } from '@app-studio/web';
93
8
  ```
94
9
 
95
- ### **Position**
96
-
97
- “**_position_**” places the modal in the specified direction. It has a default positioning of “center”.
98
-
10
+ ### **Default**
99
11
  ```tsx
100
- import { useState } from 'react';
101
- import { Button } from '../Button/Button';
102
- import { Horizontal } from '../Layout/Horizontal/Horizontal';
103
-
104
- const [showTop, setShowTop] = useState(false);
105
- const [showBottom, setShowBottom] = useState(false);
106
- const [showRight, setShowRight] = useState(false);
107
- const [showLeft, setShowLeft] = useState(false);
108
- const [showCenter, setShowCenter] = useState(false);
109
-
110
- <>
111
- <Horizontal gap={10} flexWrap="nowrap">
112
- <Button onClick={() => setShowTop(true)}>Top</Button>
113
- <Button onClick={() => setShowBottom(true)}>Bottom</Button>
114
- <Button onClick={() => setShowRight(true)}>Right</Button>
115
- <Button onClick={() => setShowLeft(true)}>Left</Button>
116
- <Button onClick={() => setShowCenter(true)}>Center</Button>
117
- </Horizontal>
118
-
119
- {showBottom && (
120
- <Modal.Overlay isOpen={showBottom} onClose={() => setShowBottom(false)} position="bottom">
121
- <Modal.Container>
122
- <Modal.Header>Title</Modal.Header>
123
- <Modal.Body>
124
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
125
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
126
- nisl consectetur et.
127
- </Modal.Body>
128
- <Modal.Footer>
129
- <Button onClick={() => setShowBottom(false)}>Cancel</Button>
130
- </Modal.Footer>
131
- </Modal.Container>
132
- </Modal.Overlay>
133
- )}
134
- {showTop && (
135
- <Modal.Overlay isOpen={showTop} onClose={() => setShowTop(false)} position="top">
136
- <Modal.Container>
137
- <Modal.Header>Title</Modal.Header>
138
- <Modal.Body>
139
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
140
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
141
- nisl consectetur et.
142
- </Modal.Body>
143
- <Modal.Footer>
144
- <Button onClick={() => setShowTop(false)}>Cancel</Button>
145
- </Modal.Footer>
146
- </Modal.Container>
147
- </Modal.Overlay>
148
- )}
149
- {showLeft && (
150
- <Modal.Overlay isOpen={showLeft} onClose={() => setShowLeft(false)} position="left">
151
- <Modal.Container>
152
- <Modal.Header>Title</Modal.Header>
153
- <Modal.Body>
154
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
155
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
156
- nisl consectetur et.
157
- </Modal.Body>
158
- <Modal.Footer>
159
- <Button onClick={() => setShowLeft(false)}>Cancel</Button>
160
- </Modal.Footer>
161
- </Modal.Container>
162
- </Modal.Overlay>
163
- )}
164
- {showRight && (
165
- <Modal.Overlay isOpen={showRight} onClose={() => setShowRight(false)} position="right">
166
- <Modal.Container>
167
- <Modal.Header>Title</Modal.Header>
168
- <Modal.Body>
169
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
170
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
171
- nisl consectetur et.
172
- </Modal.Body>
173
- <Modal.Footer>
174
- <Button onClick={() => setShowRight(false)}>Cancel</Button>
175
- </Modal.Footer>
176
- </Modal.Container>
177
- </Modal.Overlay>
178
- )}
179
- {showCenter && (
180
- <Modal.Overlay isOpen={showCenter} onClose={() => setShowCenter(false)} position="center">
181
- <Modal.Container>
182
- <Modal.Header>Title</Modal.Header>
183
- <Modal.Body>
184
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
185
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
186
- nisl consectetur et.
187
- </Modal.Body>
188
- <Modal.Footer>
189
- <Button onClick={() => setShowCenter(false)}>Cancel</Button>
190
- </Modal.Footer>
191
- </Modal.Container>
192
- </Modal.Overlay>
193
- )}
194
- </>;
12
+ import React, { useState } from 'react';
13
+ import { Modal } from '@app-studio/web';
14
+ import { Button, Text } from 'app-studio';
15
+
16
+ export const DefaultModal = () => {
17
+ const [isOpen, setIsOpen] = useState(false);
18
+
19
+ return (
20
+ <>
21
+ <Button onClick={() => setIsOpen(true)}>Open Modal</Button>
22
+
23
+ <Modal>
24
+ <Modal.Overlay isOpen={isOpen} onClose={() => setIsOpen(false)}>
25
+ <Modal.Container>
26
+ <Modal.Header onClose={() => setIsOpen(false)}>
27
+ <Text>Modal Title</Text>
28
+ </Modal.Header>
29
+ <Modal.Body>
30
+ <Text>Modal content goes here</Text>
31
+ </Modal.Body>
32
+ <Modal.Footer>
33
+ <Button onClick={() => setIsOpen(false)}>Close</Button>
34
+ </Modal.Footer>
35
+ </Modal.Container>
36
+ </Modal.Overlay>
37
+ </Modal>
38
+ </>
39
+ );
40
+ };
195
41
  ```
196
42
 
197
- ### **Blur**
198
-
199
- “**_blur_**” adds a blur effect on the modal overlay.
43
+ ### **Modal.Layout**
44
+ Centralized modal management system for handling multiple modals.
200
45
 
201
46
  ```tsx
202
- import { useState } from 'react';
203
- import { Button } from '../Button/Button';
204
-
205
- const [show, setShow] = useState(false);
206
-
207
- <>
208
- <Button onClick={() => setShow(true)}>Blur Overlay</Button>
209
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)} blur={10}>
210
- <Modal.Container>
211
- <Modal.Header>Title</Modal.Header>
212
- <Modal.Body>
213
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
214
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
215
- nisl consectetur et.
216
- </Modal.Body>
217
- <Modal.Footer>
218
- <Button onClick={() => setShow(false)}>Cancel</Button>
219
- </Modal.Footer>
220
- </Modal.Container>
221
- </Modal.Overlay>
222
- </>;
47
+ import React from 'react';
48
+ import { Modal } from '@app-studio/web';
49
+ import { Text, Button } from 'app-studio';
50
+
51
+ const WelcomeModal = ({ onClose }) => (
52
+ <Modal.Container>
53
+ <Modal.Header onClose={onClose}>
54
+ <Text>Welcome</Text>
55
+ </Modal.Header>
56
+ <Modal.Body>
57
+ <Text>Welcome to our application!</Text>
58
+ </Modal.Body>
59
+ </Modal.Container>
60
+ );
61
+
62
+ const ConfirmModal = ({ onClose }) => (
63
+ <Modal.Container>
64
+ <Modal.Header onClose={onClose}>
65
+ <Text>Confirm</Text>
66
+ </Modal.Header>
67
+ <Modal.Body>
68
+ <Text>Are you sure?</Text>
69
+ </Modal.Body>
70
+ <Modal.Footer>
71
+ <Button onClick={onClose}>Cancel</Button>
72
+ <Button onClick={onClose}>Confirm</Button>
73
+ </Modal.Footer>
74
+ </Modal.Container>
75
+ );
76
+
77
+ export const ModalLayoutExample = () => (
78
+ <Modal.Layout
79
+ modals={{
80
+ welcome: WelcomeModal,
81
+ confirm: ConfirmModal,
82
+ }}
83
+ />
84
+ );
223
85
  ```
224
86
 
225
- ### **Prevent Close**
87
+ ### **isOpen**
88
+ Controls the visibility of the modal.
226
89
 
227
- “**_isClosePrevented_**” prevents the user from closing the modal when clicking outside of it.
90
+ - **Type:** `boolean`
91
+ - **Required:** `true`
228
92
 
229
93
  ```tsx
230
- import { useState } from 'react';
231
- import { Button } from '../Button/Button';
232
-
233
- const [show, setShow] = useState(false);
234
-
235
- <>
236
- <Button onClick={() => setShow(true)} isAuto>
237
- Prevent Close on Overlay
238
- </Button>
239
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)} isClosePrevented>
240
- <Modal.Container>
241
- <Modal.Header>Title</Modal.Header>
242
- <Modal.Body>
243
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
244
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel scelerisque
245
- nisl consectetur et.
246
- </Modal.Body>
247
- <Modal.Footer>
248
- <Button onClick={() => setShow(false)}>Cancel</Button>
249
- </Modal.Footer>
250
- </Modal.Container>
251
- </Modal.Overlay>
252
- </>;
94
+ import React, { useState } from 'react';
95
+ import { Modal } from '@app-studio/web';
96
+ import { Button, Text } from 'app-studio';
97
+
98
+ export const ControlledModal = () => {
99
+ const [isOpen, setIsOpen] = useState(false);
100
+
101
+ return (
102
+ <>
103
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
104
+ <Modal>
105
+ <Modal.Overlay isOpen={isOpen} onClose={() => setIsOpen(false)}>
106
+ <Modal.Container>
107
+ <Modal.Body>
108
+ <Text>Controlled Modal</Text>
109
+ </Modal.Body>
110
+ </Modal.Container>
111
+ </Modal.Overlay>
112
+ </Modal>
113
+ </>
114
+ );
115
+ };
253
116
  ```
254
117
 
255
- ## **Modal Container**
118
+ ### **onClose**
119
+ Callback function executed when the modal closes.
256
120
 
257
- It represents the main container or wrapper that holds all the content and components of a modal.
258
-
259
- ### **Shapes**
260
-
261
- “**_shape_**” gives a sharp or rounded edges to the modal container.
121
+ - **Type:** `() => void`
122
+ - **Required:** `true`
262
123
 
263
124
  ```tsx
264
- import { useState } from 'react';
265
- import { Button } from '../Button/Button';
266
- import { Text } from '@app-studio/web';
267
- import { Horizontal } from '../Layout/Horizontal/Horizontal';
268
-
269
- const [showSharp, setShowSharp] = useState(false);
270
- const [showRounded, setShowRounded] = useState(false);
271
-
272
- <>
273
- <Horizontal gap={10}>
274
- <Button onClick={() => setShowSharp(true)}>Sharp</Button>
275
- <Button onClick={() => setShowRounded(true)}>Rounded</Button>
276
- </Horizontal>
277
-
278
- {showSharp && (
279
- <Modal.Overlay isOpen={showSharp} onClose={() => setShowSharp(false)}>
280
- <Modal.Container variant="sharp">
281
- <Modal.Body>
282
- <Text maxLines={2}>
283
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget
284
- quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel
285
- scelerisque nisl consectetur et.
286
- </Text>
287
- </Modal.Body>
288
- </Modal.Container>
289
- </Modal.Overlay>
290
- )}
291
- {showRounded && (
292
- <Modal.Overlay isOpen={showRounded} onClose={() => setShowRounded(false)}>
293
- <Modal.Container variant="rounded">
294
- <Modal.Body>
295
- <Text maxLines={2}>
296
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget
297
- quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel
298
- scelerisque nisl consectetur et.
299
- </Text>
300
- </Modal.Body>
301
- </Modal.Container>
302
- </Modal.Overlay>
303
- )}
304
- </>;
125
+ import React, { useState } from 'react';
126
+ import { Modal } from '@app-studio/web';
127
+ import { Button, Text } from 'app-studio';
128
+
129
+ export const CloseCallbackModal = () => {
130
+ const [isOpen, setIsOpen] = useState(false);
131
+
132
+ return (
133
+ <>
134
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
135
+ <Modal>
136
+ <Modal.Overlay
137
+ isOpen={isOpen}
138
+ onClose={() => {
139
+ console.log('Modal closing');
140
+ setIsOpen(false);
141
+ }}
142
+ >
143
+ <Modal.Container>
144
+ <Modal.Body>
145
+ <Text>Click outside to close</Text>
146
+ </Modal.Body>
147
+ </Modal.Container>
148
+ </Modal.Overlay>
149
+ </Modal>
150
+ </>
151
+ );
152
+ };
305
153
  ```
306
154
 
307
- ### **Shadow**
155
+ ### **isClosePrevented**
156
+ Prevents the modal from closing when clicking the overlay.
308
157
 
309
- “**_shadow_**” adds a shadow effect on the modal container.
158
+ - **Type:** `boolean`
159
+ - **Default:** `false`
310
160
 
311
161
  ```tsx
312
- import { useState } from 'react';
313
- import { Button } from '../Button/Button';
314
- import { Text } from '@app-studio/web';
315
-
316
- const [show, setShow] = useState(false);
317
-
318
- <>
319
- <Button onClick={() => setShow(true)}>Shadow</Button>
320
-
321
- {show && (
322
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)}>
323
- <Modal.Container shadow={{ boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.6)' }}>
324
- <Modal.Body>
325
- <Text maxLines={2}>
326
- Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget
327
- quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna, vel
328
- scelerisque nisl consectetur et.
329
- </Text>
330
- </Modal.Body>
331
- </Modal.Container>
332
- </Modal.Overlay>
333
- )}
334
- </>;
162
+ import React, { useState } from 'react';
163
+ import { Modal } from '@app-studio/web';
164
+ import { Button, Text } from 'app-studio';
165
+
166
+ export const PreventCloseModal = () => {
167
+ const [isOpen, setIsOpen] = useState(false);
168
+
169
+ return (
170
+ <>
171
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
172
+ <Modal>
173
+ <Modal.Overlay
174
+ isOpen={isOpen}
175
+ onClose={() => setIsOpen(false)}
176
+ isClosePrevented
177
+ >
178
+ <Modal.Container>
179
+ <Modal.Header onClose={() => setIsOpen(false)}>
180
+ <Text>Must use close button</Text>
181
+ </Modal.Header>
182
+ <Modal.Body>
183
+ <Text>Click outside won't close this modal</Text>
184
+ </Modal.Body>
185
+ </Modal.Container>
186
+ </Modal.Overlay>
187
+ </Modal>
188
+ </>
189
+ );
190
+ };
335
191
  ```
336
192
 
337
- ## **Modal Header**
338
-
339
- It represents the header section of a modal, which typically contains a title or heading and optionally other elements such as a close button or additional controls.
193
+ ### **position**
194
+ Positioning of the modal container.
340
195
 
341
- ### **Close Button Alignment**
342
-
343
- “**_buttonPosition_**” places the closing button found in the header modal in the specified direction. It has a default position of “**right**”.
196
+ - **Type:** `Position`
197
+ - **Possible Values:** `'center' | 'top' | 'bottom' | 'left' | 'right'`
344
198
 
345
199
  ```tsx
346
- import { useState } from 'react';
347
- import { Button } from '../Button/Button';
348
- import { Horizontal } from '../Layout/Horizontal/Horizontal';
349
-
350
- const [showRight, setShowRight] = useState(false);
351
- const [showWithout, setShowWithout] = useState(false);
352
- const [showLeft, setShowLeft] = useState(false);
353
-
354
- <>
355
- <Horizontal gap={10}>
356
- <Button onClick={() => setShowRight(true)} isAuto>
357
- Close button on the right
358
- </Button>
359
- <Button onClick={() => setShowWithout(true)} isAuto>
360
- Without Close Button
361
- </Button>
362
- <Button onClick={() => setShowLeft(true)} isAuto>
363
- Without Close left
364
- </Button>
365
- </Horizontal>
366
- {showRight && (
367
- <Modal.Overlay isOpen={showRight} onClose={() => setShowRight(false)}>
368
- <Modal.Container>
369
- <Modal.Header> Close Button</Modal.Header>
370
- <Modal.Body>Cras mattis consectetur purus sit amet fermentum.</Modal.Body>
371
- <Modal.Footer>
372
- <Button onClick={() => setShowRight(false)}>Cancel</Button>
373
- </Modal.Footer>
374
- </Modal.Container>
375
- </Modal.Overlay>
376
- )}
377
- {showWithout && (
378
- <Modal.Overlay isOpen={showWithout} onClose={() => setShowWithout(false)}>
379
- <Modal.Container>
380
- <Modal.Header buttonPosition="none"> Close Button</Modal.Header>
381
- <Modal.Body>Cras mattis consectetur purus sit amet fermentum.</Modal.Body>
382
- <Modal.Footer>
383
- <Button onClick={() => setShowWithout(false)}>Cancel</Button>
384
- </Modal.Footer>
385
- </Modal.Container>
386
- </Modal.Overlay>
387
- )}
388
- {showLeft && (
389
- <Modal.Overlay isOpen={showLeft} onClose={() => setShowLeft(false)}>
390
- <Modal.Container>
391
- <Modal.Header buttonPosition="left">Close Button</Modal.Header>
392
- <Modal.Body>Cras mattis consectetur purus sit amet fermentum.</Modal.Body>
393
- <Modal.Footer>
394
- <Button onClick={() => setShowLeft(false)}>Cancel</Button>
395
- </Modal.Footer>
396
- </Modal.Container>
397
- </Modal.Overlay>
398
- )}
399
- </>;
200
+ import React, { useState } from 'react';
201
+ import { Modal } from '@app-studio/web';
202
+ import { Button, Text, Horizontal } from 'app-studio';
203
+
204
+ export const PositionedModals = () => {
205
+ const [position, setPosition] = useState<string | null>(null);
206
+
207
+ return (
208
+ <>
209
+ <Horizontal gap={10}>
210
+ {['center', 'top', 'bottom', 'left', 'right'].map((pos) => (
211
+ <Button key={pos} onClick={() => setPosition(pos)}>
212
+ {pos}
213
+ </Button>
214
+ ))}
215
+ </Horizontal>
216
+
217
+ <Modal>
218
+ <Modal.Overlay
219
+ isOpen={!!position}
220
+ onClose={() => setPosition(null)}
221
+ position={position as any}
222
+ >
223
+ <Modal.Container>
224
+ <Modal.Body>
225
+ <Text>Positioned at {position}</Text>
226
+ </Modal.Body>
227
+ </Modal.Container>
228
+ </Modal.Overlay>
229
+ </Modal>
230
+ </>
231
+ );
232
+ };
400
233
  ```
401
234
 
402
- ## **Modal Body**
403
-
404
- It represents the main content area of a modal, where the primary information or user interaction elements are displayed.
235
+ ### **blur**
236
+ The degree of blurriness applied to the overlay.
405
237
 
406
- ### **LargeContent**
407
-
408
- A vertical scroll is displayed, if the content height exceed the body height.
238
+ - **Type:** `number`
409
239
 
410
240
  ```tsx
411
- import { useState } from 'react';
412
- import { Button } from '../Button/Button';
413
- import { Text } from '@app-studio/web';
414
-
415
- const [show, setShow] = useState(false);
416
-
417
- <>
418
- <Button onClick={() => setShow(true)}>Scroll</Button>
419
- {show && (
420
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)}>
421
- <Modal.Container>
422
- <Modal.Header buttonPosition="none">
423
- <Text size="lg" weight="semibold">
424
- Title
425
- </Text>
426
- </Modal.Header>
427
- <Modal.Body height="200px">
428
- Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis
429
- consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur
430
- purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit
431
- amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet Cras
432
- mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis
433
- consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur
434
- purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit
435
- amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet
436
- fermentum.Cras mattis consectetur purus sit amet fermentum.
437
- </Modal.Body>
438
- <Modal.Footer>
439
- <Button onClick={() => setShow(false)}>Cancel</Button>
440
- </Modal.Footer>
441
- </Modal.Container>
442
- </Modal.Overlay>
443
- )}
444
- </>;
241
+ import React, { useState } from 'react';
242
+ import { Modal } from '@app-studio/web';
243
+ import { Button, Text } from 'app-studio';
244
+
245
+ export const BlurredModal = () => {
246
+ const [isOpen, setIsOpen] = useState(false);
247
+
248
+ return (
249
+ <>
250
+ <Button onClick={() => setIsOpen(true)}>Open Blurred Modal</Button>
251
+ <Modal>
252
+ <Modal.Overlay
253
+ isOpen={isOpen}
254
+ onClose={() => setIsOpen(false)}
255
+ blur={10}
256
+ >
257
+ <Modal.Container>
258
+ <Modal.Body>
259
+ <Text>Background is blurred</Text>
260
+ </Modal.Body>
261
+ </Modal.Container>
262
+ </Modal.Overlay>
263
+ </Modal>
264
+ </>
265
+ );
266
+ };
445
267
  ```
446
268
 
447
- ## **Modal Footer**
448
-
449
- It represents the footer section of a modal, which typically contains buttons or controls for actions related to the modal's content.
450
-
451
- ```tsx
452
- import { useState } from 'react';
453
- import { Button } from '../Button/Button';
454
- import { Text } from '@app-studio/web';
455
-
456
- const [show, setShow] = useState(false);
457
-
458
- <>
459
- <Button onClick={() => setShow(true)}>Footer</Button>
460
- {show && (
461
- <Modal.Overlay isOpen={show} onClose={() => setShow(false)}>
462
- <Modal.Container>
463
- <Modal.Header buttonPosition="none">
464
- <Text size="lg" weight="semibold">
465
- Title
466
- </Text>
467
- </Modal.Header>
468
- <Modal.Body height="200px">
469
- Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis
470
- consectetur purus sit amet fermentum.Cras mattis consectetur purus sit amet fermentum.Cras mattis consectetur
471
- purus sit amet fermentum.
472
- </Modal.Body>
473
- <Modal.Footer>
474
- <Button onClick={() => setShow(false)}>Cancel</Button>
475
- </Modal.Footer>
476
- </Modal.Container>
477
- </Modal.Overlay>
478
- )}
479
- </>;
480
- ```
269
+ ### **shape**
270
+ Determines whether the modal should have sharp or rounded edges.
481
271
 
482
- ## **Types**
272
+ - **Type:** `Shape`
273
+ - **Possible Values:** `'sharp' | 'rounded' | 'pillShaped'`
483
274
 
484
275
  ```tsx
485
- type Position = 'top' | 'left' | 'right' | 'bottom' | 'center';
276
+ import React, { useState } from 'react';
277
+ import { Modal } from '@app-studio/web';
278
+ import { Button, Text, Horizontal } from 'app-studio';
279
+
280
+ export const ShapedModals = () => {
281
+ const [shape, setShape] = useState<string | null>(null);
282
+
283
+ return (
284
+ <>
285
+ <Horizontal gap={10}>
286
+ {['sharp', 'rounded', 'pillShaped'].map((s) => (
287
+ <Button key={s} onClick={() => setShape(s)}>
288
+ {s}
289
+ </Button>
290
+ ))}
291
+ </Horizontal>
292
+
293
+ <Modal>
294
+ <Modal.Overlay isOpen={!!shape} onClose={() => setShape(null)}>
295
+ <Modal.Container shape={shape as any}>
296
+ <Modal.Body>
297
+ <Text>Shape: {shape}</Text>
298
+ </Modal.Body>
299
+ </Modal.Container>
300
+ </Modal.Overlay>
301
+ </Modal>
302
+ </>
303
+ );
304
+ };
486
305
  ```
487
306
 
488
- ```tsx
489
- type Shape = 'sharp' | 'rounded';
490
- ```
307
+ ### **isFullScreen**
308
+ Makes the modal occupy the full width and height of the screen.
491
309
 
492
- ```tsx
493
- type CloseButtonPosition = 'left' | 'right' | 'none';
494
- ```
310
+ - **Type:** `boolean`
311
+ - **Default:** `false`
495
312
 
496
313
  ```tsx
497
- type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
314
+ import React, { useState } from 'react';
315
+ import { Modal } from '@app-studio/web';
316
+ import { Button, Text } from 'app-studio';
317
+
318
+ export const FullScreenModal = () => {
319
+ const [isOpen, setIsOpen] = useState(false);
320
+
321
+ return (
322
+ <>
323
+ <Button onClick={() => setIsOpen(true)}>Open Fullscreen</Button>
324
+ <Modal>
325
+ <Modal.Overlay isOpen={isOpen} onClose={() => setIsOpen(false)}>
326
+ <Modal.Container isFullScreen>
327
+ <Modal.Header onClose={() => setIsOpen(false)}>
328
+ <Text>Fullscreen Modal</Text>
329
+ </Modal.Header>
330
+ <Modal.Body>
331
+ <Text>This modal takes up the entire screen</Text>
332
+ </Modal.Body>
333
+ </Modal.Container>
334
+ </Modal.Overlay>
335
+ </Modal>
336
+ </>
337
+ );
338
+ };
498
339
  ```
499
340
 
500
- ## **Default Styles**
341
+ ### **buttonPosition**
342
+ Position of the close button in the header.
501
343
 
502
- #### **OverlayAlignments**
344
+ - **Type:** `CloseButtonPosition`
345
+ - **Possible Values:** `'left' | 'right' | 'none'`
503
346
 
504
347
  ```tsx
505
- const OverlayAlignments: Record<Position, CSSProperties> = {
506
- center: { justifyContent: 'center', alignItems: 'center' },
507
- top: { justifyContent: 'center' },
508
- right: { justifyContent: 'flex-end', alignItems: 'center' },
509
- bottom: { justifyContent: 'center', alignItems: 'flex-end' },
510
- left: { alignItems: 'center' },
348
+ import React, { useState } from 'react';
349
+ import { Modal } from '@app-studio/web';
350
+ import { Button, Text } from 'app-studio';
351
+
352
+ export const ButtonPositionModal = () => {
353
+ const [isOpen, setIsOpen] = useState(false);
354
+
355
+ return (
356
+ <>
357
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
358
+ <Modal>
359
+ <Modal.Overlay isOpen={isOpen} onClose={() => setIsOpen(false)}>
360
+ <Modal.Container>
361
+ <Modal.Header
362
+ onClose={() => setIsOpen(false)}
363
+ buttonPosition="left"
364
+ >
365
+ <Text>Close button on left</Text>
366
+ </Modal.Header>
367
+ <Modal.Body>
368
+ <Text>Modal content</Text>
369
+ </Modal.Body>
370
+ </Modal.Container>
371
+ </Modal.Overlay>
372
+ </Modal>
373
+ </>
374
+ );
511
375
  };
512
376
  ```
513
377
 
514
- #### **ContainerShapes**
378
+ ### **shadow**
379
+ Applies a shadow effect to the modal.
515
380
 
516
- ```tsx
517
- const ContainerShapes: Record<Shape, CSSProperties> = {
518
- sharp: { borderRadius: 0 },
519
- rounded: { borderRadius: 4 },
520
- };
521
- ```
522
-
523
- #### **HeaderIconSizes**
381
+ - **Type:** `Shadow | Elevation | ViewProps`
524
382
 
525
383
  ```tsx
526
- const HeaderIconSizes: Record<Size, number> = {
527
- xs: 12,
528
- sm: 16,
529
- md: 20,
530
- lg: 24,
531
- xl: 28,
384
+ import React, { useState } from 'react';
385
+ import { Modal } from '@app-studio/web';
386
+ import { Button, Text } from 'app-studio';
387
+
388
+ export const ShadowModal = () => {
389
+ const [isOpen, setIsOpen] = useState(false);
390
+
391
+ return (
392
+ <>
393
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
394
+ <Modal>
395
+ <Modal.Overlay isOpen={isOpen} onClose={() => setIsOpen(false)}>
396
+ <Modal.Container
397
+ shadow={{ boxShadow: '0 20px 60px rgba(0,0,0,0.3)' }}
398
+ >
399
+ <Modal.Body>
400
+ <Text>Modal with custom shadow</Text>
401
+ </Modal.Body>
402
+ </Modal.Container>
403
+ </Modal.Overlay>
404
+ </Modal>
405
+ </>
406
+ );
532
407
  };
533
408
  ```
409
+