@greatapps/common 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 (205) hide show
  1. package/dist/components/handlers/SearchParamsHandler.mjs +23 -0
  2. package/dist/components/handlers/SearchParamsHandler.mjs.map +1 -0
  3. package/dist/components/layouts/MainLayout.mjs +60 -0
  4. package/dist/components/layouts/MainLayout.mjs.map +1 -0
  5. package/dist/components/layouts/MdSideBarNavigation.mjs +36 -0
  6. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -0
  7. package/dist/components/layouts/NavBar.mjs +45 -0
  8. package/dist/components/layouts/NavBar.mjs.map +1 -0
  9. package/dist/components/layouts/NotificationItem.mjs +7 -0
  10. package/dist/components/layouts/NotificationItem.mjs.map +1 -0
  11. package/dist/components/layouts/SideBarNavigation.mjs +22 -0
  12. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -0
  13. package/dist/components/ui/buttons/Button.mjs +51 -0
  14. package/dist/components/ui/buttons/Button.mjs.map +1 -0
  15. package/dist/components/ui/buttons/CancelButton.mjs +16 -0
  16. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -0
  17. package/dist/components/ui/buttons/CopyButton.mjs +34 -0
  18. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -0
  19. package/dist/components/ui/data-display/Accordion.mjs +73 -0
  20. package/dist/components/ui/data-display/Accordion.mjs.map +1 -0
  21. package/dist/components/ui/data-display/Badge.mjs +41 -0
  22. package/dist/components/ui/data-display/Badge.mjs.map +1 -0
  23. package/dist/components/ui/data-display/Card.mjs +91 -0
  24. package/dist/components/ui/data-display/Card.mjs.map +1 -0
  25. package/dist/components/ui/data-display/Pagination.mjs +115 -0
  26. package/dist/components/ui/data-display/Pagination.mjs.map +1 -0
  27. package/dist/components/ui/data-display/ScrollArea.mjs +60 -0
  28. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -0
  29. package/dist/components/ui/data-display/Separator.mjs +28 -0
  30. package/dist/components/ui/data-display/Separator.mjs.map +1 -0
  31. package/dist/components/ui/data-display/Table.mjs +116 -0
  32. package/dist/components/ui/data-display/Table.mjs.map +1 -0
  33. package/dist/components/ui/data-display/Tabs.mjs +69 -0
  34. package/dist/components/ui/data-display/Tabs.mjs.map +1 -0
  35. package/dist/components/ui/feedback/CircularProgress.mjs +61 -0
  36. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -0
  37. package/dist/components/ui/feedback/DefaultCircularProgress.mjs +49 -0
  38. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -0
  39. package/dist/components/ui/feedback/Progress.mjs +37 -0
  40. package/dist/components/ui/feedback/Progress.mjs.map +1 -0
  41. package/dist/components/ui/feedback/Toast.mjs +73 -0
  42. package/dist/components/ui/feedback/Toast.mjs.map +1 -0
  43. package/dist/components/ui/form/Calendar.mjs +203 -0
  44. package/dist/components/ui/form/Calendar.mjs.map +1 -0
  45. package/dist/components/ui/form/Checkbox.mjs +33 -0
  46. package/dist/components/ui/form/Checkbox.mjs.map +1 -0
  47. package/dist/components/ui/form/DatePicker.mjs +78 -0
  48. package/dist/components/ui/form/DatePicker.mjs.map +1 -0
  49. package/dist/components/ui/form/DateRangePicker.mjs +86 -0
  50. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -0
  51. package/dist/components/ui/form/Input.mjs +20 -0
  52. package/dist/components/ui/form/Input.mjs.map +1 -0
  53. package/dist/components/ui/form/InputOtp.mjs +67 -0
  54. package/dist/components/ui/form/InputOtp.mjs.map +1 -0
  55. package/dist/components/ui/form/RadioGroup.mjs +36 -0
  56. package/dist/components/ui/form/RadioGroup.mjs.map +1 -0
  57. package/dist/components/ui/form/Select.mjs +172 -0
  58. package/dist/components/ui/form/Select.mjs.map +1 -0
  59. package/dist/components/ui/form/Switch.mjs +33 -0
  60. package/dist/components/ui/form/Switch.mjs.map +1 -0
  61. package/dist/components/ui/form/Textarea.mjs +19 -0
  62. package/dist/components/ui/form/Textarea.mjs.map +1 -0
  63. package/dist/components/ui/overlay/Command.mjs +170 -0
  64. package/dist/components/ui/overlay/Command.mjs.map +1 -0
  65. package/dist/components/ui/overlay/Dialog.mjs +131 -0
  66. package/dist/components/ui/overlay/Dialog.mjs.map +1 -0
  67. package/dist/components/ui/overlay/Popover.mjs +46 -0
  68. package/dist/components/ui/overlay/Popover.mjs.map +1 -0
  69. package/dist/components/ui/overlay/Sheet.mjs +129 -0
  70. package/dist/components/ui/overlay/Sheet.mjs.map +1 -0
  71. package/dist/components/ui/overlay/Tooltip.mjs +55 -0
  72. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -0
  73. package/dist/hooks/copy-to-clipboard.hook.mjs +39 -0
  74. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -0
  75. package/dist/index.mjs +57 -0
  76. package/dist/index.mjs.map +1 -0
  77. package/dist/infra/api/client.mjs +115 -0
  78. package/dist/infra/api/client.mjs.map +1 -0
  79. package/dist/infra/api/types.mjs +31 -0
  80. package/dist/infra/api/types.mjs.map +1 -0
  81. package/dist/infra/utils/client-info.mjs +27 -0
  82. package/dist/infra/utils/client-info.mjs.map +1 -0
  83. package/dist/infra/utils/clsx.mjs +9 -0
  84. package/dist/infra/utils/clsx.mjs.map +1 -0
  85. package/dist/infra/utils/params.mjs +21 -0
  86. package/dist/infra/utils/params.mjs.map +1 -0
  87. package/dist/infra/utils/percentage.mjs +20 -0
  88. package/dist/infra/utils/percentage.mjs.map +1 -0
  89. package/dist/middlewares/chain.mjs +37 -0
  90. package/dist/middlewares/chain.mjs.map +1 -0
  91. package/dist/middlewares/create-auth-middleware.mjs +28 -0
  92. package/dist/middlewares/create-auth-middleware.mjs.map +1 -0
  93. package/dist/middlewares/types.mjs +11 -0
  94. package/dist/middlewares/types.mjs.map +1 -0
  95. package/dist/middlewares/validate-session.mjs +92 -0
  96. package/dist/middlewares/validate-session.mjs.map +1 -0
  97. package/dist/modules/auth/actions/login.action.mjs +11 -0
  98. package/dist/modules/auth/actions/login.action.mjs.map +1 -0
  99. package/dist/modules/auth/actions/logout.action.mjs +11 -0
  100. package/dist/modules/auth/actions/logout.action.mjs.map +1 -0
  101. package/dist/modules/auth/actions/register.action.mjs +9 -0
  102. package/dist/modules/auth/actions/register.action.mjs.map +1 -0
  103. package/dist/modules/auth/actions/validate-session.action.mjs +44 -0
  104. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -0
  105. package/dist/modules/auth/hooks/login.hook.mjs +12 -0
  106. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -0
  107. package/dist/modules/auth/hooks/logout.hook.mjs +12 -0
  108. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -0
  109. package/dist/modules/auth/hooks/register.hook.mjs +12 -0
  110. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -0
  111. package/dist/modules/auth/hooks/useUserQuery.mjs +48 -0
  112. package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -0
  113. package/dist/modules/auth/schema.mjs +1 -0
  114. package/dist/modules/auth/schema.mjs.map +1 -0
  115. package/dist/modules/auth/services/auth.service.mjs +163 -0
  116. package/dist/modules/auth/services/auth.service.mjs.map +1 -0
  117. package/dist/modules/users/action/find-user-by-id.action.mjs +21 -0
  118. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -0
  119. package/dist/modules/users/schema.mjs +11 -0
  120. package/dist/modules/users/schema.mjs.map +1 -0
  121. package/dist/modules/users/services/user.service.mjs +50 -0
  122. package/dist/modules/users/services/user.service.mjs.map +1 -0
  123. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs +19 -0
  124. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -0
  125. package/dist/modules/whitelabel/schema.mjs +1 -0
  126. package/dist/modules/whitelabel/schema.mjs.map +1 -0
  127. package/dist/modules/whitelabel/services/whitelabel.service.mjs +62 -0
  128. package/dist/modules/whitelabel/services/whitelabel.service.mjs.map +1 -0
  129. package/dist/providers/auth.provider.mjs +84 -0
  130. package/dist/providers/auth.provider.mjs.map +1 -0
  131. package/dist/providers/query.provider.mjs +37 -0
  132. package/dist/providers/query.provider.mjs.map +1 -0
  133. package/dist/providers/whitelabel.provider.mjs +33 -0
  134. package/dist/providers/whitelabel.provider.mjs.map +1 -0
  135. package/dist/store/useMdSidebarStore.mjs +11 -0
  136. package/dist/store/useMdSidebarStore.mjs.map +1 -0
  137. package/package.json +68 -0
  138. package/src/components/handlers/SearchParamsHandler.tsx +61 -0
  139. package/src/components/layouts/MainLayout.tsx +59 -0
  140. package/src/components/layouts/MdSideBarNavigation.tsx +39 -0
  141. package/src/components/layouts/NavBar.tsx +79 -0
  142. package/src/components/layouts/NotificationItem.tsx +26 -0
  143. package/src/components/layouts/SideBarNavigation.tsx +22 -0
  144. package/src/components/ui/buttons/Button.tsx +55 -0
  145. package/src/components/ui/buttons/CancelButton.tsx +12 -0
  146. package/src/components/ui/buttons/CopyButton.tsx +47 -0
  147. package/src/components/ui/data-display/Accordion.tsx +79 -0
  148. package/src/components/ui/data-display/Badge.tsx +45 -0
  149. package/src/components/ui/data-display/Card.tsx +91 -0
  150. package/src/components/ui/data-display/Pagination.tsx +124 -0
  151. package/src/components/ui/data-display/ScrollArea.tsx +57 -0
  152. package/src/components/ui/data-display/Separator.tsx +27 -0
  153. package/src/components/ui/data-display/Table.tsx +115 -0
  154. package/src/components/ui/data-display/Tabs.tsx +65 -0
  155. package/src/components/ui/feedback/CircularProgress.tsx +75 -0
  156. package/src/components/ui/feedback/DefaultCircularProgress.tsx +53 -0
  157. package/src/components/ui/feedback/Progress.tsx +38 -0
  158. package/src/components/ui/feedback/Toast.tsx +99 -0
  159. package/src/components/ui/form/Calendar.tsx +226 -0
  160. package/src/components/ui/form/Checkbox.tsx +31 -0
  161. package/src/components/ui/form/DatePicker.tsx +97 -0
  162. package/src/components/ui/form/DateRangePicker.tsx +108 -0
  163. package/src/components/ui/form/Input.tsx +18 -0
  164. package/src/components/ui/form/InputOtp.tsx +78 -0
  165. package/src/components/ui/form/RadioGroup.tsx +43 -0
  166. package/src/components/ui/form/Select.tsx +195 -0
  167. package/src/components/ui/form/Switch.tsx +30 -0
  168. package/src/components/ui/form/Textarea.tsx +17 -0
  169. package/src/components/ui/overlay/Command.tsx +183 -0
  170. package/src/components/ui/overlay/Dialog.tsx +146 -0
  171. package/src/components/ui/overlay/Popover.tsx +47 -0
  172. package/src/components/ui/overlay/Sheet.tsx +145 -0
  173. package/src/components/ui/overlay/Tooltip.tsx +60 -0
  174. package/src/hooks/copy-to-clipboard.hook.tsx +52 -0
  175. package/src/index.ts +50 -0
  176. package/src/infra/api/client.ts +142 -0
  177. package/src/infra/api/types.ts +79 -0
  178. package/src/infra/utils/client-info.ts +35 -0
  179. package/src/infra/utils/clsx.ts +6 -0
  180. package/src/infra/utils/params.ts +27 -0
  181. package/src/infra/utils/percentage.ts +42 -0
  182. package/src/middlewares/chain.ts +45 -0
  183. package/src/middlewares/create-auth-middleware.ts +38 -0
  184. package/src/middlewares/types.ts +24 -0
  185. package/src/middlewares/validate-session.ts +116 -0
  186. package/src/modules/auth/actions/login.action.ts +11 -0
  187. package/src/modules/auth/actions/logout.action.ts +11 -0
  188. package/src/modules/auth/actions/register.action.ts +8 -0
  189. package/src/modules/auth/actions/validate-session.action.ts +51 -0
  190. package/src/modules/auth/hooks/login.hook.tsx +10 -0
  191. package/src/modules/auth/hooks/logout.hook.tsx +10 -0
  192. package/src/modules/auth/hooks/register.hook.tsx +10 -0
  193. package/src/modules/auth/hooks/useUserQuery.ts +49 -0
  194. package/src/modules/auth/schema.ts +220 -0
  195. package/src/modules/auth/services/auth.service.ts +225 -0
  196. package/src/modules/users/action/find-user-by-id.action.ts +25 -0
  197. package/src/modules/users/schema.ts +79 -0
  198. package/src/modules/users/services/user.service.ts +63 -0
  199. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +20 -0
  200. package/src/modules/whitelabel/schema.ts +49 -0
  201. package/src/modules/whitelabel/services/whitelabel.service.ts +77 -0
  202. package/src/providers/auth.provider.tsx +113 -0
  203. package/src/providers/query.provider.tsx +52 -0
  204. package/src/providers/whitelabel.provider.tsx +44 -0
  205. package/src/store/useMdSidebarStore.ts +15 -0
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { Suspense, useEffect } from "react";
3
+ import { useSearchParams } from "next/navigation";
4
+ function SearchParamsHandler(options) {
5
+ return /* @__PURE__ */ React.createElement(Suspense, { fallback: null }, /* @__PURE__ */ React.createElement(SearchParamsHandlerChildren, { ...options }));
6
+ }
7
+ function SearchParamsHandlerChildren(options) {
8
+ const searchParams = useSearchParams();
9
+ useEffect(() => {
10
+ Object.keys(options.handlers).forEach((key) => {
11
+ const value = searchParams.get(key);
12
+ if (value) {
13
+ options.handlers[key]();
14
+ }
15
+ });
16
+ }, [searchParams]);
17
+ return null;
18
+ }
19
+ export {
20
+ SearchParamsHandler,
21
+ SearchParamsHandlerChildren
22
+ };
23
+ //# sourceMappingURL=SearchParamsHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/handlers/SearchParamsHandler.tsx"],"sourcesContent":["\"use client\";\n\nimport { Suspense, useEffect } from \"react\";\nimport { useSearchParams } from \"next/navigation\";\n\ninterface SearchParamsHandlerProps {\n handlers: {\n [key: string]: () => void;\n };\n}\n\n/**\n * SearchParamsHandler\n *\n * Este componente é responsável por ler os parâmetros da URL e executar callbacks\n * correspondentes a cada parâmetro encontrado.\n *\n * Por que precisamos deste componente?\n * - O Next.js 16 exige que useSearchParams() seja envolvido em um <Suspense> boundary\n * - Isso evita erros de prerendering durante o build\n * - Permite que URLs como \"/page?tab=performance\" naveguem diretamente para uma aba específica\n *\n * Exemplo de como funciona\n * 1. Usa useSearchParams() para ler o parâmetro \"tab\" da URL\n * 2. Monitora mudanças nos parâmetros com useEffect\n * 3. Quando encontra um parâmetro \"tab\", chama onTabChange com o valor\n * 4. Retorna null porque não renderiza nada na tela\n *\n * Exemplo de uso:\n * <Suspense fallback={null}>\n * <SearchParamsHandler handlers={{ tab: () => console.log(\"Tab changed\") }} />\n * </Suspense>\n *\n * Exemplos de URL:\n * - /greatpages/123?tab=performance → abre a aba \"performance\"\n * - /greatpages/123?tab=leads → abre a aba \"leads\"\n */\nexport function SearchParamsHandler(options: SearchParamsHandlerProps) {\n return (\n <Suspense fallback={null}>\n <SearchParamsHandlerChildren {...options} />\n </Suspense>\n );\n}\n\nexport function SearchParamsHandlerChildren(options: SearchParamsHandlerProps) {\n const searchParams = useSearchParams();\n\n useEffect(() => {\n Object.keys(options.handlers).forEach((key) => {\n const value = searchParams.get(key);\n\n if (value) {\n options.handlers[key]();\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchParams]);\n\n return null;\n}\n"],"mappings":";AAEA,SAAS,UAAU,iBAAiB;AACpC,SAAS,uBAAuB;AAkCzB,SAAS,oBAAoB,SAAmC;AACrE,SACE,oCAAC,YAAS,UAAU,QAClB,oCAAC,+BAA6B,GAAG,SAAS,CAC5C;AAEJ;AAEO,SAAS,4BAA4B,SAAmC;AAC7E,QAAM,eAAe,gBAAgB;AAErC,YAAU,MAAM;AACd,WAAO,KAAK,QAAQ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC7C,YAAM,QAAQ,aAAa,IAAI,GAAG;AAElC,UAAI,OAAO;AACT,gBAAQ,SAAS,GAAG,EAAE;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EAEH,GAAG,CAAC,YAAY,CAAC;AAEjB,SAAO;AACT;","names":[]}
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { cn } from "../../infra/utils/clsx";
4
+ function MainLayout({ className, children, ...props }) {
5
+ return /* @__PURE__ */ React.createElement(
6
+ "div",
7
+ {
8
+ "data-slot": "main-layout",
9
+ className: cn(
10
+ "h-dvh md:h-screen lg:h-screen flex flex-col md:flex-row lg:flex-row md:overflow-hidden lg:overflow-hidden",
11
+ className
12
+ ),
13
+ ...props
14
+ },
15
+ children
16
+ );
17
+ }
18
+ function MainLayoutContent({ className, children, ...props }) {
19
+ return /* @__PURE__ */ React.createElement(
20
+ "div",
21
+ {
22
+ "data-slot": "main-layout-content",
23
+ className: cn("flex flex-col flex-1 min-h-0 md:overflow-hidden lg:overflow-hidden", className),
24
+ ...props
25
+ },
26
+ children
27
+ );
28
+ }
29
+ function MainLayoutSpacer({ className, height, ...props }) {
30
+ return /* @__PURE__ */ React.createElement(
31
+ "div",
32
+ {
33
+ "data-slot": "main-layout-spacer",
34
+ className: cn("md:hidden lg:hidden shrink-0", className),
35
+ style: { height },
36
+ ...props
37
+ }
38
+ );
39
+ }
40
+ function MainLayoutMain({ className, children, ...props }) {
41
+ return /* @__PURE__ */ React.createElement(
42
+ "main",
43
+ {
44
+ "data-slot": "main-layout-main",
45
+ className: cn(
46
+ "flex-1 min-h-0 overflow-y-auto overscroll-none md:overscroll-auto lg:overscroll-auto bg-(--color-base-light)",
47
+ className
48
+ ),
49
+ ...props
50
+ },
51
+ children
52
+ );
53
+ }
54
+ export {
55
+ MainLayout,
56
+ MainLayoutContent,
57
+ MainLayoutMain,
58
+ MainLayoutSpacer
59
+ };
60
+ //# sourceMappingURL=MainLayout.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/MainLayout.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { cn } from \"../../infra/utils/clsx\"\r\n\r\nfunction MainLayout({ className, children, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"main-layout\"\r\n className={cn(\r\n \"h-dvh md:h-screen lg:h-screen flex flex-col md:flex-row lg:flex-row md:overflow-hidden lg:overflow-hidden\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nfunction MainLayoutContent({ className, children, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"main-layout-content\"\r\n className={cn(\"flex flex-col flex-1 min-h-0 md:overflow-hidden lg:overflow-hidden\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nfunction MainLayoutSpacer({ className, height, ...props }: React.ComponentProps<\"div\"> & { height: string }) {\r\n return (\r\n <div\r\n data-slot=\"main-layout-spacer\"\r\n className={cn(\"md:hidden lg:hidden shrink-0\", className)}\r\n style={{ height }}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction MainLayoutMain({ className, children, ...props }: React.ComponentProps<\"main\">) {\r\n return (\r\n <main\r\n data-slot=\"main-layout-main\"\r\n className={cn(\r\n \"flex-1 min-h-0 overflow-y-auto overscroll-none md:overscroll-auto lg:overscroll-auto bg-(--color-base-light)\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </main>\r\n )\r\n}\r\n\r\nexport { MainLayout, MainLayoutContent, MainLayoutSpacer, MainLayoutMain }\r\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,SAAS,UAAU;AAEnB,SAAS,WAAW,EAAE,WAAW,UAAU,GAAG,MAAM,GAAgC;AAChF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,EACL;AAER;AAEA,SAAS,kBAAkB,EAAE,WAAW,UAAU,GAAG,MAAM,GAAgC;AACvF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,sEAAsE,SAAS;AAAA,MAC5F,GAAG;AAAA;AAAA,IAEH;AAAA,EACL;AAER;AAEA,SAAS,iBAAiB,EAAE,WAAW,QAAQ,GAAG,MAAM,GAAqD;AACzG,SACI;AAAA,IAAC;AAAA;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,gCAAgC,SAAS;AAAA,MACvD,OAAO,EAAE,OAAO;AAAA,MACf,GAAG;AAAA;AAAA,EACR;AAER;AAEA,SAAS,eAAe,EAAE,WAAW,UAAU,GAAG,MAAM,GAAiC;AACrF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,aAAU;AAAA,MACV,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,EACL;AAER;","names":[]}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { useMdSidebarStore } from "../../store/useMdSidebarStore";
4
+ import { cn } from "../../infra/utils/clsx";
5
+ function MdSideBarNavigation({
6
+ className,
7
+ children,
8
+ ...props
9
+ }) {
10
+ const { isExpanded, collapse } = useMdSidebarStore();
11
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
12
+ "div",
13
+ {
14
+ className: `hidden md:block lg:hidden fixed inset-0 bg-black/50 z-20 transition-opacity duration-300 ${isExpanded ? "opacity-100" : "opacity-0 pointer-events-none"}`,
15
+ onClick: collapse
16
+ }
17
+ ), /* @__PURE__ */ React.createElement(
18
+ "div",
19
+ {
20
+ className: `hidden md:flex lg:hidden fixed top-0 bottom-0 left-[73px] z-30 transition-transform duration-300 ease-in-out overflow-visible ${isExpanded ? "translate-x-0" : "-translate-x-full"}`
21
+ },
22
+ /* @__PURE__ */ React.createElement(
23
+ "div",
24
+ {
25
+ "data-slot": "md-sidebar-navigation",
26
+ className: cn("w-[273px] h-full flex flex-col p-4 bg-white border-r border-gray-200", className),
27
+ ...props
28
+ },
29
+ children
30
+ )
31
+ ));
32
+ }
33
+ export {
34
+ MdSideBarNavigation
35
+ };
36
+ //# sourceMappingURL=MdSideBarNavigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/MdSideBarNavigation.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { useMdSidebarStore } from \"../../store/useMdSidebarStore\"\r\nimport { cn } from \"../../infra/utils/clsx\"\r\n\r\nfunction MdSideBarNavigation({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n const { isExpanded, collapse } = useMdSidebarStore()\r\n\r\n return (\r\n <>\r\n <div\r\n className={`hidden md:block lg:hidden fixed inset-0 bg-black/50 z-20 transition-opacity duration-300 ${\r\n isExpanded ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\r\n }`}\r\n onClick={collapse}\r\n />\r\n <div\r\n className={`hidden md:flex lg:hidden fixed top-0 bottom-0 left-[73px] z-30 transition-transform duration-300 ease-in-out overflow-visible ${\r\n isExpanded ? \"translate-x-0\" : \"-translate-x-full\"\r\n }`}\r\n >\r\n <div\r\n data-slot=\"md-sidebar-navigation\"\r\n className={cn(\"w-[273px] h-full flex flex-col p-4 bg-white border-r border-gray-200\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nexport { MdSideBarNavigation };\r\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,SAAS,yBAAyB;AAClC,SAAS,UAAU;AAEnB,SAAS,oBAAoB;AAAA,EACzB;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAAgC;AAC5B,QAAM,EAAE,YAAY,SAAS,IAAI,kBAAkB;AAEnD,SACI,0DACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW,4FACP,aAAa,gBAAgB,+BACjC;AAAA,MACA,SAAS;AAAA;AAAA,EACb,GACA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW,iIACP,aAAa,kBAAkB,mBACnC;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,aAAU;AAAA,QACV,WAAW,GAAG,wEAAwE,SAAS;AAAA,QAC9F,GAAG;AAAA;AAAA,MAEH;AAAA,IACL;AAAA,EACJ,CACJ;AAER;","names":[]}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import Image from "next/image";
4
+ import { ChevronRight } from "lucide-react";
5
+ import { Separator } from "../ui/data-display/Separator";
6
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/overlay/Tooltip";
7
+ import { cn } from "../../infra/utils/clsx";
8
+ function NavBar({
9
+ onLogoClick,
10
+ logoIndicatorClassName,
11
+ showExpandButton = false,
12
+ onExpandClick,
13
+ appIconSlot,
14
+ children,
15
+ className
16
+ }) {
17
+ return /* @__PURE__ */ React.createElement("div", { className: cn("hidden md:flex flex-col justify-between h-screen p-4 border-r border-gray-200 overflow-visible z-40 bg-white", className) }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-4 items-center mt-[6.5px]" }, /* @__PURE__ */ React.createElement("div", { className: "relative" }, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { className: "cursor-pointer", asChild: true, onClick: onLogoClick }, /* @__PURE__ */ React.createElement(
18
+ Image,
19
+ {
20
+ src: "/icons/great-icon.svg",
21
+ alt: "Great Icon",
22
+ width: 28,
23
+ height: 28
24
+ }
25
+ )), /* @__PURE__ */ React.createElement(TooltipContent, { side: "right" }, "GreatApps")), /* @__PURE__ */ React.createElement(
26
+ "div",
27
+ {
28
+ className: cn(
29
+ "absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-gray-950 rounded-r-xl transition-opacity duration-300",
30
+ logoIndicatorClassName
31
+ )
32
+ }
33
+ )), /* @__PURE__ */ React.createElement("div", { className: "relative w-full mt-[7.5px]" }, /* @__PURE__ */ React.createElement(Separator, null), showExpandButton && /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
34
+ "button",
35
+ {
36
+ onClick: onExpandClick,
37
+ className: "lg:hidden absolute top-1/2 -translate-y-1/2 right-0 translate-x-[calc(50%+1rem)] size-8 flex items-center justify-center rounded-full border border-gray-200 bg-white hover:bg-gray-100 cursor-pointer transition-colors z-10"
38
+ },
39
+ /* @__PURE__ */ React.createElement(ChevronRight, { size: 16, className: "text-gray-500" })
40
+ )), /* @__PURE__ */ React.createElement(TooltipContent, { side: "right" }, "Expandir menu"))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, appIconSlot)), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center gap-2" }, children));
41
+ }
42
+ export {
43
+ NavBar
44
+ };
45
+ //# sourceMappingURL=NavBar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/NavBar.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport Image from \"next/image\"\r\nimport { ChevronRight } from \"lucide-react\"\r\nimport { Separator } from \"../ui/data-display/Separator\"\r\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/overlay/Tooltip\"\r\nimport { cn } from \"../../infra/utils/clsx\"\r\n\r\ntype NavBarProps = {\r\n onLogoClick: () => void;\r\n logoIndicatorClassName?: string;\r\n showExpandButton?: boolean;\r\n onExpandClick?: () => void;\r\n appIconSlot: React.ReactNode;\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nfunction NavBar({\r\n onLogoClick,\r\n logoIndicatorClassName,\r\n showExpandButton = false,\r\n onExpandClick,\r\n appIconSlot,\r\n children,\r\n className,\r\n}: NavBarProps) {\r\n return (\r\n <div className={cn(\"hidden md:flex flex-col justify-between h-screen p-4 border-r border-gray-200 overflow-visible z-40 bg-white\", className)}>\r\n <div className=\"flex flex-col gap-4 items-center mt-[6.5px]\">\r\n <div className=\"relative\">\r\n <Tooltip>\r\n <TooltipTrigger className=\"cursor-pointer\" asChild onClick={onLogoClick}>\r\n <Image\r\n src=\"/icons/great-icon.svg\"\r\n alt=\"Great Icon\"\r\n width={28}\r\n height={28}\r\n />\r\n </TooltipTrigger>\r\n <TooltipContent side=\"right\">GreatApps</TooltipContent>\r\n </Tooltip>\r\n <div\r\n className={cn(\r\n \"absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-gray-950 rounded-r-xl transition-opacity duration-300\",\r\n logoIndicatorClassName\r\n )}\r\n />\r\n </div>\r\n <div className=\"relative w-full mt-[7.5px]\">\r\n <Separator />\r\n {showExpandButton && (\r\n <Tooltip>\r\n <TooltipTrigger asChild>\r\n <button\r\n onClick={onExpandClick}\r\n className=\"lg:hidden absolute top-1/2 -translate-y-1/2 right-0 translate-x-[calc(50%+1rem)] size-8 flex items-center justify-center rounded-full border border-gray-200 bg-white hover:bg-gray-100 cursor-pointer transition-colors z-10\"\r\n >\r\n <ChevronRight size={16} className=\"text-gray-500\" />\r\n </button>\r\n </TooltipTrigger>\r\n <TooltipContent side=\"right\">Expandir menu</TooltipContent>\r\n </Tooltip>\r\n )}\r\n </div>\r\n <div className=\"flex flex-col gap-2\">\r\n {appIconSlot}\r\n </div>\r\n </div>\r\n <div className=\"flex flex-col items-center gap-2\">\r\n {children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport { NavBar };\r\nexport type { NavBarProps };\r\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,OAAO,WAAW;AAClB,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;AAC1B,SAAS,SAAS,gBAAgB,sBAAsB;AACxD,SAAS,UAAU;AAYnB,SAAS,OAAO;AAAA,EACZ;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAAgB;AACZ,SACI,oCAAC,SAAI,WAAW,GAAG,gHAAgH,SAAS,KACxI,oCAAC,SAAI,WAAU,iDACX,oCAAC,SAAI,WAAU,cACX,oCAAC,eACG,oCAAC,kBAAe,WAAU,kBAAiB,SAAO,MAAC,SAAS,eACxD;AAAA,IAAC;AAAA;AAAA,MACG,KAAI;AAAA,MACJ,KAAI;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA;AAAA,EACZ,CACJ,GACA,oCAAC,kBAAe,MAAK,WAAQ,WAAS,CAC1C,GACA;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA;AAAA,EACJ,CACJ,GACA,oCAAC,SAAI,WAAU,gCACX,oCAAC,eAAU,GACV,oBACG,oCAAC,eACG,oCAAC,kBAAe,SAAO,QACnB;AAAA,IAAC;AAAA;AAAA,MACG,SAAS;AAAA,MACT,WAAU;AAAA;AAAA,IAEV,oCAAC,gBAAa,MAAM,IAAI,WAAU,iBAAgB;AAAA,EACtD,CACJ,GACA,oCAAC,kBAAe,MAAK,WAAQ,eAAa,CAC9C,CAER,GACA,oCAAC,SAAI,WAAU,yBACV,WACL,CACJ,GACA,oCAAC,SAAI,WAAU,sCACV,QACL,CACJ;AAER;","names":[]}
@@ -0,0 +1,7 @@
1
+ function NotificationItem({ icon, iconBgColor, title, time, showBorder = true }) {
2
+ return /* @__PURE__ */ React.createElement("div", { className: `flex items-center gap-3 px-4 py-5 ${showBorder ? "border-b border-gray-200" : ""}` }, /* @__PURE__ */ React.createElement("div", { className: `flex items-center justify-center rounded-full ${iconBgColor} size-10` }, icon), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-1.5" }, /* @__PURE__ */ React.createElement("span", { className: "paragraph-small-semibold text-gray-950" }, title), /* @__PURE__ */ React.createElement("span", { className: "paragraph-xsmall-medium text-gray-500" }, time)));
3
+ }
4
+ export {
5
+ NotificationItem
6
+ };
7
+ //# sourceMappingURL=NotificationItem.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/NotificationItem.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\r\n\r\ntype NotificationItemProps = {\r\n icon: ReactNode;\r\n iconBgColor: string;\r\n title: string;\r\n time: string;\r\n showBorder?: boolean;\r\n}\r\n\r\nfunction NotificationItem({ icon, iconBgColor, title, time, showBorder = true }: NotificationItemProps) {\r\n return (\r\n <div className={`flex items-center gap-3 px-4 py-5 ${showBorder ? 'border-b border-gray-200' : ''}`}>\r\n <div className={`flex items-center justify-center rounded-full ${iconBgColor} size-10`}>\r\n {icon}\r\n </div>\r\n <div className=\"flex flex-col gap-1.5\">\r\n <span className=\"paragraph-small-semibold text-gray-950\">{title}</span>\r\n <span className=\"paragraph-xsmall-medium text-gray-500\">{time}</span>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport { NotificationItem };\r\nexport type { NotificationItemProps };\r\n"],"mappings":"AAUA,SAAS,iBAAiB,EAAE,MAAM,aAAa,OAAO,MAAM,aAAa,KAAK,GAA0B;AACpG,SACI,oCAAC,SAAI,WAAW,qCAAqC,aAAa,6BAA6B,EAAE,MAC7F,oCAAC,SAAI,WAAW,iDAAiD,WAAW,cACvE,IACL,GACA,oCAAC,SAAI,WAAU,2BACX,oCAAC,UAAK,WAAU,4CAA0C,KAAM,GAChE,oCAAC,UAAK,WAAU,2CAAyC,IAAK,CAClE,CACJ;AAER;","names":[]}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import { cn } from "../../infra/utils/clsx";
4
+ function SideBarNavigation({
5
+ className,
6
+ children,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ React.createElement(
10
+ "div",
11
+ {
12
+ "data-slot": "sidebar-navigation",
13
+ className: cn("hidden lg:flex flex-col h-screen p-4 border-r w-[273px] border-gray-200", className),
14
+ ...props
15
+ },
16
+ children
17
+ );
18
+ }
19
+ export {
20
+ SideBarNavigation
21
+ };
22
+ //# sourceMappingURL=SideBarNavigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/SideBarNavigation.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { cn } from \"../../infra/utils/clsx\"\r\n\r\nfunction SideBarNavigation({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"sidebar-navigation\"\r\n className={cn(\"hidden lg:flex flex-col h-screen p-4 border-r w-[273px] border-gray-200\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nexport { SideBarNavigation };\r\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,SAAS,UAAU;AAEnB,SAAS,kBAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAAgC;AAC5B,SACI;AAAA,IAAC;AAAA;AAAA,MACG,aAAU;AAAA,MACV,WAAW,GAAG,2EAA2E,SAAS;AAAA,MACjG,GAAG;AAAA;AAAA,IAEH;AAAA,EACL;AAER;","names":[]}
@@ -0,0 +1,51 @@
1
+ import * as React from "react";
2
+ import { Slot } from "@radix-ui/react-slot";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../../../infra/utils/clsx";
5
+ const buttonVariants = cva(
6
+ "paragraph-small-semibold cursor-pointer flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: " bg-gray-950 text-white hover:bg-gray-950/90",
11
+ secondary: "bg-white text-gray-950 border-gray-200 hover:border-gray-400 border",
12
+ ghost: "text-gray-600 hover:bg-accent hover:text-gray-950 dark:hover:bg-accent/50",
13
+ brand: "bg-pages-300 hover:bg-pages-200 text-gray-950"
14
+ },
15
+ size: {
16
+ default: "h-12 px-4 py-2 has-[>svg]:px-3",
17
+ sm: "rounded-md gap-1.5 px-2 py-2 has-[>svg]:px-2.5",
18
+ lg: "rounded-md px-6 has-[>svg]:px-4",
19
+ icon: "size-9",
20
+ "icon-sm": "size-8",
21
+ "icon-lg": "size-10"
22
+ }
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default"
27
+ }
28
+ }
29
+ );
30
+ function Button({
31
+ className,
32
+ variant,
33
+ size,
34
+ asChild = false,
35
+ ...props
36
+ }) {
37
+ const Comp = asChild ? Slot : "button";
38
+ return /* @__PURE__ */ React.createElement(
39
+ Comp,
40
+ {
41
+ "data-slot": "button",
42
+ className: cn(buttonVariants({ variant, size, className })),
43
+ ...props
44
+ }
45
+ );
46
+ }
47
+ export {
48
+ Button,
49
+ buttonVariants
50
+ };
51
+ //# sourceMappingURL=Button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/buttons/Button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../../infra/utils/clsx\"\n\nconst buttonVariants = cva(\n \"paragraph-small-semibold cursor-pointer flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \" bg-gray-950 text-white hover:bg-gray-950/90\",\n secondary:\n \"bg-white text-gray-950 border-gray-200 hover:border-gray-400 border\",\n ghost:\n \"text-gray-600 hover:bg-accent hover:text-gray-950 dark:hover:bg-accent/50\",\n brand: \"bg-pages-300 hover:bg-pages-200 text-gray-950\",\n },\n size: {\n default: \"h-12 px-4 py-2 has-[>svg]:px-3\",\n sm: \"rounded-md gap-1.5 px-2 py-2 has-[>svg]:px-2.5\",\n lg: \"rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":"AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,OACE;AAAA,QACF,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ function CancelButton({
3
+ ...props
4
+ }) {
5
+ return /* @__PURE__ */ React.createElement(
6
+ "button",
7
+ {
8
+ className: "flex h-8 px-2 justify-center items-center rounded-lg bg-red-50 text-red-600 font-semibold text-sm px-3 cursor-pointer hover:bg-red-100",
9
+ ...props
10
+ }
11
+ );
12
+ }
13
+ export {
14
+ CancelButton as default
15
+ };
16
+ //# sourceMappingURL=CancelButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/buttons/CancelButton.tsx"],"sourcesContent":["import * as React from \"react\";\n\nexport default function CancelButton({\n ...props\n}: React.ComponentProps<\"button\">) {\n return (\n <button\n className=\"flex h-8 px-2 justify-center items-center rounded-lg bg-red-50 text-red-600 font-semibold text-sm px-3 cursor-pointer hover:bg-red-100\"\n {...props}\n />\n );\n}\n"],"mappings":"AAAA,YAAY,WAAW;AAER,SAAR,aAA8B;AAAA,EACnC,GAAG;AACL,GAAmC;AACjC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,34 @@
1
+ import { Check, Copy } from "lucide-react";
2
+ import { toast } from "sonner";
3
+ import { Toast } from "../feedback/Toast";
4
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../overlay/Tooltip";
5
+ import useCopyToClipboard from "../../../hooks/copy-to-clipboard.hook";
6
+ import { cn } from "../../../infra/utils/clsx";
7
+ function CopyButton({
8
+ textToCopy,
9
+ size = 14,
10
+ className,
11
+ tooltipText = "Copiar link",
12
+ successMessage = "Link copiado"
13
+ }) {
14
+ const { isCopied, copy } = useCopyToClipboard({
15
+ onSuccess: () => {
16
+ toast.custom((t) => /* @__PURE__ */ React.createElement(Toast, { variant: "success", message: successMessage, toastId: t }));
17
+ }
18
+ });
19
+ return /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(
20
+ TooltipTrigger,
21
+ {
22
+ asChild: true,
23
+ onClick: (e) => {
24
+ e.stopPropagation();
25
+ copy(textToCopy);
26
+ }
27
+ },
28
+ /* @__PURE__ */ React.createElement("span", { className: cn("cursor-pointer text-gray-500", className) }, isCopied ? /* @__PURE__ */ React.createElement(Check, { size }) : /* @__PURE__ */ React.createElement(Copy, { size }))
29
+ ), /* @__PURE__ */ React.createElement(TooltipContent, null, isCopied ? "Copiado!" : tooltipText));
30
+ }
31
+ export {
32
+ CopyButton
33
+ };
34
+ //# sourceMappingURL=CopyButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/buttons/CopyButton.tsx"],"sourcesContent":["import { Check, Copy } from \"lucide-react\";\nimport { toast } from \"sonner\";\nimport { Toast } from \"../feedback/Toast\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../overlay/Tooltip\";\nimport useCopyToClipboard from \"../../../hooks/copy-to-clipboard.hook\";\nimport { cn } from \"../../../infra/utils/clsx\";\n\ninterface CopyButtonProps {\n textToCopy: string;\n size?: number;\n className?: string;\n tooltipText?: string;\n successMessage?: string;\n}\n\nexport function CopyButton({\n textToCopy,\n size = 14,\n className,\n tooltipText = \"Copiar link\",\n successMessage = \"Link copiado\",\n}: CopyButtonProps) {\n const { isCopied, copy } = useCopyToClipboard({\n onSuccess: () => {\n toast.custom((t) => (\n <Toast variant=\"success\" message={successMessage} toastId={t} />\n ));\n },\n });\n\n return (\n <Tooltip>\n <TooltipTrigger\n asChild\n onClick={(e: React.MouseEvent) => {\n e.stopPropagation();\n copy(textToCopy);\n }}\n >\n <span className={cn(\"cursor-pointer text-gray-500\", className)}>\n {isCopied ? <Check size={size} /> : <Copy size={size} />}\n </span>\n </TooltipTrigger>\n <TooltipContent>{isCopied ? \"Copiado!\" : tooltipText}</TooltipContent>\n </Tooltip>\n );\n}\n"],"mappings":"AAAA,SAAS,OAAO,YAAY;AAC5B,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,SAAS,gBAAgB,sBAAsB;AACxD,OAAO,wBAAwB;AAC/B,SAAS,UAAU;AAUZ,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,cAAc;AAAA,EACd,iBAAiB;AACnB,GAAoB;AAClB,QAAM,EAAE,UAAU,KAAK,IAAI,mBAAmB;AAAA,IAC5C,WAAW,MAAM;AACf,YAAM,OAAO,CAAC,MACZ,oCAAC,SAAM,SAAQ,WAAU,SAAS,gBAAgB,SAAS,GAAG,CAC/D;AAAA,IACH;AAAA,EACF,CAAC;AAED,SACE,oCAAC,eACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAO;AAAA,MACP,SAAS,CAAC,MAAwB;AAChC,UAAE,gBAAgB;AAClB,aAAK,UAAU;AAAA,MACjB;AAAA;AAAA,IAEA,oCAAC,UAAK,WAAW,GAAG,gCAAgC,SAAS,KAC1D,WAAW,oCAAC,SAAM,MAAY,IAAK,oCAAC,QAAK,MAAY,CACxD;AAAA,EACF,GACA,oCAAC,sBAAgB,WAAW,aAAa,WAAY,CACvD;AAEJ;","names":[]}
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
4
+ import { ChevronDownIcon } from "lucide-react";
5
+ import { cn } from "../../../infra/utils/clsx";
6
+ function Accordion({
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ React.createElement(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
10
+ }
11
+ function AccordionItem({
12
+ className,
13
+ children,
14
+ ...props
15
+ }) {
16
+ const itemRef = React.useRef(null);
17
+ return /* @__PURE__ */ React.createElement(
18
+ AccordionPrimitive.Item,
19
+ {
20
+ ref: itemRef,
21
+ "data-slot": "accordion-item",
22
+ className: cn("cursor-pointer border rounded-lg p-5", className),
23
+ onClick: (e) => {
24
+ if (e.target.closest("[data-slot='accordion-trigger']")) return;
25
+ const trigger = itemRef.current?.querySelector("[data-slot='accordion-trigger']");
26
+ trigger?.click();
27
+ },
28
+ ...props
29
+ },
30
+ children
31
+ );
32
+ }
33
+ function AccordionTrigger({
34
+ className,
35
+ children,
36
+ ...props
37
+ }) {
38
+ return /* @__PURE__ */ React.createElement(AccordionPrimitive.Header, { className: "flex" }, /* @__PURE__ */ React.createElement(
39
+ AccordionPrimitive.Trigger,
40
+ {
41
+ "data-slot": "accordion-trigger",
42
+ className: cn(
43
+ "cursor-pointer focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
44
+ className
45
+ ),
46
+ ...props
47
+ },
48
+ children,
49
+ /* @__PURE__ */ React.createElement(ChevronDownIcon, { className: "size-5! text-gray-950 pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200" })
50
+ ));
51
+ }
52
+ function AccordionContent({
53
+ className,
54
+ children,
55
+ ...props
56
+ }) {
57
+ return /* @__PURE__ */ React.createElement(
58
+ AccordionPrimitive.Content,
59
+ {
60
+ "data-slot": "accordion-content",
61
+ className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
62
+ ...props
63
+ },
64
+ /* @__PURE__ */ React.createElement("div", { className: cn("pt-3 paragraph-small-regular text-gray-500", className) }, children)
65
+ );
66
+ }
67
+ export {
68
+ Accordion,
69
+ AccordionContent,
70
+ AccordionItem,
71
+ AccordionTrigger
72
+ };
73
+ //# sourceMappingURL=Accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/data-display/Accordion.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { cn } from \"../../../infra/utils/clsx\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n const itemRef = React.useRef<HTMLDivElement>(null);\n\n return (\n <AccordionPrimitive.Item\n ref={itemRef}\n data-slot=\"accordion-item\"\n className={cn(\"cursor-pointer border rounded-lg p-5\", className)}\n onClick={(e) => {\n // Evita abrir/fechar quando o clique já é no Trigger\n if ((e.target as HTMLElement).closest(\"[data-slot='accordion-trigger']\")) return;\n\n // Procura o trigger interno e clica nele\n const trigger = itemRef.current?.querySelector(\"[data-slot='accordion-trigger']\") as HTMLElement | null;\n trigger?.click();\n }}\n {...props}\n >\n {children}\n </AccordionPrimitive.Item>\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"cursor-pointer focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-5! text-gray-950 pointer-events-none shrink-0 translate-y-0.5 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm\"\n {...props}\n >\n <div className={cn(\"pt-3 paragraph-small-regular text-gray-500\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";AAEA,YAAY,WAAW;AACvB,YAAY,wBAAwB;AACpC,SAAS,uBAAuB;AAChC,SAAS,UAAU;AAEnB,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,oCAAC,mBAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,QAAM,UAAU,MAAM,OAAuB,IAAI;AAEjD,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,KAAK;AAAA,MACL,aAAU;AAAA,MACV,WAAW,GAAG,wCAAwC,SAAS;AAAA,MAC/D,SAAS,CAAC,MAAM;AAEd,YAAK,EAAE,OAAuB,QAAQ,iCAAiC,EAAG;AAG1E,cAAM,UAAU,QAAQ,SAAS,cAAc,iCAAiC;AAChF,iBAAS,MAAM;AAAA,MACjB;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,EACH;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,oCAAC,mBAAmB,QAAnB,EAA0B,WAAU,UACnC;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,IAEH;AAAA,IACD,oCAAC,mBAAgB,WAAU,wGAAuG;AAAA,EACpI,CACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,IAEJ,oCAAC,SAAI,WAAW,GAAG,8CAA8C,SAAS,KAAI,QAAS;AAAA,EACzF;AAEJ;","names":[]}
@@ -0,0 +1,41 @@
1
+ import * as React from "react";
2
+ import { Slot } from "@radix-ui/react-slot";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../../../infra/utils/clsx";
5
+ const badgeVariants = cva(
6
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
11
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
12
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
13
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ variant: "default"
18
+ }
19
+ }
20
+ );
21
+ function Badge({
22
+ className,
23
+ variant,
24
+ asChild = false,
25
+ ...props
26
+ }) {
27
+ const Comp = asChild ? Slot : "span";
28
+ return /* @__PURE__ */ React.createElement(
29
+ Comp,
30
+ {
31
+ "data-slot": "badge",
32
+ className: cn(badgeVariants({ variant }), className),
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ export {
38
+ Badge,
39
+ badgeVariants
40
+ };
41
+ //# sourceMappingURL=Badge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/data-display/Badge.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../../infra/utils/clsx\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n"],"mappings":"AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAC8D;AAC5D,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,91 @@
1
+ import * as React from "react";
2
+ import { cn } from "../../../infra/utils/clsx";
3
+ function Card({ className, ...props }) {
4
+ return /* @__PURE__ */ React.createElement(
5
+ "div",
6
+ {
7
+ "data-slot": "card",
8
+ className: cn(
9
+ "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
10
+ className
11
+ ),
12
+ ...props
13
+ }
14
+ );
15
+ }
16
+ function CardHeader({ className, ...props }) {
17
+ return /* @__PURE__ */ React.createElement(
18
+ "div",
19
+ {
20
+ "data-slot": "card-header",
21
+ className: cn(
22
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
23
+ className
24
+ ),
25
+ ...props
26
+ }
27
+ );
28
+ }
29
+ function CardTitle({ className, ...props }) {
30
+ return /* @__PURE__ */ React.createElement(
31
+ "div",
32
+ {
33
+ "data-slot": "card-title",
34
+ className: cn("leading-none font-semibold", className),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function CardDescription({ className, ...props }) {
40
+ return /* @__PURE__ */ React.createElement(
41
+ "div",
42
+ {
43
+ "data-slot": "card-description",
44
+ className: cn("text-muted-foreground text-sm", className),
45
+ ...props
46
+ }
47
+ );
48
+ }
49
+ function CardAction({ className, ...props }) {
50
+ return /* @__PURE__ */ React.createElement(
51
+ "div",
52
+ {
53
+ "data-slot": "card-action",
54
+ className: cn(
55
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
56
+ className
57
+ ),
58
+ ...props
59
+ }
60
+ );
61
+ }
62
+ function CardContent({ className, ...props }) {
63
+ return /* @__PURE__ */ React.createElement(
64
+ "div",
65
+ {
66
+ "data-slot": "card-content",
67
+ className: cn("px-6", className),
68
+ ...props
69
+ }
70
+ );
71
+ }
72
+ function CardFooter({ className, ...props }) {
73
+ return /* @__PURE__ */ React.createElement(
74
+ "div",
75
+ {
76
+ "data-slot": "card-footer",
77
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
78
+ ...props
79
+ }
80
+ );
81
+ }
82
+ export {
83
+ Card,
84
+ CardAction,
85
+ CardContent,
86
+ CardDescription,
87
+ CardFooter,
88
+ CardHeader,
89
+ CardTitle
90
+ };
91
+ //# sourceMappingURL=Card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ui/data-display/Card.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../../infra/utils/clsx\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n"],"mappings":"AAAA,YAAY,WAAW;AACvB,SAAS,UAAU;AAEnB,SAAS,KAAK,EAAE,WAAW,GAAG,MAAM,GAAgC;AAClE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,QAAQ,SAAS;AAAA,MAC9B,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}