@flowselections/core 1.0.23 → 1.0.25

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 (102) hide show
  1. package/README.md +19 -0
  2. package/dist/auth/roles.d.ts +10 -0
  3. package/dist/auth/roles.d.ts.map +1 -0
  4. package/dist/auth/roles.js +11 -0
  5. package/dist/auth/useAuth.js +1 -1
  6. package/dist/components/instellingen/NotificationSettingsCard.js +3 -3
  7. package/dist/components/layout/AuthenticatedLayout.d.ts +1 -1
  8. package/dist/components/layout/AuthenticatedLayout.d.ts.map +1 -1
  9. package/dist/components/layout/AuthenticatedLayout.js +2 -2
  10. package/dist/components/layout/BugsDialog.js +10 -10
  11. package/dist/components/layout/HandoverPage.d.ts +5 -1
  12. package/dist/components/layout/HandoverPage.d.ts.map +1 -1
  13. package/dist/components/layout/HandoverPage.js +24 -7
  14. package/dist/components/layout/Header.js +4 -4
  15. package/dist/components/layout/InstellingenPage.d.ts +1 -1
  16. package/dist/components/layout/InstellingenPage.d.ts.map +1 -1
  17. package/dist/components/layout/InstellingenPage.js +6 -6
  18. package/dist/components/layout/LoginPage.js +7 -7
  19. package/dist/components/layout/NotificationBell.js +4 -4
  20. package/dist/components/layout/ResetWachtwoordPage.js +5 -5
  21. package/dist/components/layout/Sidebar.d.ts +1 -1
  22. package/dist/components/layout/Sidebar.d.ts.map +1 -1
  23. package/dist/components/layout/Sidebar.js +3 -3
  24. package/dist/components/ui/accordion.js +1 -1
  25. package/dist/components/ui/alert-dialog.js +2 -2
  26. package/dist/components/ui/alert.js +1 -1
  27. package/dist/components/ui/avatar.js +1 -1
  28. package/dist/components/ui/badge.js +1 -1
  29. package/dist/components/ui/breadcrumb.js +1 -1
  30. package/dist/components/ui/button.js +1 -1
  31. package/dist/components/ui/calendar.d.ts +1 -1
  32. package/dist/components/ui/calendar.d.ts.map +1 -1
  33. package/dist/components/ui/calendar.js +2 -2
  34. package/dist/components/ui/card.js +1 -1
  35. package/dist/components/ui/carousel.d.ts +2 -2
  36. package/dist/components/ui/carousel.d.ts.map +1 -1
  37. package/dist/components/ui/carousel.js +2 -2
  38. package/dist/components/ui/chart.d.ts +10 -10
  39. package/dist/components/ui/chart.js +1 -1
  40. package/dist/components/ui/checkbox.js +1 -1
  41. package/dist/components/ui/command.js +2 -2
  42. package/dist/components/ui/context-menu.js +1 -1
  43. package/dist/components/ui/dialog.js +1 -1
  44. package/dist/components/ui/drawer.js +1 -1
  45. package/dist/components/ui/dropdown-menu.js +1 -1
  46. package/dist/components/ui/form.js +2 -2
  47. package/dist/components/ui/hover-card.js +1 -1
  48. package/dist/components/ui/icon-picker.js +3 -3
  49. package/dist/components/ui/input-otp.d.ts.map +1 -1
  50. package/dist/components/ui/input-otp.js +1 -1
  51. package/dist/components/ui/input.js +1 -1
  52. package/dist/components/ui/label.js +1 -1
  53. package/dist/components/ui/menubar.js +1 -1
  54. package/dist/components/ui/navigation-menu.js +1 -1
  55. package/dist/components/ui/pagination.d.ts +1 -1
  56. package/dist/components/ui/pagination.d.ts.map +1 -1
  57. package/dist/components/ui/pagination.js +2 -2
  58. package/dist/components/ui/popover.js +1 -1
  59. package/dist/components/ui/progress.js +1 -1
  60. package/dist/components/ui/radio-group.js +1 -1
  61. package/dist/components/ui/resizable.js +1 -1
  62. package/dist/components/ui/scroll-area.js +1 -1
  63. package/dist/components/ui/select.js +1 -1
  64. package/dist/components/ui/separator.js +1 -1
  65. package/dist/components/ui/sheet.js +1 -1
  66. package/dist/components/ui/sidebar.d.ts +2 -2
  67. package/dist/components/ui/sidebar.d.ts.map +1 -1
  68. package/dist/components/ui/sidebar.js +8 -8
  69. package/dist/components/ui/skeleton.js +1 -1
  70. package/dist/components/ui/slider.js +1 -1
  71. package/dist/components/ui/switch.js +1 -1
  72. package/dist/components/ui/table.js +1 -1
  73. package/dist/components/ui/tabs.js +1 -1
  74. package/dist/components/ui/textarea.js +1 -1
  75. package/dist/components/ui/toggle-group.js +2 -2
  76. package/dist/components/ui/toggle.js +1 -1
  77. package/dist/components/ui/tooltip.js +1 -1
  78. package/dist/index.d.ts +41 -41
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +34 -34
  81. package/dist/routes/index.d.ts +3 -1
  82. package/dist/routes/index.d.ts.map +1 -1
  83. package/dist/routes/index.js +2 -2
  84. package/dist/server/handover-handler.d.ts +24 -0
  85. package/dist/server/handover-handler.d.ts.map +1 -0
  86. package/dist/server/handover-handler.js +59 -0
  87. package/dist/server/index.d.ts +4 -1
  88. package/dist/server/index.d.ts.map +1 -1
  89. package/dist/server/index.js +3 -1
  90. package/dist/server/permissions.server.d.ts +2 -9
  91. package/dist/server/permissions.server.d.ts.map +1 -1
  92. package/dist/server/permissions.server.js +2 -10
  93. package/dist/supabase/auth-middleware.d.ts +16 -16
  94. package/dist/supabase/auth-middleware.d.ts.map +1 -1
  95. package/dist/supabase/client.d.ts +16 -16
  96. package/dist/supabase/client.d.ts.map +1 -1
  97. package/dist/supabase/client.server.d.ts +16 -16
  98. package/dist/supabase/client.server.d.ts.map +1 -1
  99. package/package.json +116 -115
  100. package/dist/auth/handover.functions.d.ts +0 -16
  101. package/dist/auth/handover.functions.d.ts.map +0 -1
  102. package/dist/auth/handover.functions.js +0 -23
