@avenue-ticketing/ui 0.11.0 → 0.12.0-beta.2

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 (226) hide show
  1. package/README.md +47 -0
  2. package/dist/badge-types-B67wcd4m.d.ts +22 -0
  3. package/dist/react/app-store-buttons-outline.d.ts +17 -0
  4. package/dist/react/app-store-buttons-outline.js +582 -0
  5. package/dist/react/app-store-buttons-outline.js.map +1 -0
  6. package/dist/react/app-store-buttons.d.ts +20 -0
  7. package/dist/react/app-store-buttons.js +817 -0
  8. package/dist/react/app-store-buttons.js.map +1 -0
  9. package/dist/react/avatar-label-group.d.ts +14 -0
  10. package/dist/react/avatar-label-group.js +183 -0
  11. package/dist/react/avatar-label-group.js.map +1 -0
  12. package/dist/react/avatar-profile-photo.d.ts +9 -0
  13. package/dist/react/avatar-profile-photo.js +202 -0
  14. package/dist/react/avatar-profile-photo.js.map +1 -0
  15. package/dist/react/avatar.d.ts +66 -40
  16. package/dist/react/avatar.js +159 -149
  17. package/dist/react/avatar.js.map +1 -1
  18. package/dist/react/badge-groups.d.ts +25 -0
  19. package/dist/react/badge-groups.js +162 -0
  20. package/dist/react/badge-groups.js.map +1 -0
  21. package/dist/react/badge.d.ts +123 -59
  22. package/dist/react/badge.js +314 -86
  23. package/dist/react/badge.js.map +1 -1
  24. package/dist/react/button-group.d.ts +43 -0
  25. package/dist/react/button-group.js +108 -0
  26. package/dist/react/button-group.js.map +1 -0
  27. package/dist/react/button-utility.d.ts +47 -0
  28. package/dist/react/button-utility.js +158 -0
  29. package/dist/react/button-utility.js.map +1 -0
  30. package/dist/react/button.d.ts +112 -37
  31. package/dist/react/button.js +270 -55
  32. package/dist/react/button.js.map +1 -1
  33. package/dist/react/checkbox.d.ts +25 -8
  34. package/dist/react/checkbox.js +115 -110
  35. package/dist/react/checkbox.js.map +1 -1
  36. package/dist/react/close-button.d.ts +25 -0
  37. package/dist/react/close-button.js +54 -0
  38. package/dist/react/close-button.js.map +1 -0
  39. package/dist/react/combobox.d.ts +18 -0
  40. package/dist/react/combobox.js +574 -0
  41. package/dist/react/combobox.js.map +1 -0
  42. package/dist/react/dialog.d.ts +15 -15
  43. package/dist/react/dialog.js +43 -108
  44. package/dist/react/dialog.js.map +1 -1
  45. package/dist/react/dropdown-account-breadcrumb.d.ts +5 -0
  46. package/dist/react/dropdown-account-breadcrumb.js +481 -0
  47. package/dist/react/dropdown-account-breadcrumb.js.map +1 -0
  48. package/dist/react/dropdown-account-button.d.ts +5 -0
  49. package/dist/react/dropdown-account-button.js +938 -0
  50. package/dist/react/dropdown-account-button.js.map +1 -0
  51. package/dist/react/dropdown-account-card-md.d.ts +5 -0
  52. package/dist/react/dropdown-account-card-md.js +714 -0
  53. package/dist/react/dropdown-account-card-md.js.map +1 -0
  54. package/dist/react/dropdown-account-card-sm.d.ts +5 -0
  55. package/dist/react/dropdown-account-card-sm.js +692 -0
  56. package/dist/react/dropdown-account-card-sm.js.map +1 -0
  57. package/dist/react/dropdown-account-card-xs.d.ts +5 -0
  58. package/dist/react/dropdown-account-card-xs.js +672 -0
  59. package/dist/react/dropdown-account-card-xs.js.map +1 -0
  60. package/dist/react/dropdown-avatar.d.ts +5 -0
  61. package/dist/react/dropdown-avatar.js +955 -0
  62. package/dist/react/dropdown-avatar.js.map +1 -0
  63. package/dist/react/dropdown-button-advanced.d.ts +5 -0
  64. package/dist/react/dropdown-button-advanced.js +964 -0
  65. package/dist/react/dropdown-button-advanced.js.map +1 -0
  66. package/dist/react/dropdown-button-link.d.ts +5 -0
  67. package/dist/react/dropdown-button-link.js +666 -0
  68. package/dist/react/dropdown-button-link.js.map +1 -0
  69. package/dist/react/dropdown-button-simple.d.ts +5 -0
  70. package/dist/react/dropdown-button-simple.js +919 -0
  71. package/dist/react/dropdown-button-simple.js.map +1 -0
  72. package/dist/react/dropdown-icon-advanced.d.ts +5 -0
  73. package/dist/react/dropdown-icon-advanced.js +708 -0
  74. package/dist/react/dropdown-icon-advanced.js.map +1 -0
  75. package/dist/react/dropdown-icon-simple.d.ts +5 -0
  76. package/dist/react/dropdown-icon-simple.js +670 -0
  77. package/dist/react/dropdown-icon-simple.js.map +1 -0
  78. package/dist/react/dropdown-integration.d.ts +5 -0
  79. package/dist/react/dropdown-integration.js +1490 -0
  80. package/dist/react/dropdown-integration.js.map +1 -0
  81. package/dist/react/dropdown-search-advanced.d.ts +5 -0
  82. package/dist/react/dropdown-search-advanced.js +1163 -0
  83. package/dist/react/dropdown-search-advanced.js.map +1 -0
  84. package/dist/react/dropdown-search-simple.d.ts +5 -0
  85. package/dist/react/dropdown-search-simple.js +1125 -0
  86. package/dist/react/dropdown-search-simple.js.map +1 -0
  87. package/dist/react/dropdown.d.ts +35 -133
  88. package/dist/react/dropdown.js +536 -1318
  89. package/dist/react/dropdown.js.map +1 -1
  90. package/dist/react/file-upload-trigger.d.ts +34 -0
  91. package/dist/react/file-upload-trigger.js +39 -0
  92. package/dist/react/file-upload-trigger.js.map +1 -0
  93. package/dist/react/form.d.ts +10 -0
  94. package/dist/react/form.js +11 -0
  95. package/dist/react/form.js.map +1 -0
  96. package/dist/react/hint-text.d.ts +17 -0
  97. package/dist/react/hint-text.js +36 -0
  98. package/dist/react/hint-text.js.map +1 -0
  99. package/dist/react/hook-form.d.ts +35 -0
  100. package/dist/react/hook-form.js +50 -0
  101. package/dist/react/hook-form.js.map +1 -0
  102. package/dist/react/input-date.d.ts +43 -0
  103. package/dist/react/input-date.js +306 -0
  104. package/dist/react/input-date.js.map +1 -0
  105. package/dist/react/input-file.d.ts +45 -0
  106. package/dist/react/input-file.js +748 -0
  107. package/dist/react/input-file.js.map +1 -0
  108. package/dist/react/input-group.d.ts +37 -0
  109. package/dist/react/input-group.js +251 -0
  110. package/dist/react/input-group.js.map +1 -0
  111. package/dist/react/input-number.d.ts +32 -0
  112. package/dist/react/input-number.js +553 -0
  113. package/dist/react/input-number.js.map +1 -0
  114. package/dist/react/input-payment.d.ts +16 -0
  115. package/dist/react/input-payment.js +593 -0
  116. package/dist/react/input-payment.js.map +1 -0
  117. package/dist/react/input-tags-outer.d.ts +53 -0
  118. package/dist/react/input-tags-outer.js +607 -0
  119. package/dist/react/input-tags-outer.js.map +1 -0
  120. package/dist/react/input-tags.d.ts +53 -0
  121. package/dist/react/input-tags.js +565 -0
  122. package/dist/react/input-tags.js.map +1 -0
  123. package/dist/react/input.d.ts +71 -22
  124. package/dist/react/input.js +332 -45
  125. package/dist/react/input.js.map +1 -1
  126. package/dist/react/label.d.ts +18 -0
  127. package/dist/react/label.js +112 -0
  128. package/dist/react/label.js.map +1 -0
  129. package/dist/react/multi-select.d.ts +90 -0
  130. package/dist/react/multi-select.js +1237 -0
  131. package/dist/react/multi-select.js.map +1 -0
  132. package/dist/react/pin-input.d.ts +59 -0
  133. package/dist/react/pin-input.js +229 -0
  134. package/dist/react/pin-input.js.map +1 -0
  135. package/dist/react/popover.d.ts +14 -71
  136. package/dist/react/popover.js +171 -540
  137. package/dist/react/popover.js.map +1 -1
  138. package/dist/react/progress-circle.d.ts +9 -0
  139. package/dist/react/progress-circle.js +36 -0
  140. package/dist/react/progress-circle.js.map +1 -0
  141. package/dist/react/progress-circles.d.ts +14 -0
  142. package/dist/react/progress-circles.js +160 -0
  143. package/dist/react/progress-circles.js.map +1 -0
  144. package/dist/react/progress-indicators.d.ts +52 -0
  145. package/dist/react/progress-indicators.js +78 -0
  146. package/dist/react/progress-indicators.js.map +1 -0
  147. package/dist/react/radio-buttons.d.ts +35 -0
  148. package/dist/react/radio-buttons.js +117 -0
  149. package/dist/react/radio-buttons.js.map +1 -0
  150. package/dist/react/scroll-header.d.ts +6 -0
  151. package/dist/react/scroll-header.js +42 -61
  152. package/dist/react/scroll-header.js.map +1 -1
  153. package/dist/react/scroll-wheel.d.ts +4 -5
  154. package/dist/react/scroll-wheel.js +19 -15
  155. package/dist/react/scroll-wheel.js.map +1 -1
  156. package/dist/react/select-item.d.ts +14 -0
  157. package/dist/react/select-item.js +340 -0
  158. package/dist/react/select-item.js.map +1 -0
  159. package/dist/react/select-native.d.ts +17 -0
  160. package/dist/react/select-native.js +203 -0
  161. package/dist/react/select-native.js.map +1 -0
  162. package/dist/react/select.d.ts +19 -61
  163. package/dist/react/select.js +866 -908
  164. package/dist/react/select.js.map +1 -1
  165. package/dist/react/sheet.d.ts +19 -19
  166. package/dist/react/sheet.js +97 -219
  167. package/dist/react/sheet.js.map +1 -1
  168. package/dist/react/slider.d.ts +15 -0
  169. package/dist/react/slider.js +66 -0
  170. package/dist/react/slider.js.map +1 -0
  171. package/dist/react/social-button.d.ts +55 -0
  172. package/dist/react/social-button.js +263 -0
  173. package/dist/react/social-button.js.map +1 -0
  174. package/dist/react/social-logos.d.ts +20 -0
  175. package/dist/react/social-logos.js +131 -0
  176. package/dist/react/social-logos.js.map +1 -0
  177. package/dist/react/switch.d.ts +21 -36
  178. package/dist/react/switch.js +121 -109
  179. package/dist/react/switch.js.map +1 -1
  180. package/dist/react/tag-select.d.ts +47 -0
  181. package/dist/react/tag-select.js +1252 -0
  182. package/dist/react/tag-select.js.map +1 -0
  183. package/dist/react/tags.d.ts +30 -0
  184. package/dist/react/tags.js +228 -0
  185. package/dist/react/tags.js.map +1 -0
  186. package/dist/react/textarea.d.ts +40 -4
  187. package/dist/react/textarea.js +193 -27
  188. package/dist/react/textarea.js.map +1 -1
  189. package/dist/react/tooltip.d.ts +30 -43
  190. package/dist/react/tooltip.js +65 -521
  191. package/dist/react/tooltip.js.map +1 -1
  192. package/dist/select-mobile-sheet-CB2ptDTJ.d.ts +12 -0
  193. package/dist/select-shared-oJEeJxeB.d.ts +68 -0
  194. package/package.json +28 -21
  195. package/source.css +2 -13
  196. package/theme.css +883 -79
  197. package/dist/react/calendar.d.ts +0 -13
  198. package/dist/react/calendar.js +0 -4639
  199. package/dist/react/calendar.js.map +0 -1
  200. package/dist/react/card.d.ts +0 -11
  201. package/dist/react/card.js +0 -113
  202. package/dist/react/card.js.map +0 -1
  203. package/dist/react/datetime-picker.d.ts +0 -21
  204. package/dist/react/datetime-picker.js +0 -6142
  205. package/dist/react/datetime-picker.js.map +0 -1
  206. package/dist/react/pagination.d.ts +0 -28
  207. package/dist/react/pagination.js +0 -262
  208. package/dist/react/pagination.js.map +0 -1
  209. package/dist/react/table-pagination.d.ts +0 -15
  210. package/dist/react/table-pagination.js +0 -1247
  211. package/dist/react/table-pagination.js.map +0 -1
  212. package/dist/react/table-view/column-menu.d.ts +0 -15
  213. package/dist/react/table-view/column-menu.js +0 -1049
  214. package/dist/react/table-view/column-menu.js.map +0 -1
  215. package/dist/react/table-view/index.d.ts +0 -70
  216. package/dist/react/table-view/index.js +0 -2284
  217. package/dist/react/table-view/index.js.map +0 -1
  218. package/dist/react/table.d.ts +0 -86
  219. package/dist/react/table.js +0 -414
  220. package/dist/react/table.js.map +0 -1
  221. package/dist/react/tabs.d.ts +0 -34
  222. package/dist/react/tabs.js +0 -423
  223. package/dist/react/tabs.js.map +0 -1
  224. package/dist/react/time-picker.d.ts +0 -22
  225. package/dist/react/time-picker.js +0 -856
  226. package/dist/react/time-picker.js.map +0 -1
