@royaltics/ui 1.0.0

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 (78) hide show
  1. package/README.md +84 -0
  2. package/dist/buttons/Button.d.ts +19 -0
  3. package/dist/buttons/Button.d.ts.map +1 -0
  4. package/dist/buttons/Button.js +12 -0
  5. package/dist/buttons/Button.js.map +1 -0
  6. package/dist/forms/Checkbox.d.ts +18 -0
  7. package/dist/forms/Checkbox.d.ts.map +1 -0
  8. package/dist/forms/Checkbox.js +17 -0
  9. package/dist/forms/Checkbox.js.map +1 -0
  10. package/dist/forms/Input.d.ts +31 -0
  11. package/dist/forms/Input.d.ts.map +1 -0
  12. package/dist/forms/Input.js +35 -0
  13. package/dist/forms/Input.js.map +1 -0
  14. package/dist/forms/InputAutocomplete.d.ts +20 -0
  15. package/dist/forms/InputAutocomplete.d.ts.map +1 -0
  16. package/dist/forms/InputAutocomplete.js +67 -0
  17. package/dist/forms/InputAutocomplete.js.map +1 -0
  18. package/dist/forms/Paginate.d.ts +12 -0
  19. package/dist/forms/Paginate.d.ts.map +1 -0
  20. package/dist/forms/Paginate.js +35 -0
  21. package/dist/forms/Paginate.js.map +1 -0
  22. package/dist/forms/PhotoCard.d.ts +12 -0
  23. package/dist/forms/PhotoCard.d.ts.map +1 -0
  24. package/dist/forms/PhotoCard.js +62 -0
  25. package/dist/forms/PhotoCard.js.map +1 -0
  26. package/dist/forms/PlayerYoutube.d.ts +17 -0
  27. package/dist/forms/PlayerYoutube.d.ts.map +1 -0
  28. package/dist/forms/PlayerYoutube.js +40 -0
  29. package/dist/forms/PlayerYoutube.js.map +1 -0
  30. package/dist/forms/RadioButton.d.ts +16 -0
  31. package/dist/forms/RadioButton.d.ts.map +1 -0
  32. package/dist/forms/RadioButton.js +14 -0
  33. package/dist/forms/RadioButton.js.map +1 -0
  34. package/dist/forms/Select.d.ts +22 -0
  35. package/dist/forms/Select.d.ts.map +1 -0
  36. package/dist/forms/Select.js +36 -0
  37. package/dist/forms/Select.js.map +1 -0
  38. package/dist/forms/TextArea.d.ts +22 -0
  39. package/dist/forms/TextArea.d.ts.map +1 -0
  40. package/dist/forms/TextArea.js +21 -0
  41. package/dist/forms/TextArea.js.map +1 -0
  42. package/dist/forms/ToogleSwitch.d.ts +12 -0
  43. package/dist/forms/ToogleSwitch.d.ts.map +1 -0
  44. package/dist/forms/ToogleSwitch.js +14 -0
  45. package/dist/forms/ToogleSwitch.js.map +1 -0
  46. package/dist/forms/index.d.ts +12 -0
  47. package/dist/forms/index.d.ts.map +1 -0
  48. package/dist/forms/index.js +12 -0
  49. package/dist/forms/index.js.map +1 -0
  50. package/dist/hooks/index.d.ts +4 -0
  51. package/dist/hooks/index.d.ts.map +1 -0
  52. package/dist/hooks/index.js +4 -0
  53. package/dist/hooks/index.js.map +1 -0
  54. package/dist/hooks/useHttpState.d.ts +31 -0
  55. package/dist/hooks/useHttpState.d.ts.map +1 -0
  56. package/dist/hooks/useHttpState.js +100 -0
  57. package/dist/hooks/useHttpState.js.map +1 -0
  58. package/dist/hooks/useNavigatorOnline.d.ts +3 -0
  59. package/dist/hooks/useNavigatorOnline.d.ts.map +1 -0
  60. package/dist/hooks/useNavigatorOnline.js +20 -0
  61. package/dist/hooks/useNavigatorOnline.js.map +1 -0
  62. package/dist/hooks/useRouter.d.ts +9 -0
  63. package/dist/hooks/useRouter.d.ts.map +1 -0
  64. package/dist/hooks/useRouter.js +21 -0
  65. package/dist/hooks/useRouter.js.map +1 -0
  66. package/dist/index.d.ts +9 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +11 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/reducers/index.d.ts +7 -0
  71. package/dist/reducers/index.d.ts.map +1 -0
  72. package/dist/reducers/index.js +8 -0
  73. package/dist/reducers/index.js.map +1 -0
  74. package/dist/validator/validator.d.ts +25 -0
  75. package/dist/validator/validator.d.ts.map +1 -0
  76. package/dist/validator/validator.js +119 -0
  77. package/dist/validator/validator.js.map +1 -0
  78. package/package.json +46 -0
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # 📦 Royaltics Utils & UI
2
+
3
+ 🚀 Una librería de utilidades y componentes UI reutilizables para proyectos JavaScript y TypeScript. Compatible con utilsJS y ESM.
4
+
5
+ ## 📌 Instalación
6
+
7
+ Puedes instalar la librería usando **pnpm**, **npm** o **yarn**:
8
+
9
+ ```sh
10
+ pnpm add royaltics
11
+ # o
12
+ npm install royaltics
13
+ # o
14
+ yarn add royaltics
15
+ ```
16
+
17
+ ---
18
+
19
+ ## 📂 Estructura del Paquete
20
+
21
+ Esta librería está dividida en dos módulos principales:
22
+
23
+ - `` → Funciones utilitarias
24
+ - `` → Componentes UI
25
+
26
+ ---
27
+
28
+ ## 🛠 **Uso de Utilidades (**``**)**
29
+
30
+ ### 📅 **Ejemplo: Formatear fecha en español**
31
+
32
+ ```ts
33
+ import { dateToStringEs } from "royaltics/utils";
34
+
35
+ const fecha = new Date();
36
+ console.log(dateToStringEs(fecha)); // "Lunes, 30 de Marzo del 2023"
37
+ ```
38
+
39
+ ### 🔢 **Ejemplo: formatear Numeros**
40
+
41
+ ```ts
42
+ import { defaultFloat } from "royaltics/utils";
43
+
44
+ console.log(defaultFloat("5,599")); // 5.599
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 🎨 **Uso de Componentes UI (**``**)**
50
+
51
+ ### ▶️ **Ejemplo: Reproductor de YouTube**
52
+
53
+ ```tsx
54
+ import { YouTubePlayer } from "royaltics/ui";
55
+
56
+ const App = () => (
57
+ <YouTubePlayer videoId="dQw4w9WgXcQ" />
58
+ );
59
+
60
+ export default App;
61
+ ```
62
+
63
+ ---
64
+
65
+ ## ⚙️ **Compilación y Desarrollo**
66
+
67
+ Para compilar la librería:
68
+
69
+ ```sh
70
+ pnpm build
71
+ ```
72
+
73
+ Para ejecutar en modo desarrollo:
74
+
75
+ ```sh
76
+ pnpm dev
77
+ ```
78
+
79
+ ---
80
+
81
+ ## 📜 **Licencia**
82
+
83
+ MIT License © 2025 - Royaltics Solutions
84
+
@@ -0,0 +1,19 @@
1
+ import React, { ReactNode } from "react";
2
+ type ButtonType = {
3
+ lb?: string;
4
+ icon?: ReactNode;
5
+ children?: ReactNode;
6
+ IconNode?: any;
7
+ inForm?: boolean;
8
+ className?: any;
9
+ theme?: 'primary' | 'secondary' | 'warn' | 'danger' | 'default';
10
+ tabIndex?: number;
11
+ disabled?: boolean;
12
+ onClick?: any;
13
+ wMax?: boolean;
14
+ padding?: 'small' | 'medium' | 'large';
15
+ wrap?: boolean;
16
+ };
17
+ declare const Button: ({ lb, padding, icon, children, IconNode, wMax, theme, className, onClick, inForm, disabled, tabIndex, wrap }: ButtonType) => React.JSX.Element;
18
+ export default Button;
19
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAC,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACtC,IAAI,CAAC,EAAC,OAAO,CAAA;CACd,CAAA;AAED,QAAA,MAAM,MAAM,iHAA0I,UAAU,sBA0B/J,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import cn from 'classnames';
3
+ const Button = ({ lb = "", padding, icon, children, IconNode, wMax = false, theme = 'default', className, onClick, inForm, disabled, tabIndex, wrap }) => {
4
+ return (React.createElement("div", { className: `flex flex-col items-stretch justify-end ${wMax ? 'w-max' : 'w-full'} ${className ?? ''}` },
5
+ React.createElement("button", { className: cn('button text-white ', theme == 'default' && "bg-gray-500 hover:bg-gray-600 disabled:bg-slate-300", theme == 'primary' && "bg-sky-650 hover:bg-sky-750 disabled:bg-sky-300 ", theme == 'secondary' && "bg-green-500 hover:bg-green-650 disabled:bg-green-300 ", theme == 'danger' && "bg-red-600 hover:bg-red-700 disabled:bg-red-300 ", theme == 'warn' && "bg-yellow-600 hover:bg-yellow-700 disabled:bg-yellow-300 ", padding == 'small' && (inForm || icon || IconNode ? '!py-[0.45rem]' : '!py-1.5'), padding == 'medium' && '!py-2 !px-4', padding == 'large' && '!p-4'), onClick: onClick, title: lb, tabIndex: tabIndex, disabled: disabled },
6
+ icon,
7
+ children,
8
+ IconNode && React.createElement(IconNode, { className: "h-5" }),
9
+ lb && React.createElement("span", { className: wrap ? 'hidden md:block' : '' }, lb))));
10
+ };
11
+ export default Button;
12
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAkB3B,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAc,EAAE,EAAE;IAElK,OAAO,CACL,6BAAK,SAAS,EAAE,2CAA2C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,IAAI,EAAE,EAAE;QACvG,gCACE,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAChC,KAAK,IAAI,SAAS,IAAI,qDAAqD,EAC3E,KAAK,IAAI,SAAS,IAAI,kDAAkD,EACxE,KAAK,IAAI,WAAW,IAAI,wDAAwD,EAChF,KAAK,IAAI,QAAQ,IAAI,kDAAkD,EACvE,KAAK,IAAI,MAAM,IAAI,2DAA2D,EAC9E,OAAO,IAAI,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,EAChF,OAAO,IAAI,QAAQ,IAAI,aAAa,EACpC,OAAO,IAAI,OAAO,IAAI,MAAM,CAC7B,EACD,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;YACjB,IAAI;YACJ,QAAQ;YACR,QAAQ,IAAI,oBAAC,QAAQ,IAAC,SAAS,EAAC,KAAK,GAAG;YACxC,EAAE,IAAI,8BAAM,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAA,CAAC,CAAA,EAAE,IAAG,EAAE,CAAQ,CACzD,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ type CheckBoxType = {
3
+ id: string;
4
+ lb?: string;
5
+ state: {
6
+ inputs: any;
7
+ setInputs?: React.Dispatch<any>;
8
+ };
9
+ readOnly?: boolean;
10
+ icon?: any;
11
+ className?: string;
12
+ inForm?: boolean;
13
+ tabIndex?: number;
14
+ type?: 'number' | 'boolean';
15
+ };
16
+ declare const Checkbox: ({ id, state, lb, readOnly, className, inForm, type, tabIndex }: CheckBoxType) => React.JSX.Element;
17
+ export default Checkbox;
18
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/forms/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC5B,CAAA;AACD,QAAA,MAAM,QAAQ,mEAAgF,YAAY,sBA4BzG,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ const Checkbox = ({ id, state, lb, readOnly, className, inForm, type = 'boolean', tabIndex }) => {
3
+ const { inputs, setInputs } = state;
4
+ const handleClick = () => {
5
+ if (setInputs && !readOnly) {
6
+ let value = type == 'number' ? (inputs[id] == 1 ? 0 : 1) : !inputs[id];
7
+ setInputs({ [id]: value });
8
+ }
9
+ };
10
+ return (React.createElement("div", { className: `font-medium flex items-center space-x-2 dark:text-gray-200 cursor-pointer ${readOnly ? 'text-gray-600 dark:text-gray-400' : ''} ${inForm ? 'mt-3' : ''}` },
11
+ React.createElement("input", { id: "check_" + id, onChange: handleClick, type: "checkbox", className: `appearance-none ${className ?? 'w-4 h-4'} rounded border border-gray-300 cursor-pointer `,
12
+ //dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600
13
+ checked: inputs[id] || false, disabled: readOnly, tabIndex: tabIndex, name: id }),
14
+ React.createElement("label", { htmlFor: "check_" + id, className: "cursor-pointer" }, lb)));
15
+ };
16
+ export default Checkbox;
17
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/forms/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAgB,EAAE,EAAE;IAC5G,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,6EAA6E,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvK,+BAAO,EAAE,EAAE,QAAQ,GAAG,EAAE,EACtB,QAAQ,EAAE,WAAW,EAErB,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,mBAAmB,SAAS,IAAI,SAAS,mDAAmD;YACvG,uGAAuG;YACvG,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,EAAE,GAER;QACF,+BAAO,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAC,gBAAgB,IAAE,EAAE,CAAS,CAClE,CAEP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import React, { LegacyRef } from "react";
2
+ type InputType = {
3
+ id: string;
4
+ lb?: string;
5
+ noWrap?: boolean;
6
+ type?: "text" | "hidden" | 'time' | "date" | "number" | 'email' | 'password' | 'month' | 'datetime-local';
7
+ placeholder?: string;
8
+ state: {
9
+ inputs: any;
10
+ setInputs?: React.Dispatch<any>;
11
+ };
12
+ disabled?: boolean;
13
+ readOnly?: boolean;
14
+ className?: string;
15
+ icon?: any;
16
+ textCenter?: boolean;
17
+ required?: boolean;
18
+ referer?: LegacyRef<any> | undefined;
19
+ onBlur?: (evt: any) => void;
20
+ onKeyDown?: (evt: any) => void;
21
+ enter?: "search" | "go" | "enter" | "done" | "next" | "previous" | "send";
22
+ onEnter?: (evt: any) => void;
23
+ autocomplete?: 'off' | 'new-password';
24
+ tabIndex?: number;
25
+ decimal?: boolean;
26
+ maxLength?: number;
27
+ onwheel?: boolean;
28
+ };
29
+ declare const Input: ({ id, lb, type, decimal, onwheel, maxLength, placeholder, state, disabled, icon, readOnly, noWrap, className, textCenter, required, referer, onKeyDown, enter, onEnter, autocomplete, tabIndex, onBlur }: InputType) => React.JSX.Element;
30
+ export default Input;
31
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/forms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,gBAAgB,CAAC;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAEnB,CAAA;AAED,QAAA,MAAM,KAAK,6MAAoP,SAAS,sBAuDvQ,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,35 @@
1
+ import React from "react";
2
+ const Input = ({ id, lb, type = 'text', decimal = true, onwheel = true, maxLength, placeholder, state, disabled, icon, readOnly, noWrap = true, className, textCenter = false, required, referer, onKeyDown, enter, onEnter, autocomplete, tabIndex, onBlur }) => {
3
+ const { inputs, setInputs } = state;
4
+ const _onKeyDown = (evt) => {
5
+ //validar decimal
6
+ if (type === 'number' && !decimal && (evt.keyCode == 110 || evt.keyCode == 188 || evt.keyCode == 190)) {
7
+ evt.preventDefault();
8
+ return;
9
+ }
10
+ if (evt.keyCode == 13 && onEnter && !evt.repeat) { //if Enter
11
+ onEnter(evt);
12
+ }
13
+ if (onKeyDown)
14
+ onKeyDown(evt);
15
+ };
16
+ return (React.createElement("div", { className: "flex flex-col items-stretch justify-start " + (className ?? '') },
17
+ lb && React.createElement("label", { htmlFor: id, className: `font-medium text-gray-700 dark:text-gray-200 pb-0.5` + (noWrap ? " text-justify" : "wrap") },
18
+ lb,
19
+ ":"),
20
+ React.createElement("div", { className: `flex flex-row-reverse border dark:border-gray-600 rounded-md items-center ${readOnly ? 'bg-gray-50 dark:bg-gray-600' : 'dark:bg-gray-800 '}` },
21
+ React.createElement("input", { ref: referer, className: `py-1.5 rounded-md px-2 w-full ${textCenter ? 'text-center' : ''} outline-none ${readOnly ? 'bg-gray-50 dark:bg-gray-600 dark:text-gray-200' : 'dark:bg-gray-800 dark:text-white'}`, id: id, "aria-autocomplete": autocomplete === "off" ? "none" : "inline", autoComplete: autocomplete, type: type, value: inputs?.[id] || '', placeholder: placeholder || lb, disabled: disabled, readOnly: readOnly, required: required, maxLength: maxLength, onFocus: onwheel ? undefined : (e) => e.target.addEventListener("wheel", function (e) { e.preventDefault(); }, { passive: false }), onKeyDown: _onKeyDown, onBlur: onBlur, onPaste: (event) => {
22
+ event.preventDefault();
23
+ const pastedText = event.clipboardData.getData('text')?.trimEnd();
24
+ const { selectionStart, selectionEnd, value } = event.target;
25
+ const isFullySelected = (selectionStart === 0 && selectionEnd === value.length) || selectionEnd === null;
26
+ const finalValue = isFullySelected ? pastedText : value.slice(0, selectionStart) + pastedText + value.slice(selectionEnd);
27
+ // Set the input state with the new value
28
+ setInputs?.({ [id]: finalValue });
29
+ }, enterKeyHint: enter, tabIndex: tabIndex, onChange: (e) => {
30
+ setInputs?.({ [id]: e.target.value });
31
+ } }),
32
+ React.createElement("span", { className: `${icon ? "ml-1 pl-1" : ""} ${disabled ? "text-gray-400 dark:text-gray-800" : "text-gray-700 dark:text-gray-300"}` }, icon))));
33
+ };
34
+ export default Input;
35
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/forms/Input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ type InputProps = {
3
+ id: string;
4
+ className?: string;
5
+ state: {
6
+ inputs: any;
7
+ setInputs: (data: any, items?: any) => void;
8
+ };
9
+ lb?: string;
10
+ placeholder?: string;
11
+ api: string;
12
+ disabled?: boolean;
13
+ keyText?: string;
14
+ keyValue?: string;
15
+ onKeyDown?: (e: any) => void;
16
+ criteria?: any;
17
+ };
18
+ declare const _default: React.MemoExoticComponent<({ lb, state, api, keyText, keyValue, disabled, className, id, placeholder, criteria }: InputProps) => JSX.Element>;
19
+ export default _default;
20
+ //# sourceMappingURL=InputAutocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputAutocomplete.d.ts","sourceRoot":"","sources":["../../src/forms/InputAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAOrE,KAAK,UAAU,GAAG;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,CAAC;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB,CAAA;0IAEoJ,UAAU,KAAG,GAAG,CAAC,OAAO;AA0F7K,wBAAuC"}
@@ -0,0 +1,67 @@
1
+ import React, { memo, useEffect, useReducer, useState } from "react";
2
+ import cn from 'classnames';
3
+ import { XCircleIcon } from "@heroicons/react/24/outline";
4
+ import { Reducer } from "../reducers/index.js";
5
+ import useHttpState from "../hooks/useHttpState.js";
6
+ const InputAutocomplete = ({ lb, state, api, keyText = 'names', keyValue = 'id', disabled = false, className = '', id, placeholder, criteria = {} }) => {
7
+ const [dropdown, setDropDown] = useReducer((Reducer), { open: false, text: '' });
8
+ const [dropdownList, setDropDownList] = useState([]);
9
+ const [selectedItems, setSelectedItems] = useState([]); // Estado para los elementos seleccionados
10
+ const { inputs, setInputs } = state;
11
+ const { get, post } = useHttpState();
12
+ useEffect(() => {
13
+ // Auto Select first Element -> Only if model not contains this key Text
14
+ if (selectedItems) {
15
+ setInputs({ [id]: selectedItems.map((item => item[keyValue])) }, selectedItems);
16
+ }
17
+ }, [selectedItems]);
18
+ useEffect(() => {
19
+ // Auto Select first Element -> Only if model not contains this key Text
20
+ if (inputs[id] > 0 && !inputs[keyText] && id) {
21
+ get(api + "/" + inputs[id], {
22
+ onSuccess: (d) => {
23
+ setInputs({ [id]: d[keyValue], [keyText]: d[keyText], text: d[keyText] });
24
+ }
25
+ });
26
+ }
27
+ }, []);
28
+ useEffect(() => {
29
+ // Auto Select first Element -> Only if model not contains this key
30
+ if (dropdown.text?.length > 0 && id) {
31
+ post(api + '/search', {
32
+ data: { search: dropdown.text, ...criteria, limit: 100 },
33
+ onSuccess: (data) => {
34
+ setDropDownList(data);
35
+ }
36
+ });
37
+ }
38
+ }, [dropdown.text]);
39
+ const handleSelect = (item) => {
40
+ if (Number(item[keyValue]) <= 0 || selectedItems.find(i => i[keyValue] === item[keyValue])) {
41
+ return;
42
+ }
43
+ setSelectedItems([...selectedItems, item]); // Agrega el elemento seleccionado a la lista
44
+ setDropDown({ text: '', open: false }); // Cierra el dropdown
45
+ };
46
+ const handleRemove = (item) => {
47
+ setSelectedItems(selectedItems.filter(i => i[keyValue] !== item[keyValue])); // Elimina el elemento de la lista
48
+ };
49
+ return (React.createElement("div", { className: "relative flex flex-col select-none " + className },
50
+ lb && React.createElement("label", { className: 'text-gray-700 dark:text-gray-200 pb-0.5' },
51
+ lb,
52
+ " (",
53
+ selectedItems.length,
54
+ ")"),
55
+ React.createElement("div", { className: cn('flex flex-wrap items-center gap-2 border rounded-md py-1 px-1 dark:border-gray-600 ', disabled ? 'dark:bg-gray-600 dark:text-gray-300' : 'bg-white dark:bg-gray-800 dark:text-white') },
56
+ selectedItems.map((item, index) => (React.createElement("div", { key: index, className: "flex items-center bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded-md" },
57
+ React.createElement("span", null, item[keyText]),
58
+ React.createElement(XCircleIcon, { className: "h-4 w-4 ml-1 cursor-pointer", onClick: () => handleRemove(item) })))),
59
+ React.createElement("input", { className: "flex-grow overflow-hidden outline-none bg-transparent py-0.5", type: "text", enterKeyHint: "search", onChange: (e) => setDropDown({ open: true, text: e.target.value }), onKeyDown: (e) => {
60
+ if (e.key === 'Enter') {
61
+ setDropDown({ open: true, text: dropdown.text });
62
+ }
63
+ }, placeholder: placeholder || lb, value: dropdown.text })),
64
+ dropdown.open && dropdownList.length > 0 && React.createElement("div", { className: "absolute border-1 dark:border-slate-600 bg-white dark:bg-slate-800 top-full w-full z-30 overflow-y-auto max-h-48 p-1 rounded-md shadow-md" }, dropdownList && dropdownList.map((item, index) => (React.createElement("div", { key: index, className: cn('p-1 cursor-pointer hover:bg-black/10 truncate border-b-2 border-white dark:border-slate-700 dark:text-white'), onClick: () => handleSelect(item) }, item[keyText]))))));
65
+ };
66
+ export default memo(InputAutocomplete);
67
+ //# sourceMappingURL=InputAutocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputAutocomplete.js","sourceRoot":"","sources":["../../src/forms/InputAutocomplete.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ type PaginateProps = {
3
+ defaultPage?: number;
4
+ onChangue: (page: number, offset: number, limit: number) => void;
5
+ rows: number;
6
+ rowsPage: number;
7
+ children: any;
8
+ overFlowAuto?: boolean;
9
+ };
10
+ declare const _default: React.MemoExoticComponent<({ defaultPage, rows, rowsPage, children, onChangue, overFlowAuto }: PaginateProps) => JSX.Element>;
11
+ export default _default;
12
+ //# sourceMappingURL=Paginate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paginate.d.ts","sourceRoot":"","sources":["../../src/forms/Paginate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,KAAK,aAAa,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAA;uHAE8F,aAAa,KAAG,GAAG,CAAC,OAAO;AAoD1H,wBAAoC"}
@@ -0,0 +1,35 @@
1
+ import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/solid';
2
+ import React, { useEffect, useReducer } from 'react';
3
+ import { Reducer } from '../reducers/index.js';
4
+ const Paginate = ({ defaultPage = 1, rows, rowsPage = 30, children, onChangue, overFlowAuto }) => {
5
+ const [paginate, setPaginate] = useReducer((Reducer), { current: defaultPage, total: 1 });
6
+ useEffect(() => {
7
+ let pageTotal = 1;
8
+ if (rowsPage > 0)
9
+ pageTotal = Math.ceil(rows / rowsPage);
10
+ setPaginate({ total: pageTotal });
11
+ }, [rows]);
12
+ const nextPage = () => {
13
+ const page = (paginate.current + 1) >= paginate.total ? paginate.total : paginate.current + 1;
14
+ onChangue((page - 1) * rowsPage, page * rowsPage, page);
15
+ setPaginate({ current: page });
16
+ };
17
+ const prevPage = () => {
18
+ const page = (paginate.current - 1) < 0 ? 0 : paginate.current - 1;
19
+ onChangue((page - 1) * rowsPage, page * rowsPage, page);
20
+ setPaginate({ current: page });
21
+ };
22
+ return (React.createElement(React.Fragment, null,
23
+ React.createElement("div", { className: overFlowAuto ? 'w-full overflow-auto h-96 scrollbar-thin' : '' }, children),
24
+ React.createElement("div", { className: "my-1 flex items-center gap-1 cursor-pointer text-base select-none" },
25
+ React.createElement("button", { title: 'Anterior', disabled: paginate.current == 1 || paginate.total == 1, onClick: prevPage, className: 'p-1 font-bold rounded-md bg-slate-200 dark:bg-slate-600 disabled:text-gray-400 hover:bg-black/15' },
26
+ React.createElement(ChevronLeftIcon, { height: 24, width: 17 })),
27
+ Array.from({ length: paginate.total }, (_, index) => index + 1).map((pag) => (React.createElement("button", { key: pag, onClick: () => {
28
+ onChangue((pag - 1) * rowsPage, pag * rowsPage, pag);
29
+ setPaginate({ current: pag });
30
+ }, className: `p-1 px-2 rounded-md bg-slate-200 dark:bg-slate-600 dark:text-gray-200 disabled:text-gray-400 hover:bg-black/15 ${pag == paginate.current ? ' font-medium !bg-sky-650 text-white' : ' '}` }, pag))),
31
+ React.createElement("button", { title: 'Siguiente', disabled: paginate.current == paginate.total || paginate.total == 1, onClick: nextPage, className: 'p-1 font-bold rounded-md bg-slate-200 dark:bg-slate-600 disabled:text-gray-400 hover:bg-black/15' },
32
+ React.createElement(ChevronRightIcon, { height: 24, width: 17 })))));
33
+ };
34
+ export default React.memo(Paginate);
35
+ //# sourceMappingURL=Paginate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paginate.js","sourceRoot":"","sources":["../../src/forms/Paginate.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ type PhotoCardType = {
3
+ uuid?: string;
4
+ user_id?: any;
5
+ api: string;
6
+ photo: string | null;
7
+ theme?: 'small' | 'default';
8
+ set: (url: any) => void;
9
+ };
10
+ declare const PhotoCard: ({ uuid, api, user_id, photo, set, theme }: PhotoCardType) => React.JSX.Element;
11
+ export default PhotoCard;
12
+ //# sourceMappingURL=PhotoCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhotoCard.d.ts","sourceRoot":"","sources":["../../src/forms/PhotoCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,KAAK,aAAa,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3B,CAAA;AAED,QAAA,MAAM,SAAS,8CAAgE,aAAa,sBA8E3F,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,62 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { toast } from "react-toastify";
3
+ import { FolderIcon, TrashIcon } from '@heroicons/react/24/outline';
4
+ import cn from "classnames";
5
+ import useHttpState from "../hooks/useHttpState.js";
6
+ const PhotoCard = ({ uuid = '', api, user_id, photo, set, theme = 'default' }) => {
7
+ // Valores de los inputs
8
+ const [preview, setPreview] = useState(null);
9
+ const { deleteReq, patch } = useHttpState();
10
+ useEffect(() => {
11
+ setPreview(photo);
12
+ }, [photo]);
13
+ // Crear una vista previa como efecto, siempre que se cambie el archivo seleccionado
14
+ //Update and Selected Image
15
+ const onSelectFile = (e) => {
16
+ if (!e.target.files || e.target.files.length === 0) {
17
+ return;
18
+ }
19
+ const exts = e.target.files[0].name?.split(".");
20
+ const ext = exts[exts.length - 1];
21
+ if (["jpg", "png", "jpeg", "bpm", "tif"].includes(ext)) {
22
+ setPreview(URL.createObjectURL(e.target.files[0]));
23
+ patch(api, {
24
+ data: { user_id, enterprise_id: 1, photo: e.target.files[0] },
25
+ content_type: 'file',
26
+ onSuccess: (data) => {
27
+ set({ photo: data.photo });
28
+ toast.success('Imagen Actualizada Correctamente!');
29
+ }
30
+ });
31
+ }
32
+ else {
33
+ toast.error("Por favor seleccione una imagen de Extensión (jpg,png,bmp)");
34
+ }
35
+ };
36
+ const deletePreview = () => {
37
+ setPreview(null);
38
+ if (photo != 'Photo.jpg') {
39
+ deleteReq(api, {
40
+ onSuccess: (data) => {
41
+ set({ photo: 'Photo.jpg' });
42
+ toast.success('Imagen Eliminada Correctamente!');
43
+ setPreview(null);
44
+ }
45
+ });
46
+ }
47
+ };
48
+ return (React.createElement("div", { className: "flex items-center space-x-2 justify-center" },
49
+ React.createElement("img", { src: preview ? preview : '/images/Photo.jpg', alt: "", className: cn(" rounded-full", theme == 'default' ? ' h-20 w-20' : 'h-8 w-8') }),
50
+ React.createElement("div", { className: cn("flex gap-2", theme == 'default' ? 'flex-col text-sm' : 'text-xs') },
51
+ React.createElement("input", { className: "hidden", type: "file", id: `profile-file-${uuid}`, accept: ".jpg, .png, .jpeg, .bmp, .tif, .tiff|image/*", onChange: (e) => {
52
+ onSelectFile(e);
53
+ } }),
54
+ React.createElement("label", { htmlFor: `profile-file-${uuid}`, className: "button outline-gray" },
55
+ React.createElement(FolderIcon, { className: "h-4" }),
56
+ React.createElement("span", { className: theme == 'small' ? 'hidden' : '' }, " Cambiar Imagen")),
57
+ preview && React.createElement("button", { className: "button outline-red", onClick: deletePreview },
58
+ React.createElement(TrashIcon, { className: "h-4" }),
59
+ React.createElement("span", { className: theme == 'small' ? 'hidden' : '' }, "Eliminar Imagen")))));
60
+ };
61
+ export default PhotoCard;
62
+ //# sourceMappingURL=PhotoCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhotoCard.js","sourceRoot":"","sources":["../../src/forms/PhotoCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAWpD,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,EAAiB,EAAE,EAAE;IAC5F,wBAAwB;IACxB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAM,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACX,UAAU,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,oFAAoF;IACpF,2BAA2B;IAC3B,MAAM,YAAY,GAAG,CAAC,CAAM,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAErD,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,KAAK,CAAC,GAAG,EAAE;gBACP,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC7D,YAAY,EAAE,MAAM;gBACpB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAEhB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC3B,KAAK,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;gBACvD,CAAC;aACJ,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC7E,CAAC;IAEL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,KAAK,IAAI,WAAW,EAAE,CAAC;YACvB,SAAS,CAAC,GAAG,EAAE;gBACX,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChB,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC5B,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;oBACjD,UAAU,CAAC,IAAI,CAAC,CAAA;gBACpB,CAAC;aACJ,CAAC,CAAA;QACN,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACH,6BAAK,SAAS,EAAC,4CAA4C;QACvD,6BAAK,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAI;QAC3I,6BAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAC3B,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CACvD;YACG,+BACI,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,MAAM,EACX,EAAE,EAAE,gBAAgB,IAAI,EAAE,EAC1B,MAAM,EAAC,8CAA8C,EACrD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACZ,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC,GACH;YACF,+BAAO,OAAO,EAAE,gBAAgB,IAAI,EAAE,EAAE,SAAS,EAAC,qBAAqB;gBACnE,oBAAC,UAAU,IAAC,SAAS,EAAC,KAAK,GAAG;gBAC9B,8BAAM,SAAS,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAwB,CACrE;YACP,OAAO,IAAI,gCAAQ,SAAS,EAAC,oBAAoB,EAAC,OAAO,EAAE,aAAa;gBACrE,oBAAC,SAAS,IAAC,SAAS,EAAC,KAAK,GAAG;gBAC7B,8BAAM,SAAS,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAwB,CACpE,CAEP,CACJ,CAET,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ interface YouTubePlayerProps {
3
+ videoId: string;
4
+ className?: string;
5
+ iframeClassName?: string;
6
+ onReady?: (player: YT.Player) => void;
7
+ onStateChange?: (event: YT.OnStateChangeEvent) => void;
8
+ options?: {
9
+ autoplay?: 0 | 1;
10
+ controls?: 0 | 1;
11
+ loop?: 0 | 1;
12
+ mute?: 0 | 1;
13
+ };
14
+ }
15
+ export declare const YouTubePlayer: ({ videoId, className, iframeClassName, onReady, onStateChange, options, }: YouTubePlayerProps) => React.JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=PlayerYoutube.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerYoutube.d.ts","sourceRoot":"","sources":["../../src/forms/PlayerYoutube.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAUjD,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KACd,CAAC;CACH;AAED,eAAO,MAAM,aAAa,8EAOvB,kBAAkB,sBAuCpB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import React, { useEffect, useRef } from "react";
2
+ ;
3
+ export const YouTubePlayer = ({ videoId, className, iframeClassName, onReady, onStateChange, options = {}, }) => {
4
+ const playerRef = useRef(null);
5
+ useEffect(() => {
6
+ if (!playerRef.current)
7
+ return;
8
+ // Cargar el script de la API de YouTube si no está en el documento
9
+ if (!window.YT) {
10
+ const tag = document.createElement("script");
11
+ tag.src = "https://www.youtube.com/iframe_api";
12
+ tag.async = true;
13
+ document.body.appendChild(tag);
14
+ }
15
+ const onYouTubeIframeAPIReady = () => {
16
+ const player = new YT.Player(playerRef.current, {
17
+ videoId,
18
+ playerVars: {
19
+ autoplay: options.autoplay ?? 0,
20
+ controls: options.controls ?? 1,
21
+ loop: options.loop ?? 0,
22
+ mute: options.mute ?? 0,
23
+ },
24
+ events: {
25
+ onReady: (event) => onReady?.(event.target),
26
+ onStateChange,
27
+ },
28
+ });
29
+ };
30
+ // Esperar a que la API de YouTube esté lista
31
+ if (window.YT && window.YT.Player) {
32
+ onYouTubeIframeAPIReady();
33
+ }
34
+ else {
35
+ window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;
36
+ }
37
+ }, [videoId, options]);
38
+ return React.createElement("div", { ref: playerRef, className: className });
39
+ };
40
+ //# sourceMappingURL=PlayerYoutube.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerYoutube.js","sourceRoot":"","sources":["../../src/forms/PlayerYoutube.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQhD,CAAC;AAgBF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,eAAe,EACf,OAAO,EACP,aAAa,EACb,OAAO,GAAG,EAAE,GACO,EAAE,EAAE;IACvB,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAE/B,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,GAAG,GAAG,oCAAoC,CAAC;YAC/C,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,uBAAuB,GAAG,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAyB,EAAE;gBAChE,OAAO;gBACP,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;oBACvB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;iBACxB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC3C,aAAa;iBACd;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,6CAA6C;QAC7C,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,uBAAuB,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACL,MAAc,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACpE,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvB,OAAO,6BAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ interface CheckBoxType {
3
+ id: string;
4
+ value: any;
5
+ lb?: string;
6
+ state: {
7
+ inputs: any;
8
+ setInputs?: React.Dispatch<any>;
9
+ };
10
+ readOnly?: boolean;
11
+ className?: string;
12
+ inForm?: boolean;
13
+ }
14
+ declare const RadioButton: ({ id, state, lb, readOnly, className, inForm, value }: CheckBoxType) => React.JSX.Element;
15
+ export default RadioButton;
16
+ //# sourceMappingURL=RadioButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioButton.d.ts","sourceRoot":"","sources":["../../src/forms/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,QAAA,MAAM,WAAW,0DAA2D,YAAY,sBAuBvF,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ const RadioButton = ({ id, state, lb, readOnly, className, inForm, value }) => {
3
+ const { inputs, setInputs } = state;
4
+ const handleClick = () => {
5
+ if (setInputs && !readOnly) {
6
+ setInputs({ [id]: value });
7
+ }
8
+ };
9
+ return (React.createElement("div", { className: `font-normal flex items-center space-x-2 cursor-pointer ${readOnly ? 'text-gray-500 dark:text-gray-400' : ''} ${inForm ? 'mt-3' : ''}` },
10
+ React.createElement("input", { id: "check_" + id + value, onChange: handleClick, type: "radio", className: `appearance-none ${className ?? 'w-4 h-4'} checked:border-white border-2 bg-slate-200 rounded-full cursor-pointer focus:ring-blue-500 checked:bg-sky-650 ring-2 ring-gray-400 checked:ring-sky-700`, checked: inputs[id] == value, disabled: readOnly, name: id }),
11
+ React.createElement("label", { htmlFor: "check_" + id + value, className: "cursor-pointer" }, lb)));
12
+ };
13
+ export default RadioButton;
14
+ //# sourceMappingURL=RadioButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../src/forms/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAgB,EAAE,EAAE;IAC1F,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,2DAA2D,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACrJ,+BAAO,EAAE,EAAE,QAAQ,GAAG,EAAE,GAAG,KAAK,EAC9B,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,mBAAmB,SAAS,IAAI,SAAS,2JAA2J,EAC/M,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,EAAE,GACR;QACF,+BAAO,OAAO,EAAE,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAC,gBAAgB,IAAE,EAAE,CAAS,CAC1E,CAEP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}