@pantheon-systems/pds-toolkit-react 2.0.0-alpha.81 → 2.0.0-alpha.83

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 (49) hide show
  1. package/codemods/v1-to-v2/mappings.json +12 -4
  2. package/dist/components/Table/Table.d.ts +20 -11
  3. package/dist/components/badges/StatusBadge/StatusBadge.d.ts +1 -1
  4. package/dist/components/buttons/SegmentedButton/SegmentedButton.d.ts +5 -5
  5. package/dist/components/icons/Icon/generated-icon-data.d.ts +1 -1
  6. package/dist/components/{Avatar → identity/Avatar}/Avatar.d.ts +3 -2
  7. package/dist/components/identity/AvatarLabel/AvatarLabel.d.ts +42 -0
  8. package/dist/components/{IdentityBlock → identity/IdentityBlock}/IdentityBlock.d.ts +1 -1
  9. package/dist/components/inputs/Checkbox/Checkbox.d.ts +11 -1
  10. package/dist/components/inputs/CheckboxFieldset/CheckboxFieldset.d.ts +12 -2
  11. package/dist/components/inputs/CheckboxGroup/CheckboxGroup.d.ts +12 -2
  12. package/dist/components/inputs/Combobox/Combobox.d.ts +11 -1
  13. package/dist/components/inputs/ComboboxMultiselect/ComboboxMultiselect.d.ts +12 -2
  14. package/dist/components/inputs/Datepicker/Datepicker.d.ts +12 -4
  15. package/dist/components/inputs/FileUpload/FileUpload.d.ts +11 -1
  16. package/dist/components/inputs/RadioGroup/RadioGroup.d.ts +12 -2
  17. package/dist/components/inputs/Select/Select.d.ts +20 -3
  18. package/dist/components/inputs/Switch/Switch.d.ts +11 -1
  19. package/dist/components/inputs/TagsInput/TagsInput.d.ts +11 -1
  20. package/dist/components/inputs/TextInput/TextInput.d.ts +11 -1
  21. package/dist/components/inputs/Textarea/Textarea.d.ts +11 -1
  22. package/dist/components/inputs/Timepicker/Timepicker.d.ts +12 -2
  23. package/dist/components/inputs/input-utilities.d.ts +5 -0
  24. package/dist/components/navigation/ButtonNav/ButtonNav.d.ts +5 -5
  25. package/dist/components/overlays/Modal/Modal.d.ts +3 -1
  26. package/dist/components/panels/PanelList/PanelRow.d.ts +9 -1
  27. package/dist/css/component-css/pds-avatar-label.css +1 -0
  28. package/dist/css/component-css/pds-avatar.css +1 -1
  29. package/dist/css/component-css/pds-index.css +9 -9
  30. package/dist/css/component-css/pds-input-utilities.css +1 -1
  31. package/dist/css/component-css/pds-link-new-window.css +1 -1
  32. package/dist/css/component-css/pds-modal.css +1 -1
  33. package/dist/css/component-css/pds-panel-list.css +1 -1
  34. package/dist/css/component-css/pds-side-nav-global.css +1 -1
  35. package/dist/css/component-css/pds-stat-panel.css +1 -1
  36. package/dist/css/component-css/pds-status-badge.css +1 -1
  37. package/dist/css/layout-css/pds-sidebar-layout.css +2 -2
  38. package/dist/css/pds-components.css +9 -9
  39. package/dist/css/pds-core.css +1 -1
  40. package/dist/index.css +1 -1
  41. package/dist/index.d.ts +3 -2
  42. package/dist/index.js +2295 -2244
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.source.d.ts +3 -2
  45. package/dist/layouts/SidebarLayout/SidebarLayout.d.ts +6 -1
  46. package/dist/libs/types/layout-types.d.ts +1 -0
  47. package/dist/utilities/FlexContainer/FlexContainer.d.ts +1 -1
  48. package/dist/utilities/grid/Grid.d.ts +2 -4
  49. package/package.json +1 -1
@@ -398,9 +398,9 @@
398
398
  },
399
399
  {
400
400
  "component": "SegmentedButton",
401
- "prop": "border",
401
+ "prop": "hasBorder",
402
402
  "description": "New boolean prop that draws a border around the track. Defaults to false — the track has no border.",
403
- "usage": "Set border to add a visible border around the control."
403
+ "usage": "Set hasBorder to add a visible border around the control."
404
404
  },
405
405
  {
406
406
  "component": "SegmentedButton",
@@ -410,9 +410,9 @@
410
410
  },
411
411
  {
412
412
  "component": "ButtonNav",
413
- "prop": "border",
413
+ "prop": "hasBorder",
414
414
  "description": "New boolean prop that draws a border around the track, matching the SegmentedButton component. Defaults to false — the track has no border.",
415
- "usage": "Set border to add a visible border around the navigation track."
415
+ "usage": "Set hasBorder to add a visible border around the navigation track."
416
416
  },
