@pg-labs-incubator/cobweb 0.0.0-stage → 0.0.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 (320) hide show
  1. package/LICENSE +163 -0
  2. package/README.md +82 -2
  3. package/package.json +111 -3
  4. package/src/action/action.yaml +291 -0
  5. package/src/action/button-group.yaml +56 -0
  6. package/src/action/button.yaml +239 -0
  7. package/src/action/split-button.yaml +87 -0
  8. package/src/color/color.yaml +181 -0
  9. package/src/color/palette.yaml +147 -0
  10. package/src/container/card.yaml +170 -0
  11. package/src/container/corner-radius.yaml +50 -0
  12. package/src/container/elevation.yaml +19 -0
  13. package/src/design.yaml +41 -0
  14. package/src/feedback/feedback.yaml +225 -0
  15. package/src/icon/icon-font.yaml +28 -0
  16. package/src/icon/icon.yaml +31 -0
  17. package/src/input/date-picker.yaml +144 -0
  18. package/src/input/date-range-input.yaml +162 -0
  19. package/src/input/range-slider.yaml +161 -0
  20. package/src/input/select.yaml +230 -0
  21. package/src/input/slider.yaml +172 -0
  22. package/src/input/text-field.yaml +240 -0
  23. package/src/input/time-picker.yaml +220 -0
  24. package/src/motion/motion.yaml +371 -0
  25. package/src/navigation/app-bar.yaml +147 -0
  26. package/src/navigation/navigation.yaml +339 -0
  27. package/src/navigation/scroll.yaml +23 -0
  28. package/src/navigation/search.yaml +112 -0
  29. package/src/navigation/tabs.yaml +144 -0
  30. package/src/navigation/toolbar.yaml +130 -0
  31. package/src/selection/checkbox.yaml +162 -0
  32. package/src/selection/chip.yaml +219 -0
  33. package/src/selection/radio.yaml +125 -0
  34. package/src/selection/segmented-group.yaml +11 -0
  35. package/src/selection/segmented.yaml +69 -0
  36. package/src/selection/switch.yaml +209 -0
  37. package/src/spacing/measurement.yaml +80 -0
  38. package/src/state/state.yaml +38 -0
  39. package/src/surface/surface.yaml +483 -0
  40. package/src/text/line-height.yaml +144 -0
  41. package/src/text/typeface.yaml +31 -0
  42. package/src/text/typescale.yaml +726 -0
  43. package/target/esbuild/action/action.css +1 -0
  44. package/target/esbuild/action/base.jsx +1 -0
  45. package/target/esbuild/action/button.jsx +17 -0
  46. package/target/esbuild/action/fab-menu-context.jsx +1 -0
  47. package/target/esbuild/action/fab-menu.jsx +15 -0
  48. package/target/esbuild/action/fab.jsx +7 -0
  49. package/target/esbuild/action/group.jsx +22 -0
  50. package/target/esbuild/action/icon-button.jsx +5 -0
  51. package/target/esbuild/action/index.jsx +1 -0
  52. package/target/esbuild/action/split-button.jsx +12 -0
  53. package/target/esbuild/color/contrast.jsx +1 -0
  54. package/target/esbuild/color/dynamic.jsx +1 -0
  55. package/target/esbuild/color/hct.jsx +1 -0
  56. package/target/esbuild/color/index.css +1 -0
  57. package/target/esbuild/color/index.jsx +1 -0
  58. package/target/esbuild/color/palette.jsx +1 -0
  59. package/target/esbuild/color/scheme.jsx +1 -0
  60. package/target/esbuild/color/temperature.jsx +1 -0
  61. package/target/esbuild/container/card.css +1 -0
  62. package/target/esbuild/container/card.jsx +1 -0
  63. package/target/esbuild/container/elevation-shadow.css +1 -0
  64. package/target/esbuild/container/elevation-shadow.jsx +1 -0
  65. package/target/esbuild/container/index.jsx +1 -0
  66. package/target/esbuild/dom/client.jsx +1 -0
  67. package/target/esbuild/dom/index.jsx +1 -0
  68. package/target/esbuild/dom/server.jsx +1 -0
  69. package/target/esbuild/dom/types.jsx +1 -0
  70. package/target/esbuild/feedback/badge.jsx +15 -0
  71. package/target/esbuild/feedback/feedback.css +1 -0
  72. package/target/esbuild/feedback/focus.jsx +1 -0
  73. package/target/esbuild/feedback/index.jsx +1 -0
  74. package/target/esbuild/feedback/loading.jsx +7 -0
  75. package/target/esbuild/feedback/observe.jsx +1 -0
  76. package/target/esbuild/feedback/progress.jsx +35 -0
  77. package/target/esbuild/feedback/snackbar.jsx +23 -0
  78. package/target/esbuild/feedback/tooltip.jsx +24 -0
  79. package/target/esbuild/icon/icon.css +1 -0
  80. package/target/esbuild/icon/icon.jsx +1 -0
  81. package/target/esbuild/icon/index.jsx +1 -0
  82. package/target/esbuild/index.css +1 -0
  83. package/target/esbuild/index.jsx +1 -0
  84. package/target/esbuild/input/autocomplete.jsx +5 -0
  85. package/target/esbuild/input/base.jsx +4 -0
  86. package/target/esbuild/input/date-picker.css +1 -0
  87. package/target/esbuild/input/date-picker.jsx +104 -0
  88. package/target/esbuild/input/date-range-input.css +1 -0
  89. package/target/esbuild/input/date-time.jsx +21 -0
  90. package/target/esbuild/input/index.css +1 -0
  91. package/target/esbuild/input/index.jsx +1 -0
  92. package/target/esbuild/input/paired-input.jsx +1 -0
  93. package/target/esbuild/input/picker-dialog.css +1 -0
  94. package/target/esbuild/input/picker-dialog.jsx +14 -0
  95. package/target/esbuild/input/select.css +1 -0
  96. package/target/esbuild/input/select.jsx +63 -0
  97. package/target/esbuild/input/slider.css +1 -0
  98. package/target/esbuild/input/slider.jsx +51 -0
  99. package/target/esbuild/input/text-field.css +1 -0
  100. package/target/esbuild/input/text-field.jsx +67 -0
  101. package/target/esbuild/input/time-picker.css +1 -0
  102. package/target/esbuild/input/time-picker.jsx +29 -0
  103. package/target/esbuild/motion/frame.jsx +1 -0
  104. package/target/esbuild/motion/index.css +1 -0
  105. package/target/esbuild/motion/index.jsx +1 -0
  106. package/target/esbuild/motion/material.jsx +1 -0
  107. package/target/esbuild/motion/motion.jsx +1 -0
  108. package/target/esbuild/motion/spring.jsx +1 -0
  109. package/target/esbuild/motion/transition.css +1 -0
  110. package/target/esbuild/motion/transition.jsx +1 -0
  111. package/target/esbuild/motion/velocity.jsx +1 -0
  112. package/target/esbuild/navigation/app-bar.jsx +51 -0
  113. package/target/esbuild/navigation/base.jsx +1 -0
  114. package/target/esbuild/navigation/drawer.jsx +25 -0
  115. package/target/esbuild/navigation/index.jsx +1 -0
  116. package/target/esbuild/navigation/navigation.css +1 -0
  117. package/target/esbuild/navigation/navigation.jsx +29 -0
  118. package/target/esbuild/navigation/scroll.jsx +1 -0
  119. package/target/esbuild/navigation/search.jsx +29 -0
  120. package/target/esbuild/navigation/tabs.jsx +7 -0
  121. package/target/esbuild/navigation/toolbar.jsx +23 -0
  122. package/target/esbuild/selection/base.jsx +1 -0
  123. package/target/esbuild/selection/checkbox.jsx +14 -0
  124. package/target/esbuild/selection/chip.jsx +23 -0
  125. package/target/esbuild/selection/index.jsx +1 -0
  126. package/target/esbuild/selection/radio.jsx +9 -0
  127. package/target/esbuild/selection/segmented.jsx +15 -0
  128. package/target/esbuild/selection/selection.css +1 -0
  129. package/target/esbuild/selection/switch.jsx +14 -0
  130. package/target/esbuild/shape/corner-rounding.jsx +1 -0
  131. package/target/esbuild/shape/cubic.jsx +1 -0
  132. package/target/esbuild/shape/index.jsx +1 -0
  133. package/target/esbuild/shape/material-shapes.jsx +1 -0
  134. package/target/esbuild/shape/morph.jsx +1 -0
  135. package/target/esbuild/shape/path.jsx +1 -0
  136. package/target/esbuild/shape/point.jsx +1 -0
  137. package/target/esbuild/shape/rounded-polygon.jsx +1 -0
  138. package/target/esbuild/shape/shapes.jsx +1 -0
  139. package/target/esbuild/spacing/index.jsx +1 -0
  140. package/target/esbuild/state/component.css +1 -0
  141. package/target/esbuild/state/component.jsx +1 -0
  142. package/target/esbuild/state/controller.jsx +1 -0
  143. package/target/esbuild/state/index.jsx +1 -0
  144. package/target/esbuild/state/ripple.jsx +1 -0
  145. package/target/esbuild/state/state.jsx +1 -0
  146. package/target/esbuild/state/style.jsx +1 -0
  147. package/target/esbuild/surface/carousel-layout.jsx +1 -0
  148. package/target/esbuild/surface/carousel.css +1 -0
  149. package/target/esbuild/surface/carousel.jsx +10 -0
  150. package/target/esbuild/surface/dialog.jsx +35 -0
  151. package/target/esbuild/surface/divider.jsx +1 -0
  152. package/target/esbuild/surface/drag.jsx +1 -0
  153. package/target/esbuild/surface/gestures.css +1 -0
  154. package/target/esbuild/surface/gestures.jsx +7 -0
  155. package/target/esbuild/surface/index.css +1 -0
  156. package/target/esbuild/surface/index.jsx +1 -0
  157. package/target/esbuild/surface/interactive.jsx +1 -0
  158. package/target/esbuild/surface/list-patterns.jsx +26 -0
  159. package/target/esbuild/surface/list.css +1 -0
  160. package/target/esbuild/surface/list.jsx +9 -0
  161. package/target/esbuild/surface/menu.css +1 -0
  162. package/target/esbuild/surface/menu.jsx +12 -0
  163. package/target/esbuild/surface/scaffold.jsx +47 -0
  164. package/target/esbuild/surface/sheet.jsx +21 -0
  165. package/target/esbuild/surface/side-sheet.jsx +17 -0
  166. package/target/esbuild/surface/slots.jsx +1 -0
  167. package/target/esbuild/surface/surface.css +1 -0
  168. package/target/esbuild/surface/surface.jsx +1 -0
  169. package/target/esbuild/text/index.css +1 -0
  170. package/target/esbuild/text/index.jsx +1 -0
  171. package/target/esbuild/text/text.css +1 -0
  172. package/target/esbuild/text/text.jsx +3 -0
  173. package/target/esbuild/text/typography.css +1 -0
  174. package/target/esbuild/text/typography.jsx +1 -0
  175. package/target/esbuild/util/box-side.jsx +1 -0
  176. package/target/esbuild/util/debug.jsx +1 -0
  177. package/target/esbuild/util/dom.jsx +1 -0
  178. package/target/esbuild/util/event.jsx +1 -0
  179. package/target/esbuild/util/index.jsx +1 -0
  180. package/target/esbuild/util/preconditions.jsx +1 -0
  181. package/target/esbuild/util/reactive.jsx +1 -0
  182. package/target/tsc/action/action.css.d.ts +3 -0
  183. package/target/tsc/action/base.d.ts +211 -0
  184. package/target/tsc/action/button.d.ts +126 -0
  185. package/target/tsc/action/fab-menu-context.d.ts +16 -0
  186. package/target/tsc/action/fab-menu.d.ts +112 -0
  187. package/target/tsc/action/fab.d.ts +98 -0
  188. package/target/tsc/action/group.d.ts +166 -0
  189. package/target/tsc/action/icon-button.d.ts +79 -0
  190. package/target/tsc/action/index.d.ts +24 -0
  191. package/target/tsc/action/split-button.d.ts +78 -0
  192. package/target/tsc/color/contrast.d.ts +48 -0
  193. package/target/tsc/color/dynamic.d.ts +203 -0
  194. package/target/tsc/color/hct.d.ts +114 -0
  195. package/target/tsc/color/index.css.d.ts +3 -0
  196. package/target/tsc/color/index.d.ts +23 -0
  197. package/target/tsc/color/palette.d.ts +30 -0
  198. package/target/tsc/color/scheme.d.ts +446 -0
  199. package/target/tsc/color/temperature.d.ts +24 -0
  200. package/target/tsc/container/card.css.d.ts +3 -0
  201. package/target/tsc/container/card.d.ts +110 -0
  202. package/target/tsc/container/elevation-shadow.css.d.ts +3 -0
  203. package/target/tsc/container/elevation-shadow.d.ts +23 -0
  204. package/target/tsc/container/index.d.ts +44 -0
  205. package/target/tsc/dom/client.d.ts +387 -0
  206. package/target/tsc/dom/index.d.ts +93 -0
  207. package/target/tsc/dom/server.d.ts +65 -0
  208. package/target/tsc/dom/types.d.ts +134 -0
  209. package/target/tsc/feedback/badge.d.ts +116 -0
  210. package/target/tsc/feedback/feedback.css.d.ts +3 -0
  211. package/target/tsc/feedback/focus.d.ts +20 -0
  212. package/target/tsc/feedback/index.d.ts +17 -0
  213. package/target/tsc/feedback/loading.d.ts +194 -0
  214. package/target/tsc/feedback/observe.d.ts +75 -0
  215. package/target/tsc/feedback/progress.d.ts +281 -0
  216. package/target/tsc/feedback/snackbar.d.ts +398 -0
  217. package/target/tsc/feedback/tooltip.d.ts +326 -0
  218. package/target/tsc/icon/icon.css.d.ts +3 -0
  219. package/target/tsc/icon/icon.d.ts +69 -0
  220. package/target/tsc/icon/index.d.ts +13 -0
  221. package/target/tsc/index.css.d.ts +3 -0
  222. package/target/tsc/index.d.ts +7 -0
  223. package/target/tsc/input/autocomplete.d.ts +119 -0
  224. package/target/tsc/input/base.d.ts +282 -0
  225. package/target/tsc/input/date-picker.css.d.ts +3 -0
  226. package/target/tsc/input/date-picker.d.ts +351 -0
  227. package/target/tsc/input/date-range-input.css.d.ts +3 -0
  228. package/target/tsc/input/date-time.d.ts +171 -0
  229. package/target/tsc/input/index.css.d.ts +3 -0
  230. package/target/tsc/input/index.d.ts +27 -0
  231. package/target/tsc/input/paired-input.d.ts +435 -0
  232. package/target/tsc/input/picker-dialog.css.d.ts +3 -0
  233. package/target/tsc/input/picker-dialog.d.ts +84 -0
  234. package/target/tsc/input/select.css.d.ts +3 -0
  235. package/target/tsc/input/select.d.ts +267 -0
  236. package/target/tsc/input/slider.css.d.ts +3 -0
  237. package/target/tsc/input/slider.d.ts +372 -0
  238. package/target/tsc/input/text-field.css.d.ts +3 -0
  239. package/target/tsc/input/text-field.d.ts +415 -0
  240. package/target/tsc/input/time-picker.css.d.ts +3 -0
  241. package/target/tsc/input/time-picker.d.ts +212 -0
  242. package/target/tsc/motion/frame.d.ts +36 -0
  243. package/target/tsc/motion/index.css.d.ts +3 -0
  244. package/target/tsc/motion/index.d.ts +34 -0
  245. package/target/tsc/motion/material.d.ts +110 -0
  246. package/target/tsc/motion/motion.d.ts +235 -0
  247. package/target/tsc/motion/spring.d.ts +223 -0
  248. package/target/tsc/motion/transition.css.d.ts +3 -0
  249. package/target/tsc/motion/transition.d.ts +597 -0
  250. package/target/tsc/motion/velocity.d.ts +54 -0
  251. package/target/tsc/navigation/app-bar.d.ts +473 -0
  252. package/target/tsc/navigation/base.d.ts +320 -0
  253. package/target/tsc/navigation/drawer.d.ts +301 -0
  254. package/target/tsc/navigation/index.d.ts +25 -0
  255. package/target/tsc/navigation/navigation.css.d.ts +3 -0
  256. package/target/tsc/navigation/navigation.d.ts +537 -0
  257. package/target/tsc/navigation/scroll.d.ts +218 -0
  258. package/target/tsc/navigation/search.d.ts +332 -0
  259. package/target/tsc/navigation/tabs.d.ts +497 -0
  260. package/target/tsc/navigation/toolbar.d.ts +248 -0
  261. package/target/tsc/selection/base.d.ts +100 -0
  262. package/target/tsc/selection/checkbox.d.ts +194 -0
  263. package/target/tsc/selection/chip.d.ts +358 -0
  264. package/target/tsc/selection/index.d.ts +21 -0
  265. package/target/tsc/selection/radio.d.ts +198 -0
  266. package/target/tsc/selection/segmented.d.ts +333 -0
  267. package/target/tsc/selection/selection.css.d.ts +3 -0
  268. package/target/tsc/selection/switch.d.ts +165 -0
  269. package/target/tsc/shape/corner-rounding.d.ts +36 -0
  270. package/target/tsc/shape/cubic.d.ts +215 -0
  271. package/target/tsc/shape/index.d.ts +35 -0
  272. package/target/tsc/shape/material-shapes.d.ts +176 -0
  273. package/target/tsc/shape/morph.d.ts +91 -0
  274. package/target/tsc/shape/path.d.ts +177 -0
  275. package/target/tsc/shape/point.d.ts +165 -0
  276. package/target/tsc/shape/rounded-polygon.d.ts +289 -0
  277. package/target/tsc/shape/shapes.d.ts +76 -0
  278. package/target/tsc/spacing/index.d.ts +19 -0
  279. package/target/tsc/state/component.css.d.ts +3 -0
  280. package/target/tsc/state/component.d.ts +276 -0
  281. package/target/tsc/state/controller.d.ts +257 -0
  282. package/target/tsc/state/index.d.ts +19 -0
  283. package/target/tsc/state/ripple.d.ts +50 -0
  284. package/target/tsc/state/state.d.ts +129 -0
  285. package/target/tsc/state/style.d.ts +22 -0
  286. package/target/tsc/surface/carousel-layout.d.ts +212 -0
  287. package/target/tsc/surface/carousel.css.d.ts +3 -0
  288. package/target/tsc/surface/carousel.d.ts +231 -0
  289. package/target/tsc/surface/dialog.d.ts +580 -0
  290. package/target/tsc/surface/divider.d.ts +92 -0
  291. package/target/tsc/surface/drag.d.ts +92 -0
  292. package/target/tsc/surface/gestures.css.d.ts +3 -0
  293. package/target/tsc/surface/gestures.d.ts +292 -0
  294. package/target/tsc/surface/index.css.d.ts +3 -0
  295. package/target/tsc/surface/index.d.ts +29 -0
  296. package/target/tsc/surface/interactive.d.ts +22 -0
  297. package/target/tsc/surface/list-patterns.d.ts +384 -0
  298. package/target/tsc/surface/list.css.d.ts +3 -0
  299. package/target/tsc/surface/list.d.ts +340 -0
  300. package/target/tsc/surface/menu.css.d.ts +3 -0
  301. package/target/tsc/surface/menu.d.ts +590 -0
  302. package/target/tsc/surface/scaffold.d.ts +337 -0
  303. package/target/tsc/surface/sheet.d.ts +384 -0
  304. package/target/tsc/surface/side-sheet.d.ts +183 -0
  305. package/target/tsc/surface/slots.d.ts +21 -0
  306. package/target/tsc/surface/surface.css.d.ts +3 -0
  307. package/target/tsc/surface/surface.d.ts +192 -0
  308. package/target/tsc/text/index.css.d.ts +3 -0
  309. package/target/tsc/text/index.d.ts +18 -0
  310. package/target/tsc/text/text.css.d.ts +3 -0
  311. package/target/tsc/text/text.d.ts +94 -0
  312. package/target/tsc/text/typography.css.d.ts +3 -0
  313. package/target/tsc/text/typography.d.ts +82 -0
  314. package/target/tsc/util/box-side.d.ts +76 -0
  315. package/target/tsc/util/debug.d.ts +20 -0
  316. package/target/tsc/util/dom.d.ts +35 -0
  317. package/target/tsc/util/event.d.ts +93 -0
  318. package/target/tsc/util/index.d.ts +12 -0
  319. package/target/tsc/util/preconditions.d.ts +79 -0
  320. package/target/tsc/util/reactive.d.ts +36 -0
