@windmorph/react 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (761) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +23 -0
  3. package/README.md +149 -2
  4. package/dist/cli.d.ts +1 -0
  5. package/dist/cli.js +112 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/components/app-bar/AppBarItems.js +23 -0
  8. package/dist/components/app-bar/AppBarItems.js.map +1 -0
  9. package/dist/components/app-bar/TopAppBar.d.ts +89 -0
  10. package/dist/components/app-bar/TopAppBar.js +103 -0
  11. package/dist/components/app-bar/TopAppBar.js.map +1 -0
  12. package/dist/components/app-bar/app-bar-styles.d.ts +280 -0
  13. package/dist/components/app-bar/app-bar-styles.js +142 -0
  14. package/dist/components/app-bar/app-bar-styles.js.map +1 -0
  15. package/dist/components/app-bar/app-bar-tokens.d.ts +7 -0
  16. package/dist/components/app-bar/app-bar-tokens.js +64 -0
  17. package/dist/components/app-bar/app-bar-tokens.js.map +1 -0
  18. package/dist/components/app-bar/use-app-bar-scroll.d.ts +6 -0
  19. package/dist/components/app-bar/use-app-bar-scroll.js +139 -0
  20. package/dist/components/app-bar/use-app-bar-scroll.js.map +1 -0
  21. package/dist/components/autocomplete/Autocomplete.d.ts +142 -0
  22. package/dist/components/autocomplete/Autocomplete.js +284 -0
  23. package/dist/components/autocomplete/Autocomplete.js.map +1 -0
  24. package/dist/components/badge/Badge.d.ts +71 -0
  25. package/dist/components/badge/Badge.js +72 -0
  26. package/dist/components/badge/Badge.js.map +1 -0
  27. package/dist/components/badge/badge-styles.d.ts +100 -0
  28. package/dist/components/badge/badge-styles.js +43 -0
  29. package/dist/components/badge/badge-styles.js.map +1 -0
  30. package/dist/components/badge/badge-tokens.d.ts +7 -0
  31. package/dist/components/badge/badge-tokens.js +40 -0
  32. package/dist/components/badge/badge-tokens.js.map +1 -0
  33. package/dist/components/button/Button.d.ts +91 -0
  34. package/dist/components/button/Button.js +96 -0
  35. package/dist/components/button/Button.js.map +1 -0
  36. package/dist/components/button/ButtonContext.d.ts +30 -0
  37. package/dist/components/button/ButtonContext.js +18 -0
  38. package/dist/components/button/ButtonContext.js.map +1 -0
  39. package/dist/components/button/DensityZeroButtons.js +25 -0
  40. package/dist/components/button/DensityZeroButtons.js.map +1 -0
  41. package/dist/components/button/button-pending.d.ts +10 -0
  42. package/dist/components/button/button-pending.js +166 -0
  43. package/dist/components/button/button-pending.js.map +1 -0
  44. package/dist/components/button/button-styles.d.ts +216 -0
  45. package/dist/components/button/button-styles.js +199 -0
  46. package/dist/components/button/button-styles.js.map +1 -0
  47. package/dist/components/button/button-tokens.d.ts +10 -0
  48. package/dist/components/button/button-tokens.js +257 -0
  49. package/dist/components/button/button-tokens.js.map +1 -0
  50. package/dist/components/button/connected-shapes.js +152 -0
  51. package/dist/components/button/connected-shapes.js.map +1 -0
  52. package/dist/components/card/Card.d.ts +60 -0
  53. package/dist/components/card/Card.js +69 -0
  54. package/dist/components/card/Card.js.map +1 -0
  55. package/dist/components/card/card-styles.d.ts +42 -0
  56. package/dist/components/card/card-styles.js +64 -0
  57. package/dist/components/card/card-styles.js.map +1 -0
  58. package/dist/components/card/card-tokens.d.ts +7 -0
  59. package/dist/components/card/card-tokens.js +84 -0
  60. package/dist/components/card/card-tokens.js.map +1 -0
  61. package/dist/components/carousel/Carousel.d.ts +124 -0
  62. package/dist/components/carousel/Carousel.js +387 -0
  63. package/dist/components/carousel/Carousel.js.map +1 -0
  64. package/dist/components/carousel/carousel-keylines.js +486 -0
  65. package/dist/components/carousel/carousel-keylines.js.map +1 -0
  66. package/dist/components/carousel/carousel-press-area.js +35 -0
  67. package/dist/components/carousel/carousel-press-area.js.map +1 -0
  68. package/dist/components/carousel/carousel-styles.d.ts +188 -0
  69. package/dist/components/carousel/carousel-styles.js +116 -0
  70. package/dist/components/carousel/carousel-styles.js.map +1 -0
  71. package/dist/components/carousel/carousel-tokens.d.ts +7 -0
  72. package/dist/components/carousel/carousel-tokens.js +18 -0
  73. package/dist/components/carousel/carousel-tokens.js.map +1 -0
  74. package/dist/components/checkbox/Checkbox.d.ts +78 -0
  75. package/dist/components/checkbox/Checkbox.js +77 -0
  76. package/dist/components/checkbox/Checkbox.js.map +1 -0
  77. package/dist/components/checkbox/checkbox-box.js +34 -0
  78. package/dist/components/checkbox/checkbox-box.js.map +1 -0
  79. package/dist/components/checkbox/checkbox-styles.d.ts +100 -0
  80. package/dist/components/checkbox/checkbox-styles.js +54 -0
  81. package/dist/components/checkbox/checkbox-styles.js.map +1 -0
  82. package/dist/components/checkbox/checkbox-tokens.d.ts +7 -0
  83. package/dist/components/checkbox/checkbox-tokens.js +41 -0
  84. package/dist/components/checkbox/checkbox-tokens.js.map +1 -0
  85. package/dist/components/chip/Chip.d.ts +171 -0
  86. package/dist/components/chip/Chip.js +348 -0
  87. package/dist/components/chip/Chip.js.map +1 -0
  88. package/dist/components/chip/ChipSet.d.ts +70 -0
  89. package/dist/components/chip/ChipSet.js +198 -0
  90. package/dist/components/chip/ChipSet.js.map +1 -0
  91. package/dist/components/chip/chip-styles.d.ts +263 -0
  92. package/dist/components/chip/chip-styles.js +360 -0
  93. package/dist/components/chip/chip-styles.js.map +1 -0
  94. package/dist/components/chip/chip-tokens.d.ts +13 -0
  95. package/dist/components/chip/chip-tokens.js +185 -0
  96. package/dist/components/chip/chip-tokens.js.map +1 -0
  97. package/dist/components/date-picker/CalendarGrid.js +94 -0
  98. package/dist/components/date-picker/CalendarGrid.js.map +1 -0
  99. package/dist/components/date-picker/CompactDateDialog.js +63 -0
  100. package/dist/components/date-picker/CompactDateDialog.js.map +1 -0
  101. package/dist/components/date-picker/DateField.d.ts +161 -0
  102. package/dist/components/date-picker/DateField.js +393 -0
  103. package/dist/components/date-picker/DateField.js.map +1 -0
  104. package/dist/components/date-picker/DateInput.d.ts +20 -0
  105. package/dist/components/date-picker/DateInput.js +99 -0
  106. package/dist/components/date-picker/DateInput.js.map +1 -0
  107. package/dist/components/date-picker/DatePicker.d.ts +165 -0
  108. package/dist/components/date-picker/DatePicker.js +492 -0
  109. package/dist/components/date-picker/DatePicker.js.map +1 -0
  110. package/dist/components/date-picker/PickerDialog.d.ts +121 -0
  111. package/dist/components/date-picker/PickerDialog.js +161 -0
  112. package/dist/components/date-picker/PickerDialog.js.map +1 -0
  113. package/dist/components/date-picker/calendar-parts.js +141 -0
  114. package/dist/components/date-picker/calendar-parts.js.map +1 -0
  115. package/dist/components/date-picker/date-format.js +72 -0
  116. package/dist/components/date-picker/date-format.js.map +1 -0
  117. package/dist/components/date-picker/date-picker-styles.d.ts +247 -0
  118. package/dist/components/date-picker/date-picker-styles.js +163 -0
  119. package/dist/components/date-picker/date-picker-styles.js.map +1 -0
  120. package/dist/components/date-picker/date-picker-tokens.d.ts +7 -0
  121. package/dist/components/date-picker/date-picker-tokens.js +104 -0
  122. package/dist/components/date-picker/date-picker-tokens.js.map +1 -0
  123. package/dist/components/date-picker/picker-dialog-context.js +8 -0
  124. package/dist/components/date-picker/picker-dialog-context.js.map +1 -0
  125. package/dist/components/date-picker/picker-dialog-styles.d.ts +95 -0
  126. package/dist/components/date-picker/picker-dialog-styles.js +57 -0
  127. package/dist/components/date-picker/picker-dialog-styles.js.map +1 -0
  128. package/dist/components/date-picker/picker-icons.js +24 -0
  129. package/dist/components/date-picker/picker-icons.js.map +1 -0
  130. package/dist/components/date-picker/use-media-query.js +21 -0
  131. package/dist/components/date-picker/use-media-query.js.map +1 -0
  132. package/dist/components/date-picker/use-size-transform.js +62 -0
  133. package/dist/components/date-picker/use-size-transform.js.map +1 -0
  134. package/dist/components/date-picker/use-view-exit.js +68 -0
  135. package/dist/components/date-picker/use-view-exit.js.map +1 -0
  136. package/dist/components/dialog/Dialog.d.ts +267 -0
  137. package/dist/components/dialog/Dialog.js +521 -0
  138. package/dist/components/dialog/Dialog.js.map +1 -0
  139. package/dist/components/dialog/dialog-styles.d.ts +335 -0
  140. package/dist/components/dialog/dialog-styles.js +377 -0
  141. package/dist/components/dialog/dialog-styles.js.map +1 -0
  142. package/dist/components/dialog/dialog-tokens.d.ts +7 -0
  143. package/dist/components/dialog/dialog-tokens.js +57 -0
  144. package/dist/components/dialog/dialog-tokens.js.map +1 -0
  145. package/dist/components/divider/Divider.d.ts +59 -0
  146. package/dist/components/divider/Divider.js +53 -0
  147. package/dist/components/divider/Divider.js.map +1 -0
  148. package/dist/components/divider/divider-styles.d.ts +90 -0
  149. package/dist/components/divider/divider-styles.js +66 -0
  150. package/dist/components/divider/divider-styles.js.map +1 -0
  151. package/dist/components/divider/divider-tokens.d.ts +7 -0
  152. package/dist/components/divider/divider-tokens.js +16 -0
  153. package/dist/components/divider/divider-tokens.js.map +1 -0
  154. package/dist/components/fab/Fab.d.ts +130 -0
  155. package/dist/components/fab/Fab.js +137 -0
  156. package/dist/components/fab/Fab.js.map +1 -0
  157. package/dist/components/fab/FabTooltip.js +36 -0
  158. package/dist/components/fab/FabTooltip.js.map +1 -0
  159. package/dist/components/fab/fab-styles.d.ts +286 -0
  160. package/dist/components/fab/fab-styles.js +131 -0
  161. package/dist/components/fab/fab-styles.js.map +1 -0
  162. package/dist/components/fab/fab-tokens.d.ts +12 -0
  163. package/dist/components/fab/fab-tokens.js +105 -0
  164. package/dist/components/fab/fab-tokens.js.map +1 -0
  165. package/dist/components/fab-menu/FabMenu.d.ts +156 -0
  166. package/dist/components/fab-menu/FabMenu.js +291 -0
  167. package/dist/components/fab-menu/FabMenu.js.map +1 -0
  168. package/dist/components/fab-menu/fab-menu-stagger.js +51 -0
  169. package/dist/components/fab-menu/fab-menu-stagger.js.map +1 -0
  170. package/dist/components/fab-menu/fab-menu-styles.d.ts +166 -0
  171. package/dist/components/fab-menu/fab-menu-styles.js +107 -0
  172. package/dist/components/fab-menu/fab-menu-styles.js.map +1 -0
  173. package/dist/components/fab-menu/fab-menu-tokens.d.ts +7 -0
  174. package/dist/components/fab-menu/fab-menu-tokens.js +120 -0
  175. package/dist/components/fab-menu/fab-menu-tokens.js.map +1 -0
  176. package/dist/components/icon-button/IconButton.d.ts +125 -0
  177. package/dist/components/icon-button/IconButton.js +112 -0
  178. package/dist/components/icon-button/IconButton.js.map +1 -0
  179. package/dist/components/icon-button/icon-button-styles.d.ts +217 -0
  180. package/dist/components/icon-button/icon-button-styles.js +244 -0
  181. package/dist/components/icon-button/icon-button-styles.js.map +1 -0
  182. package/dist/components/icon-button/icon-button-tokens.d.ts +11 -0
  183. package/dist/components/icon-button/icon-button-tokens.js +215 -0
  184. package/dist/components/icon-button/icon-button-tokens.js.map +1 -0
  185. package/dist/components/list/List.d.ts +265 -0
  186. package/dist/components/list/List.js +1386 -0
  187. package/dist/components/list/List.js.map +1 -0
  188. package/dist/components/list/ListMedia.d.ts +88 -0
  189. package/dist/components/list/ListMedia.js +132 -0
  190. package/dist/components/list/ListMedia.js.map +1 -0
  191. package/dist/components/list/list-styles.d.ts +375 -0
  192. package/dist/components/list/list-styles.js +220 -0
  193. package/dist/components/list/list-styles.js.map +1 -0
  194. package/dist/components/list/list-tokens.d.ts +7 -0
  195. package/dist/components/list/list-tokens.js +92 -0
  196. package/dist/components/list/list-tokens.js.map +1 -0
  197. package/dist/components/loading-indicator/LoadingIndicator.d.ts +65 -0
  198. package/dist/components/loading-indicator/LoadingIndicator.js +92 -0
  199. package/dist/components/loading-indicator/LoadingIndicator.js.map +1 -0
  200. package/dist/components/loading-indicator/lazy-loading-indicator.js +25 -0
  201. package/dist/components/loading-indicator/lazy-loading-indicator.js.map +1 -0
  202. package/dist/components/loading-indicator/loading-indicator-frames.js +149 -0
  203. package/dist/components/loading-indicator/loading-indicator-frames.js.map +1 -0
  204. package/dist/components/loading-indicator/loading-indicator-styles.d.ts +36 -0
  205. package/dist/components/loading-indicator/loading-indicator-styles.js +22 -0
  206. package/dist/components/loading-indicator/loading-indicator-styles.js.map +1 -0
  207. package/dist/components/loading-indicator/loading-indicator-tokens.d.ts +7 -0
  208. package/dist/components/loading-indicator/loading-indicator-tokens.js +44 -0
  209. package/dist/components/loading-indicator/loading-indicator-tokens.js.map +1 -0
  210. package/dist/components/menu/Menu.d.ts +215 -0
  211. package/dist/components/menu/Menu.js +715 -0
  212. package/dist/components/menu/Menu.js.map +1 -0
  213. package/dist/components/menu/menu-styles.d.ts +354 -0
  214. package/dist/components/menu/menu-styles.js +219 -0
  215. package/dist/components/menu/menu-styles.js.map +1 -0
  216. package/dist/components/menu/menu-tokens.d.ts +7 -0
  217. package/dist/components/menu/menu-tokens.js +93 -0
  218. package/dist/components/menu/menu-tokens.js.map +1 -0
  219. package/dist/components/menu/menu-trigger.d.ts +51 -0
  220. package/dist/components/menu/menu-trigger.js +100 -0
  221. package/dist/components/menu/menu-trigger.js.map +1 -0
  222. package/dist/components/menu/use-reveal-entering.js +42 -0
  223. package/dist/components/menu/use-reveal-entering.js.map +1 -0
  224. package/dist/components/navigation/NavItem.d.ts +54 -0
  225. package/dist/components/navigation/NavItem.js +182 -0
  226. package/dist/components/navigation/NavItem.js.map +1 -0
  227. package/dist/components/navigation/NavigationBar.d.ts +64 -0
  228. package/dist/components/navigation/NavigationBar.js +121 -0
  229. package/dist/components/navigation/NavigationBar.js.map +1 -0
  230. package/dist/components/navigation/NavigationRail.d.ts +91 -0
  231. package/dist/components/navigation/NavigationRail.js +285 -0
  232. package/dist/components/navigation/NavigationRail.js.map +1 -0
  233. package/dist/components/navigation/nav-item-styles.d.ts +190 -0
  234. package/dist/components/navigation/nav-item-styles.js +123 -0
  235. package/dist/components/navigation/nav-item-styles.js.map +1 -0
  236. package/dist/components/navigation/navigation-styles.d.ts +239 -0
  237. package/dist/components/navigation/navigation-styles.js +134 -0
  238. package/dist/components/navigation/navigation-styles.js.map +1 -0
  239. package/dist/components/navigation/navigation-tokens.d.ts +9 -0
  240. package/dist/components/navigation/navigation-tokens.js +114 -0
  241. package/dist/components/navigation/navigation-tokens.js.map +1 -0
  242. package/dist/components/navigation/use-hide-on-scroll.js +115 -0
  243. package/dist/components/navigation/use-hide-on-scroll.js.map +1 -0
  244. package/dist/components/navigation/use-item-arrow-keys.js +37 -0
  245. package/dist/components/navigation/use-item-arrow-keys.js.map +1 -0
  246. package/dist/components/navigation/use-rail-item-morph.js +61 -0
  247. package/dist/components/navigation/use-rail-item-morph.js.map +1 -0
  248. package/dist/components/progress/ProgressIndicator.d.ts +95 -0
  249. package/dist/components/progress/ProgressIndicator.js +426 -0
  250. package/dist/components/progress/ProgressIndicator.js.map +1 -0
  251. package/dist/components/progress/progress-geometry.js +285 -0
  252. package/dist/components/progress/progress-geometry.js.map +1 -0
  253. package/dist/components/progress/progress-styles.d.ts +81 -0
  254. package/dist/components/progress/progress-styles.js +43 -0
  255. package/dist/components/progress/progress-styles.js.map +1 -0
  256. package/dist/components/progress/progress-tokens.d.ts +7 -0
  257. package/dist/components/progress/progress-tokens.js +39 -0
  258. package/dist/components/progress/progress-tokens.js.map +1 -0
  259. package/dist/components/pull-to-refresh/PullToRefresh.d.ts +94 -0
  260. package/dist/components/pull-to-refresh/PullToRefresh.js +395 -0
  261. package/dist/components/pull-to-refresh/PullToRefresh.js.map +1 -0
  262. package/dist/components/pull-to-refresh/pull-to-refresh-math.js +37 -0
  263. package/dist/components/pull-to-refresh/pull-to-refresh-math.js.map +1 -0
  264. package/dist/components/pull-to-refresh/pull-to-refresh-styles.d.ts +53 -0
  265. package/dist/components/pull-to-refresh/pull-to-refresh-styles.js +14 -0
  266. package/dist/components/pull-to-refresh/pull-to-refresh-styles.js.map +1 -0
  267. package/dist/components/radio/RadioGroup.d.ts +121 -0
  268. package/dist/components/radio/RadioGroup.js +163 -0
  269. package/dist/components/radio/RadioGroup.js.map +1 -0
  270. package/dist/components/radio/radio-ring.js +21 -0
  271. package/dist/components/radio/radio-ring.js.map +1 -0
  272. package/dist/components/radio/radio-styles.d.ts +155 -0
  273. package/dist/components/radio/radio-styles.js +60 -0
  274. package/dist/components/radio/radio-styles.js.map +1 -0
  275. package/dist/components/radio/radio-tokens.d.ts +7 -0
  276. package/dist/components/radio/radio-tokens.js +31 -0
  277. package/dist/components/radio/radio-tokens.js.map +1 -0
  278. package/dist/components/search/SearchAppBar.d.ts +45 -0
  279. package/dist/components/search/SearchAppBar.js +61 -0
  280. package/dist/components/search/SearchAppBar.js.map +1 -0
  281. package/dist/components/search/SearchBar.d.ts +147 -0
  282. package/dist/components/search/SearchBar.js +412 -0
  283. package/dist/components/search/SearchBar.js.map +1 -0
  284. package/dist/components/search/search-styles.d.ts +243 -0
  285. package/dist/components/search/search-styles.js +143 -0
  286. package/dist/components/search/search-styles.js.map +1 -0
  287. package/dist/components/search/search-tokens.d.ts +9 -0
  288. package/dist/components/search/search-tokens.js +70 -0
  289. package/dist/components/search/search-tokens.js.map +1 -0
  290. package/dist/components/select/Select.d.ts +187 -0
  291. package/dist/components/select/Select.js +319 -0
  292. package/dist/components/select/Select.js.map +1 -0
  293. package/dist/components/select/field-shell.d.ts +29 -0
  294. package/dist/components/select/field-shell.js +135 -0
  295. package/dist/components/select/field-shell.js.map +1 -0
  296. package/dist/components/select/option-list.d.ts +81 -0
  297. package/dist/components/select/option-list.js +291 -0
  298. package/dist/components/select/option-list.js.map +1 -0
  299. package/dist/components/select/search-list.js +135 -0
  300. package/dist/components/select/search-list.js.map +1 -0
  301. package/dist/components/select/selection-cap.js +30 -0
  302. package/dist/components/select/selection-cap.js.map +1 -0
  303. package/dist/components/sheet/BottomSheet.d.ts +154 -0
  304. package/dist/components/sheet/BottomSheet.js +442 -0
  305. package/dist/components/sheet/BottomSheet.js.map +1 -0
  306. package/dist/components/sheet/SheetTrigger.d.ts +25 -0
  307. package/dist/components/sheet/SheetTrigger.js +46 -0
  308. package/dist/components/sheet/SheetTrigger.js.map +1 -0
  309. package/dist/components/sheet/SideSheet.d.ts +139 -0
  310. package/dist/components/sheet/SideSheet.js +289 -0
  311. package/dist/components/sheet/SideSheet.js.map +1 -0
  312. package/dist/components/sheet/bottom-sheet-gesture.js +30 -0
  313. package/dist/components/sheet/bottom-sheet-gesture.js.map +1 -0
  314. package/dist/components/sheet/lazy-bottom-sheet.js +33 -0
  315. package/dist/components/sheet/lazy-bottom-sheet.js.map +1 -0
  316. package/dist/components/sheet/sheet-gesture.js +48 -0
  317. package/dist/components/sheet/sheet-gesture.js.map +1 -0
  318. package/dist/components/sheet/sheet-icons.js +31 -0
  319. package/dist/components/sheet/sheet-icons.js.map +1 -0
  320. package/dist/components/sheet/sheet-settle.js +58 -0
  321. package/dist/components/sheet/sheet-settle.js.map +1 -0
  322. package/dist/components/sheet/sheet-styles.d.ts +312 -0
  323. package/dist/components/sheet/sheet-styles.js +229 -0
  324. package/dist/components/sheet/sheet-styles.js.map +1 -0
  325. package/dist/components/sheet/sheet-tokens.d.ts +12 -0
  326. package/dist/components/sheet/sheet-tokens.js +115 -0
  327. package/dist/components/sheet/sheet-tokens.js.map +1 -0
  328. package/dist/components/sheet/side-swipe-gesture.js +22 -0
  329. package/dist/components/sheet/side-swipe-gesture.js.map +1 -0
  330. package/dist/components/sheet/use-peek-inert.js +32 -0
  331. package/dist/components/sheet/use-peek-inert.js.map +1 -0
  332. package/dist/components/sheet/use-side-swipe.js +174 -0
  333. package/dist/components/sheet/use-side-swipe.js.map +1 -0
  334. package/dist/components/slider/Slider.d.ts +129 -0
  335. package/dist/components/slider/Slider.js +295 -0
  336. package/dist/components/slider/Slider.js.map +1 -0
  337. package/dist/components/slider/slider-geometry.js +138 -0
  338. package/dist/components/slider/slider-geometry.js.map +1 -0
  339. package/dist/components/slider/slider-styles.d.ts +133 -0
  340. package/dist/components/slider/slider-styles.js +97 -0
  341. package/dist/components/slider/slider-styles.js.map +1 -0
  342. package/dist/components/slider/slider-tokens.d.ts +7 -0
  343. package/dist/components/slider/slider-tokens.js +66 -0
  344. package/dist/components/slider/slider-tokens.js.map +1 -0
  345. package/dist/components/slider/use-touch-track.js +138 -0
  346. package/dist/components/slider/use-touch-track.js.map +1 -0
  347. package/dist/components/snackbar/Snackbar.d.ts +96 -0
  348. package/dist/components/snackbar/Snackbar.js +253 -0
  349. package/dist/components/snackbar/Snackbar.js.map +1 -0
  350. package/dist/components/snackbar/snackbar-state.d.ts +58 -0
  351. package/dist/components/snackbar/snackbar-state.js +73 -0
  352. package/dist/components/snackbar/snackbar-state.js.map +1 -0
  353. package/dist/components/snackbar/snackbar-styles.d.ts +109 -0
  354. package/dist/components/snackbar/snackbar-styles.js +67 -0
  355. package/dist/components/snackbar/snackbar-styles.js.map +1 -0
  356. package/dist/components/snackbar/snackbar-tokens.d.ts +7 -0
  357. package/dist/components/snackbar/snackbar-tokens.js +54 -0
  358. package/dist/components/snackbar/snackbar-tokens.js.map +1 -0
  359. package/dist/components/split-button/SplitButton.d.ts +109 -0
  360. package/dist/components/split-button/SplitButton.js +195 -0
  361. package/dist/components/split-button/SplitButton.js.map +1 -0
  362. package/dist/components/split-button/split-button-styles.d.ts +214 -0
  363. package/dist/components/split-button/split-button-styles.js +164 -0
  364. package/dist/components/split-button/split-button-styles.js.map +1 -0
  365. package/dist/components/split-button/split-button-tokens.d.ts +7 -0
  366. package/dist/components/split-button/split-button-tokens.js +36 -0
  367. package/dist/components/split-button/split-button-tokens.js.map +1 -0
  368. package/dist/components/switch/Switch.d.ts +82 -0
  369. package/dist/components/switch/Switch.js +165 -0
  370. package/dist/components/switch/Switch.js.map +1 -0
  371. package/dist/components/switch/switch-styles.d.ts +96 -0
  372. package/dist/components/switch/switch-styles.js +68 -0
  373. package/dist/components/switch/switch-styles.js.map +1 -0
  374. package/dist/components/switch/switch-thumb.js +41 -0
  375. package/dist/components/switch/switch-thumb.js.map +1 -0
  376. package/dist/components/switch/switch-tokens.d.ts +7 -0
  377. package/dist/components/switch/switch-tokens.js +78 -0
  378. package/dist/components/switch/switch-tokens.js.map +1 -0
  379. package/dist/components/tabs/Tabs.d.ts +120 -0
  380. package/dist/components/tabs/Tabs.js +346 -0
  381. package/dist/components/tabs/Tabs.js.map +1 -0
  382. package/dist/components/tabs/tabs-styles.d.ts +198 -0
  383. package/dist/components/tabs/tabs-styles.js +99 -0
  384. package/dist/components/tabs/tabs-styles.js.map +1 -0
  385. package/dist/components/tabs/tabs-tokens.d.ts +7 -0
  386. package/dist/components/tabs/tabs-tokens.js +121 -0
  387. package/dist/components/tabs/tabs-tokens.js.map +1 -0
  388. package/dist/components/text-field/TextField.d.ts +175 -0
  389. package/dist/components/text-field/TextField.js +250 -0
  390. package/dist/components/text-field/TextField.js.map +1 -0
  391. package/dist/components/text-field/text-field-styles.d.ts +252 -0
  392. package/dist/components/text-field/text-field-styles.js +209 -0
  393. package/dist/components/text-field/text-field-styles.js.map +1 -0
  394. package/dist/components/text-field/text-field-tokens.d.ts +7 -0
  395. package/dist/components/text-field/text-field-tokens.js +177 -0
  396. package/dist/components/text-field/text-field-tokens.js.map +1 -0
  397. package/dist/components/time-picker/TimePicker.d.ts +142 -0
  398. package/dist/components/time-picker/TimePicker.js +700 -0
  399. package/dist/components/time-picker/TimePicker.js.map +1 -0
  400. package/dist/components/time-picker/time-picker-styles.d.ts +175 -0
  401. package/dist/components/time-picker/time-picker-styles.js +112 -0
  402. package/dist/components/time-picker/time-picker-styles.js.map +1 -0
  403. package/dist/components/time-picker/time-picker-tokens.d.ts +7 -0
  404. package/dist/components/time-picker/time-picker-tokens.js +86 -0
  405. package/dist/components/time-picker/time-picker-tokens.js.map +1 -0
  406. package/dist/components/toolbar/Toolbar.d.ts +209 -0
  407. package/dist/components/toolbar/Toolbar.js +282 -0
  408. package/dist/components/toolbar/Toolbar.js.map +1 -0
  409. package/dist/components/toolbar/toolbar-styles.d.ts +403 -0
  410. package/dist/components/toolbar/toolbar-styles.js +253 -0
  411. package/dist/components/toolbar/toolbar-styles.js.map +1 -0
  412. package/dist/components/toolbar/toolbar-tokens.d.ts +27 -0
  413. package/dist/components/toolbar/toolbar-tokens.js +117 -0
  414. package/dist/components/toolbar/toolbar-tokens.js.map +1 -0
  415. package/dist/components/toolbar/use-toolbar-scroll-expansion.d.ts +56 -0
  416. package/dist/components/toolbar/use-toolbar-scroll-expansion.js +86 -0
  417. package/dist/components/toolbar/use-toolbar-scroll-expansion.js.map +1 -0
  418. package/dist/components/tooltip/Tooltip.d.ts +131 -0
  419. package/dist/components/tooltip/Tooltip.js +388 -0
  420. package/dist/components/tooltip/Tooltip.js.map +1 -0
  421. package/dist/components/tooltip/lazy-tooltip.js +35 -0
  422. package/dist/components/tooltip/lazy-tooltip.js.map +1 -0
  423. package/dist/components/tooltip/tooltip-placement.d.ts +16 -0
  424. package/dist/components/tooltip/tooltip-placement.js +14 -0
  425. package/dist/components/tooltip/tooltip-placement.js.map +1 -0
  426. package/dist/components/tooltip/tooltip-styles.d.ts +142 -0
  427. package/dist/components/tooltip/tooltip-styles.js +81 -0
  428. package/dist/components/tooltip/tooltip-styles.js.map +1 -0
  429. package/dist/components/tooltip/tooltip-tokens.d.ts +9 -0
  430. package/dist/components/tooltip/tooltip-tokens.js +72 -0
  431. package/dist/components/tooltip/tooltip-tokens.js.map +1 -0
  432. package/dist/components/tooltip/tooltip-trigger.d.ts +42 -0
  433. package/dist/components/tooltip/tooltip-trigger.js +115 -0
  434. package/dist/components/tooltip/tooltip-trigger.js.map +1 -0
  435. package/dist/composites/button-group/ButtonGroup.d.ts +116 -0
  436. package/dist/composites/button-group/ButtonGroup.js +270 -0
  437. package/dist/composites/button-group/ButtonGroup.js.map +1 -0
  438. package/dist/composites/button-group/button-group-styles.d.ts +73 -0
  439. package/dist/composites/button-group/button-group-styles.js +87 -0
  440. package/dist/composites/button-group/button-group-styles.js.map +1 -0
  441. package/dist/composites/button-group/lazy-overflow-menu.js +43 -0
  442. package/dist/composites/button-group/lazy-overflow-menu.js.map +1 -0
  443. package/dist/composites/button-group/overflow-menu-list.js +26 -0
  444. package/dist/composites/button-group/overflow-menu-list.js.map +1 -0
  445. package/dist/composites/button-group/use-overflow.js +75 -0
  446. package/dist/composites/button-group/use-overflow.js.map +1 -0
  447. package/dist/composites/button-group/use-press-expansion.js +155 -0
  448. package/dist/composites/button-group/use-press-expansion.js.map +1 -0
  449. package/dist/index.d.ts +142 -0
  450. package/dist/index.js +136 -0
  451. package/dist/motion/get-m3-spring.d.ts +6 -0
  452. package/dist/motion/get-m3-spring.js +10 -0
  453. package/dist/motion/get-m3-spring.js.map +1 -0
  454. package/dist/motion/reduced-motion.js +19 -0
  455. package/dist/motion/reduced-motion.js.map +1 -0
  456. package/dist/motion/use-m3-spring.d.ts +13 -0
  457. package/dist/motion/use-m3-spring.js +22 -0
  458. package/dist/motion/use-m3-spring.js.map +1 -0
  459. package/dist/next/NextRouterProvider.d.ts +13 -0
  460. package/dist/next/NextRouterProvider.js +26 -0
  461. package/dist/next/NextRouterProvider.js.map +1 -0
  462. package/dist/next/get-theme-from-cookies.d.ts +32 -0
  463. package/dist/next/get-theme-from-cookies.js +27 -0
  464. package/dist/next/get-theme-from-cookies.js.map +1 -0
  465. package/dist/next/navigation-guard.d.ts +30 -0
  466. package/dist/next/navigation-guard.js +68 -0
  467. package/dist/next/navigation-guard.js.map +1 -0
  468. package/dist/next.d.ts +5 -0
  469. package/dist/next.js +5 -0
  470. package/dist/primitives/ButtonBase.d.ts +115 -0
  471. package/dist/primitives/ButtonBase.js +231 -0
  472. package/dist/primitives/ButtonBase.js.map +1 -0
  473. package/dist/primitives/DomDirectionLocale.d.ts +18 -0
  474. package/dist/primitives/DomDirectionLocale.js +28 -0
  475. package/dist/primitives/DomDirectionLocale.js.map +1 -0
  476. package/dist/primitives/Field.d.ts +50 -0
  477. package/dist/primitives/Field.js +74 -0
  478. package/dist/primitives/Field.js.map +1 -0
  479. package/dist/primitives/IconFaces.js +23 -0
  480. package/dist/primitives/IconFaces.js.map +1 -0
  481. package/dist/primitives/Overlay.d.ts +39 -0
  482. package/dist/primitives/Overlay.js +86 -0
  483. package/dist/primitives/Overlay.js.map +1 -0
  484. package/dist/primitives/SelectionControl.d.ts +55 -0
  485. package/dist/primitives/SelectionControl.js +58 -0
  486. package/dist/primitives/SelectionControl.js.map +1 -0
  487. package/dist/primitives/Surface.d.ts +123 -0
  488. package/dist/primitives/Surface.js +68 -0
  489. package/dist/primitives/Surface.js.map +1 -0
  490. package/dist/primitives/ToolbarContext.js +12 -0
  491. package/dist/primitives/ToolbarContext.js.map +1 -0
  492. package/dist/primitives/TouchTarget.d.ts +14 -0
  493. package/dist/primitives/TouchTarget.js +20 -0
  494. package/dist/primitives/TouchTarget.js.map +1 -0
  495. package/dist/primitives/TriggerContext.d.ts +34 -0
  496. package/dist/primitives/TriggerContext.js +24 -0
  497. package/dist/primitives/TriggerContext.js.map +1 -0
  498. package/dist/primitives/hidden-input-focus.js +27 -0
  499. package/dist/primitives/hidden-input-focus.js.map +1 -0
  500. package/dist/primitives/icon-faces-styles.d.ts +9 -0
  501. package/dist/primitives/icon-faces-styles.js +45 -0
  502. package/dist/primitives/icon-faces-styles.js.map +1 -0
  503. package/dist/primitives/locale-with-direction.d.ts +9 -0
  504. package/dist/primitives/locale-with-direction.js +17 -0
  505. package/dist/primitives/locale-with-direction.js.map +1 -0
  506. package/dist/primitives/morph-path.d.ts +25 -0
  507. package/dist/primitives/morph-path.js +38 -0
  508. package/dist/primitives/morph-path.js.map +1 -0
  509. package/dist/primitives/selection-control-styles.d.ts +54 -0
  510. package/dist/primitives/selection-control-styles.js +44 -0
  511. package/dist/primitives/selection-control-styles.js.map +1 -0
  512. package/dist/primitives/use-m3-interaction.d.ts +51 -0
  513. package/dist/primitives/use-m3-interaction.js +149 -0
  514. package/dist/primitives/use-m3-interaction.js.map +1 -0
  515. package/dist/primitives/use-m3-morph.d.ts +18 -0
  516. package/dist/primitives/use-m3-morph.js +36 -0
  517. package/dist/primitives/use-m3-morph.js.map +1 -0
  518. package/dist/primitives/use-presence.d.ts +19 -0
  519. package/dist/primitives/use-presence.js +37 -0
  520. package/dist/primitives/use-presence.js.map +1 -0
  521. package/dist/primitives.d.ts +36 -0
  522. package/dist/primitives.js +34 -0
  523. package/dist/shapes/corner-rounding.d.ts +13 -0
  524. package/dist/shapes/corner-rounding.js +18 -0
  525. package/dist/shapes/corner-rounding.js.map +1 -0
  526. package/dist/shapes/cubic.d.ts +52 -0
  527. package/dist/shapes/cubic.js +189 -0
  528. package/dist/shapes/cubic.js.map +1 -0
  529. package/dist/shapes/feature-mapping.js +80 -0
  530. package/dist/shapes/feature-mapping.js.map +1 -0
  531. package/dist/shapes/features.d.ts +23 -0
  532. package/dist/shapes/features.js +82 -0
  533. package/dist/shapes/features.js.map +1 -0
  534. package/dist/shapes/float-mapping.js +65 -0
  535. package/dist/shapes/float-mapping.js.map +1 -0
  536. package/dist/shapes/generated/material-shape-path-record.d.ts +11 -0
  537. package/dist/shapes/generated/material-shape-path-record.js +48 -0
  538. package/dist/shapes/generated/material-shape-path-record.js.map +1 -0
  539. package/dist/shapes/generated/material-shape-paths.d.ts +78 -0
  540. package/dist/shapes/generated/material-shape-paths.js +218 -0
  541. package/dist/shapes/generated/material-shape-paths.js.map +1 -0
  542. package/dist/shapes/mask.d.ts +14 -0
  543. package/dist/shapes/mask.js +24 -0
  544. package/dist/shapes/mask.js.map +1 -0
  545. package/dist/shapes/material-shapes.d.ts +11 -0
  546. package/dist/shapes/material-shapes.js +250 -0
  547. package/dist/shapes/material-shapes.js.map +1 -0
  548. package/dist/shapes/morph.d.ts +25 -0
  549. package/dist/shapes/morph.js +97 -0
  550. package/dist/shapes/morph.js.map +1 -0
  551. package/dist/shapes/path.d.ts +33 -0
  552. package/dist/shapes/path.js +47 -0
  553. package/dist/shapes/path.js.map +1 -0
  554. package/dist/shapes/point.d.ts +28 -0
  555. package/dist/shapes/point.js +103 -0
  556. package/dist/shapes/point.js.map +1 -0
  557. package/dist/shapes/polygon-measure.js +140 -0
  558. package/dist/shapes/polygon-measure.js.map +1 -0
  559. package/dist/shapes/rounded-polygon.d.ts +44 -0
  560. package/dist/shapes/rounded-polygon.js +278 -0
  561. package/dist/shapes/rounded-polygon.js.map +1 -0
  562. package/dist/shapes/shape-path.d.ts +15 -0
  563. package/dist/shapes/shapes.d.ts +53 -0
  564. package/dist/shapes/shapes.js +171 -0
  565. package/dist/shapes/shapes.js.map +1 -0
  566. package/dist/styles/generated/components.css +710 -0
  567. package/dist/styles/generated/theme.css +247 -0
  568. package/dist/styles/generated/themes.css +3361 -0
  569. package/dist/styles/generated/tokens.css +284 -0
  570. package/dist/styles/styles.css +15 -0
  571. package/dist/styles/utilities.css +283 -0
  572. package/dist/styles.compiled.css +2 -0
  573. package/dist/theme/ThemeProvider.d.ts +72 -0
  574. package/dist/theme/ThemeProvider.js +144 -0
  575. package/dist/theme/ThemeProvider.js.map +1 -0
  576. package/dist/theme/ThemeScope.d.ts +32 -0
  577. package/dist/theme/ThemeScope.js +67 -0
  578. package/dist/theme/ThemeScope.js.map +1 -0
  579. package/dist/theme/ThemeScript.d.ts +26 -0
  580. package/dist/theme/ThemeScript.js +44 -0
  581. package/dist/theme/ThemeScript.js.map +1 -0
  582. package/dist/theme/context.d.ts +32 -0
  583. package/dist/theme/context.js +47 -0
  584. package/dist/theme/context.js.map +1 -0
  585. package/dist/theme/create-theme.d.ts +60 -0
  586. package/dist/theme/create-theme.js +47 -0
  587. package/dist/theme/create-theme.js.map +1 -0
  588. package/dist/theme/css.js +54 -0
  589. package/dist/theme/css.js.map +1 -0
  590. package/dist/theme/parse-palettes.js +40 -0
  591. package/dist/theme/parse-palettes.js.map +1 -0
  592. package/dist/theme/scheme.d.ts +6 -0
  593. package/dist/theme/scheme.js +118 -0
  594. package/dist/theme/scheme.js.map +1 -0
  595. package/dist/theme/state.d.ts +38 -0
  596. package/dist/theme/state.js +93 -0
  597. package/dist/theme/state.js.map +1 -0
  598. package/dist/theme/storage.js +21 -0
  599. package/dist/theme/storage.js.map +1 -0
  600. package/dist/tokens/breakpoints.d.ts +15 -0
  601. package/dist/tokens/breakpoints.js +16 -0
  602. package/dist/tokens/breakpoints.js.map +1 -0
  603. package/dist/tokens/color.d.ts +104 -0
  604. package/dist/tokens/color.js +147 -0
  605. package/dist/tokens/color.js.map +1 -0
  606. package/dist/tokens/component.d.ts +110 -0
  607. package/dist/tokens/component.js +67 -0
  608. package/dist/tokens/component.js.map +1 -0
  609. package/dist/tokens/density.d.ts +20 -0
  610. package/dist/tokens/density.js +27 -0
  611. package/dist/tokens/density.js.map +1 -0
  612. package/dist/tokens/elevation.d.ts +44 -0
  613. package/dist/tokens/elevation.js +45 -0
  614. package/dist/tokens/elevation.js.map +1 -0
  615. package/dist/tokens/motion.d.ts +79 -0
  616. package/dist/tokens/motion.js +126 -0
  617. package/dist/tokens/motion.js.map +1 -0
  618. package/dist/tokens/shape.d.ts +22 -0
  619. package/dist/tokens/shape.js +22 -0
  620. package/dist/tokens/shape.js.map +1 -0
  621. package/dist/tokens/spring-velocity.d.ts +19 -0
  622. package/dist/tokens/spring-velocity.js +44 -0
  623. package/dist/tokens/spring-velocity.js.map +1 -0
  624. package/dist/tokens/state.d.ts +18 -0
  625. package/dist/tokens/state.js +19 -0
  626. package/dist/tokens/state.js.map +1 -0
  627. package/dist/tokens/typography.d.ts +64 -0
  628. package/dist/tokens/typography.js +60 -0
  629. package/dist/tokens/typography.js.map +1 -0
  630. package/dist/tokens/z-index.d.ts +17 -0
  631. package/dist/tokens/z-index.js +18 -0
  632. package/dist/tokens/z-index.js.map +1 -0
  633. package/dist/utils/announce.js +51 -0
  634. package/dist/utils/announce.js.map +1 -0
  635. package/dist/utils/assert-collection-children.js +26 -0
  636. package/dist/utils/assert-collection-children.js.map +1 -0
  637. package/dist/utils/closed-by.d.ts +9 -0
  638. package/dist/utils/closed-by.js +12 -0
  639. package/dist/utils/closed-by.js.map +1 -0
  640. package/dist/utils/cn.d.ts +31 -0
  641. package/dist/utils/cn.js +37 -0
  642. package/dist/utils/cn.js.map +1 -0
  643. package/dist/utils/composite-keys.js +32 -0
  644. package/dist/utils/composite-keys.js.map +1 -0
  645. package/dist/utils/focus-visible.js +14 -0
  646. package/dist/utils/focus-visible.js.map +1 -0
  647. package/dist/utils/focus.js +51 -0
  648. package/dist/utils/focus.js.map +1 -0
  649. package/dist/utils/focusable-disabled.js +12 -0
  650. package/dist/utils/focusable-disabled.js.map +1 -0
  651. package/dist/utils/keep-pressed-in-place.d.ts +60 -0
  652. package/dist/utils/keep-pressed-in-place.js +127 -0
  653. package/dist/utils/keep-pressed-in-place.js.map +1 -0
  654. package/dist/utils/load-on-demand.js +111 -0
  655. package/dist/utils/load-on-demand.js.map +1 -0
  656. package/dist/utils/merge-data-tokens.d.ts +9 -0
  657. package/dist/utils/merge-data-tokens.js +15 -0
  658. package/dist/utils/merge-data-tokens.js.map +1 -0
  659. package/dist/utils/natural-size.js +53 -0
  660. package/dist/utils/natural-size.js.map +1 -0
  661. package/dist/utils/nearest-reveal.js +28 -0
  662. package/dist/utils/nearest-reveal.js.map +1 -0
  663. package/dist/utils/placement.js +14 -0
  664. package/dist/utils/placement.js.map +1 -0
  665. package/dist/utils/radio-group-keys.js +74 -0
  666. package/dist/utils/radio-group-keys.js.map +1 -0
  667. package/dist/utils/rendered-description.js +17 -0
  668. package/dist/utils/rendered-description.js.map +1 -0
  669. package/dist/utils/root-props.d.ts +103 -0
  670. package/dist/utils/root-props.js +51 -0
  671. package/dist/utils/root-props.js.map +1 -0
  672. package/dist/utils/search.d.ts +11 -0
  673. package/dist/utils/search.js +18 -0
  674. package/dist/utils/search.js.map +1 -0
  675. package/dist/utils/shortcut.js +20 -0
  676. package/dist/utils/shortcut.js.map +1 -0
  677. package/dist/utils/split-data-attributes.d.ts +12 -0
  678. package/dist/utils/split-data-attributes.js +20 -0
  679. package/dist/utils/split-data-attributes.js.map +1 -0
  680. package/dist/utils/toolbar-keys.js +28 -0
  681. package/dist/utils/toolbar-keys.js.map +1 -0
  682. package/dist/utils/tv.d.ts +7 -0
  683. package/dist/utils/tv.js +9 -0
  684. package/dist/utils/tv.js.map +1 -0
  685. package/dist/utils/typeahead.js +64 -0
  686. package/dist/utils/typeahead.js.map +1 -0
  687. package/dist/utils/warn-once.js +30 -0
  688. package/dist/utils/warn-once.js.map +1 -0
  689. package/dist/vendor/material-color-utilities/blend/blend.js +88 -0
  690. package/dist/vendor/material-color-utilities/blend/blend.js.map +1 -0
  691. package/dist/vendor/material-color-utilities/contrast/contrast.js +131 -0
  692. package/dist/vendor/material-color-utilities/contrast/contrast.js.map +1 -0
  693. package/dist/vendor/material-color-utilities/dislike/dislike_analyzer.js +58 -0
  694. package/dist/vendor/material-color-utilities/dislike/dislike_analyzer.js.map +1 -0
  695. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2021.js +620 -0
  696. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2021.js.map +1 -0
  697. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2025.js +786 -0
  698. package/dist/vendor/material-color-utilities/dynamiccolor/color_spec_2025.js.map +1 -0
  699. package/dist/vendor/material-color-utilities/dynamiccolor/contrast_curve.js +59 -0
  700. package/dist/vendor/material-color-utilities/dynamiccolor/contrast_curve.js.map +1 -0
  701. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_color.js +420 -0
  702. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_color.js.map +1 -0
  703. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_scheme.js +701 -0
  704. package/dist/vendor/material-color-utilities/dynamiccolor/dynamic_scheme.js.map +1 -0
  705. package/dist/vendor/material-color-utilities/dynamiccolor/material_dynamic_colors.js +374 -0
  706. package/dist/vendor/material-color-utilities/dynamiccolor/material_dynamic_colors.js.map +1 -0
  707. package/dist/vendor/material-color-utilities/dynamiccolor/tone_delta_pair.js +65 -0
  708. package/dist/vendor/material-color-utilities/dynamiccolor/tone_delta_pair.js.map +1 -0
  709. package/dist/vendor/material-color-utilities/dynamiccolor/variant.js +38 -0
  710. package/dist/vendor/material-color-utilities/dynamiccolor/variant.js.map +1 -0
  711. package/dist/vendor/material-color-utilities/hct/cam16.js +309 -0
  712. package/dist/vendor/material-color-utilities/hct/cam16.js.map +1 -0
  713. package/dist/vendor/material-color-utilities/hct/hct.js +148 -0
  714. package/dist/vendor/material-color-utilities/hct/hct.js.map +1 -0
  715. package/dist/vendor/material-color-utilities/hct/hct_solver.js +660 -0
  716. package/dist/vendor/material-color-utilities/hct/hct_solver.js.map +1 -0
  717. package/dist/vendor/material-color-utilities/hct/viewing_conditions.js +117 -0
  718. package/dist/vendor/material-color-utilities/hct/viewing_conditions.js.map +1 -0
  719. package/dist/vendor/material-color-utilities/index.js +51 -0
  720. package/dist/vendor/material-color-utilities/index.js.map +1 -0
  721. package/dist/vendor/material-color-utilities/palettes/core_palette.js +22 -0
  722. package/dist/vendor/material-color-utilities/palettes/core_palette.js.map +1 -0
  723. package/dist/vendor/material-color-utilities/palettes/tonal_palette.js +134 -0
  724. package/dist/vendor/material-color-utilities/palettes/tonal_palette.js.map +1 -0
  725. package/dist/vendor/material-color-utilities/scheme/scheme.js +21 -0
  726. package/dist/vendor/material-color-utilities/scheme/scheme.js.map +1 -0
  727. package/dist/vendor/material-color-utilities/scheme/scheme_android.js +21 -0
  728. package/dist/vendor/material-color-utilities/scheme/scheme_android.js.map +1 -0
  729. package/dist/vendor/material-color-utilities/scheme/scheme_content.js +22 -0
  730. package/dist/vendor/material-color-utilities/scheme/scheme_content.js.map +1 -0
  731. package/dist/vendor/material-color-utilities/scheme/scheme_expressive.js +38 -0
  732. package/dist/vendor/material-color-utilities/scheme/scheme_expressive.js.map +1 -0
  733. package/dist/vendor/material-color-utilities/scheme/scheme_fidelity.js +22 -0
  734. package/dist/vendor/material-color-utilities/scheme/scheme_fidelity.js.map +1 -0
  735. package/dist/vendor/material-color-utilities/scheme/scheme_fruit_salad.js +22 -0
  736. package/dist/vendor/material-color-utilities/scheme/scheme_fruit_salad.js.map +1 -0
  737. package/dist/vendor/material-color-utilities/scheme/scheme_monochrome.js +22 -0
  738. package/dist/vendor/material-color-utilities/scheme/scheme_monochrome.js.map +1 -0
  739. package/dist/vendor/material-color-utilities/scheme/scheme_neutral.js +36 -0
  740. package/dist/vendor/material-color-utilities/scheme/scheme_neutral.js.map +1 -0
  741. package/dist/vendor/material-color-utilities/scheme/scheme_rainbow.js +22 -0
  742. package/dist/vendor/material-color-utilities/scheme/scheme_rainbow.js.map +1 -0
  743. package/dist/vendor/material-color-utilities/scheme/scheme_tonal_spot.js +41 -0
  744. package/dist/vendor/material-color-utilities/scheme/scheme_tonal_spot.js.map +1 -0
  745. package/dist/vendor/material-color-utilities/scheme/scheme_vibrant.js +39 -0
  746. package/dist/vendor/material-color-utilities/scheme/scheme_vibrant.js.map +1 -0
  747. package/dist/vendor/material-color-utilities/score/score.js +115 -0
  748. package/dist/vendor/material-color-utilities/score/score.js.map +1 -0
  749. package/dist/vendor/material-color-utilities/temperature/temperature_cache.js +227 -0
  750. package/dist/vendor/material-color-utilities/temperature/temperature_cache.js.map +1 -0
  751. package/dist/vendor/material-color-utilities/utils/color_utils.js +246 -0
  752. package/dist/vendor/material-color-utilities/utils/color_utils.js.map +1 -0
  753. package/dist/vendor/material-color-utilities/utils/image_utils.js +21 -0
  754. package/dist/vendor/material-color-utilities/utils/image_utils.js.map +1 -0
  755. package/dist/vendor/material-color-utilities/utils/math_utils.js +119 -0
  756. package/dist/vendor/material-color-utilities/utils/math_utils.js.map +1 -0
  757. package/dist/vendor/material-color-utilities/utils/string_utils.js +74 -0
  758. package/dist/vendor/material-color-utilities/utils/string_utils.js.map +1 -0
  759. package/dist/vendor/material-color-utilities/utils/theme_utils.js +24 -0
  760. package/dist/vendor/material-color-utilities/utils/theme_utils.js.map +1 -0
  761. package/package.json +114 -3