417
417
  {
418
418
  "component": "UserMenu",
@@ -877,6 +877,14 @@
877
877
  "v2Default": "'100%'",
878
878
  "reason": "The component now fills its container by default rather than imposing its own width cap. It's always used inside the dashboard's AppLayout, which already constrains page content width — the old 1200px default was a leftover from the V1 standalone-page convention and fought the outer layout's own max-width.",
879
879
  "migration": "If you relied on the 1200px cap (e.g. a true standalone full-page usage with no other width constraint), pass maxWidth='1200px' explicitly."
880
+ },
881
+ {
882
+ "component": "FlexContainer",
883
+ "prop": "mobileFlexDirection",
884
+ "v1Default": "'column'",
885
+ "v2Default": "undefined (falls back to flexDirection)",
886
+ "reason": "mobileFlexDirection was hardcoded to 'column' regardless of flexDirection, unlike every other mobile* prop, which falls back to its desktop counterpart when unset. In both v1 and v2 alpha releases through 2.0.0-alpha.81, this silently stacked any row-oriented FlexContainer vertically on mobile even when no mobile-specific direction was requested.",
887
+ "migration": "If you were relying on the old behavior to stack a row on mobile, pass mobileFlexDirection='column' explicitly. If you have a row-oriented FlexContainer with no mobileFlexDirection set, it will now stay a row on mobile instead of silently stacking — review those usages, as this may change their mobile appearance."
880
888
  }
881
889
  ],
882
890
  "typeChanges": [
@@ -174,6 +174,18 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
174
174
  * Override for translation.
175
175
  */
176
176
  getSortLabel?: (columnHeader: string) => string;
177
+ /**
178
+ * When `true`, providing `renderDetailPanel` also makes desktop rows
179
+ * clickable, sliding in an inline side panel with that content — the
180
+ * "Row detail panel" pattern. Defaults to `false`: on its own,
181
+ * `renderDetailPanel` only drives the mobile sheet (see `hasMobileCards`)
182
+ * — the desktop panel is an explicit opt-in, matching how the mobile
183
+ * behaviors already work, rather than an implicit side effect of
184
+ * providing sheet content. Has no effect on `onRowInspect`, which makes
185
+ * rows clickable/keyboard-focusable regardless of this flag — it's a
186
+ * consumer-owned callback with nothing built-in to show.
187
+ */
188
+ hasDesktopDetailPanel?: boolean;
177
189
  /**
178
190
  * When `true`, the table renders as a list of tappable cards at the
179
191
  * mobile breakpoint instead of a `<table>`. Defaults to `false` — an
@@ -183,7 +195,8 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
183
195
  * use looks or behaves. Opt in per table, tuning `cardVisible` on its
184
196
  * columns as you go. When `false` (or unset), none of the
185
197
  * mobile-specific behavior applies: `cardVisible` has no effect, and row
186
- * detail (if any) still uses the desktop side panel, not a sheet.
198
+ * detail (if any) uses the desktop side panel instead of a sheet — but
199
+ * only when `hasDesktopDetailPanel` is also set.
187
200
  */
188
201
  hasMobileCards?: boolean;
189
202
  /**
@@ -285,12 +298,6 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
285
298
  * internally and expects the parent to pass pre-sorted data.
286
299
  */
287
300
  onSort?: (key: string, order: SortOrder) => void;
288
- /**
289
- * Render prop for the detail panel content. When provided, clicking a row
290
- * slides in an inline detail panel alongside the table. Receives the row
291
- * data and a context object with navigation callbacks and state.
292
- * See the [Row detail panel](/docs/components-table--row-detail-panel) story.
293
- */
294
301
  /**
295
302
  * Available page size options rendered in the rows-per-page selector.
296
303
  * When provided, the selector is shown to the left of the pagination controls.
@@ -321,9 +328,11 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
321
328
  */
322
329
  prevDetailPanelRowLabel?: string;
323
330
  /**
324
- * Render prop for the detail panel content. When provided, clicking a row
325
- * slides in an inline detail panel alongside the table. Receives the row
326
- * data and a context object with navigation callbacks and state.
331
+ * Render prop for the detail panel content the mobile sheet (see
332
+ * `hasMobileCards`), and, when `hasDesktopDetailPanel` is also set,
333
+ * clicking a row sliding in an inline desktop panel alongside the
334
+ * table. Receives the row data and a context object with navigation
335
+ * callbacks and state.
327
336
  * See the [Row detail panel](/docs/components-table--row-detail-panel) story.
328
337
  */
329
338
  renderDetailPanel?: (row: Record<string, ReactNode>, context: DetailPanelContext) => ReactNode;
@@ -363,4 +372,4 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
363
372
  */
364
373
  totalItemCount?: number;
365
374
  }
