sea-react-components 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/HOC/can-access-application/index.d.ts +9 -0
  4. package/dist/HOC/can-access-application/index.d.ts.map +1 -0
  5. package/dist/HOC/can-access-application/index.js +11 -0
  6. package/dist/HOC/with-authorization/index.d.ts +12 -0
  7. package/dist/HOC/with-authorization/index.d.ts.map +1 -0
  8. package/dist/HOC/with-authorization/index.js +23 -0
  9. package/dist/components/alert/index.d.ts +12 -0
  10. package/dist/components/alert/index.d.ts.map +1 -0
  11. package/dist/components/alert/index.js +51 -0
  12. package/dist/components/avatar/index.d.ts +10 -0
  13. package/dist/components/avatar/index.d.ts.map +1 -0
  14. package/dist/components/avatar/index.js +26 -0
  15. package/dist/components/badge/index.d.ts +8 -0
  16. package/dist/components/badge/index.d.ts.map +1 -0
  17. package/dist/components/badge/index.js +33 -0
  18. package/dist/components/breadcrumb/index.d.ts +7 -0
  19. package/dist/components/breadcrumb/index.d.ts.map +1 -0
  20. package/dist/components/breadcrumb/index.js +8 -0
  21. package/dist/components/button/index.d.ts +6 -0
  22. package/dist/components/button/index.d.ts.map +1 -0
  23. package/dist/components/button/index.js +18 -0
  24. package/dist/components/carousel/index.d.ts +17 -0
  25. package/dist/components/carousel/index.d.ts.map +1 -0
  26. package/dist/components/carousel/index.js +89 -0
  27. package/dist/components/checkbox/index.d.ts +11 -0
  28. package/dist/components/checkbox/index.d.ts.map +1 -0
  29. package/dist/components/checkbox/index.js +15 -0
  30. package/dist/components/color-picker/index.d.ts +8 -0
  31. package/dist/components/color-picker/index.d.ts.map +1 -0
  32. package/dist/components/color-picker/index.js +21 -0
  33. package/dist/components/count-down/index.d.ts +6 -0
  34. package/dist/components/count-down/index.d.ts.map +1 -0
  35. package/dist/components/count-down/index.js +32 -0
  36. package/dist/components/drawer/index.d.ts +12 -0
  37. package/dist/components/drawer/index.d.ts.map +1 -0
  38. package/dist/components/drawer/index.js +15 -0
  39. package/dist/components/file-input/components/file-item/index.d.ts +9 -0
  40. package/dist/components/file-input/components/file-item/index.d.ts.map +1 -0
  41. package/dist/components/file-input/components/file-item/index.js +10 -0
  42. package/dist/components/file-input/index.d.ts +44 -0
  43. package/dist/components/file-input/index.d.ts.map +1 -0
  44. package/dist/components/file-input/index.js +85 -0
  45. package/dist/components/icon/index.d.ts +7 -0
  46. package/dist/components/icon/index.d.ts.map +1 -0
  47. package/dist/components/icon/index.js +5 -0
  48. package/dist/components/input/index.d.ts +9 -0
  49. package/dist/components/input/index.d.ts.map +1 -0
  50. package/dist/components/input/index.js +33 -0
  51. package/dist/components/list-item/components/page-button/index.d.ts +8 -0
  52. package/dist/components/list-item/components/page-button/index.d.ts.map +1 -0
  53. package/dist/components/list-item/components/page-button/index.js +8 -0
  54. package/dist/components/list-item/components/pagination/index.d.ts +9 -0
  55. package/dist/components/list-item/components/pagination/index.d.ts.map +1 -0
  56. package/dist/components/list-item/components/pagination/index.js +49 -0
  57. package/dist/components/list-item/components/search-input/index.d.ts +7 -0
  58. package/dist/components/list-item/components/search-input/index.d.ts.map +1 -0
  59. package/dist/components/list-item/components/search-input/index.js +38 -0
  60. package/dist/components/list-item/index.d.ts +26 -0
  61. package/dist/components/list-item/index.d.ts.map +1 -0
  62. package/dist/components/list-item/index.js +23 -0
  63. package/dist/components/loader/index.d.ts +6 -0
  64. package/dist/components/loader/index.d.ts.map +1 -0
  65. package/dist/components/loader/index.js +5 -0
  66. package/dist/components/menu/index.d.ts +9 -0
  67. package/dist/components/menu/index.d.ts.map +1 -0
  68. package/dist/components/menu/index.js +19 -0
  69. package/dist/components/menu/menu-item/index.d.ts +10 -0
  70. package/dist/components/menu/menu-item/index.d.ts.map +1 -0
  71. package/dist/components/menu/menu-item/index.js +19 -0
  72. package/dist/components/modal/index.d.ts +12 -0
  73. package/dist/components/modal/index.d.ts.map +1 -0
  74. package/dist/components/modal/index.js +41 -0
  75. package/dist/components/not-authorized/index.d.ts +2 -0
  76. package/dist/components/not-authorized/index.d.ts.map +1 -0
  77. package/dist/components/not-authorized/index.js +5 -0
  78. package/dist/components/otp-input/index.d.ts +7 -0
  79. package/dist/components/otp-input/index.d.ts.map +1 -0
  80. package/dist/components/otp-input/index.js +35 -0
  81. package/dist/components/paper/index.d.ts +4 -0
  82. package/dist/components/paper/index.d.ts.map +1 -0
  83. package/dist/components/paper/index.js +17 -0
  84. package/dist/components/progress-bar/index.d.ts +11 -0
  85. package/dist/components/progress-bar/index.d.ts.map +1 -0
  86. package/dist/components/progress-bar/index.js +32 -0
  87. package/dist/components/radio-button/index.d.ts +10 -0
  88. package/dist/components/radio-button/index.d.ts.map +1 -0
  89. package/dist/components/radio-button/index.js +17 -0
  90. package/dist/components/select/index.d.ts +16 -0
  91. package/dist/components/select/index.d.ts.map +1 -0
  92. package/dist/components/select/index.js +36 -0
  93. package/dist/components/skeleton/index.d.ts +4 -0
  94. package/dist/components/skeleton/index.d.ts.map +1 -0
  95. package/dist/components/skeleton/index.js +5 -0
  96. package/dist/components/stacked-avatars/index.d.ts +10 -0
  97. package/dist/components/stacked-avatars/index.d.ts.map +1 -0
  98. package/dist/components/stacked-avatars/index.js +23 -0
  99. package/dist/components/tab/index.d.ts +16 -0
  100. package/dist/components/tab/index.d.ts.map +1 -0
  101. package/dist/components/tab/index.js +23 -0
  102. package/dist/components/table/index.d.ts +22 -0
  103. package/dist/components/table/index.d.ts.map +1 -0
  104. package/dist/components/table/index.js +67 -0
  105. package/dist/components/text-editor/components/toolbar/index.d.ts +9 -0
  106. package/dist/components/text-editor/components/toolbar/index.d.ts.map +1 -0
  107. package/dist/components/text-editor/components/toolbar/index.js +280 -0
  108. package/dist/components/text-editor/index.d.ts +12 -0
  109. package/dist/components/text-editor/index.d.ts.map +1 -0
  110. package/dist/components/text-editor/index.js +152 -0
  111. package/dist/components/text-editor/style.css +132 -0
  112. package/dist/components/text-editor/utils/index.d.ts +14 -0
  113. package/dist/components/text-editor/utils/index.d.ts.map +1 -0
  114. package/dist/components/text-editor/utils/index.js +82 -0
  115. package/dist/components/textarea/index.d.ts +7 -0
  116. package/dist/components/textarea/index.d.ts.map +1 -0
  117. package/dist/components/textarea/index.js +24 -0
  118. package/dist/components/toggle/index.d.ts +8 -0
  119. package/dist/components/toggle/index.d.ts.map +1 -0
  120. package/dist/components/toggle/index.js +12 -0
  121. package/dist/components/tooltip/index.d.ts +10 -0
  122. package/dist/components/tooltip/index.d.ts.map +1 -0
  123. package/dist/components/tooltip/index.js +15 -0
  124. package/dist/components/tree-checkbox/components/tree-checkbox-item/index.d.ts +10 -0
  125. package/dist/components/tree-checkbox/components/tree-checkbox-item/index.d.ts.map +1 -0
  126. package/dist/components/tree-checkbox/components/tree-checkbox-item/index.js +10 -0
  127. package/dist/components/tree-checkbox/index.d.ts +26 -0
  128. package/dist/components/tree-checkbox/index.d.ts.map +1 -0
  129. package/dist/components/tree-checkbox/index.js +62 -0
  130. package/dist/components/tree-checkbox/utils/index.d.ts +9 -0
  131. package/dist/components/tree-checkbox/utils/index.d.ts.map +1 -0
  132. package/dist/components/tree-checkbox/utils/index.js +14 -0
  133. package/dist/constants/index.d.ts +2 -0
  134. package/dist/constants/index.d.ts.map +1 -0
  135. package/dist/constants/index.js +1 -0
  136. package/dist/hooks/list-items-hook/types.d.ts +18 -0
  137. package/dist/hooks/list-items-hook/types.d.ts.map +1 -0
  138. package/dist/hooks/list-items-hook/types.js +1 -0
  139. package/dist/hooks/list-items-hook/useBulkActions.d.ts +3 -0
  140. package/dist/hooks/list-items-hook/useBulkActions.d.ts.map +1 -0
  141. package/dist/hooks/list-items-hook/useBulkActions.js +8 -0
  142. package/dist/hooks/list-items-hook/useFilters.d.ts +3 -0
  143. package/dist/hooks/list-items-hook/useFilters.d.ts.map +1 -0
  144. package/dist/hooks/list-items-hook/useFilters.js +27 -0
  145. package/dist/hooks/list-items-hook/usePagination.d.ts +2 -0
  146. package/dist/hooks/list-items-hook/usePagination.d.ts.map +1 -0
  147. package/dist/hooks/list-items-hook/usePagination.js +21 -0
  148. package/dist/index.d.ts +40 -0
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +42 -0
  151. package/dist/styles.css +7 -0
  152. package/dist/tsconfig.tsbuildinfo +1 -0
  153. package/dist/utils/axios/index.d.ts +7 -0
  154. package/dist/utils/axios/index.d.ts.map +1 -0
  155. package/dist/utils/axios/index.js +23 -0
  156. package/dist/utils/color/index.d.ts +7 -0
  157. package/dist/utils/color/index.d.ts.map +1 -0
  158. package/dist/utils/color/index.js +22 -0
  159. package/dist/utils/file/index.d.ts +2 -0
  160. package/dist/utils/file/index.d.ts.map +1 -0
  161. package/dist/utils/file/index.js +8 -0
  162. package/dist/utils/jwt/index.d.ts +2 -0
  163. package/dist/utils/jwt/index.d.ts.map +1 -0
  164. package/dist/utils/jwt/index.js +1 -0
  165. package/dist/utils/validation/index.d.ts +10 -0
  166. package/dist/utils/validation/index.d.ts.map +1 -0
  167. package/dist/utils/validation/index.js +20 -0
  168. package/package.json +66 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 mohammed-masri
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # sea-react-components
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { CONSTANTS } from "sea-platform-helpers";
3
+ export interface Props {
4
+ applicationKey: CONSTANTS.Application.ApplicationKeys;
5
+ fallback?: React.ReactNode;
6
+ hasApplicationAccess: (key: CONSTANTS.Application.ApplicationKeys) => boolean;
7
+ }
8
+ export default function CanAccessApplication<P>(WrappedComponent: React.ComponentType<P>, { applicationKey, fallback, hasApplicationAccess, }: Props): (props: P) => import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HOC/can-access-application/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,WAAW,KAAK;IACpB,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC;IACtD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oBAAoB,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,KAAK,OAAO,CAAC;CAC/E;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,CAAC,EAC5C,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EACxC,EACE,cAAc,EACd,QAIC,EACD,oBAAoB,GACrB,EAAE,KAAK,WAEO,CAAC,6CAMjB"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import NotAuthorized from "../../components/not-authorized";
4
+ export default function CanAccessApplication(WrappedComponent, { applicationKey, fallback = (_jsx("div", { className: "flex items-center justify-center h-screen", children: _jsx(NotAuthorized, {}) })), hasApplicationAccess, }) {
5
+ return (props) => {
6
+ const canAccess = hasApplicationAccess(applicationKey);
7
+ if (!canAccess)
8
+ return _jsx(_Fragment, { children: fallback });
9
+ return _jsx(WrappedComponent, Object.assign({}, props));
10
+ };
11
+ }
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { CONSTANTS } from "sea-platform-helpers";
3
+ type ValidationStrategy = "all" | "some" | "one";
4
+ export interface Props {
5
+ requiredPermissions: string[];
6
+ strategy?: ValidationStrategy;
7
+ fallback?: React.ReactNode;
8
+ hasPermission: (key: CONSTANTS.Permission.PermissionKeys) => boolean;
9
+ }
10
+ export default function WithAuthorization<P>(WrappedComponent: React.ComponentType<P>, { requiredPermissions, strategy, fallback, hasPermission, }: Props): (props: P) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HOC/with-authorization/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,KAAK,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,KAAK;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC;CACtE;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,CAAC,EACzC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EACxC,EACE,mBAAmB,EACnB,QAAgB,EAChB,QAA4B,EAC5B,aAAa,GACd,EAAE,KAAK,WAEO,CAAC,6CAWjB"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import NotAuthorized from "../../components/not-authorized";
4
+ export default function WithAuthorization(WrappedComponent, { requiredPermissions, strategy = "all", fallback = _jsx(NotAuthorized, {}), hasPermission, }) {
5
+ return (props) => {
6
+ const isAuthorized = validatePermissions(requiredPermissions, strategy, hasPermission);
7
+ if (!isAuthorized)
8
+ return _jsx(_Fragment, { children: fallback });
9
+ return _jsx(WrappedComponent, Object.assign({}, props));
10
+ };
11
+ }
12
+ function validatePermissions(requiredPermissions, strategy, hasPermission) {
13
+ switch (strategy) {
14
+ case "all":
15
+ return requiredPermissions.every((key) => hasPermission(key));
16
+ case "some":
17
+ return requiredPermissions.some((key) => hasPermission(key));
18
+ case "one":
19
+ return (requiredPermissions.length > 0 && hasPermission(requiredPermissions[0]));
20
+ default:
21
+ return false;
22
+ }
23
+ }
@@ -0,0 +1,12 @@
1
+ export type Types = "primary" | "secondary" | "success" | "info" | "warning" | "error";
2
+ export type Themes = "default" | "light";
3
+ export type Props = {
4
+ message: string;
5
+ type: Types;
6
+ theme?: Themes;
7
+ showIcon?: boolean;
8
+ closeButton?: boolean;
9
+ handleClickCloseButton?: (() => void) | undefined;
10
+ };
11
+ export default function Alert({ message, type, closeButton, showIcon, theme, handleClickCloseButton, }: Props): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/alert/index.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GACb,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AA4CzC,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACnD,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,OAAO,EACP,IAAI,EACJ,WAAkB,EAClB,QAAe,EACf,KAAiB,EACjB,sBAAkC,GACnC,EAAE,KAAK,2CAmCP"}
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import Icon from "../icon";
4
+ import clsx from "clsx";
5
+ import { useState } from "react";
6
+ const colors = {
7
+ primary: {
8
+ bg: "bg-primary",
9
+ text: "text-primary",
10
+ },
11
+ secondary: {
12
+ bg: "bg-secondary",
13
+ text: "text-secondary",
14
+ },
15
+ success: {
16
+ bg: "bg-success",
17
+ text: "text-success",
18
+ },
19
+ info: {
20
+ bg: "bg-info",
21
+ text: "text-info",
22
+ },
23
+ warning: {
24
+ bg: "bg-warning",
25
+ text: "text-warning",
26
+ },
27
+ error: {
28
+ bg: "bg-error",
29
+ text: "text-error",
30
+ },
31
+ };
32
+ const icons = {
33
+ primary: "gg:info",
34
+ secondary: "gg:info",
35
+ success: "qlementine-icons:success-16",
36
+ info: "gg:info",
37
+ warning: "mi:warning",
38
+ error: "material-symbols:error-outline",
39
+ };
40
+ export default function Alert({ message, type, closeButton = true, showIcon = true, theme = "default", handleClickCloseButton = undefined, }) {
41
+ const [open, setOpen] = useState(true);
42
+ let className = colors[type].bg;
43
+ className = clsx(className, theme === "default" ? "text-white" : `${colors[type].text} bg-opacity-20`);
44
+ if (open)
45
+ return (_jsxs("div", { className: clsx("flex items-center gap-3 rounded-lg p-2", className), children: [showIcon && _jsx(Icon, { icon: icons[type], className: "h-5 w-5" }), _jsx("p", { className: "flex-1", children: message }), closeButton && (_jsx("button", { onClick: () => {
46
+ setOpen(false);
47
+ if (handleClickCloseButton) {
48
+ handleClickCloseButton();
49
+ }
50
+ }, children: _jsx(Icon, { icon: "line-md:close-small", className: "h-5 w-5 hover:scale-110 transition-all duration-300 ease-in-out" }) }))] }));
51
+ }
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export type AvatarSize = "sm" | "md" | "lg" | "xl";
3
+ export type Props = {
4
+ url?: string | undefined;
5
+ size?: AvatarSize;
6
+ alt: string;
7
+ placeholder?: string;
8
+ } & React.ImgHTMLAttributes<HTMLImageElement>;
9
+ export default function Avatar({ url, alt, size, placeholder, className, ...props }: Props): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AASnD,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAC9C,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,GAAG,EACH,GAAG,EACH,IAAW,EACX,WAAuC,EACvC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,2CAeP"}
@@ -0,0 +1,26 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import clsx from "clsx";
14
+ import { PROFILE_PLACEHOLDER_IMAGE } from "../../constants/index";
15
+ const sizeValues = {
16
+ sm: 30,
17
+ md: 50,
18
+ lg: 70,
19
+ xl: 90,
20
+ };
21
+ export default function Avatar(_a) {
22
+ var { url, alt, size = "md", placeholder = PROFILE_PLACEHOLDER_IMAGE, className } = _a, props = __rest(_a, ["url", "alt", "size", "placeholder", "className"]);
23
+ const sizeValue = sizeValues[size];
24
+ url = url || placeholder;
25
+ return (_jsx("img", Object.assign({}, props, { src: url, alt: alt, width: sizeValue, height: sizeValue, className: clsx("object-cover", className) })));
26
+ }
@@ -0,0 +1,8 @@
1
+ export type Types = "primary" | "secondary" | "success" | "info" | "warning" | "error";
2
+ export type Props = {
3
+ message: string;
4
+ type: Types;
5
+ theme?: "default" | "light";
6
+ };
7
+ export default function Badge({ message, type, theme }: Props): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/badge/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GACb,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,CAAC;AAmCZ,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC7B,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAiB,EAAE,EAAE,KAAK,2CAiBxE"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ const colors = {
4
+ primary: {
5
+ bg: "bg-primary",
6
+ text: "text-primary",
7
+ },
8
+ secondary: {
9
+ bg: "bg-secondary",
10
+ text: "text-secondary",
11
+ },
12
+ success: {
13
+ bg: "bg-success",
14
+ text: "text-success",
15
+ },
16
+ info: {
17
+ bg: "bg-info",
18
+ text: "text-info",
19
+ },
20
+ warning: {
21
+ bg: "bg-warning",
22
+ text: "text-warning",
23
+ },
24
+ error: {
25
+ bg: "bg-error",
26
+ text: "text-error",
27
+ },
28
+ };
29
+ export default function Badge({ message, type, theme = "default" }) {
30
+ let className = colors[type].bg;
31
+ className = clsx(className, theme === "default" ? "text-white" : `${colors[type].text} bg-opacity-20`);
32
+ return (_jsx("div", { className: clsx("flex items-center justify-center gap-3 rounded-lg px-3 py-1", className), children: message }));
33
+ }
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export type Props = {
3
+ name: string;
4
+ children: React.ReactNode;
5
+ };
6
+ export default function Breadcrumb({ name, children }: Props): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAoB3D"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Icon } from "@iconify/react";
3
+ import clsx from "clsx";
4
+ import React from "react";
5
+ export default function Breadcrumb({ name, children }) {
6
+ const items = React.Children.toArray(children); // Convert children to an array
7
+ return (_jsx("div", { className: "flex items-center gap-3", children: items.map((item, i) => (_jsxs("div", { className: clsx("flex items-center gap-3", i === items.length - 1 && "text-primary"), children: [_jsx("div", { children: item }), i < items.length - 1 && (_jsx(Icon, { icon: "ooui:next-ltr", className: "text-text" }))] }, `${name}-breadcrumb-${i}`))) }));
8
+ }
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export type Props = {
3
+ loading?: boolean;
4
+ } & React.ButtonHTMLAttributes<HTMLButtonElement>;
5
+ export default function Button({ loading, disabled, className, children, ...props }: Props): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/button/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAClD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,OAAe,EACf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,2CAmBP"}
@@ -0,0 +1,18 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import clsx from "clsx";
14
+ import { Icon } from "@iconify/react";
15
+ export default function Button(_a) {
16
+ var { loading = false, disabled, className, children } = _a, props = __rest(_a, ["loading", "disabled", "className", "children"]);
17
+ return (_jsx("button", Object.assign({ className: clsx("px-2 py-1 rounded-lg disabled:bg-gray-200 text-white transition-all duration-300 ease-in-out flex items-center justify-center", !loading && !disabled && "hover:bg-opacity-70", className ? className : "bg-primary", disabled && "bg-gray-300"), disabled: disabled }, props, { children: loading ? (_jsx(Icon, { icon: "line-md:loading-loop", className: "w-6 h-6" })) : (children) })));
18
+ }
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ export type Props = {
3
+ name: string;
4
+ items: React.ReactNode[];
5
+ auto?: boolean;
6
+ duration?: number;
7
+ nextButton?: React.ReactNode;
8
+ previousButton?: React.ReactNode;
9
+ showNextPreviousButtons?: boolean;
10
+ dot?: React.ReactNode;
11
+ showDots?: boolean;
12
+ itemsPerSlide?: number;
13
+ dropAndDregControl?: boolean;
14
+ autoHeight?: boolean;
15
+ };
16
+ export default function Carousel({ name, items, auto, duration, nextButton, previousButton, showNextPreviousButtons, dot, showDots, itemsPerSlide, dropAndDregControl, autoHeight, }: Props): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,IAAY,EACZ,QAAe,EACf,UAAU,EACV,cAAc,EACd,uBAA8B,EAC9B,GAAG,EACH,QAAe,EACf,aAAiB,EACjB,kBAA0B,EAC1B,UAAiB,GAClB,EAAE,KAAK,2CAyKP"}
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Icon } from "@iconify/react";
4
+ import clsx from "clsx";
5
+ import { useEffect, useRef, useState } from "react";
6
+ export default function Carousel({ name, items, auto = false, duration = 3000, nextButton, previousButton, showNextPreviousButtons = true, dot, showDots = true, itemsPerSlide = 1, dropAndDregControl = false, autoHeight = true, }) {
7
+ const [currentSlide, setCurrentSlide] = useState(0);
8
+ const [carouselHeight, setCarouselHeight] = useState(null);
9
+ const intervalRef = useRef(null);
10
+ const carouselRef = useRef(null);
11
+ if (itemsPerSlide > items.length)
12
+ itemsPerSlide = items.length;
13
+ if (itemsPerSlide <= 0)
14
+ itemsPerSlide = 1;
15
+ const totalSlides = Math.ceil(items.length / itemsPerSlide);
16
+ if (totalSlides <= 1) {
17
+ showDots = false;
18
+ showNextPreviousButtons = false;
19
+ }
20
+ const goToSlide = (slide) => {
21
+ setCurrentSlide((slide + totalSlides) % totalSlides);
22
+ };
23
+ const nextSlide = () => goToSlide(currentSlide + 1);
24
+ const previousSlide = () => goToSlide(currentSlide - 1);
25
+ // Auto-slide functionality
26
+ useEffect(() => {
27
+ if (auto) {
28
+ intervalRef.current = setInterval(nextSlide, duration);
29
+ }
30
+ return () => {
31
+ if (intervalRef.current)
32
+ clearInterval(intervalRef.current);
33
+ };
34
+ }, [auto, duration, currentSlide]);
35
+ // Drag functionality
36
+ useEffect(() => {
37
+ if (!dropAndDregControl || !carouselRef.current)
38
+ return;
39
+ let startX = 0;
40
+ let isDragging = false;
41
+ const onMouseDown = (e) => {
42
+ isDragging = true;
43
+ startX = e.pageX;
44
+ };
45
+ const onMouseMove = (e) => {
46
+ if (!isDragging)
47
+ return;
48
+ if (startX - e.pageX > 50) {
49
+ nextSlide();
50
+ isDragging = false;
51
+ }
52
+ else if (startX - e.pageX < -50) {
53
+ previousSlide();
54
+ isDragging = false;
55
+ }
56
+ };
57
+ const onMouseUp = () => (isDragging = false);
58
+ const element = carouselRef.current;
59
+ element.addEventListener("mousedown", onMouseDown);
60
+ element.addEventListener("mousemove", onMouseMove);
61
+ element.addEventListener("mouseup", onMouseUp);
62
+ return () => {
63
+ element.removeEventListener("mousedown", onMouseDown);
64
+ element.removeEventListener("mousemove", onMouseMove);
65
+ element.removeEventListener("mouseup", onMouseUp);
66
+ };
67
+ }, [dropAndDregControl, currentSlide]);
68
+ // Auto height functionality
69
+ useEffect(() => {
70
+ var _a;
71
+ if (autoHeight && carouselRef.current) {
72
+ let max = 0;
73
+ let end = currentSlide * itemsPerSlide + itemsPerSlide;
74
+ if (end > items.length)
75
+ end = items.length;
76
+ for (let i = currentSlide * itemsPerSlide; i < end; i++) {
77
+ const slide = (_a = carouselRef.current.children[i]) === null || _a === void 0 ? void 0 : _a.children[0];
78
+ if (max < slide.offsetHeight)
79
+ max = slide.offsetHeight;
80
+ }
81
+ setCarouselHeight(max);
82
+ }
83
+ }, [currentSlide, autoHeight]);
84
+ return (_jsxs("div", { className: "relative w-full overflow-hidden", style: autoHeight ? { height: carouselHeight || "auto" } : undefined, children: [_jsx("div", { ref: carouselRef, className: clsx("flex transition-transform duration-500", dropAndDregControl && "cursor-grabbing"), style: {
85
+ transform: `translateX(-${currentSlide * 100}%)`,
86
+ }, children: items.map((item, index) => (_jsx("div", { className: "flex-shrink-0", style: {
87
+ width: `${100 / itemsPerSlide}%`,
88
+ }, children: item }, `${name}-carousel-${index}`))) }), showNextPreviousButtons && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: previousSlide, "aria-label": "Previous Slide", className: "absolute left-2 top-1/2 transform -translate-y-1/2 z-10", children: previousButton || (_jsx(Icon, { icon: "ooui:next-rtl", className: clsx("transition-all duration-300 ease-in-out text-secondary hover:text-opacity-50") })) }), _jsx("button", { onClick: nextSlide, "aria-label": "Next Slide", className: "absolute right-2 top-1/2 transform -translate-y-1/2 z-10", children: nextButton || (_jsx(Icon, { icon: "ooui:next-ltr", className: clsx("transition-all duration-300 ease-in-out text-secondary hover:text-opacity-50") })) })] })), showDots && (_jsx("div", { className: "absolute bottom-2 left-1/2 transform -translate-x-1/2 flex space-x-2", children: Array.from({ length: totalSlides }).map((_, index) => (_jsx("button", { onClick: () => goToSlide(index), className: `w-2 h-2 rounded-full ${currentSlide === index ? "bg-secondary" : "bg-gray-300"}`, children: dot || "" }, index))) }))] }));
89
+ }
@@ -0,0 +1,11 @@
1
+ export type Sizes = "xs" | "sm" | "md" | "lg" | "xl";
2
+ export type Props = {
3
+ checked: boolean;
4
+ onChange: (checked: boolean) => void;
5
+ disabled?: boolean;
6
+ size?: Sizes;
7
+ className?: string | undefined;
8
+ semiChecked?: boolean;
9
+ };
10
+ export default function Checkbox({ checked, onChange, disabled, size, semiChecked, className, }: Props): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/index.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAUrD,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,IAAW,EACX,WAAmB,EACnB,SAAS,GACV,EAAE,KAAK,2CAiCP"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import clsx from "clsx";
4
+ import Icon from "../icon";
5
+ const sizeClasses = {
6
+ xs: "w-3 h-3",
7
+ sm: "w-4 h-4",
8
+ md: "w-5 h-5",
9
+ lg: "w-6 h-6",
10
+ xl: "w-7 h-7",
11
+ };
12
+ export default function Checkbox({ checked, onChange, disabled = false, size = "md", semiChecked = false, className, }) {
13
+ const sizeClass = sizeClasses[size];
14
+ return (_jsxs("label", { className: "relative flex items-center cursor-pointer", children: [_jsx("input", { type: "checkbox", checked: checked, onChange: (e) => onChange(e.target.checked), disabled: disabled, className: "sr-only peer" }), _jsx("div", { className: clsx("rounded border-2 peer-checked:bg-primary peer-checked:border-primary peer-disabled:bg-gray-200 peer-disabled:border-gray-200 peer-disabled:cursor-not-allowed flex items-center justify-center transition-all", sizeClass), children: checked ? (semiChecked ? (_jsx(Icon, { icon: "octicon:dash-16", className: "text-white" })) : (_jsx(Icon, { icon: "material-symbols:check-rounded", className: "text-white" }))) : (_jsx("div", { className: "bg-white h-full w-full" })) })] }));
15
+ }
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export type Props = {
3
+ color: string;
4
+ setColor: (newColor: string) => void;
5
+ showDisplay?: boolean;
6
+ } & React.InputHTMLAttributes<HTMLInputElement>;
7
+ export default function ColorPicker({ color, setColor, showDisplay, ...props }: Props): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;AAChD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,WAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,2CAyBP"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ import { isColorLight } from "../../utils/color";
15
+ export default function ColorPicker(_a) {
16
+ var { color, setColor, showDisplay = true } = _a, props = __rest(_a, ["color", "setColor", "showDisplay"]);
17
+ return (_jsxs("div", { className: "relative flex items-center rounded-lg", children: [showDisplay && (_jsx("div", { className: "w-full h-10 rounded-lg flex items-center justify-center", style: {
18
+ backgroundColor: color,
19
+ color: isColorLight(color) ? "#000000" : "#FFFFFF",
20
+ }, children: _jsx("p", { children: color }) })), _jsx("input", Object.assign({ type: "color", className: "absolute inset-0 w-full h-full opacity-0 cursor-pointer", value: color, onChange: (e) => setColor(e.target.value) }, props))] }));
21
+ }
@@ -0,0 +1,6 @@
1
+ export type Props = {
2
+ timeInSeconds: number;
3
+ finishObserver: () => void;
4
+ };
5
+ export default function CountDown({ timeInSeconds, finishObserver }: Props): string;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/count-down/index.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,KAAK,UAgCzE"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { Utils } from "sea-platform-helpers";
3
+ import { useEffect, useState } from "react";
4
+ export default function CountDown({ timeInSeconds, finishObserver }) {
5
+ const [time, setTime] = useState(timeInSeconds);
6
+ const [isFinished, setIsFinished] = useState(false);
7
+ useEffect(() => {
8
+ if (time <= 0) {
9
+ setIsFinished(true);
10
+ return;
11
+ }
12
+ const interval = setInterval(() => {
13
+ setTime((prevTime) => {
14
+ if (prevTime - 1 <= 0) {
15
+ clearInterval(interval);
16
+ setIsFinished(true);
17
+ return 0;
18
+ }
19
+ return prevTime - 1;
20
+ });
21
+ }, 1000);
22
+ return () => clearInterval(interval);
23
+ }, [time]);
24
+ useEffect(() => {
25
+ if (isFinished)
26
+ finishObserver();
27
+ }, [finishObserver, isFinished]);
28
+ const formattedTime = Utils.Moment.default
29
+ .utc(time * 1000)
30
+ .format(time >= 3600 ? "HH:mm:ss" : "mm:ss");
31
+ return formattedTime;
32
+ }
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ export type Placement = "top" | "left" | "right" | "bottom";
3
+ export type Props = {
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ placement?: Placement;
7
+ overlay?: boolean;
8
+ className?: string;
9
+ children: React.ReactNode;
10
+ };
11
+ export default function Drawer({ isOpen, onClose, placement, overlay, className, children, }: Props): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/drawer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5D,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,SAAmB,EACnB,OAAc,EACd,SAAS,EACT,QAAQ,GACT,EAAE,KAAK,2CAoDP"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import { Icon } from "@iconify/react";
4
+ export default function Drawer({ isOpen, onClose, placement = "right", overlay = true, className, children, }) {
5
+ return (_jsxs(_Fragment, { children: [overlay && isOpen && (_jsx("div", { className: clsx("fixed z-50 inset-0 bg-black bg-opacity-50 transition-opacity duration-300", { "opacity-0 pointer-events-none": !isOpen }), onClick: onClose })), _jsxs("div", { className: clsx("fixed bg-white shadow-lg z-50 transition-transform duration-300 py-7 px-2", {
6
+ "top-0 left-0 w-full h-auto transform -translate-y-full": placement === "top" && !isOpen,
7
+ "top-0 left-0 w-full h-auto translate-y-0": placement === "top" && isOpen,
8
+ "top-0 right-0 h-full transform translate-x-full w-[85%] md:w-[40%]": placement === "right" && !isOpen,
9
+ "top-0 right-0 h-full translate-x-0 w-[85%] md:w-[40%]": placement === "right" && isOpen,
10
+ "top-0 left-0 h-full transform -translate-x-full w-[85%] md:w-[40%]": placement === "left" && !isOpen,
11
+ "top-0 left-0 h-full translate-x-0 w-[85%] md:w-[40%]": placement === "left" && isOpen,
12
+ "bottom-0 left-0 w-full h-auto transform translate-y-full": placement === "bottom" && !isOpen,
13
+ "bottom-0 left-0 w-full h-auto translate-y-0": placement === "bottom" && isOpen,
14
+ }, className), children: [_jsx("button", { onClick: onClose, className: "absolute top-2 right-2 text-secondary-dark", children: _jsx(Icon, { icon: "line-md:close-small", className: "h-5 w-5 hover:scale-110 transition-all duration-300 ease-in-out" }) }), children] })] }));
15
+ }
@@ -0,0 +1,9 @@
1
+ import { FileState } from "../..";
2
+ type Props = {
3
+ file: FileState;
4
+ handleUploadFile?: (file: FileState) => Promise<void>;
5
+ handleDeleteFile?: (file: FileState) => Promise<void>;
6
+ };
7
+ export default function FileItem({ file, handleUploadFile, handleDeleteFile, }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/file-input/components/file-item/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAKlD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD,CAAC;AACF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,IAAI,EACJ,gBAAgB,EAChB,gBAAgB,GACjB,EAAE,KAAK,2CAuEP"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { UploadStatuses } from "../..";
3
+ import Icon from "../../../icon";
4
+ import { Utils } from "sea-platform-helpers";
5
+ import Button from "../../../button";
6
+ export default function FileItem({ file, handleUploadFile, handleDeleteFile, }) {
7
+ return (_jsx("div", { className: "px-2 py-1 rounded-lg bg-info bg-opacity-20 max-w-52", children: _jsxs("div", { className: "grid grid-cols-4 gap-2 items-center", children: [_jsx("div", { className: "col-span-3", children: _jsxs("div", { children: [_jsx("p", { className: "text-sm text-text font-semibold truncate", children: file.name }), _jsx("p", { className: "text-sm text-info", children: Utils.Number.default(file.size).format("0.0 b") })] }) }), _jsx("div", { className: "col-span-1", children: _jsxs("div", { className: "flex items-center justify-end gap-1", children: [file.status === UploadStatuses.Failed && (_jsxs(_Fragment, { children: [_jsx(Icon, { icon: "mdi:cloud-remove-outline", className: "w-5 h-5 text-error" }), _jsx(Button, { type: "button", className: "bg-transparent", onClick: () => handleUploadFile(file), children: _jsx(Icon, { icon: "pajamas:retry", className: "w-5 h-5 text-primary hover:text-opacity-50 transition-all duration-300 ease-in-out" }) })] })), [UploadStatuses.Pending, UploadStatuses.Uploading].includes(file.status) && (_jsx(Icon, { icon: "line-md:uploading-loop", className: "w-5 h-5 text-info" })), file.status === UploadStatuses.Uploaded && (_jsxs(_Fragment, { children: [_jsx(Icon, { icon: "ic:outline-cloud-done", className: "w-5 h-5 text-primary" }), _jsx(Button, { type: "button", className: "bg-transparent", onClick: () => {
8
+ handleDeleteFile(file);
9
+ }, children: _jsx(Icon, { icon: "famicons:close", className: "w-5 h-5 text-error transition-all duration-300 ease-in-out" }) })] }))] }) })] }) }));
10
+ }