@pushwoosh/dumb-components 1.1.148 → 1.1.149

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 (323) hide show
  1. package/AccessForbidden/AccessForbidden.d.ts +3 -0
  2. package/AccessForbidden/AccessForbidden.js +3 -0
  3. package/Alert/Alert.d.ts +7 -0
  4. package/Alert/Alert.js +7 -0
  5. package/Alert/types.d.ts +6 -0
  6. package/ApplicationPreloader/ApplicationPreloader.d.ts +8 -0
  7. package/ApplicationPreloader/ApplicationPreloader.js +6 -0
  8. package/Badge/Badge.d.ts +6 -0
  9. package/Badge/Badge.js +6 -0
  10. package/Badge/types.d.ts +6 -0
  11. package/Banner/Banner.d.ts +7 -0
  12. package/Banner/Banner.js +7 -0
  13. package/Banner/types.d.ts +16 -0
  14. package/Button/Button.d.ts +19 -0
  15. package/Button/GhostButton.d.ts +1 -0
  16. package/Button/GhostButton.js +1 -0
  17. package/Button/RemoveButton.d.ts +6 -0
  18. package/Button/RemoveButton.js +6 -0
  19. package/Button/types.d.ts +21 -0
  20. package/Calendar/CalendarDropdown/CalendarDropdown.d.ts +12 -0
  21. package/Calendar/CalendarDropdown/CalendarDropdown.js +12 -0
  22. package/Calendar/CalendarDropdown/helpers.d.ts +4 -0
  23. package/Calendar/CalendarDropdown/helpers.js +4 -0
  24. package/Calendar/CalendarDropdown/types.d.ts +33 -0
  25. package/Calendar/CalendarSuperForm/CalendarSuperForm.d.ts +7 -0
  26. package/Calendar/CalendarSuperForm/CalendarSuperForm.js +7 -0
  27. package/Calendar/CalendarSuperForm/types.d.ts +36 -10
  28. package/Calendar/helpers.d.ts +10 -0
  29. package/Calendar/helpers.js +10 -0
  30. package/Calendar/types.d.ts +16 -1
  31. package/CardMetric/CardMetric.d.ts +7 -0
  32. package/CardMetric/CardMetric.js +7 -0
  33. package/CardMetric/types.d.ts +13 -0
  34. package/Checkbox/Checkbox.d.ts +6 -0
  35. package/Checkbox/Checkbox.js +6 -0
  36. package/Checkbox/types.d.ts +13 -0
  37. package/Chip/Chip.d.ts +7 -0
  38. package/Chip/Chip.js +7 -0
  39. package/Chip/Chip.types.d.ts +9 -0
  40. package/CodeEditor/CodeEditor.d.ts +7 -0
  41. package/CodeEditor/CodeEditor.js +7 -0
  42. package/CodeEditor/languages/html.d.ts +1 -0
  43. package/CodeEditor/languages/html.js +1 -0
  44. package/CodeEditor/languages/json.d.ts +1 -0
  45. package/CodeEditor/languages/json.js +1 -0
  46. package/CodeEditor/languages/liquid.d.ts +1 -0
  47. package/CodeEditor/languages/liquid.js +1 -0
  48. package/CodeEditor/types.d.ts +11 -0
  49. package/CrashScreen/CrashScreen.d.ts +4 -0
  50. package/CrashScreen/CrashScreen.js +4 -0
  51. package/DateTimePicker/components/DatePicker/DatePicker.d.ts +5 -0
  52. package/DateTimePicker/components/DatePicker/DatePicker.js +5 -0
  53. package/DateTimePicker/components/DatePicker/types.d.ts +9 -0
  54. package/DateTimePicker/components/DatePickerField/DatePickerField.d.ts +5 -0
  55. package/DateTimePicker/components/DatePickerField/DatePickerField.js +5 -0
  56. package/DateTimePicker/components/DatePickerField/types.d.ts +9 -0
  57. package/DateTimePicker/components/DateTimePicker/DateTimePicker.d.ts +5 -0
  58. package/DateTimePicker/components/DateTimePicker/DateTimePicker.js +5 -0
  59. package/DateTimePicker/components/DateTimePicker/types.d.ts +6 -0
  60. package/DateTimePicker/components/DateTimePickerField/DateTimePickerField.d.ts +5 -0
  61. package/DateTimePicker/components/DateTimePickerField/DateTimePickerField.js +5 -0
  62. package/DateTimePicker/components/DateTimePickerField/types.d.ts +9 -0
  63. package/DateTimePicker/types.d.ts +5 -0
  64. package/Drawer/components/Drawer/Drawer.d.ts +11 -0
  65. package/Drawer/components/Drawer/Drawer.js +11 -0
  66. package/Drawer/components/Drawer/types.d.ts +9 -0
  67. package/Drawer/components/DrawerContent/styles.d.ts +3 -0
  68. package/Drawer/components/DrawerContent/styles.js +3 -0
  69. package/Drawer/components/DrawerDocs/DrawerDocs.d.ts +7 -0
  70. package/Drawer/components/DrawerDocs/DrawerDocs.js +7 -0
  71. package/Drawer/components/DrawerDocs/hooks.d.ts +4 -0
  72. package/Drawer/components/DrawerDocs/hooks.js +4 -0
  73. package/Drawer/components/DrawerDocs/types.d.ts +4 -0
  74. package/DropdownMenu/components/DropdownMenu/DropdownMenu.d.ts +12 -0
  75. package/DropdownMenu/components/DropdownMenu/DropdownMenu.js +12 -0
  76. package/DropdownMenu/components/DropdownMenu/types.d.ts +15 -0
  77. package/DropdownMenu/components/DropdownMenuButton/DropdownMenuButton.d.ts +8 -0
  78. package/DropdownMenu/components/DropdownMenuButton/DropdownMenuButton.js +8 -0
  79. package/DropdownMenu/components/DropdownMenuButton/types.d.ts +16 -0
  80. package/DropdownMenu/components/DropdownMenuItem/DropdownMenuItem.d.ts +7 -0
  81. package/DropdownMenu/components/DropdownMenuItem/DropdownMenuItem.js +7 -0
  82. package/DropdownMenu/components/DropdownMenuItem/types.d.ts +6 -0
  83. package/DropdownMenu/components/DropdownMenuSection/DropdownMenuSection.d.ts +8 -0
  84. package/DropdownMenu/components/DropdownMenuSection/DropdownMenuSection.js +8 -0
  85. package/DropdownMenu/components/DropdownMenuSection/types.d.ts +3 -0
  86. package/DropdownMenu/components/DropdownMenuSubmenu/DropdownMenuSubmenu.d.ts +9 -0
  87. package/DropdownMenu/components/DropdownMenuSubmenu/DropdownMenuSubmenu.js +9 -0
  88. package/DropdownMenu/components/DropdownMenuSubmenu/types.d.ts +5 -0
  89. package/EditableField/EditableField.d.ts +9 -0
  90. package/EditableField/EditableField.js +9 -0
  91. package/EditableField/types.d.ts +12 -0
  92. package/EmailTemplatePreview/EmailTemplatePreview.d.ts +7 -0
  93. package/EmailTemplatePreview/EmailTemplatePreview.js +7 -0
  94. package/EmailTemplatePreview/components/NoEmailTemplatePreview/NoEmailTemplatePreview.d.ts +4 -0
  95. package/EmailTemplatePreview/components/NoEmailTemplatePreview/NoEmailTemplatePreview.js +4 -0
  96. package/EmailTemplatePreview/helpers.d.ts +8 -0
  97. package/EmailTemplatePreview/helpers.js +8 -0
  98. package/EmailTemplatePreview/types.d.ts +7 -0
  99. package/EnhancedInput/EnhancedInput.d.ts +7 -0
  100. package/EnhancedInput/EnhancedInput.js +7 -0
  101. package/EnhancedInput/SearchInput.d.ts +6 -0
  102. package/EnhancedInput/SearchInput.js +6 -0
  103. package/EnhancedInput/types.d.ts +5 -0
  104. package/ExportResult/ExportResult.d.ts +7 -0
  105. package/ExportResult/ExportResult.js +7 -0
  106. package/ExportResult/types.d.ts +7 -0
  107. package/ExternalImagePreview/ExternalImagePreview.d.ts +7 -0
  108. package/ExternalImagePreview/ExternalImagePreview.js +7 -0
  109. package/ExternalImagePreview/types.d.ts +7 -0
  110. package/FieldBox/FieldBox.d.ts +9 -0
  111. package/FieldBox/FieldBox.js +9 -0
  112. package/FieldBox/types.d.ts +10 -0
  113. package/FrequencyCapping/FrequencyCappingEdit.d.ts +7 -0
  114. package/FrequencyCapping/FrequencyCappingEdit.js +7 -0
  115. package/FrequencyCapping/FrequencyCappingInApps.d.ts +7 -0
  116. package/FrequencyCapping/FrequencyCappingInApps.js +7 -0
  117. package/FrequencyCapping/FrequencyCappingReadonly.d.ts +3 -0
  118. package/FrequencyCapping/FrequencyCappingReadonly.js +3 -0
  119. package/FrequencyCapping/types.d.ts +37 -0
  120. package/FrequencyCapping/types.js +1 -0
  121. package/GetStartedPage/GetStartedPage.d.ts +7 -0
  122. package/GetStartedPage/GetStartedPage.js +7 -0
  123. package/GetStartedPage/types.d.ts +7 -0
  124. package/InputFile/InputFile.d.ts +7 -0
  125. package/InputFile/InputFile.js +7 -0
  126. package/InputFile/types.d.ts +18 -0
  127. package/Link/Link.d.ts +18 -0
  128. package/Link/types.d.ts +17 -0
  129. package/Modal/components/Modal/Modal.d.ts +11 -0
  130. package/Modal/components/Modal/Modal.js +11 -0
  131. package/Modal/components/Modal/types.d.ts +6 -0
  132. package/Modal/components/ModalConfirm/ModalConfirm.d.ts +8 -0
  133. package/Modal/components/ModalConfirm/ModalConfirm.js +8 -0
  134. package/Modal/components/ModalConfirm/ModalConfirmProvider.d.ts +7 -0
  135. package/Modal/components/ModalConfirm/ModalConfirmProvider.js +7 -0
  136. package/Modal/components/ModalConfirm/hooks.d.ts +8 -0
  137. package/Modal/components/ModalConfirm/hooks.js +8 -0
  138. package/Modal/components/ModalConfirm/types.d.ts +16 -0
  139. package/Modal/components/ModalContent/styles.d.ts +5 -0
  140. package/Modal/components/ModalContent/styles.js +5 -0
  141. package/Modal/components/ModalTitle/ModalTitle.d.ts +6 -0
  142. package/Modal/components/ModalTitle/ModalTitle.js +6 -0
  143. package/Modal/components/ModalTitle/types.d.ts +3 -0
  144. package/NotificationInbox/NotificationBar.d.ts +7 -0
  145. package/NotificationInbox/NotificationBar.js +7 -0
  146. package/NotificationInbox/NotificationBell.d.ts +7 -0
  147. package/NotificationInbox/NotificationBell.js +7 -0
  148. package/NotificationInbox/NotificationInbox.d.ts +7 -0
  149. package/NotificationInbox/NotificationInbox.js +7 -0
  150. package/NotificationInbox/types.d.ts +31 -0
  151. package/NumberPicker/NumberPicker.d.ts +7 -0
  152. package/NumberPicker/NumberPicker.js +7 -0
  153. package/NumberPicker/types.d.ts +12 -0
  154. package/PageHeader/components/AutosizeInput/AutosizeInput.d.ts +7 -0
  155. package/PageHeader/components/AutosizeInput/AutosizeInput.js +7 -0
  156. package/PageHeader/components/AutosizeInput/types.d.ts +7 -0
  157. package/PageHeader/components/PageHeader/PageHeader.d.ts +7 -0
  158. package/PageHeader/components/PageHeader/PageHeader.js +7 -0
  159. package/PageHeader/components/PageHeader/types.d.ts +13 -0
  160. package/PageHeader/components/PageHeaderEditable/PageHeaderEditable.d.ts +7 -0
  161. package/PageHeader/components/PageHeaderEditable/PageHeaderEditable.js +7 -0
  162. package/PageHeader/components/PageHeaderEditable/types.d.ts +19 -0
  163. package/Pagination/Pagination.d.ts +7 -0
  164. package/Pagination/Pagination.js +7 -0
  165. package/Pagination/types.d.ts +7 -0
  166. package/Popover/Popover.d.ts +10 -0
  167. package/Popover/Popover.js +10 -0
  168. package/Popover/styles.d.ts +1 -0
  169. package/Popover/styles.js +1 -0
  170. package/Popover/types.d.ts +9 -0
  171. package/ProgressBar/ProgressBar.d.ts +6 -0
  172. package/ProgressBar/ProgressBar.js +6 -0
  173. package/ProgressBar/types.d.ts +7 -0
  174. package/PushPreview/PushPreview.d.ts +7 -0
  175. package/PushPreview/PushPreview.js +7 -0
  176. package/PushPreview/types.d.ts +17 -0
  177. package/Radio/Radio.d.ts +7 -0
  178. package/Radio/Radio.js +7 -0
  179. package/Radio/types.d.ts +14 -0
  180. package/RadioCard/RadioCard.d.ts +7 -0
  181. package/RadioCard/RadioCard.js +7 -0
  182. package/RadioCard/types.d.ts +7 -0
  183. package/ReCaptcha/ReCaptcha.d.ts +8 -0
  184. package/ReCaptcha/ReCaptcha.js +8 -0
  185. package/ReCaptcha/helpers.d.ts +4 -0
  186. package/ReCaptcha/helpers.js +4 -0
  187. package/ReCaptcha/hooks.d.ts +4 -0
  188. package/ReCaptcha/hooks.js +4 -0
  189. package/ReCaptcha/types.d.ts +5 -0
  190. package/RichMessageEditor/RichMessageEditor.d.ts +8 -0
  191. package/RichMessageEditor/RichMessageEditor.js +8 -0
  192. package/RichMessageEditor/RichMessageEditor.types.d.ts +10 -0
  193. package/RichMessageEditor/RichMessageViewer.d.ts +10 -0
  194. package/RichMessageEditor/RichMessageViewer.js +7 -0
  195. package/RichMessageEditor/slate/types.d.ts +5 -0
  196. package/RichMessageEditor/types.d.ts +1 -0
  197. package/RichmediaPreview/RichmediaPreview.d.ts +7 -0
  198. package/RichmediaPreview/RichmediaPreview.js +7 -0
  199. package/RichmediaPreview/hooks.d.ts +4 -0
  200. package/RichmediaPreview/hooks.js +4 -0
  201. package/RichmediaPreview/types.d.ts +13 -0
  202. package/Select/Select.d.ts +22 -0
  203. package/Select/Select.js +22 -0
  204. package/Select/constants.d.ts +1 -0
  205. package/Select/constants.js +1 -0
  206. package/Select/types.d.ts +19 -0
  207. package/SendRate/SendRateEdit.d.ts +7 -0
  208. package/SendRate/SendRateEdit.js +7 -0
  209. package/SendRate/SendRateReadonly.d.ts +3 -0
  210. package/SendRate/SendRateReadonly.js +3 -0
  211. package/SendRate/types.d.ts +20 -0
  212. package/Skeleton/TextSkeleton.d.ts +6 -0
  213. package/Skeleton/TextSkeleton.js +6 -0
  214. package/Skeleton/styles.d.ts +2 -0
  215. package/Skeleton/styles.js +2 -0
  216. package/Skeleton/types.d.ts +11 -0
  217. package/SortButton/SortButton.d.ts +6 -0
  218. package/SortButton/SortButton.js +6 -0
  219. package/SortButton/types.d.ts +11 -0
  220. package/Spinner/Spinner.d.ts +6 -0
  221. package/Spinner/Spinner.js +6 -0
  222. package/Spinner/types.d.ts +4 -0
  223. package/StatisticCard/StatisticCard.d.ts +7 -0
  224. package/StatisticCard/StatisticCard.js +7 -0
  225. package/StatisticCard/types.d.ts +21 -0
  226. package/Switch/Switch.d.ts +6 -0
  227. package/Switch/Switch.js +6 -0
  228. package/Switch/types.d.ts +8 -0
  229. package/Tabs/components/Tab/Tab.d.ts +4 -0
  230. package/Tabs/components/Tab/Tab.js +4 -0
  231. package/Tabs/components/Tab/types.d.ts +6 -0
  232. package/Tabs/components/TabBar/TabBar.d.ts +3 -0
  233. package/Tabs/components/TabBar/TabBar.js +3 -0
  234. package/Tabs/components/TabBar/types.d.ts +2 -0
  235. package/Tabs/components/TabPanel/TabPanel.d.ts +4 -0
  236. package/Tabs/components/TabPanel/TabPanel.js +4 -0
  237. package/Tabs/components/TabPanel/types.d.ts +3 -0
  238. package/Tabs/components/Tabs/Tabs.d.ts +11 -0
  239. package/Tabs/components/Tabs/Tabs.js +11 -0
  240. package/Tabs/components/Tabs/types.d.ts +4 -0
  241. package/Tabs/types.d.ts +4 -0
  242. package/Toast/Toast.d.ts +5 -0
  243. package/Toast/Toast.js +5 -0
  244. package/Toast/ToastProvider.d.ts +7 -0
  245. package/Toast/ToastProvider.js +7 -0
  246. package/Toast/hooks.d.ts +8 -0
  247. package/Toast/hooks.js +8 -0
  248. package/Toast/types.d.ts +24 -0
  249. package/Tooltip/Tooltip.d.ts +7 -0
  250. package/Tooltip/Tooltip.js +7 -0
  251. package/Tooltip/TooltipTrigger.d.ts +13 -0
  252. package/Tooltip/TooltipTrigger.js +7 -0
  253. package/Tooltip/types.d.ts +12 -0
  254. package/hooks/useElementWidth.d.ts +4 -3
  255. package/hooks/useElementWidth.js +4 -3
  256. package/hooks/useLayer.d.ts +7 -0
  257. package/hooks/useLayer.js +7 -0
  258. package/hooks/useOnClickOutside.d.ts +7 -0
  259. package/hooks/useOnClickOutside.js +7 -0
  260. package/native/Input.d.ts +3 -0
  261. package/native/Input.js +1 -0
  262. package/native/NativeTimeInput.d.ts +1 -0
  263. package/native/NativeTimeInput.js +1 -0
  264. package/native/Select.d.ts +1 -0
  265. package/native/Select.js +1 -0
  266. package/native/Textarea.d.ts +1 -0
  267. package/native/Textarea.js +1 -0
  268. package/package.json +2 -3
  269. package/polyglot/react.d.ts +19 -0
  270. package/polyglot/react.js +19 -0
  271. package/polyglot/types.d.ts +4 -0
  272. package/shared/dropdownField/FieldInput.d.ts +1 -0
  273. package/shared/dropdownField/FieldInput.js +1 -0
  274. package/shared/dropdownField/FieldShell.d.ts +4 -0
  275. package/shared/dropdownField/FieldShell.js +4 -0
  276. package/shared/dropdownField/SuggestionsDropdown.d.ts +4 -0
  277. package/shared/dropdownField/SuggestionsDropdown.js +4 -0
  278. package/shared/dropdownField/constants.d.ts +1 -0
  279. package/shared/dropdownField/constants.js +1 -0
  280. package/shared/dropdownField/shared.d.ts +7 -0
  281. package/shared/dropdownField/shared.js +7 -0
  282. package/shared/dropdownField/types.d.ts +7 -0
  283. package/shared/dropdownField/useActiveIndex.d.ts +4 -0
  284. package/shared/dropdownField/useActiveIndex.js +4 -0
  285. package/shared/dropdownField/useAsyncItems.d.ts +4 -0
  286. package/shared/dropdownField/useAsyncItems.js +4 -0
  287. package/shared/dropdownField/useDebouncedValue.d.ts +1 -0
  288. package/shared/dropdownField/useDebouncedValue.js +1 -0
  289. package/shared/dropdownField/useDropdownItems.d.ts +4 -0
  290. package/shared/dropdownField/useDropdownItems.js +4 -0
  291. package/shared/dropdownField/useDropdownPosition.d.ts +4 -0
  292. package/shared/dropdownField/useDropdownPosition.js +4 -0
  293. package/shared/dropdownField/useFieldOpenEffects.d.ts +4 -0
  294. package/shared/dropdownField/useFieldOpenEffects.js +4 -0
  295. package/shared/dropdownField/useListNavigation.d.ts +5 -0
  296. package/shared/dropdownField/useListNavigation.js +5 -0
  297. package/Alert/ai-documentation.md +0 -132
  298. package/Badge/ai-documentation.md +0 -155
  299. package/Banner/ai-documentation.md +0 -285
  300. package/Button/ai-documentation.md +0 -247
  301. package/CardMetric/ai-documentation.md +0 -277
  302. package/Checkbox/ai-documentation.md +0 -231
  303. package/Chip/ai-documentation.md +0 -281
  304. package/CodeEditor/ai-documentation.md +0 -350
  305. package/DateTimePicker/ai-documentation.md +0 -400
  306. package/Drawer/ai-documentation.md +0 -417
  307. package/EnhancedInput/ai-documentation.md +0 -352
  308. package/InputFile/ai-documentation.md +0 -420
  309. package/Modal/ai-documentation.md +0 -285
  310. package/PageHeader/ai-documentation.md +0 -511
  311. package/Pagination/ai-documentation.md +0 -509
  312. package/Popover/ai-documentation.md +0 -625
  313. package/ProgressBar/ai-documentation.md +0 -533
  314. package/Radio/ai-documentation.md +0 -243
  315. package/Select/ai-documentation.md +0 -374
  316. package/Skeleton/ai-documentation.md +0 -574
  317. package/Spinner/ai-documentation.md +0 -607
  318. package/Switch/ai-documentation.md +0 -312
  319. package/Tabs/ai-documentation.md +0 -475
  320. package/Toast/ai-documentation.md +0 -220
  321. package/Tooltip/ai-documentation.md +0 -340
  322. package/ai-documentation.md +0 -124
  323. package/native/ai-documentation.md +0 -485
