@m3-baseui/react-tailwind 1.2.0 → 1.4.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.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { createButton, createIconButton, createSwitch, createCheckbox, createRadio, createRadioGroup, createChip, createTooltip, createDialog, createMenu, createTabs, createSlider, createSelect, createTextField, createNavigationBar, createFab, createFabMenu, createDivider, createProgress, createLoadingIndicator, createList, createSnackbar, createItem, createBadge, createCard, createSegmentedButton, createButtonGroup, createSplitButton, createNavigationDrawer, createTopAppBar, createBottomAppBar, createNavigationRail, createBottomSheet, createSideSheet, createSearch, createDatePicker, createTimePicker, createToolbar, createCarousel } from '@m3-baseui/core';
3
- export { Ripple, ThemeProvider, applyScheme, generateScheme, schemeToCssText, useSnackbar, useTheme } from '@m3-baseui/core';
2
+ import { createButton, createIconButton, createSwitch, createCheckbox, createRadio, createRadioGroup, createChip, createTooltip, createRichTooltip, createDialog, createMenu, createTabs, createSlider, createSelect, createTextField, createNavigationBar, createFab, createFabMenu, createDivider, createProgress, createLoadingIndicator, createList, createSnackbar, createItem, createBadge, createCard, createSegmentedButton, createButtonGroup, createSplitButton, createNavigationDrawer, createTopAppBar, createBottomAppBar, createNavigationRail, createBottomSheet, createSideSheet, createSearch, createDatePicker, createTimePicker, createToolbar, createCarousel } from '@m3-baseui/core';
3
+ export { ITEM_LEADING_VARIANTS, LIST_LEADING_VARIANTS, Ripple, ThemeProvider, applyScheme, generateScheme, schemeToCssText, useSnackbar, useTheme } from '@m3-baseui/core';
4
4
  import { tv } from 'tailwind-variants';
5
5
 
6
6
  // src/button.ts
