@arkyn/components 3.0.1-beta.22 → 3.0.1-beta.23

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 (70) hide show
  1. package/README.md +264 -0
  2. package/dist/bundle.js +1485 -859
  3. package/dist/bundle.umd.cjs +1 -1
  4. package/dist/components/audioUpload/hasFileContent/index.d.ts +13 -0
  5. package/dist/components/audioUpload/hasFileContent/index.d.ts.map +1 -0
  6. package/dist/components/audioUpload/hasFileContent/index.js +26 -0
  7. package/dist/components/audioUpload/index.d.ts +82 -0
  8. package/dist/components/audioUpload/index.d.ts.map +1 -0
  9. package/dist/components/audioUpload/index.js +120 -0
  10. package/dist/components/audioUpload/noFileContent/index.d.ts +12 -0
  11. package/dist/components/audioUpload/noFileContent/index.d.ts.map +1 -0
  12. package/dist/components/audioUpload/noFileContent/index.js +29 -0
  13. package/dist/components/clientOnly.d.ts +86 -0
  14. package/dist/components/clientOnly.d.ts.map +1 -0
  15. package/dist/components/clientOnly.js +86 -0
  16. package/dist/components/fileUpload/hasFileContent/index.d.ts +13 -0
  17. package/dist/components/fileUpload/hasFileContent/index.d.ts.map +1 -0
  18. package/dist/components/fileUpload/hasFileContent/index.js +34 -0
  19. package/dist/components/fileUpload/index.d.ts +94 -0
  20. package/dist/components/fileUpload/index.d.ts.map +1 -0
  21. package/dist/components/fileUpload/index.js +127 -0
  22. package/dist/components/fileUpload/noFileContent/index.d.ts +12 -0
  23. package/dist/components/fileUpload/noFileContent/index.d.ts.map +1 -0
  24. package/dist/components/fileUpload/noFileContent/index.js +29 -0
  25. package/dist/components/imageUpload/hasFileContent/index.d.ts +13 -0
  26. package/dist/components/imageUpload/hasFileContent/index.d.ts.map +1 -0
  27. package/dist/components/imageUpload/hasFileContent/index.js +24 -0
  28. package/dist/components/imageUpload/index.d.ts +114 -0
  29. package/dist/components/imageUpload/index.d.ts.map +1 -0
  30. package/dist/components/imageUpload/index.js +148 -0
  31. package/dist/components/imageUpload/noFileContent/index.d.ts +12 -0
  32. package/dist/components/imageUpload/noFileContent/index.d.ts.map +1 -0
  33. package/dist/components/imageUpload/noFileContent/index.js +29 -0
  34. package/dist/components/table/tableBody/index.d.ts +67 -0
  35. package/dist/components/table/tableBody/index.d.ts.map +1 -0
  36. package/dist/components/table/tableBody/index.js +69 -0
  37. package/dist/components/table/tableCaption/index.d.ts +62 -0
  38. package/dist/components/table/tableCaption/index.d.ts.map +1 -0
  39. package/dist/components/table/tableCaption/index.js +64 -0
  40. package/dist/components/table/tableContainer/index.d.ts +64 -0
  41. package/dist/components/table/tableContainer/index.d.ts.map +1 -0
  42. package/dist/components/table/tableContainer/index.js +66 -0
  43. package/dist/components/table/tableFooter/index.d.ts +45 -0
  44. package/dist/components/table/tableFooter/index.d.ts.map +1 -0
  45. package/dist/components/table/tableFooter/index.js +47 -0
  46. package/dist/components/table/tableHeader/index.d.ts +44 -0
  47. package/dist/components/table/tableHeader/index.d.ts.map +1 -0
  48. package/dist/components/table/tableHeader/index.js +46 -0
  49. package/dist/components/tooltip/index.d.ts.map +1 -1
  50. package/dist/components/tooltip/index.js +1 -1
  51. package/dist/hooks/useDrawer.d.ts +86 -0
  52. package/dist/hooks/useDrawer.d.ts.map +1 -0
  53. package/dist/hooks/useDrawer.js +20 -0
  54. package/dist/hooks/useHydrated.d.ts +76 -0
  55. package/dist/hooks/useHydrated.d.ts.map +1 -0
  56. package/dist/hooks/useHydrated.js +81 -0
  57. package/dist/hooks/useModal.d.ts +81 -0
  58. package/dist/hooks/useModal.d.ts.map +1 -0
  59. package/dist/hooks/useModal.js +20 -0
  60. package/dist/index.d.ts +14 -0
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +14 -0
  63. package/dist/providers/drawerProvider.d.ts +106 -0
  64. package/dist/providers/drawerProvider.d.ts.map +1 -0
  65. package/dist/providers/drawerProvider.js +120 -0
  66. package/dist/providers/modalProvider.d.ts +103 -0
  67. package/dist/providers/modalProvider.d.ts.map +1 -0
  68. package/dist/providers/modalProvider.js +119 -0
  69. package/dist/style.css +1 -1
  70. package/package.json +19 -2
