@mediquo/medicore 0.1.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 (907) hide show
  1. package/README.md +89 -0
  2. package/dist/components/advisor-contact/advisor-contact.d.ts +39 -0
  3. package/dist/components/advisor-contact/advisor-contact.js +94 -0
  4. package/dist/components/advisor-contact/advisor-contact.js.map +1 -0
  5. package/dist/components/advisor-contact/index.d.ts +1 -0
  6. package/dist/components/announcement/announcement-dialog.d.ts +39 -0
  7. package/dist/components/announcement/announcement-dialog.js +107 -0
  8. package/dist/components/announcement/announcement-dialog.js.map +1 -0
  9. package/dist/components/announcement/announcement-illustration.d.ts +9 -0
  10. package/dist/components/announcement/announcement-illustration.js +58 -0
  11. package/dist/components/announcement/announcement-illustration.js.map +1 -0
  12. package/dist/components/announcement/index.d.ts +2 -0
  13. package/dist/components/app-shell/app-shell.d.ts +74 -0
  14. package/dist/components/app-shell/app-shell.js +208 -0
  15. package/dist/components/app-shell/app-shell.js.map +1 -0
  16. package/dist/components/app-shell/index.d.ts +1 -0
  17. package/dist/components/appointment-row/appointment-row.d.ts +59 -0
  18. package/dist/components/appointment-row/appointment-row.js +160 -0
  19. package/dist/components/appointment-row/appointment-row.js.map +1 -0
  20. package/dist/components/appointment-row/index.d.ts +1 -0
  21. package/dist/components/auth-panel/auth-panel.d.ts +20 -0
  22. package/dist/components/auth-panel/auth-panel.js +36 -0
  23. package/dist/components/auth-panel/auth-panel.js.map +1 -0
  24. package/dist/components/auth-panel/index.d.ts +1 -0
  25. package/dist/components/availability-column/availability-column.d.ts +28 -0
  26. package/dist/components/availability-column/availability-column.js +57 -0
  27. package/dist/components/availability-column/availability-column.js.map +1 -0
  28. package/dist/components/availability-column/index.d.ts +1 -0
  29. package/dist/components/availability-row/availability-row.d.ts +36 -0
  30. package/dist/components/availability-row/availability-row.js +60 -0
  31. package/dist/components/availability-row/availability-row.js.map +1 -0
  32. package/dist/components/availability-row/index.d.ts +1 -0
  33. package/dist/components/avatar/avatar.d.ts +57 -0
  34. package/dist/components/avatar/avatar.js +115 -0
  35. package/dist/components/avatar/avatar.js.map +1 -0
  36. package/dist/components/avatar/index.d.ts +1 -0
  37. package/dist/components/badge/badge.d.ts +20 -0
  38. package/dist/components/badge/badge.js +42 -0
  39. package/dist/components/badge/badge.js.map +1 -0
  40. package/dist/components/badge/index.d.ts +1 -0
  41. package/dist/components/banner/banner.d.ts +32 -0
  42. package/dist/components/banner/banner.js +93 -0
  43. package/dist/components/banner/banner.js.map +1 -0
  44. package/dist/components/banner/index.d.ts +1 -0
  45. package/dist/components/bottom-bar/bottom-bar.d.ts +41 -0
  46. package/dist/components/bottom-bar/bottom-bar.js +76 -0
  47. package/dist/components/bottom-bar/bottom-bar.js.map +1 -0
  48. package/dist/components/bottom-bar/index.d.ts +1 -0
  49. package/dist/components/brand-mark/brand-mark.d.ts +22 -0
  50. package/dist/components/brand-mark/brand-mark.js +72 -0
  51. package/dist/components/brand-mark/brand-mark.js.map +1 -0
  52. package/dist/components/brand-mark/index.d.ts +1 -0
  53. package/dist/components/breadcrumb/breadcrumb.d.ts +36 -0
  54. package/dist/components/breadcrumb/breadcrumb.js +70 -0
  55. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  56. package/dist/components/breadcrumb/index.d.ts +1 -0
  57. package/dist/components/button/button.d.ts +29 -0
  58. package/dist/components/button/button.js +104 -0
  59. package/dist/components/button/button.js.map +1 -0
  60. package/dist/components/button/index.d.ts +1 -0
  61. package/dist/components/card/card.d.ts +84 -0
  62. package/dist/components/card/card.js +157 -0
  63. package/dist/components/card/card.js.map +1 -0
  64. package/dist/components/card/index.d.ts +1 -0
  65. package/dist/components/card-appointment/card-appointment.d.ts +58 -0
  66. package/dist/components/card-appointment/card-appointment.js +136 -0
  67. package/dist/components/card-appointment/card-appointment.js.map +1 -0
  68. package/dist/components/card-appointment/index.d.ts +1 -0
  69. package/dist/components/card-article/card-article.d.ts +28 -0
  70. package/dist/components/card-article/card-article.js +46 -0
  71. package/dist/components/card-article/card-article.js.map +1 -0
  72. package/dist/components/card-article/index.d.ts +1 -0
  73. package/dist/components/card-professional/card-professional.d.ts +56 -0
  74. package/dist/components/card-professional/card-professional.js +77 -0
  75. package/dist/components/card-professional/card-professional.js.map +1 -0
  76. package/dist/components/card-professional/index.d.ts +1 -0
  77. package/dist/components/card-professional-mini/card-professional-mini.d.ts +22 -0
  78. package/dist/components/card-professional-mini/card-professional-mini.js +37 -0
  79. package/dist/components/card-professional-mini/card-professional-mini.js.map +1 -0
  80. package/dist/components/card-professional-mini/index.d.ts +1 -0
  81. package/dist/components/card-program/card-program.d.ts +45 -0
  82. package/dist/components/card-program/card-program.js +142 -0
  83. package/dist/components/card-program/card-program.js.map +1 -0
  84. package/dist/components/card-program/index.d.ts +1 -0
  85. package/dist/components/card-service-option/card-service-option.d.ts +33 -0
  86. package/dist/components/card-service-option/card-service-option.js +49 -0
  87. package/dist/components/card-service-option/card-service-option.js.map +1 -0
  88. package/dist/components/card-service-option/index.d.ts +1 -0
  89. package/dist/components/card-testimonial/card-testimonial.d.ts +17 -0
  90. package/dist/components/card-testimonial/card-testimonial.js +36 -0
  91. package/dist/components/card-testimonial/card-testimonial.js.map +1 -0
  92. package/dist/components/card-testimonial/index.d.ts +1 -0
  93. package/dist/components/chat/chat-attachment.d.ts +34 -0
  94. package/dist/components/chat/chat-attachment.js +90 -0
  95. package/dist/components/chat/chat-attachment.js.map +1 -0
  96. package/dist/components/chat/chat-bubble.d.ts +49 -0
  97. package/dist/components/chat/chat-bubble.js +102 -0
  98. package/dist/components/chat/chat-bubble.js.map +1 -0
  99. package/dist/components/chat/chat-composer.d.ts +40 -0
  100. package/dist/components/chat/chat-composer.js +114 -0
  101. package/dist/components/chat/chat-composer.js.map +1 -0
  102. package/dist/components/chat/chat-conversation-row.d.ts +42 -0
  103. package/dist/components/chat/chat-conversation-row.js +104 -0
  104. package/dist/components/chat/chat-conversation-row.js.map +1 -0
  105. package/dist/components/chat/chat-date-separator.d.ts +15 -0
  106. package/dist/components/chat/chat-date-separator.js +29 -0
  107. package/dist/components/chat/chat-date-separator.js.map +1 -0
  108. package/dist/components/chat/chat-delivery-status.d.ts +21 -0
  109. package/dist/components/chat/chat-delivery-status.js +43 -0
  110. package/dist/components/chat/chat-delivery-status.js.map +1 -0
  111. package/dist/components/chat/chat-launcher.d.ts +24 -0
  112. package/dist/components/chat/chat-launcher.js +52 -0
  113. package/dist/components/chat/chat-launcher.js.map +1 -0
  114. package/dist/components/chat/chat-message-list.d.ts +13 -0
  115. package/dist/components/chat/chat-message-list.js +23 -0
  116. package/dist/components/chat/chat-message-list.js.map +1 -0
  117. package/dist/components/chat/chat-room-header.d.ts +33 -0
  118. package/dist/components/chat/chat-room-header.js +53 -0
  119. package/dist/components/chat/chat-room-header.js.map +1 -0
  120. package/dist/components/chat/chat-typing-indicator.d.ts +20 -0
  121. package/dist/components/chat/chat-typing-indicator.js +61 -0
  122. package/dist/components/chat/chat-typing-indicator.js.map +1 -0
  123. package/dist/components/chat/index.d.ts +10 -0
  124. package/dist/components/checkbox/checkbox-field.d.ts +25 -0
  125. package/dist/components/checkbox/checkbox-field.js +62 -0
  126. package/dist/components/checkbox/checkbox-field.js.map +1 -0
  127. package/dist/components/checkbox/checkbox.d.ts +28 -0
  128. package/dist/components/checkbox/checkbox.js +62 -0
  129. package/dist/components/checkbox/checkbox.js.map +1 -0
  130. package/dist/components/checkbox/index.d.ts +2 -0
  131. package/dist/components/chip/chip.d.ts +60 -0
  132. package/dist/components/chip/chip.js +101 -0
  133. package/dist/components/chip/chip.js.map +1 -0
  134. package/dist/components/chip/index.d.ts +1 -0
  135. package/dist/components/date-badge/date-badge.d.ts +15 -0
  136. package/dist/components/date-badge/date-badge.js +35 -0
  137. package/dist/components/date-badge/date-badge.js.map +1 -0
  138. package/dist/components/date-badge/index.d.ts +1 -0
  139. package/dist/components/day-cell/day-cell.d.ts +45 -0
  140. package/dist/components/day-cell/day-cell.js +124 -0
  141. package/dist/components/day-cell/day-cell.js.map +1 -0
  142. package/dist/components/day-cell/index.d.ts +1 -0
  143. package/dist/components/divider/divider.d.ts +23 -0
  144. package/dist/components/divider/divider.js +49 -0
  145. package/dist/components/divider/divider.js.map +1 -0
  146. package/dist/components/divider/index.d.ts +1 -0
  147. package/dist/components/empty-state/empty-state.d.ts +53 -0
  148. package/dist/components/empty-state/empty-state.js +57 -0
  149. package/dist/components/empty-state/empty-state.js.map +1 -0
  150. package/dist/components/empty-state/index.d.ts +1 -0
  151. package/dist/components/field/field-context.d.ts +19 -0
  152. package/dist/components/field/field-context.js +10 -0
  153. package/dist/components/field/field-context.js.map +1 -0
  154. package/dist/components/field/field.d.ts +47 -0
  155. package/dist/components/field/field.js +116 -0
  156. package/dist/components/field/field.js.map +1 -0
  157. package/dist/components/field/index.d.ts +1 -0
  158. package/dist/components/footer/footer.d.ts +29 -0
  159. package/dist/components/footer/footer.js +88 -0
  160. package/dist/components/footer/footer.js.map +1 -0
  161. package/dist/components/footer/index.d.ts +1 -0
  162. package/dist/components/health-record/health-record.d.ts +88 -0
  163. package/dist/components/health-record/health-record.js +255 -0
  164. package/dist/components/health-record/health-record.js.map +1 -0
  165. package/dist/components/health-record/index.d.ts +1 -0
  166. package/dist/components/hero-greeting/hero-greeting.d.ts +17 -0
  167. package/dist/components/hero-greeting/hero-greeting.js +29 -0
  168. package/dist/components/hero-greeting/hero-greeting.js.map +1 -0
  169. package/dist/components/hero-greeting/index.d.ts +1 -0
  170. package/dist/components/icon-button/icon-button.d.ts +37 -0
  171. package/dist/components/icon-button/icon-button.js +64 -0
  172. package/dist/components/icon-button/icon-button.js.map +1 -0
  173. package/dist/components/icon-button/index.d.ts +1 -0
  174. package/dist/components/icon-container/icon-container.d.ts +29 -0
  175. package/dist/components/icon-container/icon-container.js +49 -0
  176. package/dist/components/icon-container/icon-container.js.map +1 -0
  177. package/dist/components/icon-container/index.d.ts +1 -0
  178. package/dist/components/included-item/included-item.d.ts +10 -0
  179. package/dist/components/included-item/included-item.js +37 -0
  180. package/dist/components/included-item/included-item.js.map +1 -0
  181. package/dist/components/included-item/index.d.ts +1 -0
  182. package/dist/components/input/control-styles.d.ts +34 -0
  183. package/dist/components/input/control-styles.js +36 -0
  184. package/dist/components/input/control-styles.js.map +1 -0
  185. package/dist/components/input/index.d.ts +1 -0
  186. package/dist/components/input/input.d.ts +35 -0
  187. package/dist/components/input/input.js +123 -0
  188. package/dist/components/input/input.js.map +1 -0
  189. package/dist/components/link/index.d.ts +1 -0
  190. package/dist/components/link/link.d.ts +52 -0
  191. package/dist/components/link/link.js +94 -0
  192. package/dist/components/link/link.js.map +1 -0
  193. package/dist/components/list-row/index.d.ts +1 -0
  194. package/dist/components/list-row/list-row.d.ts +47 -0
  195. package/dist/components/list-row/list-row.js +71 -0
  196. package/dist/components/list-row/list-row.js.map +1 -0
  197. package/dist/components/logo/index.d.ts +1 -0
  198. package/dist/components/logo/logo.d.ts +13 -0
  199. package/dist/components/logo/logo.js +48 -0
  200. package/dist/components/logo/logo.js.map +1 -0
  201. package/dist/components/menu/index.d.ts +1 -0
  202. package/dist/components/menu/menu.d.ts +79 -0
  203. package/dist/components/menu/menu.js +250 -0
  204. package/dist/components/menu/menu.js.map +1 -0
  205. package/dist/components/mobile-header/index.d.ts +1 -0
  206. package/dist/components/mobile-header/mobile-header.d.ts +49 -0
  207. package/dist/components/mobile-header/mobile-header.js +84 -0
  208. package/dist/components/mobile-header/mobile-header.js.map +1 -0
  209. package/dist/components/modal/confirm-modal.d.ts +32 -0
  210. package/dist/components/modal/confirm-modal.js +78 -0
  211. package/dist/components/modal/confirm-modal.js.map +1 -0
  212. package/dist/components/modal/index.d.ts +2 -0
  213. package/dist/components/modal/modal.d.ts +103 -0
  214. package/dist/components/modal/modal.js +248 -0
  215. package/dist/components/modal/modal.js.map +1 -0
  216. package/dist/components/modal/use-media-query.d.ts +7 -0
  217. package/dist/components/modal/use-media-query.js +22 -0
  218. package/dist/components/modal/use-media-query.js.map +1 -0
  219. package/dist/components/nav-item/index.d.ts +1 -0
  220. package/dist/components/nav-item/nav-item.d.ts +54 -0
  221. package/dist/components/nav-item/nav-item.js +124 -0
  222. package/dist/components/nav-item/nav-item.js.map +1 -0
  223. package/dist/components/otp-input/index.d.ts +1 -0
  224. package/dist/components/otp-input/otp-input.d.ts +40 -0
  225. package/dist/components/otp-input/otp-input.js +152 -0
  226. package/dist/components/otp-input/otp-input.js.map +1 -0
  227. package/dist/components/page-header/index.d.ts +1 -0
  228. package/dist/components/page-header/page-header.d.ts +24 -0
  229. package/dist/components/page-header/page-header.js +41 -0
  230. package/dist/components/page-header/page-header.js.map +1 -0
  231. package/dist/components/phone-input/index.d.ts +1 -0
  232. package/dist/components/phone-input/phone-input.d.ts +46 -0
  233. package/dist/components/phone-input/phone-input.js +219 -0
  234. package/dist/components/phone-input/phone-input.js.map +1 -0
  235. package/dist/components/promo-app/index.d.ts +1 -0
  236. package/dist/components/promo-app/promo-app.d.ts +29 -0
  237. package/dist/components/promo-app/promo-app.js +51 -0
  238. package/dist/components/promo-app/promo-app.js.map +1 -0
  239. package/dist/components/radio/field-item-label.d.ts +13 -0
  240. package/dist/components/radio/field-item-label.js +29 -0
  241. package/dist/components/radio/field-item-label.js.map +1 -0
  242. package/dist/components/radio/index.d.ts +1 -0
  243. package/dist/components/radio/radio.d.ts +38 -0
  244. package/dist/components/radio/radio.js +90 -0
  245. package/dist/components/radio/radio.js.map +1 -0
  246. package/dist/components/radio/use-field-group-label.d.ts +7 -0
  247. package/dist/components/radio/use-field-group-label.js +16 -0
  248. package/dist/components/radio/use-field-group-label.js.map +1 -0
  249. package/dist/components/rating/index.d.ts +1 -0
  250. package/dist/components/rating/rating.d.ts +23 -0
  251. package/dist/components/rating/rating.js +93 -0
  252. package/dist/components/rating/rating.js.map +1 -0
  253. package/dist/components/section-header/index.d.ts +1 -0
  254. package/dist/components/section-header/section-header.d.ts +37 -0
  255. package/dist/components/section-header/section-header.js +60 -0
  256. package/dist/components/section-header/section-header.js.map +1 -0
  257. package/dist/components/segmented-control/index.d.ts +1 -0
  258. package/dist/components/segmented-control/segmented-control.d.ts +34 -0
  259. package/dist/components/segmented-control/segmented-control.js +51 -0
  260. package/dist/components/segmented-control/segmented-control.js.map +1 -0
  261. package/dist/components/select/index.d.ts +2 -0
  262. package/dist/components/select/native-select.d.ts +30 -0
  263. package/dist/components/select/native-select.js +83 -0
  264. package/dist/components/select/native-select.js.map +1 -0
  265. package/dist/components/select/select.d.ts +49 -0
  266. package/dist/components/select/select.js +125 -0
  267. package/dist/components/select/select.js.map +1 -0
  268. package/dist/components/selection-card/index.d.ts +1 -0
  269. package/dist/components/selection-card/selection-card.d.ts +31 -0
  270. package/dist/components/selection-card/selection-card.js +90 -0
  271. package/dist/components/selection-card/selection-card.js.map +1 -0
  272. package/dist/components/severity-indicator/index.d.ts +1 -0
  273. package/dist/components/severity-indicator/severity-indicator.d.ts +18 -0
  274. package/dist/components/severity-indicator/severity-indicator.js +64 -0
  275. package/dist/components/severity-indicator/severity-indicator.js.map +1 -0
  276. package/dist/components/severity-scale/index.d.ts +1 -0
  277. package/dist/components/severity-scale/severity-scale.d.ts +17 -0
  278. package/dist/components/severity-scale/severity-scale.js +22 -0
  279. package/dist/components/severity-scale/severity-scale.js.map +1 -0
  280. package/dist/components/sidebar/index.d.ts +1 -0
  281. package/dist/components/sidebar/sidebar.d.ts +99 -0
  282. package/dist/components/sidebar/sidebar.js +228 -0
  283. package/dist/components/sidebar/sidebar.js.map +1 -0
  284. package/dist/components/skeleton/index.d.ts +1 -0
  285. package/dist/components/skeleton/skeleton.d.ts +33 -0
  286. package/dist/components/skeleton/skeleton.js +47 -0
  287. package/dist/components/skeleton/skeleton.js.map +1 -0
  288. package/dist/components/social-button/index.d.ts +1 -0
  289. package/dist/components/social-button/social-button.d.ts +29 -0
  290. package/dist/components/social-button/social-button.js +53 -0
  291. package/dist/components/social-button/social-button.js.map +1 -0
  292. package/dist/components/spinner/index.d.ts +1 -0
  293. package/dist/components/spinner/spinner.d.ts +20 -0
  294. package/dist/components/spinner/spinner.js +54 -0
  295. package/dist/components/spinner/spinner.js.map +1 -0
  296. package/dist/components/stat-tile/index.d.ts +1 -0
  297. package/dist/components/stat-tile/stat-tile.d.ts +15 -0
  298. package/dist/components/stat-tile/stat-tile.js +28 -0
  299. package/dist/components/stat-tile/stat-tile.js.map +1 -0
  300. package/dist/components/step-indicator/index.d.ts +1 -0
  301. package/dist/components/step-indicator/step-indicator.d.ts +17 -0
  302. package/dist/components/step-indicator/step-indicator.js +35 -0
  303. package/dist/components/step-indicator/step-indicator.js.map +1 -0
  304. package/dist/components/store-badge/index.d.ts +1 -0
  305. package/dist/components/store-badge/store-badge.d.ts +22 -0
  306. package/dist/components/store-badge/store-badge.js +40 -0
  307. package/dist/components/store-badge/store-badge.js.map +1 -0
  308. package/dist/components/switch/index.d.ts +1 -0
  309. package/dist/components/switch/switch.d.ts +23 -0
  310. package/dist/components/switch/switch.js +67 -0
  311. package/dist/components/switch/switch.js.map +1 -0
  312. package/dist/components/table/index.d.ts +1 -0
  313. package/dist/components/table/table.d.ts +85 -0
  314. package/dist/components/table/table.js +175 -0
  315. package/dist/components/table/table.js.map +1 -0
  316. package/dist/components/tabs/index.d.ts +1 -0
  317. package/dist/components/tabs/tabs.d.ts +58 -0
  318. package/dist/components/tabs/tabs.js +89 -0
  319. package/dist/components/tabs/tabs.js.map +1 -0
  320. package/dist/components/textarea/index.d.ts +1 -0
  321. package/dist/components/textarea/textarea.d.ts +25 -0
  322. package/dist/components/textarea/textarea.js +79 -0
  323. package/dist/components/textarea/textarea.js.map +1 -0
  324. package/dist/components/time-slot/index.d.ts +1 -0
  325. package/dist/components/time-slot/time-slot.d.ts +50 -0
  326. package/dist/components/time-slot/time-slot.js +75 -0
  327. package/dist/components/time-slot/time-slot.js.map +1 -0
  328. package/dist/components/toast/index.d.ts +1 -0
  329. package/dist/components/toast/toast.d.ts +60 -0
  330. package/dist/components/toast/toast.js +159 -0
  331. package/dist/components/toast/toast.js.map +1 -0
  332. package/dist/components/tooltip/index.d.ts +1 -0
  333. package/dist/components/tooltip/tooltip.d.ts +40 -0
  334. package/dist/components/tooltip/tooltip.js +110 -0
  335. package/dist/components/tooltip/tooltip.js.map +1 -0
  336. package/dist/components/video/index.d.ts +4 -0
  337. package/dist/components/video/video-control-button.d.ts +33 -0
  338. package/dist/components/video/video-control-button.js +119 -0
  339. package/dist/components/video/video-control-button.js.map +1 -0
  340. package/dist/components/video/video-label.d.ts +14 -0
  341. package/dist/components/video/video-label.js +25 -0
  342. package/dist/components/video/video-label.js.map +1 -0
  343. package/dist/components/video/video-stage.d.ts +39 -0
  344. package/dist/components/video/video-stage.js +96 -0
  345. package/dist/components/video/video-stage.js.map +1 -0
  346. package/dist/components/video/video-tile.d.ts +37 -0
  347. package/dist/components/video/video-tile.js +61 -0
  348. package/dist/components/video/video-tile.js.map +1 -0
  349. package/dist/icons/create-icon.d.ts +18 -0
  350. package/dist/icons/create-icon.js +46 -0
  351. package/dist/icons/create-icon.js.map +1 -0
  352. package/dist/icons/generated/activity-heart.d.ts +1 -0
  353. package/dist/icons/generated/activity-heart.js +10 -0
  354. package/dist/icons/generated/activity-heart.js.map +1 -0
  355. package/dist/icons/generated/activity.d.ts +1 -0
  356. package/dist/icons/generated/activity.js +10 -0
  357. package/dist/icons/generated/activity.js.map +1 -0
  358. package/dist/icons/generated/alert-circle.d.ts +1 -0
  359. package/dist/icons/generated/alert-circle.js +10 -0
  360. package/dist/icons/generated/alert-circle.js.map +1 -0
  361. package/dist/icons/generated/alert-triangle.d.ts +1 -0
  362. package/dist/icons/generated/alert-triangle.js +10 -0
  363. package/dist/icons/generated/alert-triangle.js.map +1 -0
  364. package/dist/icons/generated/allergy-peanut.d.ts +1 -0
  365. package/dist/icons/generated/allergy-peanut.js +16 -0
  366. package/dist/icons/generated/allergy-peanut.js.map +1 -0
  367. package/dist/icons/generated/annotation-alert.d.ts +1 -0
  368. package/dist/icons/generated/annotation-alert.js +10 -0
  369. package/dist/icons/generated/annotation-alert.js.map +1 -0
  370. package/dist/icons/generated/annotation-check.d.ts +1 -0
  371. package/dist/icons/generated/annotation-check.js +10 -0
  372. package/dist/icons/generated/annotation-check.js.map +1 -0
  373. package/dist/icons/generated/annotation-info.d.ts +1 -0
  374. package/dist/icons/generated/annotation-info.js +10 -0
  375. package/dist/icons/generated/annotation-info.js.map +1 -0
  376. package/dist/icons/generated/annotation-question.d.ts +1 -0
  377. package/dist/icons/generated/annotation-question.js +10 -0
  378. package/dist/icons/generated/annotation-question.js.map +1 -0
  379. package/dist/icons/generated/annotation.d.ts +1 -0
  380. package/dist/icons/generated/annotation.js +10 -0
  381. package/dist/icons/generated/annotation.js.map +1 -0
  382. package/dist/icons/generated/arrow-circle-down.d.ts +1 -0
  383. package/dist/icons/generated/arrow-circle-down.js +10 -0
  384. package/dist/icons/generated/arrow-circle-down.js.map +1 -0
  385. package/dist/icons/generated/arrow-circle-left.d.ts +1 -0
  386. package/dist/icons/generated/arrow-circle-left.js +10 -0
  387. package/dist/icons/generated/arrow-circle-left.js.map +1 -0
  388. package/dist/icons/generated/arrow-circle-right.d.ts +1 -0
  389. package/dist/icons/generated/arrow-circle-right.js +10 -0
  390. package/dist/icons/generated/arrow-circle-right.js.map +1 -0
  391. package/dist/icons/generated/arrow-circle-up.d.ts +1 -0
  392. package/dist/icons/generated/arrow-circle-up.js +10 -0
  393. package/dist/icons/generated/arrow-circle-up.js.map +1 -0
  394. package/dist/icons/generated/arrow-narrow-down.d.ts +1 -0
  395. package/dist/icons/generated/arrow-narrow-down.js +10 -0
  396. package/dist/icons/generated/arrow-narrow-down.js.map +1 -0
  397. package/dist/icons/generated/arrow-narrow-left.d.ts +1 -0
  398. package/dist/icons/generated/arrow-narrow-left.js +10 -0
  399. package/dist/icons/generated/arrow-narrow-left.js.map +1 -0
  400. package/dist/icons/generated/arrow-narrow-right.d.ts +1 -0
  401. package/dist/icons/generated/arrow-narrow-right.js +10 -0
  402. package/dist/icons/generated/arrow-narrow-right.js.map +1 -0
  403. package/dist/icons/generated/arrow-narrow-up.d.ts +1 -0
  404. package/dist/icons/generated/arrow-narrow-up.js +10 -0
  405. package/dist/icons/generated/arrow-narrow-up.js.map +1 -0
  406. package/dist/icons/generated/arrow-right.d.ts +1 -0
  407. package/dist/icons/generated/arrow-right.js +10 -0
  408. package/dist/icons/generated/arrow-right.js.map +1 -0
  409. package/dist/icons/generated/bar-chart-01.d.ts +1 -0
  410. package/dist/icons/generated/bar-chart-01.js +10 -0
  411. package/dist/icons/generated/bar-chart-01.js.map +1 -0
  412. package/dist/icons/generated/bar-chart-02.d.ts +1 -0
  413. package/dist/icons/generated/bar-chart-02.js +10 -0
  414. package/dist/icons/generated/bar-chart-02.js.map +1 -0
  415. package/dist/icons/generated/bar-chart-03.d.ts +1 -0
  416. package/dist/icons/generated/bar-chart-03.js +10 -0
  417. package/dist/icons/generated/bar-chart-03.js.map +1 -0
  418. package/dist/icons/generated/bell-01.d.ts +1 -0
  419. package/dist/icons/generated/bell-01.js +10 -0
  420. package/dist/icons/generated/bell-01.js.map +1 -0
  421. package/dist/icons/generated/bell-02.d.ts +1 -0
  422. package/dist/icons/generated/bell-02.js +10 -0
  423. package/dist/icons/generated/bell-02.js.map +1 -0
  424. package/dist/icons/generated/bookmark.d.ts +1 -0
  425. package/dist/icons/generated/bookmark.js +10 -0
  426. package/dist/icons/generated/bookmark.js.map +1 -0
  427. package/dist/icons/generated/broken-heart.d.ts +1 -0
  428. package/dist/icons/generated/broken-heart.js +10 -0
  429. package/dist/icons/generated/broken-heart.js.map +1 -0
  430. package/dist/icons/generated/calendar-chat.d.ts +1 -0
  431. package/dist/icons/generated/calendar-chat.js +13 -0
  432. package/dist/icons/generated/calendar-chat.js.map +1 -0
  433. package/dist/icons/generated/calendar-check-01.d.ts +1 -0
  434. package/dist/icons/generated/calendar-check-01.js +10 -0
  435. package/dist/icons/generated/calendar-check-01.js.map +1 -0
  436. package/dist/icons/generated/calendar-check-02.d.ts +1 -0
  437. package/dist/icons/generated/calendar-check-02.js +10 -0
  438. package/dist/icons/generated/calendar-check-02.js.map +1 -0
  439. package/dist/icons/generated/calendar-heart-01.d.ts +1 -0
  440. package/dist/icons/generated/calendar-heart-01.js +10 -0
  441. package/dist/icons/generated/calendar-heart-01.js.map +1 -0
  442. package/dist/icons/generated/calendar-minus-01.d.ts +1 -0
  443. package/dist/icons/generated/calendar-minus-01.js +10 -0
  444. package/dist/icons/generated/calendar-minus-01.js.map +1 -0
  445. package/dist/icons/generated/calendar-minus-02.d.ts +1 -0
  446. package/dist/icons/generated/calendar-minus-02.js +10 -0
  447. package/dist/icons/generated/calendar-minus-02.js.map +1 -0
  448. package/dist/icons/generated/calendar-plus-01.d.ts +1 -0
  449. package/dist/icons/generated/calendar-plus-01.js +10 -0
  450. package/dist/icons/generated/calendar-plus-01.js.map +1 -0
  451. package/dist/icons/generated/calendar-plus-02.d.ts +1 -0
  452. package/dist/icons/generated/calendar-plus-02.js +10 -0
  453. package/dist/icons/generated/calendar-plus-02.js.map +1 -0
  454. package/dist/icons/generated/calendar.d.ts +1 -0
  455. package/dist/icons/generated/calendar.js +10 -0
  456. package/dist/icons/generated/calendar.js.map +1 -0
  457. package/dist/icons/generated/camera-01.d.ts +1 -0
  458. package/dist/icons/generated/camera-01.js +13 -0
  459. package/dist/icons/generated/camera-01.js.map +1 -0
  460. package/dist/icons/generated/camera-off.d.ts +1 -0
  461. package/dist/icons/generated/camera-off.js +10 -0
  462. package/dist/icons/generated/camera-off.js.map +1 -0
  463. package/dist/icons/generated/certificate-02.d.ts +1 -0
  464. package/dist/icons/generated/certificate-02.js +10 -0
  465. package/dist/icons/generated/certificate-02.js.map +1 -0
  466. package/dist/icons/generated/check-circle.d.ts +1 -0
  467. package/dist/icons/generated/check-circle.js +10 -0
  468. package/dist/icons/generated/check-circle.js.map +1 -0
  469. package/dist/icons/generated/check-heart.d.ts +1 -0
  470. package/dist/icons/generated/check-heart.js +10 -0
  471. package/dist/icons/generated/check-heart.js.map +1 -0
  472. package/dist/icons/generated/check-square.d.ts +1 -0
  473. package/dist/icons/generated/check-square.js +10 -0
  474. package/dist/icons/generated/check-square.js.map +1 -0
  475. package/dist/icons/generated/check-verified-02.d.ts +1 -0
  476. package/dist/icons/generated/check-verified-02.js +10 -0
  477. package/dist/icons/generated/check-verified-02.js.map +1 -0
  478. package/dist/icons/generated/check.d.ts +1 -0
  479. package/dist/icons/generated/check.js +7 -0
  480. package/dist/icons/generated/check.js.map +1 -0
  481. package/dist/icons/generated/chevron-down.d.ts +1 -0
  482. package/dist/icons/generated/chevron-down.js +10 -0
  483. package/dist/icons/generated/chevron-down.js.map +1 -0
  484. package/dist/icons/generated/chevron-left.d.ts +1 -0
  485. package/dist/icons/generated/chevron-left.js +10 -0
  486. package/dist/icons/generated/chevron-left.js.map +1 -0
  487. package/dist/icons/generated/chevron-right.d.ts +1 -0
  488. package/dist/icons/generated/chevron-right.js +10 -0
  489. package/dist/icons/generated/chevron-right.js.map +1 -0
  490. package/dist/icons/generated/chevron-up.d.ts +1 -0
  491. package/dist/icons/generated/chevron-up.js +10 -0
  492. package/dist/icons/generated/chevron-up.js.map +1 -0
  493. package/dist/icons/generated/clipboard-check.d.ts +1 -0
  494. package/dist/icons/generated/clipboard-check.js +10 -0
  495. package/dist/icons/generated/clipboard-check.js.map +1 -0
  496. package/dist/icons/generated/clock.d.ts +1 -0
  497. package/dist/icons/generated/clock.js +10 -0
  498. package/dist/icons/generated/clock.js.map +1 -0
  499. package/dist/icons/generated/copy-01.d.ts +1 -0
  500. package/dist/icons/generated/copy-01.js +10 -0
  501. package/dist/icons/generated/copy-01.js.map +1 -0
  502. package/dist/icons/generated/credit-card-01.d.ts +1 -0
  503. package/dist/icons/generated/credit-card-01.js +10 -0
  504. package/dist/icons/generated/credit-card-01.js.map +1 -0
  505. package/dist/icons/generated/credit-card-02.d.ts +1 -0
  506. package/dist/icons/generated/credit-card-02.js +10 -0
  507. package/dist/icons/generated/credit-card-02.js.map +1 -0
  508. package/dist/icons/generated/credit-card-check.d.ts +1 -0
  509. package/dist/icons/generated/credit-card-check.js +10 -0
  510. package/dist/icons/generated/credit-card-check.js.map +1 -0
  511. package/dist/icons/generated/currency-euro.d.ts +1 -0
  512. package/dist/icons/generated/currency-euro.js +10 -0
  513. package/dist/icons/generated/currency-euro.js.map +1 -0
  514. package/dist/icons/generated/dots-horizontal.d.ts +1 -0
  515. package/dist/icons/generated/dots-horizontal.js +14 -0
  516. package/dist/icons/generated/dots-horizontal.js.map +1 -0
  517. package/dist/icons/generated/dots-vertical.d.ts +1 -0
  518. package/dist/icons/generated/dots-vertical.js +14 -0
  519. package/dist/icons/generated/dots-vertical.js.map +1 -0
  520. package/dist/icons/generated/download-02.d.ts +1 -0
  521. package/dist/icons/generated/download-02.js +10 -0
  522. package/dist/icons/generated/download-02.js.map +1 -0
  523. package/dist/icons/generated/download-cloud-01.d.ts +1 -0
  524. package/dist/icons/generated/download-cloud-01.js +10 -0
  525. package/dist/icons/generated/download-cloud-01.js.map +1 -0
  526. package/dist/icons/generated/edit-01.d.ts +1 -0
  527. package/dist/icons/generated/edit-01.js +10 -0
  528. package/dist/icons/generated/edit-01.js.map +1 -0
  529. package/dist/icons/generated/edit-05.d.ts +1 -0
  530. package/dist/icons/generated/edit-05.js +10 -0
  531. package/dist/icons/generated/edit-05.js.map +1 -0
  532. package/dist/icons/generated/eye-off.d.ts +1 -0
  533. package/dist/icons/generated/eye-off.js +10 -0
  534. package/dist/icons/generated/eye-off.js.map +1 -0
  535. package/dist/icons/generated/eye.d.ts +1 -0
  536. package/dist/icons/generated/eye.js +13 -0
  537. package/dist/icons/generated/eye.js.map +1 -0
  538. package/dist/icons/generated/face-content.d.ts +1 -0
  539. package/dist/icons/generated/face-content.js +10 -0
  540. package/dist/icons/generated/face-content.js.map +1 -0
  541. package/dist/icons/generated/face-frown.d.ts +1 -0
  542. package/dist/icons/generated/face-frown.js +10 -0
  543. package/dist/icons/generated/face-frown.js.map +1 -0
  544. package/dist/icons/generated/face-happy.d.ts +1 -0
  545. package/dist/icons/generated/face-happy.js +10 -0
  546. package/dist/icons/generated/face-happy.js.map +1 -0
  547. package/dist/icons/generated/face-id.d.ts +1 -0
  548. package/dist/icons/generated/face-id.js +10 -0
  549. package/dist/icons/generated/face-id.js.map +1 -0
  550. package/dist/icons/generated/female.d.ts +1 -0
  551. package/dist/icons/generated/female.js +10 -0
  552. package/dist/icons/generated/female.js.map +1 -0
  553. package/dist/icons/generated/file-06.d.ts +1 -0
  554. package/dist/icons/generated/file-06.js +10 -0
  555. package/dist/icons/generated/file-06.js.map +1 -0
  556. package/dist/icons/generated/file-lock-02.d.ts +1 -0
  557. package/dist/icons/generated/file-lock-02.js +10 -0
  558. package/dist/icons/generated/file-lock-02.js.map +1 -0
  559. package/dist/icons/generated/filter-funnel-01.d.ts +1 -0
  560. package/dist/icons/generated/filter-funnel-01.js +10 -0
  561. package/dist/icons/generated/filter-funnel-01.js.map +1 -0
  562. package/dist/icons/generated/filter-lines.d.ts +1 -0
  563. package/dist/icons/generated/filter-lines.js +10 -0
  564. package/dist/icons/generated/filter-lines.js.map +1 -0
  565. package/dist/icons/generated/fingerprint-01.d.ts +1 -0
  566. package/dist/icons/generated/fingerprint-01.js +10 -0
  567. package/dist/icons/generated/fingerprint-01.js.map +1 -0
  568. package/dist/icons/generated/fingerprint-04.d.ts +1 -0
  569. package/dist/icons/generated/fingerprint-04.js +10 -0
  570. package/dist/icons/generated/fingerprint-04.js.map +1 -0
  571. package/dist/icons/generated/flag-01.d.ts +1 -0
  572. package/dist/icons/generated/flag-01.js +10 -0
  573. package/dist/icons/generated/flag-01.js.map +1 -0
  574. package/dist/icons/generated/flash-off.d.ts +1 -0
  575. package/dist/icons/generated/flash-off.js +10 -0
  576. package/dist/icons/generated/flash-off.js.map +1 -0
  577. package/dist/icons/generated/flash.d.ts +1 -0
  578. package/dist/icons/generated/flash.js +10 -0
  579. package/dist/icons/generated/flash.js.map +1 -0
  580. package/dist/icons/generated/flip-backward.d.ts +1 -0
  581. package/dist/icons/generated/flip-backward.js +10 -0
  582. package/dist/icons/generated/flip-backward.js.map +1 -0
  583. package/dist/icons/generated/globe-01.d.ts +1 -0
  584. package/dist/icons/generated/globe-01.js +10 -0
  585. package/dist/icons/generated/globe-01.js.map +1 -0
  586. package/dist/icons/generated/globe-04.d.ts +1 -0
  587. package/dist/icons/generated/globe-04.js +10 -0
  588. package/dist/icons/generated/globe-04.js.map +1 -0
  589. package/dist/icons/generated/heart.d.ts +1 -0
  590. package/dist/icons/generated/heart.js +17 -0
  591. package/dist/icons/generated/heart.js.map +1 -0
  592. package/dist/icons/generated/help-circle.d.ts +1 -0
  593. package/dist/icons/generated/help-circle.js +10 -0
  594. package/dist/icons/generated/help-circle.js.map +1 -0
  595. package/dist/icons/generated/help-square.d.ts +1 -0
  596. package/dist/icons/generated/help-square.js +10 -0
  597. package/dist/icons/generated/help-square.js.map +1 -0
  598. package/dist/icons/generated/home-02.d.ts +1 -0
  599. package/dist/icons/generated/home-02.js +10 -0
  600. package/dist/icons/generated/home-02.js.map +1 -0
  601. package/dist/icons/generated/hourglass-01.d.ts +1 -0
  602. package/dist/icons/generated/hourglass-01.js +10 -0
  603. package/dist/icons/generated/hourglass-01.js.map +1 -0
  604. package/dist/icons/generated/image-01.d.ts +1 -0
  605. package/dist/icons/generated/image-01.js +10 -0
  606. package/dist/icons/generated/image-01.js.map +1 -0
  607. package/dist/icons/generated/image-03.d.ts +1 -0
  608. package/dist/icons/generated/image-03.js +10 -0
  609. package/dist/icons/generated/image-03.js.map +1 -0
  610. package/dist/icons/generated/image-check.d.ts +1 -0
  611. package/dist/icons/generated/image-check.js +10 -0
  612. package/dist/icons/generated/image-check.js.map +1 -0
  613. package/dist/icons/generated/image-plus.d.ts +1 -0
  614. package/dist/icons/generated/image-plus.js +10 -0
  615. package/dist/icons/generated/image-plus.js.map +1 -0
  616. package/dist/icons/generated/inbox-01.d.ts +1 -0
  617. package/dist/icons/generated/inbox-01.js +10 -0
  618. package/dist/icons/generated/inbox-01.js.map +1 -0
  619. package/dist/icons/generated/info-circle.d.ts +1 -0
  620. package/dist/icons/generated/info-circle.js +10 -0
  621. package/dist/icons/generated/info-circle.js.map +1 -0
  622. package/dist/icons/generated/info-square.d.ts +1 -0
  623. package/dist/icons/generated/info-square.js +10 -0
  624. package/dist/icons/generated/info-square.js.map +1 -0
  625. package/dist/icons/generated/key-02.d.ts +1 -0
  626. package/dist/icons/generated/key-02.js +10 -0
  627. package/dist/icons/generated/key-02.js.map +1 -0
  628. package/dist/icons/generated/link-01.d.ts +1 -0
  629. package/dist/icons/generated/link-01.js +10 -0
  630. package/dist/icons/generated/link-01.js.map +1 -0
  631. package/dist/icons/generated/link-03.d.ts +1 -0
  632. package/dist/icons/generated/link-03.js +10 -0
  633. package/dist/icons/generated/link-03.js.map +1 -0
  634. package/dist/icons/generated/link-broken-01.d.ts +1 -0
  635. package/dist/icons/generated/link-broken-01.js +10 -0
  636. package/dist/icons/generated/link-broken-01.js.map +1 -0
  637. package/dist/icons/generated/link-external-01.d.ts +1 -0
  638. package/dist/icons/generated/link-external-01.js +10 -0
  639. package/dist/icons/generated/link-external-01.js.map +1 -0
  640. package/dist/icons/generated/loading-01.d.ts +1 -0
  641. package/dist/icons/generated/loading-01.js +10 -0
  642. package/dist/icons/generated/loading-01.js.map +1 -0
  643. package/dist/icons/generated/lock-01.d.ts +1 -0
  644. package/dist/icons/generated/lock-01.js +10 -0
  645. package/dist/icons/generated/lock-01.js.map +1 -0
  646. package/dist/icons/generated/lock-03.d.ts +1 -0
  647. package/dist/icons/generated/lock-03.js +10 -0
  648. package/dist/icons/generated/lock-03.js.map +1 -0
  649. package/dist/icons/generated/lock-unlocked-01.d.ts +1 -0
  650. package/dist/icons/generated/lock-unlocked-01.js +10 -0
  651. package/dist/icons/generated/lock-unlocked-01.js.map +1 -0
  652. package/dist/icons/generated/log-in-01.d.ts +1 -0
  653. package/dist/icons/generated/log-in-01.js +10 -0
  654. package/dist/icons/generated/log-in-01.js.map +1 -0
  655. package/dist/icons/generated/log-out-01.d.ts +1 -0
  656. package/dist/icons/generated/log-out-01.js +10 -0
  657. package/dist/icons/generated/log-out-01.js.map +1 -0
  658. package/dist/icons/generated/mail-01.d.ts +1 -0
  659. package/dist/icons/generated/mail-01.js +10 -0
  660. package/dist/icons/generated/mail-01.js.map +1 -0
  661. package/dist/icons/generated/mail-02.d.ts +1 -0
  662. package/dist/icons/generated/mail-02.js +10 -0
  663. package/dist/icons/generated/mail-02.js.map +1 -0
  664. package/dist/icons/generated/male.d.ts +1 -0
  665. package/dist/icons/generated/male.js +10 -0
  666. package/dist/icons/generated/male.js.map +1 -0
  667. package/dist/icons/generated/marker-pin-01.d.ts +1 -0
  668. package/dist/icons/generated/marker-pin-01.js +13 -0
  669. package/dist/icons/generated/marker-pin-01.js.map +1 -0
  670. package/dist/icons/generated/medical-circle.d.ts +1 -0
  671. package/dist/icons/generated/medical-circle.js +13 -0
  672. package/dist/icons/generated/medical-circle.js.map +1 -0
  673. package/dist/icons/generated/medical-cross.d.ts +1 -0
  674. package/dist/icons/generated/medical-cross.js +10 -0
  675. package/dist/icons/generated/medical-cross.js.map +1 -0
  676. package/dist/icons/generated/medical-square.d.ts +1 -0
  677. package/dist/icons/generated/medical-square.js +13 -0
  678. package/dist/icons/generated/medical-square.js.map +1 -0
  679. package/dist/icons/generated/menu-01.d.ts +1 -0
  680. package/dist/icons/generated/menu-01.js +10 -0
  681. package/dist/icons/generated/menu-01.js.map +1 -0
  682. package/dist/icons/generated/message-alert-square.d.ts +1 -0
  683. package/dist/icons/generated/message-alert-square.js +10 -0
  684. package/dist/icons/generated/message-alert-square.js.map +1 -0
  685. package/dist/icons/generated/message-check-square.d.ts +1 -0
  686. package/dist/icons/generated/message-check-square.js +10 -0
  687. package/dist/icons/generated/message-check-square.js.map +1 -0
  688. package/dist/icons/generated/message-notification-square.d.ts +1 -0
  689. package/dist/icons/generated/message-notification-square.js +10 -0
  690. package/dist/icons/generated/message-notification-square.js.map +1 -0
  691. package/dist/icons/generated/message-plus-square.d.ts +1 -0
  692. package/dist/icons/generated/message-plus-square.js +10 -0
  693. package/dist/icons/generated/message-plus-square.js.map +1 -0
  694. package/dist/icons/generated/message-question-square.d.ts +1 -0
  695. package/dist/icons/generated/message-question-square.js +10 -0
  696. package/dist/icons/generated/message-question-square.js.map +1 -0
  697. package/dist/icons/generated/message-smile-square.d.ts +1 -0
  698. package/dist/icons/generated/message-smile-square.js +10 -0
  699. package/dist/icons/generated/message-smile-square.js.map +1 -0
  700. package/dist/icons/generated/message-x-square.d.ts +1 -0
  701. package/dist/icons/generated/message-x-square.js +10 -0
  702. package/dist/icons/generated/message-x-square.js.map +1 -0
  703. package/dist/icons/generated/message.d.ts +1 -0
  704. package/dist/icons/generated/message.js +10 -0
  705. package/dist/icons/generated/message.js.map +1 -0
  706. package/dist/icons/generated/microphone-01.d.ts +1 -0
  707. package/dist/icons/generated/microphone-01.js +10 -0
  708. package/dist/icons/generated/microphone-01.js.map +1 -0
  709. package/dist/icons/generated/microphone-off-01.d.ts +1 -0
  710. package/dist/icons/generated/microphone-off-01.js +10 -0
  711. package/dist/icons/generated/microphone-off-01.js.map +1 -0
  712. package/dist/icons/generated/microscope.d.ts +1 -0
  713. package/dist/icons/generated/microscope.js +10 -0
  714. package/dist/icons/generated/microscope.js.map +1 -0
  715. package/dist/icons/generated/minus.d.ts +1 -0
  716. package/dist/icons/generated/minus.js +7 -0
  717. package/dist/icons/generated/minus.js.map +1 -0
  718. package/dist/icons/generated/paperclip.d.ts +1 -0
  719. package/dist/icons/generated/paperclip.js +10 -0
  720. package/dist/icons/generated/paperclip.js.map +1 -0
  721. package/dist/icons/generated/passport.d.ts +1 -0
  722. package/dist/icons/generated/passport.js +10 -0
  723. package/dist/icons/generated/passport.js.map +1 -0
  724. package/dist/icons/generated/pause-circle.d.ts +1 -0
  725. package/dist/icons/generated/pause-circle.js +10 -0
  726. package/dist/icons/generated/pause-circle.js.map +1 -0
  727. package/dist/icons/generated/phone-02.d.ts +1 -0
  728. package/dist/icons/generated/phone-02.js +10 -0
  729. package/dist/icons/generated/phone-02.js.map +1 -0
  730. package/dist/icons/generated/phone.d.ts +1 -0
  731. package/dist/icons/generated/phone.js +10 -0
  732. package/dist/icons/generated/phone.js.map +1 -0
  733. package/dist/icons/generated/pill.d.ts +1 -0
  734. package/dist/icons/generated/pill.js +10 -0
  735. package/dist/icons/generated/pill.js.map +1 -0
  736. package/dist/icons/generated/pin-01.d.ts +1 -0
  737. package/dist/icons/generated/pin-01.js +10 -0
  738. package/dist/icons/generated/pin-01.js.map +1 -0
  739. package/dist/icons/generated/pin-02.d.ts +1 -0
  740. package/dist/icons/generated/pin-02.js +10 -0
  741. package/dist/icons/generated/pin-02.js.map +1 -0
  742. package/dist/icons/generated/play.d.ts +1 -0
  743. package/dist/icons/generated/play.js +10 -0
  744. package/dist/icons/generated/play.js.map +1 -0
  745. package/dist/icons/generated/plus-circle.d.ts +1 -0
  746. package/dist/icons/generated/plus-circle.js +10 -0
  747. package/dist/icons/generated/plus-circle.js.map +1 -0
  748. package/dist/icons/generated/plus-square.d.ts +1 -0
  749. package/dist/icons/generated/plus-square.js +10 -0
  750. package/dist/icons/generated/plus-square.js.map +1 -0
  751. package/dist/icons/generated/plus.d.ts +1 -0
  752. package/dist/icons/generated/plus.js +7 -0
  753. package/dist/icons/generated/plus.js.map +1 -0
  754. package/dist/icons/generated/prescription.d.ts +1 -0
  755. package/dist/icons/generated/prescription.js +10 -0
  756. package/dist/icons/generated/prescription.js.map +1 -0
  757. package/dist/icons/generated/receipt-check.d.ts +1 -0
  758. package/dist/icons/generated/receipt-check.js +10 -0
  759. package/dist/icons/generated/receipt-check.js.map +1 -0
  760. package/dist/icons/generated/receipt.d.ts +1 -0
  761. package/dist/icons/generated/receipt.js +10 -0
  762. package/dist/icons/generated/receipt.js.map +1 -0
  763. package/dist/icons/generated/refresh-ccw-01.d.ts +1 -0
  764. package/dist/icons/generated/refresh-ccw-01.js +10 -0
  765. package/dist/icons/generated/refresh-ccw-01.js.map +1 -0
  766. package/dist/icons/generated/refresh-ccw-02.d.ts +1 -0
  767. package/dist/icons/generated/refresh-ccw-02.js +10 -0
  768. package/dist/icons/generated/refresh-ccw-02.js.map +1 -0
  769. package/dist/icons/generated/reverse-left.d.ts +1 -0
  770. package/dist/icons/generated/reverse-left.js +10 -0
  771. package/dist/icons/generated/reverse-left.js.map +1 -0
  772. package/dist/icons/generated/scan.d.ts +1 -0
  773. package/dist/icons/generated/scan.js +10 -0
  774. package/dist/icons/generated/scan.js.map +1 -0
  775. package/dist/icons/generated/search-lg.d.ts +1 -0
  776. package/dist/icons/generated/search-lg.js +10 -0
  777. package/dist/icons/generated/search-lg.js.map +1 -0
  778. package/dist/icons/generated/search-md.d.ts +1 -0
  779. package/dist/icons/generated/search-md.js +10 -0
  780. package/dist/icons/generated/search-md.js.map +1 -0
  781. package/dist/icons/generated/search-sm.d.ts +1 -0
  782. package/dist/icons/generated/search-sm.js +10 -0
  783. package/dist/icons/generated/search-sm.js.map +1 -0
  784. package/dist/icons/generated/send-01.d.ts +1 -0
  785. package/dist/icons/generated/send-01.js +10 -0
  786. package/dist/icons/generated/send-01.js.map +1 -0
  787. package/dist/icons/generated/settings-02.d.ts +1 -0
  788. package/dist/icons/generated/settings-02.js +13 -0
  789. package/dist/icons/generated/settings-02.js.map +1 -0
  790. package/dist/icons/generated/settings-04.d.ts +1 -0
  791. package/dist/icons/generated/settings-04.js +10 -0
  792. package/dist/icons/generated/settings-04.js.map +1 -0
  793. package/dist/icons/generated/share-01.d.ts +1 -0
  794. package/dist/icons/generated/share-01.js +10 -0
  795. package/dist/icons/generated/share-01.js.map +1 -0
  796. package/dist/icons/generated/share-03.d.ts +1 -0
  797. package/dist/icons/generated/share-03.js +10 -0
  798. package/dist/icons/generated/share-03.js.map +1 -0
  799. package/dist/icons/generated/share-06.d.ts +1 -0
  800. package/dist/icons/generated/share-06.js +10 -0
  801. package/dist/icons/generated/share-06.js.map +1 -0
  802. package/dist/icons/generated/share-07.d.ts +1 -0
  803. package/dist/icons/generated/share-07.js +10 -0
  804. package/dist/icons/generated/share-07.js.map +1 -0
  805. package/dist/icons/generated/shield-tick.d.ts +1 -0
  806. package/dist/icons/generated/shield-tick.js +10 -0
  807. package/dist/icons/generated/shield-tick.js.map +1 -0
  808. package/dist/icons/generated/slash-circle-01.d.ts +1 -0
  809. package/dist/icons/generated/slash-circle-01.js +10 -0
  810. package/dist/icons/generated/slash-circle-01.js.map +1 -0
  811. package/dist/icons/generated/star-01.d.ts +1 -0
  812. package/dist/icons/generated/star-01.js +10 -0
  813. package/dist/icons/generated/star-01.js.map +1 -0
  814. package/dist/icons/generated/star-04.d.ts +1 -0
  815. package/dist/icons/generated/star-04.js +10 -0
  816. package/dist/icons/generated/star-04.js.map +1 -0
  817. package/dist/icons/generated/star-06.d.ts +1 -0
  818. package/dist/icons/generated/star-06.js +10 -0
  819. package/dist/icons/generated/star-06.js.map +1 -0
  820. package/dist/icons/generated/stethoscope-doctor.d.ts +1 -0
  821. package/dist/icons/generated/stethoscope-doctor.js +14 -0
  822. package/dist/icons/generated/stethoscope-doctor.js.map +1 -0
  823. package/dist/icons/generated/tag-01.d.ts +1 -0
  824. package/dist/icons/generated/tag-01.js +10 -0
  825. package/dist/icons/generated/tag-01.js.map +1 -0
  826. package/dist/icons/generated/thumbs-down.d.ts +1 -0
  827. package/dist/icons/generated/thumbs-down.js +10 -0
  828. package/dist/icons/generated/thumbs-down.js.map +1 -0
  829. package/dist/icons/generated/thumbs-up.d.ts +1 -0
  830. package/dist/icons/generated/thumbs-up.js +10 -0
  831. package/dist/icons/generated/thumbs-up.js.map +1 -0
  832. package/dist/icons/generated/trash-01.d.ts +1 -0
  833. package/dist/icons/generated/trash-01.js +10 -0
  834. package/dist/icons/generated/trash-01.js.map +1 -0
  835. package/dist/icons/generated/trash-02.d.ts +1 -0
  836. package/dist/icons/generated/trash-02.js +10 -0
  837. package/dist/icons/generated/trash-02.js.map +1 -0
  838. package/dist/icons/generated/upload-01.d.ts +1 -0
  839. package/dist/icons/generated/upload-01.js +10 -0
  840. package/dist/icons/generated/upload-01.js.map +1 -0
  841. package/dist/icons/generated/user-01.d.ts +1 -0
  842. package/dist/icons/generated/user-01.js +10 -0
  843. package/dist/icons/generated/user-01.js.map +1 -0
  844. package/dist/icons/generated/user-03.d.ts +1 -0
  845. package/dist/icons/generated/user-03.js +10 -0
  846. package/dist/icons/generated/user-03.js.map +1 -0
  847. package/dist/icons/generated/user-check-01.d.ts +1 -0
  848. package/dist/icons/generated/user-check-01.js +10 -0
  849. package/dist/icons/generated/user-check-01.js.map +1 -0
  850. package/dist/icons/generated/user-check-02.d.ts +1 -0
  851. package/dist/icons/generated/user-check-02.js +10 -0
  852. package/dist/icons/generated/user-check-02.js.map +1 -0
  853. package/dist/icons/generated/user-edit.d.ts +1 -0
  854. package/dist/icons/generated/user-edit.js +10 -0
  855. package/dist/icons/generated/user-edit.js.map +1 -0
  856. package/dist/icons/generated/user-plus-01.d.ts +1 -0
  857. package/dist/icons/generated/user-plus-01.js +10 -0
  858. package/dist/icons/generated/user-plus-01.js.map +1 -0
  859. package/dist/icons/generated/user-square.d.ts +1 -0
  860. package/dist/icons/generated/user-square.js +10 -0
  861. package/dist/icons/generated/user-square.js.map +1 -0
  862. package/dist/icons/generated/users-02.d.ts +1 -0
  863. package/dist/icons/generated/users-02.js +10 -0
  864. package/dist/icons/generated/users-02.js.map +1 -0
  865. package/dist/icons/generated/video-recorder-off.d.ts +1 -0
  866. package/dist/icons/generated/video-recorder-off.js +10 -0
  867. package/dist/icons/generated/video-recorder-off.js.map +1 -0
  868. package/dist/icons/generated/video-recorder.d.ts +1 -0
  869. package/dist/icons/generated/video-recorder.js +13 -0
  870. package/dist/icons/generated/video-recorder.js.map +1 -0
  871. package/dist/icons/generated/virus.d.ts +1 -0
  872. package/dist/icons/generated/virus.js +10 -0
  873. package/dist/icons/generated/virus.js.map +1 -0
  874. package/dist/icons/generated/weight.d.ts +1 -0
  875. package/dist/icons/generated/weight.js +15 -0
  876. package/dist/icons/generated/weight.js.map +1 -0
  877. package/dist/icons/generated/x-close.d.ts +1 -0
  878. package/dist/icons/generated/x-close.js +10 -0
  879. package/dist/icons/generated/x-close.js.map +1 -0
  880. package/dist/icons/generated/x.d.ts +1 -0
  881. package/dist/icons/generated/x.js +7 -0
  882. package/dist/icons/generated/x.js.map +1 -0
  883. package/dist/icons/generated/zap.d.ts +1 -0
  884. package/dist/icons/generated/zap.js +10 -0
  885. package/dist/icons/generated/zap.js.map +1 -0
  886. package/dist/icons/index.d.ts +182 -0
  887. package/dist/icons/index.js +542 -0
  888. package/dist/icons/index.js.map +1 -0
  889. package/dist/index.d.ts +73 -0
  890. package/dist/index.js +263 -0
  891. package/dist/index.js.map +1 -0
  892. package/dist/lib/cn.d.ts +2 -0
  893. package/dist/lib/cn.js +51 -0
  894. package/dist/lib/cn.js.map +1 -0
  895. package/dist/provider/index.d.ts +2 -0
  896. package/dist/provider/labels.d.ts +97 -0
  897. package/dist/provider/labels.js +99 -0
  898. package/dist/provider/labels.js.map +1 -0
  899. package/dist/provider/medicore-provider.d.ts +10 -0
  900. package/dist/provider/medicore-provider.js +19 -0
  901. package/dist/provider/medicore-provider.js.map +1 -0
  902. package/dist/styles/primitives.css +59 -0
  903. package/dist/styles/theme.css +15 -0
  904. package/dist/styles/tokens.css +253 -0
  905. package/dist/styles/typography.css +115 -0
  906. package/dist/styles/utilities.css +37 -0
  907. package/package.json +80 -0
