@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 @@
1
+ {"version":3,"file":"Divider.js","names":[],"sources":["../../../src/components/divider/Divider.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n dividerStyles,\n labeledDividerStyles,\n type DividerInset,\n type DividerOrientation,\n} from './divider-styles';\nimport { mergeDataTokens } from '../../utils/merge-data-tokens';\n\nexport interface DividerProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /**\n * A full-width horizontal line, or a vertical line the full height of a flex row.\n * @default \"horizontal\"\n */\n orientation?: DividerOrientation;\n /** Leave 16px at the start, or at both ends. @default \"none\" */\n inset?: DividerInset;\n /**\n * M3 dividers are decorative, so by default the line is hidden from assistive tech\n * (`role=\"none\"`). Set `decorative={false}` where the line marks a real break between\n * groups of content, to expose it as a `separator`. @default true\n */\n decorative?: boolean;\n}\n\n/**\n * M3 divider: a 1px `outline-variant` line, horizontal (full width) or vertical (full\n * height of a flex row), optionally inset. It's decorative (M3: \"Dividers are decorative\n * elements\") unless `decorative={false}` makes it a `separator`.\n *\n * @example\n * <Divider />\n * <Divider orientation=\"vertical\" inset=\"middle\" />\n */\nexport function Divider({\n orientation = 'horizontal',\n inset,\n decorative = true,\n className,\n ...rest\n}: DividerProps) {\n return (\n <div\n {...rest}\n // The component token's hook (divider-tokens.ts).\n data-tokens={mergeDataTokens('md-comp-divider', rest)}\n role={decorative ? 'none' : 'separator'}\n aria-orientation={decorative || orientation === 'horizontal' ? undefined : 'vertical'}\n className={dividerStyles({ orientation, inset, class: className })}\n />\n );\n}\n\nexport interface LabeledDividerClassNames {\n /** The wrapper around the line and the text. */\n root?: string;\n /** The line. */\n divider?: string;\n /** The supporting text. */\n label?: string;\n}\n\nexport interface LabeledDividerProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /** The supporting text below the line, e.g. a section's name. */\n children: ReactNode;\n /** Leave 16px at the start, or at both ends, of the line and the text. @default \"none\" */\n inset?: DividerInset;\n /**\n * The line is hidden from assistive tech, not the text; `decorative={false}` exposes it\n * as a `separator`. @default true\n */\n decorative?: boolean;\n /** Classes for each part, by slot. `classNames.root` is merged with `className`. */\n classNames?: LabeledDividerClassNames;\n}\n\n/**\n * M3 divider with supporting text: a horizontal divider with a short text 4px below it,\n * 8px clear at the end and below, such as the name of the section that follows.\n *\n * @example\n * <LabeledDivider inset=\"start\">Earlier this week</LabeledDivider>\n */\nexport function LabeledDivider({\n children,\n inset,\n decorative = true,\n classNames,\n className,\n ...rest\n}: LabeledDividerProps) {\n const styles = labeledDividerStyles({ inset });\n return (\n <div {...rest} className={styles.root({ class: cn(classNames?.root, className) })}>\n <Divider inset={inset} decorative={decorative} className={classNames?.divider} />\n <div className={styles.label({ class: classNames?.label })}>{children}</div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAmCA,SAAgB,QAAQ,EACtB,cAAc,cACd,OACA,aAAa,MACb,WACA,GAAG,QACY;CACf,OACE,oBAAC,OAAD;EACE,GAAI;EAEJ,eAAa,gBAAgB,mBAAmB,IAAI;EACpD,MAAM,aAAa,SAAS;EAC5B,oBAAkB,cAAc,gBAAgB,eAAe,KAAA,IAAY;EAC3E,WAAW,cAAc;GAAE;GAAa;GAAO,OAAO;EAAU,CAAC;CAClE,CAAA;AAEL;;;;;;;;AAgCA,SAAgB,eAAe,EAC7B,UACA,OACA,aAAa,MACb,YACA,WACA,GAAG,QACmB;CACtB,MAAM,SAAS,qBAAqB,EAAE,MAAM,CAAC;CAC7C,OACE,qBAAC,OAAD;EAAK,GAAI;EAAM,WAAW,OAAO,KAAK,EAAE,OAAO,GAAG,YAAY,MAAM,SAAS,EAAE,CAAC;EAAhF,UAAA,CACE,oBAAC,SAAD;GAAgB;GAAmB;GAAY,WAAW,YAAY;EAAU,CAAA,GAChF,oBAAC,OAAD;GAAK,WAAW,OAAO,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;GAAI;EAAc,CAAA,CACxE;;AAET"}
@@ -0,0 +1,90 @@
1
+ import { VariantProps } from "../../utils/tv.js";
2
+ //#region src/components/divider/divider-styles.d.ts
3
+ /** Variant definitions for {@link Divider}; extend them to add variants. */
4
+ export declare const dividerStyles: import("tailwind-variants").TVReturnType<{
5
+ orientation: {
6
+ horizontal: "h-px w-full";
7
+ vertical: "w-px self-stretch";
8
+ };
9
+ inset: {
10
+ none: "";
11
+ start: "";
12
+ middle: "";
13
+ };
14
+ }, undefined, string[], {
15
+ orientation: {
16
+ horizontal: "h-px w-full";
17
+ vertical: "w-px self-stretch";
18
+ };
19
+ inset: {
20
+ none: "";
21
+ start: "";
22
+ middle: "";
23
+ };
24
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
25
+ orientation: {
26
+ horizontal: "h-px w-full";
27
+ vertical: "w-px self-stretch";
28
+ };
29
+ inset: {
30
+ none: "";
31
+ start: "";
32
+ middle: "";
33
+ };
34
+ }, undefined>>;
35
+ /**
36
+ * Variant definitions for {@link LabeledDivider}: a divider with supporting text 4px below
37
+ * it, the text 8px clear of the end and 8px clear below (m3.material.io's divider
38
+ * measurements); the line itself runs the full width (2026-10-15: the end padding was on the
39
+ * root, which shortened the line by 8px). The spec
40
+ * names no type role for the text; it uses `label-small` in `on-surface-variant`.
41
+ */
42
+ export declare const labeledDividerStyles: import("tailwind-variants").TVReturnType<{
43
+ inset: {
44
+ none: {};
45
+ start: {
46
+ label: string;
47
+ };
48
+ middle: {
49
+ label: string;
50
+ };
51
+ };
52
+ }, {
53
+ root: string;
54
+ label: string;
55
+ }, undefined, {
56
+ inset: {
57
+ none: {};
58
+ start: {
59
+ label: string;
60
+ };
61
+ middle: {
62
+ label: string;
63
+ };
64
+ };
65
+ }, {
66
+ root: string;
67
+ label: string;
68
+ }, import("tailwind-variants").TVReturnTypeLike<{
69
+ inset: {
70
+ none: {};
71
+ start: {
72
+ label: string;
73
+ };
74
+ middle: {
75
+ label: string;
76
+ };
77
+ };
78
+ }, {
79
+ root: string;
80
+ label: string;
81
+ }>>;
82
+ /**
83
+ * The variants of {@link dividerStyles}, for building on its styles. They are the recipe's keys, not
84
+ * component props: their names (`hasIcon`, `isOpen`…) follow the classes and may change.
85
+ */
86
+ export type DividerStyleProps = VariantProps<typeof dividerStyles>;
87
+ export type DividerOrientation = NonNullable<DividerStyleProps['orientation']>;
88
+ export type DividerInset = NonNullable<DividerStyleProps['inset']>;
89
+ //#endregion
90
+ //# sourceMappingURL=divider-styles.d.ts.map
@@ -0,0 +1,66 @@
1
+ import { tv } from "../../utils/tv.js";
2
+ //#region src/components/divider/divider-styles.ts
3
+ /** Variant definitions for {@link Divider}; extend them to add variants. */
4
+ const dividerStyles = tv({
5
+ base: ["m-0 shrink-0 border-0 bg-[var(--_md-comp-divider-color)] bg-clip-content", "forced-colors:bg-[CanvasText] forced-colors:forced-color-adjust-none"],
6
+ variants: {
7
+ orientation: {
8
+ horizontal: "h-px w-full",
9
+ vertical: "w-px self-stretch"
10
+ },
11
+ inset: {
12
+ none: "",
13
+ start: "",
14
+ middle: ""
15
+ }
16
+ },
17
+ compoundVariants: [
18
+ {
19
+ orientation: "horizontal",
20
+ inset: "start",
21
+ class: "ps-[16px]"
22
+ },
23
+ {
24
+ orientation: "horizontal",
25
+ inset: "middle",
26
+ class: "ps-[16px] pe-[16px]"
27
+ },
28
+ {
29
+ orientation: "vertical",
30
+ inset: "start",
31
+ class: "pt-[16px]"
32
+ },
33
+ {
34
+ orientation: "vertical",
35
+ inset: "middle",
36
+ class: "pt-[16px] pb-[16px]"
37
+ }
38
+ ],
39
+ defaultVariants: {
40
+ orientation: "horizontal",
41
+ inset: "none"
42
+ }
43
+ });
44
+ /**
45
+ * Variant definitions for {@link LabeledDivider}: a divider with supporting text 4px below
46
+ * it, the text 8px clear of the end and 8px clear below (m3.material.io's divider
47
+ * measurements); the line itself runs the full width (2026-10-15: the end padding was on the
48
+ * root, which shortened the line by 8px). The spec
49
+ * names no type role for the text; it uses `label-small` in `on-surface-variant`.
50
+ */
51
+ const labeledDividerStyles = tv({
52
+ slots: {
53
+ root: "flex min-w-0 flex-col gap-[4px] pb-[8px]",
54
+ label: "pe-[8px] text-label-small text-on-surface-variant"
55
+ },
56
+ variants: { inset: {
57
+ none: {},
58
+ start: { label: "ps-[16px]" },
59
+ middle: { label: "ps-[16px] pe-[24px]" }
60
+ } },
61
+ defaultVariants: { inset: "none" }
62
+ });
63
+ //#endregion
64
+ export { dividerStyles, labeledDividerStyles };
65
+
66
+ //# sourceMappingURL=divider-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider-styles.js","names":[],"sources":["../../../src/components/divider/divider-styles.ts"],"sourcesContent":["import { tv, type VariantProps } from '../../utils/tv';\n\n/*\n * Values follow Compose Material 3 (Divider.kt, DividerTokens): 1px of `outline-variant`.\n * Insets follow m3.material.io (16px at the start, or at both ends for a middle inset);\n * Compose leaves them to padding. The line is the element's background clipped to its\n * content box, so the inset is padding and the root keeps no margins (§10). Its colour comes\n * from the divider's component token (`divider-tokens.ts`, `--md-comp-divider-color`); the root\n * carries `data-tokens=\"md-comp-divider\"`, and a consumer class (`bg-primary`) still wins.\n * Every class is written out in full so Tailwind can find it.\n */\n\n/** Variant definitions for {@link Divider}; extend them to add variants. */\nexport const dividerStyles = tv({\n base: [\n 'm-0 shrink-0 border-0 bg-[var(--_md-comp-divider-color)] bg-clip-content',\n // The line is a background, which forced colours drop.\n 'forced-colors:bg-[CanvasText] forced-colors:forced-color-adjust-none',\n ],\n variants: {\n orientation: {\n horizontal: 'h-px w-full',\n vertical: 'w-px self-stretch',\n },\n inset: { none: '', start: '', middle: '' },\n },\n compoundVariants: [\n { orientation: 'horizontal', inset: 'start', class: 'ps-[16px]' },\n { orientation: 'horizontal', inset: 'middle', class: 'ps-[16px] pe-[16px]' },\n { orientation: 'vertical', inset: 'start', class: 'pt-[16px]' },\n { orientation: 'vertical', inset: 'middle', class: 'pt-[16px] pb-[16px]' },\n ],\n defaultVariants: { orientation: 'horizontal', inset: 'none' },\n});\n\n/**\n * Variant definitions for {@link LabeledDivider}: a divider with supporting text 4px below\n * it, the text 8px clear of the end and 8px clear below (m3.material.io's divider\n * measurements); the line itself runs the full width (2026-10-15: the end padding was on the\n * root, which shortened the line by 8px). The spec\n * names no type role for the text; it uses `label-small` in `on-surface-variant`.\n */\nexport const labeledDividerStyles = tv({\n slots: {\n root: 'flex min-w-0 flex-col gap-[4px] pb-[8px]',\n label: 'pe-[8px] text-label-small text-on-surface-variant',\n },\n variants: {\n inset: {\n none: {},\n start: { label: 'ps-[16px]' },\n middle: { label: 'ps-[16px] pe-[24px]' },\n },\n },\n defaultVariants: { inset: 'none' },\n});\n\n/**\n * The variants of {@link dividerStyles}, 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 DividerStyleProps = VariantProps<typeof dividerStyles>;\nexport type DividerOrientation = NonNullable<DividerStyleProps['orientation']>;\nexport type DividerInset = NonNullable<DividerStyleProps['inset']>;\n"],"mappings":";;;AAaA,MAAa,gBAAgB,GAAG;CAC9B,MAAM,CACJ,4EAEA,sEACF;CACA,UAAU;EACR,aAAa;GACX,YAAY;GACZ,UAAU;EACZ;EACA,OAAO;GAAE,MAAM;GAAI,OAAO;GAAI,QAAQ;EAAG;CAC3C;CACA,kBAAkB;EAChB;GAAE,aAAa;GAAc,OAAO;GAAS,OAAO;EAAY;EAChE;GAAE,aAAa;GAAc,OAAO;GAAU,OAAO;EAAsB;EAC3E;GAAE,aAAa;GAAY,OAAO;GAAS,OAAO;EAAY;EAC9D;GAAE,aAAa;GAAY,OAAO;GAAU,OAAO;EAAsB;CAC3E;CACA,iBAAiB;EAAE,aAAa;EAAc,OAAO;CAAO;AAC9D,CAAC;;;;;;;;AASD,MAAa,uBAAuB,GAAG;CACrC,OAAO;EACL,MAAM;EACN,OAAO;CACT;CACA,UAAU,EACR,OAAO;EACL,MAAM,CAAC;EACP,OAAO,EAAE,OAAO,YAAY;EAC5B,QAAQ,EAAE,OAAO,sBAAsB;CACzC,EACF;CACA,iBAAiB,EAAE,OAAO,OAAO;AACnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ComponentTokenSet } from "../../tokens/component.js";
2
+ import "../../index.js";
3
+ //#region src/components/divider/divider-tokens.d.ts
4
+ /** The tokens of {@link Divider}: `--md-comp-divider-<part>`. */
5
+ export declare const dividerTokenSet: ComponentTokenSet<"color">;
6
+ //#endregion
7
+ //# sourceMappingURL=divider-tokens.d.ts.map
@@ -0,0 +1,16 @@
1
+ import { color, defineComponentTokens } from "../../tokens/component.js";
2
+ //#region src/components/divider/divider-tokens.ts
3
+ /** The tokens of {@link Divider}: `--md-comp-divider-<part>`. */
4
+ const dividerTokenSet = defineComponentTokens({
5
+ name: "md-comp-divider",
6
+ tokens: { color: {
7
+ value: color("outline-variant"),
8
+ description: "The line.",
9
+ compose: "DividerTokens.Color",
10
+ paints: { property: "background-color" }
11
+ } }
12
+ });
13
+ //#endregion
14
+ export { dividerTokenSet };
15
+
16
+ //# sourceMappingURL=divider-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider-tokens.js","names":[],"sources":["../../../src/components/divider/divider-tokens.ts"],"sourcesContent":["import { color, defineComponentTokens } from '../../tokens/component';\n\n/*\n * Divider's component token, M3's `md.comp.divider.color` (checked against m3.material.io's\n * token tables, 2026-10-14), with Compose's DividerTokens default. `divider-styles.ts` reads\n * it as one private variable. The thickness stays a class.\n */\n\n/** The tokens of {@link Divider}: `--md-comp-divider-<part>`. */\nexport const dividerTokenSet = defineComponentTokens({\n name: 'md-comp-divider',\n tokens: {\n color: {\n value: color('outline-variant'),\n description: 'The line.',\n compose: 'DividerTokens.Color',\n paints: { property: 'background-color' },\n },\n },\n});\n"],"mappings":";;;AASA,MAAa,kBAAkB,sBAAsB;CACnD,MAAM;CACN,QAAQ,EACN,OAAO;EACL,OAAO,MAAM,iBAAiB;EAC9B,aAAa;EACb,SAAS;EACT,QAAQ,EAAE,UAAU,mBAAmB;CACzC,EACF;AACF,CAAC"}
@@ -0,0 +1,130 @@
1
+ import { ButtonBaseActionProps, ButtonBaseLinkProps } from "../../primitives/ButtonBase.js";
2
+ import { ExtendedFabSize, FabColor, FabElevation, FabSize } from "./fab-styles.js";
3
+ import { ReactElement, ReactNode } from "react";
4
+ //#region src/components/fab/Fab.d.ts
5
+ /** FABs have no disabled or toggle state in M3. */
6
+ type FabBaseKeys = 'children' | 'disabled' | 'toggle';
7
+ interface FabCommonProps {
8
+ /** The colour style: a container colour or its solid form. @default "primary-container" */
9
+ color?: FabColor;
10
+ /**
11
+ * `default` is level 3 (hover 4); `lowered` is level 1 (hover 2), for FABs on surfaces
12
+ * that already sit above the page; `flat` is level 0, for a FAB nested in another
13
+ * component such as the navigation rail. @default "default"
14
+ */
15
+ elevation?: FabElevation;
16
+ /**
17
+ * Shows the FAB. Hiding it shrinks it towards its centre and fades it out; showing it
18
+ * expands it back, so it can disappear and reappear around a page or tab change. A
19
+ * hidden FAB is `inert`. @default true
20
+ */
21
+ visible?: boolean;
22
+ /**
23
+ * Plays the appearing animation when the FAB mounts. Change the FAB's `key` on a page
24
+ * or tab change to replay it. @default false
25
+ */
26
+ appear?: boolean;
27
+ }
28
+ type AccessibleName = {
29
+ /** The FAB's accessible name, also shown in its tooltip. Required without `aria-labelledby`. */
30
+ 'aria-label': string;
31
+ /** The id of an element that names the FAB, instead of `aria-label`. */
32
+ 'aria-labelledby'?: string;
33
+ } | {
34
+ /** The FAB's accessible name, also shown in its tooltip. Required without `aria-labelledby`. */
35
+ 'aria-label'?: string;
36
+ /** The id of an element that names the FAB, instead of `aria-label`. */
37
+ 'aria-labelledby': string;
38
+ };
39
+ export interface FabClassNames {
40
+ /** The FAB element itself; merged with `className`. */
41
+ root?: string;
42
+ /** The icon. */
43
+ icon?: string;
44
+ /** The built-in plain tooltip that shows the label (`tooltip`). */
45
+ tooltip?: string;
46
+ }
47
+ interface FabOwnProps extends FabCommonProps {
48
+ /**
49
+ * Container size: `default` (56px), `md` (medium, 80px) or `lg` (large, 96px). The small FAB is
50
+ * deprecated in M3 Expressive. @default "default"
51
+ */
52
+ size?: FabSize;
53
+ /** The icon. Hidden from assistive tech; `aria-label` names the FAB. */
54
+ icon: ReactElement;
55
+ /**
56
+ * Shows `aria-label` in a plain tooltip on hover and keyboard focus, as M3 asks of
57
+ * FABs on the web. Turn it off when you wrap the FAB in your own `TooltipTrigger`.
58
+ * @default true
59
+ */
60
+ tooltip?: boolean;
61
+ /** Classes for each part, by slot. `classNames.root` is merged with `className`. */
62
+ classNames?: FabClassNames;
63
+ }
64
+ type OmitFab<T> = Omit<T, keyof FabOwnProps | FabBaseKeys | 'aria-label' | 'aria-labelledby'>;
65
+ export type FabProps = FabOwnProps & AccessibleName & (OmitFab<ButtonBaseActionProps> | OmitFab<ButtonBaseLinkProps>);
66
+ /**
67
+ * M3 Expressive floating action button: default (56px), medium (80px) and large (96px),
68
+ * six colour styles, three elevations, a tooltip from its label, and an animated
69
+ * `visible` state.
70
+ *
71
+ * @example
72
+ * <Fab icon={<EditIcon />} aria-label="Compose" onPress={compose} className="fixed end-4 bottom-4" />
73
+ */
74
+ export declare function Fab({ size, color, elevation, visible, appear, tooltip, icon, classNames, className, ...base }: FabProps): import("react").JSX.Element;
75
+ export interface ExtendedFabClassNames {
76
+ /** The FAB element itself; merged with `className`. */
77
+ root?: string;
78
+ /** Inner wrapper around the icon and label. */
79
+ content?: string;
80
+ /** The leading icon. */
81
+ icon?: string;
82
+ /** The label's clipping wrapper, which collapses with the FAB. */
83
+ label?: string;
84
+ /** The label text. */
85
+ text?: string;
86
+ /** The built-in plain tooltip shown while collapsed (`tooltip`). */
87
+ tooltip?: string;
88
+ }
89
+ interface ExtendedFabOwnProps extends FabCommonProps {
90
+ /** Container height and label size: small (56px), medium (80px) or large (96px). @default "sm" */
91
+ size?: ExtendedFabSize;
92
+ /** Leading icon. Needed for the collapsed state, which shows the icon only. */
93
+ icon?: ReactElement;
94
+ /** The visible label; it also names the FAB, including while collapsed. */
95
+ children: Exclude<ReactNode, null | undefined | boolean>;
96
+ /**
97
+ * A name that replaces the label, only to add detail. Start it with the visible label's
98
+ * first word ("Create a new invite" for "Create"), as M3 asks, so voice control can name
99
+ * the FAB; it warns once in development when the first words differ.
100
+ */
101
+ 'aria-label'?: string;
102
+ /** The id of an element that names the FAB instead of its label. */
103
+ 'aria-labelledby'?: string;
104
+ /**
105
+ * Shows the label. Collapsing animates the FAB to a square showing only the icon
106
+ * (e.g. while the page scrolls). @default true
107
+ */
108
+ expanded?: boolean;
109
+ /**
110
+ * While collapsed, shows the label (or `aria-label`) in a plain tooltip on hover and
111
+ * keyboard focus, as M3 asks of icon-only FABs on the web. Expanded, the label is visible
112
+ * and there is no tooltip. It steps aside inside your own `TooltipTrigger`. @default true
113
+ */
114
+ tooltip?: boolean;
115
+ /** Classes for each part, by slot. `classNames.root` is merged with `className`. */
116
+ classNames?: ExtendedFabClassNames;
117
+ }
118
+ type OmitExtended<T> = Omit<T, keyof ExtendedFabOwnProps | FabBaseKeys>;
119
+ export type ExtendedFabProps = ExtendedFabOwnProps & (OmitExtended<ButtonBaseActionProps> | OmitExtended<ButtonBaseLinkProps>);
120
+ /**
121
+ * M3 Expressive extended FAB: small (56px), medium (80px) and large (96px), with an icon
122
+ * and a label that collapses and expands with `expanded`. Its visible label names it, so
123
+ * it has a tooltip only while collapsed to the icon (M3's FAB rule).
124
+ *
125
+ * @example
126
+ * <ExtendedFab icon={<EditIcon />} expanded={!isScrolling} onPress={compose}>Compose</ExtendedFab>
127
+ */
128
+ export declare function ExtendedFab({ size, color, elevation, visible, appear, icon, expanded, tooltip, classNames, className, children, ...base }: ExtendedFabProps): import("react").JSX.Element;
129
+ //#endregion
130
+ //# sourceMappingURL=Fab.d.ts.map
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.js";
3
+ import { ButtonBase } from "../../primitives/ButtonBase.js";
4
+ import { mergeDataTokens } from "../../utils/merge-data-tokens.js";
5
+ import { useWarnOnce } from "../../utils/warn-once.js";
6
+ import { ToolbarContext } from "../../primitives/ToolbarContext.js";
7
+ import { TooltipTrigger, WithoutDescription } from "../tooltip/tooltip-trigger.js";
8
+ import { LazyTooltip } from "../tooltip/lazy-tooltip.js";
9
+ import { useNaturalSize } from "../../utils/natural-size.js";
10
+ import { FabTooltip } from "./FabTooltip.js";
11
+ import { extendedFabStyles, fabStyles } from "./fab-styles.js";
12
+ import { isValidElement, useContext } from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ //#region src/components/fab/Fab.tsx
15
+ /** The text of a label, through elements and arrays (empty for anything else). */
16
+ function textOf(node) {
17
+ if (typeof node === "string" || typeof node === "number") return String(node);
18
+ if (Array.isArray(node)) return node.map(textOf).join("");
19
+ if (isValidElement(node)) return textOf(node.props.children);
20
+ return "";
21
+ }
22
+ /** A text's first word, lower-cased, or undefined when it has none. */
23
+ function firstWord(text) {
24
+ return text?.match(/[\p{L}\p{N}]+/u)?.[0]?.toLocaleLowerCase();
25
+ }
26
+ /** The `data-*` and `inert` attributes that drive the show / hide motion. */
27
+ function visibilityProps(visible, appear) {
28
+ return {
29
+ "data-hidden": visible ? void 0 : true,
30
+ "data-appear": appear || void 0,
31
+ inert: !visible || void 0
32
+ };
33
+ }
34
+ /**
35
+ * M3 Expressive floating action button: default (56px), medium (80px) and large (96px),
36
+ * six colour styles, three elevations, a tooltip from its label, and an animated
37
+ * `visible` state.
38
+ *
39
+ * @example
40
+ * <Fab icon={<EditIcon />} aria-label="Compose" onPress={compose} className="fixed end-4 bottom-4" />
41
+ */
42
+ function Fab({ size, color, elevation, visible = true, appear = false, tooltip = true, icon, classNames, className, ...base }) {
43
+ const styles = fabStyles({
44
+ size,
45
+ color,
46
+ elevation
47
+ });
48
+ const baseProps = {
49
+ ...base,
50
+ ...visibilityProps(visible, appear),
51
+ className: styles.root({ class: cn(classNames?.root, className) })
52
+ };
53
+ const fab = /* @__PURE__ */ jsx(ButtonBase, {
54
+ ...baseProps,
55
+ "data-tokens": mergeDataTokens("md-comp-fab", base),
56
+ "data-color": color ?? "primary-container",
57
+ "data-size": size ?? "default",
58
+ children: /* @__PURE__ */ jsx("span", {
59
+ "aria-hidden": "true",
60
+ className: styles.icon({ class: classNames?.icon }),
61
+ children: icon
62
+ })
63
+ });
64
+ const label = base["aria-label"];
65
+ if (!tooltip || !label) return fab;
66
+ return /* @__PURE__ */ jsxs(TooltipTrigger, { children: [/* @__PURE__ */ jsx(WithoutDescription, { children: fab }), /* @__PURE__ */ jsx(LazyTooltip, {
67
+ classNames: { panel: classNames?.tooltip },
68
+ children: label
69
+ })] });
70
+ }
71
+ /**
72
+ * M3 Expressive extended FAB: small (56px), medium (80px) and large (96px), with an icon
73
+ * and a label that collapses and expands with `expanded`. Its visible label names it, so
74
+ * it has a tooltip only while collapsed to the icon (M3's FAB rule).
75
+ *
76
+ * @example
77
+ * <ExtendedFab icon={<EditIcon />} expanded={!isScrolling} onPress={compose}>Compose</ExtendedFab>
78
+ */
79
+ function ExtendedFab({ size, color, elevation, visible = true, appear = false, icon, expanded = true, tooltip = true, classNames, className, children, ...base }) {
80
+ if (process.env.NODE_ENV !== "production" && !expanded && !icon) console.warn("[@windmorph/react] An ExtendedFab without an icon cannot collapse; it stays expanded.");
81
+ useWarnOnce(useContext(ToolbarContext)?.kind === "floating", "[@windmorph/react] Pair a FloatingToolbar with a FAB (ToolbarFab), not an extended FAB (M3).");
82
+ const labelWord = firstWord(base["aria-label"]);
83
+ const visibleWord = firstWord(textOf(children));
84
+ useWarnOnce(labelWord !== void 0 && visibleWord !== void 0 && labelWord !== visibleWord, `[@windmorph/react] An ExtendedFab's aria-label should start with its visible label's first word ("${visibleWord}"), as M3 asks, so voice control can name it.`);
85
+ const collapsed = !expanded && Boolean(icon);
86
+ const [labelRef, labelWidth, labelResized] = useNaturalSize("width", Boolean(icon));
87
+ const styles = extendedFabStyles({
88
+ size,
89
+ color,
90
+ elevation,
91
+ hasIcon: Boolean(icon)
92
+ });
93
+ const baseProps = {
94
+ ...base,
95
+ ...visibilityProps(visible, appear),
96
+ className: styles.root({ class: cn(classNames?.root, className) })
97
+ };
98
+ const fab = /* @__PURE__ */ jsx(ButtonBase, {
99
+ ...baseProps,
100
+ "data-tokens": mergeDataTokens("md-comp-extended-fab", base),
101
+ "data-color": color ?? "primary-container",
102
+ "data-size": size ?? "sm",
103
+ "data-expanded": !collapsed,
104
+ children: /* @__PURE__ */ jsxs("span", {
105
+ className: styles.content({ class: classNames?.content }),
106
+ children: [icon && /* @__PURE__ */ jsx("span", {
107
+ "aria-hidden": "true",
108
+ className: styles.icon({ class: classNames?.icon }),
109
+ children: icon
110
+ }), /* @__PURE__ */ jsx("span", {
111
+ "data-collapsed": collapsed || void 0,
112
+ "data-resized": labelResized || void 0,
113
+ style: labelWidth === void 0 ? void 0 : { width: collapsed ? 0 : labelWidth },
114
+ className: styles.collapse(),
115
+ children: /* @__PURE__ */ jsx("span", {
116
+ ref: labelRef,
117
+ className: styles.label({ class: classNames?.label }),
118
+ children: /* @__PURE__ */ jsx("span", {
119
+ className: styles.text({ class: classNames?.text }),
120
+ children
121
+ })
122
+ })
123
+ })]
124
+ })
125
+ });
126
+ if (!tooltip || !icon) return fab;
127
+ return /* @__PURE__ */ jsx(FabTooltip, {
128
+ available: collapsed,
129
+ label: base["aria-label"] ?? children,
130
+ className: classNames?.tooltip,
131
+ children: fab
132
+ });
133
+ }
134
+ //#endregion
135
+ export { ExtendedFab, Fab };
136
+
137
+ //# sourceMappingURL=Fab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fab.js","names":[],"sources":["../../../src/components/fab/Fab.tsx"],"sourcesContent":["'use client';\n\nimport { isValidElement, useContext, type ReactElement, type ReactNode } from 'react';\nimport {\n ButtonBase,\n type ButtonBaseActionProps,\n type ButtonBaseLinkProps,\n type ButtonBaseProps,\n} from '../../primitives/ButtonBase';\nimport { ToolbarContext } from '../../primitives/ToolbarContext';\nimport { cn } from '../../utils/cn';\nimport { useNaturalSize } from '../../utils/natural-size';\nimport { useWarnOnce } from '../../utils/warn-once';\nimport { LazyTooltip } from '../tooltip/lazy-tooltip';\nimport { TooltipTrigger, WithoutDescription } from '../tooltip/tooltip-trigger';\nimport { FabTooltip } from './FabTooltip';\nimport {\n extendedFabStyles,\n fabStyles,\n type ExtendedFabSize,\n type FabColor,\n type FabElevation,\n type FabSize,\n} from './fab-styles';\nimport { mergeDataTokens } from '../../utils/merge-data-tokens';\n\n/** FABs have no disabled or toggle state in M3. */\ntype FabBaseKeys = 'children' | 'disabled' | 'toggle';\n\ninterface FabCommonProps {\n /** The colour style: a container colour or its solid form. @default \"primary-container\" */\n color?: FabColor;\n /**\n * `default` is level 3 (hover 4); `lowered` is level 1 (hover 2), for FABs on surfaces\n * that already sit above the page; `flat` is level 0, for a FAB nested in another\n * component such as the navigation rail. @default \"default\"\n */\n elevation?: FabElevation;\n /**\n * Shows the FAB. Hiding it shrinks it towards its centre and fades it out; showing it\n * expands it back, so it can disappear and reappear around a page or tab change. A\n * hidden FAB is `inert`. @default true\n */\n visible?: boolean;\n /**\n * Plays the appearing animation when the FAB mounts. Change the FAB's `key` on a page\n * or tab change to replay it. @default false\n */\n appear?: boolean;\n}\n\n/** The text of a label, through elements and arrays (empty for anything else). */\nfunction textOf(node: ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(textOf).join('');\n if (isValidElement<{ children?: ReactNode }>(node)) return textOf(node.props.children);\n return '';\n}\n\n/** A text's first word, lower-cased, or undefined when it has none. */\nfunction firstWord(text: string | undefined): string | undefined {\n return text?.match(/[\\p{L}\\p{N}]+/u)?.[0]?.toLocaleLowerCase();\n}\n\n/** The `data-*` and `inert` attributes that drive the show / hide motion. */\nfunction visibilityProps(visible: boolean, appear: boolean) {\n return {\n 'data-hidden': visible ? undefined : true,\n 'data-appear': appear || undefined,\n inert: !visible || undefined,\n };\n}\n\ntype AccessibleName =\n | {\n /** The FAB's accessible name, also shown in its tooltip. Required without `aria-labelledby`. */\n 'aria-label': string;\n /** The id of an element that names the FAB, instead of `aria-label`. */\n 'aria-labelledby'?: string;\n }\n | {\n /** The FAB's accessible name, also shown in its tooltip. Required without `aria-labelledby`. */\n 'aria-label'?: string;\n /** The id of an element that names the FAB, instead of `aria-label`. */\n 'aria-labelledby': string;\n };\n\nexport interface FabClassNames {\n /** The FAB element itself; merged with `className`. */\n root?: string;\n /** The icon. */\n icon?: string;\n /** The built-in plain tooltip that shows the label (`tooltip`). */\n tooltip?: string;\n}\n\ninterface FabOwnProps extends FabCommonProps {\n /**\n * Container size: `default` (56px), `md` (medium, 80px) or `lg` (large, 96px). The small FAB is\n * deprecated in M3 Expressive. @default \"default\"\n */\n size?: FabSize;\n /** The icon. Hidden from assistive tech; `aria-label` names the FAB. */\n icon: ReactElement;\n /**\n * Shows `aria-label` in a plain tooltip on hover and keyboard focus, as M3 asks of\n * FABs on the web. Turn it off when you wrap the FAB in your own `TooltipTrigger`.\n * @default true\n */\n tooltip?: boolean;\n /** Classes for each part, by slot. `classNames.root` is merged with `className`. */\n classNames?: FabClassNames;\n}\n\ntype OmitFab<T> = Omit<T, keyof FabOwnProps | FabBaseKeys | 'aria-label' | 'aria-labelledby'>;\n\nexport type FabProps = FabOwnProps &\n AccessibleName &\n (OmitFab<ButtonBaseActionProps> | OmitFab<ButtonBaseLinkProps>);\n\n/**\n * M3 Expressive floating action button: default (56px), medium (80px) and large (96px),\n * six colour styles, three elevations, a tooltip from its label, and an animated\n * `visible` state.\n *\n * @example\n * <Fab icon={<EditIcon />} aria-label=\"Compose\" onPress={compose} className=\"fixed end-4 bottom-4\" />\n */\nexport function Fab({\n size,\n color,\n elevation,\n visible = true,\n appear = false,\n tooltip = true,\n icon,\n classNames,\n className,\n ...base\n}: FabProps) {\n const styles = fabStyles({ size, color, elevation });\n const baseProps = {\n ...base,\n ...visibilityProps(visible, appear),\n className: styles.root({ class: cn(classNames?.root, className) }),\n } as ButtonBaseProps;\n const fab = (\n <ButtonBase\n {...baseProps}\n // The component tokens' hooks (fab-tokens.ts), also public styling hooks for apps.\n data-tokens={mergeDataTokens('md-comp-fab', base)}\n data-color={color ?? 'primary-container'}\n data-size={size ?? 'default'}\n >\n <span aria-hidden=\"true\" className={styles.icon({ class: classNames?.icon })}>\n {icon}\n </span>\n </ButtonBase>\n );\n const label = base['aria-label'];\n if (!tooltip || !label) return fab;\n return (\n <TooltipTrigger>\n <WithoutDescription>{fab}</WithoutDescription>\n <LazyTooltip classNames={{ panel: classNames?.tooltip }}>{label}</LazyTooltip>\n </TooltipTrigger>\n );\n}\n\nexport interface ExtendedFabClassNames {\n /** The FAB element itself; merged with `className`. */\n root?: string;\n /** Inner wrapper around the icon and label. */\n content?: string;\n /** The leading icon. */\n icon?: string;\n /** The label's clipping wrapper, which collapses with the FAB. */\n label?: string;\n /** The label text. */\n text?: string;\n /** The built-in plain tooltip shown while collapsed (`tooltip`). */\n tooltip?: string;\n}\n\ninterface ExtendedFabOwnProps extends FabCommonProps {\n /** Container height and label size: small (56px), medium (80px) or large (96px). @default \"sm\" */\n size?: ExtendedFabSize;\n /** Leading icon. Needed for the collapsed state, which shows the icon only. */\n icon?: ReactElement;\n /** The visible label; it also names the FAB, including while collapsed. */\n children: Exclude<ReactNode, null | undefined | boolean>;\n /**\n * A name that replaces the label, only to add detail. Start it with the visible label's\n * first word (\"Create a new invite\" for \"Create\"), as M3 asks, so voice control can name\n * the FAB; it warns once in development when the first words differ.\n */\n 'aria-label'?: string;\n /** The id of an element that names the FAB instead of its label. */\n 'aria-labelledby'?: string;\n /**\n * Shows the label. Collapsing animates the FAB to a square showing only the icon\n * (e.g. while the page scrolls). @default true\n */\n expanded?: boolean;\n /**\n * While collapsed, shows the label (or `aria-label`) in a plain tooltip on hover and\n * keyboard focus, as M3 asks of icon-only FABs on the web. Expanded, the label is visible\n * and there is no tooltip. It steps aside inside your own `TooltipTrigger`. @default true\n */\n tooltip?: boolean;\n /** Classes for each part, by slot. `classNames.root` is merged with `className`. */\n classNames?: ExtendedFabClassNames;\n}\n\ntype OmitExtended<T> = Omit<T, keyof ExtendedFabOwnProps | FabBaseKeys>;\n\nexport type ExtendedFabProps = ExtendedFabOwnProps &\n (OmitExtended<ButtonBaseActionProps> | OmitExtended<ButtonBaseLinkProps>);\n\n/**\n * M3 Expressive extended FAB: small (56px), medium (80px) and large (96px), with an icon\n * and a label that collapses and expands with `expanded`. Its visible label names it, so\n * it has a tooltip only while collapsed to the icon (M3's FAB rule).\n *\n * @example\n * <ExtendedFab icon={<EditIcon />} expanded={!isScrolling} onPress={compose}>Compose</ExtendedFab>\n */\nexport function ExtendedFab({\n size,\n color,\n elevation,\n visible = true,\n appear = false,\n icon,\n expanded = true,\n tooltip = true,\n classNames,\n className,\n children,\n ...base\n}: ExtendedFabProps) {\n if (process.env.NODE_ENV !== 'production' && !expanded && !icon) {\n console.warn(\n '[@windmorph/react] An ExtendedFab without an icon cannot collapse; it stays expanded.',\n );\n }\n // Once per FAB, not on every render.\n useWarnOnce(\n useContext(ToolbarContext)?.kind === 'floating',\n '[@windmorph/react] Pair a FloatingToolbar with a FAB (ToolbarFab), not an extended FAB (M3).',\n );\n // M3: \"The accessibility label must include the same first word as the visible label\",\n // so voice control users can say what they see (2026-10-15).\n const labelWord = firstWord(base['aria-label']);\n const visibleWord = firstWord(textOf(children));\n useWarnOnce(\n labelWord !== undefined && visibleWord !== undefined && labelWord !== visibleWord,\n `[@windmorph/react] An ExtendedFab's aria-label should start with its visible label's first word (\"${visibleWord}\"), as M3 asks, so voice control can name it.`,\n );\n const collapsed = !expanded && Boolean(icon);\n const [labelRef, labelWidth, labelResized] = useNaturalSize<HTMLSpanElement>(\n 'width',\n Boolean(icon),\n );\n const styles = extendedFabStyles({ size, color, elevation, hasIcon: Boolean(icon) });\n const baseProps = {\n ...base,\n ...visibilityProps(visible, appear),\n className: styles.root({ class: cn(classNames?.root, className) }),\n } as ButtonBaseProps;\n const fab = (\n <ButtonBase\n {...baseProps}\n // The component tokens' hooks (fab-tokens.ts), also public styling hooks for apps.\n data-tokens={mergeDataTokens('md-comp-extended-fab', base)}\n data-color={color ?? 'primary-container'}\n data-size={size ?? 'sm'}\n data-expanded={!collapsed}\n >\n <span className={styles.content({ class: classNames?.content })}>\n {icon && (\n <span aria-hidden=\"true\" className={styles.icon({ class: classNames?.icon })}>\n {icon}\n </span>\n )}\n <span\n data-collapsed={collapsed || undefined}\n data-resized={labelResized || undefined}\n style={labelWidth === undefined ? undefined : { width: collapsed ? 0 : labelWidth }}\n className={styles.collapse()}\n >\n <span ref={labelRef} className={styles.label({ class: classNames?.label })}>\n <span className={styles.text({ class: classNames?.text })}>{children}</span>\n </span>\n </span>\n </span>\n </ButtonBase>\n );\n if (!tooltip || !icon) return fab;\n return (\n <FabTooltip\n available={collapsed}\n label={base['aria-label'] ?? children}\n className={classNames?.tooltip}\n >\n {fab}\n </FabTooltip>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoDA,SAAS,OAAO,MAAyB;CACvC,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU,OAAO,OAAO,IAAI;CAC5E,IAAI,MAAM,QAAQ,IAAI,GAAG,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE;CACxD,IAAI,eAAyC,IAAI,GAAG,OAAO,OAAO,KAAK,MAAM,QAAQ;CACrF,OAAO;AACT;;AAGA,SAAS,UAAU,MAA8C;CAC/D,OAAO,MAAM,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,kBAAkB;AAC/D;;AAGA,SAAS,gBAAgB,SAAkB,QAAiB;CAC1D,OAAO;EACL,eAAe,UAAU,KAAA,IAAY;EACrC,eAAe,UAAU,KAAA;EACzB,OAAO,CAAC,WAAW,KAAA;CACrB;AACF;;;;;;;;;AAyDA,SAAgB,IAAI,EAClB,MACA,OACA,WACA,UAAU,MACV,SAAS,OACT,UAAU,MACV,MACA,YACA,WACA,GAAG,QACQ;CACX,MAAM,SAAS,UAAU;EAAE;EAAM;EAAO;CAAU,CAAC;CACnD,MAAM,YAAY;EAChB,GAAG;EACH,GAAG,gBAAgB,SAAS,MAAM;EAClC,WAAW,OAAO,KAAK,EAAE,OAAO,GAAG,YAAY,MAAM,SAAS,EAAE,CAAC;CACnE;CACA,MAAM,MACJ,oBAAC,YAAD;EACE,GAAI;EAEJ,eAAa,gBAAgB,eAAe,IAAI;EAChD,cAAY,SAAS;EACrB,aAAW,QAAQ;EAEnB,UAAA,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAW,OAAO,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;GACxE,UAAA;EACG,CAAA;CACI,CAAA;CAEd,MAAM,QAAQ,KAAK;CACnB,IAAI,CAAC,WAAW,CAAC,OAAO,OAAO;CAC/B,OACE,qBAAC,gBAAD,EAAA,UAAA,CACE,oBAAC,oBAAD,EAAA,UAAqB,IAAwB,CAAA,GAC7C,oBAAC,aAAD;EAAa,YAAY,EAAE,OAAO,YAAY,QAAQ;EAAI,UAAA;CAAmB,CAAA,CAC/D,EAAA,CAAA;AAEpB;;;;;;;;;AA4DA,SAAgB,YAAY,EAC1B,MACA,OACA,WACA,UAAU,MACV,SAAS,OACT,MACA,WAAW,MACX,UAAU,MACV,YACA,WACA,UACA,GAAG,QACgB;CACnB,IAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,YAAY,CAAC,MACzD,QAAQ,KACN,uFACF;CAGF,YACE,WAAW,cAAc,CAAC,EAAE,SAAS,YACrC,8FACF;CAGA,MAAM,YAAY,UAAU,KAAK,aAAa;CAC9C,MAAM,cAAc,UAAU,OAAO,QAAQ,CAAC;CAC9C,YACE,cAAc,KAAA,KAAa,gBAAgB,KAAA,KAAa,cAAc,aACtE,qGAAqG,YAAY,8CACnH;CACA,MAAM,YAAY,CAAC,YAAY,QAAQ,IAAI;CAC3C,MAAM,CAAC,UAAU,YAAY,gBAAgB,eAC3C,SACA,QAAQ,IAAI,CACd;CACA,MAAM,SAAS,kBAAkB;EAAE;EAAM;EAAO;EAAW,SAAS,QAAQ,IAAI;CAAE,CAAC;CACnF,MAAM,YAAY;EAChB,GAAG;EACH,GAAG,gBAAgB,SAAS,MAAM;EAClC,WAAW,OAAO,KAAK,EAAE,OAAO,GAAG,YAAY,MAAM,SAAS,EAAE,CAAC;CACnE;CACA,MAAM,MACJ,oBAAC,YAAD;EACE,GAAI;EAEJ,eAAa,gBAAgB,wBAAwB,IAAI;EACzD,cAAY,SAAS;EACrB,aAAW,QAAQ;EACnB,iBAAe,CAAC;EAEhB,UAAA,qBAAC,QAAD;GAAM,WAAW,OAAO,QAAQ,EAAE,OAAO,YAAY,QAAQ,CAAC;GAA9D,UAAA,CACG,QACC,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAW,OAAO,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;IACxE,UAAA;GACG,CAAA,GAER,oBAAC,QAAD;IACE,kBAAgB,aAAa,KAAA;IAC7B,gBAAc,gBAAgB,KAAA;IAC9B,OAAO,eAAe,KAAA,IAAY,KAAA,IAAY,EAAE,OAAO,YAAY,IAAI,WAAW;IAClF,WAAW,OAAO,SAAS;IAE3B,UAAA,oBAAC,QAAD;KAAM,KAAK;KAAU,WAAW,OAAO,MAAM,EAAE,OAAO,YAAY,MAAM,CAAC;KACvE,UAAA,oBAAC,QAAD;MAAM,WAAW,OAAO,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC;MAAI;KAAe,CAAA;IACvE,CAAA;GACF,CAAA,CACF;;CACI,CAAA;CAEd,IAAI,CAAC,WAAW,CAAC,MAAM,OAAO;CAC9B,OACE,oBAAC,YAAD;EACE,WAAW;EACX,OAAO,KAAK,iBAAiB;EAC7B,WAAW,YAAY;EAEtB,UAAA;CACS,CAAA;AAEhB"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { TooltipTrigger, WithoutDescription, useInTooltipTrigger } from "../tooltip/tooltip-trigger.js";
3
+ import { LazyTooltip } from "../tooltip/lazy-tooltip.js";
4
+ import { useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/fab/FabTooltip.tsx
7
+ /**
8
+ * The plain tooltip M3 asks of an icon-only FAB on the web, for FABs that are icon-only
9
+ * some of the time. It stays mounted either way, so toggling never remounts the FAB (which
10
+ * would drop focus and cut its motion short), and an open tooltip closes once it stops
11
+ * being available. Inside an app's own `TooltipTrigger` or `RichTooltipTrigger` it steps
12
+ * aside, so there's never a second tooltip.
13
+ */
14
+ function FabTooltip({ available, label, className, children }) {
15
+ const inTooltipTrigger = useInTooltipTrigger();
16
+ const [isOpen, setOpen] = useState(false);
17
+ const [wasAvailable, setWasAvailable] = useState(available);
18
+ if (available !== wasAvailable) {
19
+ setWasAvailable(available);
20
+ if (!available) setOpen(false);
21
+ }
22
+ if (inTooltipTrigger) return children;
23
+ return /* @__PURE__ */ jsxs(TooltipTrigger, {
24
+ disabled: !available,
25
+ open: available && isOpen,
26
+ onOpenChange: setOpen,
27
+ children: [/* @__PURE__ */ jsx(WithoutDescription, { children }), /* @__PURE__ */ jsx(LazyTooltip, {
28
+ classNames: { panel: className },
29
+ children: label
30
+ })]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { FabTooltip };
35
+
36
+ //# sourceMappingURL=FabTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FabTooltip.js","names":[],"sources":["../../../src/components/fab/FabTooltip.tsx"],"sourcesContent":["'use client';\n\nimport { useState, type ReactElement, type ReactNode } from 'react';\nimport { LazyTooltip } from '../tooltip/lazy-tooltip';\nimport {\n TooltipTrigger,\n useInTooltipTrigger,\n WithoutDescription,\n} from '../tooltip/tooltip-trigger';\n\ninterface FabTooltipProps {\n /** Whether the tooltip can show: an extended FAB while collapsed, a FAB menu while closed. */\n available: boolean;\n label: ReactNode;\n /** Classes for the tooltip's surface (its `classNames.panel`). */\n className?: string | undefined;\n /** The FAB, a library button that reads `TriggerContext`. */\n children: ReactElement;\n}\n\n/**\n * The plain tooltip M3 asks of an icon-only FAB on the web, for FABs that are icon-only\n * some of the time. It stays mounted either way, so toggling never remounts the FAB (which\n * would drop focus and cut its motion short), and an open tooltip closes once it stops\n * being available. Inside an app's own `TooltipTrigger` or `RichTooltipTrigger` it steps\n * aside, so there's never a second tooltip.\n */\nexport function FabTooltip({ available, label, className, children }: FabTooltipProps) {\n const inTooltipTrigger = useInTooltipTrigger();\n const [isOpen, setOpen] = useState(false);\n const [wasAvailable, setWasAvailable] = useState(available);\n // Closes it for good when it stops being available, so it doesn't reopen by itself when\n // it becomes available again (state adjusted during render, not in an effect).\n if (available !== wasAvailable) {\n setWasAvailable(available);\n if (!available) setOpen(false);\n }\n if (inTooltipTrigger) return children;\n return (\n <TooltipTrigger disabled={!available} open={available && isOpen} onOpenChange={setOpen}>\n {/* The label is the FAB's name, so the tooltip doesn't describe it too. */}\n <WithoutDescription>{children}</WithoutDescription>\n <LazyTooltip classNames={{ panel: className }}>{label}</LazyTooltip>\n </TooltipTrigger>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA2BA,SAAgB,WAAW,EAAE,WAAW,OAAO,WAAW,YAA6B;CACrF,MAAM,mBAAmB,oBAAoB;CAC7C,MAAM,CAAC,QAAQ,WAAW,SAAS,KAAK;CACxC,MAAM,CAAC,cAAc,mBAAmB,SAAS,SAAS;CAG1D,IAAI,cAAc,cAAc;EAC9B,gBAAgB,SAAS;EACzB,IAAI,CAAC,WAAW,QAAQ,KAAK;CAC/B;CACA,IAAI,kBAAkB,OAAO;CAC7B,OACE,qBAAC,gBAAD;EAAgB,UAAU,CAAC;EAAW,MAAM,aAAa;EAAQ,cAAc;EAA/E,UAAA,CAEE,oBAAC,oBAAD,EAAqB,SAA6B,CAAA,GAClD,oBAAC,aAAD;GAAa,YAAY,EAAE,OAAO,UAAU;GAAI,UAAA;EAAmB,CAAA,CACrD;;AAEpB"}