@@ -0,0 +1,81 @@
1
+ import { ModalContextProps } from "../providers/modalProvider";
2
+ type OpenModalProps<T = any> = (data?: T) => void;
3
+ /**
4
+ * useModal hook - provides access to modal context for managing modal state and data
5
+ *
6
+ * @param key - Optional modal identifier key. When provided, returns functions for a specific modal
7
+ *
8
+ * @returns When called without key: Complete modal context with all modal management functions
9
+ * @returns When called with key: Object containing modal-specific functions:
10
+ * - `modalIsOpen`: Boolean indicating if the specific modal is open
11
+ * - `modalData`: Data associated with the specific modal
12
+ * - `openModal`: Function to open the specific modal with optional data
13
+ * - `closeModal`: Function to close the specific modal
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * // Basic usage - access to full modal context
18
+ * function ModalManager() {
19
+ * const modalContext = useModal();
20
+ *
21
+ * return (
22
+ * <div>
23
+ * <button onClick={() => modalContext.openModal('user-details', { id: 1 })}>
24
+ * Open User Modal
25
+ * </button>
26
+ * </div>
27
+ * );
28
+ * }
29
+ *
30
+ * // Usage with specific modal key
31
+ * function UserModal() {
32
+ * const { modalIsOpen, modalData, openModal, closeModal } = useModal('user-details');
33
+ *
34
+ * return (
35
+ * <Modal isOpen={modalIsOpen} onClose={closeModal}>
36
+ * <h2>User Details</h2>
37
+ * <p>User ID: {modalData?.id}</p>
38
+ * <button onClick={closeModal}>Close</button>
39
+ * </Modal>
40
+ * );
41
+ * }
42
+ *
43
+ * // Usage with typed data
44
+ * interface UserData {
45
+ * id: number;
46
+ * name: string;
47
+ * email: string;
48
+ * }
49
+ *
50
+ * function UserProfileModal() {
51
+ * const { modalIsOpen, modalData, closeModal } = useModal<UserData>('user-profile');
52
+ *
53
+ * return (
54
+ * <Modal isOpen={modalIsOpen} onClose={closeModal}>
55
+ * <h2>{modalData?.name}</h2>
56
+ * <p>Email: {modalData?.email}</p>
57
+ * </Modal>
58
+ * );
59
+ * }
60
+ *
61
+ * // Usage with ModalProvider
62
+ * function App() {
63
+ * return (
64
+ * <ModalProvider>
65
+ * <UserModal />
66
+ * <UserProfileModal />
67
+ * <ModalManager />
68
+ * </ModalProvider>
69
+ * );
70
+ * }
71
+ * ```
72
+ */
73
+ declare function useModal<T = any>(): ModalContextProps<T>;
74
+ declare function useModal<T = any>(key: string): {
75
+ modalIsOpen: boolean;
76
+ modalData: T;
77
+ openModal: OpenModalProps<T>;
78
+ closeModal: () => void;
79
+ };
80
+ export { useModal };
81
+ //# sourceMappingURL=useModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModal.d.ts","sourceRoot":"","sources":["../../src/hooks/useModal.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE7E,KAAK,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAEH,iBAAS,QAAQ,CAAC,CAAC,GAAG,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACnD,iBAAS,QAAQ,CAAC,CAAC,GAAG,GAAG,EACvB,GAAG,EAAE,MAAM,GACV;IACD,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC;IACb,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AA6BF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { useContext } from "react";
2
+ import { modalContext } from "../providers/modalProvider";
3
+ function useModal(key) {
4
+ const contextData = useContext(modalContext);
5
+ if (Object.entries(contextData).length === 0) {
6
+ throw new Error("useModal must be used within a Provider");
7
+ }
8
+ if (key) {
9
+ const { modalData: contextModalData, modalIsOpen: contextModalIsOpen, openModal: contextOpenModal, closeModal: contextCloseModal, } = contextData;
10
+ const modalIsOpen = contextModalIsOpen(key);
11
+ const modalData = contextModalData(key);
12
+ const openModal = (data) => contextOpenModal(key, data);
13
+ const closeModal = () => contextCloseModal(key);
14
+ return { modalIsOpen, modalData, openModal, closeModal };
15
+ }
16
+ else {
17
+ return contextData;
18
+ }
19
+ }
20
+ export { useModal };
package/dist/index.d.ts CHANGED
@@ -4,11 +4,13 @@ export { AlertDescription } from "./components/alert/alertDescription";
4
4
  export { AlertIcon } from "./components/alert/alertIcon";