@@ -0,0 +1,208 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Drawer } from "@base-ui/react/drawer";
3
+ import { useId, useRef, useState, useMemo, useContext, createContext, useEffect } from "react";
4
+ import { Menu01Icon } from "../../icons/generated/menu-01.js";
5
+ import { cn } from "../../lib/cn.js";
6
+ import { SidebarDrawerContext } from "../sidebar/sidebar.js";
7
+ import { useMediCoreLabels } from "../../provider/medicore-provider.js";
8
+ import { MobileHeaderAction } from "../mobile-header/mobile-header.js";
9
+ const DESKTOP_MEDIA_QUERY = "(min-width: 64rem)";
10
+ const AppShellContext = createContext(null);
11
+ function AppShell({
12
+ sidebar,
13
+ mobileHeader,
14
+ bottomBar,
15
+ footer,
16
+ skipLinkLabel,
17
+ className,
18
+ children,
19
+ ...props
20
+ }) {
21
+ const labels = useMediCoreLabels();
22
+ const mainId = useId();
23
+ const mainRef = useRef(null);
24
+ const [navigation] = useState(() => Drawer.createHandle());
25
+ const context = useMemo(() => ({ navigation }), [navigation]);
26
+ const extendedLabels = labels;
27
+ const skipLabel = skipLinkLabel ?? extendedLabels.skipToContent ?? "Saltar al contenido";
28
+ const skipToContent = (event) => {
29
+ event.preventDefault();
30
+ mainRef.current?.focus();
31
+ mainRef.current?.scrollIntoView();
32
+ };
33
+ return /* @__PURE__ */ jsx(AppShellContext, { value: context, children: /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ "data-slot": "app-shell",
37
+ className: cn(
38
+ "min-h-dvh bg-surface text-text-primary lg:flex",
39
+ className
40
+ ),
41
+ ...props,
42
+ children: [
43
+ /* @__PURE__ */ jsx(
44
+ "a",
45
+ {
46
+ href: `#${mainId}`,
47
+ onClick: skipToContent,
48
+ "data-slot": "app-shell-skip-link",
49
+ className: cn(
50
+ "fixed top-3 left-3 z-80 rounded-md bg-background px-4 py-2.5 text-label-strong text-text-brand shadow-md",
51
+ "-translate-y-20 focus:translate-y-0 focus-ring",
52
+ "transition-transform motion-reduce:transition-none"
53
+ ),
54
+ children: skipLabel
55
+ }
56
+ ),
57
+ sidebar && /* @__PURE__ */ jsx(
58
+ "div",
59
+ {
60
+ "data-slot": "app-shell-sidebar",
61
+ className: "hidden lg:sticky lg:top-0 lg:flex lg:h-dvh lg:shrink-0 lg:self-start",
62
+ children: sidebar
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxs("div", { className: "flex min-h-dvh min-w-0 flex-1 flex-col", children: [
66
+ mobileHeader && /* @__PURE__ */ jsx(
67
+ "div",
68
+ {
69
+ "data-slot": "app-shell-mobile-header",
70
+ className: "sticky top-0 z-40 lg:hidden",
71
+ children: mobileHeader
72
+ }
73
+ ),
74
+ /* @__PURE__ */ jsx(
75
+ "main",
76
+ {
77
+ ref: mainRef,
78
+ id: mainId,
79
+ tabIndex: -1,
80
+ "data-slot": "app-shell-main",
81
+ className: "flex flex-1 flex-col outline-none",
82
+ children
83
+ }
84
+ ),
85
+ footer,
86
+ bottomBar ? /* @__PURE__ */ jsx(
87
+ "div",
88
+ {
89
+ "data-slot": "app-shell-bottom-bar",
90
+ className: "sticky bottom-0 z-40 lg:hidden",
91
+ children: bottomBar
92
+ }
93
+ ) : (
94
+ // Without a bottom bar, keep the end of the page clear of the iPhone's home indicator.
95
+ /* @__PURE__ */ jsx(
96
+ "div",
97
+ {
98
+ "aria-hidden": true,
99
+ className: "h-[env(safe-area-inset-bottom)] lg:hidden"
100
+ }
101
+ )
102
+ )
103
+ ] }),
104
+ sidebar && /* @__PURE__ */ jsx(NavigationDrawer, { handle: navigation, children: sidebar })
105
+ ]
106
+ }
107
+ ) });
108
+ }
109
+ function NavigationDrawer({
110
+ handle,
111
+ children
112
+ }) {
113
+ const labels = useMediCoreLabels();
114
+ const close = useMemo(() => () => handle.close(), [handle]);
115
+ useEffect(() => {
116
+ const query = window.matchMedia(DESKTOP_MEDIA_QUERY);
117
+ const onChange = () => {
118
+ if (query.matches) {
119
+ handle.close();
120
+ }
121
+ };
122
+ query.addEventListener("change", onChange);
123
+ return () => query.removeEventListener("change", onChange);
124
+ }, [handle]);
125
+ const closeOnNavigation = (event) => {
126
+ const link = event.target instanceof Element ? event.target.closest("a[href]") : null;
127
+ const blocked = link?.matches("[aria-disabled=true], [aria-busy=true]");
128
+ if (link && !blocked) {
129
+ handle.close();
130
+ }
131
+ };
132
+ return /* @__PURE__ */ jsx(Drawer.Root, { handle, swipeDirection: "left", children: /* @__PURE__ */ jsxs(Drawer.Portal, { children: [
133
+ /* @__PURE__ */ jsx(
134
+ Drawer.Backdrop,
135
+ {
136
+ "data-slot": "app-shell-drawer-backdrop",
137
+ className: cn(
138
+ "fixed inset-0 z-50 min-h-dvh bg-scrim-image transition-opacity duration-200",
139
+ "opacity-[calc(1-var(--drawer-swipe-progress,0))] data-swiping:duration-0",
140
+ "data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none"
141
+ )
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsx(Drawer.Viewport, { className: "fixed inset-0 z-50 flex justify-start", children: /* @__PURE__ */ jsx(
145
+ Drawer.Popup,
146
+ {
147
+ "data-slot": "app-shell-drawer",
148
+ "aria-label": labels.menu,
149
+ onClick: closeOnNavigation,
150
+ className: cn(
151
+ "h-full w-80 max-w-[calc(100vw_-_--spacing(12))] pt-[env(safe-area-inset-top)] shadow-xl outline-hidden",
152
+ "bg-surface [transform:translateX(var(--drawer-swipe-movement-x,0px))]",
153
+ "transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]",
154
+ "data-ending-style:[transform:translateX(-100%)] data-starting-style:[transform:translateX(-100%)]",
155
+ "data-swiping:select-none motion-reduce:transition-none"
156
+ ),
157
+ children: /* @__PURE__ */ jsx(SidebarDrawerContext, { value: close, children })
158
+ }
159
+ ) })
160
+ ] }) });
161
+ }
162
+ function AppShellMenuButton({
163
+ "aria-label": ariaLabel,
164
+ ...props
165
+ }) {
166
+ const labels = useMediCoreLabels();
167
+ const context = useContext(AppShellContext);
168
+ if (!context) {
169
+ return null;
170
+ }
171
+ return /* @__PURE__ */ jsx(
172
+ Drawer.Trigger,
173
+ {
174
+ handle: context.navigation,
175
+ render: /* @__PURE__ */ jsx(
176
+ MobileHeaderAction,
177
+ {
178
+ "data-slot": "app-shell-menu-button",
179
+ icon: /* @__PURE__ */ jsx(Menu01Icon, {}),
180
+ "aria-label": ariaLabel ?? labels.menu,
181
+ ...props
182
+ }
183
+ )
184
+ }
185
+ );
186
+ }
187
+ function AppShellContent({
188
+ className,
189
+ ...props
190
+ }) {
191
+ return /* @__PURE__ */ jsx(
192
+ "div",
193
+ {
194
+ "data-slot": "app-shell-content",
195
+ className: cn(
196
+ "flex flex-1 flex-col gap-8 px-4 pt-6 pb-8 lg:gap-10 lg:px-6 lg:py-8 xl:px-15",
197
+ className
198
+ ),
199
+ ...props
200
+ }
201
+ );
202
+ }
203
+ export {
204
+ AppShell,
205
+ AppShellContent,
206
+ AppShellMenuButton
207
+ };
208
+ //# sourceMappingURL=app-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shell.js","sources":["../../../src/components/app-shell/app-shell.tsx"],"sourcesContent":["import { Drawer } from \"@base-ui/react/drawer\";\nimport {\n type ComponentProps,\n createContext,\n type MouseEvent,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Menu01Icon } from \"../../icons\";\nimport { cn } from \"../../lib/cn\";\nimport { type MediCoreLabels, useMediCoreLabels } from \"../../provider\";\nimport {\n MobileHeaderAction,\n type MobileHeaderActionProps,\n} from \"../mobile-header\";\nimport { SidebarDrawerContext } from \"../sidebar/sidebar\";\n\n/** Tailwind's `lg`: from here up the sidebar shows; below, the mobile header and bottom bar. */\nconst DESKTOP_MEDIA_QUERY = \"(min-width: 64rem)\";\n\ninterface AppShellContextValue {\n navigation: Drawer.Handle<unknown>;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nexport interface AppShellProps extends ComponentProps<\"div\"> {\n /**\n * The `Sidebar`, shown from the `lg` breakpoint (1024px), stuck to the left at full\n * height. Below `lg` the same sidebar opens as the menu drawer (`AppShellMenuButton`).\n */\n sidebar?: ReactNode;\n /** The `MobileHeader`, stuck to the top below `lg`. */\n mobileHeader?: ReactNode;\n /** The `BottomBar`, stuck to the bottom below `lg`. Leave it out on second-level screens. */\n bottomBar?: ReactNode;\n /** The `Footer`, at the end of the content column. */\n footer?: ReactNode;\n /**\n * Text of the skip link, the first thing a keyboard reaches. Defaults to the\n * `skipToContent` label when the provider has it, else \"Saltar al contenido\".\n */\n skipLinkLabel?: string;\n /** The page: usually `PageHeader` + `AppShellContent`. It goes inside `<main>`. */\n children: ReactNode;\n}\n\n/**\n * The responsive frame of every screen, in both the patient app and the clinic admin.\n * It lays out the pieces; the sections and the copy are the app's.\n *\n * ```tsx\n * <AppShell\n * sidebar={<Sidebar>…</Sidebar>}\n * mobileHeader={<MobileHeader title=\"Agenda\" leading={<AppShellMenuButton />} />}\n * bottomBar={<BottomBar>…</BottomBar>}\n * footer={<Footer holder=\"mediQuo\">…</Footer>}\n * >\n * <PageHeader title=\"Agenda\" />\n * <AppShellContent>…</AppShellContent>\n * </AppShell>\n * ```\n *\n * - From `lg` (1024px): sidebar on the left + content column (PageHeader, content,\n * footer). Below: mobile header on top, content, footer, bottom bar at the bottom.\n * - The document scrolls (not an inner box), so the router's scroll restoration and\n * the mobile browser bars work as usual; the side and top/bottom bars are sticky.\n * - A skip link (\"Saltar al contenido\") comes first and moves focus to `<main>`.\n *\n * **No dead ends.** Every screen must offer a way to another one:\n * - Root sections: the sidebar on desktop; on mobile, the bottom bar (up to five) AND\n * the menu (`<AppShellMenuButton />` in the header's `leading`), which opens the\n * full sidebar — the sections that don't fit in the bar must be reachable there.\n * - Second-level screens (a programme, an appointment, a document): on mobile,\n * `leading={<MobileHeaderBack render={<Link to=\"parent\" />} />}` and usually no\n * bottom bar; on desktop, the sidebar plus a `Breadcrumb` in `PageHeader`.\n * - Flows (booking, onboarding): a back or close button on every step.\n */\nexport function AppShell({\n sidebar,\n mobileHeader,\n bottomBar,\n footer,\n skipLinkLabel,\n className,\n children,\n ...props\n}: AppShellProps): React.JSX.Element {\n const labels = useMediCoreLabels();\n const mainId = useId();\n const mainRef = useRef<HTMLElement>(null);\n const [navigation] = useState(() => Drawer.createHandle<unknown>());\n const context = useMemo(() => ({ navigation }), [navigation]);\n\n // `skipToContent` isn't a MediCore label yet: read it if the provider has it.\n const extendedLabels: MediCoreLabels & { skipToContent?: string } = labels;\n const skipLabel =\n skipLinkLabel ?? extendedLabels.skipToContent ?? \"Saltar al contenido\";\n\n // Moves focus by hand instead of following the `#hash`: a hash router would read it\n // as a route.\n const skipToContent = (event: MouseEvent<HTMLAnchorElement>): void => {\n event.preventDefault();\n mainRef.current?.focus();\n mainRef.current?.scrollIntoView();\n };\n\n return (\n <AppShellContext value={context}>\n <div\n data-slot=\"app-shell\"\n className={cn(\n \"min-h-dvh bg-surface text-text-primary lg:flex\",\n className,\n )}\n {...props}\n >\n <a\n href={`#${mainId}`}\n onClick={skipToContent}\n data-slot=\"app-shell-skip-link\"\n className={cn(\n \"fixed top-3 left-3 z-80 rounded-md bg-background px-4 py-2.5 text-label-strong text-text-brand shadow-md\",\n \"-translate-y-20 focus:translate-y-0 focus-ring\",\n \"transition-transform motion-reduce:transition-none\",\n )}\n >\n {skipLabel}\n </a>\n {sidebar && (\n <div\n data-slot=\"app-shell-sidebar\"\n className=\"hidden lg:sticky lg:top-0 lg:flex lg:h-dvh lg:shrink-0 lg:self-start\"\n >\n {sidebar}\n </div>\n )}\n <div className=\"flex min-h-dvh min-w-0 flex-1 flex-col\">\n {mobileHeader && (\n <div\n data-slot=\"app-shell-mobile-header\"\n className=\"sticky top-0 z-40 lg:hidden\"\n >\n {mobileHeader}\n </div>\n )}\n <main\n ref={mainRef}\n id={mainId}\n tabIndex={-1}\n data-slot=\"app-shell-main\"\n className=\"flex flex-1 flex-col outline-none\"\n >\n {children}\n </main>\n {footer}\n {bottomBar ? (\n <div\n data-slot=\"app-shell-bottom-bar\"\n className=\"sticky bottom-0 z-40 lg:hidden\"\n >\n {bottomBar}\n </div>\n ) : (\n // Without a bottom bar, keep the end of the page clear of the iPhone's home indicator.\n <div\n aria-hidden\n className=\"h-[env(safe-area-inset-bottom)] lg:hidden\"\n />\n )}\n </div>\n {sidebar && (\n <NavigationDrawer handle={navigation}>{sidebar}</NavigationDrawer>\n )}\n </div>\n </AppShellContext>\n );\n}\n\nfunction NavigationDrawer({\n handle,\n children,\n}: {\n handle: Drawer.Handle<unknown>;\n children: ReactNode;\n}): React.JSX.Element {\n const labels = useMediCoreLabels();\n const close = useMemo(() => () => handle.close(), [handle]);\n\n // Growing past `lg` shows the real sidebar: the drawer has no reason to stay open.\n useEffect(() => {\n const query = window.matchMedia(DESKTOP_MEDIA_QUERY);\n const onChange = (): void => {\n if (query.matches) {\n handle.close();\n }\n };\n query.addEventListener(\"change\", onChange);\n return () => query.removeEventListener(\"change\", onChange);\n }, [handle]);\n\n // Picking a section navigates: the menu closes by itself. (Not `defaultPrevented`:\n // router links prevent the browser's navigation on every click.)\n const closeOnNavigation = (event: MouseEvent<HTMLDivElement>): void => {\n const link =\n event.target instanceof Element ? event.target.closest(\"a[href]\") : null;\n const blocked = link?.matches(\"[aria-disabled=true], [aria-busy=true]\");\n if (link && !blocked) {\n handle.close();\n }\n };\n\n return (\n <Drawer.Root handle={handle} swipeDirection=\"left\">\n <Drawer.Portal>\n <Drawer.Backdrop\n data-slot=\"app-shell-drawer-backdrop\"\n className={cn(\n \"fixed inset-0 z-50 min-h-dvh bg-scrim-image transition-opacity duration-200\",\n \"opacity-[calc(1-var(--drawer-swipe-progress,0))] data-swiping:duration-0\",\n \"data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none\",\n )}\n />\n <Drawer.Viewport className=\"fixed inset-0 z-50 flex justify-start\">\n <Drawer.Popup\n data-slot=\"app-shell-drawer\"\n aria-label={labels.menu}\n onClick={closeOnNavigation}\n className={cn(\n \"h-full w-80 max-w-[calc(100vw_-_--spacing(12))] pt-[env(safe-area-inset-top)] shadow-xl outline-hidden\",\n \"bg-surface [transform:translateX(var(--drawer-swipe-movement-x,0px))]\",\n \"transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]\",\n \"data-ending-style:[transform:translateX(-100%)] data-starting-style:[transform:translateX(-100%)]\",\n \"data-swiping:select-none motion-reduce:transition-none\",\n )}\n >\n <SidebarDrawerContext value={close}>\n {children}\n </SidebarDrawerContext>\n </Drawer.Popup>\n </Drawer.Viewport>\n </Drawer.Portal>\n </Drawer.Root>\n );\n}\n\nexport interface AppShellMenuButtonProps\n extends Omit<MobileHeaderActionProps, \"icon\" | \"aria-label\" | \"render\"> {\n /** Defaults to the `menu` label (\"Menú\"). */\n \"aria-label\"?: string;\n}\n\n/**\n * The `menu-01` button for `MobileHeader`'s `leading` slot on root screens: opens the\n * AppShell's sidebar as a drawer from the left, with every section (the bottom bar\n * only fits five). Focus is trapped inside while open and returns here on close.\n * Renders nothing outside an `AppShell` with a `sidebar`.\n */\nexport function AppShellMenuButton({\n \"aria-label\": ariaLabel,\n ...props\n}: AppShellMenuButtonProps): React.JSX.Element | null {\n const labels = useMediCoreLabels();\n const context = useContext(AppShellContext);\n\n if (!context) {\n return null;\n }\n\n return (\n <Drawer.Trigger\n handle={context.navigation}\n render={\n <MobileHeaderAction\n data-slot=\"app-shell-menu-button\"\n icon={<Menu01Icon />}\n aria-label={ariaLabel ?? labels.menu}\n {...props}\n />\n }\n />\n );\n}\n\nexport interface AppShellContentProps extends ComponentProps<\"div\"> {}\n\n/**\n * The page's padded content area: the page gutter (16px on mobile, 24 on desktop, 60\n * on wide screens as in the Figma patterns, the same as `PageHeader`), 24/32 on top,\n * 32 at the bottom on mobile and 32/40 between blocks. Full-bleed pieces (a hero)\n * go outside it, directly in `AppShell`.\n */\nexport function AppShellContent({\n className,\n ...props\n}: AppShellContentProps): React.JSX.Element {\n return (\n <div\n data-slot=\"app-shell-content\"\n className={cn(\n \"flex flex-1 flex-col gap-8 px-4 pt-6 pb-8 lg:gap-10 lg:px-6 lg:py-8 xl:px-15\",\n className,\n )}\n {...props}\n />\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { AppShell, AppShellContent, type AppShellContentProps, AppShellMenuButton, type AppShellMenuButtonProps, type AppShellProps, } from "./app-shell";
@@ -0,0 +1,59 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import type { ComponentProps, ReactNode } from "react";
3
+ import type { CardHeadingLevel } from "../card";
4
+ export type AppointmentRowState = "joinable" | "scheduled" | "empty";
5
+ export interface AppointmentRowAppointmentProps extends Omit<ComponentProps<"article">, "title"> {
6
+ /**
7
+ * `joinable`: the room is open, "Unirse" is the only primary action and the chat
8
+ * the secondary one · `scheduled` (default): only the "⋯".
9
+ */
10
+ state?: "joinable" | "scheduled";
11
+ /** Start of the appointment: the DateBadge and the full date read by screen readers. */
12
+ date: Date;
13
+ /** Default `"es"`. */
14
+ locale?: string;
15
+ /** The patient's time zone: the date is shown in it. */
16
+ timeZone?: string;
17
+ /** "Dr. Jordi Puig". The row's heading. */
18
+ professional: ReactNode;
19
+ /**
20
+ * "Cardiología · 10:30". The time in the patient's zone; add the zone only when it
21
+ * is a different one ("10:30 (hora de Canarias)"), never "GMT+2".
22
+ */
23
+ meta?: ReactNode;
24
+ /** "Videoconsulta", "Llamada de voz", "Chat": a brand Badge. */
25
+ channel?: ReactNode;
26
+ /**
27
+ * The "⋯": a `Menu` (reagendar, cancelar, añadir al calendario) whose trigger is a
28
+ * ghost `IconButton` with `DotsVerticalIcon`.
29
+ */
30
+ menu?: ReactNode;
31
+ /** Joinable: the primary `Button` "Unirse". */
32
+ join?: ReactNode;
33
+ /** Joinable: the chat with the professional (outline icon on Wide, "Ir al chat" on Narrow). */
34
+ chatHref?: string;
35
+ /** Router link for the chat: `chatRender={<Link to="/chat/…" />}`. */
36
+ chatRender?: useRender.RenderProp;
37
+ /** Level of the professional's heading. Default 3. */
38
+ headingLevel?: CardHeadingLevel;
39
+ }
40
+ export interface AppointmentRowEmptyProps extends ComponentProps<"div"> {
41
+ /** Empty: no appointments. */
42
+ state: "empty";
43
+ /** The primary `Button` "Pedir cita" (a link to booking). */
44
+ action: ReactNode;
45
+ }
46
+ export type AppointmentRowProps = AppointmentRowAppointmentProps | AppointmentRowEmptyProps;
47
+ /**
48
+ * An appointment in compact form, for the home and lists (the full version is
49
+ * `CardAppointment`).
50
+ *
51
+ * - `joinable`: the room is open. "Unirse" (`join`) is the only primary action, the
52
+ * chat (`chatHref`) the secondary one, the rest in the "⋯" (`menu`).
53
+ * - `scheduled`: only the "⋯": reschedule, cancel, add to calendar.
54
+ * - `empty`: "No tienes citas programadas" and the way to book (`action`).
55
+ *
56
+ * It is an `<article>` headed by the professional; the `DateBadge` is decorative and
57
+ * the full date ("3 de julio, 10:30") is in a `<time>` for screen readers.
58
+ */
59
+ export declare function AppointmentRow(props: AppointmentRowProps): React.JSX.Element;
@@ -0,0 +1,160 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ import { CalendarPlus01Icon } from "../../icons/generated/calendar-plus-01.js";
4
+ import { MessageIcon } from "../../icons/generated/message.js";
5
+ import { cn } from "../../lib/cn.js";
6
+ import { useMediCoreLabels } from "../../provider/medicore-provider.js";
7
+ import { IconContainer } from "../icon-container/icon-container.js";
8
+ import { DateBadge } from "../date-badge/date-badge.js";
9
+ import { Badge } from "../badge/badge.js";
10
+ import { Tooltip } from "../tooltip/tooltip.js";
11
+ import { buttonVariants } from "../button/button.js";
12
+ import { iconButtonVariants } from "../icon-button/icon-button.js";
13
+ const cardClasses = "@container rounded-xl bg-background p-4 shadow-s";
14
+ function ChatLink({
15
+ compact,
16
+ label,
17
+ render,
18
+ ref,
19
+ href,
20
+ className,
21
+ ...props
22
+ }) {
23
+ return useRender({
24
+ render,
25
+ ref,
26
+ defaultTagName: "a",
27
+ props: {
28
+ // Only when there is one: an explicit `href: undefined` would override the
29
+ // href a router link computes.
30
+ ...href !== void 0 ? { href } : {},
31
+ "data-slot": "appointment-row-chat",
32
+ className: cn(
33
+ compact ? [
34
+ buttonVariants({ variant: "outline", size: null }),
35
+ iconButtonVariants({ size: "default" })
36
+ ] : buttonVariants({ variant: "secondary" }),
37
+ className
38
+ ),
39
+ "aria-label": compact ? label : void 0,
40
+ children: compact ? /* @__PURE__ */ jsx(MessageIcon, {}) : label,
41
+ ...props
42
+ }
43
+ });
44
+ }
45
+ function AppointmentRow(props) {
46
+ const labels = useMediCoreLabels();
47
+ if (props.state === "empty") {
48
+ const { state: _state, action, className: className2, ...rest2 } = props;
49
+ return /* @__PURE__ */ jsx(
50
+ "div",
51
+ {
52
+ "data-slot": "appointment-row",
53
+ "data-state": "empty",
54
+ className: cn(cardClasses, className2),
55
+ ...rest2,
56
+ children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)] items-center gap-4 @min-[480px]:grid-cols-[auto_minmax(0,1fr)_auto]", children: [
57
+ /* @__PURE__ */ jsx(IconContainer, { size: 40, tone: "brand", icon: /* @__PURE__ */ jsx(CalendarPlus01Icon, {}) }),
58
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
59
+ /* @__PURE__ */ jsx("p", { className: "text-body-default-strong text-text-primary", children: labels.appointmentEmptyTitle }),
60
+ /* @__PURE__ */ jsx("p", { className: "text-body-small text-text-secondary", children: labels.appointmentEmptyDescription })
61
+ ] }),
62
+ /* @__PURE__ */ jsx("div", { className: "col-span-2 grid @min-[480px]:col-span-1 @min-[480px]:flex", children: action })
63
+ ] })
64
+ }
65
+ );
66
+ }
67
+ const {
68
+ state = "scheduled",
69
+ date,
70
+ locale = "es",
71
+ timeZone,
72
+ professional,
73
+ meta,
74
+ channel,
75
+ menu,
76
+ join,
77
+ chatHref,
78
+ chatRender,
79
+ headingLevel = 3,
80
+ className,
81
+ ...rest
82
+ } = props;
83
+ const Heading = `h${headingLevel}`;
84
+ const joinable = state === "joinable";
85
+ const hasChat = joinable && Boolean(chatHref || chatRender);
86
+ const fullDate = new Intl.DateTimeFormat(locale, {
87
+ day: "numeric",
88
+ month: "long",
89
+ hour: "2-digit",
90
+ minute: "2-digit",
91
+ hourCycle: "h23",
92
+ timeZone
93
+ }).format(date);
94
+ return /* @__PURE__ */ jsx(
95
+ "article",
96
+ {
97
+ "data-slot": "appointment-row",
98
+ "data-state": state,
99
+ className: cn(cardClasses, className),
100
+ ...rest,
101
+ children: /* @__PURE__ */ jsxs(
102
+ "div",
103
+ {
104
+ className: cn(
105
+ "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-4",
106
+ joinable && "@min-[480px]:grid-cols-[auto_minmax(0,1fr)_auto_auto]"
107
+ ),
108
+ children: [
109
+ /* @__PURE__ */ jsx(DateBadge, { date, locale, timeZone }),
110
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col items-start gap-1", children: [
111
+ /* @__PURE__ */ jsx(Heading, { className: "text-body-default-strong text-text-primary", children: professional }),
112
+ /* @__PURE__ */ jsx("p", { className: "sr-only", children: /* @__PURE__ */ jsx("time", { dateTime: date.toISOString(), children: fullDate }) }),
113
+ meta && /* @__PURE__ */ jsx("p", { className: "text-body-small text-text-secondary", children: meta }),
114
+ channel && /* @__PURE__ */ jsx(Badge, { variant: "brand", children: channel })
115
+ ] }),
116
+ joinable && /* @__PURE__ */ jsxs("div", { className: "col-span-3 row-start-2 grid auto-cols-fr grid-flow-col gap-2 @min-[480px]:col-span-1 @min-[480px]:col-start-3 @min-[480px]:row-start-1 @min-[480px]:flex @min-[480px]:items-center", children: [
117
+ hasChat && /* @__PURE__ */ jsxs(Fragment, { children: [
118
+ /* @__PURE__ */ jsx(Tooltip, { label: labels.appointmentGoToChat, children: /* @__PURE__ */ jsx(
119
+ ChatLink,
120
+ {
121
+ compact: true,
122
+ label: labels.appointmentGoToChat,
123
+ href: chatHref,
124
+ render: chatRender,
125
+ className: "hidden @min-[480px]:inline-flex"
126
+ }
127
+ ) }),
128
+ /* @__PURE__ */ jsx(
129
+ ChatLink,
130
+ {
131
+ compact: false,
132
+ label: labels.appointmentGoToChat,
133
+ href: chatHref,
134
+ render: chatRender,
135
+ className: "@min-[480px]:hidden"
136
+ }
137
+ )
138
+ ] }),
139
+ join
140
+ ] }),
141
+ menu && /* @__PURE__ */ jsx(
142
+ "div",
143
+ {
144
+ className: cn(
145
+ "col-start-3 row-start-1 flex",
146
+ joinable && "@min-[480px]:col-start-4 @min-[480px]:-ml-2"
147
+ ),
148
+ children: menu
149
+ }
150
+ )
151
+ ]
152
+ }
153
+ )
154
+ }
155
+ );
156
+ }
157
+ export {
158
+ AppointmentRow
159
+ };
160
+ //# sourceMappingURL=appointment-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appointment-row.js","sources":["../../../src/components/appointment-row/appointment-row.tsx"],"sourcesContent":["import { useRender } from \"@base-ui/react/use-render\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nimport { CalendarPlus01Icon, MessageIcon } from \"../../icons\";\nimport { cn } from \"../../lib/cn\";\nimport { useMediCoreLabels } from \"../../provider\";\nimport { Badge } from \"../badge\";\nimport { buttonVariants } from \"../button\";\nimport type { CardHeadingLevel } from \"../card\";\nimport { DateBadge } from \"../date-badge\";\nimport { iconButtonVariants } from \"../icon-button\";\nimport { IconContainer } from \"../icon-container\";\nimport { Tooltip } from \"../tooltip\";\n\n/*\n * Figma `Layout` is not a prop: the row is a container, Wide from 480px (columns\n * ≥ 480) and Narrow below (phone, narrow columns: actions under the info, full\n * width). Mobile-first classes, `@min-[480px]:` for Wide.\n */\n\nconst cardClasses = \"@container rounded-xl bg-background p-4 shadow-s\";\n\nexport type AppointmentRowState = \"joinable\" | \"scheduled\" | \"empty\";\n\nexport interface AppointmentRowAppointmentProps\n extends Omit<ComponentProps<\"article\">, \"title\"> {\n /**\n * `joinable`: the room is open, \"Unirse\" is the only primary action and the chat\n * the secondary one · `scheduled` (default): only the \"⋯\".\n */\n state?: \"joinable\" | \"scheduled\";\n /** Start of the appointment: the DateBadge and the full date read by screen readers. */\n date: Date;\n /** Default `\"es\"`. */\n locale?: string;\n /** The patient's time zone: the date is shown in it. */\n timeZone?: string;\n /** \"Dr. Jordi Puig\". The row's heading. */\n professional: ReactNode;\n /**\n * \"Cardiología · 10:30\". The time in the patient's zone; add the zone only when it\n * is a different one (\"10:30 (hora de Canarias)\"), never \"GMT+2\".\n */\n meta?: ReactNode;\n /** \"Videoconsulta\", \"Llamada de voz\", \"Chat\": a brand Badge. */\n channel?: ReactNode;\n /**\n * The \"⋯\": a `Menu` (reagendar, cancelar, añadir al calendario) whose trigger is a\n * ghost `IconButton` with `DotsVerticalIcon`.\n */\n menu?: ReactNode;\n /** Joinable: the primary `Button` \"Unirse\". */\n join?: ReactNode;\n /** Joinable: the chat with the professional (outline icon on Wide, \"Ir al chat\" on Narrow). */\n chatHref?: string;\n /** Router link for the chat: `chatRender={<Link to=\"/chat/…\" />}`. */\n chatRender?: useRender.RenderProp;\n /** Level of the professional's heading. Default 3. */\n headingLevel?: CardHeadingLevel;\n}\n\nexport interface AppointmentRowEmptyProps extends ComponentProps<\"div\"> {\n /** Empty: no appointments. */\n state: \"empty\";\n /** The primary `Button` \"Pedir cita\" (a link to booking). */\n action: ReactNode;\n}\n\nexport type AppointmentRowProps =\n | AppointmentRowAppointmentProps\n | AppointmentRowEmptyProps;\n\ninterface ChatLinkProps extends useRender.ComponentProps<\"a\"> {\n compact: boolean;\n label: string;\n}\n\nfunction ChatLink({\n compact,\n label,\n render,\n ref,\n href,\n className,\n ...props\n}: ChatLinkProps): React.JSX.Element {\n return useRender({\n render,\n ref,\n defaultTagName: \"a\",\n props: {\n // Only when there is one: an explicit `href: undefined` would override the\n // href a router link computes.\n ...(href !== undefined ? { href } : {}),\n \"data-slot\": \"appointment-row-chat\",\n className: cn(\n compact\n ? [\n buttonVariants({ variant: \"outline\", size: null }),\n iconButtonVariants({ size: \"default\" }),\n ]\n : buttonVariants({ variant: \"secondary\" }),\n className,\n ),\n \"aria-label\": compact ? label : undefined,\n children: compact ? <MessageIcon /> : label,\n ...props,\n },\n });\n}\n\n/**\n * An appointment in compact form, for the home and lists (the full version is\n * `CardAppointment`).\n *\n * - `joinable`: the room is open. \"Unirse\" (`join`) is the only primary action, the\n * chat (`chatHref`) the secondary one, the rest in the \"⋯\" (`menu`).\n * - `scheduled`: only the \"⋯\": reschedule, cancel, add to calendar.\n * - `empty`: \"No tienes citas programadas\" and the way to book (`action`).\n *\n * It is an `<article>` headed by the professional; the `DateBadge` is decorative and\n * the full date (\"3 de julio, 10:30\") is in a `<time>` for screen readers.\n */\nexport function AppointmentRow(props: AppointmentRowProps): React.JSX.Element {\n const labels = useMediCoreLabels();\n\n if (props.state === \"empty\") {\n const { state: _state, action, className, ...rest } = props;\n\n return (\n <div\n data-slot=\"appointment-row\"\n data-state=\"empty\"\n className={cn(cardClasses, className)}\n {...rest}\n >\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] items-center gap-4 @min-[480px]:grid-cols-[auto_minmax(0,1fr)_auto]\">\n <IconContainer size={40} tone=\"brand\" icon={<CalendarPlus01Icon />} />\n <div className=\"flex min-w-0 flex-col gap-1\">\n <p className=\"text-body-default-strong text-text-primary\">\n {labels.appointmentEmptyTitle}\n </p>\n <p className=\"text-body-small text-text-secondary\">\n {labels.appointmentEmptyDescription}\n </p>\n </div>\n <div className=\"col-span-2 grid @min-[480px]:col-span-1 @min-[480px]:flex\">\n {action}\n </div>\n </div>\n </div>\n );\n }\n\n const {\n state = \"scheduled\",\n date,\n locale = \"es\",\n timeZone,\n professional,\n meta,\n channel,\n menu,\n join,\n chatHref,\n chatRender,\n headingLevel = 3,\n className,\n ...rest\n } = props;\n const Heading = `h${headingLevel}` as const;\n const joinable = state === \"joinable\";\n const hasChat = joinable && Boolean(chatHref || chatRender);\n const fullDate = new Intl.DateTimeFormat(locale, {\n day: \"numeric\",\n month: \"long\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hourCycle: \"h23\",\n timeZone,\n }).format(date);\n\n return (\n <article\n data-slot=\"appointment-row\"\n data-state={state}\n className={cn(cardClasses, className)}\n {...rest}\n >\n <div\n className={cn(\n \"grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-4\",\n joinable && \"@min-[480px]:grid-cols-[auto_minmax(0,1fr)_auto_auto]\",\n )}\n >\n <DateBadge date={date} locale={locale} timeZone={timeZone} />\n <div className=\"flex min-w-0 flex-col items-start gap-1\">\n <Heading className=\"text-body-default-strong text-text-primary\">\n {professional}\n </Heading>\n <p className=\"sr-only\">\n <time dateTime={date.toISOString()}>{fullDate}</time>\n </p>\n {meta && (\n <p className=\"text-body-small text-text-secondary\">{meta}</p>\n )}\n {channel && <Badge variant=\"brand\">{channel}</Badge>}\n </div>\n\n {joinable && (\n <div className=\"col-span-3 row-start-2 grid auto-cols-fr grid-flow-col gap-2 @min-[480px]:col-span-1 @min-[480px]:col-start-3 @min-[480px]:row-start-1 @min-[480px]:flex @min-[480px]:items-center\">\n {hasChat && (\n <>\n <Tooltip label={labels.appointmentGoToChat}>\n <ChatLink\n compact\n label={labels.appointmentGoToChat}\n href={chatHref}\n render={chatRender}\n className=\"hidden @min-[480px]:inline-flex\"\n />\n </Tooltip>\n <ChatLink\n compact={false}\n label={labels.appointmentGoToChat}\n href={chatHref}\n render={chatRender}\n className=\"@min-[480px]:hidden\"\n />\n </>\n )}\n {join}\n </div>\n )}\n\n {menu && (\n <div\n className={cn(\n \"col-start-3 row-start-1 flex\",\n joinable && \"@min-[480px]:col-start-4 @min-[480px]:-ml-2\",\n )}\n >\n {menu}\n </div>\n )}\n </div>\n </article>\n );\n}\n"],"names":["className","rest"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { AppointmentRow, type AppointmentRowAppointmentProps, type AppointmentRowEmptyProps, type AppointmentRowProps, type AppointmentRowState, } from "./appointment-row";
@@ -0,0 +1,20 @@
1
+ import type { ComponentProps, ReactNode } from "react";
2
+ export interface AuthPanelProps extends Omit<ComponentProps<"div">, "children"> {
3
+ /**
4
+ * The photo, full-bleed. It is decorative: it renders with `alt=""`. The brand veil
5
+ * (`scrim-brand`) always goes on top so the white headline reads over any image.
6
+ */
7
+ imageSrc?: string;
8
+ /**
9
+ * Optional context for the step: "Escribe tus datos exactamente como figuran en tu
10
+ * documento oficial." Don't repeat the form's title here. It is a `<p>`, not a
11
+ * heading.
12
+ */
13
+ headline?: ReactNode;
14
+ }
15
+ /**
16
+ * Left panel of the access screens on desktop (≥1024px), 560px wide and full height.
17
+ * It doesn't exist on mobile: the form takes the whole screen, so hide it below
18
+ * `lg` in the layout (`className="hidden lg:flex"`).
19
+ */
20
+ export declare function AuthPanel({ imageSrc, headline, className, ...props }: AuthPanelProps): React.JSX.Element;
@@ -0,0 +1,36 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/cn.js";
3
+ function AuthPanel({
4
+ imageSrc,
5
+ headline,
6
+ className,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsxs(
10
+ "div",
11
+ {
12
+ "data-slot": "auth-panel",
13
+ className: cn(
14
+ "relative flex w-140 shrink-0 flex-col justify-center overflow-hidden bg-brand-dark px-16",
15
+ className
16
+ ),
17
+ ...props,
18
+ children: [
19
+ imageSrc && /* @__PURE__ */ jsx(
20
+ "img",
21
+ {
22
+ src: imageSrc,
23
+ alt: "",
24
+ className: "absolute inset-0 size-full object-cover"
25
+ }
26
+ ),
27
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "absolute inset-0 bg-scrim-brand" }),
28
+ headline && /* @__PURE__ */ jsx("p", { className: "relative text-heading-h2 text-text-inverse", children: headline })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ export {
34
+ AuthPanel
35
+ };
36
+ //# sourceMappingURL=auth-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-panel.js","sources":["../../../src/components/auth-panel/auth-panel.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nexport interface AuthPanelProps\n extends Omit<ComponentProps<\"div\">, \"children\"> {\n /**\n * The photo, full-bleed. It is decorative: it renders with `alt=\"\"`. The brand veil\n * (`scrim-brand`) always goes on top so the white headline reads over any image.\n */\n imageSrc?: string;\n /**\n * Optional context for the step: \"Escribe tus datos exactamente como figuran en tu\n * documento oficial.\" Don't repeat the form's title here. It is a `<p>`, not a\n * heading.\n */\n headline?: ReactNode;\n}\n\n/**\n * Left panel of the access screens on desktop (≥1024px), 560px wide and full height.\n * It doesn't exist on mobile: the form takes the whole screen, so hide it below\n * `lg` in the layout (`className=\"hidden lg:flex\"`).\n */\nexport function AuthPanel({\n imageSrc,\n headline,\n className,\n ...props\n}: AuthPanelProps): React.JSX.Element {\n return (\n <div\n data-slot=\"auth-panel\"\n className={cn(\n \"relative flex w-140 shrink-0 flex-col justify-center overflow-hidden bg-brand-dark px-16\",\n className,\n )}\n {...props}\n >\n {imageSrc && (\n <img\n src={imageSrc}\n alt=\"\"\n className=\"absolute inset-0 size-full object-cover\"\n />\n )}\n <div aria-hidden className=\"absolute inset-0 bg-scrim-brand\" />\n {headline && (\n <p className=\"relative text-heading-h2 text-text-inverse\">{headline}</p>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;AAwBO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,YACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAI;AAAA,YACJ,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGd,oBAAC,OAAA,EAAI,eAAW,MAAC,WAAU,mCAAkC;AAAA,QAC5D,YACC,oBAAC,KAAA,EAAE,WAAU,8CAA8C,UAAA,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI5E;"}
@@ -0,0 +1 @@
1
+ export { AuthPanel, type AuthPanelProps } from "./auth-panel";
@@ -0,0 +1,28 @@
1
+ import { type ComponentProps, type ReactNode } from "react";
2
+ export interface AvailabilityColumnProps extends Omit<ComponentProps<"fieldset">, "children"> {
3
+ /** The day of the column. Its header (`DayCell`) is formatted from it. */
4
+ date: Date;
5
+ /** Default `"es"`. */
6
+ locale?: string;
7
+ /** The patient's time zone, to read `date` in. */
8
+ timeZone?: string;
9
+ today?: boolean;
10
+ /**
11
+ * The day's `TimeSlot`s, five at most: more than five per day in a result card is
12
+ * noise, the rest go to the full agenda. None → the Empty state.
13
+ */
14
+ children?: ReactNode;
15
+ /** The availability is loading: the day shows, the slots are grey placeholders. */
16
+ loading?: boolean;
17
+ }
18
+ /**
19
+ * One day of the agenda as a column: `DayCell` on top, its hours below, 64px wide
20
+ * like both of them (if they didn't match, the grid would break). Goes inside
21
+ * `TimeSlotGroup`; six of these side by side make `CardProfessional`'s agenda.
22
+ *
23
+ * It is a `<fieldset>` named by the full date, so a screen reader hears "jueves, 1 de
24
+ * octubre" when entering the column. Empty (no slots) keeps its column with the day
25
+ * dimmed and a dash: if it disappeared, the other days would shift and Tuesday would
26
+ * be read as Monday.
27
+ */
28
+ export declare function AvailabilityColumn({ date, locale, timeZone, today, loading, className, children, ...props }: AvailabilityColumnProps): React.JSX.Element;
@@ -0,0 +1,57 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useId, Children } from "react";
3
+ import { cn } from "../../lib/cn.js";
4
+ import { useMediCoreLabels } from "../../provider/medicore-provider.js";
5
+ import { DayCell } from "../day-cell/day-cell.js";
6
+ import { TimeSlot } from "../time-slot/time-slot.js";
7
+ const LOADING_SLOTS = [1, 2, 3, 4];
8
+ function AvailabilityColumn({
9
+ date,
10
+ locale,
11
+ timeZone,
12
+ today,
13
+ loading = false,
14
+ className,
15
+ children,
16
+ ...props
17
+ }) {
18
+ const labels = useMediCoreLabels();
19
+ const dayId = useId();
20
+ const empty = !loading && Children.toArray(children).length === 0;
21
+ return /* @__PURE__ */ jsxs(
22
+ "fieldset",
23
+ {
24
+ "data-slot": "availability-column",
25
+ "aria-labelledby": dayId,
26
+ "aria-busy": loading || void 0,
27
+ className: cn(
28
+ "flex w-16 min-w-0 shrink-0 flex-col items-center gap-2",
29
+ className
30
+ ),
31
+ ...props,
32
+ children: [
33
+ /* @__PURE__ */ jsx(
34
+ DayCell,
35
+ {
36
+ id: dayId,
37
+ date,
38
+ locale,
39
+ timeZone,
40
+ today,
41
+ disabled: empty
42
+ }
43
+ ),
44
+ loading && LOADING_SLOTS.map((slot) => /* @__PURE__ */ jsx(TimeSlot, { loading: true }, slot)),
45
+ empty && /* @__PURE__ */ jsxs("p", { className: "text-body-default text-text-secondary", children: [
46
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "—" }),
47
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: labels.availabilityNoSlots })
48
+ ] }),
49
+ !loading && children
50
+ ]
51
+ }
52
+ );
53
+ }
54
+ export {
55
+ AvailabilityColumn
56
+ };
57
+ //# sourceMappingURL=availability-column.js.map