geoiq-frontend-ui-kit 2.0.5 → 2.0.6

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 (178) hide show
  1. package/dist/index100.es.js +42 -23
  2. package/dist/index100.es.js.map +1 -1
  3. package/dist/index101.es.js +33 -62
  4. package/dist/index101.es.js.map +1 -1
  5. package/dist/index102.es.js +21 -9
  6. package/dist/index102.es.js.map +1 -1
  7. package/dist/index103.es.js +88 -22
  8. package/dist/index103.es.js.map +1 -1
  9. package/dist/index104.es.js +17 -9
  10. package/dist/index104.es.js.map +1 -1
  11. package/dist/index105.es.js +13 -67
  12. package/dist/index105.es.js.map +1 -1
  13. package/dist/index106.es.js +21 -185
  14. package/dist/index106.es.js.map +1 -1
  15. package/dist/index107.es.js +11 -23
  16. package/dist/index107.es.js.map +1 -1
  17. package/dist/index108.es.js +69 -198
  18. package/dist/index108.es.js.map +1 -1
  19. package/dist/index109.es.js +9 -43
  20. package/dist/index109.es.js.map +1 -1
  21. package/dist/index11.es.js +1 -1
  22. package/dist/index110.es.js +65 -37
  23. package/dist/index110.es.js.map +1 -1
  24. package/dist/index111.es.js +184 -47
  25. package/dist/index111.es.js.map +1 -1
  26. package/dist/index112.es.js +23 -181
  27. package/dist/index112.es.js.map +1 -1
  28. package/dist/index113.es.js +201 -20
  29. package/dist/index113.es.js.map +1 -1
  30. package/dist/index114.es.js +13 -35
  31. package/dist/index114.es.js.map +1 -1
  32. package/dist/index115.es.js +88 -58
  33. package/dist/index115.es.js.map +1 -1
  34. package/dist/index116.es.js +27 -84
  35. package/dist/index116.es.js.map +1 -1
  36. package/dist/index117.es.js +23 -15
  37. package/dist/index117.es.js.map +1 -1
  38. package/dist/index118.es.js +34 -8
  39. package/dist/index118.es.js.map +1 -1
  40. package/dist/index119.es.js +179 -29
  41. package/dist/index119.es.js.map +1 -1
  42. package/dist/index12.es.js +1 -1
  43. package/dist/index120.es.js +32 -11
  44. package/dist/index120.es.js.map +1 -1
  45. package/dist/index121.es.js +19 -92
  46. package/dist/index121.es.js.map +1 -1
  47. package/dist/index122.es.js +13 -27
  48. package/dist/index122.es.js.map +1 -1
  49. package/dist/index123.es.js +7 -15
  50. package/dist/index123.es.js.map +1 -1
  51. package/dist/index124.es.js +98 -20
  52. package/dist/index124.es.js.map +1 -1
  53. package/dist/index125.es.js +61 -9
  54. package/dist/index125.es.js.map +1 -1
  55. package/dist/index126.es.js +54 -97
  56. package/dist/index126.es.js.map +1 -1
  57. package/dist/index127.es.js +16 -64
  58. package/dist/index127.es.js.map +1 -1
  59. package/dist/index128.es.js +96 -50
  60. package/dist/index128.es.js.map +1 -1
  61. package/dist/index129.es.js +11 -13
  62. package/dist/index129.es.js.map +1 -1
  63. package/dist/index130.es.js +147 -99
  64. package/dist/index130.es.js.map +1 -1
  65. package/dist/index131.es.js +6 -13
  66. package/dist/index131.es.js.map +1 -1
  67. package/dist/index132.es.js +48 -148
  68. package/dist/index132.es.js.map +1 -1
  69. package/dist/index133.es.js +42 -13
  70. package/dist/index133.es.js.map +1 -1
  71. package/dist/index134.es.js +35 -269
  72. package/dist/index134.es.js.map +1 -1
  73. package/dist/index135.es.js +22 -25
  74. package/dist/index135.es.js.map +1 -1
  75. package/dist/index136.es.js +11 -7
  76. package/dist/index136.es.js.map +1 -1
  77. package/dist/index137.es.js +33 -40
  78. package/dist/index137.es.js.map +1 -1
  79. package/dist/index138.es.js +63 -37
  80. package/dist/index138.es.js.map +1 -1
  81. package/dist/index139.es.js +268 -39
  82. package/dist/index139.es.js.map +1 -1
  83. package/dist/index141.es.js +16 -5
  84. package/dist/index141.es.js.map +1 -1
  85. package/dist/index142.es.js +5 -11
  86. package/dist/index142.es.js.map +1 -1
  87. package/dist/index143.es.js +10 -10
  88. package/dist/index143.es.js.map +1 -1
  89. package/dist/index144.es.js +11 -2
  90. package/dist/index144.es.js.map +1 -1
  91. package/dist/index145.es.js +2 -44
  92. package/dist/index145.es.js.map +1 -1
  93. package/dist/index146.es.js +7 -12
  94. package/dist/index146.es.js.map +1 -1
  95. package/dist/index147.es.js +22 -6
  96. package/dist/index147.es.js.map +1 -1
  97. package/dist/index148.es.js +168 -21
  98. package/dist/index148.es.js.map +1 -1
  99. package/dist/index149.es.js +79 -167
  100. package/dist/index149.es.js.map +1 -1
  101. package/dist/index150.es.js +67 -75
  102. package/dist/index150.es.js.map +1 -1
  103. package/dist/index151.es.js +3 -72
  104. package/dist/index151.es.js.map +1 -1
  105. package/dist/index152.es.js +56 -5
  106. package/dist/index152.es.js.map +1 -1
  107. package/dist/index153.es.js +120 -56
  108. package/dist/index153.es.js.map +1 -1
  109. package/dist/index154.es.js +398 -113
  110. package/dist/index154.es.js.map +1 -1
  111. package/dist/index155.es.js +25 -398
  112. package/dist/index155.es.js.map +1 -1
  113. package/dist/index156.es.js +61 -25
  114. package/dist/index156.es.js.map +1 -1
  115. package/dist/index157.es.js +29 -64
  116. package/dist/index157.es.js.map +1 -1
  117. package/dist/index158.es.js +21 -29
  118. package/dist/index158.es.js.map +1 -1
  119. package/dist/index159.es.js +36 -23
  120. package/dist/index159.es.js.map +1 -1
  121. package/dist/index16.es.js +1 -1
  122. package/dist/index160.es.js +211 -37
  123. package/dist/index160.es.js.map +1 -1
  124. package/dist/index161.es.js +143 -211
  125. package/dist/index161.es.js.map +1 -1
  126. package/dist/index162.es.js +136 -136
  127. package/dist/index162.es.js.map +1 -1
  128. package/dist/index163.es.js +46 -143
  129. package/dist/index163.es.js.map +1 -1
  130. package/dist/index164.es.js +353 -45
  131. package/dist/index164.es.js.map +1 -1
  132. package/dist/index165.es.js +41 -352
  133. package/dist/index165.es.js.map +1 -1
  134. package/dist/index166.es.js +12 -2
  135. package/dist/index166.es.js.map +1 -1
  136. package/dist/index167.es.js +2 -25
  137. package/dist/index167.es.js.map +1 -1
  138. package/dist/index168.es.js +21 -12
  139. package/dist/index168.es.js.map +1 -1
  140. package/dist/index170.es.js +1 -1
  141. package/dist/index171.es.js +2 -2
  142. package/dist/index173.es.js +1 -1
  143. package/dist/index174.es.js +2 -2
  144. package/dist/index175.es.js +2 -2
  145. package/dist/index176.es.js +2 -2
  146. package/dist/index180.es.js +1 -1
  147. package/dist/index181.es.js +1 -1
  148. package/dist/index182.es.js +1 -1
  149. package/dist/index183.es.js +1 -1
  150. package/dist/index184.es.js +1 -1
  151. package/dist/index185.es.js +1 -1
  152. package/dist/index186.es.js +1 -1
  153. package/dist/index188.es.js +1 -1
  154. package/dist/index19.es.js +1 -1
  155. package/dist/index20.es.js +1 -1
  156. package/dist/index21.es.js +1 -1
  157. package/dist/index23.es.js +2 -2
  158. package/dist/index27.es.js +1 -1
  159. package/dist/index29.es.js +1 -1
  160. package/dist/index30.es.js +2 -2
  161. package/dist/index32.es.js +1 -1
  162. package/dist/index34.es.js +1 -1
  163. package/dist/index35.es.js +1 -1
  164. package/dist/index47.es.js +4 -4
  165. package/dist/index48.es.js +2 -2
  166. package/dist/index49.es.js +1 -1
  167. package/dist/index50.es.js +1 -1
  168. package/dist/index55.es.js +1 -1
  169. package/dist/index56.es.js +1 -1
  170. package/dist/index59.es.js +1 -1
  171. package/dist/index61.es.js +1 -1
  172. package/dist/index69.es.js +2 -2
  173. package/dist/index70.es.js +1 -1
  174. package/dist/index72.es.js +5 -5
  175. package/dist/index73.es.js +1 -1
  176. package/dist/index74.es.js +7 -7
  177. package/dist/index87.es.js +1 -1
  178. package/package.json +1 -1
