@flowselections/dashboard-planner-installatie-techniek 1.0.41 → 1.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export declare function DashboardDagNotities(): import("react").JSX.Element;
2
+ //# sourceMappingURL=DashboardDagNotities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardDagNotities.d.ts","sourceRoot":"","sources":["../../src/components/DashboardDagNotities.tsx"],"names":[],"mappings":"AAYA,wBAAgB,oBAAoB,gCA2EnC"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
4
+ import { ChevronLeft, ChevronRight, StickyNote } from "lucide-react";
5
+ import { supabase, toast } from "@flowselections/core";
6
+ import { dashboardDatum } from "../lib/dashboard-constanten";
7
+ import { dagNaam, knipNotitie, verschuifDag, metPunten, PUNT, MAX_NOTITIE_LENGTE } from "../lib/dashboard-dagnotities";
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ const db = supabase;
10
+ export function DashboardDagNotities() {
11
+ const [datum, setDatum] = useState(null);
12
+ const [tekst, setTekst] = useState("");
13
+ const [bewaren, setBewaren] = useState("");
14
+ const vuil = useRef(false);
15
+ const queryClient = useQueryClient();
16
+ useEffect(() => { setDatum(dashboardDatum()); }, []);
17
+ const { data, isLoading } = useQuery({
18
+ queryKey: ["dashboard-dagnotitie", datum],
19
+ enabled: !!datum,
20
+ queryFn: async () => {
21
+ const { data, error } = await db.from("dashboard_dagnotities").select("tekst, updated_at").eq("datum", datum).maybeSingle();
22
+ if (error)
23
+ throw error;
24
+ return { tekst: typeof data?.tekst === "string" ? data.tekst : "", updated_at: data?.updated_at ?? null };
25
+ },
26
+ });
27
+ useEffect(() => {
28
+ if (data && !vuil.current)
29
+ setTekst(metPunten(data.tekst));
30
+ }, [data]);
31
+ useEffect(() => {
32
+ if (!vuil.current || !datum)
33
+ return;
34
+ const d = datum;
35
+ const t = window.setTimeout(async () => {
36
+ setBewaren("bezig");
37
+ const { error } = await db.from("dashboard_dagnotities").upsert({ datum: d, tekst }, { onConflict: "datum" });
38
+ if (error) {
39
+ setBewaren("");
40
+ toast.error("Notitie kon niet worden bewaard");
41
+ return;
42
+ }
43
+ vuil.current = false;
44
+ setBewaren("bewaard");
45
+ queryClient.setQueryData(["dashboard-dagnotitie", d], { tekst, updated_at: new Date().toISOString() });
46
+ }, 800);
47
+ return () => window.clearTimeout(t);
48
+ }, [tekst, datum, queryClient]);
49
+ const wissel = (n) => { vuil.current = false; setBewaren(""); setTekst(""); setDatum(n); };
50
+ const naam = datum ? dagNaam(datum) : "vandaag";
51
+ const vandaag = datum ? dashboardDatum() : "";
52
+ const knop = "inline-flex h-6 w-6 items-center justify-center rounded-md border border-border text-muted-foreground hover:bg-accent hover:text-foreground";
53
+ return (_jsxs("div", { className: "dashboard-notes flex w-full max-w-sm flex-col gap-1 rounded-xl border border-border bg-card p-2 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("p", { className: "flex items-center gap-1.5 whitespace-nowrap text-xs font-semibold", children: [_jsx(StickyNote, { className: "h-3.5 w-3.5 text-muted-foreground" }), "Notities voor ", naam] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { type: "button", className: knop, "aria-label": "Vorige dag", onClick: () => datum && wissel(verschuifDag(datum, -1)), children: _jsx(ChevronLeft, { className: "h-3.5 w-3.5" }) }), _jsx("button", { type: "button", className: "h-6 rounded-md border border-border px-2 text-[11px] hover:bg-accent disabled:opacity-50", disabled: datum === vandaag, onClick: () => wissel(vandaag), children: "Vandaag" }), _jsx("button", { type: "button", className: "h-6 rounded-md border border-border px-2 text-[11px] hover:bg-accent disabled:opacity-50", disabled: !!datum && datum === verschuifDag(vandaag, 1), onClick: () => wissel(verschuifDag(vandaag, 1)), children: "Morgen" }), _jsx("button", { type: "button", className: knop, "aria-label": "Volgende dag", onClick: () => datum && wissel(verschuifDag(datum, 1)), children: _jsx(ChevronRight, { className: "h-3.5 w-3.5" }) })] })] }), _jsx("textarea", { "aria-label": `Notities voor ${naam}`, value: tekst, disabled: isLoading || !datum, maxLength: MAX_NOTITIE_LENGTE, onChange: (e) => {
54
+ const el = e.target;
55
+ const oud = el.value;
56
+ const pos = el.selectionStart ?? oud.length;
57
+ const nieuw = knipNotitie(oud.replace(/^• ?$/, "") === "" ? "" : metPunten(oud));
58
+ const extra = metPunten(oud.slice(0, pos)).length - oud.slice(0, pos).length;
59
+ vuil.current = true;
60
+ setBewaren("");
61
+ setTekst(nieuw);
62
+ requestAnimationFrame(() => { const c = Math.min(nieuw.length, pos + (nieuw === "" ? -pos : extra)); el.setSelectionRange(c, c); });
63
+ }, onFocus: () => { if (tekst === "")
64
+ setTekst(PUNT); }, placeholder: isLoading ? "Laden…" : `Schrijf een notitie voor ${naam}…`, className: "h-[108px] w-full resize-none overflow-auto rounded-md border border-input bg-background px-2 py-1 text-xs focus:outline-none focus-visible:ring-1 focus-visible:ring-ring" }), _jsx("p", { className: "h-3 text-[10px] leading-3 text-muted-foreground", children: bewaren === "bezig" ? "Bewaren…" : bewaren === "bewaard" ? "Bewaard" : "Gedeeld met alle planners" })] }));
65
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardPlannerInstallatieTechniekPage.d.ts","sourceRoot":"","sources":["../../src/components/DashboardPlannerInstallatieTechniekPage.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAIzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA0FvD,8FAA8F;AAC9F,wBAAgB,uCAAuC,CAAC,EAAE,OAAO,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAO,+BAyGnG;AAED,wBAAgB,wBAAwB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,+BAqF5G"}
1
+ {"version":3,"file":"DashboardPlannerInstallatieTechniekPage.d.ts","sourceRoot":"","sources":["../../src/components/DashboardPlannerInstallatieTechniekPage.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAKzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA0FvD,8FAA8F;AAC9F,wBAAgB,uCAAuC,CAAC,EAAE,OAAO,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAO,+BA0GnG;AAED,wBAAgB,wBAAwB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,+BAqF5G"}
@@ -16,6 +16,7 @@ import { getDashboardData } from "../lib/dashboard-planner-installatie-techniek.
16
16
  import { MODULE_TEGELS, kiesModulePad } from "../lib/dashboard-planner-installatie-techniek.modules";
17
17
  import { DashboardStatistieken, normaliseerStats } from "./DashboardStatistieken";
18
18
  import { DashboardSnelkoppelingen } from "./DashboardSnelkoppelingen";
19
+ import { DashboardDagNotities } from "./DashboardDagNotities";
19
20
  import { dashboardViewportStyles } from "./dashboard-viewport";
20
21
  const ICONEN = {
21
22
  planning: CalendarDays,
@@ -158,7 +159,7 @@ export function DashboardPlannerInstallatieTechniekPage({ modules } = {}) {
158
159
  refetch();
159
160
  toast.success("Dashboard ververst");
160
161
  };
161
- return (_jsxs("main", { ref: mainRef, className: "planner-dashboard px-4 pb-6 pt-2 space-y-4 lg:px-6", children: [_jsx("style", { children: dashboardViewportStyles }), _jsxs("div", { className: "dashboard-toolbar flex flex-wrap items-center justify-between gap-3", children: [_jsxs("p", { className: "min-w-0 text-sm text-muted-foreground", children: ["Welkom terug", profile?.display_name || user?.email ? `, ${profile?.display_name ?? user?.email}` : "", ". Kies een module."] }), _jsx(DashboardSnelkoppelingen, { modules: modules }), _jsxs(Button, { onClick: handleVernieuwen, variant: "outline", size: "sm", className: "h-8 shrink-0 gap-2", children: [_jsx(RefreshCw, { className: `w-4 h-4 ${isFetching ? "animate-spin" : ""}` }), "Vernieuwen"] })] }), isError && (_jsxs("div", { className: "flex items-center gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm", children: [_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive" }), _jsx("span", { className: "text-muted-foreground", children: error instanceof Error && error.message.includes('unauthorized')
162
+ return (_jsxs("main", { ref: mainRef, className: "planner-dashboard px-4 pb-6 pt-2 space-y-4 lg:px-6", children: [_jsx("style", { children: dashboardViewportStyles }), _jsxs("div", { className: "dashboard-toolbar flex flex-wrap items-center justify-between gap-3", children: [_jsxs("p", { className: "min-w-0 text-sm text-muted-foreground", children: ["Welkom terug", profile?.display_name || user?.email ? `, ${profile?.display_name ?? user?.email}` : "", ". Kies een module."] }), _jsx(DashboardSnelkoppelingen, { modules: modules }), _jsxs(Button, { onClick: handleVernieuwen, variant: "outline", size: "sm", className: "h-8 shrink-0 gap-2", children: [_jsx(RefreshCw, { className: `w-4 h-4 ${isFetching ? "animate-spin" : ""}` }), "Vernieuwen"] }), _jsx(DashboardDagNotities, {})] }), isError && (_jsxs("div", { className: "flex items-center gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm", children: [_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive" }), _jsx("span", { className: "text-muted-foreground", children: error instanceof Error && error.message.includes('unauthorized')
162
163
  ? 'Je sessie is verlopen — log opnieuw in.'
163
164
  : 'Kon de aantallen niet laden — probeer het opnieuw met Vernieuwen.' })] })), _jsx(DashboardModuleNavigatie, { kpis: dashboard.kpis, loading: isLoading }), _jsx(DashboardStatistieken, { stats: normaliseerStats(data?.stats), wekenTerug: wekenTerug, onWeek: setWekenTerug, loading: isLoading })] }));
164
165
  }
@@ -1,2 +1,2 @@
1
- export declare const dashboardViewportStyles = "\n.planner-dashboard {\n --dashboard-gap: 12px;\n --funnel-blue-1: #3b82f6; --funnel-blue-2: #2563eb; --funnel-blue-3: #1d4ed8;\n --funnel-navy: #1e3a8a;\n --funnel-gray-1: #1e40af; --funnel-gray-2: #1e3a8a; --funnel-gray-3: #172554; --funnel-gray-4: #172554; --funnel-gray-5: #0f1d4a;\n --funnel-paid: #1e40af; --funnel-unpaid: #172554;\n --funnel-extra: #5b21b6;\n}\n.dark .planner-dashboard, .planner-dashboard.dark {\n --funnel-blue-1: #60a5fa; --funnel-blue-2: #3b82f6; --funnel-blue-3: #2563eb;\n --funnel-navy: #3b5bdb;\n --funnel-gray-1: #4f6fe0; --funnel-gray-2: #3b5bdb; --funnel-gray-3: #3451c7; --funnel-gray-4: #2f47b3; --funnel-gray-5: #2a3f9f;\n --funnel-paid: #4f6fe0; --funnel-unpaid: #3451c7;\n --funnel-extra: #8b5cf6;\n}\n.dashboard-shortcuts { max-width: 100%; }\n.dashboard-shortcut-items { display: flex; flex-wrap: wrap; align-items: stretch; gap: 6px; }\n.dashboard-shortcut-items > div { display: flex; min-width: 0; max-width: 100%; }\n.dashboard-shortcut-items a { width: 100%; height: 100%; min-height: 32px; max-width: 100%; white-space: normal; overflow-wrap: anywhere; padding: 5px 28px 5px 10px; line-height: 16px; border: 1px dashed color-mix(in oklab, var(--muted-foreground) 45%, transparent); }\n.dashboard-shortcut-items a:hover { border-color: color-mix(in oklab, var(--muted-foreground) 85%, transparent); }\n.dashboard-hours-heading { flex-wrap: wrap; }\n@media (max-width: 1023px) {\n .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; }\n .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }\n .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1 / -1; grid-row: 2; }\n .dashboard-toolbar > button { grid-column: 2; grid-row: 1; }\n .dashboard-shortcuts { grid-column: 1 / -1; flex-wrap: wrap; }\n .dashboard-shortcut-items { flex-basis: 100%; }\n}\n\n@media (min-width: 1024px) {\n .planner-dashboard {\n display: flex;\n flex-direction: column;\n gap: var(--dashboard-gap);\n min-height: var(--dashboard-height, auto);\n padding-bottom: 12px;\n }\n .planner-dashboard > * { margin-block: 0; }\n .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; }\n .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }\n .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1 / -1; grid-row: 2; }\n .dashboard-toolbar > button { grid-column: 2; grid-row: 1; }\n .dashboard-shortcuts { padding-block: 0; }\n .dashboard-shortcut-items a { font-size: 11px; line-height: 14px; }\n .dashboard-module-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }\n .dashboard-module-content { min-height: 156px; padding: 12px; }\n .dashboard-module-icon { width: 40px; height: 40px; border-radius: 12px; }\n .dashboard-module-icon svg { width: 24px; height: 24px; }\n .dashboard-module-title { margin-top: 8px; font-size: 14px; overflow-wrap: anywhere; }\n .dashboard-module-count { padding-top: 8px; }\n .dashboard-stats { flex: 1; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-stats > * { margin-block: 0; }\n .dashboard-stats-grid { flex: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }\n .dashboard-stat-content { padding: 12px; }\n .dashboard-stat-content > * { margin-block: 0; }\n .dashboard-stat-content > * + * { margin-top: 8px; }\n .dashboard-financial > div > * { margin-block: 0; }\n .dashboard-financial > div > * + * { margin-top: 8px; }\n .dashboard-financial > div > div > * { margin-block: 0; }\n .dashboard-financial > div > div > * + * { margin-top: 4px; }\n .dashboard-financial .dashboard-offers { padding-top: 10px; }\n .dashboard-financial .dashboard-amount { font-size: 26px; line-height: 32px; }\n .dashboard-hours-content { height: 100%; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-hours-content > * { margin-block: 0; }\n .dashboard-hours-content > dl { flex-shrink: 0; padding-top: 8px; gap: 8px; }\n .dashboard-hours { flex: 1; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-hours > * { margin-block: 0; }\n .dashboard-hours-heading { flex-wrap: wrap; }\n .dashboard-hours-chart { height: 160px; flex: 1; min-height: 130px; }\n .dashboard-funnel-chart { max-height: 200px; }\n .dashboard-funnel-tip { min-height: 48px; }\n .dashboard-stats h2 { font-size: 16px; line-height: 20px; }\n .dashboard-funnel-loading { height: 240px; }\n}\n\n@media (min-width: 1024px) and (max-height: 800px) {\n .planner-dashboard { --dashboard-gap: 8px; }\n .dashboard-module-content { min-height: 112px; padding: 8px; }\n .dashboard-module-icon { width: 32px; height: 32px; }\n .dashboard-module-icon svg { width: 20px; height: 20px; }\n .dashboard-module-title { margin-top: 0; }\n .dashboard-module-count { padding-top: 4px; }\n .dashboard-module-count > div { padding: 3px 8px; }\n .dashboard-module-count > div > span:first-child { font-size: 18px; line-height: 20px; }\n .dashboard-stat-content { padding: 10px; }\n .dashboard-stat-content > * + * { margin-top: 4px; }\n .dashboard-stat-content > div:first-child { min-height: 28px; }\n .dashboard-financial > div > * + * { margin-top: 4px; }\n .dashboard-financial > div:first-child > div { width: 28px; height: 28px; }\n .dashboard-financial .dashboard-amount { font-size: 24px; line-height: 28px; }\n .dashboard-financial .dashboard-offers { padding-top: 8px; }\n .dashboard-funnel-chart { max-height: 130px; }\n .dashboard-hours-chart { height: 140px; }\n}\n\n@media (min-width: 1024px) and (max-height: 740px) {\n .dashboard-module-icon { width: 24px; height: 24px; }\n .dashboard-module-icon svg { width: 16px; height: 16px; }\n .dashboard-module-content { min-height: 104px; }\n .dashboard-financial .dashboard-offers dl { gap: 4px; }\n .dashboard-stat-content { padding: 8px; }\n .dashboard-financial > div > * + * { margin-top: 2px; }\n .dashboard-financial > div > div > * + * { margin-top: 2px; }\n .dashboard-hours-content { gap: 4px; }\n .dashboard-hours-chart { min-height: 116px; }\n .dashboard-funnel-chart { max-height: 118px; }\n}";
1
+ export declare const dashboardViewportStyles = "\n.planner-dashboard {\n --dashboard-gap: 12px;\n --funnel-blue-1: #3b82f6; --funnel-blue-2: #2563eb; --funnel-blue-3: #1d4ed8;\n --funnel-navy: #1e3a8a;\n --funnel-gray-1: #1e40af; --funnel-gray-2: #1e3a8a; --funnel-gray-3: #172554; --funnel-gray-4: #172554; --funnel-gray-5: #0f1d4a;\n --funnel-paid: #1e40af; --funnel-unpaid: #172554;\n --funnel-extra: #5b21b6;\n}\n.dark .planner-dashboard, .planner-dashboard.dark {\n --funnel-blue-1: #60a5fa; --funnel-blue-2: #3b82f6; --funnel-blue-3: #2563eb;\n --funnel-navy: #3b5bdb;\n --funnel-gray-1: #4f6fe0; --funnel-gray-2: #3b5bdb; --funnel-gray-3: #3451c7; --funnel-gray-4: #2f47b3; --funnel-gray-5: #2a3f9f;\n --funnel-paid: #4f6fe0; --funnel-unpaid: #3451c7;\n --funnel-extra: #8b5cf6;\n}\n.dashboard-shortcuts { max-width: 100%; }\n.dashboard-shortcut-items { display: flex; flex-wrap: wrap; align-items: stretch; gap: 6px; }\n.dashboard-shortcut-items > div { display: flex; min-width: 0; max-width: 100%; }\n.dashboard-shortcut-items a { width: 100%; height: 100%; min-height: 32px; max-width: 100%; white-space: normal; overflow-wrap: anywhere; padding: 5px 28px 5px 10px; line-height: 16px; border: 1px dashed color-mix(in oklab, var(--muted-foreground) 45%, transparent); }\n.dashboard-shortcut-items a:hover { border-color: color-mix(in oklab, var(--muted-foreground) 85%, transparent); }\n.dashboard-hours-heading { flex-wrap: wrap; }\n@media (max-width: 1023px) {\n .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; }\n .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }\n .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1 / -1; grid-row: 2; }\n .dashboard-toolbar > button { grid-column: 2; grid-row: 1; }\n .dashboard-toolbar > .dashboard-notes { grid-column: 1 / -1; grid-row: 3; max-width: none; }\n .dashboard-shortcuts { grid-column: 1 / -1; flex-wrap: wrap; }\n .dashboard-shortcut-items { flex-basis: 100%; }\n}\n\n@media (min-width: 1024px) {\n .planner-dashboard {\n display: flex;\n flex-direction: column;\n gap: var(--dashboard-gap);\n min-height: var(--dashboard-height, auto);\n padding-bottom: 12px;\n }\n .planner-dashboard > * { margin-block: 0; }\n .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px 12px; align-items: start; }\n .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }\n .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1; grid-row: 2; }\n .dashboard-toolbar > button { grid-column: 2; grid-row: 1 / span 2; justify-self: end; align-self: start; }\n .dashboard-toolbar > .dashboard-notes { grid-column: 3; grid-row: 1 / span 2; width: 380px; max-width: none; }\n .dashboard-shortcuts { padding-block: 0; }\n .dashboard-shortcut-items a { font-size: 11px; line-height: 14px; }\n .dashboard-module-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }\n .dashboard-module-content { min-height: 156px; padding: 12px; }\n .dashboard-module-icon { width: 40px; height: 40px; border-radius: 12px; }\n .dashboard-module-icon svg { width: 24px; height: 24px; }\n .dashboard-module-title { margin-top: 8px; font-size: 14px; overflow-wrap: anywhere; }\n .dashboard-module-count { padding-top: 8px; }\n .dashboard-stats { flex: 1; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-stats > * { margin-block: 0; }\n .dashboard-stats-grid { flex: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }\n .dashboard-stat-content { padding: 12px; }\n .dashboard-stat-content > * { margin-block: 0; }\n .dashboard-stat-content > * + * { margin-top: 8px; }\n .dashboard-financial > div > * { margin-block: 0; }\n .dashboard-financial > div > * + * { margin-top: 8px; }\n .dashboard-financial > div > div > * { margin-block: 0; }\n .dashboard-financial > div > div > * + * { margin-top: 4px; }\n .dashboard-financial .dashboard-offers { padding-top: 10px; }\n .dashboard-financial .dashboard-amount { font-size: 26px; line-height: 32px; }\n .dashboard-hours-content { height: 100%; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-hours-content > * { margin-block: 0; }\n .dashboard-hours-content > dl { flex-shrink: 0; padding-top: 8px; gap: 8px; }\n .dashboard-hours { flex: 1; display: flex; flex-direction: column; gap: 8px; }\n .dashboard-hours > * { margin-block: 0; }\n .dashboard-hours-heading { flex-wrap: wrap; }\n .dashboard-hours-chart { height: 160px; flex: 1; min-height: 116px; }\n .dashboard-funnel-chart { max-height: 200px; }\n .dashboard-funnel-tip { min-height: 48px; }\n .dashboard-stats h2 { font-size: 16px; line-height: 20px; }\n .dashboard-funnel-loading { height: 240px; }\n}\n\n@media (min-width: 1024px) and (max-height: 800px) {\n .planner-dashboard { --dashboard-gap: 8px; }\n .dashboard-module-content { min-height: 112px; padding: 8px; }\n .dashboard-module-icon { width: 32px; height: 32px; }\n .dashboard-module-icon svg { width: 20px; height: 20px; }\n .dashboard-module-title { margin-top: 0; }\n .dashboard-module-count { padding-top: 4px; }\n .dashboard-module-count > div { padding: 3px 8px; }\n .dashboard-module-count > div > span:first-child { font-size: 18px; line-height: 20px; }\n .dashboard-stat-content { padding: 10px; }\n .dashboard-stat-content > * + * { margin-top: 4px; }\n .dashboard-stat-content > div:first-child { min-height: 28px; }\n .dashboard-financial > div > * + * { margin-top: 4px; }\n .dashboard-financial > div:first-child > div { width: 28px; height: 28px; }\n .dashboard-financial .dashboard-amount { font-size: 24px; line-height: 28px; }\n .dashboard-financial .dashboard-offers { padding-top: 8px; }\n .dashboard-funnel-chart { max-height: 130px; }\n .dashboard-hours-chart { height: 140px; }\n}\n\n@media (min-width: 1024px) and (max-height: 740px) {\n .dashboard-module-icon { width: 24px; height: 24px; }\n .dashboard-module-icon svg { width: 16px; height: 16px; }\n .dashboard-module-content { min-height: 104px; }\n .dashboard-financial .dashboard-offers dl { gap: 4px; }\n .dashboard-stat-content { padding: 8px; }\n .dashboard-financial > div > * + * { margin-top: 2px; }\n .dashboard-financial > div > div > * + * { margin-top: 2px; }\n .dashboard-hours-content { gap: 4px; }\n .dashboard-hours-chart { min-height: 116px; }\n .dashboard-funnel-chart { max-height: 118px; }\n}";
2
2
  //# sourceMappingURL=dashboard-viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-viewport.d.ts","sourceRoot":"","sources":["../../src/components/dashboard-viewport.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,k9LA4GlC,CAAC"}
1
+ {"version":3,"file":"dashboard-viewport.d.ts","sourceRoot":"","sources":["../../src/components/dashboard-viewport.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,uuMA8GlC,CAAC"}
@@ -25,6 +25,7 @@ export const dashboardViewportStyles = `
25
25
  .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }
26
26
  .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1 / -1; grid-row: 2; }
27
27
  .dashboard-toolbar > button { grid-column: 2; grid-row: 1; }
28
+ .dashboard-toolbar > .dashboard-notes { grid-column: 1 / -1; grid-row: 3; max-width: none; }
28
29
  .dashboard-shortcuts { grid-column: 1 / -1; flex-wrap: wrap; }
29
30
  .dashboard-shortcut-items { flex-basis: 100%; }
30
31
  }
@@ -38,10 +39,11 @@ export const dashboardViewportStyles = `
38
39
  padding-bottom: 12px;
39
40
  }
40
41
  .planner-dashboard > * { margin-block: 0; }
41
- .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; }
42
+ .dashboard-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px 12px; align-items: start; }
42
43
  .dashboard-toolbar > p { grid-column: 1; grid-row: 1; }
43
- .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1 / -1; grid-row: 2; }
44
- .dashboard-toolbar > button { grid-column: 2; grid-row: 1; }
44
+ .dashboard-toolbar > .dashboard-shortcuts { grid-column: 1; grid-row: 2; }
45
+ .dashboard-toolbar > button { grid-column: 2; grid-row: 1 / span 2; justify-self: end; align-self: start; }
46
+ .dashboard-toolbar > .dashboard-notes { grid-column: 3; grid-row: 1 / span 2; width: 380px; max-width: none; }
45
47
  .dashboard-shortcuts { padding-block: 0; }
46
48
  .dashboard-shortcut-items a { font-size: 11px; line-height: 14px; }
47
49
  .dashboard-module-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@@ -68,7 +70,7 @@ export const dashboardViewportStyles = `
68
70
  .dashboard-hours { flex: 1; display: flex; flex-direction: column; gap: 8px; }
69
71
  .dashboard-hours > * { margin-block: 0; }
70
72
  .dashboard-hours-heading { flex-wrap: wrap; }
71
- .dashboard-hours-chart { height: 160px; flex: 1; min-height: 130px; }
73
+ .dashboard-hours-chart { height: 160px; flex: 1; min-height: 116px; }
72
74
  .dashboard-funnel-chart { max-height: 200px; }
73
75
  .dashboard-funnel-tip { min-height: 48px; }
74
76
  .dashboard-stats h2 { font-size: 16px; line-height: 20px; }