react-beauty-calendar 2.0.1 → 2.0.4

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 (77) hide show
  1. package/README.md +6 -0
  2. package/dist/@types/booking.d.ts +1 -0
  3. package/dist/@types/calendar-instance.d.ts +39 -7
  4. package/dist/@types/calendar.d.ts +1 -2
  5. package/dist/@types/index.d.ts +2 -2
  6. package/dist/@types/profile.d.ts +1 -1
  7. package/dist/@types/user.d.ts +4 -1
  8. package/dist/build/assets/main.css +1 -1
  9. package/dist/build/main.cjs.js +60 -70
  10. package/dist/build/main.es.js +10762 -8422
  11. package/dist/components/ui/Avatar.d.ts +10 -0
  12. package/dist/components/ui/Button-group.d.ts +11 -0
  13. package/dist/components/ui/Dialog.d.ts +14 -0
  14. package/dist/components/ui/Sidebar.d.ts +70 -0
  15. package/dist/components/ui/sheet.d.ts +12 -0
  16. package/dist/components/ui/skeleton.d.ts +2 -0
  17. package/dist/constants/booking-view-type.constant.d.ts +2 -0
  18. package/dist/constants/card.constant.d.ts +7 -0
  19. package/dist/constants/index.d.ts +4 -10
  20. package/dist/constants/month.constant.d.ts +12 -0
  21. package/dist/constants/user-colors-constants.d.ts +40 -0
  22. package/dist/context/drag/useDragStateAtStore.d.ts +0 -2
  23. package/dist/context/global/booking-info/booking-info.d.ts +1 -0
  24. package/dist/context/global/config/config-store.d.ts +7 -2
  25. package/dist/context/global/days-and-week/day-and-week-store.d.ts +1 -0
  26. package/dist/context/new-event/new-event-store.d.ts +2 -1
  27. package/dist/context/users-info/users-info-store.d.ts +3 -3
  28. package/dist/core/Root.d.ts +1 -1
  29. package/dist/core/avatar/UserAvatar.d.ts +6 -0
  30. package/dist/core/booking-card/BookingCard.d.ts +1 -1
  31. package/dist/core/booking-card/BookingCardOnResize.d.ts +1 -1
  32. package/dist/core/booking-card/CardContent.d.ts +1 -1
  33. package/dist/core/booking-creation-dialog/BookingCreationDialog.d.ts +1 -1
  34. package/dist/core/booking-creation-dialog/ConfirmationModal.d.ts +10 -0
  35. package/dist/core/calendar/AllDayCard.d.ts +2 -0
  36. package/dist/core/calendar/CalendarDays.d.ts +1 -1
  37. package/dist/core/calendar/DateCalendarIndicator.d.ts +1 -1
  38. package/dist/core/calendar/ScheduleSlots.d.ts +3 -9
  39. package/dist/core/calendar/SlotRender.d.ts +1 -1
  40. package/dist/core/calendar/SlotRenderMonth.d.ts +3 -0
  41. package/dist/core/card-slots/CardBlockContent.d.ts +4 -3
  42. package/dist/core/card-slots/CardResizeEventOpened.d.ts +12 -0
  43. package/dist/core/card-slots/MonthIndicator.d.ts +8 -0
  44. package/dist/core/card-slots/ResizableTimeSlot.d.ts +2 -16
  45. package/dist/core/card-slots/SlotTrigger.d.ts +2 -2
  46. package/dist/core/card-slots/TimeInfo.d.ts +2 -4
  47. package/dist/core/card-slots/UniSlot.d.ts +1 -1
  48. package/dist/core/header-calendar/HeaderTodayAction.d.ts +1 -1
  49. package/dist/core/sidebar/Sidebar.d.ts +8 -0
  50. package/dist/core/sidebar/SidebarWrapper.d.ts +7 -0
  51. package/dist/core/slots/Card.d.ts +5 -4
  52. package/dist/core/table-view-type/TableViewType.d.ts +2 -2
  53. package/dist/hooks/useResizableCardHook.d.ts +3 -2
  54. package/dist/mock/booking-mock.d.ts +8 -2
  55. package/dist/user1.webp +0 -0
  56. package/dist/user2.jpeg +0 -0
  57. package/dist/user3.png +0 -0
  58. package/dist/user4.webp +0 -0
  59. package/dist/utils/blockSlotDays.d.ts +12 -0
  60. package/dist/utils/date.utils.d.ts +9 -2
  61. package/dist/utils/forward.d.ts +9 -6
  62. package/dist/utils/index.d.ts +3 -2
  63. package/dist/utils/permissions.d.ts +6 -0
  64. package/dist/utils/props.d.ts +38 -20
  65. package/dist/utils/string.utils.d.ts +1 -0
  66. package/dist/utils/types.d.ts +5 -1
  67. package/package.json +4 -2
  68. package/dist/@types/working-time.d.ts +0 -10
  69. package/dist/constants/day-time-starter.constant.d.ts +0 -2
  70. package/dist/constants/payment.constant.d.ts +0 -11
  71. package/dist/constants/resize-base-value.constant.d.ts +0 -1
  72. package/dist/constants/side-options.constant.d.ts +0 -1
  73. package/dist/constants/system-colors.constant.d.ts +0 -40
  74. package/dist/constants/url-param.constant.d.ts +0 -6
  75. package/dist/constants/week.constant.d.ts +0 -3
  76. package/dist/core/calendar/TableDayOfWeekColumn.d.ts +0 -6
  77. package/dist/core/slots/CardContentWithResize.d.ts +0 -17
