@levo-so/react 0.1.35 → 0.1.36

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 (72) hide show
  1. package/dist/{CheckboxWidget-BrVNbP0R.js → CheckboxWidget-3qTjxIlp.js} +1 -1
  2. package/dist/{CollectionFormBuilder-CkD8uVKZ.js → CollectionFormBuilder-CUzpwIva.js} +17 -17
  3. package/dist/{CurrencyWidget-D_q2AYWu.js → CurrencyWidget-DgH4uCpg.js} +1 -1
  4. package/dist/{DateTimeWidget-CsuCisSs.js → DateTimeWidget-C2hLHKU6.js} +1 -1
  5. package/dist/{DefaultFormVariant-rv38sBOZ.js → DefaultFormVariant-Cm9i2BBn.js} +2 -2
  6. package/dist/{DropdownWidget-CsTQ0Ojo.js → DropdownWidget-B6mRXcTa.js} +1 -1
  7. package/dist/{EmailWidget-Did2OUyB.js → EmailWidget-CBFnvo9z.js} +1 -1
  8. package/dist/{FormCaptcha-C_DxR2za.js → FormCaptcha-btA0HfMx.js} +3 -3
  9. package/dist/{GeocoderWidget-CyzcaWxa.js → GeocoderWidget-DZGXm9Ji.js} +2 -2
  10. package/dist/{MultiGeocoderWidget-DgwiZ330.js → MultiGeocoderWidget-D7ogTcWu.js} +2 -2
  11. package/dist/{MultiTextWidget-Dic46WBU.js → MultiTextWidget-DYxi8PHm.js} +1 -1
  12. package/dist/{PhoneWidget-DKH-Wzgz.js → PhoneWidget-BxaGCfLs.js} +1 -1
  13. package/dist/{RadioWidget-CTgWKCg2.js → RadioWidget-Bkq1Oudi.js} +1 -1
  14. package/dist/{RichTextWidget-C30H7mVF.js → RichTextWidget-Caqhw4GK.js} +1 -1
  15. package/dist/{StepsFormVariant-myT97AwJ.js → StepsFormVariant-D-m93LMv.js} +2 -2
  16. package/dist/{SwitchWidget-BS-rmHiq.js → SwitchWidget-BpAzgVui.js} +1 -1
  17. package/dist/{TextWidget-aNB-0vc-.js → TextWidget-CHkFlxmT.js} +1 -1
  18. package/dist/{TextareaWidget-CEH-97Oj.js → TextareaWidget-B0htlijX.js} +1 -1
  19. package/dist/{ToggleCheckboxWidget-C0buyS29.js → ToggleCheckboxWidget-DLrS6ax4.js} +1 -1
  20. package/dist/{URLWidget-DrZlRAD7.js → URLWidget-CnWKNlOF.js} +2 -2
  21. package/dist/{UploadWidget-Bw7urh-7.js → UploadWidget-DSvWOBuR.js} +1 -1
  22. package/dist/audience/components/page.d.ts +3 -4
  23. package/dist/audience/components/page.d.ts.map +1 -1
  24. package/dist/audience/index.js +1 -1
  25. package/dist/collection/index.js +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/membership/index.js +70 -69
  28. package/dist/page-C1-z2EsC.js +574 -0
  29. package/dist/providers/LevoProvider.d.ts +4 -19
  30. package/dist/providers/LevoProvider.d.ts.map +1 -1
  31. package/dist/providers/index.js +8 -164
  32. package/package.json +4 -4
  33. package/dist/Checbox-sq-atGlJ.js.map +0 -1
  34. package/dist/CheckboxWidget-BrVNbP0R.js.map +0 -1
  35. package/dist/CollectionFormBuilder-CkD8uVKZ.js.map +0 -1
  36. package/dist/CurrencyWidget-D_q2AYWu.js.map +0 -1
  37. package/dist/DateTimeWidget-CsuCisSs.js.map +0 -1
  38. package/dist/DefaultFormVariant-rv38sBOZ.js.map +0 -1
  39. package/dist/DropdownWidget-CsTQ0Ojo.js.map +0 -1
  40. package/dist/EmailWidget-Did2OUyB.js.map +0 -1
  41. package/dist/FormCaptcha-C_DxR2za.js.map +0 -1
  42. package/dist/GeocoderWidget-CyzcaWxa.js.map +0 -1
  43. package/dist/Input-Vv7mKQFt.js.map +0 -1
  44. package/dist/MultiGeocoderWidget-DgwiZ330.js.map +0 -1
  45. package/dist/MultiTextWidget-Dic46WBU.js.map +0 -1
  46. package/dist/PhoneWidget-DKH-Wzgz.js.map +0 -1
  47. package/dist/RadioWidget-CTgWKCg2.js.map +0 -1
  48. package/dist/RichTextWidget-C30H7mVF.js.map +0 -1
  49. package/dist/Sonner-t6JVKA0a.js.map +0 -1
  50. package/dist/Spinner-BcBoT-J5.js.map +0 -1
  51. package/dist/StepsFormVariant-myT97AwJ.js.map +0 -1
  52. package/dist/SwitchWidget-BS-rmHiq.js.map +0 -1
  53. package/dist/TextWidget-aNB-0vc-.js.map +0 -1
  54. package/dist/TextareaWidget-CEH-97Oj.js.map +0 -1
  55. package/dist/ToggleCheckboxWidget-C0buyS29.js.map +0 -1
  56. package/dist/Tooltip-DoWyn3Ho.js.map +0 -1
  57. package/dist/URLWidget-DrZlRAD7.js.map +0 -1
  58. package/dist/UploadWidget-Bw7urh-7.js.map +0 -1
  59. package/dist/audience/index.js.map +0 -1
  60. package/dist/byteToSize-BFKZSBu1.js.map +0 -1
  61. package/dist/cn-C9QoOYNG.js.map +0 -1
  62. package/dist/collection/index.js.map +0 -1
  63. package/dist/components/index.js.map +0 -1
  64. package/dist/errorHandler-_34Yv8wA.js.map +0 -1
  65. package/dist/index.js.map +0 -1
  66. package/dist/isEmptyObject-C5s4GzLE.js.map +0 -1
  67. package/dist/jsx-runtime-B6kdoens.js.map +0 -1
  68. package/dist/membership/index.js.map +0 -1
  69. package/dist/page-t8PpNiSB.js +0 -567
  70. package/dist/page-t8PpNiSB.js.map +0 -1
  71. package/dist/providers/index.js.map +0 -1
  72. package/dist/utils/index.js.map +0 -1
