@mortenbrudvik/waveui 0.9.0 → 0.11.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 (264) hide show
  1. package/README.md +758 -152
  2. package/dist/components/button/Toolbar.cjs +1 -1
  3. package/dist/components/button/Toolbar.cjs.map +1 -1
  4. package/dist/components/button/Toolbar.mjs +25 -30
  5. package/dist/components/button/Toolbar.mjs.map +1 -1
  6. package/dist/components/button/Toolbar.navigation.cjs +2 -0
  7. package/dist/components/button/Toolbar.navigation.cjs.map +1 -0
  8. package/dist/components/button/Toolbar.navigation.mjs +17 -0
  9. package/dist/components/button/Toolbar.navigation.mjs.map +1 -0
  10. package/dist/components/data-display/Avatar.cjs +1 -1
  11. package/dist/components/data-display/Avatar.cjs.map +1 -1
  12. package/dist/components/data-display/Avatar.context.cjs +2 -0
  13. package/dist/components/data-display/Avatar.context.cjs.map +1 -0
  14. package/dist/components/data-display/Avatar.context.mjs +9 -0
  15. package/dist/components/data-display/Avatar.context.mjs.map +1 -0
  16. package/dist/components/data-display/Avatar.mjs +66 -61
  17. package/dist/components/data-display/Avatar.mjs.map +1 -1
  18. package/dist/components/data-display/InteractionTag.cjs +2 -0
  19. package/dist/components/data-display/InteractionTag.cjs.map +1 -0
  20. package/dist/components/data-display/InteractionTag.mjs +234 -0
  21. package/dist/components/data-display/InteractionTag.mjs.map +1 -0
  22. package/dist/components/data-display/Tag.cjs +1 -1
  23. package/dist/components/data-display/Tag.cjs.map +1 -1
  24. package/dist/components/data-display/Tag.mjs +222 -90
  25. package/dist/components/data-display/Tag.mjs.map +1 -1
  26. package/dist/components/data-display/TagGroup.cjs +2 -0
  27. package/dist/components/data-display/TagGroup.cjs.map +1 -0
  28. package/dist/components/data-display/TagGroup.context.cjs +2 -0
  29. package/dist/components/data-display/TagGroup.context.cjs.map +1 -0
  30. package/dist/components/data-display/TagGroup.context.mjs +113 -0
  31. package/dist/components/data-display/TagGroup.context.mjs.map +1 -0
  32. package/dist/components/data-display/TagGroup.mjs +149 -0
  33. package/dist/components/data-display/TagGroup.mjs.map +1 -0
  34. package/dist/components/data-display/tagStyles.cjs +2 -0
  35. package/dist/components/data-display/tagStyles.cjs.map +1 -0
  36. package/dist/components/data-display/tagStyles.mjs +108 -0
  37. package/dist/components/data-display/tagStyles.mjs.map +1 -0
  38. package/dist/components/feedback/Toaster.cjs +1 -1
  39. package/dist/components/feedback/Toaster.cjs.map +1 -1
  40. package/dist/components/feedback/Toaster.mjs +213 -181
  41. package/dist/components/feedback/Toaster.mjs.map +1 -1
  42. package/dist/components/input/Calendar.cjs +2 -0
  43. package/dist/components/input/Calendar.cjs.map +1 -0
  44. package/dist/components/input/Calendar.mjs +352 -0
  45. package/dist/components/input/Calendar.mjs.map +1 -0
  46. package/dist/components/input/Calendar.views.cjs +2 -0
  47. package/dist/components/input/Calendar.views.cjs.map +1 -0
  48. package/dist/components/input/Calendar.views.mjs +194 -0
  49. package/dist/components/input/Calendar.views.mjs.map +1 -0
  50. package/dist/components/input/ColorArea.cjs +1 -1
  51. package/dist/components/input/ColorArea.cjs.map +1 -1
  52. package/dist/components/input/ColorArea.mjs +18 -18
  53. package/dist/components/input/ColorArea.mjs.map +1 -1
  54. package/dist/components/input/Combobox.cjs +1 -1
  55. package/dist/components/input/Combobox.cjs.map +1 -1
  56. package/dist/components/input/Combobox.expand.cjs +1 -1
  57. package/dist/components/input/Combobox.expand.cjs.map +1 -1
  58. package/dist/components/input/Combobox.expand.mjs +7 -7
  59. package/dist/components/input/Combobox.expand.mjs.map +1 -1
  60. package/dist/components/input/Combobox.mjs +232 -156
  61. package/dist/components/input/Combobox.mjs.map +1 -1
  62. package/dist/components/input/Combobox.text.cjs +2 -0
  63. package/dist/components/input/Combobox.text.cjs.map +1 -0
  64. package/dist/components/input/Combobox.text.mjs +24 -0
  65. package/dist/components/input/Combobox.text.mjs.map +1 -0
  66. package/dist/components/input/DatePicker.cjs +1 -1
  67. package/dist/components/input/DatePicker.cjs.map +1 -1
  68. package/dist/components/input/DatePicker.mjs +203 -288
  69. package/dist/components/input/DatePicker.mjs.map +1 -1
  70. package/dist/components/input/Dropdown.cjs +1 -1
  71. package/dist/components/input/Dropdown.cjs.map +1 -1
  72. package/dist/components/input/Dropdown.mjs +135 -109
  73. package/dist/components/input/Dropdown.mjs.map +1 -1
  74. package/dist/components/input/Listbox.cjs +2 -0
  75. package/dist/components/input/Listbox.cjs.map +1 -0
  76. package/dist/components/input/Listbox.mjs +134 -0
  77. package/dist/components/input/Listbox.mjs.map +1 -0
  78. package/dist/components/input/Option.cjs +1 -1
  79. package/dist/components/input/Option.cjs.map +1 -1
  80. package/dist/components/input/Option.mjs +163 -97
  81. package/dist/components/input/Option.mjs.map +1 -1
  82. package/dist/components/input/SwatchPicker.cjs +1 -1
  83. package/dist/components/input/SwatchPicker.cjs.map +1 -1
  84. package/dist/components/input/SwatchPicker.context.cjs +2 -0
  85. package/dist/components/input/SwatchPicker.context.cjs.map +1 -0
  86. package/dist/components/input/SwatchPicker.context.mjs +35 -0
  87. package/dist/components/input/SwatchPicker.context.mjs.map +1 -0
  88. package/dist/components/input/SwatchPicker.mjs +131 -103
  89. package/dist/components/input/SwatchPicker.mjs.map +1 -1
  90. package/dist/components/input/SwatchPicker.swatches.cjs +2 -0
  91. package/dist/components/input/SwatchPicker.swatches.cjs.map +1 -0
  92. package/dist/components/input/SwatchPicker.swatches.mjs +207 -0
  93. package/dist/components/input/SwatchPicker.swatches.mjs.map +1 -0
  94. package/dist/components/input/TagPicker.cjs +1 -1
  95. package/dist/components/input/TagPicker.cjs.map +1 -1
  96. package/dist/components/input/TagPicker.context.cjs +2 -0
  97. package/dist/components/input/TagPicker.context.cjs.map +1 -0
  98. package/dist/components/input/TagPicker.context.mjs +20 -0
  99. package/dist/components/input/TagPicker.context.mjs.map +1 -0
  100. package/dist/components/input/TagPicker.create.cjs +2 -0
  101. package/dist/components/input/TagPicker.create.cjs.map +1 -0
  102. package/dist/components/input/TagPicker.create.mjs +24 -0
  103. package/dist/components/input/TagPicker.create.mjs.map +1 -0
  104. package/dist/components/input/TagPicker.mjs +13 -274
  105. package/dist/components/input/TagPicker.mjs.map +1 -1
  106. package/dist/components/input/TagPicker.option.cjs +2 -0
  107. package/dist/components/input/TagPicker.option.cjs.map +1 -0
  108. package/dist/components/input/TagPicker.option.mjs +45 -0
  109. package/dist/components/input/TagPicker.option.mjs.map +1 -0
  110. package/dist/components/input/TagPicker.overflow.cjs +2 -0
  111. package/dist/components/input/TagPicker.overflow.cjs.map +1 -0
  112. package/dist/components/input/TagPicker.overflow.mjs +153 -0
  113. package/dist/components/input/TagPicker.overflow.mjs.map +1 -0
  114. package/dist/components/input/TagPicker.parts.cjs +2 -0
  115. package/dist/components/input/TagPicker.parts.cjs.map +1 -0
  116. package/dist/components/input/TagPicker.parts.mjs +425 -0
  117. package/dist/components/input/TagPicker.parts.mjs.map +1 -0
  118. package/dist/components/input/TagPicker.root.cjs +2 -0
  119. package/dist/components/input/TagPicker.root.cjs.map +1 -0
  120. package/dist/components/input/TagPicker.root.mjs +416 -0
  121. package/dist/components/input/TagPicker.root.mjs.map +1 -0
  122. package/dist/components/input/TimePicker.cjs +1 -1
  123. package/dist/components/input/TimePicker.cjs.map +1 -1
  124. package/dist/components/input/TimePicker.mjs +77 -77
  125. package/dist/components/input/TimePicker.mjs.map +1 -1
  126. package/dist/components/input/dateUtils.cjs +1 -1
  127. package/dist/components/input/dateUtils.cjs.map +1 -1
  128. package/dist/components/input/dateUtils.mjs +114 -96
  129. package/dist/components/input/dateUtils.mjs.map +1 -1
  130. package/dist/components/input/pickerLabels.cjs +2 -0
  131. package/dist/components/input/pickerLabels.cjs.map +1 -0
  132. package/dist/components/input/pickerLabels.mjs +16 -0
  133. package/dist/components/input/pickerLabels.mjs.map +1 -0
  134. package/dist/components/input/pickerValues.cjs +2 -0
  135. package/dist/components/input/pickerValues.cjs.map +1 -0
  136. package/dist/components/input/pickerValues.mjs +24 -0
  137. package/dist/components/input/pickerValues.mjs.map +1 -0
  138. package/dist/components/layout/Accordion.cjs.map +1 -1
  139. package/dist/components/layout/Accordion.mjs.map +1 -1
  140. package/dist/components/navigation/Hamburger.cjs +2 -0
  141. package/dist/components/navigation/Hamburger.cjs.map +1 -0
  142. package/dist/components/navigation/Hamburger.mjs +54 -0
  143. package/dist/components/navigation/Hamburger.mjs.map +1 -0
  144. package/dist/components/navigation/Nav.cjs +1 -1
  145. package/dist/components/navigation/Nav.cjs.map +1 -1
  146. package/dist/components/navigation/Nav.context.cjs +2 -0
  147. package/dist/components/navigation/Nav.context.cjs.map +1 -0
  148. package/dist/components/navigation/Nav.context.mjs +137 -0
  149. package/dist/components/navigation/Nav.context.mjs.map +1 -0
  150. package/dist/components/navigation/Nav.mjs +151 -258
  151. package/dist/components/navigation/Nav.mjs.map +1 -1
  152. package/dist/components/navigation/Nav.parts.cjs +2 -0
  153. package/dist/components/navigation/Nav.parts.cjs.map +1 -0
  154. package/dist/components/navigation/Nav.parts.mjs +77 -0
  155. package/dist/components/navigation/Nav.parts.mjs.map +1 -0
  156. package/dist/components/navigation/Nav.root.cjs +2 -0
  157. package/dist/components/navigation/Nav.root.cjs.map +1 -0
  158. package/dist/components/navigation/Nav.root.mjs +78 -0
  159. package/dist/components/navigation/Nav.root.mjs.map +1 -0
  160. package/dist/components/navigation/NavDrawer.cjs +2 -0
  161. package/dist/components/navigation/NavDrawer.cjs.map +1 -0
  162. package/dist/components/navigation/NavDrawer.context.cjs +2 -0
  163. package/dist/components/navigation/NavDrawer.context.cjs.map +1 -0
  164. package/dist/components/navigation/NavDrawer.context.mjs +11 -0
  165. package/dist/components/navigation/NavDrawer.context.mjs.map +1 -0
  166. package/dist/components/navigation/NavDrawer.mjs +179 -0
  167. package/dist/components/navigation/NavDrawer.mjs.map +1 -0
  168. package/dist/components/overlays/Dialog.cjs +1 -1
  169. package/dist/components/overlays/Dialog.cjs.map +1 -1
  170. package/dist/components/overlays/Dialog.mjs +190 -125
  171. package/dist/components/overlays/Dialog.mjs.map +1 -1
  172. package/dist/components/overlays/Dialog.shared.cjs +1 -1
  173. package/dist/components/overlays/Dialog.shared.cjs.map +1 -1
  174. package/dist/components/overlays/Dialog.shared.mjs +157 -81
  175. package/dist/components/overlays/Dialog.shared.mjs.map +1 -1
  176. package/dist/components/overlays/Dialog.slots.cjs +2 -0
  177. package/dist/components/overlays/Dialog.slots.cjs.map +1 -0
  178. package/dist/components/overlays/Dialog.slots.mjs +129 -0
  179. package/dist/components/overlays/Dialog.slots.mjs.map +1 -0
  180. package/dist/components/overlays/Drawer.cjs +1 -1
  181. package/dist/components/overlays/Drawer.cjs.map +1 -1
  182. package/dist/components/overlays/Drawer.context.cjs +2 -0
  183. package/dist/components/overlays/Drawer.context.cjs.map +1 -0
  184. package/dist/components/overlays/Drawer.context.mjs +29 -0
  185. package/dist/components/overlays/Drawer.context.mjs.map +1 -0
  186. package/dist/components/overlays/Drawer.mjs +12 -187
  187. package/dist/components/overlays/Drawer.mjs.map +1 -1
  188. package/dist/components/overlays/Drawer.panel.cjs +2 -0
  189. package/dist/components/overlays/Drawer.panel.cjs.map +1 -0
  190. package/dist/components/overlays/Drawer.panel.mjs +159 -0
  191. package/dist/components/overlays/Drawer.panel.mjs.map +1 -0
  192. package/dist/components/overlays/Drawer.parts.cjs +2 -0
  193. package/dist/components/overlays/Drawer.parts.cjs.map +1 -0
  194. package/dist/components/overlays/Drawer.parts.mjs +152 -0
  195. package/dist/components/overlays/Drawer.parts.mjs.map +1 -0
  196. package/dist/components/overlays/Drawer.root.cjs +2 -0
  197. package/dist/components/overlays/Drawer.root.cjs.map +1 -0
  198. package/dist/components/overlays/Drawer.root.mjs +207 -0
  199. package/dist/components/overlays/Drawer.root.mjs.map +1 -0
  200. package/dist/components/overlays/Drawer.scroll.cjs +2 -0
  201. package/dist/components/overlays/Drawer.scroll.cjs.map +1 -0
  202. package/dist/components/overlays/Drawer.scroll.mjs +42 -0
  203. package/dist/components/overlays/Drawer.scroll.mjs.map +1 -0
  204. package/dist/components/table/useGridNavigation.cjs +1 -1
  205. package/dist/components/table/useGridNavigation.cjs.map +1 -1
  206. package/dist/components/table/useGridNavigation.mjs +67 -70
  207. package/dist/components/table/useGridNavigation.mjs.map +1 -1
  208. package/dist/hooks/useActiveDescendant.cjs +2 -0
  209. package/dist/hooks/useActiveDescendant.cjs.map +1 -0
  210. package/dist/hooks/useActiveDescendant.mjs +56 -0
  211. package/dist/hooks/useActiveDescendant.mjs.map +1 -0
  212. package/dist/hooks/useDismiss.cjs.map +1 -1
  213. package/dist/hooks/useDismiss.mjs.map +1 -1
  214. package/dist/hooks/useFocusTrap.cjs +1 -1
  215. package/dist/hooks/useFocusTrap.cjs.map +1 -1
  216. package/dist/hooks/useFocusTrap.mjs +115 -98
  217. package/dist/hooks/useFocusTrap.mjs.map +1 -1
  218. package/dist/hooks/useListbox.cjs +1 -1
  219. package/dist/hooks/useListbox.cjs.map +1 -1
  220. package/dist/hooks/useListbox.mjs +250 -210
  221. package/dist/hooks/useListbox.mjs.map +1 -1
  222. package/dist/hooks/useModalLayer.cjs +1 -1
  223. package/dist/hooks/useModalLayer.cjs.map +1 -1
  224. package/dist/hooks/useModalLayer.mjs +35 -22
  225. package/dist/hooks/useModalLayer.mjs.map +1 -1
  226. package/dist/hooks/useRestoreFocus.cjs +1 -1
  227. package/dist/hooks/useRestoreFocus.cjs.map +1 -1
  228. package/dist/hooks/useRestoreFocus.mjs +91 -78
  229. package/dist/hooks/useRestoreFocus.mjs.map +1 -1
  230. package/dist/hooks/useRovingGrid.cjs +2 -0
  231. package/dist/hooks/useRovingGrid.cjs.map +1 -0
  232. package/dist/hooks/useRovingGrid.mjs +69 -0
  233. package/dist/hooks/useRovingGrid.mjs.map +1 -0
  234. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  235. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  236. package/dist/hooks/useRovingTabIndex.mjs +102 -78
  237. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  238. package/dist/index.cjs +1 -1
  239. package/dist/index.d.cts +4391 -394
  240. package/dist/index.d.ts +4391 -394
  241. package/dist/index.mjs +115 -101
  242. package/dist/lib/classNames.cjs +1 -1
  243. package/dist/lib/classNames.cjs.map +1 -1
  244. package/dist/lib/classNames.mjs +170 -74
  245. package/dist/lib/classNames.mjs.map +1 -1
  246. package/dist/lib/date.cjs +2 -0
  247. package/dist/lib/date.cjs.map +1 -0
  248. package/dist/lib/date.mjs +44 -0
  249. package/dist/lib/date.mjs.map +1 -0
  250. package/dist/lib/focus.cjs +1 -1
  251. package/dist/lib/focus.cjs.map +1 -1
  252. package/dist/lib/focus.mjs +5 -2
  253. package/dist/lib/focus.mjs.map +1 -1
  254. package/dist/lib/icons.cjs +1 -1
  255. package/dist/lib/icons.cjs.map +1 -1
  256. package/dist/lib/icons.mjs +13 -6
  257. package/dist/lib/icons.mjs.map +1 -1
  258. package/dist/lib/layers.cjs +1 -1
  259. package/dist/lib/layers.cjs.map +1 -1
  260. package/dist/lib/layers.mjs +53 -47
  261. package/dist/lib/layers.mjs.map +1 -1
  262. package/dist/styles.css +1 -1
  263. package/package.json +1 -1
  264. package/src/styles/tokens.css +25 -0
