@hanzo/booker 8.2.1 → 8.3.2

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 (166) hide show
  1. package/README.md +6 -6
  2. package/dist/cjs/Booker.js +23 -0
  3. package/dist/cjs/Booker.js.map +1 -0
  4. package/dist/cjs/BookingForm.js +32 -0
  5. package/dist/cjs/BookingForm.js.map +1 -0
  6. package/dist/cjs/CalendarEmbed.js +20 -0
  7. package/dist/cjs/CalendarEmbed.js.map +1 -0
  8. package/dist/cjs/Confirmation.js +34 -0
  9. package/dist/cjs/Confirmation.js.map +1 -0
  10. package/dist/cjs/EventHeader.js +31 -0
  11. package/dist/cjs/EventHeader.js.map +1 -0
  12. package/dist/cjs/MonthCalendar.js +24 -0
  13. package/dist/cjs/MonthCalendar.js.map +1 -0
  14. package/dist/cjs/TimeSlots.js +21 -0
  15. package/dist/cjs/TimeSlots.js.map +1 -0
  16. package/dist/cjs/client.js +113 -0
  17. package/dist/cjs/client.js.map +1 -0
  18. package/dist/cjs/hooks.js +121 -0
  19. package/dist/cjs/hooks.js.map +1 -0
  20. package/dist/cjs/index.js +55 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/package.json +1 -0
  23. package/dist/cjs/time.js +129 -0
  24. package/dist/cjs/time.js.map +1 -0
  25. package/dist/cjs/useBooker.js +135 -0
  26. package/dist/cjs/useBooker.js.map +1 -0
  27. package/dist/esm/Booker.js +20 -0
  28. package/dist/esm/Booker.js.map +1 -0
  29. package/dist/esm/BookingForm.js +29 -0
  30. package/dist/esm/BookingForm.js.map +1 -0
  31. package/dist/esm/CalendarEmbed.js +17 -0
  32. package/dist/esm/CalendarEmbed.js.map +1 -0
  33. package/dist/esm/Confirmation.js +31 -0
  34. package/dist/esm/Confirmation.js.map +1 -0
  35. package/dist/esm/EventHeader.js +28 -0
  36. package/dist/esm/EventHeader.js.map +1 -0
  37. package/dist/esm/MonthCalendar.js +21 -0
  38. package/dist/esm/MonthCalendar.js.map +1 -0
  39. package/dist/esm/TimeSlots.js +18 -0
  40. package/dist/esm/TimeSlots.js.map +1 -0
  41. package/dist/esm/client.js +104 -0
  42. package/dist/esm/client.js.map +1 -0
  43. package/dist/esm/hooks.js +115 -0
  44. package/dist/esm/hooks.js.map +1 -0
  45. package/dist/esm/index.js +18 -13
  46. package/dist/esm/index.js.map +1 -1
  47. package/dist/esm/time.js +113 -0
  48. package/dist/esm/time.js.map +1 -0
  49. package/dist/esm/useBooker.js +132 -0
  50. package/dist/esm/useBooker.js.map +1 -0
  51. package/package.json +28 -28
  52. package/src/Booker.tsx +7 -7
  53. package/src/BookingForm.tsx +2 -2
  54. package/src/CalendarEmbed.tsx +7 -7
  55. package/src/Confirmation.tsx +4 -4
  56. package/src/EventHeader.tsx +1 -1
  57. package/src/MonthCalendar.tsx +1 -1
  58. package/src/TimeSlots.tsx +2 -2
  59. package/src/hooks.ts +1 -1
  60. package/src/index.ts +11 -11
  61. package/src/useBooker.ts +9 -4
  62. package/types/Booker.d.ts +2 -2
  63. package/types/Booker.d.ts.map +1 -1
  64. package/types/BookingForm.d.ts +2 -2
  65. package/types/BookingForm.d.ts.map +1 -1
  66. package/types/CalendarEmbed.d.ts +2 -2
  67. package/types/CalendarEmbed.d.ts.map +1 -1
  68. package/types/Confirmation.d.ts +2 -2
  69. package/types/Confirmation.d.ts.map +1 -1
  70. package/types/EventHeader.d.ts +2 -2
  71. package/types/EventHeader.d.ts.map +1 -1
  72. package/types/MonthCalendar.d.ts +1 -1
  73. package/types/MonthCalendar.d.ts.map +1 -1
  74. package/types/TimeSlots.d.ts +2 -2
  75. package/types/TimeSlots.d.ts.map +1 -1
  76. package/types/client.d.ts.map +1 -1
  77. package/types/hooks.d.ts +1 -1
  78. package/types/hooks.d.ts.map +1 -1
  79. package/types/index.d.ts +11 -11
  80. package/types/index.d.ts.map +1 -1
  81. package/types/useBooker.d.ts +3 -3
  82. package/types/useBooker.d.ts.map +1 -1
  83. package/dist/cjs/Booker.cjs +0 -153
  84. package/dist/cjs/Booker.native.js +0 -158
  85. package/dist/cjs/Booker.native.js.map +0 -1
  86. package/dist/cjs/BookingForm.cjs +0 -197
  87. package/dist/cjs/BookingForm.native.js +0 -203
  88. package/dist/cjs/BookingForm.native.js.map +0 -1
  89. package/dist/cjs/CalendarEmbed.cjs +0 -121
  90. package/dist/cjs/CalendarEmbed.native.js +0 -125
  91. package/dist/cjs/CalendarEmbed.native.js.map +0 -1
  92. package/dist/cjs/Confirmation.cjs +0 -177
  93. package/dist/cjs/Confirmation.native.js +0 -185
  94. package/dist/cjs/Confirmation.native.js.map +0 -1
  95. package/dist/cjs/EventHeader.cjs +0 -112
  96. package/dist/cjs/EventHeader.native.js +0 -118
  97. package/dist/cjs/EventHeader.native.js.map +0 -1
  98. package/dist/cjs/MonthCalendar.cjs +0 -177
  99. package/dist/cjs/MonthCalendar.native.js +0 -191
  100. package/dist/cjs/MonthCalendar.native.js.map +0 -1
  101. package/dist/cjs/TimeSlots.cjs +0 -119
  102. package/dist/cjs/TimeSlots.native.js +0 -126
  103. package/dist/cjs/TimeSlots.native.js.map +0 -1
  104. package/dist/cjs/client.cjs +0 -136
  105. package/dist/cjs/client.native.js +0 -267
  106. package/dist/cjs/client.native.js.map +0 -1
  107. package/dist/cjs/hooks.cjs +0 -193
  108. package/dist/cjs/hooks.native.js +0 -221
  109. package/dist/cjs/hooks.native.js.map +0 -1
  110. package/dist/cjs/index.cjs +0 -71
  111. package/dist/cjs/index.native.js +0 -74
  112. package/dist/cjs/index.native.js.map +0 -1
  113. package/dist/cjs/time.cjs +0 -145
  114. package/dist/cjs/time.native.js +0 -150
  115. package/dist/cjs/time.native.js.map +0 -1
  116. package/dist/cjs/useBooker.cjs +0 -151
  117. package/dist/cjs/useBooker.native.js +0 -173
  118. package/dist/cjs/useBooker.native.js.map +0 -1
  119. package/dist/esm/Booker.mjs +0 -128
  120. package/dist/esm/Booker.mjs.map +0 -1
  121. package/dist/esm/Booker.native.js +0 -130
  122. package/dist/esm/Booker.native.js.map +0 -1
  123. package/dist/esm/BookingForm.mjs +0 -172
  124. package/dist/esm/BookingForm.mjs.map +0 -1
  125. package/dist/esm/BookingForm.native.js +0 -175
  126. package/dist/esm/BookingForm.native.js.map +0 -1
  127. package/dist/esm/CalendarEmbed.mjs +0 -96
  128. package/dist/esm/CalendarEmbed.mjs.map +0 -1
  129. package/dist/esm/CalendarEmbed.native.js +0 -97
  130. package/dist/esm/CalendarEmbed.native.js.map +0 -1
  131. package/dist/esm/Confirmation.mjs +0 -152
  132. package/dist/esm/Confirmation.mjs.map +0 -1
  133. package/dist/esm/Confirmation.native.js +0 -157
  134. package/dist/esm/Confirmation.native.js.map +0 -1
  135. package/dist/esm/EventHeader.mjs +0 -87
  136. package/dist/esm/EventHeader.mjs.map +0 -1
  137. package/dist/esm/EventHeader.native.js +0 -90
  138. package/dist/esm/EventHeader.native.js.map +0 -1
  139. package/dist/esm/MonthCalendar.mjs +0 -152
  140. package/dist/esm/MonthCalendar.mjs.map +0 -1
  141. package/dist/esm/MonthCalendar.native.js +0 -163
  142. package/dist/esm/MonthCalendar.native.js.map +0 -1
  143. package/dist/esm/TimeSlots.mjs +0 -94
  144. package/dist/esm/TimeSlots.mjs.map +0 -1
  145. package/dist/esm/TimeSlots.native.js +0 -98
  146. package/dist/esm/TimeSlots.native.js.map +0 -1
  147. package/dist/esm/client.mjs +0 -104
  148. package/dist/esm/client.mjs.map +0 -1
  149. package/dist/esm/client.native.js +0 -232
  150. package/dist/esm/client.native.js.map +0 -1
  151. package/dist/esm/hooks.mjs +0 -165
  152. package/dist/esm/hooks.mjs.map +0 -1
  153. package/dist/esm/hooks.native.js +0 -190
  154. package/dist/esm/hooks.native.js.map +0 -1
  155. package/dist/esm/index.mjs +0 -13
  156. package/dist/esm/index.mjs.map +0 -1
  157. package/dist/esm/index.native.js +0 -13
  158. package/dist/esm/index.native.js.map +0 -1
  159. package/dist/esm/time.mjs +0 -107
  160. package/dist/esm/time.mjs.map +0 -1
  161. package/dist/esm/time.native.js +0 -109
  162. package/dist/esm/time.native.js.map +0 -1
  163. package/dist/esm/useBooker.mjs +0 -126
  164. package/dist/esm/useBooker.mjs.map +0 -1
  165. package/dist/esm/useBooker.native.js +0 -145
  166. package/dist/esm/useBooker.native.js.map +0 -1
