@alfadocs/ui-kit 0.0.20 → 0.1.1
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.
- package/dist/_chunks/accordion-BJD1aM67.js +117 -0
- package/dist/_chunks/accordion-BJD1aM67.js.map +1 -0
- package/dist/_chunks/agenda-card-Bld47Eul.js +130 -0
- package/dist/_chunks/agenda-card-Bld47Eul.js.map +1 -0
- package/dist/_chunks/agenda-tray-D86cNIJ0.js +119 -0
- package/dist/_chunks/agenda-tray-D86cNIJ0.js.map +1 -0
- package/dist/_chunks/ai-prompt-input-CdYwt2VP.js +379 -0
- package/dist/_chunks/ai-prompt-input-CdYwt2VP.js.map +1 -0
- package/dist/_chunks/{alert-C5ud6CfE.js → alert-ETrF7Q8J.js} +51 -51
- package/dist/_chunks/alert-ETrF7Q8J.js.map +1 -0
- package/dist/_chunks/apexcharts-theme-BkSShpEy.js +48 -0
- package/dist/_chunks/apexcharts-theme-BkSShpEy.js.map +1 -0
- package/dist/_chunks/{app-frame-CmIUp9BD.js → app-frame-uq2Gy0vs.js} +37 -37
- package/dist/_chunks/app-frame-uq2Gy0vs.js.map +1 -0
- package/dist/_chunks/aspect-ratio-BqU4itGW.js +56 -0
- package/dist/_chunks/aspect-ratio-BqU4itGW.js.map +1 -0
- package/dist/_chunks/{audio-recorder-GkGNtW2X.js → audio-recorder-D2UEBF9B.js} +98 -98
- package/dist/_chunks/audio-recorder-D2UEBF9B.js.map +1 -0
- package/dist/_chunks/{audio-visualiser-CIO3yy23.js → audio-visualiser-B4u4goV5.js} +46 -46
- package/dist/_chunks/audio-visualiser-B4u4goV5.js.map +1 -0
- package/dist/_chunks/{autocomplete.agent-kb0nmr6F.js → autocomplete.agent-Bi6CiRKa.js} +111 -111
- package/dist/_chunks/autocomplete.agent-Bi6CiRKa.js.map +1 -0
- package/dist/_chunks/{avatar-BsV7vRA6.js → avatar-BAhxbDEu.js} +38 -38
- package/dist/_chunks/avatar-BAhxbDEu.js.map +1 -0
- package/dist/_chunks/badge-zDghajh8.js +104 -0
- package/dist/_chunks/badge-zDghajh8.js.map +1 -0
- package/dist/_chunks/{balance-cell-renderer-BQwN51rT.js → balance-cell-renderer-BGyvZWjB.js} +123 -124
- package/dist/_chunks/balance-cell-renderer-BGyvZWjB.js.map +1 -0
- package/dist/_chunks/{breadcrumb-DnO6eHSS.js → breadcrumb-pdUacgm1.js} +40 -40
- package/dist/_chunks/breadcrumb-pdUacgm1.js.map +1 -0
- package/dist/_chunks/button-DmiGFnNA.js +119 -0
- package/dist/_chunks/button-DmiGFnNA.js.map +1 -0
- package/dist/_chunks/{button-group-CI7LFxt3.js → button-group-BtTHSyU0.js} +24 -24
- package/dist/_chunks/button-group-BtTHSyU0.js.map +1 -0
- package/dist/_chunks/{calendar-BIXVzhkL.js → calendar-BkDeDTaX.js} +333 -290
- package/dist/_chunks/calendar-BkDeDTaX.js.map +1 -0
- package/dist/_chunks/card-DeItIBcV.js +158 -0
- package/dist/_chunks/card-DeItIBcV.js.map +1 -0
- package/dist/_chunks/{chart.agent-DkmVXNsI.js → chart.agent-BdS-_8MO.js} +66 -64
- package/dist/_chunks/chart.agent-BdS-_8MO.js.map +1 -0
- package/dist/_chunks/chat-container-Co8HpB64.js +174 -0
- package/dist/_chunks/chat-container-Co8HpB64.js.map +1 -0
- package/dist/_chunks/{chat-input-aphxDjZL.js → chat-input-3rstZhHR.js} +57 -57
- package/dist/_chunks/chat-input-3rstZhHR.js.map +1 -0
- package/dist/_chunks/{chat-message-CdJSD18D.js → chat-message-dDMVSYBs.js} +66 -66
- package/dist/_chunks/chat-message-dDMVSYBs.js.map +1 -0
- package/dist/_chunks/checkbox-DMzgtnqw.js +116 -0
- package/dist/_chunks/checkbox-DMzgtnqw.js.map +1 -0
- package/dist/_chunks/{checkbox-group-D1aqVI0-.js → checkbox-group-DBnIBRT_.js} +34 -34
- package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +1 -0
- package/dist/_chunks/{collapsible-jBFm7Ah8.js → collapsible-DPGQnHZh.js} +16 -16
- package/dist/_chunks/collapsible-DPGQnHZh.js.map +1 -0
- package/dist/_chunks/{color-picker-CiotzQJF.js → color-picker-OKKF3Dww.js} +158 -158
- package/dist/_chunks/color-picker-OKKF3Dww.js.map +1 -0
- package/dist/_chunks/{combobox.agent-B6RwDSct.js → combobox.agent-CfeB-IZ1.js} +107 -107
- package/dist/_chunks/combobox.agent-CfeB-IZ1.js.map +1 -0
- package/dist/_chunks/{command-palette.agent-B87_OkmC.js → command-palette.agent-XLfSGHCL.js} +27 -27
- package/dist/_chunks/command-palette.agent-XLfSGHCL.js.map +1 -0
- package/dist/_chunks/{date-picker-CdPuI3dK.js → date-picker-DXx8oSJb.js} +5 -5
- package/dist/_chunks/{date-picker-CdPuI3dK.js.map → date-picker-DXx8oSJb.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-DfK4cjln.js → date-range-picker-C3CbY__H.js} +29 -29
- package/dist/_chunks/{date-range-picker-DfK4cjln.js.map → date-range-picker-C3CbY__H.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-CX_FMsLG.js → date-time-picker-Bn3FPeAc.js} +58 -58
- package/dist/_chunks/date-time-picker-Bn3FPeAc.js.map +1 -0
- package/dist/_chunks/description-list-B1CL3RTG.js +187 -0
- package/dist/_chunks/description-list-B1CL3RTG.js.map +1 -0
- package/dist/_chunks/{dialog.agent-B276rAQF.js → dialog.agent-D9WeIWi2.js} +39 -39
- package/dist/_chunks/dialog.agent-D9WeIWi2.js.map +1 -0
- package/dist/_chunks/dropdown-menu-BnVUeVG3.js +210 -0
- package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +1 -0
- package/dist/_chunks/{empty-state-DiG7vYBM.js → empty-state-DV96gCnp.js} +37 -37
- package/dist/_chunks/empty-state-DV96gCnp.js.map +1 -0
- package/dist/_chunks/{file-upload.agent-BMow5yDY.js → file-upload.agent-DYFnqdxw.js} +185 -185
- package/dist/_chunks/file-upload.agent-DYFnqdxw.js.map +1 -0
- package/dist/_chunks/{flag-ChP784EM.js → flag-C3BUEwHH.js} +14 -14
- package/dist/_chunks/{flag-ChP784EM.js.map → flag-C3BUEwHH.js.map} +1 -1
- package/dist/_chunks/floating-action-button-RigP2E7o.js +95 -0
- package/dist/_chunks/floating-action-button-RigP2E7o.js.map +1 -0
- package/dist/_chunks/form-field-DI5LY5aG.js +121 -0
- package/dist/_chunks/form-field-DI5LY5aG.js.map +1 -0
- package/dist/_chunks/freemium-paywall-D0GiUFOe.js +197 -0
- package/dist/_chunks/freemium-paywall-D0GiUFOe.js.map +1 -0
- package/dist/_chunks/{header-BpKaSL_v.js → header-CW2oRd5H.js} +111 -111
- package/dist/_chunks/header-CW2oRd5H.js.map +1 -0
- package/dist/_chunks/icon-button-C482ii4y.js +45 -0
- package/dist/_chunks/icon-button-C482ii4y.js.map +1 -0
- package/dist/_chunks/{icon-button-group-tERESY-n.js → icon-button-group-BnhkUWUg.js} +56 -56
- package/dist/_chunks/icon-button-group-BnhkUWUg.js.map +1 -0
- package/dist/_chunks/{kbd-0iPlQjgC.js → kbd-DTcIjYA7.js} +52 -52
- package/dist/_chunks/kbd-DTcIjYA7.js.map +1 -0
- package/dist/_chunks/{key-value-pair--Je59tAF.js → key-value-pair-DDhSYdDL.js} +26 -26
- package/dist/_chunks/key-value-pair-DDhSYdDL.js.map +1 -0
- package/dist/_chunks/leo-sidebar-gXXcGPKk.js +755 -0
- package/dist/_chunks/leo-sidebar-gXXcGPKk.js.map +1 -0
- package/dist/_chunks/{list-n8vI8Yvn.js → list-Cwe8mcmh.js} +96 -96
- package/dist/_chunks/list-Cwe8mcmh.js.map +1 -0
- package/dist/_chunks/live-region-COggO6x6.js +57 -0
- package/dist/_chunks/live-region-COggO6x6.js.map +1 -0
- package/dist/_chunks/{logo-UNWYb9p7.js → logo-3wrZGpwg.js} +29 -29
- package/dist/_chunks/logo-3wrZGpwg.js.map +1 -0
- package/dist/_chunks/{matrix-rain-Q7xTEpKu.js → matrix-rain-gsHqSvW7.js} +75 -75
- package/dist/_chunks/matrix-rain-gsHqSvW7.js.map +1 -0
- package/dist/_chunks/message-card-DID3cXUW.js +275 -0
- package/dist/_chunks/message-card-DID3cXUW.js.map +1 -0
- package/dist/_chunks/message-tray-CVMLBnVp.js +302 -0
- package/dist/_chunks/message-tray-CVMLBnVp.js.map +1 -0
- package/dist/_chunks/{multi-select.agent-Cf4pU636.js → multi-select.agent-BUKYZJfp.js} +126 -126
- package/dist/_chunks/multi-select.agent-BUKYZJfp.js.map +1 -0
- package/dist/_chunks/{navigation-menu-DBDsAmXc.js → navigation-menu-NjwxyshT.js} +68 -97
- package/dist/_chunks/navigation-menu-NjwxyshT.js.map +1 -0
- package/dist/_chunks/notification-card-BZ33fq8H.js +255 -0
- package/dist/_chunks/notification-card-BZ33fq8H.js.map +1 -0
- package/dist/_chunks/{notification-tray-CNWPuPZp.js → notification-tray-CnEd7B2q.js} +96 -96
- package/dist/_chunks/notification-tray-CnEd7B2q.js.map +1 -0
- package/dist/_chunks/{number-input-B1Th0DdC.js → number-input-D7rSa_ef.js} +73 -73
- package/dist/_chunks/number-input-D7rSa_ef.js.map +1 -0
- package/dist/_chunks/{otp-input-CmoBuZ4K.js → otp-input-C9R9sC74.js} +42 -42
- package/dist/_chunks/otp-input-C9R9sC74.js.map +1 -0
- package/dist/_chunks/{pagination.agent-B5KLDCMN.js → pagination.agent-D75FB6XP.js} +106 -106
- package/dist/_chunks/pagination.agent-D75FB6XP.js.map +1 -0
- package/dist/_chunks/{password-input-DnjNh-hQ.js → password-input-C6PvKyQV.js} +59 -59
- package/dist/_chunks/password-input-C6PvKyQV.js.map +1 -0
- package/dist/_chunks/{patient-shell-D0RaWDMR.js → patient-shell-CGsmI5LJ.js} +9 -9
- package/dist/_chunks/{patient-shell-D0RaWDMR.js.map → patient-shell-CGsmI5LJ.js.map} +1 -1
- package/dist/_chunks/{payment-form-Cf7U6r5L.js → payment-form-l3j-gA-t.js} +108 -108
- package/dist/_chunks/payment-form-l3j-gA-t.js.map +1 -0
- package/dist/_chunks/{pdf-viewer.agent-DXjgDItg.js → pdf-viewer.agent-DuGfSoep.js} +234 -233
- package/dist/_chunks/pdf-viewer.agent-DuGfSoep.js.map +1 -0
- package/dist/_chunks/{phone-input-C2dtIuxW.js → phone-input-ZWa_FU4R.js} +112 -112
- package/dist/_chunks/phone-input-ZWa_FU4R.js.map +1 -0
- package/dist/_chunks/{popover-D1woU9mP.js → popover-CMr1pTPO.js} +58 -58
- package/dist/_chunks/popover-CMr1pTPO.js.map +1 -0
- package/dist/_chunks/{privacy-lock-C1X42Sit.js → privacy-lock-DdpkKNM2.js} +37 -36
- package/dist/_chunks/privacy-lock-DdpkKNM2.js.map +1 -0
- package/dist/_chunks/{progress-DL3-izuO.js → progress-D4ELgHG3.js} +43 -43
- package/dist/_chunks/progress-D4ELgHG3.js.map +1 -0
- package/dist/_chunks/radio-B_gvGU29.js +106 -0
- package/dist/_chunks/radio-B_gvGU29.js.map +1 -0
- package/dist/_chunks/radio-group-Bn8Wt0yc.js +88 -0
- package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +1 -0
- package/dist/_chunks/{react-day-picker-DQKDiJ37.js → react-day-picker-d0MHsyCj.js} +174 -174
- package/dist/_chunks/{react-day-picker-DQKDiJ37.js.map → react-day-picker-d0MHsyCj.js.map} +1 -1
- package/dist/_chunks/{resizable.agent-DVk_jJur.js → resizable.agent-DBpPGNdy.js} +122 -122
- package/dist/_chunks/resizable.agent-DBpPGNdy.js.map +1 -0
- package/dist/_chunks/{rich-text-editor.agent-BOjF4Xao.js → rich-text-editor.agent-C1_E7_7t.js} +225 -225
- package/dist/_chunks/rich-text-editor.agent-C1_E7_7t.js.map +1 -0
- package/dist/_chunks/scroll-area-Ba99pJ_R.js +144 -0
- package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +1 -0
- package/dist/_chunks/{search-bar-DgSOAajC.js → search-bar-VoTqJhRp.js} +131 -131
- package/dist/_chunks/search-bar-VoTqJhRp.js.map +1 -0
- package/dist/_chunks/search-input-D6rarD0_.js +197 -0
- package/dist/_chunks/search-input-D6rarD0_.js.map +1 -0
- package/dist/_chunks/select-DbxWF3O_.js +320 -0
- package/dist/_chunks/select-DbxWF3O_.js.map +1 -0
- package/dist/_chunks/{separator-DExI4amU.js → separator-BRQHi8s0.js} +17 -17
- package/dist/_chunks/separator-BRQHi8s0.js.map +1 -0
- package/dist/_chunks/sheet-DyWqluiS.js +188 -0
- package/dist/_chunks/sheet-DyWqluiS.js.map +1 -0
- package/dist/_chunks/sidebar-B52iGGNV.js +1076 -0
- package/dist/_chunks/sidebar-B52iGGNV.js.map +1 -0
- package/dist/_chunks/{sign-in-with-alfadocs-button-BBL11-Rt.js → sign-in-with-alfadocs-button-BU7MP5Hg.js} +4 -4
- package/dist/_chunks/{sign-in-with-alfadocs-button-BBL11-Rt.js.map → sign-in-with-alfadocs-button-BU7MP5Hg.js.map} +1 -1
- package/dist/_chunks/{signature-capture.agent-L_1_-zVR.js → signature-capture.agent-4htVctJ2.js} +163 -163
- package/dist/_chunks/signature-capture.agent-4htVctJ2.js.map +1 -0
- package/dist/_chunks/skeleton-ClO1v5GE.js +95 -0
- package/dist/_chunks/skeleton-ClO1v5GE.js.map +1 -0
- package/dist/_chunks/skip-link-CASJkBOe.js +68 -0
- package/dist/_chunks/skip-link-CASJkBOe.js.map +1 -0
- package/dist/_chunks/slider-n8JWpJvT.js +273 -0
- package/dist/_chunks/slider-n8JWpJvT.js.map +1 -0
- package/dist/_chunks/slot-grid-BRAkqChA.js +491 -0
- package/dist/_chunks/slot-grid-BRAkqChA.js.map +1 -0
- package/dist/_chunks/{sparkline.agent-BDTXzTy9.js → sparkline.agent-BLY1IMyW.js} +45 -45
- package/dist/_chunks/sparkline.agent-BLY1IMyW.js.map +1 -0
- package/dist/_chunks/{spinner-77xUGpuX.js → spinner-CoAOGcDa.js} +40 -40
- package/dist/_chunks/spinner-CoAOGcDa.js.map +1 -0
- package/dist/_chunks/stat-D76MNHzK.js +208 -0
- package/dist/_chunks/stat-D76MNHzK.js.map +1 -0
- package/dist/_chunks/{stepper-accordion-BkvqQWPI.js → stepper-accordion-DHQ80A4v.js} +33 -33
- package/dist/_chunks/stepper-accordion-DHQ80A4v.js.map +1 -0
- package/dist/_chunks/{stepper-calendar-BQMjrwzo.js → stepper-calendar-vtWwa2bY.js} +159 -159
- package/dist/_chunks/stepper-calendar-vtWwa2bY.js.map +1 -0
- package/dist/_chunks/stepper-progress-DMZ5w5VR.js +128 -0
- package/dist/_chunks/stepper-progress-DMZ5w5VR.js.map +1 -0
- package/dist/_chunks/streaming-text-D0cW8pwq.js +104 -0
- package/dist/_chunks/streaming-text-D0cW8pwq.js.map +1 -0
- package/dist/_chunks/suggestion-chip-BgNFpPEE.js +157 -0
- package/dist/_chunks/suggestion-chip-BgNFpPEE.js.map +1 -0
- package/dist/_chunks/switch-DtLPKO0p.js +137 -0
- package/dist/_chunks/switch-DtLPKO0p.js.map +1 -0
- package/dist/_chunks/{tabs.agent-FsGU3sZL.js → tabs.agent-BDUlyPbJ.js} +101 -101
- package/dist/_chunks/tabs.agent-BDUlyPbJ.js.map +1 -0
- package/dist/_chunks/tag-CfSZZN2f.js +194 -0
- package/dist/_chunks/tag-CfSZZN2f.js.map +1 -0
- package/dist/_chunks/task-card-B5xfiFg5.js +112 -0
- package/dist/_chunks/task-card-B5xfiFg5.js.map +1 -0
- package/dist/_chunks/task-tray-BnpiodZ4.js +99 -0
- package/dist/_chunks/task-tray-BnpiodZ4.js.map +1 -0
- package/dist/_chunks/text-area-BqbruBWx.js +152 -0
- package/dist/_chunks/text-area-BqbruBWx.js.map +1 -0
- package/dist/_chunks/text-input-lh6kRXZS.js +187 -0
- package/dist/_chunks/text-input-lh6kRXZS.js.map +1 -0
- package/dist/_chunks/theme-toggle-BHKMiORD.js +326 -0
- package/dist/_chunks/theme-toggle-BHKMiORD.js.map +1 -0
- package/dist/_chunks/{time-picker-BapZq0OY.js → time-picker-DbpAmPux.js} +102 -102
- package/dist/_chunks/time-picker-DbpAmPux.js.map +1 -0
- package/dist/_chunks/timeline-vjsUeuq1.js +219 -0
- package/dist/_chunks/timeline-vjsUeuq1.js.map +1 -0
- package/dist/_chunks/{timestamp-BLM-jjdw.js → timestamp-DmSt92P1.js} +30 -30
- package/dist/_chunks/timestamp-DmSt92P1.js.map +1 -0
- package/dist/_chunks/{toast-DSCqnDRl.js → toast-DllSITLf.js} +151 -151
- package/dist/_chunks/{toast-DSCqnDRl.js.map → toast-DllSITLf.js.map} +1 -1
- package/dist/_chunks/{tooltip-DF6WjD1r.js → tooltip-Dp3u8jGz.js} +30 -30
- package/dist/_chunks/tooltip-Dp3u8jGz.js.map +1 -0
- package/dist/_chunks/{tooth-scheme.agent-CFKl3iQr.js → tooth-scheme.agent-BRqxWa1D.js} +75 -75
- package/dist/_chunks/tooth-scheme.agent-BRqxWa1D.js.map +1 -0
- package/dist/_chunks/transcript-panel-Bg1BTMSr.js +265 -0
- package/dist/_chunks/transcript-panel-Bg1BTMSr.js.map +1 -0
- package/dist/_chunks/typing-indicator-BRg22Rqr.js +81 -0
- package/dist/_chunks/typing-indicator-BRg22Rqr.js.map +1 -0
- package/dist/_chunks/use-locale-BuXR_Zl9.js +32 -0
- package/dist/_chunks/use-locale-BuXR_Zl9.js.map +1 -0
- package/dist/_chunks/visually-hidden-Y3jcdCv-.js +21 -0
- package/dist/_chunks/visually-hidden-Y3jcdCv-.js.map +1 -0
- package/dist/_chunks/{warning-stack-Cyf_81SL.js → warning-stack-B9N9yWet.js} +38 -38
- package/dist/_chunks/warning-stack-B9N9yWet.js.map +1 -0
- package/dist/_chunks/{workflow-map-Uf-hHAO3.js → workflow-map-gBhL_Wrs.js} +385 -385
- package/dist/_chunks/workflow-map-gBhL_Wrs.js.map +1 -0
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/index.d.ts +2 -0
- package/dist/components/_shared/index.d.ts.map +1 -1
- package/dist/components/_shared/use-focus-trap.d.ts +32 -0
- package/dist/components/_shared/use-focus-trap.d.ts.map +1 -0
- package/dist/components/_shared/use-neutralize-hidden-focus.d.ts +3 -0
- package/dist/components/_shared/use-neutralize-hidden-focus.d.ts.map +1 -0
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/app-frame/index.js +1 -1
- package/dist/components/aspect-ratio/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/audio-visualiser/index.js +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/calendar/calendar.d.ts.map +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/data-table/toolbar.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/flag/index.js +1 -1
- package/dist/components/floating-action-button/index.js +1 -1
- package/dist/components/form-field/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/icon-button/index.d.ts +3 -0
- package/dist/components/icon-button/index.d.ts.map +1 -0
- package/dist/components/icon-button/index.js +5 -0
- package/dist/components/icon-button/index.js.map +1 -0
- package/dist/components/icon-button-group/index.js +1 -1
- package/dist/components/index.d.ts +8 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/kbd/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/list/index.js +1 -1
- package/dist/components/live-region/index.d.ts +3 -0
- package/dist/components/live-region/index.d.ts.map +1 -0
- package/dist/components/live-region/index.js +5 -0
- package/dist/components/live-region/index.js.map +1 -0
- package/dist/components/live-region/live-region.d.ts +49 -0
- package/dist/components/live-region/live-region.d.ts.map +1 -0
- package/dist/components/logo/index.js +1 -1
- package/dist/components/matrix-rain/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/navigation-menu/index.d.ts +4 -2
- package/dist/components/navigation-menu/index.d.ts.map +1 -1
- package/dist/components/navigation-menu/index.js +3 -2
- package/dist/components/navigation-menu/index.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.d.ts +2 -6
- package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/components/phone-input/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +5 -0
- package/dist/components/radio/index.js.map +1 -0
- package/dist/components/radio-group/index.js +4 -3
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/scroll-area/index.js +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/separator/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/skeleton/index.js +1 -1
- package/dist/components/skip-link/index.d.ts +2 -0
- package/dist/components/skip-link/index.d.ts.map +1 -0
- package/dist/components/skip-link/index.js +5 -0
- package/dist/components/skip-link/index.js.map +1 -0
- package/dist/components/skip-link/skip-link.d.ts +34 -0
- package/dist/components/skip-link/skip-link.d.ts.map +1 -0
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/sparkline/sparkline.d.ts.map +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/stat/index.js +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/stepper-calendar/index.js +1 -1
- package/dist/components/stepper-progress/index.js +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/suggestion-chip/index.js +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/theme-toggle/index.d.ts +3 -0
- package/dist/components/theme-toggle/index.d.ts.map +1 -0
- package/dist/components/theme-toggle/index.js +5 -0
- package/dist/components/theme-toggle/index.js.map +1 -0
- package/dist/components/theme-toggle/theme-toggle.d.ts +34 -0
- package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -0
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timestamp/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/typing-indicator/index.js +1 -1
- package/dist/components/visually-hidden/index.d.ts +2 -0
- package/dist/components/visually-hidden/index.d.ts.map +1 -0
- package/dist/components/visually-hidden/index.js +5 -0
- package/dist/components/visually-hidden/index.js.map +1 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts +11 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +10 -7
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-locale.d.ts +27 -0
- package/dist/hooks/use-locale.d.ts.map +1 -0
- package/dist/hooks/use-media-query.d.ts +17 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/i18n/config.js +59 -2
- package/dist/i18n/config.js.map +1 -1
- package/dist/i18n/resources.d.ts +57 -0
- package/dist/i18n/resources.d.ts.map +1 -1
- package/dist/index.js +442 -431
- package/dist/index.js.map +1 -1
- package/dist/locales/de.json +19 -0
- package/dist/locales/en.json +19 -0
- package/dist/locales/it.json +19 -0
- package/dist/patterns/leo-assistant/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +2 -2
- package/package.json +4 -2
- package/dist/_chunks/accordion-Dgcd38U_.js +0 -117
- package/dist/_chunks/accordion-Dgcd38U_.js.map +0 -1
- package/dist/_chunks/agenda-card-B2gq-gTq.js +0 -130
- package/dist/_chunks/agenda-card-B2gq-gTq.js.map +0 -1
- package/dist/_chunks/agenda-tray-twa8g_87.js +0 -119
- package/dist/_chunks/agenda-tray-twa8g_87.js.map +0 -1
- package/dist/_chunks/ai-prompt-input-C6IY_Eds.js +0 -379
- package/dist/_chunks/ai-prompt-input-C6IY_Eds.js.map +0 -1
- package/dist/_chunks/alert-C5ud6CfE.js.map +0 -1
- package/dist/_chunks/apexcharts-theme-cpBYmCcr.js +0 -17
- package/dist/_chunks/apexcharts-theme-cpBYmCcr.js.map +0 -1
- package/dist/_chunks/app-frame-CmIUp9BD.js.map +0 -1
- package/dist/_chunks/aspect-ratio-Bo3cZXmR.js +0 -56
- package/dist/_chunks/aspect-ratio-Bo3cZXmR.js.map +0 -1
- package/dist/_chunks/audio-recorder-GkGNtW2X.js.map +0 -1
- package/dist/_chunks/audio-visualiser-CIO3yy23.js.map +0 -1
- package/dist/_chunks/autocomplete.agent-kb0nmr6F.js.map +0 -1
- package/dist/_chunks/avatar-BsV7vRA6.js.map +0 -1
- package/dist/_chunks/badge--CmSr7ok.js +0 -104
- package/dist/_chunks/badge--CmSr7ok.js.map +0 -1
- package/dist/_chunks/balance-cell-renderer-BQwN51rT.js.map +0 -1
- package/dist/_chunks/breadcrumb-DnO6eHSS.js.map +0 -1
- package/dist/_chunks/button-CXL8bA8G.js +0 -119
- package/dist/_chunks/button-CXL8bA8G.js.map +0 -1
- package/dist/_chunks/button-group-CI7LFxt3.js.map +0 -1
- package/dist/_chunks/calendar-BIXVzhkL.js.map +0 -1
- package/dist/_chunks/card-n97MNPP2.js +0 -158
- package/dist/_chunks/card-n97MNPP2.js.map +0 -1
- package/dist/_chunks/chart.agent-DkmVXNsI.js.map +0 -1
- package/dist/_chunks/chat-container-SR3UWxbL.js +0 -174
- package/dist/_chunks/chat-container-SR3UWxbL.js.map +0 -1
- package/dist/_chunks/chat-input-aphxDjZL.js.map +0 -1
- package/dist/_chunks/chat-message-CdJSD18D.js.map +0 -1
- package/dist/_chunks/checkbox-CfiZ0FZc.js +0 -116
- package/dist/_chunks/checkbox-CfiZ0FZc.js.map +0 -1
- package/dist/_chunks/checkbox-group-D1aqVI0-.js.map +0 -1
- package/dist/_chunks/collapsible-jBFm7Ah8.js.map +0 -1
- package/dist/_chunks/color-picker-CiotzQJF.js.map +0 -1
- package/dist/_chunks/combobox.agent-B6RwDSct.js.map +0 -1
- package/dist/_chunks/command-palette.agent-B87_OkmC.js.map +0 -1
- package/dist/_chunks/date-time-picker-CX_FMsLG.js.map +0 -1
- package/dist/_chunks/description-list-C5UPZgX6.js +0 -187
- package/dist/_chunks/description-list-C5UPZgX6.js.map +0 -1
- package/dist/_chunks/dialog.agent-B276rAQF.js.map +0 -1
- package/dist/_chunks/dropdown-menu-CJKvK7VG.js +0 -210
- package/dist/_chunks/dropdown-menu-CJKvK7VG.js.map +0 -1
- package/dist/_chunks/empty-state-DiG7vYBM.js.map +0 -1
- package/dist/_chunks/file-upload.agent-BMow5yDY.js.map +0 -1
- package/dist/_chunks/floating-action-button-BM9ib-Wf.js +0 -95
- package/dist/_chunks/floating-action-button-BM9ib-Wf.js.map +0 -1
- package/dist/_chunks/form-field-B4bwrccN.js +0 -121
- package/dist/_chunks/form-field-B4bwrccN.js.map +0 -1
- package/dist/_chunks/freemium-paywall-DVyNsQHS.js +0 -197
- package/dist/_chunks/freemium-paywall-DVyNsQHS.js.map +0 -1
- package/dist/_chunks/header-BpKaSL_v.js.map +0 -1
- package/dist/_chunks/icon-button-C1vpylg3.js +0 -45
- package/dist/_chunks/icon-button-C1vpylg3.js.map +0 -1
- package/dist/_chunks/icon-button-group-tERESY-n.js.map +0 -1
- package/dist/_chunks/kbd-0iPlQjgC.js.map +0 -1
- package/dist/_chunks/key-value-pair--Je59tAF.js.map +0 -1
- package/dist/_chunks/leo-sidebar-9A9AWBxX.js +0 -755
- package/dist/_chunks/leo-sidebar-9A9AWBxX.js.map +0 -1
- package/dist/_chunks/list-n8vI8Yvn.js.map +0 -1
- package/dist/_chunks/logo-UNWYb9p7.js.map +0 -1
- package/dist/_chunks/matrix-rain-Q7xTEpKu.js.map +0 -1
- package/dist/_chunks/message-card-g5VS5Q80.js +0 -275
- package/dist/_chunks/message-card-g5VS5Q80.js.map +0 -1
- package/dist/_chunks/message-tray-CAk-iibU.js +0 -302
- package/dist/_chunks/message-tray-CAk-iibU.js.map +0 -1
- package/dist/_chunks/multi-select.agent-Cf4pU636.js.map +0 -1
- package/dist/_chunks/navigation-menu-DBDsAmXc.js.map +0 -1
- package/dist/_chunks/notification-card-CQxJporb.js +0 -255
- package/dist/_chunks/notification-card-CQxJporb.js.map +0 -1
- package/dist/_chunks/notification-tray-CNWPuPZp.js.map +0 -1
- package/dist/_chunks/number-input-B1Th0DdC.js.map +0 -1
- package/dist/_chunks/otp-input-CmoBuZ4K.js.map +0 -1
- package/dist/_chunks/pagination.agent-B5KLDCMN.js.map +0 -1
- package/dist/_chunks/password-input-DnjNh-hQ.js.map +0 -1
- package/dist/_chunks/payment-form-Cf7U6r5L.js.map +0 -1
- package/dist/_chunks/pdf-viewer.agent-DXjgDItg.js.map +0 -1
- package/dist/_chunks/phone-input-C2dtIuxW.js.map +0 -1
- package/dist/_chunks/popover-D1woU9mP.js.map +0 -1
- package/dist/_chunks/privacy-lock-C1X42Sit.js.map +0 -1
- package/dist/_chunks/progress-DL3-izuO.js.map +0 -1
- package/dist/_chunks/radio-group-CXN9qNPe.js +0 -185
- package/dist/_chunks/radio-group-CXN9qNPe.js.map +0 -1
- package/dist/_chunks/resizable.agent-DVk_jJur.js.map +0 -1
- package/dist/_chunks/rich-text-editor.agent-BOjF4Xao.js.map +0 -1
- package/dist/_chunks/scroll-area-DXn-YWHY.js +0 -144
- package/dist/_chunks/scroll-area-DXn-YWHY.js.map +0 -1
- package/dist/_chunks/search-bar-DgSOAajC.js.map +0 -1
- package/dist/_chunks/search-input-D4tC_Prn.js +0 -197
- package/dist/_chunks/search-input-D4tC_Prn.js.map +0 -1
- package/dist/_chunks/select-B4m4upMg.js +0 -320
- package/dist/_chunks/select-B4m4upMg.js.map +0 -1
- package/dist/_chunks/separator-DExI4amU.js.map +0 -1
- package/dist/_chunks/sheet-D6XOx0fK.js +0 -188
- package/dist/_chunks/sheet-D6XOx0fK.js.map +0 -1
- package/dist/_chunks/sidebar-r645O-k9.js +0 -1076
- package/dist/_chunks/sidebar-r645O-k9.js.map +0 -1
- package/dist/_chunks/signature-capture.agent-L_1_-zVR.js.map +0 -1
- package/dist/_chunks/skeleton-vbTWUntB.js +0 -95
- package/dist/_chunks/skeleton-vbTWUntB.js.map +0 -1
- package/dist/_chunks/slider-B3DBwmcm.js +0 -273
- package/dist/_chunks/slider-B3DBwmcm.js.map +0 -1
- package/dist/_chunks/slot-grid-DL_Tuj0p.js +0 -491
- package/dist/_chunks/slot-grid-DL_Tuj0p.js.map +0 -1
- package/dist/_chunks/sparkline.agent-BDTXzTy9.js.map +0 -1
- package/dist/_chunks/spinner-77xUGpuX.js.map +0 -1
- package/dist/_chunks/stat-CrumvZWf.js +0 -208
- package/dist/_chunks/stat-CrumvZWf.js.map +0 -1
- package/dist/_chunks/stepper-accordion-BkvqQWPI.js.map +0 -1
- package/dist/_chunks/stepper-calendar-BQMjrwzo.js.map +0 -1
- package/dist/_chunks/stepper-progress-Bwfl-0rV.js +0 -128
- package/dist/_chunks/stepper-progress-Bwfl-0rV.js.map +0 -1
- package/dist/_chunks/streaming-text-Cu9YQe_1.js +0 -104
- package/dist/_chunks/streaming-text-Cu9YQe_1.js.map +0 -1
- package/dist/_chunks/suggestion-chip-XkxDJiPW.js +0 -157
- package/dist/_chunks/suggestion-chip-XkxDJiPW.js.map +0 -1
- package/dist/_chunks/switch-DyC0ThNT.js +0 -137
- package/dist/_chunks/switch-DyC0ThNT.js.map +0 -1
- package/dist/_chunks/tabs.agent-FsGU3sZL.js.map +0 -1
- package/dist/_chunks/tag-BucAvfTX.js +0 -194
- package/dist/_chunks/tag-BucAvfTX.js.map +0 -1
- package/dist/_chunks/task-card-uxjApfcg.js +0 -112
- package/dist/_chunks/task-card-uxjApfcg.js.map +0 -1
- package/dist/_chunks/task-tray-BdfM3p8N.js +0 -99
- package/dist/_chunks/task-tray-BdfM3p8N.js.map +0 -1
- package/dist/_chunks/text-area-CKxZ7cS3.js +0 -152
- package/dist/_chunks/text-area-CKxZ7cS3.js.map +0 -1
- package/dist/_chunks/text-input-D16CcMlL.js +0 -187
- package/dist/_chunks/text-input-D16CcMlL.js.map +0 -1
- package/dist/_chunks/time-picker-BapZq0OY.js.map +0 -1
- package/dist/_chunks/timeline-D3VOf4RT.js +0 -219
- package/dist/_chunks/timeline-D3VOf4RT.js.map +0 -1
- package/dist/_chunks/timestamp-BLM-jjdw.js.map +0 -1
- package/dist/_chunks/tooltip-DF6WjD1r.js.map +0 -1
- package/dist/_chunks/tooth-scheme.agent-CFKl3iQr.js.map +0 -1
- package/dist/_chunks/transcript-panel-aI14fHYA.js +0 -265
- package/dist/_chunks/transcript-panel-aI14fHYA.js.map +0 -1
- package/dist/_chunks/typing-indicator-BTVDEpnd.js +0 -81
- package/dist/_chunks/typing-indicator-BTVDEpnd.js.map +0 -1
- package/dist/_chunks/warning-stack-Cyf_81SL.js.map +0 -1
- package/dist/_chunks/workflow-map-Uf-hHAO3.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rich-text-editor.agent-C1_E7_7t.js","sources":["../../node_modules/lucide-react/dist/esm/icons/bold.js","../../node_modules/lucide-react/dist/esm/icons/code.js","../../node_modules/lucide-react/dist/esm/icons/image.js","../../node_modules/lucide-react/dist/esm/icons/italic.js","../../node_modules/lucide-react/dist/esm/icons/link-2.js","../../node_modules/lucide-react/dist/esm/icons/list-ordered.js","../../node_modules/lucide-react/dist/esm/icons/list.js","../../node_modules/lucide-react/dist/esm/icons/minus.js","../../node_modules/lucide-react/dist/esm/icons/quote.js","../../node_modules/lucide-react/dist/esm/icons/redo.js","../../node_modules/lucide-react/dist/esm/icons/table.js","../../node_modules/lucide-react/dist/esm/icons/undo.js","../../src/components/rich-text-editor/rich-text-editor.tsx","../../src/components/rich-text-editor/rich-text-editor.agent.ts"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m16 18 6-6-6-6\", key: \"eg8j8\" }],\n [\"path\", { d: \"m8 6-6 6 6 6\", key: \"ppft3o\" }]\n];\nconst Code = createLucideIcon(\"code\", __iconNode);\n\nexport { __iconNode, Code as default };\n//# sourceMappingURL=code.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 17H7A5 5 0 0 1 7 7h2\", key: \"8i5ue5\" }],\n [\"path\", { d: \"M15 7h2a5 5 0 1 1 0 10h-2\", key: \"1b9ql8\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"12\", y2: \"12\", key: \"1jonct\" }]\n];\nconst Link2 = createLucideIcon(\"link-2\", __iconNode);\n\nexport { __iconNode, Link2 as default };\n//# sourceMappingURL=link-2.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 5h10\", key: \"1cz7ny\" }],\n [\"path\", { d: \"M11 12h10\", key: \"1438ji\" }],\n [\"path\", { d: \"M11 19h10\", key: \"11t30w\" }],\n [\"path\", { d: \"M4 4h1v5\", key: \"10yrso\" }],\n [\"path\", { d: \"M4 9h2\", key: \"r1h2o0\" }],\n [\"path\", { d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\", key: \"xtkcd5\" }]\n];\nconst ListOrdered = createLucideIcon(\"list-ordered\", __iconNode);\n\nexport { __iconNode, ListOrdered as default };\n//# sourceMappingURL=list-ordered.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 5h.01\", key: \"18ugdj\" }],\n [\"path\", { d: \"M3 12h.01\", key: \"nlz23k\" }],\n [\"path\", { d: \"M3 19h.01\", key: \"noohij\" }],\n [\"path\", { d: \"M8 5h13\", key: \"1pao27\" }],\n [\"path\", { d: \"M8 12h13\", key: \"1za7za\" }],\n [\"path\", { d: \"M8 19h13\", key: \"m83p4d\" }]\n];\nconst List = createLucideIcon(\"list\", __iconNode);\n\nexport { __iconNode, List as default };\n//# sourceMappingURL=list.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }]];\nconst Minus = createLucideIcon(\"minus\", __iconNode);\n\nexport { __iconNode, Minus as default };\n//# sourceMappingURL=minus.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"rib7q0\"\n }\n ],\n [\n \"path\",\n {\n d: \"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"1ymkrd\"\n }\n ]\n];\nconst Quote = createLucideIcon(\"quote\", __iconNode);\n\nexport { __iconNode, Quote as default };\n//# sourceMappingURL=quote.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 7v6h-6\", key: \"3ptur4\" }],\n [\"path\", { d: \"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\", key: \"1kgawr\" }]\n];\nconst Redo = createLucideIcon(\"redo\", __iconNode);\n\nexport { __iconNode, Redo as default };\n//# sourceMappingURL=redo.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 3v18\", key: \"108xh3\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M3 9h18\", key: \"1pudct\" }],\n [\"path\", { d: \"M3 15h18\", key: \"5xshup\" }]\n];\nconst Table = createLucideIcon(\"table\", __iconNode);\n\nexport { __iconNode, Table as default };\n//# sourceMappingURL=table.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 7v6h6\", key: \"1v2h90\" }],\n [\"path\", { d: \"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\", key: \"1r6uu6\" }]\n];\nconst Undo = createLucideIcon(\"undo\", __iconNode);\n\nexport { __iconNode, Undo as default };\n//# sourceMappingURL=undo.js.map\n","/* ------------------------------------------------------------------ */\n/* RichTextEditor — thin, secure wrapper over Tiptap (`@tiptap/react`). */\n/* */\n/* - Extensions: StarterKit + Link + Image + Table family + */\n/* tiptap-markdown. Static imports — no lazy loading in this pass */\n/* (see TODO below). */\n/* - Security: a `transformPastedHTML` hook runs everything pasted */\n/* through DOMPurify with an explicit FORBID list, and the imperative*/\n/* `setContent` handle reuses the same sanitiser. */\n/* - Link: the scheme allow-list is `http | https | mailto | tel`. */\n/* `javascript:` and `data:` hrefs are rejected by the `validate` */\n/* callback. */\n/* - Accessibility: toolbar is a WAI-ARIA toolbar with roving */\n/* tabindex, Home/End/ArrowLeft/ArrowRight semantics, `aria-pressed` */\n/* reflecting `editor.isActive(...)`, and `aria-disabled` in place */\n/* of the `disabled` HTML attribute so screen readers can still */\n/* focus the controls. */\n/* - i18n: every tooltip / aria-label comes from `t('editor.*')`. */\n/* Placeholder default goes through `t('editor.placeholder')`. */\n/* When `document.dir === 'rtl'` the toolbar mirrors via a CVA */\n/* compound variant. */\n/* - Cmd/Ctrl+/ opens a Radix Dialog with the keyboard-shortcut */\n/* cheat sheet (all strings translated). */\n/* */\n/* TODO: dynamic `import()` of heavier extensions (image, table) once */\n/* the bundle-split story is set up. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { useEditor, EditorContent, type Editor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Link from '@tiptap/extension-link';\nimport Image from '@tiptap/extension-image';\nimport { Table } from '@tiptap/extension-table';\nimport TableRow from '@tiptap/extension-table-row';\nimport TableCell from '@tiptap/extension-table-cell';\nimport TableHeader from '@tiptap/extension-table-header';\nimport { Markdown } from 'tiptap-markdown';\nimport DOMPurify, { type Config as DOMPurifyConfig } from 'dompurify';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport {\n Bold,\n Italic,\n Link2,\n List,\n ListOrdered,\n Quote,\n Image as ImageIcon,\n Table as TableIcon,\n Code,\n Minus,\n Undo,\n Redo,\n ChevronDown,\n X,\n} from 'lucide-react';\n\nimport '../../tokens/themes/bridges/tiptap-theme.css';\n\nimport { safeImageSrc } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Sanitisation */\n/* ------------------------------------------------------------------ */\n\n// DOMPurify strips all `on*` attributes by defaults; the explicit FORBID_ATTR\n// list is defence-in-depth, not a replacement for defaults. FORBID_TAGS adds\n// tags that aren't stripped by defaults in every configuration: `<form>` (CSRF\n// via action injection), `<object>`/`<embed>` (plugin surface), `<base>`/\n// `<meta>` (URL rewriting). See user story security-hardening.mdx.\nconst PURIFY_CONFIG: DOMPurifyConfig = {\n FORBID_TAGS: [\n 'script',\n 'style',\n 'iframe',\n 'object',\n 'embed',\n 'form',\n 'base',\n 'meta',\n ],\n FORBID_ATTR: [\n 'onerror',\n 'onclick',\n 'onload',\n 'onmouseover',\n 'onfocus',\n 'onblur',\n ],\n};\n\nfunction sanitiseHtml(input: string): string {\n return DOMPurify.sanitize(input, PURIFY_CONFIG) as unknown as string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type RichTextEditorToolbar = 'minimal' | 'standard' | 'full';\n\nexport interface RichTextEditorProps {\n /** HTML or Markdown initial value. Runs through DOMPurify. */\n defaultValue?: string;\n /** Controlled value (HTML). */\n value?: string;\n /** Emits on every change — debounced by 100ms. */\n onChange?: (payload: { html: string; markdown: string }) => void;\n /** Toolbar preset. */\n toolbar?: RichTextEditorToolbar;\n /** Placeholder text — translates via useTranslation if omitted. */\n placeholder?: string;\n /** Read-only mode. */\n readOnly?: boolean;\n /** Accessible name for the editing region. */\n ariaLabel?: string;\n /** Size variant for the minimum block-size of the editing region. */\n minHeight?: 'sm' | 'md' | 'lg';\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface RichTextEditorHandle {\n getHTML: () => string;\n getMarkdown: () => string;\n /** HTML goes through DOMPurify before reaching Tiptap. */\n setContent: (html: string) => void;\n focus: () => void;\n clear: () => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva(\n 'tiptap-theme-alfadocs ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n);\n\nconst toolbarVariants = cva(\n [\n 'ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:p-[var(--spacing-xs)]',\n ].join(' '),\n {\n variants: {\n direction: {\n ltr: '',\n rtl: 'ds:flex-row-reverse',\n },\n },\n defaultVariants: { direction: 'ltr' },\n },\n);\n\nconst toolbarButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:min-inline-size-[var(--min-target-size)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:bg-transparent ds:text-[var(--foreground)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n ].join(' '),\n {\n variants: {\n pressed: {\n true: 'ds:bg-[var(--muted)] ds:text-[var(--primary)]',\n false: '',\n },\n disabled: {\n true: 'ds:opacity-[var(--opacity-50)] ds:cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: { pressed: false, disabled: false },\n },\n);\n\nconst editorSurfaceVariants = cva(\n [\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Toolbar presets — which commands to expose */\n/* ------------------------------------------------------------------ */\n\ntype ToolbarItemKey =\n | 'bold'\n | 'italic'\n | 'link'\n | 'heading'\n | 'bulletList'\n | 'orderedList'\n | 'quote'\n | 'image'\n | 'table'\n | 'codeBlock'\n | 'horizontalRule'\n | 'undo'\n | 'redo';\n\nconst PRESETS: Record<RichTextEditorToolbar, ToolbarItemKey[]> = {\n minimal: ['bold', 'italic', 'link'],\n standard: [\n 'bold',\n 'italic',\n 'link',\n 'heading',\n 'bulletList',\n 'orderedList',\n 'quote',\n ],\n full: [\n 'bold',\n 'italic',\n 'link',\n 'heading',\n 'bulletList',\n 'orderedList',\n 'quote',\n 'image',\n 'table',\n 'codeBlock',\n 'horizontalRule',\n 'undo',\n 'redo',\n ],\n};\n\n/* ------------------------------------------------------------------ */\n/* Heading dropdown (Radix-free to keep the toolbar in one <div>) */\n/* The dropdown is a `details`-free popover implemented with a button */\n/* + a collapsible listbox wired into the roving-tabindex loop. */\n/* ------------------------------------------------------------------ */\n\ninterface HeadingSelectProps {\n editor: Editor;\n registerRef: (el: HTMLButtonElement | null) => void;\n tabIndex: number;\n onFocus: () => void;\n onKeyDown: (event: ReactKeyboardEvent<HTMLButtonElement>) => void;\n label: string;\n disabled: boolean;\n pressed: boolean;\n}\n\nfunction HeadingSelect({\n editor,\n registerRef,\n tabIndex,\n onFocus,\n onKeyDown,\n label,\n disabled,\n pressed,\n}: HeadingSelectProps): ReactNode {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return undefined;\n function handler(event: globalThis.MouseEvent) {\n const target = event.target as Node | null;\n if (rootRef.current && target && !rootRef.current.contains(target)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [open]);\n\n function apply(level: 1 | 2 | 3): void {\n editor.chain().focus().toggleHeading({ level }).run();\n setOpen(false);\n }\n\n return (\n <div ref={rootRef} className=\"ds:relative ds:inline-flex\">\n <button\n type=\"button\"\n ref={registerRef}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onClick={() => {\n if (!disabled) setOpen((v) => !v);\n }}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-disabled={disabled || undefined}\n aria-label={label}\n title={label}\n className={toolbarButtonVariants({ pressed, disabled })}\n >\n <span aria-hidden=\"true\" className=\"ds:text-[var(--font-size-sm)] ds:font-semibold\">\n H\n </span>\n <ChevronDown aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />\n </button>\n {open && !disabled ? (\n <ul\n role=\"listbox\"\n aria-label={label}\n className={[\n 'ds:absolute ds:top-full ds:mt-[var(--spacing-xs)] ds:start-0 ds:z-[var(--z-dropdown)]',\n 'ds:min-inline-size-[8rem] ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)] ds:bg-[var(--background)]',\n 'ds:shadow-[var(--shadow-lg)] ds:p-[var(--spacing-xs)]',\n ].join(' ')}\n >\n {[1, 2, 3].map((level) => (\n <li key={level} role=\"none\">\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={editor.isActive('heading', { level }) || undefined}\n onClick={() => apply(level as 1 | 2 | 3)}\n className={[\n 'ds:flex ds:w-full ds:items-center',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)] ds:text-start',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n {`H${level}`}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Keyboard-shortcuts cheat sheet */\n/* ------------------------------------------------------------------ */\n\ninterface ShortcutsDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nfunction ShortcutsDialog({ open, onOpenChange }: ShortcutsDialogProps): ReactNode {\n const { t } = useTranslation();\n return (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[var(--background)]/[var(--opacity-70)]',\n 'ds:backdrop-blur-sm',\n ].join(' ')}\n />\n <RadixDialog.Content\n className={[\n 'ds:fixed ds:z-[var(--z-modal)]',\n 'ds:start-1/2 ds:top-1/2 ds:-translate-x-1/2 ds:-translate-y-1/2',\n 'ds:w-[calc(100%-var(--spacing-lg)*2)] ds:max-w-[var(--dialog-width-md)]',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-xl)] ds:p-[var(--spacing-lg)]',\n 'ds:focus-visible:outline-none',\n ].join(' ')}\n >\n <div className=\"ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-md)]\">\n <RadixDialog.Title\n className=\"type-title-card ds:leading-snug\"\n >\n {t('editor.shortcuts.title')}\n </RadixDialog.Title>\n <RadixDialog.Close asChild>\n <button\n type=\"button\"\n aria-label={t('editor.shortcuts.close')}\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:min-inline-size-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n <X aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />\n </button>\n </RadixDialog.Close>\n </div>\n <ul className=\"ds:mt-[var(--spacing-md)] ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {[\n { key: 'editor.shortcuts.bold', combo: '⌘/Ctrl + B' },\n { key: 'editor.shortcuts.italic', combo: '⌘/Ctrl + I' },\n { key: 'editor.shortcuts.link', combo: '⌘/Ctrl + K' },\n { key: 'editor.shortcuts.undo', combo: '⌘/Ctrl + Z' },\n { key: 'editor.shortcuts.redo', combo: '⌘/Ctrl + Shift + Z' },\n { key: 'editor.shortcuts.open', combo: '⌘/Ctrl + /' },\n ].map((row) => (\n <li\n key={row.key}\n className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]\"\n >\n <span className=\"ds:text-[var(--font-size-sm)]\">{t(row.key)}</span>\n <kbd\n className={[\n 'ds:font-[var(--font-mono)] ds:text-[var(--font-size-xs)]',\n 'ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:bg-[var(--muted)]',\n ].join(' ')}\n >\n {row.combo}\n </kbd>\n </li>\n ))}\n </ul>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* RichTextEditor */\n/* ------------------------------------------------------------------ */\n\nexport const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(\n (\n {\n defaultValue,\n value,\n onChange,\n toolbar = 'standard',\n placeholder,\n readOnly = false,\n ariaLabel,\n minHeight,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const rawId = useId();\n const editorId = useMemo(\n () => `rte-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n\n const [isRtl, setIsRtl] = useState(false);\n useEffect(() => {\n if (typeof document === 'undefined') return;\n setIsRtl(document.documentElement.dir === 'rtl');\n }, []);\n\n const [shortcutsOpen, setShortcutsOpen] = useState(false);\n\n /* ---- onChange debounce ref ----------------------------------- */\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const onChangeRef = useRef<RichTextEditorProps['onChange']>(onChange);\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n /* ---- Tiptap editor ------------------------------------------- */\n const initialContent = useMemo(() => {\n const raw = value ?? defaultValue ?? '';\n return raw ? sanitiseHtml(raw) : '';\n }, [defaultValue, value]);\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n }),\n Link.configure({\n protocols: ['http', 'https', 'mailto', 'tel'],\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: '_blank',\n },\n validate: (href: string) => /^(https?:|mailto:|tel:)/i.test(href),\n }),\n Image,\n Table.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n Markdown.configure({\n html: false,\n transformPastedText: true,\n }),\n ],\n content: initialContent,\n editable: !readOnly,\n immediatelyRender: false,\n shouldRerenderOnTransaction: true,\n editorProps: {\n attributes: {\n role: 'textbox',\n 'aria-multiline': 'true',\n 'aria-label': ariaLabel ?? t('editor.placeholder'),\n 'data-placeholder': placeholder ?? t('editor.placeholder'),\n },\n transformPastedHTML(html: string): string {\n return sanitiseHtml(html);\n },\n handleKeyDown(_, event): boolean {\n if ((event.metaKey || event.ctrlKey) && event.key === '/') {\n event.preventDefault();\n setShortcutsOpen(true);\n return true;\n }\n return false;\n },\n },\n onUpdate({ editor: updatedEditor }) {\n if (!onChangeRef.current) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n const html = updatedEditor.getHTML();\n const storage = updatedEditor.storage as { markdown?: { getMarkdown: () => string } };\n const markdown = storage.markdown?.getMarkdown?.() ?? '';\n onChangeRef.current?.({ html, markdown });\n }, 100);\n },\n });\n\n /* ---- Cleanup debounce on unmount ----------------------------- */\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n /* ---- Keep readOnly in sync with prop ------------------------- */\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n /* ---- Keep controlled `value` in sync ------------------------- */\n useEffect(() => {\n if (!editor || value === undefined) return;\n const current = editor.getHTML();\n if (current === value) return;\n const safe = sanitiseHtml(value);\n editor.commands.setContent(safe, { emitUpdate: false });\n }, [editor, value]);\n\n /* ---- Imperative handle --------------------------------------- */\n useImperativeHandle(\n ref,\n () => ({\n getHTML(): string {\n return editor?.getHTML() ?? '';\n },\n getMarkdown(): string {\n if (!editor) return '';\n const storage = editor.storage as {\n markdown?: { getMarkdown: () => string };\n };\n return storage.markdown?.getMarkdown?.() ?? '';\n },\n setContent(html: string): void {\n if (!editor) return;\n const safe = sanitiseHtml(html);\n editor.commands.setContent(safe);\n },\n focus(): void {\n editor?.commands.focus();\n },\n clear(): void {\n editor?.commands.clearContent();\n },\n }),\n [editor],\n );\n\n /* ---- Toolbar roving tabindex --------------------------------- */\n const buttonsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n\n const items = useMemo(() => PRESETS[toolbar], [toolbar]);\n\n const registerButton = useCallback(\n (index: number) => (el: HTMLButtonElement | null) => {\n buttonsRef.current[index] = el;\n },\n [],\n );\n\n const focusButton = useCallback((index: number) => {\n const btn = buttonsRef.current[index];\n if (btn) btn.focus();\n }, []);\n\n const handleToolbarKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n const count = items.length;\n if (count === 0) return;\n // In RTL, Left/Right arrows swap inline meaning.\n const forward = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n let next: number | null = null;\n if (event.key === forward) next = (focusIndex + 1) % count;\n else if (event.key === backward) next = (focusIndex - 1 + count) % count;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n\n if (next !== null) {\n event.preventDefault();\n setFocusIndex(next);\n focusButton(next);\n }\n },\n [focusIndex, focusButton, isRtl, items.length],\n );\n\n /* ---- Link handler ------------------------------------------- */\n const promptForLink = useCallback(\n (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (!editor) return;\n const existing = editor.getAttributes('link').href as string | undefined;\n const raw = window.prompt(t('editor.link.insert'), existing ?? '');\n if (raw === null) return;\n const trimmed = raw.trim();\n if (trimmed === '') {\n editor.chain().focus().unsetLink().run();\n return;\n }\n if (!/^(https?:|mailto:|tel:)/i.test(trimmed)) {\n // Reject unsafe scheme silently — validate() in the extension also\n // blocks it, but we short-circuit before Tiptap ever sees it.\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: trimmed }).run();\n },\n [editor, t],\n );\n\n /* ---- Image handler ------------------------------------------ */\n // Raster-only via the shared allow-list — rejects data:image/svg+xml and\n // other XSS vectors. Sharing the helper keeps the two call sites from\n // drifting. See security-hardening.mdx.\n const promptForImage = useCallback(() => {\n if (!editor) return;\n const raw = window.prompt(t('editor.image.insert'), '');\n if (raw === null) return;\n const validated = safeImageSrc(raw);\n if (!validated) return;\n editor.chain().focus().setImage({ src: validated }).run();\n }, [editor, t]);\n\n /* ---- Render button map -------------------------------------- */\n function renderItem(\n key: ToolbarItemKey,\n index: number,\n ): ReactNode {\n if (!editor) return null;\n\n const registerRef = registerButton(index);\n const common = {\n tabIndex: index === focusIndex ? 0 : -1,\n onFocus: () => setFocusIndex(index),\n onKeyDown: handleToolbarKeyDown,\n };\n\n const buttonClass = (pressed: boolean, disabled: boolean): string =>\n toolbarButtonVariants({ pressed, disabled });\n\n function toggleButton(opts: {\n label: string;\n pressed: boolean;\n disabled: boolean;\n /** Space-separated modifier+key strings, e.g. \"Control+B Meta+B\". */\n shortcut?: string;\n onActivate: () => void;\n icon: ReactNode;\n }): ReactNode {\n return (\n <button\n type=\"button\"\n ref={registerRef}\n {...common}\n aria-label={opts.label}\n aria-pressed={opts.pressed}\n aria-disabled={opts.disabled || undefined}\n aria-keyshortcuts={opts.shortcut}\n title={opts.label}\n onClick={(event) => {\n event.preventDefault();\n if (!opts.disabled) opts.onActivate();\n }}\n className={buttonClass(opts.pressed, opts.disabled)}\n >\n {opts.icon}\n </button>\n );\n }\n\n function actionButton(opts: {\n label: string;\n disabled: boolean;\n shortcut?: string;\n onActivate: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n icon: ReactNode;\n }): ReactNode {\n return (\n <button\n type=\"button\"\n ref={registerRef}\n {...common}\n aria-label={opts.label}\n aria-disabled={opts.disabled || undefined}\n aria-keyshortcuts={opts.shortcut}\n title={opts.label}\n onClick={(event) => {\n if (opts.disabled) {\n event.preventDefault();\n return;\n }\n opts.onActivate(event);\n }}\n className={buttonClass(false, opts.disabled)}\n >\n {opts.icon}\n </button>\n );\n }\n\n switch (key) {\n case 'bold':\n return toggleButton({\n label: t('editor.bold'),\n pressed: editor.isActive('bold'),\n disabled: readOnly,\n shortcut: 'Control+B Meta+B',\n onActivate: () => editor.chain().focus().toggleBold().run(),\n icon: <Bold aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'italic':\n return toggleButton({\n label: t('editor.italic'),\n pressed: editor.isActive('italic'),\n disabled: readOnly,\n shortcut: 'Control+I Meta+I',\n onActivate: () => editor.chain().focus().toggleItalic().run(),\n icon: <Italic aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'link':\n return actionButton({\n label: t('editor.link.insert'),\n disabled: readOnly,\n shortcut: 'Control+K Meta+K',\n onActivate: promptForLink,\n icon: <Link2 aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'heading':\n return (\n <HeadingSelect\n editor={editor}\n registerRef={registerRef}\n tabIndex={index === focusIndex ? 0 : -1}\n onFocus={() => setFocusIndex(index)}\n onKeyDown={handleToolbarKeyDown}\n label={t('editor.heading')}\n disabled={readOnly}\n pressed={\n editor.isActive('heading', { level: 1 }) ||\n editor.isActive('heading', { level: 2 }) ||\n editor.isActive('heading', { level: 3 })\n }\n />\n );\n case 'bulletList':\n return toggleButton({\n label: t('editor.list.bullet'),\n pressed: editor.isActive('bulletList'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleBulletList().run(),\n icon: <List aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'orderedList':\n return toggleButton({\n label: t('editor.list.ordered'),\n pressed: editor.isActive('orderedList'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleOrderedList().run(),\n icon: <ListOrdered aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'quote':\n return toggleButton({\n label: t('editor.quote'),\n pressed: editor.isActive('blockquote'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleBlockquote().run(),\n icon: <Quote aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'image':\n return actionButton({\n label: t('editor.image.insert'),\n disabled: readOnly,\n onActivate: promptForImage,\n icon: <ImageIcon aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'table':\n return actionButton({\n label: t('editor.table.insert'),\n disabled: readOnly,\n onActivate: () =>\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run(),\n icon: <TableIcon aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'codeBlock':\n return toggleButton({\n label: t('editor.codeBlock'),\n pressed: editor.isActive('codeBlock'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleCodeBlock().run(),\n icon: <Code aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'horizontalRule':\n return actionButton({\n label: t('editor.horizontalRule'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().setHorizontalRule().run(),\n icon: <Minus aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'undo':\n return actionButton({\n label: t('editor.undo'),\n disabled: readOnly || !editor.can().undo(),\n shortcut: 'Control+Z Meta+Z',\n onActivate: () => editor.chain().focus().undo().run(),\n icon: <Undo aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'redo':\n return actionButton({\n label: t('editor.redo'),\n disabled: readOnly || !editor.can().redo(),\n shortcut: 'Control+Shift+Z Meta+Shift+Z',\n onActivate: () => editor.chain().focus().redo().run(),\n icon: <Redo aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n default:\n return null;\n }\n }\n\n /* ---- Compose min-height class ------------------------------- */\n // `minHeight` is a size-variant keyword, not a raw CSS value, so we\n // pick a pre-authored Tailwind utility. The tiptap-theme.css bridge\n // already sets a sensible default (`min-block-size: 10rem`) on the\n // editing surface; consumers wanting taller/shorter regions can pass\n // 'sm' / 'md' / 'lg'.\n const minHeightClass = (() => {\n switch (minHeight) {\n case 'sm':\n return 'min-block-size-[8rem]';\n case 'md':\n return 'min-block-size-[16rem]';\n case 'lg':\n return 'min-block-size-[24rem]';\n default:\n return undefined;\n }\n })();\n\n return (\n <div\n id={editorId}\n className={[wrapperVariants(), className].filter(Boolean).join(' ')}\n dir={isRtl ? 'rtl' : undefined}\n data-component=\"rich-text-editor\"\n >\n {!readOnly ? (\n <div\n role=\"toolbar\"\n aria-label={t('editor.toolbarLabel')}\n className={toolbarVariants({ direction: isRtl ? 'rtl' : 'ltr' })}\n >\n {items.map((key, index) => (\n <span key={key} className=\"ds:contents\">\n {renderItem(key, index)}\n </span>\n ))}\n </div>\n ) : null}\n\n <div\n className={[editorSurfaceVariants(), minHeightClass]\n .filter(Boolean)\n .join(' ')}\n >\n <EditorContent editor={editor} />\n </div>\n\n <ShortcutsDialog open={shortcutsOpen} onOpenChange={setShortcutsOpen} />\n </div>\n );\n },\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport {\n toolbarButtonVariants,\n toolbarVariants,\n wrapperVariants,\n editorSurfaceVariants,\n};\n","import type { AgentAdapter } from '../../agent/types';\nimport type { RichTextEditorHandle } from './rich-text-editor';\n\nexport const richTextEditorAgent: AgentAdapter<RichTextEditorHandle> = {\n id: 'rich-text-editor',\n capabilities: ['edit_inline'],\n state: {\n html: {\n type: 'string',\n description: 'Sanitised HTML representation of the editor content.',\n read: (handle) => handle.getHTML(),\n },\n markdown: {\n type: 'string',\n description: 'Markdown representation of the editor content.',\n read: (handle) => handle.getMarkdown(),\n },\n },\n actions: {\n set_content: {\n safety: 'destructive',\n argsType: '{ html: string }',\n description: 'Replace the editor content. Loses unsaved input.',\n invoke: (handle, args: { html: string }) => {\n handle.setContent(args.html);\n },\n },\n clear: {\n safety: 'destructive',\n description: 'Empty the editor. Loses unsaved input.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n description: 'Move keyboard focus to the editor surface.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'rich-text-editor' },\n },\n};\n"],"names":["__iconNode","Bold","createLucideIcon","Code","Image","Italic","Link2","ListOrdered","List","Minus","Quote","Redo","Table","Undo","PURIFY_CONFIG","sanitiseHtml","input","DOMPurify","wrapperVariants","cva","toolbarVariants","toolbarButtonVariants","editorSurfaceVariants","PRESETS","HeadingSelect","editor","registerRef","tabIndex","onFocus","onKeyDown","label","disabled","pressed","open","setOpen","useState","rootRef","useRef","useEffect","handler","event","target","apply","level","jsxs","v","jsx","ChevronDown","ShortcutsDialog","onOpenChange","t","useTranslation","RadixDialog","X","row","RichTextEditor","forwardRef","defaultValue","value","onChange","toolbar","placeholder","readOnly","ariaLabel","minHeight","className","ref","rawId","useId","editorId","useMemo","isRtl","setIsRtl","shortcutsOpen","setShortcutsOpen","debounceRef","onChangeRef","initialContent","raw","useEditor","StarterKit","Link","href","TableRow","TableCell","TableHeader","Markdown","html","_","updatedEditor","markdown","_b","_a","_c","safe","useImperativeHandle","buttonsRef","focusIndex","setFocusIndex","items","registerButton","useCallback","index","el","focusButton","btn","handleToolbarKeyDown","count","forward","backward","next","promptForLink","existing","trimmed","promptForImage","validated","safeImageSrc","renderItem","key","common","buttonClass","toggleButton","opts","actionButton","ImageIcon","TableIcon","minHeightClass","EditorContent","richTextEditorAgent","handle","args"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { jsx as s, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as h, useRef as g } from "react";
|
|
3
|
+
import * as o from "@radix-ui/react-scroll-area";
|
|
4
|
+
import { c as f } from "./index-D2ZczOXr.js";
|
|
5
|
+
import { u as z } from "./use-direction-D6rvvG9G.js";
|
|
6
|
+
const c = f(
|
|
7
|
+
[
|
|
8
|
+
"ds:flex ds:touch-none ds:select-none",
|
|
9
|
+
// Fade in/out based on Radix data-state (requires forceMount on Scrollbar).
|
|
10
|
+
// Default opacity is 1 because ScrollAreaScrollbarVisible (type='always')
|
|
11
|
+
// never sets data-state at all — only hover/scroll/auto set data-state="hidden".
|
|
12
|
+
"ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
|
|
13
|
+
"ds:data-[state=hidden]:opacity-0",
|
|
14
|
+
// Orientation-specific sizing + padding so thumb floats away from the frame edge
|
|
15
|
+
"ds:data-[orientation=vertical]:w-[var(--scrollbar-size)] ds:data-[orientation=vertical]:p-[var(--scrollbar-padding)]",
|
|
16
|
+
"ds:data-[orientation=horizontal]:h-[var(--scrollbar-size)] ds:data-[orientation=horizontal]:flex-col ds:data-[orientation=horizontal]:p-[var(--scrollbar-padding)]",
|
|
17
|
+
"ds:bg-[var(--scrollbar-track)]",
|
|
18
|
+
// forced-colors: 1px border keeps the track visible when background flattens
|
|
19
|
+
"ds:forced-colors:border ds:forced-colors:border-[ButtonText]"
|
|
20
|
+
].join(" "),
|
|
21
|
+
{
|
|
22
|
+
variants: {
|
|
23
|
+
size: {
|
|
24
|
+
sm: "ds:[--scrollbar-size:var(--scrollbar-size-sm)]",
|
|
25
|
+
md: "ds:[--scrollbar-size:var(--scrollbar-size-md)]",
|
|
26
|
+
lg: "ds:[--scrollbar-size:var(--scrollbar-size-lg)]"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
defaultVariants: {
|
|
30
|
+
size: "md"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
), u = f(
|
|
34
|
+
[
|
|
35
|
+
"ds:relative ds:flex-1",
|
|
36
|
+
"ds:rounded-[var(--radius-full)]",
|
|
37
|
+
"ds:bg-[var(--scrollbar-thumb)]",
|
|
38
|
+
"ds:hover:bg-[var(--scrollbar-thumb-hover)]",
|
|
39
|
+
"ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
|
|
40
|
+
// forced-color-adjust: auto so forced-colors paint ButtonFace/ButtonText
|
|
41
|
+
"ds:[forced-color-adjust:auto]",
|
|
42
|
+
// hit area extension via ::before for touch pointers (must be absolute)
|
|
43
|
+
'ds:before:absolute ds:before:content-[""] ds:before:inset-inline-[calc((var(--min-target-size)-100%)/-2)]',
|
|
44
|
+
"ds:before:inset-block-[calc((var(--min-target-size)-100%)/-2)]"
|
|
45
|
+
].join(" ")
|
|
46
|
+
), w = (r) => r === "auto" || r === void 0 ? "hover" : r, p = {
|
|
47
|
+
vertical: "overflow-y-auto",
|
|
48
|
+
horizontal: "overflow-x-auto",
|
|
49
|
+
both: "overflow-auto"
|
|
50
|
+
}, S = h(
|
|
51
|
+
({
|
|
52
|
+
orientation: r = "vertical",
|
|
53
|
+
size: e = "md",
|
|
54
|
+
type: a = "auto",
|
|
55
|
+
className: i,
|
|
56
|
+
children: l,
|
|
57
|
+
// scrollHideDelay is a Root-only prop; ignore it for the native branch
|
|
58
|
+
scrollHideDelay: v,
|
|
59
|
+
...t
|
|
60
|
+
}, n) => {
|
|
61
|
+
if (a === "native")
|
|
62
|
+
return /* @__PURE__ */ s(
|
|
63
|
+
"div",
|
|
64
|
+
{
|
|
65
|
+
ref: n,
|
|
66
|
+
className: [
|
|
67
|
+
p[r],
|
|
68
|
+
"ds:min-w-0 ds:min-h-0",
|
|
69
|
+
// focus ring matches the custom-scrollbar variant
|
|
70
|
+
"ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
|
|
71
|
+
"ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
72
|
+
"ds:forced-colors:focus-visible:outline-[Highlight]",
|
|
73
|
+
i
|
|
74
|
+
].filter(Boolean).join(" "),
|
|
75
|
+
...t,
|
|
76
|
+
children: l
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
const d = g(null), b = z(d);
|
|
80
|
+
return /* @__PURE__ */ m(
|
|
81
|
+
o.Root,
|
|
82
|
+
{
|
|
83
|
+
ref: d,
|
|
84
|
+
type: w(a),
|
|
85
|
+
dir: b,
|
|
86
|
+
scrollHideDelay: v,
|
|
87
|
+
className: [
|
|
88
|
+
"ds:relative ds:overflow-hidden",
|
|
89
|
+
"ds:min-w-0 ds:min-h-0",
|
|
90
|
+
i
|
|
91
|
+
].filter(Boolean).join(" "),
|
|
92
|
+
...t,
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ s(
|
|
95
|
+
o.Viewport,
|
|
96
|
+
{
|
|
97
|
+
ref: n,
|
|
98
|
+
className: [
|
|
99
|
+
"ds:h-full ds:w-full ds:rounded-[inherit]",
|
|
100
|
+
// keyboard focus ring on the scroll container
|
|
101
|
+
"ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
|
|
102
|
+
"ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
103
|
+
"ds:forced-colors:focus-visible:outline-[Highlight]"
|
|
104
|
+
].join(" "),
|
|
105
|
+
children: l
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
(r === "vertical" || r === "both") && // forceMount keeps the element in the DOM so CSS opacity transition
|
|
109
|
+
// can animate the show/hide instead of mount/unmount snapping.
|
|
110
|
+
/* @__PURE__ */ s(
|
|
111
|
+
o.Scrollbar,
|
|
112
|
+
{
|
|
113
|
+
forceMount: !0,
|
|
114
|
+
orientation: "vertical",
|
|
115
|
+
className: c({ size: e }),
|
|
116
|
+
children: /* @__PURE__ */ s(o.Thumb, { className: u() })
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
(r === "horizontal" || r === "both") && /* @__PURE__ */ s(
|
|
120
|
+
o.Scrollbar,
|
|
121
|
+
{
|
|
122
|
+
forceMount: !0,
|
|
123
|
+
orientation: "horizontal",
|
|
124
|
+
className: c({ size: e }),
|
|
125
|
+
children: /* @__PURE__ */ s(o.Thumb, { className: u() })
|
|
126
|
+
}
|
|
127
|
+
),
|
|
128
|
+
/* @__PURE__ */ s(o.Corner, {})
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
S.displayName = "ScrollArea";
|
|
135
|
+
const R = o.Root, T = o.Viewport, V = o.Scrollbar, y = o.Thumb, B = o.Corner;
|
|
136
|
+
export {
|
|
137
|
+
S,
|
|
138
|
+
B as a,
|
|
139
|
+
R as b,
|
|
140
|
+
V as c,
|
|
141
|
+
y as d,
|
|
142
|
+
T as e
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=scroll-area-Ba99pJ_R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-area-Ba99pJ_R.js","sources":["../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import { forwardRef, useRef, type ComponentPropsWithoutRef } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useDirection } from '../_shared/use-direction';\n\nconst scrollbarVariants = cva(\n [\n 'ds:flex ds:touch-none ds:select-none',\n // Fade in/out based on Radix data-state (requires forceMount on Scrollbar).\n // Default opacity is 1 because ScrollAreaScrollbarVisible (type='always')\n // never sets data-state at all — only hover/scroll/auto set data-state=\"hidden\".\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:data-[state=hidden]:opacity-0',\n // Orientation-specific sizing + padding so thumb floats away from the frame edge\n 'ds:data-[orientation=vertical]:w-[var(--scrollbar-size)] ds:data-[orientation=vertical]:p-[var(--scrollbar-padding)]',\n 'ds:data-[orientation=horizontal]:h-[var(--scrollbar-size)] ds:data-[orientation=horizontal]:flex-col ds:data-[orientation=horizontal]:p-[var(--scrollbar-padding)]',\n 'ds:bg-[var(--scrollbar-track)]',\n // forced-colors: 1px border keeps the track visible when background flattens\n 'ds:forced-colors:border ds:forced-colors:border-[ButtonText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:[--scrollbar-size:var(--scrollbar-size-sm)]',\n md: 'ds:[--scrollbar-size:var(--scrollbar-size-md)]',\n lg: 'ds:[--scrollbar-size:var(--scrollbar-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst thumbVariants = cva(\n [\n 'ds:relative ds:flex-1',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[var(--scrollbar-thumb)]',\n 'ds:hover:bg-[var(--scrollbar-thumb-hover)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n // forced-color-adjust: auto so forced-colors paint ButtonFace/ButtonText\n 'ds:[forced-color-adjust:auto]',\n // hit area extension via ::before for touch pointers (must be absolute)\n 'ds:before:absolute ds:before:content-[\"\"] ds:before:inset-inline-[calc((var(--min-target-size)-100%)/-2)]',\n 'ds:before:inset-block-[calc((var(--min-target-size)-100%)/-2)]',\n ].join(' '),\n);\n\nexport interface ScrollAreaProps\n extends Omit<\n ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>,\n 'type'\n >,\n VariantProps<typeof scrollbarVariants> {\n orientation?: 'vertical' | 'horizontal' | 'both';\n size?: 'sm' | 'md' | 'lg';\n /**\n * `auto` — scrollbar fades in on pointer-enter, fades out after `--scrollbar-fade-delay` (default).\n * `always` — scrollbar always visible; use for data tables.\n * `scroll` — scrollbar visible only while scrolling.\n * `hover` — alias for `auto` (Radix hover mode).\n * `native` — skips the custom scrollbar entirely; the OS renders its own.\n * Use for virtualised lists (AG Grid, @tanstack/react-virtual).\n */\n type?: 'auto' | 'always' | 'scroll' | 'hover' | 'native';\n className?: string;\n children: React.ReactNode;\n}\n\nconst radixType = (\n type: ScrollAreaProps['type'],\n): ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>['type'] => {\n if (type === 'auto' || type === undefined) return 'hover';\n return type as Exclude<ScrollAreaProps['type'], 'auto' | 'native' | undefined>;\n};\n\nconst nativeOverflow: Record<\n NonNullable<ScrollAreaProps['orientation']>,\n string\n> = {\n vertical: 'overflow-y-auto',\n horizontal: 'overflow-x-auto',\n both: 'overflow-auto',\n};\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n orientation = 'vertical',\n size = 'md',\n type = 'auto',\n className,\n children,\n // scrollHideDelay is a Root-only prop; ignore it for the native branch\n scrollHideDelay,\n ...props\n },\n ref,\n ) => {\n // ── Native escape-hatch ────────────────────────────────────────────\n // Radix's Viewport always injects `scrollbar-width: none` CSS, which\n // hides the browser scrollbar even if we skip rendering the custom one.\n // For native mode we bypass Radix entirely and render a plain div.\n if (type === 'native') {\n return (\n <div\n ref={ref}\n className={[\n nativeOverflow[orientation],\n 'ds:min-w-0 ds:min-h-0',\n // focus ring matches the custom-scrollbar variant\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[Highlight]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n // ── Radix custom-scrollbar path ────────────────────────────────────\n const rootRef = useRef<HTMLDivElement>(null);\n const dir = useDirection(rootRef);\n return (\n <ScrollAreaPrimitive.Root\n ref={rootRef}\n type={radixType(type)}\n dir={dir}\n scrollHideDelay={scrollHideDelay}\n className={[\n 'ds:relative ds:overflow-hidden',\n 'ds:min-w-0 ds:min-h-0',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={[\n 'ds:h-full ds:w-full ds:rounded-[inherit]',\n // keyboard focus ring on the scroll container\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[Highlight]',\n ].join(' ')}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n\n {(orientation === 'vertical' || orientation === 'both') && (\n // forceMount keeps the element in the DOM so CSS opacity transition\n // can animate the show/hide instead of mount/unmount snapping.\n <ScrollAreaPrimitive.Scrollbar\n forceMount\n orientation=\"vertical\"\n className={scrollbarVariants({ size })}\n >\n <ScrollAreaPrimitive.Thumb className={thumbVariants()} />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n\n {(orientation === 'horizontal' || orientation === 'both') && (\n <ScrollAreaPrimitive.Scrollbar\n forceMount\n orientation=\"horizontal\"\n className={scrollbarVariants({ size })}\n >\n <ScrollAreaPrimitive.Thumb className={thumbVariants()} />\n </ScrollAreaPrimitive.Scrollbar>\n )}\n\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n },\n);\n\nScrollArea.displayName = 'ScrollArea';\n\n// Re-export Radix parts for advanced composition\nexport const ScrollAreaRoot = ScrollAreaPrimitive.Root;\nexport const ScrollAreaViewport = ScrollAreaPrimitive.Viewport;\nexport const ScrollAreaScrollbar = ScrollAreaPrimitive.Scrollbar;\nexport const ScrollAreaThumb = ScrollAreaPrimitive.Thumb;\nexport const ScrollAreaCorner = ScrollAreaPrimitive.Corner;\n"],"names":["scrollbarVariants","cva","thumbVariants","radixType","type","nativeOverflow","ScrollArea","forwardRef","orientation","size","className","children","scrollHideDelay","props","ref","jsx","rootRef","useRef","dir","useDirection","jsxs","ScrollAreaPrimitive","ScrollAreaRoot","ScrollAreaViewport","ScrollAreaScrollbar","ScrollAreaThumb","ScrollAreaCorner"],"mappings":"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"}
|