@licklist/design 0.44.486-dev.28 → 0.44.486-dev.3

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 (273) hide show
  1. package/dist/assets/logo/bookedit.svg +11 -9
  2. package/dist/assets/logo/bookedit.svg.js +1 -1
  3. package/dist/assets/logo/licklist.svg +2 -0
  4. package/dist/assets/logo/licklist.svg.js +1 -1
  5. package/dist/date-time-button/DateTimeButton.d.ts +1 -5
  6. package/dist/date-time-button/DateTimeButton.d.ts.map +1 -1
  7. package/dist/date-time-button/DateTimeButton.js +1 -1
  8. package/dist/events/edit-event-modal/IntervalInput.d.ts.map +1 -1
  9. package/dist/events/edit-event-modal/IntervalInput.js +1 -1
  10. package/dist/events/event-venue-map/hooks/useImage.d.ts.map +1 -1
  11. package/dist/events/event-venue-map/hooks/useImage.js +1 -1
  12. package/dist/file-upload/FileUpload.d.ts.map +1 -1
  13. package/dist/file-upload/FileUpload.js +1 -1
  14. package/dist/iframe/activity-cards/activity-card/ActivityCard.d.ts +12 -0
  15. package/dist/iframe/activity-cards/activity-card/ActivityCard.d.ts.map +1 -0
  16. package/dist/iframe/activity-cards/activity-card/ActivityCard.js +1 -0
  17. package/dist/iframe/activity-cards/index.d.ts +3 -0
  18. package/dist/iframe/activity-cards/index.d.ts.map +1 -0
  19. package/dist/iframe/activity-cards/list-activity-card/ListActivityCard.d.ts +12 -0
  20. package/dist/iframe/activity-cards/list-activity-card/ListActivityCard.d.ts.map +1 -0
  21. package/dist/iframe/activity-cards/list-activity-card/ListActivityCard.js +1 -0
  22. package/dist/iframe/event/event-calendar/EventCalendar.d.ts +5 -0
  23. package/dist/iframe/event/event-calendar/EventCalendar.d.ts.map +1 -0
  24. package/dist/iframe/event/event-calendar/EventCalendar.js +1 -0
  25. package/dist/iframe/event/event-calendar/components/CalendarButtons/CalendarButtons.d.ts +6 -0
  26. package/dist/iframe/event/event-calendar/components/CalendarButtons/CalendarButtons.d.ts.map +1 -0
  27. package/dist/iframe/event/event-calendar/components/CalendarButtons/CalendarButtons.js +1 -0
  28. package/dist/iframe/event/event-calendar/components/CalendarButtons/index.d.ts.map +1 -0
  29. package/dist/{calendar → iframe/event/event-calendar}/components/CalendarDate/CalendarDate.d.ts +2 -3
  30. package/dist/iframe/event/event-calendar/components/CalendarDate/CalendarDate.d.ts.map +1 -0
  31. package/dist/iframe/event/event-calendar/components/CalendarDate/CalendarDate.js +1 -0
  32. package/dist/iframe/event/event-calendar/components/CalendarDate/index.d.ts.map +1 -0
  33. package/dist/iframe/event/event-calendar/components/CalendarDates/CalendarDates.d.ts +5 -0
  34. package/dist/iframe/event/event-calendar/components/CalendarDates/CalendarDates.d.ts.map +1 -0
  35. package/dist/iframe/event/event-calendar/components/CalendarDates/CalendarDates.js +1 -0
  36. package/dist/iframe/event/event-calendar/components/CalendarDates/index.d.ts.map +1 -0
  37. package/dist/iframe/event/event-calendar/components/CalendarSelect/CalendarSelect.d.ts.map +1 -0
  38. package/dist/iframe/event/event-calendar/components/CalendarSelect/CalendarSelect.js +1 -0
  39. package/dist/iframe/event/event-calendar/components/CalendarSelect/index.d.ts.map +1 -0
  40. package/dist/iframe/event/event-calendar/components/CalendarWeekdays/CalendarWeekdays.d.ts.map +1 -0
  41. package/dist/iframe/event/event-calendar/components/CalendarWeekdays/index.d.ts.map +1 -0
  42. package/dist/iframe/event/event-calendar/index.d.ts +4 -0
  43. package/dist/iframe/event/event-calendar/index.d.ts.map +1 -0
  44. package/dist/iframe/event/event-calendar/types/index.d.ts +6 -0
  45. package/dist/iframe/event/event-calendar/types/index.d.ts.map +1 -0
  46. package/dist/iframe/event/event-calendar/utils/index.d.ts +3 -0
  47. package/dist/iframe/event/event-calendar/utils/index.d.ts.map +1 -0
  48. package/dist/iframe/event/event-calendar/utils/index.js +1 -0
  49. package/dist/iframe/event/index.d.ts +1 -0
  50. package/dist/iframe/event/index.d.ts.map +1 -1
  51. package/dist/iframe/index.d.ts +2 -2
  52. package/dist/iframe/index.d.ts.map +1 -1
  53. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts +1 -1
  54. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.d.ts.map +1 -1
  55. package/dist/iframe/order-process/components/BookingSummary/BookingSummary.js +1 -1
  56. package/dist/iframe/order-process/components/BookingSummary/components/BookingSummaryAccordion/BookingSummaryAccordion.js +1 -1
  57. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts +0 -1
  58. package/dist/iframe/order-process/components/BookingSummary/types/index.d.ts.map +1 -1
  59. package/dist/iframe/order-process/components/BookingSummary/utils/index.d.ts.map +1 -1
  60. package/dist/iframe/order-process/components/BookingSummary/utils/index.js +1 -1
  61. package/dist/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.d.ts +1 -1
  62. package/dist/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.d.ts.map +1 -1
  63. package/dist/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.js +1 -1
  64. package/dist/iframe/order-process/components/Timer/utils/index.d.ts +1 -1
  65. package/dist/iframe/order-process/components/Timer/utils/index.d.ts.map +1 -1
  66. package/dist/iframe/order-process/components/Timer/utils/index.js +1 -1
  67. package/dist/iframe/order-process/components/utils/useCategoryVerification.d.ts +2 -3
  68. package/dist/iframe/order-process/components/utils/useCategoryVerification.d.ts.map +1 -1
  69. package/dist/iframe/order-process/components/utils/useCategoryVerification.js +1 -1
  70. package/dist/iframe/page/components/PageBody/components/LeftBlock/LeftBlock.d.ts.map +1 -1
  71. package/dist/iframe/page/components/PageBody/components/LeftBlock/LeftBlock.js +1 -1
  72. package/dist/iframe/payment/order-items-table/hooks/useTableData.d.ts.map +1 -1
  73. package/dist/iframe/payment/order-items-table/hooks/useTableData.js +1 -1
  74. package/dist/iframe/payment/order-items-table/types/index.d.ts +1 -7
  75. package/dist/iframe/payment/order-items-table/types/index.d.ts.map +1 -1
  76. package/dist/index.d.ts +0 -1
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +1 -1
  79. package/dist/notification/email-template/control/EmailTemplateControl.d.ts.map +1 -1
  80. package/dist/notification/email-template/control/EmailTemplateControl.js +1 -1
  81. package/dist/product-set/form/ProductCategoriesControl.d.ts.map +1 -1
  82. package/dist/product-set/form/ProductCategoriesControl.js +1 -1
  83. package/dist/product-set/form/ProductsControl.d.ts +1 -3
  84. package/dist/product-set/form/ProductsControl.d.ts.map +1 -1
  85. package/dist/product-set/form/ProductsControl.js +1 -1
  86. package/dist/product-set/product/ProductControl.d.ts +1 -2
  87. package/dist/product-set/product/ProductControl.d.ts.map +1 -1
  88. package/dist/product-set/product/ProductControl.js +1 -1
  89. package/dist/product-set/product/duration/ProductDurationControl.js +1 -1
  90. package/dist/product-set/product-category/ProductCategoryControl.d.ts.map +1 -1
  91. package/dist/product-set/product-category/ProductCategoryControl.js +1 -1
  92. package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
  93. package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +1 -1
  94. package/dist/recurrence-input/RecurrenceEndInput.d.ts +1 -2
  95. package/dist/recurrence-input/RecurrenceEndInput.d.ts.map +1 -1
  96. package/dist/recurrence-input/RecurrenceEndInput.js +1 -1
  97. package/dist/recurrence-input/RecurrenceInput.d.ts +1 -2
  98. package/dist/recurrence-input/RecurrenceInput.d.ts.map +1 -1
  99. package/dist/recurrence-input/RecurrenceInput.js +1 -1
  100. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts +1 -4
  101. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.d.ts.map +1 -1
  102. package/dist/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.js +1 -1
  103. package/dist/report/form/ReportForm.d.ts.map +1 -1
  104. package/dist/snippet/snippet-template/preview/Preview.d.ts.map +1 -1
  105. package/dist/snippet/snippet-template/preview/Preview.js +1 -1
  106. package/dist/static/RestrictedAccess.d.ts.map +1 -1
  107. package/dist/static/form-number-input/FormNumberInput.d.ts +1 -2
  108. package/dist/static/form-number-input/FormNumberInput.d.ts.map +1 -1
  109. package/dist/static/form-number-input/FormNumberInput.js +1 -1
  110. package/dist/styles/header/Header.scss +4 -0
  111. package/dist/styles/{activity-card/GridActivitiesCard.scss → iframe-customers-journey/ActivitiesCard.scss} +1 -1
  112. package/{src/styles/activity-card/ListActivitiesCard.scss → dist/styles/iframe-customers-journey/ActivitiesSelectedCard.scss} +1 -2
  113. package/dist/styles/{date-time-button → iframe-customers-journey}/DateTimeButton.scss +6 -3
  114. package/dist/styles/iframe-customers-journey/_index.scss +3 -0
  115. package/dist/styles/iframe-events/Calendar.scss +14 -14
  116. package/dist/styles/iframe-events/Card.scss +0 -1
  117. package/dist/styles/iframe-page/PageBody.scss +2 -3
  118. package/dist/styles/notification/Notification.scss +0 -4
  119. package/dist/styles/packages.scss +1 -2
  120. package/dist/styles/resources-blocking/_index.scss +0 -5
  121. package/dist/styles/themes/bookedit/_index.scss +0 -1
  122. package/dist/zone/form/components/AvailableTimesControl.d.ts.map +1 -1
  123. package/dist/zone/form/components/AvailableTimesControl.js +1 -1
  124. package/dist/zone/form/components/ZoneControl.d.ts.map +1 -1
  125. package/dist/zone/form/components/ZoneControl.js +1 -1
  126. package/dist/zone/form/components/ZoneRecurrencesControl.d.ts.map +1 -1
  127. package/dist/zone/form/components/ZoneRecurrencesControl.js +1 -1
  128. package/dist/zone/form/utils/dates.d.ts.map +1 -1
  129. package/dist/zone/form/utils/dates.js +1 -1
  130. package/package.json +2 -2
  131. package/src/assets/logo/bookedit.svg +11 -9
  132. package/src/assets/logo/licklist.svg +2 -0
  133. package/src/date-time-button/DateTimeButton.stories.tsx +0 -17
  134. package/src/date-time-button/DateTimeButton.tsx +20 -42
  135. package/src/events/edit-event-modal/IntervalInput.tsx +0 -3
  136. package/src/events/event-venue-map/hooks/useImage.tsx +8 -17
  137. package/src/file-upload/FileUpload.tsx +1 -3
  138. package/src/iframe/{activity-card → activity-cards/activity-card}/ActivityCard.stories.tsx +1 -24
  139. package/src/iframe/activity-cards/activity-card/ActivityCard.tsx +38 -0
  140. package/src/iframe/activity-cards/index.ts +2 -0
  141. package/src/iframe/activity-cards/list-activity-card/ListActivityCard.stories.tsx +52 -0
  142. package/src/iframe/activity-cards/list-activity-card/ListActivityCard.tsx +49 -0
  143. package/src/iframe/event/event-calendar/EventCalendar.stories.tsx +37 -0
  144. package/src/iframe/event/event-calendar/EventCalendar.tsx +20 -0
  145. package/src/{calendar → iframe/event/event-calendar}/components/CalendarButtons/CalendarButtons.tsx +14 -31
  146. package/src/{calendar → iframe/event/event-calendar}/components/CalendarDate/CalendarDate.tsx +2 -10
  147. package/src/{calendar → iframe/event/event-calendar}/components/CalendarDates/CalendarDates.tsx +13 -17
  148. package/src/{calendar → iframe/event/event-calendar}/components/CalendarSelect/CalendarSelect.tsx +1 -1
  149. package/src/iframe/event/event-calendar/index.ts +6 -0
  150. package/src/iframe/event/event-calendar/types/index.ts +6 -0
  151. package/src/iframe/event/event-calendar/utils/index.ts +11 -0
  152. package/src/iframe/event/event-venue-map/IframeEventVenueMap.stories.tsx +1 -1
  153. package/src/iframe/event/index.ts +6 -0
  154. package/src/iframe/index.ts +2 -1
  155. package/src/iframe/order-process/components/BookingSummary/BookingSummary.tsx +0 -2
  156. package/src/iframe/order-process/components/BookingSummary/types/index.ts +0 -1
  157. package/src/iframe/order-process/components/BookingSummary/utils/index.ts +0 -2
  158. package/src/iframe/order-process/components/CalendarStepsForm/CalendarStepsForm.tsx +3 -5
  159. package/src/iframe/order-process/components/Timer/utils/index.ts +9 -6
  160. package/src/iframe/order-process/components/utils/useCategoryVerification.ts +29 -28
  161. package/src/iframe/page/Page.stories.tsx +2 -2
  162. package/src/iframe/page/components/PageBody/components/LeftBlock/LeftBlock.tsx +1 -6
  163. package/src/iframe/payment/order-items-table/hooks/useTableData.tsx +99 -11
  164. package/src/iframe/payment/order-items-table/types/index.ts +1 -18
  165. package/src/iframe/payment/payment-page/PaymentPage.tsx +4 -4
  166. package/src/index.ts +0 -1
  167. package/src/notification/email-template/control/EmailTemplateControl.tsx +1 -26
  168. package/src/product-set/form/ProductCategoriesControl.tsx +0 -2
  169. package/src/product-set/form/ProductSetForm.stories.tsx +0 -1
  170. package/src/product-set/form/ProductsControl.tsx +0 -10
  171. package/src/product-set/product/ProductControl.tsx +8 -30
  172. package/src/product-set/product/duration/ProductDurationControl.tsx +1 -1
  173. package/src/product-set/product-category/ProductCategoryControl.tsx +5 -15
  174. package/src/provider/location-input/LocationInputDescription.tsx +2 -2
  175. package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +8 -10
  176. package/src/recurrence-input/RecurrenceEndInput.tsx +9 -27
  177. package/src/recurrence-input/RecurrenceInput.tsx +0 -3
  178. package/src/recurring-date-picker-input/RecurrenceIntervalAndFrequencyInput.tsx +21 -24
  179. package/src/report/form/ReportForm.tsx +1 -1
  180. package/src/snippet/snippet-template/preview/Preview.tsx +2 -14
  181. package/src/static/CountryCodeSelect.tsx +3 -3
  182. package/src/static/RestrictedAccess.tsx +1 -1
  183. package/src/static/form-number-input/FormNumberInput.tsx +1 -8
  184. package/src/styles/header/Header.scss +4 -0
  185. package/src/styles/{activity-card/GridActivitiesCard.scss → iframe-customers-journey/ActivitiesCard.scss} +1 -1
  186. package/{dist/styles/activity-card/ListActivitiesCard.scss → src/styles/iframe-customers-journey/ActivitiesSelectedCard.scss} +1 -2
  187. package/src/styles/{date-time-button → iframe-customers-journey}/DateTimeButton.scss +6 -3
  188. package/src/styles/iframe-customers-journey/_index.scss +3 -0
  189. package/src/styles/iframe-events/Calendar.scss +14 -14
  190. package/src/styles/iframe-events/Card.scss +0 -1
  191. package/src/styles/iframe-page/PageBody.scss +2 -3
  192. package/src/styles/notification/Notification.scss +0 -4
  193. package/src/styles/packages.scss +1 -2
  194. package/src/styles/resources-blocking/_index.scss +0 -5
  195. package/src/styles/themes/bookedit/_index.scss +0 -1
  196. package/src/typings.d.ts +0 -11
  197. package/src/zone/form/components/AvailableTimesControl.tsx +9 -4
  198. package/src/zone/form/components/ZoneControl.tsx +0 -2
  199. package/src/zone/form/components/ZoneRecurrencesControl.tsx +35 -27
  200. package/src/zone/form/utils/dates.ts +36 -29
  201. package/dist/assets/iframe/available.svg.js +0 -1
  202. package/dist/assets/iframe/limited.svg.js +0 -1
  203. package/dist/assets/iframe/soldOut.svg.js +0 -1
  204. package/dist/assets/logo/favicon.svg +0 -12
  205. package/dist/calendar/Calendar.d.ts +0 -16
  206. package/dist/calendar/Calendar.d.ts.map +0 -1
  207. package/dist/calendar/Calendar.js +0 -1
  208. package/dist/calendar/components/CalendarButtons/CalendarButtons.d.ts +0 -6
  209. package/dist/calendar/components/CalendarButtons/CalendarButtons.d.ts.map +0 -1
  210. package/dist/calendar/components/CalendarButtons/CalendarButtons.js +0 -1
  211. package/dist/calendar/components/CalendarButtons/index.d.ts.map +0 -1
  212. package/dist/calendar/components/CalendarDate/CalendarDate.d.ts.map +0 -1
  213. package/dist/calendar/components/CalendarDate/CalendarDate.js +0 -1
  214. package/dist/calendar/components/CalendarDate/index.d.ts.map +0 -1
  215. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts +0 -8
  216. package/dist/calendar/components/CalendarDates/CalendarDates.d.ts.map +0 -1
  217. package/dist/calendar/components/CalendarDates/CalendarDates.js +0 -1
  218. package/dist/calendar/components/CalendarDates/index.d.ts.map +0 -1
  219. package/dist/calendar/components/CalendarSelect/CalendarSelect.d.ts.map +0 -1
  220. package/dist/calendar/components/CalendarSelect/CalendarSelect.js +0 -1
  221. package/dist/calendar/components/CalendarSelect/index.d.ts.map +0 -1
  222. package/dist/calendar/components/CalendarWeekdays/CalendarWeekdays.d.ts.map +0 -1
  223. package/dist/calendar/components/CalendarWeekdays/index.d.ts.map +0 -1
  224. package/dist/calendar/index.d.ts +0 -4
  225. package/dist/calendar/index.d.ts.map +0 -1
  226. package/dist/calendar/utils/index.d.ts +0 -5
  227. package/dist/calendar/utils/index.d.ts.map +0 -1
  228. package/dist/calendar/utils/index.js +0 -1
  229. package/dist/iframe/activity-card/ActivityCard.d.ts +0 -17
  230. package/dist/iframe/activity-card/ActivityCard.d.ts.map +0 -1
  231. package/dist/iframe/activity-card/ActivityCard.js +0 -1
  232. package/dist/iframe/activity-card/index.d.ts +0 -2
  233. package/dist/iframe/activity-card/index.d.ts.map +0 -1
  234. package/dist/iframe/payment/order-items-table/types/index.js +0 -1
  235. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts +0 -3
  236. package/dist/iframe/payment/order-items-table/utils/paymentSummary.d.ts.map +0 -1
  237. package/dist/iframe/payment/order-items-table/utils/paymentSummary.js +0 -1
  238. package/dist/styles/activity-card/_index.scss +0 -2
  239. package/dist/styles/date-time-button/_index.scss +0 -1
  240. package/dist/zone/form/components/GameDurationControl.d.ts +0 -7
  241. package/dist/zone/form/components/GameDurationControl.d.ts.map +0 -1
  242. package/dist/zone/form/components/GameDurationControl.js +0 -1
  243. package/src/assets/logo/favicon.svg +0 -12
  244. package/src/calendar/Calendar.stories.tsx +0 -33
  245. package/src/calendar/Calendar.tsx +0 -59
  246. package/src/calendar/index.ts +0 -3
  247. package/src/calendar/utils/index.ts +0 -28
  248. package/src/iframe/activity-card/ActivityCard.tsx +0 -77
  249. package/src/iframe/activity-card/index.ts +0 -1
  250. package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +0 -118
  251. package/src/styles/activity-card/_index.scss +0 -2
  252. package/src/styles/date-time-button/_index.scss +0 -1
  253. package/src/zone/form/components/GameDurationControl.tsx +0 -46
  254. /package/dist/assets/iframe/{available.svg → dateInfo/available.svg} +0 -0
  255. /package/dist/assets/iframe/{limited.svg → dateInfo/limited.svg} +0 -0
  256. /package/dist/assets/iframe/{soldOut.svg → dateInfo/soldOut.svg} +0 -0
  257. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarButtons/index.d.ts +0 -0
  258. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarDate/index.d.ts +0 -0
  259. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarDates/index.d.ts +0 -0
  260. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarSelect/CalendarSelect.d.ts +0 -0
  261. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarSelect/index.d.ts +0 -0
  262. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarWeekdays/CalendarWeekdays.d.ts +0 -0
  263. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarWeekdays/CalendarWeekdays.js +0 -0
  264. /package/dist/{calendar → iframe/event/event-calendar}/components/CalendarWeekdays/index.d.ts +0 -0
  265. /package/src/assets/iframe/{available.svg → dateInfo/available.svg} +0 -0
  266. /package/src/assets/iframe/{limited.svg → dateInfo/limited.svg} +0 -0
  267. /package/src/assets/iframe/{soldOut.svg → dateInfo/soldOut.svg} +0 -0
  268. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarButtons/index.ts +0 -0
  269. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarDate/index.ts +0 -0
  270. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarDates/index.ts +0 -0
  271. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarSelect/index.ts +0 -0
  272. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarWeekdays/CalendarWeekdays.tsx +0 -0
  273. /package/src/{calendar → iframe/event/event-calendar}/components/CalendarWeekdays/index.ts +0 -0
