@gustavo-valsechi/client 1.3.18 → 1.3.20

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.
@@ -0,0 +1 @@
1
+ "use client";
@@ -0,0 +1,521 @@
1
+ "use client";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
+ }) : x)(function(x) {
11
+ if (typeof require !== "undefined") return require.apply(this, arguments);
12
+ throw Error('Dynamic require of "' + x + '" is not supported');
13
+ });
14
+ var __commonJS = (cb, mod) => function __require2() {
15
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
16
+ };
17
+ var __export = (target, all) => {
18
+ for (var name in all)
19
+ __defProp(target, name, { get: all[name], enumerable: true });
20
+ };
21
+ var __copyProps = (to, from, except, desc) => {
22
+ if (from && typeof from === "object" || typeof from === "function") {
23
+ for (let key of __getOwnPropNames(from))
24
+ if (!__hasOwnProp.call(to, key) && key !== except)
25
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
+ }
27
+ return to;
28
+ };
29
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
+ // If the importer is in node compatibility mode or this is not an ESM
31
+ // file that has been converted to a CommonJS file using a Babel-
32
+ // compatible transform (i.e. "__esModule" has not been set), then set
33
+ // "default" to the CommonJS "module.exports" for node compatibility.
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+
38
+ // contexts/icon/index.tsx
39
+ import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useState as useState2 } from "react";
40
+
41
+ // contexts/theme/index.tsx
42
+ import { createContext, useContext, useState } from "react";
43
+ import { ThemeProvider } from "styled-components";
44
+
45
+ // contexts/theme/styles.tsx
46
+ import styled from "styled-components";
47
+ var Switcher = styled.div`
48
+ width: 3rem;
49
+ height: 1.5rem;
50
+ border-radius: 1rem;
51
+ border: 2px solid ${({ theme }) => theme.t05};
52
+ overflow: hidden;
53
+ display: flex;
54
+ align-items: center;
55
+ cursor: pointer;
56
+ position: relative;
57
+
58
+ i {
59
+ color: ${({ theme }) => theme.t6};
60
+ position: absolute;
61
+ transform: translateY(-50%);
62
+ font-size: .9rem;
63
+ z-index: 0;
64
+ transition: ease .8s;
65
+
66
+ &:first-child {
67
+ left: .2rem;
68
+ top: 50%;
69
+ opacity: ${(props) => props["data-theme"] === "light" ? 0 : 1};
70
+ }
71
+
72
+ &:last-child {
73
+ right: .2rem;
74
+ top: 50%;
75
+ opacity: ${(props) => props["data-theme"] === "light" ? 1 : 0};
76
+ }
77
+ }
78
+
79
+ .switcher {
80
+ width: 1rem;
81
+ height: 1rem;
82
+ border-radius: 1rem;
83
+ position: relative;
84
+ transition: ease .3s;
85
+ transform: ${(props) => props["data-theme"] === "light" ? "transform: translateX(.2rem)" : "translateX(1.6rem)"};
86
+ z-index: 1;
87
+
88
+ div {
89
+ width: 100%;
90
+ height: 100%;
91
+ background: ${({ theme }) => theme.primary};
92
+ border-radius: 1rem;
93
+ position: relative;
94
+ z-index: 2;
95
+ }
96
+
97
+ &:after {
98
+ content: "";
99
+ position: absolute;
100
+ width: 100%;
101
+ height: 100%;
102
+ border-radius: 1rem;
103
+ transform: scale(1.8);
104
+ background: ${({ theme }) => theme.t05};
105
+ top: 0;
106
+ left: 0;
107
+ z-index: 1;
108
+ }
109
+
110
+ &:before {
111
+ content: "";
112
+ position: absolute;
113
+ width: 100%;
114
+ height: 100%;
115
+ border-radius: 1rem;
116
+ transform: scale(3);
117
+ background: ${({ theme }) => theme.t05};
118
+ top: 0;
119
+ left: 0;
120
+ z-index: 0;
121
+ }
122
+ }
123
+ `;
124
+
125
+ // contexts/theme/content.tsx
126
+ var CommonTheme = {
127
+ secondary: "#5869da",
128
+ tertiary: "#629dfd33",
129
+ positive: "#65c965",
130
+ negative: "#FF334E",
131
+ mobileMaxWidth: "650px",
132
+ mobileMinWidth: "315px"
133
+ };
134
+ var Themes = {
135
+ light: {
136
+ primary: "#ffffff",
137
+ reverse: "#353535",
138
+ tooltip: "#f2f2f2",
139
+ t8: "#000000cc",
140
+ t7: "#000000b3",
141
+ t6: "#00000099",
142
+ t5: "#00000080",
143
+ t4: "#00000066",
144
+ t3: "#0000004d",
145
+ t2: "#00000033",
146
+ t1: "#0000001a",
147
+ t08: "#00000014",
148
+ t05: "#0000000d",
149
+ t03: "#00000007",
150
+ t02: "#00000005",
151
+ t01: "#00000002",
152
+ lgrad: `linear-gradient(
153
+ to right,
154
+ #dadef7 0%,
155
+ #dee2f8 5%,
156
+ #e2e5f9 10%,
157
+ #e6e9fa 20%,
158
+ #eaedfb 30%,
159
+ #eff0fb 60%,
160
+ #f3f4fc 80%,
161
+ #f7f8fd 90%,
162
+ #fbfbfe 100%
163
+ )`,
164
+ maingrad: "linear-gradient(330deg, #b9c0ff7a 0%, #ffffff 100%)",
165
+ ...CommonTheme
166
+ },
167
+ dark: {
168
+ primary: "#333333",
169
+ reverse: "#b45252",
170
+ tooltip: "#3d3d3d",
171
+ t8: "#ffffffcc",
172
+ t7: "#ffffffb3",
173
+ t6: "#ffffff99",
174
+ t5: "#ffffff80",
175
+ t4: "#ffffff66",
176
+ t3: "#ffffff4d",
177
+ t2: "#ffffff33",
178
+ t1: "#ffffff1a",
179
+ t08: "#ffffff14",
180
+ t05: "#ffffff0d",
181
+ t03: "#ffffff07",
182
+ t02: "#ffffff05",
183
+ t01: "#ffffff02",
184
+ lgrad: `linear-gradient(
185
+ to right,
186
+ #3d485c 0%,
187
+ #3c4657 5%,
188
+ #3b4353 10%,
189
+ #3a414e 20%,
190
+ #393f4a 30%,
191
+ #373c45 60%,
192
+ #363a41 80%,
193
+ #35383c 90%,
194
+ #343538 100%
195
+ )`,
196
+ maingrad: "linear-gradient(330deg, #1d1e27 0%, #333333 100%)",
197
+ ...CommonTheme
198
+ }
199
+ };
200
+
201
+ // contexts/theme/index.tsx
202
+ import { jsx, jsxs } from "react/jsx-runtime";
203
+ var ThemeContext = createContext({});
204
+ var ThemeProviderContainer = (props) => {
205
+ const [theme, setTheme] = useState("light");
206
+ const [defaultTheme] = useState("light");
207
+ const SwitcherComponent = () => {
208
+ return /* @__PURE__ */ jsxs(
209
+ Switcher,
210
+ {
211
+ onClick: () => setTheme(theme === "light" ? "dark" : "light"),
212
+ "data-theme": theme || defaultTheme,
213
+ children: [
214
+ /* @__PURE__ */ jsx("i", { "aria-hidden": true, className: "fa-solid fa-moon" }),
215
+ /* @__PURE__ */ jsx("div", { className: "switcher", children: /* @__PURE__ */ jsx("div", {}) }),
216
+ /* @__PURE__ */ jsx("i", { "aria-hidden": true, className: "fa-solid fa-sun" })
217
+ ]
218
+ }
219
+ );
220
+ };
221
+ return /* @__PURE__ */ jsx(
222
+ ThemeContext.Provider,
223
+ {
224
+ value: {
225
+ theme: props.theme || defaultTheme,
226
+ setTheme,
227
+ content: Themes[props.theme || defaultTheme],
228
+ Switcher: SwitcherComponent
229
+ },
230
+ children: /* @__PURE__ */ jsx(ThemeProvider, { theme: Themes[props.theme || defaultTheme], children: props.children })
231
+ }
232
+ );
233
+ };
234
+ var useTheme = () => useContext(ThemeContext);
235
+
236
+ // contexts/icon/index.tsx
237
+ import _ from "lodash";
238
+
239
+ // contexts/icon/assets/brands/index.tsx
240
+ var req = __require.context("./", false, /\.svg$/);
241
+ var brands = {};
242
+ req.keys().forEach((key) => {
243
+ const name = key.replace("./", "").replace(".svg", "");
244
+ brands[name] = req(key).default;
245
+ });
246
+ var brands_default = brands;
247
+
248
+ // contexts/icon/assets/regular/index.tsx
249
+ var req2 = __require.context("./", false, /\.svg$/);
250
+ var regular = {};
251
+ req2.keys().forEach((key) => {
252
+ const name = key.replace("./", "").replace(".svg", "");
253
+ regular[name] = req2(key).default;
254
+ });
255
+ var regular_default = regular;
256
+
257
+ // contexts/icon/assets/solid/index.tsx
258
+ var req3 = __require.context("./", false, /\.svg$/);
259
+ var solid = {};
260
+ req3.keys().forEach((key) => {
261
+ const name = key.replace("./", "").replace(".svg", "");
262
+ solid[name] = req3(key).default;
263
+ });
264
+ var solid_default = solid;
265
+
266
+ // contexts/icon/assets/index.tsx
267
+ var assets_default = {
268
+ brands: brands_default,
269
+ regular: regular_default,
270
+ solid: solid_default
271
+ };
272
+
273
+ // contexts/icon/index.tsx
274
+ import { jsx as jsx2 } from "react/jsx-runtime";
275
+ var IconContext = createContext2({});
276
+ var IconProviderContainer = ({ children }) => {
277
+ const { content } = useTheme();
278
+ const [isClient, setIsClient] = useState2(false);
279
+ const [matches, setMatches] = useState2(0);
280
+ useEffect2(() => {
281
+ setIsClient(true);
282
+ }, []);
283
+ useEffect2(() => {
284
+ const firstMediaQuery = window.matchMedia(`(max-width: ${content.mobileMaxWidth})`);
285
+ const secoundMediaQuery = window.matchMedia(`(max-width: ${content.mobileMinWidth})`);
286
+ const firstHandler = (event) => setMatches(event.matches ? 1 : 0);
287
+ const secoundHandler = (event) => setMatches(event.matches ? 2 : 1);
288
+ if (firstMediaQuery.matches) setMatches(1);
289
+ if (secoundMediaQuery.matches) setMatches(2);
290
+ firstMediaQuery.addEventListener("change", firstHandler);
291
+ secoundMediaQuery.addEventListener("change", secoundHandler);
292
+ return () => {
293
+ firstMediaQuery.removeEventListener("change", firstHandler);
294
+ secoundMediaQuery.removeEventListener("change", secoundHandler);
295
+ };
296
+ }, []);
297
+ useEffect2(() => {
298
+ if (!isClient) return;
299
+ const processElement = (element) => {
300
+ var _a, _b, _c, _d, _e;
301
+ const name = element.getAttribute("class");
302
+ if (!name) return;
303
+ const icon = _.split(_.replace(name, /fa-/g, ""), " ");
304
+ if (!icon.length) return;
305
+ let svg = (_d = (_c = (_a = assets_default[icon[0]]) == null ? void 0 : _a[icon[1]]) != null ? _c : (_b = assets_default["solid"]) == null ? void 0 : _b[icon[0]]) != null ? _d : "";
306
+ if (!svg) return;
307
+ svg = svg.replace(/fill=".*?"/g, 'fill="currentColor"');
308
+ const styles = window.getComputedStyle(element);
309
+ const size = Number((_e = _.split(styles.fontSize, "px")) == null ? void 0 : _e[0]) + 2;
310
+ element.style.width = `${size}px`;
311
+ element.style.height = `${size}px`;
312
+ element.textContent = "";
313
+ element.innerHTML = svg;
314
+ };
315
+ document.querySelectorAll("i").forEach((el) => processElement(el));
316
+ const observer = new MutationObserver((mutations) => {
317
+ mutations.forEach((mutation) => {
318
+ mutation.addedNodes.forEach((node) => {
319
+ if (node.nodeType === 1) {
320
+ const el = node;
321
+ if (el.tagName.toLowerCase() === "i") processElement(el);
322
+ el.querySelectorAll("i").forEach((child) => processElement(child));
323
+ }
324
+ });
325
+ });
326
+ });
327
+ observer.observe(document.body, {
328
+ childList: true,
329
+ subtree: true
330
+ });
331
+ return () => observer.disconnect();
332
+ }, [isClient, matches]);
333
+ return /* @__PURE__ */ jsx2(IconContext.Provider, { value: {}, children });
334
+ };
335
+ var useIcon = () => useContext2(IconContext);
336
+
337
+ // contexts/tooltip/index.tsx
338
+ import { createContext as createContext3, useContext as useContext3, useEffect as useEffect3, useState as useState3 } from "react";
339
+
340
+ // contexts/tooltip/styles.tsx
341
+ import styled2 from "styled-components";
342
+ var Tooltip = styled2.div`
343
+ position: fixed;
344
+ background: ${({ theme }) => theme.tooltip};
345
+ color: ${({ theme }) => theme.t6};
346
+ font-size: .8rem;
347
+ font-weight: 500;
348
+ text-align: center;
349
+ padding: .3rem .8rem;
350
+ border-radius: 5px;
351
+ transform: translateX(-50%);
352
+ z-index: 10;
353
+ border: 1px solid ${({ theme }) => theme.t05};
354
+
355
+ &::before {
356
+ content: "";
357
+ position: absolute;
358
+ bottom: -9px;
359
+ left: 50%;
360
+ transform: translateX(-50%);
361
+ width: 0;
362
+ height: 0;
363
+ border-left: 8px solid transparent;
364
+ border-right: 8px solid transparent;
365
+ border-top: 8px solid ${({ theme }) => theme.t05};
366
+ }
367
+
368
+ &::after {
369
+ content: "";
370
+ position: absolute;
371
+ bottom: -8px;
372
+ left: 50%;
373
+ transform: translateX(-50%);
374
+ width: 0;
375
+ height: 0;
376
+ border-left: 8px solid transparent;
377
+ border-right: 8px solid transparent;
378
+ border-top: 8px solid ${({ theme }) => theme.tooltip};
379
+ }
380
+ `;
381
+
382
+ // contexts/tooltip/index.tsx
383
+ import _2 from "lodash";
384
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
385
+ var TooltipContext = createContext3({});
386
+ var TooltipProviderContainer = ({ children }) => {
387
+ const [tooltips, setTooltips] = useState3([]);
388
+ const getContent = (target) => {
389
+ var _a;
390
+ const rect = target.getBoundingClientRect();
391
+ return {
392
+ top: rect.top + window.scrollY - (target.offsetHeight + 8),
393
+ left: rect.left + window.scrollX + target.offsetWidth / 2,
394
+ content: ((_a = target.dataset) == null ? void 0 : _a.tooltip) || ""
395
+ };
396
+ };
397
+ useEffect3(() => {
398
+ const processElement = (element) => {
399
+ element.addEventListener("mouseenter", (event) => {
400
+ const target = event == null ? void 0 : event.target;
401
+ if (!target) return;
402
+ setTooltips(_2.concat(tooltips, [getContent(target)]));
403
+ });
404
+ element.addEventListener("mouseleave", (event) => {
405
+ const target = event == null ? void 0 : event.target;
406
+ if (!target) return;
407
+ setTooltips(_2.filter(tooltips, (data) => JSON.stringify(data) === JSON.stringify(getContent(target))));
408
+ });
409
+ };
410
+ document.querySelectorAll("[data-tooltip]").forEach((el) => processElement(el));
411
+ const observer = new MutationObserver((mutations) => {
412
+ mutations.forEach((mutation) => {
413
+ mutation.addedNodes.forEach((node) => {
414
+ if (node.nodeType === 1) {
415
+ const el = node;
416
+ if (el.getAttribute("data-tooltip")) processElement(el);
417
+ el.querySelectorAll("[data-tooltip]").forEach((child) => processElement(child));
418
+ }
419
+ });
420
+ });
421
+ });
422
+ observer.observe(document.body, {
423
+ childList: true,
424
+ subtree: true
425
+ });
426
+ return () => observer.disconnect();
427
+ }, []);
428
+ return /* @__PURE__ */ jsxs2(TooltipContext.Provider, { value: {}, children: [
429
+ _2.map(
430
+ tooltips,
431
+ (data, index) => /* @__PURE__ */ jsx3(
432
+ Tooltip,
433
+ {
434
+ style: {
435
+ top: data.top,
436
+ left: data.left
437
+ },
438
+ children: data.content
439
+ },
440
+ index
441
+ )
442
+ ),
443
+ children
444
+ ] });
445
+ };
446
+ var useTooltip = () => useContext3(TooltipContext);
447
+
448
+ // contexts/modal/index.tsx
449
+ import { createContext as createContext4, useContext as useContext4, useEffect as useEffect4, useState as useState4 } from "react";
450
+ import { usePathname } from "next/navigation";
451
+
452
+ // contexts/modal/styles.tsx
453
+ import styled3 from "styled-components";
454
+ var Container = styled3.div`
455
+
456
+ `;
457
+
458
+ // contexts/modal/index.tsx
459
+ import _3 from "lodash";
460
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
461
+ var ModalContext = createContext4({});
462
+ var memory = [];
463
+ var ModalProviderContainer = ({ children }) => {
464
+ const pathname = usePathname();
465
+ const [modals, setModals] = useState4([]);
466
+ useEffect4(() => {
467
+ setModals(_3.filter(memory, (modal) => modal.type === "fixed"));
468
+ }, [pathname]);
469
+ const add = (modal) => {
470
+ if (_3.some(memory, (data) => data.name === modal.name)) return;
471
+ memory.push(modal);
472
+ setModals(memory);
473
+ };
474
+ const remove = (modalName) => {
475
+ const index = _3.findIndex(memory, (data) => data.name === modalName);
476
+ memory.slice(index, 1);
477
+ setModals(memory);
478
+ };
479
+ const setProps = (modalName, props) => {
480
+ const index = _3.findIndex(modals, (modal) => modal.name === modalName);
481
+ const content = _3.find(modals, (modal) => modal.name === modalName);
482
+ if (!content) return;
483
+ let settedModals = [...modals];
484
+ settedModals.splice(index, 1, { ...content, props: { ...content.props, ...props } });
485
+ setModals(settedModals);
486
+ };
487
+ return /* @__PURE__ */ jsxs3(
488
+ ModalContext.Provider,
489
+ {
490
+ value: {
491
+ value: modals,
492
+ add,
493
+ remove,
494
+ setProps
495
+ },
496
+ children: [
497
+ /* @__PURE__ */ jsx4(Container, { children: _3.map(modals, (modal, index) => {
498
+ const ModalComponent = modal.component;
499
+ return /* @__PURE__ */ jsx4(ModalComponent, { ...modal.props }, index);
500
+ }) }),
501
+ children
502
+ ]
503
+ }
504
+ );
505
+ };
506
+ var useModal = () => useContext4(ModalContext);
507
+
508
+ export {
509
+ __commonJS,
510
+ __export,
511
+ __toESM,
512
+ CommonTheme,
513
+ ThemeProviderContainer,
514
+ useTheme,
515
+ IconProviderContainer,
516
+ useIcon,
517
+ TooltipProviderContainer,
518
+ useTooltip,
519
+ ModalProviderContainer,
520
+ useModal
521
+ };