@@ -1,184 +1,26 @@
1
- import * as e from "react";
2
- import R from "embla-carousel-react";
3
- import { ArrowLeft as z, ArrowRight as I } from "lucide-react";
4
- import { cn as m } from "./index91.es.js";
5
- import { Button as x } from "./index9.es.js";
6
- const b = e.createContext(null);
7
- function d() {
8
- const r = e.useContext(b);
9
- if (!r)
10
- throw new Error("useCarousel must be used within a <Carousel />");
11
- return r;
12
- }
13
- const L = e.forwardRef(
14
- ({
15
- orientation: r = "horizontal",
16
- opts: o,
17
- setApi: a,
18
- plugins: s,
19
- className: n,
20
- children: u,
21
- autoplay: c = !1,
22
- // Default value for autoplay
23
- autoplayInterval: i = 3e3,
24
- // Default value for autoplay interval
25
- ...w
26
- }, E) => {
27
- const [g, t] = R(
28
- {
29
- ...o,
30
- axis: r === "horizontal" ? "x" : "y"
31
- },
32
- s
33
- ), [p, y] = e.useState(!1), [S, k] = e.useState(!1), f = e.useCallback((l) => {
34
- l && (y(l.canScrollPrev()), k(l.canScrollNext()));
35
- }, []), C = e.useCallback(() => {
36
- t?.scrollPrev();
37
- }, [t]), h = e.useCallback(() => {
38
- t?.scrollNext();
39
- }, [t]), P = e.useCallback(
40
- (l) => {
41
- l.key === "ArrowLeft" ? (l.preventDefault(), C()) : l.key === "ArrowRight" && (l.preventDefault(), h());
42
- },
43
- [C, h]
44
- );
45
- return e.useEffect(() => {
46
- !t || !a || a(t);
47
- }, [t, a]), e.useEffect(() => {
48
- if (t)
49
- return f(t), t.on("reInit", f), t.on("select", f), () => {
50
- t?.off("select", f);
51
- };
52
- }, [t, f]), e.useEffect(() => {
53
- if (!c || !t)
54
- return;
55
- let l;
56
- const v = () => {
57
- l = setInterval(() => {
58
- t.scrollNext(), t.selectedScrollSnap() === t.scrollSnapList().length && t.scrollTo(0);
59
- }, i);
60
- }, N = () => {
61
- document.hidden ? clearInterval(l) : v();
62
- };
63
- return document.addEventListener("visibilitychange", N), document.hidden || v(), () => {
64
- clearInterval(l), document.removeEventListener("visibilitychange", N);
65
- };
66
- }, [c, t, i]), /* @__PURE__ */ e.createElement(
67
- b.Provider,
68
- {
69
- value: {
70
- carouselRef: g,
71
- api: t,
72
- opts: o,
73
- orientation: r || (o?.axis === "y" ? "vertical" : "horizontal"),
74
- scrollPrev: C,
75
- scrollNext: h,
76
- canScrollPrev: p,
77
- canScrollNext: S,
78
- autoplay: c,
79
- // Pass autoplay to the context
80
- autoplayInterval: i
81
- // Pass autoplayInterval to the context
82
- }
83
- },
84
- /* @__PURE__ */ e.createElement(
85
- "div",
86
- {
87
- ref: E,
88
- onKeyDownCapture: P,
89
- className: m("relative", n),
90
- role: "region",
91
- "aria-roledescription": "carousel",
92
- ...w
93
- },
94
- u
95
- )
96
- );
97
- }
98
- );
99
- L.displayName = "Carousel";
100
- const D = e.forwardRef(({ className: r, ...o }, a) => {
101
- const { carouselRef: s, orientation: n } = d();
102
- return /* @__PURE__ */ e.createElement("div", { ref: s, className: "overflow-hidden" }, /* @__PURE__ */ e.createElement(
103
- "div",
104
- {
105
- ref: a,
106
- className: m(
107
- "flex",
108
- n === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
109
- r
110
- ),
111
- ...o
112
- }
113
- ));
114
- });
115
- D.displayName = "CarouselContent";
116
- const A = e.forwardRef(({ className: r, ...o }, a) => {
117
- const { orientation: s } = d();
118
- return /* @__PURE__ */ e.createElement(
119
- "div",
120
- {
121
- ref: a,
122
- role: "group",
123
- "aria-roledescription": "slide",
124
- className: m(
125
- "min-w-0 shrink-0 grow-0 basis-full",
126
- s === "horizontal" ? "pl-4" : "pt-4",
127
- r
128
- ),
129
- ...o
130
- }
131
- );
132
- });
133
- A.displayName = "CarouselItem";
134
- const K = e.forwardRef(({ className: r, variant: o = "secondary", size: a = "lg", ...s }, n) => {
135
- const { orientation: u, scrollPrev: c, canScrollPrev: i } = d();
136
- return /* @__PURE__ */ e.createElement(
137
- x,
138
- {
139
- ref: n,
140
- variant: o,
141
- size: a,
142
- className: m(
143
- "absolute h-10 w-10 disabled:bg-light-3",
144
- u === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
145
- r
146
- ),
147
- disabled: !i,
148
- onClick: c,
149
- ...s
150
- },
151
- /* @__PURE__ */ e.createElement(z, { className: "absolute h-4 w-4 stroke-stroke-4" }),
152
- /* @__PURE__ */ e.createElement("span", { className: "sr-only" }, "Previous slide")
153
- );
154
- });
155
- K.displayName = "CarouselPrevious";
156
- const B = e.forwardRef(({ className: r, variant: o = "secondary", size: a = "lg", ...s }, n) => {
157
- const { orientation: u, scrollNext: c, canScrollNext: i } = d();
158
- return /* @__PURE__ */ e.createElement(
159
- x,
160
- {
161
- ref: n,
162
- variant: o,
163
- size: a,
164
- className: m(
165
- "absolute h-10 w-10 disabled:bg-light-3",
166
- u === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
167
- r
168
- ),
169
- disabled: !i,
170
- onClick: c,
171
- ...s
172
- },
173
- /* @__PURE__ */ e.createElement(I, { className: "absolute h-4 w-4 stroke-stroke-4" })
174
- );
175
- });
176
- B.displayName = "CarouselNext";
1
+ import l, { useState as a } from "react";
2
+ import { FormStructureContext as c } from "./index143.es.js";
3
+ const f = ({ children: n, structure: e }) => {
4
+ const [t, o] = a(0), r = () => {
5
+ t < e.steps.length - 1 && o(t + 1);
6
+ }, p = () => {
7
+ t > 0 && o(t - 1);
8
+ }, S = (s) => {
9
+ s >= 0 && s < e.steps.length && o(s);
10
+ }, i = {
11
+ structure: e,
12
+ currentStepIndex: t,
13
+ currentStep: e.steps[t],
14
+ goToNextStep: r,
15
+ goToPreviousStep: p,
16
+ goToStep: S,
17
+ isFirstStep: t === 0,
18
+ isLastStep: t === e.steps.length - 1,
19
+ totalSteps: e.steps.length
20
+ };
21
+ return /* @__PURE__ */ l.createElement(c.Provider, { value: i }, n);
22
+ };
177
23
  export {
178
- L as Carousel,
179
- D as CarouselContent,
180
- A as CarouselItem,
181
- B as CarouselNext,
182
- K as CarouselPrevious
24
+ f as FormStructureProvider
183
25
  };