package/README.md CHANGED
@@ -4,6 +4,25 @@ Fundament-module: authenticatie, shell-layout (sidebar/header), instellingen en
4
4
  gedeelde UI-componenten. Elke module heeft core als `peerDependency`; de shell
5
5
  bepaalt welke core-versie draait.
6
6
 
7
+ ## Gebruik 1.0.23 niet
8
+
9
+ **Core 1.0.23 breekt de clientbuild van elke shell** (`"Readable"/"AsyncLocalStorage" is not exported by "__vite-browser-external"`): de handoverpagina trok via een serverfunctie servercode in de clientbundel. Gebruik **1.0.24 of hoger**.
10
+
11
+ Vanaf 1.0.24 wisselt `HandoverPage` de code in via een server-route in de shell. Het dashboard genereert daarvoor `src/routes/api/public/auth/handover.ts`:
12
+
13
+ ```ts
14
+ import { createFileRoute } from "@tanstack/react-router";
15
+ import { handoverExchangeHandler } from "@flowselections/core/server";
16
+
17
+ export const Route = createFileRoute("/api/public/auth/handover")({
18
+ server: { handlers: { POST: handoverExchangeHandler() } },
19
+ });
20
+ ```
21
+
22
+ Ander pad? Geef `exchangePath` mee aan `HandoverPage` of `handoverRoute`. Zonder dit bestand mislukt alleen de handover (neutrale foutmelding); `/login` blijft werken.
23
+
24
+ `build:pkg` controleert met `scripts/check-client-graph.mjs` dat de hoofdbarrel en `./routes` geen servercode importeren. `npm run verify:consumer` bouwt een minimale consumer-app tegen het gepakte pakket.
25
+
7
26
  ## Modulecontract
8
27
 