@@ -1,90 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Paragraph, SizableText, XStack, YStack } from "@hanzo/gui";
3
- function EventHeader(param) {
4
- var {
5
- event,
6
- host,
7
- timeZone,
8
- compact
9
- } = param;
10
- var _event_profile, _event_locations_, _event_locations;
11
- var name = ((_event_profile = event.profile) === null || _event_profile === void 0 ? void 0 : _event_profile.name) || host;
12
- var initial = ((name === null || name === void 0 ? void 0 : name[0]) || "H").toUpperCase();
13
- return /* @__PURE__ */_jsxs(YStack, {
14
- gap: "$2",
15
- children: [/* @__PURE__ */_jsxs(XStack, {
16
- alignItems: "center",
17
- gap: "$2.5",
18
- children: [/* @__PURE__ */_jsx(YStack, {
19
- width: 28,
20
- height: 28,
21
- borderRadius: 9999,
22
- backgroundColor: "$color5",
23
- alignItems: "center",
24
- justifyContent: "center",
25
- children: /* @__PURE__ */_jsx(SizableText, {
26
- size: "$2",
27
- color: "$color11",
28
- fontWeight: "600",
29
- children: initial
30
- })
31
- }), /* @__PURE__ */_jsx(SizableText, {
32
- size: "$3",
33
- color: "$color10",
34
- children: name
35
- })]
36
- }), /* @__PURE__ */_jsx(SizableText, {
37
- size: compact ? "$6" : "$8",
38
- fontWeight: "700",
39
- color: "$color12",
40
- children: event.title
41
- }), /* @__PURE__ */_jsxs(XStack, {
42
- gap: "$2",
43
- alignItems: "center",
44
- flexWrap: "wrap",
45
- children: [/* @__PURE__ */_jsxs(Pill, {
46
- children: [event.length, " min"]
47
- }), /* @__PURE__ */_jsx(Pill, {
48
- children: shortZone(timeZone)
49
- }), ((_event_locations = event.locations) === null || _event_locations === void 0 ? void 0 : (_event_locations_ = _event_locations[0]) === null || _event_locations_ === void 0 ? void 0 : _event_locations_.type) ? /* @__PURE__ */_jsx(Pill, {
50
- children: prettyLocation(event.locations[0].type)
51
- }) : null]
52
- }), !compact && event.description ? /* @__PURE__ */_jsx(Paragraph, {
53
- size: "$3",
54
- color: "$color11",
55
- marginTop: "$1",
56
- children: event.description
57
- }) : null]
58
- });
59
- }
60
- function Pill(param) {
61
- var {
62
- children
63
- } = param;
64
- return /* @__PURE__ */_jsx(XStack, {
65
- backgroundColor: "$color3",
66
- paddingHorizontal: "$2.5",
67
- paddingVertical: "$1",
68
- borderRadius: "$10",
69
- alignItems: "center",
70
- children: /* @__PURE__ */_jsx(SizableText, {
71
- size: "$1",
72
- color: "$color11",
73
- children
74
- })
75
- });
76
- }
77
- function shortZone(tz) {
78
- var city = tz.split("/").pop() || tz;
79
- return city.replace(/_/g, " ");
80
- }
81
- function prettyLocation(type) {
82
- var t = type.toLowerCase();
83
- if (t.includes("google")) return "Google Meet";
84
- if (t.includes("zoom")) return "Zoom";
85
- if (t.includes("phone")) return "Phone";
86
- if (t.includes("person")) return "In person";
87
- return "Video call";
88
- }
89
- export { EventHeader };
90
- //# sourceMappingURL=EventHeader.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Paragraph","SizableText","XStack","YStack","EventHeader","param","event","host","timeZone","compact","_event_profile","_event_locations_","_event_locations","name","profile","initial","toUpperCase","gap","children","alignItems","width","height","borderRadius","backgroundColor","justifyContent","size","color","fontWeight","title","flexWrap","Pill","length","shortZone","locations","type","prettyLocation"],"sources":["../../src/EventHeader.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAAC,IAAW,EAAAC,IAAA,IAAAC,KAAa,QAAQ,mBAAc;AAgBjD,SASIC,SATJ,EAAAC,WAAA,EAAAC,MAAA,EAAAC,MAAA;AALC,SAASC,YAAYC,KAAE;EAC5B;IAAMC,KAAA;IAAOC,IAAA;IAAMC,QAAA;IAASC;EAAQ,IAAAJ,KAAA;EACpC,IAAAK,cAAiB,EAAAC,iBAAkB,EAAAC,gBAAY;EAC/C,IAAAC,IACE,KAAAH,cAAA,GAACJ,KAAA,CAAAQ,OAAW,MACV,QAAAJ,cAAA,uBAAAA,cAAA,CAAAG,IAAA,KAAAN,IAAA;EAAA,IAAAQ,OAAA,KAAAF,IAAA,KAAC,QAAOA,IAAA,UAAW,SAAS,IAAIA,IAAA,QAC9B,KAAAG,WAAA;EAAA,sBAAAjB,KAAA,CAAAI,MAAA;IAAAc,GAAA,EAAC;IAAAC,QAAA,kBACQnB,KAAA,CAAAG,MAAA;MAAAiB,UACC;MAAAF,GACR;MAAcC,QACd,GACA,eAAWrB,IAAA,CAAAM,MAAA;QACXiB,KAAA;QAEAC,MAAA;QAEAC,YAAA;QACFC,eAAA;QACAJ,UAAA,UAAC;QAGHK,cAAA;QAEAN,QAAA,iBAACrB,IAAY,CAAAI,WAAM,EAAU;UAI7BwB,IAAA;UACEC,KAAA,YAAC;UAAYC,UAAA;UAAOT,QAAA,EAAAH;QAAI;MACxB,IACC,eAAmBlB,IAAG,CAAAI,WACrB;QAEJwB,IAAA;QAEEC,KAAW,YAAM;QAKrBR,QAAA,EAAAL;MAEJ;IAGE,IACG,eAAAhB,IAAA,CAAAI,WAAA;MAAAwB,IAAA,EAAAhB,OAAA;MACCkB,UAAA,OAAgB;MAChBD,KAAA,YAAkB;MAClBR,QAAA,EAAAZ,KAAgB,CAAAsB;IAChB,IACA,eAAW7B,KAAA,CAAAG,MAAA;MAEXe,GAAA;MAEAE,UAAA;MACFU,QAAA;MAEJX,QAAA,GAES,eAA8BnB,KAAA,CAAA+B,IAAA;QAC/BZ,QAAU,GACJZ,KAAA,CAAAyB,MAAQ,EACtB;MAGQ,EAAI,EACJ,eAAiBlC,IAAG,CAAAiC,IAAO;QAC3BZ,QAAS,EAAAc,SAAS,CAAAxB,QAAO;MACzB,IACA,EAAAI,gBAAoB,GAAAN,KAAO,CAAA2B,SAAA,cAAArB,gBAAA,wBAAAD,iBAAA,GAAAC,gBAAA,iBAAAD,iBAAA,uBAAAA,iBAAA,CAAAuB,IAAA,mBAAArC,IAAA,CAAAiC,IAAA;QAC1BZ,QAAA,EAAAiB,cAAA,CAAA7B,KAAA,CAAA2B,SAAA,IAAAC,IAAA;MACT","ignoreList":[]}
@@ -1,152 +0,0 @@
1
- import { SizableText, Spinner, XStack, YStack } from "@hanzo/gui";
2
- import { formatMonthLabel, isBeforeToday, monthMatrix, weekdayLabels } from "./time.mjs";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- function MonthCalendar({
5
- viewDate,
6
- availableKeys,
7
- selectedDay,
8
- onSelectDay,
9
- onPrev,
10
- onNext,
11
- atFirstMonth,
12
- weekStartsOn = 0,
13
- loading
14
- }) {
15
- const cells = monthMatrix(viewDate, weekStartsOn);
16
- const rows = [];
17
- for (let i = 0; i < cells.length; i += 7) rows.push(cells.slice(i, i + 7));
18
- const labels = weekdayLabels(weekStartsOn);
19
- return /* @__PURE__ */jsxs(YStack, {
20
- gap: "$2",
21
- flex: 1,
22
- minWidth: 260,
23
- children: [/* @__PURE__ */jsxs(XStack, {
24
- alignItems: "center",
25
- justifyContent: "space-between",
26
- paddingVertical: "$1",
27
- children: [/* @__PURE__ */jsx(NavArrow, {
28
- label: "Previous month",
29
- disabled: atFirstMonth,
30
- onPress: onPrev,
31
- children: "\u2039"
32
- }), /* @__PURE__ */jsxs(XStack, {
33
- alignItems: "center",
34
- gap: "$2",
35
- children: [/* @__PURE__ */jsx(SizableText, {
36
- size: "$5",
37
- fontWeight: "700",
38
- color: "$color12",
39
- children: formatMonthLabel(viewDate)
40
- }), loading ? /* @__PURE__ */jsx(Spinner, {
41
- size: "small",
42
- color: "$color9"
43
- }) : null]
44
- }), /* @__PURE__ */jsx(NavArrow, {
45
- label: "Next month",
46
- onPress: onNext,
47
- children: "\u203A"
48
- })]
49
- }), /* @__PURE__ */jsx(XStack, {
50
- children: labels.map(l => /* @__PURE__ */jsx(YStack, {
51
- flexBasis: 0,
52
- flexGrow: 1,
53
- alignItems: "center",
54
- paddingVertical: "$1",
55
- children: /* @__PURE__ */jsx(SizableText, {
56
- size: "$1",
57
- color: "$color10",
58
- children: l
59
- })
60
- }, l))
61
- }), /* @__PURE__ */jsx(YStack, {
62
- gap: "$1.5",
63
- children: rows.map((row, r) => /* @__PURE__ */jsx(XStack, {
64
- gap: "$1.5",
65
- children: row.map(cell => /* @__PURE__ */jsx(DayCell, {
66
- cell,
67
- available: availableKeys.has(cell.key),
68
- past: isBeforeToday(cell.key),
69
- selected: selectedDay === cell.key,
70
- onSelectDay
71
- }, cell.key))
72
- }, r))
73
- })]
74
- });
75
- }
76
- function DayCell({
77
- cell,
78
- available,
79
- past,
80
- selected,
81
- onSelectDay
82
- }) {
83
- const selectable = cell.inMonth && available && !past;
84
- const dayNum = cell.date.getDate();
85
- return /* @__PURE__ */jsxs(YStack, {
86
- flexBasis: 0,
87
- flexGrow: 1,
88
- aspectRatio: 1,
89
- alignItems: "center",
90
- justifyContent: "center",
91
- borderRadius: "$4",
92
- borderWidth: 1,
93
- borderColor: selected ? "$color12" : selectable ? "$color5" : "transparent",
94
- backgroundColor: selected ? "$color12" : selectable ? "$color2" : "transparent",
95
- opacity: cell.inMonth ? 1 : 0,
96
- cursor: selectable ? "pointer" : "default",
97
- hoverStyle: selectable && !selected ? {
98
- backgroundColor: "$color4"
99
- } : void 0,
100
- pressStyle: selectable ? {
101
- backgroundColor: "$color6"
102
- } : void 0,
103
- onPress: selectable ? () => onSelectDay(cell.key) : void 0,
104
- "aria-label": selectable ? `Select ${cell.key}` : void 0,
105
- role: selectable ? "button" : void 0,
106
- children: [/* @__PURE__ */jsx(SizableText, {
107
- size: "$3",
108
- fontWeight: selectable ? "600" : "400",
109
- color: selected ? "$color1" : selectable ? "$color12" : "$color8",
110
- children: dayNum
111
- }), selectable && !selected ? /* @__PURE__ */jsx(YStack, {
112
- position: "absolute",
113
- bottom: 4,
114
- width: 4,
115
- height: 4,
116
- borderRadius: 9999,
117
- backgroundColor: "$color10"
118
- }) : null]
119
- });
120
- }
121
- function NavArrow({
122
- children,
123
- onPress,
124
- disabled,
125
- label
126
- }) {
127
- return /* @__PURE__ */jsx(YStack, {
128
- width: 34,
129
- height: 34,
130
- alignItems: "center",
131
- justifyContent: "center",
132
- borderRadius: "$4",
133
- opacity: disabled ? 0.35 : 1,
134
- cursor: disabled ? "default" : "pointer",
135
- hoverStyle: disabled ? void 0 : {
136
- backgroundColor: "$color4"
137
- },
138
- pressStyle: disabled ? void 0 : {
139
- backgroundColor: "$color6"
140
- },
141
- onPress: disabled ? void 0 : onPress,
142
- "aria-label": label,
143
- role: "button",
144
- children: /* @__PURE__ */jsx(SizableText, {
145
- size: "$6",
146
- color: "$color11",
147
- children
148
- })
149
- });
150
- }
151
- export { MonthCalendar };
152
- //# sourceMappingURL=MonthCalendar.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["SizableText","Spinner","XStack","YStack","formatMonthLabel","isBeforeToday","monthMatrix","weekdayLabels","jsx","jsxs","MonthCalendar","viewDate","availableKeys","selectedDay","onSelectDay","onPrev","onNext","atFirstMonth","weekStartsOn","loading","cells","rows","i","length","push","slice","labels","gap","flex","minWidth","children","alignItems","justifyContent","paddingVertical","NavArrow","label","disabled","onPress","size","fontWeight","color","map","l","flexBasis","flexGrow","row","r","cell","DayCell","available","has","key","past","selected","selectable","inMonth","dayNum","date","getDate","aspectRatio","borderRadius","borderWidth","borderColor","backgroundColor","opacity","cursor","hoverStyle","pressStyle","role","position","bottom","width","height"],"sources":["../../src/MonthCalendar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,163 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { SizableText, Spinner, XStack, YStack } from "@hanzo/gui";
3
- import { formatMonthLabel, isBeforeToday, monthMatrix, weekdayLabels } from "./time.native.js";
4
- function MonthCalendar(param) {
5
- var {
6
- viewDate,
7
- availableKeys,
8
- selectedDay,
9
- onSelectDay,
10
- onPrev,
11
- onNext,
12
- atFirstMonth,
13
- weekStartsOn = 0,
14
- loading
15
- } = param;
16
- var cells = monthMatrix(viewDate, weekStartsOn);
17
- var rows = [];
18
- for (var i = 0; i < cells.length; i += 7) rows.push(cells.slice(i, i + 7));
19
- var labels = weekdayLabels(weekStartsOn);
20
- return /* @__PURE__ */_jsxs(YStack, {
21
- gap: "$2",
22
- flex: 1,
23
- minWidth: 260,
24
- children: [/* @__PURE__ */_jsxs(XStack, {
25
- alignItems: "center",
26
- justifyContent: "space-between",
27
- paddingVertical: "$1",
28
- children: [/* @__PURE__ */_jsx(NavArrow, {
29
- label: "Previous month",
30
- disabled: atFirstMonth,
31
- onPress: onPrev,
32
- children: "\u2039"
33
- }), /* @__PURE__ */_jsxs(XStack, {
34
- alignItems: "center",
35
- gap: "$2",
36
- children: [/* @__PURE__ */_jsx(SizableText, {
37
- size: "$5",
38
- fontWeight: "700",
39
- color: "$color12",
40
- children: formatMonthLabel(viewDate)
41
- }), loading ? /* @__PURE__ */_jsx(Spinner, {
42
- size: "small",
43
- color: "$color9"
44
- }) : null]
45
- }), /* @__PURE__ */_jsx(NavArrow, {
46
- label: "Next month",
47
- onPress: onNext,
48
- children: "\u203A"
49
- })]
50
- }), /* @__PURE__ */_jsx(XStack, {
51
- children: labels.map(function (l) {
52
- return /* @__PURE__ */_jsx(YStack, {
53
- flexBasis: 0,
54
- flexGrow: 1,
55
- alignItems: "center",
56
- paddingVertical: "$1",
57
- children: /* @__PURE__ */_jsx(SizableText, {
58
- size: "$1",
59
- color: "$color10",
60
- children: l
61
- })
62
- }, l);
63
- })
64
- }), /* @__PURE__ */_jsx(YStack, {
65
- gap: "$1.5",
66
- children: rows.map(function (row, r) {
67
- return /* @__PURE__ */_jsx(XStack, {
68
- gap: "$1.5",
69
- children: row.map(function (cell) {
70
- return /* @__PURE__ */_jsx(DayCell, {
71
- cell,
72
- available: availableKeys.has(cell.key),
73
- past: isBeforeToday(cell.key),
74
- selected: selectedDay === cell.key,
75
- onSelectDay
76
- }, cell.key);
77
- })
78
- }, r);
79
- })
80
- })]
81
- });
82
- }
83
- function DayCell(param) {
84
- var {
85
- cell,
86
- available,
87
- past,
88
- selected,
89
- onSelectDay
90
- } = param;
91
- var selectable = cell.inMonth && available && !past;
92
- var dayNum = cell.date.getDate();
93
- return /* @__PURE__ */_jsxs(YStack, {
94
- flexBasis: 0,
95
- flexGrow: 1,
96
- aspectRatio: 1,
97
- alignItems: "center",
98
- justifyContent: "center",
99
- borderRadius: "$4",
100
- borderWidth: 1,
101
- borderColor: selected ? "$color12" : selectable ? "$color5" : "transparent",
102
- backgroundColor: selected ? "$color12" : selectable ? "$color2" : "transparent",
103
- opacity: cell.inMonth ? 1 : 0,
104
- cursor: selectable ? "pointer" : "default",
105
- hoverStyle: selectable && !selected ? {
106
- backgroundColor: "$color4"
107
- } : void 0,
108
- pressStyle: selectable ? {
109
- backgroundColor: "$color6"
110
- } : void 0,
111
- onPress: selectable ? function () {
112
- return onSelectDay(cell.key);
113
- } : void 0,
114
- "aria-label": selectable ? `Select ${cell.key}` : void 0,
115
- role: selectable ? "button" : void 0,
116
- children: [/* @__PURE__ */_jsx(SizableText, {
117
- size: "$3",
118
- fontWeight: selectable ? "600" : "400",
119
- color: selected ? "$color1" : selectable ? "$color12" : "$color8",
120
- children: dayNum
121
- }), selectable && !selected ? /* @__PURE__ */_jsx(YStack, {
122
- position: "absolute",
123
- bottom: 4,
124
- width: 4,
125
- height: 4,
126
- borderRadius: 9999,
127
- backgroundColor: "$color10"
128
- }) : null]
129
- });
130
- }
131
- function NavArrow(param) {
132
- var {
133
- children,
134
- onPress,
135
- disabled,
136
- label
137
- } = param;
138
- return /* @__PURE__ */_jsx(YStack, {
139
- width: 34,
140
- height: 34,
141
- alignItems: "center",
142
- justifyContent: "center",
143
- borderRadius: "$4",
144
- opacity: disabled ? 0.35 : 1,
145
- cursor: disabled ? "default" : "pointer",
146
- hoverStyle: disabled ? void 0 : {
147
- backgroundColor: "$color4"
148
- },
149
- pressStyle: disabled ? void 0 : {
150
- backgroundColor: "$color6"
151
- },
152
- onPress: disabled ? void 0 : onPress,
153
- "aria-label": label,
154
- role: "button",
155
- children: /* @__PURE__ */_jsx(SizableText, {
156
- size: "$6",
157
- color: "$color11",
158
- children
159
- })
160
- });
161
- }
162
- export { MonthCalendar };
163
- //# sourceMappingURL=MonthCalendar.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","SizableText","Spinner","XStack","YStack","formatMonthLabel","isBeforeToday","monthMatrix","weekdayLabels","MonthCalendar","param","viewDate","availableKeys","selectedDay","onSelectDay","onPrev","onNext","atFirstMonth","weekStartsOn","loading","cells","rows","i","length","push","slice","labels","gap","flex","minWidth","children","alignItems","justifyContent","paddingVertical","NavArrow","label","disabled","onPress","size","fontWeight","color","map","l","flexBasis","flexGrow","row","r","cell","DayCell","available","has","key","past","selected","selectable","inMonth","dayNum","date","getDate","aspectRatio","borderRadius","borderWidth","borderColor","backgroundColor","opacity","cursor","hoverStyle","pressStyle","role","position","bottom","width","height"],"sources":["../../src/MonthCalendar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,94 +0,0 @@
1
- import { Button, ScrollView, SizableText, XStack, YStack } from "@hanzo/gui";
2
- import { dateFromKey, formatDayLong, formatSlotTime } from "./time.mjs";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- function TimeSlots({
5
- dayKey,
6
- slots,
7
- timeZone,
8
- onPick,
9
- selectedIso,
10
- loading,
11
- compact,
12
- maxHeight = 360
13
- }) {
14
- if (!dayKey) {
15
- return /* @__PURE__ */jsx(Centered, {
16
- children: /* @__PURE__ */jsx(SizableText, {
17
- size: "$3",
18
- color: "$color10",
19
- textAlign: "center",
20
- children: "Select a day to see available times."
21
- })
22
- });
23
- }
24
- const heading = formatDayLong(dateFromKey(dayKey));
25
- return /* @__PURE__ */jsxs(YStack, {
26
- gap: "$2",
27
- flex: 1,
28
- minWidth: 200,
29
- children: [/* @__PURE__ */jsx(SizableText, {
30
- size: "$4",
31
- fontWeight: "600",
32
- color: "$color12",
33
- children: heading
34
- }), loading ? /* @__PURE__ */jsx(Centered, {
35
- children: /* @__PURE__ */jsx(SizableText, {
36
- size: "$2",
37
- color: "$color10",
38
- children: "Loading times\u2026"
39
- })
40
- }) : slots.length === 0 ? /* @__PURE__ */jsx(Centered, {
41
- children: /* @__PURE__ */jsx(SizableText, {
42
- size: "$3",
43
- color: "$color10",
44
- textAlign: "center",
45
- children: "No times left on this day. Try another."
46
- })
47
- }) : /* @__PURE__ */jsx(ScrollView, {
48
- maxHeight,
49
- showsVerticalScrollIndicator: false,
50
- children: /* @__PURE__ */jsx(XStack, {
51
- flexWrap: "wrap",
52
- gap: "$2",
53
- flexDirection: compact ? "row" : "column",
54
- children: slots.map(slot => {
55
- const active = selectedIso === slot.time;
56
- return /* @__PURE__ */jsx(Button, {
57
- size: "$3",
58
- theme: active ? "blue" : void 0,
59
- chromeless: !active,
60
- borderWidth: 1,
61
- borderColor: active ? "$color8" : "$color6",
62
- backgroundColor: active ? void 0 : "$color1",
63
- hoverStyle: {
64
- borderColor: "$color10"
65
- },
66
- pressStyle: {
67
- backgroundColor: "$color4"
68
- },
69
- onPress: () => onPick(slot.time),
70
- "aria-label": `Book ${formatSlotTime(slot.time, timeZone)}`,
71
- ...(compact ? {} : {
72
- alignSelf: "stretch"
73
- }),
74
- children: formatSlotTime(slot.time, timeZone)
75
- }, slot.time);
76
- })
77
- })
78
- })]
79
- });
80
- }
81
- function Centered({
82
- children
83
- }) {
84
- return /* @__PURE__ */jsx(YStack, {
85
- flex: 1,
86
- minHeight: 120,
87
- alignItems: "center",
88
- justifyContent: "center",
89
- padding: "$4",
90
- children
91
- });
92
- }
93
- export { TimeSlots };
94
- //# sourceMappingURL=TimeSlots.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Button","ScrollView","SizableText","XStack","YStack","dateFromKey","formatDayLong","formatSlotTime","jsx","jsxs","TimeSlots","dayKey","slots","timeZone","onPick","selectedIso","loading","compact","maxHeight","Centered","children","size","color","textAlign","heading","gap","flex","minWidth","fontWeight","length","showsVerticalScrollIndicator","flexWrap","flexDirection","map","slot","active","time","theme","chromeless","borderWidth","borderColor","backgroundColor","hoverStyle","pressStyle","onPress","alignSelf","minHeight","alignItems","justifyContent","padding"],"sources":["../../src/TimeSlots.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,98 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, ScrollView, SizableText, XStack, YStack } from "@hanzo/gui";
3
- import { dateFromKey, formatDayLong, formatSlotTime } from "./time.native.js";
4
- function TimeSlots(param) {
5
- var {
6
- dayKey,
7
- slots,
8
- timeZone,
9
- onPick,
10
- selectedIso,
11
- loading,
12
- compact,
13
- maxHeight = 360
14
- } = param;
15
- if (!dayKey) {
16
- return /* @__PURE__ */_jsx(Centered, {
17
- children: /* @__PURE__ */_jsx(SizableText, {
18
- size: "$3",
19
- color: "$color10",
20
- textAlign: "center",
21
- children: "Select a day to see available times."
22
- })
23
- });
24
- }
25
- var heading = formatDayLong(dateFromKey(dayKey));
26
- return /* @__PURE__ */_jsxs(YStack, {
27
- gap: "$2",
28
- flex: 1,
29
- minWidth: 200,
30
- children: [/* @__PURE__ */_jsx(SizableText, {
31
- size: "$4",
32
- fontWeight: "600",
33
- color: "$color12",
34
- children: heading
35
- }), loading ? /* @__PURE__ */_jsx(Centered, {
36
- children: /* @__PURE__ */_jsx(SizableText, {
37
- size: "$2",
38
- color: "$color10",
39
- children: "Loading times\u2026"
40
- })
41
- }) : slots.length === 0 ? /* @__PURE__ */_jsx(Centered, {
42
- children: /* @__PURE__ */_jsx(SizableText, {
43
- size: "$3",
44
- color: "$color10",
45
- textAlign: "center",
46
- children: "No times left on this day. Try another."
47
- })
48
- }) : /* @__PURE__ */_jsx(ScrollView, {
49
- maxHeight,
50
- showsVerticalScrollIndicator: false,
51
- children: /* @__PURE__ */_jsx(XStack, {
52
- flexWrap: "wrap",
53
- gap: "$2",
54
- flexDirection: compact ? "row" : "column",
55
- children: slots.map(function (slot) {
56
- var active = selectedIso === slot.time;
57
- return /* @__PURE__ */_jsx(Button, {
58
- size: "$3",
59
- theme: active ? "blue" : void 0,
60
- chromeless: !active,
61
- borderWidth: 1,
62
- borderColor: active ? "$color8" : "$color6",
63
- backgroundColor: active ? void 0 : "$color1",
64
- hoverStyle: {
65
- borderColor: "$color10"
66
- },
67
- pressStyle: {
68
- backgroundColor: "$color4"
69
- },
70
- onPress: function () {
71
- return onPick(slot.time);
72
- },
73
- "aria-label": `Book ${formatSlotTime(slot.time, timeZone)}`,
74
- ...(compact ? {} : {
75
- alignSelf: "stretch"
76
- }),
77
- children: formatSlotTime(slot.time, timeZone)
78
- }, slot.time);
79
- })
80
- })
81
- })]
82
- });
83
- }
84
- function Centered(param) {
85
- var {
86
- children
87
- } = param;
88
- return /* @__PURE__ */_jsx(YStack, {
89
- flex: 1,
90
- minHeight: 120,
91
- alignItems: "center",
92
- justifyContent: "center",
93
- padding: "$4",
94
- children
95
- });
96
- }
97
- export { TimeSlots };
98
- //# sourceMappingURL=TimeSlots.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Button","ScrollView","SizableText","XStack","YStack","dateFromKey","formatDayLong","formatSlotTime","TimeSlots","param","dayKey","slots","timeZone","onPick","selectedIso","loading","compact","maxHeight","Centered","children","size","color","textAlign","heading","gap","flex","minWidth","fontWeight","length","showsVerticalScrollIndicator","flexWrap","flexDirection","map","slot","active","time","theme","chromeless","borderWidth","borderColor"],"sources":["../../src/TimeSlots.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAAC,IAAQ,EAAAC,IAAA,IAAYC,KAAA,QAAa,mBAAQ;AAElD,SAASC,MAAA,EAAAC,UAAa,EAAAC,WAAe,EAAAC,MAAA,EAAAC,MAAA,QAAsB;AA4BnD,SAAAC,WAUJ,EAAAC,aAVI,EAAAC,cAAA;AAbD,SAASC,UAAUC,KAAA;EACxB;IAAAC,MAAA;IAAAC,KAAA;IAAAC,QAAA;IAAAC,MAAA;IAAAC,WAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,SAAA;EAAA,IAAAR,KAAA;EACA,KAAAC,MAAA;IACA,sBAAAb,IAAA,CAAAqB,QAAA;MACAC,QAAA,iBAAAtB,IAAA,CAAAK,WAAA;QACAkB,IAAA;QACAC,KAAA;QACAC,SAAA;QACAH,QAAY;MACK;IACjB,EAAI;EACF;EAOF,IAAAI,OAAA,GAAAjB,aAAA,CAAAD,WAAA,CAAAK,MAAA;EAEA,OAAM,eAAUX,KAAA,CAAAK,MAAc;IAE9BoB,GAAA,EACE;IACEC,IAAA;IAICC,QAAA,EACC;IAeMP,QAAM,GACN,eACEtB,IAAA,CAAAK,WAAA;MAACkB,IAAA;MAAAO,UAAA;MAAAN,KAEC,YAAK;MAAAF,QACL,EAAOI;IAAkB,IACZR,OACb,kBAAalB,IAAA,CAAAqB,QAAA;MAAAC,QACb,iBAAsBtB,IAAA,CAAAK,WAAY;QAClCkB,IAAA;QACAC,KAAA,YAAc;QACdF,QAAA;MAAyC;IACV,KAC/BR,KAAA,CAAAiB,MAAA,KAAY,IAAQ,eAAe/B,IAAK,CAAAqB,QAAM;MAASC,QAClD,iBAAiBtB,IAAA,CAAAK,WAAW,EAAU;QAE1CkB,IAAA;QAAkCC,KAAA;QAb9BC,SAAK;QAcZH,QAAA;MAGN;IAGN,oBAAAtB,IAAA,CAAAI,UAAA;MAEJgB,SAAA;MAEAY,4BAAyD;MACvDV,QACE,iBAAAtB,IAAA,CAAAM,MAAA;QAAC2B,QAAA;QAAAN,GAAA;QACCO,aAAM,EAAAf,OAAA;QACNG,QAAW,EAAAR,KAAA,CAAAqB,GAAA,WAAAC,IAAA;UACX,IAAAC,MAAW,GAAApB,WAAA,KAAAmB,IAAA,CAAAE,IAAA;UACX,sBAAetC,IAAA,CAAAG,MAAA;YACfoB,IAAQ;YAEPgB,KAAA,EAAAF,MAAA;YAAAG,UAAA,GAAAH,MAAA;YACHI,WAAA;YAEJC,WAAA,EAAAL,MAAA","ignoreList":[]}