@alfadocs/ui-kit-debug 1.6.1 → 1.8.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 (240) hide show
  1. package/dist/_chunks/{anamnesis-summary-rows-F-cCmFAn.js → anamnesis-summary-rows-d44s_whc.js} +2 -2
  2. package/dist/_chunks/{anamnesis-summary-rows-F-cCmFAn.js.map → anamnesis-summary-rows-d44s_whc.js.map} +1 -1
  3. package/dist/_chunks/{antenatal-schedule-timeline-BjlF2rTz.js → antenatal-schedule-timeline-B1k8QkA6.js} +3 -3
  4. package/dist/_chunks/{antenatal-schedule-timeline-BjlF2rTz.js.map → antenatal-schedule-timeline-B1k8QkA6.js.map} +1 -1
  5. package/dist/_chunks/{appointment-card-BhcPJpXh.js → appointment-card-Dzr3GeVz.js} +73 -90
  6. package/dist/_chunks/appointment-card-Dzr3GeVz.js.map +1 -0
  7. package/dist/_chunks/{appointment-timeline-CMPvzlGZ.js → appointment-timeline-0mwtpErq.js} +3 -3
  8. package/dist/_chunks/{appointment-timeline-CMPvzlGZ.js.map → appointment-timeline-0mwtpErq.js.map} +1 -1
  9. package/dist/_chunks/{appointment-tray-3c_FLxXJ.js → appointment-tray-4FUu_5NX.js} +2 -2
  10. package/dist/_chunks/{appointment-tray-3c_FLxXJ.js.map → appointment-tray-4FUu_5NX.js.map} +1 -1
  11. package/dist/_chunks/armchair-BaLDW6Hz.js +23 -0
  12. package/dist/_chunks/armchair-BaLDW6Hz.js.map +1 -0
  13. package/dist/_chunks/{booking-CQMJUFG-.js → booking-DHkKcUIl.js} +4 -4
  14. package/dist/_chunks/{booking-CQMJUFG-.js.map → booking-DHkKcUIl.js.map} +1 -1
  15. package/dist/_chunks/{calendar-4dXTvsCz.js → calendar-B4Gnyu1C.js} +553 -437
  16. package/dist/_chunks/calendar-B4Gnyu1C.js.map +1 -0
  17. package/dist/_chunks/calendar-event-card-Bjdbik8G.js +425 -0
  18. package/dist/_chunks/calendar-event-card-Bjdbik8G.js.map +1 -0
  19. package/dist/_chunks/{care-plan-card-DQjVRDxO.js → care-plan-card-aDN4oem9.js} +3 -3
  20. package/dist/_chunks/{care-plan-card-DQjVRDxO.js.map → care-plan-card-aDN4oem9.js.map} +1 -1
  21. package/dist/_chunks/{care-plan-entry-card-CMpoeNkb.js → care-plan-entry-card-BEhANdBE.js} +2 -2
  22. package/dist/_chunks/{care-plan-entry-card-CMpoeNkb.js.map → care-plan-entry-card-BEhANdBE.js.map} +1 -1
  23. package/dist/_chunks/{care-plan-header-CxYoq23f.js → care-plan-header-CkpPyQqG.js} +2 -2
  24. package/dist/_chunks/{care-plan-header-CxYoq23f.js.map → care-plan-header-CkpPyQqG.js.map} +1 -1
  25. package/dist/_chunks/{color-picker-D-tUwxxT.js → color-picker-oZ6zYks8.js} +164 -151
  26. package/dist/_chunks/color-picker-oZ6zYks8.js.map +1 -0
  27. package/dist/_chunks/control-room-rail-Cj2iX9h_.js +337 -0
  28. package/dist/_chunks/control-room-rail-Cj2iX9h_.js.map +1 -0
  29. package/dist/_chunks/{cycle-calculator-DzgO1vzP.js → cycle-calculator-DmtYGhqq.js} +3 -3
  30. package/dist/_chunks/{cycle-calculator-DzgO1vzP.js.map → cycle-calculator-DmtYGhqq.js.map} +1 -1
  31. package/dist/_chunks/{date-picker-Bp64zk2p.js → date-picker-CepI_oI2.js} +77 -74
  32. package/dist/_chunks/date-picker-CepI_oI2.js.map +1 -0
  33. package/dist/_chunks/{date-picker-variants-pKAJfnWr.js → date-picker-variants-DfuooXEK.js} +7 -2
  34. package/dist/_chunks/{date-picker-variants-pKAJfnWr.js.map → date-picker-variants-DfuooXEK.js.map} +1 -1
  35. package/dist/_chunks/{date-range-picker-CDrZ8Zh0.js → date-range-picker-BD8P_rJq.js} +46 -45
  36. package/dist/_chunks/{date-range-picker-CDrZ8Zh0.js.map → date-range-picker-BD8P_rJq.js.map} +1 -1
  37. package/dist/_chunks/{date-time-picker-DVETwpzc.js → date-time-picker-3I2vVKGV.js} +2 -2
  38. package/dist/_chunks/{date-time-picker-DVETwpzc.js.map → date-time-picker-3I2vVKGV.js.map} +1 -1
  39. package/dist/_chunks/{due-date-calculator-wK8Tajzz.js → due-date-calculator-BF_Ikofx.js} +4 -4
  40. package/dist/_chunks/{due-date-calculator-wK8Tajzz.js.map → due-date-calculator-BF_Ikofx.js.map} +1 -1
  41. package/dist/_chunks/{entity-card-9_62gY7l.js → entity-card-DmrgYSEX.js} +4 -4
  42. package/dist/_chunks/{entity-card-9_62gY7l.js.map → entity-card-DmrgYSEX.js.map} +1 -1
  43. package/dist/_chunks/{gestational-age-calculator-C_uDAeP_.js → gestational-age-calculator-CxZelpu2.js} +5 -5
  44. package/dist/_chunks/{gestational-age-calculator-C_uDAeP_.js.map → gestational-age-calculator-CxZelpu2.js.map} +1 -1
  45. package/dist/_chunks/{hcg-doubling-BaXkJhT-.js → hcg-doubling-CpU7H5rQ.js} +3 -3
  46. package/dist/_chunks/{hcg-doubling-BaXkJhT-.js.map → hcg-doubling-CpU7H5rQ.js.map} +1 -1
  47. package/dist/_chunks/{link-cell-renderer-DH4JYpKU.js → link-cell-renderer-BZQtsuFz.js} +2 -2
  48. package/dist/_chunks/{link-cell-renderer-DH4JYpKU.js.map → link-cell-renderer-BZQtsuFz.js.map} +1 -1
  49. package/dist/_chunks/{notes-panel-DlnENphf.js → notes-panel-e9cJWVRg.js} +2 -2
  50. package/dist/_chunks/{notes-panel-DlnENphf.js.map → notes-panel-e9cJWVRg.js.map} +1 -1
  51. package/dist/_chunks/{operator-hero-CCDnIa1S.js → operator-hero-BnFv-Uef.js} +2 -2
  52. package/dist/_chunks/{operator-hero-CCDnIa1S.js.map → operator-hero-BnFv-Uef.js.map} +1 -1
  53. package/dist/_chunks/{parse-JqixfsU0.js → parse-MN9bGkrY.js} +2 -2
  54. package/dist/_chunks/{parse-JqixfsU0.js.map → parse-MN9bGkrY.js.map} +1 -1
  55. package/dist/_chunks/{patient-details-qnsqYBGQ.js → patient-details-xrqe13az.js} +160 -159
  56. package/dist/_chunks/patient-details-xrqe13az.js.map +1 -0
  57. package/dist/_chunks/{patient-table-DwshfVsQ.js → patient-table-BqYomX50.js} +2 -2
  58. package/dist/_chunks/{patient-table-DwshfVsQ.js.map → patient-table-BqYomX50.js.map} +1 -1
  59. package/dist/_chunks/{payment-automation-upsell-BBIG7NFL.js → payment-automation-upsell-DwQW2fRp.js} +52 -63
  60. package/dist/_chunks/payment-automation-upsell-DwQW2fRp.js.map +1 -0
  61. package/dist/_chunks/{payment-request-card-BjjBMdsp.js → payment-request-card-YVCcCZ25.js} +2 -2
  62. package/dist/_chunks/{payment-request-card-BjjBMdsp.js.map → payment-request-card-YVCcCZ25.js.map} +1 -1
  63. package/dist/_chunks/{practice-results-F_Rf7c4H.js → practice-results-BEsAdW-B.js} +719 -633
  64. package/dist/_chunks/practice-results-BEsAdW-B.js.map +1 -0
  65. package/dist/_chunks/{pregnancy-dating-BVS_9YU2.js → pregnancy-dating-DtToyMyc.js} +5 -5
  66. package/dist/_chunks/{pregnancy-dating-BVS_9YU2.js.map → pregnancy-dating-DtToyMyc.js.map} +1 -1
  67. package/dist/_chunks/{radiograph-panel.agent-CiHwgISa.js → radiograph-panel.agent-C3trfWqB.js} +3 -3
  68. package/dist/_chunks/{radiograph-panel.agent-CiHwgISa.js.map → radiograph-panel.agent-C3trfWqB.js.map} +1 -1
  69. package/dist/_chunks/repeat-CvQa5rZt.js +17 -0
  70. package/dist/_chunks/repeat-CvQa5rZt.js.map +1 -0
  71. package/dist/_chunks/resource-chip-DYTG0IQQ.js +83 -0
  72. package/dist/_chunks/resource-chip-DYTG0IQQ.js.map +1 -0
  73. package/dist/_chunks/{rich-text-editor-DARnq_6N.js → rich-text-editor-BDfFtK4H.js} +2 -2
  74. package/dist/_chunks/{rich-text-editor-DARnq_6N.js.map → rich-text-editor-BDfFtK4H.js.map} +1 -1
  75. package/dist/_chunks/subDays-BLl3y3pd.js +8 -0
  76. package/dist/_chunks/{subDays-CAUv47M1.js.map → subDays-BLl3y3pd.js.map} +1 -1
  77. package/dist/agent-catalog.json +3 -3
  78. package/dist/components/_shared/date-picker-variants.d.ts.map +1 -1
  79. package/dist/components/appointment-card/index.js +2 -2
  80. package/dist/components/appointment-timeline/index.js +1 -1
  81. package/dist/components/booking/index.js +1 -1
  82. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  83. package/dist/components/calendar/calendar.d.ts +138 -12
  84. package/dist/components/calendar/calendar.d.ts.map +1 -1
  85. package/dist/components/calendar/index.js +1 -1
  86. package/dist/components/calendar-event-card/calendar-event-card.d.ts +48 -11
  87. package/dist/components/calendar-event-card/calendar-event-card.d.ts.map +1 -1
  88. package/dist/components/calendar-event-card/index.js +1 -1
  89. package/dist/components/care-plan-card/index.js +1 -1
  90. package/dist/components/care-plan-entry-card/index.js +1 -1
  91. package/dist/components/care-plan-header/index.js +1 -1
  92. package/dist/components/color-picker/index.d.ts +1 -1
  93. package/dist/components/color-picker/index.d.ts.map +1 -1
  94. package/dist/components/color-picker/index.js +4 -3
  95. package/dist/components/color-picker/palettes.d.ts +10 -0
  96. package/dist/components/color-picker/palettes.d.ts.map +1 -1
  97. package/dist/components/control-room-rail/control-room-rail.d.ts +9 -0
  98. package/dist/components/control-room-rail/control-room-rail.d.ts.map +1 -1
  99. package/dist/components/control-room-rail/index.js +1 -1
  100. package/dist/components/cycle-calculator/index.js +1 -1
  101. package/dist/components/data-table/index.js +1 -1
  102. package/dist/components/date-picker/date-picker.d.ts +11 -0
  103. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  104. package/dist/components/date-picker/index.js +1 -1
  105. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  106. package/dist/components/date-range-picker/index.js +1 -1
  107. package/dist/components/date-time-picker/index.js +1 -1
  108. package/dist/components/due-date-calculator/index.js +2 -2
  109. package/dist/components/gestational-age-calculator/index.js +1 -1
  110. package/dist/components/hcg-doubling/index.js +1 -1
  111. package/dist/components/index.d.ts +1 -0
  112. package/dist/components/index.d.ts.map +1 -1
  113. package/dist/components/notes-panel/index.js +1 -1
  114. package/dist/components/operator-hero/index.js +1 -1
  115. package/dist/components/patient-details/index.js +1 -1
  116. package/dist/components/patient-details/patient-details.d.ts +8 -0
  117. package/dist/components/patient-details/patient-details.d.ts.map +1 -1
  118. package/dist/components/patient-table/index.js +1 -1
  119. package/dist/components/payment-card/index.js +1 -1
  120. package/dist/components/practice-results/index.js +1 -1
  121. package/dist/components/practice-results/practice-results.d.ts +47 -7
  122. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  123. package/dist/components/pregnancy-dating/index.js +1 -1
  124. package/dist/components/radiograph-panel/index.js +1 -1
  125. package/dist/components/resource-chip/index.d.ts +3 -0
  126. package/dist/components/resource-chip/index.d.ts.map +1 -0
  127. package/dist/components/resource-chip/index.js +5 -0
  128. package/dist/components/resource-chip/index.js.map +1 -0
  129. package/dist/components/resource-chip/resource-chip.d.ts +26 -0
  130. package/dist/components/resource-chip/resource-chip.d.ts.map +1 -0
  131. package/dist/components/rich-text-editor/index.js +1 -1
  132. package/dist/host-compat.css +7 -1
  133. package/dist/i18n/locales/ar.d.ts +5 -0
  134. package/dist/i18n/locales/ar.d.ts.map +1 -1
  135. package/dist/i18n/locales/ar.js +6 -1
  136. package/dist/i18n/locales/ar.js.map +1 -1
  137. package/dist/i18n/locales/de.d.ts +5 -0
  138. package/dist/i18n/locales/de.d.ts.map +1 -1
  139. package/dist/i18n/locales/de.js +6 -1
  140. package/dist/i18n/locales/de.js.map +1 -1
  141. package/dist/i18n/locales/el.d.ts +5 -0
  142. package/dist/i18n/locales/el.d.ts.map +1 -1
  143. package/dist/i18n/locales/el.js +6 -1
  144. package/dist/i18n/locales/el.js.map +1 -1
  145. package/dist/i18n/locales/en.d.ts +5 -0
  146. package/dist/i18n/locales/en.d.ts.map +1 -1
  147. package/dist/i18n/locales/en.js +6 -1
  148. package/dist/i18n/locales/en.js.map +1 -1
  149. package/dist/i18n/locales/es.d.ts +5 -0
  150. package/dist/i18n/locales/es.d.ts.map +1 -1
  151. package/dist/i18n/locales/es.js +6 -1
  152. package/dist/i18n/locales/es.js.map +1 -1
  153. package/dist/i18n/locales/fr.d.ts +5 -0
  154. package/dist/i18n/locales/fr.d.ts.map +1 -1
  155. package/dist/i18n/locales/fr.js +6 -1
  156. package/dist/i18n/locales/fr.js.map +1 -1
  157. package/dist/i18n/locales/hi.d.ts +5 -0
  158. package/dist/i18n/locales/hi.d.ts.map +1 -1
  159. package/dist/i18n/locales/hi.js +6 -1
  160. package/dist/i18n/locales/hi.js.map +1 -1
  161. package/dist/i18n/locales/it.d.ts +5 -0
  162. package/dist/i18n/locales/it.d.ts.map +1 -1
  163. package/dist/i18n/locales/it.js +6 -1
  164. package/dist/i18n/locales/it.js.map +1 -1
  165. package/dist/i18n/locales/ja.d.ts +5 -0
  166. package/dist/i18n/locales/ja.d.ts.map +1 -1
  167. package/dist/i18n/locales/ja.js +6 -1
  168. package/dist/i18n/locales/ja.js.map +1 -1
  169. package/dist/i18n/locales/nl.d.ts +5 -0
  170. package/dist/i18n/locales/nl.d.ts.map +1 -1
  171. package/dist/i18n/locales/nl.js +6 -1
  172. package/dist/i18n/locales/nl.js.map +1 -1
  173. package/dist/i18n/locales/pl.d.ts +5 -0
  174. package/dist/i18n/locales/pl.d.ts.map +1 -1
  175. package/dist/i18n/locales/pl.js +6 -1
  176. package/dist/i18n/locales/pl.js.map +1 -1
  177. package/dist/i18n/locales/pt.d.ts +5 -0
  178. package/dist/i18n/locales/pt.d.ts.map +1 -1
  179. package/dist/i18n/locales/pt.js +6 -1
  180. package/dist/i18n/locales/pt.js.map +1 -1
  181. package/dist/i18n/locales/ro.d.ts +5 -0
  182. package/dist/i18n/locales/ro.d.ts.map +1 -1
  183. package/dist/i18n/locales/ro.js +6 -1
  184. package/dist/i18n/locales/ro.js.map +1 -1
  185. package/dist/i18n/locales/ru.d.ts +5 -0
  186. package/dist/i18n/locales/ru.d.ts.map +1 -1
  187. package/dist/i18n/locales/ru.js +6 -1
  188. package/dist/i18n/locales/ru.js.map +1 -1
  189. package/dist/i18n/locales/sq.d.ts +5 -0
  190. package/dist/i18n/locales/sq.d.ts.map +1 -1
  191. package/dist/i18n/locales/sq.js +6 -1
  192. package/dist/i18n/locales/sq.js.map +1 -1
  193. package/dist/i18n/locales/sv.d.ts +5 -0
  194. package/dist/i18n/locales/sv.d.ts.map +1 -1
  195. package/dist/i18n/locales/sv.js +6 -1
  196. package/dist/i18n/locales/sv.js.map +1 -1
  197. package/dist/i18n/locales/tr.d.ts +5 -0
  198. package/dist/i18n/locales/tr.d.ts.map +1 -1
  199. package/dist/i18n/locales/tr.js +6 -1
  200. package/dist/i18n/locales/tr.js.map +1 -1
  201. package/dist/i18n/locales/zh.d.ts +5 -0
  202. package/dist/i18n/locales/zh.d.ts.map +1 -1
  203. package/dist/i18n/locales/zh.js +6 -1
  204. package/dist/i18n/locales/zh.js.map +1 -1
  205. package/dist/index.js +961 -958
  206. package/dist/index.js.map +1 -1
  207. package/dist/locales/ar.json +6 -1
  208. package/dist/locales/de.json +6 -1
  209. package/dist/locales/el.json +6 -1
  210. package/dist/locales/en.json +6 -1
  211. package/dist/locales/es.json +6 -1
  212. package/dist/locales/fr.json +6 -1
  213. package/dist/locales/hi.json +6 -1
  214. package/dist/locales/it.json +6 -1
  215. package/dist/locales/ja.json +6 -1
  216. package/dist/locales/nl.json +6 -1
  217. package/dist/locales/pl.json +6 -1
  218. package/dist/locales/pt.json +6 -1
  219. package/dist/locales/ro.json +6 -1
  220. package/dist/locales/ru.json +6 -1
  221. package/dist/locales/sq.json +6 -1
  222. package/dist/locales/sv.json +6 -1
  223. package/dist/locales/tr.json +6 -1
  224. package/dist/locales/zh.json +6 -1
  225. package/dist/patterns/anamnesis/index.js +1 -1
  226. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  227. package/dist/tokens.css +40 -24
  228. package/package.json +5 -1
  229. package/dist/_chunks/appointment-card-BhcPJpXh.js.map +0 -1
  230. package/dist/_chunks/calendar-4dXTvsCz.js.map +0 -1
  231. package/dist/_chunks/calendar-event-card-C6qGtywL.js +0 -257
  232. package/dist/_chunks/calendar-event-card-C6qGtywL.js.map +0 -1
  233. package/dist/_chunks/color-picker-D-tUwxxT.js.map +0 -1
  234. package/dist/_chunks/control-room-rail-IH1eBjrK.js +0 -333
  235. package/dist/_chunks/control-room-rail-IH1eBjrK.js.map +0 -1
  236. package/dist/_chunks/date-picker-Bp64zk2p.js.map +0 -1
  237. package/dist/_chunks/patient-details-qnsqYBGQ.js.map +0 -1
  238. package/dist/_chunks/payment-automation-upsell-BBIG7NFL.js.map +0 -1
  239. package/dist/_chunks/practice-results-F_Rf7c4H.js.map +0 -1
  240. package/dist/_chunks/subDays-CAUv47M1.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"operator-hero-CCDnIa1S.js","sources":["../../src/components/operator-hero/operator-hero.agent.ts","../../src/components/operator-hero/operator-hero.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { OperatorHeroHandle } from './operator-hero';\n\nexport const operatorHeroAgent: AgentAdapter<OperatorHeroHandle> = {\n id: 'operator-hero',\n // Purely observable hero region — no interactive affordances and no\n // imperative actions on the handle (getName / getHasColor are read-only\n // projections). The previous `view_change` capability had no backing\n // action and is removed.\n capabilities: [],\n state: {\n name: {\n type: 'string',\n descriptionKey: 'ui.agent.operatorHero.state.name',\n description: 'Operator display name currently rendered.',\n read: (handle) => handle.getName(),\n },\n hasColor: {\n type: 'boolean',\n descriptionKey: 'ui.agent.operatorHero.state.hasColor',\n description:\n 'Whether a calendar-colour identity dot is rendered. Structural flag only — never the colour id or any PHI.',\n read: (handle) => handle.getHasColor(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'operator-hero',\n description: 'Marks the OperatorHero root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { Rating } from '../rating/rating';\nimport { colorIdToToken } from '../_shared/entity-card';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { operatorHeroAgent } from './operator-hero.agent';\n\n/* -------------------------------------------------------------------- */\n/* OperatorHero */\n/* */\n/* The operator-page counterpart to the consumer-side `<PracticeHero>` */\n/* / `<PracticeProfileHero>` pattern. Differences from the practice */\n/* hero (per the spec): */\n/* */\n/* - Avatar instead of a full hero image background */\n/* - Ratings + reviews summary rendered inline */\n/* - Slightly shorter vertically — no cover strip, denser padding */\n/* */\n/* Use case: individual operator profile page (`/dentista/<slug>/ */\n/* operatori/<name>`), pair with `<ContactProfileCard>` below to fill */\n/* in the operator's contact + profession info. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n // Density toggle. Default `comfortable` matches the practice hero's\n // visual weight minus the cover strip. `compact` is for embedded\n // surfaces (booking aside, ROI Dashboard practice panel) where the\n // hero needs to fit in <12rem vertical.\n density: {\n comfortable: '',\n compact: '',\n },\n // Matches the kit's other `surface` props (Booking, ReviewsPanel,\n // ContactProfileCard). `'elevated'` wraps in `<Card>`.\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: {\n density: 'comfortable',\n surface: 'elevated',\n },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface OperatorHeroBadge {\n /** Display key — i18n is up to the consumer. */\n key: string;\n /** Display label. */\n label: string;\n /** Badge variant — falls back to `neutral`. */\n variant?: 'neutral' | 'info' | 'success' | 'warning' | 'error';\n}\n\nexport interface OperatorHeroRating {\n /** Mean rating, 0–5. */\n value: number;\n /** Total number of reviews. */\n count: number;\n}\n\nexport interface OperatorHeroHandle {\n getName: () => string;\n /** Structural flag — whether a calendar-colour dot is rendered. No PHI. */\n getHasColor: () => boolean;\n}\n\nexport interface OperatorHeroProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** Operator's display name. Rendered as the H1 heading. */\n name: string;\n /**\n * Optional calendar-colour identity for the operator. AlfaDocs assigns each\n * operator a numeric colour id; when present, a small colour dot is rendered\n * next to the name, tinted via `colorIdToToken(colorId)` (a `var(--…)` palette\n * token — never a literal). The id itself is a structural identifier, not PHI.\n */\n colorId?: string;\n /** Specialty / tagline subtitle (e.g. \"Dermatologa · 12 anni di esperienza\"). */\n tagline?: string;\n /**\n * Optional photo / avatar URL. The kit always renders an `<Avatar>` —\n * when `imageUrl` is missing the avatar falls back to initials.\n */\n imageUrl?: string;\n /** Rating summary — when present, renders a Rating + numeric breakdown line. */\n rating?: OperatorHeroRating;\n /**\n * Optional badge row beneath the rating. Use sparingly — 1–3 chips\n * suit the hero's density; longer lists belong in `<ContactProfileCard>`.\n */\n badges?: OperatorHeroBadge[];\n\n /* ----- Slots ----- */\n\n /**\n * Rendered at the inline-end of the heading row (right side on LTR).\n * Use for a \"Book with this operator\" `<Button>` or a \"Back to\n * practice\" link.\n */\n actionSlot?: ReactNode;\n\n /* ----- Styling ----- */\n\n /**\n * `comfortable` (default) — matches the practice hero's visual\n * weight minus the cover strip. `compact` halves the vertical\n * padding for embedded surfaces.\n */\n density?: 'comfortable' | 'compact';\n /**\n * `elevated` (default) wraps in `<Card variant=\"elevated\">`. `flat`\n * drops the Card — use inside another card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n 'aria-label'?: string;\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const OperatorHero = forwardRef<HTMLDivElement, OperatorHeroProps>(\n (\n {\n name,\n colorId,\n tagline,\n imageUrl,\n rating,\n badges,\n actionSlot,\n density = 'comfortable',\n surface = 'elevated',\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n const resolvedAriaLabel = ariaLabel ?? t('operatorHero.regionLabel');\n\n // Calendar-colour dot. Tint via a component-scoped CSS custom property set\n // imperatively on a ref — mirrors the Avatar `--avatar-color-override`\n // idiom so no `style={{…}}` attribute lands on the JSX (constraint §4).\n const hasColor = colorId !== undefined && colorId !== null;\n const dotRef = useRef<HTMLSpanElement>(null);\n\n useAgentRegistration(\n operatorHeroAgent,\n { getName: () => name, getHasColor: () => hasColor },\n id,\n );\n useIsomorphicLayoutEffect(() => {\n const el = dotRef.current;\n if (!el) return;\n if (hasColor) {\n el.style.setProperty('--operator-hero-color', colorIdToToken(colorId));\n } else {\n el.style.removeProperty('--operator-hero-color');\n }\n }, [hasColor, colorId]);\n\n const ratingLabel = rating\n ? t('operatorHero.ratingLabel', {\n value: rating.value.toFixed(1),\n count: rating.count,\n })\n : undefined;\n\n // Padding scales with density. Comfortable matches the practice\n // hero's `pt-xl pb-md` minus the cover strip; compact halves it.\n const bodyPaddingClass =\n density === 'comfortable'\n ? 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]'\n : 'ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]';\n\n // Avatar size keys off density. Comfortable = 2xl (~72px) to read\n // as the page hero. Compact = xl (~56px) for embedded use.\n const avatarSize = density === 'comfortable' ? '2xl' : 'xl';\n\n // Heading scale tracks density too. Comfortable uses the kit's\n // page-title token; compact drops to title-card so the operator\n // name doesn't dominate an embedded surface.\n const headingClass =\n density === 'comfortable' ? 'type-title-page' : 'type-title-card';\n\n const inner = (\n <div\n className={[\n 'ds:flex ds:items-start ds:gap-[var(--spacing-lg)]',\n bodyPaddingClass,\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n ].join(' ')}\n >\n <Avatar\n size={avatarSize}\n name={name}\n src={imageUrl}\n className=\"ds:shrink-0\"\n />\n <div className=\"ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <h1\n id={headingId}\n className={`${headingClass} ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--foreground)]`}\n >\n {hasColor ? (\n <span\n ref={dotRef}\n role=\"img\"\n aria-label={t('operatorHero.colorLabel', 'Calendar colour')}\n className=\"ds:inline-block ds:size-[var(--spacing-sm)] ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-[var(--operator-hero-color)]\"\n />\n ) : null}\n {name}\n </h1>\n {actionSlot ? (\n <div className=\"ds:ms-auto ds:flex ds:shrink-0 ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actionSlot}\n </div>\n ) : null}\n </div>\n {tagline ? (\n <p className=\"type-body ds:m-0 ds:text-[color:var(--foreground)]\">\n {tagline}\n </p>\n ) : null}\n {rating ? (\n <div\n className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\"\n aria-label={ratingLabel}\n >\n <Rating\n value={rating.value}\n max={5}\n size={density === 'comfortable' ? 'md' : 'sm'}\n />\n <span className=\"type-body-sm ds:text-[color:var(--muted-foreground)]\">\n {rating.value.toFixed(1)} · {rating.count}\n </span>\n </div>\n ) : null}\n {badges && badges.length > 0 ? (\n <div\n role=\"list\"\n className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-2xs)] ds:mt-[var(--spacing-2xs)]\"\n >\n {badges.map((badge) => (\n <Badge\n key={badge.key}\n variant={badge.variant ?? 'neutral'}\n role=\"listitem\"\n >\n {badge.label}\n </Badge>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"operator-hero\"\n data-component-id={id}\n data-density={density}\n id={id}\n className={rootVariants({ surface, density, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">{inner}</Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nOperatorHero.displayName = 'OperatorHero';\n\nexport type OperatorHeroDensity = NonNullable<\n VariantProps<typeof rootVariants>['density']\n>;\n"],"names":["operatorHeroAgent","handle","rootVariants","cva","OperatorHero","forwardRef","name","colorId","tagline","imageUrl","rating","badges","actionSlot","density","surface","ariaLabel","id","className","rest","ref","t","useTranslation","headingId","useId","resolvedAriaLabel","hasColor","dotRef","useRef","useAgentRegistration","useIsomorphicLayoutEffect","el","colorIdToToken","ratingLabel","bodyPaddingClass","avatarSize","headingClass","inner","jsxs","jsx","Avatar","Rating","badge","Badge","Card"],"mappings":"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"}
1
+ {"version":3,"file":"operator-hero-BnFv-Uef.js","sources":["../../src/components/operator-hero/operator-hero.agent.ts","../../src/components/operator-hero/operator-hero.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { OperatorHeroHandle } from './operator-hero';\n\nexport const operatorHeroAgent: AgentAdapter<OperatorHeroHandle> = {\n id: 'operator-hero',\n // Purely observable hero region — no interactive affordances and no\n // imperative actions on the handle (getName / getHasColor are read-only\n // projections). The previous `view_change` capability had no backing\n // action and is removed.\n capabilities: [],\n state: {\n name: {\n type: 'string',\n descriptionKey: 'ui.agent.operatorHero.state.name',\n description: 'Operator display name currently rendered.',\n read: (handle) => handle.getName(),\n },\n hasColor: {\n type: 'boolean',\n descriptionKey: 'ui.agent.operatorHero.state.hasColor',\n description:\n 'Whether a calendar-colour identity dot is rendered. Structural flag only — never the colour id or any PHI.',\n read: (handle) => handle.getHasColor(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'operator-hero',\n description: 'Marks the OperatorHero root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { Rating } from '../rating/rating';\nimport { colorIdToToken } from '../_shared/entity-card';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { operatorHeroAgent } from './operator-hero.agent';\n\n/* -------------------------------------------------------------------- */\n/* OperatorHero */\n/* */\n/* The operator-page counterpart to the consumer-side `<PracticeHero>` */\n/* / `<PracticeProfileHero>` pattern. Differences from the practice */\n/* hero (per the spec): */\n/* */\n/* - Avatar instead of a full hero image background */\n/* - Ratings + reviews summary rendered inline */\n/* - Slightly shorter vertically — no cover strip, denser padding */\n/* */\n/* Use case: individual operator profile page (`/dentista/<slug>/ */\n/* operatori/<name>`), pair with `<ContactProfileCard>` below to fill */\n/* in the operator's contact + profession info. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n // Density toggle. Default `comfortable` matches the practice hero's\n // visual weight minus the cover strip. `compact` is for embedded\n // surfaces (booking aside, ROI Dashboard practice panel) where the\n // hero needs to fit in <12rem vertical.\n density: {\n comfortable: '',\n compact: '',\n },\n // Matches the kit's other `surface` props (Booking, ReviewsPanel,\n // ContactProfileCard). `'elevated'` wraps in `<Card>`.\n surface: {\n flat: '',\n elevated: '',\n },\n },\n defaultVariants: {\n density: 'comfortable',\n surface: 'elevated',\n },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface OperatorHeroBadge {\n /** Display key — i18n is up to the consumer. */\n key: string;\n /** Display label. */\n label: string;\n /** Badge variant — falls back to `neutral`. */\n variant?: 'neutral' | 'info' | 'success' | 'warning' | 'error';\n}\n\nexport interface OperatorHeroRating {\n /** Mean rating, 0–5. */\n value: number;\n /** Total number of reviews. */\n count: number;\n}\n\nexport interface OperatorHeroHandle {\n getName: () => string;\n /** Structural flag — whether a calendar-colour dot is rendered. No PHI. */\n getHasColor: () => boolean;\n}\n\nexport interface OperatorHeroProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** Operator's display name. Rendered as the H1 heading. */\n name: string;\n /**\n * Optional calendar-colour identity for the operator. AlfaDocs assigns each\n * operator a numeric colour id; when present, a small colour dot is rendered\n * next to the name, tinted via `colorIdToToken(colorId)` (a `var(--…)` palette\n * token — never a literal). The id itself is a structural identifier, not PHI.\n */\n colorId?: string;\n /** Specialty / tagline subtitle (e.g. \"Dermatologa · 12 anni di esperienza\"). */\n tagline?: string;\n /**\n * Optional photo / avatar URL. The kit always renders an `<Avatar>` —\n * when `imageUrl` is missing the avatar falls back to initials.\n */\n imageUrl?: string;\n /** Rating summary — when present, renders a Rating + numeric breakdown line. */\n rating?: OperatorHeroRating;\n /**\n * Optional badge row beneath the rating. Use sparingly — 1–3 chips\n * suit the hero's density; longer lists belong in `<ContactProfileCard>`.\n */\n badges?: OperatorHeroBadge[];\n\n /* ----- Slots ----- */\n\n /**\n * Rendered at the inline-end of the heading row (right side on LTR).\n * Use for a \"Book with this operator\" `<Button>` or a \"Back to\n * practice\" link.\n */\n actionSlot?: ReactNode;\n\n /* ----- Styling ----- */\n\n /**\n * `comfortable` (default) — matches the practice hero's visual\n * weight minus the cover strip. `compact` halves the vertical\n * padding for embedded surfaces.\n */\n density?: 'comfortable' | 'compact';\n /**\n * `elevated` (default) wraps in `<Card variant=\"elevated\">`. `flat`\n * drops the Card — use inside another card / sheet.\n */\n surface?: 'flat' | 'elevated';\n\n /* ----- a11y ----- */\n\n 'aria-label'?: string;\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const OperatorHero = forwardRef<HTMLDivElement, OperatorHeroProps>(\n (\n {\n name,\n colorId,\n tagline,\n imageUrl,\n rating,\n badges,\n actionSlot,\n density = 'comfortable',\n surface = 'elevated',\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n const resolvedAriaLabel = ariaLabel ?? t('operatorHero.regionLabel');\n\n // Calendar-colour dot. Tint via a component-scoped CSS custom property set\n // imperatively on a ref — mirrors the Avatar `--avatar-color-override`\n // idiom so no `style={{…}}` attribute lands on the JSX (constraint §4).\n const hasColor = colorId !== undefined && colorId !== null;\n const dotRef = useRef<HTMLSpanElement>(null);\n\n useAgentRegistration(\n operatorHeroAgent,\n { getName: () => name, getHasColor: () => hasColor },\n id,\n );\n useIsomorphicLayoutEffect(() => {\n const el = dotRef.current;\n if (!el) return;\n if (hasColor) {\n el.style.setProperty('--operator-hero-color', colorIdToToken(colorId));\n } else {\n el.style.removeProperty('--operator-hero-color');\n }\n }, [hasColor, colorId]);\n\n const ratingLabel = rating\n ? t('operatorHero.ratingLabel', {\n value: rating.value.toFixed(1),\n count: rating.count,\n })\n : undefined;\n\n // Padding scales with density. Comfortable matches the practice\n // hero's `pt-xl pb-md` minus the cover strip; compact halves it.\n const bodyPaddingClass =\n density === 'comfortable'\n ? 'ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-md)]'\n : 'ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]';\n\n // Avatar size keys off density. Comfortable = 2xl (~72px) to read\n // as the page hero. Compact = xl (~56px) for embedded use.\n const avatarSize = density === 'comfortable' ? '2xl' : 'xl';\n\n // Heading scale tracks density too. Comfortable uses the kit's\n // page-title token; compact drops to title-card so the operator\n // name doesn't dominate an embedded surface.\n const headingClass =\n density === 'comfortable' ? 'type-title-page' : 'type-title-card';\n\n const inner = (\n <div\n className={[\n 'ds:flex ds:items-start ds:gap-[var(--spacing-lg)]',\n bodyPaddingClass,\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n ].join(' ')}\n >\n <Avatar\n size={avatarSize}\n name={name}\n src={imageUrl}\n className=\"ds:shrink-0\"\n />\n <div className=\"ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-md)] ds:flex-wrap\">\n <h1\n id={headingId}\n className={`${headingClass} ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:text-[color:var(--foreground)]`}\n >\n {hasColor ? (\n <span\n ref={dotRef}\n role=\"img\"\n aria-label={t('operatorHero.colorLabel', 'Calendar colour')}\n className=\"ds:inline-block ds:size-[var(--spacing-sm)] ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-[var(--operator-hero-color)]\"\n />\n ) : null}\n {name}\n </h1>\n {actionSlot ? (\n <div className=\"ds:ms-auto ds:flex ds:shrink-0 ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actionSlot}\n </div>\n ) : null}\n </div>\n {tagline ? (\n <p className=\"type-body ds:m-0 ds:text-[color:var(--foreground)]\">\n {tagline}\n </p>\n ) : null}\n {rating ? (\n <div\n className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\"\n aria-label={ratingLabel}\n >\n <Rating\n value={rating.value}\n max={5}\n size={density === 'comfortable' ? 'md' : 'sm'}\n />\n <span className=\"type-body-sm ds:text-[color:var(--muted-foreground)]\">\n {rating.value.toFixed(1)} · {rating.count}\n </span>\n </div>\n ) : null}\n {badges && badges.length > 0 ? (\n <div\n role=\"list\"\n className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-2xs)] ds:mt-[var(--spacing-2xs)]\"\n >\n {badges.map((badge) => (\n <Badge\n key={badge.key}\n variant={badge.variant ?? 'neutral'}\n role=\"listitem\"\n >\n {badge.label}\n </Badge>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"operator-hero\"\n data-component-id={id}\n data-density={density}\n id={id}\n className={rootVariants({ surface, density, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">{inner}</Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nOperatorHero.displayName = 'OperatorHero';\n\nexport type OperatorHeroDensity = NonNullable<\n VariantProps<typeof rootVariants>['density']\n>;\n"],"names":["operatorHeroAgent","handle","rootVariants","cva","OperatorHero","forwardRef","name","colorId","tagline","imageUrl","rating","badges","actionSlot","density","surface","ariaLabel","id","className","rest","ref","t","useTranslation","headingId","useId","resolvedAriaLabel","hasColor","dotRef","useRef","useAgentRegistration","useIsomorphicLayoutEffect","el","colorIdToToken","ratingLabel","bodyPaddingClass","avatarSize","headingClass","inner","jsxs","jsx","Avatar","Rating","badge","Badge","Card"],"mappings":";;;;;;;;;;;AAGO,MAAMA,IAAsD;AAAA,EACjE,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKJ,cAAc,CAAA;AAAA,EACd,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACC,MAAWA,EAAO,QAAA;AAAA,IAAQ;AAAA,IAEnC,UAAU;AAAA,MACR,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,MAAM,CAACA,MAAWA,EAAO,YAAA;AAAA,IAAY;AAAA,EACvC;AAAA,EAEF,SAAS,CAAA;AAAA,EACT,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GCAMC,IAAeC,EAAI,+CAA+C;AAAA,EACtE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAKR,SAAS;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,IAAA;AAAA;AAAA;AAAA,IAIX,SAAS;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EACZ;AAAA,EAEF,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAEb,CAAC,GAyFYC,IAAeC;AAAA,EAC1B,CACE;AAAA,IACE,MAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,cAAcC;AAAA,IACd,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAYC,EAAA,GACZC,IAAoBT,KAAaK,EAAE,0BAA0B,GAK7DK,IAAoClB,KAAY,MAChDmB,IAASC,EAAwB,IAAI;AAE3C,IAAAC;AAAA,MACE5B;AAAA,MACA,EAAE,SAAS,MAAMM,GAAM,aAAa,MAAMmB,EAAA;AAAA,MAC1CT;AAAA,IAAA,GAEFa,EAA0B,MAAM;AAC9B,YAAMC,IAAKJ,EAAO;AAClB,MAAKI,MACDL,IACFK,EAAG,MAAM,YAAY,yBAAyBC,EAAexB,CAAO,CAAC,IAErEuB,EAAG,MAAM,eAAe,uBAAuB;AAAA,IAEnD,GAAG,CAACL,GAAUlB,CAAO,CAAC;AAEtB,UAAMyB,IAActB,IAChBU,EAAE,4BAA4B;AAAA,MAC5B,OAAOV,EAAO,MAAM,QAAQ,CAAC;AAAA,MAC7B,OAAOA,EAAO;AAAA,IAAA,CACf,IACD,QAIEuB,IACJpB,MAAY,gBACR,wDACA,uDAIAqB,IAAarB,MAAY,gBAAgB,QAAQ,MAKjDsB,IACJtB,MAAY,gBAAgB,oBAAoB,mBAE5CuB,IACJ,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACAJ;AAAA,UACA;AAAA,QAAA,EACA,KAAK,GAAG;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAK;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,MAAML;AAAA,cACN,MAAA5B;AAAA,cACA,KAAKG;AAAA,cACL,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAA4B,EAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,kEACb,UAAA;AAAA,cAAA,gBAAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAIf;AAAA,kBACJ,WAAW,GAAGa,CAAY;AAAA,kBAEzB,UAAA;AAAA,oBAAAV,IACC,gBAAAa;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,KAAKZ;AAAA,wBACL,MAAK;AAAA,wBACL,cAAYN,EAAE,2BAA2B,iBAAiB;AAAA,wBAC1D,WAAU;AAAA,sBAAA;AAAA,oBAAA,IAEV;AAAA,oBACHd;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEFM,IACC,gBAAA0B,EAAC,OAAA,EAAI,WAAU,6EACZ,aACH,IACE;AAAA,YAAA,GACN;AAAA,YACC9B,IACC,gBAAA8B,EAAC,KAAA,EAAE,WAAU,sDACV,aACH,IACE;AAAA,YACH5B,IACC,gBAAA2B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,cAAYL;AAAA,gBAEZ,UAAA;AAAA,kBAAA,gBAAAM;AAAA,oBAACE;AAAA,oBAAA;AAAA,sBACC,OAAO9B,EAAO;AAAA,sBACd,KAAK;AAAA,sBACL,MAAMG,MAAY,gBAAgB,OAAO;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAE3C,gBAAAwB,EAAC,QAAA,EAAK,WAAU,wDACb,UAAA;AAAA,oBAAA3B,EAAO,MAAM,QAAQ,CAAC;AAAA,oBAAE;AAAA,oBAAIA,EAAO;AAAA,kBAAA,EAAA,CACtC;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,IAEA;AAAA,YACHC,KAAUA,EAAO,SAAS,IACzB,gBAAA2B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBAET,UAAA3B,EAAO,IAAI,CAAC8B,MACX,gBAAAH;AAAA,kBAACI;AAAA,kBAAA;AAAA,oBAEC,SAASD,EAAM,WAAW;AAAA,oBAC1B,MAAK;AAAA,oBAEJ,UAAAA,EAAM;AAAA,kBAAA;AAAA,kBAJFA,EAAM;AAAA,gBAAA,CAMd;AAAA,cAAA;AAAA,YAAA,IAED;AAAA,UAAA,EAAA,CACN;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIJ,WACE,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAnB;AAAA,QACA,MAAK;AAAA,QACL,cAAYK;AAAA,QACZ,mBAAiBF;AAAA,QACjB,kBAAe;AAAA,QACf,qBAAmBN;AAAA,QACnB,gBAAcH;AAAA,QACd,IAAAG;AAAA,QACA,WAAWd,EAAa,EAAE,SAAAY,GAAS,SAAAD,GAAS,WAAAI,GAAW;AAAA,QACtD,GAAGC;AAAA,QAEH,gBAAY,aACX,gBAAAoB,EAACK,KAAK,SAAQ,YAAY,aAAM,IAEhCP;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEAhC,EAAa,cAAc;"}
@@ -2,7 +2,7 @@ var re = Object.defineProperty;
2
2
  var te = (s, n, e) => n in s ? re(s, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[n] = e;
3
3
  var i = (s, n, e) => te(s, typeof n != "symbol" ? n + "" : n, e);
4
4
  import { o as K, t as k, c as p, m as se, a as ne, p as ae, q as ie, s as H, r as $, u as oe, v as ce, w as V, x as ue, y as z, z as le, A as Z, B as de } from "./format-4HNwNGrN.js";
5
- import { a as j } from "./date-picker-variants-pKAJfnWr.js";
5
+ import { a as j } from "./date-picker-variants-DfuooXEK.js";
6
6
  function we() {
7
7
  return Object.assign({}, K());
8
8
  }
@@ -1598,4 +1598,4 @@ function cr(s) {
1598
1598
  export {
1599
1599
  wr as p
1600
1600
  };
1601
- //# sourceMappingURL=parse-JqixfsU0.js.map
1601
+ //# sourceMappingURL=parse-MN9bGkrY.js.map