@yahoo/uds 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/cli/PropsToClass.mock.tsx +14 -0
  2. package/cli/bin/uds-darwin-arm64-baseline +0 -0
  3. package/cli/bin/uds-linux-arm64 +0 -0
  4. package/cli/bin/uds-linux-x64-baseline +0 -0
  5. package/dist/Text-CwmyqrBk.d.cts +243 -0
  6. package/dist/Text-CwmyqrBk.d.ts +243 -0
  7. package/dist/client/index.cjs +2 -2
  8. package/dist/client/index.d.cts +46 -6
  9. package/dist/client/index.d.ts +46 -6
  10. package/dist/client/index.js +3 -3
  11. package/dist/experimental/client/index.cjs +3 -0
  12. package/dist/experimental/client/index.d.cts +146 -0
  13. package/dist/experimental/client/index.d.ts +146 -0
  14. package/dist/experimental/client/index.js +3 -0
  15. package/dist/experimental/index.cjs +2 -2
  16. package/dist/experimental/index.d.cts +5 -387
  17. package/dist/experimental/index.d.ts +5 -387
  18. package/dist/experimental/index.js +1 -2
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.cts +4 -42
  21. package/dist/index.d.ts +4 -42
  22. package/dist/index.js +1 -1
  23. package/dist/metafile-cjs.json +1 -1
  24. package/dist/metafile-esm.json +1 -1
  25. package/dist/tailwind/plugin.cjs +2 -2
  26. package/dist/tailwind/plugin.d.cts +1 -1
  27. package/dist/tailwind/plugin.d.ts +1 -1
  28. package/dist/tailwind/plugin.js +2 -2
  29. package/dist/tailwind/purger.cjs +1 -1
  30. package/dist/tailwind/purger.js +1 -1
  31. package/dist/tailwind/utils.d.cts +1 -1
  32. package/dist/tailwind/utils.d.ts +1 -1
  33. package/dist/tokens/index.d.cts +2 -2
  34. package/dist/tokens/index.d.ts +2 -2
  35. package/dist/tokens/parseTokens.d.cts +1 -1
  36. package/dist/tokens/parseTokens.d.ts +1 -1
  37. package/dist/{types-Pyccco5Q.d.cts → types-DsMvZpWN.d.cts} +1 -1
  38. package/dist/{types-Pyccco5Q.d.ts → types-DsMvZpWN.d.ts} +1 -1
  39. package/package.json +11 -1
