@bug-on/md3-react 2.0.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/.turbo/turbo-build.log +33 -0
  2. package/CHANGELOG.md +55 -0
  3. package/dist/index.css.d.ts +2 -0
  4. package/dist/index.d.mts +6127 -0
  5. package/dist/index.d.ts +6127 -71
  6. package/dist/index.js +1653 -614
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +1566 -547
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/material-symbols-cdn.css.d.ts +2 -0
  11. package/dist/material-symbols-self-hosted.css.d.ts +2 -0
  12. package/dist/typography.css.d.ts +2 -0
  13. package/package.json +22 -19
  14. package/scripts/copy-assets.js +82 -0
  15. package/src/assets/fonts/GoogleSansFlex-VariableFont.woff2 +0 -0
  16. package/src/assets/fonts/MaterialSymbolsOutlined-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
  17. package/src/assets/fonts/MaterialSymbolsRounded-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
  18. package/src/assets/fonts/MaterialSymbolsSharp-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
  19. package/src/assets/loading-indicator.svg +19 -0
  20. package/src/assets/material-symbols-cdn.css +65 -0
  21. package/src/assets/material-symbols-self-hosted.css +90 -0
  22. package/src/css.d.ts +20 -0
  23. package/src/hooks/useClickOutside.ts +37 -0
  24. package/src/hooks/useMediaQuery.ts +28 -0
  25. package/src/hooks/useRipple.ts +88 -0
  26. package/src/index.css +23 -0
  27. package/src/index.ts +349 -0
  28. package/src/lib/material-symbols-preconnect.tsx +82 -0
  29. package/src/lib/theme-utils.ts +180 -0
  30. package/src/lib/utils.ts +6 -0
  31. package/src/test/button.test.tsx +59 -0
  32. package/src/test/icon.test.tsx +91 -0
  33. package/src/test/loading-indicator.test.tsx +128 -0
  34. package/src/test/progress-indicator.test.tsx +306 -0
  35. package/src/test/setup.ts +80 -0
  36. package/src/test/typography.test.tsx +206 -0
  37. package/src/types/index.ts +7 -0
  38. package/src/types/md3.ts +31 -0
  39. package/src/ui/Text.tsx +60 -0
  40. package/src/ui/__snapshots__/divider.test.tsx.snap +63 -0
  41. package/src/ui/app-bar/app-bar-column.tsx +99 -0
  42. package/src/ui/app-bar/app-bar-item-button.tsx +71 -0
  43. package/src/ui/app-bar/app-bar-items.test.tsx +89 -0
  44. package/src/ui/app-bar/app-bar-overflow-indicator.tsx +108 -0
  45. package/src/ui/app-bar/app-bar-row.tsx +104 -0
  46. package/src/ui/app-bar/app-bar.test.tsx +87 -0
  47. package/src/ui/app-bar/app-bar.tokens.ts +223 -0
  48. package/src/ui/app-bar/app-bar.types.ts +441 -0
  49. package/src/ui/app-bar/bottom-app-bar.test.tsx +42 -0
  50. package/src/ui/app-bar/bottom-app-bar.tsx +84 -0
  51. package/src/ui/app-bar/docked-toolbar.test.tsx +34 -0
  52. package/src/ui/app-bar/docked-toolbar.tsx +54 -0
  53. package/src/ui/app-bar/flexible-app-bar.test.tsx +75 -0
  54. package/src/ui/app-bar/hooks/use-app-bar-scroll.ts +110 -0
  55. package/src/ui/app-bar/hooks/use-flexible-app-bar.ts +123 -0
  56. package/{dist/ui/app-bar/index.d.ts → src/ui/app-bar/index.ts} +35 -2
  57. package/src/ui/app-bar/large-flexible-app-bar.tsx +165 -0
  58. package/src/ui/app-bar/medium-flexible-app-bar.tsx +167 -0
  59. package/src/ui/app-bar/search-app-bar.test.tsx +49 -0
  60. package/src/ui/app-bar/search-app-bar.tsx +176 -0
  61. package/src/ui/app-bar/search-view.tsx +227 -0
  62. package/src/ui/app-bar/small-app-bar.test.tsx +48 -0
  63. package/src/ui/app-bar/small-app-bar.tsx +203 -0
  64. package/src/ui/badge.test.tsx +345 -0
  65. package/src/ui/badge.tsx +282 -0
  66. package/src/ui/button-group.test.tsx +71 -0
  67. package/src/ui/button-group.tsx +350 -0
  68. package/src/ui/button.test.tsx +297 -0
  69. package/src/ui/button.tsx +669 -0
  70. package/src/ui/card.test.tsx +187 -0
  71. package/src/ui/card.tsx +259 -0
  72. package/src/ui/checkbox.test.tsx +423 -0
  73. package/src/ui/checkbox.tsx +525 -0
  74. package/src/ui/chip.test.tsx +292 -0
  75. package/src/ui/chip.tsx +548 -0
  76. package/src/ui/code-block.tsx +219 -0
  77. package/src/ui/dialog.test.tsx +300 -0
  78. package/src/ui/dialog.tsx +384 -0
  79. package/src/ui/divider.test.tsx +314 -0
  80. package/src/ui/divider.tsx +412 -0
  81. package/src/ui/drawer.tsx +240 -0
  82. package/src/ui/fab-menu.test.tsx +494 -0
  83. package/src/ui/fab-menu.tsx +739 -0
  84. package/src/ui/fab.test.tsx +232 -0
  85. package/src/ui/fab.tsx +505 -0
  86. package/src/ui/icon-button.test.tsx +515 -0
  87. package/src/ui/icon-button.tsx +525 -0
  88. package/src/ui/icon.test.tsx +197 -0
  89. package/src/ui/icon.tsx +179 -0
  90. package/src/ui/loading-indicator.test.tsx +73 -0
  91. package/src/ui/loading-indicator.tsx +312 -0
  92. package/src/ui/menu/context-menu.tsx +275 -0
  93. package/src/ui/menu/index.ts +77 -0
  94. package/src/ui/menu/menu-animations.ts +102 -0
  95. package/src/ui/menu/menu-context.tsx +99 -0
  96. package/src/ui/menu/menu-divider.tsx +47 -0
  97. package/src/ui/menu/menu-group.tsx +200 -0
  98. package/src/ui/menu/menu-item.tsx +294 -0
  99. package/src/ui/menu/menu-tokens.ts +208 -0
  100. package/src/ui/menu/menu-types.ts +313 -0
  101. package/src/ui/menu/menu.test.tsx +624 -0
  102. package/src/ui/menu/menu.tsx +289 -0
  103. package/src/ui/menu/sub-menu.tsx +223 -0
  104. package/src/ui/menu/vertical-menu.tsx +382 -0
  105. package/src/ui/navigation-rail.test.tsx +404 -0
  106. package/src/ui/navigation-rail.tsx +604 -0
  107. package/src/ui/progress-indicator/circular.tsx +248 -0
  108. package/src/ui/progress-indicator/hooks.ts +51 -0
  109. package/{dist/ui/progress-indicator/index.d.ts → src/ui/progress-indicator/index.tsx} +20 -2
  110. package/src/ui/progress-indicator/linear-flat.tsx +83 -0
  111. package/src/ui/progress-indicator/linear-wavy.tsx +243 -0
  112. package/src/ui/progress-indicator/linear.tsx +143 -0
  113. package/src/ui/progress-indicator/types.ts +158 -0
  114. package/src/ui/progress-indicator/utils.ts +73 -0
  115. package/src/ui/radio-button.test.tsx +407 -0
  116. package/src/ui/radio-button.tsx +551 -0
  117. package/src/ui/ripple.test.tsx +72 -0
  118. package/src/ui/ripple.tsx +234 -0
  119. package/src/ui/scroll-area.test.tsx +58 -0
  120. package/src/ui/scroll-area.tsx +139 -0
  121. package/src/ui/search/animated-placeholder.tsx +145 -0
  122. package/src/ui/search/hooks/use-search-keyboard.test.ts +202 -0
  123. package/src/ui/search/hooks/use-search-keyboard.ts +104 -0
  124. package/src/ui/search/hooks/use-search-view-focus.test.ts +96 -0
  125. package/src/ui/search/hooks/use-search-view-focus.ts +24 -0
  126. package/src/ui/search/index.ts +44 -0
  127. package/src/ui/search/search-bar.tsx +220 -0
  128. package/src/ui/search/search-context.tsx +42 -0
  129. package/src/ui/search/search-view-docked.tsx +194 -0
  130. package/src/ui/search/search-view-fullscreen.tsx +247 -0
  131. package/src/ui/search/search.test.tsx +233 -0
  132. package/src/ui/search/search.tokens.ts +134 -0
  133. package/src/ui/search/search.tsx +131 -0
  134. package/src/ui/search/search.types.ts +154 -0
  135. package/src/ui/search/trailing-action.tsx +49 -0
  136. package/src/ui/shared/constants.ts +122 -0
  137. package/{dist/ui/shared/touch-target.d.ts → src/ui/shared/touch-target.tsx} +13 -1
  138. package/src/ui/slider/hooks/useSliderMath.ts +195 -0
  139. package/{dist/ui/slider/index.d.ts → src/ui/slider/index.ts} +12 -1
  140. package/src/ui/slider/range-slider.tsx +561 -0
  141. package/src/ui/slider/slider-thumb.tsx +379 -0
  142. package/src/ui/slider/slider-track.tsx +912 -0
  143. package/src/ui/slider/slider.tokens.ts +189 -0
  144. package/src/ui/slider/slider.tsx +259 -0
  145. package/src/ui/slider/slider.types.ts +288 -0
  146. package/src/ui/snackbar/index.ts +20 -0
  147. package/src/ui/snackbar/snackbar.test.tsx +338 -0
  148. package/src/ui/snackbar/snackbar.tsx +476 -0
  149. package/{dist/ui/switch/index.d.ts → src/ui/switch/index.ts} +1 -0
  150. package/src/ui/switch/switch.stories.tsx +309 -0
  151. package/src/ui/switch/switch.test.tsx +243 -0
  152. package/src/ui/switch/switch.tokens.ts +89 -0
  153. package/src/ui/switch/switch.tsx +504 -0
  154. package/src/ui/switch/switch.types.ts +62 -0
  155. package/{dist/ui/tabs/index.d.ts → src/ui/tabs/index.ts} +8 -1
  156. package/src/ui/tabs/tab.tsx +407 -0
  157. package/src/ui/tabs/tabs-content.tsx +89 -0
  158. package/src/ui/tabs/tabs-list.tsx +146 -0
  159. package/src/ui/tabs/tabs.test.tsx +290 -0
  160. package/src/ui/tabs/tabs.tokens.ts +121 -0
  161. package/src/ui/tabs/tabs.tsx +229 -0
  162. package/src/ui/tabs/tabs.types.ts +185 -0
  163. package/{dist/ui/text-field/index.d.ts → src/ui/text-field/index.ts} +8 -1
  164. package/src/ui/text-field/subcomponents/active-indicator.tsx +67 -0
  165. package/src/ui/text-field/subcomponents/floating-label.tsx +161 -0
  166. package/src/ui/text-field/subcomponents/leading-icon.tsx +46 -0
  167. package/src/ui/text-field/subcomponents/outline-container.tsx +170 -0
  168. package/src/ui/text-field/subcomponents/prefix-suffix.tsx +59 -0
  169. package/src/ui/text-field/subcomponents/supporting-text.tsx +145 -0
  170. package/src/ui/text-field/subcomponents/trailing-icon.tsx +199 -0
  171. package/src/ui/text-field/text-field.test.tsx +454 -0
  172. package/src/ui/text-field/text-field.tokens.ts +104 -0
  173. package/src/ui/text-field/text-field.tsx +548 -0
  174. package/src/ui/text-field/text-field.types.ts +180 -0
  175. package/src/ui/theme-provider/index.tsx +190 -0
  176. package/src/ui/toc.test.tsx +108 -0
  177. package/src/ui/toc.tsx +172 -0
  178. package/src/ui/tooltip/plain-tooltip.tsx +63 -0
  179. package/src/ui/tooltip/rich-tooltip.tsx +94 -0
  180. package/src/ui/tooltip/tooltip-box.tsx +266 -0
  181. package/src/ui/tooltip/tooltip-caret-shape.tsx +68 -0
  182. package/src/ui/tooltip/tooltip.tokens.ts +26 -0
  183. package/src/ui/tooltip/tooltip.types.ts +70 -0
  184. package/src/ui/tooltip/use-tooltip-position.ts +208 -0
  185. package/src/ui/tooltip/use-tooltip-state.ts +41 -0
  186. package/src/ui/typography/__tests__/typography.test.tsx +170 -0
  187. package/{dist/ui/typography/index.d.ts → src/ui/typography/index.ts} +21 -3
  188. package/src/ui/typography/type-scale-tokens.ts +205 -0
  189. package/src/ui/typography/typography-key-tokens.ts +43 -0
  190. package/src/ui/typography/typography-tokens.ts +360 -0
  191. package/src/ui/typography/typography.css +22 -0
  192. package/src/ui/typography/typography.tsx +559 -0
  193. package/test-render.tsx +4 -0
  194. package/test-shadow.html +26 -0
  195. package/test_output.txt +164 -0
  196. package/test_output_v2.txt +5 -0
  197. package/tsconfig.build.json +10 -0
  198. package/tsconfig.json +18 -0
  199. package/tsup.config.ts +20 -0
  200. package/vitest.config.ts +11 -0
  201. package/dist/hooks/useClickOutside.d.ts +0 -8
  202. package/dist/hooks/useMediaQuery.d.ts +0 -11
  203. package/dist/hooks/useRipple.d.ts +0 -26
  204. package/dist/lib/material-symbols-preconnect.d.ts +0 -42
  205. package/dist/lib/theme-utils.d.ts +0 -63
  206. package/dist/lib/utils.d.ts +0 -2
  207. package/dist/types/index.d.ts +0 -1
  208. package/dist/types/md3.d.ts +0 -14
  209. package/dist/ui/app-bar/app-bar-column.d.ts +0 -28
  210. package/dist/ui/app-bar/app-bar-item-button.d.ts +0 -16
  211. package/dist/ui/app-bar/app-bar-overflow-indicator.d.ts +0 -18
  212. package/dist/ui/app-bar/app-bar-row.d.ts +0 -36
  213. package/dist/ui/app-bar/app-bar.tokens.d.ts +0 -184
  214. package/dist/ui/app-bar/app-bar.types.d.ts +0 -392
  215. package/dist/ui/app-bar/bottom-app-bar.d.ts +0 -31
  216. package/dist/ui/app-bar/docked-toolbar.d.ts +0 -25
  217. package/dist/ui/app-bar/hooks/use-app-bar-scroll.d.ts +0 -42
  218. package/dist/ui/app-bar/hooks/use-flexible-app-bar.d.ts +0 -37
  219. package/dist/ui/app-bar/large-flexible-app-bar.d.ts +0 -26
  220. package/dist/ui/app-bar/medium-flexible-app-bar.d.ts +0 -28
  221. package/dist/ui/app-bar/search-app-bar.d.ts +0 -43
  222. package/dist/ui/app-bar/search-view.d.ts +0 -54
  223. package/dist/ui/app-bar/small-app-bar.d.ts +0 -37
  224. package/dist/ui/badge.d.ts +0 -125
  225. package/dist/ui/button-group.d.ts +0 -59
  226. package/dist/ui/button.d.ts +0 -148
  227. package/dist/ui/card.d.ts +0 -62
  228. package/dist/ui/checkbox.d.ts +0 -82
  229. package/dist/ui/chip.d.ts +0 -110
  230. package/dist/ui/code-block.d.ts +0 -14
  231. package/dist/ui/dialog.d.ts +0 -111
  232. package/dist/ui/divider.d.ts +0 -164
  233. package/dist/ui/drawer.d.ts +0 -39
  234. package/dist/ui/dropdown.d.ts +0 -29
  235. package/dist/ui/fab-menu.d.ts +0 -204
  236. package/dist/ui/fab.d.ts +0 -162
  237. package/dist/ui/icon-button.d.ts +0 -131
  238. package/dist/ui/icon.d.ts +0 -88
  239. package/dist/ui/loading-indicator.d.ts +0 -42
  240. package/dist/ui/navigation-rail.d.ts +0 -29
  241. package/dist/ui/progress-indicator/circular.d.ts +0 -3
  242. package/dist/ui/progress-indicator/hooks.d.ts +0 -3
  243. package/dist/ui/progress-indicator/linear-flat.d.ts +0 -10
  244. package/dist/ui/progress-indicator/linear-wavy.d.ts +0 -18
  245. package/dist/ui/progress-indicator/linear.d.ts +0 -3
  246. package/dist/ui/progress-indicator/types.d.ts +0 -151
  247. package/dist/ui/progress-indicator/utils.d.ts +0 -3
  248. package/dist/ui/radio-button.d.ts +0 -106
  249. package/dist/ui/ripple.d.ts +0 -126
  250. package/dist/ui/scroll-area.d.ts +0 -27
  251. package/dist/ui/search/animated-placeholder.d.ts +0 -54
  252. package/dist/ui/search/hooks/use-search-keyboard.d.ts +0 -32
  253. package/dist/ui/search/hooks/use-search-view-focus.d.ts +0 -6
  254. package/dist/ui/search/index.d.ts +0 -27
  255. package/dist/ui/search/search-bar.d.ts +0 -32
  256. package/dist/ui/search/search-context.d.ts +0 -24
  257. package/dist/ui/search/search-view-docked.d.ts +0 -25
  258. package/dist/ui/search/search-view-fullscreen.d.ts +0 -36
  259. package/dist/ui/search/search.d.ts +0 -50
  260. package/dist/ui/search/search.tokens.d.ts +0 -112
  261. package/dist/ui/search/search.types.d.ts +0 -131
  262. package/dist/ui/search/trailing-action.d.ts +0 -9
  263. package/dist/ui/shared/constants.d.ts +0 -86
  264. package/dist/ui/slider/hooks/useSliderMath.d.ts +0 -101
  265. package/dist/ui/slider/range-slider.d.ts +0 -47
  266. package/dist/ui/slider/slider-thumb.d.ts +0 -33
  267. package/dist/ui/slider/slider-track.d.ts +0 -25
  268. package/dist/ui/slider/slider.d.ts +0 -60
  269. package/dist/ui/slider/slider.tokens.d.ts +0 -151
  270. package/dist/ui/slider/slider.types.d.ts +0 -259
  271. package/dist/ui/snackbar/index.d.ts +0 -6
  272. package/dist/ui/snackbar/snackbar.d.ts +0 -197
  273. package/dist/ui/switch/switch.d.ts +0 -30
  274. package/dist/ui/switch/switch.stories.d.ts +0 -48
  275. package/dist/ui/switch/switch.tokens.d.ts +0 -67
  276. package/dist/ui/switch/switch.types.d.ts +0 -59
  277. package/dist/ui/tabs/tab.d.ts +0 -43
  278. package/dist/ui/tabs/tabs-content.d.ts +0 -36
  279. package/dist/ui/tabs/tabs-list.d.ts +0 -40
  280. package/dist/ui/tabs/tabs.d.ts +0 -60
  281. package/dist/ui/tabs/tabs.tokens.d.ts +0 -94
  282. package/dist/ui/tabs/tabs.types.d.ts +0 -172
  283. package/dist/ui/text-field/subcomponents/active-indicator.d.ts +0 -24
  284. package/dist/ui/text-field/subcomponents/floating-label.d.ts +0 -43
  285. package/dist/ui/text-field/subcomponents/leading-icon.d.ts +0 -23
  286. package/dist/ui/text-field/subcomponents/outline-container.d.ts +0 -42
  287. package/dist/ui/text-field/subcomponents/prefix-suffix.d.ts +0 -24
  288. package/dist/ui/text-field/subcomponents/supporting-text.d.ts +0 -37
  289. package/dist/ui/text-field/subcomponents/trailing-icon.d.ts +0 -41
  290. package/dist/ui/text-field/text-field.d.ts +0 -49
  291. package/dist/ui/text-field/text-field.tokens.d.ts +0 -76
  292. package/dist/ui/text-field/text-field.types.d.ts +0 -126
  293. package/dist/ui/theme-provider/index.d.ts +0 -48
  294. package/dist/ui/toc.d.ts +0 -80
  295. package/dist/ui/tooltip/plain-tooltip.d.ts +0 -2
  296. package/dist/ui/tooltip/rich-tooltip.d.ts +0 -2
  297. package/dist/ui/tooltip/tooltip-box.d.ts +0 -2
  298. package/dist/ui/tooltip/tooltip-caret-shape.d.ts +0 -9
  299. package/dist/ui/tooltip/tooltip.tokens.d.ts +0 -26
  300. package/dist/ui/tooltip/tooltip.types.d.ts +0 -56
  301. package/dist/ui/tooltip/use-tooltip-position.d.ts +0 -8
  302. package/dist/ui/tooltip/use-tooltip-state.d.ts +0 -2
  303. package/dist/ui/typography/type-scale-tokens.d.ts +0 -162
  304. package/dist/ui/typography/typography-key-tokens.d.ts +0 -40
  305. package/dist/ui/typography/typography-tokens.d.ts +0 -220
  306. package/dist/ui/typography/typography.d.ts +0 -265
  307. /package/{dist/hooks/index.d.ts → src/hooks/index.ts} +0 -0
  308. /package/{dist/ui/tooltip/index.d.ts → src/ui/tooltip/index.ts} +0 -0