@@ -1,417 +0,0 @@
1
- # Drawer - AI Documentation
2
-
3
- > Auto-generated AI agent documentation for Drawer component system
4
- > Part of @pushwoosh/dumb-components library
5
-
6
- ## Overview
7
-
8
- **Components:** Drawer, DrawerHeader, DrawerTitle, DrawerBody, DrawerDocs
9
- **Import Path:** `import { Drawer, DrawerHeader, DrawerTitle, DrawerBody, DrawerDocs, useDocs } from '@pushwoosh/dumb-components'`
10
- **Files:** Complex nested structure with Drawer, DrawerContent, and DrawerDocs components
11
- **Type:** Layout Component / Overlay Component
12
- **Description:** Slide-out drawer component system for side panels, documentation, and additional content areas
13
-
14
- ## TypeScript Interfaces
15
-
16
- ```typescript
17
- // Main Drawer component
18
- interface DrawerProps {
19
- readonly size: 'small' | 'medium' | 'large' | 'full';
20
- readonly isOpen: boolean;
21
- readonly zIndex?: number;
22
- readonly onClose?: () => any;
23
- readonly withoutLockScreen?: boolean;
24
- readonly closeOnClickOutside?: boolean;
25
- readonly padding?: ContentPadding;
26
- readonly children: ReactNode;
27
- }
28
-
29
- // Content padding configuration
30
- interface ContentPadding {
31
- top?: string;
32
- right?: string;
33
- bottom?: string;
34
- left?: string;
35
- }
36
-
37
- // Drawer size mapping
38
- const drawerSizes = {
39
- small: '380px',
40
- medium: '640px',
41
- large: '980px',
42
- full: '100%',
43
- };
44
- ```
45
-
46
- ## Import & Usage
47
-
48
- **Import:**
49
- ```typescript
50
- import {
51
- Drawer,
52
- DrawerHeader,
53
- DrawerTitle,
54
- DrawerBody,
55
- DrawerDocs,
56
- useDocs
57
- } from '@pushwoosh/dumb-components';
58
- ```
59
-
60
- **Basic Usage:**
61
- ```tsx
62
- function App() {
63
- const [isOpen, setIsOpen] = useState(false);
64
-
65
- return (
66
- <>
67
- <Button onClick={() => setIsOpen(true)}>Open Drawer</Button>
68
-
69
- <Drawer
70
- size="medium"
71
- isOpen={isOpen}
72
- onClose={() => setIsOpen(false)}
73
- >
74
- <DrawerHeader>
75
- <DrawerTitle>Drawer Title</DrawerTitle>
76
- </DrawerHeader>
77
- <DrawerBody>
78
- <p>Drawer content goes here</p>
79
- </DrawerBody>
80
- </Drawer>
81
- </>
82
- );
83
- }
84
- ```
85
-
86
- ## Advanced Examples
87
-
88
- ```tsx
89
- // Settings drawer with form
90
- function SettingsDrawer() {
91
- const [isOpen, setIsOpen] = useState(false);
92
- const [settings, setSettings] = useState({});
93
-
94
- return (
95
- <Drawer
96
- size="large"
97
- isOpen={isOpen}
98
- onClose={() => setIsOpen(false)}
99
- closeOnClickOutside={true}
100
- >
101
- <DrawerHeader>
102
- <DrawerTitle>Application Settings</DrawerTitle>
103
- <Button
104
- color="secondary"
105
- onClick={() => setIsOpen(false)}
106
- >
107
- Close
108
- </Button>
109
- </DrawerHeader>
110
-
111
- <DrawerBody>
112
- <form>
113
- <div>
114
- <label>Theme:</label>
115
- <Select
116
- value={settings.theme}
117
- onChange={(theme) => setSettings(prev => ({ ...prev, theme }))}
118
- options={[
119
- { value: 'light', label: 'Light' },
120
- { value: 'dark', label: 'Dark' }
121
- ]}
122
- />
123
- </div>
124
-
125
- <div>
126
- <Checkbox
127
- label="Enable notifications"
128
- isChecked={settings.notifications}
129
- onChange={(checked) => setSettings(prev => ({ ...prev, notifications: checked }))}
130
- />
131
- </div>
132
-
133
- <Button type="submit" color="primary">
134
- Save Settings
135
- </Button>
136
- </form>
137
- </DrawerBody>
138
- </Drawer>
139
- );
140
- }
141
-
142
- // Documentation drawer
143
- function ComponentDocumentation() {
144
- const { isOpen, open, close } = useDocs();
145
-
146
- return (
147
- <>
148
- <Button onClick={() => open('button-docs')}>
149
- View Button Docs
150
- </Button>
151
-
152
- <DrawerDocs
153
- isOpen={isOpen}
154
- onClose={close}
155
- size="large"
156
- >
157
- <h1>Button Component Documentation</h1>
158
- <p>Detailed documentation content...</p>
159
- </DrawerDocs>
160
- </>
161
- );
162
- }
163
-
164
- // Filter drawer for data tables
165
- function FilterDrawer({ filters, onFiltersChange }) {
166
- const [isOpen, setIsOpen] = useState(false);
167
- const [localFilters, setLocalFilters] = useState(filters);
168
-
169
- const applyFilters = () => {
170
- onFiltersChange(localFilters);
171
- setIsOpen(false);
172
- };
173
-
174
- return (
175
- <Drawer
176
- size="small"
177
- isOpen={isOpen}
178
- onClose={() => setIsOpen(false)}
179
- padding={{ top: '0', right: '0', bottom: '0', left: '0' }}
180
- >
181
- <DrawerHeader>
182
- <DrawerTitle>Filter Results</DrawerTitle>
183
- </DrawerHeader>
184
-
185
- <DrawerBody>
186
- <div style={{ padding: '16px' }}>
187
- {/* Date range filter */}
188
- <div>
189
- <h4>Date Range</h4>
190
- <DatePickerField
191
- value={localFilters.startDate}
192
- onChange={(date) => setLocalFilters(prev => ({ ...prev, startDate: date }))}
193
- />
194
- <DatePickerField
195
- value={localFilters.endDate}
196
- onChange={(date) => setLocalFilters(prev => ({ ...prev, endDate: date }))}
197
- />
198
- </div>
199
-
200
- {/* Status filter */}
201
- <div>
202
- <h4>Status</h4>
203
- {['active', 'inactive', 'pending'].map(status => (
204
- <Checkbox
205
- key={status}
206
- label={status}
207
- isChecked={localFilters.statuses?.includes(status)}
208
- onChange={(checked) => {
209
- const newStatuses = checked
210
- ? [...(localFilters.statuses || []), status]
211
- : localFilters.statuses?.filter(s => s !== status) || [];
212
- setLocalFilters(prev => ({ ...prev, statuses: newStatuses }));
213
- }}
214
- />
215
- ))}
216
- </div>
217
-
218
- <div style={{ marginTop: '24px', display: 'flex', gap: '8px' }}>
219
- <Button color="primary" onClick={applyFilters}>
220
- Apply Filters
221
- </Button>
222
- <Button color="secondary" onClick={() => setIsOpen(false)}>
223
- Cancel
224
- </Button>
225
- </div>
226
- </div>
227
- </DrawerBody>
228
- </Drawer>
229
- );
230
- }
231
-
232
- // Full-size drawer for detailed views
233
- <Drawer
234
- size="full"
235
- isOpen={showDetails}
236
- onClose={() => setShowDetails(false)}
237
- withoutLockScreen={false}
238
- >
239
- <DrawerHeader>
240
- <DrawerTitle>User Profile Details</DrawerTitle>
241
- </DrawerHeader>
242
- <DrawerBody>
243
- {/* Full user profile interface */}
244
- </DrawerBody>
245
- </Drawer>
246
-
247
- // Custom padding drawer
248
- <Drawer
249
- size="medium"
250
- isOpen={isOpen}
251
- onClose={closeDrawer}
252
- padding={{
253
- top: '24px',
254
- right: '32px',
255
- bottom: '24px',
256
- left: '32px'
257
- }}
258
- >
259
- <h2>Custom Padded Content</h2>
260
- </Drawer>
261
- ```
262
-
263
- ## Props Reference
264
-
265
- ### Drawer
266
- | Prop | Type | Default | Description |
267
- |------|------|---------|-------------|
268
- | size | 'small' \| 'medium' \| 'large' \| 'full' | required | Drawer width size |
269
- | isOpen | boolean | required | Whether drawer is visible |
270
- | onClose | () => any | undefined | Close callback function |
271
- | zIndex | number | 10000 | Z-index for drawer overlay |
272
- | withoutLockScreen | boolean | false | Whether to prevent body scrolling |
273
- | closeOnClickOutside | boolean | true | Whether clicking outside closes drawer |
274
- | padding | ContentPadding | undefined | Custom padding for drawer content |
275
- | children | ReactNode | required | Drawer content |
276
-
277
- ### Size Reference
278
- | Size | Width | Best Used For |
279
- |------|-------|---------------|
280
- | small | 380px | Filters, simple forms, navigation |
281
- | medium | 640px | Settings, detailed forms, content |
282
- | large | 980px | Complex interfaces, documentation |
283
- | full | 100% | Full-screen experiences, editors |
284
-
285
- ## Drawer Content Components
286
-
287
- ### DrawerHeader
288
- Container for drawer title and header actions
289
- ```tsx
290
- <DrawerHeader>
291
- <DrawerTitle>Title</DrawerTitle>
292
- <Button onClick={closeDrawer}>Close</Button>
293
- </DrawerHeader>
294
- ```
295
-
296
- ### DrawerTitle
297
- Styled title component for drawer headers
298
- ```tsx
299
- <DrawerTitle>Settings</DrawerTitle>
300
- ```
301
-
302
- ### DrawerBody
303
- Main content area of the drawer
304
- ```tsx
305
- <DrawerBody>
306
- <p>Main content goes here</p>
307
- </DrawerBody>
308
- ```
309
-
310
- ## AI Agent Guidelines
311
-
312
- ### ✅ Recommended Patterns
313
- - Use appropriate size for content complexity (small for filters, large for detailed interfaces)
314
- - Include proper header with title and close action
315
- - Set `closeOnClickOutside={true}` for better UX
316
- - Handle keyboard escape for accessibility
317
- - Use DrawerBody for main content with proper padding
318
- - Include loading states for async content
319
-
320
- ### ❌ Common Mistakes to Avoid
321
- - Don't forget onClose handler - drawer won't be closable
322
- - Don't use full size unless absolutely necessary
323
- - Avoid nesting drawers within each other
324
- - Don't put critical actions only in click-outside areas
325
- - Avoid very complex content in small drawers
326
-
327
- ### Integration Tips
328
- - Works well for settings panels and configuration UIs
329
- - Good for detailed views that don't need full modals
330
- - Effective for documentation and help content
331
- - Can contain forms, lists, and complex interfaces
332
- - Use with consistent animation and z-index management
333
-
334
- ## Common Use Cases
335
-
336
- ### 1. User Settings Panel
337
- ```tsx
338
- function UserSettings() {
339
- const [settingsOpen, setSettingsOpen] = useState(false);
340
-
341
- return (
342
- <Drawer
343
- size="medium"
344
- isOpen={settingsOpen}
345
- onClose={() => setSettingsOpen(false)}
346
- >
347
- <DrawerHeader>
348
- <DrawerTitle>User Settings</DrawerTitle>
349
- </DrawerHeader>
350
- <DrawerBody>
351
- <UserSettingsForm onSave={() => setSettingsOpen(false)} />
352
- </DrawerBody>
353
- </Drawer>
354
- );
355
- }
356
- ```
357
-
358
- ### 2. Navigation Menu
359
- ```tsx
360
- function MobileNavigation() {
361
- const [navOpen, setNavOpen] = useState(false);
362
-
363
- return (
364
- <Drawer
365
- size="small"
366
- isOpen={navOpen}
367
- onClose={() => setNavOpen(false)}
368
- >
369
- <DrawerBody>
370
- <nav>
371
- <Link to="/dashboard" onClick={() => setNavOpen(false)}>Dashboard</Link>
372
- <Link to="/users" onClick={() => setNavOpen(false)}>Users</Link>
373
- <Link to="/settings" onClick={() => setNavOpen(false)}>Settings</Link>
374
- </nav>
375
- </DrawerBody>
376
- </Drawer>
377
- );
378
- }
379
- ```
380
-
381
- ### 3. Documentation Panel
382
- ```tsx
383
- function HelpDrawer() {
384
- const { isOpen, close } = useDocs();
385
-
386
- return (
387
- <DrawerDocs
388
- isOpen={isOpen}
389
- onClose={close}
390
- size="large"
391
- >
392
- <DrawerHeader>
393
- <DrawerTitle>Help Documentation</DrawerTitle>
394
- </DrawerHeader>
395
- <DrawerBody>
396
- <div>
397
- {/* Documentation content */}
398
- </div>
399
- </DrawerBody>
400
- </DrawerDocs>
401
- );
402
- }
403
- ```
404
-
405
- ## Accessibility Features
406
- - **Keyboard Navigation**: Escape key closes drawer
407
- - **Focus Management**: Traps focus within drawer when open
408
- - **Screen Reader Support**: Proper ARIA attributes
409
- - **Body Lock**: Prevents background scrolling when open
410
-
411
- ## Related Components
412
- - Modal - for blocking interactions requiring immediate attention
413
- - Popover - for smaller contextual content
414
- - Tabs - for organizing content within drawers
415
- - Button - for drawer triggers and actions
416
-
417
- ---