@windmorph/react 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (761) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +23 -0
  3. package/README.md +149 -2
  4. package/dist/cli.d.ts +1 -0
  5. package/dist/cli.js +112 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/components/app-bar/AppBarItems.js +23 -0
  8. package/dist/components/app-bar/AppBarItems.js.map +1 -0
  9. package/dist/components/app-bar/TopAppBar.d.ts +89 -0
  10. package/dist/components/app-bar/TopAppBar.js +103 -0
  11. package/dist/components/app-bar/TopAppBar.js.map +1 -0
  12. package/dist/components/app-bar/app-bar-styles.d.ts +280 -0
  13. package/dist/components/app-bar/app-bar-styles.js +142 -0
  14. package/dist/components/app-bar/app-bar-styles.js.map +1 -0
  15. package/dist/components/app-bar/app-bar-tokens.d.ts +7 -0
  16. package/dist/components/app-bar/app-bar-tokens.js +64 -0
  17. package/dist/components/app-bar/app-bar-tokens.js.map +1 -0
  18. package/dist/components/app-bar/use-app-bar-scroll.d.ts +6 -0
  19. package/dist/components/app-bar/use-app-bar-scroll.js +139 -0
  20. package/dist/components/app-bar/use-app-bar-scroll.js.map +1 -0
  21. package/dist/components/autocomplete/Autocomplete.d.ts +142 -0
  22. package/dist/components/autocomplete/Autocomplete.js +284 -0
  23. package/dist/components/autocomplete/Autocomplete.js.map +1 -0
  24. package/dist/components/badge/Badge.d.ts +71 -0
  25. package/dist/components/badge/Badge.js +72 -0
  26. package/dist/components/badge/Badge.js.map +1 -0
  27. package/dist/components/badge/badge-styles.d.ts +100 -0
  28. package/dist/components/badge/badge-styles.js +43 -0
  29. package/dist/components/badge/badge-styles.js.map +1 -0
  30. package/dist/components/badge/badge-tokens.d.ts +7 -0
  31. package/dist/components/badge/badge-tokens.js +40 -0
  32. package/dist/components/badge/badge-tokens.js.map +1 -0
  33. package/dist/components/button/Button.d.ts +91 -0
  34. package/dist/components/button/Button.js +96 -0
  35. package/dist/components/button/Button.js.map +1 -0
  36. package/dist/components/button/ButtonContext.d.ts +30 -0
  37. package/dist/components/button/ButtonContext.js +18 -0
  38. package/dist/components/button/ButtonContext.js.map +1 -0
  39. package/dist/components/button/DensityZeroButtons.js +25 -0
  40. package/dist/components/button/DensityZeroButtons.js.map +1 -0
  41. package/dist/components/button/button-pending.d.ts +10 -0
  42. package/dist/components/button/button-pending.js +166 -0
  43. package/dist/components/button/button-pending.js.map +1 -0
  44. package/dist/components/button/button-styles.d.ts +216 -0
  45. package/dist/components/button/button-styles.js +199 -0
  46. package/dist/components/button/button-styles.js.map +1 -0
  47. package/dist/components/button/button-tokens.d.ts +10 -0
  48. package/dist/components/button/button-tokens.js +257 -0
  49. package/dist/components/button/button-tokens.js.map +1 -0
  50. package/dist/components/button/connected-shapes.js +152 -0
  51. package/dist/components/button/connected-shapes.js.map +1 -0
  52. package/dist/components/card/Card.d.ts +60 -0
  53. package/dist/components/card/Card.js +69 -0
  54. package/dist/components/card/Card.js.map +1 -0
  55. package/dist/components/card/card-styles.d.ts +42 -0
  56. package/dist/components/card/card-styles.js +64 -0
  57. package/dist/components/card/card-styles.js.map +1 -0
  58. package/dist/components/card/card-tokens.d.ts +7 -0
  59. package/dist/components/card/card-tokens.js +84 -0
  60. package/dist/components/card/card-tokens.js.map +1 -0
  61. package/dist/components/carousel/Carousel.d.ts +124 -0
  62. package/dist/components/carousel/Carousel.js +387 -0
  63. package/dist/components/carousel/Carousel.js.map +1 -0
  64. package/dist/components/carousel/carousel-keylines.js +486 -0
  65. package/dist/components/carousel/carousel-keylines.js.map +1 -0
  66. package/dist/components/carousel/carousel-press-area.js +35 -0
  67. package/dist/components/carousel/carousel-press-area.js.map +1 -0
  68. package/dist/components/carousel/carousel-styles.d.ts +188 -0
  69. package/dist/components/carousel/carousel-styles.js +116 -0
  70. package/dist/components/carousel/carousel-styles.js.map +1 -0
  71. package/dist/components/carousel/carousel-tokens.d.ts +7 -0
  72. package/dist/components/carousel/carousel-tokens.js +18 -0
  73. package/dist/components/carousel/carousel-tokens.js.map +1 -0
  74. package/dist/components/checkbox/Checkbox.d.ts +78 -0
  75. package/dist/components/checkbox/Checkbox.js +77 -0
  76. package/dist/components/checkbox/Checkbox.js.map +1 -0
  77. package/dist/components/checkbox/checkbox-box.js +34 -0
  78. package/dist/components/checkbox/checkbox-box.js.map +1 -0
  79. package/dist/components/checkbox/checkbox-styles.d.ts +100 -0
  80. package/dist/components/checkbox/checkbox-styles.js +54 -0
  81. package/dist/components/checkbox/checkbox-styles.js.map +1 -0
  82. package/dist/components/checkbox/checkbox-tokens.d.ts +7 -0
  83. package/dist/components/checkbox/checkbox-tokens.js +41 -0
  84. package/dist/components/checkbox/checkbox-tokens.js.map +1 -0
  85. package/dist/components/chip/Chip.d.ts +171 -0
  86. package/dist/components/chip/Chip.js +348 -0
  87. package/dist/components/chip/Chip.js.map +1 -0
  88. package/dist/components/chip/ChipSet.d.ts +70 -0
  89. package/dist/components/chip/ChipSet.js +198 -0
  90. package/dist/components/chip/ChipSet.js.map +1 -0
  91. package/dist/components/chip/chip-styles.d.ts +263 -0
  92. package/dist/components/chip/chip-styles.js +360 -0
  93. package/dist/components/chip/chip-styles.js.map +1 -0
  94. package/dist/components/chip/chip-tokens.d.ts +13 -0
  95. package/dist/components/chip/chip-tokens.js +185 -0
  96. package/dist/components/chip/chip-tokens.js.map +1 -0
  97. package/dist/components/date-picker/CalendarGrid.js +94 -0
  98. package/dist/components/date-picker/CalendarGrid.js.map +1 -0
  99. package/dist/components/date-picker/CompactDateDialog.js +63 -0
  100. package/dist/components/date-picker/CompactDateDialog.js.map +1 -0
  101. package/dist/components/date-picker/DateField.d.ts +161 -0
  102. package/dist/components/date-picker/DateField.js +393 -0
  103. package/dist/components/date-picker/DateField.js.map +1 -0
  104. package/dist/components/date-picker/DateInput.d.ts +20 -0
  105. package/dist/components/date-picker/DateInput.js +99 -0
  106. package/dist/components/date-picker/DateInput.js.map +1 -0
  107. package/dist/components/date-picker/DatePicker.d.ts +165 -0
  108. package/dist/components/date-picker/DatePicker.js +492 -0
  109. package/dist/components/date-picker/DatePicker.js.map +1 -0
  110. package/dist/components/date-picker/PickerDialog.d.ts +121 -0
  111. package/dist/components/date-picker/PickerDialog.js +161 -0
  112. package/dist/components/date-picker/PickerDialog.js.map +1 -0
  113. package/dist/components/date-picker/calendar-parts.js +141 -0
  114. package/dist/components/date-picker/calendar-parts.js.map +1 -0
  115. package/dist/components/date-picker/date-format.js +72 -0
  116. package/dist/components/date-picker/date-format.js.map +1 -0
  117. package/dist/components/date-picker/date-picker-styles.d.ts +247 -0
  118. package/dist/components/date-picker/date-picker-styles.js +163 -0
  119. package/dist/components/date-picker/date-picker-styles.js.map +1 -0
  120. package/dist/components/date-picker/date-picker-tokens.d.ts +7 -0
  121. package/dist/components/date-picker/date-picker-tokens.js +104 -0
  122. package/dist/components/date-picker/date-picker-tokens.js.map +1 -0
  123. package/dist/components/date-picker/picker-dialog-context.js +8 -0
  124. package/dist/components/date-picker/picker-dialog-context.js.map +1 -0
  125. package/dist/components/date-picker/picker-dialog-styles.d.ts +95 -0
  126. package/dist/components/date-picker/picker-dialog-styles.js +57 -0
  127. package/dist/components/date-picker/picker-dialog-styles.js.map +1 -0
  128. package/dist/components/date-picker/picker-icons.js +24 -0
  129. package/dist/components/date-picker/picker-icons.js.map +1 -0
  130. package/dist/components/date-picker/use-media-query.js +21 -0
  131. package/dist/components/date-picker/use-media-query.js.map +1 -0
  132. package/dist/components/date-picker/use-size-transform.js +62 -0
  133. package/dist/components/date-picker/use-size-transform.js.map +1 -0
  134. package/dist/components/date-picker/use-view-exit.js +68 -0
  135. package/dist/components/date-picker/use-view-exit.js.map +1 -0
  136. package/dist/components/dialog/Dialog.d.ts +267 -0
  137. package/dist/components/dialog/Dialog.js +521 -0
  138. package/dist/components/dialog/Dialog.js.map +1 -0
  139. package/dist/components/dialog/dialog-styles.d.ts +335 -0
  140. package/dist/components/dialog/dialog-styles.js +377 -0
  141. package/dist/components/dialog/dialog-styles.js.map +1 -0
  142. package/dist/components/dialog/dialog-tokens.d.ts +7 -0
  143. package/dist/components/dialog/dialog-tokens.js +57 -0
  144. package/dist/components/dialog/dialog-tokens.js.map +1 -0
  145. package/dist/components/divider/Divider.d.ts +59 -0
  146. package/dist/components/divider/Divider.js +53 -0
  147. package/dist/components/divider/Divider.js.map +1 -0
  148. package/dist/components/divider/divider-styles.d.ts +90 -0
  149. package/dist/components/divider/divider-styles.js +66 -0
  150. package/dist/components/divider/divider-styles.js.map +1 -0
  151. package/dist/components/divider/divider-tokens.d.ts +7 -0
  152. package/dist/components/divider/divider-tokens.js +16 -0
  153. package/dist/components/divider/divider-tokens.js.map +1 -0
  154. package/dist/components/fab/Fab.d.ts +130 -0
  155. package/dist/components/fab/Fab.js +137 -0
  156. package/dist/components/fab/Fab.js.map +1 -0
  157. package/dist/components/fab/FabTooltip.js +36 -0
  158. package/dist/components/fab/FabTooltip.js.map +1 -0
  159. package/dist/components/fab/fab-styles.d.ts +286 -0
  160. package/dist/components/fab/fab-styles.js +131 -0
  161. package/dist/components/fab/fab-styles.js.map +1 -0
  162. package/dist/components/fab/fab-tokens.d.ts +12 -0
  163. package/dist/components/fab/fab-tokens.js +105 -0
  164. package/dist/components/fab/fab-tokens.js.map +1 -0
  165. package/dist/components/fab-menu/FabMenu.d.ts +156 -0
  166. package/dist/components/fab-menu/FabMenu.js +291 -0
  167. package/dist/components/fab-menu/FabMenu.js.map +1 -0
  168. package/dist/components/fab-menu/fab-menu-stagger.js +51 -0
  169. package/dist/components/fab-menu/fab-menu-stagger.js.map +1 -0
  170. package/dist/components/fab-menu/fab-menu-styles.d.ts +166 -0
  171. package/dist/components/fab-menu/fab-menu-styles.js +107 -0
  172. package/dist/components/fab-menu/fab-menu-styles.js.map +1 -0
  173. package/dist/components/fab-menu/fab-menu-tokens.d.ts +7 -0
  174. package/dist/components/fab-menu/fab-menu-tokens.js +120 -0
  175. package/dist/components/fab-menu/fab-menu-tokens.js.map +1 -0
  176. package/dist/components/icon-button/IconButton.d.ts +125 -0
  177. package/dist/components/icon-button/IconButton.js +112 -0
  178. package/dist/components/icon-button/IconButton.js.map +1 -0
  179. package/dist/components/icon-button/icon-button-styles.d.ts +217 -0
  180. package/dist/components/icon-button/icon-button-styles.js +244 -0
  181. package/dist/components/icon-button/icon-button-styles.js.map +1 -0
  182. package/dist/components/icon-button/icon-button-tokens.d.ts +11 -0
  183. package/dist/components/icon-button/icon-button-tokens.js +215 -0
  184. package/dist/components/icon-button/icon-button-tokens.js.map +1 -0
  185. package/dist/components/list/List.d.ts +265 -0
  186. package/dist/components/list/List.js +1386 -0
  187. package/dist/components/list/List.js.map +1 -0
  188. package/dist/components/list/ListMedia.d.ts +88 -0
  189. package/dist/components/list/ListMedia.js +132 -0
  190. package/dist/components/list/ListMedia.js.map +1 -0
  191. package/dist/components/list/list-styles.d.ts +375 -0
  192. package/dist/components/list/list-styles.js +220 -0
  193. package/dist/components/list/list-styles.js.map +1 -0
  194. package/dist/components/list/list-tokens.d.ts +7 -0
  195. package/dist/components/list/list-tokens.js +92 -0
  196. package/dist/components/list/list-tokens.js.map +1 -0
  197. package/dist/components/loading-indicator/LoadingIndicator.d.ts +65 -0
  198. package/dist/components/loading-indicator/LoadingIndicator.js +92 -0
  199. package/dist/components/loading-indicator/LoadingIndicator.js.map +1 -0
  200. package/dist/components/loading-indicator/lazy-loading-indicator.js +25 -0
  201. package/dist/components/loading-indicator/lazy-loading-indicator.js.map +1 -0
  202. package/dist/components/loading-indicator/loading-indicator-frames.js +149 -0
  203. package/dist/components/loading-indicator/loading-indicator-frames.js.map +1 -0
  204. package/dist/components/loading-indicator/loading-indicator-styles.d.ts +36 -0
  205. package/dist/components/loading-indicator/loading-indicator-styles.js +22 -0
  206. package/dist/components/loading-indicator/loading-indicator-styles.js.map +1 -0
  207. package/dist/components/loading-indicator/loading-indicator-tokens.d.ts +7 -0
  208. package/dist/components/loading-indicator/loading-indicator-tokens.js +44 -0
  209. package/dist/components/loading-indicator/loading-indicator-tokens.js.map +1 -0
  210. package/dist/components/menu/Menu.d.ts +215 -0
  211. package/dist/components/menu/Menu.js +715 -0
  212. package/dist/components/menu/Menu.js.map +1 -0
  213. package/dist/components/menu/menu-styles.d.ts +354 -0
  214. package/dist/components/menu/menu-styles.js +219 -0
  215. package/dist/components/menu/menu-styles.js.map +1 -0
  216. package/dist/components/menu/menu-tokens.d.ts +7 -0
  217. package/dist/components/menu/menu-tokens.js +93 -0
  218. package/dist/components/menu/menu-tokens.js.map +1 -0
  219. package/dist/components/menu/menu-trigger.d.ts +51 -0
  220. package/dist/components/menu/menu-trigger.js +100 -0
  221. package/dist/components/menu/menu-trigger.js.map +1 -0
  222. package/dist/components/menu/use-reveal-entering.js +42 -0
  223. package/dist/components/menu/use-reveal-entering.js.map +1 -0
  224. package/dist/components/navigation/NavItem.d.ts +54 -0
  225. package/dist/components/navigation/NavItem.js +182 -0
  226. package/dist/components/navigation/NavItem.js.map +1 -0
  227. package/dist/components/navigation/NavigationBar.d.ts +64 -0
  228. package/dist/components/navigation/NavigationBar.js +121 -0
  229. package/dist/components/navigation/NavigationBar.js.map +1 -0
  230. package/dist/components/navigation/NavigationRail.d.ts +91 -0
  231. package/dist/components/navigation/NavigationRail.js +285 -0
  232. package/dist/components/navigation/NavigationRail.js.map +1 -0
  233. package/dist/components/navigation/nav-item-styles.d.ts +190 -0
  234. package/dist/components/navigation/nav-item-styles.js +123 -0
  235. package/dist/components/navigation/nav-item-styles.js.map +1 -0
  236. package/dist/components/navigation/navigation-styles.d.ts +239 -0
  237. package/dist/components/navigation/navigation-styles.js +134 -0
  238. package/dist/components/navigation/navigation-styles.js.map +1 -0
  239. package/dist/components/navigation/navigation-tokens.d.ts +9 -0
  240. package/dist/components/navigation/navigation-tokens.js +114 -0
  241. package/dist/components/navigation/navigation-tokens.js.map +1 -0
  242. package/dist/components/navigation/use-hide-on-scroll.js +115 -0
  243. package/dist/components/navigation/use-hide-on-scroll.js.map +1 -0
  244. package/dist/components/navigation/use-item-arrow-keys.js +37 -0
  245. package/dist/components/navigation/use-item-arrow-keys.js.map +1 -0
  246. package/dist/components/navigation/use-rail-item-morph.js +61 -0
  247. package/dist/components/navigation/use-rail-item-morph.js.map +1 -0
  248. package/dist/components/progress/ProgressIndicator.d.ts +95 -0
  249. package/dist/components/progress/ProgressIndicator.js +426 -0
  250. package/dist/components/progress/ProgressIndicator.js.map +1 -0
  251. package/dist/components/progress/progress-geometry.js +285 -0
  252. package/dist/components/progress/progress-geometry.js.map +1 -0
  253. package/dist/components/progress/progress-styles.d.ts +81 -0
  254. package/dist/components/progress/progress-styles.js +43 -0
  255. package/dist/components/progress/progress-styles.js.map +1 -0
  256. package/dist/components/progress/progress-tokens.d.ts +7 -0
  257. package/dist/components/progress/progress-tokens.js +39 -0
  258. package/dist/components/progress/progress-tokens.js.map +1 -0
  259. package/dist/components/pull-to-refresh/PullToRefresh.d.ts +94 -0
  260. package/dist/components/pull-to-refresh/PullToRefresh.js +395 -0
  261. package/dist/components/pull-to-refresh/PullToRefresh.js.map +1 -0
  262. package/dist/components/pull-to-refresh/pull-to-refresh-math.js +37 -0
  263. package/dist/components/pull-to-refresh/pull-to-refresh-math.js.map +1 -0
  264. package/dist/components/pull-to-refresh/pull-to-refresh-styles.d.ts +53 -0
  265. package/dist/components/pull-to-refresh/pull-to-refresh-styles.js +14 -0
  266. package/dist/components/pull-to-refresh/pull-to-refresh-styles.js.map +1 -0
  267. package/dist/components/radio/RadioGroup.d.ts +121 -0
  268. package/dist/components/radio/RadioGroup.js +163 -0
  269. package/dist/components/radio/RadioGroup.js.map +1 -0
  270. package/dist/components/radio/radio-ring.js +21 -0
  271. package/dist/components/radio/radio-ring.js.map +1 -0
  272. package/dist/components/radio/radio-styles.d.ts +155 -0
  273. package/dist/components/radio/radio-styles.js +60 -0
  274. package/dist/components/radio/radio-styles.js.map +1 -0
  275. package/dist/components/radio/radio-tokens.d.ts +7 -0
  276. package/dist/components/radio/radio-tokens.js +31 -0
  277. package/dist/components/radio/radio-tokens.js.map +1 -0
  278. package/dist/components/search/SearchAppBar.d.ts +45 -0
  279. package/dist/components/search/SearchAppBar.js +61 -0
  280. package/dist/components/search/SearchAppBar.js.map +1 -0
  281. package/dist/components/search/SearchBar.d.ts +147 -0
  282. package/dist/components/search/SearchBar.js +412 -0
  283. package/dist/components/search/SearchBar.js.map +1 -0
  284. package/dist/components/search/search-styles.d.ts +243 -0
  285. package/dist/components/search/search-styles.js +143 -0
  286. package/dist/components/search/search-styles.js.map +1 -0
  287. package/dist/components/search/search-tokens.d.ts +9 -0
  288. package/dist/components/search/search-tokens.js +70 -0
  289. package/dist/components/search/search-tokens.js.map +1 -0
  290. package/dist/components/select/Select.d.ts +187 -0
  291. package/dist/components/select/Select.js +319 -0
  292. package/dist/components/select/Select.js.map +1 -0
  293. package/dist/components/select/field-shell.d.ts +29 -0
  294. package/dist/components/select/field-shell.js +135 -0
  295. package/dist/components/select/field-shell.js.map +1 -0
  296. package/dist/components/select/option-list.d.ts +81 -0
  297. package/dist/components/select/option-list.js +291 -0
  298. package/dist/components/select/option-list.js.map +1 -0
  299. package/dist/components/select/search-list.js +135 -0
  300. package/dist/components/select/search-list.js.map +1 -0
  301. package/dist/components/select/selection-cap.js +30 -0
  302. package/dist/components/select/selection-cap.js.map +1 -0
  303. package/dist/components/sheet/BottomSheet.d.ts +154 -0
  304. package/dist/components/sheet/BottomSheet.js +442 -0
  305. package/dist/components/sheet/BottomSheet.js.map +1 -0
  306. package/dist/components/sheet/SheetTrigger.d.ts +25 -0
  307. package/dist/components/sheet/SheetTrigger.js +46 -0
  308. package/dist/components/sheet/SheetTrigger.js.map +1 -0
  309. package/dist/components/sheet/SideSheet.d.ts +139 -0
  310. package/dist/components/sheet/SideSheet.js +289 -0
  311. package/dist/components/sheet/SideSheet.js.map +1 -0
  312. package/dist/components/sheet/bottom-sheet-gesture.js +30 -0
  313. package/dist/components/sheet/bottom-sheet-gesture.js.map +1 -0
  314. package/dist/components/sheet/lazy-bottom-sheet.js +33 -0
  315. package/dist/components/sheet/lazy-bottom-sheet.js.map +1 -0
  316. package/dist/components/sheet/sheet-gesture.js +48 -0
  317. package/dist/components/sheet/sheet-gesture.js.map +1 -0
  318. package/dist/components/sheet/sheet-icons.js +31 -0
  319. package/dist/components/sheet/sheet-icons.js.map +1 -0
  320. package/dist/components/sheet/sheet-settle.js +58 -0
  321. package/dist/components/sheet/sheet-settle.js.map +1 -0
  322. package/dist/components/sheet/sheet-styles.d.ts +312 -0
  323. package/dist/components/sheet/sheet-styles.js +229 -0
  324. package/dist/components/sheet/sheet-styles.js.map +1 -0
  325. package/dist/components/sheet/sheet-tokens.d.ts +12 -0
  326. package/dist/components/sheet/sheet-tokens.js +115 -0
  327. package/dist/components/sheet/sheet-tokens.js.map +1 -0
  328. package/dist/components/sheet/side-swipe-gesture.js +22 -0
  329. package/dist/components/sheet/side-swipe-gesture.js.map +1 -0
  330. package/dist/components/sheet/use-peek-inert.js +32 -0
  331. package/dist/components/sheet/use-peek-inert.js.map +1 -0
  332. package/dist/components/sheet/use-side-swipe.js +174 -0
  333. package/dist/components/sheet/use-side-swipe.js.map +1 -0
  334. package/dist/components/slider/Slider.d.ts +129 -0
  335. package/dist/components/slider/Slider.js +295 -0
  336. package/dist/components/slider/Slider.js.map +1 -0
  337. package/dist/components/slider/slider-geometry.js +138 -0
  338. package/dist/components/slider/slider-geometry.js.map +1 -0
  339. package/dist/components/slider/slider-styles.d.ts +133 -0
  340. package/dist/components/slider/slider-styles.js +97 -0
  341. package/dist/components/slider/slider-styles.js.map +1 -0
  342. package/dist/components/slider/slider-tokens.d.ts +7 -0
  343. package/dist/components/slider/slider-tokens.js +66 -0
  344. package/dist/components/slider/slider-tokens.js.map +1 -0
  345. package/dist/components/slider/use-touch-track.js +138 -0
  346. package/dist/components/slider/use-touch-track.js.map +1 -0
  347. package/dist/components/snackbar/Snackbar.d.ts +96 -0
  348. package/dist/components/snackbar/Snackbar.js +253 -0
  349. package/dist/components/snackbar/Snackbar.js.map +1 -0
  350. package/dist/components/snackbar/snackbar-state.d.ts +58 -0
  351. package/dist/components/snackbar/snackbar-state.js +73 -0
  352. package/dist/components/snackbar/snackbar-state.js.map +1 -0
  353. package/dist/components/snackbar/snackbar-styles.d.ts +109 -0
  354. package/dist/components/snackbar/snackbar-styles.js +67 -0
  355. package/dist/components/snackbar/snackbar-styles.js.map +1 -0
  356. package/dist/components/snackbar/snackbar-tokens.d.ts +7 -0
  357. package/dist/components/snackbar/snackbar-tokens.js +54 -0
  358. package/dist/components/snackbar/snackbar-tokens.js.map +1 -0
  359. package/dist/components/split-button/SplitButton.d.ts +109 -0
  360. package/dist/components/split-button/SplitButton.js +195 -0
  361. package/dist/components/split-button/SplitButton.js.map +1 -0
  362. package/dist/components/split-button/split-button-styles.d.ts +214 -0
  363. package/dist/components/split-button/split-button-styles.js +164 -0
  364. package/dist/components/split-button/split-button-styles.js.map +1 -0
  365. package/dist/components/split-button/split-button-tokens.d.ts +7 -0
  366. package/dist/components/split-button/split-button-tokens.js +36 -0
  367. package/dist/components/split-button/split-button-tokens.js.map +1 -0
  368. package/dist/components/switch/Switch.d.ts +82 -0
  369. package/dist/components/switch/Switch.js +165 -0
  370. package/dist/components/switch/Switch.js.map +1 -0
  371. package/dist/components/switch/switch-styles.d.ts +96 -0
  372. package/dist/components/switch/switch-styles.js +68 -0
  373. package/dist/components/switch/switch-styles.js.map +1 -0
  374. package/dist/components/switch/switch-thumb.js +41 -0
  375. package/dist/components/switch/switch-thumb.js.map +1 -0
  376. package/dist/components/switch/switch-tokens.d.ts +7 -0
  377. package/dist/components/switch/switch-tokens.js +78 -0
  378. package/dist/components/switch/switch-tokens.js.map +1 -0
  379. package/dist/components/tabs/Tabs.d.ts +120 -0
  380. package/dist/components/tabs/Tabs.js +346 -0
  381. package/dist/components/tabs/Tabs.js.map +1 -0
  382. package/dist/components/tabs/tabs-styles.d.ts +198 -0
  383. package/dist/components/tabs/tabs-styles.js +99 -0
  384. package/dist/components/tabs/tabs-styles.js.map +1 -0
  385. package/dist/components/tabs/tabs-tokens.d.ts +7 -0
  386. package/dist/components/tabs/tabs-tokens.js +121 -0
  387. package/dist/components/tabs/tabs-tokens.js.map +1 -0
  388. package/dist/components/text-field/TextField.d.ts +175 -0
  389. package/dist/components/text-field/TextField.js +250 -0
  390. package/dist/components/text-field/TextField.js.map +1 -0
  391. package/dist/components/text-field/text-field-styles.d.ts +252 -0
  392. package/dist/components/text-field/text-field-styles.js +209 -0
  393. package/dist/components/text-field/text-field-styles.js.map +1 -0
  394. package/dist/components/text-field/text-field-tokens.d.ts +7 -0
  395. package/dist/components/text-field/text-field-tokens.js +177 -0
  396. package/dist/components/text-field/text-field-tokens.js.map +1 -0
  397. package/dist/components/time-picker/TimePicker.d.ts +142 -0
  398. package/dist/components/time-picker/TimePicker.js +700 -0
  399. package/dist/components/time-picker/TimePicker.js.map +1 -0
  400. package/dist/components/time-picker/time-picker-styles.d.ts +175 -0
  401. package/dist/components/time-picker/time-picker-styles.js +112 -0
  402. package/dist/components/time-picker/time-picker-styles.js.map +1 -0
  403. package/dist/components/time-picker/time-picker-tokens.d.ts +7 -0
  404. package/dist/components/time-picker/time-picker-tokens.js +86 -0
  405. package/dist/components/time-picker/time-picker-tokens.js.map +1 -0
  406. package/dist/components/toolbar/Toolbar.d.ts +209 -0
  407. package/dist/components/toolbar/Toolbar.js +282 -0
  408. package/dist/components/toolbar/Toolbar.js.map +1 -0
  409. package/dist/components/toolbar/toolbar-styles.d.ts +403 -0
  410. package/dist/components/toolbar/toolbar-styles.js +253 -0
  411. package/dist/components/toolbar/toolbar-styles.js.map +1 -0
  412. package/dist/components/toolbar/toolbar-tokens.d.ts +27 -0
  413. package/dist/components/toolbar/toolbar-tokens.js +117 -0
  414. package/dist/components/toolbar/toolbar-tokens.js.map +1 -0
  415. package/dist/components/toolbar/use-toolbar-scroll-expansion.d.ts +56 -0
  416. package/dist/components/toolbar/use-toolbar-scroll-expansion.js +86 -0
  417. package/dist/components/toolbar/use-toolbar-scroll-expansion.js.map +1 -0
  418. package/dist/components/tooltip/Tooltip.d.ts +131 -0
  419. package/dist/components/tooltip/Tooltip.js +388 -0
  420. package/dist/components/tooltip/Tooltip.js.map +1 -0
  421. package/dist/components/tooltip/lazy-tooltip.js +35 -0
  422. package/dist/components/tooltip/lazy-tooltip.js.map +1 -0
  423. package/dist/components/tooltip/tooltip-placement.d.ts +16 -0
  424. package/dist/components/tooltip/tooltip-placement.js +14 -0
  425. package/dist/components/tooltip/tooltip-placement.js.map +1 -0
  426. package/dist/components/tooltip/tooltip-styles.d.ts +142 -0
  427. package/dist/components/tooltip/tooltip-styles.js +81 -0
  428. package/dist/components/tooltip/tooltip-styles.js.map +1 -0
  429. package/dist/components/tooltip/tooltip-tokens.d.ts +9 -0
  430. package/dist/components/tooltip/tooltip-tokens.js +72 -0
  431. package/dist/components/tooltip/tooltip-tokens.js.map +1 -0
  432. package/dist/components/tooltip/tooltip-trigger.d.ts +42 -0
  433. package/dist/components/tooltip/tooltip-trigger.js +115 -0
  434. package/dist/components/tooltip/tooltip-trigger.js.map +1 -0
  435. package/dist/composites/button-group/ButtonGroup.d.ts +116 -0
  436. package/dist/composites/button-group/ButtonGroup.js +270 -0
  437. package/dist/composites/button-group/ButtonGroup.js.map +1 -0
  438. package/dist/composites/button-group/button-group-styles.d.ts +73 -0
  439. package/dist/composites/button-group/button-group-styles.js +87 -0
  440. package/dist/composites/button-group/button-group-styles.js.map +1 -0
  441. package/dist/composites/button-group/lazy-overflow-menu.js +43 -0
  442. package/dist/composites/button-group/lazy-overflow-menu.js.map +1 -0
  443. package/dist/composites/button-group/overflow-menu-list.js +26 -0
  444. package/dist/composites/button-group/overflow-menu-list.js.map +1 -0
  445. package/dist/composites/button-group/use-overflow.js +75 -0
  446. package/dist/composites/button-group/use-overflow.js.map +1 -0
  447. package/dist/composites/button-group/use-press-expansion.js +155 -0
  448. package/dist/composites/button-group/use-press-expansion.js.map +1 -0
  449. package/dist/index.d.ts +142 -0
  450. package/dist/index.js +136 -0
  451. package/dist/motion/get-m3-spring.d.ts +6 -0
  452. package/dist/motion/get-m3-spring.js +10 -0
  453. package/dist/motion/get-m3-spring.js.map +1 -0
  454. package/dist/motion/reduced-motion.js +19 -0
  455. package/dist/motion/reduced-motion.js.map +1 -0
  456. package/dist/motion/use-m3-spring.d.ts +13 -0
  457. package/dist/motion/use-m3-spring.js +22 -0
  458. package/dist/motion/use-m3-spring.js.map +1 -0
  459. package/dist/next/NextRouterProvider.d.ts +13 -0
  460. package/dist/next/NextRouterProvider.js +26 -0
  461. package/dist/next/NextRouterProvider.js.map +1 -0
  462. package/dist/next/get-theme-from-cookies.d.ts +32 -0
  463. package/dist/next/get-theme-from-cookies.js +27 -0
  464. package/dist/next/get-theme-from-cookies.js.map +1 -0
  465. package/dist/next/navigation-guard.d.ts +30 -0
  466. package/dist/next/navigation-guard.js +68 -0
  467. package/dist/next/navigation-guard.js.map +1 -0
  468. package/dist/next.d.ts +5 -0
  469. package/dist/next.js +5 -0
  470. package/dist/primitives/ButtonBase.d.ts +115 -0
  471. package/dist/primitives/ButtonBase.js +231 -0
  472. package/dist/primitives/ButtonBase.js.map +1 -0
  473. package/dist/primitives/DomDirectionLocale.d.ts +18 -0
  474. package/dist/primitives/DomDirectionLocale.js +28 -0
  475. package/dist/primitives/DomDirectionLocale.js.map +1 -0
  476. package/dist/primitives/Field.d.ts +50 -0
  477. package/dist/primitives/Field.js +74 -0
  478. package/dist/primitives/Field.js.map +1 -0
  479. package/dist/primitives/IconFaces.js +23 -0
  480. package/dist/primitives/IconFaces.js.map +1 -0
  481. package/dist/primitives/Overlay.d.ts +39 -0
  482. package/dist/primitives/Overlay.js +86 -0
  483. package/dist/primitives/Overlay.js.map +1 -0
  484. package/dist/primitives/SelectionControl.d.ts +55 -0
  485. package/dist/primitives/SelectionControl.js +58 -0
  486. package/dist/primitives/SelectionControl.js.map +1 -0
  487. package/dist/primitives/Surface.d.ts +123 -0
  488. package/dist/primitives/Surface.js +68 -0
  489. package/dist/primitives/Surface.js.map +1 -0
  490. package/dist/primitives/ToolbarContext.js +12 -0
  491. package/dist/primitives/ToolbarContext.js.map +1 -0
  492. package/dist/primitives/TouchTarget.d.ts +14 -0
  493. package/dist/primitives/TouchTarget.js +20 -0
  494. package/dist/primitives/TouchTarget.js.map +1 -0
  495. package/dist/primitives/TriggerContext.d.ts +34 -0
  496. package/dist/primitives/TriggerContext.js +24 -0
  497. package/dist/primitives/TriggerContext.js.map +1 -0
  498. package/dist/primitives/hidden-input-focus.js +27 -0
  499. package/dist/primitives/hidden-input-focus.js.map +1 -0
  500. package/dist/primitives/icon-faces-styles.d.ts +9 -0
  501. package/dist/primitives/icon-faces-styles.js +45 -0
  502. package/dist/primitives/icon-faces-styles.js.map +1 -0
  503. package/dist/primitives/locale-with-direction.d.ts +9 -0
  504. package/dist/primitives/locale-with-direction.js +17 -0
  505. package/dist/primitives/locale-with-direction.js.map +1 -0
  506. package/dist/primitives/morph-path.d.ts +25 -0
  507. package/dist/primitives/morph-path.js +38 -0
  508. package/dist/primitives/morph-path.js.map +1 -0
  509. package/dist/primitives/selection-control-styles.d.ts +54 -0
  510. package/dist/primitives/selection-control-styles.js +44 -0
  511. package/dist/primitives/selection-control-styles.js.map +1 -0
  512. package/dist/primitives/use-m3-interaction.d.ts +51 -0
  513. package/dist/primitives/use-m3-interaction.js +149 -0
  514. package/dist/primitives/use-m3-interaction.js.map +1 -0
  515. package/dist/primitives/use-m3-morph.d.ts +18 -0
  516. package/dist/primitives/use-m3-morph.js +36 -0
  517. package/dist/primitives/use-m3-morph.js.map +1 -0
  518. package/dist/primitives/use-presence.d.ts +19 -0
  519. package/dist/primitives/use-presence.js +37 -0
  520. package/dist/primitives/use-presence.js.map +1 -0
  521. package/dist/primitives.d.ts +36 -0
  522. package/dist/primitives.js +34 -0
  523. package/dist/shapes/corner-rounding.d.ts +13 -0
  524. package/dist/shapes/corner-rounding.js +18 -0
  525. package/dist/shapes/corner-rounding.js.map +1 -0
  526. package/dist/shapes/cubic.d.ts +52 -0
  527. package/dist/shapes/cubic.js +189 -0
  528. package/dist/shapes/cubic.js.map +1 -0
  529. package/dist/shapes/feature-mapping.js +80 -0
  530. package/dist/shapes/feature-mapping.js.map +1 -0
  531. package/dist/shapes/features.d.ts +23 -0
  532. package/dist/shapes/features.js +82 -0
  533. package/dist/shapes/features.js.map +1 -0
  534. package/dist/shapes/float-mapping.js +65 -0
  535. package/dist/shapes/float-mapping.js.map +1 -0
  536. package/dist/shapes/generated/material-shape-path-record.d.ts +11 -0
  537. package/dist/shapes/generated/material-shape-path-record.js +48 -0
  538. package/dist/shapes/generated/material-shape-path-record.js.map +1 -0
  539. package/dist/shapes/generated/material-shape-paths.d.ts +78 -0
  540. package/dist/shapes/generated/material-shape-paths.js +218 -0
  541. package/dist/shapes/generated/material-shape-paths.js.map +1 -0
  542. package/dist/shapes/mask.d.ts +14 -0
  543. package/dist/shapes/mask.js +24 -0
  544. package/dist/shapes/mask.js.map +1 -0
  545. package/dist/shapes/material-shapes.d.ts +11 -0
  546. package/dist/shapes/material-shapes.js +250 -0
  547. package/dist/shapes/material-shapes.js.map +1 -0
  548. package/dist/shapes/morph.d.ts +25 -0
  549. package/dist/shapes/morph.js +97 -0
  550. package/dist/shapes/morph.js.map +1 -0
  551. package/dist/shapes/path.d.ts +33 -0
  552. package/dist/shapes/path.js +47 -0
  553. package/dist/shapes/path.js.map +1 -0
  554. package/dist/shapes/point.d.ts +28 -0
  555. package/dist/shapes/point.js +103 -0
  556. package/dist/shapes/point.js.map +1 -0
  557. package/dist/shapes/polygon-measure.js +140 -0
  558. package/dist/shapes/polygon-measure.js.map +1 -0
  559. package/dist/shapes/rounded-polygon.d.ts +44 -0
  560. package/dist/shapes/rounded-polygon.js +278 -0
  561. package/dist/shapes/rounded-polygon.js.map +1 -0
  562. package/dist/shapes/shape-path.d.ts +15 -0
  563. package/dist/shapes/shapes.d.ts +53 -0
  564. package/dist/shapes/shapes.js +171 -0
  565. package/dist/shapes/shapes.js.map +1 -0
  566. package/dist/styles/generated/components.css +710 -0
  567. package/dist/styles/generated/theme.css +247 -0
  568. package/dist/styles/generated/themes.css +3361 -0
  569. package/dist/styles/generated/tokens.css +284 -0
  570. package/dist/styles/styles.css +15 -0
  571. package/dist/styles/utilities.css +283 -0
  572. package/dist/styles.compiled.css +2 -0
  573. package/dist/theme/ThemeProvider.d.ts +72 -0
  574. package/dist/theme/ThemeProvider.js +144 -0
  575. package/dist/theme/ThemeProvider.js.map +1 -0
  576. package/dist/theme/ThemeScope.d.ts +32 -0
  577. package/dist/theme/ThemeScope.js +67 -0
  578. package/dist/theme/ThemeScope.js.map +1 -0
  579. package/dist/theme/ThemeScript.d.ts +26 -0
  580. package/dist/theme/ThemeScript.js +44 -0
  581. package/dist/theme/ThemeScript.js.map +1 -0
  582. package/dist/theme/context.d.ts +32 -0
  583. package/dist/theme/context.js +47 -0
  584. package/dist/theme/context.js.map +1 -0
  585. package/dist/theme/create-theme.d.ts +60 -0
  586. package/dist/theme/create-theme.js +47 -0
  587. package/dist/theme/create-theme.js.map +1 -0
  588. package/dist/theme/css.js +54 -0
  589. package/dist/theme/css.js.map +1 -0
  590. package/dist/theme/parse-palettes.js +40 -0
  591. package/dist/theme/parse-palettes.js.map +1 -0
  592. package/dist/theme/scheme.d.ts +6 -0
  593. package/dist/theme/scheme.js +118 -0
  594. package/dist/theme/scheme.js.map +1 -0
  595. package/dist/theme/state.d.ts +38 -0
  596. package/dist/theme/state.js +93 -0
  597. package/dist/theme/state.js.map +1 -0
  598. package/dist/theme/storage.js +21 -0
  599. package/dist/theme/storage.js.map +1 -0
  600. package/dist/tokens/breakpoints.d.ts +15 -0
  601. package/dist/tokens/breakpoints.js +16 -0
  602. package/dist/tokens/breakpoints.js.map +1 -0
  603. package/dist/tokens/color.d.ts +104 -0
  604. package/dist/tokens/color.js +147 -0
  605. package/dist/tokens/color.js.map +1 -0
  606. package/dist/tokens/component.d.ts +110 -0
  607. package/dist/tokens/component.js +67 -0
  608. package/dist/tokens/component.js.map +1 -0
  609. package/dist/tokens/density.d.ts +20 -0
  610. package/dist/tokens/density.js +27 -0
  611. package/dist/tokens/density.js.map +1 -0
  612. package/dist/tokens/elevation.d.ts +44 -0
  613. package/dist/tokens/elevation.js +45 -0
  614. package/dist/tokens/elevation.js.map +1 -0
  615. package/dist/tokens/motion.d.ts +79 -0
  616. package/dist/tokens/motion.js +126 -0
  617. package/dist/tokens/motion.js.map +1 -0
  618. package/dist/tokens/shape.d.ts +22 -0
  619. package/dist/tokens/shape.js +22 -0
  620. package/dist/tokens/shape.js.map +1 -0
  621. package/dist/tokens/spring-velocity.d.ts +19 -0
  622. package/dist/tokens/spring-velocity.js +44 -0
  623. package/dist/tokens/spring-velocity.js.map +1 -0
  624. package/dist/tokens/state.d.ts +18 -0
  625. package/dist/tokens/state.js +19 -0
  626. package/dist/tokens/state.js.map +1 -0
  627. package/dist/tokens/typography.d.ts +64 -0
  628. package/dist/tokens/typography.js +60 -0
  629. package/dist/tokens/typography.js.map +1 -0
  630. package/dist/tokens/z-index.d.ts +17 -0
  631. package/dist/tokens/z-index.js +18 -0
  632. package/dist/tokens/z-index.js.map +1 -0
  633. package/dist/utils/announce.js +51 -0
  634. package/dist/utils/announce.js.map +1 -0
  635. package/dist/utils/assert-collection-children.js +26 -0
  636. package/dist/utils/assert-collection-children.js.map +1 -0
  637. package/dist/utils/closed-by.d.ts +9 -0
  638. package/dist/utils/closed-by.js +12 -0
  639. package/dist/utils/closed-by.js.map +1 -0
  640. package/dist/utils/cn.d.ts +31 -0
  641. package/dist/utils/cn.js +37 -0
  642. package/dist/utils/cn.js.map +1 -0
  643. package/dist/utils/composite-keys.js +32 -0
  644. package/dist/utils/composite-keys.js.map +1 -0
  645. package/dist/utils/focus-visible.js +14 -0
  646. package/dist/utils/focus-visible.js.map +1 -0
  647. package/dist/utils/focus.js +51 -0
  648. package/dist/utils/focus.js.map +1 -0
  649. package/dist/utils/focusable-disabled.js +12 -0
  650. package/dist/utils/focusable-disabled.js.map +1 -0
  651. package/dist/utils/keep-pressed-in-place.d.ts +60 -0
  652. package/dist/utils/keep-pressed-in-place.js +127 -0
  653. package/dist/utils/keep-pressed-in-place.js.map +1 -0
  654. package/dist/utils/load-on-demand.js +111 -0
  655. package/dist/utils/load-on-demand.js.map +1 -0
  656. package/dist/utils/merge-data-tokens.d.ts +9 -0
  657. package/dist/utils/merge-data-tokens.js +15 -0
  658. package/dist/utils/merge-data-tokens.js.map +1 -0
  659. package/dist/utils/natural-size.js +53 -0
  660. package/dist/utils/natural-size.js.map +1 -0
  661. package/dist/utils/nearest-reveal.js +28 -0
  662. package/dist/utils/nearest-reveal.js.map +1 -0
  663. package/dist/utils/placement.js +14 -0
  664. package/dist/utils/placement.js.map +1 -0
  665. package/dist/utils/radio-group-keys.js +74 -0
  666. package/dist/utils/radio-group-keys.js.map +1 -0
  667. package/dist/utils/rendered-description.js +17 -0
  668. package/dist/utils/rendered-description.js.map +1 -0
  669. package/dist/utils/root-props.d.ts +103 -0
  670. package/dist/utils/root-props.js +51 -0
  671. package/dist/utils/root-props.js.map +1 -0
  672. package/dist/utils/search.d.ts +11 -0
  673. package/dist/utils/search.js +18 -0
  674. package/dist/utils/search.js.map +1 -0
  675. package/dist/utils/shortcut.js +20 -0
  676. package/dist/utils/shortcut.js.map +1 -0
  677. package/dist/utils/split-data-attributes.d.ts +12 -0
  678. package/dist/utils/split-data-attributes.js +20 -0
  679. package/dist/utils/split-data-attributes.js.map +1 -0
  680. package/dist/utils/toolbar-keys.js +28 -0
  681. package/dist/utils/toolbar-keys.js.map +1 -0
  682. package/dist/utils/tv.d.ts +7 -0
  683. package/dist/utils/tv.js +9 -0
  684. package/dist/utils/tv.js.map +1 -0
  685. package/dist/utils/typeahead.js +64 -0
  686. package/dist/utils/typeahead.js.map +1 -0
  687. package/dist/utils/warn-once.js +30 -0
  688. package/dist/utils/warn-once.js.map +1 -0
  689. package/dist/vendor/material-color-utilities/blend/blend.js +88 -0
  690. package/dist/vendor/material-color-utilities/blend/blend.js.map +1 -0
  691. package/dist/vendor/material-color-utilities/contrast/contrast.js +131 -0
  692. package/dist/vendor/material-color-utilities/contrast/contrast.js.map +1 -0
  693. package/dist/vendor/material-color-utilities/dislike/dislike_analyzer.js +58 -0
  694. package/dist/vendor/material-color-utilities/dislike/dislike_analyzer.js.map +1 -0
  695. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2021.js +620 -0
  696. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2021.js.map +1 -0
  697. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2025.js +786 -0
  698. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2025.js.map +1 -0
  699. package/dist/vendor/material-color-utilities/dynamiccolor/contrast_curve.js +59 -0
  700. package/dist/vendor/material-color-utilities/dynamiccolor/contrast_curve.js.map +1 -0
  701. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_color.js +420 -0
  702. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_color.js.map +1 -0
  703. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_scheme.js +701 -0
  704. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_scheme.js.map +1 -0
  705. package/dist/vendor/material-color-utilities/dynamiccolor/material_dynamic_colors.js +374 -0
  706. package/dist/vendor/material-color-utilities/dynamiccolor/material_dynamic_colors.js.map +1 -0
  707. package/dist/vendor/material-color-utilities/dynamiccolor/tone_delta_pair.js +65 -0
  708. package/dist/vendor/material-color-utilities/dynamiccolor/tone_delta_pair.js.map +1 -0
  709. package/dist/vendor/material-color-utilities/dynamiccolor/variant.js +38 -0
  710. package/dist/vendor/material-color-utilities/dynamiccolor/variant.js.map +1 -0
  711. package/dist/vendor/material-color-utilities/hct/cam16.js +309 -0
  712. package/dist/vendor/material-color-utilities/hct/cam16.js.map +1 -0
  713. package/dist/vendor/material-color-utilities/hct/hct.js +148 -0
  714. package/dist/vendor/material-color-utilities/hct/hct.js.map +1 -0
  715. package/dist/vendor/material-color-utilities/hct/hct_solver.js +660 -0
  716. package/dist/vendor/material-color-utilities/hct/hct_solver.js.map +1 -0
  717. package/dist/vendor/material-color-utilities/hct/viewing_conditions.js +117 -0
  718. package/dist/vendor/material-color-utilities/hct/viewing_conditions.js.map +1 -0
  719. package/dist/vendor/material-color-utilities/index.js +51 -0
  720. package/dist/vendor/material-color-utilities/index.js.map +1 -0
  721. package/dist/vendor/material-color-utilities/palettes/core_palette.js +22 -0
  722. package/dist/vendor/material-color-utilities/palettes/core_palette.js.map +1 -0
  723. package/dist/vendor/material-color-utilities/palettes/tonal_palette.js +134 -0
  724. package/dist/vendor/material-color-utilities/palettes/tonal_palette.js.map +1 -0
  725. package/dist/vendor/material-color-utilities/scheme/scheme.js +21 -0
  726. package/dist/vendor/material-color-utilities/scheme/scheme.js.map +1 -0
  727. package/dist/vendor/material-color-utilities/scheme/scheme_android.js +21 -0
  728. package/dist/vendor/material-color-utilities/scheme/scheme_android.js.map +1 -0
  729. package/dist/vendor/material-color-utilities/scheme/scheme_content.js +22 -0
  730. package/dist/vendor/material-color-utilities/scheme/scheme_content.js.map +1 -0
  731. package/dist/vendor/material-color-utilities/scheme/scheme_expressive.js +38 -0
  732. package/dist/vendor/material-color-utilities/scheme/scheme_expressive.js.map +1 -0
  733. package/dist/vendor/material-color-utilities/scheme/scheme_fidelity.js +22 -0
  734. package/dist/vendor/material-color-utilities/scheme/scheme_fidelity.js.map +1 -0
  735. package/dist/vendor/material-color-utilities/scheme/scheme_fruit_salad.js +22 -0
  736. package/dist/vendor/material-color-utilities/scheme/scheme_fruit_salad.js.map +1 -0
  737. package/dist/vendor/material-color-utilities/scheme/scheme_monochrome.js +22 -0
  738. package/dist/vendor/material-color-utilities/scheme/scheme_monochrome.js.map +1 -0
  739. package/dist/vendor/material-color-utilities/scheme/scheme_neutral.js +36 -0
  740. package/dist/vendor/material-color-utilities/scheme/scheme_neutral.js.map +1 -0
  741. package/dist/vendor/material-color-utilities/scheme/scheme_rainbow.js +22 -0
  742. package/dist/vendor/material-color-utilities/scheme/scheme_rainbow.js.map +1 -0
  743. package/dist/vendor/material-color-utilities/scheme/scheme_tonal_spot.js +41 -0
  744. package/dist/vendor/material-color-utilities/scheme/scheme_tonal_spot.js.map +1 -0
  745. package/dist/vendor/material-color-utilities/scheme/scheme_vibrant.js +39 -0
  746. package/dist/vendor/material-color-utilities/scheme/scheme_vibrant.js.map +1 -0
  747. package/dist/vendor/material-color-utilities/score/score.js +115 -0
  748. package/dist/vendor/material-color-utilities/score/score.js.map +1 -0
  749. package/dist/vendor/material-color-utilities/temperature/temperature_cache.js +227 -0
  750. package/dist/vendor/material-color-utilities/temperature/temperature_cache.js.map +1 -0
  751. package/dist/vendor/material-color-utilities/utils/color_utils.js +246 -0
  752. package/dist/vendor/material-color-utilities/utils/color_utils.js.map +1 -0
  753. package/dist/vendor/material-color-utilities/utils/image_utils.js +21 -0
  754. package/dist/vendor/material-color-utilities/utils/image_utils.js.map +1 -0
  755. package/dist/vendor/material-color-utilities/utils/math_utils.js +119 -0
  756. package/dist/vendor/material-color-utilities/utils/math_utils.js.map +1 -0
  757. package/dist/vendor/material-color-utilities/utils/string_utils.js +74 -0
  758. package/dist/vendor/material-color-utilities/utils/string_utils.js.map +1 -0
  759. package/dist/vendor/material-color-utilities/utils/theme_utils.js +24 -0
  760. package/dist/vendor/material-color-utilities/utils/theme_utils.js.map +1 -0
  761. package/package.json +114 -3
