@pantheon-systems/pds-toolkit-react 2.0.0-alpha.84 → 2.0.0-alpha.86

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 (34) hide show
  1. package/codemods/v1-to-v2/mappings.json +25 -14
  2. package/dist/components/Popover/Popover.d.ts +2 -2
  3. package/dist/components/Table/Table.d.ts +30 -9
  4. package/dist/components/Tooltip/Tooltip.d.ts +10 -3
  5. package/dist/components/icons/Icon/generated-icon-data.d.ts +9 -2
  6. package/dist/components/inputs/Datepicker/Datepicker.d.ts +16 -1
  7. package/dist/components/panels/PanelList/PanelList.d.ts +1 -1
  8. package/dist/components/panels/WorkspaceSelectorPanel/WorkspaceSelectorPanel.d.ts +57 -0
  9. package/dist/css/component-css/pds-Table.stories.css +1 -0
  10. package/dist/css/component-css/pds-banner.css +1 -1
  11. package/dist/css/component-css/pds-button.css +1 -1
  12. package/dist/css/component-css/pds-icon.css +1 -1
  13. package/dist/css/component-css/pds-index.css +12 -12
  14. package/dist/css/component-css/pds-input-group.css +1 -1
  15. package/dist/css/component-css/pds-panel-list.css +1 -1
  16. package/dist/css/component-css/pds-panel.css +1 -1
  17. package/dist/css/component-css/pds-select.css +1 -1
  18. package/dist/css/component-css/pds-site-footer.css +1 -1
  19. package/dist/css/component-css/pds-table.css +3 -3
  20. package/dist/css/component-css/pds-toaster.css +1 -1
  21. package/dist/css/component-css/pds-utility-button.css +2 -2
  22. package/dist/css/component-css/pds-workspace-selector-panel.css +1 -0
  23. package/dist/css/component-css/pds-workspace-selector.css +1 -1
  24. package/dist/css/pds-components.css +12 -12
  25. package/dist/css/pds-core.css +1 -1
  26. package/dist/index.css +1 -1
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +1626 -1518
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.source.d.ts +1 -0
  31. package/dist/libs/components/WorkspaceListItem/WorkspaceListItem.d.ts +40 -0
  32. package/dist/libs/types/custom-types.d.ts +1 -1
  33. package/dist/svg/folders.svg +3 -0
  34. package/package.json +3 -2
@@ -260,7 +260,7 @@
260
260
  "component": "Icon",
261
261
  "from": "iconSize",
262
262
  "to": "size",
263
- "reason": "The iconSize prop has been renamed to size for consistency across V2 icon components. The default ('l') is unchanged, but the 'xs' (10px) value has been removed (see props.typeChanges) use 's' instead."
263
+ "reason": "The iconSize prop has been renamed to size for consistency across V2 icon components. The size scale has since been redesigned (see props.typeChanges) the current default is 'xl' (20px), not v1's default 'l'/20px directly, since every step was renumbered along the way. Net effect for a v1 consumer migrating straight to the current scale: the rendered default size is unchanged (20px), only its name changed."
264
264
  },
265
265
  {
266
266
  "component": "CloseButton",
@@ -272,7 +272,7 @@
272
272
  "component": "PlatformIcon",
273
273
  "from": "iconSize",
274
274
  "to": "size",
275
- "reason": "The iconSize prop has been renamed to size for consistency with V2 component conventions. Size values have also changed to align with the Icon component scale — 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl' — replacing the previous 1.2× ratio scale. The pixel sizes for 'l', 'xl', and '2xl' are different: l is now 1.25rem (was 1.2rem), xl is 1.5rem (was 1.44rem), 2xl is 2rem (was 1.728rem)."
275
+ "reason": "The iconSize prop has been renamed to size for consistency with V2 component conventions. Size values have also changed to align with the Icon component's scale at the time — 'xs', 's', 'm', 'l', 'xl', '2xl', '3xl' — replacing the previous 1.2× ratio scale. The pixel sizes for 'l', 'xl', and '2xl' are different: l is now 1.25rem (was 1.2rem), xl is 1.5rem (was 1.44rem), 2xl is 2rem (was 1.728rem). Note: Icon's own scale has since been redesigned again (see Icon's props.typeChanges) and PlatformIcon was not updated to match — PlatformIcon keeps this xs/s/m/l/xl/2xl/3xl (10-40px) scale, independently of Icon's current one."
276
276
  },
277
277
  {
278
278
  "component": "FileDiff",
@@ -619,6 +619,12 @@
619
619
  "prop": "allowDateRangeSelection",
620
620
  "description": "New prop controlling whether range mode may select a span of days. Defaults to true (unchanged two-click behavior). Set to false to constrain the calendar to a single day per selection: one click picks that day as both the start and the end. The emitted value stays a DateRange, covering the whole day when showTime is set.",
621
621
  "usage": "Set allowDateRangeSelection={false} on a mode='range' picker where a multi-day span is meaningless or unsupported. It composes with presets (whose entries still compute their own multi-day ranges) and has no effect in single mode."
622
+ },
623
+ {
624
+ "component": "Datepicker",
625
+ "prop": "defaultPresetLabel",
626
+ "description": "New optional prop naming which presets entry (by its own label) starts out active. The named preset renders pressed in the list, its computed range seeds the selection so the calendar opens on it, and the trigger renders as a real selection rather than muted placeholder text. onChange is deliberately not called for this initial value. Mount-only, like defaultValue on an HTML input, and a no-op (development warning only) when the label matches no entry.",
627
+ "usage": "Set defaultPresetLabel to one of your presets' labels when the surface's underlying query already has a default window (e.g. a log viewer defaulting to the last 15 minutes), so the trigger reports what is actually on screen. Read your own initial state from the same constant you pass here rather than waiting for onChange. Requires presets and mode='range'."
622
628
  }