5
5
  export { AlertTitle } from "./components/alert/alertTitle";
6
6
  export { AudioPlayer } from "./components/audioPlayer";
7
+ export { AudioUpload } from "./components/audioUpload";
7
8
  export { Badge } from "./components/badge";
8
9
  export { Button } from "./components/button";
9
10
  export { CardTabButton } from "./components/cardTab/cardTabButton";
10
11
  export { CardTabContainer } from "./components/cardTab/cardTabContainer";
11
12
  export { Checkbox } from "./components/checkbox";
13
+ export { ClientOnly } from "./components/clientOnly";
12
14
  export { CurrencyInput } from "./components/currencyInput";
13
15
  export { Divider } from "./components/divider";
14
16
  export { DrawerContainer } from "./components/drawer/drawerContainer";
@@ -16,7 +18,9 @@ export { DrawerHeader } from "./components/drawer/drawerHeader";
16
18
  export { FieldError } from "./components/fieldError";
17
19
  export { FieldLabel } from "./components/fieldLabel";
18
20
  export { FieldWrapper } from "./components/fieldWrapper";
21
+ export { FileUpload } from "./components/fileUpload";
19
22
  export { IconButton } from "./components/iconButton";
23
+ export { ImageUpload } from "./components/imageUpload";
20
24
  export { Input } from "./components/input";
21
25
  export { MaskedInput } from "./components/maskedInput";
22
26
  export { ModalContainer } from "./components/modal/modalContainer";
@@ -30,11 +34,21 @@ export { Slider } from "./components/slider";
30
34
  export { Switch } from "./components/switch";
31
35
  export { TabButton } from "./components/tab/tabButton";
32
36
  export { TabContainer } from "./components/tab/tabContainer";
37
+ export { TableBody } from "./components/table/tableBody";
38
+ export { TableCaption } from "./components/table/tableCaption";
39
+ export { TableContainer } from "./components/table/tableContainer";
40
+ export { TableFooter } from "./components/table/tableFooter";
41
+ export { TableHeader } from "./components/table/tableHeader";
33
42
  export { Textarea } from "./components/textarea";
34
43
  export { Tooltip } from "./components/tooltip";
44
+ export { useDrawer } from "./hooks/useDrawer";
35
45
  export { useForm } from "./hooks/useForm";
46
+ export { useHydrated } from "./hooks/useHydrated";
47
+ export { useModal } from "./hooks/useModal";
36
48
  export { useScopedParams } from "./hooks/useScopedParams";
37
49
  export { useScrollLock } from "./hooks/useScrollLock";
38
50
  export { useSlider } from "./hooks/useSlider";