@@ -0,0 +1,714 @@
1
+ import { createContext, useState, useMemo, useContext, useEffect, useCallback, useLayoutEffect, useRef } from 'react';
2
+ import { CaretUpDownIcon } from '@phosphor-icons/react/dist/csr/CaretUpDown';
3
+ import { QuestionIcon } from '@phosphor-icons/react/dist/csr/Question';
4
+ import { SignOutIcon } from '@phosphor-icons/react/dist/csr/SignOut';
5
+ import { MoonIcon } from '@phosphor-icons/react/dist/csr/Moon';
6
+ import { PlusIcon } from '@phosphor-icons/react/dist/csr/Plus';
7
+ import { GearIcon } from '@phosphor-icons/react/dist/csr/Gear';
8
+ import { UserIcon } from '@phosphor-icons/react/dist/csr/User';
9
+ import { MenuTrigger, Button, MenuSection, SubmenuTrigger, Header, OverlayTriggerStateContext, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
10
+ import { createPortal } from 'react-dom';
11
+ import { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';
12
+ import { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';
13
+ import '@phosphor-icons/react/dist/csr/DotsThreeVertical';
14
+ import { XIcon } from '@phosphor-icons/react/dist/csr/X';
15
+ import { extendTailwindMerge } from 'tailwind-merge';
16
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
17
+
18
+ var MOBILE_SHEET_MOTION_MS = 175;
19
+ var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
20
+ var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
21
+ var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
22
+ function resolveSelectMobileOptions(mobileOptions) {
23
+ return {
24
+ sheet: mobileOptions?.sheet ?? true,
25
+ title: mobileOptions?.title,
26
+ sheetClassName: mobileOptions?.className,
27
+ contentClassName: mobileOptions?.contentClassName
28
+ };
29
+ }
30
+ function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
31
+ const [shouldRender, setShouldRender] = useState(open);
32
+ const [isAnimating, setIsAnimating] = useState(false);
33
+ useLayoutEffect(() => {
34
+ if (!enabled) {
35
+ setShouldRender(open);
36
+ return;
37
+ }
38
+ if (open) {
39
+ setShouldRender(true);
40
+ }
41
+ }, [open, enabled]);
42
+ useEffect(() => {
43
+ if (!enabled || open) return;
44
+ const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
45
+ return () => clearTimeout(timer);
46
+ }, [open, enabled]);
47
+ useLayoutEffect(() => {
48
+ if (!enabled || open || !shouldRender) return;
49
+ setIsAnimating(false);
50
+ }, [enabled, open, shouldRender]);
51
+ useEffect(() => {
52
+ if (!enabled || !shouldRender || !open) return;
53
+ let raf2 = 0;
54
+ const raf1 = requestAnimationFrame(() => {
55
+ raf2 = requestAnimationFrame(() => setIsAnimating(true));
56
+ });
57
+ return () => {
58
+ cancelAnimationFrame(raf1);
59
+ if (raf2) cancelAnimationFrame(raf2);
60
+ };
61
+ }, [shouldRender, open, enabled]);
62
+ const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
63
+ const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
64
+ const panelStyle = enabled ? {
65
+ transform: isAnimating ? "translateY(0)" : hiddenTransform,
66
+ opacity: isAnimating ? 1 : 0,
67
+ transitionProperty: "transform, opacity",
68
+ transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
69
+ transitionTimingFunction: motionEasing
70
+ } : void 0;
71
+ const backdropStyle = enabled ? {
72
+ opacity: isAnimating ? 1 : 0,
73
+ transitionProperty: "opacity",
74
+ transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
75
+ transitionTimingFunction: motionEasing
76
+ } : void 0;
77
+ return { shouldRender, isAnimating, panelStyle, backdropStyle };
78
+ }
79
+ var MOBILE_SHEET_MAX_PX = 1024;
80
+ function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
81
+ const [isMobile, setIsMobile] = useState(() => {
82
+ if (typeof window === "undefined") return false;
83
+ return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
84
+ });
85
+ useEffect(() => {
86
+ const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
87
+ const handler = (e) => setIsMobile(e.matches);
88
+ mq.addEventListener("change", handler);
89
+ return () => mq.removeEventListener("change", handler);
90
+ }, [breakpoint]);
91
+ return isMobile;
92
+ }
93
+ var twMerge = extendTailwindMerge({
94
+ extend: {
95
+ theme: {
96
+ text: ["display-xs", "display-sm", "display-md", "display-lg", "display-xl", "display-2xl"]
97
+ }
98
+ }
99
+ });
100
+ var cx = twMerge;
101
+ var sizes = {
102
+ xs: "size-1.5",
103
+ sm: "size-2",
104
+ md: "size-2.5",
105
+ lg: "size-3",
106
+ xl: "size-3.5",
107
+ "2xl": "size-4",
108
+ "3xl": "size-4.5",
109
+ "4xl": "size-5"
110
+ };
111
+ var AvatarOnlineIndicator = ({ size, status, className }) => /* @__PURE__ */ jsx(
112
+ "span",
113
+ {
114
+ className: cx(
115
+ "absolute right-0 bottom-0 flex justify-center rounded-full ring-[1.5px] ring-bg-primary",
116
+ status === "online" ? "bg-fg-success-secondary" : "bg-utility-neutral-300",
117
+ sizes[size],
118
+ className
119
+ ),
120
+ style: {
121
+ backgroundImage: "radial-gradient(43.75% 43.75% at 50% 28.75%, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.00) 100%), radial-gradient(50% 50% at 50% 50%, rgba(255, 255, 255, 0.00) 74.66%, rgba(255, 255, 255, 0.18) 100%), radial-gradient(75% 75% at 50% 0%, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.00) 50%, rgba(255, 255, 255, 0.08) 99%, rgba(255, 255, 255, 0.00) 100%)"
122
+ },
123
+ children: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 7.2 2.85", fill: "none", className: "mt-[10%] h-[20%] w-[60%]", children: [
124
+ /* @__PURE__ */ jsx(
125
+ "path",
126
+ {
127
+ d: "M7.2 1.83107C7.2 2.84235 5.58823 2.19729 3.6 2.19729C1.61177 2.19729 0 2.84235 0 1.83107C0 0.8198 1.61177 0 3.6 0C5.58823 0 7.2 0.8198 7.2 1.83107Z",
128
+ fill: "url(#reflection-gradient)",
129
+ fillOpacity: "0.4"
130
+ }
131
+ ),
132
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: "reflection-gradient", x1: "3.6", y1: "0", x2: "3.6", y2: "2.4", gradientUnits: "userSpaceOnUse", children: [
133
+ /* @__PURE__ */ jsx("stop", { stopColor: "white" }),
134
+ /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "white", stopOpacity: "0.1" })
135
+ ] }) })
136
+ ] })
137
+ }
138
+ );
139
+ var sizes2 = {
140
+ xs: "size-2.5",
141
+ sm: "size-3",
142
+ md: "size-3.5",
143
+ lg: "size-4",
144
+ xl: "size-4.5",
145
+ "2xl": "size-5",
146
+ "3xl": "size-6",
147
+ "4xl": "size-8"
148
+ };
149
+ var VerifiedTick = ({ size, className }) => /* @__PURE__ */ jsxs("svg", { className: cx("z-10 text-utility-blue-500", sizes2[size], className), viewBox: "0 0 10 10", fill: "none", children: [
150
+ /* @__PURE__ */ jsx(
151
+ "path",
152
+ {
153
+ d: "M7.72237 1.77098C7.81734 2.00068 7.99965 2.18326 8.2292 2.27858L9.03413 2.61199C9.26384 2.70714 9.44635 2.88965 9.5415 3.11936C9.63665 3.34908 9.63665 3.60718 9.5415 3.83689L9.20833 4.64125C9.11313 4.87106 9.113 5.12943 9.20863 5.35913L9.54122 6.16325C9.58839 6.27702 9.61268 6.39897 9.6127 6.52214C9.61272 6.6453 9.58847 6.76726 9.54134 6.88105C9.4942 6.99484 9.42511 7.09823 9.33801 7.18531C9.2509 7.27238 9.14749 7.34144 9.03369 7.38854L8.22934 7.72171C7.99964 7.81669 7.81706 7.99899 7.72174 8.22855L7.38833 9.03348C7.29318 9.26319 7.11067 9.4457 6.88096 9.54085C6.65124 9.636 6.39314 9.636 6.16343 9.54085L5.35907 9.20767C5.12935 9.11276 4.87134 9.11295 4.64177 9.20821L3.83684 9.54115C3.60725 9.63608 3.34937 9.636 3.11984 9.54092C2.89032 9.44585 2.70791 9.26356 2.6127 9.03409L2.27918 8.22892C2.18421 7.99923 2.0019 7.81665 1.77235 7.72133L0.967421 7.38792C0.737807 7.29281 0.555355 7.11041 0.460169 6.88083C0.364983 6.65125 0.364854 6.39327 0.45981 6.16359L0.792984 5.35924C0.8879 5.12952 0.887707 4.87151 0.792445 4.64193L0.459749 3.83642C0.41258 3.72265 0.388291 3.60069 0.388272 3.47753C0.388252 3.35436 0.412501 3.2324 0.459634 3.11861C0.506767 3.00482 0.57586 2.90144 0.662965 2.81436C0.75007 2.72728 0.853479 2.65822 0.967283 2.61113L1.77164 2.27795C2.00113 2.18306 2.1836 2.00099 2.27899 1.7717L2.6124 0.966768C2.70755 0.737054 2.89006 0.554547 3.11978 0.459397C3.34949 0.364246 3.60759 0.364246 3.83731 0.459397L4.64166 0.792571C4.87138 0.887487 5.12939 0.887293 5.35897 0.792031L6.16424 0.459913C6.39392 0.364816 6.65197 0.364836 6.88164 0.459968C7.11131 0.555099 7.29379 0.737554 7.38895 0.967208L7.72247 1.77238L7.72237 1.77098Z",
154
+ className: "fill-current"
155
+ }
156
+ ),
157
+ /* @__PURE__ */ jsx(
158
+ "path",
159
+ {
160
+ fillRule: "evenodd",
161
+ clipRule: "evenodd",
162
+ d: "M6.95829 3.68932C7.02509 3.58439 7.04747 3.45723 7.02051 3.3358C6.99356 3.21437 6.91946 3.10862 6.81454 3.04182C6.70961 2.97502 6.58245 2.95264 6.46102 2.97959C6.33959 3.00655 6.23384 3.08064 6.16704 3.18557L4.33141 6.06995L3.49141 5.01995C3.41375 4.92281 3.30069 4.8605 3.17709 4.84673C3.05349 4.83296 2.92949 4.86885 2.83235 4.94651C2.73522 5.02417 2.67291 5.13723 2.65914 5.26083C2.64536 5.38443 2.68125 5.50843 2.75891 5.60557L4.00891 7.16807C4.0555 7.22638 4.11533 7.27271 4.18344 7.30323C4.25154 7.33375 4.32595 7.34757 4.40047 7.34353C4.47499 7.3395 4.54747 7.31773 4.61188 7.28004C4.67629 7.24234 4.73077 7.18981 4.77079 7.12682L6.95829 3.68932Z",
163
+ fill: "white"
164
+ }
165
+ )
166
+ ] });
167
+ var AvatarCount = ({ count, className }) => /* @__PURE__ */ jsx("div", { className: cx("absolute right-0 bottom-0 p-px", className), children: /* @__PURE__ */ jsx("div", { className: "flex size-3.5 items-center justify-center rounded-full bg-fg-error-primary text-center text-[10px] leading-[13px] font-bold text-white", children: count }) });
168
+ var styles = {
169
+ xs: { root: "size-6", rootWithBorder: "p-px", initials: "text-xs font-semibold", icon: "size-4" },
170
+ sm: { root: "size-8", rootWithBorder: "p-px", initials: "text-sm font-semibold", icon: "size-5" },
171
+ md: { root: "size-10", rootWithBorder: "p-px", initials: "text-md font-semibold", icon: "size-6" },
172
+ lg: { root: "size-12", rootWithBorder: "p-[1.5px]", initials: "text-lg font-semibold", icon: "size-7" },
173
+ xl: { root: "size-14", rootWithBorder: "p-0.5", initials: "text-xl font-semibold", icon: "size-8" },
174
+ "2xl": { root: "size-16", rootWithBorder: "p-0.5", initials: "text-display-xs font-semibold", icon: "size-8" }
175
+ };
176
+ var Avatar = ({
177
+ size = "md",
178
+ src,
179
+ alt,
180
+ initials,
181
+ placeholder,
182
+ placeholderIcon: PlaceholderIcon,
183
+ border,
184
+ badge,
185
+ status,
186
+ verified,
187
+ count,
188
+ focusable = false,
189
+ rounded = true,
190
+ className,
191
+ contentClassName
192
+ }) => {
193
+ const [isFailed, setIsFailed] = useState(false);
194
+ const canShowImage = src && !isFailed;
195
+ const renderMainContent = () => {
196
+ if (canShowImage) {
197
+ return /* @__PURE__ */ jsx("img", { "data-avatar-img": true, className: "size-full object-cover", src, alt, onError: () => setIsFailed(true) });
198
+ }
199
+ if (initials) {
200
+ return /* @__PURE__ */ jsx("span", { className: cx("text-quaternary", styles[size].initials), children: initials });
201
+ }
202
+ if (PlaceholderIcon) {
203
+ return /* @__PURE__ */ jsx(PlaceholderIcon, { className: cx("text-fg-quaternary", styles[size].icon) });
204
+ }
205
+ return placeholder || /* @__PURE__ */ jsx(UserIcon, { className: cx("text-fg-quaternary", styles[size].icon) });
206
+ };
207
+ const renderBadgeContent = () => {
208
+ if (status) {
209
+ return /* @__PURE__ */ jsx(AvatarOnlineIndicator, { status, size });
210
+ }
211
+ if (verified) {
212
+ return /* @__PURE__ */ jsx(VerifiedTick, { size, className: cx("absolute right-0 bottom-0", size === "xs" && "-right-px -bottom-px") });
213
+ }
214
+ if (count) {
215
+ return /* @__PURE__ */ jsx(AvatarCount, { count });
216
+ }
217
+ return badge;
218
+ };
219
+ return /* @__PURE__ */ jsxs(
220
+ "div",
221
+ {
222
+ "data-avatar": true,
223
+ className: cx(
224
+ "relative inline-flex shrink-0 rounded-[7px]",
225
+ rounded && "rounded-full",
226
+ // Focus styles
227
+ focusable && "outline-none group-focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]",
228
+ border && "ring-1 ring-secondary_alt",
229
+ border && styles[size].rootWithBorder,
230
+ styles[size].root,
231
+ className
232
+ ),
233
+ children: [
234
+ /* @__PURE__ */ jsx(
235
+ "div",
236
+ {
237
+ className: cx(
238
+ "relative inline-flex size-full shrink-0 items-center justify-center overflow-hidden rounded-md bg-tertiary outline-[0.5px] -outline-offset-[0.5px] outline-black/16 before:inset-[0.5px]",
239
+ rounded && "rounded-full",
240
+ canShowImage && size !== "xs" && "before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-white/32 before:mask-[linear-gradient(to_bottom,black_0%,transparent_25%,transparent_75%,black_100%)]",
241
+ contentClassName
242
+ ),
243
+ children: renderMainContent()
244
+ }
245
+ ),
246
+ renderBadgeContent()
247
+ ]
248
+ }
249
+ );
250
+ };
251
+ var CHECKBOX_TICK_DELAY_MS = 60;
252
+ var CHECKBOX_TICK_DRAW_MS = 100;
253
+ function CheckboxAnimatedCheckMark({ pixelSize, className }) {
254
+ const pathRef = useRef(null);
255
+ useLayoutEffect(() => {
256
+ const path = pathRef.current;
257
+ if (!path || typeof path.getTotalLength !== "function") return;
258
+ const len = path.getTotalLength();
259
+ if (len <= 0) return;
260
+ path.style.strokeDasharray = `${len}`;
261
+ path.style.strokeDashoffset = `${len}`;
262
+ if (typeof path.animate !== "function") {
263
+ path.style.strokeDashoffset = "0";
264
+ return;
265
+ }
266
+ const anim = path.animate([{ strokeDashoffset: len }, { strokeDashoffset: 0 }], {
267
+ duration: CHECKBOX_TICK_DRAW_MS,
268
+ delay: CHECKBOX_TICK_DELAY_MS,
269
+ easing: "cubic-bezier(0.45, 0, 0.2, 1)",
270
+ fill: "forwards"
271
+ });
272
+ return () => anim.cancel();
273
+ }, []);
274
+ return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", width: pixelSize, height: pixelSize, viewBox: "0 0 14 14", fill: "none", className: cx("block", className), children: /* @__PURE__ */ jsx(
275
+ "path",
276
+ {
277
+ ref: pathRef,
278
+ d: "M2.33325 7L5.24992 9.91667L11.6666 3.5",
279
+ stroke: "currentColor",
280
+ strokeWidth: "2",
281
+ strokeLinecap: "round",
282
+ strokeLinejoin: "round"
283
+ }
284
+ ) });
285
+ }
286
+ var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
287
+ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
288
+ const isChecked = isSelected || isIndeterminate;
289
+ const iconPixelSize = size === "sm" ? 10 : 14;
290
+ return /* @__PURE__ */ jsxs(
291
+ "div",
292
+ {
293
+ className: cx(
294
+ "relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
295
+ size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
296
+ isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
297
+ !isChecked && !isDisabled && "group-hover:bg-primary_hover",
298
+ isDisabled && "cursor-not-allowed opacity-50",
299
+ isDisabled && !isChecked && "bg-tertiary",
300
+ isFocusVisible && !isDisabled && focusRingShadow,
301
+ className
302
+ ),
303
+ children: [
304
+ isIndeterminate && /* @__PURE__ */ jsx(
305
+ "svg",
306
+ {
307
+ "aria-hidden": "true",
308
+ width: iconPixelSize,
309
+ height: iconPixelSize,
310
+ viewBox: "0 0 14 14",
311
+ fill: "none",
312
+ className: "pointer-events-none block text-fg-white",
313
+ children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
314
+ }
315
+ ),
316
+ isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
317
+ ]
318
+ }
319
+ );
320
+ };
321
+ CheckboxBase.displayName = "CheckboxBase";
322
+ var RADIO_DOT_DELAY_MS = 60;
323
+ var RADIO_DOT_POP_MS = 100;
324
+ function RadioAnimatedDot({ className }) {
325
+ const dotRef = useRef(null);
326
+ useLayoutEffect(() => {
327
+ const dot = dotRef.current;
328
+ if (!dot) return;
329
+ if (typeof dot.animate !== "function") {
330
+ dot.style.opacity = "1";
331
+ dot.style.transform = "scale(1)";
332
+ return;
333
+ }
334
+ const anim = dot.animate(
335
+ [
336
+ { opacity: 0, transform: "scale(0)" },
337
+ { opacity: 1, transform: "scale(1)" }
338
+ ],
339
+ {
340
+ duration: RADIO_DOT_POP_MS,
341
+ delay: RADIO_DOT_DELAY_MS,
342
+ easing: "cubic-bezier(0.45, 0, 0.2, 1)",
343
+ fill: "forwards"
344
+ }
345
+ );
346
+ return () => anim.cancel();
347
+ }, []);
348
+ return /* @__PURE__ */ jsx("div", { ref: dotRef, "aria-hidden": "true", className: cx("rounded-full bg-fg-white", className), style: { opacity: 0, transform: "scale(0)" } });
349
+ }
350
+ var focusRingShadow2 = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
351
+ createContext(null);
352
+ var RadioButtonBase = ({ className, isFocusVisible, isSelected, isDisabled, size = "sm" }) => {
353
+ const dotClassName = size === "sm" ? "size-1.5" : "size-2";
354
+ return /* @__PURE__ */ jsx(
355
+ "div",
356
+ {
357
+ className: cx(
358
+ "relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip rounded-full border border-solid border-primary bg-primary",
359
+ size === "sm" ? "size-4" : "size-5",
360
+ isSelected && "border-transparent bg-brand-solid",
361
+ !isSelected && !isDisabled && "group-hover:bg-primary_hover",
362
+ isDisabled && "cursor-not-allowed opacity-50",
363
+ isDisabled && !isSelected && "bg-tertiary",
364
+ isFocusVisible && !isDisabled && focusRingShadow2,
365
+ className
366
+ ),
367
+ children: isSelected && /* @__PURE__ */ jsx(RadioAnimatedDot, { className: cx("pointer-events-none", dotClassName) })
368
+ }
369
+ );
370
+ };
371
+ RadioButtonBase.displayName = "RadioButtonBase";
372
+ var focusRingShadow3 = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
373
+ var ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected, slim, size = "sm" }) => {
374
+ const styles3 = {
375
+ default: {
376
+ sm: {
377
+ track: "h-5 w-9 p-0.5",
378
+ thumb: "size-4",
379
+ thumbPosition: isSelected ? "left-[calc(100%-1rem-0.125rem)]" : "left-0.5"
380
+ },
381
+ md: {
382
+ track: "h-6 w-11 p-0.5",
383
+ thumb: "size-5",
384
+ thumbPosition: isSelected ? "left-[calc(100%-1.25rem-0.125rem)]" : "left-0.5"
385
+ }
386
+ },
387
+ slim: {
388
+ sm: {
389
+ track: "h-4 w-8",
390
+ thumb: "size-4",
391
+ thumbPosition: isSelected ? "left-4" : "left-0"
392
+ },
393
+ md: {
394
+ track: "h-5 w-10",
395
+ thumb: "size-5",
396
+ thumbPosition: isSelected ? "left-5" : "left-0"
397
+ }
398
+ }
399
+ };
400
+ const classes = slim ? styles3.slim[size] : styles3.default[size];
401
+ const offTrackBackground = (() => {
402
+ if (isDisabled) return "bg-tertiary";
403
+ if (isHovered) return "bg-secondary_hover";
404
+ return "bg-quaternary";
405
+ })();
406
+ return /* @__PURE__ */ jsx(
407
+ "div",
408
+ {
409
+ className: cx(
410
+ "relative inline-flex shrink-0 cursor-pointer overflow-clip rounded-full outline-none transition duration-150 ease-linear",
411
+ !isSelected && offTrackBackground,
412
+ !slim && "ring-[0.5px] ring-secondary ring-inset",
413
+ slim && "ring-1 ring-secondary ring-inset",
414
+ isSelected && "bg-brand-solid",
415
+ isSelected && isHovered && "bg-brand-solid_hover",
416
+ isSelected && "ring-transparent",
417
+ isDisabled && "cursor-not-allowed opacity-50",
418
+ isFocusVisible && !isDisabled && focusRingShadow3,
419
+ classes.track,
420
+ className
421
+ ),
422
+ children: /* @__PURE__ */ jsx(
423
+ "div",
424
+ {
425
+ className: cx(
426
+ "absolute rounded-full bg-fg-white shadow-sm transition-[left] duration-150 ease-in-out",
427
+ slim ? "top-0 shadow-xs" : "top-0.5",
428
+ slim && "border border-toggle-border",
429
+ slim && isSelected && "border-toggle-slim-border_pressed",
430
+ slim && isSelected && isHovered && "border-toggle-slim-border_pressed-hover",
431
+ classes.thumb,
432
+ classes.thumbPosition
433
+ )
434
+ }
435
+ )
436
+ }
437
+ );
438
+ };
439
+ var focusShadowInset = "[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
440
+ var DropdownItem = ({ label, children, addon, icon: Icon, avatarUrl, unstyled, selectionIndicator = "checkmark", ...props }) => {
441
+ const SelectionIndicator = useCallback(
442
+ (state) => {
443
+ if (selectionIndicator === "checkmark") {
444
+ return /* @__PURE__ */ jsx(
445
+ CheckIcon,
446
+ {
447
+ "aria-hidden": "true",
448
+ className: cx("size-4 shrink-0 stroke-[2.25px] text-fg-brand-primary", !state.isSelected && "invisible", state.className)
449
+ }
450
+ );
451
+ }
452
+ if (selectionIndicator === "checkbox") {
453
+ return /* @__PURE__ */ jsx(
454
+ CheckboxBase,
455
+ {
456
+ isSelected: state.isSelected && !state.hasSubmenu,
457
+ isIndeterminate: state.isSelected && state.hasSubmenu,
458
+ size: "sm",
459
+ className: cx("shrink-0", state.className)
460
+ }
461
+ );
462
+ }
463
+ if (selectionIndicator === "radio") {
464
+ return /* @__PURE__ */ jsx(RadioButtonBase, { isSelected: state.isSelected, className: cx("shrink-0", state.className) });
465
+ }
466
+ if (selectionIndicator === "toggle") {
467
+ return /* @__PURE__ */ jsx(ToggleBase, { slim: true, size: "sm", isSelected: state.isSelected, className: cx("shrink-0", state.className) });
468
+ }
469
+ return null;
470
+ },
471
+ [selectionIndicator]
472
+ );
473
+ if (unstyled) {
474
+ return /* @__PURE__ */ jsx(MenuItem, { id: label, textValue: label, ...props });
475
+ }
476
+ return /* @__PURE__ */ jsx(
477
+ MenuItem,
478
+ {
479
+ ...props,
480
+ className: (state) => cx(
481
+ "group block cursor-pointer px-1.5 py-px outline-hidden",
482
+ state.isDisabled && "cursor-not-allowed opacity-50",
483
+ typeof props.className === "function" ? props.className(state) : props.className
484
+ ),
485
+ children: (state) => /* @__PURE__ */ jsxs(
486
+ "div",
487
+ {
488
+ className: cx(
489
+ "relative flex items-center rounded-md px-2.5 py-2 transition duration-100 ease-linear",
490
+ !state.isDisabled && "group-hover:bg-primary_hover",
491
+ state.isFocused && "bg-primary_hover",
492
+ state.isFocusVisible && focusShadowInset,
493
+ state.hasSubmenu && "pr-1.5"
494
+ ),
495
+ children: [
496
+ state.selectionMode !== "none" && !avatarUrl && !Icon && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "mr-2" }),
497
+ avatarUrl && /* @__PURE__ */ jsx("div", { className: "mr-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(Avatar, { "aria-hidden": "true", size: "xs", src: avatarUrl, alt: label, className: "size-5" }) }),
498
+ Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-quaternary" }),
499
+ /* @__PURE__ */ jsx("span", { className: cx("grow truncate text-sm font-semibold text-secondary", state.isFocused && "text-secondary_hover"), children: label || (typeof children === "function" ? children(state) : children) }),
500
+ addon && /* @__PURE__ */ jsx("span", { className: "ml-1 shrink-0 pr-1 text-xs font-medium text-quaternary", children: addon }),
501
+ state.selectionMode !== "none" && (avatarUrl || Icon) && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "ml-1" }),
502
+ state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-quaternary" })
503
+ ]
504
+ }
505
+ )
506
+ }
507
+ );
508
+ };
509
+ var DropdownMenu = (props) => {
510
+ return /* @__PURE__ */ jsx(
511
+ Menu,
512
+ {
513
+ ...props,
514
+ className: (state) => cx("h-min overflow-y-auto py-1 outline-hidden select-none", typeof props.className === "function" ? props.className(state) : props.className)
515
+ }
516
+ );
517
+ };
518
+ var DropdownSheetDepthContext = createContext(0);
519
+ function DropdownSheetCloseButton({ onClose }) {
520
+ return /* @__PURE__ */ jsxs(
521
+ "button",
522
+ {
523
+ type: "button",
524
+ onClick: (e) => {
525
+ e.stopPropagation();
526
+ onClose();
527
+ },
528
+ className: "flex size-12 shrink-0 cursor-pointer items-center justify-center rounded-full text-fg-primary transition duration-100 ease-linear hover:bg-primary_hover active:scale-[0.96] focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]",
529
+ children: [
530
+ /* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
531
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
532
+ ]
533
+ }
534
+ );
535
+ }
536
+ function DropdownSheetChrome({ title, onClose, children }) {
537
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
538
+ /* @__PURE__ */ jsxs("div", { className: cx("flex w-full shrink-0 items-center py-2 pl-4 pr-2", title ? "justify-between gap-3" : "justify-end"), children: [
539
+ title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
540
+ /* @__PURE__ */ jsx(DropdownSheetCloseButton, { onClose })
541
+ ] }),
542
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-[max(2.5rem,calc(env(safe-area-inset-bottom)+2rem))]", children })
543
+ ] });
544
+ }
545
+ var DropdownPopover = ({ mobileOptions, children, className, style, ...props }) => {
546
+ const isMobile = useIsMobile();
547
+ const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
548
+ const useMobileSheet = isMobile && resolvedMobile.sheet;
549
+ const overlayState = useContext(OverlayTriggerStateContext);
550
+ const open = overlayState?.isOpen ?? false;
551
+ const parentDepth = useContext(DropdownSheetDepthContext);
552
+ const depth = parentDepth + 1;
553
+ const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
554
+ useEffect(() => {
555
+ if (!useMobileSheet || !open) return;
556
+ const prev = document.body.style.overflow;
557
+ document.body.style.overflow = "hidden";
558
+ return () => {
559
+ document.body.style.overflow = prev;
560
+ };
561
+ }, [useMobileSheet, open]);
562
+ if (!useMobileSheet) {
563
+ return /* @__PURE__ */ jsx(
564
+ Popover,
565
+ {
566
+ placement: "bottom right",
567
+ ...props,
568
+ style,
569
+ className: (state) => cx(
570
+ "w-62 origin-(--trigger-anchor-point) overflow-auto rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
571
+ state.isEntering && "duration-150 ease-out animate-in fade-in placement-right:slide-in-from-left-0.5 placement-top:slide-in-from-bottom-0.5 placement-bottom:slide-in-from-top-0.5",
572
+ state.isExiting && "duration-100 ease-in animate-out fade-out placement-right:slide-out-to-left-0.5 placement-top:slide-out-to-bottom-0.5 placement-bottom:slide-out-to-top-0.5",
573
+ typeof className === "function" ? className(state) : className
574
+ ),
575
+ children
576
+ }
577
+ );
578
+ }
579
+ const close = () => overlayState?.close();
580
+ const showMobileSheet = shouldRender;
581
+ const isMobileSheetExiting = showMobileSheet && !open;
582
+ const scrimZIndex = 50 + (depth - 1) * 10;
583
+ const sheetZIndex = scrimZIndex + 1;
584
+ const mobileScrim = shouldRender && typeof document !== "undefined" ? createPortal(
585
+ /* @__PURE__ */ jsx(
586
+ "div",
587
+ {
588
+ className: "fixed inset-0 bg-overlay/70",
589
+ style: { ...backdropStyle, zIndex: scrimZIndex },
590
+ onClick: close,
591
+ "aria-hidden": "true"
592
+ }
593
+ ),
594
+ document.body
595
+ ) : null;
596
+ return /* @__PURE__ */ jsxs(DropdownSheetDepthContext.Provider, { value: depth, children: [
597
+ mobileScrim,
598
+ /* @__PURE__ */ jsx(
599
+ Popover,
600
+ {
601
+ placement: "bottom",
602
+ containerPadding: 0,
603
+ offset: 0,
604
+ ...props,
605
+ isExiting: isMobileSheetExiting,
606
+ "data-dropdown-mobile-sheet": true,
607
+ style: { ...panelStyle, zIndex: sheetZIndex, ...style },
608
+ className: (state) => cx(
609
+ "fixed! inset-x-0! bottom-0! top-auto! right-0! left-0! flex max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))] w-full! max-w-none! flex-col overflow-hidden rounded-t-2xl rounded-b-none border-x-0 border-t border-secondary bg-primary shadow-xl outline-hidden",
610
+ resolvedMobile.sheetClassName,
611
+ typeof className === "function" ? className(state) : className
612
+ ),
613
+ children: /* @__PURE__ */ jsx(DropdownSheetChrome, { title: resolvedMobile.title, onClose: close, children: typeof children === "function" ? null : children })
614
+ }
615
+ )
616
+ ] });
617
+ };
618
+ var DropdownSeparator = (props) => {
619
+ return /* @__PURE__ */ jsx(Separator, { ...props, className: cx("my-1 h-px w-full bg-border-secondary", props.className) });
620
+ };
621
+ var Dropdown = {
622
+ Root: MenuTrigger,
623
+ Popover: DropdownPopover,
624
+ Menu: DropdownMenu,
625
+ Section: MenuSection,
626
+ SectionHeader: Header,
627
+ Item: DropdownItem,
628
+ Separator: DropdownSeparator};
629
+ var styles2 = {
630
+ sm: { title: "text-sm ", subtitle: "text-xs" },
631
+ md: { title: "text-sm ", subtitle: "text-sm" },
632
+ lg: { title: "text-md ", subtitle: "text-md" }
633
+ };
634
+ var AvatarLabelGroup = ({ title, subtitle, className, rounded, avatarClassName, ...props }) => {
635
+ return /* @__PURE__ */ jsxs("figure", { className: cx("group flex min-w-0 flex-1 items-center gap-2", className), children: [
636
+ /* @__PURE__ */ jsx(Avatar, { border: true, rounded, className: avatarClassName, ...props }),
637
+ /* @__PURE__ */ jsxs("figcaption", { className: "min-w-0 flex-1", children: [
638
+ /* @__PURE__ */ jsx("p", { className: cx("font-semibold text-primary", styles2[props.size].title), children: title }),
639
+ /* @__PURE__ */ jsx("p", { className: cx("truncate text-tertiary", styles2[props.size].subtitle), children: subtitle })
640
+ ] })
641
+ ] });
642
+ };
643
+ var focusShadowPlain2 = "focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
644
+ var DropdownAccountCardMD = () => {
645
+ const [selectedAccount, setSelectedAccount] = useState(/* @__PURE__ */ new Set(["untitledui"]));
646
+ const [selectedTheme, setSelectedTheme] = useState(/* @__PURE__ */ new Set(["light-mode"]));
647
+ return /* @__PURE__ */ jsxs(Dropdown.Root, { children: [
648
+ /* @__PURE__ */ jsxs(
649
+ Button,
650
+ {
651
+ className: ({ isPressed }) => cx(
652
+ "relative w-60 cursor-pointer rounded-lg bg-primary_alt p-2 text-left inset-ring-1 inset-ring-border-secondary",
653
+ isPressed && "opacity-90",
654
+ focusShadowPlain2
655
+ ),
656
+ children: [
657
+ /* @__PURE__ */ jsx(
658
+ AvatarLabelGroup,
659
+ {
660
+ size: "md",
661
+ src: "https://www.untitledui.com/images/avatars/olivia-rhye?fm=webp&q=80",
662
+ status: "online",
663
+ title: "Olivia Rhye",
664
+ subtitle: "olivia@untitledui.com"
665
+ }
666
+ ),
667
+ /* @__PURE__ */ jsx("div", { className: "absolute top-2 right-2 flex size-7 items-center justify-center rounded-md", children: /* @__PURE__ */ jsx(CaretUpDownIcon, { className: "size-4 shrink-0 stroke-[2.25px] text-fg-quaternary" }) })
668
+ ]
669
+ }
670
+ ),
671
+ /* @__PURE__ */ jsxs(Dropdown.Popover, { className: "w-60", children: [
672
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col border-b border-secondary px-4 py-3", children: [
673
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-primary", children: "PRO account" }),
674
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-tertiary", children: "Renews 10 August 2028" })
675
+ ] }),
676
+ /* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
677
+ /* @__PURE__ */ jsx(Dropdown.Item, { icon: UserIcon, addon: "\u2318K->P", children: "View profile" }),
678
+ /* @__PURE__ */ jsx(Dropdown.Item, { icon: GearIcon, addon: "\u2318S", children: "Settings" }),
679
+ /* @__PURE__ */ jsx(Dropdown.Section, { selectionMode: "single", selectedKeys: selectedTheme, onSelectionChange: setSelectedTheme, children: /* @__PURE__ */ jsx(Dropdown.Item, { id: "dark-mode", icon: MoonIcon, selectionIndicator: "toggle", children: "Dark mode" }) }),
680
+ /* @__PURE__ */ jsxs(SubmenuTrigger, { children: [
681
+ /* @__PURE__ */ jsx(Dropdown.Item, { icon: QuestionIcon, children: "Support" }),
682
+ /* @__PURE__ */ jsx(Dropdown.Popover, { placement: "right top", offset: -6, children: /* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
683
+ /* @__PURE__ */ jsx(Dropdown.Item, { children: "Help center" }),
684
+ /* @__PURE__ */ jsx(Dropdown.Item, { children: "Contact support" }),
685
+ /* @__PURE__ */ jsx(Dropdown.Item, { children: "Send feedback" })
686
+ ] }) })
687
+ ] }),
688
+ /* @__PURE__ */ jsx(Dropdown.Separator, {}),
689
+ /* @__PURE__ */ jsxs(Dropdown.Section, { selectionMode: "single", selectedKeys: selectedAccount, onSelectionChange: setSelectedAccount, children: [
690
+ /* @__PURE__ */ jsx(Dropdown.SectionHeader, { className: "px-4 pt-1.5 pb-0.5 text-xs font-semibold text-brand-secondary", children: "Company" }),
691
+ /* @__PURE__ */ jsx(Dropdown.Item, { id: "untitledui", children: "Untitled UI" }),
692
+ /* @__PURE__ */ jsx(Dropdown.Item, { id: "sisyphus", children: "Sisyphus Ventures" })
693
+ ] }),
694
+ /* @__PURE__ */ jsx(Dropdown.Item, { icon: PlusIcon, children: "New company" }),
695
+ /* @__PURE__ */ jsx(Dropdown.Separator, {}),
696
+ /* @__PURE__ */ jsxs(SubmenuTrigger, { children: [
697
+ /* @__PURE__ */ jsx(Dropdown.Item, { icon: SignOutIcon, children: "Sign out" }),
698
+ /* @__PURE__ */ jsx(Dropdown.Popover, { placement: "right top", offset: -6, children: /* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
699
+ /* @__PURE__ */ jsx(Dropdown.Item, { children: "Current device" }),
700
+ /* @__PURE__ */ jsx(Dropdown.Item, { children: "All devices" })
701
+ ] }) })
702
+ ] })
703
+ ] }),
704
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-between border-t border-secondary px-4 py-3", children: [
705
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-quaternary", children: "\xA9 Untitled UI" }),
706
+ /* @__PURE__ */ jsx("span", { className: "text-sm text-quaternary", children: "v12.6.8" })
707
+ ] })
708
+ ] })
709
+ ] });
710
+ };
711
+
712
+ export { DropdownAccountCardMD };
713
+ //# sourceMappingURL=dropdown-account-card-md.js.map
714
+ //# sourceMappingURL=dropdown-account-card-md.js.map