@bug-on/m3-expressive 1.3.0 → 1.3.2
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/CHANGELOG.md +15 -0
- package/README.md +88 -60
- package/dist/buttons.d.mts +3 -3
- package/dist/buttons.d.ts +3 -3
- package/dist/buttons.js +185 -40
- package/dist/buttons.js.map +1 -1
- package/dist/buttons.mjs +186 -41
- package/dist/buttons.mjs.map +1 -1
- package/dist/{core-CAU8g2HY.d.mts → core-D8FdHY6I.d.mts} +1 -1
- package/dist/{core-DRrLnsnJ.d.ts → core-DyEy8H9Z.d.ts} +1 -1
- package/dist/core.d.mts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +156 -25
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +157 -26
- package/dist/core.mjs.map +1 -1
- package/dist/feedback.d.mts +20 -0
- package/dist/feedback.d.ts +20 -0
- package/dist/feedback.js +157 -26
- package/dist/feedback.js.map +1 -1
- package/dist/feedback.mjs +158 -27
- package/dist/feedback.mjs.map +1 -1
- package/dist/forms.d.mts +4 -2
- package/dist/forms.d.ts +4 -2
- package/dist/forms.js +5065 -2980
- package/dist/forms.js.map +1 -1
- package/dist/forms.mjs +5064 -2982
- package/dist/forms.mjs.map +1 -1
- package/dist/{icon-button-USJo7AqO.d.mts → icon-button-CxyJv7UV.d.mts} +1 -1
- package/dist/{icon-button-CqdQBsRe.d.ts → icon-button-Di8VX6ou.d.ts} +1 -1
- package/dist/index.d.mts +12 -82
- package/dist/index.d.ts +12 -82
- package/dist/index.js +2875 -1226
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2723 -1086
- package/dist/index.mjs.map +1 -1
- package/dist/layout.d.mts +481 -33
- package/dist/layout.d.ts +481 -33
- package/dist/layout.js +1653 -243
- package/dist/layout.js.map +1 -1
- package/dist/layout.mjs +1626 -232
- package/dist/layout.mjs.map +1 -1
- package/dist/{md3-D0_Z7IXj.d.mts → md3-BQhRygSi.d.mts} +1 -1
- package/dist/{md3-D0_Z7IXj.d.ts → md3-BQhRygSi.d.ts} +1 -1
- package/dist/menu-types-rZNQFO7Y.d.mts +315 -0
- package/dist/menu-types-rZNQFO7Y.d.ts +315 -0
- package/dist/navigation.d.mts +5 -289
- package/dist/navigation.d.ts +5 -289
- package/dist/navigation.js +575 -271
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +568 -265
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlays.d.mts +2 -2
- package/dist/overlays.d.ts +2 -2
- package/dist/overlays.js +156 -25
- package/dist/overlays.js.map +1 -1
- package/dist/overlays.mjs +157 -26
- package/dist/overlays.mjs.map +1 -1
- package/dist/pickers.js +156 -25
- package/dist/pickers.js.map +1 -1
- package/dist/pickers.mjs +157 -26
- package/dist/pickers.mjs.map +1 -1
- package/dist/{side-sheet-modal-Dgjt739k.d.mts → side-sheet-modal-64FGhDxL.d.mts} +1 -1
- package/dist/{side-sheet-modal-DdEZR6Vl.d.ts → side-sheet-modal-Bd5Qqvp9.d.ts} +1 -1
- package/dist/{split-button-trailing-uncheckable-26qlZvKT.d.mts → split-button-trailing-uncheckable-CGzk7KcG.d.ts} +3 -1
- package/dist/{split-button-trailing-uncheckable-CXUVrH64.d.ts → split-button-trailing-uncheckable-gAz6OAIi.d.mts} +3 -1
- package/dist/{text-field-DWC7qOvp.d.ts → text-field-4OlT9o8s.d.mts} +206 -55
- package/dist/{text-field-DWC7qOvp.d.mts → text-field-DARNdj14.d.ts} +206 -55
- package/package.json +3 -3
package/dist/layout.d.mts
CHANGED
|
@@ -1,35 +1,205 @@
|
|
|
1
1
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
-
import
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
3
4
|
import { HTMLMotionProps } from 'motion/react';
|
|
4
|
-
import * as React from 'react';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import { b as ScrollAreaProps } from './scroll-area-CVS6HyLl.mjs';
|
|
7
7
|
export { S as ScrollArea, a as ScrollAreaOrientation, c as ScrollAreaScrollbar, d as ScrollAreaType } from './scroll-area-CVS6HyLl.mjs';
|
|
8
|
+
import { VariantProps } from 'class-variance-authority';
|
|
8
9
|
export { D as DEFAULT_FONT_VARIATION_AXES, F as FontVariationAxes, M as MD3_EXPRESSIVE_FONT_VARIATION, T as TextStyle, a as Typography, b as TypographyContext, c as TypographyKeyTokens, d as TypographyProvider, e as TypographyProviderProps, f as TypographyTokens, g as TypographyTokensOptions, s as serializeFontVariationAxes, u as useTypography } from './typography-339RV6v7.mjs';
|
|
9
10
|
import '@radix-ui/react-scroll-area';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @file card-tokens.ts
|
|
14
|
+
*
|
|
15
|
+
* MD3 Expressive Card Elevation & Motion Tokens.
|
|
16
|
+
*
|
|
17
|
+
* Elevation levels translated from:
|
|
18
|
+
* - ElevatedCardTokens.kt
|
|
19
|
+
* - FilledCardTokens.kt
|
|
20
|
+
* - OutlinedCardTokens.kt
|
|
21
|
+
* - Elevation.kt
|
|
22
|
+
*
|
|
23
|
+
* Elevation Levels:
|
|
24
|
+
* - Level 0: 0dp (Flat - "none")
|
|
25
|
+
* - Level 1: 1dp (Slight elevation - Elevated rest)
|
|
26
|
+
* - Level 2: 3dp (Hover / Focus elevation for Elevated, Hover for Filled/Outlined)
|
|
27
|
+
* - Level 3: 6dp (Dragged state elevation)
|
|
28
|
+
* - Level 4: 8dp (Pickers/Popups elevation)
|
|
29
|
+
* - Level 5: 12dp (Modals/Dialogs elevation)
|
|
30
|
+
*/
|
|
31
|
+
declare const SHADOW: {
|
|
32
|
+
readonly level0: "none";
|
|
33
|
+
readonly level1: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
34
|
+
readonly level2: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 2px 6px 2px rgba(0,0,0,.15)";
|
|
35
|
+
readonly level3: "0px 4px 8px 3px rgba(0,0,0,.15), 0px 1px 3px 0px rgba(0,0,0,.3)";
|
|
36
|
+
readonly level4: "0px 6px 10px 4px rgba(0,0,0,.15), 0px 2px 3px 0px rgba(0,0,0,.3)";
|
|
37
|
+
readonly level5: "0px 8px 12px 6px rgba(0,0,0,.15), 0px 4px 4px 0px rgba(0,0,0,.3)";
|
|
38
|
+
};
|
|
39
|
+
type ShadowLevel = keyof typeof SHADOW;
|
|
40
|
+
type ElevationLevel = 0 | 1 | 2 | 3 | 4 | 5;
|
|
41
|
+
type CardElevationConfig = ElevationLevel | {
|
|
42
|
+
rest?: ElevationLevel | string;
|
|
43
|
+
hover?: ElevationLevel | string;
|
|
44
|
+
pressed?: ElevationLevel | string;
|
|
45
|
+
dragged?: ElevationLevel | string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Resolves a numeric level (0–5) or custom box-shadow string to an MD3 shadow value.
|
|
49
|
+
*/
|
|
50
|
+
declare function resolveElevationShadow(level: ElevationLevel | string | undefined): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Maps each card variant to its elevation level across interaction states.
|
|
53
|
+
* - Elevated: Rest (Level 1) -> Hover/Focus (Level 2) -> Pressed (Level 1) -> Dragged (Level 3)
|
|
54
|
+
* - Filled: Rest (Level 0) -> Hover/Focus (Level 1) -> Pressed (Level 0) -> Dragged (Level 3)
|
|
55
|
+
* - Outlined: Rest (Level 0) -> Hover/Focus (Level 1) -> Pressed (Level 0) -> Dragged (Level 3)
|
|
56
|
+
*/
|
|
57
|
+
declare const VARIANT_ELEVATION: {
|
|
58
|
+
readonly elevated: {
|
|
59
|
+
readonly rest: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
60
|
+
readonly hover: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 2px 6px 2px rgba(0,0,0,.15)";
|
|
61
|
+
readonly pressed: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
62
|
+
readonly dragged: "0px 4px 8px 3px rgba(0,0,0,.15), 0px 1px 3px 0px rgba(0,0,0,.3)";
|
|
63
|
+
readonly disabled: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
64
|
+
};
|
|
65
|
+
readonly filled: {
|
|
66
|
+
readonly rest: "none";
|
|
67
|
+
readonly hover: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
68
|
+
readonly pressed: "none";
|
|
69
|
+
readonly dragged: "0px 4px 8px 3px rgba(0,0,0,.15), 0px 1px 3px 0px rgba(0,0,0,.3)";
|
|
70
|
+
readonly disabled: "none";
|
|
71
|
+
};
|
|
72
|
+
readonly outlined: {
|
|
73
|
+
readonly rest: "none";
|
|
74
|
+
readonly hover: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)";
|
|
75
|
+
readonly pressed: "none";
|
|
76
|
+
readonly dragged: "0px 4px 8px 3px rgba(0,0,0,.15), 0px 1px 3px 0px rgba(0,0,0,.3)";
|
|
77
|
+
readonly disabled: "none";
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
type CardVariant = keyof typeof VARIANT_ELEVATION;
|
|
81
|
+
interface CardElevationOptions {
|
|
82
|
+
variant?: CardVariant;
|
|
83
|
+
disabled?: boolean;
|
|
84
|
+
draggable?: boolean;
|
|
85
|
+
elevation?: CardElevationConfig;
|
|
86
|
+
disableElevation?: boolean;
|
|
87
|
+
hoverEffect?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Hook: Card Elevation Animation
|
|
91
|
+
* Calculates animated boxShadow states based on variant, overrides, and interaction flags.
|
|
92
|
+
*/
|
|
93
|
+
declare function useCardElevation({ variant, disabled, draggable, elevation, disableElevation, hoverEffect, }: CardElevationOptions): {
|
|
94
|
+
animate: {
|
|
95
|
+
boxShadow: string;
|
|
96
|
+
};
|
|
97
|
+
whileHover: {
|
|
98
|
+
boxShadow: string;
|
|
99
|
+
} | undefined;
|
|
100
|
+
whileTap: {
|
|
101
|
+
boxShadow: string;
|
|
102
|
+
} | undefined;
|
|
103
|
+
whileFocus: {
|
|
104
|
+
boxShadow: string;
|
|
105
|
+
} | undefined;
|
|
106
|
+
whileDrag: {
|
|
107
|
+
boxShadow: string;
|
|
108
|
+
} | undefined;
|
|
109
|
+
transition: {
|
|
110
|
+
boxShadow: {
|
|
111
|
+
duration: number;
|
|
112
|
+
ease: [number, number, number, number];
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @file types.ts
|
|
119
|
+
*
|
|
120
|
+
* Types and interfaces for the MD3 Expressive Card system.
|
|
121
|
+
*/
|
|
122
|
+
|
|
14
123
|
type MotionDivProps = Omit<HTMLMotionProps<"button">, "children" | "color">;
|
|
15
|
-
interface CardProps extends MotionDivProps
|
|
16
|
-
/**
|
|
124
|
+
interface CardProps extends MotionDivProps {
|
|
125
|
+
/**
|
|
126
|
+
* Visual style variant of the card.
|
|
127
|
+
* - `elevated`: Surface container low + elevation drop shadow (rest: level1, hover: level2).
|
|
128
|
+
* - `filled`: Surface container highest (rest: level0, hover: level1).
|
|
129
|
+
* - `outlined`: Surface background + outline variant border (rest: level0, hover: level1).
|
|
130
|
+
* @default "elevated"
|
|
131
|
+
*/
|
|
132
|
+
variant?: CardVariant;
|
|
133
|
+
/**
|
|
134
|
+
* Custom numeric elevation level (0–5) or granular per-state elevation configuration.
|
|
135
|
+
* - Numeric: `elevation={0}` (flat/none), `elevation={2}`, etc.
|
|
136
|
+
* - Object: `elevation={{ rest: 0, hover: 2, pressed: 1, dragged: 3 }}`
|
|
137
|
+
*/
|
|
138
|
+
elevation?: CardElevationConfig;
|
|
139
|
+
/**
|
|
140
|
+
* Disables all elevation drop shadows completely (forces Level 0 / "none").
|
|
141
|
+
* @default false
|
|
142
|
+
*/
|
|
143
|
+
disableElevation?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Controls whether the ripple effect is enabled on interactive cards.
|
|
146
|
+
* @default true (on interactive cards)
|
|
147
|
+
*/
|
|
148
|
+
ripple?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Shorthand flag to disable the ripple effect.
|
|
151
|
+
* @default false
|
|
152
|
+
*/
|
|
153
|
+
disableRipple?: boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Controls whether hover elevates the card.
|
|
156
|
+
* Set to `false` to disable hover elevation changes while keeping interactivity.
|
|
157
|
+
* @default true
|
|
158
|
+
*/
|
|
159
|
+
hoverEffect?: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Shorthand flag to disable hover elevation changes.
|
|
162
|
+
* @default false
|
|
163
|
+
*/
|
|
164
|
+
disableHoverEffect?: boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Controls whether MD3 interactive state layer overlays (hover/focus/active) are shown.
|
|
167
|
+
* @default true
|
|
168
|
+
*/
|
|
169
|
+
stateLayer?: boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Shorthand flag to disable the state layer overlay.
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
disableStateLayer?: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* Disables interaction and reduces opacity to 38% (MD3 disabled specification).
|
|
177
|
+
* @default false
|
|
178
|
+
*/
|
|
17
179
|
disabled?: boolean;
|
|
18
180
|
/**
|
|
19
181
|
* Forces card to be interactive even without `onClick`.
|
|
20
|
-
* Useful when card contains child interactive elements.
|
|
182
|
+
* Useful when card contains child interactive elements or is selectable.
|
|
183
|
+
* @default false
|
|
21
184
|
*/
|
|
22
185
|
interactive?: boolean;
|
|
23
186
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
187
|
+
* Opts in to MD3 drag state elevation and interaction layer.
|
|
188
|
+
* When true, animates to Level 3 elevation on drag.
|
|
189
|
+
* @default false
|
|
190
|
+
*/
|
|
191
|
+
draggable?: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* If provided, renders card as an `<a>` element. Automatically enables interactive mode.
|
|
194
|
+
* Prefer `href` over `onClick` for navigation.
|
|
26
195
|
*/
|
|
27
196
|
href?: string;
|
|
28
197
|
/** Target for `<a>` element (effective only when `href` is provided). */
|
|
29
|
-
target?: React.AnchorHTMLAttributes<HTMLAnchorElement>["target"];
|
|
198
|
+
target?: React$1.AnchorHTMLAttributes<HTMLAnchorElement>["target"];
|
|
30
199
|
/** rel for `<a>` element (automatically adds `noreferrer` when `target="_blank"`). */
|
|
31
200
|
rel?: string;
|
|
32
|
-
children
|
|
201
|
+
/** Card inner children. */
|
|
202
|
+
children?: React$1.ReactNode;
|
|
33
203
|
/**
|
|
34
204
|
* Change the component to the underlying child element and merge props/behavior.
|
|
35
205
|
* Useful when wrapping in Next.js `<Link>` or custom anchor tags.
|
|
@@ -37,7 +207,285 @@ interface CardProps extends MotionDivProps, VariantProps<typeof cardVariants> {
|
|
|
37
207
|
*/
|
|
38
208
|
asChild?: boolean;
|
|
39
209
|
}
|
|
40
|
-
|
|
210
|
+
interface CardHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
211
|
+
/** Leading avatar or icon node. */
|
|
212
|
+
avatar?: React$1.ReactNode;
|
|
213
|
+
/** Primary title text or element. */
|
|
214
|
+
title?: React$1.ReactNode;
|
|
215
|
+
/** Subheader or supporting text below the title. */
|
|
216
|
+
subheader?: React$1.ReactNode;
|
|
217
|
+
/** Trailing action element (e.g., IconButton for overflow menu). */
|
|
218
|
+
action?: React$1.ReactNode;
|
|
219
|
+
}
|
|
220
|
+
interface CardMediaProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
221
|
+
/** Image or media source URL. */
|
|
222
|
+
src?: string;
|
|
223
|
+
/** Alternative text for screen readers. */
|
|
224
|
+
alt?: string;
|
|
225
|
+
/**
|
|
226
|
+
* Aspect ratio for the media container.
|
|
227
|
+
* - `video`: 16/9
|
|
228
|
+
* - `square`: 1/1
|
|
229
|
+
* - `wide`: 21/9
|
|
230
|
+
* - `auto`: natural dimensions
|
|
231
|
+
* @default "video"
|
|
232
|
+
*/
|
|
233
|
+
aspectRatio?: "video" | "square" | "wide" | "auto" | string;
|
|
234
|
+
/**
|
|
235
|
+
* Custom element or component override (e.g. `img`, `video`, `div`, Next.js `Image`).
|
|
236
|
+
* @default "div" (or "img" when src is provided without children)
|
|
237
|
+
*/
|
|
238
|
+
component?: React$1.ElementType;
|
|
239
|
+
}
|
|
240
|
+
interface CardContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
241
|
+
/** Additional CSS classes for custom padding or layout. */
|
|
242
|
+
className?: string;
|
|
243
|
+
}
|
|
244
|
+
interface CardFooterProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
245
|
+
/**
|
|
246
|
+
* Alignment of actions within the footer.
|
|
247
|
+
* @default "end"
|
|
248
|
+
*/
|
|
249
|
+
align?: "start" | "center" | "end" | "between";
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
declare const cardVariants: (props?: ({
|
|
253
|
+
variant?: "outlined" | "elevated" | "filled" | null | undefined;
|
|
254
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
255
|
+
declare const Card: React$1.NamedExoticComponent<Omit<CardProps, "ref"> & React$1.RefAttributes<HTMLElement>>;
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @file card-sub-components.tsx
|
|
259
|
+
*
|
|
260
|
+
* Sub-components for MD3 Expressive Card layout anatomy:
|
|
261
|
+
* - CardHeader: Avatar / Icon + Title + Subtitle + Action slot
|
|
262
|
+
* - CardMedia: Responsive media region (image/video) with aspect ratio control
|
|
263
|
+
* - CardContent: Main body text & descriptive content area
|
|
264
|
+
* - CardFooter: Action buttons row with flexible alignment
|
|
265
|
+
*
|
|
266
|
+
* @see https://m3.material.io/components/cards/guidelines#anatomy
|
|
267
|
+
*/
|
|
268
|
+
|
|
269
|
+
declare const CardHeader: React$1.ForwardRefExoticComponent<CardHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
270
|
+
declare const CardMedia: React$1.ForwardRefExoticComponent<CardMediaProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
271
|
+
declare const CardContent: React$1.ForwardRefExoticComponent<CardContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
272
|
+
declare const CardFooter: React$1.ForwardRefExoticComponent<CardFooterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* @file carousel.types.ts
|
|
276
|
+
* MD3 Expressive Carousel — TypeScript prop definitions and keyline types.
|
|
277
|
+
* Spec: https://m3.material.io/components/carousel/specs
|
|
278
|
+
* Accessibility: https://m3.material.io/components/carousel/accessibility
|
|
279
|
+
* Jetpack Compose Reference: docs/m3/carousel/HorizontalMultiBrowseCarousel.md
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Material Design 3 Carousel layout variants.
|
|
284
|
+
* - `multi-browse`: Displays Large, Medium, and Small items simultaneously with dynamic sizing.
|
|
285
|
+
* - `uncontained`: Fixed width items bleeding off container edge.
|
|
286
|
+
* - `uncontained-multi-aspect`: Uncontained with variable aspect ratios (9:16 to 16:9).
|
|
287
|
+
* - `hero`: Single primary Large item with Small preview item. Single-item snap.
|
|
288
|
+
* - `center-aligned-hero`: Centered Large item with Small previews on leading & trailing edges.
|
|
289
|
+
* - `full-screen`: Vertical edge-to-edge carousel with mandatory snap.
|
|
290
|
+
*/
|
|
291
|
+
type CarouselLayout = "multi-browse" | "uncontained" | "uncontained-multi-aspect" | "hero" | "center-aligned-hero" | "full-screen";
|
|
292
|
+
type KeylineType = "small" | "medium" | "large";
|
|
293
|
+
interface CarouselKeyline {
|
|
294
|
+
/** Calculated item width in px */
|
|
295
|
+
width: number;
|
|
296
|
+
/** Offset from container start in px */
|
|
297
|
+
offset: number;
|
|
298
|
+
/** Role of this keyline position */
|
|
299
|
+
type: KeylineType;
|
|
300
|
+
/** Cutoff/mask clip percentage [0..1] */
|
|
301
|
+
maskClip: number;
|
|
302
|
+
}
|
|
303
|
+
interface CarouselKeylineResult {
|
|
304
|
+
/** Width of large carousel items (px) */
|
|
305
|
+
largeWidth: number;
|
|
306
|
+
/** Width of medium carousel items (px) */
|
|
307
|
+
mediumWidth: number;
|
|
308
|
+
/** Width of small preview items (px, clamped 40..56) */
|
|
309
|
+
smallWidth: number;
|
|
310
|
+
/** Array of calculated keylines */
|
|
311
|
+
keylines: CarouselKeyline[];
|
|
312
|
+
/** Calculated snap positions (px scrollLeft values) */
|
|
313
|
+
snapPositions: number[];
|
|
314
|
+
/** Pre-calculated maximum accumulated shift in pixels */
|
|
315
|
+
maxAccumulatedShift: number;
|
|
316
|
+
}
|
|
317
|
+
interface CarouselProps<T = unknown> extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
318
|
+
/** RSC Mode: Pass direct React Nodes (Supports Next.js <Image />) */
|
|
319
|
+
children?: ReactNode;
|
|
320
|
+
/** CSR Mode: Data source array */
|
|
321
|
+
items?: T[];
|
|
322
|
+
/** CSR Mode: Render callback for item rendering */
|
|
323
|
+
renderItem?: (item: T, index: number) => ReactNode;
|
|
324
|
+
/** Material Design 3 Layout Variant (Default: 'multi-browse') */
|
|
325
|
+
layout?: CarouselLayout;
|
|
326
|
+
/** Preferred width for large items in px */
|
|
327
|
+
preferredItemWidth?: number;
|
|
328
|
+
/** Gap between adjacent items in px (Default: 8) */
|
|
329
|
+
itemSpacing?: number;
|
|
330
|
+
/** Leading/Trailing padding in px (Default: 16) */
|
|
331
|
+
contentPadding?: number;
|
|
332
|
+
/** Top/Bottom padding in px (Default: 8) */
|
|
333
|
+
verticalPadding?: number;
|
|
334
|
+
/** Controlled state for expanded Grid view */
|
|
335
|
+
isExpanded?: boolean;
|
|
336
|
+
/** Callback fired when 'Show all' is clicked */
|
|
337
|
+
onShowAllClick?: () => void;
|
|
338
|
+
/** Label text for 'Show all' button (Default: 'Show all') */
|
|
339
|
+
showAllLabel?: string;
|
|
340
|
+
/** Disable user touch/scroll gestures (Default: true) */
|
|
341
|
+
userScrollEnabled?: boolean;
|
|
342
|
+
/** Custom accessible label for carousel container */
|
|
343
|
+
"aria-label"?: string;
|
|
344
|
+
}
|
|
345
|
+
/** Context passed to individual item scope renderers */
|
|
346
|
+
interface CarouselItemScope {
|
|
347
|
+
index: number;
|
|
348
|
+
totalItems: number;
|
|
349
|
+
isFocused: boolean;
|
|
350
|
+
isSelected: boolean;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
declare function Carousel<T = unknown>({ children, items, renderItem, layout, preferredItemWidth, itemSpacing, contentPadding, verticalPadding, isExpanded: controlledExpanded, onShowAllClick, showAllLabel, userScrollEnabled, className, style, ...props }: CarouselProps<T>): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* @file carousel.tokens.ts
|
|
357
|
+
* MD3 Expressive Carousel — Design tokens ported from Material 3 Carousel Specs.
|
|
358
|
+
* All dimensional values are in px (dp equivalents for web).
|
|
359
|
+
* Colors reference CSS custom properties — no hardcoded hex.
|
|
360
|
+
* @see docs/m3/carousel/Carousel_Specs_Material_Design_3.md
|
|
361
|
+
*/
|
|
362
|
+
declare const CarouselTokens: {
|
|
363
|
+
/** Corner radius shape (M3 extraLarge shape: 28dp) */
|
|
364
|
+
readonly containerRadius: 28;
|
|
365
|
+
/** Small item dimension limits (dp) */
|
|
366
|
+
readonly smallItemMin: 40;
|
|
367
|
+
readonly smallItemMax: 56;
|
|
368
|
+
/** Layout defaults (dp) */
|
|
369
|
+
readonly itemSpacing: 8;
|
|
370
|
+
readonly contentPadding: 16;
|
|
371
|
+
readonly verticalPadding: 8;
|
|
372
|
+
/** Interactive state overlays */
|
|
373
|
+
readonly hoverOpacity: 0.08;
|
|
374
|
+
readonly focusOpacity: 0.1;
|
|
375
|
+
readonly pressedOpacity: 0.1;
|
|
376
|
+
readonly disabledOpacity: 0.38;
|
|
377
|
+
/** Focus indicator dimensions */
|
|
378
|
+
readonly focusThickness: 3;
|
|
379
|
+
readonly focusOffset: 2;
|
|
380
|
+
/** Touch target minimum size for accessibility (WCAG 2.1 AAA / M3) */
|
|
381
|
+
readonly minTouchTargetSize: 48;
|
|
382
|
+
/** CSS Custom Property token maps for fallback and runtime injection */
|
|
383
|
+
readonly cssVars: {
|
|
384
|
+
readonly shape: "--carousel-item-shape";
|
|
385
|
+
readonly spacing: "--carousel-item-spacing";
|
|
386
|
+
readonly contentPadding: "--carousel-content-padding";
|
|
387
|
+
readonly verticalPadding: "--carousel-vertical-padding";
|
|
388
|
+
readonly smallMin: "--carousel-small-item-min";
|
|
389
|
+
readonly smallMax: "--carousel-small-item-max";
|
|
390
|
+
readonly hoverOpacity: "--carousel-hover-opacity";
|
|
391
|
+
readonly focusThickness: "--carousel-focus-thickness";
|
|
392
|
+
readonly focusOffset: "--carousel-focus-offset";
|
|
393
|
+
readonly pressedOpacity: "--carousel-pressed-opacity";
|
|
394
|
+
readonly disabledOpacity: "--carousel-disabled-opacity";
|
|
395
|
+
};
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
interface CarouselGridProps<T = unknown> extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
399
|
+
children?: React$1.ReactNode;
|
|
400
|
+
items?: T[];
|
|
401
|
+
renderItem?: (item: T, index: number) => React$1.ReactNode;
|
|
402
|
+
preferredItemWidth?: number;
|
|
403
|
+
}
|
|
404
|
+
declare function CarouselGrid<T = unknown>({ children, items, renderItem, preferredItemWidth, className, style, ...props }: CarouselGridProps<T>): react_jsx_runtime.JSX.Element;
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* @file carousel-item.tsx
|
|
408
|
+
* Single Carousel slide wrapper supporting ARIA roles, dynamic clip-path masks,
|
|
409
|
+
* inner parallax content translation, and MD3 touch ripples.
|
|
410
|
+
*
|
|
411
|
+
* @see docs/m3/carousel/Carousel_Specs_Material_Design_3.md
|
|
412
|
+
* @see docs/m3/carousel/Carousel_Accessibility_Material_Design_3.md
|
|
413
|
+
*/
|
|
414
|
+
|
|
415
|
+
interface CarouselItemProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
416
|
+
index: number;
|
|
417
|
+
totalItems: number;
|
|
418
|
+
layout?: CarouselLayout;
|
|
419
|
+
width?: number;
|
|
420
|
+
minContentWidth?: number;
|
|
421
|
+
maskClipPercent?: number;
|
|
422
|
+
parallaxOffset?: number;
|
|
423
|
+
isFocused?: boolean;
|
|
424
|
+
isScrolling?: boolean;
|
|
425
|
+
disabled?: boolean;
|
|
426
|
+
children: React$1.ReactNode;
|
|
427
|
+
}
|
|
428
|
+
declare const CarouselItem: React$1.ForwardRefExoticComponent<CarouselItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
429
|
+
|
|
430
|
+
interface CarouselScrollClientProps<T = unknown> extends CarouselProps<T> {
|
|
431
|
+
totalItemsCount: number;
|
|
432
|
+
}
|
|
433
|
+
declare function CarouselScrollClient<T = unknown>({ children, items, renderItem, layout, preferredItemWidth, itemSpacing, contentPadding, verticalPadding, userScrollEnabled, totalItemsCount, className, style, ...props }: CarouselScrollClientProps<T>): react_jsx_runtime.JSX.Element;
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* @file useCarouselA11y.ts
|
|
437
|
+
* Custom hook providing WCAG 2.1 AA compliant keyboard navigation and ARIA attribute mapping.
|
|
438
|
+
*
|
|
439
|
+
* Navigation rules per Material Design 3 Specs:
|
|
440
|
+
* - Tab: Initial focus on first item (index 0).
|
|
441
|
+
* - ArrowLeft / ArrowRight: Moves focus to previous or next item and scrolls it into view.
|
|
442
|
+
* - ArrowUp / ArrowDown: Exits carousel navigation to move focus to adjacent page elements.
|
|
443
|
+
* - Space / Enter: Activates the currently focused carousel item.
|
|
444
|
+
*
|
|
445
|
+
* @see docs/m3/carousel/Carousel_Accessibility_Material_Design_3.md
|
|
446
|
+
*/
|
|
447
|
+
interface UseCarouselA11yOptions {
|
|
448
|
+
totalItems: number;
|
|
449
|
+
onItemSelect?: (index: number) => void;
|
|
450
|
+
onExitNavigation?: () => void;
|
|
451
|
+
scrollToIndex?: (index: number) => void;
|
|
452
|
+
}
|
|
453
|
+
declare function useCarouselA11y({ totalItems, onItemSelect, onExitNavigation, scrollToIndex, }: UseCarouselA11yOptions): {
|
|
454
|
+
focusedIndex: number;
|
|
455
|
+
setFocusedIndex: React$1.Dispatch<React$1.SetStateAction<number>>;
|
|
456
|
+
handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
457
|
+
getItemA11yProps: (index: number, customLabel?: string) => {
|
|
458
|
+
role: "group";
|
|
459
|
+
"aria-roledescription": string;
|
|
460
|
+
"aria-label": string;
|
|
461
|
+
tabIndex: number;
|
|
462
|
+
onFocus: () => void;
|
|
463
|
+
};
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* @file useCarouselKeylines.ts
|
|
468
|
+
* Custom hook calculating M3 Carousel keyline matrices, item widths,
|
|
469
|
+
* snap positions, dynamic clip-path mask percentages, and parallax offsets.
|
|
470
|
+
*
|
|
471
|
+
* Specification: Material Design 3 Carousel Specs
|
|
472
|
+
* @see docs/m3/carousel/Carousel_Specs_Material_Design_3.md
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
interface UseCarouselKeylinesOptions {
|
|
476
|
+
containerWidth: number;
|
|
477
|
+
preferredItemWidth?: number;
|
|
478
|
+
layout?: CarouselLayout;
|
|
479
|
+
itemSpacing?: number;
|
|
480
|
+
contentPadding?: number;
|
|
481
|
+
totalItems: number;
|
|
482
|
+
scrollX?: number;
|
|
483
|
+
}
|
|
484
|
+
declare function useCarouselKeylines({ containerWidth, preferredItemWidth, layout, itemSpacing, contentPadding, totalItems, scrollX: _scrollX, }: UseCarouselKeylinesOptions): CarouselKeylineResult & {
|
|
485
|
+
getItemMaskClip: (index: number) => number;
|
|
486
|
+
getItemParallaxOffset: (index: number) => number;
|
|
487
|
+
getItemWidth: (index: number) => number;
|
|
488
|
+
};
|
|
41
489
|
|
|
42
490
|
interface CodeBlockProps {
|
|
43
491
|
/** Raw code string to display and copy. */
|
|
@@ -87,7 +535,7 @@ declare function CodeBlock({ code, language, className, html, }: CodeBlockProps)
|
|
|
87
535
|
* @see https://m3.material.io/components/divider/overview
|
|
88
536
|
*/
|
|
89
537
|
|
|
90
|
-
type SafeHTMLDivAttrs = Omit<React.HTMLAttributes<HTMLDivElement>, "onDrag" | "onDragStart" | "onDragEnd" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop">;
|
|
538
|
+
type SafeHTMLDivAttrs = Omit<React$1.HTMLAttributes<HTMLDivElement>, "onDrag" | "onDragStart" | "onDragEnd" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop">;
|
|
91
539
|
interface DividerProps extends SafeHTMLDivAttrs {
|
|
92
540
|
/**
|
|
93
541
|
* Visual variant controlling indentation.
|
|
@@ -216,7 +664,7 @@ declare function buildWavePath(startX: number, endX: number, amplitude?: number,
|
|
|
216
664
|
*
|
|
217
665
|
* @see https://m3.material.io/components/divider/overview
|
|
218
666
|
*/
|
|
219
|
-
declare const Divider: React.NamedExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
|
|
667
|
+
declare const Divider: React$1.NamedExoticComponent<DividerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
220
668
|
|
|
221
669
|
type ListSelectionMode = "none" | "single-action" | "multi-action" | "single-select" | "multi-select";
|
|
222
670
|
type ListStyle = "standard" | "segmented";
|
|
@@ -224,7 +672,7 @@ type ListVariant = "baseline" | "expressive";
|
|
|
224
672
|
type ListItemPosition = "solo" | "leading" | "middle" | "trailing";
|
|
225
673
|
type ListItemLeadingType = "none" | "icon" | "avatar" | "image" | "video" | "checkbox" | "radio" | "custom";
|
|
226
674
|
type ListItemTrailingType = "none" | "icon" | "icon-button" | "text" | "checkbox" | "radio" | "switch" | "custom";
|
|
227
|
-
interface ListProps extends Omit<React.HTMLAttributes<HTMLUListElement>, "onChange"> {
|
|
675
|
+
interface ListProps extends Omit<React$1.HTMLAttributes<HTMLUListElement>, "onChange"> {
|
|
228
676
|
/** List variant, supports 'baseline' and 'expressive'. Default: 'baseline' */
|
|
229
677
|
variant?: ListVariant;
|
|
230
678
|
/** Display style, supports 'standard' (no gap) and 'segmented' (2px gap). Default: 'standard' */
|
|
@@ -247,20 +695,20 @@ interface ListProps extends Omit<React.HTMLAttributes<HTMLUListElement>, "onChan
|
|
|
247
695
|
outerRadius?: number;
|
|
248
696
|
/** Custom inner corner radius (for adjacent list items). Default per MD3 Expressive spec is 4px */
|
|
249
697
|
innerRadius?: number;
|
|
250
|
-
children?: React.ReactNode;
|
|
698
|
+
children?: React$1.ReactNode;
|
|
251
699
|
}
|
|
252
|
-
type SafeHTMLLIAttrs = Omit<React.HTMLAttributes<HTMLLIElement>, "onClick" | "color" | "onDrag" | "onDragStart" | "onDragEnd" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop" | "onAnimationStart" | "onAnimationEnd" | "onAnimationIteration" | "onTransitionEnd">;
|
|
700
|
+
type SafeHTMLLIAttrs = Omit<React$1.HTMLAttributes<HTMLLIElement>, "onClick" | "color" | "onDrag" | "onDragStart" | "onDragEnd" | "onDragEnter" | "onDragLeave" | "onDragOver" | "onDrop" | "onAnimationStart" | "onAnimationEnd" | "onAnimationIteration" | "onTransitionEnd">;
|
|
253
701
|
interface ListItemProps extends SafeHTMLLIAttrs {
|
|
254
702
|
/** Unique identifier value for the ListItem */
|
|
255
703
|
value: string;
|
|
256
704
|
/** Main headline title of the item */
|
|
257
|
-
headline: React.ReactNode;
|
|
705
|
+
headline: React$1.ReactNode;
|
|
258
706
|
/** Supporting text displayed below the headline */
|
|
259
|
-
supportingText?: React.ReactNode;
|
|
707
|
+
supportingText?: React$1.ReactNode;
|
|
260
708
|
/** Max lines for supporting text (1 or 2) to calculate height. Default: 1 */
|
|
261
709
|
supportingTextLines?: 1 | 2;
|
|
262
710
|
/** Small overline text displayed above the main headline */
|
|
263
|
-
overline?: React.ReactNode;
|
|
711
|
+
overline?: React$1.ReactNode;
|
|
264
712
|
/** Type of element rendered at the start of the list item */
|
|
265
713
|
leadingType?: ListItemLeadingType;
|
|
266
714
|
/** Source URL for image or video when leadingType is 'image' or 'video' */
|
|
@@ -268,13 +716,13 @@ interface ListItemProps extends SafeHTMLLIAttrs {
|
|
|
268
716
|
/** Alt text for image */
|
|
269
717
|
leadingAlt?: string;
|
|
270
718
|
/** Custom leading content (used when leadingType = 'custom') */
|
|
271
|
-
leadingContent?: React.ReactNode;
|
|
719
|
+
leadingContent?: React$1.ReactNode;
|
|
272
720
|
/** Type of element rendered at the end of the list item */
|
|
273
721
|
trailingType?: ListItemTrailingType;
|
|
274
722
|
/** Text displayed at the end of the list item */
|
|
275
723
|
trailingText?: string;
|
|
276
724
|
/** Custom content or callback for trailing element */
|
|
277
|
-
trailingContent?: React.ReactNode;
|
|
725
|
+
trailingContent?: React$1.ReactNode;
|
|
278
726
|
/** Disable interaction */
|
|
279
727
|
disabled?: boolean;
|
|
280
728
|
/** Selected state (for single-select / multi-select) */
|
|
@@ -282,7 +730,7 @@ interface ListItemProps extends SafeHTMLLIAttrs {
|
|
|
282
730
|
/** Target URL if rendering ListItem as an anchor <a> tag */
|
|
283
731
|
href?: string;
|
|
284
732
|
/** Callback when clicking on ListItem */
|
|
285
|
-
onClick?: (event: React.MouseEvent<HTMLElement>) => void;
|
|
733
|
+
onClick?: (event: React$1.MouseEvent<HTMLElement>) => void;
|
|
286
734
|
/** Force interactive mode (hover/focus overlay, ripple) even without onClick/href */
|
|
287
735
|
interactive?: boolean;
|
|
288
736
|
/** Enable drag handle icon drag restriction */
|
|
@@ -292,14 +740,14 @@ interface ListItemProps extends SafeHTMLLIAttrs {
|
|
|
292
740
|
/** Internal item index passed automatically by parent List */
|
|
293
741
|
_listIndex?: number;
|
|
294
742
|
}
|
|
295
|
-
interface ListDividerProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
743
|
+
interface ListDividerProps extends React$1.HTMLAttributes<HTMLLIElement> {
|
|
296
744
|
/** Indent start of divider */
|
|
297
745
|
inset?: boolean;
|
|
298
746
|
/** Indent style: 'icon' (56px indent), 'avatar' (72px indent), or 'custom' */
|
|
299
747
|
insetType?: "icon" | "avatar" | "custom";
|
|
300
748
|
}
|
|
301
749
|
|
|
302
|
-
declare const List: React.NamedExoticComponent<ListProps & React.RefAttributes<HTMLUListElement>>;
|
|
750
|
+
declare const List: React$1.NamedExoticComponent<ListProps & React$1.RefAttributes<HTMLUListElement>>;
|
|
303
751
|
|
|
304
752
|
interface ListContextValue {
|
|
305
753
|
selectionMode: ListSelectionMode;
|
|
@@ -312,12 +760,12 @@ interface ListContextValue {
|
|
|
312
760
|
outerRadius: number;
|
|
313
761
|
innerRadius: number;
|
|
314
762
|
}
|
|
315
|
-
declare const ListContext: React.Context<ListContextValue | null>;
|
|
763
|
+
declare const ListContext: React$1.Context<ListContextValue | null>;
|
|
316
764
|
declare const useListContext: () => ListContextValue | null;
|
|
317
765
|
|
|
318
|
-
declare const ListDivider: React.NamedExoticComponent<ListDividerProps & React.RefAttributes<HTMLLIElement>>;
|
|
766
|
+
declare const ListDivider: React$1.NamedExoticComponent<ListDividerProps & React$1.RefAttributes<HTMLLIElement>>;
|
|
319
767
|
|
|
320
|
-
declare const ListItem: React.NamedExoticComponent<ListItemProps & React.RefAttributes<HTMLLIElement>>;
|
|
768
|
+
declare const ListItem: React$1.NamedExoticComponent<ListItemProps & React$1.RefAttributes<HTMLLIElement>>;
|
|
321
769
|
|
|
322
770
|
declare const LIST_TOKENS: {
|
|
323
771
|
readonly oneLineHeight: 56;
|
|
@@ -381,11 +829,11 @@ declare function getExpressiveShape(state: "resting" | "hovered" | "focused" | "
|
|
|
381
829
|
declare const typographyVariants: (props?: ({
|
|
382
830
|
variant?: "display-lg" | "display-md" | "display-sm" | "headline-lg" | "headline-md" | "headline-sm" | "title-lg" | "title-md" | "title-sm" | "label-lg" | "label-md" | "label-sm" | "body-lg" | "body-md" | "body-sm" | null | undefined;
|
|
383
831
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
384
|
-
interface TextProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof typographyVariants> {
|
|
832
|
+
interface TextProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof typographyVariants> {
|
|
385
833
|
/**
|
|
386
834
|
* Custom HTML element tag override.
|
|
387
835
|
*/
|
|
388
|
-
as?: React.ElementType;
|
|
836
|
+
as?: React$1.ElementType;
|
|
389
837
|
/**
|
|
390
838
|
* Text color override (CSS color value or Tailwind color class).
|
|
391
839
|
*/
|
|
@@ -395,7 +843,7 @@ interface TextProps extends React.HTMLAttributes<HTMLElement>, VariantProps<type
|
|
|
395
843
|
*/
|
|
396
844
|
weight?: string | number;
|
|
397
845
|
}
|
|
398
|
-
declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>;
|
|
846
|
+
declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLElement>>;
|
|
399
847
|
|
|
400
848
|
/**
|
|
401
849
|
* A single entry in the Table of Contents.
|
|
@@ -624,4 +1072,4 @@ declare const TypeScaleTokens: {
|
|
|
624
1072
|
};
|
|
625
1073
|
type TypeScaleTokensType = typeof TypeScaleTokens;
|
|
626
1074
|
|
|
627
|
-
export { Card, type CardProps, CodeBlock, type CodeBlockProps, Divider, type DividerProps, LIST_TOKENS, List, ListContext, ListDivider, type ListDividerProps, ListItem, type ListItemLeadingType, type ListItemProps, type ListItemTrailingType, type ListProps, type ListSelectionMode, type ListStyle, type ListVariant, ScrollAreaProps, TableOfContents, type TableOfContentsProps, Text, type TextProps, type ToCItem, TypeScaleTokens, type TypeScaleTokensType, buildWavePath, getExpressiveShape, getListItemHeight, shouldTopAlign, typographyVariants, useListContext };
|
|
1075
|
+
export { Card, CardContent, type CardContentProps, type CardElevationConfig, type CardElevationOptions, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, CardMedia, type CardMediaProps, type CardProps, type CardVariant, Carousel, CarouselGrid, CarouselItem, type CarouselItemScope, type CarouselKeyline, type CarouselKeylineResult, type CarouselLayout, type CarouselProps, CarouselScrollClient, CarouselTokens, CodeBlock, type CodeBlockProps, Divider, type DividerProps, type ElevationLevel, type KeylineType, LIST_TOKENS, List, ListContext, ListDivider, type ListDividerProps, ListItem, type ListItemLeadingType, type ListItemProps, type ListItemTrailingType, type ListProps, type ListSelectionMode, type ListStyle, type ListVariant, type MotionDivProps, SHADOW, ScrollAreaProps, type ShadowLevel, TableOfContents, type TableOfContentsProps, Text, type TextProps, type ToCItem, TypeScaleTokens, type TypeScaleTokensType, VARIANT_ELEVATION, buildWavePath, cardVariants, getExpressiveShape, getListItemHeight, resolveElevationShadow, shouldTopAlign, typographyVariants, useCardElevation, useCarouselA11y, useCarouselKeylines, useListContext };
|