package/README.md CHANGED
@@ -159,3 +159,9 @@ For bug reports and feature requests, please use the issue tracker of this repos
159
159
  ## License
160
160
 
161
161
  This project is licensed under the [MIT License](LICENSE) 2025.
162
+
163
+ Biome lint
164
+
165
+ npx biome format --write
166
+ npx biome check --write
167
+ npx biome ci .
@@ -6,6 +6,7 @@ export interface Booking {
6
6
  startAt: Date;
7
7
  finishAt: Date;
8
8
  disabledResize?: DisabledResize;
9
+ isUpdating?: boolean;
9
10
  overflow?: boolean;
10
11
  nodes?: string[];
11
12
  }
@@ -6,7 +6,7 @@ import { ActionType } from '../main';
6
6
  import { BlockTimeData } from '../utils/props';
7
7
  import { Booking, BookingDateAndTime, BookingViewType } from './booking';
8
8
  import { ViewModes } from './calendar';
9
- import { UserProfileStatus } from './user';
9
+ import { UserAccessProfile } from './user';
10
10
  export interface CalendarInstanceRef extends CalendarRootRef {
11
11
  getCalendar: () => JSX.Element;
12
12
  }
@@ -22,19 +22,51 @@ export interface CalendarRootRef {
22
22
  toggleUserVisibility: (userId: string, status: boolean) => void;
23
23
  }
24
24
  export type UseBookingInstanceProps = RootProps;