623
629
  ],
624
630
  "removals": [
@@ -860,7 +866,7 @@
860
866
  "v1Default": "'sm'",
861
867
  "v2Default": "'m'",
862
868
  "reason": "Default trigger icon size changed from 'sm' to 'm' to align with new standardized size naming and provide better default visibility.",
863
- "migration": "If you relied on the default trigger icon size being small, explicitly pass triggerIconSize='s' to maintain the v1 appearance."
869
+ "migration": "If you relied on the default trigger icon size being small, explicitly pass triggerIconSize='xs' to maintain the v1 appearance (the Icon size scale has since been redesigned — 'xs' is the current name for that same 12px size, not 's', which now means 14px)."
864
870
  },
865
871
  {
866
872
  "component": "ComparisonList",
@@ -891,13 +897,18 @@
891
897
  {
892
898
  "component": "Icon",
893
899
  "prop": "size",
894
- "description": "The 'xs' size value has been removed",
895
- "v1Type": "'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl'",
896
- "v2Type": "'s' | 'm' | 'l' | 'xl' | '2xl' | '3xl'",
900
+ "description": "Size scale redesigned twice since v1 — first the 10px 'xs' was dropped (early V2), then the whole scale was later redone to align with the typography scale, reintroducing an 'xs' step at a different (12px) value. This entry describes the net v1 → current-V2 delta.",
901
+ "v1Type": "'xs' (10px) | 's' (12px) | 'm' (16px) | 'l' (20px) | 'xl' (24px) | '2xl' (32px) | '3xl' (40px)",
902
+ "v2Type": "'xs' (12px) | 's' (14px) | 'm' (16px) | 'l' (18px) | 'xl' (20px) | '2xl' (24px) | '3xl' (28px) | '4xl' (32px)",
897
903
  "migration": {
898
- "xs": "s (removed, use 's' instead)"
904
+ "xs": "xs (v1's 10px 'xs' was removed at the initial V2 release, with 's'/12px as the recommended substitute at the time; that same 12px slot is now named 'xs' again — use size='xs' for the closest available match)",
905
+ "s": "xs (same 12px value, renamed)",
906
+ "l": "xl (same 20px value, renamed)",
907
+ "xl": "2xl (same 24px value, renamed)",
908
+ "2xl": "4xl (same 32px value, renamed)",
909
+ "3xl": "removed, no replacement (40px step retired; nearest available is '4xl' at 32px)"
899
910
  },
900
- "reason": "The 10px 'xs' icon size has been removed in v2. It had a single internal usage (the TagsInput remove button, now 's'/12px) and is superseded by 's'. Use size='s' instead."
911
+ "reason": "V1's 10px 'xs' was removed at the initial V2 release (superseded by 's', then 12px). V2's scale was later redesigned to align with the typography scale: every remaining name shifted up one step to keep its pixel value, three new in-between sizes were added ('s' 14px, 'l' 18px, '3xl' 28px), 'xs' was reintroduced at 12px (unrelated to v1's 10px 'xs'), and the old 40px '3xl' step was retired with no replacement."
901
912
  },
902
913
  {
903
914
  "component": "FlexContainer",
@@ -1133,15 +1144,15 @@
1133
1144
  {
1134
1145
  "component": "Tooltip",
1135
1146
  "prop": "triggerIconSize",
1136
- "description": "Size naming convention updated to match standardized naming",
1147
+ "description": "Size naming convention updated to match standardized naming, then later widened to accept the full redesigned Icon size scale.",
1137
1148
  "v1Type": "'sm' | 'md' | 'lg'",
1138
- "v2Type": "'s' | 'm' | 'l'",
1149
+ "v2Type": "IconSize ('xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl')",
1139
1150
  "migration": {
1140
- "sm": "s",
1141
- "md": "m",
1142
- "lg": "l"
1151
+ "sm": "xs (same 12px value — was briefly 's' under the initial V2 scale, since renamed)",
1152
+ "md": "m (unchanged, 16px)",
1153
+ "lg": "xl (same 20px value — was briefly 'l' under the initial V2 scale, since renamed)"
1143
1154
  },
1144
- "reason": "Standardized size naming across all components. The 'sm', 'md', and 'lg' values have been shortened to 's', 'm', and 'l' for consistency."
1155
+ "reason": "Standardized size naming across all components at the initial V2 release ('sm'/'md'/'lg' 's'/'m'/'l'), then the prop's type was widened to the full Icon size scale once that scale was redesigned to align with typography sizes — every retained value keeps its pixel size but was renamed again in the process (see Icon's props.typeChanges for the full picture)."
1145
1156
  },
1146
1157
  {
1147
1158
  "component": "Badge",
@@ -1,5 +1,5 @@
1
1
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
- import { FuiPlacement } from '../../libs/types/custom-types';
2
+ import { FuiPlacement, IconSize } from '../../libs/types/custom-types';
3
3
  import './popover.css';
4
4
  export interface PopoverProps extends Omit<ComponentPropsWithoutRef<'div'>, 'content'> {
5
5
  /**
@@ -61,7 +61,7 @@ export interface PopoverProps extends Omit<ComponentPropsWithoutRef<'div'>, 'con
61
61
  /**
62
62
  * Size of the trigger icon. Uses PDS Icon sizing.
63
63
  */
64
- triggerIconSize?: 's' | 'm' | 'l';
64
+ triggerIconSize?: IconSize;
65
65
  }
66
66
  /**
67
67
  * Popover UI component
@@ -47,8 +47,24 @@ export interface TableColumn {
47
47
  * `hasMobileDetailSheet`). Has no effect above the mobile breakpoint.
48
48
  */
49
49
  cardVisible?: boolean;
50
+ /**
51
+ * Additional class name applied to this column's body `<td>` cells
52
+ * (including loading-state skeleton cells). Use for column-specific
53
+ * styling — width, `white-space: nowrap`, padding — that can't be
54
+ * expressed by a prop, without reaching into the table's rendered
55
+ * markup from outside with `:nth-child` selectors. Has no effect on
56
+ * mobile cards.
57
+ */
58
+ cellClassName?: string;
50
59
  /** Content to display in the header cell. */
51
60
  header: ReactNode;
61
+ /**
62
+ * Additional class name applied to this column's `<th>` header cell.
63
+ * See `cellClassName` for the equivalent on body cells — a column
64
+ * needing the same styling in both (e.g. a shared width, for
65
+ * alignment) should pass the same class to both props.
66
+ */
67
+ headerClassName?: string;
52
68
  /** Stable identifier used for rendering cell content from rowData. */
53
69
  id: string;
54
70
  /** When true, renders a sort button next to the header label. */
@@ -85,6 +101,11 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
85
101
  * Only applies in uncontrolled sort mode.
86
102
  */
87
103
  defaultSortOrder?: SortOrder;
104
+ /**
105
+ * Cell padding density. `'compact'` reduces padding for denser data
106
+ * tables. Has no effect on mobile cards (see `hasMobileCards`).
107
+ */
108
+ density?: 'standard' | 'compact';
88
109
  /**
89
110
  * When `true` (default), renders built-in prev/next navigation buttons in
90
111
  * the detail panel footer. Set to `false` to hide the footer entirely.
@@ -211,6 +232,14 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
211
232
  * a sheet and keeps calling `onRowInspect` directly, matching desktop.
212
233
  */
213
234
  hasMobileDetailSheet?: boolean;
235
+ /**
236
+ * When true, renders the table inside a Panel with no padding. Automatically
237
+ * applies first-column spacing and removes the last row's bottom border so
238
+ * it doesn't double up against the footer border. Has no effect at the
239
+ * mobile breakpoint (see `hasMobileCards`) — cards sit flush against the
240
+ * page background instead of inside a Panel.
241
+ */
242
+ hasPanel?: boolean;
214
243
  /**
215
244
  * ID of the currently inspected row. When provided, that row receives a
216
245
  * highlighted background. Use the same ID space as `getRowId`. Only
@@ -314,14 +343,6 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
314
343
  * English defaults are used. Override for translation.
315
344
  */
316
345
  paginationLabels?: PaginationCompactProps['labelStrings'];
317
- /**
318
- * When true, renders the table inside a Panel with no padding. Automatically
319
- * applies first-column spacing and removes the last row's bottom border so
320
- * it doesn't double up against the footer border. Has no effect at the
321
- * mobile breakpoint (see `hasMobileCards`) — cards sit flush against the
322
- * page background instead of inside a Panel.
323
- */
324
- panel?: boolean;
325
346
  /**
326
347
  * Accessible label for the detail panel "previous row" button.
327
348
  * Defaults to `'Previous row'`. Override for translation.
@@ -372,4 +393,4 @@ export interface TableProps extends ComponentPropsWithoutRef<'table'> {
372
393
  */
373
394
  totalItemCount?: number;
374
395
  }
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;
396
+ export declare const Table: ({ className, closeDetailPanelLabel, columns, currentPage, defaultSortKey, defaultSortOrder, density, detailPanelNav, detailPanelTitle, detailPanelWidth, emptyState, emptyStateHeading, emptyStateMessage, footer, getDetailPanelPositionLabel, getPageSizeLabel, getRowClassName, getRowId, getRowSelectDisabledReason, getSelectRowLabel, getSortLabel, hasDesktopDetailPanel, hasMobileCards, hasMobileDetailSheet, hasPanel, inspectedRowId, isLoading, isRowSelectable, itemsPerPage, loadingRowCount, maxHeight, minHeight, nextDetailPanelRowLabel, onDetailPanelNext, onDetailPanelPrev, onPageChange, onPageSizeChange, onRowInspect, onRowSelectionChange, onSort, pageSizeOptions, pageSizeSelectLabel, paginationLabels, prevDetailPanelRowLabel, renderDetailPanel, renderDetailPanelFooter, rowData, selectAllLabel, selectedRows, sortKey, sortOrder, totalItemCount, ...props }: TableProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
2
  import { Placement } from '@floating-ui/react';
3
- import { FuiOffset } from '../../libs/types/custom-types';
3
+ import { FuiOffset, IconSize } from '../../libs/types/custom-types';
4
4
  import './tooltip.css';
5
5
  interface TooltipProps extends ComponentPropsWithoutRef<'div'> {
6
6
  /**
@@ -19,6 +19,13 @@ interface TooltipProps extends ComponentPropsWithoutRef<'div'> {
19
19
  * When true, the tooltip will not show on focus — only on hover.
20
20
  */
21
21
  disableFocusTrigger?: boolean;
22
+ /**
23
+ * When true, the tooltip will not show on tap on touch devices. Use this
24
+ * when the trigger (or its wrapping element) already has its own tap
25
+ * action — e.g. an icon-only button — so a plain tap only performs that
26
+ * action and never also reveals the tooltip.
27
+ */
28
+ disableTapTrigger?: boolean;
22
29
  /**
23
30
  * The spacing between the trigger and the tooltip in pixels. Use the default value (in most cases) when using an icon trigger.
24
31
  */
@@ -42,7 +49,7 @@ interface TooltipProps extends ComponentPropsWithoutRef<'div'> {
42
49
  /**
43
50
  * Size of the trigger icon. Uses PDS Icon sizing.
44
51
  */
45
- triggerIconSize?: 's' | 'm' | 'l';
52
+ triggerIconSize?: IconSize;
46
53
  /**
47
54
  * Z-index value for the tooltip container. In most cases, the default value should be retained.
48
55
  */
@@ -51,5 +58,5 @@ interface TooltipProps extends ComponentPropsWithoutRef<'div'> {
51
58
  /**
52
59
  * Tooltip UI component
53
60
  */
54
- export declare const Tooltip: ({ className, content, customTrigger, disableFocusTrigger, offsetValue, preferredPlacement, triggerAccessibleText, triggerIcon, triggerIconColor, triggerIconSize, zIndex, ...props }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
61
+ export declare const Tooltip: ({ className, content, customTrigger, disableFocusTrigger, disableTapTrigger, offsetValue, preferredPlacement, triggerAccessibleText, triggerIcon, triggerIconColor, triggerIconSize, zIndex, ...props }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
55
62
  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-10T19:48:36.643Z
6
+ * Generated: 2026-09-14T19:57:38.047Z
7
7
  */
8
8
  import { customIcons } from './custom-icons';
9
9
  export { customIcons };
@@ -813,6 +813,13 @@ export declare const iconData: {
813
813
  readonly svgPathData: "M64 400l384 0c8.8 0 16-7.2 16-16l0-240c0-8.8-7.2-16-16-16l-149.3 0c-17.3 0-34.2-5.6-48-16L212.3 83.2c-2.8-2.1-6.1-3.2-9.6-3.2L64 80c-8.8 0-16 7.2-16 16l0 288c0 8.8 7.2 16 16 16zm384 48L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64z";
814
814
  readonly width: 512;
815
815
  };
816
+ readonly folders: {
817
+ readonly aliases: readonly ["directories", "workspaces"];
818
+ readonly categories: readonly ["documents"];
819
+ readonly height: 512;
820
+ readonly svgPathData: "M512 336l-352 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l35.9 35.9c15 15 35.4 23.4 56.6 23.4L512 112c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16zM160 384l352 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64L381.3 64c-8.5 0-16.6-3.4-22.6-9.4L322.7 18.7C310.7 6.7 294.5 0 277.5 0L160 0C124.7 0 96 28.7 96 64l0 256c0 35.3 28.7 64 64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 416c0 35.3 28.7 64 64 64l392 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L64 432c-8.8 0-16-7.2-16-16l0-296z";
821
+ readonly width: 576;
822
+ };
816
823
  readonly folderTree: {
817
824
  readonly aliases: readonly ["file tree", "directory tree"];
818
825
  readonly categories: readonly ["development", "documents", "navigation"];
@@ -1633,7 +1640,7 @@ export declare const iconData: {
1633
1640
  readonly width: 576;
1634
1641
  };
1635
1642
  };
1636
- export declare const iconList: readonly ["angleDown", "angleLeft", "angleRight", "anglesDown", "anglesLeft", "anglesRight", "anglesUp", "angleUp", "arrowDownToLine", "arrowDownWideShort", "arrowLeft", "arrowRight", "arrowsRetweet", "arrowUpShortWide", "asterisk", "banBug", "bars", "barsFilter", "barsStaggered", "bell", "billboard", "bitbucket", "bluesky", "bolt", "boltPantheon", "boltSolid", "book", "bookmark", "bookmarkSolid", "books", "box", "bracketRight", "bracketsSquare", "brainCircuit", "broomWide", "building", "buildings", "bullhorn", "calendarDays", "caretDown", "caretLeft", "caretRight", "caretUp", "ccAmex", "ccApplePay", "ccDiscover", "ccGeneric", "ccMC", "ccPaypal", "ccVisa", "chartLine", "chartNetwork", "chartSimple", "check", "circle", "circleCheck", "circleExclamation", "circleExclamationSolid", "circleHalfStroke", "circleInfo", "circleInfoSolid", "circleMinus", "circleNotch", "circlePlus", "circleQuestion", "circleQuestionSolid", "circleUser", "circleXmark", "claude", "clock", "cloud", "cloudArrowDown", "cloudArrowUp", "cloudPlus", "code", "codeBranch", "codeMerge", "collapseToCenter", "command", "comment", "compress", "copy", "desktop", "diagramVenn", "diamondExclamation", "diamonds4", "discourse", "display", "dollarSign", "download", "drupal", "ellipsis", "ellipsisVertical", "emptySet", "envelope", "envelopeOpen", "exclamation", "expand", "expandFromCenter", "externalLink", "eye", "eyeSlash", "facebook", "file", "fileCheck", "fileContract", "fileCSV", "fileDiff", "fileExport", "fileImport", "fileLines", "filePDF", "fileZip", "floppyDisk", "folder", "folderTree", "gear", "gem", "github", "gitlab", "globe", "graduationCap", "grid", "grid2", "gripDots", "gripDotsVertical", "heart", "heartSolid", "house", "idCard", "image", "inputText", "instagram", "keySkeleton", "landmark", "laptop", "laptopCode", "leaf", "lifeRing", "link", "linkedin", "listCheck", "locationCrosshairs", "lock", "lockOpen", "magnifyingGlass", "medal", "memo", "messages", "minus", "moon", "move", "nextJs", "octagonExclamation", "openai", "paperclip", "paperPlane", "pause", "pen", "penField", "penPaintbrush", "phone", "play", "plus", "question", "quotesLeft", "quotesRight", "rectangleList", "reply", "robot", "rocketLaunch", "rotate", "rotateClock", "rotateLeft", "rotateRight", "rss", "save", "server", "shareNodes", "shield", "shieldQuartered", "shovel", "sidebar", "siren", "sirenOn", "sitemap", "slack", "slashForward", "slider", "slidersSimple", "snowflake", "sparkles", "squareCheck", "squareCode", "squareDashed", "squareMinus", "squarePen", "squareQuestion", "squareTerminal", "star", "starSolid", "sun", "sunBright", "table", "tableColumns", "tableRows", "terminal", "text", "threads", "thumbsDown", "thumbsUp", "trash", "triangleExclamation", "twitter", "unlink", "upload", "user", "userAstronaut", "userGear", "userPlus", "users", "userSolid", "video", "wavePulse", "windowRestore", "wordpress", "wreathLaurel", "wrench", "xmark", "xmarkLarge", "xTwitter", "youtube"];
1643
+ export declare const iconList: readonly ["angleDown", "angleLeft", "angleRight", "anglesDown", "anglesLeft", "anglesRight", "anglesUp", "angleUp", "arrowDownToLine", "arrowDownWideShort", "arrowLeft", "arrowRight", "arrowsRetweet", "arrowUpShortWide", "asterisk", "banBug", "bars", "barsFilter", "barsStaggered", "bell", "billboard", "bitbucket", "bluesky", "bolt", "boltPantheon", "boltSolid", "book", "bookmark", "bookmarkSolid", "books", "box", "bracketRight", "bracketsSquare", "brainCircuit", "broomWide", "building", "buildings", "bullhorn", "calendarDays", "caretDown", "caretLeft", "caretRight", "caretUp", "ccAmex", "ccApplePay", "ccDiscover", "ccGeneric", "ccMC", "ccPaypal", "ccVisa", "chartLine", "chartNetwork", "chartSimple", "check", "circle", "circleCheck", "circleExclamation", "circleExclamationSolid", "circleHalfStroke", "circleInfo", "circleInfoSolid", "circleMinus", "circleNotch", "circlePlus", "circleQuestion", "circleQuestionSolid", "circleUser", "circleXmark", "claude", "clock", "cloud", "cloudArrowDown", "cloudArrowUp", "cloudPlus", "code", "codeBranch", "codeMerge", "collapseToCenter", "command", "comment", "compress", "copy", "desktop", "diagramVenn", "diamondExclamation", "diamonds4", "discourse", "display", "dollarSign", "download", "drupal", "ellipsis", "ellipsisVertical", "emptySet", "envelope", "envelopeOpen", "exclamation", "expand", "expandFromCenter", "externalLink", "eye", "eyeSlash", "facebook", "file", "fileCheck", "fileContract", "fileCSV", "fileDiff", "fileExport", "fileImport", "fileLines", "filePDF", "fileZip", "floppyDisk", "folder", "folders", "folderTree", "gear", "gem", "github", "gitlab", "globe", "graduationCap", "grid", "grid2", "gripDots", "gripDotsVertical", "heart", "heartSolid", "house", "idCard", "image", "inputText", "instagram", "keySkeleton", "landmark", "laptop", "laptopCode", "leaf", "lifeRing", "link", "linkedin", "listCheck", "locationCrosshairs", "lock", "lockOpen", "magnifyingGlass", "medal", "memo", "messages", "minus", "moon", "move", "nextJs", "octagonExclamation", "openai", "paperclip", "paperPlane", "pause", "pen", "penField", "penPaintbrush", "phone", "play", "plus", "question", "quotesLeft", "quotesRight", "rectangleList", "reply", "robot", "rocketLaunch", "rotate", "rotateClock", "rotateLeft", "rotateRight", "rss", "save", "server", "shareNodes", "shield", "shieldQuartered", "shovel", "sidebar", "siren", "sirenOn", "sitemap", "slack", "slashForward", "slider", "slidersSimple", "snowflake", "sparkles", "squareCheck", "squareCode", "squareDashed", "squareMinus", "squarePen", "squareQuestion", "squareTerminal", "star", "starSolid", "sun", "sunBright", "table", "tableColumns", "tableRows", "terminal", "text", "threads", "thumbsDown", "thumbsUp", "trash", "triangleExclamation", "twitter", "unlink", "upload", "user", "userAstronaut", "userGear", "userPlus", "users", "userSolid", "video", "wavePulse", "windowRestore", "wordpress", "wreathLaurel", "wrench", "xmark", "xmarkLarge", "xTwitter", "youtube"];
1637
1644
  export type PDSIconName = (typeof iconList)[number];
1638
1645
  export declare const categoryList: readonly ["actions", "arrows", "brands", "communication", "custom", "data", "development", "documents", "financial", "media", "navigation", "objects", "security", "status", "users"];
1639
1646
  export type IconCategory = (typeof categoryList)[number];
@@ -110,6 +110,21 @@ interface DatepickerSharedProps extends DatepickerHTMLProps {
110
110
  * Additional class names.
111
111
  */
112
112
  className?: string;
113
+ /**
114
+ * Which `presets` entry (by its own `label`) starts out active, for a
115
+ * picker whose query already has a default window (e.g. a log viewer
116
+ * defaulting to the last 15 minutes). Its range seeds the selection, so
117
+ * the trigger reads as a real selection rather than a placeholder and the
118
+ * calendar opens on it. Works with either preset granularity.
119
+ *
120
+ * `onChange` is **not** called for this initial value — read that state
121
+ * from the same constant you pass here instead.
122
+ *
123
+ * Requires `presets` and `mode="range"`; an unmatched label is a no-op
124
+ * (dev warning only). A controlled `value` owns the range, leaving this
125
+ * to mark only the active preset. Like `defaultValue`, it is mount-only.
126
+ */
127
+ defaultPresetLabel?: string;
113
128
  /**
114
129
  * Is the field disabled?
115
130
  */
@@ -303,5 +318,5 @@ export type DatepickerProps = SingleDatepickerProps | RangeDatepickerProps;
303
318
  /**
304
319
  * Datepicker UI component.
305
320
  */
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;
321
+ export declare const Datepicker: ({ allowCustomRange, allowDateRangeSelection, className, defaultPresetLabel, 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;
307
322
  export {};
@@ -1,6 +1,6 @@
1
1
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
2
  import './panel-list.css';
3
- export type PanelListBackground = 'default' | 'secondary' | 'transparent';
3
+ export type PanelListBackground = 'default' | 'secondary' | 'sunken' | 'transparent';
4
4
  /**
5
5
  * Prop types for PanelList
6
6
  */
@@ -0,0 +1,57 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from 'react';
2
+ import type { WorkspaceSelectorItem } from '../../navigation/WorkspaceSelector/WorkspaceSelector';
3
+ import './workspace-selector-panel.css';
4
+ /**
5
+ * Prop types for WorkspaceSelectorPanel
6
+ */
7
+ export interface WorkspaceSelectorPanelProps extends ComponentPropsWithoutRef<'div'> {
8
+ /**
9
+ * Additional class names
10
+ */
11
+ className?: string;
12
+ /**
13
+ * Caps the height of the content region (filter + list) only -- the
14
+ * header and footer stay fixed-size. Set in `vh`, `rem`, or `px`.
15
+ * Passed straight through to WidgetPanel.
16
+ */
17
+ contentMaxHeight?: string;
18
+ /**
19
+ * Link to create a new workspace. A link element using the router of your
20
+ * choice. Renders in the panel's footer.
21
+ */
22
+ createWorkspaceLink?: ReactNode;
23
+ /**
24
+ * Label for the filter input.
25
+ */
26
+ filterLabel?: string;
27
+ /**
28
+ * Placeholder text for the filter input.
29
+ */
30
+ filterPlaceholder?: string;
31
+ /**
32
+ * Heading for the panel.
33
+ * @default 'Workspaces'
34
+ */
35
+ heading?: string;
36
+ /**
37
+ * Minimum number of items to enable filtering.
38
+ */
39
+ minFilterItems?: number;
40
+ /**
41
+ * Text to display when no results are found.
42
+ */
43
+ noResultsText?: string;
44
+ /**
45
+ * List of all workspaces for a user.
46
+ */
47
+ workspaceList?: WorkspaceSelectorItem[];
48
+ }
49
+ /**
50
+ * WorkspaceSelectorPanel UI component. A persistently-visible, embedded
51
+ * variant of the workspace list for homepage/sidebar widget slots, as
52
+ * opposed to `WorkspaceSelector`'s trigger + floating dropdown. Renders a
53
+ * plain list/nav rather than a menu -- unlike a transient dropdown, an
54
+ * always-visible list isn't a menu per the ARIA APG, so it doesn't reuse
55
+ * `WorkspaceSelector`'s menu/menuitem roles or keyboard nav.
56
+ */
57
+ export declare const WorkspaceSelectorPanel: ({ className, contentMaxHeight, createWorkspaceLink, filterLabel, filterPlaceholder, heading, minFilterItems, noResultsText, workspaceList, ...props }: WorkspaceSelectorPanelProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ @layer pds-v1, pds-v2;@layer pds-v2{.table-story__name-col{width:100%}.table-story__insights-col{min-width:8rem;white-space:nowrap}}
@@ -1 +1 @@
1
- @layer pds-v1, pds-v2;@layer pds-v2{.pds-banner-group{--banner-background:var(--pds-color-banner-info-background);--banner-foreground:var(--pds-color-banner-info-foreground);--banner-height:3.25rem;--nav-button-size:var(--pds-spacing-2xl);min-height:var(--banner-height);position:relative}@media (max-width:767px){.pds-banner-group{--banner-height:4rem}}.pds-banner--critical,.pds-banner-group--critical{--banner-background:var(--pds-color-banner-critical-background);--banner-foreground:var(--pds-color-banner-critical-foreground)}.pds-banner--discovery,.pds-banner-group--discovery{--banner-background:var(--pds-color-banner-discovery-background);--banner-foreground:var(--pds-color-banner-discovery-foreground)}.pds-banner--neutral,.pds-banner-group--neutral{--banner-background:var(--pds-color-banner-neutral-background);--banner-foreground:var(--pds-color-banner-neutral-foreground)}.pds-banner--warning,.pds-banner-group--warning{--banner-background:var(--pds-color-banner-warning-background);--banner-foreground:var(--pds-color-banner-warning-foreground)}.pds-banner{background:var(--banner-background);color:var(--banner-foreground);font-size:var(--pds-typography-size-s);font-weight:var(--pds-typography-fw-medium);height:var(--banner-height);padding-inline:var(--pds-spacing-2xl);position:absolute;width:100%}.pds-banner,.pds-banner__content{align-items:center;display:flex;gap:var(--pds-spacing-s)}.pds-banner__content{flex:1;justify-content:center}.pds-banner__icon{flex-grow:0;flex-shrink:0}.pds-banner__message p{all:unset}.pds-banner__message a{color:var(--banner-foreground);padding:var(--pds-spacing-4xs);text-decoration:underline}.pds-banner__message a:hover{background-color:hsla(0,0%,100%,.15);border-radius:var(--pds-border-radius-default);color:var(--banner-foreground);text-decoration:none;transition:var(--pds-animation-transition-button)}.pds-banner__message a:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner__dismiss-button{all:unset;border-radius:var(--pds-border-radius-default);cursor:pointer;flex-shrink:0;font-size:var(--pds-typography-size-xs);margin-inline-start:auto;padding:var(--pds-spacing-4xs) var(--pds-spacing-2xs);transition:var(--pds-animation-transition-button)}.pds-banner__dismiss-button:hover{background-color:hsla(0,0%,100%,.15)}.pds-banner__dismiss-button:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner-group--multiple .pds-banner{padding-inline:var(--pds-spacing-3xl)}.pds-banner-group--multiple .pds-banner__dismiss-button{margin-inline-end:var(--pds-spacing-3xs)}.pds-banner__navigation{align-items:center;display:flex;height:var(--banner-height);justify-content:space-between;width:100%}button.pds-banner__nav-button{border-color:transparent;color:var(--banner-foreground);height:var(--nav-button-size);margin-inline:var(--pds-spacing-xs);min-width:unset;padding:0;transition:var(--pds-animation-transition-button);width:var(--nav-button-size);z-index:calc(var(--pds-z-index-notifications) + 10)}button.pds-banner__nav-button:hover:enabled{background-color:hsla(0,0%,100%,.2);border-color:transparent;color:var(--banner-foreground)}button.pds-banner__nav-button:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner-group[data-context=marketing]{--banner-height:3.75rem}@media (max-width:767px){.pds-banner-group[data-context=marketing]{--banner-height:4.5rem}}.pds-banner-group[data-context=marketing] .pds-banner{font-size:var(--pds-typography-size-m);gap:var(--pds-spacing-m)}.pds-banner-group[data-context=marketing] .pds-banner__content{gap:var(--pds-spacing-m)}.pds-banner-group[data-context=marketing] .pds-banner__dismiss-button{font-size:var(--pds-typography-size-s);margin-inline-end:var(--pds-spacing-xs)}.pds-banner--dismissing,.pds-banner--fading{animation:hideBannerAnimation .2s ease-in;animation-fill-mode:forwards}@keyframes hideBannerAnimation{to{opacity:0}0%{opacity:1}}}
1
+ @layer pds-v1, pds-v2;@layer pds-v2{.pds-banner-group{--banner-background:var(--pds-color-banner-info-background);--banner-foreground:var(--pds-color-banner-info-foreground);--banner-height:3.5rem;--nav-button-size:var(--pds-spacing-2xl);min-height:var(--banner-height);position:relative}@media (min-width:768px) and (max-width:1279px){.pds-banner-group{--banner-height:4rem}}@media (max-width:767px){.pds-banner-group{--banner-height:5rem}}.pds-banner--critical,.pds-banner-group--critical{--banner-background:var(--pds-color-banner-critical-background);--banner-foreground:var(--pds-color-banner-critical-foreground)}.pds-banner--discovery,.pds-banner-group--discovery{--banner-background:var(--pds-color-banner-discovery-background);--banner-foreground:var(--pds-color-banner-discovery-foreground)}.pds-banner--neutral,.pds-banner-group--neutral{--banner-background:var(--pds-color-banner-neutral-background);--banner-foreground:var(--pds-color-banner-neutral-foreground)}.pds-banner--warning,.pds-banner-group--warning{--banner-background:var(--pds-color-banner-warning-background);--banner-foreground:var(--pds-color-banner-warning-foreground)}.pds-banner{align-items:center;background:var(--banner-background);color:var(--banner-foreground);display:flex;font-size:var(--pds-typography-size-s);font-weight:var(--pds-typography-fw-medium);gap:var(--pds-spacing-s);height:var(--banner-height);line-height:var(--pds-typography-lh-s);padding-inline:var(--pds-spacing-2xl);position:absolute;width:100%}@media (max-width:767px){.pds-banner{padding-inline:var(--pds-spacing-l)}}.pds-banner__content{align-items:center;display:flex;flex:1;gap:var(--pds-spacing-s);justify-content:center}.pds-banner__icon{flex-grow:0;flex-shrink:0}.pds-banner__message{-webkit-box-orient:vertical;display:-webkit-box;-webkit-line-clamp:2;overflow:hidden}@media (max-width:767px){.pds-banner__message{-webkit-line-clamp:3}}.pds-banner__message p{all:unset}.pds-banner__message a{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--banner-foreground);padding-inline:var(--pds-spacing-4xs);text-decoration:underline;transition:var(--pds-animation-transition-button)}.pds-banner__message a:hover{background-color:hsla(0,0%,100%,.2);border-radius:var(--pds-border-radius-default);color:var(--banner-foreground);text-decoration:none}.pds-banner__message a:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner__dismiss-button{all:unset;border-radius:var(--pds-border-radius-default);cursor:pointer;flex-shrink:0;font-size:var(--pds-typography-size-xs);margin-inline-start:auto;padding:var(--pds-spacing-4xs) var(--pds-spacing-2xs);transition:var(--pds-animation-transition-button)}.pds-banner__dismiss-button:hover{background-color:hsla(0,0%,100%,.15)}.pds-banner__dismiss-button:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner-group--multiple .pds-banner{padding-inline:var(--pds-spacing-3xl)}.pds-banner-group--multiple .pds-banner__dismiss-button{margin-inline-end:var(--pds-spacing-3xs)}.pds-banner__navigation{align-items:center;display:flex;height:var(--banner-height);justify-content:space-between;width:100%}button.pds-banner__nav-button{border-color:transparent;color:var(--banner-foreground);height:var(--nav-button-size);margin-inline:var(--pds-spacing-xs);min-width:unset;padding:0;transition:var(--pds-animation-transition-button);width:var(--nav-button-size);z-index:calc(var(--pds-z-index-notifications) + 10)}@media (max-width:767px){button.pds-banner__nav-button{margin-inline:var(--pds-spacing-3xs)}}button.pds-banner__nav-button:hover:enabled{background-color:hsla(0,0%,100%,.2);border-color:transparent;color:var(--banner-foreground)}button.pds-banner__nav-button:focus-visible{outline:var(--pds-border-width-outline) solid var(--banner-foreground);outline-offset:0}.pds-banner-group[data-context=marketing]{--banner-height:3.75rem}@media (min-width:768px) and (max-width:1279px){.pds-banner-group[data-context=marketing]{--banner-height:4.5rem}}@media (max-width:767px){.pds-banner-group[data-context=marketing]{--banner-height:5.5rem}}.pds-banner-group[data-context=marketing] .pds-banner{font-size:var(--pds-typography-size-m);gap:var(--pds-spacing-m);line-height:var(--pds-typography-lh-m)}.pds-banner-group[data-context=marketing] .pds-banner__content{gap:var(--pds-spacing-m)}.pds-banner-group[data-context=marketing] .pds-banner__dismiss-button{font-size:var(--pds-typography-size-s);margin-inline-end:var(--pds-spacing-xs)}.pds-banner--dismissing,.pds-banner--fading{animation:hideBannerAnimation .2s ease-in;animation-fill-mode:forwards}@keyframes hideBannerAnimation{to{opacity:0}0%{opacity:1}}}
@@ -68,4 +68,4 @@
68
68
  --pds-color-button-reverse-secondary-foreground
69
69
  );--button-border-color:var(--pds-color-button-reverse-secondary-border);--button-border-color-hover:var(--pds-color-button-reverse-secondary-border);--button-border-color-active:var(
70
70
  --pds-color-button-reverse-secondary-border
71
- )}.pds-button--link{background-color:transparent;border:none;border-radius:0;color:var(--pds-color-interactive-link-default);height:unset;justify-content:unset;letter-spacing:0;max-height:unset;padding-inline:0;padding:0;transition:var(--pds-animation-transition-button)}.pds-button--link:hover:enabled,a.pds-button--link:hover{color:var(--pds-color-interactive-link-hover);text-decoration:underline}.pds-button--link:active:enabled,a.pds-button--link:active{box-shadow:none;color:var(--pds-color-interactive-link-active)}.pds-button--loading{cursor:not-allowed}.pds-button--loading:active,.pds-button--loading:hover:enabled{--button-background-color:var(--pulse-regular-base-color);--button-border-color:var(--pulse-regular-base-color)}.pds-button--loading.pds-pulse{background-color:var(--pulse-regular-base-color);border-color:var(--pulse-regular-base-color);color:transparent}.pds-button--loading .pds-button__icon,.pds-button--loading .pds-button__tally,.pds-button--loading .pds-button__working-indicator{opacity:0}.pds-button-group{display:flex;flex-direction:column;row-gap:var(--pds-spacing-m);width:100%}@media (min-width:768px){.pds-button-group{column-gap:var(--pds-spacing-s);flex-direction:row;width:unset}.pds-button-group--lg{column-gap:var(--pds-spacing-m)}}}
71
+ )}.pds-button--link{background-color:transparent;border:none;border-radius:0;color:var(--pds-color-interactive-link-default);height:unset;justify-content:unset;letter-spacing:0;max-height:unset;padding-inline:0;padding:0;transition:var(--pds-animation-transition-button)}.pds-button--link:hover:enabled,a.pds-button--link:hover{color:var(--pds-color-interactive-link-hover);text-decoration:underline}.pds-button--link:active:enabled,a.pds-button--link:active{box-shadow:none;color:var(--pds-color-interactive-link-active)}.pds-button--link .pds-button-link__icon,.pds-button--link .pds-button__icon{transform:scale(.9)}.pds-button--loading{cursor:not-allowed}.pds-button--loading:active,.pds-button--loading:hover:enabled{--button-background-color:var(--pulse-regular-base-color);--button-border-color:var(--pulse-regular-base-color)}.pds-button--loading.pds-pulse{background-color:var(--pulse-regular-base-color);border-color:var(--pulse-regular-base-color);color:transparent}.pds-button--loading .pds-button__icon,.pds-button--loading .pds-button__tally,.pds-button--loading .pds-button__working-indicator{opacity:0}.pds-button-group{display:flex;flex-direction:column;row-gap:var(--pds-spacing-m);width:100%}@media (min-width:768px){.pds-button-group{column-gap:var(--pds-spacing-s);flex-direction:row;width:unset}.pds-button-group--lg{column-gap:var(--pds-spacing-m)}}}
@@ -1 +1 @@
1
- @layer pds-v1, pds-v2;@layer pds-v2{.pds-icon{--icon-detail-color:var(--pds-color-surface-default);display:inline-flex;flex-shrink:0;height:1.25rem;overflow:visible;vertical-align:middle;width:1.25rem}.pds-icon svg{height:100%;width:100%}.pds-icon--s{height:.75rem;width:.75rem}.pds-icon--m{height:1rem;width:1rem}.pds-icon--l{height:1.25rem;width:1.25rem}.pds-icon--xl{height:1.5rem;width:1.5rem}.pds-icon--2xl{height:2rem;width:2rem}.pds-icon--3xl{height:2.5rem;width:2.5rem}}
1
+ @layer pds-v1, pds-v2;@layer pds-v2{.pds-icon{--icon-detail-color:var(--pds-color-surface-default);display:inline-flex;flex-shrink:0;height:1.25rem;overflow:visible;vertical-align:middle;width:1.25rem}.pds-icon svg{height:100%;width:100%}.pds-icon--xs{height:.75rem;width:.75rem}.pds-icon--s{height:.875rem;width:.875rem}.pds-icon--m{height:1rem;width:1rem}.pds-icon--l{height:1.125rem;width:1.125rem}.pds-icon--xl{height:1.25rem;width:1.25rem}.pds-icon--2xl{height:1.5rem;width:1.5rem}.pds-icon--3xl{height:1.75rem;width:1.75rem}.pds-icon--4xl{height:2rem;width:2rem}}