@@ -0,0 +1,135 @@
1
+ import { densityAttribute } from "../../tokens/density.js";
2
+ import { cn } from "../../utils/cn.js";
3
+ import { mergeDataTokens } from "../../utils/merge-data-tokens.js";
4
+ import { ErrorText, FieldErrorIcon, FieldLabel, SupportingText } from "../../primitives/Field.js";
5
+ import { textFieldStyles } from "../text-field/text-field-styles.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/components/select/field-shell.tsx
8
+ function fieldState({ disabled, invalid, focused, hovered }) {
9
+ if (disabled) return "disabled";
10
+ if (invalid) return focused ? "error-focus" : hovered ? "error-hover" : "error";
11
+ return focused ? "focus" : hovered ? "hover" : "rest";
12
+ }
13
+ /** Material Symbols `arrow_drop_down`; it turns over while the menu is open (Compose). */
14
+ function DropdownArrow({ open }) {
15
+ return /* @__PURE__ */ jsx("svg", {
16
+ viewBox: "0 -960 960 960",
17
+ fill: "currentColor",
18
+ "aria-hidden": "true",
19
+ "data-open": open || void 0,
20
+ className: "transition-transform [transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)] [transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)] data-open:rotate-180 motion-reduce:transition-none",
21
+ children: /* @__PURE__ */ jsx("path", { d: "M480-360 280-560h400L480-360Z" })
22
+ });
23
+ }
24
+ /**
25
+ * The M3 text field's look for fields that aren't a plain input: the filled or outlined
26
+ * container, floating label, outline notch, active indicator, supporting text and error,
27
+ * with the same tokens and `data-field-state` machine as `TextField`.
28
+ */
29
+ function FieldShell({ variant, density, label, labelProps, required, state, floated, open, leadingIcon, trailing, trailingAction, errorIcon, errorIconLabel, readOnly = false, children, supportingText, descriptionProps, errorText, errorMessageProps, showError, containerRef, containerProps, onContainerPointerDown, rootProps, rootRef, className, classNames, style, multiline = false }) {
30
+ const hasLabel = label !== void 0 && label !== null;
31
+ const styles = textFieldStyles({
32
+ variant,
33
+ hasLabel,
34
+ hasLeadingIcon: Boolean(leadingIcon),
35
+ hasTrailingIcon: true,
36
+ multiline
37
+ });
38
+ const requiredMark = required ? " *" : null;
39
+ const showErrorIcon = state.startsWith("error") && errorIcon !== false;
40
+ return /* @__PURE__ */ jsxs("div", {
41
+ ...rootProps,
42
+ ref: rootRef,
43
+ style,
44
+ className: styles.root({ class: cn(classNames?.root, className) }),
45
+ "data-tokens": mergeDataTokens("md-comp-text-field", rootProps),
46
+ "data-variant": variant,
47
+ ...densityAttribute(density),
48
+ "data-field-state": state,
49
+ "data-focused": state === "focus" || state === "error-focus" || void 0,
50
+ "data-invalid": state.startsWith("error") || void 0,
51
+ "data-disabled": state === "disabled" || void 0,
52
+ "data-readonly": readOnly || void 0,
53
+ "data-floated": floated || void 0,
54
+ "data-open": open || void 0,
55
+ children: [/* @__PURE__ */ jsxs("div", {
56
+ ...containerProps,
57
+ ref: containerRef,
58
+ onPointerDown: onContainerPointerDown,
59
+ "data-slot": "container",
60
+ className: styles.container({ class: cn("cursor-pointer", classNames?.container) }),
61
+ children: [
62
+ variant === "outlined" && /* @__PURE__ */ jsx("fieldset", {
63
+ "aria-hidden": "true",
64
+ "data-slot": "outline",
65
+ className: styles.outline({ class: classNames?.outline }),
66
+ children: hasLabel && /* @__PURE__ */ jsx("legend", {
67
+ className: styles.notch(),
68
+ children: /* @__PURE__ */ jsx("span", {
69
+ className: styles.notchClip(),
70
+ children: /* @__PURE__ */ jsxs("span", {
71
+ className: styles.notchText(),
72
+ children: [label, requiredMark]
73
+ })
74
+ })
75
+ })
76
+ }),
77
+ leadingIcon && /* @__PURE__ */ jsx("span", {
78
+ "aria-hidden": "true",
79
+ "data-slot": "leading-icon",
80
+ className: styles.icon({ class: cn(styles.leadingIcon(), classNames?.leadingIcon) }),
81
+ children: leadingIcon
82
+ }),
83
+ /* @__PURE__ */ jsx("div", {
84
+ className: styles.field({ class: classNames?.field }),
85
+ children
86
+ }),
87
+ trailingAction ? /* @__PURE__ */ jsx("span", {
88
+ "data-slot": "trailing-action",
89
+ className: styles.icon(),
90
+ children: trailingAction
91
+ }) : null,
92
+ showErrorIcon ? /* @__PURE__ */ jsx("span", {
93
+ className: styles.icon({ class: styles.trailingIcon() }),
94
+ children: /* @__PURE__ */ jsx(FieldErrorIcon, {
95
+ label: errorIconLabel,
96
+ icon: errorIcon,
97
+ className: styles.errorIcon({ class: classNames?.errorIcon })
98
+ })
99
+ }) : null,
100
+ /* @__PURE__ */ jsx("span", {
101
+ "data-slot": "trailing-icon",
102
+ className: styles.icon({ class: cn(styles.trailingIcon(), classNames?.trailingIcon) }),
103
+ children: trailing
104
+ }),
105
+ hasLabel && /* @__PURE__ */ jsxs(FieldLabel, {
106
+ ...labelProps,
107
+ "data-slot": "label",
108
+ className: styles.label({ class: classNames?.label }),
109
+ children: [label, requiredMark]
110
+ }),
111
+ /* @__PURE__ */ jsx("span", {
112
+ "aria-hidden": "true",
113
+ "data-slot": "active-indicator",
114
+ className: styles.indicator({ class: classNames?.activeIndicator })
115
+ })
116
+ ]
117
+ }), (supportingText || showError) && /* @__PURE__ */ jsxs("div", {
118
+ className: styles.supporting(),
119
+ children: [supportingText && /* @__PURE__ */ jsx(SupportingText, {
120
+ ...descriptionProps,
121
+ "data-slot": "supporting-text",
122
+ className: cn(styles.supportingText({ class: cn(styles.supportingTextColor(), classNames?.supportingText) }), showError && "sr-only"),
123
+ children: supportingText
124
+ }), showError && /* @__PURE__ */ jsx(ErrorText, {
125
+ ...errorMessageProps,
126
+ className: styles.supportingText({ class: classNames?.errorText }),
127
+ children: errorText
128
+ })]
129
+ })]
130
+ });
131
+ }
132
+ //#endregion
133
+ export { DropdownArrow, FieldShell, fieldState };
134
+
135
+ //# sourceMappingURL=field-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-shell.js","names":[],"sources":["../../../src/components/select/field-shell.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes, PointerEvent, ReactNode, Ref } from 'react';\nimport { ErrorText, FieldErrorIcon, FieldLabel, SupportingText } from '../../primitives/Field';\nimport { densityAttribute, type Density } from '../../tokens/density';\nimport { cn } from '../../utils/cn';\nimport { textFieldStyles, type TextFieldVariant } from '../text-field/text-field-styles';\nimport { mergeDataTokens } from '../../utils/merge-data-tokens';\n\n/** The text field's one state at a time, in priority order (see text-field-styles). */\nexport type FieldState =\n 'disabled' | 'error-focus' | 'error-hover' | 'error' | 'focus' | 'hover' | 'rest';\n\nexport function fieldState({\n disabled,\n invalid,\n focused,\n hovered,\n}: {\n disabled: boolean;\n invalid: boolean;\n focused: boolean;\n hovered: boolean;\n}): FieldState {\n if (disabled) return 'disabled';\n if (invalid) return focused ? 'error-focus' : hovered ? 'error-hover' : 'error';\n return focused ? 'focus' : hovered ? 'hover' : 'rest';\n}\n\n/** Material Symbols `arrow_drop_down`; it turns over while the menu is open (Compose). */\nexport function DropdownArrow({ open }: { open: boolean }) {\n return (\n <svg\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n data-open={open || undefined}\n className=\"transition-transform [transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)] [transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)] data-open:rotate-180 motion-reduce:transition-none\"\n >\n <path d=\"M480-360 280-560h400L480-360Z\" />\n </svg>\n );\n}\n\nexport interface FieldShellClassNames {\n /** The root element, merged with `className`. */\n root?: string;\n /** The filled or outlined container around the label, value and icons. */\n container?: string;\n /** The floating label. */\n label?: string;\n /** The row holding the field's value (the button, or the chips and input). */\n field?: string;\n /** The leading icon's 48px box. */\n leadingIcon?: string;\n /** The trailing box holding the arrow (and the error icon). */\n trailingIcon?: string;\n /** The helper text below the field. */\n supportingText?: string;\n /** The error message below the field. */\n errorText?: string;\n /** The built-in error icon. */\n errorIcon?: string;\n /** The outlined field's border (a `<fieldset>`, notched for the floated label). */\n outline?: string;\n /** The filled field's active indicator, the line along the container's bottom. */\n activeIndicator?: string;\n}\n\nexport interface FieldShellProps {\n variant: TextFieldVariant;\n /** The field's own density; left out, it inherits the theme's. */\n density?: Density | undefined;\n label: ReactNode;\n labelProps: HTMLAttributes<HTMLElement>;\n required?: boolean | undefined;\n state: FieldState;\n /** The label sits above the content (a value, a placeholder, focus or an open menu). */\n floated: boolean;\n open: boolean;\n leadingIcon?: ReactNode;\n /** The arrow, or a button holding it. */\n trailing: ReactNode;\n /**\n * An icon button just before the error icon and `trailing` (the Autocomplete's clear\n * button), in its own 48px box beside the value row like a text field's trailing icon, so\n * it never makes the field taller than its 56px container.\n */\n trailingAction?: ReactNode;\n /**\n * The icon shown before `trailing` while the field is invalid (M3 strongly recommends one);\n * `undefined` for the default `error` icon, `false` for none.\n */\n errorIcon?: ReactNode | false;\n /** The error icon's accessible name (M3: \"Error\"). */\n errorIconLabel: string;\n readOnly?: boolean | undefined;\n /** What the field holds: the Select's button or the Autocomplete's chips and input. */\n children: ReactNode;\n supportingText?: ReactNode;\n descriptionProps: HTMLAttributes<HTMLElement>;\n errorText?: ReactNode;\n errorMessageProps: HTMLAttributes<HTMLElement>;\n showError: boolean;\n containerRef?: Ref<HTMLDivElement>;\n containerProps?: HTMLAttributes<HTMLDivElement>;\n onContainerPointerDown?: (event: PointerEvent<HTMLDivElement>) => void;\n rootProps?: Record<string, unknown>;\n rootRef?: Ref<HTMLDivElement>;\n className?: string | undefined;\n classNames?: FieldShellClassNames | undefined;\n style?: CSSProperties | undefined;\n /** Grows with the content (input chips), instead of the field's fixed 56px row. */\n multiline?: boolean;\n}\n\n/**\n * The M3 text field's look for fields that aren't a plain input: the filled or outlined\n * container, floating label, outline notch, active indicator, supporting text and error,\n * with the same tokens and `data-field-state` machine as `TextField`.\n */\nexport function FieldShell({\n variant,\n density,\n label,\n labelProps,\n required,\n state,\n floated,\n open,\n leadingIcon,\n trailing,\n trailingAction,\n errorIcon,\n errorIconLabel,\n readOnly = false,\n children,\n supportingText,\n descriptionProps,\n errorText,\n errorMessageProps,\n showError,\n containerRef,\n containerProps,\n onContainerPointerDown,\n rootProps,\n rootRef,\n className,\n classNames,\n style,\n multiline = false,\n}: FieldShellProps) {\n const hasLabel = label !== undefined && label !== null;\n const styles = textFieldStyles({\n variant,\n hasLabel,\n hasLeadingIcon: Boolean(leadingIcon),\n hasTrailingIcon: true,\n multiline,\n });\n // Part of the accessible name (M3); the notch's copy is hidden with the fieldset.\n const requiredMark = required ? ' *' : null;\n const showErrorIcon = state.startsWith('error') && errorIcon !== false;\n\n return (\n <div\n {...rootProps}\n ref={rootRef}\n style={style}\n className={styles.root({ class: cn(classNames?.root, className) })}\n data-tokens={mergeDataTokens('md-comp-text-field', rootProps)}\n data-variant={variant}\n {...densityAttribute(density)}\n data-field-state={state}\n data-focused={state === 'focus' || state === 'error-focus' || undefined}\n data-invalid={state.startsWith('error') || undefined}\n data-disabled={state === 'disabled' || undefined}\n data-readonly={readOnly || undefined}\n data-floated={floated || undefined}\n data-open={open || undefined}\n >\n <div\n {...containerProps}\n ref={containerRef}\n onPointerDown={onContainerPointerDown}\n data-slot=\"container\"\n className={styles.container({ class: cn('cursor-pointer', classNames?.container) })}\n >\n {variant === 'outlined' && (\n <fieldset\n aria-hidden=\"true\"\n data-slot=\"outline\"\n className={styles.outline({ class: classNames?.outline })}\n >\n {hasLabel && (\n <legend className={styles.notch()}>\n <span className={styles.notchClip()}>\n <span className={styles.notchText()}>\n {label}\n {requiredMark}\n </span>\n </span>\n </legend>\n )}\n </fieldset>\n )}\n {leadingIcon && (\n <span\n aria-hidden=\"true\"\n data-slot=\"leading-icon\"\n className={styles.icon({ class: cn(styles.leadingIcon(), classNames?.leadingIcon) })}\n >\n {leadingIcon}\n </span>\n )}\n <div className={styles.field({ class: classNames?.field })}>{children}</div>\n {trailingAction ? (\n <span data-slot=\"trailing-action\" className={styles.icon()}>\n {trailingAction}\n </span>\n ) : null}\n {showErrorIcon ? (\n <span className={styles.icon({ class: styles.trailingIcon() })}>\n <FieldErrorIcon\n label={errorIconLabel}\n icon={errorIcon}\n className={styles.errorIcon({ class: classNames?.errorIcon })}\n />\n </span>\n ) : null}\n <span\n data-slot=\"trailing-icon\"\n className={styles.icon({ class: cn(styles.trailingIcon(), classNames?.trailingIcon) })}\n >\n {trailing}\n </span>\n {hasLabel && (\n <FieldLabel\n {...labelProps}\n data-slot=\"label\"\n className={styles.label({ class: classNames?.label })}\n >\n {label}\n {requiredMark}\n </FieldLabel>\n )}\n <span\n aria-hidden=\"true\"\n data-slot=\"active-indicator\"\n className={styles.indicator({ class: classNames?.activeIndicator })}\n />\n </div>\n {(supportingText || showError) && (\n <div className={styles.supporting()}>\n {supportingText && (\n <SupportingText\n {...descriptionProps}\n data-slot=\"supporting-text\"\n className={cn(\n styles.supportingText({\n class: cn(styles.supportingTextColor(), classNames?.supportingText),\n }),\n showError && 'sr-only',\n )}\n >\n {supportingText}\n </SupportingText>\n )}\n {showError && (\n <ErrorText\n {...errorMessageProps}\n className={styles.supportingText({ class: classNames?.errorText })}\n >\n {errorText}\n </ErrorText>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { Density } from "../../tokens/density.js";
2
+ import { JSX, ReactElement, ReactNode, RefObject } from "react";
3
+ import "react-aria";
4
+ import { Key as Key$1, OverlayTriggerState } from "react-stately";
5
+ //#region src/components/select/option-list.d.ts
6
+ /** Props of an option in a `Select` or `Autocomplete`; the React `key` identifies it. */
7
+ export interface OptionItemProps {
8
+ /** The label. */
9
+ children: ReactNode;
10
+ /** Plain-text label for typeahead, filtering and the field, when `children` isn't a string. */
11
+ textValue?: string;
12
+ /** Icon (or avatar, flag…) before the label. */
13
+ leadingIcon?: ReactNode;
14
+ /** Second line of text. */
15
+ description?: ReactNode;
16
+ /** Short text at the end, e.g. a dialling code or a count. */
17
+ trailing?: ReactNode;
18
+ /** Accessible name when the label isn't plain text. */
19
+ 'aria-label'?: string;
20
+ }
21
+ /** A group of options with an optional heading. */
22
+ export interface OptionSectionProps {
23
+ /** Heading shown above the options. */
24
+ title?: ReactNode;
25
+ /** Accessible name for the group when it has no `title`. */
26
+ 'aria-label'?: string;
27
+ children: ReactElement<OptionItemProps> | ReactElement<OptionItemProps>[];
28
+ }
29
+ /** An option in a `Select` (a React Stately collection item: identify it with `key`). */
30
+ export declare const SelectItem: (props: OptionItemProps) => JSX.Element;
31
+ /** A group of options in a `Select`, under an optional heading. */
32
+ export declare const SelectSection: (props: OptionSectionProps) => JSX.Element;
33
+ /** An option in an `Autocomplete` (a React Stately collection item: identify it with `key`). */
34
+ export declare const AutocompleteItem: (props: OptionItemProps) => JSX.Element;
35
+ /** A group of options in an `Autocomplete`, under an optional heading. */
36
+ export declare const AutocompleteSection: (props: OptionSectionProps) => JSX.Element;
37
+ export interface OptionListClassNames {
38
+ /** The list's surface. */
39
+ list?: string;
40
+ /** Each option. */
41
+ item?: string;
42
+ /** Each option's leading icon, or the check shown on a chosen option. */
43
+ icon?: string;
44
+ /** Each option's `description` line. */
45
+ description?: string;
46
+ /** Each option's `trailing` text. */
47
+ trailing?: string;
48
+ /** Each section's heading. */
49
+ heading?: string;
50
+ /** The divider between sections. */
51
+ divider?: string;
52
+ /** The text shown when no option matches. */
53
+ empty?: string;
54
+ }
55
+ /**
56
+ * The list's popover: anchored to the field, at least as wide as it (Compose's
57
+ * `exposedDropdownSize`), above it when there's no room below, with the menu's open and
58
+ * close motion: revealed from the field's edge as it fades in (M3 motion avoids scale). `nonModal` keeps an `Autocomplete`'s input usable while it's open.
59
+ */
60
+ export declare function OptionPopover({ state, triggerRef, popoverRef, nonModal, onPressOutside, minWidth, density, children }: {
61
+ /** The open state the popover follows (from React Stately's `useOverlayTriggerState`). */
62
+ state: OverlayTriggerState;
63
+ /** The field the popover is placed under and matches the width of. */
64
+ triggerRef: RefObject<HTMLElement | null>;
65
+ /** Ref to the popover's surface. */
66
+ popoverRef: RefObject<HTMLDivElement | null>;
67
+ /**
68
+ * Keeps the page interactive while open (no underlay, focus stays in the field), as an
69
+ * editable field's menu needs. @default false
70
+ */
71
+ nonModal?: boolean;
72
+ /** The least width, when the field is narrower (a searchable menu needs room to type). */
73
+ minWidth?: number;
74
+ /** A press outside the menu and the field closes it (modal menus only). */
75
+ onPressOutside?: (() => void) | undefined;
76
+ /** The field's own density, which its menu takes; left out, the theme's. */
77
+ density?: Density | undefined;
78
+ children: ReactNode;
79
+ }): JSX.Element | null;
80
+ //#endregion
81
+ //# sourceMappingURL=option-list.d.ts.map
@@ -0,0 +1,291 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.js";
3
+ import { useM3Spring } from "../../motion/use-m3-spring.js";
4
+ import { usePresence } from "../../primitives/use-presence.js";
5
+ import { LazyLoadingIndicator } from "../loading-indicator/lazy-loading-indicator.js";
6
+ import { Overlay as Overlay$1 } from "../../primitives/Overlay.js";
7
+ import { FOCUSABLE_DISABLED_OPTIONS } from "../../utils/focusable-disabled.js";
8
+ import { useTypeaheadDelegate } from "../../utils/typeahead.js";
9
+ import { useRevealEntering } from "../menu/use-reveal-entering.js";
10
+ import { menuStyles, persistentScrollbar } from "../menu/menu-styles.js";
11
+ import { useEffect, useLayoutEffect, useRef, useState } from "react";
12
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
+ import { animate, useReducedMotion } from "motion/react";
14
+ import { DismissButton, mergeProps, useHover, useListBox, useListBoxSection, useOption, usePopover } from "react-aria";
15
+ import { Item, Section } from "react-stately";
16
+ //#region src/components/select/option-list.tsx
17
+ /** An option in a `Select` (a React Stately collection item: identify it with `key`). */
18
+ const SelectItem = Item;
19
+ /** A group of options in a `Select`, under an optional heading. */
20
+ const SelectSection = Section;
21
+ /** An option in an `Autocomplete` (a React Stately collection item: identify it with `key`). */
22
+ const AutocompleteItem = Item;
23
+ /** A group of options in an `Autocomplete`, under an optional heading. */
24
+ const AutocompleteSection = Section;
25
+ /** Material Symbols `check`, shown on chosen options (as M3 menus show selection). */
26
+ const CheckIcon = () => /* @__PURE__ */ jsx("svg", {
27
+ viewBox: "0 -960 960 960",
28
+ fill: "currentColor",
29
+ "aria-hidden": "true",
30
+ children: /* @__PURE__ */ jsx("path", { d: "M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z" })
31
+ });
32
+ /**
33
+ * The options of a `Select` or `Autocomplete`, drawn exactly as the library's M3 menu: its
34
+ * surface, 44px items (4px less per density step), `tertiary-container` for chosen options
35
+ * with a check, sections with headings and dividers, state layers and the inset focus ring.
36
+ */
37
+ function OptionList({ listBoxProps, state, listBoxRef, emptyLabel, loading = false, loadingLabel, isBlocked, embedded = false, animateFiltering = false, classNames }) {
38
+ const typeaheadDelegate = useTypeaheadDelegate(state, listBoxRef);
39
+ const { listBoxProps: props } = useListBox({
40
+ ...listBoxProps,
41
+ keyboardDelegate: listBoxProps.keyboardDelegate ?? typeaheadDelegate,
42
+ shouldFocusWrap: true
43
+ }, state, listBoxRef);
44
+ useFilterMotion(listBoxRef, state.collection, animateFiltering);
45
+ const menu = menuStyles({
46
+ variant: "standard",
47
+ groupPosition: "only"
48
+ });
49
+ const nodes = [...state.collection];
50
+ const isEmpty = ![...state.collection.getKeys()].some((key) => state.collection.getItem(key)?.type === "item");
51
+ const itemKeys = [...state.collection.getKeys()].filter((key) => state.collection.getItem(key)?.type === "item");
52
+ const first = nodes[0];
53
+ const itemOptions = {
54
+ state,
55
+ isBlocked,
56
+ topKey: first?.type === "section" && first.rendered ? null : itemKeys[0],
57
+ bottomKey: loading ? null : itemKeys.at(-1),
58
+ classNames
59
+ };
60
+ return /* @__PURE__ */ jsxs("div", {
61
+ "data-tokens": "md-comp-menus",
62
+ "data-variant": "standard",
63
+ className: cn(!embedded && menu.group(), "flex max-h-[inherit] min-h-0 flex-col overflow-hidden", classNames?.list),
64
+ children: [/* @__PURE__ */ jsx("ul", {
65
+ ...props,
66
+ ref: listBoxRef,
67
+ className: cn("min-h-0 flex-1 overflow-y-auto outline-none", persistentScrollbar),
68
+ children: nodes.map((node, index) => node.type === "section" ? /* @__PURE__ */ jsx(OptionSection, {
69
+ section: node,
70
+ divided: index > 0,
71
+ ...itemOptions
72
+ }, node.key) : /* @__PURE__ */ jsx(OptionItem, {
73
+ item: node,
74
+ ...itemOptions
75
+ }, node.key))
76
+ }), loading && loadingLabel ? /* @__PURE__ */ jsx("div", {
77
+ className: "flex min-h-[calc(44px+var(--md-sys-density,0)*4px)] items-center justify-center",
78
+ children: /* @__PURE__ */ jsx(LazyLoadingIndicator, {
79
+ "aria-label": loadingLabel,
80
+ className: "size-[36px]"
81
+ })
82
+ }) : isEmpty ? /* @__PURE__ */ jsx("p", {
83
+ role: "status",
84
+ className: cn("px-[12px] py-[12px] text-label-large text-on-surface-variant", classNames?.empty),
85
+ children: emptyLabel
86
+ }) : null]
87
+ });
88
+ }
89
+ /**
90
+ * FLIP for a filtered list: after the options change, each one still there starts where it
91
+ * was and springs to its new place (default spatial spring). Positions are read only when
92
+ * the collection changes; nothing moves under reduced motion.
93
+ */
94
+ function useFilterMotion(listRef, collection, enabled) {
95
+ const spring = useM3Spring("spatial", "default");
96
+ const reducedMotion = useReducedMotion();
97
+ const positions = useRef(/* @__PURE__ */ new Map());
98
+ useLayoutEffect(() => {
99
+ const list = listRef.current;
100
+ if (!enabled || !list) return;
101
+ const previous = positions.current;
102
+ const next = /* @__PURE__ */ new Map();
103
+ for (const item of list.querySelectorAll("[role=\"option\"][data-key]")) {
104
+ const key = item.dataset.key;
105
+ const top = item.offsetTop;
106
+ next.set(key, top);
107
+ const from = previous.get(key);
108
+ if (from === void 0 || from === top || reducedMotion) continue;
109
+ animate(item, { y: [from - top, 0] }, spring);
110
+ }
111
+ positions.current = next;
112
+ }, [
113
+ collection,
114
+ enabled,
115
+ listRef,
116
+ reducedMotion,
117
+ spring
118
+ ]);
119
+ }
120
+ function OptionSection({ section, divided, ...itemOptions }) {
121
+ const { state, classNames } = itemOptions;
122
+ const { itemProps, headingProps, groupProps } = useListBoxSection({
123
+ heading: section.rendered,
124
+ "aria-label": section["aria-label"]
125
+ });
126
+ const menu = menuStyles({ variant: "standard" });
127
+ return /* @__PURE__ */ jsxs("li", {
128
+ ...itemProps,
129
+ children: [
130
+ divided ? /* @__PURE__ */ jsx("div", {
131
+ role: "presentation",
132
+ className: cn("mx-[8px] my-[calc(4px+var(--md-sys-density,0)*1px)] h-px bg-outline-variant", classNames?.divider)
133
+ }) : null,
134
+ section.rendered ? /* @__PURE__ */ jsx("span", {
135
+ ...headingProps,
136
+ className: menu.heading({ class: classNames?.heading }),
137
+ children: section.rendered
138
+ }) : null,
139
+ /* @__PURE__ */ jsx("ul", {
140
+ ...groupProps,
141
+ children: [...state.collection.getChildren(section.key)].map((item) => /* @__PURE__ */ jsx(OptionItem, {
142
+ item,
143
+ ...itemOptions
144
+ }, item.key))
145
+ })
146
+ ]
147
+ });
148
+ }
149
+ function OptionItem({ item, state, isBlocked, topKey, bottomKey, classNames }) {
150
+ const ref = useRef(null);
151
+ const { optionProps, isSelected, isFocusVisible } = useOption({ key: item.key }, state, ref);
152
+ const isDisabled = state.selectionManager.disabledKeys.has(item.key) || (isBlocked?.(item.key) ?? false);
153
+ const { hoverProps, isHovered } = useHover({ isDisabled });
154
+ const { leadingIcon, description, trailing } = item.props;
155
+ const menu = menuStyles({
156
+ variant: "standard",
157
+ hasDescription: Boolean(description),
158
+ itemTop: item.key === topKey ? "nested" : "plain",
159
+ itemBottom: item.key === bottomKey ? "nested" : "plain"
160
+ });
161
+ return /* @__PURE__ */ jsxs("li", {
162
+ ...mergeProps(optionProps, hoverProps),
163
+ ref,
164
+ "aria-disabled": isDisabled || void 0,
165
+ "data-key": String(item.key),
166
+ "data-tokens": "md-comp-menus",
167
+ "data-variant": "standard",
168
+ className: menu.item({ class: classNames?.item }),
169
+ "data-selected": isSelected || void 0,
170
+ "data-disabled": isDisabled || void 0,
171
+ "data-hovered": isHovered && !isDisabled || void 0,
172
+ "data-focus-visible": isFocusVisible || void 0,
173
+ children: [
174
+ leadingIcon ? /* @__PURE__ */ jsx("span", {
175
+ "aria-hidden": "true",
176
+ className: menu.icon({ class: classNames?.icon }),
177
+ children: isSelected ? /* @__PURE__ */ jsx(CheckIcon, {}) : leadingIcon
178
+ }) : /* @__PURE__ */ jsx("span", {
179
+ "aria-hidden": "true",
180
+ className: menu.selectedIcon(),
181
+ children: /* @__PURE__ */ jsx("span", {
182
+ className: menu.selectedIconInner(),
183
+ children: /* @__PURE__ */ jsx("span", {
184
+ className: menu.icon({ class: classNames?.icon }),
185
+ children: /* @__PURE__ */ jsx(CheckIcon, {})
186
+ })
187
+ })
188
+ }),
189
+ /* @__PURE__ */ jsxs("span", {
190
+ className: menu.text(),
191
+ children: [/* @__PURE__ */ jsx("span", {
192
+ className: "truncate",
193
+ children: item.rendered
194
+ }), description ? /* @__PURE__ */ jsx("span", {
195
+ className: menu.description({ class: classNames?.description }),
196
+ children: description
197
+ }) : null]
198
+ }),
199
+ trailing ? /* @__PURE__ */ jsx("span", {
200
+ "aria-hidden": "true",
201
+ className: menu.trailing({ class: cn("tabular-nums", classNames?.trailing) }),
202
+ children: trailing
203
+ }) : null
204
+ ]
205
+ });
206
+ }
207
+ /**
208
+ * The list's popover: anchored to the field, at least as wide as it (Compose's
209
+ * `exposedDropdownSize`), above it when there's no room below, with the menu's open and
210
+ * close motion: revealed from the field's edge as it fades in (M3 motion avoids scale). `nonModal` keeps an `Autocomplete`'s input usable while it's open.
211
+ */
212
+ function OptionPopover({ state, triggerRef, popoverRef, nonModal = false, onPressOutside, minWidth = 0, density, children }) {
213
+ const { isPresent, isExiting, exitProps } = usePresence(state.isOpen);
214
+ if (!isPresent) return null;
215
+ return /* @__PURE__ */ jsx(Overlay$1, {
216
+ exiting: isExiting,
217
+ disableFocusManagement: nonModal,
218
+ density,
219
+ children: /* @__PURE__ */ jsx(PopoverBody, {
220
+ state,
221
+ triggerRef,
222
+ popoverRef,
223
+ isNonModal: nonModal,
224
+ isExiting,
225
+ exitProps,
226
+ onPressOutside,
227
+ minWidth,
228
+ children
229
+ })
230
+ });
231
+ }
232
+ function PopoverBody({ state, triggerRef, popoverRef, isNonModal, isExiting, exitProps, onPressOutside, minWidth, children }) {
233
+ const { popoverProps, underlayProps, placement } = usePopover({
234
+ triggerRef,
235
+ popoverRef,
236
+ placement: "bottom start",
237
+ offset: 4,
238
+ isNonModal
239
+ }, state);
240
+ const revealRef = useRef(null);
241
+ const entering = useRevealEntering(placement, revealRef);
242
+ const [width, setWidth] = useState();
243
+ useLayoutEffect(() => {
244
+ setWidth(triggerRef.current?.getBoundingClientRect().width);
245
+ }, [triggerRef]);
246
+ useEffect(() => {
247
+ if (isNonModal || !onPressOutside) return;
248
+ const onPointerDown = (event) => {
249
+ if (popoverRef.current?.contains(event.target)) return;
250
+ const field = triggerRef.current?.getBoundingClientRect();
251
+ if (!(field !== void 0 && event.clientX >= field.left && event.clientX <= field.right && event.clientY >= field.top && event.clientY <= field.bottom)) onPressOutside();
252
+ };
253
+ document.addEventListener("pointerdown", onPointerDown, true);
254
+ return () => document.removeEventListener("pointerdown", onPointerDown, true);
255
+ }, [
256
+ isNonModal,
257
+ onPressOutside,
258
+ popoverRef,
259
+ triggerRef
260
+ ]);
261
+ const menu = menuStyles();
262
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [isNonModal ? null : /* @__PURE__ */ jsx("div", {
263
+ ...underlayProps,
264
+ className: "fixed inset-0"
265
+ }), /* @__PURE__ */ jsxs("div", {
266
+ ...popoverProps,
267
+ ref: popoverRef,
268
+ style: {
269
+ ...popoverProps.style,
270
+ minWidth: Math.max(width ?? 0, minWidth)
271
+ },
272
+ className: cn(menu.popover(), "flex max-w-[min(560px,calc(100vw-32px))] flex-col"),
273
+ children: [
274
+ isNonModal ? null : /* @__PURE__ */ jsx(DismissButton, { onDismiss: state.close }),
275
+ /* @__PURE__ */ jsx("div", {
276
+ ...exitProps,
277
+ ref: revealRef,
278
+ "data-entering": entering || void 0,
279
+ "data-exiting": isExiting || void 0,
280
+ "data-placement": placement ?? void 0,
281
+ className: cn(menu.reveal(), "min-h-0 w-auto"),
282
+ children
283
+ }),
284
+ /* @__PURE__ */ jsx(DismissButton, { onDismiss: state.close })
285
+ ]
286
+ })] });
287
+ }
288
+ //#endregion
289
+ export { AutocompleteItem, AutocompleteSection, FOCUSABLE_DISABLED_OPTIONS, OptionList, OptionPopover, SelectItem, SelectSection };
290
+
291
+ //# sourceMappingURL=option-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-list.js","names":["Overlay"],"sources":["../../../src/components/select/option-list.tsx"],"sourcesContent":["'use client';\n\nimport {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type JSX,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { animate, useReducedMotion } from 'motion/react';\nimport {\n DismissButton,\n mergeProps,\n useHover,\n useListBox,\n useListBoxSection,\n useOption,\n usePopover,\n type AriaListBoxOptions,\n} from 'react-aria';\nimport {\n Item,\n Section,\n type Key,\n type ListState,\n type Node,\n type OverlayTriggerState,\n} from 'react-stately';\nimport { useM3Spring } from '../../motion/use-m3-spring';\nimport { Overlay } from '../../primitives/Overlay';\nimport { usePresence } from '../../primitives/use-presence';\nimport type { Density } from '../../tokens/density';\nimport { cn } from '../../utils/cn';\nimport { useTypeaheadDelegate } from '../../utils/typeahead';\nimport { LazyLoadingIndicator } from '../loading-indicator/lazy-loading-indicator';\nimport { menuStyles, persistentScrollbar } from '../menu/menu-styles';\nimport { useRevealEntering } from '../menu/use-reveal-entering';\n\nexport { FOCUSABLE_DISABLED_OPTIONS } from '../../utils/focusable-disabled';\n\n/** Props of an option in a `Select` or `Autocomplete`; the React `key` identifies it. */\nexport interface OptionItemProps {\n /** The label. */\n children: ReactNode;\n /** Plain-text label for typeahead, filtering and the field, when `children` isn't a string. */\n textValue?: string;\n /** Icon (or avatar, flag…) before the label. */\n leadingIcon?: ReactNode;\n /** Second line of text. */\n description?: ReactNode;\n /** Short text at the end, e.g. a dialling code or a count. */\n trailing?: ReactNode;\n /** Accessible name when the label isn't plain text. */\n 'aria-label'?: string;\n}\n\n/** A group of options with an optional heading. */\nexport interface OptionSectionProps {\n /** Heading shown above the options. */\n title?: ReactNode;\n /** Accessible name for the group when it has no `title`. */\n 'aria-label'?: string;\n children: ReactElement<OptionItemProps> | ReactElement<OptionItemProps>[];\n}\n\n/** An option in a `Select` (a React Stately collection item: identify it with `key`). */\nexport const SelectItem = Item as unknown as (props: OptionItemProps) => JSX.Element;\n/** A group of options in a `Select`, under an optional heading. */\nexport const SelectSection = Section as unknown as (props: OptionSectionProps) => JSX.Element;\n/** An option in an `Autocomplete` (a React Stately collection item: identify it with `key`). */\nexport const AutocompleteItem = Item as unknown as (props: OptionItemProps) => JSX.Element;\n/** A group of options in an `Autocomplete`, under an optional heading. */\nexport const AutocompleteSection = Section as unknown as (props: OptionSectionProps) => JSX.Element;\n\nexport interface OptionListClassNames {\n /** The list's surface. */\n list?: string;\n /** Each option. */\n item?: string;\n /** Each option's leading icon, or the check shown on a chosen option. */\n icon?: string;\n /** Each option's `description` line. */\n description?: string;\n /** Each option's `trailing` text. */\n trailing?: string;\n /** Each section's heading. */\n heading?: string;\n /** The divider between sections. */\n divider?: string;\n /** The text shown when no option matches. */\n empty?: string;\n}\n\n/** Material Symbols `check`, shown on chosen options (as M3 menus show selection). */\nconst CheckIcon = () => (\n <svg viewBox=\"0 -960 960 960\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\" />\n </svg>\n);\n\n/**\n * The options of a `Select` or `Autocomplete`, drawn exactly as the library's M3 menu: its\n * surface, 44px items (4px less per density step), `tertiary-container` for chosen options\n * with a check, sections with headings and dividers, state layers and the inset focus ring.\n */\nexport function OptionList<T>({\n listBoxProps,\n state,\n listBoxRef,\n emptyLabel,\n loading = false,\n loadingLabel,\n isBlocked,\n embedded = false,\n animateFiltering = false,\n classNames,\n}: {\n listBoxProps: AriaListBoxOptions<T>;\n state: ListState<T>;\n listBoxRef: RefObject<HTMLUListElement | null>;\n /** Shown when there are no options (e.g. nothing matches the search). */\n emptyLabel: ReactNode;\n loading?: boolean;\n /** The loading indicator's name; needed with `loading`. */\n loadingLabel?: string;\n /** Options that can't be chosen right now (`maxSelections` reached). */\n isBlocked?: ((key: Key) => boolean) | undefined;\n /** Inside a surface of its own (a sheet, or the search list's panel): no menu panel. */\n embedded?: boolean;\n /**\n * The list filters as someone types: options that stay ease into their new places (M3:\n * \"Menu items ease into their new position as the menu is filtered\").\n */\n animateFiltering?: boolean;\n classNames?: OptionListClassNames | undefined;\n}) {\n // M3: a letter moves focus to the next option starting with it.\n const typeaheadDelegate = useTypeaheadDelegate(state, listBoxRef);\n const { listBoxProps: props } = useListBox(\n {\n ...listBoxProps,\n keyboardDelegate: listBoxProps.keyboardDelegate ?? typeaheadDelegate,\n // The arrow keys wrap at the ends, as in menus and lists.\n shouldFocusWrap: true,\n },\n state,\n listBoxRef,\n );\n useFilterMotion(listBoxRef, state.collection, animateFiltering);\n const menu = menuStyles({ variant: 'standard', groupPosition: 'only' });\n const nodes = [...state.collection];\n // Options, not sections: a section left with no matches doesn't count.\n const isEmpty = ![...state.collection.getKeys()].some(\n (key) => state.collection.getItem(key)?.type === 'item',\n );\n // As in Menu, an item touching the panel's 16px corner takes 12px (16 − the 4px padding):\n // the first item, unless a heading sits above it, and the last, unless a loading or empty\n // row sits below it.\n const itemKeys = [...state.collection.getKeys()].filter(\n (key) => state.collection.getItem(key)?.type === 'item',\n );\n const first = nodes[0];\n const topKey = first?.type === 'section' && first.rendered ? null : itemKeys[0];\n const bottomKey = loading ? null : itemKeys.at(-1);\n const itemOptions = { state, isBlocked, topKey, bottomKey, classNames };\n\n return (\n <div\n // The menu's component tokens (menu-tokens.ts), whose styles the list shares.\n data-tokens=\"md-comp-menus\"\n data-variant=\"standard\"\n className={cn(\n !embedded && menu.group(),\n 'flex max-h-[inherit] min-h-0 flex-col overflow-hidden',\n classNames?.list,\n )}\n >\n <ul\n {...props}\n ref={listBoxRef}\n className={cn('min-h-0 flex-1 overflow-y-auto outline-none', persistentScrollbar)}\n >\n {nodes.map((node, index) =>\n node.type === 'section' ? (\n <OptionSection key={node.key} section={node} divided={index > 0} {...itemOptions} />\n ) : (\n <OptionItem key={node.key} item={node} {...itemOptions} />\n ),\n )}\n </ul>\n {loading && loadingLabel ? (\n <div className=\"flex min-h-[calc(44px+var(--md-sys-density,0)*4px)] items-center justify-center\">\n <LazyLoadingIndicator aria-label={loadingLabel} className=\"size-[36px]\" />\n </div>\n ) : isEmpty ? (\n <p\n role=\"status\"\n className={cn(\n 'px-[12px] py-[12px] text-label-large text-on-surface-variant',\n classNames?.empty,\n )}\n >\n {emptyLabel}\n </p>\n ) : null}\n </div>\n );\n}\n\n/**\n * FLIP for a filtered list: after the options change, each one still there starts where it\n * was and springs to its new place (default spatial spring). Positions are read only when\n * the collection changes; nothing moves under reduced motion.\n */\nfunction useFilterMotion(\n listRef: RefObject<HTMLUListElement | null>,\n collection: unknown,\n enabled: boolean,\n) {\n const spring = useM3Spring('spatial', 'default');\n const reducedMotion = useReducedMotion();\n const positions = useRef(new Map<string, number>());\n useLayoutEffect(() => {\n const list = listRef.current;\n if (!enabled || !list) return;\n const previous = positions.current;\n const next = new Map<string, number>();\n for (const item of list.querySelectorAll<HTMLElement>('[role=\"option\"][data-key]')) {\n const key = item.dataset.key!;\n // offsetTop ignores transforms, so a moving option reports where it lands.\n const top = item.offsetTop;\n next.set(key, top);\n const from = previous.get(key);\n if (from === undefined || from === top || reducedMotion) continue;\n animate(item, { y: [from - top, 0] }, spring);\n }\n positions.current = next;\n }, [collection, enabled, listRef, reducedMotion, spring]);\n}\n\ninterface ItemOptions<T> {\n state: ListState<T>;\n isBlocked: ((key: Key) => boolean) | undefined;\n /** The item at the panel's top edge, if any. */\n topKey: Key | null | undefined;\n /** The item at the panel's bottom edge, if any. */\n bottomKey: Key | null | undefined;\n classNames: OptionListClassNames | undefined;\n}\n\nfunction OptionSection<T>({\n section,\n divided,\n ...itemOptions\n}: ItemOptions<T> & { section: Node<T>; divided: boolean }) {\n const { state, classNames } = itemOptions;\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading: section.rendered,\n 'aria-label': section['aria-label'],\n });\n const menu = menuStyles({ variant: 'standard' });\n return (\n <li {...itemProps}>\n {divided ? (\n <div\n role=\"presentation\"\n className={cn(\n 'mx-[8px] my-[calc(4px+var(--md-sys-density,0)*1px)] h-px bg-outline-variant',\n classNames?.divider,\n )}\n />\n ) : null}\n {section.rendered ? (\n <span {...headingProps} className={menu.heading({ class: classNames?.heading })}>\n {section.rendered}\n </span>\n ) : null}\n <ul {...groupProps}>\n {[...state.collection.getChildren!(section.key)].map((item) => (\n <OptionItem key={item.key} item={item} {...itemOptions} />\n ))}\n </ul>\n </li>\n );\n}\n\nfunction OptionItem<T>({\n item,\n state,\n isBlocked,\n topKey,\n bottomKey,\n classNames,\n}: ItemOptions<T> & { item: Node<T> }) {\n const ref = useRef<HTMLLIElement>(null);\n // Disabled options keep focus (the state's `disabledBehavior: 'selection'`), so React Aria\n // treats them as enabled; they're marked disabled here, and the state (`disabledKeys`) or\n // the selection cap (blocked options) turns their choice away.\n const { optionProps, isSelected, isFocusVisible } = useOption({ key: item.key }, state, ref);\n const isDisabled =\n state.selectionManager.disabledKeys.has(item.key) || (isBlocked?.(item.key) ?? false);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { leadingIcon, description, trailing } = item.props as OptionItemProps;\n const menu = menuStyles({\n variant: 'standard',\n hasDescription: Boolean(description),\n itemTop: item.key === topKey ? 'nested' : 'plain',\n itemBottom: item.key === bottomKey ? 'nested' : 'plain',\n });\n\n return (\n <li\n {...mergeProps(optionProps, hoverProps)}\n ref={ref}\n aria-disabled={isDisabled || undefined}\n data-key={String(item.key)}\n data-tokens=\"md-comp-menus\"\n data-variant=\"standard\"\n className={menu.item({ class: classNames?.item })}\n data-selected={isSelected || undefined}\n data-disabled={isDisabled || undefined}\n data-hovered={(isHovered && !isDisabled) || undefined}\n data-focus-visible={isFocusVisible || undefined}\n >\n {leadingIcon ? (\n <span aria-hidden=\"true\" className={menu.icon({ class: classNames?.icon })}>\n {isSelected ? <CheckIcon /> : leadingIcon}\n </span>\n ) : (\n <span aria-hidden=\"true\" className={menu.selectedIcon()}>\n <span className={menu.selectedIconInner()}>\n <span className={menu.icon({ class: classNames?.icon })}>\n <CheckIcon />\n </span>\n </span>\n </span>\n )}\n <span className={menu.text()}>\n <span className=\"truncate\">{item.rendered}</span>\n {description ? (\n <span className={menu.description({ class: classNames?.description })}>\n {description}\n </span>\n ) : null}\n </span>\n {trailing ? (\n <span\n aria-hidden=\"true\"\n className={menu.trailing({ class: cn('tabular-nums', classNames?.trailing) })}\n >\n {trailing}\n </span>\n ) : null}\n </li>\n );\n}\n\n/**\n * The list's popover: anchored to the field, at least as wide as it (Compose's\n * `exposedDropdownSize`), above it when there's no room below, with the menu's open and\n * close motion: revealed from the field's edge as it fades in (M3 motion avoids scale). `nonModal` keeps an `Autocomplete`'s input usable while it's open.\n */\nexport function OptionPopover({\n state,\n triggerRef,\n popoverRef,\n nonModal = false,\n onPressOutside,\n minWidth = 0,\n density,\n children,\n}: {\n /** The open state the popover follows (from React Stately's `useOverlayTriggerState`). */\n state: OverlayTriggerState;\n /** The field the popover is placed under and matches the width of. */\n triggerRef: RefObject<HTMLElement | null>;\n /** Ref to the popover's surface. */\n popoverRef: RefObject<HTMLDivElement | null>;\n /**\n * Keeps the page interactive while open (no underlay, focus stays in the field), as an\n * editable field's menu needs. @default false\n */\n nonModal?: boolean;\n /** The least width, when the field is narrower (a searchable menu needs room to type). */\n minWidth?: number;\n /** A press outside the menu and the field closes it (modal menus only). */\n onPressOutside?: (() => void) | undefined;\n /** The field's own density, which its menu takes; left out, the theme's. */\n density?: Density | undefined;\n children: ReactNode;\n}) {\n const { isPresent, isExiting, exitProps } = usePresence(state.isOpen);\n if (!isPresent) return null;\n return (\n <Overlay exiting={isExiting} disableFocusManagement={nonModal} density={density}>\n <PopoverBody\n state={state}\n triggerRef={triggerRef}\n popoverRef={popoverRef}\n isNonModal={nonModal}\n isExiting={isExiting}\n exitProps={exitProps}\n onPressOutside={onPressOutside}\n minWidth={minWidth}\n >\n {children}\n </PopoverBody>\n </Overlay>\n );\n}\n\nfunction PopoverBody({\n state,\n triggerRef,\n popoverRef,\n isNonModal,\n isExiting,\n exitProps,\n onPressOutside,\n minWidth,\n children,\n}: {\n state: OverlayTriggerState;\n triggerRef: RefObject<HTMLElement | null>;\n popoverRef: RefObject<HTMLDivElement | null>;\n isNonModal: boolean;\n minWidth: number;\n isExiting: boolean;\n exitProps: ReturnType<typeof usePresence>['exitProps'];\n onPressOutside: (() => void) | undefined;\n children: ReactNode;\n}) {\n const { popoverProps, underlayProps, placement } = usePopover(\n { triggerRef, popoverRef, placement: 'bottom start', offset: 4, isNonModal },\n state,\n );\n const revealRef = useRef<HTMLDivElement>(null);\n const entering = useRevealEntering(placement, revealRef);\n // As wide as the field (Compose's `exposedDropdownSize`), measured when it opens.\n const [width, setWidth] = useState<number>();\n useLayoutEffect(() => {\n setWidth(triggerRef.current?.getBoundingClientRect().width);\n }, [triggerRef]);\n // React Aria makes the page around a modal popover inert, so a press outside lands on\n // `<body>` whatever is under it; its position tells a press on the field from one away.\n // Listened to in the capture phase: the popover stops the press once it has closed.\n useEffect(() => {\n if (isNonModal || !onPressOutside) return;\n const onPointerDown = (event: PointerEvent) => {\n if (popoverRef.current?.contains(event.target as globalThis.Node)) return;\n const field = triggerRef.current?.getBoundingClientRect();\n const onField =\n field !== undefined &&\n event.clientX >= field.left &&\n event.clientX <= field.right &&\n event.clientY >= field.top &&\n event.clientY <= field.bottom;\n if (!onField) onPressOutside();\n };\n document.addEventListener('pointerdown', onPointerDown, true);\n return () => document.removeEventListener('pointerdown', onPointerDown, true);\n }, [isNonModal, onPressOutside, popoverRef, triggerRef]);\n const menu = menuStyles();\n\n return (\n <>\n {isNonModal ? null : <div {...underlayProps} className=\"fixed inset-0\" />}\n <div\n {...popoverProps}\n ref={popoverRef}\n style={{ ...popoverProps.style, minWidth: Math.max(width ?? 0, minWidth) }}\n className={cn(menu.popover(), 'flex max-w-[min(560px,calc(100vw-32px))] flex-col')}\n >\n {isNonModal ? null : <DismissButton onDismiss={state.close} />}\n <div\n {...exitProps}\n ref={revealRef}\n data-entering={entering || undefined}\n data-exiting={isExiting || undefined}\n data-placement={placement ?? undefined}\n // The menu's reveal keeps its content's width (`w-max`); the option list fills the\n // popover instead, which is at least as wide as the field.\n className={cn(menu.reveal(), 'min-h-0 w-auto')}\n >\n {children}\n </div>\n <DismissButton onDismiss={state.close} />\n </div>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAqEA,MAAa,aAAa;;AAE1B,MAAa,gBAAgB;;AAE7B,MAAa,mBAAmB;;AAEhC,MAAa,sBAAsB;;AAsBnC,MAAM,kBACJ,oBAAC,OAAD;CAAK,SAAQ;CAAiB,MAAK;CAAe,eAAY;CAC5D,UAAA,oBAAC,QAAD,EAAM,GAAE,wDAAyD,CAAA;AAC9D,CAAA;;;;;;AAQP,SAAgB,WAAc,EAC5B,cACA,OACA,YACA,YACA,UAAU,OACV,cACA,WACA,WAAW,OACX,mBAAmB,OACnB,cAoBC;CAED,MAAM,oBAAoB,qBAAqB,OAAO,UAAU;CAChE,MAAM,EAAE,cAAc,UAAU,WAC9B;EACE,GAAG;EACH,kBAAkB,aAAa,oBAAoB;EAEnD,iBAAiB;CACnB,GACA,OACA,UACF;CACA,gBAAgB,YAAY,MAAM,YAAY,gBAAgB;CAC9D,MAAM,OAAO,WAAW;EAAE,SAAS;EAAY,eAAe;CAAO,CAAC;CACtE,MAAM,QAAQ,CAAC,GAAG,MAAM,UAAU;CAElC,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAC,MAC9C,QAAQ,MAAM,WAAW,QAAQ,GAAG,CAAC,EAAE,SAAS,MACnD;CAIA,MAAM,WAAW,CAAC,GAAG,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAC,QAC9C,QAAQ,MAAM,WAAW,QAAQ,GAAG,CAAC,EAAE,SAAS,MACnD;CACA,MAAM,QAAQ,MAAM;CAGpB,MAAM,cAAc;EAAE;EAAO;EAAW,QAFzB,OAAO,SAAS,aAAa,MAAM,WAAW,OAAO,SAAS;EAE7B,WAD9B,UAAU,OAAO,SAAS,GAAG,EAAE;EACU;CAAW;CAEtE,OACE,qBAAC,OAAD;EAEE,eAAY;EACZ,gBAAa;EACb,WAAW,GACT,CAAC,YAAY,KAAK,MAAM,GACxB,yDACA,YAAY,IACd;EARF,UAAA,CAUE,oBAAC,MAAD;GACE,GAAI;GACJ,KAAK;GACL,WAAW,GAAG,+CAA+C,mBAAmB;GAE/E,UAAA,MAAM,KAAK,MAAM,UAChB,KAAK,SAAS,YACZ,oBAAC,eAAD;IAA8B,SAAS;IAAM,SAAS,QAAQ;IAAG,GAAI;GAAc,GAA/D,KAAK,GAA0D,IAEnF,oBAAC,YAAD;IAA2B,MAAM;IAAM,GAAI;GAAc,GAAxC,KAAK,GAAmC,CAE7D;EACE,CAAA,GACH,WAAW,eACV,oBAAC,OAAD;GAAK,WAAU;GACb,UAAA,oBAAC,sBAAD;IAAsB,cAAY;IAAc,WAAU;GAAe,CAAA;EACtE,CAAA,IACH,UACF,oBAAC,KAAD;GACE,MAAK;GACL,WAAW,GACT,gEACA,YAAY,KACd;GAEC,UAAA;EACA,CAAA,IACD,IACD;;AAET;;;;;;AAOA,SAAS,gBACP,SACA,YACA,SACA;CACA,MAAM,SAAS,YAAY,WAAW,SAAS;CAC/C,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,YAAY,uBAAO,IAAI,IAAoB,CAAC;CAClD,sBAAsB;EACpB,MAAM,OAAO,QAAQ;EACrB,IAAI,CAAC,WAAW,CAAC,MAAM;EACvB,MAAM,WAAW,UAAU;EAC3B,MAAM,uBAAO,IAAI,IAAoB;EACrC,KAAK,MAAM,QAAQ,KAAK,iBAA8B,6BAA2B,GAAG;GAClF,MAAM,MAAM,KAAK,QAAQ;GAEzB,MAAM,MAAM,KAAK;GACjB,KAAK,IAAI,KAAK,GAAG;GACjB,MAAM,OAAO,SAAS,IAAI,GAAG;GAC7B,IAAI,SAAS,KAAA,KAAa,SAAS,OAAO,eAAe;GACzD,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,GAAG,MAAM;EAC9C;EACA,UAAU,UAAU;CACtB,GAAG;EAAC;EAAY;EAAS;EAAS;EAAe;CAAM,CAAC;AAC1D;AAYA,SAAS,cAAiB,EACxB,SACA,SACA,GAAG,eACuD;CAC1D,MAAM,EAAE,OAAO,eAAe;CAC9B,MAAM,EAAE,WAAW,cAAc,eAAe,kBAAkB;EAChE,SAAS,QAAQ;EACjB,cAAc,QAAQ;CACxB,CAAC;CACD,MAAM,OAAO,WAAW,EAAE,SAAS,WAAW,CAAC;CAC/C,OACE,qBAAC,MAAD;EAAI,GAAI;EAAR,UAAA;GACG,UACC,oBAAC,OAAD;IACE,MAAK;IACL,WAAW,GACT,+EACA,YAAY,OACd;GACD,CAAA,IACC;GACH,QAAQ,WACP,oBAAC,QAAD;IAAM,GAAI;IAAc,WAAW,KAAK,QAAQ,EAAE,OAAO,YAAY,QAAQ,CAAC;IAC3E,UAAA,QAAQ;GACL,CAAA,IACJ;GACJ,oBAAC,MAAD;IAAI,GAAI;IACL,UAAA,CAAC,GAAG,MAAM,WAAW,YAAa,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,SACpD,oBAAC,YAAD;KAAiC;KAAM,GAAI;IAAc,GAAxC,KAAK,GAAmC,CAC1D;GACC,CAAA;EACF;;AAER;AAEA,SAAS,WAAc,EACrB,MACA,OACA,WACA,QACA,WACA,cACqC;CACrC,MAAM,MAAM,OAAsB,IAAI;CAItC,MAAM,EAAE,aAAa,YAAY,mBAAmB,UAAU,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,GAAG;CAC3F,MAAM,aACJ,MAAM,iBAAiB,aAAa,IAAI,KAAK,GAAG,MAAM,YAAY,KAAK,GAAG,KAAK;CACjF,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,WAAW,CAAC;CACzD,MAAM,EAAE,aAAa,aAAa,aAAa,KAAK;CACpD,MAAM,OAAO,WAAW;EACtB,SAAS;EACT,gBAAgB,QAAQ,WAAW;EACnC,SAAS,KAAK,QAAQ,SAAS,WAAW;EAC1C,YAAY,KAAK,QAAQ,YAAY,WAAW;CAClD,CAAC;CAED,OACE,qBAAC,MAAD;EACE,GAAI,WAAW,aAAa,UAAU;EACjC;EACL,iBAAe,cAAc,KAAA;EAC7B,YAAU,OAAO,KAAK,GAAG;EACzB,eAAY;EACZ,gBAAa;EACb,WAAW,KAAK,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;EAChD,iBAAe,cAAc,KAAA;EAC7B,iBAAe,cAAc,KAAA;EAC7B,gBAAe,aAAa,CAAC,cAAe,KAAA;EAC5C,sBAAoB,kBAAkB,KAAA;EAXxC,UAAA;GAaG,cACC,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAW,KAAK,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;IACtE,UAAA,aAAa,oBAAC,WAAD,CAAY,CAAA,IAAI;GAC1B,CAAA,IAEN,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAW,KAAK,aAAa;IACpD,UAAA,oBAAC,QAAD;KAAM,WAAW,KAAK,kBAAkB;KACtC,UAAA,oBAAC,QAAD;MAAM,WAAW,KAAK,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;MACpD,UAAA,oBAAC,WAAD,CAAY,CAAA;KACR,CAAA;IACF,CAAA;GACF,CAAA;GAER,qBAAC,QAAD;IAAM,WAAW,KAAK,KAAK;IAA3B,UAAA,CACE,oBAAC,QAAD;KAAM,WAAU;KAAY,UAAA,KAAK;IAAe,CAAA,GAC/C,cACC,oBAAC,QAAD;KAAM,WAAW,KAAK,YAAY,EAAE,OAAO,YAAY,YAAY,CAAC;KACjE,UAAA;IACG,CAAA,IACJ,IACA;;GACL,WACC,oBAAC,QAAD;IACE,eAAY;IACZ,WAAW,KAAK,SAAS,EAAE,OAAO,GAAG,gBAAgB,YAAY,QAAQ,EAAE,CAAC;IAE3E,UAAA;GACG,CAAA,IACJ;EACF;;AAER;;;;;;AAOA,SAAgB,cAAc,EAC5B,OACA,YACA,YACA,WAAW,OACX,gBACA,WAAW,GACX,SACA,YAoBC;CACD,MAAM,EAAE,WAAW,WAAW,cAAc,YAAY,MAAM,MAAM;CACpE,IAAI,CAAC,WAAW,OAAO;CACvB,OACE,oBAACA,WAAD;EAAS,SAAS;EAAW,wBAAwB;EAAmB;EACtE,UAAA,oBAAC,aAAD;GACS;GACK;GACA;GACZ,YAAY;GACD;GACA;GACK;GACN;GAET;EACU,CAAA;CACN,CAAA;AAEb;AAEA,SAAS,YAAY,EACnB,OACA,YACA,YACA,YACA,WACA,WACA,gBACA,UACA,YAWC;CACD,MAAM,EAAE,cAAc,eAAe,cAAc,WACjD;EAAE;EAAY;EAAY,WAAW;EAAgB,QAAQ;EAAG;CAAW,GAC3E,KACF;CACA,MAAM,YAAY,OAAuB,IAAI;CAC7C,MAAM,WAAW,kBAAkB,WAAW,SAAS;CAEvD,MAAM,CAAC,OAAO,YAAY,SAAiB;CAC3C,sBAAsB;EACpB,SAAS,WAAW,SAAS,sBAAsB,CAAC,CAAC,KAAK;CAC5D,GAAG,CAAC,UAAU,CAAC;CAIf,gBAAgB;EACd,IAAI,cAAc,CAAC,gBAAgB;EACnC,MAAM,iBAAiB,UAAwB;GAC7C,IAAI,WAAW,SAAS,SAAS,MAAM,MAAyB,GAAG;GACnE,MAAM,QAAQ,WAAW,SAAS,sBAAsB;GAOxD,IAAI,EALF,UAAU,KAAA,KACV,MAAM,WAAW,MAAM,QACvB,MAAM,WAAW,MAAM,SACvB,MAAM,WAAW,MAAM,OACvB,MAAM,WAAW,MAAM,SACX,eAAe;EAC/B;EACA,SAAS,iBAAiB,eAAe,eAAe,IAAI;EAC5D,aAAa,SAAS,oBAAoB,eAAe,eAAe,IAAI;CAC9E,GAAG;EAAC;EAAY;EAAgB;EAAY;CAAU,CAAC;CACvD,MAAM,OAAO,WAAW;CAExB,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,aAAa,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAe,WAAU;CAAiB,CAAA,GACxE,qBAAC,OAAD;EACE,GAAI;EACJ,KAAK;EACL,OAAO;GAAE,GAAG,aAAa;GAAO,UAAU,KAAK,IAAI,SAAS,GAAG,QAAQ;EAAE;EACzE,WAAW,GAAG,KAAK,QAAQ,GAAG,mDAAmD;EAJnF,UAAA;GAMG,aAAa,OAAO,oBAAC,eAAD,EAAe,WAAW,MAAM,MAAQ,CAAA;GAC7D,oBAAC,OAAD;IACE,GAAI;IACJ,KAAK;IACL,iBAAe,YAAY,KAAA;IAC3B,gBAAc,aAAa,KAAA;IAC3B,kBAAgB,aAAa,KAAA;IAG7B,WAAW,GAAG,KAAK,OAAO,GAAG,gBAAgB;IAE5C;GACE,CAAA;GACL,oBAAC,eAAD,EAAe,WAAW,MAAM,MAAQ,CAAA;EACrC;CACL,CAAA,CAAA,EAAA,CAAA;AAEN"}