@@ -0,0 +1,92 @@
1
+ import { color, defineComponentTokens } from "../../tokens/component.js";
2
+ //#region src/components/list/list-tokens.ts
3
+ /** The tokens of {@link List}: `--md-comp-list-list-item-<part>`. */
4
+ const listTokenSet = defineComponentTokens({
5
+ name: "md-comp-list",
6
+ tokens: {
7
+ "list-item-label-text-color": {
8
+ value: color("on-surface"),
9
+ description: "The headline.",
10
+ compose: "ListTokens.ItemLabelTextColor",
11
+ paints: {
12
+ property: "color",
13
+ slot: "headline"
14
+ }
15
+ },
16
+ "list-item-supporting-text-color": {
17
+ value: color("on-surface-variant"),
18
+ description: "The supporting text.",
19
+ compose: "ListTokens.ItemSupportingTextColor",
20
+ paints: {
21
+ property: "color",
22
+ slot: "supporting"
23
+ }
24
+ },
25
+ "list-item-overline-color": {
26
+ value: color("on-surface-variant"),
27
+ description: "The overline.",
28
+ compose: "ListTokens.ItemOverlineColor",
29
+ paints: {
30
+ property: "color",
31
+ slot: "overline"
32
+ }
33
+ },
34
+ "list-item-leading-icon-color": {
35
+ value: color("on-surface-variant"),
36
+ description: "The leading content: an icon, or text.",
37
+ compose: "ListTokens.ItemLeadingIconColor",
38
+ paints: {
39
+ property: "color",
40
+ slot: "leading"
41
+ }
42
+ },
43
+ "list-item-trailing-icon-color": {
44
+ value: color("on-surface-variant"),
45
+ description: "The trailing content: an icon, or supporting text.",
46
+ compose: "ListTokens.ItemTrailingIconColor",
47
+ paints: {
48
+ property: "color",
49
+ slot: "trailing"
50
+ }
51
+ },
52
+ "list-item-selected-container-color": {
53
+ value: color("secondary-container"),
54
+ description: "A selected item.",
55
+ compose: "ListTokens.ItemSelectedContainerColor",
56
+ paints: {
57
+ property: "background-color",
58
+ state: "selected"
59
+ }
60
+ }
61
+ },
62
+ scopes: { variant: {
63
+ standard: {
64
+ prefix: "md-comp-list-list-item",
65
+ tokens: { "container-color": {
66
+ value: "transparent",
67
+ description: "An item in a standard list: see-through, on its container's colour.",
68
+ compose: "ListTokens.ItemContainerColor",
69
+ paints: {
70
+ property: "background-color",
71
+ slot: "item"
72
+ }
73
+ } }
74
+ },
75
+ segmented: {
76
+ prefix: "md-comp-list-list-item-segmented",
77
+ tokens: { "container-color": {
78
+ value: color("surface"),
79
+ description: "An item in a segmented list.",
80
+ compose: "ListTokens.ItemSegmentedContainerColor",
81
+ paints: {
82
+ property: "background-color",
83
+ slot: "item"
84
+ }
85
+ } }
86
+ }
87
+ } }
88
+ });
89
+ //#endregion
90
+ export { listTokenSet };
91
+
92
+ //# sourceMappingURL=list-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-tokens.js","names":[],"sources":["../../../src/components/list/list-tokens.ts"],"sourcesContent":["import { color, defineComponentTokens } from '../../tokens/component';\n\n/*\n * The list's component tokens, M3's `md.comp.list.list-item.*` names (checked against\n * m3.material.io's token tables, 2026-10-14), with the defaults of `list-styles.ts`.\n *\n * The list's root and each item carry `data-tokens=\"md-comp-list\"` and `data-variant`, so an\n * item's own state (`data-selected`) picks its colours. A standard item is see-through by\n * default (it takes its container's colour: a sheet, a card); a segmented item is `surface`.\n * Selected content, hover, focus, press, disabled and the item shapes stay classes.\n */\n\n/** The tokens of {@link List}: `--md-comp-list-list-item-<part>`. */\nexport const listTokenSet = defineComponentTokens({\n name: 'md-comp-list',\n tokens: {\n 'list-item-label-text-color': {\n value: color('on-surface'),\n description: 'The headline.',\n compose: 'ListTokens.ItemLabelTextColor',\n paints: { property: 'color', slot: 'headline' },\n },\n 'list-item-supporting-text-color': {\n value: color('on-surface-variant'),\n description: 'The supporting text.',\n compose: 'ListTokens.ItemSupportingTextColor',\n paints: { property: 'color', slot: 'supporting' },\n },\n 'list-item-overline-color': {\n value: color('on-surface-variant'),\n description: 'The overline.',\n compose: 'ListTokens.ItemOverlineColor',\n paints: { property: 'color', slot: 'overline' },\n },\n 'list-item-leading-icon-color': {\n value: color('on-surface-variant'),\n description: 'The leading content: an icon, or text.',\n compose: 'ListTokens.ItemLeadingIconColor',\n paints: { property: 'color', slot: 'leading' },\n },\n 'list-item-trailing-icon-color': {\n value: color('on-surface-variant'),\n description: 'The trailing content: an icon, or supporting text.',\n compose: 'ListTokens.ItemTrailingIconColor',\n paints: { property: 'color', slot: 'trailing' },\n },\n 'list-item-selected-container-color': {\n value: color('secondary-container'),\n description: 'A selected item.',\n compose: 'ListTokens.ItemSelectedContainerColor',\n paints: { property: 'background-color', state: 'selected' },\n },\n },\n scopes: {\n variant: {\n standard: {\n prefix: 'md-comp-list-list-item',\n tokens: {\n 'container-color': {\n value: 'transparent',\n description: \"An item in a standard list: see-through, on its container's colour.\",\n compose: 'ListTokens.ItemContainerColor',\n paints: { property: 'background-color', slot: 'item' },\n },\n },\n },\n segmented: {\n prefix: 'md-comp-list-list-item-segmented',\n tokens: {\n 'container-color': {\n value: color('surface'),\n description: 'An item in a segmented list.',\n compose: 'ListTokens.ItemSegmentedContainerColor',\n paints: { property: 'background-color', slot: 'item' },\n },\n },\n },\n },\n },\n});\n"],"mappings":";;;AAaA,MAAa,eAAe,sBAAsB;CAChD,MAAM;CACN,QAAQ;EACN,8BAA8B;GAC5B,OAAO,MAAM,YAAY;GACzB,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAS,MAAM;GAAW;EAChD;EACA,mCAAmC;GACjC,OAAO,MAAM,oBAAoB;GACjC,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAS,MAAM;GAAa;EAClD;EACA,4BAA4B;GAC1B,OAAO,MAAM,oBAAoB;GACjC,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAS,MAAM;GAAW;EAChD;EACA,gCAAgC;GAC9B,OAAO,MAAM,oBAAoB;GACjC,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAS,MAAM;GAAU;EAC/C;EACA,iCAAiC;GAC/B,OAAO,MAAM,oBAAoB;GACjC,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAS,MAAM;GAAW;EAChD;EACA,sCAAsC;GACpC,OAAO,MAAM,qBAAqB;GAClC,aAAa;GACb,SAAS;GACT,QAAQ;IAAE,UAAU;IAAoB,OAAO;GAAW;EAC5D;CACF;CACA,QAAQ,EACN,SAAS;EACP,UAAU;GACR,QAAQ;GACR,QAAQ,EACN,mBAAmB;IACjB,OAAO;IACP,aAAa;IACb,SAAS;IACT,QAAQ;KAAE,UAAU;KAAoB,MAAM;IAAO;GACvD,EACF;EACF;EACA,WAAW;GACT,QAAQ;GACR,QAAQ,EACN,mBAAmB;IACjB,OAAO,MAAM,SAAS;IACtB,aAAa;IACb,SAAS;IACT,QAAQ;KAAE,UAAU;KAAoB,MAAM;IAAO;GACvD,EACF;EACF;CACF,EACF;AACF,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { MorphShape } from "../../primitives/morph-path.js";
2
+ import { LoadingIndicatorVariant } from "./loading-indicator-styles.js";
3
+ import { ComponentPropsWithRef } from "react";
4
+ //#region src/components/loading-indicator/LoadingIndicator.d.ts
5
+ export interface LoadingIndicatorClassNames {
6
+ /** The box the shape is drawn in (`contained`: the circle behind it). */
7
+ root?: string;
8
+ /** The `<svg>` drawing the shape; it fills with `currentColor`. */
9
+ indicator?: string;
10
+ }
11
+ type Naming = {
12
+ /** Names the indicator ("Loading messages"). Required unless `aria-labelledby` is set. */
13
+ 'aria-label': string;
14
+ /** The id of the visible text that names the indicator. Required unless `aria-label` is set. */
15
+ 'aria-labelledby'?: string;
16
+ } | {
17
+ /** Names the indicator ("Loading messages"). Required unless `aria-labelledby` is set. */
18
+ 'aria-label'?: string;
19
+ /** The id of the visible text that names the indicator. Required unless `aria-label` is set. */
20
+ 'aria-labelledby': string;
21
+ };
22
+ interface LoadingIndicatorOwnProps {
23
+ /**
24
+ * Progress from 0 to 1, for a progress-driven gesture such as pull to refresh. Leave it out
25
+ * (the usual case) for an indeterminate indicator, which morphs through its shapes while
26
+ * rotating. Don't switch one indicator from indeterminate to determinate: the spec says a
27
+ * loading indicator never turns into a progress indicator; use a progress indicator instead.
28
+ */
29
+ value?: number;
30
+ /** `contained` draws the indicator on a `primary-container` circle. @default "default" */
31
+ variant?: LoadingIndicatorVariant;
32
+ /**
33
+ * At least two shapes (`MaterialShapes` names or `RoundedPolygon`s). Defaults to
34
+ * Compose's sequences: seven shapes when indeterminate, circle → soft burst when
35
+ * determinate.
36
+ */
37
+ shapes?: readonly [MorphShape, MorphShape, ...MorphShape[]];
38
+ /**
39
+ * The box's size in px. The spec: "Loading indicators default to 48dp, but the size is
40
+ * flexible. It should be between 24dp to 240dp"; the shape keeps its ratio to the box.
41
+ * Values outside that range are clamped. @default 48
42
+ */
43
+ size?: number;
44
+ /** Classes for each part, by slot. `classNames.root` is merged with `className`. */
45
+ classNames?: LoadingIndicatorClassNames;
46
+ }
47
+ export type LoadingIndicatorProps = LoadingIndicatorOwnProps & Naming & Omit<ComponentPropsWithRef<'div'>, 'children' | 'role' | 'aria-label' | 'aria-labelledby' | keyof LoadingIndicatorOwnProps>;
48
+ /**
49
+ * M3 Expressive loading indicator: a shape that morphs through Material shapes while it
50
+ * rotates, for short indeterminate waits (under 5 seconds). `value` (0–1) makes it follow a
51
+ * gesture's progress, morphing from a circle to a soft burst; never switch one instance from
52
+ * indeterminate to determinate (use a progress indicator for work whose progress becomes
53
+ * known). Rendered as `role="progressbar"`, so it needs a name. Under
54
+ * `prefers-reduced-motion` the indeterminate indicator only rotates.
55
+ *
56
+ * The box is 48px; set `size` (24–240px, the spec's range) or a `size-*` class, and the shape
57
+ * scales with it.
58
+ *
59
+ * @example
60
+ * <LoadingIndicator aria-label="Loading messages" />
61
+ * <LoadingIndicator variant="contained" aria-label="Refreshing" />
62
+ */
63
+ export declare function LoadingIndicator({ value, variant, shapes, size, classNames, className, style, ref, ...rest }: LoadingIndicatorProps): import("react").JSX.Element;
64
+ //#endregion
65
+ //# sourceMappingURL=LoadingIndicator.d.ts.map
@@ -0,0 +1,92 @@
1
+ "use client";
2
+ import { cn } from "../../utils/cn.js";
3
+ import { mergeDataTokens } from "../../utils/merge-data-tokens.js";
4
+ import { INDETERMINATE_SHAPES, determinateFrame, framePath, frameTransform, getDeterminateShapes, indeterminateFrame, prepareShapes, reducedMotionFrame } from "./loading-indicator-frames.js";
5
+ import { loadingIndicatorStyles } from "./loading-indicator-styles.js";
6
+ import { useMemo, useRef } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { useAnimationFrame, useReducedMotion } from "motion/react";
9
+ import { mergeProps, useProgressBar } from "react-aria";
10
+ //#region src/components/loading-indicator/LoadingIndicator.tsx
11
+ /** The spec's range for a loading indicator's size, in px. */
12
+ const MIN_SIZE = 24;
13
+ const MAX_SIZE = 240;
14
+ const polygonIds = /* @__PURE__ */ new WeakMap();
15
+ let nextPolygonId = 0;
16
+ const shapeKey = (shape) => {
17
+ if (typeof shape === "string") return shape;
18
+ let id = polygonIds.get(shape);
19
+ if (id === void 0) polygonIds.set(shape, id = nextPolygonId++);
20
+ return `#${id}`;
21
+ };
22
+ /**
23
+ * M3 Expressive loading indicator: a shape that morphs through Material shapes while it
24
+ * rotates, for short indeterminate waits (under 5 seconds). `value` (0–1) makes it follow a
25
+ * gesture's progress, morphing from a circle to a soft burst; never switch one instance from
26
+ * indeterminate to determinate (use a progress indicator for work whose progress becomes
27
+ * known). Rendered as `role="progressbar"`, so it needs a name. Under
28
+ * `prefers-reduced-motion` the indeterminate indicator only rotates.
29
+ *
30
+ * The box is 48px; set `size` (24–240px, the spec's range) or a `size-*` class, and the shape
31
+ * scales with it.
32
+ *
33
+ * @example
34
+ * <LoadingIndicator aria-label="Loading messages" />
35
+ * <LoadingIndicator variant="contained" aria-label="Refreshing" />
36
+ */
37
+ function LoadingIndicator({ value, variant, shapes, size, classNames, className, style, ref, ...rest }) {
38
+ const indeterminate = value === void 0;
39
+ const sequence = shapes ?? (indeterminate ? INDETERMINATE_SHAPES : getDeterminateShapes());
40
+ const key = sequence.map(shapeKey).join();
41
+ const prepared = useMemo(() => prepareShapes(sequence, indeterminate), [key, indeterminate]);
42
+ const reduceMotion = useReducedMotion() ?? false;
43
+ const { progressBarProps } = useProgressBar({
44
+ ...rest,
45
+ value: indeterminate ? void 0 : Number.isNaN(value) ? 0 : value,
46
+ minValue: 0,
47
+ maxValue: 1,
48
+ isIndeterminate: indeterminate
49
+ });
50
+ const frameAt = (elapsedMs) => !indeterminate ? determinateFrame(value ?? 0, prepared.morphs.length) : reduceMotion ? reducedMotionFrame(elapsedMs) : indeterminateFrame(elapsedMs, prepared.morphs.length);
51
+ const groupRef = useRef(null);
52
+ const pathRef = useRef(null);
53
+ useAnimationFrame((elapsedMs) => {
54
+ if (!indeterminate) return;
55
+ const frame = frameAt(elapsedMs);
56
+ groupRef.current?.setAttribute("transform", frameTransform(frame));
57
+ pathRef.current?.setAttribute("d", framePath(prepared, frame));
58
+ });
59
+ const initial = frameAt(0);
60
+ const styles = loadingIndicatorStyles({ variant });
61
+ return /* @__PURE__ */ jsx("div", {
62
+ ...mergeProps(rest, progressBarProps),
63
+ ref,
64
+ "data-tokens": mergeDataTokens("md-comp-loading-indicator", rest),
65
+ "data-variant": variant ?? "default",
66
+ "data-indeterminate": indeterminate || void 0,
67
+ style: size === void 0 ? style : {
68
+ "--m3-loading-indicator-size": `${Math.min(Math.max(size, MIN_SIZE), MAX_SIZE)}px`,
69
+ ...style
70
+ },
71
+ className: styles.root({ class: cn(classNames?.root, className) }),
72
+ children: /* @__PURE__ */ jsx("svg", {
73
+ viewBox: `0 0 48 48`,
74
+ "aria-hidden": "true",
75
+ overflow: "visible",
76
+ "data-slot": "indicator",
77
+ className: styles.indicator({ class: classNames?.indicator }),
78
+ children: /* @__PURE__ */ jsx("g", {
79
+ ref: groupRef,
80
+ transform: frameTransform(initial),
81
+ children: /* @__PURE__ */ jsx("path", {
82
+ ref: pathRef,
83
+ d: framePath(prepared, initial)
84
+ })
85
+ })
86
+ })
87
+ });
88
+ }
89
+ //#endregion
90
+ export { LoadingIndicator };
91
+
92
+ //# sourceMappingURL=LoadingIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingIndicator.js","names":[],"sources":["../../../src/components/loading-indicator/LoadingIndicator.tsx"],"sourcesContent":["'use client';\n\nimport { useAnimationFrame, useReducedMotion } from 'motion/react';\nimport { useMemo, useRef, type ComponentPropsWithRef, type CSSProperties } from 'react';\nimport { mergeProps, useProgressBar } from 'react-aria';\nimport type { MorphShape } from '../../primitives/morph-path';\nimport type { RoundedPolygon } from '../../shapes/rounded-polygon';\nimport { cn } from '../../utils/cn';\nimport {\n CONTAINER_SIZE,\n INDETERMINATE_SHAPES,\n determinateFrame,\n framePath,\n frameTransform,\n getDeterminateShapes,\n indeterminateFrame,\n prepareShapes,\n reducedMotionFrame,\n type Frame,\n} from './loading-indicator-frames';\nimport { loadingIndicatorStyles, type LoadingIndicatorVariant } from './loading-indicator-styles';\nimport { mergeDataTokens } from '../../utils/merge-data-tokens';\n\n/** The spec's range for a loading indicator's size, in px. */\nconst MIN_SIZE = 24;\nconst MAX_SIZE = 240;\n\nexport interface LoadingIndicatorClassNames {\n /** The box the shape is drawn in (`contained`: the circle behind it). */\n root?: string;\n /** The `<svg>` drawing the shape; it fills with `currentColor`. */\n indicator?: string;\n}\n\ntype Naming =\n | {\n /** Names the indicator (\"Loading messages\"). Required unless `aria-labelledby` is set. */\n 'aria-label': string;\n /** The id of the visible text that names the indicator. Required unless `aria-label` is set. */\n 'aria-labelledby'?: string;\n }\n | {\n /** Names the indicator (\"Loading messages\"). Required unless `aria-labelledby` is set. */\n 'aria-label'?: string;\n /** The id of the visible text that names the indicator. Required unless `aria-label` is set. */\n 'aria-labelledby': string;\n };\n\ninterface LoadingIndicatorOwnProps {\n /**\n * Progress from 0 to 1, for a progress-driven gesture such as pull to refresh. Leave it out\n * (the usual case) for an indeterminate indicator, which morphs through its shapes while\n * rotating. Don't switch one indicator from indeterminate to determinate: the spec says a\n * loading indicator never turns into a progress indicator; use a progress indicator instead.\n */\n value?: number;\n /** `contained` draws the indicator on a `primary-container` circle. @default \"default\" */\n variant?: LoadingIndicatorVariant;\n /**\n * At least two shapes (`MaterialShapes` names or `RoundedPolygon`s). Defaults to\n * Compose's sequences: seven shapes when indeterminate, circle → soft burst when\n * determinate.\n */\n shapes?: readonly [MorphShape, MorphShape, ...MorphShape[]];\n /**\n * The box's size in px. The spec: \"Loading indicators default to 48dp, but the size is\n * flexible. It should be between 24dp to 240dp\"; the shape keeps its ratio to the box.\n * Values outside that range are clamped. @default 48\n */\n size?: number;\n /** Classes for each part, by slot. `classNames.root` is merged with `className`. */\n classNames?: LoadingIndicatorClassNames;\n}\n\nexport type LoadingIndicatorProps = LoadingIndicatorOwnProps &\n Naming &\n Omit<\n ComponentPropsWithRef<'div'>,\n 'children' | 'role' | 'aria-label' | 'aria-labelledby' | keyof LoadingIndicatorOwnProps\n >;\n\nconst polygonIds = new WeakMap<RoundedPolygon, number>();\nlet nextPolygonId = 0;\nconst shapeKey = (shape: MorphShape) => {\n if (typeof shape === 'string') return shape;\n let id = polygonIds.get(shape);\n if (id === undefined) polygonIds.set(shape, (id = nextPolygonId++));\n return `#${id}`;\n};\n\n/**\n * M3 Expressive loading indicator: a shape that morphs through Material shapes while it\n * rotates, for short indeterminate waits (under 5 seconds). `value` (0–1) makes it follow a\n * gesture's progress, morphing from a circle to a soft burst; never switch one instance from\n * indeterminate to determinate (use a progress indicator for work whose progress becomes\n * known). Rendered as `role=\"progressbar\"`, so it needs a name. Under\n * `prefers-reduced-motion` the indeterminate indicator only rotates.\n *\n * The box is 48px; set `size` (24–240px, the spec's range) or a `size-*` class, and the shape\n * scales with it.\n *\n * @example\n * <LoadingIndicator aria-label=\"Loading messages\" />\n * <LoadingIndicator variant=\"contained\" aria-label=\"Refreshing\" />\n */\nexport function LoadingIndicator({\n value,\n variant,\n shapes,\n size,\n classNames,\n className,\n style,\n ref,\n ...rest\n}: LoadingIndicatorProps) {\n const indeterminate = value === undefined;\n const sequence = shapes ?? (indeterminate ? INDETERMINATE_SHAPES : getDeterminateShapes());\n const key = sequence.map(shapeKey).join();\n // The key captures the sequence's contents, so inline arrays don't re-prepare.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const prepared = useMemo(() => prepareShapes(sequence, indeterminate), [key, indeterminate]);\n const reduceMotion = useReducedMotion() ?? false;\n\n const { progressBarProps } = useProgressBar({\n ...rest,\n value: indeterminate ? undefined : Number.isNaN(value) ? 0 : value,\n minValue: 0,\n maxValue: 1,\n isIndeterminate: indeterminate,\n });\n\n const frameAt = (elapsedMs: number): Frame =>\n !indeterminate\n ? determinateFrame(value ?? 0, prepared.morphs.length)\n : reduceMotion\n ? reducedMotionFrame(elapsedMs)\n : indeterminateFrame(elapsedMs, prepared.morphs.length);\n\n const groupRef = useRef<SVGGElement>(null);\n const pathRef = useRef<SVGPathElement>(null);\n // Indeterminate frames are written straight to the DOM; React renders only the first.\n useAnimationFrame((elapsedMs) => {\n if (!indeterminate) return;\n const frame = frameAt(elapsedMs);\n groupRef.current?.setAttribute('transform', frameTransform(frame));\n pathRef.current?.setAttribute('d', framePath(prepared, frame));\n });\n\n const initial = frameAt(0);\n const styles = loadingIndicatorStyles({ variant });\n\n return (\n <div\n {...mergeProps(rest, progressBarProps)}\n ref={ref}\n // The component tokens' hooks (loading-indicator-tokens.ts); `data-variant` is also public.\n data-tokens={mergeDataTokens('md-comp-loading-indicator', rest)}\n data-variant={variant ?? 'default'}\n data-indeterminate={indeterminate || undefined}\n style={\n size === undefined\n ? style\n : ({\n '--m3-loading-indicator-size': `${Math.min(Math.max(size, MIN_SIZE), MAX_SIZE)}px`,\n ...style,\n } as CSSProperties)\n }\n className={styles.root({ class: cn(classNames?.root, className) })}\n >\n <svg\n viewBox={`0 0 ${CONTAINER_SIZE} ${CONTAINER_SIZE}`}\n aria-hidden=\"true\"\n overflow=\"visible\"\n data-slot=\"indicator\"\n className={styles.indicator({ class: classNames?.indicator })}\n >\n <g ref={groupRef} transform={frameTransform(initial)}>\n <path ref={pathRef} d={framePath(prepared, initial)} />\n </g>\n </svg>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAwBA,MAAM,WAAW;AACjB,MAAM,WAAW;AAwDjB,MAAM,6BAAa,IAAI,QAAgC;AACvD,IAAI,gBAAgB;AACpB,MAAM,YAAY,UAAsB;CACtC,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,KAAK,WAAW,IAAI,KAAK;CAC7B,IAAI,OAAO,KAAA,GAAW,WAAW,IAAI,OAAQ,KAAK,eAAgB;CAClE,OAAO,IAAI;AACb;;;;;;;;;;;;;;;;AAiBA,SAAgB,iBAAiB,EAC/B,OACA,SACA,QACA,MACA,YACA,WACA,OACA,KACA,GAAG,QACqB;CACxB,MAAM,gBAAgB,UAAU,KAAA;CAChC,MAAM,WAAW,WAAW,gBAAgB,uBAAuB,qBAAqB;CACxF,MAAM,MAAM,SAAS,IAAI,QAAQ,CAAC,CAAC,KAAK;CAGxC,MAAM,WAAW,cAAc,cAAc,UAAU,aAAa,GAAG,CAAC,KAAK,aAAa,CAAC;CAC3F,MAAM,eAAe,iBAAiB,KAAK;CAE3C,MAAM,EAAE,qBAAqB,eAAe;EAC1C,GAAG;EACH,OAAO,gBAAgB,KAAA,IAAY,OAAO,MAAM,KAAK,IAAI,IAAI;EAC7D,UAAU;EACV,UAAU;EACV,iBAAiB;CACnB,CAAC;CAED,MAAM,WAAW,cACf,CAAC,gBACG,iBAAiB,SAAS,GAAG,SAAS,OAAO,MAAM,IACnD,eACE,mBAAmB,SAAS,IAC5B,mBAAmB,WAAW,SAAS,OAAO,MAAM;CAE5D,MAAM,WAAW,OAAoB,IAAI;CACzC,MAAM,UAAU,OAAuB,IAAI;CAE3C,mBAAmB,cAAc;EAC/B,IAAI,CAAC,eAAe;EACpB,MAAM,QAAQ,QAAQ,SAAS;EAC/B,SAAS,SAAS,aAAa,aAAa,eAAe,KAAK,CAAC;EACjE,QAAQ,SAAS,aAAa,KAAK,UAAU,UAAU,KAAK,CAAC;CAC/D,CAAC;CAED,MAAM,UAAU,QAAQ,CAAC;CACzB,MAAM,SAAS,uBAAuB,EAAE,QAAQ,CAAC;CAEjD,OACE,oBAAC,OAAD;EACE,GAAI,WAAW,MAAM,gBAAgB;EAChC;EAEL,eAAa,gBAAgB,6BAA6B,IAAI;EAC9D,gBAAc,WAAW;EACzB,sBAAoB,iBAAiB,KAAA;EACrC,OACE,SAAS,KAAA,IACL,QACC;GACC,+BAA+B,GAAG,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ,GAAG,QAAQ,EAAE;GAC/E,GAAG;EACL;EAEN,WAAW,OAAO,KAAK,EAAE,OAAO,GAAG,YAAY,MAAM,SAAS,EAAE,CAAC;EAEjE,UAAA,oBAAC,OAAD;GACE,SAAS;GACT,eAAY;GACZ,UAAS;GACT,aAAU;GACV,WAAW,OAAO,UAAU,EAAE,OAAO,YAAY,UAAU,CAAC;GAE5D,UAAA,oBAAC,KAAD;IAAG,KAAK;IAAU,WAAW,eAAe,OAAO;IACjD,UAAA,oBAAC,QAAD;KAAM,KAAK;KAAS,GAAG,UAAU,UAAU,OAAO;IAAI,CAAA;GACrD,CAAA;EACA,CAAA;CACF,CAAA;AAET"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { onDemand, usePreloadOnIntent } from "../../utils/load-on-demand.js";
3
+ //#region src/components/loading-indicator/lazy-loading-indicator.tsx
4
+ const indicator = onDemand(() => import("./LoadingIndicator.js").then((module) => module.LoadingIndicator));
5
+ /** Starts loading the `LoadingIndicator` module, once; later calls return the same promise. */
6
+ const preloadLoadingIndicator = indicator.preload;
7
+ /**
8
+ * A `LoadingIndicator` whose module (its shapes and morphing) loads the first time it renders,
9
+ * for components that show one only sometimes: an option list shows it only while `loading`.
10
+ * Render it only while it should show. Until the module arrives it renders nothing, so place
11
+ * it in a box that keeps its room; once loaded it renders at once.
12
+ */
13
+ const LazyLoadingIndicator = indicator.Component;
14
+ /**
15
+ * Preloads the loading indicator when the pointer moves over `ref`'s element or focus enters
16
+ * it, while `enabled` (the component may show one, e.g. it takes a `loading` prop), so it's
17
+ * usually ready by the time it shows.
18
+ */
19
+ function usePreloadLoadingIndicator(ref, enabled) {
20
+ usePreloadOnIntent(ref, indicator.preload, enabled);
21
+ }
22
+ //#endregion
23
+ export { LazyLoadingIndicator, preloadLoadingIndicator, usePreloadLoadingIndicator };
24
+
25
+ //# sourceMappingURL=lazy-loading-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-loading-indicator.js","names":[],"sources":["../../../src/components/loading-indicator/lazy-loading-indicator.tsx"],"sourcesContent":["'use client';\n\nimport type { RefObject } from 'react';\nimport { onDemand, usePreloadOnIntent } from '../../utils/load-on-demand';\nimport type { LoadingIndicatorProps } from './LoadingIndicator';\n\nconst indicator = onDemand<LoadingIndicatorProps>(() =>\n import('./LoadingIndicator').then((module) => module.LoadingIndicator),\n);\n\n/** Starts loading the `LoadingIndicator` module, once; later calls return the same promise. */\nexport const preloadLoadingIndicator = indicator.preload;\n\n/**\n * A `LoadingIndicator` whose module (its shapes and morphing) loads the first time it renders,\n * for components that show one only sometimes: an option list shows it only while `loading`.\n * Render it only while it should show. Until the module arrives it renders nothing, so place\n * it in a box that keeps its room; once loaded it renders at once.\n */\nexport const LazyLoadingIndicator = indicator.Component;\n\n/**\n * Preloads the loading indicator when the pointer moves over `ref`'s element or focus enters\n * it, while `enabled` (the component may show one, e.g. it takes a `loading` prop), so it's\n * usually ready by the time it shows.\n */\nexport function usePreloadLoadingIndicator(ref: RefObject<HTMLElement | null>, enabled: boolean) {\n usePreloadOnIntent(ref, indicator.preload, enabled);\n}\n"],"mappings":";;;AAMA,MAAM,YAAY,eAChB,OAAO,wBAAqB,CAAC,MAAM,WAAW,OAAO,gBAAgB,CACvE;;AAGA,MAAa,0BAA0B,UAAU;;;;;;;AAQjD,MAAa,uBAAuB,UAAU;;;;;;AAO9C,SAAgB,2BAA2B,KAAoC,SAAkB;CAC/F,mBAAmB,KAAK,UAAU,SAAS,OAAO;AACpD"}
@@ -0,0 +1,149 @@
1
+ import { MaterialShapes } from "../../shapes/material-shapes.js";
2
+ import { cubicsToPath } from "../../shapes/path.js";
3
+ import { getMorph } from "../../primitives/morph-path.js";
4
+ const ACTIVE_SIZE = 38;
5
+ const CENTER = 24;
6
+ const GLOBAL_ROTATION_MS = 4666;
7
+ const QUARTER_ROTATION = 90;
8
+ /** Compose `LoadingIndicatorDefaults.IndeterminateIndicatorPolygons`. */
9
+ const INDETERMINATE_SHAPES = [
10
+ "SoftBurst",
11
+ "Cookie9Sided",
12
+ "Pentagon",
13
+ "Pill",
14
+ "Sunny",
15
+ "Cookie4Sided",
16
+ "Oval"
17
+ ];
18
+ let determinateShapes;
19
+ /**
20
+ * Compose `DeterminateIndicatorPolygons`: a circle rotated by 18° (so it morphs smoothly
21
+ * into the soft burst, rotated the same way), then the soft burst.
22
+ */
23
+ function getDeterminateShapes() {
24
+ if (!determinateShapes) {
25
+ const a = 18 * Math.PI / 180;
26
+ const c = Math.cos(a);
27
+ const s = Math.sin(a);
28
+ determinateShapes = [MaterialShapes.Circle.transformed((x, y) => [x * c - y * s, x * s + y * c]), MaterialShapes.SoftBurst];
29
+ }
30
+ return determinateShapes;
31
+ }
32
+ const DAMPING_RATIO = .6;
33
+ const STIFFNESS = 200;
34
+ const VISIBILITY_THRESHOLD = .1;
35
+ const OMEGA = Math.sqrt(STIFFNESS);
36
+ const DECAY = DAMPING_RATIO * OMEGA;
37
+ const OMEGA_D = OMEGA * Math.sqrt(1 - DAMPING_RATIO * DAMPING_RATIO);
38
+ const ENVELOPE = Math.hypot(1, DECAY / OMEGA_D);
39
+ const MORPH_DURATION_MS = Math.trunc(1e3 * Math.log(VISIBILITY_THRESHOLD / ENVELOPE) / -DECAY);
40
+ /** The morph spring's value `ms` after starting from 0 towards 1 at rest. */
41
+ function morphSpring(ms) {
42
+ const t = ms / 1e3;
43
+ return 1 - Math.exp(-DECAY * t) * (Math.cos(OMEGA_D * t) + DECAY / OMEGA_D * Math.sin(OMEGA_D * t));
44
+ }
45
+ /**
46
+ * Compose's indeterminate loop at `elapsedMs`. Every 650ms a morph springs to the next shape;
47
+ * when it finishes, the next morph starts at 0 and the target angle gains a quarter turn
48
+ * (starting from a quarter turn). The shape turns by `progress × 90°` plus that angle plus a
49
+ * linear full turn every 4666ms.
50
+ */
51
+ function indeterminateFrame(elapsedMs, morphCount) {
52
+ const cycle = Math.floor(elapsedMs / 650);
53
+ const local = elapsedMs - cycle * 650;
54
+ const finished = local >= MORPH_DURATION_MS;
55
+ const index = (cycle + (finished ? 1 : 0)) % morphCount;
56
+ const progress = finished ? 0 : morphSpring(local);
57
+ const target = QUARTER_ROTATION * (cycle + (finished ? 2 : 1)) % 360;
58
+ const global = elapsedMs % GLOBAL_ROTATION_MS / GLOBAL_ROTATION_MS * 360;
59
+ return {
60
+ index,
61
+ progress,
62
+ rotation: (progress * QUARTER_ROTATION + target + global) % 360
63
+ };
64
+ }
65
+ /**
66
+ * Reduced motion: the first shape turns at the global rate, without morphing or the
67
+ * springy quarter turns.
68
+ */
69
+ function reducedMotionFrame(elapsedMs) {
70
+ return {
71
+ index: 0,
72
+ progress: 0,
73
+ rotation: elapsedMs % GLOBAL_ROTATION_MS / GLOBAL_ROTATION_MS * 360
74
+ };
75
+ }
76
+ /**
77
+ * Compose's determinate drawing: `value` (0–1) walks the morph sequence and turns the shape
78
+ * counter-clockwise by up to 180°.
79
+ */
80
+ function determinateFrame(value, morphCount) {
81
+ const v = Number.isNaN(value) ? 0 : Math.min(Math.max(value, 0), 1);
82
+ const index = Math.min(Math.floor(morphCount * v), morphCount - 1);
83
+ return {
84
+ index,
85
+ progress: v === 1 && index === morphCount - 1 ? 1 : v * morphCount % 1,
86
+ rotation: -v * 180
87
+ };
88
+ }
89
+ const resolve = (shape) => typeof shape === "string" ? MaterialShapes[shape] : shape;
90
+ const normalizedCache = /* @__PURE__ */ new WeakMap();
91
+ function normalized(polygon) {
92
+ let result = normalizedCache.get(polygon);
93
+ if (!result) normalizedCache.set(polygon, result = polygon.normalized());
94
+ return result;
95
+ }
96
+ /**
97
+ * Compose `calculateScaleFactor`: shrinks the shapes so none clips as it rotates (a pill
98
+ * counts by its longer side), times the 38/48 active-indicator scale.
99
+ */
100
+ function scaleFactor(polygons) {
101
+ let factor = 1;
102
+ for (const polygon of polygons) {
103
+ const [l, t, r, b] = polygon.calculateBounds();
104
+ const [ml, mt, mr, mb] = polygon.calculateMaxBounds();
105
+ factor = Math.min(factor, Math.max((r - l) / (mr - ml), (b - t) / (mb - mt)));
106
+ }
107
+ return factor * ACTIVE_SIZE / 48;
108
+ }
109
+ /** The morph sequence (wrapping back to the start when `circular`) and the path scale. */
110
+ function prepareShapes(shapes, circular) {
111
+ if (shapes.length < 2) throw new Error("LoadingIndicator needs at least two shapes");
112
+ const polygons = shapes.map(resolve);
113
+ const unit = polygons.map(normalized);
114
+ const morphs = [];
115
+ for (let i = 0; i < unit.length; i++) if (i + 1 < unit.length) morphs.push(getMorph(unit[i], unit[i + 1]));
116
+ else if (circular) morphs.push(getMorph(unit[i], unit[0]));
117
+ return {
118
+ morphs,
119
+ scale: 48 * scaleFactor(polygons)
120
+ };
121
+ }
122
+ /**
123
+ * Compose `processPath`: the morph frame scaled and centred in the 48px box by its
124
+ * control-point bounds (what Compose's `Path.getBounds()` measures).
125
+ */
126
+ function framePath({ morphs, scale }, frame) {
127
+ const cubics = morphs[frame.index].asCubics(frame.progress);
128
+ let minX = Infinity;
129
+ let minY = Infinity;
130
+ let maxX = -Infinity;
131
+ let maxY = -Infinity;
132
+ for (const { points } of cubics) for (let i = 0; i < 8; i += 2) {
133
+ minX = Math.min(minX, points[i]);
134
+ maxX = Math.max(maxX, points[i]);
135
+ minY = Math.min(minY, points[i + 1]);
136
+ maxY = Math.max(maxY, points[i + 1]);
137
+ }
138
+ return cubicsToPath(cubics, {
139
+ scale,
140
+ translateX: CENTER - (minX + maxX) / 2 * scale,
141
+ translateY: CENTER - (minY + maxY) / 2 * scale
142
+ });
143
+ }
144
+ /** SVG rotation about the box centre. */
145
+ const frameTransform = ({ rotation }) => `rotate(${Math.round(rotation * 100) / 100} ${CENTER} ${CENTER})`;
146
+ //#endregion
147
+ export { GLOBAL_ROTATION_MS, INDETERMINATE_SHAPES, MORPH_DURATION_MS, determinateFrame, framePath, frameTransform, getDeterminateShapes, indeterminateFrame, morphSpring, prepareShapes, reducedMotionFrame, scaleFactor };
148
+
149
+ //# sourceMappingURL=loading-indicator-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-indicator-frames.js","names":[],"sources":["../../../src/components/loading-indicator/loading-indicator-frames.ts"],"sourcesContent":["import { getMorph, type MorphShape } from '../../primitives/morph-path';\nimport { MaterialShapes, type MaterialShapeName } from '../../shapes/material-shapes';\nimport type { Morph } from '../../shapes/morph';\nimport { cubicsToPath } from '../../shapes/path';\nimport type { RoundedPolygon } from '../../shapes/rounded-polygon';\n\n/*\n * Geometry and timing of Compose's LoadingIndicator.kt (LoadingIndicatorTokens: 48px\n * container, 38px active indicator). Kept as pure functions so frames can be tested.\n */\n\nexport const CONTAINER_SIZE = 48;\nconst ACTIVE_SIZE = 38;\nconst CENTER = CONTAINER_SIZE / 2;\n\nexport const GLOBAL_ROTATION_MS = 4666;\nexport const MORPH_INTERVAL_MS = 650;\nconst QUARTER_ROTATION = 90;\n\n/** Compose `LoadingIndicatorDefaults.IndeterminateIndicatorPolygons`. */\nexport const INDETERMINATE_SHAPES: readonly MaterialShapeName[] = [\n 'SoftBurst',\n 'Cookie9Sided',\n 'Pentagon',\n 'Pill',\n 'Sunny',\n 'Cookie4Sided',\n 'Oval',\n];\n\nlet determinateShapes: readonly RoundedPolygon[] | undefined;\n\n/**\n * Compose `DeterminateIndicatorPolygons`: a circle rotated by 18° (so it morphs smoothly\n * into the soft burst, rotated the same way), then the soft burst.\n */\nexport function getDeterminateShapes(): readonly RoundedPolygon[] {\n if (!determinateShapes) {\n const a = (18 * Math.PI) / 180;\n const c = Math.cos(a);\n const s = Math.sin(a);\n const circle = MaterialShapes.Circle.transformed((x, y) => [x * c - y * s, x * s + y * c]);\n determinateShapes = [circle, MaterialShapes.SoftBurst];\n }\n return determinateShapes;\n}\n\n/*\n * The indeterminate morph spring: dampingRatio 0.6, stiffness 200, visibilityThreshold 0.1.\n * Compose ends a spring at its estimated duration (SpringEstimation.kt: the time the\n * oscillation envelope falls to the threshold, truncated to whole milliseconds), ~297ms.\n */\nconst DAMPING_RATIO = 0.6;\nconst STIFFNESS = 200;\nconst VISIBILITY_THRESHOLD = 0.1;\nconst OMEGA = Math.sqrt(STIFFNESS);\nconst DECAY = DAMPING_RATIO * OMEGA;\nconst OMEGA_D = OMEGA * Math.sqrt(1 - DAMPING_RATIO * DAMPING_RATIO);\nconst ENVELOPE = Math.hypot(1, DECAY / OMEGA_D);\n\nexport const MORPH_DURATION_MS = Math.trunc(\n (1000 * Math.log(VISIBILITY_THRESHOLD / ENVELOPE)) / -DECAY,\n);\n\n/** The morph spring's value `ms` after starting from 0 towards 1 at rest. */\nexport function morphSpring(ms: number): number {\n const t = ms / 1000;\n return (\n 1 - Math.exp(-DECAY * t) * (Math.cos(OMEGA_D * t) + (DECAY / OMEGA_D) * Math.sin(OMEGA_D * t))\n );\n}\n\nexport interface Frame {\n /** Index of the active morph. */\n index: number;\n /** Progress of the active morph; the indeterminate spring overshoots past 1. */\n progress: number;\n /** Clockwise rotation in degrees. */\n rotation: number;\n}\n\n/**\n * Compose's indeterminate loop at `elapsedMs`. Every 650ms a morph springs to the next shape;\n * when it finishes, the next morph starts at 0 and the target angle gains a quarter turn\n * (starting from a quarter turn). The shape turns by `progress × 90°` plus that angle plus a\n * linear full turn every 4666ms.\n */\nexport function indeterminateFrame(elapsedMs: number, morphCount: number): Frame {\n const cycle = Math.floor(elapsedMs / MORPH_INTERVAL_MS);\n const local = elapsedMs - cycle * MORPH_INTERVAL_MS;\n const finished = local >= MORPH_DURATION_MS;\n const index = (cycle + (finished ? 1 : 0)) % morphCount;\n const progress = finished ? 0 : morphSpring(local);\n const target = (QUARTER_ROTATION * (cycle + (finished ? 2 : 1))) % 360;\n const global = ((elapsedMs % GLOBAL_ROTATION_MS) / GLOBAL_ROTATION_MS) * 360;\n return { index, progress, rotation: (progress * QUARTER_ROTATION + target + global) % 360 };\n}\n\n/**\n * Reduced motion: the first shape turns at the global rate, without morphing or the\n * springy quarter turns.\n */\nexport function reducedMotionFrame(elapsedMs: number): Frame {\n return {\n index: 0,\n progress: 0,\n rotation: ((elapsedMs % GLOBAL_ROTATION_MS) / GLOBAL_ROTATION_MS) * 360,\n };\n}\n\n/**\n * Compose's determinate drawing: `value` (0–1) walks the morph sequence and turns the shape\n * counter-clockwise by up to 180°.\n */\nexport function determinateFrame(value: number, morphCount: number): Frame {\n const v = Number.isNaN(value) ? 0 : Math.min(Math.max(value, 0), 1);\n const index = Math.min(Math.floor(morphCount * v), morphCount - 1);\n const progress = v === 1 && index === morphCount - 1 ? 1 : (v * morphCount) % 1;\n return { index, progress, rotation: -v * 180 };\n}\n\nexport interface PreparedShapes {\n morphs: readonly Morph[];\n /** Path scale: the container size × Compose's scale factor. */\n scale: number;\n}\n\nconst resolve = (shape: MorphShape) => (typeof shape === 'string' ? MaterialShapes[shape] : shape);\nconst normalizedCache = new WeakMap<RoundedPolygon, RoundedPolygon>();\n\nfunction normalized(polygon: RoundedPolygon): RoundedPolygon {\n let result = normalizedCache.get(polygon);\n if (!result) normalizedCache.set(polygon, (result = polygon.normalized()));\n return result;\n}\n\n/**\n * Compose `calculateScaleFactor`: shrinks the shapes so none clips as it rotates (a pill\n * counts by its longer side), times the 38/48 active-indicator scale.\n */\nexport function scaleFactor(polygons: readonly RoundedPolygon[]): number {\n let factor = 1;\n for (const polygon of polygons) {\n const [l, t, r, b] = polygon.calculateBounds();\n const [ml, mt, mr, mb] = polygon.calculateMaxBounds();\n factor = Math.min(factor, Math.max((r! - l!) / (mr! - ml!), (b! - t!) / (mb! - mt!)));\n }\n return (factor * ACTIVE_SIZE) / CONTAINER_SIZE;\n}\n\n/** The morph sequence (wrapping back to the start when `circular`) and the path scale. */\nexport function prepareShapes(shapes: readonly MorphShape[], circular: boolean): PreparedShapes {\n if (shapes.length < 2) throw new Error('LoadingIndicator needs at least two shapes');\n const polygons = shapes.map(resolve);\n const unit = polygons.map(normalized);\n const morphs: Morph[] = [];\n for (let i = 0; i < unit.length; i++) {\n if (i + 1 < unit.length) morphs.push(getMorph(unit[i]!, unit[i + 1]!));\n else if (circular) morphs.push(getMorph(unit[i]!, unit[0]!));\n }\n return { morphs, scale: CONTAINER_SIZE * scaleFactor(polygons) };\n}\n\n/**\n * Compose `processPath`: the morph frame scaled and centred in the 48px box by its\n * control-point bounds (what Compose's `Path.getBounds()` measures).\n */\nexport function framePath({ morphs, scale }: PreparedShapes, frame: Frame): string {\n const cubics = morphs[frame.index]!.asCubics(frame.progress);\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n for (const { points } of cubics) {\n for (let i = 0; i < 8; i += 2) {\n minX = Math.min(minX, points[i]!);\n maxX = Math.max(maxX, points[i]!);\n minY = Math.min(minY, points[i + 1]!);\n maxY = Math.max(maxY, points[i + 1]!);\n }\n }\n return cubicsToPath(cubics, {\n scale,\n translateX: CENTER - ((minX + maxX) / 2) * scale,\n translateY: CENTER - ((minY + maxY) / 2) * scale,\n });\n}\n\n/** SVG rotation about the box centre. */\nexport const frameTransform = ({ rotation }: Frame) =>\n `rotate(${Math.round(rotation * 100) / 100} ${CENTER} ${CENTER})`;\n"],"mappings":";;;AAYA,MAAM,cAAc;AACpB,MAAM,SAAA;AAEN,MAAa,qBAAqB;AAElC,MAAM,mBAAmB;;AAGzB,MAAa,uBAAqD;CAChE;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,IAAI;;;;;AAMJ,SAAgB,uBAAkD;CAChE,IAAI,CAAC,mBAAmB;EACtB,MAAM,IAAK,KAAK,KAAK,KAAM;EAC3B,MAAM,IAAI,KAAK,IAAI,CAAC;EACpB,MAAM,IAAI,KAAK,IAAI,CAAC;EAEpB,oBAAoB,CADL,eAAe,OAAO,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAC9D,GAAG,eAAe,SAAS;CACvD;CACA,OAAO;AACT;AAOA,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,uBAAuB;AAC7B,MAAM,QAAQ,KAAK,KAAK,SAAS;AACjC,MAAM,QAAQ,gBAAgB;AAC9B,MAAM,UAAU,QAAQ,KAAK,KAAK,IAAI,gBAAgB,aAAa;AACnE,MAAM,WAAW,KAAK,MAAM,GAAG,QAAQ,OAAO;AAE9C,MAAa,oBAAoB,KAAK,MACnC,MAAO,KAAK,IAAI,uBAAuB,QAAQ,IAAK,CAAC,KACxD;;AAGA,SAAgB,YAAY,IAAoB;CAC9C,MAAM,IAAI,KAAK;CACf,OACE,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,UAAU,CAAC,IAAK,QAAQ,UAAW,KAAK,IAAI,UAAU,CAAC;AAEhG;;;;;;;AAiBA,SAAgB,mBAAmB,WAAmB,YAA2B;CAC/E,MAAM,QAAQ,KAAK,MAAM,YAAA,GAA6B;CACtD,MAAM,QAAQ,YAAY,QAAA;CAC1B,MAAM,WAAW,SAAS;CAC1B,MAAM,SAAS,SAAS,WAAW,IAAI,MAAM;CAC7C,MAAM,WAAW,WAAW,IAAI,YAAY,KAAK;CACjD,MAAM,SAAU,oBAAoB,SAAS,WAAW,IAAI,MAAO;CACnE,MAAM,SAAW,YAAY,qBAAsB,qBAAsB;CACzE,OAAO;EAAE;EAAO;EAAU,WAAW,WAAW,mBAAmB,SAAS,UAAU;CAAI;AAC5F;;;;;AAMA,SAAgB,mBAAmB,WAA0B;CAC3D,OAAO;EACL,OAAO;EACP,UAAU;EACV,UAAY,YAAY,qBAAsB,qBAAsB;CACtE;AACF;;;;;AAMA,SAAgB,iBAAiB,OAAe,YAA2B;CACzE,MAAM,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;CAClE,MAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,aAAa,CAAC,GAAG,aAAa,CAAC;CAEjE,OAAO;EAAE;EAAO,UADC,MAAM,KAAK,UAAU,aAAa,IAAI,IAAK,IAAI,aAAc;EACpD,UAAU,CAAC,IAAI;CAAI;AAC/C;AAQA,MAAM,WAAW,UAAuB,OAAO,UAAU,WAAW,eAAe,SAAS;AAC5F,MAAM,kCAAkB,IAAI,QAAwC;AAEpE,SAAS,WAAW,SAAyC;CAC3D,IAAI,SAAS,gBAAgB,IAAI,OAAO;CACxC,IAAI,CAAC,QAAQ,gBAAgB,IAAI,SAAU,SAAS,QAAQ,WAAW,CAAE;CACzE,OAAO;AACT;;;;;AAMA,SAAgB,YAAY,UAA6C;CACvE,IAAI,SAAS;CACb,KAAK,MAAM,WAAW,UAAU;EAC9B,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,QAAQ,gBAAgB;EAC7C,MAAM,CAAC,IAAI,IAAI,IAAI,MAAM,QAAQ,mBAAmB;EACpD,SAAS,KAAK,IAAI,QAAQ,KAAK,KAAK,IAAK,MAAO,KAAM,MAAO,IAAK,MAAO,KAAM,GAAI,CAAC;CACtF;CACA,OAAQ,SAAS,cAAA;AACnB;;AAGA,SAAgB,cAAc,QAA+B,UAAmC;CAC9F,IAAI,OAAO,SAAS,GAAG,MAAM,IAAI,MAAM,4CAA4C;CACnF,MAAM,WAAW,OAAO,IAAI,OAAO;CACnC,MAAM,OAAO,SAAS,IAAI,UAAU;CACpC,MAAM,SAAkB,CAAC;CACzB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAC/B,IAAI,IAAI,IAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,KAAK,IAAK,KAAK,IAAI,EAAG,CAAC;MAChE,IAAI,UAAU,OAAO,KAAK,SAAS,KAAK,IAAK,KAAK,EAAG,CAAC;CAE7D,OAAO;EAAE;EAAQ,OAAA,KAAwB,YAAY,QAAQ;CAAE;AACjE;;;;;AAMA,SAAgB,UAAU,EAAE,QAAQ,SAAyB,OAAsB;CACjF,MAAM,SAAS,OAAO,MAAM,MAAM,CAAE,SAAS,MAAM,QAAQ;CAC3D,IAAI,OAAO;CACX,IAAI,OAAO;CACX,IAAI,OAAO;CACX,IAAI,OAAO;CACX,KAAK,MAAM,EAAE,YAAY,QACvB,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;EAC7B,OAAO,KAAK,IAAI,MAAM,OAAO,EAAG;EAChC,OAAO,KAAK,IAAI,MAAM,OAAO,EAAG;EAChC,OAAO,KAAK,IAAI,MAAM,OAAO,IAAI,EAAG;EACpC,OAAO,KAAK,IAAI,MAAM,OAAO,IAAI,EAAG;CACtC;CAEF,OAAO,aAAa,QAAQ;EAC1B;EACA,YAAY,UAAW,OAAO,QAAQ,IAAK;EAC3C,YAAY,UAAW,OAAO,QAAQ,IAAK;CAC7C,CAAC;AACH;;AAGA,MAAa,kBAAkB,EAAE,eAC/B,UAAU,KAAK,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,OAAO,GAAG,OAAO"}
@@ -0,0 +1,36 @@
1
+ import { VariantProps } from "../../utils/tv.js";
2
+ //#region src/components/loading-indicator/loading-indicator-styles.d.ts
3
+ /** Variant definitions for {@link LoadingIndicator}; extend them to add variants. */
4
+ export declare const loadingIndicatorStyles: import("tailwind-variants").TVReturnType<{
5
+ variant: {
6
+ default: {};
7
+ contained: {};
8
+ };
9
+ }, {
10
+ root: string[];
11
+ indicator: string;
12
+ }, undefined, {
13
+ variant: {
14
+ default: {};
15
+ contained: {};
16
+ };
17
+ }, {
18
+ root: string[];
19
+ indicator: string;
20
+ }, import("tailwind-variants").TVReturnTypeLike<{
21
+ variant: {
22
+ default: {};
23
+ contained: {};
24
+ };
25
+ }, {
26
+ root: string[];
27
+ indicator: string;
28
+ }>>;
29
+ /**
30
+ * The variants of {@link loadingIndicatorStyles}, for building on its styles. They are the recipe's keys, not
31
+ * component props: their names (`hasIcon`, `isOpen`…) follow the classes and may change.
32
+ */
33
+ export type LoadingIndicatorStyleProps = VariantProps<typeof loadingIndicatorStyles>;
34
+ export type LoadingIndicatorVariant = NonNullable<LoadingIndicatorStyleProps['variant']>;
35
+ //#endregion
36
+ //# sourceMappingURL=loading-indicator-styles.d.ts.map
@@ -0,0 +1,22 @@
1
+ import { tv } from "../../utils/tv.js";
2
+ //#region src/components/loading-indicator/loading-indicator-styles.ts
3
+ /** Variant definitions for {@link LoadingIndicator}; extend them to add variants. */
4
+ const loadingIndicatorStyles = tv({
5
+ slots: {
6
+ root: [
7
+ "inline-flex size-(--m3-loading-indicator-size,48px) shrink-0 items-center justify-center rounded-corner-full",
8
+ "bg-[var(--_md-comp-loading-indicator-container-color)]",
9
+ "text-[color:var(--_md-comp-loading-indicator-active-indicator-color)]"
10
+ ],
11
+ indicator: "size-full fill-current"
12
+ },
13
+ variants: { variant: {
14
+ default: {},
15
+ contained: {}
16
+ } },
17
+ defaultVariants: { variant: "default" }
18
+ });
19
+ //#endregion
20
+ export { loadingIndicatorStyles };
21
+
22
+ //# sourceMappingURL=loading-indicator-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-indicator-styles.js","names":[],"sources":["../../../src/components/loading-indicator/loading-indicator-styles.ts"],"sourcesContent":["import { tv, type VariantProps } from '../../utils/tv';\n\n/*\n * Values follow Compose Material 3 (LoadingIndicator.kt, LoadingIndicatorTokens): a 48px\n * box with full corners; the indicator is `primary`, or `on-primary-container` on a\n * `primary-container` container when contained. The SVG scales with the box, keeping a\n * square aspect. The colours come from the component tokens (`loading-indicator-tokens.ts`,\n * `--md-comp-loading-indicator-[contained-]*`); the root carries\n * `data-tokens=\"md-comp-loading-indicator\"` and `data-variant`, and reads one private variable\n * per part. A consumer class (`text-tertiary`) still wins. Every class is written out in full so Tailwind can find it.\n */\n\n/** Variant definitions for {@link LoadingIndicator}; extend them to add variants. */\nexport const loadingIndicatorStyles = tv({\n slots: {\n // 48px by default; `size` sets --m3-loading-indicator-size (24–240px, the spec's range).\n root: [\n 'inline-flex size-(--m3-loading-indicator-size,48px) shrink-0 items-center justify-center rounded-corner-full',\n 'bg-[var(--_md-comp-loading-indicator-container-color)]',\n 'text-[color:var(--_md-comp-loading-indicator-active-indicator-color)]',\n ],\n indicator: 'size-full fill-current',\n },\n variants: {\n variant: {\n default: {},\n contained: {},\n },\n },\n defaultVariants: { variant: 'default' },\n});\n\n/**\n * The variants of {@link loadingIndicatorStyles}, 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 LoadingIndicatorStyleProps = VariantProps<typeof loadingIndicatorStyles>;\nexport type LoadingIndicatorVariant = NonNullable<LoadingIndicatorStyleProps['variant']>;\n"],"mappings":";;;AAaA,MAAa,yBAAyB,GAAG;CACvC,OAAO;EAEL,MAAM;GACJ;GACA;GACA;EACF;EACA,WAAW;CACb;CACA,UAAU,EACR,SAAS;EACP,SAAS,CAAC;EACV,WAAW,CAAC;CACd,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ComponentTokenSet } from "../../tokens/component.js";
2
+ import "../../index.js";
3
+ //#region src/components/loading-indicator/loading-indicator-tokens.d.ts
4
+ /** The tokens of {@link LoadingIndicator}: `--md-comp-loading-indicator-[contained-]<part>`. */
5
+ export declare const loadingIndicatorTokenSet: ComponentTokenSet<never>;
6
+ //#endregion
7
+ //# sourceMappingURL=loading-indicator-tokens.d.ts.map
@@ -0,0 +1,44 @@
1
+ import { color, defineComponentTokens } from "../../tokens/component.js";
2
+ //#region src/components/loading-indicator/loading-indicator-tokens.ts
3
+ const paintsIndicator = {
4
+ property: "fill",
5
+ slot: "indicator"
6
+ };
7
+ /** The tokens of {@link LoadingIndicator}: `--md-comp-loading-indicator-[contained-]<part>`. */
8
+ const loadingIndicatorTokenSet = defineComponentTokens({
9
+ name: "md-comp-loading-indicator",
10
+ tokens: {},
11
+ scopes: { variant: {
12
+ default: {
13
+ prefix: "md-comp-loading-indicator",
14
+ tokens: { "active-indicator-color": {
15
+ value: color("primary"),
16
+ description: "The morphing shape.",
17
+ compose: "LoadingIndicatorTokens.ActiveIndicatorColor",
18
+ paints: paintsIndicator
19
+ } },
20
+ fixed: { "container-color": "transparent" }
21
+ },
22
+ contained: {
23
+ prefix: "md-comp-loading-indicator-contained",
24
+ tokens: {
25
+ "active-indicator-color": {
26
+ value: color("on-primary-container"),
27
+ description: "The morphing shape of a contained indicator.",
28
+ compose: "LoadingIndicatorTokens.ContainedActiveColor",
29
+ paints: paintsIndicator
30
+ },
31
+ "container-color": {
32
+ value: color("primary-container"),
33
+ description: "The round container behind it.",
34
+ compose: "LoadingIndicatorTokens.ContainedContainerColor",
35
+ paints: { property: "background-color" }
36
+ }
37
+ }
38
+ }
39
+ } }
40
+ });
41
+ //#endregion
42
+ export { loadingIndicatorTokenSet };
43
+
44
+ //# sourceMappingURL=loading-indicator-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-indicator-tokens.js","names":[],"sources":["../../../src/components/loading-indicator/loading-indicator-tokens.ts"],"sourcesContent":["import { color, defineComponentTokens } from '../../tokens/component';\n\n/*\n * The loading indicator's component tokens, M3's `md.comp.loading-indicator.*` names\n * (checked against m3.material.io's token tables, 2026-10-14), with Compose's\n * LoadingIndicatorTokens defaults. The root's `data-variant` (`default` or `contained`)\n * picks the public names; `loading-indicator-styles.ts` reads one private variable per part.\n * The size and the full corners stay classes.\n */\n\nconst paintsIndicator = { property: 'fill', slot: 'indicator' } as const;\n\n/** The tokens of {@link LoadingIndicator}: `--md-comp-loading-indicator-[contained-]<part>`. */\nexport const loadingIndicatorTokenSet = defineComponentTokens({\n name: 'md-comp-loading-indicator',\n tokens: {},\n scopes: {\n variant: {\n default: {\n prefix: 'md-comp-loading-indicator',\n tokens: {\n 'active-indicator-color': {\n value: color('primary'),\n description: 'The morphing shape.',\n compose: 'LoadingIndicatorTokens.ActiveIndicatorColor',\n paints: paintsIndicator,\n },\n },\n fixed: { 'container-color': 'transparent' },\n },\n contained: {\n prefix: 'md-comp-loading-indicator-contained',\n tokens: {\n 'active-indicator-color': {\n value: color('on-primary-container'),\n description: 'The morphing shape of a contained indicator.',\n compose: 'LoadingIndicatorTokens.ContainedActiveColor',\n paints: paintsIndicator,\n },\n 'container-color': {\n value: color('primary-container'),\n description: 'The round container behind it.',\n compose: 'LoadingIndicatorTokens.ContainedContainerColor',\n paints: { property: 'background-color' },\n },\n },\n },\n },\n },\n});\n"],"mappings":";;AAUA,MAAM,kBAAkB;CAAE,UAAU;CAAQ,MAAM;AAAY;;AAG9D,MAAa,2BAA2B,sBAAsB;CAC5D,MAAM;CACN,QAAQ,CAAC;CACT,QAAQ,EACN,SAAS;EACP,SAAS;GACP,QAAQ;GACR,QAAQ,EACN,0BAA0B;IACxB,OAAO,MAAM,SAAS;IACtB,aAAa;IACb,SAAS;IACT,QAAQ;GACV,EACF;GACA,OAAO,EAAE,mBAAmB,cAAc;EAC5C;EACA,WAAW;GACT,QAAQ;GACR,QAAQ;IACN,0BAA0B;KACxB,OAAO,MAAM,sBAAsB;KACnC,aAAa;KACb,SAAS;KACT,QAAQ;IACV;IACA,mBAAmB;KACjB,OAAO,MAAM,mBAAmB;KAChC,aAAa;KACb,SAAS;KACT,QAAQ,EAAE,UAAU,mBAAmB;IACzC;GACF;EACF;CACF,EACF;AACF,CAAC"}