@spacesync/client 0.1.4 → 0.1.5
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.
- package/dist/analog-clock-picker.js +3 -2
- package/dist/booking-schedule-calendars.js +3 -2
- package/dist/booking-schedule-calendars.js.map +1 -1
- package/dist/chat-stick-to-bottom.js +2 -1
- package/dist/chat-stick-to-bottom.js.map +1 -1
- package/dist/{chunk-R4L4TDT3.js → chunk-3DI67RMP.js} +9 -13
- package/dist/chunk-3DI67RMP.js.map +1 -0
- package/dist/chunk-DC4QH6W2.js +17 -0
- package/dist/chunk-DC4QH6W2.js.map +1 -0
- package/dist/{chunk-HCQSED6Q.js → chunk-FVKJSPW4.js} +3 -3
- package/dist/{chunk-HCQSED6Q.js.map → chunk-FVKJSPW4.js.map} +1 -1
- package/dist/file-viewer-dialog.js +2 -1
- package/dist/file-viewer-dialog.js.map +1 -1
- package/dist/floor-switcher.js +2 -1
- package/dist/floor-switcher.js.map +1 -1
- package/dist/layout-canvas-view.js +2 -1
- package/dist/layout-canvas-view.js.map +1 -1
- package/dist/page-list-loading.d.ts +20 -0
- package/dist/page-list-loading.js +79 -0
- package/dist/page-list-loading.js.map +1 -0
- package/dist/platform-support-message-composer.js +2 -1
- package/dist/platform-support-message-composer.js.map +1 -1
- package/dist/ui.js +2 -1
- package/package.json +10 -9
- package/dist/chunk-R4L4TDT3.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export { AnalogClockPicker } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { AnalogClockPicker } from './chunk-FVKJSPW4.js';
|
|
2
|
+
import './chunk-3DI67RMP.js';
|
|
3
3
|
import './chunk-RV5PMZYZ.js';
|
|
4
4
|
import './chunk-L65F4EMK.js';
|
|
5
5
|
import './chunk-PBNBLCC2.js';
|
|
6
6
|
import './chunk-VVXGQKN7.js';
|
|
7
7
|
import './chunk-7YCAAP43.js';
|
|
8
|
+
import './chunk-DC4QH6W2.js';
|
|
8
9
|
import './chunk-LUB7QWGU.js';
|
|
9
10
|
import './chunk-VHINHHZQ.js';
|
|
10
11
|
import './chunk-FCY5FYJB.js';
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { AnalogClockPicker } from './chunk-
|
|
2
|
-
import { formatTimeForDisplay } from './chunk-
|
|
1
|
+
import { AnalogClockPicker } from './chunk-FVKJSPW4.js';
|
|
2
|
+
import { formatTimeForDisplay } from './chunk-3DI67RMP.js';
|
|
3
3
|
import './chunk-RV5PMZYZ.js';
|
|
4
4
|
import './chunk-L65F4EMK.js';
|
|
5
5
|
import './chunk-PBNBLCC2.js';
|
|
6
6
|
import './chunk-VVXGQKN7.js';
|
|
7
7
|
import './chunk-7YCAAP43.js';
|
|
8
|
+
import './chunk-DC4QH6W2.js';
|
|
8
9
|
import './chunk-LUB7QWGU.js';
|
|
9
10
|
import './chunk-VHINHHZQ.js';
|
|
10
11
|
import './chunk-FCY5FYJB.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/booking-schedule.ts","../src/booking/booking-schedule-calendars.tsx"],"names":[],"mappings":"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","file":"booking-schedule-calendars.js","sourcesContent":["/**\n * Date / schedule helpers used by booking-schedule calendars.\n * Copied from `@spacesync/client/domain/lib/pricing` so the client has no package dependency.\n */\n\nexport type RepeatType = \"none\" | \"daily\" | \"weekly\" | \"monthly\";\nexport type BookingMode = \"slots\" | \"schedule\";\n\n/** Editor state for slot / schedule / daily / item shaped tiers */\nexport interface BookingState {\n slotCount: number;\n bookingDate: string;\n bookingMode: BookingMode;\n scheduleDate: string;\n scheduleTime: string;\n repeatType: RepeatType;\n repeatEveryDays: number;\n repeatEveryWeeks: number;\n repeatOnDays: string[];\n repeatEveryMonths: number;\n repeatUntilDate: string;\n startDate: string;\n endDate: string;\n monthFrom: string;\n monthTo: string;\n weekFrom: string;\n weekCount: number;\n itemQuantity: number;\n /** Daily per-day tiers: single-day booking when true (endDate = startDate + 1 day). */\n oneDayBooking?: boolean;\n}\n\nexport const PRICING_TODAY = new Date().toISOString().split(\"T\")[0];\n\n/** First full month available: next month if today is past the 1st, else current month. */\nexport function computeMinMonth(): string {\n const d = new Date();\n if (d.getDate() === 1) {\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}`;\n }\n const n = new Date(d.getFullYear(), d.getMonth() + 1, 1);\n return `${n.getFullYear()}-${String(n.getMonth() + 1).padStart(2, \"0\")}`;\n}\n\n/** First full week available: next Monday unless today is already Monday. */\nexport function computeMinWeekStart(): string {\n const d = new Date();\n const day = d.getDay();\n if (day === 1) return d.toISOString().split(\"T\")[0];\n const skip = day === 0 ? 1 : 8 - day;\n d.setDate(d.getDate() + skip);\n return d.toISOString().split(\"T\")[0];\n}\n\nexport const MIN_MONTH =\n computeMinMonth() ||\n `${new Date().getFullYear()}-${String(new Date().getMonth() + 2).padStart(2, \"0\")}`;\nexport const MIN_WEEK_START = computeMinWeekStart() || PRICING_TODAY;\n\n/** True when today is not the 1st — meaning the current month is partial. */\nexport const IS_PARTIAL_MONTH = new Date().getDate() !== 1;\n\nexport function monthLabel(ym: string): string {\n const [y, m] = ym.split(\"-\").map(Number);\n return new Date(y, m - 1, 1).toLocaleDateString(\"en-US\", { month: \"long\", year: \"numeric\" });\n}\n\nexport function monthCount(from: string, to: string): number {\n if (!from || !to || !from.includes(\"-\") || !to.includes(\"-\")) return 0;\n const [fy, fm] = from.split(\"-\").map(Number);\n const [ty, tm] = to.split(\"-\").map(Number);\n return (ty - fy) * 12 + (tm - fm) + 1;\n}\n\nexport function weekRangeLabel(weekFrom: string, weekCount: number): string {\n if (!weekFrom || isNaN(new Date(weekFrom).getTime())) return \"—\";\n const end = new Date(weekFrom);\n end.setDate(end.getDate() + weekCount * 7 - 1);\n const s = new Date(weekFrom).toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\" });\n const e = end.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" });\n return `${s} – ${e}`;\n}\n\nfunction parseDateOnly(date: string): Date {\n const [y, m, d] = date.split(\"-\").map(Number);\n return new Date(y, m - 1, d);\n}\n\nfunction formatDateOnly(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${day}`;\n}\n\nexport function diffDays(a: string, b: string): number {\n const da = parseDateOnly(a);\n const db = parseDateOnly(b);\n return Math.max(0, Math.round((db.getTime() - da.getTime()) / 86_400_000));\n}\n\nexport function addDays(date: string, days: number): string {\n const d = parseDateOnly(date);\n d.setDate(d.getDate() + days);\n return formatDateOnly(d);\n}\n","import { useEffect, useState } from \"react\";\nimport { ChevronLeft, ChevronRight, Info } from \"lucide-react\";\nimport {\n IS_PARTIAL_MONTH,\n MIN_MONTH,\n MIN_WEEK_START,\n PRICING_TODAY,\n addDays,\n diffDays,\n monthCount,\n monthLabel,\n weekRangeLabel,\n type BookingState,\n} from \"../lib/booking-schedule\";\nimport { AnalogClockPicker } from \"./analog-clock-picker\";\nimport { formatTimeForDisplay } from \"../ui/time-field\";\nimport { cn } from \"../ui\";\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nfunction dayStr(d: Date): string {\n return d.toISOString().split(\"T\")[0];\n}\n\n/** Returns dates for a Mon-anchored calendar grid (5 or 6 rows). */\nfunction getCalendarGrid(year: number, month: number): Date[] {\n const firstDay = new Date(year, month, 1);\n const dow = firstDay.getDay();\n const startOffset = dow === 0 ? -6 : 1 - dow;\n const days: Date[] = [];\n for (let i = 0; i < 35; i++) {\n days.push(new Date(year, month, 1 + startOffset + i));\n }\n if (days[days.length - 1] < new Date(year, month + 1, 0)) {\n for (let i = 35; i < 42; i++) {\n days.push(new Date(year, month, 1 + startOffset + i));\n }\n }\n return days;\n}\n\nexport function ScheduleFieldLabel({ children }: { children: React.ReactNode }) {\n return <label className=\"text-xs font-medium text-muted-foreground\">{children}</label>;\n}\n\nexport function ScheduleInfoBanner({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex items-start gap-2 rounded-xl border border-blue-100 bg-blue-50 px-3 py-2.5 dark:border-blue-900/50 dark:bg-blue-950/40\">\n <Info size={13} className=\"mt-0.5 shrink-0 text-blue-400\" />\n <span className=\"text-xs leading-relaxed text-blue-700 dark:text-blue-400\">{children}</span>\n </div>\n );\n}\n\nexport function ScheduleStepper({\n value,\n min = 1,\n max = 100,\n onChange,\n}: {\n value: number;\n min?: number;\n max?: number;\n onChange: (v: number) => void;\n}) {\n return (\n <div className=\"flex w-32 items-center overflow-hidden rounded-xl border border-border bg-card\">\n <button\n type=\"button\"\n onClick={() => onChange(Math.max(min, value - 1))}\n className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border text-sm text-muted-foreground hover:bg-accent\"\n >\n −\n </button>\n <span className=\"flex-1 text-center text-sm font-medium text-foreground\">{value}</span>\n <button\n type=\"button\"\n onClick={() => onChange(Math.min(max, value + 1))}\n className=\"flex h-9 w-9 shrink-0 items-center justify-center border-l border-border text-sm text-muted-foreground hover:bg-accent\"\n >\n +\n </button>\n </div>\n );\n}\n\nexport function WeekCalendarPicker({\n weekFrom,\n onChange,\n flat = false,\n}: {\n weekFrom: string;\n onChange: (v: string) => void;\n flat?: boolean;\n}) {\n const initDate = new Date((weekFrom || MIN_WEEK_START) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [hoverMon, setHoverMon] = useState<string | null>(null);\n\n const days = getCalendarGrid(calYear, calMonth);\n const minDate = new Date((MIN_WEEK_START || PRICING_TODAY) + \"T00:00:00\");\n const selectedMonStr = weekFrom || null;\n const hoverMonStr = hoverMon;\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) weeks.push(days.slice(i, i + 7));\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n {weeks.map((week, wi) => {\n const mondayDate = week[0];\n const monStr = dayStr(mondayDate);\n const isSelectable = mondayDate >= minDate;\n const isSelected = monStr === selectedMonStr;\n const isHovered = monStr === hoverMonStr && isSelectable && !isSelected;\n\n return (\n <div\n key={wi}\n className={`flex cursor-pointer overflow-hidden rounded-xl transition-colors\n ${isSelected ? \"bg-blue-100\" : isHovered ? \"bg-blue-50\" : isSelectable ? \"hover:bg-accent\" : \"cursor-not-allowed\"}`}\n onMouseEnter={() => isSelectable && setHoverMon(monStr)}\n onMouseLeave={() => setHoverMon(null)}\n onClick={() => isSelectable && onChange(monStr)}\n >\n {week.map((d, di) => {\n const isCurrentMonth = d.getMonth() === calMonth;\n const isMon = di === 0;\n const isSelectedMon = isSelected && isMon;\n\n return (\n <div key={di} className=\"flex h-8 flex-1 items-center justify-center\">\n <span\n className={`\n flex h-7 w-7 items-center justify-center rounded-full text-[11px] transition-colors\n ${isSelectedMon ? \"bg-blue-500 font-semibold text-white\" : \"\"}\n ${!isSelectedMon && isSelected ? \"text-blue-700 dark:text-blue-400\" : \"\"}\n ${!isSelected && isSelectable && isCurrentMonth ? \"text-muted-foreground\" : \"\"}\n ${!isSelectable && isCurrentMonth ? \"text-muted-foreground/60\" : \"\"}\n ${!isCurrentMonth ? \"text-muted-foreground/60\" : \"\"}\n `}\n >\n {d.getDate()}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">Click any row to select that week</p>\n </div>\n );\n}\n\nexport function MonthRangeCalendar({\n monthFrom,\n monthTo,\n onChange,\n flat = false,\n}: {\n monthFrom: string;\n monthTo: string;\n onChange: (from: string, to: string) => void;\n flat?: boolean;\n}) {\n const initYear = monthFrom ? parseInt(monthFrom.split(\"-\")[0], 10) : new Date().getFullYear();\n const [calYear, setCalYear] = useState(initYear);\n const [phase, setPhase] = useState<\"from\" | \"to\">(\"from\");\n const [hoverYm, setHoverYm] = useState<string | null>(null);\n\n const ABBR = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const toYm = (y: number, m: number) => `${y}-${String(m + 1).padStart(2, \"0\")}`;\n const minYm = MIN_MONTH || `${new Date().getFullYear()}-01`;\n\n const [dispFrom, dispTo] = (() => {\n if (phase === \"to\" && hoverYm) {\n if (hoverYm >= monthFrom) return [monthFrom, hoverYm];\n return [hoverYm, hoverYm];\n }\n return [monthFrom, monthTo];\n })();\n const isSingle = dispFrom === dispTo;\n\n const handleClick = (ymStr: string) => {\n if (ymStr < minYm) return;\n if (phase === \"from\") {\n onChange(ymStr, ymStr);\n setPhase(\"to\");\n } else if (ymStr >= monthFrom) {\n onChange(monthFrom, ymStr);\n setPhase(\"from\");\n } else {\n onChange(ymStr, ymStr);\n }\n };\n\n const actualCount = monthCount(monthFrom, monthTo);\n const previewCount = monthCount(dispFrom, dispTo);\n\n return (\n <div\n className={cn(\n \"select-none\",\n flat ? \"flex flex-col gap-5\" : \"overflow-hidden rounded-2xl border border-border bg-card\",\n )}\n >\n <div className={cn(\"flex items-center justify-between\", flat ? \"px-1\" : \"px-4 pb-2 pt-4\")}>\n <button\n type=\"button\"\n onClick={() => setCalYear((y) => y - 1)}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">{calYear}</span>\n <button\n type=\"button\"\n onClick={() => setCalYear((y) => y + 1)}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div\n className={cn(\n \"flex items-center gap-2 text-[11px] font-medium transition-colors\",\n flat\n ? phase === \"to\"\n ? \"text-blue-600 dark:text-blue-400\"\n : \"text-muted-foreground\"\n : cn(\n \"px-4 py-2 text-[10px]\",\n phase === \"to\"\n ? \"bg-blue-50 text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\"\n : \"bg-transparent text-muted-foreground\",\n ),\n )}\n >\n {phase === \"from\" ? (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n Click a month to set the start\n </>\n ) : (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-blue-500\" />\n Now click to set the end month\n <button\n type=\"button\"\n onClick={() => {\n onChange(monthFrom, monthFrom);\n setPhase(\"to\");\n }}\n className=\"ml-auto text-[10px] text-blue-400 underline underline-offset-2 hover:text-blue-600 dark:text-blue-400\"\n >\n Reset\n </button>\n </>\n )}\n </div>\n\n <div\n className={cn(\"grid grid-cols-4\", flat ? \"gap-2 py-1\" : \"px-2 pb-3 pt-1\")}\n style={flat ? undefined : { gap: 0 }}\n >\n {ABBR.map((label, i) => {\n const ymStr = toYm(calYear, i);\n const disabled = ymStr < minYm;\n const inRange = !disabled && ymStr >= dispFrom && ymStr <= dispTo;\n const isFrom = ymStr === dispFrom;\n const isTo = ymStr === dispTo;\n const showStrip = inRange && !isSingle;\n const sLeft = isFrom ? \"left-1/2\" : \"left-0\";\n const sRight = isTo ? \"right-1/2\" : \"right-0\";\n const filled = (isFrom || isTo) && !disabled;\n\n return (\n <div\n key={i}\n className={cn(\n \"relative\",\n flat ? \"h-14\" : \"h-12\",\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\",\n )}\n onMouseEnter={() => !disabled && setHoverYm(ymStr)}\n onMouseLeave={() => setHoverYm(null)}\n onClick={() => handleClick(ymStr)}\n >\n {showStrip ? (\n <div className={`absolute bottom-1.5 top-1.5 bg-blue-100 ${sLeft} ${sRight}`} />\n ) : null}\n <div\n className={cn(\n \"relative z-10 flex w-full items-center justify-center\",\n flat ? \"h-14\" : \"h-12\",\n )}\n >\n <span\n className={`flex h-9 w-9 items-center justify-center rounded-full text-xs font-medium transition-all duration-100\n ${\n filled\n ? \"bg-blue-500 text-white shadow-md shadow-blue-200\"\n : inRange\n ? \"text-blue-700 dark:text-blue-400\"\n : !disabled\n ? \"text-muted-foreground hover:bg-accent\"\n : \"text-muted-foreground/60\"\n }`}\n >\n {label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n\n <div\n className={cn(\n \"flex items-center justify-between transition-colors\",\n flat\n ? \"border-t border-border/70 pt-4 text-xs\"\n : cn(\n \"border-t px-4 py-2.5\",\n phase === \"from\" && actualCount > 0 ? \"border-border bg-muted\" : \"border-transparent\",\n ),\n )}\n >\n {phase === \"from\" && actualCount > 0 ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {monthLabel(monthFrom)} → {monthLabel(monthTo)}\n </span>\n <span className=\"rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {actualCount} month{actualCount !== 1 ? \"s\" : \"\"}\n </span>\n </>\n ) : phase === \"to\" ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {hoverYm && hoverYm >= monthFrom\n ? `${monthLabel(monthFrom)} → ${monthLabel(hoverYm)}`\n : `Start: ${monthLabel(monthFrom)}`}\n </span>\n {hoverYm && hoverYm >= monthFrom && previewCount > 0 ? (\n <span className=\"text-[10px] font-medium text-blue-400\">\n {previewCount} month{previewCount !== 1 ? \"s\" : \"\"}\n </span>\n ) : null}\n </>\n ) : (\n <span className=\"text-[10px] text-muted-foreground/60\">No months selected</span>\n )}\n </div>\n </div>\n );\n}\n\nexport function MonthPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n {IS_PARTIAL_MONTH ? (\n <ScheduleInfoBanner>\n Today is {new Date(PRICING_TODAY).toLocaleDateString(\"en-US\", { month: \"long\", day: \"numeric\" })}.\n Current month is partially elapsed — earliest bookable month is{\" \"}\n <strong>{monthLabel(MIN_MONTH)}</strong>.\n </ScheduleInfoBanner>\n ) : null}\n <ScheduleFieldLabel>Select month range</ScheduleFieldLabel>\n <MonthRangeCalendar\n flat={flat}\n monthFrom={booking.monthFrom}\n monthTo={booking.monthTo}\n onChange={(from, to) => onChange({ monthFrom: from, monthTo: to })}\n />\n </div>\n );\n}\n\nexport function WeekPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n const rangeStr = weekRangeLabel(booking.weekFrom, booking.weekCount);\n const isCurrentWeekPartial = new Date(PRICING_TODAY).getDay() !== 1;\n\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n {isCurrentWeekPartial ? (\n <ScheduleInfoBanner>\n This week started on a {new Date(PRICING_TODAY).toLocaleDateString(\"en-US\", { weekday: \"long\" })} — earliest\n full week begins{\" \"}\n <strong>\n {new Date(MIN_WEEK_START).toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n })}\n </strong>\n .\n </ScheduleInfoBanner>\n ) : null}\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Starting week</ScheduleFieldLabel>\n <WeekCalendarPicker\n flat={flat}\n weekFrom={booking.weekFrom}\n onChange={(v) => onChange({ weekFrom: v })}\n />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Number of weeks</ScheduleFieldLabel>\n <div className=\"flex items-center gap-3\">\n <ScheduleStepper\n value={booking.weekCount}\n max={52}\n onChange={(v) => onChange({ weekCount: v })}\n />\n <span className=\"text-xs text-muted-foreground\">\n {booking.weekCount} week{booking.weekCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n </div>\n\n {booking.weekFrom && booking.weekCount > 0 ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Period</span>\n <span className=\"text-xs font-medium text-muted-foreground\">{rangeStr}</span>\n </div>\n <span className=\"rounded-lg bg-blue-50 px-2 py-1 text-xs font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {booking.weekCount} week{booking.weekCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction formatDateLabel(iso: string): string {\n if (!iso) return \"—\";\n return new Date(iso + \"T00:00:00\").toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n\nfunction isBillableDay(day: string, start: string, end: string): boolean {\n return Boolean(start && end && day >= start && day < end);\n}\n\nexport function DayCalendarPicker({\n selectedDate,\n onChange,\n minDate = PRICING_TODAY,\n flat = false,\n}: {\n selectedDate: string;\n onChange: (date: string) => void;\n minDate?: string;\n flat?: boolean;\n}) {\n const initDate = new Date((selectedDate || minDate) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n\n const days = getCalendarGrid(calYear, calMonth);\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">\n {days.map((d) => {\n const ds = dayStr(d);\n const isCurrentMonth = d.getMonth() === calMonth;\n const isSelectable = ds >= minDate;\n const isSelected = ds === selectedDate;\n\n return (\n <button\n key={ds}\n type=\"button\"\n disabled={!isSelectable}\n onClick={() => isSelectable && onChange(ds)}\n className={cn(\n \"flex h-9 items-center justify-center\",\n !isSelectable && \"cursor-not-allowed\",\n )}\n >\n <span\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-full text-[11px] transition-colors\",\n isSelected && \"bg-blue-500 font-semibold text-white shadow-sm\",\n !isSelected && isSelectable && isCurrentMonth && \"text-foreground hover:bg-accent\",\n !isSelected && isSelectable && !isCurrentMonth && \"text-muted-foreground hover:bg-accent\",\n !isSelectable && isCurrentMonth && \"text-muted-foreground/40\",\n !isSelectable && !isCurrentMonth && \"text-muted-foreground/30\",\n )}\n >\n {d.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n\n {selectedDate ? (\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">\n Selected {formatDateLabel(selectedDate)}\n </p>\n ) : (\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">Click a day to book</p>\n )}\n </div>\n );\n}\n\nexport function DayRangeCalendar({\n startDate,\n endDate,\n onChange,\n minDate = PRICING_TODAY,\n flat = false,\n}: {\n startDate: string;\n endDate: string;\n onChange: (start: string, end: string) => void;\n minDate?: string;\n flat?: boolean;\n}) {\n const initDate = new Date((startDate || minDate) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [phase, setPhase] = useState<\"from\" | \"to\">(\"from\");\n const [hoverDay, setHoverDay] = useState<string | null>(null);\n\n const days = getCalendarGrid(calYear, calMonth);\n const lastBillableDay = endDate ? addDays(endDate, -1) : \"\";\n\n const [dispStart, dispEnd] = (() => {\n if (phase === \"to\" && hoverDay && startDate) {\n if (hoverDay >= startDate) return [startDate, addDays(hoverDay, 1)];\n return [hoverDay, addDays(hoverDay, 1)];\n }\n return [startDate, endDate];\n })();\n\n const dayCount = startDate && endDate ? diffDays(startDate, endDate) : 0;\n\n const handleClick = (ds: string) => {\n if (ds < minDate) return;\n if (phase === \"from\") {\n onChange(ds, addDays(ds, 1));\n setPhase(\"to\");\n return;\n }\n if (ds < startDate) {\n onChange(ds, addDays(ds, 1));\n setPhase(\"to\");\n return;\n }\n onChange(startDate, addDays(ds, 1));\n setPhase(\"from\");\n };\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div\n className={cn(\n \"flex items-center gap-2 px-1 text-[11px] font-medium\",\n phase === \"to\" ? \"text-blue-600 dark:text-blue-400\" : \"text-muted-foreground\",\n )}\n >\n {phase === \"from\" ? (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n Click the first day\n </>\n ) : (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-blue-500\" />\n Click the last day\n <button\n type=\"button\"\n onClick={() => {\n onChange(startDate, addDays(startDate, 1));\n setPhase(\"to\");\n }}\n className=\"ml-auto text-[10px] text-blue-400 underline underline-offset-2 hover:text-blue-600 dark:text-blue-400\"\n >\n Reset\n </button>\n </>\n )}\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">\n {days.map((d) => {\n const ds = dayStr(d);\n const isCurrentMonth = d.getMonth() === calMonth;\n const isSelectable = ds >= minDate;\n const inRange = isBillableDay(ds, dispStart, dispEnd);\n const isStart = ds === dispStart;\n const isEnd = ds === lastBillableDay && dispEnd && diffDays(dispStart, dispEnd) > 1;\n const isSingle = dispStart && dispEnd && diffDays(dispStart, dispEnd) === 1 && ds === dispStart;\n\n return (\n <button\n key={ds}\n type=\"button\"\n disabled={!isSelectable}\n onMouseEnter={() => isSelectable && setHoverDay(ds)}\n onMouseLeave={() => setHoverDay(null)}\n onClick={() => isSelectable && handleClick(ds)}\n className={cn(\n \"relative flex h-9 items-center justify-center\",\n !isSelectable && \"cursor-not-allowed\",\n )}\n >\n {inRange && !isSingle ? (\n <span\n className={cn(\n \"absolute inset-y-1.5 bg-blue-100\",\n isStart ? \"left-1/2 right-0 rounded-l-full\" : isEnd ? \"left-0 right-1/2 rounded-r-full\" : \"inset-x-0\",\n )}\n />\n ) : null}\n <span\n className={cn(\n \"relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-[11px] transition-colors\",\n (isStart || isEnd || isSingle) && \"bg-blue-500 font-semibold text-white shadow-sm\",\n !isStart && !isEnd && !isSingle && inRange && \"font-medium text-blue-700 dark:text-blue-400\",\n !inRange && isSelectable && isCurrentMonth && \"text-foreground hover:bg-accent\",\n !inRange && isSelectable && !isCurrentMonth && \"text-muted-foreground hover:bg-accent\",\n !isSelectable && isCurrentMonth && \"text-muted-foreground/40\",\n !isSelectable && !isCurrentMonth && \"text-muted-foreground/30\",\n )}\n >\n {d.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border/70 pt-3 text-xs\">\n {dayCount > 0 ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {formatDateLabel(startDate)}\n {dayCount > 1 ? ` → ${formatDateLabel(lastBillableDay)}` : \"\"}\n </span>\n <span className=\"rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {dayCount} day{dayCount !== 1 ? \"s\" : \"\"}\n </span>\n </>\n ) : (\n <span className=\"text-[10px] text-muted-foreground/60\">Select a date range</span>\n )}\n </div>\n </div>\n );\n}\n\nexport function DayPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n const oneDay = booking.oneDayBooking ?? true;\n const dayCount = oneDay ? 1 : diffDays(booking.startDate, booking.endDate);\n\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n <div className=\"flex gap-2\">\n {(\n [\n { key: true, label: \"Single day\" },\n { key: false, label: \"Multiple days\" },\n ] as const\n ).map(({ key, label }) => (\n <button\n key={String(key)}\n type=\"button\"\n onClick={() => {\n const start = booking.startDate || PRICING_TODAY;\n if (key) {\n onChange({ oneDayBooking: true, startDate: start, endDate: addDays(start, 1) });\n } else {\n const end =\n booking.endDate && booking.endDate > start && diffDays(start, booking.endDate) > 1\n ? booking.endDate\n : addDays(start, 7);\n onChange({ oneDayBooking: false, startDate: start, endDate: end });\n }\n }}\n className={cn(\n \"flex h-9 flex-1 items-center justify-center rounded-xl border text-sm font-medium transition-colors\",\n oneDay === key\n ? \"border-blue-400 bg-blue-50 text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\"\n : \"border-border bg-card text-muted-foreground hover:bg-accent\",\n )}\n >\n {label}\n </button>\n ))}\n </div>\n\n {oneDay ? (\n <DayCalendarPicker\n flat={flat}\n selectedDate={booking.startDate}\n onChange={(v) => onChange({ startDate: v, endDate: addDays(v, 1) })}\n />\n ) : (\n <DayRangeCalendar\n flat={flat}\n startDate={booking.startDate}\n endDate={booking.endDate}\n onChange={(start, end) => onChange({ startDate: start, endDate: end })}\n />\n )}\n\n {dayCount > 0 ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Period</span>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {oneDay\n ? formatDateLabel(booking.startDate)\n : `${formatDateLabel(booking.startDate)} → ${formatDateLabel(addDays(booking.endDate, -1))}`}\n </span>\n </div>\n <span className=\"rounded-lg bg-blue-50 px-2 py-1 text-xs font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {dayCount} day{dayCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n ) : null}\n </div>\n );\n}\n\ntype HourlyPickerStep = \"date\" | \"time\";\n\nexport function HourlySchedulePicker({\n scheduleDate,\n scheduleTime,\n onChange,\n timeFormat = \"24h\",\n flat = true,\n}: {\n scheduleDate: string;\n scheduleTime: string;\n onChange: (patch: { scheduleDate?: string; scheduleTime?: string }) => void;\n timeFormat?: \"12h\" | \"24h\";\n flat?: boolean;\n}) {\n const [step, setStep] = useState<HourlyPickerStep>(() => (scheduleDate ? \"time\" : \"date\"));\n\n useEffect(() => {\n if (!scheduleDate) setStep(\"date\");\n }, [scheduleDate]);\n\n return (\n <div className={cn(\"flex flex-col gap-5\", flat ? \"\" : \"rounded-2xl border border-border bg-card p-4\")}>\n <div className=\"flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground\">\n <span\n className={cn(\n step === \"date\" && \"font-semibold text-blue-600 dark:text-blue-400\",\n scheduleDate && step !== \"date\" && \"text-foreground\",\n )}\n >\n Date\n </span>\n <span aria-hidden>·</span>\n <span\n className={cn(\n step === \"time\" && \"font-semibold text-blue-600 dark:text-blue-400\",\n !scheduleDate && \"text-muted-foreground/60\",\n )}\n >\n Time\n </span>\n </div>\n\n {step === \"date\" ? (\n <div className=\"flex flex-col gap-3\">\n <ScheduleFieldLabel>Pick a day</ScheduleFieldLabel>\n <DayCalendarPicker\n flat={flat}\n selectedDate={scheduleDate}\n minDate={PRICING_TODAY}\n onChange={(v) => {\n onChange({ scheduleDate: v });\n setStep(\"time\");\n }}\n />\n <p className=\"text-center text-[11px] text-muted-foreground\">Select a day to set the time</p>\n </div>\n ) : (\n <div className=\"flex flex-col gap-5\">\n <button\n type=\"button\"\n onClick={() => setStep(\"date\")}\n className=\"inline-flex w-fit items-center gap-2 rounded-xl border border-border bg-muted/60 px-3 py-2 text-left transition-colors hover:bg-muted\"\n >\n <ChevronLeft size={14} className=\"shrink-0 text-muted-foreground\" />\n <div>\n <p className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">Date</p>\n <p className=\"text-sm font-medium text-foreground\">{formatDateLabel(scheduleDate)}</p>\n </div>\n <span className=\"ml-2 text-[11px] font-medium text-blue-600 dark:text-blue-400\">Change</span>\n </button>\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Pick a time</ScheduleFieldLabel>\n <div className=\"flex justify-center rounded-2xl border border-border bg-card py-6\">\n <AnalogClockPicker\n value={scheduleTime}\n onChange={(v) => onChange({ scheduleTime: v })}\n timeFormat={timeFormat}\n />\n </div>\n </div>\n\n {scheduleDate && scheduleTime ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Scheduled for</span>\n <span className=\"text-xs font-medium text-foreground\">\n {formatDateLabel(scheduleDate)} · {formatTimeForDisplay(scheduleTime, timeFormat)}\n </span>\n </div>\n </div>\n ) : null}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/booking-schedule.ts","../src/booking/booking-schedule-calendars.tsx"],"names":[],"mappings":"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","file":"booking-schedule-calendars.js","sourcesContent":["/**\n * Date / schedule helpers used by booking-schedule calendars.\n * Copied from `@spacesync/client/domain/lib/pricing` so the client has no package dependency.\n */\n\nexport type RepeatType = \"none\" | \"daily\" | \"weekly\" | \"monthly\";\nexport type BookingMode = \"slots\" | \"schedule\";\n\n/** Editor state for slot / schedule / daily / item shaped tiers */\nexport interface BookingState {\n slotCount: number;\n bookingDate: string;\n bookingMode: BookingMode;\n scheduleDate: string;\n scheduleTime: string;\n repeatType: RepeatType;\n repeatEveryDays: number;\n repeatEveryWeeks: number;\n repeatOnDays: string[];\n repeatEveryMonths: number;\n repeatUntilDate: string;\n startDate: string;\n endDate: string;\n monthFrom: string;\n monthTo: string;\n weekFrom: string;\n weekCount: number;\n itemQuantity: number;\n /** Daily per-day tiers: single-day booking when true (endDate = startDate + 1 day). */\n oneDayBooking?: boolean;\n}\n\nexport const PRICING_TODAY = new Date().toISOString().split(\"T\")[0];\n\n/** First full month available: next month if today is past the 1st, else current month. */\nexport function computeMinMonth(): string {\n const d = new Date();\n if (d.getDate() === 1) {\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}`;\n }\n const n = new Date(d.getFullYear(), d.getMonth() + 1, 1);\n return `${n.getFullYear()}-${String(n.getMonth() + 1).padStart(2, \"0\")}`;\n}\n\n/** First full week available: next Monday unless today is already Monday. */\nexport function computeMinWeekStart(): string {\n const d = new Date();\n const day = d.getDay();\n if (day === 1) return d.toISOString().split(\"T\")[0];\n const skip = day === 0 ? 1 : 8 - day;\n d.setDate(d.getDate() + skip);\n return d.toISOString().split(\"T\")[0];\n}\n\nexport const MIN_MONTH =\n computeMinMonth() ||\n `${new Date().getFullYear()}-${String(new Date().getMonth() + 2).padStart(2, \"0\")}`;\nexport const MIN_WEEK_START = computeMinWeekStart() || PRICING_TODAY;\n\n/** True when today is not the 1st — meaning the current month is partial. */\nexport const IS_PARTIAL_MONTH = new Date().getDate() !== 1;\n\nexport function monthLabel(ym: string): string {\n const [y, m] = ym.split(\"-\").map(Number);\n return new Date(y, m - 1, 1).toLocaleDateString(\"en-US\", { month: \"long\", year: \"numeric\" });\n}\n\nexport function monthCount(from: string, to: string): number {\n if (!from || !to || !from.includes(\"-\") || !to.includes(\"-\")) return 0;\n const [fy, fm] = from.split(\"-\").map(Number);\n const [ty, tm] = to.split(\"-\").map(Number);\n return (ty - fy) * 12 + (tm - fm) + 1;\n}\n\nexport function weekRangeLabel(weekFrom: string, weekCount: number): string {\n if (!weekFrom || isNaN(new Date(weekFrom).getTime())) return \"—\";\n const end = new Date(weekFrom);\n end.setDate(end.getDate() + weekCount * 7 - 1);\n const s = new Date(weekFrom).toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\" });\n const e = end.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\", year: \"numeric\" });\n return `${s} – ${e}`;\n}\n\nfunction parseDateOnly(date: string): Date {\n const [y, m, d] = date.split(\"-\").map(Number);\n return new Date(y, m - 1, d);\n}\n\nfunction formatDateOnly(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n const day = String(d.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${day}`;\n}\n\nexport function diffDays(a: string, b: string): number {\n const da = parseDateOnly(a);\n const db = parseDateOnly(b);\n return Math.max(0, Math.round((db.getTime() - da.getTime()) / 86_400_000));\n}\n\nexport function addDays(date: string, days: number): string {\n const d = parseDateOnly(date);\n d.setDate(d.getDate() + days);\n return formatDateOnly(d);\n}\n","import { useEffect, useState } from \"react\";\nimport { ChevronLeft, ChevronRight, Info } from \"lucide-react\";\nimport {\n IS_PARTIAL_MONTH,\n MIN_MONTH,\n MIN_WEEK_START,\n PRICING_TODAY,\n addDays,\n diffDays,\n monthCount,\n monthLabel,\n weekRangeLabel,\n type BookingState,\n} from \"../lib/booking-schedule\";\nimport { AnalogClockPicker } from \"./analog-clock-picker\";\nimport { formatTimeForDisplay } from \"../ui/time-field\";\nimport { cn } from \"../ui\";\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nfunction dayStr(d: Date): string {\n return d.toISOString().split(\"T\")[0];\n}\n\n/** Returns dates for a Mon-anchored calendar grid (5 or 6 rows). */\nfunction getCalendarGrid(year: number, month: number): Date[] {\n const firstDay = new Date(year, month, 1);\n const dow = firstDay.getDay();\n const startOffset = dow === 0 ? -6 : 1 - dow;\n const days: Date[] = [];\n for (let i = 0; i < 35; i++) {\n days.push(new Date(year, month, 1 + startOffset + i));\n }\n if (days[days.length - 1] < new Date(year, month + 1, 0)) {\n for (let i = 35; i < 42; i++) {\n days.push(new Date(year, month, 1 + startOffset + i));\n }\n }\n return days;\n}\n\nexport function ScheduleFieldLabel({ children }: { children: React.ReactNode }) {\n return <label className=\"text-xs font-medium text-muted-foreground\">{children}</label>;\n}\n\nexport function ScheduleInfoBanner({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex items-start gap-2 rounded-xl border border-blue-100 bg-blue-50 px-3 py-2.5 dark:border-blue-900/50 dark:bg-blue-950/40\">\n <Info size={13} className=\"mt-0.5 shrink-0 text-blue-400\" />\n <span className=\"text-xs leading-relaxed text-blue-700 dark:text-blue-400\">{children}</span>\n </div>\n );\n}\n\nexport function ScheduleStepper({\n value,\n min = 1,\n max = 100,\n onChange,\n}: {\n value: number;\n min?: number;\n max?: number;\n onChange: (v: number) => void;\n}) {\n return (\n <div className=\"flex w-32 items-center overflow-hidden rounded-xl border border-border bg-card\">\n <button\n type=\"button\"\n onClick={() => onChange(Math.max(min, value - 1))}\n className=\"flex h-9 w-9 shrink-0 items-center justify-center border-r border-border text-sm text-muted-foreground hover:bg-accent\"\n >\n −\n </button>\n <span className=\"flex-1 text-center text-sm font-medium text-foreground\">{value}</span>\n <button\n type=\"button\"\n onClick={() => onChange(Math.min(max, value + 1))}\n className=\"flex h-9 w-9 shrink-0 items-center justify-center border-l border-border text-sm text-muted-foreground hover:bg-accent\"\n >\n +\n </button>\n </div>\n );\n}\n\nexport function WeekCalendarPicker({\n weekFrom,\n onChange,\n flat = false,\n}: {\n weekFrom: string;\n onChange: (v: string) => void;\n flat?: boolean;\n}) {\n const initDate = new Date((weekFrom || MIN_WEEK_START) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [hoverMon, setHoverMon] = useState<string | null>(null);\n\n const days = getCalendarGrid(calYear, calMonth);\n const minDate = new Date((MIN_WEEK_START || PRICING_TODAY) + \"T00:00:00\");\n const selectedMonStr = weekFrom || null;\n const hoverMonStr = hoverMon;\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n const weeks: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) weeks.push(days.slice(i, i + 7));\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n {weeks.map((week, wi) => {\n const mondayDate = week[0];\n const monStr = dayStr(mondayDate);\n const isSelectable = mondayDate >= minDate;\n const isSelected = monStr === selectedMonStr;\n const isHovered = monStr === hoverMonStr && isSelectable && !isSelected;\n\n return (\n <div\n key={wi}\n className={`flex cursor-pointer overflow-hidden rounded-xl transition-colors\n ${isSelected ? \"bg-blue-100\" : isHovered ? \"bg-blue-50\" : isSelectable ? \"hover:bg-accent\" : \"cursor-not-allowed\"}`}\n onMouseEnter={() => isSelectable && setHoverMon(monStr)}\n onMouseLeave={() => setHoverMon(null)}\n onClick={() => isSelectable && onChange(monStr)}\n >\n {week.map((d, di) => {\n const isCurrentMonth = d.getMonth() === calMonth;\n const isMon = di === 0;\n const isSelectedMon = isSelected && isMon;\n\n return (\n <div key={di} className=\"flex h-8 flex-1 items-center justify-center\">\n <span\n className={`\n flex h-7 w-7 items-center justify-center rounded-full text-[11px] transition-colors\n ${isSelectedMon ? \"bg-blue-500 font-semibold text-white\" : \"\"}\n ${!isSelectedMon && isSelected ? \"text-blue-700 dark:text-blue-400\" : \"\"}\n ${!isSelected && isSelectable && isCurrentMonth ? \"text-muted-foreground\" : \"\"}\n ${!isSelectable && isCurrentMonth ? \"text-muted-foreground/60\" : \"\"}\n ${!isCurrentMonth ? \"text-muted-foreground/60\" : \"\"}\n `}\n >\n {d.getDate()}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">Click any row to select that week</p>\n </div>\n );\n}\n\nexport function MonthRangeCalendar({\n monthFrom,\n monthTo,\n onChange,\n flat = false,\n}: {\n monthFrom: string;\n monthTo: string;\n onChange: (from: string, to: string) => void;\n flat?: boolean;\n}) {\n const initYear = monthFrom ? parseInt(monthFrom.split(\"-\")[0], 10) : new Date().getFullYear();\n const [calYear, setCalYear] = useState(initYear);\n const [phase, setPhase] = useState<\"from\" | \"to\">(\"from\");\n const [hoverYm, setHoverYm] = useState<string | null>(null);\n\n const ABBR = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n const toYm = (y: number, m: number) => `${y}-${String(m + 1).padStart(2, \"0\")}`;\n const minYm = MIN_MONTH || `${new Date().getFullYear()}-01`;\n\n const [dispFrom, dispTo] = (() => {\n if (phase === \"to\" && hoverYm) {\n if (hoverYm >= monthFrom) return [monthFrom, hoverYm];\n return [hoverYm, hoverYm];\n }\n return [monthFrom, monthTo];\n })();\n const isSingle = dispFrom === dispTo;\n\n const handleClick = (ymStr: string) => {\n if (ymStr < minYm) return;\n if (phase === \"from\") {\n onChange(ymStr, ymStr);\n setPhase(\"to\");\n } else if (ymStr >= monthFrom) {\n onChange(monthFrom, ymStr);\n setPhase(\"from\");\n } else {\n onChange(ymStr, ymStr);\n }\n };\n\n const actualCount = monthCount(monthFrom, monthTo);\n const previewCount = monthCount(dispFrom, dispTo);\n\n return (\n <div\n className={cn(\n \"select-none\",\n flat ? \"flex flex-col gap-5\" : \"overflow-hidden rounded-2xl border border-border bg-card\",\n )}\n >\n <div className={cn(\"flex items-center justify-between\", flat ? \"px-1\" : \"px-4 pb-2 pt-4\")}>\n <button\n type=\"button\"\n onClick={() => setCalYear((y) => y - 1)}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">{calYear}</span>\n <button\n type=\"button\"\n onClick={() => setCalYear((y) => y + 1)}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent hover:text-muted-foreground\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div\n className={cn(\n \"flex items-center gap-2 text-[11px] font-medium transition-colors\",\n flat\n ? phase === \"to\"\n ? \"text-blue-600 dark:text-blue-400\"\n : \"text-muted-foreground\"\n : cn(\n \"px-4 py-2 text-[10px]\",\n phase === \"to\"\n ? \"bg-blue-50 text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\"\n : \"bg-transparent text-muted-foreground\",\n ),\n )}\n >\n {phase === \"from\" ? (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n Click a month to set the start\n </>\n ) : (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-blue-500\" />\n Now click to set the end month\n <button\n type=\"button\"\n onClick={() => {\n onChange(monthFrom, monthFrom);\n setPhase(\"to\");\n }}\n className=\"ml-auto text-[10px] text-blue-400 underline underline-offset-2 hover:text-blue-600 dark:text-blue-400\"\n >\n Reset\n </button>\n </>\n )}\n </div>\n\n <div\n className={cn(\"grid grid-cols-4\", flat ? \"gap-2 py-1\" : \"px-2 pb-3 pt-1\")}\n style={flat ? undefined : { gap: 0 }}\n >\n {ABBR.map((label, i) => {\n const ymStr = toYm(calYear, i);\n const disabled = ymStr < minYm;\n const inRange = !disabled && ymStr >= dispFrom && ymStr <= dispTo;\n const isFrom = ymStr === dispFrom;\n const isTo = ymStr === dispTo;\n const showStrip = inRange && !isSingle;\n const sLeft = isFrom ? \"left-1/2\" : \"left-0\";\n const sRight = isTo ? \"right-1/2\" : \"right-0\";\n const filled = (isFrom || isTo) && !disabled;\n\n return (\n <div\n key={i}\n className={cn(\n \"relative\",\n flat ? \"h-14\" : \"h-12\",\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\",\n )}\n onMouseEnter={() => !disabled && setHoverYm(ymStr)}\n onMouseLeave={() => setHoverYm(null)}\n onClick={() => handleClick(ymStr)}\n >\n {showStrip ? (\n <div className={`absolute bottom-1.5 top-1.5 bg-blue-100 ${sLeft} ${sRight}`} />\n ) : null}\n <div\n className={cn(\n \"relative z-10 flex w-full items-center justify-center\",\n flat ? \"h-14\" : \"h-12\",\n )}\n >\n <span\n className={`flex h-9 w-9 items-center justify-center rounded-full text-xs font-medium transition-all duration-100\n ${\n filled\n ? \"bg-blue-500 text-white shadow-md shadow-blue-200\"\n : inRange\n ? \"text-blue-700 dark:text-blue-400\"\n : !disabled\n ? \"text-muted-foreground hover:bg-accent\"\n : \"text-muted-foreground/60\"\n }`}\n >\n {label}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n\n <div\n className={cn(\n \"flex items-center justify-between transition-colors\",\n flat\n ? \"border-t border-border/70 pt-4 text-xs\"\n : cn(\n \"border-t px-4 py-2.5\",\n phase === \"from\" && actualCount > 0 ? \"border-border bg-muted\" : \"border-transparent\",\n ),\n )}\n >\n {phase === \"from\" && actualCount > 0 ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {monthLabel(monthFrom)} → {monthLabel(monthTo)}\n </span>\n <span className=\"rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {actualCount} month{actualCount !== 1 ? \"s\" : \"\"}\n </span>\n </>\n ) : phase === \"to\" ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {hoverYm && hoverYm >= monthFrom\n ? `${monthLabel(monthFrom)} → ${monthLabel(hoverYm)}`\n : `Start: ${monthLabel(monthFrom)}`}\n </span>\n {hoverYm && hoverYm >= monthFrom && previewCount > 0 ? (\n <span className=\"text-[10px] font-medium text-blue-400\">\n {previewCount} month{previewCount !== 1 ? \"s\" : \"\"}\n </span>\n ) : null}\n </>\n ) : (\n <span className=\"text-[10px] text-muted-foreground/60\">No months selected</span>\n )}\n </div>\n </div>\n );\n}\n\nexport function MonthPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n {IS_PARTIAL_MONTH ? (\n <ScheduleInfoBanner>\n Today is {new Date(PRICING_TODAY).toLocaleDateString(\"en-US\", { month: \"long\", day: \"numeric\" })}.\n Current month is partially elapsed — earliest bookable month is{\" \"}\n <strong>{monthLabel(MIN_MONTH)}</strong>.\n </ScheduleInfoBanner>\n ) : null}\n <ScheduleFieldLabel>Select month range</ScheduleFieldLabel>\n <MonthRangeCalendar\n flat={flat}\n monthFrom={booking.monthFrom}\n monthTo={booking.monthTo}\n onChange={(from, to) => onChange({ monthFrom: from, monthTo: to })}\n />\n </div>\n );\n}\n\nexport function WeekPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n const rangeStr = weekRangeLabel(booking.weekFrom, booking.weekCount);\n const isCurrentWeekPartial = new Date(PRICING_TODAY).getDay() !== 1;\n\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n {isCurrentWeekPartial ? (\n <ScheduleInfoBanner>\n This week started on a {new Date(PRICING_TODAY).toLocaleDateString(\"en-US\", { weekday: \"long\" })} — earliest\n full week begins{\" \"}\n <strong>\n {new Date(MIN_WEEK_START).toLocaleDateString(\"en-US\", {\n month: \"long\",\n day: \"numeric\",\n })}\n </strong>\n .\n </ScheduleInfoBanner>\n ) : null}\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Starting week</ScheduleFieldLabel>\n <WeekCalendarPicker\n flat={flat}\n weekFrom={booking.weekFrom}\n onChange={(v) => onChange({ weekFrom: v })}\n />\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Number of weeks</ScheduleFieldLabel>\n <div className=\"flex items-center gap-3\">\n <ScheduleStepper\n value={booking.weekCount}\n max={52}\n onChange={(v) => onChange({ weekCount: v })}\n />\n <span className=\"text-xs text-muted-foreground\">\n {booking.weekCount} week{booking.weekCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n </div>\n\n {booking.weekFrom && booking.weekCount > 0 ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Period</span>\n <span className=\"text-xs font-medium text-muted-foreground\">{rangeStr}</span>\n </div>\n <span className=\"rounded-lg bg-blue-50 px-2 py-1 text-xs font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {booking.weekCount} week{booking.weekCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction formatDateLabel(iso: string): string {\n if (!iso) return \"—\";\n return new Date(iso + \"T00:00:00\").toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n\nfunction isBillableDay(day: string, start: string, end: string): boolean {\n return Boolean(start && end && day >= start && day < end);\n}\n\nexport function DayCalendarPicker({\n selectedDate,\n onChange,\n minDate = PRICING_TODAY,\n flat = false,\n}: {\n selectedDate: string;\n onChange: (date: string) => void;\n minDate?: string;\n flat?: boolean;\n}) {\n const initDate = new Date((selectedDate || minDate) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n\n const days = getCalendarGrid(calYear, calMonth);\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">\n {days.map((d) => {\n const ds = dayStr(d);\n const isCurrentMonth = d.getMonth() === calMonth;\n const isSelectable = ds >= minDate;\n const isSelected = ds === selectedDate;\n\n return (\n <button\n key={ds}\n type=\"button\"\n disabled={!isSelectable}\n onClick={() => isSelectable && onChange(ds)}\n className={cn(\n \"flex h-9 items-center justify-center\",\n !isSelectable && \"cursor-not-allowed\",\n )}\n >\n <span\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-full text-[11px] transition-colors\",\n isSelected && \"bg-blue-500 font-semibold text-white shadow-sm\",\n !isSelected && isSelectable && isCurrentMonth && \"text-foreground hover:bg-accent\",\n !isSelected && isSelectable && !isCurrentMonth && \"text-muted-foreground hover:bg-accent\",\n !isSelectable && isCurrentMonth && \"text-muted-foreground/40\",\n !isSelectable && !isCurrentMonth && \"text-muted-foreground/30\",\n )}\n >\n {d.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n\n {selectedDate ? (\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">\n Selected {formatDateLabel(selectedDate)}\n </p>\n ) : (\n <p className=\"mt-1 text-center text-[10px] text-muted-foreground\">Click a day to book</p>\n )}\n </div>\n );\n}\n\nexport function DayRangeCalendar({\n startDate,\n endDate,\n onChange,\n minDate = PRICING_TODAY,\n flat = false,\n}: {\n startDate: string;\n endDate: string;\n onChange: (start: string, end: string) => void;\n minDate?: string;\n flat?: boolean;\n}) {\n const initDate = new Date((startDate || minDate) + \"T00:00:00\");\n const [calYear, setCalYear] = useState(initDate.getFullYear());\n const [calMonth, setCalMonth] = useState(initDate.getMonth());\n const [phase, setPhase] = useState<\"from\" | \"to\">(\"from\");\n const [hoverDay, setHoverDay] = useState<string | null>(null);\n\n const days = getCalendarGrid(calYear, calMonth);\n const lastBillableDay = endDate ? addDays(endDate, -1) : \"\";\n\n const [dispStart, dispEnd] = (() => {\n if (phase === \"to\" && hoverDay && startDate) {\n if (hoverDay >= startDate) return [startDate, addDays(hoverDay, 1)];\n return [hoverDay, addDays(hoverDay, 1)];\n }\n return [startDate, endDate];\n })();\n\n const dayCount = startDate && endDate ? diffDays(startDate, endDate) : 0;\n\n const handleClick = (ds: string) => {\n if (ds < minDate) return;\n if (phase === \"from\") {\n onChange(ds, addDays(ds, 1));\n setPhase(\"to\");\n return;\n }\n if (ds < startDate) {\n onChange(ds, addDays(ds, 1));\n setPhase(\"to\");\n return;\n }\n onChange(startDate, addDays(ds, 1));\n setPhase(\"from\");\n };\n\n const prevMonth = () => {\n if (calMonth === 0) {\n setCalYear((y) => y - 1);\n setCalMonth(11);\n } else setCalMonth((m) => m - 1);\n };\n const nextMonth = () => {\n if (calMonth === 11) {\n setCalYear((y) => y + 1);\n setCalMonth(0);\n } else setCalMonth((m) => m + 1);\n };\n\n return (\n <div\n className={cn(\n \"flex select-none flex-col\",\n flat ? \"gap-3\" : \"gap-1 rounded-2xl border border-border bg-card p-3\",\n )}\n >\n <div className=\"mb-1 flex items-center justify-between px-1\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronLeft size={12} strokeWidth={2.25} />\n </button>\n <span className=\"text-xs font-semibold text-muted-foreground\">\n {MONTH_NAMES[calMonth]} {calYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:bg-accent\"\n >\n <ChevronRight size={12} strokeWidth={2.25} />\n </button>\n </div>\n\n <div\n className={cn(\n \"flex items-center gap-2 px-1 text-[11px] font-medium\",\n phase === \"to\" ? \"text-blue-600 dark:text-blue-400\" : \"text-muted-foreground\",\n )}\n >\n {phase === \"from\" ? (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50\" />\n Click the first day\n </>\n ) : (\n <>\n <span className=\"h-1.5 w-1.5 shrink-0 animate-pulse rounded-full bg-blue-500\" />\n Click the last day\n <button\n type=\"button\"\n onClick={() => {\n onChange(startDate, addDays(startDate, 1));\n setPhase(\"to\");\n }}\n className=\"ml-auto text-[10px] text-blue-400 underline underline-offset-2 hover:text-blue-600 dark:text-blue-400\"\n >\n Reset\n </button>\n </>\n )}\n </div>\n\n <div className=\"mb-0.5 grid grid-cols-7\">\n {[\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"].map((d) => (\n <span key={d} className=\"py-0.5 text-center text-[10px] font-medium text-muted-foreground\">\n {d}\n </span>\n ))}\n </div>\n\n <div className=\"grid grid-cols-7\">\n {days.map((d) => {\n const ds = dayStr(d);\n const isCurrentMonth = d.getMonth() === calMonth;\n const isSelectable = ds >= minDate;\n const inRange = isBillableDay(ds, dispStart, dispEnd);\n const isStart = ds === dispStart;\n const isEnd = ds === lastBillableDay && dispEnd && diffDays(dispStart, dispEnd) > 1;\n const isSingle = dispStart && dispEnd && diffDays(dispStart, dispEnd) === 1 && ds === dispStart;\n\n return (\n <button\n key={ds}\n type=\"button\"\n disabled={!isSelectable}\n onMouseEnter={() => isSelectable && setHoverDay(ds)}\n onMouseLeave={() => setHoverDay(null)}\n onClick={() => isSelectable && handleClick(ds)}\n className={cn(\n \"relative flex h-9 items-center justify-center\",\n !isSelectable && \"cursor-not-allowed\",\n )}\n >\n {inRange && !isSingle ? (\n <span\n className={cn(\n \"absolute inset-y-1.5 bg-blue-100\",\n isStart ? \"left-1/2 right-0 rounded-l-full\" : isEnd ? \"left-0 right-1/2 rounded-r-full\" : \"inset-x-0\",\n )}\n />\n ) : null}\n <span\n className={cn(\n \"relative z-10 flex h-8 w-8 items-center justify-center rounded-full text-[11px] transition-colors\",\n (isStart || isEnd || isSingle) && \"bg-blue-500 font-semibold text-white shadow-sm\",\n !isStart && !isEnd && !isSingle && inRange && \"font-medium text-blue-700 dark:text-blue-400\",\n !inRange && isSelectable && isCurrentMonth && \"text-foreground hover:bg-accent\",\n !inRange && isSelectable && !isCurrentMonth && \"text-muted-foreground hover:bg-accent\",\n !isSelectable && isCurrentMonth && \"text-muted-foreground/40\",\n !isSelectable && !isCurrentMonth && \"text-muted-foreground/30\",\n )}\n >\n {d.getDate()}\n </span>\n </button>\n );\n })}\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border/70 pt-3 text-xs\">\n {dayCount > 0 ? (\n <>\n <span className=\"text-[10px] text-muted-foreground\">\n {formatDateLabel(startDate)}\n {dayCount > 1 ? ` → ${formatDateLabel(lastBillableDay)}` : \"\"}\n </span>\n <span className=\"rounded-full bg-blue-50 px-2 py-0.5 text-[10px] font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {dayCount} day{dayCount !== 1 ? \"s\" : \"\"}\n </span>\n </>\n ) : (\n <span className=\"text-[10px] text-muted-foreground/60\">Select a date range</span>\n )}\n </div>\n </div>\n );\n}\n\nexport function DayPeriodPicker({\n booking,\n onChange,\n flat = true,\n}: {\n booking: BookingState;\n onChange: (patch: Partial<BookingState>) => void;\n flat?: boolean;\n}) {\n const oneDay = booking.oneDayBooking ?? true;\n const dayCount = oneDay ? 1 : diffDays(booking.startDate, booking.endDate);\n\n return (\n <div className={cn(\"flex flex-col\", flat ? \"gap-5\" : \"gap-3\")}>\n <div className=\"flex gap-2\">\n {(\n [\n { key: true, label: \"Single day\" },\n { key: false, label: \"Multiple days\" },\n ] as const\n ).map(({ key, label }) => (\n <button\n key={String(key)}\n type=\"button\"\n onClick={() => {\n const start = booking.startDate || PRICING_TODAY;\n if (key) {\n onChange({ oneDayBooking: true, startDate: start, endDate: addDays(start, 1) });\n } else {\n const end =\n booking.endDate && booking.endDate > start && diffDays(start, booking.endDate) > 1\n ? booking.endDate\n : addDays(start, 7);\n onChange({ oneDayBooking: false, startDate: start, endDate: end });\n }\n }}\n className={cn(\n \"flex h-9 flex-1 items-center justify-center rounded-xl border text-sm font-medium transition-colors\",\n oneDay === key\n ? \"border-blue-400 bg-blue-50 text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\"\n : \"border-border bg-card text-muted-foreground hover:bg-accent\",\n )}\n >\n {label}\n </button>\n ))}\n </div>\n\n {oneDay ? (\n <DayCalendarPicker\n flat={flat}\n selectedDate={booking.startDate}\n onChange={(v) => onChange({ startDate: v, endDate: addDays(v, 1) })}\n />\n ) : (\n <DayRangeCalendar\n flat={flat}\n startDate={booking.startDate}\n endDate={booking.endDate}\n onChange={(start, end) => onChange({ startDate: start, endDate: end })}\n />\n )}\n\n {dayCount > 0 ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Period</span>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {oneDay\n ? formatDateLabel(booking.startDate)\n : `${formatDateLabel(booking.startDate)} → ${formatDateLabel(addDays(booking.endDate, -1))}`}\n </span>\n </div>\n <span className=\"rounded-lg bg-blue-50 px-2 py-1 text-xs font-semibold text-blue-600 dark:bg-blue-950/40 dark:text-blue-400\">\n {dayCount} day{dayCount !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n ) : null}\n </div>\n );\n}\n\ntype HourlyPickerStep = \"date\" | \"time\";\n\nexport function HourlySchedulePicker({\n scheduleDate,\n scheduleTime,\n onChange,\n timeFormat = \"24h\",\n flat = true,\n}: {\n scheduleDate: string;\n scheduleTime: string;\n onChange: (patch: { scheduleDate?: string; scheduleTime?: string }) => void;\n timeFormat?: \"12h\" | \"24h\";\n flat?: boolean;\n}) {\n const [step, setStep] = useState<HourlyPickerStep>(() => (scheduleDate ? \"time\" : \"date\"));\n\n useEffect(() => {\n if (!scheduleDate) setStep(\"date\");\n }, [scheduleDate]);\n\n return (\n <div className={cn(\"flex flex-col gap-5\", flat ? \"\" : \"rounded-2xl border border-border bg-card p-4\")}>\n <div className=\"flex items-center gap-1.5 text-[11px] font-medium text-muted-foreground\">\n <span\n className={cn(\n step === \"date\" && \"font-semibold text-blue-600 dark:text-blue-400\",\n scheduleDate && step !== \"date\" && \"text-foreground\",\n )}\n >\n Date\n </span>\n <span aria-hidden>·</span>\n <span\n className={cn(\n step === \"time\" && \"font-semibold text-blue-600 dark:text-blue-400\",\n !scheduleDate && \"text-muted-foreground/60\",\n )}\n >\n Time\n </span>\n </div>\n\n {step === \"date\" ? (\n <div className=\"flex flex-col gap-3\">\n <ScheduleFieldLabel>Pick a day</ScheduleFieldLabel>\n <DayCalendarPicker\n flat={flat}\n selectedDate={scheduleDate}\n minDate={PRICING_TODAY}\n onChange={(v) => {\n onChange({ scheduleDate: v });\n setStep(\"time\");\n }}\n />\n <p className=\"text-center text-[11px] text-muted-foreground\">Select a day to set the time</p>\n </div>\n ) : (\n <div className=\"flex flex-col gap-5\">\n <button\n type=\"button\"\n onClick={() => setStep(\"date\")}\n className=\"inline-flex w-fit items-center gap-2 rounded-xl border border-border bg-muted/60 px-3 py-2 text-left transition-colors hover:bg-muted\"\n >\n <ChevronLeft size={14} className=\"shrink-0 text-muted-foreground\" />\n <div>\n <p className=\"text-[10px] font-medium uppercase tracking-wide text-muted-foreground\">Date</p>\n <p className=\"text-sm font-medium text-foreground\">{formatDateLabel(scheduleDate)}</p>\n </div>\n <span className=\"ml-2 text-[11px] font-medium text-blue-600 dark:text-blue-400\">Change</span>\n </button>\n\n <div className=\"flex flex-col gap-1.5\">\n <ScheduleFieldLabel>Pick a time</ScheduleFieldLabel>\n <div className=\"flex justify-center rounded-2xl border border-border bg-card py-6\">\n <AnalogClockPicker\n value={scheduleTime}\n onChange={(v) => onChange({ scheduleTime: v })}\n timeFormat={timeFormat}\n />\n </div>\n </div>\n\n {scheduleDate && scheduleTime ? (\n <div className=\"flex items-center justify-between rounded-xl border border-border bg-muted px-3 py-2.5\">\n <div className=\"flex flex-col gap-0.5\">\n <span className=\"text-[10px] text-muted-foreground\">Scheduled for</span>\n <span className=\"text-xs font-medium text-foreground\">\n {formatDateLabel(scheduleDate)} · {formatTimeForDisplay(scheduleTime, timeFormat)}\n </span>\n </div>\n </div>\n ) : null}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import './chunk-
|
|
1
|
+
import './chunk-3DI67RMP.js';
|
|
2
2
|
import './chunk-RV5PMZYZ.js';
|
|
3
3
|
import './chunk-L65F4EMK.js';
|
|
4
4
|
import './chunk-PBNBLCC2.js';
|
|
5
5
|
import './chunk-VVXGQKN7.js';
|
|
6
6
|
import './chunk-7YCAAP43.js';
|
|
7
|
+
import './chunk-DC4QH6W2.js';
|
|
7
8
|
import './chunk-LUB7QWGU.js';
|
|
8
9
|
import { Button } from './chunk-VHINHHZQ.js';
|
|
9
10
|
import './chunk-FCY5FYJB.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/support/chat-stick-to-bottom.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/support/chat-stick-to-bottom.tsx"],"names":[],"mappings":"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","file":"chat-stick-to-bottom.js","sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { Button, cn } from \"../ui\";\n\nconst NEAR_BOTTOM_PX = 80;\n\nfunction isNearBottom(el: HTMLElement): boolean {\n return el.scrollHeight - el.scrollTop - el.clientHeight <= NEAR_BOTTOM_PX;\n}\n\nexport function useChatStickToBottom(opts: {\n conversationId: string | null;\n itemCount: number;\n lastItemId?: string | null;\n pinToLatest?: boolean;\n layoutKey?: string | number | null;\n}) {\n const scrollerRef = useRef<HTMLDivElement>(null);\n const bottomRef = useRef<HTMLDivElement>(null);\n const stuckRef = useRef(true);\n const prevConversationId = useRef<string | null>(null);\n const prevItemCount = useRef(0);\n const prevLastItemId = useRef<string | null | undefined>(undefined);\n const [unseenCount, setUnseenCount] = useState(0);\n\n const scrollToBottom = useCallback((behavior: ScrollBehavior = \"smooth\") => {\n const el = scrollerRef.current;\n if (!el) return;\n stuckRef.current = true;\n setUnseenCount(0);\n const run = () => {\n el.scrollTo({ top: el.scrollHeight, behavior });\n bottomRef.current?.scrollIntoView({ block: \"end\", behavior });\n };\n run();\n requestAnimationFrame(() => {\n run();\n requestAnimationFrame(run);\n });\n window.setTimeout(() => {\n if (!stuckRef.current) return;\n el.scrollTop = el.scrollHeight;\n }, 120);\n }, []);\n\n const syncStuckFromScroll = useCallback(() => {\n const el = scrollerRef.current;\n if (!el) return;\n const atBottom = isNearBottom(el);\n stuckRef.current = atBottom;\n if (atBottom) setUnseenCount(0);\n }, []);\n\n useEffect(() => {\n const root = scrollerRef.current;\n const target = bottomRef.current;\n if (!root || !target) return;\n const io = new IntersectionObserver(\n ([entry]) => {\n if (entry?.isIntersecting) {\n stuckRef.current = true;\n setUnseenCount(0);\n }\n },\n { root, threshold: 0, rootMargin: `0px 0px ${NEAR_BOTTOM_PX}px 0px` },\n );\n io.observe(target);\n return () => io.disconnect();\n }, [opts.conversationId, opts.itemCount]);\n\n useEffect(() => {\n const el = scrollerRef.current;\n if (!el) return;\n const onScroll = () => syncStuckFromScroll();\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n const ro = new ResizeObserver(() => {\n if (!stuckRef.current) return;\n el.scrollTop = el.scrollHeight;\n });\n ro.observe(el);\n const inner = el.firstElementChild;\n if (inner) ro.observe(inner);\n return () => {\n el.removeEventListener(\"scroll\", onScroll);\n ro.disconnect();\n };\n }, [opts.conversationId, opts.itemCount, syncStuckFromScroll]);\n\n useLayoutEffect(() => {\n const conversationChanged = prevConversationId.current !== opts.conversationId;\n const lastIdChanged = prevLastItemId.current !== opts.lastItemId;\n const countDelta = opts.itemCount - prevItemCount.current;\n\n if (conversationChanged) {\n stuckRef.current = true;\n setUnseenCount(0);\n prevConversationId.current = opts.conversationId;\n prevItemCount.current = opts.itemCount;\n prevLastItemId.current = opts.lastItemId;\n if (opts.conversationId) scrollToBottom(\"auto\");\n return;\n }\n\n if (!opts.conversationId) {\n prevItemCount.current = opts.itemCount;\n prevLastItemId.current = opts.lastItemId;\n return;\n }\n\n if (lastIdChanged || countDelta > 0) {\n const added = Math.max(countDelta, lastIdChanged ? 1 : 0);\n if (opts.pinToLatest || stuckRef.current) {\n scrollToBottom(\"smooth\");\n } else if (added > 0) {\n setUnseenCount((n) => n + added);\n }\n }\n\n prevItemCount.current = opts.itemCount;\n prevLastItemId.current = opts.lastItemId;\n }, [opts.conversationId, opts.itemCount, opts.lastItemId, opts.pinToLatest, scrollToBottom]);\n\n useLayoutEffect(() => {\n if (!opts.conversationId || !stuckRef.current) return;\n const el = scrollerRef.current;\n if (!el) return;\n el.scrollTop = el.scrollHeight;\n }, [opts.layoutKey, opts.conversationId]);\n\n return {\n scrollerRef,\n bottomRef,\n unseenCount,\n scrollToBottom: () => scrollToBottom(\"smooth\"),\n };\n}\n\nexport function ChatNewMessagesButton({\n count,\n onClick,\n className,\n}: {\n count: number;\n onClick: () => void;\n className?: string;\n}) {\n if (count <= 0) return null;\n const label = count === 1 ? \"1 new message\" : `${count} new messages`;\n return (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={onClick}\n className={cn(\"pointer-events-auto h-8 rounded-full px-3 shadow-md\", className)}\n aria-label={label}\n >\n <ChevronDown size={14} strokeWidth={2} />\n {label}\n </Button>\n );\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import { Label } from './chunk-RV5PMZYZ.js';
|
|
|
2
2
|
import { formatDate, toDateStr } from './chunk-PBNBLCC2.js';
|
|
3
3
|
import { Drawer, DrawerContent, DrawerTitle, DrawerDescription, DrawerClose, DrawerTrigger } from './chunk-VVXGQKN7.js';
|
|
4
4
|
import { Dialog, DialogHeader, DialogTitle, DialogDescription, DialogContent, DialogClose, DialogTrigger } from './chunk-7YCAAP43.js';
|
|
5
|
+
import { Skeleton } from './chunk-DC4QH6W2.js';
|
|
5
6
|
import { Input, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-LUB7QWGU.js';
|
|
6
7
|
import { Button, buttonVariants } from './chunk-VHINHHZQ.js';
|
|
7
8
|
import { shellTopBarSegmentedShellClass, shellTopBarSegmentedItemClass } from './chunk-FCY5FYJB.js';
|
|
@@ -1977,16 +1978,6 @@ function DropdownMenuSubContent({
|
|
|
1977
1978
|
}
|
|
1978
1979
|
);
|
|
1979
1980
|
}
|
|
1980
|
-
function Skeleton({ className, ...props }) {
|
|
1981
|
-
return /* @__PURE__ */ jsx(
|
|
1982
|
-
"div",
|
|
1983
|
-
{
|
|
1984
|
-
"data-slot": "skeleton",
|
|
1985
|
-
className: cn("bg-accent animate-pulse rounded-md", className),
|
|
1986
|
-
...props
|
|
1987
|
-
}
|
|
1988
|
-
);
|
|
1989
|
-
}
|
|
1990
1981
|
function FeedSkeleton({
|
|
1991
1982
|
rows = 3,
|
|
1992
1983
|
variant = "list"
|
|
@@ -2460,6 +2451,7 @@ var PHONE_COUNTRIES = [
|
|
|
2460
2451
|
{ iso: "DE", name: "Germany", dialCode: "+49", flagCode: "DE" },
|
|
2461
2452
|
{ iso: "FR", name: "France", dialCode: "+33", flagCode: "FR" },
|
|
2462
2453
|
{ iso: "IN", name: "India", dialCode: "+91", flagCode: "IN" },
|
|
2454
|
+
{ iso: "NP", name: "Nepal", dialCode: "+977", flagCode: "NP" },
|
|
2463
2455
|
{ iso: "PK", name: "Pakistan", dialCode: "+92", flagCode: "PK" },
|
|
2464
2456
|
{ iso: "AE", name: "United Arab Emirates", dialCode: "+971", flagCode: "AE" },
|
|
2465
2457
|
{ iso: "SA", name: "Saudi Arabia", dialCode: "+966", flagCode: "SA" },
|
|
@@ -2549,6 +2541,9 @@ var NG_default = 'data:image/svg+xml,<svg width="20" height="15" viewBox="0 0 20
|
|
|
2549
2541
|
// assets/flags/NL.svg
|
|
2550
2542
|
var NL_default = 'data:image/svg+xml,<svg width="20" height="15" viewBox="0 0 20 15" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<rect x="0.25" y="0.25" width="19.5" height="13.7857" rx="1.75" fill="white" stroke="%23F5F5F5" stroke-width="0.5"/>%0A<mask id="mask0_3569_121129" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="15">%0A<rect x="0.25" y="0.25" width="19.5" height="13.7857" rx="1.75" fill="white" stroke="white" stroke-width="0.5"/>%0A</mask>%0A<g mask="url(%23mask0_3569_121129)">%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M0 4.7619H20V0H0V4.7619Z" fill="%23CA2B39"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M0 14.2857H20V9.5238H0V14.2857Z" fill="%232C56A2"/>%0A</g>%0A</svg>%0A';
|
|
2551
2543
|
|
|
2544
|
+
// assets/flags/NP.svg
|
|
2545
|
+
var NP_default = 'data:image/svg+xml,<svg width="20" height="15" viewBox="0 0 20 15" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<rect x="0.25" y="0.25" width="19.5" height="13.7857" rx="1.75" fill="white" stroke="%23F5F5F5" stroke-width="0.5"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.73015C0 0.774614 0.774613 -6.29663e-10 1.73015 2.96692e-10C1.844 4.07073e-10 1.95532 0.0337021 2.05005 0.0968592L9.66924 5.17632C10.7669 5.90808 10.2488 7.61905 8.92963 7.61905H5.71429L10.6627 11.9489C11.5893 12.7597 11.0159 14.2857 9.78473 14.2857H2C0.895429 14.2857 0 13.3903 0 12.2857V1.73015Z" fill="white"/>%0A<mask id="mask0_3569_121178" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="12" height="15">%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.73015C0 0.774614 0.774613 -6.29663e-10 1.73015 2.96692e-10C1.844 4.07073e-10 1.95532 0.0337021 2.05005 0.0968592L9.66924 5.17632C10.7669 5.90808 10.2488 7.61905 8.92963 7.61905H5.71429L10.6627 11.9489C11.5893 12.7597 11.0159 14.2857 9.78473 14.2857H2C0.895429 14.2857 0 13.3903 0 12.2857V1.73015Z" fill="white"/>%0A</mask>%0A<g mask="url(%23mask0_3569_121178)">%0A<path d="M9.78473 13.619H0.666667V0.666667L1.70291 0.666667L9.29943 5.73102C9.84826 6.0969 9.58924 6.95238 8.92963 6.95238H5.71429C5.43655 6.95238 5.18791 7.12457 5.09022 7.38456C4.99253 7.64456 5.06626 7.93787 5.27528 8.12077L10.2237 12.4507C10.687 12.856 10.4003 13.619 9.78473 13.619Z" fill="%23EE1B44" stroke="%230543A8" stroke-width="1.33333" stroke-linejoin="round"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M4.89362 5.572C5.16798 5.49681 5.42092 5.39397 5.64463 5.26869C5.42272 6.07465 4.68451 6.66665 3.80803 6.66665C2.93156 6.66665 2.19335 6.07467 1.97144 5.26872C2.19578 5.39435 2.44952 5.49741 2.72477 5.57265L3.09527 5.23816L2.48973 4.69147L3.30448 4.73309L3.26287 3.91833L3.80956 4.52388L4.35625 3.91833L4.31463 4.73309L5.12938 4.69147L4.52384 5.23816L4.89362 5.572ZM3.08056 12.2359L3.80948 11.4286L4.5384 12.2359L4.48291 11.1496L5.56925 11.2051L4.76186 10.4762L5.56925 9.74725L4.48291 9.80274L4.5384 8.7164L3.80948 9.52379L3.08056 8.7164L3.13604 9.80274L2.04971 9.74725L2.8571 10.4762L2.04971 11.2051L3.13604 11.1496L3.08056 12.2359Z" fill="white"/>%0A</g>%0A</svg>%0A';
|
|
2546
|
+
|
|
2552
2547
|
// assets/flags/PK.svg
|
|
2553
2548
|
var PK_default = 'data:image/svg+xml,<svg width="20" height="15" viewBox="0 0 20 15" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<rect x="0.25" y="0.25" width="19.5" height="13.7857" rx="1.75" fill="white" stroke="%23F5F5F5" stroke-width="0.5"/>%0A<mask id="mask0_3569_121272" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="15">%0A<rect x="0.25" y="0.25" width="19.5" height="13.7857" rx="1.75" fill="white" stroke="white" stroke-width="0.5"/>%0A</mask>%0A<g mask="url(%23mask0_3569_121272)">%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0001 0H5.71436V14.2857L20.0001 14.2857V0Z" fill="%230A632F"/>%0A<path fill-rule="evenodd" clip-rule="evenodd" d="M16.9071 7.67884C16.8155 8.57216 16.4347 9.43052 15.7617 10.1035C14.1575 11.7077 11.5003 11.6514 9.8266 9.97772C8.15292 8.30405 8.0966 5.64681 9.70079 4.04262C10.3738 3.36961 11.2322 2.98886 12.1255 2.8972C11.8441 3.06302 11.5777 3.26764 11.3346 3.5108C9.87623 4.96916 9.8041 7.26148 11.1735 8.63085C12.5428 10.0002 14.8352 9.92809 16.2935 8.46973C16.5367 8.22657 16.7413 7.96023 16.9071 7.67884ZM15.0659 5.78893L14.8386 7.14496L14.2034 5.92554L12.8435 6.1284L13.8069 5.14744L13.1938 3.91678L14.4244 4.52994L15.4054 3.5665L15.2025 4.9264L16.422 5.56162L15.0659 5.78893Z" fill="white"/>%0A</g>%0A</svg>%0A';
|
|
2554
2549
|
|
|
@@ -2581,6 +2576,7 @@ var FLAG_URL_BY_CODE = {
|
|
|
2581
2576
|
MX: MX_default,
|
|
2582
2577
|
NG: NG_default,
|
|
2583
2578
|
NL: NL_default,
|
|
2579
|
+
NP: NP_default,
|
|
2584
2580
|
PK: PK_default,
|
|
2585
2581
|
SA: SA_default,
|
|
2586
2582
|
SG: SG_default,
|
|
@@ -5017,6 +5013,6 @@ function ToggleGroupItem({
|
|
|
5017
5013
|
);
|
|
5018
5014
|
}
|
|
5019
5015
|
|
|
5020
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Calendar, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxField, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentFade, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DashFade, DateField, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FeedSkeleton, FieldLabel, FilterPopover, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, IconInput, InputGroup, InputGroupInput, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberInput, PasswordInput, PhoneInput, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ReceiptCard, ReceiptSummaryRow, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResponsiveAlertDialog, ResponsiveAlertDialogAction, ResponsiveAlertDialogCancel, ResponsiveAlertDialogContent, ResponsiveAlertDialogDescription, ResponsiveAlertDialogTitle, ResponsiveDialog, ResponsiveDialogClose, ResponsiveDialogContent, ResponsiveDialogDescription, ResponsiveDialogTitle, ResponsiveDialogTrigger, ScrollArea, ScrollBar, SegmentedTabList, SegmentedTabTrigger, SelectableCard, SelectableListRow, Separator3 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShellTopBarViewToggle, ShellTopBarViewToggleItem, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger,
|
|
5021
|
-
//# sourceMappingURL=chunk-
|
|
5022
|
-
//# sourceMappingURL=chunk-
|
|
5016
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Calendar, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxField, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentFade, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DashFade, DateField, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FeedSkeleton, FieldLabel, FilterPopover, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, IconInput, InputGroup, InputGroupInput, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberInput, PasswordInput, PhoneInput, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, ReceiptCard, ReceiptSummaryRow, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResponsiveAlertDialog, ResponsiveAlertDialogAction, ResponsiveAlertDialogCancel, ResponsiveAlertDialogContent, ResponsiveAlertDialogDescription, ResponsiveAlertDialogTitle, ResponsiveDialog, ResponsiveDialogClose, ResponsiveDialogContent, ResponsiveDialogDescription, ResponsiveDialogTitle, ResponsiveDialogTrigger, ScrollArea, ScrollBar, SegmentedTabList, SegmentedTabTrigger, SelectableCard, SelectableListRow, Separator3 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, ShellTopBarViewToggle, ShellTopBarViewToggleItem, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Slider, SmoothSize, Switch, TabCountBadge, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, Textarea, TimeField, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, fieldLabelClass, formatTimeForDisplay, navigationMenuTriggerStyle, parseHm, tabsListVariants, tabsTriggerVariants, textVariants, toTimeStr, toggleVariants, useFormField, useIsMobile, useResponsiveDialogDrawer, useSidebar };
|
|
5017
|
+
//# sourceMappingURL=chunk-3DI67RMP.js.map
|
|
5018
|
+
//# sourceMappingURL=chunk-3DI67RMP.js.map
|