@alfadocs/ui-kit-debug 1.13.0 → 1.14.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 (194) hide show
  1. package/dist/_chunks/actions-cell-renderer-yy03OgRL.js +137 -0
  2. package/dist/_chunks/actions-cell-renderer-yy03OgRL.js.map +1 -0
  3. package/dist/_chunks/{balance-badge-cell--iQ_gtmi.js → balance-badge-cell-CgkxYO96.js} +7 -6
  4. package/dist/_chunks/{balance-badge-cell--iQ_gtmi.js.map → balance-badge-cell-CgkxYO96.js.map} +1 -1
  5. package/dist/_chunks/{calendar-B4Gnyu1C.js → calendar-CHT9Rm3M.js} +2 -2
  6. package/dist/_chunks/{calendar-B4Gnyu1C.js.map → calendar-CHT9Rm3M.js.map} +1 -1
  7. package/dist/_chunks/{calendar-event-card-Bjdbik8G.js → calendar-event-card-BjdHZaqz.js} +18 -14
  8. package/dist/_chunks/{calendar-event-card-Bjdbik8G.js.map → calendar-event-card-BjdHZaqz.js.map} +1 -1
  9. package/dist/_chunks/calendar-plus-BFrIRE4r.js +19 -0
  10. package/dist/_chunks/calendar-plus-BFrIRE4r.js.map +1 -0
  11. package/dist/_chunks/calendar-workspace-DI49_t6t.js +7429 -0
  12. package/dist/_chunks/calendar-workspace-DI49_t6t.js.map +1 -0
  13. package/dist/_chunks/clipboard-list-rSzfIYZB.js +25 -0
  14. package/dist/_chunks/clipboard-list-rSzfIYZB.js.map +1 -0
  15. package/dist/_chunks/{color-picker-oZ6zYks8.js → color-picker-CU303VjY.js} +4 -2
  16. package/dist/_chunks/{color-picker-oZ6zYks8.js.map → color-picker-CU303VjY.js.map} +1 -1
  17. package/dist/_chunks/data-table-DC5rO3Ty.js +1817 -0
  18. package/dist/_chunks/data-table-DC5rO3Ty.js.map +1 -0
  19. package/dist/_chunks/{field-value-DG8zaZvo.js → field-value-D-vkX9uL.js} +120 -140
  20. package/dist/_chunks/field-value-D-vkX9uL.js.map +1 -0
  21. package/dist/_chunks/{file-manager-UsD8e_AB.js → file-manager-DJMeB3V8.js} +138 -153
  22. package/dist/_chunks/file-manager-DJMeB3V8.js.map +1 -0
  23. package/dist/_chunks/folder-plus-CutOs4DP.js +22 -0
  24. package/dist/_chunks/folder-plus-CutOs4DP.js.map +1 -0
  25. package/dist/_chunks/hourglass-BEAzW1wE.js +26 -0
  26. package/dist/_chunks/hourglass-BEAzW1wE.js.map +1 -0
  27. package/dist/_chunks/{notes-panel-CymneXtl.js → notes-panel-DYAtlq_i.js} +2 -2
  28. package/dist/_chunks/{notes-panel-CymneXtl.js.map → notes-panel-DYAtlq_i.js.map} +1 -1
  29. package/dist/_chunks/{patient-details-BQaUzPqp.js → patient-details-BfzvFnxQ.js} +73 -92
  30. package/dist/_chunks/patient-details-BfzvFnxQ.js.map +1 -0
  31. package/dist/_chunks/{patient-summary-card-CvDxhbBR.js → patient-summary-card-D5Vfa321.js} +2 -2
  32. package/dist/_chunks/{patient-summary-card-CvDxhbBR.js.map → patient-summary-card-D5Vfa321.js.map} +1 -1
  33. package/dist/_chunks/{practice-results-D7ygCj_W.js → practice-results-DL_ExLYE.js} +159 -172
  34. package/dist/_chunks/practice-results-DL_ExLYE.js.map +1 -0
  35. package/dist/_chunks/{rich-text-editor-BDfFtK4H.js → rich-text-editor-DtbcA6s1.js} +2 -2
  36. package/dist/_chunks/{rich-text-editor-BDfFtK4H.js.map → rich-text-editor-DtbcA6s1.js.map} +1 -1
  37. package/dist/_chunks/signature-CpFNpsVK.js +21 -0
  38. package/dist/_chunks/signature-CpFNpsVK.js.map +1 -0
  39. package/dist/_chunks/{signature-field-0rFODJlW.js → signature-field-CEiPe-vX.js} +19 -34
  40. package/dist/_chunks/signature-field-CEiPe-vX.js.map +1 -0
  41. package/dist/_chunks/smartphone-C0rFF2if.js +15 -0
  42. package/dist/_chunks/smartphone-C0rFF2if.js.map +1 -0
  43. package/dist/_chunks/{toast.agent-D1tdg6DS.js → toast-YZz2sBzB.js} +160 -212
  44. package/dist/_chunks/toast-YZz2sBzB.js.map +1 -0
  45. package/dist/_chunks/toast.agent-DNQ0JYGv.js +56 -0
  46. package/dist/_chunks/toast.agent-DNQ0JYGv.js.map +1 -0
  47. package/dist/_chunks/{workflow-map-wcw3t6g4.js → workflow-map-dNzJjBWG.js} +103 -112
  48. package/dist/_chunks/workflow-map-dNzJjBWG.js.map +1 -0
  49. package/dist/agent-catalog.json +867 -1
  50. package/dist/agent-i18n/en.json +27 -0
  51. package/dist/components/calendar/index.js +1 -1
  52. package/dist/components/calendar-event-card/index.js +1 -1
  53. package/dist/components/color-picker/index.js +1 -1
  54. package/dist/components/data-table/index.js +39 -38
  55. package/dist/components/data-table/index.js.map +1 -1
  56. package/dist/components/file-manager/index.js +1 -1
  57. package/dist/components/index.d.ts +1 -0
  58. package/dist/components/index.d.ts.map +1 -1
  59. package/dist/components/notes-panel/index.js +1 -1
  60. package/dist/components/patient-details/index.js +1 -1
  61. package/dist/components/patient-summary-card/index.js +1 -1
  62. package/dist/components/patient-table/index.js +1 -1
  63. package/dist/components/practice-results/index.js +1 -1
  64. package/dist/components/rich-text-editor/index.js +1 -1
  65. package/dist/components/signature-field/index.js +1 -1
  66. package/dist/components/toast/index.js +7 -6
  67. package/dist/components/toast/index.js.map +1 -1
  68. package/dist/components/workflow/index.js +1 -1
  69. package/dist/i18n/locales/ar.d.ts +680 -0
  70. package/dist/i18n/locales/ar.d.ts.map +1 -1
  71. package/dist/i18n/locales/ar.js +680 -0
  72. package/dist/i18n/locales/ar.js.map +1 -1
  73. package/dist/i18n/locales/de.d.ts +680 -0
  74. package/dist/i18n/locales/de.d.ts.map +1 -1
  75. package/dist/i18n/locales/de.js +680 -0
  76. package/dist/i18n/locales/de.js.map +1 -1
  77. package/dist/i18n/locales/el.d.ts +680 -0
  78. package/dist/i18n/locales/el.d.ts.map +1 -1
  79. package/dist/i18n/locales/el.js +680 -0
  80. package/dist/i18n/locales/el.js.map +1 -1
  81. package/dist/i18n/locales/en.d.ts +680 -0
  82. package/dist/i18n/locales/en.d.ts.map +1 -1
  83. package/dist/i18n/locales/en.js +680 -0
  84. package/dist/i18n/locales/en.js.map +1 -1
  85. package/dist/i18n/locales/es.d.ts +680 -0
  86. package/dist/i18n/locales/es.d.ts.map +1 -1
  87. package/dist/i18n/locales/es.js +680 -0
  88. package/dist/i18n/locales/es.js.map +1 -1
  89. package/dist/i18n/locales/fr.d.ts +680 -0
  90. package/dist/i18n/locales/fr.d.ts.map +1 -1
  91. package/dist/i18n/locales/fr.js +680 -0
  92. package/dist/i18n/locales/fr.js.map +1 -1
  93. package/dist/i18n/locales/hi.d.ts +680 -0
  94. package/dist/i18n/locales/hi.d.ts.map +1 -1
  95. package/dist/i18n/locales/hi.js +680 -0
  96. package/dist/i18n/locales/hi.js.map +1 -1
  97. package/dist/i18n/locales/it.d.ts +680 -0
  98. package/dist/i18n/locales/it.d.ts.map +1 -1
  99. package/dist/i18n/locales/it.js +680 -0
  100. package/dist/i18n/locales/it.js.map +1 -1
  101. package/dist/i18n/locales/ja.d.ts +680 -0
  102. package/dist/i18n/locales/ja.d.ts.map +1 -1
  103. package/dist/i18n/locales/ja.js +680 -0
  104. package/dist/i18n/locales/ja.js.map +1 -1
  105. package/dist/i18n/locales/nl.d.ts +680 -0
  106. package/dist/i18n/locales/nl.d.ts.map +1 -1
  107. package/dist/i18n/locales/nl.js +680 -0
  108. package/dist/i18n/locales/nl.js.map +1 -1
  109. package/dist/i18n/locales/pl.d.ts +680 -0
  110. package/dist/i18n/locales/pl.d.ts.map +1 -1
  111. package/dist/i18n/locales/pl.js +680 -0
  112. package/dist/i18n/locales/pl.js.map +1 -1
  113. package/dist/i18n/locales/pt.d.ts +680 -0
  114. package/dist/i18n/locales/pt.d.ts.map +1 -1
  115. package/dist/i18n/locales/pt.js +680 -0
  116. package/dist/i18n/locales/pt.js.map +1 -1
  117. package/dist/i18n/locales/ro.d.ts +680 -0
  118. package/dist/i18n/locales/ro.d.ts.map +1 -1
  119. package/dist/i18n/locales/ro.js +680 -0
  120. package/dist/i18n/locales/ro.js.map +1 -1
  121. package/dist/i18n/locales/ru.d.ts +680 -0
  122. package/dist/i18n/locales/ru.d.ts.map +1 -1
  123. package/dist/i18n/locales/ru.js +680 -0
  124. package/dist/i18n/locales/ru.js.map +1 -1
  125. package/dist/i18n/locales/sq.d.ts +680 -0
  126. package/dist/i18n/locales/sq.d.ts.map +1 -1
  127. package/dist/i18n/locales/sq.js +680 -0
  128. package/dist/i18n/locales/sq.js.map +1 -1
  129. package/dist/i18n/locales/sv.d.ts +680 -0
  130. package/dist/i18n/locales/sv.d.ts.map +1 -1
  131. package/dist/i18n/locales/sv.js +680 -0
  132. package/dist/i18n/locales/sv.js.map +1 -1
  133. package/dist/i18n/locales/tr.d.ts +680 -0
  134. package/dist/i18n/locales/tr.d.ts.map +1 -1
  135. package/dist/i18n/locales/tr.js +680 -0
  136. package/dist/i18n/locales/tr.js.map +1 -1
  137. package/dist/i18n/locales/zh.d.ts +680 -0
  138. package/dist/i18n/locales/zh.d.ts.map +1 -1
  139. package/dist/i18n/locales/zh.js +680 -0
  140. package/dist/i18n/locales/zh.js.map +1 -1
  141. package/dist/index.js +821 -803
  142. package/dist/index.js.map +1 -1
  143. package/dist/locales/ar.json +680 -0
  144. package/dist/locales/de.json +680 -0
  145. package/dist/locales/el.json +680 -0
  146. package/dist/locales/en.json +680 -0
  147. package/dist/locales/es.json +680 -0
  148. package/dist/locales/fr.json +680 -0
  149. package/dist/locales/hi.json +680 -0
  150. package/dist/locales/it.json +680 -0
  151. package/dist/locales/ja.json +680 -0
  152. package/dist/locales/nl.json +680 -0
  153. package/dist/locales/pl.json +680 -0
  154. package/dist/locales/pt.json +680 -0
  155. package/dist/locales/ro.json +680 -0
  156. package/dist/locales/ru.json +680 -0
  157. package/dist/locales/sq.json +680 -0
  158. package/dist/locales/sv.json +680 -0
  159. package/dist/locales/tr.json +680 -0
  160. package/dist/locales/zh.json +680 -0
  161. package/dist/patterns/calendar/calendar-workspace.d.ts +62 -0
  162. package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -0
  163. package/dist/patterns/calendar/calendar-workspace.model.d.ts +358 -0
  164. package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -0
  165. package/dist/patterns/calendar/calendar.data.d.ts +122 -0
  166. package/dist/patterns/calendar/calendar.data.d.ts.map +1 -0
  167. package/dist/patterns/calendar/calendar.host.d.ts +10 -0
  168. package/dist/patterns/calendar/calendar.host.d.ts.map +1 -0
  169. package/dist/patterns/calendar/calendar.journey.d.ts +119 -0
  170. package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -0
  171. package/dist/patterns/calendar/calendar.model.d.ts +684 -0
  172. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -0
  173. package/dist/patterns/calendar/calendar.preferences.d.ts +74 -0
  174. package/dist/patterns/calendar/calendar.preferences.d.ts.map +1 -0
  175. package/dist/patterns/calendar/calendar.sheets.d.ts +398 -0
  176. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -0
  177. package/dist/patterns/calendar/calendar.surface.d.ts +77 -0
  178. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -0
  179. package/dist/patterns/calendar/calendar.types.d.ts +413 -0
  180. package/dist/patterns/calendar/calendar.types.d.ts.map +1 -0
  181. package/dist/patterns/calendar/index.d.ts +13 -0
  182. package/dist/patterns/calendar/index.d.ts.map +1 -0
  183. package/dist/patterns/calendar/index.js +19 -0
  184. package/dist/patterns/calendar/index.js.map +1 -0
  185. package/package.json +5 -1
  186. package/dist/_chunks/actions-cell-renderer-ReurEy5i.js +0 -1945
  187. package/dist/_chunks/actions-cell-renderer-ReurEy5i.js.map +0 -1
  188. package/dist/_chunks/field-value-DG8zaZvo.js.map +0 -1
  189. package/dist/_chunks/file-manager-UsD8e_AB.js.map +0 -1
  190. package/dist/_chunks/patient-details-BQaUzPqp.js.map +0 -1
  191. package/dist/_chunks/practice-results-D7ygCj_W.js.map +0 -1
  192. package/dist/_chunks/signature-field-0rFODJlW.js.map +0 -1
  193. package/dist/_chunks/toast.agent-D1tdg6DS.js.map +0 -1
  194. package/dist/_chunks/workflow-map-wcw3t6g4.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature-field-0rFODJlW.js","sources":["../../node_modules/lucide-react/dist/esm/icons/signature.mjs","../../src/components/signature-field/signature-field.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.22.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.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21 17-2.156-1.868A.5.5 0 0 0 18 15.5v.5a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1c0-2.545-3.991-3.97-8.5-4a1 1 0 0 0 0 5c4.153 0 4.745-11.295 5.708-13.5a2.5 2.5 0 1 1 3.31 3.284\",\n key: \"y32ogt\"\n }\n ],\n [\"path\", { d: \"M3 21h18\", key: \"itz85i\" }]\n];\nconst Signature = createLucideIcon(\"signature\", __iconNode);\n\nexport { __iconNode, Signature as default };\n//# sourceMappingURL=signature.mjs.map\n","/* ------------------------------------------------------------------ */\n/* SignatureField — a single percent-positioned signature placeholder */\n/* rendered inside a PDFViewer page overlay (renderPageOverlay). */\n/* */\n/* Promoted from the story-only field demonstrated in */\n/* pdf-viewer.stories.tsx `WithSignatureFieldOverlays` (HTP-4889): the */\n/* sign.alfadocs.com rebuild needs N of these positioned over each PDF */\n/* page, each a real, keyboard-activatable control whose visual + a11y */\n/* state tracks unsigned → signing → signed. */\n/* */\n/* - Geometry: the consumer supplies percent coordinates */\n/* (insetInlineStart / insetBlockStart / inlineSize / blockSize) */\n/* relative to the overlay box. These are runtime-computed layout */\n/* values driven by consumer data, so they ride an inline `style` */\n/* per 23-constraints §Runtime-computed dimensions — the same */\n/* sanctioned exception PDFViewer/SignatureCapture use. All static */\n/* styling stays in CVA + tokens. Logical properties only, so the */\n/* field mirrors correctly over an RTL document. */\n/* - It IS an interactive control: a real <button>. The accessible name */\n/* reflects state (Sign here / Signing… / Signed); the 44/48px target */\n/* floor is enforced via --min-target-size. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type MouseEvent as ReactMouseEvent,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Check, PenLine, Signature } from 'lucide-react';\nimport { Spinner } from '../spinner';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type SignatureFieldState = 'unsigned' | 'signing' | 'signed';\n\nexport interface SignatureFieldProps extends Omit<\n ComponentPropsWithoutRef<'button'>,\n 'onClick' | 'children' | 'aria-label' | 'disabled'\n> {\n /** Lifecycle state. Drives both the visual treatment and the accessible name. */\n state?: SignatureFieldState;\n /**\n * Percent offset of the field's logical start edge within the overlay box.\n * Applied as a runtime-computed `inset-inline-start: {n}%`.\n */\n insetInlineStart?: number;\n /** Percent offset of the field's logical top edge. `inset-block-start: {n}%`. */\n insetBlockStart?: number;\n /** Percent of the overlay's logical inline size — the field width. */\n inlineSize?: number;\n /** Percent of the overlay's logical block size — the field height. */\n blockSize?: number;\n /** Called when an unsigned (or signed) field is activated by click / keyboard. */\n onActivate?: () => void;\n /** Captured signature image (PNG data URL or URL) shown when `state=\"signed\"`. */\n signedImageSrc?: string;\n /**\n * Caption shown in the unsigned prompt and used as the accessible name\n * (e.g. \"Sign here\", \"Date\", \"Initial here\"). Falls back to the\n * translated default prompt.\n */\n label?: string;\n /**\n * Visually hide the caption, leaving only a state glyph (the Signature\n * squiggle unsigned / check signed / spinner signing) — for small or\n * densely placed fields where a long label would overflow the box. The\n * `label` still forms the accessible name.\n */\n hideLabel?: boolean;\n /** Hard-disable the field (non-activatable, dimmed). Distinct from `state=\"signing\"`. */\n disabled?: boolean;\n /**\n * Marks the field as the one currently targeted by field-to-field navigation\n * (Next / Previous signature). Renders a **persistent** selection ring — not\n * the transient `:focus-visible` ring — so the signer can see which field\n * they're on as they step through, even after focus moves or is programmatic.\n */\n active?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst signatureFieldVariants = cva(\n [\n // Overlay fields are always absolutely positioned within the\n // renderPageOverlay box; the percent geometry rides the inline style.\n 'ds:absolute',\n 'ds:inline-flex ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]',\n // The visible box renders at its true percentage geometry. A min-size\n // floor here overstretched short fields past their authored box, so\n // neighbours collided (signed box overlapping the next field). The 44/48px\n // touch target is instead restored via a transparent ::before hit-area\n // expansion — the same pattern Button's `sm` size uses — applied on touch\n // viewports only; on desktop the precise box is the target.\n 'ds:before:absolute ds:before:content-[\"\"]',\n 'ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)]',\n 'ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)]',\n 'ds:sm:before:hidden',\n // Inline padding lives on the per-state variants below (not the base) so\n // the signed state's tighter padding can't collide with a base ps/pe on\n // the same logical side under Tailwind's JIT ordering.\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[length:var(--font-size-sm)] ds:font-medium',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\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:aria-disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n state: {\n unsigned: [\n 'ds:cursor-pointer',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:border ds:border-dashed ds:border-[color:var(--ring)]',\n 'ds:bg-[color-mix(in_srgb,var(--info)_8%,transparent)]',\n 'ds:text-[var(--foreground)]',\n 'ds:hover:bg-[color-mix(in_srgb,var(--info)_16%,transparent)]',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n signing: [\n 'ds:cursor-progress',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:border ds:border-dashed ds:border-[color:var(--border)]',\n 'ds:bg-[var(--muted)]',\n 'ds:text-[var(--muted-foreground)]',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n signed: [\n // overflow-hidden is NOT on the button root — it would clip the\n // ::before touch-target expansion. It lives on the inner image\n // wrapper instead (see render).\n 'ds:cursor-pointer',\n 'ds:p-[var(--spacing-xs)]',\n 'ds:border ds:border-solid ds:border-[color:var(--success)]',\n 'ds:bg-[color-mix(in_srgb,var(--success)_8%,transparent)]',\n 'ds:text-[var(--foreground)]',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n },\n // Persistent selection ring for the nav-targeted field. Uses the same\n // tokens as the focus ring but is NOT gated on :focus-visible, so it\n // stays visible as the signer steps between fields. When the field is\n // also focused, the base focus-visible ring composes over it (same\n // outline property, same value) — no visual clash.\n active: {\n true: [\n 'ds:outline-solid',\n 'ds:outline-[length:var(--focus-ring-width)]',\n 'ds:outline-[var(--ring)]',\n 'ds:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:outline-[Highlight]',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: { state: 'unsigned', active: false },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* SignatureField */\n/* ------------------------------------------------------------------ */\n\nexport const SignatureField = forwardRef<\n HTMLButtonElement,\n SignatureFieldProps\n>(\n (\n {\n state = 'unsigned',\n insetInlineStart,\n insetBlockStart,\n inlineSize,\n blockSize,\n onActivate,\n signedImageSrc,\n label,\n hideLabel = false,\n disabled = false,\n active = false,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const inactive = disabled || state === 'signing';\n\n // Runtime-computed overlay geometry — consumer percent coordinates over\n // the PDF page. Inline style is the sanctioned exception here\n // (23-constraints §Runtime-computed dimensions); logical properties keep\n // the field mirrored over RTL documents.\n const geometry: CSSProperties = {};\n if (insetInlineStart !== undefined) {\n geometry.insetInlineStart = `${insetInlineStart}%`;\n }\n if (insetBlockStart !== undefined) {\n geometry.insetBlockStart = `${insetBlockStart}%`;\n }\n if (inlineSize !== undefined) {\n geometry.inlineSize = `${inlineSize}%`;\n }\n if (blockSize !== undefined) {\n geometry.blockSize = `${blockSize}%`;\n }\n\n // `prompt` is the visible caption fallback; `unsigned` is the\n // accessible-name fallback — intentionally distinct strings.\n const promptText = label ?? t('signatureField.prompt');\n // The signed/signing names compose the field's `label` with the status so\n // several signed fields on one page stay individually identifiable (signed\n // fields remain activatable for re-signing); falls back to the bare status\n // when no label is supplied.\n const accessibleName =\n state === 'signing'\n ? label\n ? t('signatureField.signingNamed', { label })\n : t('signatureField.signing')\n : state === 'signed'\n ? label\n ? t('signatureField.signedNamed', { label })\n : t('signatureField.signed')\n : (label ?? t('signatureField.unsigned'));\n\n function handleClick(event: ReactMouseEvent<HTMLButtonElement>): void {\n if (inactive) {\n event.preventDefault();\n return;\n }\n onActivate?.();\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n {...rest}\n data-component=\"signature-field\"\n data-component-id={id}\n data-state={state}\n data-active={active || undefined}\n aria-label={accessibleName}\n aria-disabled={inactive || undefined}\n aria-busy={state === 'signing' || undefined}\n onClick={handleClick}\n className={[signatureFieldVariants({ state, active }), className]\n .filter(Boolean)\n .join(' ')}\n // eslint-disable-next-line react/forbid-dom-props -- runtime-computed overlay geometry: consumer percent coordinates over the PDF page (23-constraints §Runtime-computed dimensions)\n style={geometry}\n >\n {state === 'signing' ? (\n // Decorative: the button's aria-label + aria-busy are the single\n // source of the status announcement, so the Spinner's own\n // role=\"status\" live region is hidden from assistive tech.\n <span aria-hidden=\"true\">\n <Spinner\n variant=\"pulse\"\n size=\"sm\"\n label={t('signatureField.signing')}\n />\n </span>\n ) : state === 'signed' ? (\n signedImageSrc ? (\n // overflow-hidden + rounding live on this inner wrapper (not the\n // button root) so the signature is clipped to the box WITHOUT\n // clipping the button's ::before touch-target expansion.\n <span className=\"ds:inline-size-full ds:block-size-full ds:overflow-hidden ds:rounded-[var(--radius-sm)]\">\n <img\n src={signedImageSrc}\n alt=\"\"\n aria-hidden=\"true\"\n className=\"ds:block-size-full ds:inline-size-full ds:object-contain\"\n />\n </span>\n ) : (\n <>\n <Check\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4 ds:text-[var(--success)]\"\n />\n {hideLabel ? null : <span>{t('signatureField.signed')}</span>}\n </>\n )\n ) : hideLabel ? (\n // Glyph-only unsigned prompt — the Signature squiggle reads as\n // \"sign here\" on its own, where the pen + caption would overflow.\n <Signature aria-hidden=\"true\" className=\"ds:size-5\" />\n ) : (\n <>\n <PenLine\n aria-hidden=\"true\"\n className=\"ds:block-size-4 ds:inline-size-4\"\n />\n <span>{promptText}</span>\n </>\n )}\n </button>\n );\n },\n);\n\nSignatureField.displayName = 'SignatureField';\n\nexport { signatureFieldVariants };\n"],"names":["__iconNode","Signature","createLucideIcon","signatureFieldVariants","cva","SignatureField","forwardRef","state","insetInlineStart","insetBlockStart","inlineSize","blockSize","onActivate","signedImageSrc","label","hideLabel","disabled","active","id","className","rest","ref","t","useTranslation","inactive","geometry","promptText","accessibleName","handleClick","event","jsx","Spinner","jsxs","Fragment","Check","PenLine"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toast.agent-D1tdg6DS.js","sources":["../../node_modules/sonner/dist/index.mjs","../../src/components/toast/toast.tsx","../../src/components/toast/toast.agent.ts"],"sourcesContent":["'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nconst getAsset = (type)=>{\n switch(type){\n case 'success':\n return SuccessIcon;\n case 'info':\n return InfoIcon;\n case 'warning':\n return WarningIcon;\n case 'error':\n return ErrorIcon;\n default:\n return null;\n }\n};\nconst bars = Array(12).fill(0);\nconst Loader = ({ visible, className })=>{\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: [\n 'sonner-loading-wrapper',\n className\n ].filter(Boolean).join(' '),\n \"data-visible\": visible\n }, /*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-spinner\"\n }, bars.map((_, i)=>/*#__PURE__*/ React.createElement(\"div\", {\n className: \"sonner-loading-bar\",\n key: `spinner-bar-${i}`\n }))));\n};\nconst SuccessIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",\n clipRule: \"evenodd\"\n}));\nconst WarningIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",\n clipRule: \"evenodd\"\n}));\nconst InfoIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",\n clipRule: \"evenodd\"\n}));\nconst ErrorIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n fill: \"currentColor\",\n height: \"20\",\n width: \"20\"\n}, /*#__PURE__*/ React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",\n clipRule: \"evenodd\"\n}));\nconst CloseIcon = /*#__PURE__*/ React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n}, /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n}), /*#__PURE__*/ React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n}));\n\nconst useIsDocumentHidden = ()=>{\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n React.useEffect(()=>{\n const callback = ()=>{\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return ()=>window.removeEventListener('visibilitychange', callback);\n }, []);\n return isDocumentHidden;\n};\n\nlet toastsCounter = 1;\nclass Observer {\n constructor(){\n // We use arrow functions to maintain the correct `this` reference\n this.subscribe = (subscriber)=>{\n this.subscribers.push(subscriber);\n return ()=>{\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n this.publish = (data)=>{\n this.subscribers.forEach((subscriber)=>subscriber(data));\n };\n this.addToast = (data)=>{\n this.publish(data);\n this.toasts = [\n ...this.toasts,\n data\n ];\n };\n this.create = (data)=>{\n var _data_id;\n const { message, ...rest } = data;\n const id = typeof (data == null ? void 0 : data.id) === 'number' || ((_data_id = data.id) == null ? void 0 : _data_id.length) > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast)=>{\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n if (this.dismissedToasts.has(id)) {\n this.dismissedToasts.delete(id);\n }\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast)=>{\n if (toast.id === id) {\n this.publish({\n ...toast,\n ...data,\n id,\n title: message\n });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message\n };\n }\n return toast;\n });\n } else {\n this.addToast({\n title: message,\n ...rest,\n dismissible,\n id\n });\n }\n return id;\n };\n this.dismiss = (id)=>{\n if (id) {\n this.dismissedToasts.add(id);\n requestAnimationFrame(()=>this.subscribers.forEach((subscriber)=>subscriber({\n id,\n dismiss: true\n })));\n } else {\n this.toasts.forEach((toast)=>{\n this.subscribers.forEach((subscriber)=>subscriber({\n id: toast.id,\n dismiss: true\n }));\n });\n }\n return id;\n };\n this.message = (message, data)=>{\n return this.create({\n ...data,\n message\n });\n };\n this.error = (message, data)=>{\n return this.create({\n ...data,\n message,\n type: 'error'\n });\n };\n this.success = (message, data)=>{\n return this.create({\n ...data,\n type: 'success',\n message\n });\n };\n this.info = (message, data)=>{\n return this.create({\n ...data,\n type: 'info',\n message\n });\n };\n this.warning = (message, data)=>{\n return this.create({\n ...data,\n type: 'warning',\n message\n });\n };\n this.loading = (message, data)=>{\n return this.create({\n ...data,\n type: 'loading',\n message\n });\n };\n this.promise = (promise, data)=>{\n if (!data) {\n // Nothing to show\n return;\n }\n let id = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined\n });\n }\n const p = Promise.resolve(promise instanceof Function ? promise() : promise);\n let shouldDismiss = id !== undefined;\n let result;\n const originalPromise = p.then(async (response)=>{\n result = [\n 'resolve',\n response\n ];\n const isReactElementResponse = React.isValidElement(response);\n if (isReactElementResponse) {\n shouldDismiss = false;\n this.create({\n id,\n type: 'default',\n message: response\n });\n } else if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description = typeof data.description === 'function' ? await data.description(`HTTP error! status: ${response.status}`) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (response instanceof Error) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(response) : data.error;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description = typeof data.description === 'function' ? await data.description(response) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'success',\n description,\n ...toastSettings\n });\n }\n }).catch(async (error)=>{\n result = [\n 'reject',\n error\n ];\n if (data.error !== undefined) {\n shouldDismiss = false;\n const promiseData = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n const isExtendedResult = typeof promiseData === 'object' && !React.isValidElement(promiseData);\n const toastSettings = isExtendedResult ? promiseData : {\n message: promiseData\n };\n this.create({\n id,\n type: 'error',\n description,\n ...toastSettings\n });\n }\n }).finally(()=>{\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n data.finally == null ? void 0 : data.finally.call(data);\n });\n const unwrap = ()=>new Promise((resolve, reject)=>originalPromise.then(()=>result[0] === 'reject' ? reject(result[1]) : resolve(result[1])).catch(reject));\n if (typeof id !== 'string' && typeof id !== 'number') {\n // cannot Object.assign on undefined\n return {\n unwrap\n };\n } else {\n return Object.assign(id, {\n unwrap\n });\n }\n };\n this.custom = (jsx, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n this.create({\n jsx: jsx(id),\n id,\n ...data\n });\n return id;\n };\n this.getActiveToasts = ()=>{\n return this.toasts.filter((toast)=>!this.dismissedToasts.has(toast.id));\n };\n this.subscribers = [];\n this.toasts = [];\n this.dismissedToasts = new Set();\n }\n}\nconst ToastState = new Observer();\n// bind this to the toast function\nconst toastFunction = (message, data)=>{\n const id = (data == null ? void 0 : data.id) || toastsCounter++;\n ToastState.addToast({\n title: message,\n ...data,\n id\n });\n return id;\n};\nconst isHttpResponse = (data)=>{\n return data && typeof data === 'object' && 'ok' in data && typeof data.ok === 'boolean' && 'status' in data && typeof data.status === 'number';\n};\nconst basicToast = toastFunction;\nconst getHistory = ()=>ToastState.toasts;\nconst getToasts = ()=>ToastState.getActiveToasts();\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nconst toast = Object.assign(basicToast, {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading\n}, {\n getHistory,\n getToasts\n});\n\n__insertCSS(\"[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\");\n\nfunction isAction(action) {\n return action.label !== undefined;\n}\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n// Viewport padding\nconst VIEWPORT_OFFSET = '24px';\n// Mobile viewport padding\nconst MOBILE_VIEWPORT_OFFSET = '16px';\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n// Default toast width\nconst TOAST_WIDTH = 356;\n// Default gap between toasts\nconst GAP = 14;\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 45;\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\nfunction cn(...classes) {\n return classes.filter(Boolean).join(' ');\n}\nfunction getDefaultSwipeDirections(position) {\n const [y, x] = position.split('-');\n const directions = [];\n if (y) {\n directions.push(y);\n }\n if (x) {\n directions.push(x);\n }\n return directions;\n}\nconst Toast = (props)=>{\n var _toast_classNames, _toast_classNames1, _toast_classNames2, _toast_classNames3, _toast_classNames4, _toast_classNames5, _toast_classNames6, _toast_classNames7, _toast_classNames8;\n const { invert: ToasterInvert, toast, unstyled, interacting, setHeights, visibleToasts, heights, index, toasts, expanded, removeToast, defaultRichColors, closeButton: closeButtonFromToaster, style, cancelButtonStyle, actionButtonStyle, className = '', descriptionClassName = '', duration: durationFromToaster, position, gap, expandByDefault, classNames, icons, closeButtonAriaLabel = 'Close toast' } = props;\n const [swipeDirection, setSwipeDirection] = React.useState(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState(null);\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const remainingTime = React.useRef(toast.duration || durationFromToaster || TOAST_LIFETIME);\n const dragStartTime = React.useRef(null);\n const toastRef = React.useRef(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(()=>heights.findIndex((height)=>height.toastId === toast.id) || 0, [\n heights,\n toast.id\n ]);\n const closeButton = React.useMemo(()=>{\n var _toast_closeButton;\n return (_toast_closeButton = toast.closeButton) != null ? _toast_closeButton : closeButtonFromToaster;\n }, [\n toast.closeButton,\n closeButtonFromToaster\n ]);\n const duration = React.useMemo(()=>toast.duration || durationFromToaster || TOAST_LIFETIME, [\n toast.duration,\n durationFromToaster\n ]);\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(()=>{\n return heights.reduce((prev, curr, reducerIndex)=>{\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n return prev + curr.height;\n }, 0);\n }, [\n heights,\n heightIndex\n ]);\n const isDocumentHidden = useIsDocumentHidden();\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n offset.current = React.useMemo(()=>heightIndex * gap + toastsHeightBefore, [\n heightIndex,\n toastsHeightBefore\n ]);\n React.useEffect(()=>{\n remainingTime.current = duration;\n }, [\n duration\n ]);\n React.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n React.useEffect(()=>{\n const toastNode = toastRef.current;\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n // Add toast height to heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h)=>[\n {\n toastId: toast.id,\n height,\n position: toast.position\n },\n ...h\n ]);\n return ()=>setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n }\n }, [\n setHeights,\n toast.id\n ]);\n React.useLayoutEffect(()=>{\n // Keep height up to date with the content in case it updates\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n setInitialHeight(newHeight);\n setHeights((heights)=>{\n const alreadyExists = heights.find((height)=>height.toastId === toast.id);\n if (!alreadyExists) {\n return [\n {\n toastId: toast.id,\n height: newHeight,\n position: toast.position\n },\n ...heights\n ];\n } else {\n return heights.map((height)=>height.toastId === toast.id ? {\n ...height,\n height: newHeight\n } : height);\n }\n });\n }, [\n mounted,\n toast.title,\n toast.description,\n setHeights,\n toast.id,\n toast.jsx,\n toast.action,\n toast.cancel\n ]);\n const deleteToast = React.useCallback(()=>{\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h)=>h.filter((height)=>height.toastId !== toast.id));\n setTimeout(()=>{\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [\n toast,\n removeToast,\n setHeights,\n offset\n ]);\n React.useEffect(()=>{\n if (toast.promise && toastType === 'loading' || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId;\n // Pause the timer on each hover\n const pauseTimer = ()=>{\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n remainingTime.current = remainingTime.current - elapsedTime;\n }\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n const startTimer = ()=>{\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime.current === Infinity) return;\n closeTimerStartTimeRef.current = new Date().getTime();\n // Let the toast know it has started\n timeoutId = setTimeout(()=>{\n toast.onAutoClose == null ? void 0 : toast.onAutoClose.call(toast, toast);\n deleteToast();\n }, remainingTime.current);\n };\n if (expanded || interacting || isDocumentHidden) {\n pauseTimer();\n } else {\n startTimer();\n }\n return ()=>clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n toast,\n toastType,\n isDocumentHidden,\n deleteToast\n ]);\n React.useEffect(()=>{\n if (toast.delete) {\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n }\n }, [\n deleteToast,\n toast.delete\n ]);\n function getLoadingIcon() {\n var _toast_classNames;\n if (icons == null ? void 0 : icons.loading) {\n var _toast_classNames1;\n return /*#__PURE__*/ React.createElement(\"div\", {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1.loader, 'sonner-loader'),\n \"data-visible\": toastType === 'loading'\n }, icons.loading);\n }\n return /*#__PURE__*/ React.createElement(Loader, {\n className: cn(classNames == null ? void 0 : classNames.loader, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.loader),\n visible: toastType === 'loading'\n });\n }\n const icon = toast.icon || (icons == null ? void 0 : icons[toastType]) || getAsset(toastType);\n var _toast_richColors, _icons_close;\n return /*#__PURE__*/ React.createElement(\"li\", {\n tabIndex: 0,\n ref: toastRef,\n className: cn(className, toastClassname, classNames == null ? void 0 : classNames.toast, toast == null ? void 0 : (_toast_classNames = toast.classNames) == null ? void 0 : _toast_classNames.toast, classNames == null ? void 0 : classNames.default, classNames == null ? void 0 : classNames[toastType], toast == null ? void 0 : (_toast_classNames1 = toast.classNames) == null ? void 0 : _toast_classNames1[toastType]),\n \"data-sonner-toast\": \"\",\n \"data-rich-colors\": (_toast_richColors = toast.richColors) != null ? _toast_richColors : defaultRichColors,\n \"data-styled\": !Boolean(toast.jsx || toast.unstyled || unstyled),\n \"data-mounted\": mounted,\n \"data-promise\": Boolean(toast.promise),\n \"data-swiped\": isSwiped,\n \"data-removed\": removed,\n \"data-visible\": isVisible,\n \"data-y-position\": y,\n \"data-x-position\": x,\n \"data-index\": index,\n \"data-front\": isFront,\n \"data-swiping\": swiping,\n \"data-dismissible\": dismissible,\n \"data-type\": toastType,\n \"data-invert\": invert,\n \"data-swipe-out\": swipeOut,\n \"data-swipe-direction\": swipeOutDirection,\n \"data-expanded\": Boolean(expanded || expandByDefault && mounted),\n \"data-testid\": toast.testId,\n style: {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style\n },\n onDragEnd: ()=>{\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartRef.current = null;\n },\n onPointerDown: (event)=>{\n if (event.button === 2) return; // Return early on right click\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n event.target.setPointerCapture(event.pointerId);\n if (event.target.tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = {\n x: event.clientX,\n y: event.clientY\n };\n },\n onPointerUp: ()=>{\n var _toastRef_current, _toastRef_current1, _dragStartTime_current;\n if (swipeOut || !dismissible) return;\n pointerStartRef.current = null;\n const swipeAmountX = Number(((_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.getPropertyValue('--swipe-amount-x').replace('px', '')) || 0);\n const swipeAmountY = Number(((_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.getPropertyValue('--swipe-amount-y').replace('px', '')) || 0);\n const timeTaken = new Date().getTime() - ((_dragStartTime_current = dragStartTime.current) == null ? void 0 : _dragStartTime_current.getTime());\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / timeTaken;\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n deleteToast();\n setSwipeOut(true);\n return;\n } else {\n var _toastRef_current2, _toastRef_current3;\n (_toastRef_current2 = toastRef.current) == null ? void 0 : _toastRef_current2.style.setProperty('--swipe-amount-x', `0px`);\n (_toastRef_current3 = toastRef.current) == null ? void 0 : _toastRef_current3.style.setProperty('--swipe-amount-y', `0px`);\n }\n setIsSwiped(false);\n setSwiping(false);\n setSwipeDirection(null);\n },\n onPointerMove: (event)=>{\n var _window_getSelection, // Apply transform using both x and y values\n _toastRef_current, _toastRef_current1;\n if (!pointerStartRef.current || !dismissible) return;\n const isHighlighted = ((_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString().length) > 0;\n if (isHighlighted) return;\n const yDelta = event.clientY - pointerStartRef.current.y;\n const xDelta = event.clientX - pointerStartRef.current.x;\n var _props_swipeDirections;\n const swipeDirections = (_props_swipeDirections = props.swipeDirections) != null ? _props_swipeDirections : getDefaultSwipeDirections(position);\n // Determine swipe direction if not already locked\n if (!swipeDirection && (Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1)) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n let swipeAmount = {\n x: 0,\n y: 0\n };\n const getDampening = (delta)=>{\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n };\n // Only apply swipe in the locked direction\n if (swipeDirection === 'y') {\n // Handle vertical swipes\n if (swipeDirections.includes('top') || swipeDirections.includes('bottom')) {\n if (swipeDirections.includes('top') && yDelta < 0 || swipeDirections.includes('bottom') && yDelta > 0) {\n swipeAmount.y = yDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = yDelta * getDampening(yDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.y = Math.abs(dampenedDelta) < Math.abs(yDelta) ? dampenedDelta : yDelta;\n }\n }\n } else if (swipeDirection === 'x') {\n // Handle horizontal swipes\n if (swipeDirections.includes('left') || swipeDirections.includes('right')) {\n if (swipeDirections.includes('left') && xDelta < 0 || swipeDirections.includes('right') && xDelta > 0) {\n swipeAmount.x = xDelta;\n } else {\n // Smoothly transition to dampened movement\n const dampenedDelta = xDelta * getDampening(xDelta);\n // Ensure we don't jump when transitioning to dampened movement\n swipeAmount.x = Math.abs(dampenedDelta) < Math.abs(xDelta) ? dampenedDelta : xDelta;\n }\n }\n }\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n (_toastRef_current = toastRef.current) == null ? void 0 : _toastRef_current.style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (_toastRef_current1 = toastRef.current) == null ? void 0 : _toastRef_current1.style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n }\n }, closeButton && !toast.jsx && toastType !== 'loading' ? /*#__PURE__*/ React.createElement(\"button\", {\n \"aria-label\": closeButtonAriaLabel,\n \"data-disabled\": disabled,\n \"data-close-button\": true,\n onClick: disabled || !dismissible ? ()=>{} : ()=>{\n deleteToast();\n toast.onDismiss == null ? void 0 : toast.onDismiss.call(toast, toast);\n },\n className: cn(classNames == null ? void 0 : classNames.closeButton, toast == null ? void 0 : (_toast_classNames2 = toast.classNames) == null ? void 0 : _toast_classNames2.closeButton)\n }, (_icons_close = icons == null ? void 0 : icons.close) != null ? _icons_close : CloseIcon) : null, (toastType || toast.icon || toast.promise) && toast.icon !== null && ((icons == null ? void 0 : icons[toastType]) !== null || toast.icon) ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-icon\": \"\",\n className: cn(classNames == null ? void 0 : classNames.icon, toast == null ? void 0 : (_toast_classNames3 = toast.classNames) == null ? void 0 : _toast_classNames3.icon)\n }, toast.promise || toast.type === 'loading' && !toast.icon ? toast.icon || getLoadingIcon() : null, toast.type !== 'loading' ? icon : null) : null, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-content\": \"\",\n className: cn(classNames == null ? void 0 : classNames.content, toast == null ? void 0 : (_toast_classNames4 = toast.classNames) == null ? void 0 : _toast_classNames4.content)\n }, /*#__PURE__*/ React.createElement(\"div\", {\n \"data-title\": \"\",\n className: cn(classNames == null ? void 0 : classNames.title, toast == null ? void 0 : (_toast_classNames5 = toast.classNames) == null ? void 0 : _toast_classNames5.title)\n }, toast.jsx ? toast.jsx : typeof toast.title === 'function' ? toast.title() : toast.title), toast.description ? /*#__PURE__*/ React.createElement(\"div\", {\n \"data-description\": \"\",\n className: cn(descriptionClassName, toastDescriptionClassname, classNames == null ? void 0 : classNames.description, toast == null ? void 0 : (_toast_classNames6 = toast.classNames) == null ? void 0 : _toast_classNames6.description)\n }, typeof toast.description === 'function' ? toast.description() : toast.description) : null), /*#__PURE__*/ React.isValidElement(toast.cancel) ? toast.cancel : toast.cancel && isAction(toast.cancel) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-cancel\": true,\n style: toast.cancelButtonStyle || cancelButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick == null ? void 0 : toast.cancel.onClick.call(toast.cancel, event);\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.cancelButton, toast == null ? void 0 : (_toast_classNames7 = toast.classNames) == null ? void 0 : _toast_classNames7.cancelButton)\n }, toast.cancel.label) : null, /*#__PURE__*/ React.isValidElement(toast.action) ? toast.action : toast.action && isAction(toast.action) ? /*#__PURE__*/ React.createElement(\"button\", {\n \"data-button\": true,\n \"data-action\": true,\n style: toast.actionButtonStyle || actionButtonStyle,\n onClick: (event)=>{\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n toast.action.onClick == null ? void 0 : toast.action.onClick.call(toast.action, event);\n if (event.defaultPrevented) return;\n deleteToast();\n },\n className: cn(classNames == null ? void 0 : classNames.actionButton, toast == null ? void 0 : (_toast_classNames8 = toast.classNames) == null ? void 0 : _toast_classNames8.actionButton)\n }, toast.action.label) : null);\n};\nfunction getDocumentDirection() {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n const dirAttribute = document.documentElement.getAttribute('dir');\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction;\n }\n return dirAttribute;\n}\nfunction assignOffset(defaultOffset, mobileOffset) {\n const styles = {};\n [\n defaultOffset,\n mobileOffset\n ].forEach((offset, index)=>{\n const isMobile = index === 1;\n const prefix = isMobile ? '--mobile-offset' : '--offset';\n const defaultValue = isMobile ? MOBILE_VIEWPORT_OFFSET : VIEWPORT_OFFSET;\n function assignAll(offset) {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n styles[`${prefix}-${key}`] = typeof offset === 'number' ? `${offset}px` : offset;\n });\n }\n if (typeof offset === 'number' || typeof offset === 'string') {\n assignAll(offset);\n } else if (typeof offset === 'object') {\n [\n 'top',\n 'right',\n 'bottom',\n 'left'\n ].forEach((key)=>{\n if (offset[key] === undefined) {\n styles[`${prefix}-${key}`] = defaultValue;\n } else {\n styles[`${prefix}-${key}`] = typeof offset[key] === 'number' ? `${offset[key]}px` : offset[key];\n }\n });\n } else {\n assignAll(defaultValue);\n }\n });\n return styles;\n}\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState([]);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>toasts.filter((t)=>t.id !== toast.id));\n });\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setActiveToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, []);\n return {\n toasts: activeToasts\n };\n}\nconst Toaster = /*#__PURE__*/ React.forwardRef(function Toaster(props, ref) {\n const { id, invert, position = 'bottom-right', hotkey = [\n 'altKey',\n 'KeyT'\n ], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;\n const [toasts, setToasts] = React.useState([]);\n const filteredToasts = React.useMemo(()=>{\n if (id) {\n return toasts.filter((toast)=>toast.toasterId === id);\n }\n return toasts.filter((toast)=>!toast.toasterId);\n }, [\n toasts,\n id\n ]);\n const possiblePositions = React.useMemo(()=>{\n return Array.from(new Set([\n position\n ].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));\n }, [\n filteredToasts,\n position\n ]);\n const [heights, setHeights] = React.useState([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(theme !== 'system' ? theme : typeof window !== 'undefined' ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' : 'light');\n const listRef = React.useRef(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef(null);\n const isFocusWithinRef = React.useRef(false);\n const removeToast = React.useCallback((toastToRemove)=>{\n setToasts((toasts)=>{\n var _toasts_find;\n if (!((_toasts_find = toasts.find((toast)=>toast.id === toastToRemove.id)) == null ? void 0 : _toasts_find.delete)) {\n ToastState.dismiss(toastToRemove.id);\n }\n return toasts.filter(({ id })=>id !== toastToRemove.id);\n });\n }, []);\n React.useEffect(()=>{\n return ToastState.subscribe((toast)=>{\n if (toast.dismiss) {\n // Prevent batching of other state updates\n requestAnimationFrame(()=>{\n setToasts((toasts)=>toasts.map((t)=>t.id === toast.id ? {\n ...t,\n delete: true\n } : t));\n });\n return;\n }\n // Prevent batching, temp solution.\n setTimeout(()=>{\n ReactDOM.flushSync(()=>{\n setToasts((toasts)=>{\n const indexOfExistingToast = toasts.findIndex((t)=>t.id === toast.id);\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n {\n ...toasts[indexOfExistingToast],\n ...toast\n },\n ...toasts.slice(indexOfExistingToast + 1)\n ];\n }\n return [\n toast,\n ...toasts\n ];\n });\n });\n });\n });\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n if (typeof window === 'undefined') return;\n const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n try {\n // Chrome & Firefox\n darkMediaQuery.addEventListener('change', ({ matches })=>{\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n } catch (error) {\n // Safari < 14\n darkMediaQuery.addListener(({ matches })=>{\n try {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n }, [\n theme\n ]);\n React.useEffect(()=>{\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [\n toasts\n ]);\n React.useEffect(()=>{\n const handleKeyDown = (event)=>{\n var _listRef_current;\n const isHotkeyPressed = hotkey.every((key)=>event[key] || event.code === key);\n if (isHotkeyPressed) {\n var _listRef_current1;\n setExpanded(true);\n (_listRef_current1 = listRef.current) == null ? void 0 : _listRef_current1.focus();\n }\n if (event.code === 'Escape' && (document.activeElement === listRef.current || ((_listRef_current = listRef.current) == null ? void 0 : _listRef_current.contains(document.activeElement)))) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return ()=>document.removeEventListener('keydown', handleKeyDown);\n }, [\n hotkey\n ]);\n React.useEffect(()=>{\n if (listRef.current) {\n return ()=>{\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [\n listRef.current\n ]);\n return(// Remove item from normal navigation flow, only available via hotkey\n /*#__PURE__*/ React.createElement(\"section\", {\n ref: ref,\n \"aria-label\": `${containerAriaLabel} ${hotkeyLabel}`,\n tabIndex: -1,\n \"aria-live\": \"polite\",\n \"aria-relevant\": \"additions text\",\n \"aria-atomic\": \"false\",\n suppressHydrationWarning: true\n }, possiblePositions.map((position, index)=>{\n var _heights_;\n const [y, x] = position.split('-');\n if (!filteredToasts.length) return null;\n return /*#__PURE__*/ React.createElement(\"ol\", {\n key: position,\n dir: dir === 'auto' ? getDocumentDirection() : dir,\n tabIndex: -1,\n ref: listRef,\n className: className,\n \"data-sonner-toaster\": true,\n \"data-sonner-theme\": actualTheme,\n \"data-y-position\": y,\n \"data-x-position\": x,\n style: {\n '--front-toast-height': `${((_heights_ = heights[0]) == null ? void 0 : _heights_.height) || 0}px`,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n ...assignOffset(offset, mobileOffset)\n },\n onBlur: (event)=>{\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({\n preventScroll: true\n });\n lastFocusedElementRef.current = null;\n }\n }\n },\n onFocus: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget;\n }\n },\n onMouseEnter: ()=>setExpanded(true),\n onMouseMove: ()=>setExpanded(true),\n onMouseLeave: ()=>{\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n },\n onDragEnd: ()=>setExpanded(false),\n onPointerDown: (event)=>{\n const isNotDismissible = event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n if (isNotDismissible) return;\n setInteracting(true);\n },\n onPointerUp: ()=>setInteracting(false)\n }, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{\n var _toastOptions_duration, _toastOptions_closeButton;\n return /*#__PURE__*/ React.createElement(Toast, {\n key: toast.id,\n icons: icons,\n index: index,\n toast: toast,\n defaultRichColors: richColors,\n duration: (_toastOptions_duration = toastOptions == null ? void 0 : toastOptions.duration) != null ? _toastOptions_duration : duration,\n className: toastOptions == null ? void 0 : toastOptions.className,\n descriptionClassName: toastOptions == null ? void 0 : toastOptions.descriptionClassName,\n invert: invert,\n visibleToasts: visibleToasts,\n closeButton: (_toastOptions_closeButton = toastOptions == null ? void 0 : toastOptions.closeButton) != null ? _toastOptions_closeButton : closeButton,\n interacting: interacting,\n position: position,\n style: toastOptions == null ? void 0 : toastOptions.style,\n unstyled: toastOptions == null ? void 0 : toastOptions.unstyled,\n classNames: toastOptions == null ? void 0 : toastOptions.classNames,\n cancelButtonStyle: toastOptions == null ? void 0 : toastOptions.cancelButtonStyle,\n actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,\n closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,\n removeToast: removeToast,\n toasts: filteredToasts.filter((t)=>t.position == toast.position),\n heights: heights.filter((h)=>h.position == toast.position),\n setHeights: setHeights,\n expandByDefault: expand,\n gap: gap,\n expanded: expanded,\n swipeDirections: props.swipeDirections\n });\n }));\n })));\n});\n\nexport { Toaster, toast, useSonner };\n","import { type ReactNode, useEffect, useRef, useState } from 'react';\nimport { Toaster as SonnerToaster, toast } from 'sonner';\nimport { useTranslation } from 'react-i18next';\nimport { Info, CircleCheck, TriangleAlert, CircleAlert, X } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\nconst iconMap = {\n info: (\n <Info\n aria-hidden=\"true\"\n size={20}\n className=\"ds:shrink-0 ds:text-[var(--info)]\"\n />\n ),\n success: (\n <CircleCheck\n aria-hidden=\"true\"\n size={20}\n className=\"ds:shrink-0 ds:text-[var(--success)]\"\n />\n ),\n warning: (\n <TriangleAlert\n aria-hidden=\"true\"\n size={20}\n className=\"ds:shrink-0 ds:text-[var(--warning)]\"\n />\n ),\n error: (\n <CircleAlert\n aria-hidden=\"true\"\n size={20}\n className=\"ds:shrink-0 ds:text-[var(--destructive)]\"\n />\n ),\n} as const;\n\n// Ensures only one SonnerToaster is active at a time (guards against multiple\n// mounts on Storybook docs pages where each story gets its own React root).\nlet _toasterActive = false;\n\n// Track currently-visible toasts by id so the agent adapter can snapshot the\n// active set without scraping the DOM. Updated by `fireToast` on creation and\n// by the `onDismiss` / `onAutoClose` sonner callbacks.\nconst _activeToasts = new Set<string>();\n\ntype LogicalPosition =\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end';\n\ntype PhysicalPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'top-center'\n | 'bottom-center';\n\nfunction resolvePosition(logical: LogicalPosition): PhysicalPosition {\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n\n const map: Record<LogicalPosition, PhysicalPosition> = {\n 'top-start': isRtl ? 'top-right' : 'top-left',\n 'top-center': 'top-center',\n 'top-end': isRtl ? 'top-left' : 'top-right',\n 'bottom-start': isRtl ? 'bottom-right' : 'bottom-left',\n 'bottom-center': 'bottom-center',\n 'bottom-end': isRtl ? 'bottom-left' : 'bottom-right',\n };\n\n return map[logical];\n}\n\nexport interface ToasterProps {\n position?: LogicalPosition;\n offset?: string;\n gap?: number;\n visibleToasts?: number;\n className?: string;\n}\n\nexport function Toaster({\n position = 'bottom-end',\n offset = 'var(--spacing-lg)',\n gap = 8,\n visibleToasts = 3,\n className,\n}: ToasterProps) {\n const [isActive] = useState(() => {\n if (_toasterActive) return false;\n _toasterActive = true;\n return true;\n });\n\n // Sonner renders a portaled <ol data-sonner-toaster> at <body>. It does\n // NOT spread arbitrary props onto that element, so we can't pass\n // `data-component` as a prop. Instead, ref-callback and set it imperatively.\n // This is the bounding marker the kit's cascade reset depends on — without\n // it, toasts portal outside any `[data-component]` ancestor and miss the\n // scoped preflight.\n const toasterRef = useRef<HTMLElement | null>(null);\n\n const [docDir, setDocDir] = useState<'ltr' | 'rtl'>(() =>\n typeof document !== 'undefined'\n ? (document.documentElement.dir as 'ltr' | 'rtl') || 'ltr'\n : 'ltr',\n );\n\n useEffect(() => {\n return () => {\n if (isActive) _toasterActive = false;\n };\n }, [isActive]);\n\n useEffect(() => {\n if (!isActive) return;\n const obs = new MutationObserver(() => {\n setDocDir((document.documentElement.dir as 'ltr' | 'rtl') || 'ltr');\n });\n obs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n });\n return () => obs.disconnect();\n }, [isActive]);\n\n if (!isActive) return null;\n\n return (\n <SonnerToaster\n ref={(el) => {\n toasterRef.current = el;\n if (el) el.setAttribute('data-component', 'toast-region');\n }}\n dir={docDir}\n position={resolvePosition(position)}\n richColors={false}\n visibleToasts={visibleToasts}\n gap={gap}\n offset={offset}\n className={className}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast: [\n 'ds:flex ds:items-center',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-sm)]',\n 'ds:[max-inline-size:360px] ds:max-sm:[max-inline-size:88dvw]',\n 'break-words',\n 'ds:z-[var(--z-toast)]',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n icon: 'hidden',\n content: 'ds:flex ds:flex-col ds:min-w-0 ds:flex-1',\n title: 'ds:w-full ds:min-w-0',\n },\n }}\n />\n );\n}\nToaster.displayName = 'Toaster';\n\nexport interface ToastOptions {\n description?: string;\n duration?: number;\n action?: {\n label: string;\n onClick: () => void;\n };\n cancel?: {\n label: string;\n onClick: () => void;\n };\n onDismiss?: () => void;\n onAutoClose?: () => void;\n}\n\ntype ToastVariant = 'info' | 'success' | 'warning' | 'error';\n\nfunction buildMessageNode(\n variant: ToastVariant,\n message: string,\n toastId: string,\n description?: string,\n): ReactNode {\n return (\n <div\n data-toast-id={toastId}\n className=\"ds:flex ds:w-full ds:items-center ds:gap-[var(--spacing-sm)]\"\n >\n {iconMap[variant]}\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span dir=\"auto\" className=\"type-label ds:leading-snug ds:break-words\">\n {message}\n </span>\n {description && (\n <span\n dir=\"auto\"\n className=\"type-body-sm ds:text-[var(--muted-foreground)] ds:break-words\"\n >\n {description}\n </span>\n )}\n </div>\n <ToastCloseButton toastId={toastId} />\n </div>\n );\n}\n\nfunction ToastCloseButton({ toastId }: { toastId: string }) {\n const { t } = useTranslation();\n return (\n <IconButton\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('common.close')}\n onClick={() => toast.dismiss(toastId)}\n className=\"ds:shrink-0\"\n />\n );\n}\n\nfunction fireToast(\n variant: ToastVariant,\n message: string,\n options?: ToastOptions,\n): string | number {\n const defaultDuration = variant === 'error' ? Infinity : 4000;\n const id = `${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;\n\n const content = buildMessageNode(variant, message, id, options?.description);\n\n _activeToasts.add(id);\n\n const toastData = {\n id,\n icon: null,\n duration: options?.duration ?? defaultDuration,\n action: options?.action\n ? { label: options.action.label, onClick: options.action.onClick }\n : undefined,\n cancel: options?.cancel\n ? { label: options.cancel.label, onClick: options.cancel.onClick }\n : undefined,\n onDismiss: () => {\n _activeToasts.delete(id);\n options?.onDismiss?.();\n },\n onAutoClose: () => {\n _activeToasts.delete(id);\n options?.onAutoClose?.();\n },\n };\n\n /* Use sonner's typed methods so the correct aria-live region is used:\n toast.error() → role=\"alert\" aria-live=\"assertive\"\n toast.info/success/warning() → role=\"status\" aria-live=\"polite\" */\n switch (variant) {\n case 'error':\n return toast.error(content, toastData);\n case 'success':\n return toast.success(content, toastData);\n case 'warning':\n return toast.warning(content, toastData);\n case 'info':\n return toast.info(content, toastData);\n default:\n return toast(content, toastData);\n }\n}\n\nexport function toastInfo(\n message: string,\n options?: ToastOptions,\n): string | number {\n return fireToast('info', message, options);\n}\n\nexport function toastSuccess(\n message: string,\n options?: ToastOptions,\n): string | number {\n return fireToast('success', message, options);\n}\n\nexport function toastWarning(\n message: string,\n options?: ToastOptions,\n): string | number {\n return fireToast('warning', message, options);\n}\n\nexport function toastError(\n message: string,\n options?: ToastOptions,\n): string | number {\n return fireToast('error', message, options);\n}\n\n/* -------------------------------------------------------------------- */\n/* Agent handle — module-level, since Toast is imperatively created. */\n/* */\n/* The future MCP UI bridge calls into this handle to dismiss specific */\n/* toasts and snapshot the visible set. Hosts can register this handle */\n/* once at app root via `useAgentRegistration(toastAgent, toastAgentHandle, 'toast')`.\n/* -------------------------------------------------------------------- */\n\nexport interface ToastAgentHandle {\n getVisibleToasts: () => Array<{ id: string }>;\n dismiss: (id: string) => void;\n dismissAll: () => void;\n}\n\nexport const toastAgentHandle: ToastAgentHandle = {\n getVisibleToasts: () => Array.from(_activeToasts).map((id) => ({ id })),\n dismiss: (id: string) => {\n _activeToasts.delete(id);\n toast.dismiss(id);\n },\n dismissAll: () => {\n _activeToasts.clear();\n toast.dismiss();\n },\n};\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — Toast. */\n/* */\n/* Toast is imperative: a single page-level <Toaster /> renders all */\n/* toasts created via `toastInfo` / `toastSuccess` / etc. The DS exports */\n/* a module-level handle (`toastAgentHandle`) which sonner-dismisses by */\n/* toast id and snapshots the current visible-toast set. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ToastAgentHandle } from './toast';\n\nexport const toastAgent: AgentAdapter<ToastAgentHandle> = {\n id: 'toast',\n capabilities: ['dismiss'],\n state: {\n visibleToasts: {\n type: 'Array<{ id: string }>',\n descriptionKey: 'ui.agent.toast.state.visibleToasts',\n description:\n 'Snapshot of currently-visible toasts by opaque id. Never carries the toast body text.',\n read: (handle) => handle.getVisibleToasts(),\n },\n },\n actions: {\n dismiss: {\n safety: 'destructive',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.toast.actions.dismiss',\n description:\n 'Dismiss the toast with the given id. Irreversible from the same UI.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n dismiss_all: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.toast.actions.dismissAll',\n description: 'Dismiss every visible toast.',\n invoke: (handle) => {\n handle.dismissAll();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n // The sonner <ol> region wrapper emits `data-component=\"toast-region\"`\n // (not the bare adapter id) — toasts are imperatively created and\n // addressed individually by id, not by a per-instance component root.\n value: 'toast-region',\n description:\n 'Marks the Toaster region wrapper (data-component=\"toast-region\"). Toast is imperatively created; the registry addresses individual toasts by id, not by per-instance root.',\n },\n item: {\n attr: 'data-toast-id',\n description:\n 'Stable opaque toast id assigned at creation. Used by `dismiss({id})`.',\n },\n },\n};\n"],"names":["__insertCSS","code","head","style","getAsset","type","SuccessIcon","InfoIcon","WarningIcon","ErrorIcon","bars","Loader","visible","className","React","_","i","CloseIcon","useIsDocumentHidden","isDocumentHidden","setIsDocumentHidden","callback","toastsCounter","Observer","subscriber","index","data","_data_id","message","rest","id","alreadyExists","toast","dismissible","promise","p","shouldDismiss","result","originalPromise","response","isHttpResponse","promiseData","description","toastSettings","error","unwrap","resolve","reject","jsx","ToastState","toastFunction","basicToast","getHistory","getToasts","isAction","action","VISIBLE_TOASTS_AMOUNT","VIEWPORT_OFFSET","MOBILE_VIEWPORT_OFFSET","TOAST_LIFETIME","TOAST_WIDTH","GAP","SWIPE_THRESHOLD","TIME_BEFORE_UNMOUNT","cn","classes","getDefaultSwipeDirections","position","y","x","directions","Toast","props","_toast_classNames","_toast_classNames1","_toast_classNames2","_toast_classNames3","_toast_classNames4","_toast_classNames5","_toast_classNames6","_toast_classNames7","_toast_classNames8","ToasterInvert","unstyled","interacting","setHeights","visibleToasts","heights","toasts","expanded","removeToast","defaultRichColors","closeButtonFromToaster","cancelButtonStyle","actionButtonStyle","descriptionClassName","durationFromToaster","gap","expandByDefault","classNames","icons","closeButtonAriaLabel","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","mounted","setMounted","removed","setRemoved","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","remainingTime","dragStartTime","toastRef","isFront","isVisible","toastType","toastClassname","toastDescriptionClassname","heightIndex","height","closeButton","_toast_closeButton","duration","closeTimerStartTimeRef","offset","lastCloseTimerStartTimeRef","pointerStartRef","toastsHeightBefore","prev","curr","reducerIndex","invert","disabled","toastNode","h","originalHeight","newHeight","deleteToast","timeoutId","elapsedTime","getLoadingIcon","icon","_toast_richColors","_icons_close","event","_toastRef_current","_toastRef_current1","_dragStartTime_current","swipeAmountX","swipeAmountY","timeTaken","swipeAmount","velocity","_toastRef_current2","_toastRef_current3","_window_getSelection","yDelta","xDelta","_props_swipeDirections","swipeDirections","getDampening","delta","dampenedDelta","getDocumentDirection","dirAttribute","assignOffset","defaultOffset","mobileOffset","styles","isMobile","prefix","defaultValue","assignAll","key","Toaster","ref","hotkey","expand","theme","richColors","toastOptions","dir","containerAriaLabel","setToasts","filteredToasts","possiblePositions","setExpanded","setInteracting","actualTheme","setActualTheme","listRef","hotkeyLabel","lastFocusedElementRef","isFocusWithinRef","toastToRemove","_toasts_find","t","ReactDOM","indexOfExistingToast","darkMediaQuery","matches","e","handleKeyDown","_listRef_current","_listRef_current1","_heights_","_toastOptions_duration","_toastOptions_closeButton","iconMap","Info","CircleCheck","TriangleAlert","CircleAlert","_toasterActive","_activeToasts","resolvePosition","logical","isRtl","isActive","useState","toasterRef","useRef","docDir","setDocDir","useEffect","obs","SonnerToaster","el","buildMessageNode","variant","toastId","jsxs","ToastCloseButton","useTranslation","IconButton","X","fireToast","options","defaultDuration","content","toastData","_a","toastInfo","toastSuccess","toastWarning","toastError","toastAgentHandle","toastAgent","handle","args"],"mappings":"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","x_google_ignoreList":[0]}