25
+ export interface Range {
26
+ start: Date | null;
27
+ end: Date | null;
28
+ }
29
+ export interface BusinessInterval {
30
+ range: Range;
31
+ periods: Periods[];
32
+ userIds: string[];
33
+ }
34
+ export interface Periods {
35
+ from: string;
36
+ to: string;
37
+ }
38
+ export interface UnavailablePeriods {
39
+ day: Date;
40
+ periods?: Periods[];
41
+ allDay?: boolean;
42
+ usersId: string[];
43
+ }
44
+ export interface OnlyBusinessDays {
45
+ status: boolean;
46
+ hidden: boolean;
47
+ }
48
+ export interface Sidebar {
49
+ content: JSX.Element;
50
+ width?: string;
51
+ }
25
52
  export interface RootProps extends RootEventsProps {
26
53
  bookings: Booking[];
27
- isTimeInfoVisible?: boolean;
28
- startView?: BookingViewType;
29
- systemColor?: SystemColor;
54
+ activeUser: UserAccessProfile;
30
55
  createBookingModal: JSX.Element;
31
56
  viewModes: ViewModes;
32
- users?: UserProfileStatus[];
33
- tableAccessors: ColumnDef<unknown>[];
34
57
  operationalHours: {
35
58
  start: number;
36
59
  finish: number;
37
60
  };
61
+ tableAccessors: ColumnDef<unknown>[];
62
+ onlyBusinessDays?: OnlyBusinessDays;
63
+ unavailablePeriods?: UnavailablePeriods[];
64
+ businessInterval?: BusinessInterval[];
65
+ isTimeInfoVisible?: boolean;
66
+ startView?: BookingViewType;
67
+ systemColor?: SystemColor;
68
+ users?: UserAccessProfile[];
69
+ sidebar?: Sidebar;
38
70
  ref?: Ref<CalendarRootRef>;
39
71
  }