@@ -202,7 +202,10 @@ var switchTv = tv({
202
202
  "absolute top-1/2 -translate-y-1/2 left-[6px] size-4 rounded-full pointer-events-none",
203
203
  "flex items-center justify-center",
204
204
  "bg-outline text-on-surface",
205
- "transition-all duration-200 ease-standard",
205
+ // M3 spatial motion: the handle slides/grows with emphasized easing over
206
+ // 300ms (token-backed). emphasized is overshoot-free, so it stays safe for
207
+ // the handle's color transitions too (no spring flicker on background-color).
208
+ "transition-all ease-emphasized duration-[var(--md-sys-motion-duration-medium2)]",
206
209
  "data-[checked]:left-[22px] data-[checked]:size-6 data-[checked]:bg-on-primary data-[checked]:text-primary",
207
210
  // M3 with-icon: the unchecked handle grows to 24dp to fit its icon
208
211
  "data-[with-icon]:data-[unchecked]:left-1 data-[with-icon]:data-[unchecked]:size-6",
@@ -279,7 +282,12 @@ var checkboxTv = tv({
279
282
  "group-data-[error]:text-on-error",
280
283
  // M3 disabled: the check / dash turn the surface color on the faint box
281
284
  "group-data-[disabled]:text-surface",
285
+ // M3 asymmetric motion: unselected-exit accelerates out (150ms), the
286
+ // selected/indeterminate-enter decelerates in (350ms). Token-backed.
282
287
  "opacity-0 data-[checked]:opacity-100 data-[indeterminate]:opacity-100",
288
+ "transition-opacity ease-emphasized-accelerate duration-[var(--md-sys-motion-duration-short3)]",
289
+ "data-[checked]:ease-emphasized-decelerate data-[checked]:duration-[var(--md-sys-motion-duration-medium3)]",
290
+ "data-[indeterminate]:ease-emphasized-decelerate data-[indeterminate]:duration-[var(--md-sys-motion-duration-medium3)]",
283
291
  'data-[indeterminate]:after:content-[""] data-[indeterminate]:after:absolute',
284
292
  "data-[indeterminate]:after:w-[10px] data-[indeterminate]:after:h-[2px] data-[indeterminate]:after:rounded-full data-[indeterminate]:after:bg-current"
285
293
  ],
@@ -319,9 +327,14 @@ var radioTv = tv({
319
327
  "active:before:opacity-[var(--md-sys-state-pressed)]"
320
328
  ],
321
329
  indicator: [
322
- "block rounded-full bg-primary pointer-events-none",
323
- "size-0 opacity-0 transition-all duration-150 ease-standard",
324
- "data-[checked]:size-2.5 data-[checked]:opacity-100",
330
+ "block rounded-full bg-primary pointer-events-none origin-center",
331
+ // M3 inner-circle-grow: the 10dp dot scales from center with
332
+ // emphasized-decelerate over 300ms (token-backed), not width/height from 0.
333
+ // Tailwind v4's `scale-*` sets the standalone `scale` property (not
334
+ // `transform`), so the transition must name `scale` to animate the grow.
335
+ "size-2.5 scale-0 opacity-0",
336
+ "transition-[scale,opacity] ease-emphasized-decelerate duration-[var(--md-sys-motion-duration-medium2)]",
337
+ "data-[checked]:scale-100 data-[checked]:opacity-100",
325
338
  "group-data-[error]:bg-error",
326
339
  "group-data-[disabled]:bg-on-surface/38"
327
340
  ]
@@ -338,6 +351,8 @@ var chipTv = tv({
338
351
  // layer is rounded to match instead (before:rounded-[inherit]); the ripple
339
352
  // self-clips.
340
353
  "h-8 px-4 rounded-[8px] select-none border bg-transparent text-label-large",
354
+ // M3 with-icon padding: the icon side trims to 8dp (label side stays 16dp).
355
+ "data-[with-leading-icon]:pl-2",
341
356
  "transition-colors duration-150 ease-standard",
342
357
  "before:absolute before:inset-0 before:rounded-[inherit] before:bg-current before:opacity-0 before:pointer-events-none before:transition-opacity before:duration-100",
343
358
  "hover:before:opacity-[var(--md-sys-state-hover)]",
@@ -364,20 +379,36 @@ var chipTv = tv({
364
379
  "inline-flex items-center justify-center shrink-0 size-6 -ml-3 rounded-full overflow-hidden",
365
380
  "bg-primary-container text-on-primary-container",
366
381
  "[&>img]:size-full [&>img]:object-cover"
382
+ ],
383
+ // M3 leading icon: 18dp; root `data-with-leading-icon` trims leading padding to 8dp.
384
+ icon: [
385
+ "inline-flex items-center justify-center shrink-0 size-[18px]",
386
+ "[&>svg]:size-full",
387
+ "group-disabled:text-on-surface/38 group-data-[disabled]:text-on-surface/38"
367
388
  ]
368
389
  },
369
390
  variants: {
370
391
  variant: {
371
- assist: { root: "border-outline text-on-surface cursor-pointer" },
372
- suggestion: { root: "border-outline text-on-surface-variant cursor-pointer" },
373
- input: { root: "border-outline text-on-surface-variant cursor-default pr-2" },
392
+ assist: {
393
+ root: "border-outline text-on-surface cursor-pointer",
394
+ icon: "text-primary"
395
+ },
396
+ suggestion: {
397
+ root: "border-outline text-on-surface-variant cursor-pointer",
398
+ icon: "text-on-surface-variant"
399
+ },
400
+ input: {
401
+ root: "border-outline text-on-surface-variant cursor-default pr-2",
402
+ icon: "text-on-surface-variant"
403
+ },
374
404
  filter: {
375
405
  root: [
376
406
  "border-outline text-on-surface-variant cursor-pointer",
377
407
  "data-[pressed]:bg-secondary-container data-[pressed]:text-on-secondary-container data-[pressed]:border-transparent",
378
408
  // M3 disabled + selected: faint on-surface/12 container
379
409
  "data-[pressed]:data-[disabled]:bg-on-surface/12 data-[pressed]:disabled:bg-on-surface/12"
380
- ]
410
+ ],
411
+ icon: "text-on-surface-variant group-data-[pressed]:hidden"
381
412
  }
382
413
  },
383
414
  // M3 elevated: filled surface-container-low + elevation level1→level2 on hover,
@@ -398,7 +429,13 @@ var chipTv = tv({
398
429
  });
399
430
  var Chip = createChip(({ variant, elevated }) => {
400
431
  const c3 = chipTv({ variant, elevated });
401
- return { root: c3.root(), remove: c3.remove(), check: c3.check(), avatar: c3.avatar() };
432
+ return {
433
+ root: c3.root(),
434
+ remove: c3.remove(),
435
+ check: c3.check(),
436
+ avatar: c3.avatar(),
437
+ icon: c3.icon()
438
+ };
402
439
  });
403
440
  var TYPESCALE = [
404
441
  "display-large",
@@ -429,20 +466,48 @@ var tv7 = (options, config) => tv(options, {
429
466
  });
430
467
 
431
468
  // src/tooltip.ts
469
+ var transition = [
470
+ "origin-[var(--transform-origin)] transition-[opacity,transform] duration-150 ease-standard",
471
+ "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
472
+ "data-[ending-style]:opacity-0 data-[ending-style]:scale-95"
473
+ ];
432
474
  var tooltipTv = tv7({
433
475
  slots: {
434
476
  popup: [
435
477
  "bg-inverse-surface text-inverse-on-surface text-body-small",
436
478
  "rounded-extra-small px-2 py-1 max-w-[224px] select-none",
437
- "origin-[var(--transform-origin)] transition-[opacity,transform] duration-150 ease-standard",
438
- "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
439
- "data-[ending-style]:opacity-0 data-[ending-style]:scale-95"
479
+ ...transition
440
480
  ],
441
481
  arrow: ["text-inverse-surface"]
442
482
  }
443
483
  });
484
+ var richTooltipTv = tv7({
485
+ slots: {
486
+ popup: [
487
+ "bg-surface-container text-on-surface shadow-level2",
488
+ "rounded-medium px-4 py-3 max-w-[320px] flex flex-col gap-1",
489
+ "outline-none",
490
+ ...transition
491
+ ],
492
+ arrow: ["text-surface-container"],
493
+ subhead: ["text-title-small text-on-surface m-0"],
494
+ supportingText: ["text-body-medium text-on-surface-variant m-0"],
495
+ // M3 places rich-tooltip actions at the bottom-left (leading), not trailing
496
+ // like a dialog. -ml-2 pulls the text button so its label optically aligns
497
+ // with the content's left edge.
498
+ actions: ["flex flex-wrap items-center gap-2 mt-1 -ml-2"]
499
+ }
500
+ });
444
501
  var t = tooltipTv();
445
502
  var Tooltip = createTooltip({ popup: t.popup(), arrow: t.arrow() });
503
+ var r2 = richTooltipTv();
504
+ var RichTooltip = createRichTooltip({
505
+ popup: r2.popup(),
506
+ arrow: r2.arrow(),
507
+ subhead: r2.subhead(),
508
+ supportingText: r2.supportingText(),
509
+ actions: r2.actions()
510
+ });
446
511
  var dialogTv = tv7({
447
512
  slots: {
448
513
  backdrop: [
@@ -451,26 +516,61 @@ var dialogTv = tv7({
451
516
  "data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"
452
517
  ],
453
518
  popup: [
454
- "fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
455
- "w-[min(560px,calc(100vw-48px))] max-h-[calc(100vh-48px)] overflow-auto",
456
- "bg-surface-container-high text-on-surface rounded-extra-large shadow-level3",
457
- "p-6 flex flex-col gap-4",
519
+ "fixed z-50 box-border overflow-auto flex flex-col text-on-surface focus:outline-none",
458
520
  "origin-[var(--transform-origin)] transition-[opacity,transform] duration-200 ease-emphasized",
459
- "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
460
- "data-[ending-style]:opacity-0 data-[ending-style]:scale-95",
461
- "focus:outline-none"
521
+ // Icon present → center the headline + supporting text (M3 hero icon).
522
+ "has-[[data-slot=dialog-icon]]:text-center"
523
+ ],
524
+ // Fullscreen header row: leading close icon + title (grows, but shrinks +
525
+ // ellipsizes instead of pushing the trailing action off-screen) + action.
526
+ header: [
527
+ "flex items-center gap-2 px-2 h-14 shrink-0",
528
+ "[&>*:nth-child(2)]:grow [&>*:nth-child(2)]:min-w-0 [&>*:nth-child(2)]:overflow-hidden [&>*:nth-child(2)]:text-ellipsis [&>*:nth-child(2)]:whitespace-nowrap"
462
529
  ],
530
+ // Centered 24dp hero icon in the secondary color.
531
+ icon: ["inline-flex self-center text-secondary"],
463
532
  title: ["text-headline-small text-on-surface m-0"],
464
533
  description: ["text-body-medium text-on-surface-variant m-0"],
534
+ // 1dp outline-variant rule under the fullscreen header.
535
+ divider: ["h-px w-full bg-outline-variant shrink-0 m-0 border-0"],
536
+ // End-aligned action row: 8dp between buttons; the popup gap (16dp) + mt-2
537
+ // (8dp) totals the 24dp M3 spacing above the actions.
538
+ actions: ["flex justify-end items-center gap-2 mt-2"],
465
539
  close: ["inline-flex"]
540
+ },
541
+ variants: {
542
+ fullscreen: {
543
+ false: {
544
+ popup: [
545
+ "left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",
546
+ "w-[min(560px,calc(100vw-48px))] min-w-[280px] max-h-[calc(100vh-48px)]",
547
+ "p-6 gap-4 rounded-extra-large bg-surface-container-high shadow-level3",
548
+ "data-[starting-style]:opacity-0 data-[starting-style]:scale-95",
549
+ "data-[ending-style]:opacity-0 data-[ending-style]:scale-95"
550
+ ]
551
+ },
552
+ true: {
553
+ popup: [
554
+ "inset-0 w-screen h-screen max-w-none rounded-none bg-surface",
555
+ "data-[starting-style]:opacity-0 data-[ending-style]:opacity-0"
556
+ ]
557
+ }
558
+ }
559
+ },
560
+ defaultVariants: {
561
+ fullscreen: false
466
562
  }
467
563
  });
468
564
  var d = dialogTv();
469
565
  var Dialog = createDialog({
470
566
  backdrop: d.backdrop(),
471
- popup: d.popup(),
567
+ popup: ({ fullscreen }) => dialogTv({ fullscreen }).popup(),
568
+ header: d.header(),
569
+ icon: d.icon(),
472
570
  title: d.title(),
473
571
  description: d.description(),
572
+ divider: d.divider(),
573
+ actions: d.actions(),
474
574
  close: d.close()
475
575
  });
476
576
  var menuTv = tv7({
@@ -621,7 +721,7 @@ var sliderTv = tv7({
621
721
  "group-data-[disabled]:bg-on-surface/[0.38]"
622
722
  ],
623
723
  thumb: [
624
- "relative size-5 rounded-full bg-primary outline-none",
724
+ "group/thumb relative size-5 rounded-full bg-primary outline-none",
625
725
  'before:content-[""] before:absolute before:left-1/2 before:top-1/2 before:-translate-x-1/2 before:-translate-y-1/2',
626
726
  "before:size-10 before:rounded-full before:bg-primary before:opacity-0 before:transition-opacity before:duration-100",
627
727
  "hover:before:opacity-[var(--md-sys-state-hover)]",
@@ -629,7 +729,17 @@ var sliderTv = tv7({
629
729
  "data-[dragging]:before:opacity-[var(--md-sys-state-dragged)]",
630
730
  "group-data-[disabled]:bg-on-surface/[0.38]"
631
731
  ],
632
- value: "text-label-large text-on-surface-variant tabular-nums"
732
+ value: "text-label-large text-on-surface-variant tabular-nums",
733
+ tickList: "pointer-events-none absolute inset-0",
734
+ tick: [
735
+ "absolute size-1 -translate-x-1/2 -translate-y-1/2 rounded-full bg-on-surface-variant",
736
+ "data-[active]:bg-on-primary/[0.38]"
737
+ ],
738
+ valueLabel: [
739
+ "pointer-events-none absolute bottom-full left-1/2 mb-2 -translate-x-1/2 whitespace-nowrap rounded px-2 py-0.5",
740
+ "bg-primary text-label-large text-on-primary tabular-nums opacity-0",
741
+ "data-[visible]:opacity-100"
742
+ ]
633
743
  }
634
744
  });
635
745
  var s2 = sliderTv();
@@ -639,7 +749,10 @@ var Slider = createSlider({
639
749
  track: s2.track(),
640
750
  indicator: s2.indicator(),
641
751
  thumb: s2.thumb(),
642
- value: s2.value()
752
+ value: s2.value(),
753
+ tickList: s2.tickList(),
754
+ tick: s2.tick(),
755
+ valueLabel: s2.valueLabel()
643
756
  });
644
757
  var selectTv = tv7({
645
758
  slots: {
@@ -940,8 +1053,29 @@ var dividerTv = tv({
940
1053
  var Divider = createDivider(({ inset, orientation }) => dividerTv({ inset, orientation }));
941
1054
  var linearTv = tv({
942
1055
  slots: {
943
- root: "group relative block w-full h-1 overflow-hidden rounded-full",
944
- track: "absolute inset-0 bg-surface-container-highest rounded-full",
1056
+ // The track-stop dot (4dp, primary) sits at the inline-end via `after:`. It's
1057
+ // a determinate-only M3 concept, so it's hidden while indeterminate. Logical
1058
+ // `end-0` mirrors with the indicator under `dir="rtl"`.
1059
+ root: [
1060
+ "group relative block w-full h-1 overflow-hidden rounded-full",
1061
+ "after:content-[''] after:absolute after:end-0 after:top-1/2 after:-translate-y-1/2",
1062
+ "after:size-1 after:rounded-full after:bg-primary",
1063
+ // Self variant (not `group-data-*`): the dot is on the root element itself,
1064
+ // which carries `data-indeterminate` — it isn't a descendant of `.group`.
1065
+ "data-[indeterminate]:after:hidden"
1066
+ ],
1067
+ // Positioning container only; the inactive track is the `before:` pseudo so a
1068
+ // 4dp gap separates it from the active indicator (`--m3-progress` + 4px). The
1069
+ // gap uses logical inline insets so it tracks the indicator (which Base UI
1070
+ // anchors at inline-start) under `dir="rtl"`. Indeterminate has no fraction,
1071
+ // so the inactive track spans the full width.
1072
+ track: [
1073
+ "absolute inset-0",
1074
+ "before:content-[''] before:absolute before:inset-y-0 before:end-0",
1075
+ "before:[inset-inline-start:calc(var(--m3-progress,0%)+4px)]",
1076
+ "before:bg-surface-container-highest before:rounded-full",
1077
+ "group-data-[indeterminate]:before:start-0"
1078
+ ],
945
1079
  indicator: [
946
1080
  "absolute inset-y-0 left-0 bg-primary rounded-full",
947
1081
  "transition-[width] duration-200 ease-standard",
@@ -1000,7 +1134,14 @@ var listTv = tv7({
1000
1134
  "group relative flex w-full items-center gap-4 box-border px-4 text-left",
1001
1135
  "bg-transparent border-0 text-on-surface no-underline"
1002
1136
  ],
1003
- leading: "flex items-center justify-center shrink-0 text-on-surface-variant [&_svg]:size-6",
1137
+ leading: [
1138
+ "flex items-center justify-center shrink-0 overflow-hidden text-on-surface-variant",
1139
+ "[&_svg]:size-6 [&_img]:size-full [&_img]:object-cover",
1140
+ // M3 leading column widths, keyed on the factory's data-leading attribute.
1141
+ "data-[leading=avatar]:size-10 data-[leading=avatar]:rounded-full",
1142
+ "data-[leading=image]:size-14",
1143
+ "data-[leading=video]:w-25 data-[leading=video]:h-14"
1144
+ ],
1004
1145
  content: "flex flex-col min-w-0 flex-1",
1005
1146
  headline: "text-body-large text-on-surface group-data-[disabled]:text-on-surface/38",
1006
1147
  supporting: "text-body-medium text-on-surface-variant group-data-[disabled]:text-on-surface/38",
@@ -1053,10 +1194,15 @@ var snackbarTv = tv({
1053
1194
  slots: {
1054
1195
  viewport: [
1055
1196
  "fixed bottom-4 left-1/2 -translate-x-1/2 z-50",
1056
- "flex flex-col gap-2 w-[min(560px,calc(100vw-32px))]"
1197
+ // M3 container width: cap at 672dp, clamp to the viewport on small screens.
1198
+ // Center items so content-following (w-fit) snackbars stay under the anchor.
1199
+ "flex flex-col items-center gap-2 w-[calc(100vw-32px)] max-w-[672px]"
1057
1200
  ],
1058
1201
  root: [
1059
1202
  "relative flex items-center gap-2 min-h-12 box-border pl-4 pr-2 py-2",
1203
+ // M3 container width follows content within min 344dp / max 672dp. The
1204
+ // min is clamped by 100% so it never overflows a narrower viewport.
1205
+ "w-fit min-w-[min(344px,100%)] max-w-[672px]",
1060
1206
  "rounded-extra-small bg-inverse-surface text-inverse-on-surface shadow-level3",
1061
1207
  "text-body-medium",
1062
1208
  "transition-[opacity,transform] duration-200 ease-emphasized",
@@ -1102,7 +1248,14 @@ var itemTv = tv7({
1102
1248
  "relative flex w-full items-center gap-4 box-border px-4 py-3 min-h-14 text-left",
1103
1249
  "bg-transparent text-on-surface"
1104
1250
  ],
1105
- leading: "flex items-center justify-center shrink-0 text-on-surface-variant [&_svg]:size-6",
1251
+ leading: [
1252
+ "flex items-center justify-center shrink-0 overflow-hidden text-on-surface-variant",
1253
+ "[&_svg]:size-6 [&_img]:size-full [&_img]:object-cover",
1254
+ // M3 leading column widths, keyed on the factory's data-leading attribute.
1255
+ "data-[leading=avatar]:size-10 data-[leading=avatar]:rounded-full",
1256
+ "data-[leading=image]:size-14",
1257
+ "data-[leading=video]:w-25 data-[leading=video]:h-14"
1258
+ ],
1106
1259
  content: "flex flex-col min-w-0 flex-1",
1107
1260
  overline: "text-label-small text-on-surface-variant",
1108
1261
  headline: "text-body-large text-on-surface",
@@ -1826,6 +1979,6 @@ var Carousel = createCarousel((variant) => {
1826
1979
  return { root: s14.root(), item: s14.item() };
1827
1980
  });
1828
1981
 
1829
- export { Badge, BottomAppBar, BottomSheet, Button, ButtonGroup, Card, Carousel, Checkbox, Chip, DatePicker, Dialog, Divider, Fab, FabMenu, IconButton, Item, List, LoadingIndicator, Menu, NavigationBar, NavigationDrawer, NavigationRail, Progress, Radio, RadioGroup, Search, SegmentedButton, Select, SideSheet, Slider, Snackbar, SplitButton, Switch, Tabs, TextField, TimePicker, Toolbar, Tooltip, TopAppBar, badgeTv, bottomAppBarTv, bottomSheetTv, button, buttonGroup, cardTv, carouselTv, checkboxTv, chipTv, circularTv, datePickerTv, dialogTv, dividerTv, fabMenuTv, fabTv, iconButton, itemTv, linearTv, listTv, loadingIndicatorTv, menuTv, navigationBarTv, navigationDrawerTv, navigationRailTv, radioTv, searchTv, segmentedButtonTv, selectTv, sideSheetTv, sliderTv, snackbarTv, splitButtonTv, switchTv, tabsTv, textFieldTv, timePickerTv, toolbarTv, tooltipTv, topAppBarTv };
1982
+ export { Badge, BottomAppBar, BottomSheet, Button, ButtonGroup, Card, Carousel, Checkbox, Chip, DatePicker, Dialog, Divider, Fab, FabMenu, IconButton, Item, List, LoadingIndicator, Menu, NavigationBar, NavigationDrawer, NavigationRail, Progress, Radio, RadioGroup, RichTooltip, Search, SegmentedButton, Select, SideSheet, Slider, Snackbar, SplitButton, Switch, Tabs, TextField, TimePicker, Toolbar, Tooltip, TopAppBar, badgeTv, bottomAppBarTv, bottomSheetTv, button, buttonGroup, cardTv, carouselTv, checkboxTv, chipTv, circularTv, datePickerTv, dialogTv, dividerTv, fabMenuTv, fabTv, iconButton, itemTv, linearTv, listTv, loadingIndicatorTv, menuTv, navigationBarTv, navigationDrawerTv, navigationRailTv, radioTv, richTooltipTv, searchTv, segmentedButtonTv, selectTv, sideSheetTv, sliderTv, snackbarTv, splitButtonTv, switchTv, tabsTv, textFieldTv, timePickerTv, toolbarTv, tooltipTv, topAppBarTv };
1830
1983
  //# sourceMappingURL=index.js.map
1831
1984
  //# sourceMappingURL=index.js.map