9
28
  ```ts
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Sinds 1.0.23. Rolvlaggen uit geverifieerde claims (bijv. `context.claims` uit
3
+ * requireSupabaseAuth). superadmin ⇒ admin. Zichtbaarheid, geen beveiliging.
4
+ */
5
+ export declare function getRoleFlags(claims: Record<string, unknown> | undefined | null): {
6
+ roles: string[];
7
+ isSuperadmin: boolean;
8
+ isAdmin: boolean;
9
+ };
10
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/core/auth/roles.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI;;;;EAK9E"}
@@ -0,0 +1,11 @@
1
+ // Pure rollogica, zonder server- of browserimports: veilig voor client én server.
2
+ /**
3
+ * Sinds 1.0.23. Rolvlaggen uit geverifieerde claims (bijv. `context.claims` uit
4
+ * requireSupabaseAuth). superadmin ⇒ admin. Zichtbaarheid, geen beveiliging.
5
+ */
6
+ export function getRoleFlags(claims) {
7
+ const raw = claims?.["user_roles"];
8
+ const roles = Array.isArray(raw) ? raw.map(String) : [];
9
+ const isSuperadmin = roles.includes("superadmin");
10
+ return { roles, isSuperadmin, isAdmin: isSuperadmin || roles.includes("admin") };
11
+ }
@@ -1,5 +1,5 @@
1
1
  import { useState, useEffect, useCallback } from "react";
2
- import { supabase } from "../supabase/client";
2
+ import { supabase } from "../supabase/client.js";
3
3
  export function useAuthState() {
4
4
  const [user, setUser] = useState(null);
5
5
  const [session, setSession] = useState(null);
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card";
4
- import { Switch } from "../ui/switch";
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card.js";
4
+ import { Switch } from "../ui/switch.js";
5
5
  import { Bell, Loader2 } from "lucide-react";
6
- import { supabase } from "../../supabase/client";
6
+ import { supabase } from "../../supabase/client.js";
7
7
  import { toast } from "sonner";
8
8
  export function NotificationSettingsCard() {
9
9
  const [prefs, setPrefs] = useState({ email_notifications: true });
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import type { SidebarProps } from "./Sidebar";
2
+ import type { SidebarProps } from "./Sidebar.js";
3
3
  export type AuthenticatedLayoutProps = SidebarProps & {
4
4
  /** Optioneel; standaard rendert de layout <Outlet />. */
5
5
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatedLayout.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/AuthenticatedLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAI9C,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,SAAS,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAMtD;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,SAAS,CAMzE;AAED,wBAAgB,QAAQ,4CAWvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,MAAa,EACb,WAAkB,EAClB,GAAG,YAAY,EAChB,EAAE,wBAAwB,2CA6B1B"}
1
+ {"version":3,"file":"AuthenticatedLayout.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/AuthenticatedLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,SAAS,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAMtD;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,SAAS,CAMzE;AAED,wBAAgB,QAAQ,4CAWvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,MAAa,EACb,WAAkB,EAClB,GAAG,YAAY,EAChB,EAAE,wBAAwB,2CA6B1B"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
3
  import { Outlet, useMatches } from "@tanstack/react-router";
4
- import { Sidebar, useSidebarModules } from "./Sidebar";
5
- import { Header } from "./Header";
4
+ import { Sidebar, useSidebarModules } from "./Sidebar.js";
5
+ import { Header } from "./Header.js";
6
6
  import { ShellContext } from "../../shell/ShellContext.js";
7
7
  /** Sinds 1.0.23: diepste match met een niet-lege titel. */
8
8
  export function pickTitle(matches) {
@@ -1,17 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useRef } from "react";
3
- import { Dialog, DialogContent, DialogHeader, DialogTitle } from "../ui/dialog";
4
- import { Button } from "../ui/button";
5
- import { Input } from "../ui/input";
6
- import { Textarea } from "../ui/textarea";
7
- import { Label } from "../ui/label";
8
- import { Badge } from "../ui/badge";
9
- import { Select, SelectContent, SelectItem, SelectTrigger } from "../ui/select";
10
- import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs";
3
+ import { Dialog, DialogContent, DialogHeader, DialogTitle } from "../ui/dialog.js";
4
+ import { Button } from "../ui/button.js";
5
+ import { Input } from "../ui/input.js";
6
+ import { Textarea } from "../ui/textarea.js";
7
+ import { Label } from "../ui/label.js";
8
+ import { Badge } from "../ui/badge.js";
9
+ import { Select, SelectContent, SelectItem, SelectTrigger } from "../ui/select.js";
10
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs.js";
11
11
  import { Plus, Loader2, CheckCircle, Trash2, Paperclip, X, FileText } from "lucide-react";
12
- import { supabase } from "../../supabase/client";
12
+ import { supabase } from "../../supabase/client.js";
13
13
  import { toast } from "sonner";
14
- import { bugReportSchema, validateFileUpload, ALLOWED_FILE_TYPES } from "../../lib/validationSchemas";
14
+ import { bugReportSchema, validateFileUpload, ALLOWED_FILE_TYPES } from "../../lib/validationSchemas.js";
15
15
  const statusConfig = {
16
16
  open: { label: "Open", variant: "destructive" },
17
17
  in_progress: { label: "In behandeling", variant: "default" },
@@ -3,6 +3,10 @@ export interface HandoverPageProps {
3
3
  redirectTo?: string;
4
4
  /** Pad van de (centrale) inlogpagina voor de foutknop. */
5
5
  loginPath?: string;
6
+ /** Server-route die de code inwisselt. Standaard "/api/public/auth/handover". */
7
+ exchangePath?: string;
6
8
  }
7
- export declare function HandoverPage({ redirectTo, loginPath }: HandoverPageProps): import("react/jsx-runtime").JSX.Element;
9
+ /** Sinds 1.0.24: standaardpad van de handover-server-route in de shell. */
10
+ export declare const DEFAULT_HANDOVER_EXCHANGE_PATH = "/api/public/auth/handover";
11
+ export declare function HandoverPage({ redirectTo, loginPath, exchangePath, }: HandoverPageProps): import("react/jsx-runtime").JSX.Element;
8
12
  //# sourceMappingURL=HandoverPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HandoverPage.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/HandoverPage.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,YAAY,CAAC,EAAE,UAAgB,EAAE,SAAoB,EAAE,EAAE,iBAAiB,2CA0FzF"}
1
+ {"version":3,"file":"HandoverPage.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/HandoverPage.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAoB1E,wBAAgB,YAAY,CAAC,EAC3B,UAAgB,EAChB,SAAoB,EACpB,YAA6C,GAC9C,EAAE,iBAAiB,2CA0FnB"}
@@ -1,13 +1,30 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  import { useRouter } from "@tanstack/react-router";
4
- import { Button } from "../ui/button";
5
- import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card";
6
- import { supabase } from "../../supabase/client";
7
- import { readRedirectParam } from "../../auth/redirect";
8
- import { exchangeHandover } from "../../auth/handover.functions.js";
4
+ import { Button } from "../ui/button.js";
5
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card.js";
6
+ import { supabase } from "../../supabase/client.js";
7
+ import { readRedirectParam } from "../../auth/redirect.js";
8
+ /** Sinds 1.0.24: standaardpad van de handover-server-route in de shell. */
9
+ export const DEFAULT_HANDOVER_EXCHANGE_PATH = "/api/public/auth/handover";
10
+ async function exchangeHandover(exchangePath, code) {
11
+ const res = await fetch(exchangePath, {
12
+ method: "POST",
13
+ headers: { "content-type": "application/json" },
14
+ credentials: "same-origin",
15
+ cache: "no-store",
16
+ body: JSON.stringify({ code }),
17
+ });
18
+ if (!res.ok)
19
+ throw new Error("handover_failed");
20
+ const body = (await res.json());
21
+ if (typeof body.accessToken !== "string" || typeof body.refreshToken !== "string") {
22
+ throw new Error("handover_failed");
23
+ }
24
+ return { accessToken: body.accessToken, refreshToken: body.refreshToken };
25
+ }
9
26
  const FOUTMELDING = "Inloggen is niet gelukt. Probeer het opnieuw vanaf de inlogpagina.";
10
- export function HandoverPage({ redirectTo = "/", loginPath = "/login" }) {
27
+ export function HandoverPage({ redirectTo = "/", loginPath = "/login", exchangePath = DEFAULT_HANDOVER_EXCHANGE_PATH, }) {
11
28
  const router = useRouter();
12
29
  const [failed, setFailed] = useState(false);
13
30
  const started = useRef(false);
@@ -39,7 +56,7 @@ export function HandoverPage({ redirectTo = "/", loginPath = "/login" }) {
39
56
  const cleanUrl = window.location.pathname + window.location.hash;
40
57
  window.history.replaceState(null, "", cleanUrl);
41
58
  try {
42
- const result = await exchangeHandover({ data: { code } });
59
+ const result = await exchangeHandover(exchangePath, code);
43
60
  const { error } = await supabase.auth.setSession({
44
61
  access_token: result.accessToken,
45
62
  refresh_token: result.refreshToken,
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { Bug, Search } from "lucide-react";
4
- import { Input } from "../ui/input";
5
- import { Button } from "../ui/button";
6
- import { BugsDialog } from "./BugsDialog";
7
- import { NotificationBell } from "./NotificationBell";
4
+ import { Input } from "../ui/input.js";
5
+ import { Button } from "../ui/button.js";
6
+ import { BugsDialog } from "./BugsDialog.js";
7
+ import { NotificationBell } from "./NotificationBell.js";
8
8
  export function Header({ title }) {
9
9
  const [bugsDialogOpen, setBugsDialogOpen] = useState(false);
10
10
  return (_jsxs(_Fragment, { children: [_jsxs("header", { className: "sticky top-[var(--core-topbar-h,0px)] md:top-0 z-30 flex h-16 items-center justify-between border-b border-border bg-card px-6", children: [_jsx("h1", { className: "text-xl font-semibold text-foreground", children: title }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("div", { className: "relative hidden md:block", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { placeholder: "Zoeken...", className: "w-64 pl-9" })] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: () => setBugsDialogOpen(true), children: [_jsx(Bug, { className: "mr-2 h-4 w-4" }), "Bugs melden"] }), _jsx(NotificationBell, {})] })] }), _jsx(BugsDialog, { open: bugsDialogOpen, onOpenChange: setBugsDialogOpen })] }));
@@ -1,4 +1,4 @@
1
- import type { FlowModule } from "../../types/module";
1
+ import type { FlowModule } from "../../types/module.js";
2
2
  export declare function InstellingenPage({ modules }: {
3
3
  modules: FlowModule[];
4
4
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"InstellingenPage.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/InstellingenPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAC;AAwInE,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,2CAsBtE"}
1
+ {"version":3,"file":"InstellingenPage.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/InstellingenPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAwItE,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,2CAsBtE"}
@@ -3,14 +3,14 @@ import { moduleKey } from "../../types/module.js";
3
3
  import { resolveLevel } from "../../permissions/resolve.js";
4
4
  import { usePermissionSnapshot } from "../../permissions/store.js";
5
5
  import { useState } from "react";
6
- import { Button } from "../ui/button";
7
- import { Input } from "../ui/input";
8
- import { Label } from "../ui/label";
9
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card";
10
- import { supabase } from "../../supabase/client";
6
+ import { Button } from "../ui/button.js";
7
+ import { Input } from "../ui/input.js";
8
+ import { Label } from "../ui/label.js";
9
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card.js";
10
+ import { supabase } from "../../supabase/client.js";
11
11
  import { toast } from "sonner";
12
12
  import { Loader2, User } from "lucide-react";
13
- import { NotificationSettingsCard } from "../instellingen/NotificationSettingsCard";
13
+ import { NotificationSettingsCard } from "../instellingen/NotificationSettingsCard.js";
14
14
  // ─── Profile Card ─────────────────────────────────────────────────────────────
15
15
  function ProfileCard() {
16
16
  const [displayName, setDisplayName] = useState("");
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { useRouter } from "@tanstack/react-router";
4
- import { Button } from "../ui/button";
5
- import { Input } from "../ui/input";
6
- import { Label } from "../ui/label";
7
- import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card";
4
+ import { Button } from "../ui/button.js";
5
+ import { Input } from "../ui/input.js";
6
+ import { Label } from "../ui/label.js";
7
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card.js";
8
8
  import { toast } from "sonner";
9
- import { loginSchema } from "../../lib/validationSchemas";
10
- import { supabase } from "../../supabase/client";
11
- import { readRedirectParam } from "../../auth/redirect";
9
+ import { loginSchema } from "../../lib/validationSchemas.js";
10
+ import { supabase } from "../../supabase/client.js";
11
+ import { readRedirectParam } from "../../auth/redirect.js";
12
12
  export function LoginPage({ redirectTo = "/instellingen" }) {
13
13
  const router = useRouter();
14
14
  const [email, setEmail] = useState("");
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
3
  import { Bell } from "lucide-react";
4
- import { Button } from "../ui/button";
5
- import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
6
- import { supabase } from "../../supabase/client";
7
- import { cn } from "../../lib/utils";
4
+ import { Button } from "../ui/button.js";
5
+ import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover.js";
6
+ import { supabase } from "../../supabase/client.js";
7
+ import { cn } from "../../lib/utils.js";
8
8
  export function NotificationBell() {
9
9
  const [notifications, setNotifications] = useState([]);
10
10
  const [open, setOpen] = useState(false);
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
3
  import { useRouter } from "@tanstack/react-router";
4
- import { Button } from "../ui/button";
5
- import { Input } from "../ui/input";
6
- import { Label } from "../ui/label";
7
- import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card";
4
+ import { Button } from "../ui/button.js";
5
+ import { Input } from "../ui/input.js";
6
+ import { Label } from "../ui/label.js";
7
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card.js";
8
8
  import { toast } from "sonner";
9
- import { supabase } from "../../supabase/client";
9
+ import { supabase } from "../../supabase/client.js";
10
10
  export function ResetWachtwoordPage({ redirectTo, loginPath = "/login" }) {
11
11
  const router = useRouter();
12
12
  const [password, setPassword] = useState("");
@@ -1,4 +1,4 @@
1
- import type { AuthContext } from "../../auth/useAuth";
1
+ import type { AuthContext } from "../../auth/useAuth.js";
2
2
  import type { FlowModule } from "../../types/module.js";
3
3
  export interface SidebarProps {
4
4
  auth: AuthContext;
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/Sidebar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAOjE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO;;;EAI5E;AAmKD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,WAAmB,EACnB,OAAO,EACP,YAAmB,EACnB,cAAc,EACd,OAAO,GACR,EAAE,YAAY,2CA2Dd"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/core/components/layout/Sidebar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,uBAAuB,CAAC;AAOjE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO;;;EAI5E;AAmKD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,WAAmB,EACnB,OAAO,EACP,YAAmB,EACnB,cAAc,EACd,OAAO,GACR,EAAE,YAAY,2CA2Dd"}
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useState } from "react";
3
3
  import { Link, useLocation } from "@tanstack/react-router";
4
4
  import { Settings, LogOut, ChevronDown, Menu } from "lucide-react";
5
- import { Sheet, SheetContent, SheetTitle } from "../ui/sheet";
6
- import { Skeleton } from "../ui/skeleton";
7
- import { cn } from "../../lib/utils";
5
+ import { Sheet, SheetContent, SheetTitle } from "../ui/sheet.js";
6
+ import { Skeleton } from "../ui/skeleton.js";
7
+ import { cn } from "../../lib/utils.js";
8
8
  import { useFooterItems, useModuleListTransform } from "../../extensions/ShellExtensions.js";
9
9
  import { usePermissionFilteredModules } from "../../permissions/useModulePermission.js";
10
10
  import { useLogoSrc } from "../../hooks/useLogoSrc.js";
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
4
4
  import { ChevronDown } from "lucide-react";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const Accordion = AccordionPrimitive.Root;
7
7
  const AccordionItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(AccordionPrimitive.Item, { ref: ref, className: cn("border-b", className), ...props })));
8
8
  AccordionItem.displayName = "AccordionItem";
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
4
- import { cn } from "../../lib/utils";
5
- import { buttonVariants } from "./button";
4
+ import { cn } from "../../lib/utils.js";
5
+ import { buttonVariants } from "./button.js";
6
6
  const AlertDialog = AlertDialogPrimitive.Root;
7
7
  const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
8
8
  const AlertDialogPortal = AlertDialogPrimitive.Portal;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { cva } from "class-variance-authority";
4
- import { cn } from "../../lib/utils";
4
+ import { cn } from "../../lib/utils.js";
5
5
  const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", {
6
6
  variants: {
7
7
  variant: {
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const Avatar = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Root, { ref: ref, className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className), ...props })));
7
7
  Avatar.displayName = AvatarPrimitive.Root.displayName;
8
8
  const AvatarImage = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Image, { ref: ref, className: cn("aspect-square h-full w-full", className), ...props })));
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cva } from "class-variance-authority";
3
- import { cn } from "../../lib/utils";
3
+ import { cn } from "../../lib/utils.js";
4
4
  const badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
5
5
  variants: {
6
6
  variant: {
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import { ChevronRight, MoreHorizontal } from "lucide-react";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const Breadcrumb = React.forwardRef(({ ...props }, ref) => _jsx("nav", { ref: ref, "aria-label": "breadcrumb", ...props }));
7
7
  Breadcrumb.displayName = "Breadcrumb";
8
8
  const BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => (_jsx("ol", { ref: ref, className: cn("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5", className), ...props })));
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import { cva } from "class-variance-authority";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
7
7
  variants: {
8
8
  variant: {
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { DayButton, DayPicker } from "react-day-picker";
3
- import { Button } from "./button";
3
+ import { Button } from "./button.js";
4
4
  declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React.ComponentProps<typeof DayPicker> & {
5
5
  buttonVariant?: React.ComponentProps<typeof Button>["variant"];
6
6
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/core/components/ui/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAA;AAG7E,OAAO,EAAE,MAAM,EAAkB,MAAM,UAAU,CAAA;AAEjD,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,UAAU,EACV,eAAsB,EACtB,aAAuB,EACvB,aAAuB,EACvB,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAC1C,aAAa,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAA;CAC/D,2CAoJA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CA+BxC;AAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/core/components/ui/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAA;AAG7E,OAAO,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAA;AAEpD,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,UAAU,EACV,eAAsB,EACtB,aAAuB,EACvB,aAAuB,EACvB,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAC1C,aAAa,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAA;CAC/D,2CAoJA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CA+BxC;AAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA"}
@@ -3,8 +3,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, } from "lucide-react";
5
5
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
6
- import { cn } from "../../lib/utils";
7
- import { Button, buttonVariants } from "./button";
6
+ import { cn } from "../../lib/utils.js";
7
+ import { Button, buttonVariants } from "./button.js";
8
8
  function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
9
9
  const defaultClassNames = getDefaultClassNames();
10
10
  return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, className: cn("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), captionLayout: captionLayout, formatters: {
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { cn } from "../../lib/utils";
3
+ import { cn } from "../../lib/utils.js";
4
4
  const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("rounded-xl border bg-card text-card-foreground shadow", className), ...props })));
5
5
  Card.displayName = "Card";
6
6
  const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })));
@@ -13,7 +13,7 @@ type CarouselProps = {
13
13
  declare const Carousel: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & CarouselProps & React.RefAttributes<HTMLDivElement>>;
14
14
  declare const CarouselContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
15
15
  declare const CarouselItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
16
- declare const CarouselPrevious: React.ForwardRefExoticComponent<Omit<import("./button").ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
17
- declare const CarouselNext: React.ForwardRefExoticComponent<Omit<import("./button").ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
16
+ declare const CarouselPrevious: React.ForwardRefExoticComponent<Omit<import("./button.js").ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
17
+ declare const CarouselNext: React.ForwardRefExoticComponent<Omit<import("./button.js").ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
18
18
  export { type CarouselApi, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, };
19
19
  //# sourceMappingURL=carousel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/core/components/ui/carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,gBAAgB,EAAE,EACvB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAA;AAM7B,KAAK,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;AAC1C,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAChE,KAAK,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAC/C,KAAK,cAAc,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAE9C,KAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;CACpC,CAAA;AAuBD,QAAA,MAAM,QAAQ,6HAyGb,CAAA;AAGD,QAAA,MAAM,eAAe,6GAmBnB,CAAA;AAGF,QAAA,MAAM,YAAY,6GAmBhB,CAAA;AAGF,QAAA,MAAM,gBAAgB,gKA0BpB,CAAA;AAGF,QAAA,MAAM,YAAY,gKA0BhB,CAAA;AAGF,OAAO,EACL,KAAK,WAAW,EAChB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,CAAA"}
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/core/components/ui/carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,gBAAgB,EAAE,EACvB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAA;AAM7B,KAAK,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;AAC1C,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAChE,KAAK,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAC/C,KAAK,cAAc,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAA;AAE9C,KAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAA;CACpC,CAAA;AAuBD,QAAA,MAAM,QAAQ,6HAyGb,CAAA;AAGD,QAAA,MAAM,eAAe,6GAmBnB,CAAA;AAGF,QAAA,MAAM,YAAY,6GAmBhB,CAAA;AAGF,QAAA,MAAM,gBAAgB,mKA0BpB,CAAA;AAGF,QAAA,MAAM,YAAY,mKA0BhB,CAAA;AAGF,OAAO,EACL,KAAK,WAAW,EAChB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,CAAA"}
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import useEmblaCarousel from "embla-carousel-react";
4
4
  import { ArrowLeft, ArrowRight } from "lucide-react";
5
- import { cn } from "../../lib/utils";
6
- import { Button } from "./button";
5
+ import { cn } from "../../lib/utils.js";
6
+ import { Button } from "./button.js";
7
7
  const CarouselContext = React.createContext(null);
8
8
  function useCarousel() {
9
9
  const context = React.useContext(CarouselContext);
@@ -25,27 +25,27 @@ declare const ChartStyle: ({ id, config }: {
25
25
  config: ChartConfig;
26
26
  }) => import("react/jsx-runtime").JSX.Element | null;
27
27
  declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
28
- declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType> & {
28
+ declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<import("recharts/types/component/DefaultTooltipContent.js").ValueType, import("recharts/types/component/DefaultTooltipContent.js").NameType> & {
29
29
  accessibilityLayer?: boolean;
30
30
  active?: boolean | undefined;
31
31
  includeHidden?: boolean | undefined;
32
- allowEscapeViewBox?: import("recharts/types/util/types").AllowInDimension;
33
- animationDuration?: import("recharts/types/util/types").AnimationDuration;
34
- animationEasing?: import("recharts/types/util/types").AnimationTiming;
35
- content?: import("recharts/types/component/Tooltip").ContentType<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType> | undefined;
36
- coordinate?: Partial<import("recharts/types/util/types").Coordinate>;
32
+ allowEscapeViewBox?: import("recharts/types/util/types.js").AllowInDimension;
33
+ animationDuration?: import("recharts/types/util/types.js").AnimationDuration;
34
+ animationEasing?: import("recharts/types/util/types.js").AnimationTiming;
35
+ content?: import("recharts/types/component/Tooltip.js").ContentType<import("recharts/types/component/DefaultTooltipContent.js").ValueType, import("recharts/types/component/DefaultTooltipContent.js").NameType> | undefined;
36
+ coordinate?: Partial<import("recharts/types/util/types.js").Coordinate>;
37
37
  cursor?: boolean | React.ReactElement | React.SVGProps<SVGElement>;
38
38
  filterNull?: boolean;
39
39
  defaultIndex?: number;
40
40
  isAnimationActive?: boolean;
41
41
  offset?: number;
42
- payloadUniqBy?: import("recharts/types/util/payload/getUniqPayload").UniqueOption<import("recharts/types/component/DefaultTooltipContent").Payload<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType>> | undefined;
43
- position?: Partial<import("recharts/types/util/types").Coordinate>;
44
- reverseDirection?: import("recharts/types/util/types").AllowInDimension;
42
+ payloadUniqBy?: import("recharts/types/util/payload/getUniqPayload.js").UniqueOption<import("recharts/types/component/DefaultTooltipContent.js").Payload<import("recharts/types/component/DefaultTooltipContent.js").ValueType, import("recharts/types/component/DefaultTooltipContent.js").NameType>> | undefined;
43
+ position?: Partial<import("recharts/types/util/types.js").Coordinate>;
44
+ reverseDirection?: import("recharts/types/util/types.js").AllowInDimension;
45
45
  shared?: boolean;
46
46
  trigger?: "hover" | "click";
47
47
  useTranslate3d?: boolean;
48
- viewBox?: import("recharts/types/util/types").CartesianViewBox;
48
+ viewBox?: import("recharts/types/util/types.js").CartesianViewBox;
49
49
  wrapperStyle?: React.CSSProperties;
50
50
  } & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
51
51
  hideLabel?: boolean;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import * as RechartsPrimitive from "recharts";
4
- import { cn } from "../../lib/utils";
4
+ import { cn } from "../../lib/utils.js";
5
5
  // Format: { THEME_NAME: CSS_SELECTOR }
6
6
  const THEMES = { light: "", dark: ".dark" };
7
7
  const ChartContext = React.createContext(null);
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
4
4
  import { Check } from "lucide-react";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const Checkbox = React.forwardRef(({ className, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: cn("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: cn("grid place-content-center text-current"), children: _jsx(Check, { className: "h-4 w-4" }) }) })));
7
7
  Checkbox.displayName = CheckboxPrimitive.Root.displayName;
8
8
  export { Checkbox };
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { Command as CommandPrimitive } from "cmdk";
5
5
  import { Search } from "lucide-react";
6
- import { cn } from "../../lib/utils";
7
- import { Dialog, DialogContent } from "./dialog";
6
+ import { cn } from "../../lib/utils.js";
7
+ import { Dialog, DialogContent } from "./dialog.js";
8
8
  const Command = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive, { ref: ref, className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className), ...props })));
9
9
  Command.displayName = CommandPrimitive.displayName;
10
10
  const CommandDialog = ({ children, ...props }) => {
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
4
4
  import { Check, ChevronRight, Circle } from "lucide-react";
5
- import { cn } from "../../lib/utils";
5
+ import { cn } from "../../lib/utils.js";
6
6
  const ContextMenu = ContextMenuPrimitive.Root;
7
7
  const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
8
8
  const ContextMenuGroup = ContextMenuPrimitive.Group;
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import * as DialogPrimitive from "@radix-ui/react-dialog";
5
5
  import { X } from "lucide-react";
6
- import { cn } from "../../lib/utils";
6
+ import { cn } from "../../lib/utils.js";
7
7
  const Dialog = DialogPrimitive.Root;
8
8
  const DialogTrigger = DialogPrimitive.Trigger;
9
9
  const DialogPortal = DialogPrimitive.Portal;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Drawer as DrawerPrimitive } from "vaul";
4
- import { cn } from "../../lib/utils";
4
+ import { cn } from "../../lib/utils.js";
5
5
  const Drawer = ({ shouldScaleBackground = true, ...props }) => (_jsx(DrawerPrimitive.Root, { shouldScaleBackground: shouldScaleBackground, ...props }));
6
6
  Drawer.displayName = "Drawer";
7
7
  const DrawerTrigger = DrawerPrimitive.Trigger;