@@ -1,169 +1,13 @@
1
1
  "use client";
2
- var g = Object.defineProperty;
3
- var m = (t, e, s) => e in t ? g(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;
4
- var o = (t, e, s) => m(t, typeof e != "symbol" ? e + "" : e, s);
5
- import { j as d } from "../jsx-runtime-B6kdoens.js";
6
- import v from "wretch";
7
- import { createContext as w, useState as c, useContext as p } from "react";
8
- var u = class {
9
- constructor(t) {
10
- o(this, "client");
11
- this.client = t;
12
- }
13
- }, y = class {
14
- constructor(t = {}) {
15
- o(this, "logApiUrl", "https://public-api.levo.so");
16
- o(this, "logs", []);
17
- o(this, "activeFlush", Promise.resolve());
18
- o(this, "nextFlush", setTimeout(() => {
19
- }, 0));
20
- o(this, "lastFlush", /* @__PURE__ */ new Date());
21
- o(this, "sendLogs", async (t) => {
22
- const e = `${this.logApiUrl}/v1/apm/logs/json`, s = () => v().url(e).post(t).res().catch((n) => console.error(n));
23
- try {
24
- if (typeof fetch > "u")
25
- throw new Error("fetch is not defined");
26
- if (typeof window < "u" && navigator.sendBeacon)
27
- try {
28
- if (!navigator.sendBeacon.bind(navigator)(e, JSON.stringify(t)))
29
- return s();
30
- } catch {
31
- return s();
32
- }
33
- else
34
- return s();
35
- } catch (n) {
36
- console.warn(`Failed to send logs to server: ${n}`), this.logs = [...this.logs, ...t];
37
- }
38
- });
39
- o(this, "ingest", (t) => {
40
- if (!this.logApiUrl) return;
41
- const e = Array.isArray(t) ? t : [t];
42
- this.logs.push(e), this.logs.length >= 50 || this.lastFlush.getTime() < Date.now() - 1500 ? (clearTimeout(this.nextFlush), this.activeFlush = this.flush()) : (clearTimeout(this.nextFlush), this.nextFlush = setTimeout(() => {
43
- this.activeFlush = this.flush();
44
- }, 1500));
45
- });
46
- o(this, "flush", async () => {
47
- const t = this.logs.splice(0, this.logs.length);
48
- if (clearTimeout(this.nextFlush), await this.activeFlush, t.length === 0) {
49
- this.lastFlush = /* @__PURE__ */ new Date();
50
- return;
51
- }
52
- try {
53
- await this.sendLogs(t);
54
- } catch (e) {
55
- console.log("error sending logs", e);
56
- } finally {
57
- this.lastFlush = /* @__PURE__ */ new Date();
58
- }
59
- });
60
- t != null && t.logApiUrl && (this.logApiUrl = t == null ? void 0 : t.logApiUrl);
61
- }
62
- }, h = typeof window < "u", x = (t) => {
63
- switch (t) {
64
- case 0:
65
- return "log";
66
- case 1:
67
- return "info";
68
- case 2:
69
- return "warn";
70
- case 3:
71
- return "error";
72
- default:
73
- return "log";
74
- }
75
- }, F = class extends u {
76
- constructor(e, s = {}, n = {}) {
77
- super(e);
78
- o(this, "logLevel", 0);
79
- o(this, "enableRemote", !1);
80
- o(this, "batch");
81
- o(this, "context");
82
- o(this, "debug", (...e) => {
83
- this.log(0, e);
84
- });
85
- o(this, "info", (...e) => {
86
- this.log(1, e);
87
- });
88
- o(this, "warn", (...e) => {
89
- this.log(2, e);
90
- });
91
- o(this, "error", (...e) => {
92
- this.log(3, e);
93
- });
94
- o(this, "log", (e, s) => {
95
- const n = Array.isArray(s) ? s : [s];
96
- if (e < this.logLevel)
97
- return;
98
- if (this.enableRemote && e === 3) {
99
- const { content: i = {}, message: l } = this.format(n);
100
- if (l) {
101
- const a = {
102
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
103
- level: "error",
104
- workspace: this.client.workspace,
105
- appName: this.client.appName,
106
- isBrowser: h,
107
- ...this.context,
108
- message: l,
109
- content: i
110
- };
111
- h && (a.hostname = window.location.hostname, a.pathname = window.location.pathname, a.url = window.location.href, a.page_title = window.document.title, a.userAgent = window.navigator.userAgent), this.batch.ingest(a);
112
- }
113
- }
114
- const r = x(e);
115
- console[r](...n);
116
- });
117
- this.batch = new y(s), this.context = n, this.logLevel = (s == null ? void 0 : s.level) ?? (this.client.NODE_ENV !== "development" ? 1 : 0), this.enableRemote = (s == null ? void 0 : s.enableRemote) ?? this.client.NODE_ENV !== "development";
118
- }
119
- format(e) {
120
- let s = "";
121
- const n = e.map((r) => {
122
- let i = "";
123
- const l = !s;
124
- return typeof r == "string" ? (i = r, l && (s = r)) : r instanceof Error ? (i = {
125
- message: r.message,
126
- name: r.name,
127
- stack: r.stack
128
- }, l && (s = r.message)) : typeof r == "object" ? i = r : (i = String(r), l && (s = String(r))), i;
129
- }).filter(Boolean);
130
- return !s && n.length > 0 && (s = "Default message (Check content for details)"), (n == null ? void 0 : n.length) === 1 && n[0] === s ? { message: s, content: {} } : {
131
- message: s,
132
- content: n
133
- };
134
- }
135
- }, L = class extends u {
136
- constructor() {
137
- super(...arguments);
138
- o(this, "mediaBulkUpload", (e, s = {}) => this.client.fetch.url("/v1/assets/media/bulk").options(s).post(e).json());
139
- o(this, "getAllMedia", async (e = {}) => await this.client.fetch.url("/v1/assets/media/query").post(e).json());
140
- }
141
- };
142
- const f = w(null), N = ({
143
- children: t,
144
- client: e,
145
- ...s
146
- }) => {
147
- const [n] = c(new F(e)), [r] = c(new L(e));
148
- return /* @__PURE__ */ d.jsx(
149
- f.Provider,
150
- {
151
- value: {
152
- client: e,
153
- media: r,
154
- logger: n,
155
- ...s
156
- },
157
- children: t
158
- }
159
- );
160
- }, j = () => {
161
- const t = p(f);
162
- if (!t)
2
+ import { j as r } from "../jsx-runtime-B6kdoens.js";
3
+ import { createContext as n, useContext as s } from "react";
4
+ const o = n(null), v = ({ children: e, client: t }) => /* @__PURE__ */ r.jsx(o.Provider, { value: t, children: e }), x = () => {
5
+ const e = s(o);
6
+ if (!e)
163
7
  throw new Error("useLevo must be used within LevoProvider");
164
- return t;
8
+ return e;
165
9
  };
166
10
  export {
167
- N as LevoProvider,
168
- j as useLevo
11
+ v as LevoProvider,
12
+ x as useLevo
169
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levo-so/react",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "author": "Levo Engineering <devs@theinternetfolks.com>",
5
5
  "description": "Levo suite for React based applications",
6
6
  "type": "module",
@@ -16,7 +16,7 @@
16
16
  "peerDependencies": {
17
17
  "react": ">=18",
18
18
  "react-dom": ">=18",
19
- "@levo-so/core": "0.1.35"
19
+ "@levo-so/core": "0.1.36"
20
20
  },
21
21
  "dependencies": {
22
22
  "@radix-ui/react-checkbox": "1.1.1",
@@ -91,8 +91,8 @@
91
91
  "vite": "5.4.3",
92
92
  "vite-plugin-dts": "4.1.0",
93
93
  "@levo/eslint-config": "0.0.0",
94
- "@levo/ts-config": "0.0.0",
95
- "@levo/tw-config": "0.0.0"
94
+ "@levo/tw-config": "0.0.0",
95
+ "@levo/ts-config": "0.0.0"
96
96
  },
97
97
  "main": "./dist/index.js",
98
98
  "module": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checbox-sq-atGlJ.js","sources":["../src/collection/components/core/Checkbox/Checbox.tsx"],"sourcesContent":["\"use client\";\n\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport cn from \"../../../../utils/cn\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\n\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"],"names":["Checkbox","React","className","props","ref","jsx","CheckboxPrimitive","cn","Check"],"mappings":";;;;;;AAQM,MAAAA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACC,EAAkB;AAAA,EAAlB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,IAEJ,UAAAE,gBAAAA,EAAA;AAAA,MAACC,EAAkB;AAAA,MAAlB;AAAA,QACC,WAAWC,EAAG,+CAA+C;AAAA,QAE7D,UAAAF,gBAAAA,EAAAA,IAACG,GAAM,EAAA,WAAU,UAAU,CAAA;AAAA,MAAA;AAAA,IAC7B;AAAA,EAAA;AACF,CACD;AAEDR,EAAS,cAAcM,EAAkB,KAAK;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxWidget-BrVNbP0R.js","sources":["../src/collection/components/widgets/checkboxWidget/CheckboxWidget.tsx"],"sourcesContent":["\"use client\";\n\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport type { ILemaField } from \"@levo-so/core\";\nimport { useController } from \"react-hook-form\";\n\nimport cn from \"../../../../utils/cn\";\nimport getFieldValidations from \"../../../utils/getFieldValidations\";\nimport { Checkbox } from \"../../core/Checkbox/Checbox\";\nimport Input from \"../../core/Input/Input\";\nimport FieldWrapper from \"../FieldWrapper\";\nimport FormLabel from \"../FormLabel\";\n\nexport interface ICheckboxWidgetProps {\n field: ILemaField;\n}\n\nexport const CheckboxWidget: React.FC<ICheckboxWidgetProps> = ({ field }) => {\n const [otherValue, setOtherValue] = useState<string>(\"\");\n const [otherEnabled, setOtherEnabled] = useState<boolean>(false);\n\n const {\n key = \"\",\n label = \"\",\n helper_text = \"\",\n readonly = false,\n values = [],\n options = {},\n } = field;\n\n const {\n field: { name, onBlur, onChange, value, ref, disabled },\n fieldState: { error },\n } = useController({\n name: key,\n rules: getFieldValidations(field),\n });\n\n const handleChange = (v: string) => {\n let tempValue = Array.isArray(value || null) ? [...value] : [];\n\n if (tempValue.includes(v)) {\n tempValue = tempValue?.filter((item) => item !== v);\n } else {\n tempValue.push(v);\n }\n\n onChange(tempValue);\n };\n\n const enableCustomInput = !!options?.custom_input;\n\n useEffect(() => {\n if (enableCustomInput) {\n let flag = false;\n (value ?? []).forEach((item: string) => {\n if (!values.includes(item)) {\n flag = true;\n setOtherValue(item);\n }\n });\n if (flag) {\n setOtherEnabled(true);\n } else {\n setOtherEnabled(false);\n }\n }\n }, [value, values]);\n\n return (\n <FieldWrapper\n error={error?.message}\n helperText={helper_text}\n readOnly={readonly}\n ref={ref}\n >\n {label && (\n <FormLabel htmlFor={name} isRequired={field?.required}>\n {label}\n </FormLabel>\n )}\n <div\n className={cn(\n \"flex w-full flex-col flex-wrap gap-4 pt-1\",\n readonly && \"pointer-events-none cursor-not-allowed\",\n )}\n >\n {values?.map((option: string, index: number) => (\n <div\n key={`${option}-${index}`}\n className=\"flex w-full flex-nowrap items-start gap-2\"\n >\n <Checkbox\n id={`${option}-${index}`}\n name={name}\n checked={value?.includes(option)}\n onCheckedChange={() => handleChange(option)}\n onBlur={() => {\n onBlur();\n }}\n disabled={disabled}\n />\n <FormLabel htmlFor={`${option}-${index}`} className=\"!mb-0\">\n {option}\n </FormLabel>\n </div>\n ))}\n </div>\n {enableCustomInput && (\n <div className=\"my-4 flex w-full flex-wrap items-center gap-2\">\n <div className=\"flex shrink-0 flex-nowrap gap-2\">\n <Checkbox\n name={`${name}-other`}\n id={`${name}-other`}\n disabled={disabled}\n checked={otherEnabled}\n onCheckedChange={(checked) => {\n setOtherEnabled(Boolean(checked));\n\n if (checked) {\n if (Array.isArray(value)) {\n onChange?.([...value, otherValue]);\n } else {\n onChange?.([otherValue]);\n }\n } else {\n onChange?.(\n (value ?? [])?.filter((v: string) => v !== otherValue),\n );\n }\n }}\n onBlur={() => {\n if (onBlur) {\n onBlur();\n }\n }}\n />\n <FormLabel htmlFor={`${name}-other`} className=\"!mb-0\">\n Other:{\" \"}\n </FormLabel>\n </div>\n <Input\n name={`other-checkbox-${name}`}\n containerStyles=\"max-w-[300px] ml-3\"\n value={otherValue}\n onChange={(e) => {\n let flag = 0;\n onChange?.(\n value?.map((v: string) => {\n if (v === otherValue && !flag) {\n flag = 1;\n return e.target.value;\n }\n return v;\n }),\n );\n setOtherValue(e.target.value);\n }}\n disabled={!otherEnabled || disabled}\n placeholder=\"Please specify\"\n />\n </div>\n )}\n </FieldWrapper>\n );\n};\n\nexport default CheckboxWidget;\n"],"names":["CheckboxWidget","field","otherValue","setOtherValue","useState","otherEnabled","setOtherEnabled","key","label","helper_text","readonly","values","options","name","onBlur","onChange","value","ref","disabled","error","useController","getFieldValidations","handleChange","v","tempValue","item","enableCustomInput","useEffect","flag","jsxs","FieldWrapper","FormLabel","jsx","cn","option","index","Checkbox","checked","_a","Input","e"],"mappings":"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"}