184
26
  //# sourceMappingURL=index112.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index112.es.js","sources":["../src/components/unstyled/carousel/carousel-components.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport useEmblaCarousel from 'embla-carousel-react' // type UseEmblaCarouselType,\nimport { ArrowLeft, ArrowRight } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from '../../atoms/button'\nimport {\n CarouselApi,\n CarouselContextProps,\n CarouselProps,\n} from './carousel.types'\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />')\n }\n\n return context\n}\n\nconst Carousel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & CarouselProps\n>(\n (\n {\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n autoplay = false, // Default value for autoplay\n autoplayInterval = 3000, // Default value for autoplay interval\n ...props\n },\n ref\n ) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\n const [canScrollNext, setCanScrollNext] = React.useState(false)\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n React.useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n React.useEffect(() => {\n if (!autoplay || !api) {\n return\n }\n\n let intervalId: ReturnType<typeof setInterval>\n const startInterval = () => {\n intervalId = setInterval(() => {\n api.scrollNext()\n if (api.selectedScrollSnap() === api.scrollSnapList().length) {\n api.scrollTo(0)\n }\n }, autoplayInterval)\n }\n\n const handleVisibilityChange = () => {\n if (document.hidden) {\n clearInterval(intervalId)\n } else {\n startInterval()\n }\n }\n\n document.addEventListener('visibilitychange', handleVisibilityChange)\n\n // Start the interval if the document is visible\n if (!document.hidden) {\n startInterval()\n }\n\n return () => {\n clearInterval(intervalId)\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }, [autoplay, api, autoplayInterval])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n autoplay, // Pass autoplay to the context\n autoplayInterval, // Pass autoplayInterval to the context\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarousel.displayName = 'Carousel'\n\nconst CarouselContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className\n )}\n {...props}\n />\n </div>\n )\n})\nCarouselContent.displayName = 'CarouselContent'\n\nconst CarouselItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = 'CarouselItem'\n\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = 'secondary', size = 'lg', ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n // ico\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-10 w-10 disabled:bg-light-3',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"absolute h-4 w-4 stroke-stroke-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n})\nCarouselPrevious.displayName = 'CarouselPrevious'\n\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = 'secondary', size = 'lg', ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'absolute h-10 w-10 disabled:bg-light-3',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"absolute h-4 w-4 stroke-stroke-4\" />\n {/* <span className=\"sr-only\">Next slide</span> */}\n </Button>\n )\n})\nCarouselNext.displayName = 'CarouselNext'\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n}\n"],"names":["CarouselContext","React","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","autoplay","autoplayInterval","props","ref","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","intervalId","startInterval","handleVisibilityChange","cn","CarouselContent","CarouselItem","CarouselPrevious","variant","size","Button","ArrowLeft","CarouselNext","ArrowRight"],"mappings":"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"}