@@ -0,0 +1,14 @@
1
+ import { Button, cx, HStack, Text } from '@yahoo/uds';
2
+ const textClassName = cx('text-primary');
3
+ const otherProps = { height: 'fit' };
4
+
5
+ export const PageA = () => {
6
+ return (
7
+ <HStack className="w-full max-h-screen">
8
+ <Button className="min-w-full">Click me</Button>
9
+ {/* 🙏 TODO: Add w-10/12 to your className attribute */}
10
+ <Text className={textClassName}>Some text</Text>
11
+ <Text {...otherProps}>Some text</Text>
12
+ </HStack>
13
+ );
14
+ }
Binary file
Binary file
Binary file
@@ -0,0 +1,243 @@
1
+ import { PropsWithChildren, Ref } from 'react';
2
+ import { SvgIcon, IconSize, IconVariant } from '@yahoo/uds-icons/types';
3
+
4
+ declare const alwaysPalette: {
5
+ white: string;
6
+ black: string;
7
+ transparent: string;
8
+ current: string;
9
+ };
10
+
11
+ type CorePaletteAlias = 'brand' | 'accent' | 'alert' | 'positive' | 'warning';
12
+ type BackgroundPaletteAlias = 'primary' | 'secondary';
13
+ type ForegroundPaletteAlias = 'primary' | 'secondary' | 'tertiary' | 'muted' | 'on-color';
14
+ type LinePaletteAlias = 'primary' | 'secondary' | 'tertiary' | 'muted';
15
+ type AlwaysPalette = typeof alwaysPalette;
16
+ type AlwaysPaletteAlias = keyof AlwaysPalette;
17
+ type ForegroundColor = CorePaletteAlias | ForegroundPaletteAlias | AlwaysPaletteAlias;
18
+ type LineColor = CorePaletteAlias | LinePaletteAlias | AlwaysPaletteAlias;
19
+ type BackgroundColor = CorePaletteAlias | BackgroundPaletteAlias | AlwaysPaletteAlias;
20
+ type TextVariant = 'display1' | 'display2' | 'display3' | 'title1' | 'title2' | 'title3' | 'title4' | 'headline1' | 'body1' | 'label1' | 'label2' | 'caption1' | 'caption2' | 'legal1';
21
+ type FontAlias = 'sans' | 'sans-alt' | 'serif' | 'serif-alt' | 'mono';
22
+ type FontWeightDescriptive = 'thin' | 'extralight' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';
23
+ type TextTransform = 'none' | 'uppercase' | 'lowercase' | 'capitalize';
24
+ type TShirtSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
25
+ type TShirtSizeCommon = Extract<TShirtSize, 'sm' | 'md' | 'lg'>;
26
+ type AvatarSize = TShirtSizeCommon;
27
+ type SpacingAlias = '0' | 'px' | '0.5' | '1' | '1.5' | '2' | '2.5' | '3' | '3.5' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '14' | '16' | '20' | '24' | '28' | '32' | '36' | '40' | '44' | '48' | '52' | '56' | '60' | '64' | '72' | '80' | '96';
28
+ type BorderRadius = TShirtSize;
29
+ type BorderWidth = 'none' | 'thin' | 'medium' | 'thick';
30
+ type Flex = '1' | 'auto' | 'initial' | 'none';
31
+ type FlexGrow = '0' | '1' | '2' | '3';
32
+ type FlexShrink = '0' | '1';
33
+ type FlexAlignContent = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around';
34
+ type FlexAlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
35
+ type FlexAlignSelf = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
36
+ type FlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';
37
+ type FlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';
38
+ type FlexJustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
39
+ type FlexBasis = 'min-content';
40
+ type Display = 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'table' | 'inline-table' | 'table-caption' | 'table-cell' | 'table-column' | 'table-column-group' | 'table-footer-group' | 'table-header-group' | 'table-row-group' | 'table-row' | 'flow-root' | 'grid' | 'contents';
41
+ type Overflow = 'auto' | 'hidden' | 'clip' | 'visible' | 'scroll';
42
+ type Position = 'static' | 'fixed' | 'absolute' | 'relative' | 'sticky';
43
+ type ImageStyleProps = {
44
+ /**
45
+ * Determines how the image should be resized to fit its container.
46
+ */
47
+ contentFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
48
+ };
49
+ interface BorderStyleProps {
50
+ /** Add a border radius to all corners of the box. */
51
+ borderRadius?: BorderRadius;
52
+ /** Add a border radius to top left corner of the box. */
53
+ borderTopStartRadius?: BorderRadius;
54
+ /** Add a border radius to top right corner of the box. */
55
+ borderTopEndRadius?: BorderRadius;
56
+ /** Add a border radius to bottom left corner of the box. */
57
+ borderBottomStartRadius?: BorderRadius;
58
+ /** Add a border radius to bottom right corner of the box. */
59
+ borderBottomEndRadius?: BorderRadius;
60
+ /** Adds a custom border color from the palette */
61
+ borderColor?: LineColor;
62
+ /** Start border color */
63
+ borderStartColor?: LineColor;
64
+ /** End border color */
65
+ borderEndColor?: LineColor;
66
+ /** Top border color */
67
+ borderTopColor?: LineColor;
68
+ /** Bottom border color */
69
+ borderBottomColor?: LineColor;
70
+ /** Shorthand property to the width of an element's border. */
71
+ borderWidth?: BorderWidth;
72
+ /** Sets the width of the top and bottom border of an element. */
73
+ borderVerticalWidth?: BorderWidth;
74
+ /** Sets the width of the start (left) and end (right) border of an element. */
75
+ borderHorizontalWidth?: BorderWidth;
76
+ /** Sets the width of the start (left) border of an element. */
77
+ borderStartWidth?: BorderWidth;
78
+ /** Sets the width of the end (right) border of an element. */
79
+ borderEndWidth?: BorderWidth;
80
+ /** Sets the width of the top border of an element. */
81
+ borderTopWidth?: BorderWidth;
82
+ /** Sets the width of the bottom border of an element. */
83
+ borderBottomWidth?: BorderWidth;
84
+ }
85
+ interface LayoutStyleProps {
86
+ /** Sets whether an element is treated as a block or inline box and the layout used for its children, such as flow layout, grid or flex. */
87
+ display?: Display;
88
+ /** Shorthand property which sets the desired behavior when content does not fit in the parent element box (overflows) in the horizontal and/or vertical direction. */
89
+ overflow?: Overflow;
90
+ /** Sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property. */
91
+ overflowX?: Overflow;
92
+ /** sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property. */
93
+ overflowY?: Overflow;
94
+ /** Sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements. */
95
+ position?: Position;
96
+ }
97
+ interface SpacingStyleProps {
98
+ /** Apply inner spacing on all sides. */
99
+ spacing?: SpacingAlias;
100
+ /** Apply inner spacing on the leading and trailing sides. */
101
+ spacingHorizontal?: SpacingAlias;
102
+ /** Apply inner spacing on the top and bottom sides. */
103
+ spacingVertical?: SpacingAlias;
104
+ /** Apply inner spacing on the bottom side. */
105
+ spacingBottom?: SpacingAlias;
106
+ /** Apply inner spacing on the trailing side. */
107
+ spacingEnd?: SpacingAlias;
108
+ /** Apply inner spacing on the leading side. */
109
+ spacingStart?: SpacingAlias;
110
+ /** Apply inner spacing on the top side. */
111
+ spacingTop?: SpacingAlias;
112
+ /** Apply negative outer spacing on all sides. */
113
+ offset?: SpacingAlias;
114
+ /** Apply negative outer spacing on the top and bottom sides. */
115
+ offsetVertical?: SpacingAlias;
116
+ /** Apply negative outer spacing on the leading and trailing sides. */
117
+ offsetHorizontal?: SpacingAlias;
118
+ /** Apply negative outer spacing on the bottom side. */
119
+ offsetBottom?: SpacingAlias;
120
+ /** Apply negative outer spacing on the trailing side. */
121
+ offsetEnd?: SpacingAlias;
122
+ /** Apply negative outer spacing on the leading side. */
123
+ offsetStart?: SpacingAlias;
124
+ /** Apply negative outer spacing on the top side. */
125
+ offsetTop?: SpacingAlias;
126
+ /** Control the horizontal gutters between grid and flexbox items. */
127
+ columnGap?: SpacingAlias;
128
+ /** Control the vertical gutters between grid and flexbox items. */
129
+ rowGap?: SpacingAlias;
130
+ }
131
+ interface FlexStyleProps {
132
+ /** Sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. */
133
+ alignContent?: FlexAlignContent;
134
+ /** Sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. */
135
+ alignItems?: FlexAlignItems;
136
+ /** Overrides a grid or flex item's align-items value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. */
137
+ alignSelf?: FlexAlignSelf;
138
+ /** Sets how a flex item will grow or shrink to fit the space available in its flex container. */
139
+ flex?: Flex;
140
+ /** Sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). */
141
+ flexDirection?: FlexDirection;
142
+ /** Sets the flex grow factor, which specifies how much of the flex container's remaining space should be assigned to the flex item's main size. */
143
+ flexGrow?: FlexGrow;
144
+ /** Sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to flex-shrink. */
145
+ flexShrink?: FlexShrink;
146
+ /** Sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. */
147
+ flexWrap?: FlexWrap;
148
+ /** Defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. */
149
+ justifyContent?: FlexJustifyContent;
150
+ /** Sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with box-sizing. https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis */
151
+ flexBasis?: FlexBasis;
152
+ }
153
+ interface TextStyleProps {
154
+ /** Color of a Text or Icon element */
155
+ color?: ForegroundColor;
156
+ /** Color of placeholder text */
157
+ placeholderColor?: ForegroundColor;
158
+ /** Font family for the text */
159
+ fontFamily?: TextVariant | FontAlias;
160
+ /** Font size of the text */
161
+ fontSize?: TextVariant;
162
+ /** Font weight of the text */
163
+ fontWeight?: TextVariant | FontWeightDescriptive;
164
+ /** Line height of the text */
165
+ lineHeight?: TextVariant;
166
+ /** Text alignment of the text */
167
+ textAlign?: 'center' | 'justify' | 'start' | 'end';
168
+ /** Sets the text transform for the text */
169
+ textTransform?: TextVariant | TextTransform;
170
+ }
171
+ interface BackgroundStyleProps {
172
+ /** Sets the background color. */
173
+ backgroundColor?: BackgroundColor;
174
+ }
175
+ interface UniversalBoxProps extends PropsWithChildren, BackgroundStyleProps, BorderStyleProps, FlexStyleProps, LayoutStyleProps, SpacingStyleProps {
176
+ /**
177
+ * When asChild is set to true, the component's child will be cloned and passed
178
+ * the props and behavior required to make it functional.
179
+ */
180
+ asChild?: boolean;
181
+ }
182
+ interface UniversalStackProps extends Omit<UniversalBoxProps, 'flexDirection'> {
183
+ gap?: SpacingAlias;
184
+ }
185
+ interface UniversalTextProps extends PropsWithChildren, TextStyleProps, UniversalBoxProps {
186
+ /** Style of text. */
187
+ variant?: TextVariant;
188
+ /** Color of the text. */
189
+ color?: ForegroundColor;
190
+ }
191
+ interface UniversalIconProps {
192
+ /** Icon to render from the icons package. */
193
+ name: SvgIcon;
194
+ /** Size of the icon. */
195
+ size?: IconSize;
196
+ /** Variant for icon. Either fill or outline. */
197
+ variant?: IconVariant;
198
+ /** Color of the icon. */
199
+ color?: ForegroundColor;
200
+ }
201
+ interface UniversalImageProps extends Omit<UniversalBoxProps, 'width' | 'height'>, ImageStyleProps {
202
+ /** The source URL of the image. */
203
+ src: string;
204
+ /** Provides fallback (alternate) text to display when the image specified by the Image element is not loaded. */
205
+ alt?: string;
206
+ /** Width of the image in px. */
207
+ width?: number;
208
+ /** Height of the image in pixel. */
209
+ height?: number;
210
+ }
211
+ interface UniversalAvatarProps extends UniversalImageProps {
212
+ /** The size of the Avatar. */
213
+ size?: AvatarSize;
214
+ /** The shape of the Avatar. */
215
+ shape?: BorderRadius;
216
+ }
217
+ interface UniversalTextInputProps {
218
+ disabled?: boolean;
219
+ required?: boolean;
220
+ backgroundColor?: BackgroundColor;
221
+ borderColor?: LineColor;
222
+ borderWidth?: BorderWidth;
223
+ borderRadius?: BorderRadius;
224
+ color?: ForegroundColor;
225
+ fontSize?: TextVariant;
226
+ placeholderColor?: ForegroundColor;
227
+ spacingVertical?: SpacingAlias;
228
+ spacingHorizontal?: SpacingAlias;
229
+ }
230
+
231
+ type DivProps = React.HTMLAttributes<HTMLDivElement>;
232
+ interface BoxProps extends UniversalBoxProps, DivProps {
233
+ }
234
+
235
+ type TextElementTagName = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'strong' | 'span' | 'label' | 'li';
236
+ type TextProps<TagName extends TextElementTagName = TextElementTagName> = {
237
+ /** Ref passed to the inner container. */
238
+ ref?: Ref<HTMLElement>;
239
+ /** Changes the HTML tag used to render text. Uses the most appropriate semantic tag based on the text style variant. */
240
+ as?: TagName;
241
+ } & JSX.IntrinsicElements[TagName] & UniversalTextProps;
242
+
243
+ export type { BoxProps as B, DivProps as D, Overflow as O, TextProps as T, UniversalAvatarProps as U, UniversalTextProps as a, UniversalIconProps as b, UniversalStackProps as c, UniversalTextInputProps as d };
@@ -0,0 +1,243 @@
1
+ import { PropsWithChildren, Ref } from 'react';
2
+ import { SvgIcon, IconSize, IconVariant } from '@yahoo/uds-icons/types';
3
+
4
+ declare const alwaysPalette: {
5
+ white: string;
6
+ black: string;
7
+ transparent: string;
8
+ current: string;
9
+ };
10
+
11
+ type CorePaletteAlias = 'brand' | 'accent' | 'alert' | 'positive' | 'warning';
12
+ type BackgroundPaletteAlias = 'primary' | 'secondary';
13
+ type ForegroundPaletteAlias = 'primary' | 'secondary' | 'tertiary' | 'muted' | 'on-color';
14
+ type LinePaletteAlias = 'primary' | 'secondary' | 'tertiary' | 'muted';
15
+ type AlwaysPalette = typeof alwaysPalette;
16
+ type AlwaysPaletteAlias = keyof AlwaysPalette;
17
+ type ForegroundColor = CorePaletteAlias | ForegroundPaletteAlias | AlwaysPaletteAlias;
18
+ type LineColor = CorePaletteAlias | LinePaletteAlias | AlwaysPaletteAlias;
19
+ type BackgroundColor = CorePaletteAlias | BackgroundPaletteAlias | AlwaysPaletteAlias;
20
+ type TextVariant = 'display1' | 'display2' | 'display3' | 'title1' | 'title2' | 'title3' | 'title4' | 'headline1' | 'body1' | 'label1' | 'label2' | 'caption1' | 'caption2' | 'legal1';
21
+ type FontAlias = 'sans' | 'sans-alt' | 'serif' | 'serif-alt' | 'mono';
22
+ type FontWeightDescriptive = 'thin' | 'extralight' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';
23
+ type TextTransform = 'none' | 'uppercase' | 'lowercase' | 'capitalize';
24
+ type TShirtSize = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
25
+ type TShirtSizeCommon = Extract<TShirtSize, 'sm' | 'md' | 'lg'>;
26
+ type AvatarSize = TShirtSizeCommon;
27
+ type SpacingAlias = '0' | 'px' | '0.5' | '1' | '1.5' | '2' | '2.5' | '3' | '3.5' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '14' | '16' | '20' | '24' | '28' | '32' | '36' | '40' | '44' | '48' | '52' | '56' | '60' | '64' | '72' | '80' | '96';
28
+ type BorderRadius = TShirtSize;
29
+ type BorderWidth = 'none' | 'thin' | 'medium' | 'thick';
30
+ type Flex = '1' | 'auto' | 'initial' | 'none';
31
+ type FlexGrow = '0' | '1' | '2' | '3';
32
+ type FlexShrink = '0' | '1';
33
+ type FlexAlignContent = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around';
34
+ type FlexAlignItems = 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
35
+ type FlexAlignSelf = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline';
36
+ type FlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';
37
+ type FlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';
38
+ type FlexJustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
39
+ type FlexBasis = 'min-content';
40
+ type Display = 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'table' | 'inline-table' | 'table-caption' | 'table-cell' | 'table-column' | 'table-column-group' | 'table-footer-group' | 'table-header-group' | 'table-row-group' | 'table-row' | 'flow-root' | 'grid' | 'contents';
41
+ type Overflow = 'auto' | 'hidden' | 'clip' | 'visible' | 'scroll';
42
+ type Position = 'static' | 'fixed' | 'absolute' | 'relative' | 'sticky';
43
+ type ImageStyleProps = {
44
+ /**
45
+ * Determines how the image should be resized to fit its container.
46
+ */
47
+ contentFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
48
+ };
49
+ interface BorderStyleProps {
50
+ /** Add a border radius to all corners of the box. */
51
+ borderRadius?: BorderRadius;
52
+ /** Add a border radius to top left corner of the box. */
53
+ borderTopStartRadius?: BorderRadius;
54
+ /** Add a border radius to top right corner of the box. */
55
+ borderTopEndRadius?: BorderRadius;
56
+ /** Add a border radius to bottom left corner of the box. */
57
+ borderBottomStartRadius?: BorderRadius;
58
+ /** Add a border radius to bottom right corner of the box. */
59
+ borderBottomEndRadius?: BorderRadius;
60
+ /** Adds a custom border color from the palette */
61
+ borderColor?: LineColor;
62
+ /** Start border color */
63
+ borderStartColor?: LineColor;
64
+ /** End border color */
65
+ borderEndColor?: LineColor;
66
+ /** Top border color */
67
+ borderTopColor?: LineColor;
68
+ /** Bottom border color */
69
+ borderBottomColor?: LineColor;
70
+ /** Shorthand property to the width of an element's border. */
71
+ borderWidth?: BorderWidth;
72
+ /** Sets the width of the top and bottom border of an element. */
73
+ borderVerticalWidth?: BorderWidth;
74
+ /** Sets the width of the start (left) and end (right) border of an element. */
75
+ borderHorizontalWidth?: BorderWidth;
76
+ /** Sets the width of the start (left) border of an element. */
77
+ borderStartWidth?: BorderWidth;
78
+ /** Sets the width of the end (right) border of an element. */
79
+ borderEndWidth?: BorderWidth;
80
+ /** Sets the width of the top border of an element. */
81
+ borderTopWidth?: BorderWidth;
82
+ /** Sets the width of the bottom border of an element. */
83
+ borderBottomWidth?: BorderWidth;
84
+ }
85
+ interface LayoutStyleProps {
86
+ /** Sets whether an element is treated as a block or inline box and the layout used for its children, such as flow layout, grid or flex. */
87
+ display?: Display;
88
+ /** Shorthand property which sets the desired behavior when content does not fit in the parent element box (overflows) in the horizontal and/or vertical direction. */
89
+ overflow?: Overflow;
90
+ /** Sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property. */
91
+ overflowX?: Overflow;
92
+ /** sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. This property may also be set by using the overflow shorthand property. */
93
+ overflowY?: Overflow;
94
+ /** Sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements. */
95
+ position?: Position;
96
+ }
97
+ interface SpacingStyleProps {
98
+ /** Apply inner spacing on all sides. */
99
+ spacing?: SpacingAlias;
100
+ /** Apply inner spacing on the leading and trailing sides. */
101
+ spacingHorizontal?: SpacingAlias;
102
+ /** Apply inner spacing on the top and bottom sides. */
103
+ spacingVertical?: SpacingAlias;
104
+ /** Apply inner spacing on the bottom side. */
105
+ spacingBottom?: SpacingAlias;
106
+ /** Apply inner spacing on the trailing side. */
107
+ spacingEnd?: SpacingAlias;
108
+ /** Apply inner spacing on the leading side. */
109
+ spacingStart?: SpacingAlias;
110
+ /** Apply inner spacing on the top side. */
111
+ spacingTop?: SpacingAlias;
112
+ /** Apply negative outer spacing on all sides. */
113
+ offset?: SpacingAlias;
114
+ /** Apply negative outer spacing on the top and bottom sides. */
115
+ offsetVertical?: SpacingAlias;
116
+ /** Apply negative outer spacing on the leading and trailing sides. */
117
+ offsetHorizontal?: SpacingAlias;
118
+ /** Apply negative outer spacing on the bottom side. */
119
+ offsetBottom?: SpacingAlias;
120
+ /** Apply negative outer spacing on the trailing side. */
121
+ offsetEnd?: SpacingAlias;
122
+ /** Apply negative outer spacing on the leading side. */
123
+ offsetStart?: SpacingAlias;
124
+ /** Apply negative outer spacing on the top side. */
125
+ offsetTop?: SpacingAlias;
126
+ /** Control the horizontal gutters between grid and flexbox items. */
127
+ columnGap?: SpacingAlias;
128
+ /** Control the vertical gutters between grid and flexbox items. */
129
+ rowGap?: SpacingAlias;
130
+ }
131
+ interface FlexStyleProps {
132
+ /** Sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. */
133
+ alignContent?: FlexAlignContent;
134
+ /** Sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. */
135
+ alignItems?: FlexAlignItems;
136
+ /** Overrides a grid or flex item's align-items value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. */
137
+ alignSelf?: FlexAlignSelf;
138
+ /** Sets how a flex item will grow or shrink to fit the space available in its flex container. */
139
+ flex?: Flex;
140
+ /** Sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). */
141
+ flexDirection?: FlexDirection;
142
+ /** Sets the flex grow factor, which specifies how much of the flex container's remaining space should be assigned to the flex item's main size. */
143
+ flexGrow?: FlexGrow;
144
+ /** Sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to flex-shrink. */
145
+ flexShrink?: FlexShrink;
146
+ /** Sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. */
147
+ flexWrap?: FlexWrap;
148
+ /** Defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. */
149
+ justifyContent?: FlexJustifyContent;
150
+ /** Sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with box-sizing. https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis */
151
+ flexBasis?: FlexBasis;
152
+ }
153
+ interface TextStyleProps {
154
+ /** Color of a Text or Icon element */
155
+ color?: ForegroundColor;
156
+ /** Color of placeholder text */
157
+ placeholderColor?: ForegroundColor;
158
+ /** Font family for the text */
159
+ fontFamily?: TextVariant | FontAlias;
160
+ /** Font size of the text */
161
+ fontSize?: TextVariant;
162
+ /** Font weight of the text */
163
+ fontWeight?: TextVariant | FontWeightDescriptive;
164
+ /** Line height of the text */
165
+ lineHeight?: TextVariant;
166
+ /** Text alignment of the text */
167
+ textAlign?: 'center' | 'justify' | 'start' | 'end';
168
+ /** Sets the text transform for the text */
169
+ textTransform?: TextVariant | TextTransform;
170
+ }
171
+ interface BackgroundStyleProps {
172
+ /** Sets the background color. */
173
+ backgroundColor?: BackgroundColor;
174
+ }
175
+ interface UniversalBoxProps extends PropsWithChildren, BackgroundStyleProps, BorderStyleProps, FlexStyleProps, LayoutStyleProps, SpacingStyleProps {
176
+ /**
177
+ * When asChild is set to true, the component's child will be cloned and passed
178
+ * the props and behavior required to make it functional.
179
+ */
180
+ asChild?: boolean;
181
+ }
182
+ interface UniversalStackProps extends Omit<UniversalBoxProps, 'flexDirection'> {
183
+ gap?: SpacingAlias;
184
+ }
185
+ interface UniversalTextProps extends PropsWithChildren, TextStyleProps, UniversalBoxProps {
186
+ /** Style of text. */
187
+ variant?: TextVariant;
188
+ /** Color of the text. */
189
+ color?: ForegroundColor;
190
+ }
191
+ interface UniversalIconProps {
192
+ /** Icon to render from the icons package. */
193
+ name: SvgIcon;
194
+ /** Size of the icon. */
195
+ size?: IconSize;
196
+ /** Variant for icon. Either fill or outline. */
197
+ variant?: IconVariant;
198
+ /** Color of the icon. */
199
+ color?: ForegroundColor;
200
+ }
201
+ interface UniversalImageProps extends Omit<UniversalBoxProps, 'width' | 'height'>, ImageStyleProps {
202
+ /** The source URL of the image. */
203
+ src: string;
204
+ /** Provides fallback (alternate) text to display when the image specified by the Image element is not loaded. */
205
+ alt?: string;
206
+ /** Width of the image in px. */
207
+ width?: number;
208
+ /** Height of the image in pixel. */
209
+ height?: number;
210
+ }
211
+ interface UniversalAvatarProps extends UniversalImageProps {
212
+ /** The size of the Avatar. */
213
+ size?: AvatarSize;
214
+ /** The shape of the Avatar. */
215
+ shape?: BorderRadius;
216
+ }
217
+ interface UniversalTextInputProps {
218
+ disabled?: boolean;
219
+ required?: boolean;
220
+ backgroundColor?: BackgroundColor;
221
+ borderColor?: LineColor;
222
+ borderWidth?: BorderWidth;
223
+ borderRadius?: BorderRadius;
224
+ color?: ForegroundColor;
225
+ fontSize?: TextVariant;
226
+ placeholderColor?: ForegroundColor;
227
+ spacingVertical?: SpacingAlias;
228
+ spacingHorizontal?: SpacingAlias;
229
+ }
230
+
231
+ type DivProps = React.HTMLAttributes<HTMLDivElement>;
232
+ interface BoxProps extends UniversalBoxProps, DivProps {
233
+ }
234
+
235
+ type TextElementTagName = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'strong' | 'span' | 'label' | 'li';
236
+ type TextProps<TagName extends TextElementTagName = TextElementTagName> = {
237
+ /** Ref passed to the inner container. */
238
+ ref?: Ref<HTMLElement>;
239
+ /** Changes the HTML tag used to render text. Uses the most appropriate semantic tag based on the text style variant. */
240
+ as?: TagName;
241
+ } & JSX.IntrinsicElements[TagName] & UniversalTextProps;
242
+
243
+ export type { BoxProps as B, DivProps as D, Overflow as O, TextProps as T, UniversalAvatarProps as U, UniversalTextProps as a, UniversalIconProps as b, UniversalStackProps as c, UniversalTextInputProps as d };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- "use strict";var e=require("../chunk-JGIKFUBH.cjs"),t=require("../chunk-YUHY3FXT.cjs"),n=require("../chunk-DMMTEAJW.cjs"),i=require("../chunk-5WBROFT5.cjs"),a=require("@yahoo/uds/fixtures"),o=require("react/jsx-runtime"),r=require("framer-motion"),s=require("react"),c={scale:.7,opacity:0},l={scale:[.7,.7,1],opacity:[0,0,1],transition:{times:[0,.5,1]}},u={icon:l,hide:c,loading:c},d={loading:l,hide:c,icon:c},m=`var(${i.BUTTON_CSS_VAR_MAP.columnGap})`,h=`var(${i.BUTTON_CSS_VAR_MAP.iconSize})`,p={rest:{scale:`var(${i.BUTTON_CSS_VAR_MAP.effects.scale.rest})`},hover:{scale:`var(${i.BUTTON_CSS_VAR_MAP.effects.scale.hover})`},pressed:{scale:`var(${i.BUTTON_CSS_VAR_MAP.effects.scale.pressed})`},withoutIcon:{columnGap:"0px"},withIcon:{columnGap:m}},g={hide:{width:"0px",opacity:0,display:"none"},loading:{width:h,display:"flex",opacity:1},icon:{width:h,display:"flex",opacity:1}},x=({size:e,variant:t})=>{if("outline"===t)switch(e){case"sm":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M7.9 2.7a5.2 5.2 0 1 0 5.2 5.2h1.6a6.8 6.8 0 1 1-6.8-6.8.8.8 0 1 1 0 1.6"})});case"md":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M12 4a8 8 0 1 0 8 8h2c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2a1 1 0 1 1 0 2"})});case"lg":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M16.15 4.3C9.605 4.3 4.3 9.605 4.3 16.15S9.605 28 16.15 28 28 22.695 28 16.15h2.3c0 7.815-6.335 14.15-14.15 14.15S2 23.965 2 16.15 8.335 2 16.15 2a1.15 1.15 0 0 1 0 2.3"})})}if("fill"===t)switch(e){case"sm":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M8 2.9A5.1 5.1 0 1 0 13.1 8h1.8A6.9 6.9 0 1 1 8 1.1a.9.9 0 1 1 0 1.8"})});case"md":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M12.15 4.3A7.85 7.85 0 1 0 20 12.15h2.3c0 5.606-4.544 10.15-10.15 10.15S2 17.756 2 12.15 6.544 2 12.15 2a1.15 1.15 0 0 1 0 2.3"})});case"lg":return o.jsx(o.Fragment,{children:o.jsx("path",{fill:"currentColor",d:"M16.35 4.7C9.916 4.7 4.7 9.916 4.7 16.35S9.916 28 16.35 28 28 22.784 28 16.35h2.7c0 7.925-6.425 14.35-14.35 14.35S2 24.275 2 16.35 8.425 2 16.35 2a1.35 1.35 0 1 1 0 2.7"})})}return o.jsx(o.Fragment,{})},f=()=>import("../motionFeatures-P3FQL2KP.cjs").then((({domAnimation:e})=>e));/*! © 2025 Yahoo, Inc. UDS v0.0.0-development */function v({reducedMotion:e="user",children:i,layoutVariant:a="subtle",layoutSpeed:c="3",colorVariant:l="smooth",colorSpeed:u="3"}){const d=n.motion[a][c],m=n.motion[l][u],[h,p]=s.useState(d),[g,x]=s.useState(m),v={variant:l,speed:u},j=t.getMotionVar({...v,control:"stiffness"}),b=t.getMotionVar({...v,control:"damping"}),S={variant:a,speed:c},y=t.getMotionVar({...S,control:"stiffness"}),M=t.getMotionVar({...S,control:"damping"});s.useEffect((()=>{const e=getComputedStyle(document.documentElement),t={damping:Number(e.getPropertyValue(M)),stiffness:Number(e.getPropertyValue(y))},n={damping:Number(e.getPropertyValue(b)),stiffness:Number(e.getPropertyValue(j))};p(t),x(n)}),[b,j,M,y]);const I=s.useMemo((()=>({type:"spring",mass:1,...h,layout:h,opacity:g,color:g,borderColor:g,backgroundColor:g})),[g,h]);return o.jsx(r.LazyMotion,{features:f,strict:!0,children:o.jsx(r.MotionConfig,{transition:I,reducedMotion:e,children:i})})}var j=e.createSlot(),b=r.m.create(j),S=s.forwardRef((function({palette:t,variant:n,size:i,startIcon:c,endIcon:l,iconVariant:m,loading:h,disableEffects:f,children:j,asChild:S,className:y,...M},I){const N=s.useRef(null);s.useImperativeHandle(I,(()=>N.current));const C=l?"icon":"hide",w=(({startIcon:e,endIcon:t,loading:n})=>e||t||n?"withIcon":"withoutIcon")({startIcon:c,endIcon:l,loading:h}),V=(({loading:e,startIcon:t})=>e?"loading":t?"icon":"hide")({loading:h,startIcon:c}),A={button:e.getStyles({buttonSize:i,buttonVariant:n,buttonPalette:t,className:e.cx("uds-button","uds-ring","uds-hit-target",h&&"uds-button-loading",f&&"uds-button-without-effects","withIcon"===w&&"uds-button-with-gap",y)}),content:"uds-button-content truncate",iconContainer:"uds-button-icon-container flex overflow-clip",loading:"uds-button-icon start-content animate-spin",start:"uds-button-icon start-content",end:"uds-button-icon end-content"},z=r.useReducedMotion()?"smooth":"subtle",P=s.useMemo((()=>o.jsx(r.m.span,{className:A.iconContainer,initial:!1,variants:g,animate:V,children:o.jsxs(r.AnimatePresence,{initial:!1,mode:"popLayout",children:[h&&o.jsx(r.m.span,{variants:d,initial:"hide",animate:"loading",exit:"hide",children:o.jsx(e.Icon,{size:a.buttonIconSvgSize,name:x,variant:m,color:"current",className:A.loading})},"loading"),c&&!h&&o.jsx(r.m.span,{variants:u,initial:"hide",animate:"icon",exit:"hide",children:o.jsx(e.Icon,{size:a.buttonIconSvgSize,name:c,variant:m,color:"current",className:A.start})},c.name)]})})),[A.iconContainer,A.loading,A.start,V,h,m,c]),T=s.useMemo((()=>o.jsx(r.m.span,{className:A.iconContainer,initial:!1,variants:g,animate:C,children:o.jsx(r.AnimatePresence,{initial:!1,mode:"popLayout",children:l&&o.jsx(r.m.span,{variants:u,initial:"hide",animate:"icon",exit:"hide",children:o.jsx(e.Icon,{size:a.buttonIconSvgSize,name:l,variant:m,color:"current",className:A.start})},l.name)})})),[A.iconContainer,A.start,l,C,m]),_=s.useMemo((()=>f?{...p,rest:{},hover:{},pressed:{}}:p),[f]);return S&&s.isValidElement(j)?o.jsx(v,{layoutSpeed:"3",layoutVariant:z,children:o.jsx(b,{className:A.button,initial:["hide",w],animate:w,variants:_,whileHover:"hover",whileTap:"pressed",...M,children:s.cloneElement(j,j.props,o.jsxs(o.Fragment,{children:[P,o.jsx("span",{className:A.content,children:j.props.children}),T]}))})}):o.jsx(v,{layoutSpeed:"3",layoutVariant:z,children:o.jsxs(r.m.button,{ref:N,className:A.button,initial:["hide",w],animate:w,variants:_,whileHover:"hover",whileTap:"pressed",...M,children:[P,o.jsx("span",{className:A.content,children:j}),T]})})})),y=s.forwardRef((function({palette:t,variant:n,size:i,iconVariant:c,loading:l,disableEffects:m,name:h,className:g,children:f,...j},b){const S=s.useRef(null);s.useImperativeHandle(b,(()=>S.current));const y=s.useMemo((()=>({button:e.getStyles({buttonVariant:n,buttonPalette:t,iconButtonSize:i,className:e.cx("uds-icon-button","uds-button","uds-ring","uds-hit-target",l&&"uds-button-loading",m&&"uds-button-without-effects",g)}),loading:"uds-button-icon start-content animate-spin",icon:"uds-button-icon start-content"})),[t,n,g,m,i,l]),M=r.useReducedMotion(),I=s.useMemo((()=>M?"smooth":"subtle"),[M]),N=s.useMemo((()=>{const{rest:e,hover:t,pressed:n}=p;return m?{rest:{},hover:{},pressed:{}}:{rest:e,hover:t,pressed:n}}),[m]);return o.jsx(v,{layoutSpeed:"3",layoutVariant:I,reducedMotion:m?"always":"user",children:o.jsx(r.m.button,{ref:S,className:y.button,initial:"icon",variants:N,whileHover:"hover",whileTap:"pressed",...j,children:o.jsxs(r.AnimatePresence,{initial:!1,mode:"popLayout",children:[l&&o.jsx(r.m.span,{variants:d,initial:"loading",animate:"loading",exit:"hide",children:o.jsx(e.Icon,{size:a.buttonIconSvgSize,name:x,variant:c,color:"current",className:y.loading})},"loading"),h&&!l&&o.jsx(r.m.span,{variants:u,initial:"icon",animate:"icon",exit:"hide",children:f||o.jsx(e.Icon,{size:a.buttonIconSvgSize,name:h,variant:c,color:"current",className:y.icon})},h.name)]})})})}));
3
- /*! © 2025 Yahoo, Inc. UDS v0.0.0-development */exports.Button=S,exports.IconButton=y,exports.SpringMotionConfig=v;
2
+ "use strict";var e=require("../chunk-JGIKFUBH.cjs"),t=require("../chunk-YUHY3FXT.cjs"),o=require("../chunk-DMMTEAJW.cjs"),n=require("../chunk-5WBROFT5.cjs"),r=require("@yahoo/uds/fixtures"),i=require("react/jsx-runtime"),a=require("framer-motion"),s=require("react"),c={scale:.7,opacity:0},l={scale:[.7,.7,1],opacity:[0,0,1],transition:{times:[0,.5,1]}},d={icon:l,hide:c,loading:c},u={loading:l,hide:c,icon:c},m=`var(${n.BUTTON_CSS_VAR_MAP.columnGap})`,p=`var(${n.BUTTON_CSS_VAR_MAP.iconSize})`,h={rest:{scale:`var(${n.BUTTON_CSS_VAR_MAP.effects.scale.rest})`},hover:{scale:`var(${n.BUTTON_CSS_VAR_MAP.effects.scale.hover})`},pressed:{scale:`var(${n.BUTTON_CSS_VAR_MAP.effects.scale.pressed})`},withoutIcon:{columnGap:"0px"},withIcon:{columnGap:m}},f={hide:{width:"0px",opacity:0,display:"none"},loading:{width:p,display:"flex",opacity:1},icon:{width:p,display:"flex",opacity:1}},g=({size:e,variant:t})=>{if("outline"===t)switch(e){case"sm":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M7.9 2.7a5.2 5.2 0 1 0 5.2 5.2h1.6a6.8 6.8 0 1 1-6.8-6.8.8.8 0 1 1 0 1.6"})});case"md":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M12 4a8 8 0 1 0 8 8h2c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2a1 1 0 1 1 0 2"})});case"lg":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M16.15 4.3C9.605 4.3 4.3 9.605 4.3 16.15S9.605 28 16.15 28 28 22.695 28 16.15h2.3c0 7.815-6.335 14.15-14.15 14.15S2 23.965 2 16.15 8.335 2 16.15 2a1.15 1.15 0 0 1 0 2.3"})})}if("fill"===t)switch(e){case"sm":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M8 2.9A5.1 5.1 0 1 0 13.1 8h1.8A6.9 6.9 0 1 1 8 1.1a.9.9 0 1 1 0 1.8"})});case"md":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M12.15 4.3A7.85 7.85 0 1 0 20 12.15h2.3c0 5.606-4.544 10.15-10.15 10.15S2 17.756 2 12.15 6.544 2 12.15 2a1.15 1.15 0 0 1 0 2.3"})});case"lg":return i.jsx(i.Fragment,{children:i.jsx("path",{fill:"currentColor",d:"M16.35 4.7C9.916 4.7 4.7 9.916 4.7 16.35S9.916 28 16.35 28 28 22.784 28 16.35h2.7c0 7.925-6.425 14.35-14.35 14.35S2 24.275 2 16.35 8.425 2 16.35 2a1.35 1.35 0 1 1 0 2.7"})})}return i.jsx(i.Fragment,{})},b=()=>import("../motionFeatures-P3FQL2KP.cjs").then((({domAnimation:e})=>e));/*! © 2025 Yahoo, Inc. UDS v0.0.0-development */function x({reducedMotion:e="user",children:n,layoutVariant:r="subtle",layoutSpeed:c="3",colorVariant:l="smooth",colorSpeed:d="3"}){const u=o.motion[r][c],m=o.motion[l][d],[p,h]=s.useState(u),[f,g]=s.useState(m),x={variant:l,speed:d},S=t.getMotionVar({...x,control:"stiffness"}),v=t.getMotionVar({...x,control:"damping"}),j={variant:r,speed:c},C=t.getMotionVar({...j,control:"stiffness"}),y=t.getMotionVar({...j,control:"damping"});s.useEffect((()=>{const e=getComputedStyle(document.documentElement),t={damping:Number(e.getPropertyValue(y)),stiffness:Number(e.getPropertyValue(C))},o={damping:Number(e.getPropertyValue(v)),stiffness:Number(e.getPropertyValue(S))};h(t),g(o)}),[v,S,y,C]);const w=s.useMemo((()=>({type:"spring",mass:1,...p,layout:p,opacity:f,color:f,borderColor:f,backgroundColor:f})),[f,p]);return i.jsx(a.LazyMotion,{features:b,strict:!0,children:i.jsx(a.MotionConfig,{transition:w,reducedMotion:e,children:n})})}var S=e.createSlot(),v=a.m.create(S),j=s.forwardRef((function({palette:t,variant:o,size:n,startIcon:c,endIcon:l,iconVariant:m,loading:p,disableEffects:b,children:S,asChild:j,className:C,...y},w){const M=s.useRef(null);s.useImperativeHandle(w,(()=>M.current));const I=l?"icon":"hide",V=(({startIcon:e,endIcon:t,loading:o})=>e||t||o?"withIcon":"withoutIcon")({startIcon:c,endIcon:l,loading:p}),N=(({loading:e,startIcon:t})=>e?"loading":t?"icon":"hide")({loading:p,startIcon:c}),T={button:e.getStyles({buttonSize:n,buttonVariant:o,buttonPalette:t,className:e.cx("uds-button","uds-ring","uds-hit-target",p&&"uds-button-loading",b&&"uds-button-without-effects","withIcon"===V&&"uds-button-with-gap",C)}),content:"uds-button-content truncate",iconContainer:"uds-button-icon-container flex overflow-clip",loading:"uds-button-icon start-content animate-spin",start:"uds-button-icon start-content",end:"uds-button-icon end-content"},B=a.useReducedMotion()?"smooth":"subtle",z=s.useMemo((()=>i.jsx(a.m.span,{className:T.iconContainer,initial:!1,variants:f,animate:N,children:i.jsxs(a.AnimatePresence,{initial:!1,mode:"popLayout",children:[p&&i.jsx(a.m.span,{variants:u,initial:"hide",animate:"loading",exit:"hide",children:i.jsx(e.Icon,{size:r.buttonIconSvgSize,name:g,variant:m,color:"current",className:T.loading})},"loading"),c&&!p&&i.jsx(a.m.span,{variants:d,initial:"hide",animate:"icon",exit:"hide",children:i.jsx(e.Icon,{size:r.buttonIconSvgSize,name:c,variant:m,color:"current",className:T.start})},c.name)]})})),[T.iconContainer,T.loading,T.start,N,p,m,c]),R=s.useMemo((()=>i.jsx(a.m.span,{className:T.iconContainer,initial:!1,variants:f,animate:I,children:i.jsx(a.AnimatePresence,{initial:!1,mode:"popLayout",children:l&&i.jsx(a.m.span,{variants:d,initial:"hide",animate:"icon",exit:"hide",children:i.jsx(e.Icon,{size:r.buttonIconSvgSize,name:l,variant:m,color:"current",className:T.start})},l.name)})})),[T.iconContainer,T.start,l,I,m]),E=s.useMemo((()=>b?{...h,rest:{},hover:{},pressed:{}}:h),[b]);return j&&s.isValidElement(S)?i.jsx(x,{layoutSpeed:"3",layoutVariant:B,children:i.jsx(v,{className:T.button,initial:["hide",V],animate:V,variants:E,whileHover:"hover",whileTap:"pressed",...y,children:s.cloneElement(S,S.props,i.jsxs(i.Fragment,{children:[z,i.jsx("span",{className:T.content,children:S.props.children}),R]}))})}):i.jsx(x,{layoutSpeed:"3",layoutVariant:B,children:i.jsxs(a.m.button,{ref:M,className:T.button,initial:["hide",V],animate:V,variants:E,whileHover:"hover",whileTap:"pressed",...y,children:[z,i.jsx("span",{className:T.content,children:S}),R]})})})),C=s.forwardRef((function({palette:t,variant:o,size:n,iconVariant:c,loading:l,disableEffects:m,name:p,className:f,children:b,...S},v){const j=s.useRef(null);s.useImperativeHandle(v,(()=>j.current));const C=s.useMemo((()=>({button:e.getStyles({buttonVariant:o,buttonPalette:t,iconButtonSize:n,className:e.cx("uds-icon-button","uds-button","uds-ring","uds-hit-target",l&&"uds-button-loading",m&&"uds-button-without-effects",f)}),loading:"uds-button-icon start-content animate-spin",icon:"uds-button-icon start-content"})),[t,o,f,m,n,l]),y=a.useReducedMotion(),w=s.useMemo((()=>y?"smooth":"subtle"),[y]),M=s.useMemo((()=>{const{rest:e,hover:t,pressed:o}=h;return m?{rest:{},hover:{},pressed:{}}:{rest:e,hover:t,pressed:o}}),[m]);return i.jsx(x,{layoutSpeed:"3",layoutVariant:w,reducedMotion:m?"always":"user",children:i.jsx(a.m.button,{ref:j,className:C.button,initial:"icon",variants:M,whileHover:"hover",whileTap:"pressed",...S,children:i.jsxs(a.AnimatePresence,{initial:!1,mode:"popLayout",children:[l&&i.jsx(a.m.span,{variants:u,initial:"loading",animate:"loading",exit:"hide",children:i.jsx(e.Icon,{size:r.buttonIconSvgSize,name:g,variant:c,color:"current",className:C.loading})},"loading"),p&&!l&&i.jsx(a.m.span,{variants:d,initial:"icon",animate:"icon",exit:"hide",children:b||i.jsx(e.Icon,{size:r.buttonIconSvgSize,name:p,variant:c,color:"current",className:C.icon})},p.name)]})})})})),y=e.createSlot(),w=s.forwardRef((function({className:t,asChild:o,onPress:n,onClick:r=n,backgroundColor:a,borderRadius:s,borderTopStartRadius:c,borderTopEndRadius:l,borderBottomStartRadius:d,borderBottomEndRadius:u,borderColor:m,borderStartColor:p,borderEndColor:h,borderTopColor:f,borderBottomColor:g,borderWidth:b,borderVerticalWidth:x,borderHorizontalWidth:S,borderStartWidth:v,borderEndWidth:j,borderTopWidth:C,borderBottomWidth:w,alignContent:M,alignItems:I,alignSelf:V,flex:N,flexDirection:T,flexGrow:B,flexShrink:z,flexWrap:R,justifyContent:E,flexBasis:A,display:P,overflow:W,overflowX:_,overflowY:F,position:H,spacing:k,spacingHorizontal:G,spacingVertical:q,spacingBottom:U,spacingEnd:O,spacingStart:L,spacingTop:$,offset:Y,offsetVertical:D,offsetHorizontal:X,offsetBottom:J,offsetEnd:K,offsetStart:Q,offsetTop:Z,columnGap:ee,rowGap:te,...oe},ne){const re=e.getStyles({backgroundColor:a,borderRadius:s,borderTopStartRadius:c,borderTopEndRadius:l,borderBottomStartRadius:d,borderBottomEndRadius:u,borderColor:m,borderStartColor:p,borderEndColor:h,borderTopColor:f,borderBottomColor:g,borderWidth:b,borderVerticalWidth:x,borderHorizontalWidth:S,borderStartWidth:v,borderEndWidth:j,borderTopWidth:C,borderBottomWidth:w,alignContent:M,alignItems:I,alignSelf:V,flex:N,flexDirection:T,flexGrow:B,flexShrink:z,flexWrap:R,justifyContent:E,flexBasis:A,display:P,overflow:W,overflowX:_,overflowY:F,position:H,spacing:k,spacingHorizontal:G,spacingVertical:q,spacingBottom:U,spacingEnd:O,spacingStart:L,spacingTop:$,offset:Y,offsetVertical:D,offsetHorizontal:X,offsetBottom:J,offsetEnd:K,offsetStart:Q,offsetTop:Z,columnGap:ee,rowGap:te,className:t}),ie=o?y:"button";return i.jsx(ie,{className:re,ref:ne,onClick:r,...oe})}));
3
+ /*! © 2025 Yahoo, Inc. UDS v0.0.0-development */exports.Button=j,exports.IconButton=C,exports.Pressable=w,exports.SpringMotionConfig=x;
@@ -1,12 +1,12 @@
1
- import { e as UniversalButtonProps, f as UniversalIconButtonProps, M as MotionVariant, g as MotionVariantSpeed } from '../types-Pyccco5Q.cjs';
1
+ import { e as UniversalButtonProps, f as UniversalIconButtonProps, g as UniversalPressableProps, M as MotionVariant, h as MotionVariantSpeed } from '../types-DsMvZpWN.cjs';
2
2
  import { HTMLMotionProps, MotionConfigProps } from 'framer-motion';
