@astra-kit/ui 0.0.0-stage → 1.0.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 (304) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +330 -2
  4. package/THIRD_PARTY_NOTICES.md +31 -0
  5. package/assets/fonts/geist-LICENSE.txt +93 -0
  6. package/assets/fonts/geist-latin-variable.woff2 +0 -0
  7. package/assets/fonts/ibm-plex-mono-latin-400.woff2 +0 -0
  8. package/assets/fonts/ibm-plex-mono-latin-500.woff2 +0 -0
  9. package/assets/fonts/ibmplexmono-LICENSE.txt +93 -0
  10. package/assets/fonts/inter-LICENSE.txt +93 -0
  11. package/assets/fonts/inter-latin-variable.woff2 +0 -0
  12. package/dist/adapters/unpic-image.d.ts +3 -0
  13. package/dist/adapters/unpic-image.js +98 -0
  14. package/dist/components/account-menu.d.ts +67 -0
  15. package/dist/components/account-menu.js +440 -0
  16. package/dist/components/action-button.d.ts +25 -0
  17. package/dist/components/action-button.js +264 -0
  18. package/dist/components/alert.d.ts +31 -0
  19. package/dist/components/alert.js +503 -0
  20. package/dist/components/animated-collapse.d.ts +19 -0
  21. package/dist/components/animated-collapse.js +170 -0
  22. package/dist/components/animated-count.d.ts +13 -0
  23. package/dist/components/animated-count.js +105 -0
  24. package/dist/components/animated-list-item.d.ts +25 -0
  25. package/dist/components/animated-list-item.js +134 -0
  26. package/dist/components/animated-theme-toggler.d.ts +12 -0
  27. package/dist/components/animated-theme-toggler.js +200 -0
  28. package/dist/components/avatar.d.ts +65 -0
  29. package/dist/components/avatar.js +463 -0
  30. package/dist/components/badge.d.ts +21 -0
  31. package/dist/components/badge.js +297 -0
  32. package/dist/components/button-interaction.d.ts +23 -0
  33. package/dist/components/button-interaction.js +22 -0
  34. package/dist/components/button-label.d.ts +8 -0
  35. package/dist/components/button-label.js +203 -0
  36. package/dist/components/button.d.ts +23 -0
  37. package/dist/components/button.js +145 -0
  38. package/dist/components/calendar.d.ts +47 -0
  39. package/dist/components/calendar.js +155 -0
  40. package/dist/components/card.d.ts +38 -0
  41. package/dist/components/card.js +904 -0
  42. package/dist/components/carousel.d.ts +71 -0
  43. package/dist/components/carousel.js +585 -0
  44. package/dist/components/checkbox.d.ts +15 -0
  45. package/dist/components/checkbox.js +324 -0
  46. package/dist/components/control-button.d.ts +16 -0
  47. package/dist/components/control-button.js +215 -0
  48. package/dist/components/data-table.d.ts +118 -0
  49. package/dist/components/data-table.js +895 -0
  50. package/dist/components/dialog-surface.d.ts +49 -0
  51. package/dist/components/dialog-surface.js +220 -0
  52. package/dist/components/dialog.d.ts +92 -0
  53. package/dist/components/dialog.js +320 -0
  54. package/dist/components/dropdown-menu.d.ts +58 -0
  55. package/dist/components/dropdown-menu.js +135 -0
  56. package/dist/components/field.d.ts +53 -0
  57. package/dist/components/field.js +710 -0
  58. package/dist/components/file-upload.d.ts +88 -0
  59. package/dist/components/file-upload.js +776 -0
  60. package/dist/components/filter-presets-bar.d.ts +73 -0
  61. package/dist/components/filter-presets-bar.js +510 -0
  62. package/dist/components/filter-query-bar.d.ts +21 -0
  63. package/dist/components/filter-query-bar.js +881 -0
  64. package/dist/components/filter-query-grammar.d.ts +188 -0
  65. package/dist/components/filter-query-grammar.js +875 -0
  66. package/dist/components/form.d.ts +29 -0
  67. package/dist/components/form.js +330 -0
  68. package/dist/components/highlighter.d.ts +15 -0
  69. package/dist/components/highlighter.js +152 -0
  70. package/dist/components/hover-card.d.ts +50 -0
  71. package/dist/components/hover-card.js +80 -0
  72. package/dist/components/input-group.d.ts +16 -0
  73. package/dist/components/input-group.js +277 -0
  74. package/dist/components/input.d.ts +17 -0
  75. package/dist/components/input.js +120 -0
  76. package/dist/components/label.d.ts +4 -0
  77. package/dist/components/label.js +43 -0
  78. package/dist/components/link.d.ts +9 -0
  79. package/dist/components/link.js +43 -0
  80. package/dist/components/morph-text.d.ts +14 -0
  81. package/dist/components/morph-text.js +210 -0
  82. package/dist/components/pagination.d.ts +59 -0
  83. package/dist/components/pagination.js +190 -0
  84. package/dist/components/popover.d.ts +17 -0
  85. package/dist/components/popover.js +40 -0
  86. package/dist/components/presence-swap.d.ts +22 -0
  87. package/dist/components/presence-swap.js +209 -0
  88. package/dist/components/primitives/alert-dialog.d.ts +68 -0
  89. package/dist/components/primitives/alert-dialog.js +629 -0
  90. package/dist/components/primitives/avatar.d.ts +46 -0
  91. package/dist/components/primitives/avatar.js +265 -0
  92. package/dist/components/primitives/calendar.d.ts +37 -0
  93. package/dist/components/primitives/calendar.js +1250 -0
  94. package/dist/components/primitives/carousel.d.ts +106 -0
  95. package/dist/components/primitives/carousel.js +928 -0
  96. package/dist/components/primitives/dialog.d.ts +62 -0
  97. package/dist/components/primitives/dialog.js +490 -0
  98. package/dist/components/primitives/dropdown-menu-items.d.ts +59 -0
  99. package/dist/components/primitives/dropdown-menu-items.js +265 -0
  100. package/dist/components/primitives/dropdown-menu.d.ts +64 -0
  101. package/dist/components/primitives/dropdown-menu.js +560 -0
  102. package/dist/components/primitives/hover-card.d.ts +50 -0
  103. package/dist/components/primitives/hover-card.js +507 -0
  104. package/dist/components/primitives/pagination.d.ts +65 -0
  105. package/dist/components/primitives/pagination.js +373 -0
  106. package/dist/components/primitives/popover.d.ts +22 -0
  107. package/dist/components/primitives/popover.js +213 -0
  108. package/dist/components/primitives/select.d.ts +37 -0
  109. package/dist/components/primitives/select.js +428 -0
  110. package/dist/components/primitives/tooltip.d.ts +30 -0
  111. package/dist/components/primitives/tooltip.js +277 -0
  112. package/dist/components/progress-ring.d.ts +20 -0
  113. package/dist/components/progress-ring.js +53 -0
  114. package/dist/components/radio-group.d.ts +34 -0
  115. package/dist/components/radio-group.js +392 -0
  116. package/dist/components/reaction-button.d.ts +30 -0
  117. package/dist/components/reaction-button.js +189 -0
  118. package/dist/components/rich-link-editor.d.ts +25 -0
  119. package/dist/components/rich-link-editor.js +320 -0
  120. package/dist/components/rich-markdown-content.d.ts +10 -0
  121. package/dist/components/rich-markdown-content.js +56 -0
  122. package/dist/components/rich-text-content.d.ts +19 -0
  123. package/dist/components/rich-text-content.js +26 -0
  124. package/dist/components/select.d.ts +55 -0
  125. package/dist/components/select.js +188 -0
  126. package/dist/components/separator.d.ts +3 -0
  127. package/dist/components/separator.js +48 -0
  128. package/dist/components/sheet.d.ts +19 -0
  129. package/dist/components/sheet.js +420 -0
  130. package/dist/components/sidebar-panel-context.d.ts +17 -0
  131. package/dist/components/sidebar-panel-context.js +14 -0
  132. package/dist/components/sidebar.d.ts +195 -0
  133. package/dist/components/sidebar.js +2041 -0
  134. package/dist/components/skeleton.d.ts +23 -0
  135. package/dist/components/skeleton.js +334 -0
  136. package/dist/components/split-button.d.ts +36 -0
  137. package/dist/components/split-button.js +306 -0
  138. package/dist/components/svgs/whatsappIcon.d.ts +3 -0
  139. package/dist/components/svgs/whatsappIcon.js +14 -0
  140. package/dist/components/switch.d.ts +13 -0
  141. package/dist/components/switch.js +444 -0
  142. package/dist/components/table.d.ts +10 -0
  143. package/dist/components/table.js +298 -0
  144. package/dist/components/tabs.d.ts +36 -0
  145. package/dist/components/tabs.js +636 -0
  146. package/dist/components/textarea.d.ts +16 -0
  147. package/dist/components/textarea.js +111 -0
  148. package/dist/components/themed-toaster.d.ts +7 -0
  149. package/dist/components/themed-toaster.js +86 -0
  150. package/dist/components/toaster.d.ts +12 -0
  151. package/dist/components/toaster.js +62 -0
  152. package/dist/components/tooltip.d.ts +43 -0
  153. package/dist/components/tooltip.js +65 -0
  154. package/dist/components/typing-animation.d.ts +34 -0
  155. package/dist/components/typing-animation.js +389 -0
  156. package/dist/constants/action-button.d.ts +20 -0
  157. package/dist/constants/action-button.js +17 -0
  158. package/dist/constants/alert.d.ts +16 -0
  159. package/dist/constants/alert.js +13 -0
  160. package/dist/constants/avatar.d.ts +38 -0
  161. package/dist/constants/avatar.js +32 -0
  162. package/dist/constants/badge.d.ts +6 -0
  163. package/dist/constants/badge.js +6 -0
  164. package/dist/constants/button.d.ts +16 -0
  165. package/dist/constants/button.js +16 -0
  166. package/dist/constants/calendar.d.ts +36 -0
  167. package/dist/constants/calendar.js +34 -0
  168. package/dist/constants/card.d.ts +23 -0
  169. package/dist/constants/card.js +20 -0
  170. package/dist/constants/carousel.d.ts +55 -0
  171. package/dist/constants/carousel.js +74 -0
  172. package/dist/constants/checkbox.d.ts +17 -0
  173. package/dist/constants/checkbox.js +17 -0
  174. package/dist/constants/dialog.d.ts +11 -0
  175. package/dist/constants/dialog.js +10 -0
  176. package/dist/constants/dropdown-menu.d.ts +17 -0
  177. package/dist/constants/dropdown-menu.js +48 -0
  178. package/dist/constants/field.d.ts +24 -0
  179. package/dist/constants/field.js +24 -0
  180. package/dist/constants/hover-card.d.ts +37 -0
  181. package/dist/constants/hover-card.js +85 -0
  182. package/dist/constants/morph-text.d.ts +13 -0
  183. package/dist/constants/morph-text.js +13 -0
  184. package/dist/constants/motion.d.ts +12 -0
  185. package/dist/constants/motion.js +12 -0
  186. package/dist/constants/pagination.d.ts +20 -0
  187. package/dist/constants/pagination.js +20 -0
  188. package/dist/constants/popover.d.ts +7 -0
  189. package/dist/constants/popover.js +33 -0
  190. package/dist/constants/radio-group.d.ts +10 -0
  191. package/dist/constants/radio-group.js +10 -0
  192. package/dist/constants/select.d.ts +7 -0
  193. package/dist/constants/select.js +34 -0
  194. package/dist/constants/sidebar.d.ts +9 -0
  195. package/dist/constants/sidebar.js +17 -0
  196. package/dist/constants/skeleton.d.ts +17 -0
  197. package/dist/constants/skeleton.js +17 -0
  198. package/dist/constants/split-button.d.ts +7 -0
  199. package/dist/constants/split-button.js +5 -0
  200. package/dist/constants/switch.d.ts +33 -0
  201. package/dist/constants/switch.js +41 -0
  202. package/dist/constants/tabs.d.ts +17 -0
  203. package/dist/constants/tabs.js +17 -0
  204. package/dist/constants/toast.d.ts +3 -0
  205. package/dist/constants/toast.js +3 -0
  206. package/dist/constants/tooltip.d.ts +13 -0
  207. package/dist/constants/tooltip.js +52 -0
  208. package/dist/hooks/use-horizontal-swipe.d.ts +23 -0
  209. package/dist/hooks/use-horizontal-swipe.js +80 -0
  210. package/dist/hooks/use-is-hydrated.d.ts +6 -0
  211. package/dist/hooks/use-is-hydrated.js +20 -0
  212. package/dist/hooks/use-mobile.d.ts +1 -0
  213. package/dist/hooks/use-mobile.js +19 -0
  214. package/dist/hooks/use-prefers-reduced-motion.d.ts +2 -0
  215. package/dist/hooks/use-prefers-reduced-motion.js +27 -0
  216. package/dist/hooks/use-rich-link-editor.d.ts +55 -0
  217. package/dist/hooks/use-rich-link-editor.js +515 -0
  218. package/dist/hooks/use-sidebar-persistence.d.ts +6 -0
  219. package/dist/hooks/use-sidebar-persistence.js +52 -0
  220. package/dist/hooks/use-today.d.ts +7 -0
  221. package/dist/hooks/use-today.js +50 -0
  222. package/dist/hooks/use-viewer-time-zone.d.ts +6 -0
  223. package/dist/hooks/use-viewer-time-zone.js +20 -0
  224. package/dist/hooks.d.ts +11 -0
  225. package/dist/hooks.js +11 -0
  226. package/dist/index.d.ts +71 -0
  227. package/dist/index.js +69 -0
  228. package/dist/lib/browser-clipboard.d.ts +13 -0
  229. package/dist/lib/browser-clipboard.js +48 -0
  230. package/dist/lib/column-filter-value.d.ts +12 -0
  231. package/dist/lib/column-filter-value.js +52 -0
  232. package/dist/lib/file-acceptance.d.ts +43 -0
  233. package/dist/lib/file-acceptance.js +107 -0
  234. package/dist/lib/format-file-size.d.ts +16 -0
  235. package/dist/lib/format-file-size.js +34 -0
  236. package/dist/lib/fuzzy-search.d.ts +17 -0
  237. package/dist/lib/fuzzy-search.js +183 -0
  238. package/dist/lib/horizontal-swipe.d.ts +23 -0
  239. package/dist/lib/horizontal-swipe.js +29 -0
  240. package/dist/lib/image-dimensions.d.ts +2 -0
  241. package/dist/lib/image-dimensions.js +7 -0
  242. package/dist/lib/name-initials.d.ts +7 -0
  243. package/dist/lib/name-initials.js +11 -0
  244. package/dist/lib/rich-text/link-markdown-constants.d.ts +147 -0
  245. package/dist/lib/rich-text/link-markdown-constants.js +458 -0
  246. package/dist/lib/rich-text/link-markdown-types.d.ts +53 -0
  247. package/dist/lib/rich-text/link-markdown-types.js +1 -0
  248. package/dist/lib/rich-text/link-markdown.d.ts +193 -0
  249. package/dist/lib/rich-text/link-markdown.js +592 -0
  250. package/dist/lib/rich-text/rich-markdown.d.ts +41 -0
  251. package/dist/lib/rich-text/rich-markdown.js +105 -0
  252. package/dist/lib/rich-text/rich-text-editor-dom.d.ts +26 -0
  253. package/dist/lib/rich-text/rich-text-editor-dom.js +79 -0
  254. package/dist/lib/toast-layer.d.ts +24 -0
  255. package/dist/lib/toast-layer.js +76 -0
  256. package/dist/lib/utils.d.ts +2 -0
  257. package/dist/lib/utils.js +2 -0
  258. package/dist/lib/year-month-filter.d.ts +16 -0
  259. package/dist/lib/year-month-filter.js +46 -0
  260. package/dist/motion/arc-floating-slot.d.ts +40 -0
  261. package/dist/motion/arc-floating-slot.js +177 -0
  262. package/dist/motion/arc-press.d.ts +6 -0
  263. package/dist/motion/arc-press.js +59 -0
  264. package/dist/motion/arc-swap.d.ts +22 -0
  265. package/dist/motion/arc-swap.js +49 -0
  266. package/dist/motion/arc-tokens.d.ts +53 -0
  267. package/dist/motion/arc-tokens.js +73 -0
  268. package/dist/motion/glide-indicator.d.ts +69 -0
  269. package/dist/motion/glide-indicator.js +309 -0
  270. package/dist/motion/glide-slot.d.ts +9 -0
  271. package/dist/motion/glide-slot.js +71 -0
  272. package/dist/motion/motion-slot.d.ts +12 -0
  273. package/dist/motion/motion-slot.js +376 -0
  274. package/dist/motion/overlay-warmth.d.ts +24 -0
  275. package/dist/motion/overlay-warmth.js +70 -0
  276. package/dist/motion/presence.d.ts +40 -0
  277. package/dist/motion/presence.js +101 -0
  278. package/dist/motion/surface-keyframes.d.ts +24 -0
  279. package/dist/motion/surface-keyframes.js +141 -0
  280. package/dist/motion/tokens.d.ts +81 -0
  281. package/dist/motion/tokens.js +67 -0
  282. package/dist/motion/use-attached-element.d.ts +7 -0
  283. package/dist/motion/use-attached-element.js +22 -0
  284. package/dist/motion/use-morph-width.d.ts +13 -0
  285. package/dist/motion/use-morph-width.js +59 -0
  286. package/dist/next.d.ts +14 -0
  287. package/dist/next.js +79 -0
  288. package/dist/providers/astra-ui-provider.d.ts +27 -0
  289. package/dist/providers/astra-ui-provider.js +100 -0
  290. package/dist/providers/native-provider.d.ts +4 -0
  291. package/dist/providers/native-provider.js +45 -0
  292. package/dist/sonner.d.ts +7 -0
  293. package/dist/sonner.js +8 -0
  294. package/dist/styles.css +2 -0
  295. package/dist/tanstack.d.ts +11 -0
  296. package/dist/tanstack.js +50 -0
  297. package/dist/theme.d.ts +3 -0
  298. package/dist/theme.js +1 -0
  299. package/dist/types/data-table.d.ts +27 -0
  300. package/dist/types/data-table.js +1 -0
  301. package/fonts.css +5 -0
  302. package/package.json +450 -4
  303. package/styles.css +4 -0
  304. package/theme.css +248 -0