1
+ {"version":3,"file":"index112.es.js","sources":["../src/components/ui/form-renderer/context/form-structure/form-structure.provider.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { FormStructureContext } from './form-structure.context'\nimport { FormStructure } from '../../form.types'\n\nexport const FormStructureProvider: React.FC<{\n children: React.ReactNode\n structure: FormStructure\n}> = ({ children, structure }) => {\n const [currentStepIndex, setCurrentStepIndex] = useState(0)\n\n const goToNextStep = () => {\n if (currentStepIndex < structure.steps.length - 1) {\n setCurrentStepIndex(currentStepIndex + 1)\n }\n }\n\n const goToPreviousStep = () => {\n if (currentStepIndex > 0) {\n setCurrentStepIndex(currentStepIndex - 1)\n }\n }\n\n const goToStep = (stepIndex: number) => {\n if (stepIndex >= 0 && stepIndex < structure.steps.length) {\n setCurrentStepIndex(stepIndex)\n }\n }\n\n const value = {\n structure,\n currentStepIndex,\n currentStep: structure.steps[currentStepIndex],\n goToNextStep,\n goToPreviousStep,\n goToStep,\n isFirstStep: currentStepIndex === 0,\n isLastStep: currentStepIndex === structure.steps.length - 1,\n totalSteps: structure.steps.length,\n }\n\n return (\n <FormStructureContext.Provider value={value}>\n {children}\n </FormStructureContext.Provider>\n )\n}\n"],"names":["FormStructureProvider","children","structure","currentStepIndex","setCurrentStepIndex","useState","goToNextStep","goToPreviousStep","goToStep","stepIndex","value","React","FormStructureContext"],"mappings":";;AAIO,MAAMA,IAGR,CAAC,EAAE,UAAAC,GAAU,WAAAC,QAAgB;AAChC,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAS,CAAC,GAEpDC,IAAe,MAAM;AACzB,IAAIH,IAAmBD,EAAU,MAAM,SAAS,KAC9CE,EAAoBD,IAAmB,CAAC;AAAA,EAE5C,GAEMI,IAAmB,MAAM;AAC7B,IAAIJ,IAAmB,KACrBC,EAAoBD,IAAmB,CAAC;AAAA,EAE5C,GAEMK,IAAW,CAACC,MAAsB;AACtC,IAAIA,KAAa,KAAKA,IAAYP,EAAU,MAAM,UAChDE,EAAoBK,CAAS;AAAA,EAEjC,GAEMC,IAAQ;AAAA,IACZ,WAAAR;AAAA,IACA,kBAAAC;AAAA,IACA,aAAaD,EAAU,MAAMC,CAAgB;AAAA,IAC7C,cAAAG;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,aAAaL,MAAqB;AAAA,IAClC,YAAYA,MAAqBD,EAAU,MAAM,SAAS;AAAA,IAC1D,YAAYA,EAAU,MAAM;AAAA,EAAA;AAG9B,SACES,gBAAAA,EAAA,cAACC,EAAqB,UAArB,EAA8B,OAAAF,KAC5BT,CACH;AAEJ;"}
@@ -1,25 +1,206 @@
1
- import { cva as r } from "class-variance-authority";
2
- const t = r(
3
- ` border flex items-center justify-between gap-1.5 relative mt-1.5 rounded-lg
4
- text-light-1 px-3 py-2
5
- file:border-0 file:bg-transparent
6
- placeholder:font-normal placeholder:text-light-4`,
7
- {
8
- variants: {
9
- isFocused: {
10
- true: "border-primary-2 ring-4 ring-primary-1",
11
- false: "border-light-2"
12
- },
13
- disabled: {
14
- true: "bg-light-3 border-neutral-2 cursor-not-allowed",
15
- false: ""
1
+ import G, { useState as E } from "react";
2
+ import { FormValuesContext as L } from "./index144.es.js";
3
+ import { FormFieldType as r } from "./index145.es.js";
4
+ const B = ({
5
+ children: I,
6
+ initialValues: m = {},
7
+ onSubmit: c,
8
+ onAssetUpload: p,
9
+ onToggleImageEditor: T,
10
+ getRequestHeaders: V,
11
+ getCreateOptionExtraBody: A
12
+ }) => {
13
+ const [n, f] = E(m), [M, P] = E({}), b = (s, e) => {
14
+ f((a) => ({ ...a, [s]: e })), M[s] && P((a) => {
15
+ const t = { ...a };
16
+ return delete t[s], t;
17
+ });
18
+ }, O = (s) => {
19
+ f(() => s);
20
+ }, u = (s) => {
21
+ if (s.type === r.REPEATABLE_GROUP_FIELD) {
22
+ const a = `${s.id}||`, t = Object.keys(n).filter((i) => i.startsWith(a));
23
+ if (t.length === 0)
24
+ return { isValid: !1, errorMessage: "This field is required" };
25
+ for (const i of t) {
26
+ const o = { ...s.options.find(
27
+ (g) => g.id === i.split("||")[2]
28
+ ), id: i }, { isValid: d, errorMessage: _ } = u(
29
+ o
30
+ );
31
+ if (!d)
32
+ return { isValid: !1, errorMessage: _ };
16
33
  }
34
+ return { isValid: !0, errorMessage: "" };
35
+ }
36
+ const e = n[s.id];
37
+ if (s.required && e == null)
38
+ return { isValid: !1, errorMessage: "This field is required" };
39
+ if (!s.required && (e == null || e === ""))
40
+ return { isValid: !0, errorMessage: "" };
41
+ switch (s.type) {
42
+ case r.SHORT_TEXT:
43
+ case r.LONG_TEXT:
44
+ case r.SINGLE_VIDEO_PICKER_WITH_INPUT:
45
+ if (e === "")
46
+ return { isValid: !1, errorMessage: "This field cannot be empty" };
47
+ break;
48
+ case r.EMAIL:
49
+ if (e === "")
50
+ return { isValid: !1, errorMessage: "Email is required" };
51
+ if (!/^\S+@\S+\.\S+$/.test(e))
52
+ return {
53
+ isValid: !1,
54
+ errorMessage: "Please enter a valid email address"
55
+ };
56
+ break;
57
+ case r.NUMBER:
58
+ if (e === "")
59
+ return { isValid: !1, errorMessage: "Number is required" };
60
+ if (isNaN(Number(e)))
61
+ return { isValid: !1, errorMessage: "Please enter a valid number" };
62
+ break;
63
+ case r.MOBILE_NUMBER:
64
+ if (e === "")
65
+ return { isValid: !1, errorMessage: "Mobile number is required" };
66
+ if (!/^\d{10,15}$/.test(e.replace(/\D/g, "")))
67
+ return {
68
+ isValid: !1,
69
+ errorMessage: "Please enter a valid mobile number"
70
+ };
71
+ break;
72
+ case r.DATE_PICKER:
73
+ if (!e || e === "")
74
+ return { isValid: !1, errorMessage: "Date is required" };
75
+ break;
76
+ case r.SINGLE_COMBOBOX:
77
+ if (!e || e === "")
78
+ return {
79
+ isValid: !1,
80
+ errorMessage: "Please select or enter a value"
81
+ };
82
+ break;
83
+ case r.MULTI_COMBOBOX:
84
+ if (Array.isArray(e)) {
85
+ if (e.length === 0)
86
+ return {
87
+ isValid: !1,
88
+ errorMessage: "Please select at least one option"
89
+ };
90
+ } else if (typeof e == "string" && (!e || e.split(",").filter(Boolean).length === 0))
91
+ return {
92
+ isValid: !1,
93
+ errorMessage: "Please select at least one option"
94
+ };
95
+ break;
96
+ case r.CREATABLE_MULTI_COMBOBOX: {
97
+ const a = Array.isArray(e) ? e : typeof e == "string" ? e.split(",").filter(Boolean) : [], t = s.minSelected ?? 0, i = s.maxSelected;
98
+ if (t > 0 && a.length < t)
99
+ return {
100
+ isValid: !1,
101
+ errorMessage: i != null ? `Select at least ${t} option(s) (max ${i})` : `Select at least ${t} option(s)`
102
+ };
103
+ if (i != null && a.length > i)
104
+ return {
105
+ isValid: !1,
106
+ errorMessage: `Select at most ${i} option(s)`
107
+ };
108
+ if (s.required && a.length === 0)
109
+ return {
110
+ isValid: !1,
111
+ errorMessage: "This field is required"
112
+ };
113
+ break;
114
+ }
115
+ case r.CHECKBOX_GROUP:
116
+ case r.RADIO_GROUP:
117
+ if (!e || e === "")
118
+ return { isValid: !1, errorMessage: "Please select an option" };
119
+ break;
120
+ case r.RADIO_GROUP_WITH_OPTIONAL_INPUT: {
121
+ const a = e;
122
+ if (!a || !a.radio_value)
123
+ return { isValid: !1, errorMessage: "Please select an option" };
124
+ if (a.radio_value === s.inputTriggerOptionValue && !a.input_value)
125
+ return {
126
+ isValid: !1,
127
+ errorMessage: "Please provide additional information for your selection"
128
+ };
129
+ break;
130
+ }
131
+ case r.SINGLE_IMAGE_PICKER:
132
+ if (!e || !e.public_url)
133
+ return { isValid: !1, errorMessage: "Please upload an image" };
134
+ break;
135
+ case r.SINGLE_VIDEO_PICKER:
136
+ if (!e || !e.public_url)
137
+ return { isValid: !1, errorMessage: "Please upload a video" };
138
+ break;
139
+ case r.MULTI_IMAGE_PICKER:
140
+ if (!Array.isArray(e) || e.length === 0)
141
+ return {
142
+ isValid: !1,
143
+ errorMessage: "Please upload at least one image"
144
+ };
145
+ break;
146
+ case r.MULTI_VIDEO_PICKER:
147
+ if (!Array.isArray(e) || e.length === 0)
148
+ return {
149
+ isValid: !1,
150
+ errorMessage: "Please upload at least one video"
151
+ };
152
+ break;
153
+ case r.TAGGABLE_MULTI_IMAGE_PICKER:
154
+ case r.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT: {
155
+ if (!Array.isArray(e) || e.length === 0)
156
+ return {
157
+ isValid: !1,
158
+ errorMessage: "Please upload at least one image"
159
+ };
160
+ if (e.some((i) => !i.tag))
161
+ return {
162
+ isValid: !1,
163
+ errorMessage: "Please add tags to all uploaded images"
164
+ };
165
+ break;
166
+ }
167
+ }
168
+ return { isValid: !0, errorMessage: "" };
169
+ }, y = {
170
+ values: n,
171
+ errors: M,
172
+ setValue: b,
173
+ setFormValues: O,
174
+ submitForm: () => {
175
+ c && c(n);
17
176
  },
18
- defaultVariants: {},
19
- compoundVariants: []
20
- }
21
- );
177
+ onAssetUpload: p,
178
+ validateField: u,
179
+ validateStep: (s) => {
180
+ let e = !0;
181
+ const a = {}, t = {};
182
+ return s.sections.forEach((i) => {
183
+ i.fields.forEach((l) => {
184
+ t[l.id] = l;
185
+ });
186
+ }), Object.entries(t).forEach(([i, l]) => {
187
+ if (l.required) {
188
+ const { isValid: o, errorMessage: d } = u(l);
189
+ o || (a[l.id] = d, e = !1);
190
+ }
191
+ if ((l.type === r.TAGGABLE_MULTI_IMAGE_PICKER || l.type === r.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT) && !l.required) {
192
+ const o = n[l.id];
193
+ Array.isArray(o) && o.length > 0 && o.some((g) => !g.tag) && (a[l.id] = "Please add tags to all uploaded images", e = !1);
194
+ }
195
+ }), { isStepValid: e, errors: a };
196
+ },
197
+ onToggleImageEditor: T,
198
+ getRequestHeaders: V,
199
+ getCreateOptionExtraBody: A
200
+ };
201
+ return /* @__PURE__ */ G.createElement(L.Provider, { value: y }, I);
202
+ };
22
203
  export {
23
- t as TextAreaVariants
204
+ B as FormValuesProvider
24
205
  };
25
206
  //# sourceMappingURL=index113.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index113.es.js","sources":["../src/components/atoms/textarea/textarea.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const TextAreaVariants = cva(\n ` border flex items-center justify-between gap-1.5 relative mt-1.5 rounded-lg \n text-light-1 px-3 py-2\n file:border-0 file:bg-transparent\n placeholder:font-normal placeholder:text-light-4`,\n {\n variants: {\n isFocused: {\n true: 'border-primary-2 ring-4 ring-primary-1',\n false: 'border-light-2',\n },\n disabled: {\n true: 'bg-light-3 border-neutral-2 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {},\n compoundVariants: [],\n }\n)\n"],"names":["TextAreaVariants","cva"],"mappings":";AAEO,MAAMA,IAAmBC;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,IACE,UAAU;AAAA,MACR,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB,CAAA;AAAA,IACjB,kBAAkB,CAAA;AAAA,EAAC;AAEvB;"}
1
+ {"version":3,"file":"index113.es.js","sources":["../src/components/ui/form-renderer/context/form-values/form-values.provider.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport {\n AssetValue,\n FormField,\n FormFieldValue,\n FormStep,\n FormValues,\n RadioGroupWithInputFieldValue,\n TaggableAssetValue,\n onToggleImageEditor,\n} from '../../form.types'\nimport { FormValuesContext } from './form-values.context'\nimport { FormFieldType } from '../../form.enums'\n\nexport const FormValuesProvider: React.FC<{\n children: React.ReactNode\n initialValues?: FormValues\n onSubmit?: (values: FormValues) => void\n onAssetUpload?: (file: File) => Promise<AssetValue>\n onToggleImageEditor?: onToggleImageEditor\n getRequestHeaders?: () =>\n | Record<string, string>\n | Promise<Record<string, string>>\n getCreateOptionExtraBody?: () =>\n | Record<string, unknown>\n | Promise<Record<string, unknown>>\n}> = ({\n children,\n initialValues = {},\n onSubmit,\n onAssetUpload,\n onToggleImageEditor,\n getRequestHeaders,\n getCreateOptionExtraBody,\n}) => {\n const [values, setValues] = useState<FormValues>(initialValues)\n const [errors, setErrors] = useState<Record<string, string>>({})\n\n // to update field value\n const setValue = (fieldId: string, value: FormFieldValue) => {\n setValues((prev) => ({ ...prev, [fieldId]: value }))\n // Clear error when value changes\n if (errors[fieldId]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[fieldId]\n return newErrors\n })\n }\n }\n\n // to update state all at once\n const setFormValues = (newValues: FormValues) => {\n setValues(() => newValues)\n }\n\n /**\n * Validates a field based on its type\n * @param field - The field object with all properties\n * @returns Object containing validation status and error message\n */\n const validateField = (\n field: FormField\n ): { isValid: boolean; errorMessage: string } => {\n // Special handling for repeatable groups, Since values[field.id] wont exist for repeatable groups\n if (field.type === FormFieldType.REPEATABLE_GROUP_FIELD) {\n const prefix = `${field.id}||`\n // find all the keys that start with the prefix inside values\n const keys = Object.keys(values).filter((key) => key.startsWith(prefix))\n\n // if there are no keys, return invalid, since the field is required\n if (keys.length === 0) {\n return { isValid: false, errorMessage: 'This field is required' }\n }\n\n // loop through all the keys and validate each field if it is required using the same function validation field\n for (const key of keys) {\n const subField = field.options.find(\n (option) => option.id === key.split('||')[2]\n )\n\n const modifiedSubField = { ...subField, id: key }\n const { isValid, errorMessage } = validateField(\n modifiedSubField as FormField\n )\n if (!isValid) {\n return { isValid: false, errorMessage }\n }\n }\n\n // if all the fields are valid, return valid\n return { isValid: true, errorMessage: '' }\n }\n\n // For normal fields, proceed with regular validation\n const value = values[field.id]\n\n // Common check for undefined/null values for all required fields\n if (field.required && (value === undefined || value === null)) {\n return { isValid: false, errorMessage: 'This field is required' }\n }\n\n // If not required and no value, it's valid\n if (\n !field.required &&\n (value === undefined || value === null || value === '')\n ) {\n return { isValid: true, errorMessage: '' }\n }\n\n // Type-specific validation\n switch (field.type) {\n // Text fields\n case FormFieldType.SHORT_TEXT:\n case FormFieldType.LONG_TEXT:\n case FormFieldType.SINGLE_VIDEO_PICKER_WITH_INPUT:\n if (value === '') {\n return { isValid: false, errorMessage: 'This field cannot be empty' }\n }\n break\n\n case FormFieldType.EMAIL:\n if (value === '') {\n return { isValid: false, errorMessage: 'Email is required' }\n }\n // Basic email validation regex\n if (!/^\\S+@\\S+\\.\\S+$/.test(value as string)) {\n return {\n isValid: false,\n errorMessage: 'Please enter a valid email address',\n }\n }\n break\n\n // Number fields\n case FormFieldType.NUMBER:\n if (value === '') {\n return { isValid: false, errorMessage: 'Number is required' }\n }\n // Check if it's actually a number\n if (isNaN(Number(value))) {\n return { isValid: false, errorMessage: 'Please enter a valid number' }\n }\n break\n\n case FormFieldType.MOBILE_NUMBER:\n if (value === '') {\n return { isValid: false, errorMessage: 'Mobile number is required' }\n }\n // Mobile number validation\n if (!/^\\d{10,15}$/.test((value as string).replace(/\\D/g, ''))) {\n return {\n isValid: false,\n errorMessage: 'Please enter a valid mobile number',\n }\n }\n break\n\n case FormFieldType.DATE_PICKER:\n if (!value || value === '') {\n return { isValid: false, errorMessage: 'Date is required' }\n }\n break\n\n // Selection fields\n case FormFieldType.SINGLE_COMBOBOX:\n if (!value || value === '') {\n return {\n isValid: false,\n errorMessage: 'Please select or enter a value',\n }\n }\n break\n\n case FormFieldType.MULTI_COMBOBOX:\n // Could be array or comma-separated string depending on implementation\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return {\n isValid: false,\n errorMessage: 'Please select at least one option',\n }\n }\n } else if (typeof value === 'string') {\n if (!value || value.split(',').filter(Boolean).length === 0) {\n return {\n isValid: false,\n errorMessage: 'Please select at least one option',\n }\n }\n }\n break\n\n case FormFieldType.CREATABLE_MULTI_COMBOBOX: {\n const arr = Array.isArray(value)\n ? value\n : typeof value === 'string'\n ? value.split(',').filter(Boolean)\n : []\n const minSelected = field.minSelected ?? 0\n const maxSelected = field.maxSelected\n if (minSelected > 0 && arr.length < minSelected) {\n return {\n isValid: false,\n errorMessage:\n maxSelected != null\n ? `Select at least ${minSelected} option(s) (max ${maxSelected})`\n : `Select at least ${minSelected} option(s)`,\n }\n }\n if (maxSelected != null && arr.length > maxSelected) {\n return {\n isValid: false,\n errorMessage: `Select at most ${maxSelected} option(s)`,\n }\n }\n if (field.required && arr.length === 0) {\n return {\n isValid: false,\n errorMessage: 'This field is required',\n }\n }\n break\n }\n\n case FormFieldType.CHECKBOX_GROUP:\n case FormFieldType.RADIO_GROUP:\n if (!value || value === '') {\n return { isValid: false, errorMessage: 'Please select an option' }\n }\n break\n\n case FormFieldType.RADIO_GROUP_WITH_OPTIONAL_INPUT: {\n const radioValue = value as RadioGroupWithInputFieldValue\n if (!radioValue || !radioValue.radio_value) {\n return { isValid: false, errorMessage: 'Please select an option' }\n }\n\n // If \"Other\" option is selected, check if input is provided\n if (\n radioValue.radio_value === field.inputTriggerOptionValue &&\n !radioValue.input_value\n ) {\n return {\n isValid: false,\n errorMessage:\n 'Please provide additional information for your selection',\n }\n }\n break\n }\n\n // Media upload fields\n case FormFieldType.SINGLE_IMAGE_PICKER:\n if (!value || !(value as AssetValue).public_url) {\n return { isValid: false, errorMessage: 'Please upload an image' }\n }\n break\n\n case FormFieldType.SINGLE_VIDEO_PICKER:\n if (!value || !(value as AssetValue).public_url) {\n return { isValid: false, errorMessage: 'Please upload a video' }\n }\n break\n\n case FormFieldType.MULTI_IMAGE_PICKER:\n if (!Array.isArray(value) || value.length === 0) {\n return {\n isValid: false,\n errorMessage: 'Please upload at least one image',\n }\n }\n break\n\n case FormFieldType.MULTI_VIDEO_PICKER:\n if (!Array.isArray(value) || value.length === 0) {\n return {\n isValid: false,\n errorMessage: 'Please upload at least one video',\n }\n }\n break\n\n case FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER:\n case FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT: {\n if (!Array.isArray(value) || value.length === 0) {\n return {\n isValid: false,\n errorMessage: 'Please upload at least one image',\n }\n }\n\n // Check if all uploaded images have tags assigned\n const taggedAssets = value as TaggableAssetValue[]\n const missingTags = taggedAssets.some((asset) => !asset.tag)\n if (missingTags) {\n return {\n isValid: false,\n errorMessage: 'Please add tags to all uploaded images',\n }\n }\n break\n }\n }\n\n // If we reach here, validation passed\n return { isValid: true, errorMessage: '' }\n }\n // New function to validate an entire step\n const validateStep = (\n step: FormStep\n ): { isStepValid: boolean; errors: Record<string, string> } => {\n let isStepValid = true\n const errors = {} as Record<string, string>\n const fieldIdTypeMap = {} as Record<string, FormField>\n\n // Collect all required field IDs from this step\n step.sections.forEach((section) => {\n section.fields.forEach((field) => {\n fieldIdTypeMap[field.id] = field\n })\n })\n\n // Validate each required field\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Object.entries(fieldIdTypeMap).forEach(([_fieldId, field]) => {\n // Only validate required fields\n if (field.required) {\n // We can now pass the field type to a more specialized validation function\n const { isValid, errorMessage } = validateField(field)\n if (!isValid) {\n errors[field.id] = errorMessage\n isStepValid = false\n }\n }\n\n // For taggable image fields, validate tags even if field is optional\n // If images are uploaded, their tags must be filled in\n if (\n (field.type === FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER ||\n field.type ===\n FormFieldType.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT) &&\n !field.required\n ) {\n const value = values[field.id]\n if (Array.isArray(value) && value.length > 0) {\n const taggedAssets = value as TaggableAssetValue[]\n const missingTags = taggedAssets.some((asset) => !asset.tag)\n if (missingTags) {\n errors[field.id] = 'Please add tags to all uploaded images'\n isStepValid = false\n }\n }\n }\n })\n\n return { isStepValid, errors }\n }\n\n const submitForm = () => {\n if (onSubmit) {\n onSubmit(values)\n }\n }\n\n const value = {\n values,\n errors,\n setValue,\n setFormValues,\n submitForm,\n onAssetUpload,\n validateField,\n validateStep,\n onToggleImageEditor,\n getRequestHeaders,\n getCreateOptionExtraBody,\n }\n\n return (\n <FormValuesContext.Provider value={value}>\n {children}\n </FormValuesContext.Provider>\n )\n}\n"],"names":["FormValuesProvider","children","initialValues","onSubmit","onAssetUpload","onToggleImageEditor","getRequestHeaders","getCreateOptionExtraBody","values","setValues","useState","errors","setErrors","setValue","fieldId","value","prev","newErrors","setFormValues","newValues","validateField","field","FormFieldType","prefix","keys","key","modifiedSubField","option","isValid","errorMessage","arr","minSelected","maxSelected","radioValue","asset","step","isStepValid","fieldIdTypeMap","section","_fieldId","React","FormValuesContext"],"mappings":"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"}
@@ -1,38 +1,16 @@
1
- import e from "react";
2
- import { Typography as n } from "./index19.es.js";
3
- import { ResponsiveContainer as o, PieChart as i, Pie as m, Cell as s } from "recharts";
4
- function p({
5
- list: l,
6
- total: r
7
- }) {
8
- const c = l?.reduce(
9
- (t, a) => t + a.count,
10
- 0
11
- ) || 1;
12
- return /* @__PURE__ */ e.createElement("div", { className: "flex gap-2 p-4 border rounded-lg border-neutral-1 bg-light-1" }, /* @__PURE__ */ e.createElement("div", { className: "relative w-[180px] h-[164px] flex items-center justify-center" }, /* @__PURE__ */ e.createElement(o, { width: "100%", height: "100%" }, /* @__PURE__ */ e.createElement(i, null, /* @__PURE__ */ e.createElement(
13
- m,
14
- {
15
- data: l,
16
- labelLine: !1,
17
- outerRadius: "100%",
18
- innerRadius: r != null ? "40%" : void 0,
19
- dataKey: "count"
20
- },
21
- l?.map(
22
- (t, a) => /* @__PURE__ */ e.createElement(
23
- s,
24
- {
25
- key: `cell-${a}`,
26
- fill: t.color,
27
- stroke: "none"
28
- }
29
- )
30
- )
31
- ))), r != null && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 flex flex-col items-center justify-center pointer-events-none" }, /* @__PURE__ */ e.createElement(n, { variant: "body4", className: "text-light-1" }, "Total"), /* @__PURE__ */ e.createElement(n, { variant: "body2", className: "text-light-1 font-semibold" }, r))), /* @__PURE__ */ e.createElement("div", { className: "flex flex-col gap-4" }, l?.map(
32
- (t, a) => /* @__PURE__ */ e.createElement("div", { key: a, className: "flex flex-col gap-1" }, /* @__PURE__ */ e.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ e.createElement("img", { src: t.icon_url, alt: t.name || "Brand icon" }), /* @__PURE__ */ e.createElement(n, { variant: "body4", className: "text-light-3" }, t.name)), /* @__PURE__ */ e.createElement(n, { variant: "body4", className: "text-light-2" }, (t.count / c * 100).toFixed(2), "% (", t.count, ")"))
33
- )));
34
- }
1
+ import { cva as r } from "class-variance-authority";
2
+ const i = r(
3
+ "h-10 w-10 p-2 grid place-items-center rounded-md hover:bg-hover-s3 hover:cursor-pointer relative",
4
+ {
5
+ variants: {
6
+ isActive: {
7
+ true: "bg-click-s3",
8
+ false: "bg-inherit"
9
+ }
10
+ }
11
+ }
12
+ );
35
13
  export {
36
- p as ClusterHoverCard
14
+ i as NavbarIconVariants
37
15
  };
