@spacesync/client 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +105 -13
  2. package/dist/analog-clock-picker.js +3 -11
  3. package/dist/analog-clock-picker.js.map +1 -1
  4. package/dist/booking-schedule-calendars.js +82 -19
  5. package/dist/booking-schedule-calendars.js.map +1 -1
  6. package/dist/booking-schedule.js +1 -1
  7. package/dist/booking-space-layout-picker.d.ts +1 -1
  8. package/dist/booking-space-layout-picker.js +8 -11
  9. package/dist/booking-space-layout-picker.js.map +1 -1
  10. package/dist/button-Iem7kbk0.d.ts +16 -0
  11. package/dist/chat-stick-to-bottom.js +0 -10
  12. package/dist/chat-stick-to-bottom.js.map +1 -1
  13. package/dist/chunk-2IZODKTR.js +116 -0
  14. package/dist/chunk-2IZODKTR.js.map +1 -0
  15. package/dist/chunk-2TT2ZGMT.js +21 -0
  16. package/dist/chunk-2TT2ZGMT.js.map +1 -0
  17. package/dist/chunk-3MAGTCCN.js +192 -0
  18. package/dist/chunk-3MAGTCCN.js.map +1 -0
  19. package/dist/chunk-56H7UFAW.js +237 -0
  20. package/dist/chunk-56H7UFAW.js.map +1 -0
  21. package/dist/{chunk-OTSA5ROL.js → chunk-5CUJZNUC.js} +16 -5
  22. package/dist/chunk-5CUJZNUC.js.map +1 -0
  23. package/dist/chunk-5HOK5JHR.js +60 -0
  24. package/dist/chunk-5HOK5JHR.js.map +1 -0
  25. package/dist/chunk-6VJQIBC3.js +715 -0
  26. package/dist/chunk-6VJQIBC3.js.map +1 -0
  27. package/dist/{chunk-H7EX6B6N.js → chunk-AHFRK6KP.js} +25 -7
  28. package/dist/chunk-AHFRK6KP.js.map +1 -0
  29. package/dist/chunk-BQVMO33N.js +133 -0
  30. package/dist/chunk-BQVMO33N.js.map +1 -0
  31. package/dist/chunk-CXXOKCLJ.js +37 -0
  32. package/dist/chunk-CXXOKCLJ.js.map +1 -0
  33. package/dist/chunk-EQLKSX4E.js +241 -0
  34. package/dist/chunk-EQLKSX4E.js.map +1 -0
  35. package/dist/chunk-FN4BWFDX.js +43 -0
  36. package/dist/chunk-FN4BWFDX.js.map +1 -0
  37. package/dist/chunk-HRHDOLWU.js +62 -0
  38. package/dist/chunk-HRHDOLWU.js.map +1 -0
  39. package/dist/chunk-HZB2EHEH.js +216 -0
  40. package/dist/chunk-HZB2EHEH.js.map +1 -0
  41. package/dist/chunk-IBGGQXTH.js +21 -0
  42. package/dist/chunk-IBGGQXTH.js.map +1 -0
  43. package/dist/chunk-JCEOU7BU.js +128 -0
  44. package/dist/chunk-JCEOU7BU.js.map +1 -0
  45. package/dist/{chunk-CKCXQBHQ.js → chunk-KXTYPZDK.js} +91 -19
  46. package/dist/chunk-KXTYPZDK.js.map +1 -0
  47. package/dist/{chunk-RV5PMZYZ.js → chunk-MBZAYH5D.js} +4 -18
  48. package/dist/chunk-MBZAYH5D.js.map +1 -0
  49. package/dist/chunk-NWVNYKND.js +153 -0
  50. package/dist/chunk-NWVNYKND.js.map +1 -0
  51. package/dist/chunk-PPMJZVR4.js +37 -0
  52. package/dist/chunk-PPMJZVR4.js.map +1 -0
  53. package/dist/chunk-SHMKDGFF.js +75 -0
  54. package/dist/chunk-SHMKDGFF.js.map +1 -0
  55. package/dist/chunk-T3SOBIYA.js +61 -0
  56. package/dist/chunk-T3SOBIYA.js.map +1 -0
  57. package/dist/chunk-TH5RASJS.js +97 -0
  58. package/dist/chunk-TH5RASJS.js.map +1 -0
  59. package/dist/{chunk-LUB7QWGU.js → chunk-VIJ2HWPZ.js} +5 -159
  60. package/dist/chunk-VIJ2HWPZ.js.map +1 -0
  61. package/dist/chunk-VQ63T7CJ.js +22 -0
  62. package/dist/chunk-VQ63T7CJ.js.map +1 -0
  63. package/dist/chunk-XDVGFHK4.js +50 -0
  64. package/dist/chunk-XDVGFHK4.js.map +1 -0
  65. package/dist/chunk-XI4BQY5T.js +188 -0
  66. package/dist/chunk-XI4BQY5T.js.map +1 -0
  67. package/dist/chunk-ZVWUPYSV.js +170 -0
  68. package/dist/chunk-ZVWUPYSV.js.map +1 -0
  69. package/dist/detail-page-header.js +1 -1
  70. package/dist/file-viewer-dialog.js +3 -9
  71. package/dist/file-viewer-dialog.js.map +1 -1
  72. package/dist/floor-switcher.js +5 -9
  73. package/dist/floor-switcher.js.map +1 -1
  74. package/dist/{layout-canvas-view-DOjyUNJH.d.ts → layout-canvas-view-C3u96xu4.d.ts} +5 -1
  75. package/dist/layout-canvas-view.d.ts +1 -1
  76. package/dist/layout-canvas-view.js +8 -11
  77. package/dist/lib/dateDisplay.d.ts +16 -1
  78. package/dist/lib/dateDisplay.js +1 -1
  79. package/dist/notification-sidebar-preview.js +1 -1
  80. package/dist/page-list-chrome.d.ts +3 -1
  81. package/dist/page-list-chrome.js +5 -3
  82. package/dist/page-list-loading.js +5 -3
  83. package/dist/page-list-loading.js.map +1 -1
  84. package/dist/platform-support-message-composer.js +2 -10
  85. package/dist/platform-support-message-composer.js.map +1 -1
  86. package/dist/sidebar-Dzvrjr69.d.ts +85 -0
  87. package/dist/styles/theme.css +52 -2
  88. package/dist/styles/theme.css.map +1 -1
  89. package/dist/support-presence-status.js +1 -1
  90. package/dist/theme-appearance-control.js +2 -1
  91. package/dist/theme-appearance-control.js.map +1 -1
  92. package/dist/ui/accordion.d.ts +9 -0
  93. package/dist/ui/accordion.js +4 -0
  94. package/dist/ui/accordion.js.map +1 -0
  95. package/dist/ui/calendar.d.ts +6 -0
  96. package/dist/ui/calendar.js +4 -0
  97. package/dist/ui/calendar.js.map +1 -0
  98. package/dist/ui/carousel.d.ts +22 -0
  99. package/dist/ui/carousel.js +5 -0
  100. package/dist/ui/carousel.js.map +1 -0
  101. package/dist/ui/chart.d.ts +42 -0
  102. package/dist/ui/chart.js +229 -0
  103. package/dist/ui/chart.js.map +1 -0
  104. package/dist/ui/command.d.ts +19 -0
  105. package/dist/ui/command.js +5 -0
  106. package/dist/ui/command.js.map +1 -0
  107. package/dist/ui/context-menu.d.ts +27 -0
  108. package/dist/ui/context-menu.js +4 -0
  109. package/dist/ui/context-menu.js.map +1 -0
  110. package/dist/ui/form.d.ts +27 -0
  111. package/dist/ui/form.js +5 -0
  112. package/dist/ui/form.js.map +1 -0
  113. package/dist/ui/input-otp.d.ts +13 -0
  114. package/dist/ui/input-otp.js +4 -0
  115. package/dist/ui/input-otp.js.map +1 -0
  116. package/dist/ui/menubar.d.ts +28 -0
  117. package/dist/ui/menubar.js +4 -0
  118. package/dist/ui/menubar.js.map +1 -0
  119. package/dist/ui/navigation-menu.d.ts +17 -0
  120. package/dist/ui/navigation-menu.js +4 -0
  121. package/dist/ui/navigation-menu.js.map +1 -0
  122. package/dist/ui/resizable.d.ts +10 -0
  123. package/dist/ui/resizable.js +4 -0
  124. package/dist/ui/resizable.js.map +1 -0
  125. package/dist/ui/sidebar.d.ts +7 -0
  126. package/dist/ui/sidebar.js +9 -0
  127. package/dist/ui/sidebar.js.map +1 -0
  128. package/dist/ui.d.ts +36 -270
  129. package/dist/ui.js +2471 -6
  130. package/dist/ui.js.map +1 -1
  131. package/package.json +15 -5
  132. package/dist/chunk-CKCXQBHQ.js.map +0 -1
  133. package/dist/chunk-F7MU5T46.js +0 -5146
  134. package/dist/chunk-F7MU5T46.js.map +0 -1
  135. package/dist/chunk-H7EX6B6N.js.map +0 -1
  136. package/dist/chunk-LUB7QWGU.js.map +0 -1
  137. package/dist/chunk-OTSA5ROL.js.map +0 -1
  138. package/dist/chunk-PBNBLCC2.js +0 -84
  139. package/dist/chunk-PBNBLCC2.js.map +0 -1
  140. package/dist/chunk-RV5PMZYZ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/carousel.tsx"],"names":[],"mappings":"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","file":"chunk-56H7UFAW.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = {\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n};\n\ntype CarouselProps = {\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n orientation: \"horizontal\" | \"vertical\";\n setViewportRef: (node: HTMLDivElement | null) => void;\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n};\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction itemStep(viewport: HTMLElement, orientation: \"horizontal\" | \"vertical\") {\n const items = viewport.querySelectorAll(\"[data-slot=carousel-item]\");\n const first = items[0] as HTMLElement | undefined;\n const second = items[1] as HTMLElement | undefined;\n if (!first) {\n return orientation === \"horizontal\" ? viewport.clientWidth * 0.8 : viewport.clientHeight * 0.8;\n }\n if (second) {\n return orientation === \"horizontal\"\n ? second.offsetLeft - first.offsetLeft\n : second.offsetTop - first.offsetTop;\n }\n return orientation === \"horizontal\" ? first.offsetWidth : first.offsetHeight;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n setApi,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const [viewportEl, setViewportEl] = React.useState<HTMLDivElement | null>(null);\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const setViewportRef = React.useCallback((node: HTMLDivElement | null) => {\n viewportRef.current = node;\n setViewportEl(node);\n }, []);\n\n const updateScrollState = React.useCallback(() => {\n const el = viewportRef.current;\n if (!el) return;\n const pos = orientation === \"horizontal\" ? el.scrollLeft : el.scrollTop;\n const max =\n orientation === \"horizontal\"\n ? el.scrollWidth - el.clientWidth\n : el.scrollHeight - el.clientHeight;\n setCanScrollPrev(pos > 1);\n setCanScrollNext(pos < max - 1);\n }, [orientation]);\n\n const scrollByDir = React.useCallback(\n (dir: -1 | 1) => {\n const el = viewportRef.current;\n if (!el) return;\n const delta = itemStep(el, orientation) * dir;\n el.scrollBy({\n left: orientation === \"horizontal\" ? delta : 0,\n top: orientation === \"vertical\" ? delta : 0,\n behavior: \"smooth\",\n });\n },\n [orientation],\n );\n\n const scrollPrev = React.useCallback(() => {\n scrollByDir(-1);\n }, [scrollByDir]);\n\n const scrollNext = React.useCallback(() => {\n scrollByDir(1);\n }, [scrollByDir]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (orientation === \"horizontal\") {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [orientation, scrollNext, scrollPrev],\n );\n\n React.useEffect(() => {\n const el = viewportEl;\n if (!el) return;\n updateScrollState();\n el.addEventListener(\"scroll\", updateScrollState, { passive: true });\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n const track = el.firstElementChild;\n if (track instanceof Element) observer.observe(track);\n return () => {\n el.removeEventListener(\"scroll\", updateScrollState);\n observer.disconnect();\n };\n }, [updateScrollState, viewportEl]);\n\n React.useEffect(() => {\n setApi?.({\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n });\n }, [setApi, scrollPrev, scrollNext, canScrollPrev, canScrollNext]);\n\n return (\n <CarouselContext.Provider\n value={{\n orientation,\n setViewportRef,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n tabIndex={0}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { setViewportRef, orientation } = useCarousel();\n\n return (\n <div\n ref={setViewportRef}\n data-slot=\"carousel-viewport\"\n className={cn(\n \"scroll-smooth [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\",\n orientation === \"horizontal\"\n ? \"overflow-x-auto overflow-y-hidden snap-x snap-mandatory\"\n : \"overflow-y-auto overflow-x-hidden snap-y snap-mandatory\",\n )}\n >\n <div\n data-slot=\"carousel-content\"\n className={cn(\"flex\", orientation === \"vertical\" && \"flex-col\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\"min-w-0 shrink-0 grow-0 snap-start basis-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n type=\"button\"\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n {...props}\n className={cn(\n \"absolute z-10 size-8 rounded-full bg-background shadow-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 left-2 -translate-y-1/2\"\n : \"top-2 left-1/2 -translate-x-1/2 rotate-90\",\n !canScrollPrev && \"hidden\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n type=\"button\"\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n {...props}\n className={cn(\n \"absolute z-10 size-8 rounded-full bg-background shadow-sm\",\n orientation === \"horizontal\"\n ? \"top-1/2 right-2 -translate-y-1/2\"\n : \"bottom-2 left-1/2 -translate-x-1/2 rotate-90\",\n !canScrollNext && \"hidden\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n"]}