@@ -0,0 +1,93 @@
1
+ Google Inc.
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,3 @@
1
+ import type { AstraImageProps } from "../providers/astra-ui-provider.js";
2
+ /** Preserves browser events and consumer styles while deriving responsive image sources. */
3
+ export declare function UnpicImageAdapter({ src, width, height, style, ...props }: AstraImageProps): import("react").JSX.Element;
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ import { c as _c } from "react/compiler-runtime";
3
+ /** Uses Unpic for responsive images without coupling the native adapter to a framework. */
4
+ import { Image } from "@unpic/react";
5
+ import { imageDimension } from "../lib/image-dimensions.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /** Preserves browser events and consumer styles while deriving responsive image sources. */
8
+ export function UnpicImageAdapter(t0) {
9
+ const $ = _c(23);
10
+ let height;
11
+ let props;
12
+ let src;
13
+ let style;
14
+ let width;
15
+ if ($[0] !== t0) {
16
+ ({src, width, height, style, ...props} = t0);
17
+ $[0] = t0;
18
+ $[1] = height;
19
+ $[2] = props;
20
+ $[3] = src;
21
+ $[4] = style;
22
+ $[5] = width;
23
+ } else {
24
+ height = $[1];
25
+ props = $[2];
26
+ src = $[3];
27
+ style = $[4];
28
+ width = $[5];
29
+ }
30
+ if (!src) {
31
+ let t1;
32
+ if ($[6] !== height || $[7] !== props || $[8] !== style || $[9] !== width) {
33
+ t1 = /* @__PURE__ */ _jsx("img", {
34
+ ...props,
35
+ width,
36
+ height,
37
+ style
38
+ });
39
+ $[6] = height;
40
+ $[7] = props;
41
+ $[8] = style;
42
+ $[9] = width;
43
+ $[10] = t1;
44
+ } else {
45
+ t1 = $[10];
46
+ }
47
+ return t1;
48
+ }
49
+ let t1;
50
+ if ($[11] !== width) {
51
+ t1 = imageDimension(width);
52
+ $[11] = width;
53
+ $[12] = t1;
54
+ } else {
55
+ t1 = $[12];
56
+ }
57
+ let t2;
58
+ if ($[13] !== height) {
59
+ t2 = imageDimension(height);
60
+ $[13] = height;
61
+ $[14] = t2;
62
+ } else {
63
+ t2 = $[14];
64
+ }
65
+ let t3;
66
+ if ($[15] !== style) {
67
+ t3 = {
68
+ maxWidth: "100%",
69
+ maxHeight: "100%",
70
+ ...style
71
+ };
72
+ $[15] = style;
73
+ $[16] = t3;
74
+ } else {
75
+ t3 = $[16];
76
+ }
77
+ let t4;
78
+ if ($[17] !== props || $[18] !== src || $[19] !== t1 || $[20] !== t2 || $[21] !== t3) {
79
+ const imageProps = {
80
+ ...props,
81
+ src,
82
+ width: t1,
83
+ height: t2,
84
+ layout: "constrained",
85
+ style: t3
86
+ };
87
+ t4 = /* @__PURE__ */ _jsx(Image, { ...imageProps });
88
+ $[17] = props;
89
+ $[18] = src;
90
+ $[19] = t1;
91
+ $[20] = t2;
92
+ $[21] = t3;
93
+ $[22] = t4;
94
+ } else {
95
+ t4 = $[22];
96
+ }
97
+ return t4;
98
+ }
@@ -0,0 +1,67 @@
1
+ /** Account menu: avatar trigger, account identity and the sign-in or sign-out action. */
2
+ import type { ReactNode } from "react";
3
+ import { type DropdownItem } from "./primitives/dropdown-menu-items.js";
4
+ export type AccountMenuStatus = "authenticated" | "unauthenticated";
5
+ export interface AccountMenuLabels {
6
+ signIn?: string;
7
+ signOut?: string;
8
+ /** Accessible name of the trigger button. */
9
+ trigger?: string;
10
+ }
11
+ export interface AccountMenuClassNames {
12
+ trigger?: string;
13
+ triggerAvatar?: string;
14
+ /** Name and email block of the `sidebar` trigger; it already leaves the icon rail of a collapsed `Sidebar`. */
15
+ triggerText?: string;
16
+ triggerName?: string;
17
+ triggerEmail?: string;
18
+ triggerChevron?: string;
19
+ content?: string;
20
+ /** Identity header at the top of the menu. */
21
+ header?: string;
22
+ headerAvatar?: string;
23
+ /** Sign-in and sign-out item. */
24
+ item?: string;
25
+ /** Badge shown while authenticated, when `showStatusBadge` is enabled. */
26
+ connectedBadge?: string;
27
+ /** Badge shown while signed out, when `showStatusBadge` is enabled. */
28
+ disconnectedBadge?: string;
29
+ }
30
+ export interface AccountMenuProps {
31
+ name: string;
32
+ email: string;
33
+ status: AccountMenuStatus;
34
+ image?: string | null;
35
+ /** Avatar text when there is no image; defaults to the name initials. */
36
+ avatarFallback?: string;
37
+ /** Called by the sign-out item. The menu stays mounted while a returned promise settles. */
38
+ onSignOut: () => void | Promise<void>;
39
+ signOutDisabled?: boolean;
40
+ /** Called by the sign-in item. Ignored when `signInHref` is set. */
41
+ onSignIn?: () => void;
42
+ /** Navigates to a sign-in page through the configured router adapter instead of calling `onSignIn`. */
43
+ signInHref?: string;
44
+ /**
45
+ * `avatar` shows only the avatar; `sidebar` also shows name, email and a chevron, and inside the
46
+ * icon rail of a collapsed `Sidebar` shrinks to the centered avatar.
47
+ */
48
+ triggerVariant?: "avatar" | "sidebar";
49
+ /** Adds a connected/disconnected badge to the avatar and greys it out while signed out. */
50
+ showStatusBadge?: boolean;
51
+ /** Optional hint shown when hovering or focusing the trigger. */
52
+ tooltipLabel?: ReactNode;
53
+ labels?: AccountMenuLabels;
54
+ classNames?: AccountMenuClassNames;
55
+ align?: "start" | "center" | "end";
56
+ side?: "top" | "right" | "bottom" | "left";
57
+ sideOffset?: number;
58
+ /** Extra rows rendered between the identity header and the session action, as in `DropdownMenu`'s `items`. */
59
+ items?: DropdownItem[];
60
+ }
61
+ /**
62
+ * Presentational account menu: the session and its side effects stay with the caller. Signed in,
63
+ * the menu offers sign-out; signed out, it offers sign-in as a link (`signInHref`) or a callback.
64
+ * @param props - Identity, session status, callbacks, copy and layout.
65
+ * @returns The trigger and its menu.
66
+ */
67
+ export declare function AccountMenu({ name, email, status, image, avatarFallback, onSignOut, signOutDisabled, onSignIn, signInHref, triggerVariant, showStatusBadge, tooltipLabel, labels, classNames, align, side, sideOffset, items, }: AccountMenuProps): import("react").JSX.Element;
@@ -0,0 +1,440 @@
1
+ "use client";
2
+ import { c as _c } from "react/compiler-runtime";
3
+ import { ChevronDownIcon, LogInIcon, LogOutIcon, PlusIcon } from "lucide-react";
4
+ import { cn } from "../lib/utils.js";
5
+ import { getNameInitials } from "../lib/name-initials.js";
6
+ import { AvatarBadge, AvatarFallback, AvatarImage, AvatarRoot } from "./primitives/avatar.js";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "./primitives/dropdown-menu.js";
8
+ import { DropdownMenuItems } from "./primitives/dropdown-menu-items.js";
9
+ import { Link } from "./link.js";
10
+ import { useOptionalSidebarPanel } from "./sidebar-panel-context.js";
11
+ import { Tooltip, TooltipContent, TooltipTrigger } from "./primitives/tooltip.js";
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ const ACCOUNT_MENU_DEFAULT_LABELS = {
14
+ signIn: "Iniciar sesión",
15
+ signOut: "Cerrar sesión",
16
+ trigger: "Menú de cuenta"
17
+ };
18
+ /** Shown when the name yields no initials, so the avatar never renders empty. */
19
+ const DEFAULT_AVATAR_FALLBACK = "?";
20
+ /**
21
+ * Renders the account avatar with an optional status badge.
22
+ * @param props - Identity, status and class names.
23
+ * @returns The avatar.
24
+ */
25
+ function AccountAvatar(t0) {
26
+ const $ = _c(21);
27
+ const { name, image, fallback, status, showStatusBadge, isDecorative: t1, className, classNames } = t0;
28
+ const isDecorative = t1 === undefined ? false : t1;
29
+ const isAuthenticated = status === "authenticated";
30
+ const t2 = showStatusBadge && !isAuthenticated && "grayscale";
31
+ let t3;
32
+ if ($[0] !== className || $[1] !== t2) {
33
+ t3 = cn(t2, className);
34
+ $[0] = className;
35
+ $[1] = t2;
36
+ $[2] = t3;
37
+ } else {
38
+ t3 = $[2];
39
+ }
40
+ let t4;
41
+ if ($[3] !== image || $[4] !== isDecorative || $[5] !== name) {
42
+ t4 = image ? /* @__PURE__ */ _jsx(AvatarImage, {
43
+ alt: isDecorative ? "" : name,
44
+ loading: "eager",
45
+ src: image
46
+ }) : null;
47
+ $[3] = image;
48
+ $[4] = isDecorative;
49
+ $[5] = name;
50
+ $[6] = t4;
51
+ } else {
52
+ t4 = $[6];
53
+ }
54
+ const t5 = isDecorative || undefined;
55
+ let t6;
56
+ if ($[7] !== fallback || $[8] !== t5) {
57
+ t6 = /* @__PURE__ */ _jsx(AvatarFallback, {
58
+ "aria-hidden": t5,
59
+ children: fallback
60
+ });
61
+ $[7] = fallback;
62
+ $[8] = t5;
63
+ $[9] = t6;
64
+ } else {
65
+ t6 = $[9];
66
+ }
67
+ let t7;
68
+ if ($[10] !== classNames?.connectedBadge || $[11] !== classNames?.disconnectedBadge || $[12] !== isAuthenticated || $[13] !== showStatusBadge || $[14] !== status) {
69
+ t7 = showStatusBadge ? /* @__PURE__ */ _jsx(AvatarBadge, {
70
+ "data-status": status,
71
+ className: cn(isAuthenticated ? "bg-green-600 dark:bg-green-800" : undefined, isAuthenticated ? classNames?.connectedBadge : classNames?.disconnectedBadge),
72
+ children: isAuthenticated ? null : /* @__PURE__ */ _jsx(PlusIcon, { "aria-hidden": "true" })
73
+ }) : null;
74
+ $[10] = classNames?.connectedBadge;
75
+ $[11] = classNames?.disconnectedBadge;
76
+ $[12] = isAuthenticated;
77
+ $[13] = showStatusBadge;
78
+ $[14] = status;
79
+ $[15] = t7;
80
+ } else {
81
+ t7 = $[15];
82
+ }
83
+ let t8;
84
+ if ($[16] !== t3 || $[17] !== t4 || $[18] !== t6 || $[19] !== t7) {
85
+ t8 = /* @__PURE__ */ _jsxs(AvatarRoot, {
86
+ className: t3,
87
+ children: [
88
+ t4,
89
+ t6,
90
+ t7
91
+ ]
92
+ });
93
+ $[16] = t3;
94
+ $[17] = t4;
95
+ $[18] = t6;
96
+ $[19] = t7;
97
+ $[20] = t8;
98
+ } else {
99
+ t8 = $[20];
100
+ }
101
+ return t8;
102
+ }
103
+ /**
104
+ * Presentational account menu: the session and its side effects stay with the caller. Signed in,
105
+ * the menu offers sign-out; signed out, it offers sign-in as a link (`signInHref`) or a callback.
106
+ * @param props - Identity, session status, callbacks, copy and layout.
107
+ * @returns The trigger and its menu.
108
+ */
109
+ export function AccountMenu(t0) {
110
+ const $ = _c(82);
111
+ const { name, email, status, image: t1, avatarFallback, onSignOut, signOutDisabled: t2, onSignIn, signInHref, triggerVariant: t3, showStatusBadge: t4, tooltipLabel, labels, classNames, align: t5, side: t6, sideOffset: t7, items } = t0;
112
+ const image = t1 === undefined ? null : t1;
113
+ const signOutDisabled = t2 === undefined ? false : t2;
114
+ const triggerVariant = t3 === undefined ? "avatar" : t3;
115
+ const showStatusBadge = t4 === undefined ? false : t4;
116
+ const align = t5 === undefined ? "end" : t5;
117
+ const side = t6 === undefined ? "bottom" : t6;
118
+ const sideOffset = t7 === undefined ? 4 : t7;
119
+ let t8;
120
+ if ($[0] !== labels) {
121
+ t8 = {
122
+ ...ACCOUNT_MENU_DEFAULT_LABELS,
123
+ ...labels
124
+ };
125
+ $[0] = labels;
126
+ $[1] = t8;
127
+ } else {
128
+ t8 = $[1];
129
+ }
130
+ const resolvedLabels = t8;
131
+ const isAuthenticated = status === "authenticated";
132
+ let t9;
133
+ if ($[2] !== avatarFallback || $[3] !== name) {
134
+ t9 = avatarFallback ?? (getNameInitials(name) || DEFAULT_AVATAR_FALLBACK);
135
+ $[2] = avatarFallback;
136
+ $[3] = name;
137
+ $[4] = t9;
138
+ } else {
139
+ t9 = $[4];
140
+ }
141
+ const fallback = t9;
142
+ let t10;
143
+ if ($[5] !== classNames || $[6] !== fallback || $[7] !== image || $[8] !== name || $[9] !== showStatusBadge || $[10] !== status) {
144
+ t10 = {
145
+ name,
146
+ image,
147
+ fallback,
148
+ status,
149
+ showStatusBadge,
150
+ classNames
151
+ };
152
+ $[5] = classNames;
153
+ $[6] = fallback;
154
+ $[7] = image;
155
+ $[8] = name;
156
+ $[9] = showStatusBadge;
157
+ $[10] = status;
158
+ $[11] = t10;
159
+ } else {
160
+ t10 = $[11];
161
+ }
162
+ const avatarProps = t10;
163
+ const sidebarPanel = useOptionalSidebarPanel();
164
+ const showsSidebarIdentity = triggerVariant === "sidebar" && !sidebarPanel?.collapsed;
165
+ const t11 = resolvedLabels.trigger;
166
+ const t12 = triggerVariant === "sidebar" && "w-full min-w-0 gap-2.5 rounded-lg p-1.5 text-left";
167
+ const t13 = triggerVariant === "sidebar" && !showsSidebarIdentity && "justify-center gap-0";
168
+ const t14 = classNames?.trigger;
169
+ let t15;
170
+ if ($[12] !== t12 || $[13] !== t13 || $[14] !== t14) {
171
+ t15 = cn("inline-flex items-center rounded-full outline-none [-webkit-tap-highlight-color:transparent] transition-[box-shadow,opacity] hover:opacity-90 focus-visible:shadow-[0_0_0_2px_var(--background),0_0_0_4px_var(--ring)] data-[state=open]:shadow-[0_0_0_2px_var(--background),0_0_0_4px_var(--ring)]", t12, t13, t14);
172
+ $[12] = t12;
173
+ $[13] = t13;
174
+ $[14] = t14;
175
+ $[15] = t15;
176
+ } else {
177
+ t15 = $[15];
178
+ }
179
+ const t16 = classNames?.triggerAvatar;
180
+ let t17;
181
+ if ($[16] !== avatarProps || $[17] !== t16) {
182
+ t17 = /* @__PURE__ */ _jsx(AccountAvatar, {
183
+ ...avatarProps,
184
+ className: t16
185
+ });
186
+ $[16] = avatarProps;
187
+ $[17] = t16;
188
+ $[18] = t17;
189
+ } else {
190
+ t17 = $[18];
191
+ }
192
+ let t18;
193
+ if ($[19] !== classNames?.triggerChevron || $[20] !== classNames?.triggerEmail || $[21] !== classNames?.triggerName || $[22] !== classNames?.triggerText || $[23] !== email || $[24] !== name || $[25] !== showsSidebarIdentity) {
194
+ t18 = showsSidebarIdentity ? /* @__PURE__ */ _jsxs(_Fragment, { children: [/* @__PURE__ */ _jsxs("span", {
195
+ className: cn("grid min-w-0 flex-1", classNames?.triggerText),
196
+ children: [/* @__PURE__ */ _jsx("span", {
197
+ className: cn("truncate text-sm font-medium", classNames?.triggerName),
198
+ children: name
199
+ }), /* @__PURE__ */ _jsx("span", {
200
+ className: cn("truncate text-xs text-muted-foreground", classNames?.triggerEmail),
201
+ children: email
202
+ })]
203
+ }), /* @__PURE__ */ _jsx(ChevronDownIcon, {
204
+ "aria-hidden": "true",
205
+ className: cn("size-4 shrink-0 text-muted-foreground", classNames?.triggerChevron)
206
+ })] }) : null;
207
+ $[19] = classNames?.triggerChevron;
208
+ $[20] = classNames?.triggerEmail;
209
+ $[21] = classNames?.triggerName;
210
+ $[22] = classNames?.triggerText;
211
+ $[23] = email;
212
+ $[24] = name;
213
+ $[25] = showsSidebarIdentity;
214
+ $[26] = t18;
215
+ } else {
216
+ t18 = $[26];
217
+ }
218
+ let t19;
219
+ if ($[27] !== resolvedLabels.trigger || $[28] !== t15 || $[29] !== t17 || $[30] !== t18 || $[31] !== triggerVariant) {
220
+ const triggerButton = /* @__PURE__ */ _jsxs("button", {
221
+ "data-slot": "account-menu-trigger",
222
+ "data-variant": triggerVariant,
223
+ "aria-label": t11,
224
+ type: "button",
225
+ className: t15,
226
+ children: [t17, t18]
227
+ });
228
+ t19 = /* @__PURE__ */ _jsx(DropdownMenuTrigger, {
229
+ asChild: true,
230
+ children: triggerButton
231
+ });
232
+ $[27] = resolvedLabels.trigger;
233
+ $[28] = t15;
234
+ $[29] = t17;
235
+ $[30] = t18;
236
+ $[31] = triggerVariant;
237
+ $[32] = t19;
238
+ } else {
239
+ t19 = $[32];
240
+ }
241
+ const trigger = t19;
242
+ let t20;
243
+ if ($[33] !== tooltipLabel || $[34] !== trigger) {
244
+ t20 = tooltipLabel ? /* @__PURE__ */ _jsx(TooltipTrigger, {
245
+ asChild: true,
246
+ children: trigger
247
+ }) : trigger;
248
+ $[33] = tooltipLabel;
249
+ $[34] = trigger;
250
+ $[35] = t20;
251
+ } else {
252
+ t20 = $[35];
253
+ }
254
+ const t21 = classNames?.content;
255
+ let t22;
256
+ if ($[36] !== t21) {
257
+ t22 = cn("min-w-56", t21);
258
+ $[36] = t21;
259
+ $[37] = t22;
260
+ } else {
261
+ t22 = $[37];
262
+ }
263
+ const t23 = classNames?.header;
264
+ let t24;
265
+ if ($[38] !== t23) {
266
+ t24 = cn("grid grid-cols-[auto_minmax(0,1fr)] items-center gap-2.5 px-2 py-1.5", t23);
267
+ $[38] = t23;
268
+ $[39] = t24;
269
+ } else {
270
+ t24 = $[39];
271
+ }
272
+ const t25 = classNames?.headerAvatar;
273
+ let t26;
274
+ if ($[40] !== avatarProps || $[41] !== t25) {
275
+ t26 = /* @__PURE__ */ _jsx(AccountAvatar, {
276
+ ...avatarProps,
277
+ isDecorative: true,
278
+ className: t25
279
+ });
280
+ $[40] = avatarProps;
281
+ $[41] = t25;
282
+ $[42] = t26;
283
+ } else {
284
+ t26 = $[42];
285
+ }
286
+ let t27;
287
+ if ($[43] !== name) {
288
+ t27 = /* @__PURE__ */ _jsx("span", {
289
+ className: "truncate text-sm leading-tight font-medium",
290
+ children: name
291
+ });
292
+ $[43] = name;
293
+ $[44] = t27;
294
+ } else {
295
+ t27 = $[44];
296
+ }
297
+ let t28;
298
+ if ($[45] !== email) {
299
+ t28 = /* @__PURE__ */ _jsx("span", {
300
+ className: "truncate text-xs leading-tight text-muted-foreground",
301
+ children: email
302
+ });
303
+ $[45] = email;
304
+ $[46] = t28;
305
+ } else {
306
+ t28 = $[46];
307
+ }
308
+ let t29;
309
+ if ($[47] !== t27 || $[48] !== t28) {
310
+ t29 = /* @__PURE__ */ _jsxs("span", {
311
+ className: "grid min-w-0 gap-px",
312
+ children: [t27, t28]
313
+ });
314
+ $[47] = t27;
315
+ $[48] = t28;
316
+ $[49] = t29;
317
+ } else {
318
+ t29 = $[49];
319
+ }
320
+ let t30;
321
+ if ($[50] !== t24 || $[51] !== t26 || $[52] !== t29) {
322
+ t30 = /* @__PURE__ */ _jsxs("div", {
323
+ className: t24,
324
+ children: [t26, t29]
325
+ });
326
+ $[50] = t24;
327
+ $[51] = t26;
328
+ $[52] = t29;
329
+ $[53] = t30;
330
+ } else {
331
+ t30 = $[53];
332
+ }
333
+ let t31;
334
+ if ($[54] === Symbol.for("react.memo_cache_sentinel")) {
335
+ t31 = /* @__PURE__ */ _jsx(DropdownMenuSeparator, {});
336
+ $[54] = t31;
337
+ } else {
338
+ t31 = $[54];
339
+ }
340
+ let t32;
341
+ if ($[55] !== items) {
342
+ t32 = items ? /* @__PURE__ */ _jsx(DropdownMenuItems, { items }) : null;
343
+ $[55] = items;
344
+ $[56] = t32;
345
+ } else {
346
+ t32 = $[56];
347
+ }
348
+ let t33;
349
+ if ($[57] !== classNames?.item || $[58] !== isAuthenticated || $[59] !== onSignIn || $[60] !== onSignOut || $[61] !== resolvedLabels.signIn || $[62] !== resolvedLabels.signOut || $[63] !== signInHref || $[64] !== signOutDisabled) {
350
+ t33 = isAuthenticated ? /* @__PURE__ */ _jsxs(DropdownMenuItem, {
351
+ className: classNames?.item,
352
+ disabled: signOutDisabled,
353
+ onSelect: () => void onSignOut(),
354
+ children: [/* @__PURE__ */ _jsx(LogOutIcon, { "aria-hidden": "true" }), resolvedLabels.signOut]
355
+ }) : signInHref ? /* @__PURE__ */ _jsx(DropdownMenuItem, {
356
+ asChild: true,
357
+ className: classNames?.item,
358
+ children: /* @__PURE__ */ _jsxs(Link, {
359
+ href: signInHref,
360
+ children: [/* @__PURE__ */ _jsx(LogInIcon, { "aria-hidden": "true" }), resolvedLabels.signIn]
361
+ })
362
+ }) : /* @__PURE__ */ _jsxs(DropdownMenuItem, {
363
+ className: classNames?.item,
364
+ onSelect: () => onSignIn?.(),
365
+ children: [/* @__PURE__ */ _jsx(LogInIcon, { "aria-hidden": "true" }), resolvedLabels.signIn]
366
+ });
367
+ $[57] = classNames?.item;
368
+ $[58] = isAuthenticated;
369
+ $[59] = onSignIn;
370
+ $[60] = onSignOut;
371
+ $[61] = resolvedLabels.signIn;
372
+ $[62] = resolvedLabels.signOut;
373
+ $[63] = signInHref;
374
+ $[64] = signOutDisabled;
375
+ $[65] = t33;
376
+ } else {
377
+ t33 = $[65];
378
+ }
379
+ let t34;
380
+ if ($[66] !== align || $[67] !== side || $[68] !== sideOffset || $[69] !== t22 || $[70] !== t30 || $[71] !== t32 || $[72] !== t33) {
381
+ t34 = /* @__PURE__ */ _jsxs(DropdownMenuContent, {
382
+ "data-slot": "account-menu-content",
383
+ align,
384
+ side,
385
+ sideOffset,
386
+ className: t22,
387
+ children: [
388
+ t30,
389
+ t31,
390
+ t32,
391
+ t33
392
+ ]
393
+ });
394
+ $[66] = align;
395
+ $[67] = side;
396
+ $[68] = sideOffset;
397
+ $[69] = t22;
398
+ $[70] = t30;
399
+ $[71] = t32;
400
+ $[72] = t33;
401
+ $[73] = t34;
402
+ } else {
403
+ t34 = $[73];
404
+ }
405
+ let t35;
406
+ if ($[74] !== t20 || $[75] !== t34) {
407
+ t35 = /* @__PURE__ */ _jsxs(DropdownMenu, { children: [t20, t34] });
408
+ $[74] = t20;
409
+ $[75] = t34;
410
+ $[76] = t35;
411
+ } else {
412
+ t35 = $[76];
413
+ }
414
+ const menu = t35;
415
+ if (!tooltipLabel) {
416
+ return menu;
417
+ }
418
+ let t36;
419
+ if ($[77] !== tooltipLabel) {
420
+ t36 = /* @__PURE__ */ _jsx(TooltipContent, {
421
+ side: "bottom",
422
+ sideOffset: 8,
423
+ children: tooltipLabel
424
+ });
425
+ $[77] = tooltipLabel;
426
+ $[78] = t36;
427
+ } else {
428
+ t36 = $[78];
429
+ }
430
+ let t37;
431
+ if ($[79] !== menu || $[80] !== t36) {
432
+ t37 = /* @__PURE__ */ _jsxs(Tooltip, { children: [menu, t36] });
433
+ $[79] = menu;
434
+ $[80] = t36;
435
+ $[81] = t37;
436
+ } else {
437
+ t37 = $[81];
438
+ }
439
+ return t37;
440
+ }