366
- export declare const Table: ({ className, closeDetailPanelLabel, columns, currentPage, defaultSortKey, defaultSortOrder, detailPanelNav, detailPanelTitle, detailPanelWidth, emptyState, emptyStateHeading, emptyStateMessage, footer, getDetailPanelPositionLabel, getPageSizeLabel, getRowClassName, getRowId, getRowSelectDisabledReason, getSelectRowLabel, getSortLabel, hasMobileCards, hasMobileDetailSheet, inspectedRowId, isLoading, isRowSelectable, itemsPerPage, loadingRowCount, maxHeight, minHeight, nextDetailPanelRowLabel, onDetailPanelNext, onDetailPanelPrev, onPageChange, onPageSizeChange, onRowInspect, onRowSelectionChange, onSort, pageSizeOptions, pageSizeSelectLabel, paginationLabels, panel, prevDetailPanelRowLabel, renderDetailPanel, renderDetailPanelFooter, rowData, selectAllLabel, selectedRows, sortKey, sortOrder, totalItemCount, ...props }: TableProps) => import("react/jsx-runtime").JSX.Element;
375
+ export declare const Table: ({ className, closeDetailPanelLabel, columns, currentPage, defaultSortKey, defaultSortOrder, detailPanelNav, detailPanelTitle, detailPanelWidth, emptyState, emptyStateHeading, emptyStateMessage, footer, getDetailPanelPositionLabel, getPageSizeLabel, getRowClassName, getRowId, getRowSelectDisabledReason, getSelectRowLabel, getSortLabel, hasDesktopDetailPanel, hasMobileCards, hasMobileDetailSheet, inspectedRowId, isLoading, isRowSelectable, itemsPerPage, loadingRowCount, maxHeight, minHeight, nextDetailPanelRowLabel, onDetailPanelNext, onDetailPanelPrev, onPageChange, onPageSizeChange, onRowInspect, onRowSelectionChange, onSort, pageSizeOptions, pageSizeSelectLabel, paginationLabels, panel, prevDetailPanelRowLabel, renderDetailPanel, renderDetailPanelFooter, rowData, selectAllLabel, selectedRows, sortKey, sortOrder, totalItemCount, ...props }: TableProps) => import("react/jsx-runtime").JSX.Element;
@@ -29,7 +29,7 @@ export interface StatusBadgeProps extends ComponentPropsWithoutRef<'div'> {
29
29
  * Status type for badge. Only renders if `hasStatusIndicator` is true.
30
30
  * Use `'working'` to show a spinner in place of the status dot.
31
31
  */
32
- statusType?: StatusType | 'frozen' | 'disabled' | 'working';
32
+ statusType?: StatusType | 'frozen' | 'disabled' | 'neutral' | 'working';
33
33
  }
34
34
  /**
35
35
  * StatusBadge UI component
@@ -41,10 +41,6 @@ interface OptionType {
41
41
  * Prop types for SegmentedButton
42
42
  */