@@ -0,0 +1,108 @@
1
+ "use client";
2
+ //#region src/components/data-display/tagStyles.ts
3
+ var e = {
4
+ medium: 24,
5
+ small: 20,
6
+ "extra-small": 16
7
+ }, t = "inline-flex items-center border", n = {
8
+ medium: "min-h-7 gap-1 text-body-1",
9
+ small: "min-h-6 gap-1 text-caption-1",
10
+ "extra-small": "min-h-5 gap-0.5 text-caption-1"
11
+ }, r = {
12
+ medium: {
13
+ text: "ps-2.75",
14
+ icon: "ps-1.75",
15
+ media: "ps-px"
16
+ },
17
+ small: {
18
+ text: "ps-1.75",
19
+ icon: "ps-1.25",
20
+ media: "ps-px"
21
+ },
22
+ "extra-small": {
23
+ text: "ps-1.75",
24
+ icon: "ps-1.25",
25
+ media: "ps-px"
26
+ }
27
+ }, i = {
28
+ medium: {
29
+ text: "pe-2.75",
30
+ dismiss: "pe-1.25"
31
+ },
32
+ small: {
33
+ text: "pe-1.75",
34
+ dismiss: "pe-0.75"
35
+ },
36
+ "extra-small": {
37
+ text: "pe-1.75",
38
+ dismiss: "pe-px"
39
+ }
40
+ }, a = {
41
+ filled: "border-transparent bg-muted text-foreground",
42
+ outline: "border-stroke bg-transparent text-foreground",
43
+ brand: "border-transparent bg-selected text-selected-foreground"
44
+ }, o = "border-primary bg-primary text-primary-foreground", s = "opacity-50 focus-visible:opacity-100 has-focus-visible:opacity-100", c = {
45
+ circular: "rounded-full",
46
+ rounded: "rounded"
47
+ }, l = {
48
+ medium: "inline-flex shrink-0 me-1",
49
+ small: "inline-flex shrink-0 me-0.5",
50
+ "extra-small": "inline-flex shrink-0 me-0.5"
51
+ }, u = {
52
+ medium: "inline-flex size-5 shrink-0 items-center justify-center [&>svg]:size-full",
53
+ small: "inline-flex size-4 shrink-0 items-center justify-center [&>svg]:size-full",
54
+ "extra-small": "inline-flex size-3 shrink-0 items-center justify-center [&>svg]:size-full"
55
+ }, d = "inline-flex min-w-0 flex-col text-start", f = "text-caption-1 leading-3.5", p = "text-caption-2 leading-3", m = "relative inline-flex shrink-0 items-center justify-center rounded-full border-0 bg-transparent p-0 text-inherit before:absolute disabled:cursor-not-allowed aria-disabled:cursor-not-allowed forced-colors:not-disabled:not-aria-disabled:hover:text-[Highlight]", h = {
56
+ medium: "size-5 before:-inset-0.5",
57
+ small: "size-4 before:-inset-1",
58
+ "extra-small": "size-4 before:-inset-1"
59
+ }, g = {
60
+ medium: "",
61
+ small: "",
62
+ "extra-small": "focus-visible:outline-offset-0"
63
+ }, _ = {
64
+ medium: 12,
65
+ small: 12,
66
+ "extra-small": 10
67
+ }, v = {
68
+ filled: "not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed",
69
+ outline: "not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed",
70
+ brand: "not-disabled:not-aria-disabled:hover:bg-selected-hover not-disabled:not-aria-disabled:active:bg-selected-pressed",
71
+ selected: "not-disabled:not-aria-disabled:hover:bg-primary-hover not-disabled:not-aria-disabled:active:bg-primary-pressed"
72
+ }, y = "focus-visible:outline-primary-foreground", b = "relative inline-flex items-center border transition-colors motion-reduce:transition-none focus-visible:z-10", x = "py-0 text-start", S = {
73
+ medium: "pe-2.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-2",
74
+ small: "pe-1.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-1.5",
75
+ "extra-small": "pe-1.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-1"
76
+ }, C = "group-has-[[data-wave-tag-dismiss]]/interaction-tag:rounded-e-none group-has-[[data-wave-tag-dismiss]]/interaction-tag:border-e-0", w = "shrink-0 justify-center p-0 forced-colors:not-disabled:not-aria-disabled:hover:text-[Highlight]", T = "px-1.5", E = {
77
+ medium: "min-w-7 text-body-1",
78
+ small: "min-w-6 text-caption-1",
79
+ "extra-small": "min-w-6 text-caption-1"
80
+ }, D = {
81
+ filled: "border-transparent bg-muted text-foreground not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed",
82
+ outline: "border-stroke bg-transparent text-foreground not-disabled:not-aria-disabled:hover:border-stroke-hover not-disabled:not-aria-disabled:hover:bg-subtle-hover not-disabled:not-aria-disabled:active:bg-subtle-pressed",
83
+ brand: "border-transparent bg-selected text-selected-foreground not-disabled:not-aria-disabled:hover:bg-selected-hover not-disabled:not-aria-disabled:active:bg-selected-pressed",
84
+ selected: "border-primary bg-primary text-primary-foreground not-disabled:not-aria-disabled:hover:bg-primary-hover not-disabled:not-aria-disabled:active:bg-primary-pressed"
85
+ }, O = "forced-colors:border-[Highlight]", k = {
86
+ filled: "border-s-stroke",
87
+ outline: "border-s-stroke",
88
+ brand: "border-s-stroke",
89
+ selected: "border-s-primary-foreground"
90
+ }, A = {
91
+ circular: "rounded-s-none rounded-e-full",
92
+ rounded: "rounded-s-none rounded-e"
93
+ }, j = "disabled:cursor-not-allowed disabled:opacity-50", M = "disabled:cursor-not-allowed aria-disabled:cursor-not-allowed", N = "before:absolute before:inset-x-0 before:-inset-y-0.5";
94
+ function P(e) {
95
+ let { size: o, appearance: s, shape: l } = e;
96
+ return [
97
+ t,
98
+ n[o],
99
+ r[o].text,
100
+ i[o].text,
101
+ a[s],
102
+ c[l]
103
+ ].join(" ");
104
+ }
105
+ //#endregion
106
+ export { b as INTERACTION_TAG_BUTTON_BASE_CLASSES, j as INTERACTION_TAG_DISABLED_CLASSES, N as INTERACTION_TAG_EXTRA_SMALL_HIT_CLASSES, x as INTERACTION_TAG_PRIMARY_BASE_CLASSES, C as INTERACTION_TAG_PRIMARY_JOINED_CLASSES, w as INTERACTION_TAG_SECONDARY_BASE_CLASSES, T as INTERACTION_TAG_SECONDARY_LABEL_CLASSES, O as INTERACTION_TAG_SELECTED_FORCED_COLORS, M as INTERACTION_TAG_UNDIMMED_DISABLED_CLASSES, e as TAG_AVATAR_SIZE, s as TAG_DISABLED_DIM_CLASSES, m as TAG_DISMISS_BASE_CLASSES, _ as TAG_DISMISS_GLYPH_SIZE, y as TAG_DISMISS_SELECTED_RING_CLASSES, f as TAG_PRIMARY_TEXT_TWO_LINE_CLASSES, t as TAG_ROOT_BASE_CLASSES, p as TAG_SECONDARY_TEXT_CLASSES, o as TAG_SELECTED_CLASSES, d as TAG_TEXT_COLUMN_CLASSES, k as interactionTagDividerClasses, D as interactionTagLookClasses, S as interactionTagPrimaryEndInsetClasses, A as interactionTagSecondaryShapeClasses, E as interactionTagSecondarySizeClasses, a as tagAppearanceClasses, g as tagDismissRingClasses, h as tagDismissSizeClasses, v as tagDismissStateClasses, i as tagEndInsetClasses, u as tagIconClasses, l as tagMediaClasses, P as tagRootClasses, c as tagShapeClasses, n as tagSizeClasses, r as tagStartInsetClasses };
107
+
108
+ //# sourceMappingURL=tagStyles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagStyles.mjs","names":["TAG_AVATAR_SIZE","TAG_ROOT_BASE_CLASSES","tagSizeClasses","tagStartInsetClasses","tagEndInsetClasses","tagAppearanceClasses","TAG_SELECTED_CLASSES","TAG_DISABLED_DIM_CLASSES","tagShapeClasses","tagMediaClasses","tagIconClasses","TAG_TEXT_COLUMN_CLASSES","TAG_PRIMARY_TEXT_TWO_LINE_CLASSES","TAG_SECONDARY_TEXT_CLASSES","TAG_DISMISS_BASE_CLASSES","tagDismissSizeClasses","tagDismissRingClasses","TAG_DISMISS_GLYPH_SIZE","tagDismissStateClasses","TAG_DISMISS_SELECTED_RING_CLASSES","INTERACTION_TAG_BUTTON_BASE_CLASSES","INTERACTION_TAG_PRIMARY_BASE_CLASSES","interactionTagPrimaryEndInsetClasses","INTERACTION_TAG_PRIMARY_JOINED_CLASSES","INTERACTION_TAG_SECONDARY_BASE_CLASSES","INTERACTION_TAG_SECONDARY_LABEL_CLASSES","interactionTagSecondarySizeClasses","interactionTagLookClasses","INTERACTION_TAG_SELECTED_FORCED_COLORS","interactionTagDividerClasses","interactionTagSecondaryShapeClasses","INTERACTION_TAG_DISABLED_CLASSES","INTERACTION_TAG_UNDIMMED_DISABLED_CLASSES","INTERACTION_TAG_EXTRA_SMALL_HIT_CLASSES","tagRootClasses","options","size","appearance","shape"],"sources":["../../../src/components/data-display/tagStyles.ts"],"sourcesContent":["/**\n * The look of the tag family: the size table, the appearances, the shapes, the Dismiss button and\n * the Avatar box per size. Tag reads it, and so do InteractionTag and TagPicker's tags.\n * Module-only (not in the barrel), as `buttonStyles.ts`. Class strings stay literal for\n * Tailwind's scanner. Every inset includes the tag's 1px border, so a filled and an outline tag of\n * one size have one box.\n */\nimport type { TagAppearance, TagShape, TagSize } from '../../lib/types';\n\n/** The box (px) an Avatar without its own `size` takes in a tag's `media`, per tag size. */\nexport const TAG_AVATAR_SIZE: Readonly<Record<TagSize, 16 | 20 | 24>> = {\n medium: 24,\n small: 20,\n 'extra-small': 16,\n};\n\n/** The layout every tag root shares: its parts in a centred row, with a 1px border. */\nexport const TAG_ROOT_BASE_CLASSES = 'inline-flex items-center border';\n\n/** Height, gap between the parts and type of a tag per size: 28, 24 or 20px tall. */\nexport const tagSizeClasses: Readonly<Record<TagSize, string>> = {\n medium: 'min-h-7 gap-1 text-body-1',\n small: 'min-h-6 gap-1 text-caption-1',\n 'extra-small': 'min-h-5 gap-0.5 text-caption-1',\n};\n\n/** The part a tag starts with, which sets its start inset. */\nexport type TagLeadingPart = 'text' | 'icon' | 'media';\n\n/** The part a tag ends with, which sets its end inset. */\nexport type TagTrailingPart = 'text' | 'dismiss';\n\n/**\n * Start inset per size and leading part, the border included: 12 or 8px before the text, 8 or\n * 6px before an icon, 2px before media.\n */\nexport const tagStartInsetClasses: Readonly<\n Record<TagSize, Readonly<Record<TagLeadingPart, string>>>\n> = {\n medium: { text: 'ps-2.75', icon: 'ps-1.75', media: 'ps-px' },\n small: { text: 'ps-1.75', icon: 'ps-1.25', media: 'ps-px' },\n 'extra-small': { text: 'ps-1.75', icon: 'ps-1.25', media: 'ps-px' },\n};\n\n/**\n * End inset per size and trailing part, the border included: 12 or 8px after the text; 6, 4 or\n * 2px after the Dismiss button.\n */\nexport const tagEndInsetClasses: Readonly<\n Record<TagSize, Readonly<Record<TagTrailingPart, string>>>\n> = {\n medium: { text: 'pe-2.75', dismiss: 'pe-1.25' },\n small: { text: 'pe-1.75', dismiss: 'pe-0.75' },\n 'extra-small': { text: 'pe-1.75', dismiss: 'pe-px' },\n};\n\n/**\n * Border, fill and text of each appearance: a neutral fill, a border on the surface behind it, or\n * the light brand tint (brand 160 on brand 60 in the light theme, so it follows the brand ramp).\n */\nexport const tagAppearanceClasses: Readonly<Record<TagAppearance, string>> = {\n filled: 'border-transparent bg-muted text-foreground',\n outline: 'border-stroke bg-transparent text-foreground',\n brand: 'border-transparent bg-selected text-selected-foreground',\n};\n\n/**\n * The selected look, over every appearance (the brand fill). Compose it with\n * `forcedColors.selectedContainer`: forced colours remove the fill.\n */\nexport const TAG_SELECTED_CLASSES = 'border-primary bg-primary text-primary-foreground';\n\n/**\n * The dimming of a disabled tag, lifted while a focus ring shows on the root (a held link) or\n * inside it (a held Dismiss button), because opacity would dim the ring too.\n */\nexport const TAG_DISABLED_DIM_CLASSES =\n 'opacity-50 focus-visible:opacity-100 has-focus-visible:opacity-100';\n\n/** Corners per shape: a pill, or 4px. */\nexport const tagShapeClasses: Readonly<Record<TagShape, string>> = {\n circular: 'rounded-full',\n rounded: 'rounded',\n};\n\n/** The media span per size; with the gap, 8, 6 or 4px to the text. */\nexport const tagMediaClasses: Readonly<Record<TagSize, string>> = {\n medium: 'inline-flex shrink-0 me-1',\n small: 'inline-flex shrink-0 me-0.5',\n 'extra-small': 'inline-flex shrink-0 me-0.5',\n};\n\n/** The icon box per size (20, 16 or 12px), whose `<svg>` fills it. */\nexport const tagIconClasses: Readonly<Record<TagSize, string>> = {\n medium: 'inline-flex size-5 shrink-0 items-center justify-center [&>svg]:size-full',\n small: 'inline-flex size-4 shrink-0 items-center justify-center [&>svg]:size-full',\n 'extra-small': 'inline-flex size-3 shrink-0 items-center justify-center [&>svg]:size-full',\n};\n\n/** The layout wrapper of the primary and secondary text, while `secondaryText` renders. */\nexport const TAG_TEXT_COLUMN_CLASSES = 'inline-flex min-w-0 flex-col text-start';\n\n/** The type of the primary text next to a second line (26px of lines in the 28px box). */\nexport const TAG_PRIMARY_TEXT_TWO_LINE_CLASSES = 'text-caption-1 leading-3.5';\n\n/** The type of the second line of text; its colour is inherited. */\nexport const TAG_SECONDARY_TEXT_CLASSES = 'text-caption-2 leading-3';\n\n/**\n * What every Dismiss button draws: a transparent circle with no padding of its own (C-NATIVE),\n * the tag's text colour, a positioned pointer-target layer, the not-allowed cursor of both\n * disabled states and, in forced colours, a Highlight glyph on hover (its hover fill becomes\n * Canvas there).\n */\nexport const TAG_DISMISS_BASE_CLASSES =\n 'relative inline-flex shrink-0 items-center justify-center rounded-full border-0 bg-transparent p-0 text-inherit before:absolute disabled:cursor-not-allowed aria-disabled:cursor-not-allowed forced-colors:not-disabled:not-aria-disabled:hover:text-[Highlight]';\n\n/**\n * The Dismiss button per size: 20 or 16px, with a transparent layer that makes the pointer target\n * 24px (2px beyond each edge of the 20px button, 4px beyond the 16px one).\n */\nexport const tagDismissSizeClasses: Readonly<Record<TagSize, string>> = {\n medium: 'size-5 before:-inset-0.5',\n small: 'size-4 before:-inset-1',\n 'extra-small': 'size-4 before:-inset-1',\n};\n\n/**\n * The ring offset of the Dismiss button per size, after `focusRing`: 0 at `extra-small`, where\n * the tag leaves 2px around the button and a 2px offset would put the ring on the page.\n */\nexport const tagDismissRingClasses: Readonly<Record<TagSize, string>> = {\n medium: '',\n small: '',\n 'extra-small': 'focus-visible:outline-offset-0',\n};\n\n/** The Dismiss glyph (px) per size. */\nexport const TAG_DISMISS_GLYPH_SIZE: Readonly<Record<TagSize, 10 | 12>> = {\n medium: 12,\n small: 12,\n 'extra-small': 10,\n};\n\n/** The look a tag draws: one of its appearances, or the selected look over them. */\nexport type TagLook = TagAppearance | 'selected';\n\n/**\n * The Dismiss button's hover and pressed fills per look, behind the literal gate (C-TOKENS): the\n * neutral states on filled and outline tags (an outline tag is transparent, so its circle must\n * show on the page), the brand states on brand tags, the primary states on selected ones.\n */\nexport const tagDismissStateClasses: Readonly<Record<TagLook, string>> = {\n filled:\n 'not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed',\n outline:\n 'not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed',\n brand:\n 'not-disabled:not-aria-disabled:hover:bg-selected-hover not-disabled:not-aria-disabled:active:bg-selected-pressed',\n selected:\n 'not-disabled:not-aria-disabled:hover:bg-primary-hover not-disabled:not-aria-disabled:active:bg-primary-pressed',\n};\n\n/**\n * The Dismiss button's ring colour on a selected tag, after `focusRing`: the default ring colour\n * is the primary fill itself.\n */\nexport const TAG_DISMISS_SELECTED_RING_CLASSES = 'focus-visible:outline-primary-foreground';\n\n// ---------------------------------------------------------------------------\n// InteractionTag: two sibling buttons on the same table\n// ---------------------------------------------------------------------------\n\n/**\n * What both InteractionTag buttons draw: a 1px border, a colour transition switched off for\n * reduced motion, and a raised stacking level while their focus ring shows, so the neighbouring\n * button does not cover the ring.\n */\nexport const INTERACTION_TAG_BUTTON_BASE_CLASSES =\n 'relative inline-flex items-center border transition-colors motion-reduce:transition-none focus-visible:z-10';\n\n/** The Primary button's own layout: no block padding of its own (C-NATIVE), text from the start. */\nexport const INTERACTION_TAG_PRIMARY_BASE_CLASSES = 'py-0 text-start';\n\n/**\n * The Primary's end inset per size, the border included: 12 or 8px alone; next to a Secondary\n * (the root holds a Dismiss control) 8, 6 or 4px, with no end border (the Secondary's start border\n * is the divider). Read from the root's named group in CSS, so the server HTML is right without a\n * registration render.\n */\nexport const interactionTagPrimaryEndInsetClasses: Readonly<Record<TagSize, string>> = {\n medium: 'pe-2.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-2',\n small: 'pe-1.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-1.5',\n 'extra-small': 'pe-1.75 group-has-[[data-wave-tag-dismiss]]/interaction-tag:pe-1',\n};\n\n/** The Primary's end corners and end border next to a Secondary: square, and none. */\nexport const INTERACTION_TAG_PRIMARY_JOINED_CLASSES =\n 'group-has-[[data-wave-tag-dismiss]]/interaction-tag:rounded-e-none group-has-[[data-wave-tag-dismiss]]/interaction-tag:border-e-0';\n\n/**\n * What the Secondary (the Dismiss button) draws: its content centred, no padding of its own\n * (C-NATIVE: a glyph Secondary is exactly its minimum width), and in forced colours a Highlight\n * glyph on hover (its hover fill becomes Canvas there).\n */\nexport const INTERACTION_TAG_SECONDARY_BASE_CLASSES =\n 'shrink-0 justify-center p-0 forced-colors:not-disabled:not-aria-disabled:hover:text-[Highlight]';\n\n/**\n * The element that holds the Secondary's children while they render a text label (\"Remove\"):\n * 6px on each side, so the label does not touch the divider or the end of the tag.\n */\nexport const INTERACTION_TAG_SECONDARY_LABEL_CLASSES = 'px-1.5';\n\n/**\n * The Secondary per size: at least 28, 24 or 24px wide (exactly that with a glyph: the 12, 12 or\n * 10px glyph and the borders fit inside), as tall as the Primary (the root stretches both), with\n * the text of the tag's size for a text label.\n */\nexport const interactionTagSecondarySizeClasses: Readonly<Record<TagSize, string>> = {\n medium: 'min-w-7 text-body-1',\n small: 'min-w-6 text-caption-1',\n 'extra-small': 'min-w-6 text-caption-1',\n};\n\n/**\n * Border, fill and text of both buttons per look, with their hover and pressed fills behind the\n * literal gate (C-TOKENS): the neutral states on filled tags, Button's outline states on outline\n * tags, the brand states on brand tags and the primary states on selected ones. Compose the\n * selected look with {@link INTERACTION_TAG_SELECTED_FORCED_COLORS}.\n */\nexport const interactionTagLookClasses: Readonly<Record<TagLook, string>> = {\n filled:\n 'border-transparent bg-muted text-foreground not-disabled:not-aria-disabled:hover:bg-muted-hover not-disabled:not-aria-disabled:active:bg-muted-pressed',\n outline:\n 'border-stroke bg-transparent text-foreground not-disabled:not-aria-disabled:hover:border-stroke-hover not-disabled:not-aria-disabled:hover:bg-subtle-hover not-disabled:not-aria-disabled:active:bg-subtle-pressed',\n brand:\n 'border-transparent bg-selected text-selected-foreground not-disabled:not-aria-disabled:hover:bg-selected-hover not-disabled:not-aria-disabled:active:bg-selected-pressed',\n selected:\n 'border-primary bg-primary text-primary-foreground not-disabled:not-aria-disabled:hover:bg-primary-hover not-disabled:not-aria-disabled:active:bg-primary-pressed',\n};\n\n/**\n * The selected buttons in forced colours, after `forcedColors.selectedContainer` (a Highlight\n * outline inside): a Highlight border too, as a pressed Button draws it.\n */\nexport const INTERACTION_TAG_SELECTED_FORCED_COLORS = 'forced-colors:border-[Highlight]';\n\n/**\n * The divider between the two buttons: the Secondary's start border, after the look's border\n * colour. Decorative: the neutral stroke, or the on-primary colour on a selected tag.\n */\nexport const interactionTagDividerClasses: Readonly<Record<TagLook, string>> = {\n filled: 'border-s-stroke',\n outline: 'border-s-stroke',\n brand: 'border-s-stroke',\n selected: 'border-s-primary-foreground',\n};\n\n/** The Secondary's corners per shape: square at its start, the tag's shape at its end. */\nexport const interactionTagSecondaryShapeClasses: Readonly<Record<TagShape, string>> = {\n circular: 'rounded-s-none rounded-e-full',\n rounded: 'rounded-s-none rounded-e',\n};\n\n/**\n * The disabled look of both buttons while natively disabled; a held button (`aria-disabled`) adds\n * `mergedAriaDisabledClasses`. Each button dims itself: the root is never dimmed.\n */\nexport const INTERACTION_TAG_DISABLED_CLASSES = 'disabled:cursor-not-allowed disabled:opacity-50';\n\n/**\n * The disabled cursor alone, for a host that dims the area holding its tags as a whole (the\n * host's `dimDisabled: false`): no button dims itself then.\n */\nexport const INTERACTION_TAG_UNDIMMED_DISABLED_CLASSES =\n 'disabled:cursor-not-allowed aria-disabled:cursor-not-allowed';\n\n/**\n * The pointer target of both buttons at `extra-small`: a transparent layer 2px above and below\n * the 20px button (24px tall), as wide as the button, so two neighbouring targets never overlap.\n */\nexport const INTERACTION_TAG_EXTRA_SMALL_HIT_CLASSES =\n 'before:absolute before:inset-x-0 before:-inset-y-0.5';\n\n/**\n * The root utilities of a text-only, non-dismissible, unselected, enabled tag of a size,\n * appearance and shape, without a stable class (TagPicker's count chip carries its own).\n *\n * @example\n * <span className={cn(chipClassName, tagRootClasses({ size, appearance, shape }))}>+3</span>\n */\nexport function tagRootClasses(options: {\n size: TagSize;\n appearance: TagAppearance;\n shape: TagShape;\n}): string {\n const { size, appearance, shape } = options;\n return [\n TAG_ROOT_BASE_CLASSES,\n tagSizeClasses[size],\n tagStartInsetClasses[size].text,\n tagEndInsetClasses[size].text,\n tagAppearanceClasses[appearance],\n tagShapeClasses[shape],\n ].join(' ');\n}\n"],"mappings":";;AAUA,IAAaA,IAA2D;CACtE,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAGaC,IAAwB,mCAGxBC,IAAoD;CAC/D,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAYaC,IAET;CACF,QAAQ;EAAE,MAAM;EAAW,MAAM;EAAW,OAAO;CAAQ;CAC3D,OAAO;EAAE,MAAM;EAAW,MAAM;EAAW,OAAO;CAAQ;CAC1D,eAAe;EAAE,MAAM;EAAW,MAAM;EAAW,OAAO;CAAQ;AACpE,GAMaC,IAET;CACF,QAAQ;EAAE,MAAM;EAAW,SAAS;CAAU;CAC9C,OAAO;EAAE,MAAM;EAAW,SAAS;CAAU;CAC7C,eAAe;EAAE,MAAM;EAAW,SAAS;CAAQ;AACrD,GAMaC,IAAgE;CAC3E,QAAQ;CACR,SAAS;CACT,OAAO;AACT,GAMaC,IAAuB,qDAMvBC,IACX,sEAGWC,IAAsD;CACjE,UAAU;CACV,SAAS;AACX,GAGaC,IAAqD;CAChE,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAGaC,IAAoD;CAC/D,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAGaC,IAA0B,2CAG1BC,IAAoC,8BAGpCC,IAA6B,4BAQ7BC,IACX,oQAMWC,IAA2D;CACtE,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAMaC,IAA2D;CACtE,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAGaC,IAA6D;CACxE,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAUaC,IAA4D;CACvE,QACE;CACF,SACE;CACF,OACE;CACF,UACE;AACJ,GAMaC,IAAoC,4CAWpCC,IACX,+GAGWC,IAAuC,mBAQvCC,IAA0E;CACrF,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAGaC,IACX,qIAOWC,IACX,mGAMWC,IAA0C,UAO1CC,IAAwE;CACnF,QAAQ;CACR,OAAO;CACP,eAAe;AACjB,GAQaC,IAA+D;CAC1E,QACE;CACF,SACE;CACF,OACE;CACF,UACE;AACJ,GAMaC,IAAyC,oCAMzCC,IAAkE;CAC7E,QAAQ;CACR,SAAS;CACT,OAAO;CACP,UAAU;AACZ,GAGaC,IAA0E;CACrF,UAAU;CACV,SAAS;AACX,GAMaC,IAAmC,mDAMnCC,IACX,gEAMWC,IACX;AASF,SAAgBC,EAAe,GAIpB;CACT,IAAM,EAAE,SAAM,eAAY,aAAUC;CACpC,OAAO;EACLlC;EACAC,EAAekC;EACfjC,EAAqBiC,EAAK,CAAC;EAC3BhC,EAAmBgC,EAAK,CAAC;EACzB/B,EAAqBgC;EACrB7B,EAAgB8B;CAClB,CAAC,CAAC,KAAK,GAAG;AACZ"}
@@ -1,2 +1,2 @@
1
- "use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/dev.cjs"),r=require("../../lib/composeEventHandlers.cjs"),i=require("../../lib/classNames.cjs"),a=require("../../lib/toaster.cjs"),o=require("../../hooks/useEventCallback.cjs"),s=require("../../hooks/useId.cjs"),c=require("../../lib/direction.cjs"),l=require("../../lib/focus.cjs"),ee=require("../../hooks/useMergedRefs.cjs"),te=require("../../lib/aria.cjs"),u=require("../../hooks/usePresence.cjs"),d=require("../../lib/layers.cjs"),f=require("../../hooks/useDirection.cjs"),p=require("../portal/Portal.cjs"),ne=require("../../lib/styles.cjs"),m=require("../../lib/events.cjs"),h=require("../../hooks/usePreserveFocus.cjs"),g=require("./MessageBar.status.cjs"),_=require("./Toast.context.cjs"),re=require("./Toast.root.cjs");let v=require("react");v=e.__toESM(v,1);let y=require("react/jsx-runtime");function b(e,t){let n=0,r=!1;for(let t of e)t.shown?t.dismissed||(n+=1):r=!0;return!r||n>=t?e:e.map(e=>e.shown||n>=t?e:(n+=1,{...e,shown:!0}))}function x(e,t){let n=e.findIndex(e=>e.id===t);if(n===-1)return e;let r=e[n];if(!r.shown)return[...e.slice(0,n),...e.slice(n+1)];if(r.dismissed)return e;let i=e.slice();return i[n]={...r,dismissed:!0},i}function ie(e){return e.every(e=>e.shown&&e.dismissed)?e:e.filter(e=>e.shown).map(e=>e.dismissed?e:{...e,dismissed:!0})}function ae(e){let t;for(let n of e)n.shown&&!n.dismissed&&(!t||n.seq>t.seq)&&(t=n);return t}function S(e,t){return e.contains(t)?!0:d.getOpenLayers().some(n=>{let r=n.getAnchor();return r!==null&&e.contains(r)&&d.isInsideLayerTree(n.id,t)})}function oe(e,t){let n=t?.getDismissButton()??null;return l.getTabbableElements(e).some(e=>e!==n)}function C(e){return e===void 0?1/0:e>=1?Math.floor(e):1}var w={dispatchToast:(e,t)=>(a.isToastOptions(e)?e.toastId:t?.toastId)??``,dismissToast:()=>{},dismissAllToasts:()=>{}},T=`useToastController must be used within <Toaster>. Wrap your app (or the part of it that shows toasts) in <Toaster>: it provides the controller to its children.`;function E(){return v.useContext(_.ToasterContext)||(n.reportMissingContext(`useToastController`,`<Toaster>`,T),w)}var se=5e3;function D(e){let t=new Map,n=new Set,r=new Map,i=!1,a=!1,o=o=>{let s=t.get(o);if(!s)return;let c=!a&&!i&&n.size===0;c&&s.handle===null?(s.startedAt=Date.now(),s.handle=setTimeout(()=>{t.delete(o),r.delete(o),e(o)},s.remaining)):!c&&s.handle!==null&&(clearTimeout(s.handle),s.handle=null,s.remaining=Math.max(0,s.remaining-(Date.now()-s.startedAt)))},s=()=>{for(let e of Array.from(t.keys()))o(e)},c=e=>{let n=t.get(e);n?.handle!=null&&clearTimeout(n.handle),t.delete(e)};return{start(e,n,i){r.get(e)!==n&&(r.set(e,n),c(e),i>0&&Number.isFinite(i)&&(t.set(e,{handle:null,remaining:i,startedAt:0}),o(e)))},remove(e){c(e),r.delete(e)},clear(){for(let e of Array.from(t.keys()))c(e);r.clear()},isPaused(e){return n.has(e)},setPaused(e,t){t?n.add(e):n.delete(e),s()},setInBackground(e){i=e,s()},setSuspended(e){a=e,s()}}}var O={"top-start":`top-4 start-4 ms-(--wave-toaster-offset)`,"top-end":`top-4 end-4 me-(--wave-toaster-offset)`,"bottom-start":`bottom-4 start-4 ms-(--wave-toaster-offset)`,"bottom-end":`bottom-4 end-4 me-(--wave-toaster-offset)`,"top-right":`top-4 right-4 mr-(--wave-toaster-offset)`,"top-left":`top-4 left-4 ml-(--wave-toaster-offset)`,"bottom-right":`bottom-4 right-4 mr-(--wave-toaster-offset)`,"bottom-left":`bottom-4 left-4 ml-(--wave-toaster-offset)`},k=16;function A(e,t){let n=e.slice(e.indexOf(`-`)+1);if(n===`right`||n===`left`)return n===`right`;let r=c.getDirection(t)===`rtl`;return n===`end`?!r:r}function j(e,t){let n=d.getOpenLayers().filter(e=>e.kind===`modal`);if(n.length===0)return 0;let r=e.ownerDocument,i=r.defaultView;if(!i)return 0;let a=r.documentElement.clientWidth||i.innerWidth,o=r.documentElement.clientHeight||i.innerHeight,s=A(t,e),c=t.startsWith(`top`),l=0;for(let e of n)for(let t of e.getElements()){if(!t?.isConnected)continue;let e=t.getBoundingClientRect();if(e.width<=0||e.height<=0)continue;let n=s?e.right>=a-k:e.left<=k,r=c?e.top<=k:e.bottom>=o-k;n&&r&&(l=Math.max(l,s?a-e.left:e.right))}return l<=0||a-l<e.offsetWidth+32?0:Math.ceil(l)}var M=2e3;function N({text:e}){let[t,n]=v.useState(!0);return v.useEffect(()=>{let e=setTimeout(()=>n(!1),M);return()=>clearTimeout(e)},[]),t?(0,y.jsx)(`div`,{children:e}):null}N.displayName=`LiveMessage`;function P(e){return e.kind===`title`}function F(e){return e.kind===`body`}function I(e){return e.kind===`footer`}var L=new Set(`a.abbr.b.bdi.bdo.cite.code.data.dfn.em.i.kbd.label.mark.q.s.samp.small.span.strong.sub.sup.time.u.var.wbr`.split(`.`)),R=new Set([`noscript`,`script`,`style`,`template`]),z=new Set([`button`,`img`,`input`,`select`,`textarea`]),B=new Set([`button`,`checkbox`,`combobox`,`img`,`link`,`option`,`radio`,`slider`,`spinbutton`,`switch`,`tab`,`textbox`]);function V(e){let t=e.getAttribute(`role`)?.trim().split(/\s+/)[0];return t?B.has(t)||t.startsWith(`menuitem`):e.localName===`a`?e.hasAttribute(`href`):z.has(e.localName)}function H(e){return e.getAttribute(`aria-hidden`)===`true`||e.hasAttribute(`hidden`)||R.has(e.localName)}function U(e,t){if(!e)return``;let n=[],r=(e,i)=>{if(e.nodeType===Node.TEXT_NODE){n.push(e.textContent??``);return}if(e.nodeType!==Node.ELEMENT_NODE)return;let a=e;if(!i&&t?.(a)||H(a))return;let o=a.getAttribute(`aria-label`);if(o&&V(a)){n.push(` ${o} `);return}if(a.localName===`img`){n.push(` ${a.getAttribute(`alt`)??``} `);return}let s=!L.has(a.localName);s&&n.push(` `);for(let e of Array.from(a.childNodes))r(e,!1);s&&n.push(` `)};return r(e,!0),n.join(``).replace(/\s+/g,` `).trim()}function W(e){return!e||H(e)?[]:Array.from(e.childNodes,e=>e.nodeType===Node.TEXT_NODE?(e.textContent??``).replace(/\s+/g,` `).trim():e.nodeType===Node.ELEMENT_NODE?U(e):``).filter(Boolean)}function ce(e,t,n,r){let i=t.find(P),a=t.find(F);if(!i&&!a){let t=n?.getDismissButton()??null;return U(e,e=>e===t||e.id!==``&&(e.id===r||e.id===n?.statusTextId))}let o=i?.getLabel()??null,s=i?.getRow()??null,c=s?Array.from(s.children).filter(e=>e!==o).flatMap(e=>W(e)):[];return[U(o),U(a?.getElement()??null),...c,...t.filter(I).flatMap(e=>W(e.getElement()))].filter(Boolean).join(` `)}function G({entry:e,timers:r,onDismiss:a,onExited:c,getFocusFallback:l,announce:d,registerContainer:f}){let{id:p,dismissed:b}=e,{isMounted:x,ref:ie,presenceProps:ae}=u.usePresence(!b,{appear:!0,onExited:()=>c(p)}),S=v.useRef(null),C=v.useRef(null),w=v.useCallback(e=>{S.current=e,e&&(C.current=e),f(p,e)},[p,f]),T=ee.useMergedRefs(w,ie);h.usePreserveFocus(S,()=>l(C.current),{enabled:!b});let E=s.useId(`wave-toast-title`),D=s.useId(`wave-toast-status`),[O,k]=v.useState([]),A=v.useRef([]),j=v.useCallback(e=>(A.current=[...A.current,e],k(A.current),()=>{A.current=A.current.filter(t=>t!==e),k(A.current)}),[]),[M,N]=v.useState(null),I=v.useRef(null),L=v.useCallback(e=>(I.current=e,N(e),()=>{I.current===e&&(I.current=null,N(null))}),[]),R=o.useEventCallback(()=>{I.current?.onDismiss?.(),a(p)}),z=v.useMemo(()=>({titleId:E,dismiss:R,registerPart:j,registerToast:L}),[E,R,j,L]),B=O.find(P),V=O.find(F),H=e.form===`content`&&M===null?g.getStatusLabel(e.options.status??`info`,e.options.statusLabel):``,U=M?M.statusTextId:H?D:void 0;v.useLayoutEffect(()=>{let t=S.current;if(e.dismissed||!t)return;let n=e.options.timeout??(oe(t,I.current)?0:se);r.start(e.id,e.seq,n)},[e,r]),v.useLayoutEffect(()=>{let t=S.current;if(e.dismissed||!t)return;let n=I.current,r=n?.status??e.options.status??`info`,i=n?n.statusLabel:g.getStatusLabel(r,e.options.statusLabel),a=e.form===`content`&&e.options.announcement!==void 0?e.options.announcement:ce(t,A.current,n,D);d(e.id,{seq:e.seq,text:[i,a].filter(Boolean).join(` `),assertive:r===`error`})},[e,d,D,M]);let W=e.form===`content`?e.options.status:void 0;v.useEffect(()=>{let e=I.current?.status;W!==void 0&&e!==void 0&&W!==e&&n.warnOnce(`Toaster:status-conflict`,`Toaster: the dispatched Toast has status "${e}" but the dispatch options pass "${W}"; the Toast's status is used. Remove \`status\` from the options.`)},[e,W,M]);let G=e=>{(e.key===`Delete`||e.key===`Backspace`)&&(e.defaultPrevented||!m.isOwnEvent(e)||m.isEditableTarget(e.target)||(e.preventDefault(),a(p)))};return x?(0,y.jsxs)(`div`,{ref:T,role:`group`,tabIndex:-1,"data-wave-toast":``,"aria-labelledby":te.joinIds(U,B?.id),"aria-describedby":V?.id,className:t.cn(i.toasterClassNames.toast,`rounded`,ne.focusRing),...ae,onKeyDown:G,children:[H?(0,y.jsx)(g.StatusText,{label:H,id:D}):null,(0,y.jsx)(_.ToastContext.Provider,{value:z,children:e.form===`options`?(0,y.jsx)(re.ToastRoot,{status:e.options.status,statusLabel:e.options.statusLabel,title:e.options.title,dismissLabel:e.options.dismissLabel,children:e.options.body}):e.content})]}):null}G.displayName=`ToastContainer`;var K=({position:e=`bottom-end`,limit:c,shortcuts:te,toaster:u,className:ne,style:h,children:g,onFocus:re,onBlur:oe,onKeyDown:w,onPointerEnter:T,onPointerLeave:E,onPointerOver:se,ref:k,...A})=>{let[M,P]=v.useState([]),[F,I]=v.useState(()=>new Map),L=v.useCallback((e,t)=>{I(n=>{let r=n.get(e);if(r&&r.seq===t.seq&&r.text===t.text&&r.assertive===t.assertive)return n;let i=new Map(n);return i.set(e,t),i})},[]),R=b(M,C(c));R!==M&&P(R);let z=R.filter(e=>e.shown);v.useEffect(()=>{c!==void 0&&!(c>=1)&&n.warnOnce(`Toaster:limit`,`Toaster: \`limit\` must be 1 or more (got ${String(c)}); it counts as 1.`)},[c]);let B=s.useId(`toast`),V=v.useRef(0),H=v.useRef(null),U=ee.useMergedRefs(k,H),W=v.useRef(null),ce=f.useDirection(),[K,le]=v.useState(0);v.useLayoutEffect(()=>{let t=()=>{let t=H.current;le(t?j(t,e):0)};t();let n=d.subscribeLayers(t);return window.addEventListener(`resize`,t),document.addEventListener(`transitionend`,t,!0),document.addEventListener(`animationend`,t,!0),()=>{n(),window.removeEventListener(`resize`,t),document.removeEventListener(`transitionend`,t,!0),document.removeEventListener(`animationend`,t,!0)}},[e,ce]);let[q]=v.useState(()=>D(e=>P(t=>x(t,e))));v.useEffect(()=>{let e=document,t=!1,n=()=>q.setInBackground(t||e.visibilityState===`hidden`),r=e=>{e.target instanceof Node||(t=!0,n())},i=e=>{e.target instanceof Node||(t=!1,n())};return n(),q.setSuspended(!1),window.addEventListener(`blur`,r),window.addEventListener(`focus`,i),e.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`blur`,r),window.removeEventListener(`focus`,i),e.removeEventListener(`visibilitychange`,n),q.setSuspended(!0)}},[q]);let ue=v.useCallback((e,t)=>{V.current+=1;let n=V.current,r=a.isToastOptions(e)?{form:`options`,options:e}:{form:`content`,content:e,options:t??{}},i=r.options.toastId??`${B}-${n}`;return P(e=>{let t=e.findIndex(e=>e.id===i),a=t!==-1&&e[t].shown,o={...r,id:i,seq:n,shown:a,dismissed:!1};if(t===-1)return[...e,o];let s=e.slice();return s[t]=o,s}),i},[B]),J=v.useCallback(e=>{q.remove(e),P(t=>x(t,e))},[q]),Y=v.useCallback(()=>{q.clear(),P(e=>ie(e))},[q]),de=v.useCallback(e=>{P(t=>t.some(t=>t.id===e&&t.dismissed)?t.filter(t=>!(t.id===e&&t.dismissed)):t),I(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),X=v.useMemo(()=>({dispatchToast:ue,dismissToast:J,dismissAllToasts:Y}),[ue,J,Y]),[fe]=v.useState(()=>({}));v.useLayoutEffect(()=>{if(!u)return;let e=a.bindToasterHandle(u,fe,X);if(e.status===`bound`)return e.unbind;e.status===`taken`?n.warnOnce(`Toaster:handle-bound`,`Toaster: this handle is already bound to another Toaster; a handle binds one Toaster. Create one handle per Toaster.`):n.warnOnce(`Toaster:handle-unknown`,"Toaster: `toaster` is not a handle from createToaster(), so nothing is bound. Pass the value createToaster() returns.")},[u,fe,X]);let pe=v.useCallback(e=>{let t=H.current,n=t?Array.from(t.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-wave-toast`)):[],r=!!e&&e.ownerDocument.activeElement===e,i=e?n.indexOf(e):-1,a=t=>t!==e&&t.isConnected&&t.getAttribute(`data-presence`)!==`exiting`,o=n.slice(i+1).find(a),s=i>0?n.slice(0,i).reverse().find(a):void 0;for(let e of[o,s]){if(!e)continue;let t=r?e:l.getFirstTabbable(e);if(t)return t}let c=W.current;return W.current=null,c?.isConnected?c:null},[]),Z=o.useEventCallback(()=>{let e=H.current;if(!e)return;let t=e.ownerDocument;if(t.activeElement&&t.activeElement!==t.body)return;let n=q.isPaused(`focus`);q.setPaused(`focus`,!1);let r=W.current;W.current=null,n&&r&&l.isConnectedAndFocusable(r)&&r.focus({preventScroll:!0})});v.useLayoutEffect(()=>{Z()},[R,Z]),v.useLayoutEffect(()=>d.subscribeLayers(()=>queueMicrotask(Z)),[Z]);let Q=v.useRef(null);v.useEffect(()=>{let e=e=>{let t=Q.current===e;if(Q.current=null,t||!q.isPaused(`hover`))return;let n=H.current;n&&e.target instanceof Node&&S(n,e.target)||q.setPaused(`hover`,!1)};return document.addEventListener(`pointerover`,e),()=>document.removeEventListener(`pointerover`,e)},[q]);let me=v.useRef(R);v.useLayoutEffect(()=>{me.current=R});let $=v.useRef(new Map),he=v.useCallback((e,t)=>{t?$.current.set(e,t):$.current.delete(e)},[]),ge=typeof te?.focus==`function`,_e=o.useEventCallback(e=>{if(e.defaultPrevented||e.isComposing||!te?.focus?.(e))return;let t=ae(me.current),n=t?$.current.get(t.id):void 0;if(!n?.isConnected)return;e.preventDefault();let r=H.current,i=n.ownerDocument.activeElement;i instanceof HTMLElement&&i!==n.ownerDocument.body&&!(r&&S(r,i))&&(W.current=i),n.focus({preventScroll:!1})});v.useEffect(()=>{if(!ge)return;let e=e=>_e(e);return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[ge,_e]);let ve=e=>{let t=e.relatedTarget;t instanceof HTMLElement&&l.isConnectedAndFocusable(t)&&(S(e.currentTarget,t)||(W.current=t))},ye=e=>{let t=e.currentTarget,n=e.relatedTarget;if(!(n instanceof Node&&S(t,n))&&!e.target.closest(`[data-wave-toast][data-presence="exiting"]`)){if(n===null){let n=e.target;if(!n.isConnected)return;let r=n.ownerDocument.activeElement;if(r&&S(t,r))return}W.current=null}},be=e=>{if(e.key!==`Escape`&&e.key!==`Esc`||e.defaultPrevented||e.nativeEvent.isComposing||!m.isOwnEvent(e))return;let t=e.currentTarget;if(d.getOpenLayers().some(e=>e.escape&&t.contains(e.getAnchor())))return;e.preventDefault();let n=W.current;W.current=null,n?.isConnected&&n.focus({preventScroll:!0}),Y()},xe=[],Se=[];for(let e of z){if(e.dismissed)continue;let t=F.get(e.id);if(!t||t.seq!==e.seq||!t.text)continue;let n=(0,y.jsx)(N,{text:t.text},t.seq);(t.assertive?Se:xe).push(n)}let Ce=K>0?{...h,"--wave-toaster-offset":`${K}px`}:h;return(0,y.jsxs)(_.ToasterContext.Provider,{value:X,children:[g,(0,y.jsx)(p.Portal,{layer:`toast`,children:(0,y.jsxs)(`div`,{ref:U,role:`region`,"aria-label":`Notifications`,"data-wave-focus-trap-allow":``,"data-position":e,...A,style:Ce,onFocus:e=>{re?.(e),ve(e),q.setPaused(`focus`,!0)},onBlur:e=>{oe?.(e),ye(e);let t=e.relatedTarget;t instanceof Node&&S(e.currentTarget,t)||q.setPaused(`focus`,!1)},onPointerEnter:e=>{T?.(e),q.setPaused(`hover`,!0)},onPointerLeave:e=>{E?.(e),q.setPaused(`hover`,!1)},onPointerOver:e=>{se?.(e),Q.current=e.nativeEvent},onKeyDown:e=>r.composeEventHandlers(w,be)(e),className:t.cn(i.toasterClassNames.root,`fixed flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2`,O[e],ne),children:[(0,y.jsx)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`false`,className:`sr-only`,children:xe}),(0,y.jsx)(`div`,{"aria-live":`assertive`,"aria-atomic":`false`,className:`sr-only`,children:Se}),z.map(e=>(0,y.jsx)(G,{entry:e,timers:q,onDismiss:J,onExited:de,getFocusFallback:pe,announce:L,registerContainer:he},e.id))]})})]})};K.displayName=`Toaster`,exports.Toaster=K,exports.useToastController=E;
1
+ "use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/dev.cjs"),r=require("../../lib/composeEventHandlers.cjs"),i=require("../../lib/classNames.cjs"),a=require("../../lib/toaster.cjs"),o=require("../../hooks/useEventCallback.cjs"),s=require("../../hooks/useId.cjs"),c=require("../../lib/direction.cjs"),l=require("../../lib/focus.cjs"),u=require("../../hooks/useMergedRefs.cjs"),d=require("../../lib/aria.cjs"),f=require("../../hooks/usePresence.cjs"),p=require("../../lib/layers.cjs"),m=require("../../hooks/useDirection.cjs"),h=require("../portal/Portal.cjs"),ee=require("../../lib/styles.cjs"),g=require("../../lib/events.cjs"),_=require("../../hooks/usePreserveFocus.cjs"),v=require("./MessageBar.status.cjs"),y=require("./Toast.context.cjs"),te=require("./Toast.root.cjs");let b=require("react");b=e.__toESM(b,1);let x=require("react/jsx-runtime");function S(e,t){let n=0,r=!1;for(let t of e)t.shown?t.dismissed||(n+=1):r=!0;return!r||n>=t?e:e.map(e=>e.shown||n>=t?e:(n+=1,{...e,shown:!0}))}function C(e,t){let n=e.findIndex(e=>e.id===t);if(n===-1)return e;let r=e[n];if(!r.shown)return[...e.slice(0,n),...e.slice(n+1)];if(r.dismissed)return e;let i=e.slice();return i[n]={...r,dismissed:!0},i}function ne(e){return e.every(e=>e.shown&&e.dismissed)?e:e.filter(e=>e.shown).map(e=>e.dismissed?e:{...e,dismissed:!0})}function re(e){let t;for(let n of e)n.shown&&!n.dismissed&&(!t||n.seq>t.seq)&&(t=n);return t}function w(e,t){return e.contains(t)?!0:p.getOpenLayers().some(n=>{let r=n.getAnchor();return r!==null&&e.contains(r)&&p.isInsideLayerTree(n.id,t)})}function ie(e,t){let n=t?.getDismissButton()??null;return l.getTabbableElements(e).some(e=>e!==n)}function T(e){return e===void 0?1/0:e>=1?Math.floor(e):1}var E={dispatchToast:(e,t)=>(a.isToastOptions(e)?e.toastId:t?.toastId)??``,dismissToast:()=>{},dismissAllToasts:()=>{}},D=`useToastController must be used within <Toaster>. Wrap your app (or the part of it that shows toasts) in <Toaster>: it provides the controller to its children.`;function O(){return b.useContext(y.ToasterContext)||(n.reportMissingContext(`useToastController`,`<Toaster>`,D),E)}var ae=5e3;function k(e){let t=new Map,n=new Set,r=new Map,i=!1,a=!1,o=o=>{let s=t.get(o);if(!s)return;let c=!a&&!i&&n.size===0;c&&s.handle===null?(s.startedAt=Date.now(),s.handle=setTimeout(()=>{t.delete(o),r.delete(o),e(o)},s.remaining)):!c&&s.handle!==null&&(clearTimeout(s.handle),s.handle=null,s.remaining=Math.max(0,s.remaining-(Date.now()-s.startedAt)))},s=()=>{for(let e of Array.from(t.keys()))o(e)},c=e=>{let n=t.get(e);n?.handle!=null&&clearTimeout(n.handle),t.delete(e)};return{start(e,n,i){r.get(e)!==n&&(r.set(e,n),c(e),i>0&&Number.isFinite(i)&&(t.set(e,{handle:null,remaining:i,startedAt:0}),o(e)))},remove(e){c(e),r.delete(e)},clear(){for(let e of Array.from(t.keys()))c(e);r.clear()},isPaused(e){return n.has(e)},setPaused(e,t){t?n.add(e):n.delete(e),s()},setInBackground(e){i=e,s()},setSuspended(e){a=e,s()}}}var A={"top-start":`top-4 start-4 ms-(--wave-toaster-offset) mt-(--wave-toaster-offset-block)`,"top-end":`top-4 end-4 me-(--wave-toaster-offset) mt-(--wave-toaster-offset-block)`,"bottom-start":`bottom-4 start-4 ms-(--wave-toaster-offset) mb-(--wave-toaster-offset-block)`,"bottom-end":`bottom-4 end-4 me-(--wave-toaster-offset) mb-(--wave-toaster-offset-block)`,"top-right":`top-4 right-4 mr-(--wave-toaster-offset) mt-(--wave-toaster-offset-block)`,"top-left":`top-4 left-4 ml-(--wave-toaster-offset) mt-(--wave-toaster-offset-block)`,"bottom-right":`bottom-4 right-4 mr-(--wave-toaster-offset) mb-(--wave-toaster-offset-block)`,"bottom-left":`bottom-4 left-4 ml-(--wave-toaster-offset) mb-(--wave-toaster-offset-block)`},j=16;function M(e,t){let n=e.slice(e.indexOf(`-`)+1);if(n===`right`||n===`left`)return n===`right`;let r=c.getDirection(t)===`rtl`;return n===`end`?!r:r}var N={inline:0,block:0};function P(){return p.getOpenLayers().filter(e=>e.kind===`modal`||e.kind===`dialog`)}function F(){let e=new Set;for(let t of P())for(let n of t.getElements())n?.isConnected&&e.add(n);return e}function I(e,t){let n=P();if(n.length===0)return N;let r=e.ownerDocument,i=r.defaultView;if(!i)return N;let a=r.documentElement.clientWidth||i.innerWidth,o=r.documentElement.clientHeight||i.innerHeight,s=M(t,e),c=t.startsWith(`top`),l=t=>a-t>=e.offsetWidth+32,u=t=>o-t>=e.offsetHeight+32,d=0,f=0;for(let e of n)for(let t of e.getElements()){if(!t?.isConnected)continue;let e=t.getBoundingClientRect();if(e.width<=0||e.height<=0)continue;let n=s?e.right>=a-j:e.left<=j,r=c?e.top<=j:e.bottom>=o-j;if(!n||!r)continue;let i=s?a-e.left:e.right,p=c?e.bottom:o-e.top;l(i)?d=Math.max(d,i):u(p)&&(f=Math.max(f,p))}return{inline:d>0&&l(d)?Math.ceil(d):0,block:f>0&&u(f)?Math.ceil(f):0}}var L=2e3;function R({text:e}){let[t,n]=b.useState(!0);return b.useEffect(()=>{let e=setTimeout(()=>n(!1),L);return()=>clearTimeout(e)},[]),t?(0,x.jsx)(`div`,{children:e}):null}R.displayName=`LiveMessage`;function z(e){return e.kind===`title`}function B(e){return e.kind===`body`}function V(e){return e.kind===`footer`}var H=new Set(`a.abbr.b.bdi.bdo.cite.code.data.dfn.em.i.kbd.label.mark.q.s.samp.small.span.strong.sub.sup.time.u.var.wbr`.split(`.`)),U=new Set([`noscript`,`script`,`style`,`template`]),W=new Set([`button`,`img`,`input`,`select`,`textarea`]),G=new Set([`button`,`checkbox`,`combobox`,`img`,`link`,`option`,`radio`,`slider`,`spinbutton`,`switch`,`tab`,`textbox`]);function K(e){let t=e.getAttribute(`role`)?.trim().split(/\s+/)[0];return t?G.has(t)||t.startsWith(`menuitem`):e.localName===`a`?e.hasAttribute(`href`):W.has(e.localName)}function q(e){return e.getAttribute(`aria-hidden`)===`true`||e.hasAttribute(`hidden`)||U.has(e.localName)}function J(e,t){if(!e)return``;let n=[],r=(e,i)=>{if(e.nodeType===Node.TEXT_NODE){n.push(e.textContent??``);return}if(e.nodeType!==Node.ELEMENT_NODE)return;let a=e;if(!i&&t?.(a)||q(a))return;let o=a.getAttribute(`aria-label`);if(o&&K(a)){n.push(` ${o} `);return}if(a.localName===`img`){n.push(` ${a.getAttribute(`alt`)??``} `);return}let s=!H.has(a.localName);s&&n.push(` `);for(let e of Array.from(a.childNodes))r(e,!1);s&&n.push(` `)};return r(e,!0),n.join(``).replace(/\s+/g,` `).trim()}function Y(e){return!e||q(e)?[]:Array.from(e.childNodes,e=>e.nodeType===Node.TEXT_NODE?(e.textContent??``).replace(/\s+/g,` `).trim():e.nodeType===Node.ELEMENT_NODE?J(e):``).filter(Boolean)}function X(e,t,n,r){let i=t.find(z),a=t.find(B);if(!i&&!a){let t=n?.getDismissButton()??null;return J(e,e=>e===t||e.id!==``&&(e.id===r||e.id===n?.statusTextId))}let o=i?.getLabel()??null,s=i?.getRow()??null,c=s?Array.from(s.children).filter(e=>e!==o).flatMap(e=>Y(e)):[];return[J(o),J(a?.getElement()??null),...c,...t.filter(V).flatMap(e=>Y(e.getElement()))].filter(Boolean).join(` `)}function oe({entry:e,timers:r,onDismiss:a,onExited:c,getFocusFallback:l,announce:p,registerContainer:m}){let{id:h,dismissed:S}=e,{isMounted:C,ref:ne,presenceProps:re}=f.usePresence(!S,{appear:!0,onExited:()=>c(h)}),w=b.useRef(null),T=b.useRef(null),E=b.useCallback(e=>{w.current=e,e&&(T.current=e),m(h,e)},[h,m]),D=u.useMergedRefs(E,ne);_.usePreserveFocus(w,()=>l(T.current),{enabled:!S});let O=s.useId(`wave-toast-title`),k=s.useId(`wave-toast-status`),[A,j]=b.useState([]),M=b.useRef([]),N=b.useCallback(e=>(M.current=[...M.current,e],j(M.current),()=>{M.current=M.current.filter(t=>t!==e),j(M.current)}),[]),[P,F]=b.useState(null),I=b.useRef(null),L=b.useCallback(e=>(I.current=e,F(e),()=>{I.current===e&&(I.current=null,F(null))}),[]),R=o.useEventCallback(()=>{I.current?.onDismiss?.(),a(h)}),V=b.useMemo(()=>({titleId:O,dismiss:R,registerPart:N,registerToast:L}),[O,R,N,L]),H=A.find(z),U=A.find(B),W=e.form===`content`&&P===null?v.getStatusLabel(e.options.status??`info`,e.options.statusLabel):``,G=P?P.statusTextId:W?k:void 0;b.useLayoutEffect(()=>{let t=w.current;if(e.dismissed||!t)return;let n=e.options.timeout??(ie(t,I.current)?0:ae);r.start(e.id,e.seq,n)},[e,r]),b.useLayoutEffect(()=>{let t=w.current;if(e.dismissed||!t)return;let n=I.current,r=n?.status??e.options.status??`info`,i=n?n.statusLabel:v.getStatusLabel(r,e.options.statusLabel),a=e.form===`content`&&e.options.announcement!==void 0?e.options.announcement:X(t,M.current,n,k);p(e.id,{seq:e.seq,text:[i,a].filter(Boolean).join(` `),assertive:r===`error`})},[e,p,k,P]);let K=e.form===`content`?e.options.status:void 0;b.useEffect(()=>{let e=I.current?.status;K!==void 0&&e!==void 0&&K!==e&&n.warnOnce(`Toaster:status-conflict`,`Toaster: the dispatched Toast has status "${e}" but the dispatch options pass "${K}"; the Toast's status is used. Remove \`status\` from the options.`)},[e,K,P]);let q=e=>{(e.key===`Delete`||e.key===`Backspace`)&&(e.defaultPrevented||!g.isOwnEvent(e)||g.isEditableTarget(e.target)||(e.preventDefault(),a(h)))};return C?(0,x.jsxs)(`div`,{ref:D,role:`group`,tabIndex:-1,"data-wave-toast":``,"aria-labelledby":d.joinIds(G,H?.id),"aria-describedby":U?.id,className:t.cn(i.toasterClassNames.toast,`rounded`,ee.focusRing),...re,onKeyDown:q,children:[W?(0,x.jsx)(v.StatusText,{label:W,id:k}):null,(0,x.jsx)(y.ToastContext.Provider,{value:V,children:e.form===`options`?(0,x.jsx)(te.ToastRoot,{status:e.options.status,statusLabel:e.options.statusLabel,title:e.options.title,dismissLabel:e.options.dismissLabel,children:e.options.body}):e.content})]}):null}oe.displayName=`ToastContainer`;var Z=({position:e=`bottom-end`,limit:c,shortcuts:d,toaster:f,className:ee,style:_,children:v,onFocus:te,onBlur:ie,onKeyDown:E,onPointerEnter:D,onPointerLeave:O,onPointerOver:ae,ref:j,...M})=>{let[P,L]=b.useState([]),[z,B]=b.useState(()=>new Map),V=b.useCallback((e,t)=>{B(n=>{let r=n.get(e);if(r&&r.seq===t.seq&&r.text===t.text&&r.assertive===t.assertive)return n;let i=new Map(n);return i.set(e,t),i})},[]),H=S(P,T(c));H!==P&&L(H);let U=H.filter(e=>e.shown);b.useEffect(()=>{c!==void 0&&!(c>=1)&&n.warnOnce(`Toaster:limit`,`Toaster: \`limit\` must be 1 or more (got ${String(c)}); it counts as 1.`)},[c]);let W=s.useId(`toast`),G=b.useRef(0),K=b.useRef(null),q=u.useMergedRefs(j,K),J=b.useRef(null),Y=m.useDirection(),[X,Z]=b.useState(N);b.useLayoutEffect(()=>{let t=null,n=null,r=null,i=new Set,a=()=>{let e=F();for(let n of i)e.has(n)||t?.unobserve(n);for(let n of e)i.has(n)||t?.observe(n);let r=e.size!==i.size||[...e].some(e=>!i.has(e));if(i=e,r&&n){n.disconnect();for(let t of e)n.observe(t,{attributes:!0,attributeFilter:[`class`,`style`]})}},o=()=>{let n=K.current;t&&n!==r&&(r&&t.unobserve(r),n&&t.observe(n),r=n),a();let i=n?I(n,e):N;Z(e=>e.inline===i.inline&&e.block===i.block?e:i)};typeof ResizeObserver<`u`&&(t=new ResizeObserver(()=>o())),typeof MutationObserver<`u`&&(n=new MutationObserver(o)),o();let s=p.subscribeLayers(o);return window.addEventListener(`resize`,o),document.addEventListener(`transitionend`,o,!0),document.addEventListener(`animationend`,o,!0),()=>{s(),t?.disconnect(),n?.disconnect(),window.removeEventListener(`resize`,o),document.removeEventListener(`transitionend`,o,!0),document.removeEventListener(`animationend`,o,!0)}},[e,Y]);let[Q]=b.useState(()=>k(e=>L(t=>C(t,e))));b.useEffect(()=>{let e=document,t=!1,n=()=>Q.setInBackground(t||e.visibilityState===`hidden`),r=e=>{e.target instanceof Node||(t=!0,n())},i=e=>{e.target instanceof Node||(t=!1,n())};return n(),Q.setSuspended(!1),window.addEventListener(`blur`,r),window.addEventListener(`focus`,i),e.addEventListener(`visibilitychange`,n),()=>{window.removeEventListener(`blur`,r),window.removeEventListener(`focus`,i),e.removeEventListener(`visibilitychange`,n),Q.setSuspended(!0)}},[Q]);let se=b.useCallback((e,t)=>{G.current+=1;let n=G.current,r=a.isToastOptions(e)?{form:`options`,options:e}:{form:`content`,content:e,options:t??{}},i=r.options.toastId??`${W}-${n}`;return L(e=>{let t=e.findIndex(e=>e.id===i),a=t!==-1&&e[t].shown,o={...r,id:i,seq:n,shown:a,dismissed:!1};if(t===-1)return[...e,o];let s=e.slice();return s[t]=o,s}),i},[W]),ce=b.useCallback(e=>{Q.remove(e),L(t=>C(t,e))},[Q]),le=b.useCallback(()=>{Q.clear(),L(e=>ne(e))},[Q]),ue=b.useCallback(e=>{L(t=>t.some(t=>t.id===e&&t.dismissed)?t.filter(t=>!(t.id===e&&t.dismissed)):t),B(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),de=b.useMemo(()=>({dispatchToast:se,dismissToast:ce,dismissAllToasts:le}),[se,ce,le]),[fe]=b.useState(()=>({}));b.useLayoutEffect(()=>{if(!f)return;let e=a.bindToasterHandle(f,fe,de);if(e.status===`bound`)return e.unbind;e.status===`taken`?n.warnOnce(`Toaster:handle-bound`,`Toaster: this handle is already bound to another Toaster; a handle binds one Toaster. Create one handle per Toaster.`):n.warnOnce(`Toaster:handle-unknown`,"Toaster: `toaster` is not a handle from createToaster(), so nothing is bound. Pass the value createToaster() returns.")},[f,fe,de]);let pe=b.useCallback(e=>{let t=K.current,n=t?Array.from(t.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-wave-toast`)):[],r=!!e&&e.ownerDocument.activeElement===e,i=e?n.indexOf(e):-1,a=t=>t!==e&&t.isConnected&&t.getAttribute(`data-presence`)!==`exiting`,o=n.slice(i+1).find(a),s=i>0?n.slice(0,i).reverse().find(a):void 0;for(let e of[o,s]){if(!e)continue;let t=r?e:l.getFirstTabbable(e);if(t)return t}let c=J.current;return J.current=null,c?.isConnected?c:null},[]),$=o.useEventCallback(()=>{let e=K.current;if(!e)return;let t=e.ownerDocument;if(t.activeElement&&t.activeElement!==t.body)return;let n=Q.isPaused(`focus`);Q.setPaused(`focus`,!1);let r=J.current;J.current=null,n&&r&&l.isConnectedAndFocusable(r)&&r.focus({preventScroll:!0})});b.useLayoutEffect(()=>{$()},[H,$]),b.useLayoutEffect(()=>p.subscribeLayers(()=>queueMicrotask($)),[$]);let me=b.useRef(null);b.useEffect(()=>{let e=e=>{let t=me.current===e;if(me.current=null,t||!Q.isPaused(`hover`))return;let n=K.current;n&&e.target instanceof Node&&w(n,e.target)||Q.setPaused(`hover`,!1)};return document.addEventListener(`pointerover`,e),()=>document.removeEventListener(`pointerover`,e)},[Q]);let he=b.useRef(H);b.useLayoutEffect(()=>{he.current=H});let ge=b.useRef(new Map),_e=b.useCallback((e,t)=>{t?ge.current.set(e,t):ge.current.delete(e)},[]),ve=typeof d?.focus==`function`,ye=o.useEventCallback(e=>{if(e.defaultPrevented||e.isComposing||!d?.focus?.(e))return;let t=re(he.current),n=t?ge.current.get(t.id):void 0;if(!n?.isConnected)return;e.preventDefault();let r=K.current,i=n.ownerDocument.activeElement;i instanceof HTMLElement&&i!==n.ownerDocument.body&&!(r&&w(r,i))&&(J.current=i),n.focus({preventScroll:!1})});b.useEffect(()=>{if(!ve)return;let e=e=>ye(e);return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[ve,ye]);let be=e=>{let t=e.relatedTarget;t instanceof HTMLElement&&l.isConnectedAndFocusable(t)&&(w(e.currentTarget,t)||(J.current=t))},xe=e=>{let t=e.currentTarget,n=e.relatedTarget;if(!(n instanceof Node&&w(t,n))&&!e.target.closest(`[data-wave-toast][data-presence="exiting"]`)){if(n===null){let n=e.target;if(!n.isConnected)return;let r=n.ownerDocument.activeElement;if(r&&w(t,r))return}J.current=null}},Se=e=>{if(e.key!==`Escape`&&e.key!==`Esc`||e.defaultPrevented||e.nativeEvent.isComposing||!g.isOwnEvent(e))return;let t=e.currentTarget;if(p.getOpenLayers().some(e=>e.escape&&t.contains(e.getAnchor())))return;e.preventDefault();let n=J.current;J.current=null,n?.isConnected&&n.focus({preventScroll:!0}),le()},Ce=[],we=[];for(let e of U){if(e.dismissed)continue;let t=z.get(e.id);if(!t||t.seq!==e.seq||!t.text)continue;let n=(0,x.jsx)(R,{text:t.text},t.seq);(t.assertive?we:Ce).push(n)}let Te=X.inline>0||X.block>0?{..._,...X.inline>0&&{"--wave-toaster-offset":`${X.inline}px`},...X.block>0&&{"--wave-toaster-offset-block":`${X.block}px`}}:_;return(0,x.jsxs)(y.ToasterContext.Provider,{value:de,children:[v,(0,x.jsx)(h.Portal,{layer:`toast`,children:(0,x.jsxs)(`div`,{ref:q,role:`region`,"aria-label":`Notifications`,"data-wave-focus-trap-allow":``,"data-position":e,...M,style:Te,onFocus:e=>{te?.(e),be(e),Q.setPaused(`focus`,!0)},onBlur:e=>{ie?.(e),xe(e);let t=e.relatedTarget;t instanceof Node&&w(e.currentTarget,t)||Q.setPaused(`focus`,!1)},onPointerEnter:e=>{D?.(e),Q.setPaused(`hover`,!0)},onPointerLeave:e=>{O?.(e),Q.setPaused(`hover`,!1)},onPointerOver:e=>{ae?.(e),me.current=e.nativeEvent},onKeyDown:e=>r.composeEventHandlers(E,Se)(e),className:t.cn(i.toasterClassNames.root,`fixed flex w-80 max-w-[calc(100vw-2rem)] flex-col gap-2`,A[e],ee),children:[(0,x.jsx)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`false`,className:`sr-only`,children:Ce}),(0,x.jsx)(`div`,{"aria-live":`assertive`,"aria-atomic":`false`,className:`sr-only`,children:we}),U.map(e=>(0,x.jsx)(oe,{entry:e,timers:Q,onDismiss:ce,onExited:ue,getFocusFallback:pe,announce:V,registerContainer:_e},e.id))]})})]})};Z.displayName=`Toaster`,exports.Toaster=Z,exports.useToastController=O;
2
2
  //# sourceMappingURL=Toaster.cjs.map