3
3
  import * as react from 'react';
4
4
  import react__default from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import '@yahoo/uds-icons/types';
7
7
 
8
- type HtmlButtonProps$1 = Omit<HTMLMotionProps<'button'>, 'color' | 'name'> & Omit<react__default.ButtonHTMLAttributes<HTMLButtonElement>, 'color'>;
9
- interface ButtonProps extends HtmlButtonProps$1, UniversalButtonProps {
8
+ type HtmlButtonProps$2 = Omit<HTMLMotionProps<'button'>, 'color' | 'name'> & Omit<react__default.ButtonHTMLAttributes<HTMLButtonElement>, 'color'>;
9
+ interface ButtonProps extends HtmlButtonProps$2, UniversalButtonProps {
10
10
  }
11
11
  /**
12
12
  * **🖲️ A button element that can be used to trigger an action**
@@ -42,8 +42,8 @@ interface ButtonProps extends HtmlButtonProps$1, UniversalButtonProps {
42
42
  **/
43
43
  declare const Button: react__default.ForwardRefExoticComponent<ButtonProps & react__default.RefAttributes<HTMLButtonElement>>;
44
44
 
45
- type HtmlButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'name'> & Omit<HTMLMotionProps<'button'>, 'name'>;
46
- interface IconButtonProps extends HtmlButtonProps, UniversalIconButtonProps {
45
+ type HtmlButtonProps$1 = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'name'> & Omit<HTMLMotionProps<'button'>, 'name'>;
46
+ interface IconButtonProps extends HtmlButtonProps$1, UniversalIconButtonProps {
47
47
  }
48
48
  /**
49
49
  * **⚙️️ An icon button element that can be used to trigger an action**
@@ -77,6 +77,46 @@ interface IconButtonProps extends HtmlButtonProps, UniversalIconButtonProps {
77
77
  **/
78
78
  declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
79
79
 
80
+ type HtmlButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color' | 'name'>;
81
+ interface PressableProps extends UniversalPressableProps, HtmlButtonProps {
82
+ }
83
+ /**
84
+ * **🖲️ A primitive component for creating button interactions with accessibility support**
85
+ *
86
+ * @type Client component
87
+ *
88
+ * @description
89
+ * The Pressable component is a primitive component that can be used
90
+ * to create button interactions with accessibility support. It can be used
91
+ * to trigger an action, such as submitting a form, navigating to a new page,
92
+ * or adding interactivity to a section or card.
93
+ *
94
+ * @example
95
+ * ```tsx
96
+ * import { Pressable } from '@yahoo/uds';
97
+ *
98
+ * <Pressable
99
+ * backgroundColor="secondary"
100
+ * borderWidth="thin"
101
+ * borderColor="primary"
102
+ * borderRadius="lg"
103
+ * onPress={() => console.log('Pressed!')}
104
+ * >
105
+ * <Text variant="body1" color="primary" spacingHorizontal="7" spacingVertical="5">Click me...</Text>
106
+ * </Pressable>
107
+ * ```
108
+ *
109
+ * @usage
110
+ * - If you need to add interactivity to a section or card.
111
+ * - If you need a highly customized version of [Button](./button)
112
+ *
113
+ * @see The {@link https://uds.build/docs/components/pressable Pressable Docs} for more info
114
+ *
115
+ * @related [Button](https://uds.build/docs/components/button), [IconButton](https://uds.build/docs/components/icon-button)
116
+ *
117
+ */
118
+ declare const Pressable: react.ForwardRefExoticComponent<PressableProps & react.RefAttributes<HTMLButtonElement>>;
119
+
80
120
  interface SpringMotionConfigProps extends Pick<MotionConfigProps, 'children' | 'reducedMotion'> {
81
121
  layoutVariant?: MotionVariant;
82
122
  layoutSpeed?: MotionVariantSpeed;
@@ -94,4 +134,4 @@ interface SpringMotionConfigProps extends Pick<MotionConfigProps, 'children' | '
94
134
  */
95
135
  declare function SpringMotionConfig({ reducedMotion, children, layoutVariant, layoutSpeed, colorVariant, colorSpeed, }: SpringMotionConfigProps): react_jsx_runtime.JSX.Element;
96
136
 
97
- export { Button, type ButtonProps, IconButton, type IconButtonProps, SpringMotionConfig, type SpringMotionConfigProps };
137
+ export { Button, type ButtonProps, IconButton, type IconButtonProps, Pressable, type PressableProps, SpringMotionConfig, type SpringMotionConfigProps };