@@ -14,7 +14,6 @@ import { generateUuid } from "@licklist/core/dist/Services";
14
14
  import HookFormService from "@licklist/plugins/dist/services/Form/HookFormService";
15
15
 
16
16
  import { CategoryType } from "@licklist/core/dist/DataMapper/Product/ProductCategoryDataMapper";
17
- import { Zone } from "@licklist/core/dist/DataMapper/Provider/ZoneDataMapper";
18
17
  import { ProductControl, ProductControlProps, ProductSetFormValues } from "..";
19
18
  import { SortableTree } from "../../sortable-tree";
20
19
  import { CreateProductSetItem } from "../item/CreateProductSetItem";
@@ -33,7 +32,6 @@ interface ProductsControlProps extends WithIsLoading {
33
32
  productCategoryIndex: number;
34
33
  hasTicket?: boolean;
35
34
  categoryType: CategoryType;
36
- zones?: Zone[];
37
35
  }
38
36
 
39
37
  const getDefaultProductValue = (sort: number): Product => ({
@@ -76,7 +74,6 @@ export function ProductsControl({
76
74
  productCategoryIndex,
77
75
  hasTicket,
78
76
  categoryType,
79
- zones,
80
77
  }: ProductsControlProps) {
81
78
  const { t } = useTranslation("Design");
82
79
  const form = useFormContext<ProductSetFormValues>();
@@ -92,12 +89,6 @@ export function ProductsControl({
92
89
  getValues,
93
90
  } = form;
94
91
 
95
- const zoneId = watch(
96
- `steps.${stepIndex}.productCategories.${productCategoryIndex}.zoneId`
97
- );
98
-
99
- const catergoryZone = zones?.find((zone) => zone.id === Number(zoneId));
100
-
101
92
  const productControlFieldName =
102
93
  `steps.${stepIndex}.productCategories.${productCategoryIndex}.products` as const;
103
94
 
@@ -254,7 +245,6 @@ export function ProductsControl({
254
245
  onProductNameChange={onChange}
255
246
  hasTicket={hasTicket}
256
247
  categoryType={categoryType}
257
- zoneDuration={catergoryZone?.defaultDuration}
258
248
  />
259
249
  }
260
250
  onDelete={() => onProductRemove(index)}
@@ -113,7 +113,6 @@ export interface ProductControlProps<T>
113
113
  productName: string;
114
114
  hasTicket?: boolean;
115
115
  categoryType?: CategoryType;
116
- zoneDuration?: number;
117
116
  }
118
117
 
119
118
  export function ProductControl<T extends FormValues>({
@@ -127,7 +126,6 @@ export function ProductControl<T extends FormValues>({
127
126
  productName,
128
127
  hasTicket,
129
128
  categoryType,
130
- zoneDuration,
131
129
  }: ProductControlProps<T>) {
132
130
  const {
133
131
  register,
@@ -135,7 +133,6 @@ export function ProductControl<T extends FormValues>({
135
133
  formState: { errors },
136
134
  setValue,
137
135
  getValues,
138
- setError,
139
136
  watch,
140
137
  } = useFormContext<T>();
141
138
 
@@ -193,13 +190,6 @@ export function ProductControl<T extends FormValues>({
193
190
  [handleImageUploading]
194
191
  );
195
192
 
196
- const onChangeGameCapacity = (value: number) => {
197
- setValue(
198
- `${fieldNamePrefix}.duration` as Path<T>,
199
- (value * zoneDuration) as UnpackNestedValue<PathValue<T, Path<T>>>
200
- );
201
- };
202
-
203
193
  const onImageRemove = useCallback(
204
194
  (id, path) => {
205
195
  handleImageRemove(String(id), path);
@@ -227,17 +217,6 @@ export function ProductControl<T extends FormValues>({
227
217
  }
228
218
  }, [images, fieldNamePrefix, setValue]);
229
219
 
230
- useEffect(() => {
231
- if (categoryType !== CATEGORY_TYPE_GAME || zoneDuration) {
232
- return;
233
- }
234
-
235
- setError(`${fieldNamePrefix}.duration` as Path<T>, {
236
- message: t("Validation:categoryZoneDoesntHaveDefaultDuration"),
237
- });
238
- // eslint-disable-next-line react-hooks/exhaustive-deps
239
- }, [categoryType, zoneDuration, fieldNamePrefix]);
240
-
241
220
  const quantitySelector = quantityValue ?? "1";
242
221
  const quantity = QUANTITY_TYPE_LIST_DTO[quantitySelector as string];
243
222
  return (
@@ -393,14 +372,6 @@ export function ProductControl<T extends FormValues>({
393
372
  <FormNumberInput
394
373
  fieldName={`${fieldNamePrefix}.capacity`}
395
374
  label={t("capacity")}
396
- rules={{
397
- min: {
398
- value: 1,
399
- message: t("Validation:fieldRequired", {
400
- attribute: t("capacity"),
401
- }) as string,
402
- },
403
- }}
404
375
  />
405
376
  </Col>
406
377
  </Row>
@@ -412,7 +383,6 @@ export function ProductControl<T extends FormValues>({
412
383
  <FormNumberInput
413
384
  fieldName={`${fieldNamePrefix}.capacity`}
414
385
  label={t("capacity")}
415
- onChange={onChangeGameCapacity}
416
386
  rules={{
417
387
  min: {
418
388
  value: 1,
@@ -427,6 +397,14 @@ export function ProductControl<T extends FormValues>({
427
397
  <FormNumberInput
428
398
  fieldName={`${fieldNamePrefix}.duration`}
429
399
  label={t("durationMinutes")}
400
+ rules={{
401
+ min: {
402
+ value: 1,
403
+ message: t("Validation:fieldRequired", {
404
+ attribute: t("duration"),
405
+ }) as string,
406
+ },
407
+ }}
430
408
  />
431
409
  </Col>
432
410
  </Row>
@@ -66,7 +66,7 @@ export const ProductDurationControl = <T,>({
66
66
  },
67
67
  min: {
68
68
  value: 1,
69
- message: t("Validation:fieldMinNumber", {
69
+ message: t("Validation:fieldMin", {
70
70
  attribute: t("duration"),
71
71
  }),
72
72
  },
@@ -332,7 +332,7 @@ export function ProductCategoryControl({
332
332
  <Row>
333
333
  <Col>
334
334
  <Form.Group controlId={zoneId}>
335
- <Form.Label>{t("Design:zone")}</Form.Label>
335
+ <Form.Label>Zone</Form.Label>
336
336
  <Controller
337
337
  control={control}
338
338
  name={`${fieldNamePrefix}.zoneId`}
@@ -361,20 +361,10 @@ export function ProductCategoryControl({
361
361
  }),
362
362
  },
363
363
  validate: (value) => {
364
- if (category.type !== CATEGORY_TYPE_GAME) {
365
- return true;
366
- }
367
- const selelctedZone = zones?.find(
368
- (zone) => zone?.id === Number(value)
369
- );
370
-
371
- if (!selelctedZone?.defaultDuration) {
372
- return t(
373
- "Validation:zoneDoesntHaveDefaultDuration"
374
- ) as string;
375
- }
376
-
377
- return true;
364
+ if (value) return true;
365
+ return t("Validation:fieldRequired", {
366
+ attribute: t("zone"),
367
+ }) as string;
378
368
  },
379
369
  }}
380
370
  />
@@ -1,4 +1,4 @@
1
- import React, { ReactElement } from "react";
1
+ import React from "react";
2
2
  import { useFormContext } from "react-hook-form";
3
3
  import en from "react-phone-number-input/locale/en.json";
4
4
  import { LocationInputValues } from ".";
@@ -13,7 +13,7 @@ export function LocationInputDescription() {
13
13
  "postcode",
14
14
  "country",
15
15
  ] as const;
16
- const fields = fieldNames.reduce<ReactElement[]>((acc, field) => {
16
+ const fields = fieldNames.reduce<JSX.Element[]>((acc, field) => {
17
17
  const value = values?.[field];
18
18
  if (!value) return acc;
19
19
 
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import { Col, Row } from "react-bootstrap";
4
4
  import { useFormContext } from "react-hook-form";
5
5
  import { useTranslation } from "react-i18next";
6
- import { TIME_FORMAT } from "@licklist/core/dist/Config";
6
+ import { useIntl } from "react-intl";
7
7
  import { WorkingHoursInputValues } from ".";
8
8
  import { useWeekdays } from "./utils";
9
9
 
@@ -12,9 +12,7 @@ export function WorkingHoursInputDescription() {
12
12
  const values = watch("workingHours");
13
13
  const weekdays = useWeekdays("short");
14
14
  const { t } = useTranslation("Design");
15
-
16
- if (!values) return null;
17
-
15
+ const { formatTime } = useIntl();
18
16
  return (
19
17
  <>
20
18
  {Array.from({ length: weekdays.length }, (_, i) => i)
@@ -28,16 +26,16 @@ export function WorkingHoursInputDescription() {
28
26
  {weekday?.end
29
27
  ? weekday.start
30
28
  ? t("timeInterval", {
31
- start: DateTime.fromISO(weekday.start).toFormat(
32
- TIME_FORMAT
29
+ start: formatTime(
30
+ DateTime.fromISO(weekday.start).toJSDate()
33
31
  ),
34
- end: DateTime.fromISO(weekday.start).toFormat(
35
- TIME_FORMAT
32
+ end: formatTime(
33
+ DateTime.fromISO(weekday.end).toJSDate()
36
34
  ),
37
35
  })
38
36
  : t("timeFrom", {
39
- start: DateTime.fromISO(weekday.start).toFormat(
40
- TIME_FORMAT
37
+ start: formatTime(
38
+ DateTime.fromISO(weekday.start).toJSDate()
41
39
  ),
42
40
  })
43
41
  : null}
@@ -1,19 +1,17 @@
1
- import React, { useEffect, useRef } from "react";
1
+ import React, { useRef } from "react";
2
2
  import { useId } from "@react-aria/utils";
3
3
  import { DateTime, DurationUnit } from "luxon";
4
4
  import { Col, Form, InputGroup, Row } from "react-bootstrap";
5
5
  import RRule from "rrule";
6
- import { DATE_FORMAT } from "@licklist/core/dist/Config";
7
- import { useTranslation } from "react-i18next";
6
+
8
7
  import { SupportedFrequency } from "./utils";
9
8
  import HTMLInputDateElement from "../types/static/HTMLInputDateElement";
10
9
 
11
10
  interface Props {
12
11
  disabled?: boolean;
13
- date: string; // yyyy-mm-ddThh:mm
14
- minDate?: string; // should be in yyyy-mm-dd format
12
+ date: string;
15
13
  frequency: SupportedFrequency;
16
- until?: string; // yyyy-mm-dd
14
+ until?: string;
17
15
  count?: number;
18
16
  onChange: (values: { until?: string; count?: number }) => void;
19
17
  }
@@ -25,31 +23,16 @@ function RecurrenceEndInput({
25
23
  until,
26
24
  count,
27
25
  onChange,
28
- minDate,
29
26
  }: Props) {
30
- const { t } = useTranslation("Design");
31
27
  // unique ids for radios
32
28
  const neverId = useId();
33
29
  const onId = useId();
34
30
  const afterId = useId();
35
31
  const dateInput = useRef<HTMLInputDateElement | null>(null);
36
32
 
37
- useEffect(() => {
38
- const untilDatetime = DateTime.fromFormat(
39
- until ?? getUntil({ date, frequency }),
40
- DATE_FORMAT
41
- );
42
-
43
- const minDatetime = DateTime.fromFormat(minDate, DATE_FORMAT);
44
-
45
- if (minDatetime > untilDatetime) {
46
- onChange({ until: minDate });
47
- }
48
- }, [minDate, onChange, until, date, frequency]);
49
-
50
33
  return (
51
34
  <Form.Group>
52
- <Form.Label>{t("ends")}</Form.Label>
35
+ <Form.Label>Ends</Form.Label>
53
36
 
54
37
  <Form.Check type="radio" id={neverId} custom className="mt-3">
55
38
  <Form.Check.Input
@@ -58,7 +41,7 @@ function RecurrenceEndInput({
58
41
  onChange={() => onChange({ count: 500 })}
59
42
  disabled={disabled}
60
43
  />
61
- <Form.Check.Label>{t("never")}</Form.Check.Label>
44
+ <Form.Check.Label>Never</Form.Check.Label>
62
45
  </Form.Check>
63
46
 
64
47
  <Form.Check type="radio" id={onId} custom className="mt-3">
@@ -72,12 +55,11 @@ function RecurrenceEndInput({
72
55
  }
73
56
  disabled={disabled}
74
57
  />
75
- <Form.Check.Label>{t("on")}</Form.Check.Label>
58
+ <Form.Check.Label>On</Form.Check.Label>
76
59
  </Col>
77
60
  <Col>
78
61
  <Form.Control
79
62
  type="date"
80
- min={minDate}
81
63
  disabled={disabled || !until}
82
64
  aria-label="Date on which the recurrence ends"
83
65
  value={until ?? getUntil({ date, frequency })}
@@ -101,7 +83,7 @@ function RecurrenceEndInput({
101
83
  }
102
84
  disabled={disabled}
103
85
  />
104
- <Form.Check.Label>{t("after")}</Form.Check.Label>
86
+ <Form.Check.Label>After</Form.Check.Label>
105
87
  </Col>
106
88
  <Col>
107
89
  <InputGroup>
@@ -117,7 +99,7 @@ function RecurrenceEndInput({
117
99
  }
118
100
  />
119
101
  <InputGroup.Append>
120
- <InputGroup.Text>{t("occurences")}</InputGroup.Text>
102
+ <InputGroup.Text>occurrences</InputGroup.Text>
121
103
  </InputGroup.Append>
122
104
  </InputGroup>
123
105
  </Col>
@@ -16,7 +16,6 @@ import {
16
16
  export interface RecurrenceInputProps {
17
17
  disabled?: boolean;
18
18
  date: string;
19
- minDate?: string;
20
19
  value?: string;
21
20
  onChange: (value: string) => void;
22
21
  initialFrequency?: Frequency;
@@ -25,7 +24,6 @@ export interface RecurrenceInputProps {
25
24
  export function RecurrenceInput({
26
25
  disabled = false,
27
26
  date,
28
- minDate,
29
27
  value,
30
28
  onChange,
31
29
  initialFrequency = Frequency.WEEKLY,
@@ -84,7 +82,6 @@ export function RecurrenceInput({
84
82
  )}
85
83
  <RecurrenceEndInput
86
84
  date={date}
87
- minDate={minDate}
88
85
  frequency={state.freq}
89
86
  until={state.until && DateTime.fromJSDate(state.until).toISODate()}
90
87
  count={state.count}
@@ -2,8 +2,8 @@ import React, { useEffect } from "react";
2
2
  import { DateTime } from "luxon";
3
3
  import { Col, Form, Row } from "react-bootstrap";
4
4
  import { useTranslation } from "react-i18next";
5
- import { RegisterOptions, useFormContext } from "react-hook-form";
6
- import { DATE_FORMAT } from "@licklist/core/dist/Config";
5
+ import { useFormContext } from "react-hook-form";
6
+ import { DATE_FORMAT, TIME_FULL_FORMAT } from "@licklist/core/dist/Config";
7
7
  import { RecurringDatePickerInputValues } from "./RecurringDatePickerInput";
8
8
 
9
9
  interface RecurrenceIntervalAndFrequencyInputProps {
@@ -13,14 +13,6 @@ interface RecurrenceIntervalAndFrequencyInputProps {
13
13
  startTimeLabel?: string;
14
14
  endDateLabel?: string;
15
15
  endTimeLabel?: string;
16
- startTimeRules?: Pick<
17
- RegisterOptions,
18
- "max" | "min" | "validate" | "required" | "pattern"
19
- >;
20
- endTimeRules?: Pick<
21
- RegisterOptions,
22
- "max" | "min" | "validate" | "required" | "pattern"
23
- >;
24
16
  }
25
17
 
26
18
  function RecurrenceIntervalAndFrequencyInput({
@@ -30,8 +22,6 @@ function RecurrenceIntervalAndFrequencyInput({
30
22
  startTimeLabel,
31
23
  endDateLabel,
32
24
  endTimeLabel,
33
- startTimeRules,
34
- endTimeRules,
35
25
  }: RecurrenceIntervalAndFrequencyInputProps) {
36
26
  const { t } = useTranslation(["Design", "Notification", "App"]);
37
27
 
@@ -40,6 +30,7 @@ function RecurrenceIntervalAndFrequencyInput({
40
30
  formState: { errors },
41
31
  register,
42
32
  trigger,
33
+ setValue,
43
34
  } = useFormContext<RecurringDatePickerInputValues>();
44
35
 
45
36
  const startDate = getValues("startDate");
@@ -56,9 +47,6 @@ function RecurrenceIntervalAndFrequencyInput({
56
47
  }, [startDate]);
57
48
 
58
49
  useEffect(() => {
59
- if (!startTime || !endTime) {
60
- return;
61
- }
62
50
  trigger("endTime");
63
51
  // eslint-disable-next-line react-hooks/exhaustive-deps
64
52
  }, [startTime]);
@@ -130,15 +118,15 @@ function RecurrenceIntervalAndFrequencyInput({
130
118
  </Form.Label>
131
119
  <Form.Control
132
120
  type="time"
133
- {...register("startTime", { required: false, ...startTimeRules })}
121
+ {...register("startTime", { required: false })}
122
+ onChange={({ target: { value } }) => {
123
+ setValue("startTime", `${value}:00`);
124
+ }}
134
125
  placeholder="hh:mm"
135
126
  defaultValue={startTime}
136
127
  disabled={disabled}
137
128
  isInvalid={Boolean(errors.startTime)}
138
129
  />
139
- <Form.Control.Feedback type="invalid">
140
- {errors.startTime?.message}
141
- </Form.Control.Feedback>
142
130
  </Form.Group>
143
131
  </Col>
144
132
 
@@ -153,19 +141,28 @@ function RecurrenceIntervalAndFrequencyInput({
153
141
  if (!startTime || !time) {
154
142
  return true;
155
143
  }
156
- const currentStartTime = DateTime.fromISO(startTime);
157
- const currentEndTime = DateTime.fromISO(time);
144
+ const currentStartTime = DateTime.fromFormat(
145
+ startTime,
146
+ TIME_FULL_FORMAT
147
+ );
148
+
149
+ const currentEndTime = DateTime.fromFormat(
150
+ time,
151
+ TIME_FULL_FORMAT
152
+ );
158
153
 
159
- return currentEndTime?.diff(currentStartTime, ["minutes"])
160
- ?.minutes >= 0
154
+ return currentEndTime?.diff(currentStartTime, ["seconds"])
155
+ ?.seconds > 0
161
156
  ? true
162
157
  : `${t(`Validation:fieldLaterDate`, {
163
158
  attribute: t("Design:endTimeSmall"),
164
159
  min: t("Design:startTimeSmall"),
165
160
  })}`;
166
161
  },
167
- ...endTimeRules,
168
162
  })}
163
+ onChange={({ target: { value } }) => {
164
+ setValue("endTime", `${value}:59`, { shouldValidate: true });
165
+ }}
169
166
  placeholder="hh:mm"
170
167
  defaultValue={endTime}
171
168
  disabled={disabled}
@@ -15,7 +15,7 @@ export function ReportForm({
15
15
  onSubmit,
16
16
  onHide,
17
17
  hasPermission,
18
- }: ReportFormProps) {
18
+ }: ReportFormProps): JSX.Element {
19
19
  const { t } = useTranslation(["App"]);
20
20
  const fromDateInput = useRef<HTMLInputDateElement | null>(null);
21
21
  const toDateInput = useRef<HTMLInputDateElement | null>(null);
@@ -7,9 +7,6 @@ import {
7
7
  SNIPPET_TYPE_VENUE_MAP,
8
8
  } from "@licklist/core/dist/DataMapper/Provider/SnippetDataMapper";
9
9
  import { ProductSet } from "@licklist/core/dist/DataMapper/Product/ProductSetDataMapper";
10
- import { DateTime } from "luxon";
11
- import { Calendar, defaultStartDay } from "../../../calendar";
12
- import { getMonthCalendarDates } from "../../../calendar/utils";
13
10
  import { IframeEventCard } from "../../../iframe/event/event-card";
14
11
  import { SettingButton } from "../settings";
15
12
  import {
@@ -27,6 +24,7 @@ import {
27
24
  } from "../../../iframe";
28
25
  import { NumberInput } from "../../../iframe/order-process/components/CategoryProduct/components/NumberInput";
29
26
  import { SnippetTemplateContext } from "../context/snippetTemplate";
27
+ import { EventCalendar } from "../../../iframe/event/event-calendar";
30
28
 
31
29
  const DEFAULT_IMAGE =
32
30
  "https://images.unsplash.com/photo-1638988319382-90e61be77c59?ixlib=rb-1.2.1&auto=format&fit=crop&w=687&q=80";
@@ -54,10 +52,6 @@ export function Preview({
54
52
  onSettingClick();
55
53
  };
56
54
 
57
- const [currentDate, setCurrentDate] = useState<DateTime>(defaultStartDay);
58
- const [selectedDate, setSelectedDate] = useState<DateTime | null>(null);
59
- const calendarDates = getMonthCalendarDates(currentDate);
60
-
61
55
  return (
62
56
  <div className="w-100 h-100 snippet-template-preview">
63
57
  <Page
@@ -202,13 +196,7 @@ export function Preview({
202
196
  className="mt-3 m-0"
203
197
  containerClassName="mt-5 pt-5"
204
198
  >
205
- <Calendar
206
- currentDate={currentDate}
207
- setCurrentDate={setCurrentDate}
208
- selectedDate={selectedDate}
209
- setSelectedDate={setSelectedDate}
210
- calendarDates={calendarDates}
211
- />
199
+ <EventCalendar />
212
200
  </SettingButton>
213
201
  </div>
214
202
  <div className="pt-4">
@@ -52,9 +52,9 @@ function CountryCodeSelect({
52
52
  {t("chooseCountry")}
53
53
  </option>
54
54
  {sortedCountries.map((key: keyof typeof en) => (
55
- <option key={key as string} value={key as string}>
56
- {en[key]}
57
- </option>
55
+ <option key={key as string} value={key as string}>
56
+ {en[key]}
57
+ </option>
58
58
  ))}
59
59
  </Form.Control>
60
60
  <Form.Control.Feedback type="invalid">{error}</Form.Control.Feedback>
@@ -4,7 +4,7 @@ import RouteService from "@licklist/plugins/dist/services/Route/RouteService";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import Icon from "./Icon";
6
6
 
7
- function RestrictedAccess() {
7
+ function RestrictedAccess(): JSX.Element {
8
8
  const { t } = useTranslation("Design");
9
9
 
10
10
  return (
@@ -15,7 +15,6 @@ interface FormNumberInputProps {
15
15
  label: string;
16
16
  fieldName: string;
17
17
  step?: number;
18
- onChange?: (value: number) => void;
19
18
  disabled?: boolean;
20
19
  rules?: Pick<
21
20
  RegisterOptions,
@@ -29,7 +28,6 @@ export const FormNumberInput = ({
29
28
  step = 1,
30
29
  rules,
31
30
  disabled,
32
- onChange,
33
31
  }: FormNumberInputProps) => {
34
32
  const controlId = useId();
35
33
  const { t } = useTranslation("Validation");
@@ -78,12 +76,7 @@ export const FormNumberInput = ({
78
76
  disabled={disabled}
79
77
  isInvalid={HookFormService.isInvalid(fieldName, errors)}
80
78
  {...field}
81
- onChange={(event) => {
82
- if (onChange) {
83
- onChange(Number(event.target.value));
84
- }
85
- field.onChange(Number(event.target.value));
86
- }}
79
+ onChange={(event) => field.onChange(Number(event.target.value))}
87
80
  onFocus={onFocus}
88
81
  />
89
82
  )}
@@ -11,6 +11,10 @@
11
11
  }
12
12
  }
13
13
 
14
+ svg {
15
+ max-height: 1rem;
16
+ }
17
+
14
18
  .navbar-nav {
15
19
  line-height: 1;
16
20
  margin-top: 4px;
@@ -11,7 +11,7 @@
11
11
  word-wrap: break-word;
12
12
  background-color: #fff;
13
13
  font-size: 0.8rem;
14
- background-color: $snippet-product-set-background-color;
14
+ color: $snippet-elements-body-color;
15
15
 
16
16
  div {
17
17
  text-align: left;
@@ -6,9 +6,8 @@
6
6
  align-items: center;
7
7
  cursor: pointer;
8
8
  height: 5rem;
9
- padding: 0.375rem;
10
9
  border: 2px solid transparent;
11
- border-radius: 0.5rem;
10
+ border: 2px solid transparent;
12
11
  background-color: $snippet-product-set-background-color;
13
12
  color: $snippet-product-set-font-color;
14
13
  transition: $color-transition;
@@ -100,11 +100,14 @@
100
100
  color: $snippet-calendar-button-font-color;
101
101
  }
102
102
 
103
- .resources {
103
+ .info {
104
104
  display: flex;
105
105
  justify-content: center;
106
- align-items: center;
107
- gap: 0.5rem;
108
106
  font-weight: 300;
109
107
  flex-direction: row;
108
+
109
+ .logo {
110
+ width: 0.5rem;
111
+ margin-right: 0.5rem;
112
+ }
110
113
  }
@@ -0,0 +1,3 @@
1
+ @import "./ActivitiesSelectedCard.scss";
2
+ @import "./ActivitiesCard.scss";
3
+ @import "./DateTimeButton.scss";