@betterinternship/components 1.5.27 → 1.6.0

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 (399) hide show
  1. package/README.md +26 -0
  2. package/dist/components/Accordion.d.ts +7 -0
  3. package/dist/components/Avatar.d.ts +6 -0
  4. package/dist/components/Badge.d.ts +21 -0
  5. package/dist/components/Button.js.map +1 -1
  6. package/dist/components/Calendar.d.ts +7 -0
  7. package/dist/components/Input.d.ts +3 -0
  8. package/dist/components/ui/accordion.d.ts +7 -0
  9. package/dist/components/ui/accordion.js +20 -0
  10. package/dist/components/ui/accordion.js.map +1 -0
  11. package/dist/components/ui/avatar.d.ts +6 -0
  12. package/dist/components/ui/avatar.js +16 -0
  13. package/dist/components/ui/avatar.js.map +1 -0
  14. package/dist/components/ui/badge.d.ts +22 -0
  15. package/dist/components/ui/badge.js +113 -0
  16. package/dist/components/ui/badge.js.map +1 -0
  17. package/dist/components/ui/button.d.ts +13 -0
  18. package/dist/components/ui/button.js +88 -0
  19. package/dist/components/ui/button.js.map +1 -0
  20. package/dist/components/ui/calendar.d.ts +7 -0
  21. package/dist/components/ui/calendar.js +51 -0
  22. package/dist/components/ui/calendar.js.map +1 -0
  23. package/dist/components/ui/card.d.ts +9 -0
  24. package/dist/components/ui/card.js +27 -0
  25. package/dist/components/ui/card.js.map +1 -0
  26. package/dist/components/ui/checkbox.d.ts +4 -0
  27. package/dist/components/ui/checkbox.js +11 -0
  28. package/dist/components/ui/checkbox.js.map +1 -0
  29. package/dist/components/ui/dialog.d.ts +18 -0
  30. package/dist/components/ui/dialog.js +41 -0
  31. package/dist/components/ui/dialog.js.map +1 -0
  32. package/dist/components/ui/icons.d.ts +10 -0
  33. package/dist/components/ui/icons.js +39 -0
  34. package/dist/components/ui/icons.js.map +1 -0
  35. package/dist/components/ui/input.d.ts +3 -0
  36. package/dist/components/ui/input.js +17 -0
  37. package/dist/components/ui/input.js.map +1 -0
  38. package/dist/components/ui/label.d.ts +4 -0
  39. package/dist/components/ui/label.js +10 -0
  40. package/dist/components/ui/label.js.map +1 -0
  41. package/dist/components/ui/popover.d.ts +7 -0
  42. package/dist/components/ui/popover.js +17 -0
  43. package/dist/components/ui/popover.js.map +1 -0
  44. package/dist/components/ui/separator.d.ts +4 -0
  45. package/dist/components/ui/separator.js +10 -0
  46. package/dist/components/ui/separator.js.map +1 -0
  47. package/dist/components/ui/skeleton.d.ts +2 -0
  48. package/dist/components/ui/skeleton.js +9 -0
  49. package/dist/components/ui/skeleton.js.map +1 -0
  50. package/dist/components/ui/switch.d.ts +4 -0
  51. package/dist/components/ui/switch.js +10 -0
  52. package/dist/components/ui/switch.js.map +1 -0
  53. package/dist/components/ui/table.d.ts +10 -0
  54. package/dist/components/ui/table.js +30 -0
  55. package/dist/components/ui/table.js.map +1 -0
  56. package/dist/components/ui/textarea.d.ts +3 -0
  57. package/dist/components/ui/textarea.js +9 -0
  58. package/dist/components/ui/textarea.js.map +1 -0
  59. package/dist/components/ui/tooltip.d.ts +9 -0
  60. package/dist/components/ui/tooltip.js +19 -0
  61. package/dist/components/ui/tooltip.js.map +1 -0
  62. package/dist/hooks/useClientProcess.js +0 -1
  63. package/dist/hooks/useClientProcess.js.map +1 -1
  64. package/dist/index.css.js +1 -1
  65. package/dist/index.d.ts +19 -1
  66. package/dist/index.esm.js +3761 -3761
  67. package/dist/index.js +19 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/node_modules/@date-fns/tz/date/index.js +84 -0
  70. package/dist/node_modules/@date-fns/tz/date/index.js.map +1 -0
  71. package/dist/node_modules/@date-fns/tz/date/mini.js +451 -0
  72. package/dist/node_modules/@date-fns/tz/date/mini.js.map +1 -0
  73. package/dist/node_modules/@date-fns/tz/tzName/index.js +40 -0
  74. package/dist/node_modules/@date-fns/tz/tzName/index.js.map +1 -0
  75. package/dist/node_modules/@date-fns/tz/tzOffset/index.js +57 -0
  76. package/dist/node_modules/@date-fns/tz/tzOffset/index.js.map +1 -0
  77. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +8 -0
  78. package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -0
  79. package/dist/node_modules/date-fns/_lib/defaultOptions.js +8 -0
  80. package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -0
  81. package/dist/node_modules/date-fns/_lib/format/formatters.js +776 -0
  82. package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -0
  83. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +95 -0
  84. package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -0
  85. package/dist/node_modules/date-fns/_lib/format/longFormatters.js +67 -0
  86. package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -0
  87. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +32 -0
  88. package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -0
  89. package/dist/node_modules/date-fns/_lib/normalizeDates.js +12 -0
  90. package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +1 -0
  91. package/dist/node_modules/date-fns/_lib/normalizeInterval.js +9 -0
  92. package/dist/node_modules/date-fns/_lib/normalizeInterval.js.map +1 -0
  93. package/dist/node_modules/date-fns/_lib/protectedTokens.js +26 -0
  94. package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -0
  95. package/dist/node_modules/date-fns/addDays.js +61 -0
  96. package/dist/node_modules/date-fns/addDays.js.map +1 -0
  97. package/dist/node_modules/date-fns/addMonths.js +76 -0
  98. package/dist/node_modules/date-fns/addMonths.js.map +1 -0
  99. package/dist/node_modules/date-fns/addWeeks.js +34 -0
  100. package/dist/node_modules/date-fns/addWeeks.js.map +1 -0
  101. package/dist/node_modules/date-fns/addYears.js +34 -0
  102. package/dist/node_modules/date-fns/addYears.js.map +1 -0
  103. package/dist/node_modules/date-fns/constants.js +47 -0
  104. package/dist/node_modules/date-fns/constants.js.map +1 -0
  105. package/dist/node_modules/date-fns/constructFrom.js +50 -0
  106. package/dist/node_modules/date-fns/constructFrom.js.map +1 -0
  107. package/dist/node_modules/date-fns/differenceInCalendarDays.js +63 -0
  108. package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -0
  109. package/dist/node_modules/date-fns/differenceInCalendarMonths.js +43 -0
  110. package/dist/node_modules/date-fns/differenceInCalendarMonths.js.map +1 -0
  111. package/dist/node_modules/date-fns/eachMonthOfInterval.js +66 -0
  112. package/dist/node_modules/date-fns/eachMonthOfInterval.js.map +1 -0
  113. package/dist/node_modules/date-fns/eachYearOfInterval.js +66 -0
  114. package/dist/node_modules/date-fns/eachYearOfInterval.js.map +1 -0
  115. package/dist/node_modules/date-fns/endOfISOWeek.js +36 -0
  116. package/dist/node_modules/date-fns/endOfISOWeek.js.map +1 -0
  117. package/dist/node_modules/date-fns/endOfMonth.js +38 -0
  118. package/dist/node_modules/date-fns/endOfMonth.js.map +1 -0
  119. package/dist/node_modules/date-fns/endOfWeek.js +54 -0
  120. package/dist/node_modules/date-fns/endOfWeek.js.map +1 -0
  121. package/dist/node_modules/date-fns/endOfYear.js +38 -0
  122. package/dist/node_modules/date-fns/endOfYear.js.map +1 -0
  123. package/dist/node_modules/date-fns/format.js +424 -0
  124. package/dist/node_modules/date-fns/format.js.map +1 -0
  125. package/dist/node_modules/date-fns/getDayOfYear.js +35 -0
  126. package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -0
  127. package/dist/node_modules/date-fns/getDaysInMonth.js +37 -0
  128. package/dist/node_modules/date-fns/getDaysInMonth.js.map +1 -0
  129. package/dist/node_modules/date-fns/getISOWeek.js +41 -0
  130. package/dist/node_modules/date-fns/getISOWeek.js.map +1 -0
  131. package/dist/node_modules/date-fns/getISOWeekYear.js +53 -0
  132. package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -0
  133. package/dist/node_modules/date-fns/getMonth.js +30 -0
  134. package/dist/node_modules/date-fns/getMonth.js.map +1 -0
  135. package/dist/node_modules/date-fns/getWeek.js +55 -0
  136. package/dist/node_modules/date-fns/getWeek.js.map +1 -0
  137. package/dist/node_modules/date-fns/getWeekYear.js +76 -0
  138. package/dist/node_modules/date-fns/getWeekYear.js.map +1 -0
  139. package/dist/node_modules/date-fns/getYear.js +30 -0
  140. package/dist/node_modules/date-fns/getYear.js.map +1 -0
  141. package/dist/node_modules/date-fns/isAfter.js +26 -0
  142. package/dist/node_modules/date-fns/isAfter.js.map +1 -0
  143. package/dist/node_modules/date-fns/isBefore.js +26 -0
  144. package/dist/node_modules/date-fns/isBefore.js.map +1 -0
  145. package/dist/node_modules/date-fns/isDate.js +42 -0
  146. package/dist/node_modules/date-fns/isDate.js.map +1 -0
  147. package/dist/node_modules/date-fns/isSameDay.js +47 -0
  148. package/dist/node_modules/date-fns/isSameDay.js.map +1 -0
  149. package/dist/node_modules/date-fns/isSameMonth.js +44 -0
  150. package/dist/node_modules/date-fns/isSameMonth.js.map +1 -0
  151. package/dist/node_modules/date-fns/isSameYear.js +36 -0
  152. package/dist/node_modules/date-fns/isSameYear.js.map +1 -0
  153. package/dist/node_modules/date-fns/isValid.js +40 -0
  154. package/dist/node_modules/date-fns/isValid.js.map +1 -0
  155. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +11 -0
  156. package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
  157. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +65 -0
  158. package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
  159. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +60 -0
  160. package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
  161. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +23 -0
  162. package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
  163. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +104 -0
  164. package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
  165. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +42 -0
  166. package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
  167. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +14 -0
  168. package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
  169. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +190 -0
  170. package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
  171. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +135 -0
  172. package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
  173. package/dist/node_modules/date-fns/locale/en-US.js +29 -0
  174. package/dist/node_modules/date-fns/locale/en-US.js.map +1 -0
  175. package/dist/node_modules/date-fns/max.js +50 -0
  176. package/dist/node_modules/date-fns/max.js.map +1 -0
  177. package/dist/node_modules/date-fns/min.js +50 -0
  178. package/dist/node_modules/date-fns/min.js.map +1 -0
  179. package/dist/node_modules/date-fns/setMonth.js +47 -0
  180. package/dist/node_modules/date-fns/setMonth.js.map +1 -0
  181. package/dist/node_modules/date-fns/setYear.js +41 -0
  182. package/dist/node_modules/date-fns/setYear.js.map +1 -0
  183. package/dist/node_modules/date-fns/startOfDay.js +36 -0
  184. package/dist/node_modules/date-fns/startOfDay.js.map +1 -0
  185. package/dist/node_modules/date-fns/startOfISOWeek.js +36 -0
  186. package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -0
  187. package/dist/node_modules/date-fns/startOfISOWeekYear.js +43 -0
  188. package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -0
  189. package/dist/node_modules/date-fns/startOfMonth.js +38 -0
  190. package/dist/node_modules/date-fns/startOfMonth.js.map +1 -0
  191. package/dist/node_modules/date-fns/startOfWeek.js +54 -0
  192. package/dist/node_modules/date-fns/startOfWeek.js.map +1 -0
  193. package/dist/node_modules/date-fns/startOfWeekYear.js +65 -0
  194. package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -0
  195. package/dist/node_modules/date-fns/startOfYear.js +37 -0
  196. package/dist/node_modules/date-fns/startOfYear.js.map +1 -0
  197. package/dist/node_modules/date-fns/toDate.js +47 -0
  198. package/dist/node_modules/date-fns/toDate.js.map +1 -0
  199. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +2 -2
  200. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -1
  201. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js +347 -0
  202. package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js.map +1 -0
  203. package/dist/node_modules/react-day-picker/dist/esm/UI.js +123 -0
  204. package/dist/node_modules/react-day-picker/dist/esm/UI.js.map +1 -0
  205. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js +34 -0
  206. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js.map +1 -0
  207. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js +15 -0
  208. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js.map +1 -0
  209. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js +14 -0
  210. package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js.map +1 -0
  211. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js +600 -0
  212. package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js.map +1 -0
  213. package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js +14 -0
  214. package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js.map +1 -0
  215. package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js +19 -0
  216. package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js.map +1 -0
  217. package/dist/node_modules/react-day-picker/dist/esm/components/Day.js +19 -0
  218. package/dist/node_modules/react-day-picker/dist/esm/components/Day.js.map +1 -0
  219. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js +20 -0
  220. package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js.map +1 -0
  221. package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js +24 -0
  222. package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js.map +1 -0
  223. package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js +14 -0
  224. package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js.map +1 -0
  225. package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js +14 -0
  226. package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js.map +1 -0
  227. package/dist/node_modules/react-day-picker/dist/esm/components/Month.js +16 -0
  228. package/dist/node_modules/react-day-picker/dist/esm/components/Month.js.map +1 -0
  229. package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js +15 -0
  230. package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js.map +1 -0
  231. package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js +14 -0
  232. package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js.map +1 -0
  233. package/dist/node_modules/react-day-picker/dist/esm/components/Months.js +14 -0
  234. package/dist/node_modules/react-day-picker/dist/esm/components/Months.js.map +1 -0
  235. package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js +16 -0
  236. package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js.map +1 -0
  237. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js +32 -0
  238. package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js.map +1 -0
  239. package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js +14 -0
  240. package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js.map +1 -0
  241. package/dist/node_modules/react-day-picker/dist/esm/components/Option.js +14 -0
  242. package/dist/node_modules/react-day-picker/dist/esm/components/Option.js.map +1 -0
  243. package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js +14 -0
  244. package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js.map +1 -0
  245. package/dist/node_modules/react-day-picker/dist/esm/components/Root.js +15 -0
  246. package/dist/node_modules/react-day-picker/dist/esm/components/Root.js.map +1 -0
  247. package/dist/node_modules/react-day-picker/dist/esm/components/Select.js +14 -0
  248. package/dist/node_modules/react-day-picker/dist/esm/components/Select.js.map +1 -0
  249. package/dist/node_modules/react-day-picker/dist/esm/components/Week.js +15 -0
  250. package/dist/node_modules/react-day-picker/dist/esm/components/Week.js.map +1 -0
  251. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js +15 -0
  252. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js.map +1 -0
  253. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js +14 -0
  254. package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js.map +1 -0
  255. package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js +14 -0
  256. package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js.map +1 -0
  257. package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js +15 -0
  258. package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js.map +1 -0
  259. package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js +14 -0
  260. package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js.map +1 -0
  261. package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js +16 -0
  262. package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js.map +1 -0
  263. package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js +26 -0
  264. package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js.map +1 -0
  265. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js +21 -0
  266. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js.map +1 -0
  267. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js +20 -0
  268. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js.map +1 -0
  269. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js +19 -0
  270. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js.map +1 -0
  271. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js +22 -0
  272. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js.map +1 -0
  273. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js +14 -0
  274. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js.map +1 -0
  275. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js +20 -0
  276. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js.map +1 -0
  277. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js +18 -0
  278. package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js.map +1 -0
  279. package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js +8 -0
  280. package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js.map +1 -0
  281. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js +74 -0
  282. package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js.map +1 -0
  283. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +96 -0
  284. package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js.map +1 -0
  285. package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js +23 -0
  286. package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js.map +1 -0
  287. package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js +29 -0
  288. package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js.map +1 -0
  289. package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js +34 -0
  290. package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js.map +1 -0
  291. package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js +21 -0
  292. package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js.map +1 -0
  293. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js +28 -0
  294. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js.map +1 -0
  295. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js +60 -0
  296. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js.map +1 -0
  297. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js +20 -0
  298. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js.map +1 -0
  299. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js +34 -0
  300. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js.map +1 -0
  301. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js +25 -0
  302. package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js.map +1 -0
  303. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js +47 -0
  304. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js.map +1 -0
  305. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js +18 -0
  306. package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js.map +1 -0
  307. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +28 -0
  308. package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js.map +1 -0
  309. package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js +54 -0
  310. package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js.map +1 -0
  311. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js +34 -0
  312. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js.map +1 -0
  313. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js +70 -0
  314. package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js.map +1 -0
  315. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js +32 -0
  316. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js.map +1 -0
  317. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js +41 -0
  318. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js.map +1 -0
  319. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js +37 -0
  320. package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js.map +1 -0
  321. package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js +38 -0
  322. package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js.map +1 -0
  323. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js +28 -0
  324. package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js.map +1 -0
  325. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js +27 -0
  326. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js.map +1 -0
  327. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js +15 -0
  328. package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js.map +1 -0
  329. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js +37 -0
  330. package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js.map +1 -0
  331. package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js +28 -0
  332. package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js.map +1 -0
  333. package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js +32 -0
  334. package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js.map +1 -0
  335. package/dist/node_modules/react-day-picker/dist/esm/labels/index.js +12 -0
  336. package/dist/node_modules/react-day-picker/dist/esm/labels/index.js.map +1 -0
  337. package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js +28 -0
  338. package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js.map +1 -0
  339. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js +21 -0
  340. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js.map +1 -0
  341. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js +23 -0
  342. package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js.map +1 -0
  343. package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js +15 -0
  344. package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js.map +1 -0
  345. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js +14 -0
  346. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js.map +1 -0
  347. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js +17 -0
  348. package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js.map +1 -0
  349. package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js +16 -0
  350. package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js.map +1 -0
  351. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js +16 -0
  352. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js.map +1 -0
  353. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js +15 -0
  354. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js.map +1 -0
  355. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js +19 -0
  356. package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js.map +1 -0
  357. package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js +15 -0
  358. package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js.map +1 -0
  359. package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js +68 -0
  360. package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js.map +1 -0
  361. package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js +164 -0
  362. package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js.map +1 -0
  363. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js +58 -0
  364. package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js.map +1 -0
  365. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js +64 -0
  366. package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js.map +1 -0
  367. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js +45 -0
  368. package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js.map +1 -0
  369. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js +174 -0
  370. package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js.map +1 -0
  371. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js +114 -0
  372. package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js.map +1 -0
  373. package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js +26 -0
  374. package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js.map +1 -0
  375. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js +57 -0
  376. package/dist/node_modules/react-day-picker/dist/esm/useFocus.js.map +1 -0
  377. package/dist/node_modules/react-day-picker/dist/esm/useSelection.js +32 -0
  378. package/dist/node_modules/react-day-picker/dist/esm/useSelection.js.map +1 -0
  379. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js +96 -0
  380. package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js.map +1 -0
  381. package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js +62 -0
  382. package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js.map +1 -0
  383. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js +63 -0
  384. package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js.map +1 -0
  385. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js +31 -0
  386. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js.map +1 -0
  387. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js +75 -0
  388. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js.map +1 -0
  389. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js +36 -0
  390. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js.map +1 -0
  391. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js +22 -0
  392. package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js.map +1 -0
  393. package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js +17 -0
  394. package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js.map +1 -0
  395. package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js +67 -0
  396. package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js.map +1 -0
  397. package/dist/utilities/Icons.d.ts +33 -0
  398. package/dist/utils.js.map +1 -1
  399. package/package.json +87 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sources":["../../../src/components/ui/checkbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n onClick={(e) => e.stopPropagation()}\n className={cn(\n 'peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"names":["_jsx"],"mappings":";;;;;AAMA,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EAC4C,EAAA;IACpD,QACEA,qBAAA,CAAC,iBAAiB,CAAC,IAAI,iBACX,UAAU,EACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EACnC,SAAS,EAAE,EAAE,CACX,4fAA4f,EAC5f,SAAS,CACV,EAAA,GACG,KAAK,EAAA,QAAA,EAETA,qBAAA,CAAC,iBAAiB,CAAC,SAAS,EAAA,EAAA,WAAA,EAChB,oBAAoB,EAC9B,SAAS,EAAC,+DAA+D,EAAA,QAAA,EAEzEA,qBAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,UAAU,EAAA,CAAG,EAAA,CACN,EAAA,CACP;AAE7B;;;;"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
6
+ declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): import("react/jsx-runtime").JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): import("react/jsx-runtime").JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
9
+ showCloseButton?: boolean;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
13
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
14
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
15
+ declare function DialogBottomSheet({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
16
+ showCloseButton?: boolean;
17
+ }): import("react/jsx-runtime").JSX.Element;
18
+ export { Dialog, DialogBottomSheet, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
@@ -0,0 +1,41 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import { XIcon } from 'lucide-react';
4
+ import { cn } from '../../utils.js';
5
+
6
+ function Dialog({ ...props }) {
7
+ return jsxRuntimeExports.jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
8
+ }
9
+ function DialogTrigger({ ...props }) {
10
+ return jsxRuntimeExports.jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
11
+ }
12
+ function DialogPortal({ ...props }) {
13
+ return jsxRuntimeExports.jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
14
+ }
15
+ function DialogClose({ ...props }) {
16
+ return jsxRuntimeExports.jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
17
+ }
18
+ function DialogOverlay({ className, ...props }) {
19
+ return (jsxRuntimeExports.jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50', className), ...props }));
20
+ }
21
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
22
+ return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn('bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg', className), ...props, children: [children, showCloseButton && (jsxRuntimeExports.jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntimeExports.jsx(XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
23
+ }
24
+ function DialogHeader({ className, ...props }) {
25
+ return (jsxRuntimeExports.jsx("div", { "data-slot": "dialog-header", className: cn('flex flex-col gap-2 text-center sm:text-left', className), ...props }));
26
+ }
27
+ function DialogFooter({ className, ...props }) {
28
+ return (jsxRuntimeExports.jsx("div", { "data-slot": "dialog-footer", className: cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className), ...props }));
29
+ }
30
+ function DialogTitle({ className, ...props }) {
31
+ return (jsxRuntimeExports.jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn('text-lg leading-none font-semibold', className), ...props }));
32
+ }
33
+ function DialogDescription({ className, ...props }) {
34
+ return (jsxRuntimeExports.jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn('text-muted-foreground text-sm', className), ...props }));
35
+ }
36
+ function DialogBottomSheet({ className, children, showCloseButton = true, ...props }) {
37
+ return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn('bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom fixed bottom-0 left-0 right-0 z-50 w-full rounded-t-xl border-t shadow-lg duration-300', className), ...props, children: [children, showCloseButton && (jsxRuntimeExports.jsxs(DialogPrimitive.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntimeExports.jsx(XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
38
+ }
39
+
40
+ export { Dialog, DialogBottomSheet, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
41
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex flex-col gap-2 text-center sm:text-left', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('text-lg leading-none font-semibold', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction DialogBottomSheet({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom fixed bottom-0 left-0 right-0 z-50 w-full rounded-t-xl border-t shadow-lg duration-300',\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nexport {\n Dialog,\n DialogBottomSheet,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const BooleanCheckIcon: ({ checked }: {
2
+ checked?: boolean | null;
3
+ }) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const JobModeIcon: ({ mode }: {
5
+ mode: number | null | undefined;
6
+ }) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const JobTypeIcon: ({ type }: {
8
+ type: number | null | undefined;
9
+ }) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const SalaryIcon: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,39 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import { CircleCheck, XCircle, Wifi, Globe, Users2, Briefcase, Clock, GraduationCap, Clipboard, PhilippinePeso } from 'lucide-react';
3
+
4
+ const BooleanCheckIcon = ({ checked }) => {
5
+ if (checked)
6
+ return jsxRuntimeExports.jsx(CircleCheck, { className: "w-[1.1em] h-[1.1em] mr-1" });
7
+ else
8
+ return jsxRuntimeExports.jsx(XCircle, { className: "w-[1.1em] h-[1.1em] mr-1" });
9
+ };
10
+ const JobModeIcon = ({ mode }) => {
11
+ switch (mode) {
12
+ case 0: // On site
13
+ return jsxRuntimeExports.jsx(Users2, { className: "w-3 h-3 mr-1" });
14
+ case 1: // Hybrid
15
+ return jsxRuntimeExports.jsx(Globe, { className: "w-3 h-3 mr-1" });
16
+ case 2: // Remote
17
+ return jsxRuntimeExports.jsx(Wifi, { className: "w-3 h-3 mr-1" });
18
+ }
19
+ // Not specified
20
+ return jsxRuntimeExports.jsx(Briefcase, { className: "w-3 h-3 mr-1" });
21
+ };
22
+ const JobTypeIcon = ({ type }) => {
23
+ switch (type) {
24
+ case 0:
25
+ return jsxRuntimeExports.jsx(GraduationCap, { className: "w-3 h-3 mr-1" });
26
+ case 1:
27
+ return jsxRuntimeExports.jsx(Clock, { className: "w-3 h-3 mr-1" });
28
+ case 2:
29
+ return jsxRuntimeExports.jsx(Briefcase, { className: "w-3 h-3 mr-1" });
30
+ }
31
+ // Not specified
32
+ return jsxRuntimeExports.jsx(Clipboard, { className: "w-3 h-3 mr-1" });
33
+ };
34
+ const SalaryIcon = () => {
35
+ return jsxRuntimeExports.jsx(PhilippinePeso, { className: "w-3 h-3 mr-1" });
36
+ };
37
+
38
+ export { BooleanCheckIcon, JobModeIcon, JobTypeIcon, SalaryIcon };
39
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sources":["../../../src/components/ui/icons.tsx"],"sourcesContent":["import {\n CircleCheck,\n XCircle,\n Clipboard,\n Briefcase,\n Users2,\n Globe,\n Wifi,\n GraduationCap,\n Clock,\n PhilippinePeso,\n} from 'lucide-react';\n\nexport const BooleanCheckIcon = ({ checked }: { checked?: boolean | null }) => {\n if (checked)\n return <CircleCheck className=\"w-[1.1em] h-[1.1em] mr-1\"></CircleCheck>;\n else return <XCircle className=\"w-[1.1em] h-[1.1em] mr-1\"></XCircle>;\n};\n\nexport const JobModeIcon = ({ mode }: { mode: number | null | undefined }) => {\n switch (mode) {\n case 0: // On site\n return <Users2 className=\"w-3 h-3 mr-1\" />;\n case 1: // Hybrid\n return <Globe className=\"w-3 h-3 mr-1\" />;\n case 2: // Remote\n return <Wifi className=\"w-3 h-3 mr-1\" />;\n }\n\n // Not specified\n return <Briefcase className=\"w-3 h-3 mr-1\" />;\n};\n\nexport const JobTypeIcon = ({ type }: { type: number | null | undefined }) => {\n switch (type) {\n case 0:\n return <GraduationCap className=\"w-3 h-3 mr-1\" />;\n case 1:\n return <Clock className=\"w-3 h-3 mr-1\" />;\n case 2:\n return <Briefcase className=\"w-3 h-3 mr-1\" />;\n }\n\n // Not specified\n return <Clipboard className=\"w-3 h-3 mr-1\" />;\n};\n\nexport const SalaryIcon = () => {\n return <PhilippinePeso className=\"w-3 h-3 mr-1\" />;\n};\n"],"names":["_jsx"],"mappings":";;;MAaa,gBAAgB,GAAG,CAAC,EAAE,OAAO,EAAgC,KAAI;AAC5E,IAAA,IAAI,OAAO;AACT,QAAA,OAAOA,sBAAC,WAAW,EAAA,EAAC,SAAS,EAAC,0BAA0B,GAAe;;AACpE,QAAA,OAAOA,sBAAC,OAAO,EAAA,EAAC,SAAS,EAAC,0BAA0B,GAAW;AACtE;MAEa,WAAW,GAAG,CAAC,EAAE,IAAI,EAAuC,KAAI;IAC3E,QAAQ,IAAI;QACV,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;QAC5C,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,KAAK,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;QAC3C,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;;;AAI5C,IAAA,OAAOA,sBAAC,SAAS,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;AAC/C;MAEa,WAAW,GAAG,CAAC,EAAE,IAAI,EAAuC,KAAI;IAC3E,QAAQ,IAAI;AACV,QAAA,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,aAAa,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;AACnD,QAAA,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,KAAK,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;AAC3C,QAAA,KAAK,CAAC;AACJ,YAAA,OAAOA,sBAAC,SAAS,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;;;AAIjD,IAAA,OAAOA,sBAAC,SAAS,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;AAC/C;AAEO,MAAM,UAAU,GAAG,MAAK;AAC7B,IAAA,OAAOA,sBAAC,cAAc,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG;AACpD;;;;"}
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ declare const Input: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
3
+ export { Input };
@@ -0,0 +1,17 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as React from 'react';
3
+ import { EyeOff, Eye } from 'lucide-react';
4
+ import { cn } from '../../utils.js';
5
+
6
+ const Input = React.forwardRef(({ className, type, disabled, ...props }, ref) => {
7
+ const [passwordVisible, setPasswordVisible] = React.useState(false);
8
+ if (type === 'password') {
9
+ const Icon = passwordVisible ? EyeOff : Eye;
10
+ return (jsxRuntimeExports.jsxs("div", { className: "relative", children: [jsxRuntimeExports.jsx("input", { type: passwordVisible ? 'text' : 'password', className: cn('bg-background pointer-events-auto relative z-10 box-border flex h-8 min-h-8 max-h-8 w-full rounded-[0.33em] border border-gray-200 px-[0.75em] py-0 pr-10 text-base ring-0 focus:ring-transparent sm:text-sm', 'file:text-foreground placeholder:text-muted-foreground/40 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ref: ref, disabled: disabled, ...props }), jsxRuntimeExports.jsx("button", { type: "button", className: "text-muted-foreground hover:text-foreground absolute inset-y-0 right-0 z-20 flex w-10 items-center justify-center disabled:cursor-not-allowed disabled:opacity-50", onClick: () => setPasswordVisible((current) => !current), disabled: disabled, "aria-label": passwordVisible ? 'Hide password' : 'Show password', "aria-pressed": passwordVisible, children: jsxRuntimeExports.jsx(Icon, { className: "h-4 w-4", "aria-hidden": "true" }) })] }));
11
+ }
12
+ return (jsxRuntimeExports.jsx("input", { type: type, className: cn('bg-background pointer-events-auto relative z-10 box-border flex h-8 min-h-8 max-h-8 w-full rounded-[0.33em] border border-gray-200 px-[0.75em] py-0 text-base ring-0 focus:ring-transparent sm:text-sm', 'file:text-foreground placeholder:text-muted-foreground/40 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50', className), ref: ref, disabled: disabled, ...props }));
13
+ });
14
+ Input.displayName = 'Input';
15
+
16
+ export { Input };
17
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sources":["../../../src/components/ui/input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\n\nimport { cn } from '@/utils';\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<'input'>>(\n ({ className, type, disabled, ...props }, ref) => {\n const [passwordVisible, setPasswordVisible] = React.useState(false);\n\n if (type === 'password') {\n const Icon = passwordVisible ? EyeOff : Eye;\n\n return (\n <div className=\"relative\">\n <input\n type={passwordVisible ? 'text' : 'password'}\n className={cn(\n 'bg-background pointer-events-auto relative z-10 box-border flex h-8 min-h-8 max-h-8 w-full rounded-[0.33em] border border-gray-200 px-[0.75em] py-0 pr-10 text-base ring-0 focus:ring-transparent sm:text-sm',\n 'file:text-foreground placeholder:text-muted-foreground/40 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n disabled={disabled}\n {...props}\n />\n <button\n type=\"button\"\n className=\"text-muted-foreground hover:text-foreground absolute inset-y-0 right-0 z-20 flex w-10 items-center justify-center disabled:cursor-not-allowed disabled:opacity-50\"\n onClick={() => setPasswordVisible((current) => !current)}\n disabled={disabled}\n aria-label={passwordVisible ? 'Hide password' : 'Show password'}\n aria-pressed={passwordVisible}\n >\n <Icon className=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n );\n }\n\n return (\n <input\n type={type}\n className={cn(\n 'bg-background pointer-events-auto relative z-10 box-border flex h-8 min-h-8 max-h-8 w-full rounded-[0.33em] border border-gray-200 px-[0.75em] py-0 text-base ring-0 focus:ring-transparent sm:text-sm',\n 'file:text-foreground placeholder:text-muted-foreground/40 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n disabled={disabled}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input };\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAKA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AAC/C,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEnE,IAAA,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,MAAM,IAAI,GAAG,eAAe,GAAG,MAAM,GAAG,GAAG;QAE3C,QACEA,gCAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CACvBC,qBAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,UAAU,EAC3C,SAAS,EAAE,EAAE,CACX,8MAA8M,EAC9M,sMAAsM,EACtM,SAAS,CACV,EACD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,KACd,KAAK,EAAA,CACT,EACFA,qBAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mKAAmK,EAC7K,OAAO,EAAE,MAAM,kBAAkB,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,EACxD,QAAQ,EAAE,QAAQ,EAAA,YAAA,EACN,eAAe,GAAG,eAAe,GAAG,eAAe,EAAA,cAAA,EACjD,eAAe,EAAA,QAAA,EAE7BA,qBAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,aAAA,EAAa,MAAM,EAAA,CAAG,EAAA,CACxC,CAAA,EAAA,CACL;IAEV;AAEA,IAAA,QACEA,qBAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,wMAAwM,EACxM,sMAAsM,EACtM,SAAS,CACV,EACD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAAA,GACd,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,KAAK,CAAC,WAAW,GAAG,OAAO;;;;"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import * as LabelPrimitive from '@radix-ui/react-label';
3
+ declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Label };
@@ -0,0 +1,10 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as LabelPrimitive from '@radix-ui/react-label';
3
+ import { cn } from '../../utils.js';
4
+
5
+ function Label({ className, ...props }) {
6
+ return (jsxRuntimeExports.jsx(LabelPrimitive.Root, { "data-slot": "label", className: cn('flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50', className), ...props }));
7
+ }
8
+
9
+ export { Label };
10
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sources":["../../../src/components/ui/label.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as LabelPrimitive from '@radix-ui/react-label';\n\nimport { cn } from '@/utils';\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n 'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"names":["_jsx"],"mappings":";;;;AAKA,SAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACyC,EAAA;IACjD,QACEA,sBAAC,cAAc,CAAC,IAAI,EAAA,EAAA,WAAA,EACR,OAAO,EACjB,SAAS,EAAE,EAAE,CACX,qNAAqN,EACrN,SAAS,CACV,KACG,KAAK,EAAA,CACT;AAEN;;;;"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ declare const PopoverAnchor: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
@@ -0,0 +1,17 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as React from 'react';
3
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
4
+ import { cn } from '../../utils.js';
5
+
6
+ function Popover({ ...props }) {
7
+ return jsxRuntimeExports.jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
8
+ }
9
+ const PopoverTrigger = React.forwardRef(({ className, ...props }, ref) => (jsxRuntimeExports.jsx(PopoverPrimitive.Trigger, { ref: ref, className: className, "data-slot": "popover-trigger", ...props })));
10
+ PopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;
11
+ const PopoverContent = React.forwardRef(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (jsxRuntimeExports.jsx(PopoverPrimitive.Portal, { children: jsxRuntimeExports.jsx(PopoverPrimitive.Content, { ref: ref, "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn('bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-[0.33em] border p-4 shadow-md outline-hidden', className), ...props }) })));
12
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
13
+ const PopoverAnchor = React.forwardRef(({ className, ...props }, ref) => (jsxRuntimeExports.jsx(PopoverPrimitive.Anchor, { ref: ref, "data-slot": "popover-anchor", className: className, ...props })));
14
+ PopoverAnchor.displayName = PopoverPrimitive.Anchor.displayName;
15
+
16
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
17
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","sources":["../../../src/components/ui/popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nconst PopoverTrigger = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitive.Trigger\n ref={ref}\n className={className}\n data-slot=\"popover-trigger\"\n {...props}\n />\n));\nPopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-[0.33em] border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nconst PopoverAnchor = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Anchor>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Anchor>\n>(({ className, ...props }, ref) => (\n <PopoverPrimitive.Anchor\n ref={ref}\n data-slot=\"popover-anchor\"\n className={className}\n {...props}\n />\n));\nPopoverAnchor.displayName = PopoverPrimitive.Anchor.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n"],"names":["_jsx"],"mappings":";;;;;AAKA,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C,EAAA;IACnD,OAAOA,qBAAA,CAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,EAAA,GAAK,KAAK,EAAA,CAAI;AACjE;AAEA,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,qBAAA,CAAC,gBAAgB,CAAC,OAAO,EAAA,EACvB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,eACV,iBAAiB,EAAA,GACvB,KAAK,EAAA,CACT,CACH;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW;AAEjE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC/DA,qBAAA,CAAC,gBAAgB,CAAC,MAAM,EAAA,EAAA,QAAA,EACtBA,qBAAA,CAAC,gBAAgB,CAAC,OAAO,EAAA,EACvB,GAAG,EAAE,GAAG,EAAA,WAAA,EACE,iBAAiB,EAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,seAAse,EACte,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,EAAA,CACsB,CAC3B;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW;AAEjE,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,qBAAA,CAAC,gBAAgB,CAAC,MAAM,EAAA,EACtB,GAAG,EAAE,GAAG,EAAA,WAAA,EACE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,EAAA,GAChB,KAAK,EAAA,CACT,CACH;AACD,aAAa,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW;;;;"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Separator };
@@ -0,0 +1,10 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
+ import { cn } from '../../utils.js';
4
+
5
+ function Separator({ className, orientation = 'horizontal', decorative = true, ...props }) {
6
+ return (jsxRuntimeExports.jsx(SeparatorPrimitive.Root, { "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn('bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px', className), ...props }));
7
+ }
8
+
9
+ export { Separator };
10
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","sources":["../../../src/components/ui/separator.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\n\nimport { cn } from '@/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"names":["_jsx"],"mappings":";;;;AAKA,SAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAAW,GAAG,YAAY,EAC1B,UAAU,GAAG,IAAI,EACjB,GAAG,KAAK,EAC6C,EAAA;AACrD,IAAA,QACEA,qBAAA,CAAC,kBAAkB,CAAC,IAAI,EAAA,EAAA,WAAA,EACZ,WAAW,EACrB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CACX,gKAAgK,EAChK,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;;;;"}
@@ -0,0 +1,2 @@
1
+ declare function Skeleton({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
2
+ export { Skeleton };
@@ -0,0 +1,9 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import { cn } from '../../utils.js';
3
+
4
+ function Skeleton({ className, ...props }) {
5
+ return (jsxRuntimeExports.jsx("div", { "data-slot": "skeleton", className: cn('bg-accent animate-pulse rounded-md', className), ...props }));
6
+ }
7
+
8
+ export { Skeleton };
9
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sources":["../../../src/components/ui/skeleton.tsx"],"sourcesContent":["import { cn } from '@/utils';\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn('bg-accent animate-pulse rounded-md', className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"],"names":["_jsx"],"mappings":";;;AAEA,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B,EAAA;AACpE,IAAA,QACEA,qBAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EACY,UAAU,EACpB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,EAAA,GAC1D,KAAK,EAAA,CACT;AAEN;;;;"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ declare function Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Switch };
@@ -0,0 +1,10 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ import { cn } from '../../utils.js';
4
+
5
+ function Switch({ className, ...props }) {
6
+ return (jsxRuntimeExports.jsx(SwitchPrimitive.Root, { "data-slot": "switch", className: cn('peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50', className), ...props, children: jsxRuntimeExports.jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: cn('bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0') }) }));
7
+ }
8
+
9
+ export { Switch };
10
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sources":["../../../src/components/ui/switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\n\nimport { cn } from '@/utils';\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n"],"names":["_jsx"],"mappings":";;;;AAKA,SAAS,MAAM,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EAC0C,EAAA;AAClD,IAAA,QACEA,qBAAA,CAAC,eAAe,CAAC,IAAI,EAAA,EAAA,WAAA,EACT,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,2WAA2W,EAC3W,SAAS,CACV,EAAA,GACG,KAAK,EAAA,QAAA,EAETA,sBAAC,eAAe,CAAC,KAAK,EAAA,EAAA,WAAA,EACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,0QAA0Q,CAC3Q,EAAA,CACD,EAAA,CACmB;AAE3B;;;;"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ declare function Table({ className, ...props }: React.ComponentProps<'table'>): import("react/jsx-runtime").JSX.Element;
3
+ declare function TableHeader({ className, ...props }: React.ComponentProps<'thead'>): import("react/jsx-runtime").JSX.Element;
4
+ declare function TableBody({ className, ...props }: React.ComponentProps<'tbody'>): import("react/jsx-runtime").JSX.Element;
5
+ declare function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>): import("react/jsx-runtime").JSX.Element;
6
+ declare function TableRow({ className, ...props }: React.ComponentProps<'tr'>): import("react/jsx-runtime").JSX.Element;
7
+ declare function TableHead({ className, ...props }: React.ComponentProps<'th'>): import("react/jsx-runtime").JSX.Element;
8
+ declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): import("react/jsx-runtime").JSX.Element;
9
+ declare function TableCaption({ className, ...props }: React.ComponentProps<'caption'>): import("react/jsx-runtime").JSX.Element;
10
+ export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
@@ -0,0 +1,30 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import { cn } from '../../utils.js';
3
+
4
+ function Table({ className, ...props }) {
5
+ return (jsxRuntimeExports.jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto [scrollbar-gutter:stable]", children: jsxRuntimeExports.jsx("table", { "data-slot": "table", className: cn('w-full caption-bottom text-sm', className), ...props }) }));
6
+ }
7
+ function TableHeader({ className, ...props }) {
8
+ return (jsxRuntimeExports.jsx("thead", { "data-slot": "table-header", className: cn('[&_tr]:border-b', className), ...props }));
9
+ }
10
+ function TableBody({ className, ...props }) {
11
+ return (jsxRuntimeExports.jsx("tbody", { "data-slot": "table-body", className: cn('[&_tr:last-child]:border-0', className), ...props }));
12
+ }
13
+ function TableFooter({ className, ...props }) {
14
+ return (jsxRuntimeExports.jsx("tfoot", { "data-slot": "table-footer", className: cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className), ...props }));
15
+ }
16
+ function TableRow({ className, ...props }) {
17
+ return (jsxRuntimeExports.jsx("tr", { "data-slot": "table-row", className: cn('hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors', className), ...props }));
18
+ }
19
+ function TableHead({ className, ...props }) {
20
+ return (jsxRuntimeExports.jsx("th", { "data-slot": "table-head", className: cn('text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className), ...props }));
21
+ }
22
+ function TableCell({ className, ...props }) {
23
+ return (jsxRuntimeExports.jsx("td", { "data-slot": "table-cell", className: cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className), ...props }));
24
+ }
25
+ function TableCaption({ className, ...props }) {
26
+ return (jsxRuntimeExports.jsx("caption", { "data-slot": "table-caption", className: cn('text-muted-foreground mt-4 text-sm', className), ...props }));
27
+ }
28
+
29
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
30
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto [scrollbar-gutter:stable]\"\n >\n <table\n data-slot=\"table\"\n className={cn('w-full caption-bottom text-sm', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('[&_tr:last-child]:border-0', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n 'bg-muted/50 border-t font-medium [&>tr]:last:border-b-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n 'p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"names":["_jsx"],"mappings":";;;AAIA,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC,EAAA;IACnE,QACEA,qBAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EACY,iBAAiB,EAC3B,SAAS,EAAC,2DAA2D,EAAA,QAAA,EAErEA,qBAAA,CAAA,OAAA,EAAA,EAAA,WAAA,EACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,EAAA,CACT,EAAA,CACE;AAEV;AAEA,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC,EAAA;AACzE,IAAA,QACEA,qBAAA,CAAA,OAAA,EAAA,EAAA,WAAA,EACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,GACvC,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC,EAAA;AACvE,IAAA,QACEA,qBAAA,CAAA,OAAA,EAAA,EAAA,WAAA,EACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,EAAA,GAClD,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC,EAAA;AACzE,IAAA,QACEA,qBAAA,CAAA,OAAA,EAAA,EAAA,WAAA,EACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B,EAAA;AACnE,IAAA,QACEA,qBAAA,CAAA,IAAA,EAAA,EAAA,WAAA,EACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B,EAAA;AACpE,IAAA,QACEA,qBAAA,CAAA,IAAA,EAAA,EAAA,WAAA,EACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,oJAAoJ,EACpJ,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B,EAAA;AACpE,IAAA,QACEA,qBAAA,CAAA,IAAA,EAAA,EAAA,WAAA,EACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACwB,EAAA;AAChC,IAAA,QACEA,qBAAA,CAAA,SAAA,EAAA,EAAA,WAAA,EACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,EAAA,GAC1D,KAAK,EAAA,CACT;AAEN;;;;"}
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<'textarea'>): import("react/jsx-runtime").JSX.Element;
3
+ export { Textarea };
@@ -0,0 +1,9 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import { cn } from '../../utils.js';
3
+
4
+ function Textarea({ className, ...props }) {
5
+ return (jsxRuntimeExports.jsx("textarea", { "data-slot": "textarea", className: cn('placeholder:text-muted-foreground/40 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-[0.33em] border border-gray-300 bg-transparent px-3 py-2 text-base shadow-xs ring-0 transition-[color,box-shadow] outline-none focus:border-gray-500 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', className), ...props }));
6
+ }
7
+
8
+ export { Textarea };
9
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sources":["../../../src/components/ui/textarea.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'placeholder:text-muted-foreground/40 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-[0.33em] border border-gray-300 bg-transparent px-3 py-2 text-base shadow-xs ring-0 transition-[color,box-shadow] outline-none focus:border-gray-500 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"names":["_jsx"],"mappings":";;;AAIA,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC,EAAA;AACzE,IAAA,QACEA,qBAAA,CAAA,UAAA,EAAA,EAAA,WAAA,EACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,gaAAga,EACha,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN;;;;"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
4
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
5
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
6
+ declare function TooltipContent({ className, arrowClassName, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content> & {
7
+ arrowClassName?: string;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -0,0 +1,19 @@
1
+ import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ import { cn } from '../../utils.js';
4
+
5
+ function TooltipProvider({ delayDuration = 0, ...props }) {
6
+ return (jsxRuntimeExports.jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
7
+ }
8
+ function Tooltip({ ...props }) {
9
+ return (jsxRuntimeExports.jsx(TooltipProvider, { children: jsxRuntimeExports.jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) }));
10
+ }
11
+ function TooltipTrigger({ ...props }) {
12
+ return jsxRuntimeExports.jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
13
+ }
14
+ function TooltipContent({ className, arrowClassName, sideOffset = 0, children, ...props }) {
15
+ return (jsxRuntimeExports.jsx(TooltipPrimitive.Portal, { children: jsxRuntimeExports.jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-[0.15em] bg-gray-900 px-3 py-1.5 text-xs text-balance text-white', className), ...props, children: [children, jsxRuntimeExports.jsx(TooltipPrimitive.Arrow, { width: 10, height: 5, className: cn('z-50 fill-gray-900', arrowClassName) })] }) }));
16
+ }
17
+
18
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
19
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\n\nimport { cn } from '@/utils';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n arrowClassName,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n arrowClassName?: string;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-[0.15em] bg-gray-900 px-3 py-1.5 text-xs text-balance text-white',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow\n width={10}\n height={5}\n className={cn('z-50 fill-gray-900', arrowClassName)}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"names":["_jsx","_jsxs"],"mappings":";;;;AAKA,SAAS,eAAe,CAAC,EACvB,aAAa,GAAG,CAAC,EACjB,GAAG,KAAK,EAC+C,EAAA;AACvD,IAAA,QACEA,qBAAA,CAAC,gBAAgB,CAAC,QAAQ,EAAA,EAAA,WAAA,EACd,kBAAkB,EAC5B,aAAa,EAAE,aAAa,EAAA,GACxB,KAAK,EAAA,CACT;AAEN;AAEA,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C,EAAA;AACnD,IAAA,QACEA,qBAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EACdA,sBAAC,gBAAgB,CAAC,IAAI,EAAA,EAAA,WAAA,EAAW,SAAS,EAAA,GAAK,KAAK,EAAA,CAAI,EAAA,CACxC;AAEtB;AAEA,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C,EAAA;IACtD,OAAOA,qBAAA,CAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,EAAA,GAAK,KAAK,EAAA,CAAI;AAC5E;AAEA,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,cAAc,EACd,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,GAAG,KAAK,EAGT,EAAA;IACC,QACEA,qBAAA,CAAC,gBAAgB,CAAC,MAAM,cACtBC,sBAAA,CAAC,gBAAgB,CAAC,OAAO,EAAA,EAAA,WAAA,EACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,kaAAka,EACla,SAAS,CACV,EAAA,GACG,KAAK,aAER,QAAQ,EACTD,qBAAA,CAAC,gBAAgB,CAAC,KAAK,EAAA,EACrB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC,EAAA,CACnD,CAAA,EAAA,CACuB,EAAA,CACH;AAE9B;;;;"}
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { j as jsxRuntimeExports } from '../_virtual/jsx-runtime.js';
3
2
  import { createContext, useRef, useState, useEffect, useContext } from 'react';
4
3
  import { useQueryClient, useQueries } from '@tanstack/react-query';
@@ -1 +1 @@
1
- {"version":3,"file":"useClientProcess.js","sources":["../../src/hooks/useClientProcess.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { useState, useRef, createContext, useContext, useEffect } from 'react';\r\nimport { Query, useQueries, useQueryClient } from '@tanstack/react-query';\r\nimport { config } from '../config';\r\n\r\ntype ProcessStatus = 'pending' | 'handled' | 'failed';\r\n\r\ninterface Process<T> {\r\n id: string;\r\n name: string;\r\n status: ProcessStatus;\r\n result?: T;\r\n error?: string;\r\n timestamp: string;\r\n}\r\n\r\ninterface ClientProcess<T> {\r\n dto?: ProcessCallbackDto;\r\n metadata?: ClientProcessMetadata;\r\n options?: ClientProcessOptions;\r\n result?: T;\r\n success?: boolean;\r\n pending?: boolean;\r\n error?: string;\r\n}\r\n\r\nexport interface ProcessCallbackDto {\r\n processId: string;\r\n processName: string;\r\n processCallbackUrl: string;\r\n}\r\n\r\nexport interface ClientProcessOptions {\r\n onLoading?: (processId: string, processName: string) => void;\r\n onSuccess?: <R>(processId: string, processName: string, result: R) => void;\r\n onFailure?: (processId: string, processName: string, error?: string) => void;\r\n}\r\n\r\nexport interface ClientProcessMetadata {\r\n filterKey: string;\r\n metadata?: Record<string, string>;\r\n}\r\n\r\nexport interface ProcessResponse {\r\n processId: string;\r\n processName: string;\r\n processCallbackUrl: string;\r\n success: boolean;\r\n message?: string;\r\n}\r\n\r\n/**\r\n * The orchestrator service to get the process from.\r\n *\r\n * @param processId\r\n * @returns\r\n */\r\nconst processStatusChecker = <T,>(processId: string) => {\r\n if (!processId) return { process: null };\r\n return fetch(`${config.orchestratorApi}/${encodeURIComponent(processId)}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n }).then((response) => response.json()) as unknown as Promise<{\r\n process: Omit<Process<T>, 'result'>;\r\n }>;\r\n};\r\n\r\n/**\r\n * This fetches from the callback endpoint.\r\n *\r\n * @param processId\r\n * @returns\r\n */\r\nconst processCallbackResultFetcher = <T,>(\r\n processId: string,\r\n processName: string,\r\n processCallbackUrl?: string,\r\n) =>\r\n fetch(`${processCallbackUrl}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n processId,\r\n processName,\r\n }),\r\n }).then((response) => response.json()) as unknown as Promise<T>;\r\n\r\ninterface ClientProcesses {\r\n registerProcess: (\r\n processId: string,\r\n dto: ProcessCallbackDto,\r\n metadata: ClientProcessMetadata,\r\n options?: ClientProcessOptions,\r\n ) => void;\r\n getProcess: <T>(processId: string) => ClientProcess<T> | null;\r\n filterProcesses: <T>(filter: string) => ClientProcess<T>[];\r\n invalidateBasedOnResult: <R>(\r\n filter: string,\r\n invalidator?: (result: R) => boolean,\r\n ) => Promise<void>;\r\n}\r\n\r\n/**\r\n * We need a context to keep track of all client processes.\r\n * This helps us manage the state of the toasts as well.\r\n */\r\nconst clientProcessesContext = createContext<ClientProcesses>(\r\n {} as ClientProcesses,\r\n);\r\n\r\n/**\r\n * This should be at the root layout.\r\n *\r\n * @context\r\n */\r\nexport const ClientProcessesProvider = ({\r\n children,\r\n}: {\r\n children: React.ReactNode;\r\n}) => {\r\n const queryClient = useQueryClient();\r\n const clientProcessAttempts = useRef<Record<string, number>>({});\r\n const [clientProcessDtos, setClientProcessDtos] = useState<\r\n Record<\r\n string,\r\n {\r\n dto: ProcessCallbackDto;\r\n metadata: ClientProcessMetadata;\r\n options?: ClientProcessOptions;\r\n }\r\n >\r\n >({});\r\n\r\n // Populates the state object with cached data on mount\r\n useEffect(() => {\r\n setClientProcessDtos((oldData) => {\r\n if (Object.keys(oldData).length > 0) return oldData;\r\n\r\n const cachedClientProcesses = queryClient\r\n .getQueryCache()\r\n .findAll({ queryKey: ['.__process'], exact: false });\r\n const seededClientProcesses: typeof oldData = {};\r\n\r\n for (const query of cachedClientProcesses) {\r\n const processId = query.queryKey[2];\r\n if (typeof processId !== 'string') continue;\r\n\r\n const data = query.state.data as ClientProcess<any>;\r\n if (!data?.dto || !data?.metadata) continue;\r\n\r\n seededClientProcesses[processId] = {\r\n dto: data.dto,\r\n metadata: data.metadata,\r\n options: data.options,\r\n };\r\n }\r\n\r\n return { ...oldData, ...seededClientProcesses };\r\n });\r\n }, [queryClient]);\r\n\r\n // The query for all the processes, pending and sht\r\n const clientProcesses = useQueries({\r\n queries: Object.entries(clientProcessDtos).map(\r\n ([processId, { dto, metadata, options }]) => ({\r\n staleTime: Infinity,\r\n gcTime: 3 * 60 * 1000,\r\n refetchOnWindowFocus: true,\r\n refetchIntervalInBackground: true,\r\n refetchOnMount: true,\r\n refetchOnReconnect: true,\r\n queryKey: ['.__process', metadata.filterKey, processId],\r\n queryFn: async () => {\r\n if (!processId) throw new Error('No processId');\r\n const { process } = await processStatusChecker(processId);\r\n\r\n // Handled! Return the proper response too\r\n if (process?.status === 'handled') {\r\n const result = await processCallbackResultFetcher(\r\n process.id,\r\n process.name,\r\n dto.processCallbackUrl,\r\n );\r\n\r\n // Log and call runner\r\n console.warn(`Handled ${process.name} (${process.id})!`);\r\n options?.onSuccess?.(process.id, process.name, result);\r\n\r\n return {\r\n dto,\r\n metadata,\r\n options,\r\n success: true,\r\n pending: false,\r\n result,\r\n };\r\n }\r\n\r\n // Pending or failed\r\n if (process?.status === 'pending') {\r\n console.log(`Running process ${process.name} (${process.id})...`);\r\n options?.onLoading?.(process.id, process.name);\r\n return { dto, metadata, options, pending: true };\r\n } else if (process?.status === 'failed') {\r\n console.error(\r\n `Failed ${process.name} (${process.id}) - ${process.error}.`,\r\n );\r\n\r\n return {\r\n dto,\r\n metadata,\r\n options,\r\n success: false,\r\n pending: false,\r\n error: process.error,\r\n };\r\n }\r\n\r\n // Return null since no response\r\n return { dto, metadata, options, pending: true };\r\n },\r\n\r\n // Returns the next interval length to use to wait for fetch\r\n refetchInterval: <T,>(query: Query) => {\r\n const data = query.state.data as ClientProcess<T>;\r\n if (data?.success !== undefined) return false;\r\n\r\n // If not defined, init to 0\r\n if (!clientProcessAttempts.current[processId])\r\n clientProcessAttempts.current[processId] = 0;\r\n\r\n const interval = Math.min(\r\n 500 * 2 ** clientProcessAttempts.current[processId],\r\n 10000,\r\n );\r\n\r\n clientProcessAttempts.current[processId] += 1;\r\n return interval;\r\n },\r\n }),\r\n ),\r\n });\r\n\r\n /**\r\n * Registers a new process to handle\r\n *\r\n * @param processId\r\n * @param processCallbackDto\r\n * @param options\r\n */\r\n const registerProcess = (\r\n processId: string,\r\n processCallbackDto: ProcessCallbackDto,\r\n metadata: ClientProcessMetadata,\r\n options?: ClientProcessOptions,\r\n ) => {\r\n setClientProcessDtos({\r\n ...clientProcessDtos,\r\n [processId]: { dto: processCallbackDto, metadata, options },\r\n });\r\n };\r\n\r\n /**\r\n * Retrieves a process\r\n *\r\n * @param processId\r\n * @returns\r\n */\r\n const getProcess = <T,>(processId: string) => {\r\n const clientProcess =\r\n clientProcesses.find(\r\n (clientProcess) => clientProcess.data?.dto?.processId === processId,\r\n )?.data ?? null;\r\n\r\n return (clientProcess as ClientProcess<T>) ?? null;\r\n };\r\n\r\n /**\r\n * Filters processes by the provided attribute.\r\n *\r\n * @param filterKey\r\n */\r\n const filterProcesses = <T,>(filterKey: string) => {\r\n return clientProcesses\r\n .filter((clientProcess) => !!clientProcess.data?.dto)\r\n .map((clientProcess) => clientProcess.data)\r\n .filter(\r\n (clientProcessData) =>\r\n clientProcessData?.metadata.filterKey === filterKey,\r\n ) as ClientProcess<T>[];\r\n };\r\n\r\n /**\r\n * Refreshes the cache and invalidates all related processes.\r\n */\r\n const invalidateBasedOnResult = async <R,>(\r\n filter: string,\r\n invalidator?: (result: R) => boolean,\r\n ) => {\r\n await queryClient.invalidateQueries({\r\n queryKey: ['.__process', filter],\r\n exact: false,\r\n });\r\n\r\n const cachedClientProcesses = queryClient\r\n .getQueryCache()\r\n .findAll({ queryKey: ['.__process', filter], exact: false });\r\n\r\n for (const query of cachedClientProcesses) {\r\n const processId = query.queryKey[2];\r\n if (typeof processId !== 'string') continue;\r\n\r\n const data = query.state.data as ClientProcess<any>;\r\n if (!data.result) continue;\r\n\r\n // If invalidator says we gotta clear the cache, we clear it\r\n if (invalidator && invalidator?.(data.result as R)) {\r\n queryClient.removeQueries({ queryKey: query.queryKey });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <clientProcessesContext.Provider\r\n value={{\r\n registerProcess,\r\n getProcess,\r\n filterProcesses,\r\n invalidateBasedOnResult,\r\n }}\r\n >\r\n {children}\r\n </clientProcessesContext.Provider>\r\n );\r\n};\r\n\r\n/**\r\n * A simpler version, where u just pass the async function that returns process data.\r\n *\r\n * @param caller\r\n * @returns\r\n */\r\nexport function useClientProcess<T, R>({\r\n caller,\r\n invalidator,\r\n filterKey,\r\n onLoading,\r\n onSuccess,\r\n onFailure,\r\n}: {\r\n caller?: (inputs: T) => Promise<ProcessResponse>;\r\n invalidator?: (result: R) => boolean;\r\n filterKey: string;\r\n onLoading?: (processId: string, processName: string) => void;\r\n onSuccess?: <R>(processId: string, processName: string, result: R) => void;\r\n onFailure?: (processId: string, processName: string, error?: string) => void;\r\n}) {\r\n const clientProcessesApi = useContext(clientProcessesContext);\r\n\r\n // Note that the exposed function doesn't return process ids\r\n // Client should be oblivious to those\r\n // Abstraction BABY!\r\n const wrappedCaller = async (\r\n inputs: T,\r\n metadata?: Record<string, string>,\r\n ) => {\r\n const response = await caller?.(inputs);\r\n if (response) {\r\n clientProcessesApi.registerProcess(\r\n response.processId,\r\n response,\r\n { filterKey, metadata },\r\n {\r\n onLoading,\r\n onSuccess,\r\n onFailure,\r\n },\r\n );\r\n\r\n return {\r\n id: response.processId,\r\n success: response.success,\r\n message: response.message,\r\n };\r\n }\r\n\r\n return {\r\n id: null,\r\n success: false,\r\n message: 'No `caller` specified for useClientProcess().',\r\n };\r\n };\r\n\r\n return {\r\n run: wrappedCaller,\r\n get: (id: string) => clientProcessesApi.getProcess(id),\r\n getAll: () => clientProcessesApi.filterProcesses(filterKey),\r\n getAllPending: () =>\r\n clientProcessesApi\r\n .filterProcesses(filterKey)\r\n .filter((process) => process.pending),\r\n getAllHandled: () =>\r\n clientProcessesApi\r\n .filterProcesses(filterKey)\r\n .filter((process) => process.success),\r\n getAllFailed: () =>\r\n clientProcessesApi\r\n .filterProcesses(filterKey)\r\n .filter((process) => !process.success),\r\n refreshCache: () =>\r\n clientProcessesApi.invalidateBasedOnResult(filterKey, invalidator),\r\n };\r\n}"],"names":[],"mappings":";;;;;;AAoDA;;;;;AAKG;AACH;AACE;AAAgB;AAChB;AACE;AACA;AACE;AACD;AACF;AAGH;AAEA;;;;;AAKG;AACH;AAMI;AACA;AACE;AACD;AACD;;;;AAID;AAiBH;;;AAGG;AACH;AAIA;;;;AAIG;;AAMD;AACA;;;;AAcE;;AACuC;;AAGlC;AACA;;AAGH;;;;AAIE;;;;;;;;;AAUF;AACF;AACF;;;;AAMM;AACA;AACA;AACA;AACA;AACA;;;AAGE;AAAgB;;;AAIhB;AACE;;AAOA;AACA;;;;;AAME;AACA;;;;;AAMJ;AACE;AACA;;;AAEK;AACL;;;;;AAQE;AACA;;;;;;;;AAUN;AACE;AACA;AAAiC;;AAGjC;AACE;AAEF;AAKA;AACA;;AAEH;AAEJ;AAED;;;;;;AAMG;;AAOD;AACE;;AAED;AACH;AAEA;;;;;AAKG;AACH;;;AAOA;AAEA;;;;AAIG;AACH;AACE;AACG;;AAEA;AAIL;AAEA;;AAEG;;;AAMC;AACA;AACD;;AAGE;AACA;AAEH;;;;AAIE;;;;;;;;AAQJ;AAEA;;;;;;AAYF;AAEA;;;;;AAKG;AACG;AAeJ;;;;;;;AAWI;;;;AAQG;;;;;;;;AAWH;AACA;AACA;;AAEJ;;AAGE;;;AAGA;;;AAIA;;;AAIA;;;;;AAOJ;;"}
1
+ {"version":3,"file":"useClientProcess.js","sources":["../../src/hooks/useClientProcess.tsx"],"sourcesContent":["import { useState, useRef, createContext, useContext, useEffect } from 'react';\nimport { Query, useQueries, useQueryClient } from '@tanstack/react-query';\nimport { config } from '../config';\n\ntype ProcessStatus = 'pending' | 'handled' | 'failed';\n\ninterface Process<T> {\n id: string;\n name: string;\n status: ProcessStatus;\n result?: T;\n error?: string;\n timestamp: string;\n}\n\ninterface ClientProcess<T> {\n dto?: ProcessCallbackDto;\n metadata?: ClientProcessMetadata;\n options?: ClientProcessOptions;\n result?: T;\n success?: boolean;\n pending?: boolean;\n error?: string;\n}\n\nexport interface ProcessCallbackDto {\n processId: string;\n processName: string;\n processCallbackUrl: string;\n}\n\nexport interface ClientProcessOptions {\n onLoading?: (processId: string, processName: string) => void;\n onSuccess?: <R>(processId: string, processName: string, result: R) => void;\n onFailure?: (processId: string, processName: string, error?: string) => void;\n}\n\nexport interface ClientProcessMetadata {\n filterKey: string;\n metadata?: Record<string, string>;\n}\n\nexport interface ProcessResponse {\n processId: string;\n processName: string;\n processCallbackUrl: string;\n success: boolean;\n message?: string;\n}\n\n/**\n * The orchestrator service to get the process from.\n *\n * @param processId\n * @returns\n */\nconst processStatusChecker = <T,>(processId: string) => {\n if (!processId) return { process: null };\n return fetch(`${config.orchestratorApi}/${encodeURIComponent(processId)}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then((response) => response.json()) as unknown as Promise<{\n process: Omit<Process<T>, 'result'>;\n }>;\n};\n\n/**\n * This fetches from the callback endpoint.\n *\n * @param processId\n * @returns\n */\nconst processCallbackResultFetcher = <T,>(\n processId: string,\n processName: string,\n processCallbackUrl?: string,\n) =>\n fetch(`${processCallbackUrl}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n processId,\n processName,\n }),\n }).then((response) => response.json()) as unknown as Promise<T>;\n\ninterface ClientProcesses {\n registerProcess: (\n processId: string,\n dto: ProcessCallbackDto,\n metadata: ClientProcessMetadata,\n options?: ClientProcessOptions,\n ) => void;\n getProcess: <T>(processId: string) => ClientProcess<T> | null;\n filterProcesses: <T>(filter: string) => ClientProcess<T>[];\n invalidateBasedOnResult: <R>(\n filter: string,\n invalidator?: (result: R) => boolean,\n ) => Promise<void>;\n}\n\n/**\n * We need a context to keep track of all client processes.\n * This helps us manage the state of the toasts as well.\n */\nconst clientProcessesContext = createContext<ClientProcesses>(\n {} as ClientProcesses,\n);\n\n/**\n * This should be at the root layout.\n *\n * @context\n */\nexport const ClientProcessesProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const queryClient = useQueryClient();\n const clientProcessAttempts = useRef<Record<string, number>>({});\n const [clientProcessDtos, setClientProcessDtos] = useState<\n Record<\n string,\n {\n dto: ProcessCallbackDto;\n metadata: ClientProcessMetadata;\n options?: ClientProcessOptions;\n }\n >\n >({});\n\n // Populates the state object with cached data on mount\n useEffect(() => {\n setClientProcessDtos((oldData) => {\n if (Object.keys(oldData).length > 0) return oldData;\n\n const cachedClientProcesses = queryClient\n .getQueryCache()\n .findAll({ queryKey: ['.__process'], exact: false });\n const seededClientProcesses: typeof oldData = {};\n\n for (const query of cachedClientProcesses) {\n const processId = query.queryKey[2];\n if (typeof processId !== 'string') continue;\n\n const data = query.state.data as ClientProcess<any>;\n if (!data?.dto || !data?.metadata) continue;\n\n seededClientProcesses[processId] = {\n dto: data.dto,\n metadata: data.metadata,\n options: data.options,\n };\n }\n\n return { ...oldData, ...seededClientProcesses };\n });\n }, [queryClient]);\n\n // The query for all the processes, pending and sht\n const clientProcesses = useQueries({\n queries: Object.entries(clientProcessDtos).map(\n ([processId, { dto, metadata, options }]) => ({\n staleTime: Infinity,\n gcTime: 3 * 60 * 1000,\n refetchOnWindowFocus: true,\n refetchIntervalInBackground: true,\n refetchOnMount: true,\n refetchOnReconnect: true,\n queryKey: ['.__process', metadata.filterKey, processId],\n queryFn: async () => {\n if (!processId) throw new Error('No processId');\n const { process } = await processStatusChecker(processId);\n\n // Handled! Return the proper response too\n if (process?.status === 'handled') {\n const result = await processCallbackResultFetcher(\n process.id,\n process.name,\n dto.processCallbackUrl,\n );\n\n // Log and call runner\n console.warn(`Handled ${process.name} (${process.id})!`);\n options?.onSuccess?.(process.id, process.name, result);\n\n return {\n dto,\n metadata,\n options,\n success: true,\n pending: false,\n result,\n };\n }\n\n // Pending or failed\n if (process?.status === 'pending') {\n console.log(`Running process ${process.name} (${process.id})...`);\n options?.onLoading?.(process.id, process.name);\n return { dto, metadata, options, pending: true };\n } else if (process?.status === 'failed') {\n console.error(\n `Failed ${process.name} (${process.id}) - ${process.error}.`,\n );\n\n return {\n dto,\n metadata,\n options,\n success: false,\n pending: false,\n error: process.error,\n };\n }\n\n // Return null since no response\n return { dto, metadata, options, pending: true };\n },\n\n // Returns the next interval length to use to wait for fetch\n refetchInterval: <T,>(query: Query) => {\n const data = query.state.data as ClientProcess<T>;\n if (data?.success !== undefined) return false;\n\n // If not defined, init to 0\n if (!clientProcessAttempts.current[processId])\n clientProcessAttempts.current[processId] = 0;\n\n const interval = Math.min(\n 500 * 2 ** clientProcessAttempts.current[processId],\n 10000,\n );\n\n clientProcessAttempts.current[processId] += 1;\n return interval;\n },\n }),\n ),\n });\n\n /**\n * Registers a new process to handle\n *\n * @param processId\n * @param processCallbackDto\n * @param options\n */\n const registerProcess = (\n processId: string,\n processCallbackDto: ProcessCallbackDto,\n metadata: ClientProcessMetadata,\n options?: ClientProcessOptions,\n ) => {\n setClientProcessDtos({\n ...clientProcessDtos,\n [processId]: { dto: processCallbackDto, metadata, options },\n });\n };\n\n /**\n * Retrieves a process\n *\n * @param processId\n * @returns\n */\n const getProcess = <T,>(processId: string) => {\n const clientProcess =\n clientProcesses.find(\n (clientProcess) => clientProcess.data?.dto?.processId === processId,\n )?.data ?? null;\n\n return (clientProcess as ClientProcess<T>) ?? null;\n };\n\n /**\n * Filters processes by the provided attribute.\n *\n * @param filterKey\n */\n const filterProcesses = <T,>(filterKey: string) => {\n return clientProcesses\n .filter((clientProcess) => !!clientProcess.data?.dto)\n .map((clientProcess) => clientProcess.data)\n .filter(\n (clientProcessData) =>\n clientProcessData?.metadata.filterKey === filterKey,\n ) as ClientProcess<T>[];\n };\n\n /**\n * Refreshes the cache and invalidates all related processes.\n */\n const invalidateBasedOnResult = async <R,>(\n filter: string,\n invalidator?: (result: R) => boolean,\n ) => {\n await queryClient.invalidateQueries({\n queryKey: ['.__process', filter],\n exact: false,\n });\n\n const cachedClientProcesses = queryClient\n .getQueryCache()\n .findAll({ queryKey: ['.__process', filter], exact: false });\n\n for (const query of cachedClientProcesses) {\n const processId = query.queryKey[2];\n if (typeof processId !== 'string') continue;\n\n const data = query.state.data as ClientProcess<any>;\n if (!data.result) continue;\n\n // If invalidator says we gotta clear the cache, we clear it\n if (invalidator && invalidator?.(data.result as R)) {\n queryClient.removeQueries({ queryKey: query.queryKey });\n }\n }\n };\n\n return (\n <clientProcessesContext.Provider\n value={{\n registerProcess,\n getProcess,\n filterProcesses,\n invalidateBasedOnResult,\n }}\n >\n {children}\n </clientProcessesContext.Provider>\n );\n};\n\n/**\n * A simpler version, where u just pass the async function that returns process data.\n *\n * @param caller\n * @returns\n */\nexport function useClientProcess<T, R>({\n caller,\n invalidator,\n filterKey,\n onLoading,\n onSuccess,\n onFailure,\n}: {\n caller?: (inputs: T) => Promise<ProcessResponse>;\n invalidator?: (result: R) => boolean;\n filterKey: string;\n onLoading?: (processId: string, processName: string) => void;\n onSuccess?: <R>(processId: string, processName: string, result: R) => void;\n onFailure?: (processId: string, processName: string, error?: string) => void;\n}) {\n const clientProcessesApi = useContext(clientProcessesContext);\n\n // Note that the exposed function doesn't return process ids\n // Client should be oblivious to those\n // Abstraction BABY!\n const wrappedCaller = async (\n inputs: T,\n metadata?: Record<string, string>,\n ) => {\n const response = await caller?.(inputs);\n if (response) {\n clientProcessesApi.registerProcess(\n response.processId,\n response,\n { filterKey, metadata },\n {\n onLoading,\n onSuccess,\n onFailure,\n },\n );\n\n return {\n id: response.processId,\n success: response.success,\n message: response.message,\n };\n }\n\n return {\n id: null,\n success: false,\n message: 'No `caller` specified for useClientProcess().',\n };\n };\n\n return {\n run: wrappedCaller,\n get: (id: string) => clientProcessesApi.getProcess(id),\n getAll: () => clientProcessesApi.filterProcesses(filterKey),\n getAllPending: () =>\n clientProcessesApi\n .filterProcesses(filterKey)\n .filter((process) => process.pending),\n getAllHandled: () =>\n clientProcessesApi\n .filterProcesses(filterKey)\n .filter((process) => process.success),\n getAllFailed: () =>\n clientProcessesApi\n .filterProcesses(filterKey)\n .filter((process) => !process.success),\n refreshCache: () =>\n clientProcessesApi.invalidateBasedOnResult(filterKey, invalidator),\n };\n}\n"],"names":["_jsx"],"mappings":"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"}