@@ -0,0 +1,320 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { DomProps } from "..";
3
+ /**
4
+ * DOM properties shared by navigation elements.
5
+ *
6
+ * @typeParam E - native function element type
7
+ */
8
+ export type NavigationElementProps<E extends HTMLElement = HTMLElement> = DomProps<E, JSX.HTMLAttributes<E>>;
9
+ /**
10
+ * Callback invoked after a destination or tab is activated.
11
+ *
12
+ * @param value - value of the activated destination or tab
13
+ * @param event - event which activated the destination or tab
14
+ */
15
+ export type NavigationChangeHandler = (value: string, event: Event) => void;
16
+ /**
17
+ * Callback invoked when a component requests a new open or expanded state.
18
+ *
19
+ * @param open - requested state
20
+ * @param event - event which requested the state
21
+ */
22
+ export type NavigationOpenChangeHandler = (open: boolean, event: Event) => void;
23
+ /**
24
+ * Orientation of a navigation composite.
25
+ */
26
+ export type NavigationOrientation = "horizontal" | "vertical";
27
+ /**
28
+ * Tab activation behavior.
29
+ *
30
+ * | Mode | Behavior |
31
+ * | ------------- | -------------------------------------------------------------------- |
32
+ * | `"automatic"` | Moving focus to a tab, including with the arrow keys, activates it. |
33
+ * | `"manual"` | The arrow keys only move focus; Enter, Space, or a click activates. |
34
+ */
35
+ export type TabActivationMode = "automatic" | "manual";
36
+ /**
37
+ * Handlers of a {@link DismissDrag | dismiss drag}.
38
+ *
39
+ * A dismiss drag moves a surface from its open position towards its dismissed position at the
40
+ * inline start edge. The drag reports its offset as a fraction of the distance between the two
41
+ * positions, positive towards the dismissed position, relative to where the drag started.
42
+ */
43
+ export interface DismissDragHandlers {
44
+ /**
45
+ * Start a drag once a press moved horizontally beyond the touch slop.
46
+ *
47
+ * @param event - `pointerdown` event of the press
48
+ * @returns distance, in pixels, between the open and the dismissed position, or `null` to
49
+ * decline the drag
50
+ */
51
+ begin(event: PointerEvent): number | null;
52
+ /**
53
+ * Follow the pointer.
54
+ *
55
+ * @param offset - dragged fraction of the distance towards the dismissed position
56
+ */
57
+ update(offset: number): void;
58
+ /**
59
+ * Release the drag.
60
+ *
61
+ * @param offset - dragged fraction of the distance towards the dismissed position
62
+ * @param velocity - release velocity towards the dismissed position, in fractions of the
63
+ * distance per second
64
+ * @param event - event which ended the drag
65
+ */
66
+ end(offset: number, velocity: number, event: PointerEvent): void;
67
+ }
68
+ /**
69
+ * Resolve JSX slots in authored property order before the containing markup is allocated.
70
+ *
71
+ * Server rendering evaluates property getters lazily, in the order a renderer reads them. A
72
+ * component wrapper calls this before its renderer so both server and client construct slot
73
+ * content in authored order, before the component's own elements, which keeps hydration keys
74
+ * aligned and the hydrated slot nodes owned by their component.
75
+ *
76
+ * @typeParam P - component properties type
77
+ * @param props - component properties
78
+ * @param children - controller-provided children, or `undefined` to use `props.children`
79
+ * @param keys - JSX slot properties, besides `children`, to resolve
80
+ * @returns properties whose slots are cached, reactive resolved content
81
+ */
82
+ export declare function resolveNavigationSlots<P extends object>(props: P, children: JSX.Element, keys: readonly string[]): P & {
83
+ children: JSX.Element;
84
+ };
85
+ /**
86
+ * Create an element id which is unique within its document.
87
+ *
88
+ * The id is derived from Solid's owner-scoped {@link solid-js#createUniqueId | unique id}, which
89
+ * server rendering and hydration produce identically when components construct ids in the same
90
+ * order. When `value` is specified, a sanitized form of it is included for readability; it does
91
+ * **not** contribute to uniqueness, so equal values in different components still produce
92
+ * distinct ids.
93
+ *
94
+ * @param prefix - id prefix, such as `"cw-search-input"`
95
+ * @param value - optional value included in the id
96
+ * @returns unique element id
97
+ */
98
+ export declare function uniqueId(prefix: string, value?: string): string;
99
+ /**
100
+ * Resolve the selected value of a selection composite.
101
+ *
102
+ * The controlled `value` takes precedence over its `selectedValue` alias, which takes precedence
103
+ * over the initial `defaultValue`. A key which is present with an `undefined` value still takes
104
+ * precedence, since it denotes a controlled composite without a selection.
105
+ *
106
+ * @param props - composite properties
107
+ * @returns selected value, if any
108
+ *
109
+ * @remarks
110
+ * This reads properties in the caller's tracking context.
111
+ */
112
+ export declare function selectedValueOf(props: {
113
+ value?: string;
114
+ selectedValue?: string;
115
+ defaultValue?: string;
116
+ }): string | undefined;
117
+ /**
118
+ * Test whether an element is disabled.
119
+ *
120
+ * An element is disabled when it matches `:disabled`, which includes form controls within a
121
+ * disabled `fieldset`, has a `disabled` attribute, or has `aria-disabled="true"`.
122
+ *
123
+ * @param elem - element to test
124
+ * @returns `true` if, and only if, `elem` is disabled
125
+ */
126
+ export declare function isDisabledElement(elem: Element): boolean;
127
+ /**
128
+ * Test whether a control and its ancestors participate in rendered, interactive content.
129
+ *
130
+ * This reads the computed style of `element` and its ancestors. Callers performing several tests
131
+ * in one synchronous read phase pass a shared `visibility` cache so each ancestor is read at most
132
+ * once.
133
+ *
134
+ * @param element - control to test
135
+ * @param visibility - optional cache shared within one synchronous read phase
136
+ * @returns `false` if, and only if, the control or an ancestor is `hidden`, `inert`, not
137
+ * displayed, or invisible
138
+ */
139
+ export declare function isVisibleElement(element: HTMLElement, visibility?: Map<HTMLElement, boolean>): boolean;
140
+ /**
141
+ * Register a modal surface, in opening order, with its owner document.
142
+ *
143
+ * Registered layers and the document's top-layer elements form one stack, ordered by when each
144
+ * was registered or opened. {@link isTopModalLayer} uses this order to decide which surface owns
145
+ * focus containment and keyboard dismissal.
146
+ *
147
+ * Register a surface once it is connected: an element rendered from a template belongs to the
148
+ * template's document until it is inserted.
149
+ *
150
+ * @param root - modal surface in its owner document
151
+ * @returns cleanup function which releases this registration
152
+ */
153
+ export declare function registerModalLayer(root: Element): () => void;
154
+ /**
155
+ * Test whether a registered modal surface owns focus and keyboard dismissal in its document.
156
+ *
157
+ * Registered surfaces within the top layer, such as dialog-based surfaces, take precedence over
158
+ * registered in-page surfaces, such as drawers; within each group, the most recently registered
159
+ * surface owns modality. An unregistered top-layer element which can own modality takes it away
160
+ * from `root` only when it opened *after* `root` was registered. Manual and hint popovers never
161
+ * take modality away, so an open tooltip does not disable a newer drawer.
162
+ *
163
+ * @param root - previously registered modal surface
164
+ * @returns `true` if, and only if, `root` owns modality
165
+ */
166
+ export declare function isTopModalLayer(root: Element): boolean;
167
+ /**
168
+ * Test whether a value is an element, in any realm.
169
+ *
170
+ * Unlike `instanceof HTMLElement`, this also accepts elements of adopted documents and frames.
171
+ *
172
+ * @param value - value to test
173
+ * @returns `true` if, and only if, `value` is an element node
174
+ */
175
+ export declare function isElementNode(value: unknown): value is HTMLElement;
176
+ /**
177
+ * Test whether a value is an `a` element, in any realm.
178
+ *
179
+ * @param value - value to test
180
+ * @returns `true` if, and only if, `value` is an `a` element
181
+ */
182
+ export declare function isAnchorElement(value: unknown): value is HTMLAnchorElement;
183
+ /**
184
+ * Test whether a value is a `button` element, in any realm.
185
+ *
186
+ * @param value - value to test
187
+ * @returns `true` if, and only if, `value` is a `button` element
188
+ */
189
+ export declare function isButtonElement(value: unknown): value is HTMLButtonElement;
190
+ /**
191
+ * Server renderer supplier of client builds.
192
+ *
193
+ * Component definitions select their server renderer with
194
+ * `isServer ? () => renderServer : unreachableServerRender`. Bundlers fold the constant `isServer`
195
+ * and drop server-only rendering code from client builds; client components never invoke the
196
+ * supplier.
197
+ *
198
+ * @returns never
199
+ * @throws {@link Error} always
200
+ */
201
+ export declare function unreachableServerRender(): never;
202
+ /**
203
+ * Test whether a click on a link asks the browser for a native alternate activation.
204
+ *
205
+ * Secondary buttons and modifier keys open links in new tabs or windows, or download them. Such
206
+ * activations keep their native behavior and do not select the destination.
207
+ *
208
+ * @param event - click event
209
+ * @param elem - activated element
210
+ * @returns `true` if, and only if, `elem` is a link activated with a modifier or secondary button
211
+ */
212
+ export declare function isAlternateLinkActivation(event: MouseEvent, elem: Element): boolean;
213
+ /**
214
+ * Prevent keyboard activation of a disabled link.
215
+ *
216
+ * Disabled links cannot use the native `disabled` attribute; this cancels Enter and Space so the
217
+ * browser does not follow them.
218
+ *
219
+ * @param event - keyboard event dispatched to `elem`
220
+ * @param elem - element receiving the event
221
+ */
222
+ export declare function preventDisabledLinkKey(event: KeyboardEvent, elem: Element | null): void;
223
+ /**
224
+ * Resolve the window which owns a node.
225
+ *
226
+ * @param node - node, or document, to resolve the window of
227
+ * @returns owner window, or `undefined` when the node has no browsing context
228
+ */
229
+ export declare function ownerWindow(node: Node | null): (Window & typeof globalThis) | undefined;
230
+ /**
231
+ * Read the computed style of an element using its own realm.
232
+ *
233
+ * @param element - element to read the computed style of
234
+ * @returns live computed style declaration
235
+ */
236
+ export declare function computedStyleOf(element: Element): CSSStyleDeclaration;
237
+ /**
238
+ * Resolve the `MutationObserver` constructor of the realm which owns a node.
239
+ *
240
+ * @param node - node to resolve the constructor for
241
+ * @returns constructor, or `undefined` when the realm does not support mutation observers
242
+ */
243
+ export declare function mutationObserverOf(node: Node): typeof MutationObserver | undefined;
244
+ /**
245
+ * Invoke a callback once a transition of an element's property completes.
246
+ *
247
+ * The callback runs on a `transitionend` event of the element for any of `properties`. List a
248
+ * logical property together with its physical counterpart, such as `inline-size` and `width`,
249
+ * since browsers may report the transition of a logical property under either name. When the
250
+ * property does not transition, the callback runs synchronously. When a transition is expected
251
+ * but its event is not delivered, for example because the element stopped rendering, the callback
252
+ * runs after the computed transition time plus {@link TRANSITION_GRACE_MSEC}.
253
+ *
254
+ * @param elem - element whose transition is awaited
255
+ * @param properties - names of the transitioned property
256
+ * @param callback - function invoked at most once
257
+ * @returns function which cancels a pending callback
258
+ */
259
+ export declare function afterTransition(elem: HTMLElement, properties: readonly string[], callback: () => void): () => void;
260
+ /**
261
+ * Collect the enabled, focusable actions which belong directly to a toolbar.
262
+ *
263
+ * Actions within a nested toolbar belong to that toolbar. Native controls remain candidates after
264
+ * roving focus assigns them `tabindex="-1"`; a custom action with an authored negative tab index
265
+ * is excluded unless `includeControllerAssigned` is `true`.
266
+ *
267
+ * @param root - toolbar element
268
+ * @param includeControllerAssigned - include custom actions whose tab index the toolbar assigned
269
+ * @returns actions in document order
270
+ */
271
+ export declare function directActionableChildren(root: Element, includeControllerAssigned?: boolean): HTMLElement[];
272
+ /**
273
+ * Invoke callback aliases, invoking each distinct callback once.
274
+ *
275
+ * Aliases such as `onChange`, `onValueChange`, and `onSelectedChange` frequently reference the
276
+ * same function; this invokes such a function once, in the order of its first occurrence.
277
+ *
278
+ * @typeParam T - callback type
279
+ * @param callbacks - callbacks to invoke, possibly `undefined`
280
+ * @param args - arguments to invoke each callback with
281
+ */
282
+ export declare function dedupeCallbacks<T extends (...args: never[]) => void>(callbacks: readonly (T | undefined)[], ...args: Parameters<T>): void;
283
+ /**
284
+ * Decide whether a released dismiss drag settles at the dismissed position.
285
+ *
286
+ * A fling at least `velocityThreshold` fast settles in its direction. A slower release settles
287
+ * at the dismissed position if, and only if, it is beyond {@link POSITIONAL_THRESHOLD}, or at it
288
+ * while moving towards the dismissed position.
289
+ *
290
+ * @param fraction - fraction of the distance from the open position to the dismissed position
291
+ * @param velocity - release velocity towards the dismissed position, in fractions per second
292
+ * @param velocityThreshold - minimum speed of a fling, in fractions per second
293
+ * @returns `true` if, and only if, the drag settles at the dismissed position
294
+ */
295
+ export declare function isDismissedAt(fraction: number, velocity: number, velocityThreshold: number): boolean;
296
+ /**
297
+ * Horizontal drag which moves a surface towards its dismissed position at the inline start edge.
298
+ *
299
+ * The drag starts once the primary pointer moved horizontally beyond the {@link DRAG_SLOP_PX |
300
+ * touch slop}; a press which moves vertically first is left to scrolling. While dragging, the
301
+ * pointer is captured, its positions feed a {@link ../surface/drag#DragVelocity | velocity
302
+ * estimator}, and the click which would follow the release is suppressed. Elements using a
303
+ * dismiss drag set `touch-action: pan-y`, so the browser does not claim horizontal movement.
304
+ */
305
+ export declare class DismissDrag {
306
+ #private;
307
+ /**
308
+ * Construct a new dismiss drag.
309
+ *
310
+ * @param handlers - drag handlers
311
+ */
312
+ constructor(handlers: DismissDragHandlers);
313
+ /**
314
+ * Attach the drag to an element, or detach it.
315
+ *
316
+ * @param elem - element receiving the drag, or `null` to detach
317
+ */
318
+ attach(elem: HTMLElement | null): void;
319
+ }
320
+ export { deferAfterDelegatedCancellation } from "../util/event";
@@ -0,0 +1,301 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { DomComponent, FunctionElement, StyleElement } from "..";
3
+ import type { NavigationChangeHandler, NavigationElementProps, NavigationOpenChangeHandler } from "./base";
4
+ import { DomController } from "../dom/client";
5
+ import "../container/elevation-shadow.css";
6
+ import "./navigation.css";
7
+ /**
8
+ * Navigation drawer presentation.
9
+ *
10
+ * | Variant | Presentation |
11
+ * | --------------- | --------------------------------------------------------------------- |
12
+ * | `"modal"` | Slides over the content, which is covered by a scrim and made inert. |
13
+ * | `"dismissible"` | Slides in beside the content, pushing it toward the end edge. |
14
+ * | `"permanent"` | Always shown beside the content. |
15
+ */
16
+ export type NavigationDrawerVariant = "dismissible" | "modal" | "permanent";
17
+ /**
18
+ * Properties of a navigation drawer.
19
+ */
20
+ export type NavigationDrawerProps = NavigationElementProps<HTMLElement> & {
21
+ /**
22
+ * Drawer presentation.
23
+ *
24
+ * @defaultValue `"modal"`
25
+ */
26
+ variant?: NavigationDrawerVariant | undefined;
27
+ /**
28
+ * Alias for {@link NavigationDrawerProps.variant | `variant`}.
29
+ */
30
+ mode?: NavigationDrawerVariant | undefined;
31
+ /**
32
+ * Controlled open state of a modal or dismissible drawer.
33
+ *
34
+ * When this key is present, the drawer opens and closes only when this value changes;
35
+ * dismissal requests are reported through {@link NavigationDrawerProps.onOpenChange |
36
+ * `onOpenChange`}.
37
+ */
38
+ open?: boolean | undefined;
39
+ /**
40
+ * Initial open state of an uncontrolled modal or dismissible drawer.
41
+ *
42
+ * @defaultValue `false`
43
+ */
44
+ defaultOpen?: boolean | undefined;
45
+ /**
46
+ * Drawer content; `children` are used when this is omitted.
47
+ */
48
+ drawerContent?: JSX.Element;
49
+ /**
50
+ * Headline shown above the drawer content.
51
+ */
52
+ headline?: JSX.Element;
53
+ /**
54
+ * Application content beside or behind the drawer.
55
+ */
56
+ content?: JSX.Element;
57
+ /**
58
+ * Accessible name of a modal drawer's scrim, which dismisses the drawer.
59
+ *
60
+ * @defaultValue `"Close navigation menu"`
61
+ */
62
+ scrimLabel?: string | undefined;
63
+ /**
64
+ * Callback invoked when the drawer requests a new open state.
65
+ *
66
+ * @param open - requested state, `false` for a dismissal request
67
+ * @param event - event which requested the state
68
+ */
69
+ onOpenChange?: NavigationOpenChangeHandler | undefined;
70
+ /**
71
+ * Allow Escape and scrim clicks to dismiss the drawer.
72
+ *
73
+ * @defaultValue `true`
74
+ */
75
+ dismissible?: boolean | undefined;
76
+ /**
77
+ * Controlled value of the selected destination.
78
+ *
79
+ * When any of `value`, `selectedValue`, or `defaultValue` is present, the drawer coordinates
80
+ * the selection of the {@link ./navigation#NavigationDrawerItem | destinations} within it, as
81
+ * a navigation rail does; otherwise, each destination keeps its own `selected` state.
82
+ */
83
+ value?: string | undefined;
84
+ /**
85
+ * Alias for {@link NavigationDrawerProps.value | `value`}.
86
+ */
87
+ selectedValue?: string | undefined;
88
+ /**
89
+ * Initial value of the selected destination of an uncontrolled, selecting drawer.
90
+ */
91
+ defaultValue?: string | undefined;
92
+ /**
93
+ * Callback invoked after a destination of a selecting drawer is activated.
94
+ *
95
+ * Distinct callbacks run in `onChange`, `onValueChange`, `onSelectedChange` order; identical
96
+ * references run once.
97
+ */
98
+ onChange?: NavigationChangeHandler | undefined;
99
+ /**
100
+ * Alias for {@link NavigationDrawerProps.onChange | `onChange`}.
101
+ */
102
+ onValueChange?: NavigationChangeHandler | undefined;
103
+ /**
104
+ * Alias for {@link NavigationDrawerProps.onChange | `onChange`}.
105
+ */
106
+ onSelectedChange?: NavigationChangeHandler | undefined;
107
+ };
108
+ /**
109
+ * Properties of a labelled group of destinations within a navigation drawer.
110
+ */
111
+ export type NavigationDrawerSectionProps = NavigationElementProps<HTMLDivElement> & {
112
+ /**
113
+ * Section label, which names the group.
114
+ */
115
+ label?: JSX.Element;
116
+ };
117
+ /**
118
+ * Client controller of a navigation drawer.
119
+ *
120
+ * # Elements
121
+ *
122
+ * | Element | Description |
123
+ * | ---------------------------------- | ------------------------------------------------- |
124
+ * | `div.cw-NavigationDrawer` | Style element; lays out the panel and content. |
125
+ * | `nav.cw-NavigationDrawer-panel` | Function element containing the drawer content. |
126
+ * | `div.cw-NavigationDrawer-headline` | {@link NavigationDrawerProps.headline} slot. |
127
+ * | `div.cw-NavigationDrawer-items` | Drawer content, which scrolls below the headline. |
128
+ * | `button.cw-NavigationDrawer-scrim` | Scrim of a modal drawer, which dismisses it. |
129
+ * | `div.cw-NavigationDrawer-content` | {@link NavigationDrawerProps.content} slot. |
130
+ *
131
+ * The panel fills the height of the drawer, but at most the height of the viewport, and stays in
132
+ * view while the page scrolls, as the sheet of a `ModalNavigationDrawer` fills the window: drawer
133
+ * content taller than the panel scrolls below the fixed headline.
134
+ *
135
+ * # Motion
136
+ *
137
+ * A registered progress property of the root moves the panel, fades the scrim, and pushes the
138
+ * content of a dismissible drawer. Opening uses the default spatial spring and closing the fast
139
+ * effects spring, as `ModalNavigationDrawer` does; the panel is hidden once closing completes. A
140
+ * drawer reopened while closing moves back open from where its motion is.
141
+ *
142
+ * An open modal drawer follows a horizontal drag of its panel or scrim towards the start edge. On
143
+ * release, it settles open or dismissed with the positional and velocity thresholds of Compose's
144
+ * `NavigationDrawer` (half the drawer width, 400dp per second), continuing the release velocity
145
+ * with the default spatial spring.
146
+ *
147
+ * # Modality
148
+ *
149
+ * While open, a modal drawer registers itself as a {@link ./base#registerModalLayer | modal
150
+ * layer}, makes the content inert, moves focus to its first focusable element, contains Tab
151
+ * focus within the panel and scrim, and dismisses on Escape. Once it closes, focus returns to the
152
+ * element focused before it opened: the content is live as soon as the drawer closes, and the
153
+ * panel and scrim are inert while they leave, so focus and presses reach the content during the
154
+ * closing motion.
155
+ */
156
+ export declare class NavigationDrawerController extends DomController<NavigationDrawerProps> {
157
+ #private;
158
+ /**
159
+ * Construct a new drawer controller.
160
+ *
161
+ * @param props - component properties
162
+ */
163
+ constructor(props: NavigationDrawerProps);
164
+ /**
165
+ * Apply local properties to component state and styling.
166
+ *
167
+ * @see {@link ../dom/client#DomController.applyComponentProps}
168
+ */
169
+ protected applyComponentProps(): void;
170
+ /**
171
+ * Handle style element replacement before the controller reference is updated.
172
+ *
173
+ * @param curr - new style element, or `null` when absent
174
+ * @see {@link ../dom/client#DomController.onStyleElementChanged}
175
+ */
176
+ protected onStyleElementChanged(curr: StyleElement | null): void;
177
+ /**
178
+ * Handle function element replacement before the controller reference is updated.
179
+ *
180
+ * @param curr - new function element, or `null` when absent
181
+ * @see {@link ../dom/client#DomController.onFunctionElementChanged}
182
+ */
183
+ protected onFunctionElementChanged(curr: FunctionElement<NavigationDrawerProps> | null): void;
184
+ /**
185
+ * Release the modal layer, document listeners, pending motion, drag, and selection.
186
+ *
187
+ * @see {@link ../dom/client#DomController.onControllerCleanup}
188
+ */
189
+ protected onControllerCleanup(): void;
190
+ /**
191
+ * Render the component's element tree.
192
+ *
193
+ * The tree is static: presentation is applied by {@link
194
+ * NavigationDrawerController.applyComponentProps}. The headline, drawer content, and content
195
+ * slots are reactive content.
196
+ *
197
+ * @param children - nested component children, possibly an accessor
198
+ * @param funcRef - callback receiving the native function element
199
+ * @returns rendered component elements
200
+ * @see {@link ../dom/client#DomController.render}
201
+ */
202
+ protected render(children: JSX.Element, funcRef?: (element: HTMLElement) => void): JSX.Element;
203
+ }
204
+ /**
205
+ * Material navigation drawer.
206
+ *
207
+ * A navigation drawer presents destinations in a 360px panel at the start edge. A {@link
208
+ * NavigationDrawerVariant | modal} drawer slides over the application content, which it covers
209
+ * with a scrim; a dismissible drawer slides in beside the content; a permanent drawer is always
210
+ * shown. Material 3 Expressive recommends an expanded {@link ./navigation#NavigationRail |
211
+ * navigation rail} for new layouts.
212
+ *
213
+ * # States
214
+ *
215
+ * The drawer has controlled and uncontrolled open states; see {@link NavigationDrawerProps}. A
216
+ * drawer which is requested open has the `cw-NavigationDrawer-open` class; a closing drawer stays
217
+ * shown until its motion completes. A drawer with a `value`, `selectedValue`, or `defaultValue`
218
+ * coordinates the selection of its destinations.
219
+ *
220
+ * # Design
221
+ *
222
+ * The drawer is designed through the [`cw-Navigation`](./navigation.yaml) component design
223
+ * attribute (`drawer` roles), following `NavigationDrawerTokens`. Use {@link
224
+ * NavigationDrawerSection} to group destinations under a section label.
225
+ *
226
+ * # Accessibility
227
+ *
228
+ * The panel is a `nav` landmark; name it with `attr:aria-label`. See {@link
229
+ * NavigationDrawerController} for the modal focus behavior.
230
+ *
231
+ * @param props - component properties
232
+ * @returns rendered component elements
233
+ */
234
+ export declare const NavigationDrawer: DomComponent<NavigationDrawerProps>;
235
+ /**
236
+ * Modal navigation drawer, which covers the content with a scrim and dismisses on Escape.
237
+ *
238
+ * @param props - component properties
239
+ * @returns rendered component elements
240
+ * @see {@link NavigationDrawer}
241
+ */
242
+ export declare const ModalNavigationDrawer: DomComponent<NavigationDrawerProps>;
243
+ /**
244
+ * Dismissible navigation drawer, which slides in beside the content and pushes it.
245
+ *
246
+ * @param props - component properties
247
+ * @returns rendered component elements
248
+ * @see {@link NavigationDrawer}
249
+ */
250
+ export declare const DismissibleNavigationDrawer: DomComponent<NavigationDrawerProps>;
251
+ /**
252
+ * Permanent navigation drawer, which is always shown beside the content.
253
+ *
254
+ * @param props - component properties
255
+ * @returns rendered component elements
256
+ * @see {@link NavigationDrawer}
257
+ */
258
+ export declare const PermanentNavigationDrawer: DomComponent<NavigationDrawerProps>;
259
+ /**
260
+ * Client controller of a navigation drawer section.
261
+ *
262
+ * The section is a `group` named by its label, when it has one.
263
+ */
264
+ export declare class NavigationDrawerSectionController extends DomController<NavigationDrawerSectionProps> {
265
+ #private;
266
+ /**
267
+ * Construct a new section controller.
268
+ *
269
+ * @param props - component properties
270
+ */
271
+ constructor(props: NavigationDrawerSectionProps);
272
+ /**
273
+ * Apply local properties to component state and styling.
274
+ *
275
+ * @see {@link ../dom/client#DomController.applyComponentProps}
276
+ */
277
+ protected applyComponentProps(): void;
278
+ /**
279
+ * Render the component's element tree.
280
+ *
281
+ * @param children - nested component children, possibly an accessor
282
+ * @returns rendered component elements
283
+ * @see {@link ../dom/client#DomController.render}
284
+ */
285
+ protected render(children: JSX.Element): JSX.Element;
286
+ }
287
+ /**
288
+ * Labelled group of destinations within a navigation drawer.
289
+ *
290
+ * A section shows its label in the drawer's headline style and is separated from preceding drawer
291
+ * content by a divider, as the Material 3 navigation drawer anatomy specifies.
292
+ *
293
+ * # Design
294
+ *
295
+ * Sections are designed through the [`cw-Navigation`](./navigation.yaml) component design
296
+ * attribute (`drawer` headline and divider roles).
297
+ *
298
+ * @param props - component properties
299
+ * @returns rendered component elements
300
+ */
301
+ export declare const NavigationDrawerSection: DomComponent<NavigationDrawerSectionProps>;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Material 3 navigation and navigation-adjacent components.
3
+ *
4
+ * This barrel keeps the public navigation surface together while implementations are split by
5
+ * interaction family. Native links, buttons, search inputs, and landmarks are used throughout;
6
+ * composite controls implement their keyboard behavior in their respective client controllers.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import "./navigation.css";
11
+ export type { NavigationChangeHandler, NavigationElementProps, NavigationOpenChangeHandler, NavigationOrientation, TabActivationMode } from "./base";
12
+ export type { TabListProps, TabPanelProps, TabProps, TabsProps } from "./tabs";
13
+ export type { NavigationContainerProps, NavigationItemProps } from "./navigation";
14
+ export type { NavigationDrawerProps, NavigationDrawerSectionProps, NavigationDrawerVariant } from "./drawer";
15
+ export type { AppBarItemProps, AppBarLayoutProps, BottomAppBarProps, TopAppBarProps, TopAppBarScrollBehavior, TopAppBarVariant } from "./app-bar";
16
+ export type { FloatingToolbarExitDirection, FloatingToolbarItemProps, FloatingToolbarProps } from "./toolbar";
17
+ export type { SearchAppBarProps, SearchBarProps } from "./search";
18
+ export type { ScrollbarProps, ScrollFieldProps } from "./scroll";
19
+ export { LeadingIconTab, PrimaryTabRow, SecondaryTabRow, Tab, TabController, TabList, TabListController, TabPanel, TabPanelController, TabRow, Tabs, TabsController } from "./tabs";
20
+ export { NavigationBar, FlexibleNavigationBar, NavigationBarItem, NavigationController, NavigationDrawerItem, NavigationItem, NavigationItemController, NavigationRail, NavigationRailItem, ShortNavigationBar, ShortNavigationBarItem, WideNavigationRailItem, WideNavigationRail } from "./navigation";
21
+ export { DismissibleNavigationDrawer, ModalNavigationDrawer, NavigationDrawer, NavigationDrawerController, NavigationDrawerSection, NavigationDrawerSectionController, PermanentNavigationDrawer } from "./drawer";
22
+ export { AppBarColumn, AppBarItem, AppBarLayoutController, AppBarRow, BottomAppBar, BottomAppBarController, CenterAlignedTopAppBar, LargeFlexibleTopAppBar, LargeTopAppBar, MediumFlexibleTopAppBar, MediumTopAppBar, SmallTopAppBar, TopAppBar, TopAppBarController, TwoRowsTopAppBar } from "./app-bar";
23
+ export { DockedToolbar, FloatingToolbar, FloatingToolbarController, FloatingToolbarItem, HorizontalFloatingToolbar, VerticalFloatingToolbar } from "./toolbar";
24
+ export { DockedSearchBar, SearchAppBar, SearchBar, SearchBarController, SearchView } from "./search";
25
+ export { HorizontalScrollbar, Scrollbar, ScrollbarController, ScrollField, ScrollFieldController, VerticalScrollbar } from "./scroll";
@@ -0,0 +1,3 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ export {};