@windmorph/react 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,219 @@
1
+ import { tv } from "../../utils/tv.js";
2
+ //#region src/components/menu/menu-styles.ts
3
+ /**
4
+ * M3: a menu that scrolls "show[s] a persistent scrollbar". Overlay scrollbars hide at rest,
5
+ * so a styled WebKit scrollbar is always drawn (a 4px `outline` thumb in a 12px track);
6
+ * elsewhere, a thin one. Shared by the menu and the exposed dropdown menus' option list.
7
+ */
8
+ const persistentScrollbar = [
9
+ "[&::-webkit-scrollbar]:w-[12px] [&::-webkit-scrollbar-track]:bg-transparent",
10
+ "[&::-webkit-scrollbar-thumb]:rounded-corner-full [&::-webkit-scrollbar-thumb]:border-[4px] [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-outline [&::-webkit-scrollbar-thumb]:bg-clip-padding",
11
+ "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--md-sys-color-outline)_transparent]"
12
+ ];
13
+ /** Variant definitions for {@link Menu} and its parts. */
14
+ /**
15
+ * Keeps a menu's placed box at the menu's own width (`!`, so a consumer's `w-full` or `min-w-*`
16
+ * doesn't merge it away): React Aria places the box by its size, so a full-width box was held
17
+ * 12px from the window's edge and the menu inside it sat off its trigger (2026-10-17). Only the
18
+ * menus take it: an `!important` minimum would also beat the inline minimum that keeps a
19
+ * Select's or Autocomplete's option list as wide as its field.
20
+ */
21
+ const menuOwnWidth = "w-max! min-w-0!";
22
+ const menuStyles = tv({
23
+ slots: {
24
+ popover: "z-(--md-sys-z-menu)",
25
+ reveal: [
26
+ "flex max-h-[inherit] w-max flex-col opacity-100 [clip-path:inset(-24px)]",
27
+ "[transition-property:opacity,clip-path]",
28
+ "[transition-duration:var(--md-sys-motion-spring-effects-fast-duration),var(--md-sys-motion-spring-spatial-fast-duration)]",
29
+ "[transition-timing-function:var(--md-sys-motion-spring-effects-fast-easing),var(--md-sys-motion-spring-spatial-fast-easing)]",
30
+ "data-entering:opacity-0 data-entering:[transition-property:none] data-exiting:opacity-0",
31
+ "data-exiting:pointer-events-none data-exiting:**:pointer-events-none",
32
+ "motion-safe:data-entering:[clip-path:inset(-24px_-24px_100%_-24px)] motion-safe:data-exiting:[clip-path:inset(-24px_-24px_100%_-24px)]",
33
+ "motion-safe:data-[placement=top]:data-entering:[clip-path:inset(100%_-24px_-24px_-24px)] motion-safe:data-[placement=top]:data-exiting:[clip-path:inset(100%_-24px_-24px_-24px)]",
34
+ "motion-safe:data-[placement=right]:data-entering:[clip-path:inset(-24px_100%_-24px_-24px)] motion-safe:data-[placement=right]:data-exiting:[clip-path:inset(-24px_100%_-24px_-24px)]",
35
+ "motion-safe:data-[placement=left]:data-entering:[clip-path:inset(-24px_-24px_-24px_100%)] motion-safe:data-[placement=left]:data-exiting:[clip-path:inset(-24px_-24px_-24px_100%)]"
36
+ ],
37
+ menu: [
38
+ "flex max-h-[inherit] flex-col overflow-y-auto bg-[var(--_md-comp-menus-container-color)] outline-none",
39
+ ...persistentScrollbar,
40
+ "[--m3-menu-corner:var(--_md-comp-menus-container-shape)]",
41
+ "data-[shape=active]:[--m3-menu-corner:24px]",
42
+ "data-[shape=inactive]:[--m3-menu-corner:var(--md-sys-shape-corner-small)]"
43
+ ],
44
+ group: [
45
+ "pointer-events-auto flex flex-col bg-[var(--_md-comp-menus-container-color)] p-[4px] shadow-[shadow:var(--_md-comp-menus-container-elevation)]",
46
+ "forced-colors:outline-solid forced-colors:outline-1 forced-colors:outline-[CanvasText]",
47
+ "[transition-property:border-radius]",
48
+ "[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)]",
49
+ "[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)]"
50
+ ],
51
+ divider: "my-[calc(8px+var(--md-sys-density,0)*2px)] -mx-[4px] w-auto",
52
+ heading: "flex min-h-[32px] items-center ps-[16px] text-label-large",
53
+ item: [
54
+ "group/item flex min-h-[calc(44px+var(--md-sys-density,0)*4px)] w-full cursor-pointer items-center px-[16px] text-start",
55
+ "text-body-large text-[color:var(--_md-comp-menus-menu-item-label-text-color)] outline-none select-none",
56
+ "data-selected:bg-[var(--_md-comp-menus-menu-item-selected-container-color)] data-selected:text-[color:var(--_md-comp-menus-menu-item-selected-label-text-color)]",
57
+ "state-layer focus-ring-inset container-motion",
58
+ "data-selected:rounded-corner-medium",
59
+ "data-disabled:cursor-default"
60
+ ],
61
+ selectedIcon: [
62
+ "grid grid-cols-[0fr] opacity-0",
63
+ "[transition-property:grid-template-columns,opacity]",
64
+ "[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration),var(--md-sys-motion-spring-effects-fast-duration)]",
65
+ "[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing),var(--md-sys-motion-spring-effects-fast-easing)]",
66
+ "group-data-selected/item:grid-cols-[1fr] group-data-selected/item:opacity-100"
67
+ ],
68
+ selectedIconInner: "overflow-hidden",
69
+ icon: "me-[12px] inline-flex size-[20px] shrink-0 items-center justify-center text-[color:var(--_md-comp-menus-menu-item-leading-icon-color)] [&>svg]:size-full",
70
+ text: "flex min-w-0 flex-1 flex-col",
71
+ description: "text-body-medium",
72
+ trailing: "ms-auto inline-flex shrink-0 items-center ps-[12px] text-label-small text-[color:var(--_md-comp-menus-menu-item-trailing-icon-color)] [&>svg]:size-[20px]",
73
+ badge: "inline-flex shrink-0 items-center ps-[12px]",
74
+ sheetContent: [
75
+ "flex min-h-0 flex-1 flex-col px-[8px] pb-[16px]",
76
+ "[&>:not([data-overlay-scope]):has(~[data-overlay-scope])]:hidden",
77
+ "[&>[data-overlay-scope]:has(~[data-overlay-scope])>*]:hidden"
78
+ ],
79
+ sheetPanel: [
80
+ "flex min-h-0 flex-1 flex-col opacity-100 starting:opacity-0",
81
+ "[transition-property:opacity]",
82
+ "[transition-duration:var(--md-sys-motion-spring-effects-fast-duration)]",
83
+ "[transition-timing-function:var(--md-sys-motion-spring-effects-fast-easing)]"
84
+ ],
85
+ sheetHeader: "flex min-h-[48px] shrink-0 items-center gap-[4px] pe-[12px]",
86
+ sheetBack: ["inline-flex size-[48px] shrink-0 cursor-pointer items-center justify-center rounded-corner-full", "state-layer focus-ring text-on-surface-variant [&>svg]:size-[24px]"],
87
+ sheetTitle: "min-w-0 flex-1 truncate text-title-medium text-on-surface"
88
+ },
89
+ variants: {
90
+ variant: {
91
+ standard: {
92
+ heading: "text-on-surface-variant",
93
+ item: ["data-disabled:text-on-surface/38", "data-disabled:data-selected:bg-tertiary-container/38 data-disabled:data-selected:text-on-tertiary-container/38"],
94
+ icon: "group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38",
95
+ description: "text-on-surface-variant group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38",
96
+ trailing: "group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38"
97
+ },
98
+ vibrant: {
99
+ heading: "text-on-tertiary-container",
100
+ item: ["data-disabled:text-on-tertiary-container/38", "data-disabled:data-selected:bg-tertiary/38 data-disabled:data-selected:text-on-tertiary/38"],
101
+ icon: [
102
+ "group-data-hovered/item:text-tertiary group-data-focus-visible/item:text-tertiary group-data-pressed/item:text-tertiary",
103
+ "group-data-selected/item:text-on-tertiary",
104
+ "group-data-selected/item:group-data-hovered/item:text-on-tertiary",
105
+ "group-data-selected/item:group-data-focus-visible/item:text-on-tertiary",
106
+ "group-data-selected/item:group-data-pressed/item:text-on-tertiary",
107
+ "group-data-disabled/item:text-on-tertiary-container/38"
108
+ ],
109
+ description: "text-on-tertiary-container group-data-selected/item:text-on-tertiary group-data-disabled/item:text-on-tertiary-container/38",
110
+ trailing: [
111
+ "group-data-hovered/item:text-tertiary group-data-focus-visible/item:text-tertiary group-data-pressed/item:text-tertiary",
112
+ "group-data-selected/item:text-on-tertiary",
113
+ "group-data-selected/item:group-data-hovered/item:text-on-tertiary",
114
+ "group-data-selected/item:group-data-focus-visible/item:text-on-tertiary",
115
+ "group-data-selected/item:group-data-pressed/item:text-on-tertiary",
116
+ "group-data-disabled/item:text-on-tertiary-container/38"
117
+ ]
118
+ }
119
+ },
120
+ groupPosition: {
121
+ only: { group: "rounded-[var(--_md-comp-menus-container-shape)]" },
122
+ first: { group: "rounded-t-[var(--_md-comp-menus-container-shape)] rounded-b-corner-small" },
123
+ middle: { group: "rounded-corner-small" },
124
+ last: { group: "rounded-t-corner-small rounded-b-[var(--_md-comp-menus-container-shape)]" }
125
+ },
126
+ /**
127
+ * The item's top corners: `nested` inside a 16px corner (12px), `outer` inside the
128
+ * menu's morphing outer corner (`--m3-menu-corner` less the 4px padding), else 4px.
129
+ */
130
+ itemTop: {
131
+ nested: { item: "rounded-t-corner-medium" },
132
+ outer: { item: "rounded-t-[calc(var(--m3-menu-corner,var(--md-sys-shape-corner-large))-4px)]" },
133
+ plain: { item: "rounded-t-corner-extra-small" }
134
+ },
135
+ /** The item's bottom corners, as `itemTop`. */
136
+ itemBottom: {
137
+ nested: { item: "rounded-b-corner-medium" },
138
+ outer: { item: "rounded-b-[calc(var(--m3-menu-corner,var(--md-sys-shape-corner-large))-4px)]" },
139
+ plain: { item: "rounded-b-corner-extra-small" }
140
+ },
141
+ /** Groups' outer corners follow `--m3-menu-corner` (the submenu morph). */
142
+ morph: {
143
+ true: {},
144
+ false: {}
145
+ },
146
+ hasDescription: {
147
+ true: { item: "py-[calc(8px+var(--md-sys-density,0)*2px)]" },
148
+ false: {}
149
+ },
150
+ /** Open and close with no motion (`instant`). */
151
+ instant: {
152
+ true: { reveal: "[transition-property:none]" },
153
+ false: {}
154
+ },
155
+ /** In a bottom sheet: the list spans it, on the sheet's own surface. */
156
+ embedded: {
157
+ true: {},
158
+ false: {}
159
+ },
160
+ /**
161
+ * `gap`: every group is its own surface, and the list only scrolls (its 8px ring keeps
162
+ * the groups' shadows); `divider`: the list is the one surface.
163
+ */
164
+ layout: {
165
+ gap: { menu: ["-m-[8px] p-[8px] pointer-events-none gap-[2px] bg-transparent", "min-w-[128px] max-w-[296px]"] },
166
+ divider: {
167
+ menu: [
168
+ "pointer-events-auto min-w-[112px] max-w-[280px] p-[4px] shadow-[shadow:var(--_md-comp-menus-container-elevation)]",
169
+ "forced-colors:outline-solid forced-colors:outline-1 forced-colors:outline-[CanvasText]",
170
+ "rounded-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]",
171
+ "[transition-property:border-radius]",
172
+ "[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)]",
173
+ "[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)]"
174
+ ],
175
+ group: "bg-transparent p-0 shadow-none forced-colors:outline-none"
176
+ }
177
+ }
178
+ },
179
+ compoundVariants: [
180
+ {
181
+ morph: true,
182
+ groupPosition: "only",
183
+ class: { group: "rounded-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]" }
184
+ },
185
+ {
186
+ morph: true,
187
+ groupPosition: "first",
188
+ class: { group: "rounded-t-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))] rounded-b-corner-small" }
189
+ },
190
+ {
191
+ morph: true,
192
+ groupPosition: "last",
193
+ class: { group: "rounded-t-corner-small rounded-b-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]" }
194
+ },
195
+ {
196
+ layout: "divider",
197
+ class: { group: "rounded-none" }
198
+ },
199
+ {
200
+ embedded: true,
201
+ class: { menu: "w-full max-w-none min-w-0 rounded-none bg-transparent p-0 shadow-none forced-colors:outline-none" }
202
+ }
203
+ ],
204
+ defaultVariants: {
205
+ variant: "standard",
206
+ layout: "gap",
207
+ morph: false,
208
+ groupPosition: "only",
209
+ itemTop: "plain",
210
+ itemBottom: "plain",
211
+ hasDescription: false,
212
+ instant: false,
213
+ embedded: false
214
+ }
215
+ });
216
+ //#endregion
217
+ export { menuOwnWidth, menuStyles, persistentScrollbar };
218
+
219
+ //# sourceMappingURL=menu-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-styles.js","names":[],"sources":["../../../src/components/menu/menu-styles.ts"],"sourcesContent":["import { tv, type VariantProps } from '../../utils/tv';\n\n/*\n * Values follow the M3 Expressive menu spec and Compose Material 3's Expressive menu\n * (Menu.kt, MenuDefaults.kt and the Menu / StandardMenu / VibrantMenu / SegmentedMenu\n * token files):\n * - two layouts (M3 \"Vertical menu with gap\" / \"with divider\"). `gap`: groups are separate\n * surfaces 2px apart at elevation 2, with 4px padding (the SegmentedMenu `GroupPadding`\n * token); corners: only 16px; first 16px top / 8px bottom; middle 8px; last 8px top /\n * 16px bottom. `divider`: one surface with 4px padding and 16px corners, groups split by\n * a 1px `outline-variant` divider with 8px above and below (the baseline menu's divider\n * padding). M3 recommends dividers on the web and in scrolling menus;\n * - the outer corners read `--m3-menu-corner`, so they morph while a submenu is open: the\n * menu holding focus takes 24px (SegmentedMenu `ActiveContainerShape`), the others 8px\n * (`InactiveContainerShape`), on the fast spatial spring;\n * - items are 44px minimum (4px less per web density step, `--md-sys-density`: 44 → 40 → 36 →\n * 32px; dividers' 8px margins lose 2px per step), 112–280px wide, 16px padding at\n * the start and end, body-large labels, 20px icons with a 12px gap and label-small trailing\n * text (the shortcut); 12px corners when selected (morph on the fast spatial spring). The\n * padding, gap and type follow the Menu token files (2026-10-14); Compose's code uses 12px,\n * an 8px gap and label-large on touch;\n * - item corners nest inside the container's: an edge item takes the outer corner minus\n * the 4px padding (16px → 12px, 8px → 4px), other corners are 4px. Compose picks item\n * shapes per group alone, so a last item could be rounder than its group's 8px corner;\n * - group labels start 16px inside the group's 4px padding, lined up with the items' 16px\n * padding, and end 4px from its edge (Compose starts them 12px from the edge; aligned\n * with the labels, 2026-10-15);\n * - standard: surface-container-low, on-surface text, on-surface-variant icons, selected\n * tertiary-container; vibrant: tertiary-container, on-tertiary-container content\n * (icons turn tertiary on hover, focus and press), selected tertiary;\n * - the menu is revealed from its anchored edge (a clip) as it fades in, on the fast springs\n * (M3 motion: components enter along the x or y axis; scale is avoided), as do the\n * exposed dropdown menus (Select, Autocomplete) and the docked date picker;\n * - the scrolling list keeps 8px of room around the groups so their shadows aren't clipped,\n * and shows a persistent scrollbar (M3).\n *\n * The container's colour, shadow and resting corners and the items' resting and selected\n * colours come from the menu's component tokens (`menu-tokens.ts`, `--md-comp-menus-*`):\n * the menu, each item and the option lists that share these styles carry\n * `data-tokens=\"md-comp-menus\"` and `data-variant`. `--m3-menu-corner` takes the shape\n * token, so the submenu morph still animates from it. A consumer class still wins in `cn()`.\n * Every class is written out in full so Tailwind can find it.\n */\n\n/**\n * M3: a menu that scrolls \"show[s] a persistent scrollbar\". Overlay scrollbars hide at rest,\n * so a styled WebKit scrollbar is always drawn (a 4px `outline` thumb in a 12px track);\n * elsewhere, a thin one. Shared by the menu and the exposed dropdown menus' option list.\n */\nexport const persistentScrollbar = [\n '[&::-webkit-scrollbar]:w-[12px] [&::-webkit-scrollbar-track]:bg-transparent',\n '[&::-webkit-scrollbar-thumb]:rounded-corner-full [&::-webkit-scrollbar-thumb]:border-[4px] [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-outline [&::-webkit-scrollbar-thumb]:bg-clip-padding',\n 'supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--md-sys-color-outline)_transparent]',\n];\n\n/** Variant definitions for {@link Menu} and its parts. */\n/**\n * Keeps a menu's placed box at the menu's own width (`!`, so a consumer's `w-full` or `min-w-*`\n * doesn't merge it away): React Aria places the box by its size, so a full-width box was held\n * 12px from the window's edge and the menu inside it sat off its trigger (2026-10-17). Only the\n * menus take it: an `!important` minimum would also beat the inline minimum that keeps a\n * Select's or Autocomplete's option list as wide as its field.\n */\nexport const menuOwnWidth = 'w-max! min-w-0!';\n\nexport const menuStyles = tv({\n slots: {\n // The outermost element, which React Aria places (inline `position` and insets) and which\n // takes the consumer's `className` and `style`. A menu adds `menuOwnWidth` to it; the\n // option list of a Select or Autocomplete doesn't, since it sets its own minimum (the\n // field's width) inline.\n popover: 'z-(--md-sys-z-menu)',\n // The menu's enter and exit: revealed from its anchored edge with a clip (24px of room\n // for the shadows) as it fades in. M3 motion avoids scale, and a clip leaves the items'\n // layout untouched, so a submenu opened mid-animation is placed against its item's final\n // position. It also passes the popover's maximum height down, so a long list scrolls.\n // `w-max` keeps the menu's own width whatever width a consumer class gives the popover\n // (whose insets only React Aria sets: `data-overlay-placement`, styles/utilities.css).\n reveal: [\n 'flex max-h-[inherit] w-max flex-col opacity-100 [clip-path:inset(-24px)]',\n '[transition-property:opacity,clip-path]',\n '[transition-duration:var(--md-sys-motion-spring-effects-fast-duration),var(--md-sys-motion-spring-spatial-fast-duration)]',\n '[transition-timing-function:var(--md-sys-motion-spring-effects-fast-easing),var(--md-sys-motion-spring-spatial-fast-easing)]',\n // Closed until React Aria has placed it (`data-entering`, `useRevealEntering`), with no\n // transition, then it opens from there: a `@starting-style` was resolved before the\n // placement was known, so every menu opened from its top edge.\n 'data-entering:opacity-0 data-entering:[transition-property:none] data-exiting:opacity-0',\n // Leaving, it takes no presses (nor do its groups and items, which set their own):\n // an item clicked as it faded ran its action.\n 'data-exiting:pointer-events-none data-exiting:**:pointer-events-none',\n // Below the anchor it opens downwards, above it upwards, beside it sideways. Under\n // reduced motion it only fades: the clip stays open.\n 'motion-safe:data-entering:[clip-path:inset(-24px_-24px_100%_-24px)] motion-safe:data-exiting:[clip-path:inset(-24px_-24px_100%_-24px)]',\n 'motion-safe:data-[placement=top]:data-entering:[clip-path:inset(100%_-24px_-24px_-24px)] motion-safe:data-[placement=top]:data-exiting:[clip-path:inset(100%_-24px_-24px_-24px)]',\n 'motion-safe:data-[placement=right]:data-entering:[clip-path:inset(-24px_100%_-24px_-24px)] motion-safe:data-[placement=right]:data-exiting:[clip-path:inset(-24px_100%_-24px_-24px)]',\n 'motion-safe:data-[placement=left]:data-entering:[clip-path:inset(-24px_-24px_-24px_100%)] motion-safe:data-[placement=left]:data-exiting:[clip-path:inset(-24px_-24px_-24px_100%)]',\n ],\n // The list scrolls when tall, and a scroll container clips its children's shadows to\n // its box. 8px of padding (cancelled by a negative margin, so nothing moves) leaves room\n // for the groups' elevation-2 shadows; that ring lets clicks through, so a press just\n // outside the menu still dismisses it. Widths include the padding: 112–280px groups.\n menu: [\n 'flex max-h-[inherit] flex-col overflow-y-auto bg-[var(--_md-comp-menus-container-color)] outline-none',\n ...persistentScrollbar,\n '[--m3-menu-corner:var(--_md-comp-menus-container-shape)]',\n 'data-[shape=active]:[--m3-menu-corner:24px]',\n 'data-[shape=inactive]:[--m3-menu-corner:var(--md-sys-shape-corner-small)]',\n ],\n group: [\n 'pointer-events-auto flex flex-col bg-[var(--_md-comp-menus-container-color)] p-[4px] shadow-[shadow:var(--_md-comp-menus-container-elevation)]',\n // Forced colours drop the surface colour and the shadow: a system-colour outline keeps\n // the edge (an outline, so nothing moves).\n 'forced-colors:outline-solid forced-colors:outline-1 forced-colors:outline-[CanvasText]',\n '[transition-property:border-radius]',\n '[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)]',\n '[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)]',\n ],\n // 8px above and below at density 0, 2px less per step (M3: density takes spacing off).\n divider: 'my-[calc(8px+var(--md-sys-density,0)*2px)] -mx-[4px] w-auto',\n // 16px inside the group's 4px padding, as the items' own 16px padding: in line with them.\n heading: 'flex min-h-[32px] items-center ps-[16px] text-label-large',\n item: [\n 'group/item flex min-h-[calc(44px+var(--md-sys-density,0)*4px)] w-full cursor-pointer items-center px-[16px] text-start',\n 'text-body-large text-[color:var(--_md-comp-menus-menu-item-label-text-color)] outline-none select-none',\n 'data-selected:bg-[var(--_md-comp-menus-menu-item-selected-container-color)] data-selected:text-[color:var(--_md-comp-menus-menu-item-selected-label-text-color)]',\n 'state-layer focus-ring-inset container-motion',\n 'data-selected:rounded-corner-medium',\n 'data-disabled:cursor-default',\n ],\n selectedIcon: [\n 'grid grid-cols-[0fr] opacity-0',\n '[transition-property:grid-template-columns,opacity]',\n '[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration),var(--md-sys-motion-spring-effects-fast-duration)]',\n '[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing),var(--md-sys-motion-spring-effects-fast-easing)]',\n 'group-data-selected/item:grid-cols-[1fr] group-data-selected/item:opacity-100',\n ],\n selectedIconInner: 'overflow-hidden',\n icon: 'me-[12px] inline-flex size-[20px] shrink-0 items-center justify-center text-[color:var(--_md-comp-menus-menu-item-leading-icon-color)] [&>svg]:size-full',\n text: 'flex min-w-0 flex-1 flex-col',\n description: 'text-body-medium',\n trailing:\n 'ms-auto inline-flex shrink-0 items-center ps-[12px] text-label-small text-[color:var(--_md-comp-menus-menu-item-trailing-icon-color)] [&>svg]:size-[20px]',\n badge: 'inline-flex shrink-0 items-center ps-[12px]',\n // A menu's place in a bottom sheet. An open submenu's panel follows the menu that opened\n // it (portalled in after it) and hides it, and any panel before it, while it's open.\n sheetContent: [\n 'flex min-h-0 flex-1 flex-col px-[8px] pb-[16px]',\n '[&>:not([data-overlay-scope]):has(~[data-overlay-scope])]:hidden',\n '[&>[data-overlay-scope]:has(~[data-overlay-scope])>*]:hidden',\n ],\n // A submenu in a sheet: a back button and its item's label above its list, fading in.\n sheetPanel: [\n 'flex min-h-0 flex-1 flex-col opacity-100 starting:opacity-0',\n '[transition-property:opacity]',\n '[transition-duration:var(--md-sys-motion-spring-effects-fast-duration)]',\n '[transition-timing-function:var(--md-sys-motion-spring-effects-fast-easing)]',\n ],\n sheetHeader: 'flex min-h-[48px] shrink-0 items-center gap-[4px] pe-[12px]',\n sheetBack: [\n 'inline-flex size-[48px] shrink-0 cursor-pointer items-center justify-center rounded-corner-full',\n 'state-layer focus-ring text-on-surface-variant [&>svg]:size-[24px]',\n ],\n sheetTitle: 'min-w-0 flex-1 truncate text-title-medium text-on-surface',\n },\n variants: {\n variant: {\n standard: {\n heading: 'text-on-surface-variant',\n item: [\n 'data-disabled:text-on-surface/38',\n 'data-disabled:data-selected:bg-tertiary-container/38 data-disabled:data-selected:text-on-tertiary-container/38',\n ],\n icon: 'group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38',\n description:\n 'text-on-surface-variant group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38',\n trailing:\n 'group-data-selected/item:text-on-tertiary-container group-data-disabled/item:text-on-surface/38',\n },\n vibrant: {\n heading: 'text-on-tertiary-container',\n item: [\n 'data-disabled:text-on-tertiary-container/38',\n 'data-disabled:data-selected:bg-tertiary/38 data-disabled:data-selected:text-on-tertiary/38',\n ],\n icon: [\n 'group-data-hovered/item:text-tertiary group-data-focus-visible/item:text-tertiary group-data-pressed/item:text-tertiary',\n 'group-data-selected/item:text-on-tertiary',\n 'group-data-selected/item:group-data-hovered/item:text-on-tertiary',\n 'group-data-selected/item:group-data-focus-visible/item:text-on-tertiary',\n 'group-data-selected/item:group-data-pressed/item:text-on-tertiary',\n 'group-data-disabled/item:text-on-tertiary-container/38',\n ],\n description:\n 'text-on-tertiary-container group-data-selected/item:text-on-tertiary group-data-disabled/item:text-on-tertiary-container/38',\n trailing: [\n 'group-data-hovered/item:text-tertiary group-data-focus-visible/item:text-tertiary group-data-pressed/item:text-tertiary',\n 'group-data-selected/item:text-on-tertiary',\n 'group-data-selected/item:group-data-hovered/item:text-on-tertiary',\n 'group-data-selected/item:group-data-focus-visible/item:text-on-tertiary',\n 'group-data-selected/item:group-data-pressed/item:text-on-tertiary',\n 'group-data-disabled/item:text-on-tertiary-container/38',\n ],\n },\n },\n groupPosition: {\n only: { group: 'rounded-[var(--_md-comp-menus-container-shape)]' },\n first: { group: 'rounded-t-[var(--_md-comp-menus-container-shape)] rounded-b-corner-small' },\n middle: { group: 'rounded-corner-small' },\n last: { group: 'rounded-t-corner-small rounded-b-[var(--_md-comp-menus-container-shape)]' },\n },\n /**\n * The item's top corners: `nested` inside a 16px corner (12px), `outer` inside the\n * menu's morphing outer corner (`--m3-menu-corner` less the 4px padding), else 4px.\n */\n itemTop: {\n nested: { item: 'rounded-t-corner-medium' },\n outer: {\n item: 'rounded-t-[calc(var(--m3-menu-corner,var(--md-sys-shape-corner-large))-4px)]',\n },\n plain: { item: 'rounded-t-corner-extra-small' },\n },\n /** The item's bottom corners, as `itemTop`. */\n itemBottom: {\n nested: { item: 'rounded-b-corner-medium' },\n outer: {\n item: 'rounded-b-[calc(var(--m3-menu-corner,var(--md-sys-shape-corner-large))-4px)]',\n },\n plain: { item: 'rounded-b-corner-extra-small' },\n },\n /** Groups' outer corners follow `--m3-menu-corner` (the submenu morph). */\n morph: {\n true: {},\n false: {},\n },\n hasDescription: {\n true: { item: 'py-[calc(8px+var(--md-sys-density,0)*2px)]' },\n false: {},\n },\n /** Open and close with no motion (`instant`). */\n instant: {\n true: { reveal: '[transition-property:none]' },\n false: {},\n },\n /** In a bottom sheet: the list spans it, on the sheet's own surface. */\n embedded: {\n true: {},\n false: {},\n },\n /**\n * `gap`: every group is its own surface, and the list only scrolls (its 8px ring keeps\n * the groups' shadows); `divider`: the list is the one surface.\n */\n layout: {\n gap: {\n menu: [\n '-m-[8px] p-[8px] pointer-events-none gap-[2px] bg-transparent',\n 'min-w-[128px] max-w-[296px]',\n ],\n },\n divider: {\n menu: [\n 'pointer-events-auto min-w-[112px] max-w-[280px] p-[4px] shadow-[shadow:var(--_md-comp-menus-container-elevation)]',\n 'forced-colors:outline-solid forced-colors:outline-1 forced-colors:outline-[CanvasText]',\n 'rounded-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]',\n '[transition-property:border-radius]',\n '[transition-duration:var(--md-sys-motion-spring-spatial-fast-duration)]',\n '[transition-timing-function:var(--md-sys-motion-spring-spatial-fast-easing)]',\n ],\n group: 'bg-transparent p-0 shadow-none forced-colors:outline-none',\n },\n },\n },\n compoundVariants: [\n {\n morph: true,\n groupPosition: 'only',\n class: { group: 'rounded-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]' },\n },\n {\n morph: true,\n groupPosition: 'first',\n class: {\n group:\n 'rounded-t-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))] rounded-b-corner-small',\n },\n },\n {\n morph: true,\n groupPosition: 'last',\n class: {\n group:\n 'rounded-t-corner-small rounded-b-[var(--m3-menu-corner,var(--md-sys-shape-corner-large))]',\n },\n },\n // A divider layout's groups are plain sections of the one surface.\n { layout: 'divider', class: { group: 'rounded-none' } },\n // In a sheet the list has no surface, shadow or width limits of its own.\n {\n embedded: true,\n class: {\n menu: 'w-full max-w-none min-w-0 rounded-none bg-transparent p-0 shadow-none forced-colors:outline-none',\n },\n },\n ],\n defaultVariants: {\n variant: 'standard',\n layout: 'gap',\n morph: false,\n groupPosition: 'only',\n itemTop: 'plain',\n itemBottom: 'plain',\n hasDescription: false,\n instant: false,\n embedded: false,\n },\n});\n\n/**\n * The variants of {@link menuStyles}, for building on its styles. They are the recipe's keys, not\n * component props: their names (`hasIcon`, `isOpen`…) follow the classes and may change.\n */\nexport type MenuStyleProps = VariantProps<typeof menuStyles>;\nexport type MenuVariant = NonNullable<MenuStyleProps['variant']>;\nexport type MenuLayout = NonNullable<MenuStyleProps['layout']>;\n"],"mappings":";;;;;;;AAiDA,MAAa,sBAAsB;CACjC;CACA;CACA;AACF;;;;;;;;;AAUA,MAAa,eAAe;AAE5B,MAAa,aAAa,GAAG;CAC3B,OAAO;EAKL,SAAS;EAOT,QAAQ;GACN;GACA;GACA;GACA;GAIA;GAGA;GAGA;GACA;GACA;GACA;EACF;EAKA,MAAM;GACJ;GACA,GAAG;GACH;GACA;GACA;EACF;EACA,OAAO;GACL;GAGA;GACA;GACA;GACA;EACF;EAEA,SAAS;EAET,SAAS;EACT,MAAM;GACJ;GACA;GACA;GACA;GACA;GACA;EACF;EACA,cAAc;GACZ;GACA;GACA;GACA;GACA;EACF;EACA,mBAAmB;EACnB,MAAM;EACN,MAAM;EACN,aAAa;EACb,UACE;EACF,OAAO;EAGP,cAAc;GACZ;GACA;GACA;EACF;EAEA,YAAY;GACV;GACA;GACA;GACA;EACF;EACA,aAAa;EACb,WAAW,CACT,mGACA,oEACF;EACA,YAAY;CACd;CACA,UAAU;EACR,SAAS;GACP,UAAU;IACR,SAAS;IACT,MAAM,CACJ,oCACA,gHACF;IACA,MAAM;IACN,aACE;IACF,UACE;GACJ;GACA,SAAS;IACP,SAAS;IACT,MAAM,CACJ,+CACA,4FACF;IACA,MAAM;KACJ;KACA;KACA;KACA;KACA;KACA;IACF;IACA,aACE;IACF,UAAU;KACR;KACA;KACA;KACA;KACA;KACA;IACF;GACF;EACF;EACA,eAAe;GACb,MAAM,EAAE,OAAO,kDAAkD;GACjE,OAAO,EAAE,OAAO,2EAA2E;GAC3F,QAAQ,EAAE,OAAO,uBAAuB;GACxC,MAAM,EAAE,OAAO,2EAA2E;EAC5F;;;;;EAKA,SAAS;GACP,QAAQ,EAAE,MAAM,0BAA0B;GAC1C,OAAO,EACL,MAAM,+EACR;GACA,OAAO,EAAE,MAAM,+BAA+B;EAChD;;EAEA,YAAY;GACV,QAAQ,EAAE,MAAM,0BAA0B;GAC1C,OAAO,EACL,MAAM,+EACR;GACA,OAAO,EAAE,MAAM,+BAA+B;EAChD;;EAEA,OAAO;GACL,MAAM,CAAC;GACP,OAAO,CAAC;EACV;EACA,gBAAgB;GACd,MAAM,EAAE,MAAM,6CAA6C;GAC3D,OAAO,CAAC;EACV;;EAEA,SAAS;GACP,MAAM,EAAE,QAAQ,6BAA6B;GAC7C,OAAO,CAAC;EACV;;EAEA,UAAU;GACR,MAAM,CAAC;GACP,OAAO,CAAC;EACV;;;;;EAKA,QAAQ;GACN,KAAK,EACH,MAAM,CACJ,iEACA,6BACF,EACF;GACA,SAAS;IACP,MAAM;KACJ;KACA;KACA;KACA;KACA;KACA;IACF;IACA,OAAO;GACT;EACF;CACF;CACA,kBAAkB;EAChB;GACE,OAAO;GACP,eAAe;GACf,OAAO,EAAE,OAAO,mEAAmE;EACrF;EACA;GACE,OAAO;GACP,eAAe;GACf,OAAO,EACL,OACE,4FACJ;EACF;EACA;GACE,OAAO;GACP,eAAe;GACf,OAAO,EACL,OACE,4FACJ;EACF;EAEA;GAAE,QAAQ;GAAW,OAAO,EAAE,OAAO,eAAe;EAAE;EAEtD;GACE,UAAU;GACV,OAAO,EACL,MAAM,mGACR;EACF;CACF;CACA,iBAAiB;EACf,SAAS;EACT,QAAQ;EACR,OAAO;EACP,eAAe;EACf,SAAS;EACT,YAAY;EACZ,gBAAgB;EAChB,SAAS;EACT,UAAU;CACZ;AACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ComponentTokenSet } from "../../tokens/component.js";
2
+ import "../../index.js";
3
+ //#region src/components/menu/menu-tokens.d.ts
4
+ /** The tokens of {@link Menu}: `--md-comp-menus-<part>` and `--md-comp-menus-standard-<part>`. */
5
+ export declare const menuTokenSet: ComponentTokenSet<"container-shape" | "container-elevation">;
6
+ //#endregion
7
+ //# sourceMappingURL=menu-tokens.d.ts.map
@@ -0,0 +1,93 @@
1
+ import { color, corner, defineComponentTokens, elevation } from "../../tokens/component.js";
2
+ //#region src/components/menu/menu-tokens.ts
3
+ /** The tokens of {@link Menu}: `--md-comp-menus-<part>` and `--md-comp-menus-standard-<part>`. */
4
+ const menuTokenSet = defineComponentTokens({
5
+ name: "md-comp-menus",
6
+ tokens: {
7
+ "container-elevation": {
8
+ value: elevation(2),
9
+ description: "The menu's shadow (each group's, in the gap layout).",
10
+ compose: "MenuTokens.ContainerElevation",
11
+ paints: { property: "box-shadow" }
12
+ },
13
+ "container-shape": {
14
+ value: corner("large"),
15
+ description: "The menu's outer corners at rest.",
16
+ compose: "MenuTokens.ContainerShape",
17
+ paints: { property: "border-top-left-radius" }
18
+ }
19
+ },
20
+ scopes: { variant: {
21
+ standard: {
22
+ prefix: "md-comp-menus-standard",
23
+ tokens: {
24
+ "container-color": {
25
+ value: color("surface-container-low"),
26
+ description: "The menu (each group, in the gap layout).",
27
+ compose: "StandardMenuTokens.ContainerColor",
28
+ paints: { property: "background-color" }
29
+ },
30
+ "menu-item-label-text-color": {
31
+ value: color("on-surface"),
32
+ description: "An item’s label.",
33
+ compose: "StandardMenuTokens.ItemLabelTextColor",
34
+ paints: {
35
+ property: "color",
36
+ slot: "item"
37
+ }
38
+ },
39
+ "menu-item-leading-icon-color": {
40
+ value: color("on-surface-variant"),
41
+ description: "An item’s leading icon.",
42
+ compose: "StandardMenuTokens.ItemLeadingIconColor",
43
+ paints: {
44
+ property: "color",
45
+ slot: "leading-icon"
46
+ }
47
+ },
48
+ "menu-item-trailing-icon-color": {
49
+ value: color("on-surface-variant"),
50
+ description: "An item’s trailing icon, keyboard shortcut or trailing text.",
51
+ compose: "StandardMenuTokens.ItemTrailingIconColor",
52
+ paints: {
53
+ property: "color",
54
+ slot: "trailing-icon"
55
+ }
56
+ },
57
+ "menu-item-selected-container-color": {
58
+ value: color("tertiary-container"),
59
+ description: "A selected item.",
60
+ compose: "StandardMenuTokens.ItemSelectedContainerColor",
61
+ paints: {
62
+ property: "background-color",
63
+ state: "selected"
64
+ }
65
+ },
66
+ "menu-item-selected-label-text-color": {
67
+ value: color("on-tertiary-container"),
68
+ description: "A selected item’s label.",
69
+ compose: "StandardMenuTokens.ItemSelectedLabelTextColor",
70
+ paints: {
71
+ property: "color",
72
+ state: "selected"
73
+ }
74
+ }
75
+ }
76
+ },
77
+ vibrant: {
78
+ prefix: "md-comp-menus-vibrant",
79
+ fixed: {
80
+ "container-color": color("tertiary-container"),
81
+ "menu-item-label-text-color": color("on-tertiary-container"),
82
+ "menu-item-leading-icon-color": color("on-tertiary-container"),
83
+ "menu-item-trailing-icon-color": color("on-tertiary-container"),
84
+ "menu-item-selected-container-color": color("tertiary"),
85
+ "menu-item-selected-label-text-color": color("on-tertiary")
86
+ }
87
+ }
88
+ } }
89
+ });
90
+ //#endregion
91
+ export { menuTokenSet };
92
+
93
+ //# sourceMappingURL=menu-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-tokens.js","names":[],"sources":["../../../src/components/menu/menu-tokens.ts"],"sourcesContent":["import { color, corner, defineComponentTokens, elevation } from '../../tokens/component';\n\n/*\n * The menu's component tokens, M3 Expressive's `md.comp.menus.*` (common) and\n * `md.comp.menus.standard.*` names (checked against m3.material.io's token tables,\n * 2026-10-14; `md.comp.menu.*` is the baseline set), with the defaults of `menu-styles.ts`.\n *\n * The menu, its items, and Select's and Autocomplete's option lists (which share the menu's\n * styles) carry `data-tokens=\"md-comp-menus\"` and `data-variant`, so an item's own state\n * (`data-selected`) picks its colours. The vibrant menu's colours have no public names yet\n * (fixed below). The container shape is the menu's outer corner at rest: the submenu morph's\n * active and inactive corners, hover, focus, press, disabled and the selected item's icon\n * colours stay classes.\n */\n\n/** The tokens of {@link Menu}: `--md-comp-menus-<part>` and `--md-comp-menus-standard-<part>`. */\nexport const menuTokenSet = defineComponentTokens({\n name: 'md-comp-menus',\n tokens: {\n 'container-elevation': {\n value: elevation(2),\n description: \"The menu's shadow (each group's, in the gap layout).\",\n compose: 'MenuTokens.ContainerElevation',\n paints: { property: 'box-shadow' },\n },\n 'container-shape': {\n value: corner('large'),\n description: \"The menu's outer corners at rest.\",\n compose: 'MenuTokens.ContainerShape',\n paints: { property: 'border-top-left-radius' },\n },\n },\n scopes: {\n variant: {\n standard: {\n prefix: 'md-comp-menus-standard',\n tokens: {\n 'container-color': {\n value: color('surface-container-low'),\n description: 'The menu (each group, in the gap layout).',\n compose: 'StandardMenuTokens.ContainerColor',\n paints: { property: 'background-color' },\n },\n 'menu-item-label-text-color': {\n value: color('on-surface'),\n description: 'An item’s label.',\n compose: 'StandardMenuTokens.ItemLabelTextColor',\n paints: { property: 'color', slot: 'item' },\n },\n 'menu-item-leading-icon-color': {\n value: color('on-surface-variant'),\n description: 'An item’s leading icon.',\n compose: 'StandardMenuTokens.ItemLeadingIconColor',\n paints: { property: 'color', slot: 'leading-icon' },\n },\n 'menu-item-trailing-icon-color': {\n value: color('on-surface-variant'),\n description: 'An item’s trailing icon, keyboard shortcut or trailing text.',\n compose: 'StandardMenuTokens.ItemTrailingIconColor',\n paints: { property: 'color', slot: 'trailing-icon' },\n },\n 'menu-item-selected-container-color': {\n value: color('tertiary-container'),\n description: 'A selected item.',\n compose: 'StandardMenuTokens.ItemSelectedContainerColor',\n paints: { property: 'background-color', state: 'selected' },\n },\n 'menu-item-selected-label-text-color': {\n value: color('on-tertiary-container'),\n description: 'A selected item’s label.',\n compose: 'StandardMenuTokens.ItemSelectedLabelTextColor',\n paints: { property: 'color', state: 'selected' },\n },\n },\n },\n vibrant: {\n prefix: 'md-comp-menus-vibrant',\n fixed: {\n 'container-color': color('tertiary-container'),\n 'menu-item-label-text-color': color('on-tertiary-container'),\n 'menu-item-leading-icon-color': color('on-tertiary-container'),\n 'menu-item-trailing-icon-color': color('on-tertiary-container'),\n 'menu-item-selected-container-color': color('tertiary'),\n 'menu-item-selected-label-text-color': color('on-tertiary'),\n },\n },\n },\n },\n});\n"],"mappings":";;;AAgBA,MAAa,eAAe,sBAAsB;CAChD,MAAM;CACN,QAAQ;EACN,uBAAuB;GACrB,OAAO,UAAU,CAAC;GAClB,aAAa;GACb,SAAS;GACT,QAAQ,EAAE,UAAU,aAAa;EACnC;EACA,mBAAmB;GACjB,OAAO,OAAO,OAAO;GACrB,aAAa;GACb,SAAS;GACT,QAAQ,EAAE,UAAU,yBAAyB;EAC/C;CACF;CACA,QAAQ,EACN,SAAS;EACP,UAAU;GACR,QAAQ;GACR,QAAQ;IACN,mBAAmB;KACjB,OAAO,MAAM,uBAAuB;KACpC,aAAa;KACb,SAAS;KACT,QAAQ,EAAE,UAAU,mBAAmB;IACzC;IACA,8BAA8B;KAC5B,OAAO,MAAM,YAAY;KACzB,aAAa;KACb,SAAS;KACT,QAAQ;MAAE,UAAU;MAAS,MAAM;KAAO;IAC5C;IACA,gCAAgC;KAC9B,OAAO,MAAM,oBAAoB;KACjC,aAAa;KACb,SAAS;KACT,QAAQ;MAAE,UAAU;MAAS,MAAM;KAAe;IACpD;IACA,iCAAiC;KAC/B,OAAO,MAAM,oBAAoB;KACjC,aAAa;KACb,SAAS;KACT,QAAQ;MAAE,UAAU;MAAS,MAAM;KAAgB;IACrD;IACA,sCAAsC;KACpC,OAAO,MAAM,oBAAoB;KACjC,aAAa;KACb,SAAS;KACT,QAAQ;MAAE,UAAU;MAAoB,OAAO;KAAW;IAC5D;IACA,uCAAuC;KACrC,OAAO,MAAM,uBAAuB;KACpC,aAAa;KACb,SAAS;KACT,QAAQ;MAAE,UAAU;MAAS,OAAO;KAAW;IACjD;GACF;EACF;EACA,SAAS;GACP,QAAQ;GACR,OAAO;IACL,mBAAmB,MAAM,oBAAoB;IAC7C,8BAA8B,MAAM,uBAAuB;IAC3D,gCAAgC,MAAM,uBAAuB;IAC7D,iCAAiC,MAAM,uBAAuB;IAC9D,sCAAsC,MAAM,UAAU;IACtD,uCAAuC,MAAM,aAAa;GAC5D;EACF;CACF,EACF;AACF,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { ReactNode, RefObject } from "react";
2
+ import "react-aria";
3
+ import "react-stately";
4
+ //#region src/components/menu/menu-trigger.d.ts
5
+ export interface MenuTriggerProps {
6
+ /** The trigger (a Button, IconButton, …) followed by the `Menu`. */
7
+ children: ReactNode;
8
+ /** Whether the menu is open (controlled). */
9
+ open?: boolean;
10
+ /** Whether the menu starts open, when uncontrolled. @default false */
11
+ defaultOpen?: boolean;
12
+ /** Called when the menu opens or closes. */
13
+ onOpenChange?: (open: boolean) => void;
14
+ }
15
+ /**
16
+ * Opens a `Menu` from a button: on press, or with Enter, Space and the arrow keys.
17
+ * The first child is the trigger (any button-like component); the rest is the menu.
18
+ * While the menu is open the trigger keeps a pressed state layer (`data-menu-open`), as
19
+ * M3 asks, however the menu was opened.
20
+ */
21
+ export declare function MenuTrigger({ children, open, defaultOpen, onOpenChange }: MenuTriggerProps): import("react").JSX.Element;
22
+ export interface ContextMenuTriggerProps {
23
+ /** The content the menu belongs to, followed by the `Menu`. */
24
+ children: ReactNode;
25
+ /** Whether the menu is open (controlled). */
26
+ open?: boolean;
27
+ /** Whether the menu starts open, when uncontrolled. @default false */
28
+ defaultOpen?: boolean;
29
+ /** Called when the menu opens or closes. */
30
+ onOpenChange?: (open: boolean) => void;
31
+ /** Ignore secondary clicks and long presses. @default false */
32
+ disabled?: boolean;
33
+ }
34
+ /**
35
+ * Opens a `Menu` as a context menu (M3: "A secondary click, like a right-click on a mouse
36
+ * or a two-finger tap on a trackpad, opens a context menu"): a secondary click, Shift +
37
+ * F10 or a long press on a touch screen opens it at the pointer (React Aria
38
+ * `useMenuTrigger` with `trigger: 'contextMenu'`). The first child is the content the menu
39
+ * belongs to, wrapped in a `display: contents` element so its layout doesn't change; the
40
+ * rest is the menu. Make that content focusable (a link, a button or `tabIndex={0}`), so
41
+ * the keyboard can open the menu and Escape can return focus to it.
42
+ *
43
+ * @example
44
+ * <ContextMenuTrigger>
45
+ * <Card tabIndex={0}>…</Card>
46
+ * <Menu onAction={(key) => run(key)}>…</Menu>
47
+ * </ContextMenuTrigger>
48
+ */
49
+ export declare function ContextMenuTrigger({ children, open, defaultOpen, onOpenChange, disabled }: ContextMenuTriggerProps): import("react").JSX.Element;
50
+ //#endregion
51
+ //# sourceMappingURL=menu-trigger.d.ts.map
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import { TriggerContext, useTriggerProps } from "../../primitives/TriggerContext.js";
3
+ import { Children, createContext, useRef } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { useMenuTrigger } from "react-aria";
6
+ import { useMenuTriggerState } from "react-stately";
7
+ //#region src/components/menu/menu-trigger.tsx
8
+ /**
9
+ * The menu triggers, apart from the `Menu` itself, so a component can render a trigger and
10
+ * load its menu only when needed (`ButtonGroup`'s overflow menu) without carrying the
11
+ * menu's code up front.
12
+ */
13
+ const omitLabelledBy = ({ "aria-labelledby": _, ...props }) => props;
14
+ const MenuTriggerContext = createContext(null);
15
+ /**
16
+ * A menu opens on pointer down and takes focus, and React Aria then hides the rest of
17
+ * the page, trigger included, from assistive tech. The browser's follow-up `mousedown` on
18
+ * the trigger would try to focus it there and drop focus on `<body>`, out of the menu.
19
+ * React Aria has already focused the trigger on pointer down, so the default is not needed.
20
+ */
21
+ const keepMenuFocus = (event) => event.preventDefault();
22
+ /**
23
+ * Opens a `Menu` from a button: on press, or with Enter, Space and the arrow keys.
24
+ * The first child is the trigger (any button-like component); the rest is the menu.
25
+ * While the menu is open the trigger keeps a pressed state layer (`data-menu-open`), as
26
+ * M3 asks, however the menu was opened.
27
+ */
28
+ function MenuTrigger({ children, open, defaultOpen, onOpenChange }) {
29
+ const state = useMenuTriggerState({
30
+ isOpen: open,
31
+ defaultOpen,
32
+ onOpenChange
33
+ });
34
+ const triggerRef = useRef(null);
35
+ const { menuTriggerProps, menuProps } = useMenuTrigger({}, state, triggerRef);
36
+ const triggerValue = useTriggerProps({
37
+ ...menuTriggerProps,
38
+ "data-menu-open": state.isOpen || void 0,
39
+ onMouseDown: keepMenuFocus,
40
+ ref: triggerRef
41
+ });
42
+ const [trigger, ...menu] = Children.toArray(children);
43
+ return /* @__PURE__ */ jsxs(MenuTriggerContext, {
44
+ value: {
45
+ state,
46
+ triggerRef,
47
+ menuProps
48
+ },
49
+ children: [/* @__PURE__ */ jsx(TriggerContext, {
50
+ value: triggerValue,
51
+ children: trigger
52
+ }), menu]
53
+ });
54
+ }
55
+ /**
56
+ * Opens a `Menu` as a context menu (M3: "A secondary click, like a right-click on a mouse
57
+ * or a two-finger tap on a trackpad, opens a context menu"): a secondary click, Shift +
58
+ * F10 or a long press on a touch screen opens it at the pointer (React Aria
59
+ * `useMenuTrigger` with `trigger: 'contextMenu'`). The first child is the content the menu
60
+ * belongs to, wrapped in a `display: contents` element so its layout doesn't change; the
61
+ * rest is the menu. Make that content focusable (a link, a button or `tabIndex={0}`), so
62
+ * the keyboard can open the menu and Escape can return focus to it.
63
+ *
64
+ * @example
65
+ * <ContextMenuTrigger>
66
+ * <Card tabIndex={0}>…</Card>
67
+ * <Menu onAction={(key) => run(key)}>…</Menu>
68
+ * </ContextMenuTrigger>
69
+ */
70
+ function ContextMenuTrigger({ children, open, defaultOpen, onOpenChange, disabled }) {
71
+ const state = useMenuTriggerState({
72
+ isOpen: open,
73
+ defaultOpen,
74
+ onOpenChange
75
+ });
76
+ const triggerRef = useRef(null);
77
+ const { menuTriggerProps, menuProps } = useMenuTrigger({
78
+ trigger: "contextMenu",
79
+ isDisabled: disabled
80
+ }, state, triggerRef);
81
+ const [target, ...menu] = Children.toArray(children);
82
+ return /* @__PURE__ */ jsxs(MenuTriggerContext, {
83
+ value: {
84
+ state,
85
+ triggerRef,
86
+ menuProps: omitLabelledBy(menuProps)
87
+ },
88
+ children: [/* @__PURE__ */ jsx("div", {
89
+ ...menuTriggerProps,
90
+ ref: triggerRef,
91
+ "data-context-menu-trigger": "",
92
+ className: "contents",
93
+ children: target
94
+ }), menu]
95
+ });
96
+ }
97
+ //#endregion
98
+ export { ContextMenuTrigger, MenuTrigger, MenuTriggerContext };
99
+
100
+ //# sourceMappingURL=menu-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-trigger.js","names":[],"sources":["../../../src/components/menu/menu-trigger.tsx"],"sourcesContent":["'use client';\n\n/**\n * The menu triggers, apart from the `Menu` itself, so a component can render a trigger and\n * load its menu only when needed (`ButtonGroup`'s overflow menu) without carrying the\n * menu's code up front.\n */\nimport {\n Children,\n createContext,\n useRef,\n type MouseEvent,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { useMenuTrigger, type AriaMenuOptions } from 'react-aria';\nimport { useMenuTriggerState, type RootMenuTriggerState } from 'react-stately';\nimport {\n TriggerContext,\n useTriggerProps,\n type TriggerContextValue,\n} from '../../primitives/TriggerContext';\n\n/** What a trigger shares with its `Menu`. */\nexport interface MenuTriggerContextValue {\n state: RootMenuTriggerState;\n triggerRef: RefObject<HTMLElement | null>;\n menuProps: AriaMenuOptions<unknown>;\n}\n\nconst omitLabelledBy = ({ 'aria-labelledby': _, ...props }: AriaMenuOptions<unknown>) => props;\n\nexport const MenuTriggerContext = createContext<MenuTriggerContextValue | null>(null);\n\nexport interface MenuTriggerProps {\n /** The trigger (a Button, IconButton, …) followed by the `Menu`. */\n children: ReactNode;\n /** Whether the menu is open (controlled). */\n open?: boolean;\n /** Whether the menu starts open, when uncontrolled. @default false */\n defaultOpen?: boolean;\n /** Called when the menu opens or closes. */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * A menu opens on pointer down and takes focus, and React Aria then hides the rest of\n * the page, trigger included, from assistive tech. The browser's follow-up `mousedown` on\n * the trigger would try to focus it there and drop focus on `<body>`, out of the menu.\n * React Aria has already focused the trigger on pointer down, so the default is not needed.\n */\nconst keepMenuFocus = (event: MouseEvent) => event.preventDefault();\n\n/**\n * Opens a `Menu` from a button: on press, or with Enter, Space and the arrow keys.\n * The first child is the trigger (any button-like component); the rest is the menu.\n * While the menu is open the trigger keeps a pressed state layer (`data-menu-open`), as\n * M3 asks, however the menu was opened.\n */\nexport function MenuTrigger({ children, open, defaultOpen, onOpenChange }: MenuTriggerProps) {\n const state = useMenuTriggerState({ isOpen: open, defaultOpen, onOpenChange });\n const triggerRef = useRef<HTMLElement>(null);\n const { menuTriggerProps, menuProps } = useMenuTrigger({}, state, triggerRef);\n // Merged into an enclosing trigger's props, so a TooltipTrigger around it still works.\n const triggerValue = useTriggerProps({\n ...(menuTriggerProps as TriggerContextValue),\n 'data-menu-open': state.isOpen || undefined,\n onMouseDown: keepMenuFocus,\n ref: triggerRef,\n });\n const [trigger, ...menu] = Children.toArray(children);\n return (\n <MenuTriggerContext value={{ state, triggerRef, menuProps }}>\n <TriggerContext value={triggerValue}>{trigger}</TriggerContext>\n {menu}\n </MenuTriggerContext>\n );\n}\n\nexport interface ContextMenuTriggerProps {\n /** The content the menu belongs to, followed by the `Menu`. */\n children: ReactNode;\n /** Whether the menu is open (controlled). */\n open?: boolean;\n /** Whether the menu starts open, when uncontrolled. @default false */\n defaultOpen?: boolean;\n /** Called when the menu opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /** Ignore secondary clicks and long presses. @default false */\n disabled?: boolean;\n}\n\n/**\n * Opens a `Menu` as a context menu (M3: \"A secondary click, like a right-click on a mouse\n * or a two-finger tap on a trackpad, opens a context menu\"): a secondary click, Shift +\n * F10 or a long press on a touch screen opens it at the pointer (React Aria\n * `useMenuTrigger` with `trigger: 'contextMenu'`). The first child is the content the menu\n * belongs to, wrapped in a `display: contents` element so its layout doesn't change; the\n * rest is the menu. Make that content focusable (a link, a button or `tabIndex={0}`), so\n * the keyboard can open the menu and Escape can return focus to it.\n *\n * @example\n * <ContextMenuTrigger>\n * <Card tabIndex={0}>…</Card>\n * <Menu onAction={(key) => run(key)}>…</Menu>\n * </ContextMenuTrigger>\n */\nexport function ContextMenuTrigger({\n children,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n}: ContextMenuTriggerProps) {\n const state = useMenuTriggerState({ isOpen: open, defaultOpen, onOpenChange });\n const triggerRef = useRef<HTMLDivElement>(null);\n const { menuTriggerProps, menuProps } = useMenuTrigger(\n { trigger: 'contextMenu', isDisabled: disabled },\n state,\n triggerRef,\n );\n const [target, ...menu] = Children.toArray(children);\n // React Aria names the menu after its trigger, here the whole content: name it with the\n // `Menu`'s own `aria-label` instead.\n return (\n <MenuTriggerContext value={{ state, triggerRef, menuProps: omitLabelledBy(menuProps) }}>\n <div\n {...(menuTriggerProps as TriggerContextValue)}\n ref={triggerRef}\n data-context-menu-trigger=\"\"\n className=\"contents\"\n >\n {target}\n </div>\n {menu}\n </MenuTriggerContext>\n );\n}\n"],"mappings":";;;;;;;;;;;;AA8BA,MAAM,kBAAkB,EAAE,mBAAmB,GAAG,GAAG,YAAsC;AAEzF,MAAa,qBAAqB,cAA8C,IAAI;;;;;;;AAmBpF,MAAM,iBAAiB,UAAsB,MAAM,eAAe;;;;;;;AAQlE,SAAgB,YAAY,EAAE,UAAU,MAAM,aAAa,gBAAkC;CAC3F,MAAM,QAAQ,oBAAoB;EAAE,QAAQ;EAAM;EAAa;CAAa,CAAC;CAC7E,MAAM,aAAa,OAAoB,IAAI;CAC3C,MAAM,EAAE,kBAAkB,cAAc,eAAe,CAAC,GAAG,OAAO,UAAU;CAE5E,MAAM,eAAe,gBAAgB;EACnC,GAAI;EACJ,kBAAkB,MAAM,UAAU,KAAA;EAClC,aAAa;EACb,KAAK;CACP,CAAC;CACD,MAAM,CAAC,SAAS,GAAG,QAAQ,SAAS,QAAQ,QAAQ;CACpD,OACE,qBAAC,oBAAD;EAAoB,OAAO;GAAE;GAAO;GAAY;EAAU;EAA1D,UAAA,CACE,oBAAC,gBAAD;GAAgB,OAAO;GAAe,UAAA;EAAwB,CAAA,GAC7D,IACiB;;AAExB;;;;;;;;;;;;;;;;AA8BA,SAAgB,mBAAmB,EACjC,UACA,MACA,aACA,cACA,YAC0B;CAC1B,MAAM,QAAQ,oBAAoB;EAAE,QAAQ;EAAM;EAAa;CAAa,CAAC;CAC7E,MAAM,aAAa,OAAuB,IAAI;CAC9C,MAAM,EAAE,kBAAkB,cAAc,eACtC;EAAE,SAAS;EAAe,YAAY;CAAS,GAC/C,OACA,UACF;CACA,MAAM,CAAC,QAAQ,GAAG,QAAQ,SAAS,QAAQ,QAAQ;CAGnD,OACE,qBAAC,oBAAD;EAAoB,OAAO;GAAE;GAAO;GAAY,WAAW,eAAe,SAAS;EAAE;EAArF,UAAA,CACE,oBAAC,OAAD;GACE,GAAK;GACL,KAAK;GACL,6BAA0B;GAC1B,WAAU;GAET,UAAA;EACE,CAAA,GACJ,IACiB;;AAExB"}
@@ -0,0 +1,42 @@
1
+ "use client";
2
+ import { useLayoutEffect, useState } from "react";
3
+ //#region src/components/menu/use-reveal-entering.ts
4
+ /**
5
+ * Holds a menu's reveal closed (`data-entering`) until React Aria has placed it, then lets
6
+ * it open, so it grows from the edge nearest its anchor.
7
+ *
8
+ * The reveal's closed clip depends on `data-placement` (from the top below the anchor, from
9
+ * the bottom above it, from the side beside it). A `@starting-style` rule is read the first
10
+ * time the element's style is resolved, which React Aria's measuring forces before it has
11
+ * set the placement, so every menu used to open from its top edge. Instead, the closed state
12
+ * is a class with no transition: once the placement is known (before the first paint, as
13
+ * React Aria places in a layout effect), the closed clip for that edge is resolved and the
14
+ * class removed, and the clip and opacity transition open from there.
15
+ *
16
+ * Should the placement never arrive, the menu opens on the next frame anyway.
17
+ */
18
+ function useRevealEntering(placement, ref) {
19
+ const [entering, setEntering] = useState(true);
20
+ useLayoutEffect(() => {
21
+ if (!entering) return;
22
+ const open = () => {
23
+ if (ref.current) getComputedStyle(ref.current).clipPath;
24
+ setEntering(false);
25
+ };
26
+ if (placement) {
27
+ open();
28
+ return;
29
+ }
30
+ const frame = requestAnimationFrame(open);
31
+ return () => cancelAnimationFrame(frame);
32
+ }, [
33
+ entering,
34
+ placement,
35
+ ref
36
+ ]);
37
+ return entering;
38
+ }
39
+ //#endregion
40
+ export { useRevealEntering };
41
+
42
+ //# sourceMappingURL=use-reveal-entering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-reveal-entering.js","names":[],"sources":["../../../src/components/menu/use-reveal-entering.ts"],"sourcesContent":["'use client';\n\nimport { useLayoutEffect, useState, type RefObject } from 'react';\n\n/**\n * Holds a menu's reveal closed (`data-entering`) until React Aria has placed it, then lets\n * it open, so it grows from the edge nearest its anchor.\n *\n * The reveal's closed clip depends on `data-placement` (from the top below the anchor, from\n * the bottom above it, from the side beside it). A `@starting-style` rule is read the first\n * time the element's style is resolved, which React Aria's measuring forces before it has\n * set the placement, so every menu used to open from its top edge. Instead, the closed state\n * is a class with no transition: once the placement is known (before the first paint, as\n * React Aria places in a layout effect), the closed clip for that edge is resolved and the\n * class removed, and the clip and opacity transition open from there.\n *\n * Should the placement never arrive, the menu opens on the next frame anyway.\n */\nexport function useRevealEntering(\n placement: string | null | undefined,\n ref: RefObject<HTMLElement | null>,\n) {\n const [entering, setEntering] = useState(true);\n useLayoutEffect(() => {\n if (!entering) return;\n const open = () => {\n // Resolve the closed state for this placement, so the transition starts from it.\n if (ref.current) void getComputedStyle(ref.current).clipPath;\n setEntering(false);\n };\n if (placement) {\n open();\n return;\n }\n const frame = requestAnimationFrame(open);\n return () => cancelAnimationFrame(frame);\n }, [entering, placement, ref]);\n return entering;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAgB,kBACd,WACA,KACA;CACA,MAAM,CAAC,UAAU,eAAe,SAAS,IAAI;CAC7C,sBAAsB;EACpB,IAAI,CAAC,UAAU;EACf,MAAM,aAAa;GAEjB,IAAI,IAAI,SAAS,iBAAsB,IAAI,OAAO,CAAC,CAAC;GACpD,YAAY,KAAK;EACnB;EACA,IAAI,WAAW;GACb,KAAK;GACL;EACF;EACA,MAAM,QAAQ,sBAAsB,IAAI;EACxC,aAAa,qBAAqB,KAAK;CACzC,GAAG;EAAC;EAAU;EAAW;CAAG,CAAC;CAC7B,OAAO;AACT"}