38
16
  //# sourceMappingURL=index114.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index114.es.js","sources":["../src/components/ui/map-marker-hover-card/components/map-cluster-hover-card.tsx"],"sourcesContent":["import React from 'react'\nimport { Typography } from '@/components/atoms/typography'\nimport { PieChart, Pie, Cell, ResponsiveContainer } from 'recharts'\nimport { MapMarkerHoverCardNS } from '../map-marker-hover-card.types'\n\nexport function ClusterHoverCard({\n list,\n total,\n}: MapMarkerHoverCardNS.ClusterHoverCardProps) {\n const totalCount =\n list?.reduce(\n (sum: number, item: MapMarkerHoverCardNS.ClusterDataItem) =>\n sum + item.count,\n 0\n ) || 1\n\n return (\n <div className=\"flex gap-2 p-4 border rounded-lg border-neutral-1 bg-light-1\">\n <div className=\"relative w-[180px] h-[164px] flex items-center justify-center\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n <Pie\n data={list}\n labelLine={false}\n outerRadius=\"100%\"\n innerRadius={total != null ? '40%' : undefined}\n dataKey=\"count\"\n >\n {list?.map(\n (\n entry: MapMarkerHoverCardNS.ClusterDataItem,\n index: number\n ) => (\n <Cell\n key={`cell-${index}`}\n fill={entry.color}\n stroke=\"none\"\n />\n )\n )}\n </Pie>\n </PieChart>\n </ResponsiveContainer>\n {total != null && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center pointer-events-none\">\n <Typography variant=\"body4\" className=\"text-light-1\">\n Total\n </Typography>\n <Typography variant=\"body2\" className=\"text-light-1 font-semibold\">\n {total}\n </Typography>\n </div>\n )}\n </div>\n <div className=\"flex flex-col gap-4\">\n {list?.map(\n (item: MapMarkerHoverCardNS.ClusterDataItem, index: number) => (\n <div key={index} className=\"flex flex-col gap-1\">\n <div className=\"flex items-center gap-1\">\n <img src={item.icon_url} alt={item.name || 'Brand icon'} />\n <Typography variant=\"body4\" className=\"text-light-3\">\n {item.name}\n </Typography>\n </div>\n <Typography variant=\"body4\" className=\"text-light-2\">\n {((item.count / totalCount) * 100).toFixed(2)}% ({item.count})\n </Typography>\n </div>\n )\n )}\n </div>\n </div>\n )\n}\n"],"names":["ClusterHoverCard","list","total","totalCount","sum","item","React","ResponsiveContainer","PieChart","Pie","entry","index","Cell","Typography"],"mappings":";;;AAKO,SAASA,EAAiB;AAAA,EAC/B,MAAAC;AAAA,EACA,OAAAC;AACF,GAA+C;AAC7C,QAAMC,IACJF,GAAM;AAAA,IACJ,CAACG,GAAaC,MACZD,IAAMC,EAAK;AAAA,IACb;AAAA,EAAA,KACG;AAEP,SACEC,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,kGACZ,OAAA,EAAI,WAAU,gEAAA,GACbA,gBAAAA,EAAA,cAACC,KAAoB,OAAM,QAAO,QAAO,0CACtCC,GAAA,MACCF,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,MAAMR;AAAA,MACN,WAAW;AAAA,MACX,aAAY;AAAA,MACZ,aAAaC,KAAS,OAAO,QAAQ;AAAA,MACrC,SAAQ;AAAA,IAAA;AAAA,IAEPD,GAAM;AAAA,MACL,CACES,GACAC,MAEAL,gBAAAA,EAAA;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,KAAK,QAAQD,CAAK;AAAA,UAClB,MAAMD,EAAM;AAAA,UACZ,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACT;AAAA,EAEJ,CAEJ,CACF,GACCR,KAAS,QACRI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,iFAAA,GACbA,gBAAAA,EAAA,cAACO,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBAAe,OAErD,GACAP,gBAAAA,EAAA,cAACO,GAAA,EAAW,SAAQ,SAAQ,WAAU,gCACnCX,CACH,CACF,CAEJ,GACAI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yBACZL,GAAM;AAAA,IACL,CAACI,GAA4CM,MAC3CL,gBAAAA,EAAA,cAAC,SAAI,KAAKK,GAAO,WAAU,sBAAA,GACzBL,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAA,GACbA,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKD,EAAK,UAAU,KAAKA,EAAK,QAAQ,aAAA,CAAc,GACzDC,gBAAAA,EAAA,cAACO,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCR,EAAK,IACR,CACF,GACAC,gBAAAA,EAAA,cAACO,GAAA,EAAW,SAAQ,SAAQ,WAAU,mBACjCR,EAAK,QAAQF,IAAc,KAAK,QAAQ,CAAC,GAAE,OAAIE,EAAK,OAAM,GAC/D,CACF;AAAA,EAAA,CAGN,CACF;AAEJ;"}
1
+ {"version":3,"file":"index114.es.js","sources":["../src/components/organisms/navbar/navbar.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const NavbarIconVariants = cva(\n 'h-10 w-10 p-2 grid place-items-center rounded-md hover:bg-hover-s3 hover:cursor-pointer relative',\n {\n variants: {\n isActive: {\n true: 'bg-click-s3',\n false: 'bg-inherit',\n },\n },\n }\n)\n"],"names":["NavbarIconVariants","cva"],"mappings":";AAEO,MAAMA,IAAqBC;AAAA,EAChC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,UAAU;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAEJ;"}