51
+ export { DrawerProvider } from "./providers/drawerProvider";
39
52
  export { FormProvider } from "./providers/formProvider";
53
+ export { ModalProvider } from "./providers/modalProvider";
40
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,11 +5,13 @@ export { AlertDescription } from "./components/alert/alertDescription";
5
5
  export { AlertIcon } from "./components/alert/alertIcon";
6
6
  export { AlertTitle } from "./components/alert/alertTitle";
7
7
  export { AudioPlayer } from "./components/audioPlayer";
8
+ export { AudioUpload } from "./components/audioUpload";
8
9
  export { Badge } from "./components/badge";
9
10
  export { Button } from "./components/button";
10
11
  export { CardTabButton } from "./components/cardTab/cardTabButton";
11
12
  export { CardTabContainer } from "./components/cardTab/cardTabContainer";
12
13
  export { Checkbox } from "./components/checkbox";
14
+ export { ClientOnly } from "./components/clientOnly";
13
15
  export { CurrencyInput } from "./components/currencyInput";
14
16
  export { Divider } from "./components/divider";
15
17
  export { DrawerContainer } from "./components/drawer/drawerContainer";
@@ -17,7 +19,9 @@ export { DrawerHeader } from "./components/drawer/drawerHeader";
17
19
  export { FieldError } from "./components/fieldError";
18
20
  export { FieldLabel } from "./components/fieldLabel";
19
21
  export { FieldWrapper } from "./components/fieldWrapper";
22
+ export { FileUpload } from "./components/fileUpload";
20
23
  export { IconButton } from "./components/iconButton";
24
+ export { ImageUpload } from "./components/imageUpload";
21
25
  export { Input } from "./components/input";
22
26
  export { MaskedInput } from "./components/maskedInput";
23
27
  export { ModalContainer } from "./components/modal/modalContainer";
@@ -31,12 +35,22 @@ export { Slider } from "./components/slider";
31
35
  export { Switch } from "./components/switch";
32
36
  export { TabButton } from "./components/tab/tabButton";
33
37
  export { TabContainer } from "./components/tab/tabContainer";
38
+ export { TableBody } from "./components/table/tableBody";
39
+ export { TableCaption } from "./components/table/tableCaption";
40
+ export { TableContainer } from "./components/table/tableContainer";
41
+ export { TableFooter } from "./components/table/tableFooter";
42
+ export { TableHeader } from "./components/table/tableHeader";
34
43
  export { Textarea } from "./components/textarea";
35
44
  export { Tooltip } from "./components/tooltip";
36
45
  // hooks
46
+ export { useDrawer } from "./hooks/useDrawer";
37
47
  export { useForm } from "./hooks/useForm";
48
+ export { useHydrated } from "./hooks/useHydrated";
49
+ export { useModal } from "./hooks/useModal";
38
50
  export { useScopedParams } from "./hooks/useScopedParams";
39
51
  export { useScrollLock } from "./hooks/useScrollLock";
40
52
  export { useSlider } from "./hooks/useSlider";
41
53
  // providers
54
+ export { DrawerProvider } from "./providers/drawerProvider";
42
55
  export { FormProvider } from "./providers/formProvider";