40
72
  export interface OnSlotClick {
@@ -45,7 +77,7 @@ export interface RootEventsProps {
45
77
  onChangeViewType: (bookingViewType: BookingViewType) => void;
46
78
  onTodayClick: (date: Date) => void;
47
79
  onHeaderDayClick?: (date: Date, bookingViewType: BookingViewType) => void;
48
- onCardDropCallback: (booking: Booking, overId: string, slotData: BookingDateAndTime, newBooking: Booking) => Promise<void>;
80
+ onCardDrop: (booking: Booking, overId?: string, slotData?: BookingDateAndTime, newBooking?: Booking) => Promise<void>;
49
81
  onCardResizeEnd: (booking: Partial<Booking>) => Promise<void>;
50
82
  onDayChange: (date: Date[], actionType: ActionType) => void;
51
83
  onModalClose: () => void;
@@ -1,3 +1,2 @@
1
1
  import { BookingViewType } from './booking';
2
- type ViewModes = BookingViewType[];
3
- export type { ViewModes };
2
+ export type ViewModes = BookingViewType[];
@@ -1,5 +1,5 @@
1
1
  import { Booking, BookingDateAndTime, Bookings } from './booking';
2
2
  import { ViewModes } from './calendar';
3
3
  import { Profile } from './profile';
4
- import { User, UserProfileStatus } from './user';
5
- export type { Booking, Bookings, BookingDateAndTime, Profile, User, ViewModes, UserProfileStatus, };
4
+ import { User, UserAccessProfile } from './user';
5
+ export type { Booking, Bookings, BookingDateAndTime, Profile, User, ViewModes, UserAccessProfile, };
@@ -5,5 +5,5 @@ export interface Profile {
5
5
  color: UserColor;
6
6
  email?: string;
7
7
  phoneNumber?: string;
8
- profilePicture?: string;
8
+ photo?: string;
9
9
  }
@@ -1,4 +1,6 @@
1
1
  import { Profile } from './profile';
2
+ export declare const PERMISSIONS: readonly ["booking:create:self", "booking:create:any", "booking:drag:self", "booking:drag:any", "booking:resize:self", "booking:resize:any"];
3
+ export type Permissions = (typeof PERMISSIONS)[number];
2
4
  export interface User {
3
5
  id: string;
4
6
  profile: Profile;
@@ -6,6 +8,7 @@ export interface User {
6
8
  createdAt: Date;
7
9
  }
8
10
  export type UserProfile = Pick<User, "id" | "profile">;
9
- export type UserProfileStatus = Pick<User, "id" | "profile"> & {
11
+ export type UserAccessProfile = Pick<User, "id" | "profile"> & {
10
12
  status: boolean;
13
+ permissions: readonly Permissions[] | Permissions[];
11
14
  };
@@ -1 +1 @@
1
- #root{margin:0 auto;text-align:center}.react-resizable{position:relative}.react-resizable:hover .react-resizable-handle-s,.show-handle.react-resizable .react-resizable-handle-s,.react-resizable:hover .react-resizable-handle-n,.show-handle.react-resizable .react-resizable-handle-n{display:inline;left:.5em;width:93%}.react-resizable.slot-resizable>.react-resizable-handle{width:100%;height:100%}.react-resizable.slot-resizable>.react-resizable-handle.react-resizable-handle-se{cursor:default;background-image:none}.react-resizable.slot-resizable>.react-resizable-handle.react-resizable-handle-se:hover{cursor:default;background-image:none}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;box-sizing:border-box;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='SVGRepo_bgCarrier' stroke-width='0'%3E%3C/g%3E%3Cg id='SVGRepo_tracerCarrier' stroke-linecap='round' stroke-linejoin='round'%3E%3C/g%3E%3Cg id='SVGRepo_iconCarrier'%3E %3Cpath d='M5 14H19M5 10H19' stroke='%23fff' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E%3C/svg%3E");background-position:center}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;left:0;cursor:se-resize;z-index:100}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;cursor:ns-resize}.react-resizable-handle-n{display:none;top:-5px;z-index:100}.react-resizable-handle-s{display:none;bottom:-5px;z-index:100}.rdp-day:hover{background-color:#edecec!important;color:#1f1f1f!important;border-radius:50%!important}.rdp-chevron{fill:#5403d6!important}.rdp-day.rdp-today{color:#fff!important;border-radius:50%;background-color:#8574e5!important}.rdp-day::selection{background-color:#8574e5!important;color:red!important}.rdp-day.rdp-selected>.rdp-day_button{background:#d5d0f7;color:#322290;border:none}.shadow{box-shadow:2px 2px 6px 1px #0000004d}@keyframes spinBorder{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.animate-spin-border{animation:spinBorder 3s linear infinite;background-size:200% 200%}.calendarHolder_parent_content{display:flex;flex-direction:column;z-index:100;overflow:auto}.header_actions{display:flex;flex-direction:row;align-items:center;gap:.25rem}.headerCalendar_mobile{display:flex;flex-direction:column;justify-content:space-between;width:100%;padding-top:.5rem;background-color:#fff}.headerCalendar_mobile_month{align-content:center;z-index:50;text-align:center}.headerCalendar_mobile_month_span{color:#1e2939;font-weight:700}.headerCalendar_mobile_actions{gap:.5rem;z-index:50;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.headerCalendar{display:flex;justify-content:space-between;width:100%;margin-top:.5rem;background-color:#fff;position:relative}.headerCalendar_actions{display:flex;flex-direction:row;align-items:center;z-index:50}.headerCalendar_month{align-content:center;width:max-content;position:absolute;z-index:50;top:50%;left:50%;right:50%;transform:translate(-50%,-50%)}.headerCalendar_month_span{color:#1e2939;font-weight:700}.isDraggingCard{height:2rem;z-index:100;position:relative}.header_day_actions{display:flex;flex-direction:row;justify-content:center;gap:3px}.header_day_actions_button{display:flex;background-color:#fff;border:none;border-radius:100%;padding-block:.75rem;padding-inline:.75rem}.header_day_actions_button:hover{background-color:#f3f4f6}.header_day_actions_button:focus{background-color:#e5e7eb;inherits:false;initial-value:solid;outline-width:0px}.header_day_actions_button_icon{height:1rem;width:1rem;color:#6a7282}.calendarCore_cell{border:1px solid #d1d5dc;padding-block:.5rem;padding-inline:1rem;text-align:center;width:.75rem;min-width:4rem}.calendarCore_actions{position:absolute;top:-6px;left:5px;right:1.25rem;background-color:#fff;text-align:end}.bookingCard_content{display:grid;grid-template-columns:25px 1fr;align-items:flex-start;margin-bottom:.25rem;padding-bottom:.25rem}.bookingCard_content:last-child{margin-bottom:0;padding-bottom:0}.slot{background-color:#fff;border:1px solid #d1d5dc;min-width:2rem;padding:0;position:relative;border-bottom:none;border-top:none}.slot_disabled{background-color:#e5e7eb;border:none}.daysOfWeek{padding:.5rem;min-width:5.5rem;width:100vw;z-index:99;align-content:end}.daysOfWeek_parent{display:flex;flex-direction:column;gap:3px;color:#6a7282;text-align:center}.daysOfWeek_indicator{border-radius:100%;width:2rem;height:2rem}.daysOfWeek_day_today{color:#fff;padding:.25rem}.daysOfWeek_table{min-width:100%;width:100%;background-color:#fff}.daysOfWeek_table thead th{position:sticky;top:0;background:#fff;z-index:100}.daysOfWeek_emptySlot{max-width:4rem;min-width:4rem;width:4rem}.calendarHeader{max-width:4rem;min-width:4rem;width:1rem}@media screen and (max-width: 1189px){.calendarHeader{max-width:4rem;min-width:4rem}}.slotTrigger_core{position:relative;width:100%;height:2rem;min-width:6.38em}.slotTrigger_core_day{width:100%}.hovering_slotTrigger_core:hover{background-color:#ffffff93}.card_content_core{z-index:98;position:absolute}.cardContent_resizable{position:absolute;width:100%;top:0}.cardContent_render{border:1px solid white;border-color:#007fff;border-left-width:thick;border-radius:.25rem;overflow:hidden;position:absolute;z-index:100;top:0;right:0;bottom:0;left:0}.cardContent_render_dragging,.focus-effect:hover,.cardContent_render:hover{border-top:1px solid rgb(255,89,6);border-right:1px solid rgb(255,89,6);border-bottom:1px solid rgb(255,89,6);border-left:5px solid rgb(255,89,6)}.timeInfo_core{width:100%;height:100%;z-index:-1px;align-content:center;border-radius:.25rem;cursor:default}.timeInfo_core_timeParent{border-radius:.25rem;width:100%;height:100%;align-content:center;position:relative;z-index:5}.timeInfo_core_timeParent_time{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.timeInfo_core_dragging{height:100%;align-content:center}.timeIndicator_today{position:absolute;right:0;z-index:5}.timeIndicator_today_circle:before{content:"";display:block;position:absolute;top:-2px;left:-1.3px;border-radius:100%;width:.5rem;height:.5rem;background-color:#000}.today_first_day{position:absolute;left:0;top:-3px;cursor:pointer}.first_day_slot{position:absolute;top:-1.6em;z-index:50}.dropdownLabelContent{display:flex;justify-content:space-between;align-items:center;border-radius:.5rem}.dropdownLabelContent:hover{background-color:#f3f4f6}.dropdownLabelContent_dropdownLabel{width:100%;padding:1rem}.dropdownLabelContent_dropdownLabel:hover{cursor:move}.dropdownLabelContent_close:hover{cursor:pointer;color:#6a7282}.booking_card_content_container{position:relative;width:100%;height:100%}.booking_card_content{display:flex;flex-direction:column;height:100%;color:#fff;justify-content:flex-start;align-items:flex-start}.booking_info{height:1.8rem;align-content:center}@property --progress{syntax: "<number>"; initial-value: 0; inherits: false;}.Draggable{position:relative;transition:transform .25s ease}.Draggable>div{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;border-radius:5px;box-shadow:var(--box-shadow);transform:translate3d(var(--translate-x, 0),var(--translate-y, 0),0) scale(var(--scale, 1));transition:box-shadow .3s ease}.Draggable:not(.handle)>div{touch-action:none;cursor:grab}.Draggable:not(.handle)>div:focus-visible:not(.active :is(.Draggable:not(.handle)>div)){box-shadow:0 0 0 3px #4c9ffe}.Draggable.handle>div{--action-background: rgba(255, 255, 255, .1)}.Draggable.handle>div>svg{margin-right:5px}.Draggable.handle>div>div{margin-right:-10px}.Draggable img{-webkit-user-select:none;user-select:none;pointer-events:none}.Draggable.dragging{z-index:1;transition:none}.Draggable.dragging *{cursor:grabbing}.Draggable.dragging>div{--scale: 1.06;--box-shadow: -1px 0 15px 0 rgba(34, 33, 81, .01), 0px 15px 15px 0 rgba(34, 33, 81, .25)}.Draggable.dragging>div:focus-visible{--box-shadow: 0 0px 10px 2px #4c9ffe}.Draggable.dragging label{animation:none;opacity:0}@keyframes pulse{0%{opacity:0}to{opacity:1}}.calendar-wrapper{width:100%;height:100%;z-index:40;overflow:auto;position:relative}.calendar{border-collapse:collapse;width:max-content;min-width:100%}.calendar th,.calendar td{border:1px solid #ccc;min-width:100px;height:50px;text-align:center}.time-col{position:sticky;left:0;align-content:center;background:#fff;min-width:60px;z-index:99}
1
+ #root{margin:0 auto;text-align:center}.react-resizable{position:relative}.react-resizable:hover .react-resizable-handle-s,.show-handle.react-resizable .react-resizable-handle-s,.react-resizable:hover .react-resizable-handle-n,.show-handle.react-resizable .react-resizable-handle-n{display:inline;left:.5em;width:93%}.react-resizable.slot-resizable>.react-resizable-handle{width:100%;height:100%}.react-resizable.slot-resizable>.react-resizable-handle.react-resizable-handle-se{cursor:default;background-image:none}.react-resizable.slot-resizable>.react-resizable-handle.react-resizable-handle-se:hover{cursor:default;background-image:none}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;box-sizing:border-box;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg id='SVGRepo_bgCarrier' stroke-width='0'%3E%3C/g%3E%3Cg id='SVGRepo_tracerCarrier' stroke-linecap='round' stroke-linejoin='round'%3E%3C/g%3E%3Cg id='SVGRepo_iconCarrier'%3E %3Cpath d='M5 14H19M5 10H19' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3C/path%3E %3C/g%3E%3C/svg%3E");background-position:center}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;left:0;cursor:se-resize;z-index:100}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;cursor:ns-resize}.react-resizable-handle-n{height:.7em;display:none;top:-3px;z-index:100}.react-resizable-handle-s{display:none;height:.7em;bottom:-3px;z-index:100}.rdp-day:hover{background-color:#edecec!important;color:#1f1f1f!important;border-radius:50%!important}.rdp-chevron{fill:#5403d6!important}.rdp-day.rdp-today{color:#fff!important;border-radius:50%;background-color:#8574e5!important}.rdp-day::selection{background-color:#8574e5!important;color:red!important}.rdp-day.rdp-selected>.rdp-day_button{background:#d5d0f7;color:#322290;border:none}.shadow{box-shadow:2px 2px 6px 1px #0000004d}@keyframes spinBorder{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.animate-spin-border{animation:spinBorder 3s linear infinite;background-size:200% 200%}.calendarHolder_parent_content{display:flex;flex-direction:column;z-index:100;overflow:auto}.header_actions{display:flex;flex-direction:row;align-items:center;gap:.25rem}.headerCalendar_mobile{display:flex;flex-direction:column;justify-content:space-between;width:100%;background-color:#fff}.headerCalendar_mobile_month{align-content:center;z-index:50;text-align:center}.headerCalendar_mobile_month_span{color:#1e2939;font-weight:700}.headerCalendar_mobile_actions{gap:.5rem;z-index:50;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.headerCalendar{display:flex;justify-content:space-between;width:100%;background-color:#fff;position:relative}.headerCalendar_actions{display:flex;flex-direction:row;align-items:center;z-index:50}.headerCalendar_month{align-content:center;width:max-content;position:absolute;z-index:50;top:50%;left:50%;right:50%;transform:translate(-50%,-50%)}.headerCalendar_month_span{color:#1e2939;font-weight:700}.isDraggingCard{height:2rem;z-index:100;position:relative}.header_day_actions{display:flex;flex-direction:row;justify-content:center;gap:3px}.header_day_actions_button{display:flex;background-color:#fff;border:none;border-radius:100%;padding-block:.75rem;padding-inline:.75rem}.header_day_actions_button:hover{background-color:#f3f4f6}.header_day_actions_button:focus{background-color:#e5e7eb;inherits:false;initial-value:solid;outline-width:0px}.header_day_actions_button_icon{height:1rem;width:1rem;color:#6a7282}.calendarCore_cell{border:1px solid #d1d5dc;padding-block:.5rem;padding-inline:1rem;text-align:center;width:.75rem;min-width:4rem}.calendarCore_actions{position:absolute;top:-6px;left:5px;right:1.25rem;background-color:#fff;text-align:end}.bookingCard_content{display:grid;grid-template-columns:25px 1fr;align-items:flex-start;margin-bottom:.25rem;padding-bottom:.25rem}.bookingCard_content:last-child{margin-bottom:0;padding-bottom:0}.slot{background-color:#fff;border:1px solid #e8e8e8;min-width:2rem;padding:0;position:relative;border-bottom:none;border-top:none}.slot_disabled{background-color:#e5e7eb;border:none}.daysOfWeek{padding:.5rem;min-width:5.5rem;width:100vw;z-index:99;align-content:end}.daysOfWeek_parent{display:flex;flex-direction:column;gap:3px;color:#6a7282;text-align:center}.alignLeft{text-align:left}.daysOfWeek_indicator{border-radius:100%;width:2rem;height:2rem}.daysOfWeek_day_today{color:#fff;padding:.25rem}.daysOfWeek_table{min-width:100%;width:100%;height:100%;background-color:#fff}.daysOfWeek_table thead th{position:sticky;top:0;background:#fff;z-index:100}.daysOfWeek_emptySlot{max-width:4rem;min-width:4rem;width:4rem}.calendarHeader{max-width:4rem;min-width:4rem;width:1rem}@media screen and (max-width: 1189px){.calendarHeader{max-width:4rem;min-width:4rem}}.slotTrigger_core{position:relative;width:100%;height:2rem;min-width:6.38em}.slotTrigger_core_month{min-width:0;height:0!important}.slotTrigger_core_day{width:100%}.slot_core_month_first_row{border-top:1px solid #e8e8e8}.slot_core_month{height:100%;border-bottom:1px solid #e8e8e8}.hovering_slotTrigger_core:hover{background-color:#ffffff93}.card_content_core{z-index:98;position:absolute}.card_content_core_selected{z-index:99!important}.card_content_core_month{height:2rem}.cardContent_resizable{position:absolute;width:100%;top:0}.cardContent_render{border:1px solid white;border-color:#007fff;border-left-width:thick;border-radius:.25rem;overflow:hidden;position:absolute;z-index:100;top:0;right:0;bottom:0;left:0}.cardContent_selected{border:1px solid rgb(255,89,6);border-left:5px solid rgb(255,89,6)}.cardContent_render_dragging,.focus-effect:hover,.cardContent_render:hover{border-top:1px solid rgb(255,89,6);border-right:1px solid rgb(255,89,6);border-bottom:1px solid rgb(255,89,6);border-left:5px solid rgb(255,89,6)}.timeInfo_core{width:100%;height:100%;z-index:-1px;align-content:center;border-radius:.25rem;cursor:default}.with_hover:hover>.timeInfo_core_timeParent{border:1px solid var(--system-color);display:block;z-index:98}.timeInfo_core_timeParent{border-radius:.25rem;width:100%;height:100%;align-content:center;position:relative;z-index:5;display:none}.timeInfo_core_background{background-color:#fff;border:none}.timeInfo_core_timeParent_time{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.timeInfo_core_dragging{height:100%;align-content:center}.timeIndicator_today{position:absolute;right:0;z-index:98}.timeIndicator_today_circle:before{content:"";display:block;position:absolute;top:-2px;left:-1.3px;border-radius:100%;width:.5rem;height:.5rem;background-color:#000}.today_first_day{position:absolute;left:0;top:-3px;cursor:pointer}.first_day_slot{position:absolute;top:-1.6em;z-index:50}.dropdownLabelContent{display:flex;justify-content:space-between;align-items:center;border-radius:.5rem}.dropdownLabelContent:hover{background-color:#f3f4f6}.dropdownLabelContent_dropdownLabel{width:100%;padding:1rem}.dropdownLabelContent_dropdownLabel:hover{cursor:move}.dropdownLabelContent_close:hover{cursor:pointer;color:#6a7282}.booking_card_content_container{position:relative;width:100%;height:100%}.booking_card_content{display:flex;flex-direction:column;height:100%;color:#fff;justify-content:flex-start;align-items:flex-start}.booking_info{height:1.8rem;align-content:center}@property --progress{syntax: "<number>"; initial-value: 0; inherits: false;}.Draggable{position:relative;transition:transform .25s ease}.Draggable>div{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;border:0;border-radius:5px;box-shadow:var(--box-shadow);transform:translate3d(var(--translate-x, 0),var(--translate-y, 0),0) scale(var(--scale, 1));transition:box-shadow .3s ease}.Draggable:not(.handle)>div{touch-action:none;cursor:grab}.Draggable:not(.handle)>div:focus-visible{box-shadow:0 0 0 3px #4c9ffe}.Draggable.handle>div{--action-background: rgba(255, 255, 255, .1)}.Draggable.handle>div>svg{margin-right:5px}.Draggable.handle>div>div{margin-right:-10px}.Draggable img{-webkit-user-select:none;user-select:none;pointer-events:none}.Draggable.dragging{z-index:1;transition:none}.Draggable.dragging *{cursor:grabbing}.Draggable.dragging>div{--scale: 1.06;--box-shadow: -1px 0 15px 0 rgba(34, 33, 81, .01), 0px 15px 15px 0 rgba(34, 33, 81, .25)}.Draggable.dragging>div:focus-visible{--box-shadow: 0 0px 10px 2px #4c9ffe}.Draggable.dragging label{animation:none;opacity:0}@keyframes pulse{0%{opacity:0}to{opacity:1}}.calendar-wrapper{width:100%;height:100%;z-index:40;overflow:auto;position:relative}.calendar{border-collapse:collapse;width:max-content;min-width:100%}.calendar th,.calendar td{border:1px solid #ccc;min-width:100px;height:50px;text-align:center}.time-col{position:sticky;align-content:center;background:#fff;min-width:60px;z-index:99}.time-col-left{left:0}.monthCore{display:flex;flex-direction:column;justify-content:center;width:100%;text-align:center;padding:.1rem}.monthIndicator{z-index:99;font-weight:700;border-radius:calc(infinity * 1px);cursor:pointer;width:2em;height:2em;justify-content:center}.monthIndicator:hover{text-decoration:underline}.moreBooking{cursor:pointer}.moreBooking:hover{text-decoration:underline}.booking_card_pending{animation:bookingPendingBorderPulse 1.1s ease-in-out infinite}@keyframes bookingPendingBorderPulse{0%,to{border-left-color:#2563ebd9;box-shadow:0 0 #2563eb00}50%{border-left-color:#60a5fa;box-shadow:0 0 0 2px #2563eb2e}}@media (prefers-reduced-motion: reduce){.booking_card_pending{animation:none}}