43
43
  export interface SegmentedButtonProps {
44
- /**
45
- * Renders a border around the track. Off by default.
46
- */
47
- border?: boolean;
48
44
  /**
49
45
  * Additional class names.
50
46
  */
@@ -57,6 +53,10 @@ export interface SegmentedButtonProps {
57
53
  * Disables all options in the SegmentedButton.
58
54
  */
59
55
  disabled?: boolean;
56
+ /**
57
+ * Renders a border around the track. Off by default.
58
+ */
59
+ hasBorder?: boolean;
60
60
  /**
61
61
  * Renders each option as an icon-only, square segment with a circular
62
62
  * selected pill. Each option's `iconName` is required and its `label` is
@@ -94,5 +94,5 @@ export interface SegmentedButtonProps {
94
94
  /**
95
95
  * SegmentedButton UI component
96
96
  */
97
- export declare const SegmentedButton: ({ border, className, defaultValue, disabled, iconOnly, id, label, onChange, options, size, value, ...props }: SegmentedButtonProps) => import("react/jsx-runtime").JSX.Element;
97
+ export declare const SegmentedButton: ({ className, defaultValue, disabled, hasBorder, iconOnly, id, label, onChange, options, size, value, ...props }: SegmentedButtonProps) => import("react/jsx-runtime").JSX.Element;
98
98
  export {};
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generated by: npm run generate:icon-data
5
5
  * Source: icon-registry.ts + Font Awesome packages + custom-icons.tsx
6
- * Generated: 2026-09-02T23:17:42.365Z
6
+ * Generated: 2026-09-08T20:24:20.025Z
7
7
  */
8
8
  import { customIcons } from './custom-icons';
9
9
  export { customIcons };
@@ -26,9 +26,10 @@ export interface AvatarProps extends ComponentPropsWithoutRef<'div'> {
26
26
  */
27
27
  shape?: 'circle' | 'square';
28
28
  /**
29
- * Avatar size.
29
+ * Avatar size. `xs` = 16px, `s` = 20px (default), `m` = 24px, `l` = 32px,
30
+ * `xl` = 40px.
30
31
  */
31
- size?: 'xs' | 's' | 'm' | 'l';
32
+ size?: 'xs' | 's' | 'm' | 'l' | 'xl';
32
33
  /**
33
34
  * Unique ID associated with the avatar. Can be workspace ID, user ID, email, etc.
34
35
  */
@@ -0,0 +1,42 @@
1
+ import React, { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ import { AvatarProps } from '../../identity/Avatar/Avatar';
3
+ import './avatar-label.css';
4
+ /**
5
+ * Prop types for AvatarLabel
6
+ */
7
+ export interface AvatarLabelProps extends ComponentPropsWithoutRef<'div'> {
8
+ /**
9
+ * Aria label for the whole component when used as a link via
10
+ * `linkContent`. Only needed if the visible `label` text isn't already a
11
+ * sufficient accessible name.
12
+ */
13
+ ariaLabel?: string;
14
+ /**
15
+ * Props to pass to the Avatar component. `size` is set automatically
16
+ * based on AvatarLabel's own `size` prop and cannot be overridden here.
17
+ */
18
+ avatarProps?: Omit<AvatarProps, 'ariaLabel' | 'linkContent' | 'size'>;
19
+ /**
20
+ * Additional class names
21
+ */
22
+ className?: string;
23
+ /**
24
+ * Text label displayed next to the avatar.
25
+ */
26
+ label: React.ReactNode;
27
+ /**
28
+ * Optionally makes the whole component a link. Pass a fully-formed,
29
+ * router-agnostic link element (e.g. an anchor or your router's link
30
+ * component); the avatar and label render as its children, so clicking
31
+ * anywhere on either navigates.
32
+ */
33
+ linkContent?: ReactNode;
34
+ /**
35
+ * Controls both the avatar size and the label's text size.
36
+ */
37
+ size?: 'xs' | 's' | 'm';
38
+ }
39
+ /**
40
+ * AvatarLabel UI component
41
+ */
42
+ export declare const AvatarLabel: ({ ariaLabel, avatarProps, className, label, linkContent, size, ...props }: AvatarLabelProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { ComponentPropsWithoutRef } from 'react';
2
- import { AvatarProps } from '../Avatar/Avatar';
2
+ import { AvatarProps } from '../../identity/Avatar/Avatar';
3
3
  import './identity-block.css';
4
4
  /**
5
5
  * Prop types for IdentityBlock
@@ -34,9 +34,19 @@ export interface CheckboxProps extends ComponentPropsWithoutRef<'div'> {
34
34
  */
35
35
  inputProps?: ComponentPropsWithoutRef<'input'>;
36
36
  /**
37
- * Width of the input field in pixels. When omitted, the input fills its container.
37
+ * Maximum width of the input field in pixels. The input fills its
38
+ * container up to this cap, then shrinks below it rather than
39
+ * overflowing in a tight flex/grid layout. When omitted, the input
40
+ * fills its container with no cap.
38
41
  */
39
42
  inputWidth?: number;
43
+ /**
44
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
45
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
46
+ * instead of shrinking the input indefinitely. Has no effect without
47
+ * inputWidth, and no effect on its own without a wrapping layout.
48
+ */
49
+ inputWidthMin?: number;
40
50
  /**
41
51
  * Input label.
42
52
  */
@@ -26,9 +26,19 @@ export interface CheckboxGroupWrapperProps extends ComponentPropsWithoutRef<'div
26
26
  */
27
27
  id: string;
28
28
  /**
29
- * Max-width of the field. Accepts a number in pixels. Leave blank for width: 100%.
29
+ * Maximum width of the input field in pixels. The input fills its
30
+ * container up to this cap, then shrinks below it rather than
31
+ * overflowing in a tight flex/grid layout. When omitted, the input
32
+ * fills its container with no cap.
30
33
  */
31
34
  inputWidth?: number;
35
+ /**
36
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
37
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
38
+ * instead of shrinking the input indefinitely. Has no effect without
39
+ * inputWidth, and no effect on its own without a wrapping layout.
40
+ */
41
+ inputWidthMin?: number;
32
42
  /**
33
43
  * Field label. Will be rendered as the fieldset legend.
34
44
  */
@@ -69,4 +79,4 @@ export interface CheckboxGroupWrapperProps extends ComponentPropsWithoutRef<'div
69
79
  /**
70
80
  * CheckboxFieldset UI component
71
81
  */
72
- export declare const CheckboxFieldset: ({ children, className, disabled, fieldsetProps, id, inputWidth, label, labelVariant, message, required, showLabel, tooltipText, validationMessage, validationStatus, ...props }: CheckboxGroupWrapperProps) => import("react/jsx-runtime").JSX.Element;
82
+ export declare const CheckboxFieldset: ({ children, className, disabled, fieldsetProps, id, inputWidth, inputWidthMin, label, labelVariant, message, required, showLabel, tooltipText, validationMessage, validationStatus, ...props }: CheckboxGroupWrapperProps) => import("react/jsx-runtime").JSX.Element;
@@ -30,9 +30,19 @@ export interface CheckboxGroupProps extends ComponentPropsWithoutRef<'div'> {
30
30
  */
31
31
  id: string;
32
32
  /**
33
- * Max-width of the field. Accepts a number in pixels. Leave blank for width: 100%.
33
+ * Maximum width of the input field in pixels. The input fills its
34
+ * container up to this cap, then shrinks below it rather than
35
+ * overflowing in a tight flex/grid layout. When omitted, the input
36
+ * fills its container with no cap.
34
37
  */
35
38
  inputWidth?: number;
39
+ /**
40
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
41
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
42
+ * instead of shrinking the input indefinitely. Has no effect without
43
+ * inputWidth, and no effect on its own without a wrapping layout.
44
+ */
45
+ inputWidthMin?: number;
36
46
  /**
37
47
  * Field label. Will be rendered as the fieldset legend.
38
48
  */
@@ -85,4 +95,4 @@ export interface CheckboxGroupProps extends ComponentPropsWithoutRef<'div'> {
85
95
  /**
86
96
  * CheckboxGroup UI component
87
97
  */
88
- export declare const CheckboxGroup: ({ className, disabled, fieldsetProps, id, inputWidth, label, labelVariant, message, onGroupBlur, onValueChange, options, required, showLabel, tooltipText, validationMessage, validationStatus, ...props }: CheckboxGroupProps) => import("react/jsx-runtime").JSX.Element;
98
+ export declare const CheckboxGroup: ({ className, disabled, fieldsetProps, id, inputWidth, inputWidthMin, label, labelVariant, message, onGroupBlur, onValueChange, options, required, showLabel, tooltipText, validationMessage, validationStatus, ...props }: CheckboxGroupProps) => import("react/jsx-runtime").JSX.Element;
@@ -57,9 +57,19 @@ export interface ComboboxProps extends Omit<ComponentPropsWithoutRef<'div'>, 'on
57
57
  */
58
58
  id: string;
59
59
  /**
60
- * Width of the input field in pixels. When omitted, the input fills its container.
60
+ * Maximum width of the input field in pixels. The input fills its
61
+ * container up to this cap, then shrinks below it rather than
62
+ * overflowing in a tight flex/grid layout. When omitted, the input
63
+ * fills its container with no cap.
61
64
  */
62
65
  inputWidth?: number;
66
+ /**
67
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
68
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
69
+ * instead of shrinking the input indefinitely. Has no effect without
70
+ * inputWidth, and no effect on its own without a wrapping layout.
71
+ */
72
+ inputWidthMin?: number;
63
73
  /**
64
74
  * Are the options in the process of being loaded?
65
75
  */
@@ -51,9 +51,19 @@ export interface ComboboxMultiselectProps extends DivProps {
51
51
  */
52
52
  initialSelectedItems?: OptionProps[];
53
53
  /**
54
- * Width of the input field in pixels. When omitted, the input fills its container.
54
+ * Maximum width of the input field in pixels. The input fills its
55
+ * container up to this cap, then shrinks below it rather than
56
+ * overflowing in a tight flex/grid layout. When omitted, the input
57
+ * fills its container with no cap.
55
58
  */
56
59
  inputWidth?: number;
60
+ /**
61
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
62
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
63
+ * instead of shrinking the input indefinitely. Has no effect without
64
+ * inputWidth, and no effect on its own without a wrapping layout.
65
+ */
66
+ inputWidthMin?: number;
57
67
  /**
58
68
  * Are the options in the process of being loaded?
59
69
  */
@@ -106,5 +116,5 @@ export interface ComboboxMultiselectProps extends DivProps {
106
116
  /**
107
117
  * ComboboxMultiselect UI component
108
118
  */
109
- export declare const ComboboxMultiselect: ({ aiSuggestions, className, disabled, id, initialSelectedItems, inputWidth, isLoading, label, labelStrings, loadingText, noResultsText, onChange, options, placeholder, required, showAllTags, showLabel, size, ...props }: ComboboxMultiselectProps) => import("react/jsx-runtime").JSX.Element;
119
+ export declare const ComboboxMultiselect: ({ aiSuggestions, className, disabled, id, initialSelectedItems, inputWidth, inputWidthMin, isLoading, label, labelStrings, loadingText, noResultsText, onChange, options, placeholder, required, showAllTags, showLabel, size, ...props }: ComboboxMultiselectProps) => import("react/jsx-runtime").JSX.Element;
110
120
  export {};
@@ -127,11 +127,19 @@ interface DatepickerSharedProps extends DatepickerHTMLProps {
127
127
  */
128
128
  id: string;
129
129
  /**
130
- * Width of the input field in pixels. When omitted, the input fills its container.
131
- * Numbers below 160 will display at 160px.
132
- * Leave blank for width: 100%.
130
+ * Maximum width of the input field in pixels. The input fills its
131
+ * container up to this cap, then shrinks below it rather than
132
+ * overflowing in a tight flex/grid layout. When omitted, the input
133
+ * fills its container with no cap.
133
134
  */
134
135
  inputWidth?: number;
136
+ /**
137
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
138
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
139
+ * instead of shrinking the input indefinitely. Has no effect without
140
+ * inputWidth, and no effect on its own without a wrapping layout.
141
+ */
142
+ inputWidthMin?: number;
135
143
  /**
136
144
  * Input label.
137
145
  */
@@ -295,5 +303,5 @@ export type DatepickerProps = SingleDatepickerProps | RangeDatepickerProps;
295
303
  /**
296
304
  * Datepicker UI component.
297
305
  */
298
- export declare const Datepicker: ({ allowCustomRange, allowDateRangeSelection, className, disabled, footerNote, id, inputWidth, label, locale, maxDate, message, minDate, mode, onChange, placeholder, presets, required, showLabel, showPresetCalendar, showTime, showTimeZoneSwitcher, timeZone, tooltipText, translationStrings: translationStringsProp, validationMessage, validationStatus, value, visibleMonths, ...props }: DatepickerProps) => import("react/jsx-runtime").JSX.Element;
306
+ export declare const Datepicker: ({ allowCustomRange, allowDateRangeSelection, className, disabled, footerNote, id, inputWidth, inputWidthMin, label, locale, maxDate, message, minDate, mode, onChange, placeholder, presets, required, showLabel, showPresetCalendar, showTime, showTimeZoneSwitcher, timeZone, tooltipText, translationStrings: translationStringsProp, validationMessage, validationStatus, value, visibleMonths, ...props }: DatepickerProps) => import("react/jsx-runtime").JSX.Element;
299
307
  export {};
@@ -39,9 +39,19 @@ export interface FileUploadProps extends ComponentPropsWithoutRef<'div'> {
39
39
  */
40
40
  inputProps?: ComponentPropsWithoutRef<'input'>;
41
41
  /**
42
- * Width of the input field in pixels. When omitted, the input fills its container.
42
+ * Maximum width of the input field in pixels. The input fills its
43
+ * container up to this cap, then shrinks below it rather than
44
+ * overflowing in a tight flex/grid layout. When omitted, the input
45
+ * fills its container with no cap.
43
46
  */
44
47
  inputWidth?: number;
48
+ /**
49
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
50
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
51
+ * instead of shrinking the input indefinitely. Has no effect without
52
+ * inputWidth, and no effect on its own without a wrapping layout.
53
+ */
54
+ inputWidthMin?: number;
45
55
  /**
46
56
  * Translation strings for various labels or other visually-hidden text.
47
57
  */
@@ -44,9 +44,19 @@ export interface RadioGroupProps extends ComponentPropsWithoutRef<'div'> {
44
44
  */
45
45
  id: string;
46
46
  /**
47
- * Width of the input field in pixels. When omitted, the input fills its container.
47
+ * Maximum width of the input field in pixels. The input fills its
48
+ * container up to this cap, then shrinks below it rather than
49
+ * overflowing in a tight flex/grid layout. When omitted, the input
50
+ * fills its container with no cap.
48
51
  */
49
52
  inputWidth?: number;
53
+ /**
54
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
55
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
56
+ * instead of shrinking the input indefinitely. Has no effect without
57
+ * inputWidth, and no effect on its own without a wrapping layout.
58
+ */
59
+ inputWidthMin?: number;
50
60
  /**
51
61
  * Label for the radio group
52
62
  */
@@ -109,4 +119,4 @@ export interface RadioGroupProps extends ComponentPropsWithoutRef<'div'> {
109
119
  /**
110
120
  * RadioGroup UI component
111
121
  */
112
- export declare const RadioGroup: ({ className, defaultValue, disabled, fieldsetProps, id, inputWidth, label, labelVariant, message, onBlur, onChange, onValueChange, options, required, showLabel, tooltipText, validationMessage, validationStatus, value, ...props }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
122
+ export declare const RadioGroup: ({ className, defaultValue, disabled, fieldsetProps, id, inputWidth, inputWidthMin, label, labelVariant, message, onBlur, onChange, onValueChange, options, required, showLabel, tooltipText, validationMessage, validationStatus, value, ...props }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
@@ -46,7 +46,13 @@ interface SelectOptionGroupProps {
46
46
  */
47
47
  export interface SelectProps {
48
48
  /**
49
- * Automatically resize the select to fit the longest option label. Defaults to false (width: 100%).
49
+ * Automatically resize the select to fit the longest option label. Defaults
50
+ * to false (width: 100%). Has no effect when `inputWidth` is set — the two
51
+ * are mutually exclusive: `autoWidth` sizes to the options' own content,
52
+ * `inputWidth` sizes to a cap you choose. Use `autoWidth` for a compact
53
+ * select whose size should track its options (e.g. a short list of terse
54
+ * values); use `inputWidth` (with `inputWidthMin` if the row wraps) when
55
+ * the select needs to fit a specific layout regardless of option length.
50
56
  */
51
57
  autoWidth?: boolean;
52
58
  /**
@@ -70,9 +76,20 @@ export interface SelectProps {
70
76
  */
71
77
  id: string;
72
78
  /**
73
- * Width of the input field in pixels. When omitted, the input fills its container.
79
+ * Maximum width of the input field in pixels. The input fills its
80
+ * container up to this cap, then shrinks below it rather than
81
+ * overflowing in a tight flex/grid layout. When omitted, the input
82
+ * fills its container with no cap. Takes precedence over `autoWidth`
83
+ * when both are set — see `autoWidth` for when to use each.
74
84
  */
75
85
  inputWidth?: number;
86
+ /**
87
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
88
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
89
+ * instead of shrinking the input indefinitely. Has no effect without
90
+ * inputWidth, and no effect on its own without a wrapping layout.
91
+ */
92
+ inputWidthMin?: number;
76
93
  /**
77
94
  * Field label.
78
95
  */
@@ -141,5 +158,5 @@ export declare const SelectOptionGroup: ({ children, label, }: SelectOptionGroup
141
158
  /**
142
159
  * Select UI component
143
160
  */
144
- export declare const Select: ({ autoWidth, className, defaultValue, disabled, icon, id, inputWidth, label, labelStrings, message, onBlur, onFocus, onOptionSelect, options, required, showLabel, showSelectedIcon, size, tooltipText, validationMessage, validationStatus, value, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element;
161
+ export declare const Select: ({ autoWidth, className, defaultValue, disabled, icon, id, inputWidth, inputWidthMin, label, labelStrings, message, onBlur, onFocus, onOptionSelect, options, required, showLabel, showSelectedIcon, size, tooltipText, validationMessage, validationStatus, value, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element;
145
162
  export {};
@@ -29,9 +29,19 @@ export interface SwitchProps extends ComponentPropsWithoutRef<'div'> {
29
29
  */
30
30
  inputProps?: ComponentPropsWithoutRef<'input'>;
31
31
  /**
32
- * Width of the input field in pixels. When omitted, the input fills its container.
32
+ * Maximum width of the input field in pixels. The input fills its
33
+ * container up to this cap, then shrinks below it rather than
34
+ * overflowing in a tight flex/grid layout. When omitted, the input
35
+ * fills its container with no cap.
33
36
  */
34
37
  inputWidth?: number;
38
+ /**
39
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
40
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
41
+ * instead of shrinking the input indefinitely. Has no effect without
42
+ * inputWidth, and no effect on its own without a wrapping layout.
43
+ */
44
+ inputWidthMin?: number;
35
45
  /**
36
46
  * Label of the switch field.
37
47
  */
@@ -42,9 +42,19 @@ export interface TagsInputProps extends DivProps {
42
42
  */
43
43
  inputMinHeight?: number;
44
44
  /**
45
- * Width of the input field in pixels. When omitted, the input fills its container.
45
+ * Maximum width of the input field in pixels. The input fills its
46
+ * container up to this cap, then shrinks below it rather than
47
+ * overflowing in a tight flex/grid layout. When omitted, the input
48
+ * fills its container with no cap.
46
49
  */
47
50
  inputWidth?: number;
51
+ /**
52
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
53
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
54
+ * instead of shrinking the input indefinitely. Has no effect without
55
+ * inputWidth, and no effect on its own without a wrapping layout.
56
+ */
57
+ inputWidthMin?: number;
48
58
  /**
49
59
  * Should tags be sortable via drag-and-drop and keyboard shortcuts? Defaults to false.
50
60
  */
@@ -56,9 +56,19 @@ export interface TextInputProps extends ComponentPropsWithoutRef<'div'> {
56
56
  */
57
57
  inputProps?: ComponentPropsWithoutRef<'input'>;
58
58
  /**
59
- * Width of the input field in pixels. When omitted, the input fills its container.
59
+ * Maximum width of the input field in pixels. The input fills its
60
+ * container up to this cap, then shrinks below it rather than
61
+ * overflowing in a tight flex/grid layout. When omitted, the input
62
+ * fills its container with no cap.
60
63
  */
61
64
  inputWidth?: number;
65
+ /**
66
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
67
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
68
+ * instead of shrinking the input indefinitely. Has no effect without
69
+ * inputWidth, and no effect on its own without a wrapping layout.
70
+ */
71
+ inputWidthMin?: number;
62
72
  /**
63
73
  * Input label.
64
74
  */
@@ -31,9 +31,19 @@ export interface TextareaProps {
31
31
  */
32
32
  id: string;
33
33
  /**
34
- * Width of the input field in pixels. When omitted, the input fills its container.
34
+ * Maximum width of the input field in pixels. The input fills its
35
+ * container up to this cap, then shrinks below it rather than
36
+ * overflowing in a tight flex/grid layout. When omitted, the input
37
+ * fills its container with no cap.
35
38
  */
36
39
  inputWidth?: number;
40
+ /**
41
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
42
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
43
+ * instead of shrinking the input indefinitely. Has no effect without
44
+ * inputWidth, and no effect on its own without a wrapping layout.
45
+ */
46
+ inputWidthMin?: number;
37
47
  /**
38
48
  * Should the textarea be resizable by the user?
39
49
  */
@@ -32,9 +32,19 @@ export interface TimepickerProps {
32
32
  */
33
33
  id: string;
34
34
  /**
35
- * Width of the input field in pixels. When omitted, the input fills its container.
35
+ * Maximum width of the input field in pixels. The input fills its
36
+ * container up to this cap, then shrinks below it rather than
37
+ * overflowing in a tight flex/grid layout. When omitted, the input
38
+ * fills its container with no cap.
36
39
  */
37
40
  inputWidth?: number;
41
+ /**
42
+ * Minimum width of the input field in pixels, in a tight flex/grid layout
43
+ * that wraps (e.g. flexWrap="wrap"). Gives the row a real point to wrap at
44
+ * instead of shrinking the input indefinitely. Has no effect without
45
+ * inputWidth, and no effect on its own without a wrapping layout.
46
+ */
47
+ inputWidthMin?: number;
38
48
  /**
39
49
  * Input label.
40
50
  */
@@ -91,4 +101,4 @@ export interface TimepickerProps {
91
101
  /**
92
102
  * Timepicker UI component
93
103
  */
94
- export declare const Timepicker: ({ anchorDate, className, defaultValue, disabled, hourCycle, id, inputWidth, label, message, onBlur, onChange, onFocus, required, showLabel, size, timeZone, tooltipText, validationMessage, validationStatus, value, }: TimepickerProps) => import("react/jsx-runtime").JSX.Element;
104
+ export declare const Timepicker: ({ anchorDate, className, defaultValue, disabled, hourCycle, id, inputWidth, inputWidthMin, label, message, onBlur, onChange, onFocus, required, showLabel, size, timeZone, tooltipText, validationMessage, validationStatus, value, }: TimepickerProps) => import("react/jsx-runtime").JSX.Element;
@@ -13,6 +13,11 @@ export declare const inputCommonClasses: {
13
13
  export declare const getInputWidthStyle: (inputWidth: number) => {
14
14
  width: string;
15
15
  };
16
+ export declare const getMaxInputWidthStyle: (inputWidth: number, inputWidthMin?: number) => {
17
+ minWidth: string;
18
+ width: string;
19
+ maxWidth: string;
20
+ };
16
21
  export declare const stripUrlProtocol: (value: string) => string;
17
22
  export declare const RequiredIcon: () => import("react/jsx-runtime").JSX.Element;
18
23
  interface InputLabelProps {
@@ -10,14 +10,14 @@ export interface ButtonNavProps extends ComponentPropsWithRef<'nav'> {
10
10
  * Aria label for the navigation.
11
11
  */
12
12
  ariaLabel: string;
13
- /**
14
- * Renders a border around the track. Off by default.
15
- */
16
- border?: boolean;
17
13
  /**
18
14
  * Additional class names
19
15
  */
20
16
  className?: string;
17
+ /**
18
+ * Renders a border around the track. Off by default.
19
+ */
20
+ hasBorder?: boolean;
21
21
  /**
22
22
  * When true, renders a dropdown menu in place of the button group at mobile viewports.
23
23
  * The mobile breakpoint is controlled by the `mobileBreakpoint` prop on `GlobalWrapper`.
@@ -32,4 +32,4 @@ export interface ButtonNavProps extends ComponentPropsWithRef<'nav'> {
32
32
  /**
33
33
  * ButtonNav UI component
34
34
  */
35
- export declare const ButtonNav: ({ ariaLabel, border, className, hasMobileDropdown, menuItems, ...props }: ButtonNavProps) => import("react/jsx-runtime").JSX.Element;
35
+ export declare const ButtonNav: ({ ariaLabel, className, hasBorder, hasMobileDropdown, menuItems, ...props }: ButtonNavProps) => import("react/jsx-runtime").JSX.Element;
@@ -40,7 +40,9 @@ export interface ModalProps extends ComponentPropsWithoutRef<'div'> {
40
40
  */
41
41
  setModalIsOpen?: (isOpen: boolean) => void;
42
42
  /**
43
- * The width of the modal.
43
+ * The width of the modal at the medium breakpoint and above. Below that
44
+ * (`--pds-bp-s-only`), every size renders at the same width regardless
45
+ * of this prop.
44
46
  */
45
47
  size?: 's' | 'm' | 'l' | 'xl';
46
48
  /**