56
+ export { ModalProvider } from "./providers/modalProvider";
@@ -0,0 +1,106 @@
1
+ import { ReactNode } from "react";
2
+ type DrawerContextProps<T = any> = {
3
+ drawerIsOpen(key: string): boolean;
4
+ drawerData(key: string): T;
5
+ openDrawer(key: string, data?: T): void;
6
+ closeDrawer(key: string): void;
7
+ };
8
+ type DrawerProviderProps = {
9
+ children: ReactNode;
10
+ enableDrawerAutomation?: boolean;
11
+ };
12
+ declare const drawerContext: import("react").Context<DrawerContextProps<any>>;
13
+ /**
14
+ * DrawerProvider component - provides drawer context for managing multiple drawers state and data
15
+ *
16
+ * @param props - DrawerProvider component properties
17
+ * @param props.children - React elements that will have access to the drawer context
18
+ * @param props.enableDrawerAutomation - Optional flag to enable drawer automation features
19
+ *
20
+ * @returns DrawerProvider JSX element that wraps children with drawer context
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * // Basic drawer provider setup
25
+ * function App() {
26
+ * return (
27
+ * <DrawerProvider>
28
+ * <NavigationDrawer />
29
+ * <FilterDrawer />
30
+ * <SettingsDrawer />
31
+ * <MainContent />
32
+ * </DrawerProvider>
33
+ * );
34
+ * }
35
+ *
36
+ * // Drawer provider with automation enabled
37
+ * function AppWithAutomation() {
38
+ * return (
39
+ * <DrawerProvider enableDrawerAutomation={true}>
40
+ * <Dashboard />
41
+ * <SidePanel />
42
+ * <NotificationDrawer />
43
+ * </DrawerProvider>
44
+ * );
45
+ * }
46
+ *
47
+ * // Using with multiple drawers
48
+ * function MultiDrawerApp() {
49
+ * return (
50
+ * <DrawerProvider>
51
+ * <Header />
52
+ * <NavigationDrawer key="navigation" />
53
+ * <FilterDrawer key="filters" />
54
+ * <CartDrawer key="shopping-cart" />
55
+ * <MainContent />
56
+ * </DrawerProvider>
57
+ * );
58
+ * }
59
+ *
60
+ * // Component using drawer context
61
+ * function DrawerController() {
62
+ * const { openDrawer, closeDrawer } = useDrawer();
63
+ *
64
+ * const handleOpenNavigation = () => {
65
+ * openDrawer('navigation', { section: 'main-menu' });
66
+ * };
67
+ *
68
+ * const handleOpenFilters = () => {
69
+ * openDrawer('filters', { category: 'electronics', priceRange: [0, 1000] });
70
+ * };
71
+ *
72
+ * return (
73
+ * <div>
74
+ * <button onClick={handleOpenNavigation}>
75
+ * Open Navigation
76
+ * </button>
77
+ * <button onClick={handleOpenFilters}>
78
+ * Open Filters
79
+ * </button>
80
+ * </div>
81
+ * );
82
+ * }
83
+ *
84
+ * // Drawer component consuming context
85
+ * function NavigationDrawer() {
86
+ * const { drawerIsOpen, drawerData, closeDrawer } = useDrawer('navigation');
87
+ *
88
+ * if (!drawerIsOpen) return null;
89
+ *
90
+ * return (
91
+ * <Drawer position="left" onClose={() => closeDrawer('navigation')}>
92
+ * <h2>Navigation</h2>
93
+ * <p>Current section: {drawerData?.section}</p>
94
+ * <nav>
95
+ * <a href="/home">Home</a>
96
+ * <a href="/products">Products</a>
97
+ * <a href="/about">About</a>
98
+ * </nav>
99
+ * </Drawer>
100
+ * );
101
+ * }
102
+ * ```
103
+ */
104
+ declare function DrawerProvider(args: DrawerProviderProps): import("react/jsx-runtime").JSX.Element;
105
+ export { drawerContext, DrawerProvider, type DrawerContextProps };
106
+ //# sourceMappingURL=drawerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawerProvider.d.ts","sourceRoot":"","sources":["../../src/providers/drawerProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAY,MAAM,OAAO,CAAC;AAE3D,KAAK,kBAAkB,CAAC,CAAC,GAAG,GAAG,IAAI;IACjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAC3B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACxC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAOF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,QAAA,MAAM,aAAa,kDAA0C,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAEH,iBAAS,cAAc,CAAC,IAAI,EAAE,mBAAmB,2CAiChD;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useState } from "react";
3
+ const drawerContext = createContext({});
4
+ /**
5
+ * DrawerProvider component - provides drawer context for managing multiple drawers state and data
6
+ *
7
+ * @param props - DrawerProvider component properties
8
+ * @param props.children - React elements that will have access to the drawer context
9
+ * @param props.enableDrawerAutomation - Optional flag to enable drawer automation features
10
+ *
11
+ * @returns DrawerProvider JSX element that wraps children with drawer context
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * // Basic drawer provider setup
16
+ * function App() {
17
+ * return (
18
+ * <DrawerProvider>
19
+ * <NavigationDrawer />
20
+ * <FilterDrawer />
21
+ * <SettingsDrawer />
22
+ * <MainContent />
23
+ * </DrawerProvider>
24
+ * );
25
+ * }
26
+ *
27
+ * // Drawer provider with automation enabled
28
+ * function AppWithAutomation() {
29
+ * return (
30
+ * <DrawerProvider enableDrawerAutomation={true}>
31
+ * <Dashboard />
32
+ * <SidePanel />
33
+ * <NotificationDrawer />
34
+ * </DrawerProvider>
35
+ * );
36
+ * }
37
+ *
38
+ * // Using with multiple drawers
39
+ * function MultiDrawerApp() {
40
+ * return (
41
+ * <DrawerProvider>
42
+ * <Header />
43
+ * <NavigationDrawer key="navigation" />
44
+ * <FilterDrawer key="filters" />
45
+ * <CartDrawer key="shopping-cart" />
46
+ * <MainContent />
47
+ * </DrawerProvider>
48
+ * );
49
+ * }
50
+ *
51
+ * // Component using drawer context
52
+ * function DrawerController() {
53
+ * const { openDrawer, closeDrawer } = useDrawer();
54
+ *
55
+ * const handleOpenNavigation = () => {
56
+ * openDrawer('navigation', { section: 'main-menu' });
57
+ * };
58
+ *
59
+ * const handleOpenFilters = () => {
60
+ * openDrawer('filters', { category: 'electronics', priceRange: [0, 1000] });
61
+ * };
62
+ *
63
+ * return (
64
+ * <div>
65
+ * <button onClick={handleOpenNavigation}>
66
+ * Open Navigation
67
+ * </button>
68
+ * <button onClick={handleOpenFilters}>
69
+ * Open Filters
70
+ * </button>
71
+ * </div>
72
+ * );
73
+ * }
74
+ *
75
+ * // Drawer component consuming context
76
+ * function NavigationDrawer() {
77
+ * const { drawerIsOpen, drawerData, closeDrawer } = useDrawer('navigation');
78
+ *
79
+ * if (!drawerIsOpen) return null;
80
+ *
81
+ * return (
82
+ * <Drawer position="left" onClose={() => closeDrawer('navigation')}>
83
+ * <h2>Navigation</h2>
84
+ * <p>Current section: {drawerData?.section}</p>
85
+ * <nav>
86
+ * <a href="/home">Home</a>
87
+ * <a href="/products">Products</a>
88
+ * <a href="/about">About</a>
89
+ * </nav>
90
+ * </Drawer>
91
+ * );
92
+ * }
93
+ * ```
94
+ */
95
+ function DrawerProvider(args) {
96
+ const { children = false } = args;
97
+ const [openedDrawers, setOpenedDrawers] = useState([]);
98
+ function drawerIsOpen(key) {
99
+ return !!openedDrawers.some((drawer) => drawer.key === key);
100
+ }
101
+ function drawerData(key) {
102
+ return openedDrawers.find((drawer) => drawer.key === key)?.data;
103
+ }
104
+ function openDrawer(key, data) {
105
+ const alreadyExist = drawerIsOpen(key);
106
+ if (alreadyExist) {
107
+ setOpenedDrawers((old) => {
108
+ const filtered = old.filter((drawer) => drawer.key !== key);
109
+ return [...filtered, { key, data }];
110
+ });
111
+ }
112
+ else
113
+ setOpenedDrawers([...openedDrawers, { key, data }]);
114
+ }
115
+ function closeDrawer(key) {
116
+ setOpenedDrawers(openedDrawers.filter((drawer) => drawer.key !== key));
117
+ }
118
+ return (_jsx(drawerContext.Provider, { value: { drawerIsOpen, drawerData, openDrawer, closeDrawer }, children: children }));
119
+ }
120
+ export { drawerContext, DrawerProvider };
@@ -0,0 +1,103 @@
1
+ import { ReactNode } from "react";
2
+ type ModalContextProps<T = any> = {
3
+ modalIsOpen(key: string): boolean;
4
+ modalData(key: string): T;
5
+ openModal(key: string, data?: T): void;
6
+ closeModal(key: string): void;
7
+ closeAll(): void;
8
+ };
9
+ type ModalProviderProps = {
10
+ children: ReactNode;
11
+ enableModalAutomation?: boolean;
12
+ };
13
+ declare const modalContext: import("react").Context<ModalContextProps<any>>;
14
+ /**
15
+ * ModalProvider component - provides modal context for managing multiple modals state and data
16
+ *
17
+ * @param props - ModalProvider component properties
18
+ * @param props.children - React elements that will have access to the modal context
19
+ * @param props.enableModalAutomation - Optional flag to enable modal automation features
20
+ *
21
+ * @returns ModalProvider JSX element that wraps children with modal context
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * // Basic modal provider setup
26
+ * function App() {
27
+ * return (
28
+ * <ModalProvider>
29
+ * <UserModal />
30
+ * <ConfirmModal />
31
+ * <ImagePreviewModal />
32
+ * <MainContent />
33
+ * </ModalProvider>
34
+ * );
35
+ * }
36
+ *
37
+ * // Modal provider with automation enabled
38
+ * function AppWithAutomation() {
39
+ * return (
40
+ * <ModalProvider enableModalAutomation={true}>
41
+ * <Dashboard />
42
+ * <SettingsModal />
43
+ * <NotificationModal />
44
+ * </ModalProvider>
45
+ * );
46
+ * }
47
+ *
48
+ * // Using with multiple modals
49
+ * function MultiModalApp() {
50
+ * return (
51
+ * <ModalProvider>
52
+ * <Header />
53
+ * <Modal key="user-profile" />
54
+ * <Modal key="edit-settings" />
55
+ * <Modal key="confirm-delete" />
56
+ * <MainContent />
57
+ * </ModalProvider>
58
+ * );
59
+ * }
60
+ *
61
+ * // Component using modal context
62
+ * function ModalTrigger() {
63
+ * const { openModal, closeAll } = useModal();
64
+ *
65
+ * const handleOpenUserModal = () => {
66
+ * openModal('user-details', { userId: 123, mode: 'edit' });
67
+ * };
68
+ *
69
+ * const handleCloseAllModals = () => {
70
+ * closeAll();
71
+ * };
72
+ *
73
+ * return (
74
+ * <div>
75
+ * <button onClick={handleOpenUserModal}>
76
+ * Open User Modal
77
+ * </button>
78
+ * <button onClick={handleCloseAllModals}>
79
+ * Close All Modals
80
+ * </button>
81
+ * </div>
82
+ * );
83
+ * }
84
+ *
85
+ * // Modal component consuming context
86
+ * function UserDetailsModal() {
87
+ * const { modalIsOpen, modalData, closeModal } = useModal('user-details');
88
+ *
89
+ * if (!modalIsOpen) return null;
90
+ *
91
+ * return (
92
+ * <Modal onClose={() => closeModal('user-details')}>
93
+ * <h2>User Details</h2>
94
+ * <p>User ID: {modalData?.userId}</p>
95
+ * <p>Mode: {modalData?.mode}</p>
96
+ * </Modal>
97
+ * );
98
+ * }
99
+ * ```
100
+ */
101
+ declare function ModalProvider(args: ModalProviderProps): import("react/jsx-runtime").JSX.Element;
102
+ export { modalContext, ModalProvider, type ModalContextProps };
103
+ //# sourceMappingURL=modalProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modalProvider.d.ts","sourceRoot":"","sources":["../../src/providers/modalProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAY,MAAM,OAAO,CAAC;AAE3D,KAAK,iBAAiB,CAAC,CAAC,GAAG,GAAG,IAAI;IAChC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,IAAI,IAAI,CAAC;CAClB,CAAC;AAOF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,YAAY,iDAAyC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAEH,iBAAS,aAAa,CAAC,IAAI,EAAE,kBAAkB,2CAqC9C;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useState } from "react";
3
+ const modalContext = createContext({});
4
+ /**
5
+ * ModalProvider component - provides modal context for managing multiple modals state and data
6
+ *
7
+ * @param props - ModalProvider component properties
8
+ * @param props.children - React elements that will have access to the modal context
9
+ * @param props.enableModalAutomation - Optional flag to enable modal automation features
10
+ *
11
+ * @returns ModalProvider JSX element that wraps children with modal context
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * // Basic modal provider setup
16
+ * function App() {
17
+ * return (
18
+ * <ModalProvider>
19
+ * <UserModal />
20
+ * <ConfirmModal />
21
+ * <ImagePreviewModal />
22
+ * <MainContent />
23
+ * </ModalProvider>
24
+ * );
25
+ * }
26
+ *
27
+ * // Modal provider with automation enabled
28
+ * function AppWithAutomation() {
29
+ * return (
30
+ * <ModalProvider enableModalAutomation={true}>
31
+ * <Dashboard />
32
+ * <SettingsModal />
33
+ * <NotificationModal />
34
+ * </ModalProvider>
35
+ * );
36
+ * }
37
+ *
38
+ * // Using with multiple modals
39
+ * function MultiModalApp() {
40
+ * return (
41
+ * <ModalProvider>
42
+ * <Header />
43
+ * <Modal key="user-profile" />
44
+ * <Modal key="edit-settings" />
45
+ * <Modal key="confirm-delete" />
46
+ * <MainContent />
47
+ * </ModalProvider>
48
+ * );
49
+ * }
50
+ *
51
+ * // Component using modal context
52
+ * function ModalTrigger() {
53
+ * const { openModal, closeAll } = useModal();
54
+ *
55
+ * const handleOpenUserModal = () => {
56
+ * openModal('user-details', { userId: 123, mode: 'edit' });
57
+ * };
58
+ *
59
+ * const handleCloseAllModals = () => {
60
+ * closeAll();
61
+ * };
62
+ *
63
+ * return (
64
+ * <div>
65
+ * <button onClick={handleOpenUserModal}>
66
+ * Open User Modal
67
+ * </button>
68
+ * <button onClick={handleCloseAllModals}>
69
+ * Close All Modals
70
+ * </button>
71
+ * </div>
72
+ * );
73
+ * }
74
+ *
75
+ * // Modal component consuming context
76
+ * function UserDetailsModal() {
77
+ * const { modalIsOpen, modalData, closeModal } = useModal('user-details');
78
+ *
79
+ * if (!modalIsOpen) return null;
80
+ *
81
+ * return (
82
+ * <Modal onClose={() => closeModal('user-details')}>
83
+ * <h2>User Details</h2>
84
+ * <p>User ID: {modalData?.userId}</p>
85
+ * <p>Mode: {modalData?.mode}</p>
86
+ * </Modal>
87
+ * );
88
+ * }
89
+ * ```
90
+ */
91
+ function ModalProvider(args) {
92
+ const { children = false } = args;
93
+ const [openedModals, setOpenedModals] = useState([]);
94
+ function modalIsOpen(key) {
95
+ return !!openedModals.some((modal) => modal.key === key);
96
+ }
97
+ function modalData(key) {
98
+ return openedModals.find((modal) => modal.key === key)?.data;
99
+ }
100
+ function openModal(key, data) {
101
+ const alreadyExist = modalIsOpen(key);
102
+ if (alreadyExist) {
103
+ setOpenedModals((old) => {
104
+ const filtered = old.filter((modal) => modal.key !== key);
105
+ return [...filtered, { key, data }];
106
+ });
107
+ }
108
+ else
109
+ setOpenedModals([...openedModals, { key, data }]);
110
+ }
111
+ function closeModal(key) {
112
+ setOpenedModals(openedModals.filter((modal) => modal.key !== key));
113
+ }
114
+ function closeAll() {
115
+ setOpenedModals([]);
116
+ }
117
+ return (_jsx(modalContext.Provider, { value: { modalIsOpen, modalData, openModal, closeModal, closeAll }, children: children }));
118
+ }
119
+ export { modalContext, ModalProvider };