@@ -1,265 +0,0 @@
1
- /**
2
- * @file typography.tsx
3
- * @description MD3 Expressive Typography System for React.
4
- *
5
- * Port of `androidx.compose.material3.Typography` (Kotlin `@Immutable` class).
6
- *
7
- * Provides 30 {@link TextStyle} definitions via the React Context API, mirroring
8
- * the Compose `LocalTypography` / `MaterialTheme.typography` pattern.
9
- *
10
- * ### Memory & Performance Optimizations
11
- * - The `Typography` class delegates all property access to a `TypographyTokens`
12
- * instance that uses **lazy getters**, so styles are computed only on first use.
13
- * - `TypographyProvider` memoizes the context value via `useMemo` to prevent
14
- * unnecessary re-renders downstream.
15
- *
16
- * @example Wrap your application
17
- * ```tsx
18
- * <TypographyProvider>
19
- * <App />
20
- * </TypographyProvider>
21
- * ```
22
- *
23
- * @example Consume in a component
24
- * ```tsx
25
- * const typography = useTypography();
26
- * <p style={typography.bodyLarge}>Hello</p>
27
- * ```
28
- *
29
- * @example Via token key
30
- * ```tsx
31
- * const style = typography.fromToken(TypographyKeyTokens.BodyLarge);
32
- * ```
33
- *
34
- * @example Custom font + half-rounded corners
35
- * ```tsx
36
- * <TypographyProvider
37
- * fontFamily="'Roboto', sans-serif"
38
- * fontVariationAxes={{ ROND: 50 }}
39
- * >
40
- * <App />
41
- * </TypographyProvider>
42
- * ```
43
- */
44
- import { type ReactNode } from "react";
45
- import { TypographyKeyTokens } from "./typography-key-tokens";
46
- import { type FontVariationAxes, type TextStyle, TypographyTokens } from "./typography-tokens";
47
- /**
48
- * MD3 Expressive Typography — port of Compose's `@Immutable class Typography(...)`.
49
- *
50
- * All 30 style properties are **readonly** and lazily resolved from the
51
- * underlying {@link TypographyTokens} instance. Use {@link Typography.copy}
52
- * to create a customized variant without mutating the original.
53
- *
54
- * @example Default
55
- * ```ts
56
- * const typography = new Typography();
57
- * const style = typography.displayLarge; // lazy — computed on first access
58
- * ```
59
- *
60
- * @example Custom tokens
61
- * ```ts
62
- * const typography = new Typography(
63
- * new TypographyTokens({ fontFamily: "'Inter', sans-serif", fontVariationAxes: { ROND: 0 } })
64
- * );
65
- * ```
66
- */
67
- export declare class Typography {
68
- #private;
69
- constructor(tokens?: TypographyTokens);
70
- /** Display Large text style (`57px`, weight `400`). */
71
- get displayLarge(): TextStyle;
72
- /** Display Medium text style (`45px`, weight `400`). */
73
- get displayMedium(): TextStyle;
74
- /** Display Small text style (`36px`, weight `400`). */
75
- get displaySmall(): TextStyle;
76
- /** Headline Large text style (`32px`, weight `400`). */
77
- get headlineLarge(): TextStyle;
78
- /** Headline Medium text style (`28px`, weight `400`). */
79
- get headlineMedium(): TextStyle;
80
- /** Headline Small text style (`24px`, weight `400`). */
81
- get headlineSmall(): TextStyle;
82
- /** Title Large text style (`22px`, weight `400`). */
83
- get titleLarge(): TextStyle;
84
- /** Title Medium text style (`16px`, weight `500`). */
85
- get titleMedium(): TextStyle;
86
- /** Title Small text style (`14px`, weight `500`). */
87
- get titleSmall(): TextStyle;
88
- /** Body Large text style (`16px`, weight `400`). */
89
- get bodyLarge(): TextStyle;
90
- /** Body Medium text style (`14px`, weight `400`). */
91
- get bodyMedium(): TextStyle;
92
- /** Body Small text style (`12px`, weight `400`). */
93
- get bodySmall(): TextStyle;
94
- /** Label Large text style (`14px`, weight `500`). */
95
- get labelLarge(): TextStyle;
96
- /** Label Medium text style (`12px`, weight `500`). */
97
- get labelMedium(): TextStyle;
98
- /** Label Small text style (`11px`, weight `500`). */
99
- get labelSmall(): TextStyle;
100
- /** Display Large Emphasized text style (`57px`, weight `800`). */
101
- get displayLargeEmphasized(): TextStyle;
102
- /** Display Medium Emphasized text style (`45px`, weight `800`). */
103
- get displayMediumEmphasized(): TextStyle;
104
- /** Display Small Emphasized text style (`36px`, weight `800`). */
105
- get displaySmallEmphasized(): TextStyle;
106
- /** Headline Large Emphasized text style (`32px`, weight `800`). */
107
- get headlineLargeEmphasized(): TextStyle;
108
- /** Headline Medium Emphasized text style (`28px`, weight `800`). */
109
- get headlineMediumEmphasized(): TextStyle;
110
- /** Headline Small Emphasized text style (`24px`, weight `800`). */
111
- get headlineSmallEmphasized(): TextStyle;
112
- /** Title Large Emphasized text style (`22px`, weight `700`). */
113
- get titleLargeEmphasized(): TextStyle;
114
- /** Title Medium Emphasized text style (`16px`, weight `700`). */
115
- get titleMediumEmphasized(): TextStyle;
116
- /** Title Small Emphasized text style (`14px`, weight `700`). */
117
- get titleSmallEmphasized(): TextStyle;
118
- /** Body Large Emphasized text style (`16px`, weight `700`). */
119
- get bodyLargeEmphasized(): TextStyle;
120
- /** Body Medium Emphasized text style (`14px`, weight `700`). */
121
- get bodyMediumEmphasized(): TextStyle;
122
- /** Body Small Emphasized text style (`12px`, weight `700`). */
123
- get bodySmallEmphasized(): TextStyle;
124
- /** Label Large Emphasized text style (`14px`, weight `800`). */
125
- get labelLargeEmphasized(): TextStyle;
126
- /** Label Medium Emphasized text style (`12px`, weight `800`). */
127
- get labelMediumEmphasized(): TextStyle;
128
- /** Label Small Emphasized text style (`11px`, weight `800`). */
129
- get labelSmallEmphasized(): TextStyle;
130
- /**
131
- * Returns the `TextStyle` corresponding to the given {@link TypographyKeyTokens}.
132
- *
133
- * Port of `internal fun Typography.fromToken(value: TypographyKeyTokens): TextStyle`.
134
- *
135
- * @example
136
- * ```ts
137
- * const style = typography.fromToken(TypographyKeyTokens.BodyLarge);
138
- * ```
139
- */
140
- fromToken(value: TypographyKeyTokens): TextStyle;
141
- /**
142
- * Creates a new `Typography` instance with the specified property overrides
143
- * merged on top of the current instance's styles.
144
- *
145
- * Port of Compose's `fun Typography.copy(...)`.
146
- *
147
- * Unlike a shallow `Object.assign`, this method preserves the lazy-getter
148
- * architecture — overridden styles are stored separately and looked up first
149
- * on each property access, while non-overridden styles continue to be
150
- * resolved from the underlying {@link TypographyTokens}.
151
- *
152
- * @param overrides - Map of camelCase property names to partial `TextStyle` overrides.
153
- * @returns A new `Typography` instance. The original is never mutated.
154
- *
155
- * @example
156
- * ```ts
157
- * const custom = typography.copy({ bodyLarge: { fontSize: "2rem" } });
158
- * custom.bodyLarge.fontSize; // "2rem"
159
- * custom.bodySmall.fontSize; // original token value — untouched
160
- * ```
161
- */
162
- copy(overrides: Partial<Record<TypographyStyleKey, Partial<TextStyle>>>): Typography;
163
- }
164
- /**
165
- * Union of all camelCase property names on {@link Typography} that return a
166
- * {@link TextStyle}. Used as the key type for `copy()` overrides and the
167
- * `OverriddenTypography` resolver.
168
- */
169
- type TypographyStyleKey = {
170
- [K in keyof Typography]: Typography[K] extends TextStyle ? K : never;
171
- }[keyof Typography];
172
- /**
173
- * React context that holds the current {@link Typography} instance.
174
- *
175
- * Port of `internal val LocalTypography = staticCompositionLocalOf { Typography() }`.
176
- *
177
- * @internal — Prefer {@link useTypography} and {@link TypographyProvider}.
178
- */
179
- export declare const TypographyContext: import("react").Context<Typography>;
180
- /**
181
- * React hook to access the current {@link Typography} from the nearest
182
- * {@link TypographyProvider} in the tree. Falls back to the default
183
- * googleapis Typography when no provider is present.
184
- *
185
- * @returns The current `Typography` instance.
186
- *
187
- * @example
188
- * ```tsx
189
- * const typography = useTypography();
190
- * <p style={typography.bodyLarge}>Hello</p>
191
- * ```
192
- */
193
- export declare function useTypography(): Typography;
194
- /**
195
- * Props for {@link TypographyProvider}.
196
- */
197
- export interface TypographyProviderProps {
198
- /** The child tree that will have access to the provided typography. */
199
- children: ReactNode;
200
- /**
201
- * A fully custom {@link Typography} instance.
202
- * When provided, `fontFamily` and `fontVariationAxes` are ignored.
203
- */
204
- typography?: Typography;
205
- /**
206
- * Shorthand to override the CSS `font-family` for all typography styles.
207
- * Ignored when `typography` is provided.
208
- *
209
- * @example "'Roboto', sans-serif"
210
- */
211
- fontFamily?: string;
212
- /**
213
- * Variable font axes to apply globally via `font-variation-settings`.
214
- * Merged on top of the defaults (`ROND: 100`). Only the axes you specify
215
- * will be overridden; unspecified axes retain font defaults.
216
- * Ignored when `typography` is provided.
217
- *
218
- * @example { ROND: 50 } // half-rounded
219
- * @example { ROND: 0 } // sharp corners
220
- */
221
- fontVariationAxes?: FontVariationAxes;
222
- }
223
- /**
224
- * Typography Provider component.
225
- *
226
- * Port of `CompositionLocalProvider(LocalTypography provides typography)`.
227
- * Wrap your application (or a subtree) to provide MD3 Expressive typography
228
- * to all descendant components that call {@link useTypography}.
229
- *
230
- * The context value is **memoized** — it is only re-computed when `typography`,
231
- * `fontFamily`, or `fontVariationAxes` change, preventing unnecessary re-renders.
232
- *
233
- * @example Default (Google Sans Flex, ROND = 100)
234
- * ```tsx
235
- * <TypographyProvider>
236
- * <App />
237
- * </TypographyProvider>
238
- * ```
239
- *
240
- * @example Custom font
241
- * ```tsx
242
- * <TypographyProvider fontFamily="'Inter', sans-serif">
243
- * <App />
244
- * </TypographyProvider>
245
- * ```
246
- *
247
- * @example Partially rounded corners (ROND = 50)
248
- * ```tsx
249
- * <TypographyProvider fontVariationAxes={{ ROND: 50 }}>
250
- * <App />
251
- * </TypographyProvider>
252
- * ```
253
- *
254
- * @example Fully sharp (ROND = 0) with a custom font
255
- * ```tsx
256
- * <TypographyProvider
257
- * fontFamily="'Outfit', sans-serif"
258
- * fontVariationAxes={{ ROND: 0 }}
259
- * >
260
- * <App />
261
- * </TypographyProvider>
262
- * ```
263
- */
264
- export declare function TypographyProvider({ children, typography, fontFamily, fontVariationAxes, }: TypographyProviderProps): import("react/jsx-runtime").JSX.Element;
265
- export {};
File without changes