@@ -105,6 +105,9 @@ function minNeededTimeHm(prepMinutes, now = /* @__PURE__ */ new Date()) {
105
105
  earliest.setSeconds(0, 0);
106
106
  return `${String(earliest.getHours()).padStart(2, "0")}:${String(earliest.getMinutes()).padStart(2, "0")}`;
107
107
  }
108
+ function currentTimeHm(now = /* @__PURE__ */ new Date()) {
109
+ return `${String(now.getHours()).padStart(2, "0")}:${String(now.getMinutes()).padStart(2, "0")}`;
110
+ }
108
111
  function partialElapsed(config, booking, now = /* @__PURE__ */ new Date()) {
109
112
  const today = todayLocalYmd(now);
110
113
  if (config.chargeBy === "months") {
@@ -191,13 +194,21 @@ function applyBookingScheduleDefaults(config, booking, options) {
191
194
  }
192
195
  if (config.chargeBy === "quantity") {
193
196
  if (!booking.scheduleDate) patch.scheduleDate = today;
194
- let time = booking.scheduleTime || "09:00";
197
+ const date = patch.scheduleDate ?? booking.scheduleDate ?? today;
198
+ let time = booking.scheduleTime || currentTimeHm(now);
195
199
  const prep = options?.preparationMinutes ?? 0;
196
- if (prep > 0 && (patch.scheduleDate ?? booking.scheduleDate ?? today) === today) {
200
+ if (prep > 0 && date === today) {
197
201
  const floor = minNeededTimeHm(prep, now);
198
202
  if (time < floor) time = floor;
199
203
  }
200
- if (!booking.scheduleTime) patch.scheduleTime = time;
204
+ if (time !== booking.scheduleTime) {
205
+ patch.scheduleTime = time;
206
+ patch.scheduleEndTime = time;
207
+ }
208
+ if (!booking.scheduleDate) {
209
+ patch.startDate = date;
210
+ patch.endDate = date;
211
+ }
201
212
  if (!booking.itemQuantity) patch.itemQuantity = 1;
202
213
  return patch;
203
214
  }
@@ -205,5 +216,5 @@ function applyBookingScheduleDefaults(config, booking, options) {
205
216
  }
206
217
 
207
218
  export { IS_PARTIAL_MONTH, MIN_MONTH, MIN_WEEK_START, PRICING_TODAY, addDays, addMonthsYm, applyBookingScheduleDefaults, computeMinMonth, computeMinWeekStart, currentMonthYm, currentWeekStart, diffDays, formatPartialElapsedLabel, localDateYmd, monthCount, monthLabel, partialElapsed, pricingTodayYmd, todayLocalYmd, weekCountBetween, weekRangeLabel };
208
- //# sourceMappingURL=chunk-OTSA5ROL.js.map
209
- //# sourceMappingURL=chunk-OTSA5ROL.js.map
219
+ //# sourceMappingURL=chunk-5CUJZNUC.js.map
220
+ //# sourceMappingURL=chunk-5CUJZNUC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/booking-schedule.ts"],"names":[],"mappings":"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","file":"chunk-5CUJZNUC.js","sourcesContent":["/**\n * Date / schedule helpers used by booking-schedule calendars.\n */\n\nexport type RepeatType = \"none\" | \"daily\" | \"weekly\" | \"monthly\";\nexport type BookingMode = \"slots\" | \"schedule\";\nexport type ScheduleChargeBy = \"minutes\" | \"hours\" | \"days\" | \"weeks\" | \"months\" | \"quantity\";\n\nexport type PartialElapsedUnit = \"days\" | \"hours\" | \"minutes\";\n\nexport interface PartialElapsed {\n amount: number;\n unit: PartialElapsedUnit;\n}\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 scheduleEndTime: 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 oneDayBooking?: boolean;\n}\n\nexport interface ScheduleDefaultsConfig {\n chargeBy: ScheduleChargeBy;\n}\n\n/** YYYY-MM-DD in local timezone (never UTC ISO split). */\nexport function localDateYmd(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 todayLocalYmd(now: Date = new Date()): string {\n return localDateYmd(now);\n}\n\n/** @deprecated Prefer `todayLocalYmd()` — kept for existing imports. */\nexport function pricingTodayYmd(now: Date = new Date()): string {\n return todayLocalYmd(now);\n}\n\nexport const PRICING_TODAY = todayLocalYmd();\n\nexport function currentMonthYm(now: Date = new Date()): string {\n return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, \"0\")}`;\n}\n\n/** Monday of the current local week (YYYY-MM-DD). */\nexport function currentWeekStart(now: Date = new Date()): string {\n const d = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const day = d.getDay();\n const offset = day === 0 ? -6 : 1 - day;\n d.setDate(d.getDate() + offset);\n return localDateYmd(d);\n}\n\n/** First full month default: next month if today is past the 1st, else current month. */\nexport function computeMinMonth(now: Date = new Date()): string {\n if (now.getDate() === 1) {\n return currentMonthYm(now);\n }\n const n = new Date(now.getFullYear(), now.getMonth() + 1, 1);\n return currentMonthYm(n);\n}\n\n/** First full week default: next Monday unless today is already Monday. */\nexport function computeMinWeekStart(now: Date = new Date()): string {\n const day = now.getDay();\n if (day === 1) return todayLocalYmd(now);\n const d = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const skip = day === 0 ? 1 : 8 - day;\n d.setDate(d.getDate() + skip);\n return localDateYmd(d);\n}\n\nexport const MIN_MONTH = computeMinMonth();\nexport const MIN_WEEK_START = computeMinWeekStart();\n\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 + \"T00:00:00\").getTime())) return \"—\";\n const end = parseDateOnly(weekFrom);\n end.setDate(end.getDate() + weekCount * 7 - 1);\n const s = parseDateOnly(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\n/** Inclusive number of Mon-anchored weeks from `weekFrom` through `weekToMon`. */\nexport function weekCountBetween(weekFrom: string, weekToMon: string): number {\n if (!weekFrom || !weekToMon) return 0;\n if (weekToMon < weekFrom) return 1;\n return Math.floor(diffDays(weekFrom, weekToMon) / 7) + 1;\n}\n\nexport function addMonthsYm(ym: string, delta: number): string {\n const [y, m] = ym.split(\"-\").map(Number);\n const d = new Date(y, (m ?? 1) - 1 + delta, 1);\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}`;\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\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 localDateYmd(d);\n}\n\nfunction hmMinutes(hm: string): number | null {\n const [h, m] = hm.split(\":\").map(Number);\n if (!Number.isFinite(h) || !Number.isFinite(m)) return null;\n return h * 60 + m;\n}\n\nfunction isSlotCharge(chargeBy: ScheduleChargeBy): boolean {\n return chargeBy === \"hours\" || chargeBy === \"minutes\";\n}\n\nfunction isPeriodCharge(chargeBy: ScheduleChargeBy): boolean {\n return chargeBy === \"days\" || chargeBy === \"weeks\" || chargeBy === \"months\";\n}\n\nfunction snapScheduleEndTime(from: string, end: string, chargeBy: ScheduleChargeBy): string {\n if (end && end > from) return end;\n const fromMin = hmMinutes(from);\n if (fromMin == null) return end || \"10:00\";\n const delta = chargeBy === \"minutes\" ? 1 : 60;\n const next = fromMin + delta;\n return `${String(Math.floor(next / 60)).padStart(2, \"0\")}:${String(next % 60).padStart(2, \"0\")}`;\n}\n\nfunction minNeededTimeHm(prepMinutes: number, now: Date = new Date()): string {\n const earliest = new Date(now.getTime() + prepMinutes * 60_000);\n if (earliest.getSeconds() > 0 || earliest.getMilliseconds() > 0) {\n earliest.setMinutes(earliest.getMinutes() + 1);\n }\n earliest.setSeconds(0, 0);\n return `${String(earliest.getHours()).padStart(2, \"0\")}:${String(earliest.getMinutes()).padStart(2, \"0\")}`;\n}\n\nfunction currentTimeHm(now: Date = new Date()): string {\n return `${String(now.getHours()).padStart(2, \"0\")}:${String(now.getMinutes()).padStart(2, \"0\")}`;\n}\n\n/** Elapsed time in the selected in-progress booking period, if any. */\nexport function partialElapsed(\n config: ScheduleDefaultsConfig,\n booking: BookingState,\n now: Date = new Date(),\n): PartialElapsed | null {\n const today = todayLocalYmd(now);\n\n if (config.chargeBy === \"months\") {\n const cur = currentMonthYm(now);\n const min = computeMinMonth(now);\n if (!booking.monthFrom || booking.monthFrom !== cur || booking.monthFrom >= min) return null;\n const days = diffDays(`${booking.monthFrom}-01`, today);\n return days > 0 ? { amount: days, unit: \"days\" } : null;\n }\n\n if (config.chargeBy === \"weeks\") {\n const cur = currentWeekStart(now);\n const min = computeMinWeekStart(now);\n if (!booking.weekFrom || booking.weekFrom !== cur || booking.weekFrom >= min) return null;\n const days = diffDays(booking.weekFrom, today);\n return days > 0 ? { amount: days, unit: \"days\" } : null;\n }\n\n if (config.chargeBy === \"days\") {\n if (!booking.startDate) return null;\n if (booking.startDate < today) {\n const days = diffDays(booking.startDate, today);\n return days > 0 ? { amount: days, unit: \"days\" } : null;\n }\n if (booking.oneDayBooking !== false && booking.startDate === today) {\n const hours = now.getHours() + now.getMinutes() / 60;\n const rounded = Math.floor(hours);\n return rounded > 0 ? { amount: rounded, unit: \"hours\" } : null;\n }\n return null;\n }\n\n if (isSlotCharge(config.chargeBy)) {\n if (booking.scheduleDate !== today || !booking.scheduleTime) return null;\n const startMin = hmMinutes(booking.scheduleTime);\n const nowMin = now.getHours() * 60 + now.getMinutes();\n if (startMin == null || startMin >= nowMin) return null;\n const elapsed = nowMin - startMin;\n if (config.chargeBy === \"minutes\") {\n return elapsed > 0 ? { amount: elapsed, unit: \"minutes\" } : null;\n }\n const hours = Math.floor(elapsed / 60);\n return hours > 0 ? { amount: hours, unit: \"hours\" } : null;\n }\n\n return null;\n}\n\nexport function formatPartialElapsedLabel(elapsed: PartialElapsed): string {\n const { amount, unit } = elapsed;\n if (unit === \"days\") return `${amount} day${amount !== 1 ? \"s\" : \"\"}`;\n if (unit === \"hours\") return `${amount} hour${amount !== 1 ? \"s\" : \"\"}`;\n return `${amount} minute${amount !== 1 ? \"s\" : \"\"}`;\n}\n\n/** Patch empty schedule fields with tier-appropriate defaults. */\nexport function applyBookingScheduleDefaults(\n config: ScheduleDefaultsConfig,\n booking: BookingState,\n options?: { preparationMinutes?: number; now?: Date },\n): Partial<BookingState> {\n const now = options?.now ?? new Date();\n const today = todayLocalYmd(now);\n const patch: Partial<BookingState> = {};\n\n if (isSlotCharge(config.chargeBy)) {\n if (!booking.scheduleDate) patch.scheduleDate = today;\n if (!booking.scheduleTime) patch.scheduleTime = \"09:00\";\n const from = patch.scheduleTime ?? booking.scheduleTime ?? \"09:00\";\n if (!booking.scheduleEndTime) {\n patch.scheduleEndTime = snapScheduleEndTime(from, \"\", config.chargeBy);\n }\n return patch;\n }\n\n if (config.chargeBy === \"days\") {\n if (!booking.startDate) {\n patch.startDate = today;\n patch.endDate = addDays(today, 1);\n patch.oneDayBooking = true;\n } else if (!booking.endDate) {\n patch.endDate = addDays(booking.startDate, 1);\n }\n if (booking.oneDayBooking === undefined) patch.oneDayBooking = true;\n return patch;\n }\n\n if (config.chargeBy === \"weeks\") {\n if (!booking.weekFrom) patch.weekFrom = computeMinWeekStart(now);\n if (!booking.weekCount) patch.weekCount = 1;\n return patch;\n }\n\n if (config.chargeBy === \"months\") {\n const min = computeMinMonth(now);\n if (!booking.monthFrom) patch.monthFrom = min;\n if (!booking.monthTo) patch.monthTo = patch.monthFrom ?? booking.monthFrom ?? min;\n return patch;\n }\n\n if (config.chargeBy === \"quantity\") {\n if (!booking.scheduleDate) patch.scheduleDate = today;\n const date = patch.scheduleDate ?? booking.scheduleDate ?? today;\n let time = booking.scheduleTime || currentTimeHm(now);\n const prep = options?.preparationMinutes ?? 0;\n if (prep > 0 && date === today) {\n const floor = minNeededTimeHm(prep, now);\n if (time < floor) time = floor;\n }\n if (time !== booking.scheduleTime) {\n patch.scheduleTime = time;\n patch.scheduleEndTime = time;\n }\n if (!booking.scheduleDate) {\n patch.startDate = date;\n patch.endDate = date;\n }\n if (!booking.itemQuantity) patch.itemQuantity = 1;\n return patch;\n }\n\n return patch;\n}\n"]}
@@ -0,0 +1,60 @@
1
+ import { cn } from './chunk-DMPSQ22Q.js';
2
+ import { ChevronRight, ChevronLeft } from 'lucide-react';
3
+ import { DayPicker } from 'react-day-picker';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ function Calendar({
7
+ className,
8
+ classNames,
9
+ showOutsideDays = true,
10
+ ...props
11
+ }) {
12
+ return /* @__PURE__ */ jsx(
13
+ DayPicker,
14
+ {
15
+ showOutsideDays,
16
+ className: cn("p-3", className),
17
+ classNames: {
18
+ months: "flex flex-col sm:flex-row gap-2",
19
+ month: "flex flex-col gap-4",
20
+ caption: "flex justify-center pt-1 relative items-center w-full",
21
+ caption_label: "text-sm font-medium",
22
+ nav: "flex items-center gap-1",
23
+ nav_button: cn(
24
+ "inline-flex size-7 items-center justify-center rounded-md border border-white/15 bg-card/5 p-0 text-popover-foreground transition-colors hover:bg-card/10 hover:text-white"
25
+ ),
26
+ nav_button_previous: "absolute left-1",
27
+ nav_button_next: "absolute right-1",
28
+ table: "w-full border-collapse space-x-1",
29
+ head_row: "flex",
30
+ head_cell: "w-9 rounded-md font-normal text-[0.8rem] text-popover-foreground/50",
31
+ row: "flex w-full mt-2",
32
+ cell: cn(
33
+ "relative p-0 text-center text-sm focus-within:relative focus-within:z-20",
34
+ props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md [&:has([aria-selected])]:bg-card/10" : "[&:has([aria-selected])]:rounded-md"
35
+ ),
36
+ day: cn(
37
+ "inline-flex size-9 items-center justify-center rounded-md p-0 text-sm font-normal text-popover-foreground transition-colors hover:bg-card/10 hover:text-white aria-selected:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/25"
38
+ ),
39
+ day_range_start: "day-range-start rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground",
40
+ day_range_end: "day-range-end rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground",
41
+ day_selected: "rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground focus:bg-card focus:text-foreground focus-visible:ring-0",
42
+ day_today: "rounded-md bg-card/10 font-medium text-popover-foreground aria-selected:bg-card aria-selected:text-foreground",
43
+ day_outside: "day-outside text-popover-foreground/30 aria-selected:bg-card/15 aria-selected:text-popover-foreground/50",
44
+ day_disabled: "text-popover-foreground/30 opacity-50",
45
+ day_range_middle: "rounded-none aria-selected:bg-card/10 aria-selected:text-popover-foreground",
46
+ day_hidden: "invisible",
47
+ ...classNames
48
+ },
49
+ components: {
50
+ IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */ jsx(ChevronLeft, { className: cn("size-4", className2), strokeWidth: 2, ...props2 }),
51
+ IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */ jsx(ChevronRight, { className: cn("size-4", className2), strokeWidth: 2, ...props2 })
52
+ },
53
+ ...props
54
+ }
55
+ );
56
+ }
57
+
58
+ export { Calendar };
59
+ //# sourceMappingURL=chunk-5HOK5JHR.js.map
60
+ //# sourceMappingURL=chunk-5HOK5JHR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/calendar.tsx"],"names":["className","props"],"mappings":";;;;;AAQA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,GAAG;AACL,CAAA,EAA2C;AACzC,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,eAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,SAAS,CAAA;AAAA,MAC9B,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,iCAAA;AAAA,QACR,KAAA,EAAO,qBAAA;AAAA,QACP,OAAA,EAAS,uDAAA;AAAA,QACT,aAAA,EAAe,qBAAA;AAAA,QACf,GAAA,EAAK,yBAAA;AAAA,QACL,UAAA,EAAY,EAAA;AAAA,UACV;AAAA,SACF;AAAA,QACA,mBAAA,EAAqB,iBAAA;AAAA,QACrB,eAAA,EAAiB,kBAAA;AAAA,QACjB,KAAA,EAAO,kCAAA;AAAA,QACP,QAAA,EAAU,MAAA;AAAA,QACV,SAAA,EACE,qEAAA;AAAA,QACF,GAAA,EAAK,kBAAA;AAAA,QACL,IAAA,EAAM,EAAA;AAAA,UACJ,0EAAA;AAAA,UACA,KAAA,CAAM,IAAA,KAAS,OAAA,GACX,0MAAA,GACA;AAAA,SACN;AAAA,QACA,GAAA,EAAK,EAAA;AAAA,UACH;AAAA,SACF;AAAA,QACA,eAAA,EACE,oGAAA;AAAA,QACF,aAAA,EACE,kGAAA;AAAA,QACF,YAAA,EACE,6IAAA;AAAA,QACF,SAAA,EACE,+GAAA;AAAA,QACF,WAAA,EACE,0GAAA;AAAA,QACF,YAAA,EAAc,uCAAA;AAAA,QACd,gBAAA,EACE,6EAAA;AAAA,QACF,UAAA,EAAY,WAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,UAAU,CAAC,EAAE,WAAAA,UAAAA,EAAW,GAAGC,QAAM,qBAC/B,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,GAAG,QAAA,EAAUD,UAAS,GAAG,WAAA,EAAa,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,QAE9E,WAAW,CAAC,EAAE,WAAAD,UAAAA,EAAW,GAAGC,QAAM,qBAChC,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,GAAG,QAAA,EAAUD,UAAS,GAAG,WAAA,EAAa,CAAA,EAAI,GAAGC,MAAAA,EAAO;AAAA,OAEjF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-5HOK5JHR.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { cn } from \"./utils\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row gap-2\",\n month: \"flex flex-col gap-4\",\n caption: \"flex justify-center pt-1 relative items-center w-full\",\n caption_label: \"text-sm font-medium\",\n nav: \"flex items-center gap-1\",\n nav_button: cn(\n \"inline-flex size-7 items-center justify-center rounded-md border border-white/15 bg-card/5 p-0 text-popover-foreground transition-colors hover:bg-card/10 hover:text-white\",\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-x-1\",\n head_row: \"flex\",\n head_cell:\n \"w-9 rounded-md font-normal text-[0.8rem] text-popover-foreground/50\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md [&:has([aria-selected])]:bg-card/10\"\n : \"[&:has([aria-selected])]:rounded-md\",\n ),\n day: cn(\n \"inline-flex size-9 items-center justify-center rounded-md p-0 text-sm font-normal text-popover-foreground transition-colors hover:bg-card/10 hover:text-white aria-selected:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/25\",\n ),\n day_range_start:\n \"day-range-start rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground\",\n day_range_end:\n \"day-range-end rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground\",\n day_selected:\n \"rounded-md bg-card font-medium text-foreground hover:bg-card hover:text-foreground focus:bg-card focus:text-foreground focus-visible:ring-0\",\n day_today:\n \"rounded-md bg-card/10 font-medium text-popover-foreground aria-selected:bg-card aria-selected:text-foreground\",\n day_outside:\n \"day-outside text-popover-foreground/30 aria-selected:bg-card/15 aria-selected:text-popover-foreground/50\",\n day_disabled: \"text-popover-foreground/30 opacity-50\",\n day_range_middle:\n \"rounded-none aria-selected:bg-card/10 aria-selected:text-popover-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn(\"size-4\", className)} strokeWidth={2} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn(\"size-4\", className)} strokeWidth={2} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n"]}