@factorialco/f0-react 6.38.1 → 6.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ChatPdfThumbnail-BylbDvdh.js → ChatPdfThumbnail-BtJNIR03.js} +1 -1
- package/dist/{CoachmarkProvider-DDlkiieh.js → CoachmarkProvider-D1crauDt.js} +17536 -17054
- package/dist/{DocumentToolbar-C73oFj5j.js → DocumentToolbar-CYIgumvP.js} +2 -2
- package/dist/{DocxViewer-DvhVvro8.js → DocxViewer-BYC6ILzw.js} +2 -2
- package/dist/{F0AiProcessingOverlay-O9iKzCzA.js → F0AiProcessingOverlay-B_jVVBb3.js} +1675 -1687
- package/dist/{F0CanvasPanel-x0HG1lL2.js → F0CanvasPanel-D9QM6A5c.js} +24585 -24368
- package/dist/{F0VideoPlayer-CNLDjvWx.js → F0VideoPlayer-Czdae49M.js} +1 -1
- package/dist/{LocationMap-B9uJiP6s.js → LocationMap-bKqObUy3.js} +1 -1
- package/dist/{SheetViewer-Cb3M0JfB.js → SheetViewer-rS-lxOWo.js} +2 -2
- package/dist/{TextViewer-zWnCj_Ll.js → TextViewer-D_ddwlEE.js} +2 -2
- package/dist/ai.d.ts +32 -8
- package/dist/ai.js +2 -2
- package/dist/component-status.d.ts +6 -6
- package/dist/component-status.js +4 -4
- package/dist/{experimental-AwqVvQnQ.js → experimental-hwx4eC1f.js} +13949 -13652
- package/dist/experimental.d.ts +497 -35
- package/dist/experimental.js +210 -205
- package/dist/f0.d.ts +296 -32
- package/dist/f0.js +16453 -15755
- package/dist/i18n-provider-defaults.d.ts +16 -6
- package/dist/i18n-provider-defaults.js +11 -1
- package/dist/index-C3HrVTrD.js +4 -0
- package/dist/{index-B9tGQBrU.js → index-CBvQMzjP.js} +3 -3
- package/dist/{pdfWorker-Bb9OLhh-.js → pdfWorker-BpY_xYql.js} +2 -2
- package/dist/styles.css +1 -1
- package/package.json +2 -1
- package/dist/index-DfvLN3Ea.js +0 -4
package/dist/experimental.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ import { DotTagCellValue as DotTagCellValue_2 } from './experimental';
|
|
|
40
40
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
41
41
|
import { EmployeeItemProps } from './types';
|
|
42
42
|
import { F0EmojiPickerProps as F0EmojiPickerProps_2 } from './types';
|
|
43
|
+
import { F0ENPSButtonProps as F0ENPSButtonProps_2 } from './types';
|
|
43
44
|
import { F0PhoneInputProps as F0PhoneInputProps_2 } from './types';
|
|
44
45
|
import { F0SegmentedControlProps as F0SegmentedControlProps_2 } from './types';
|
|
45
46
|
import { F0SelectProps as F0SelectProps_2 } from './types';
|
|
@@ -1073,7 +1074,7 @@ declare interface BaseChipProps extends VariantProps<typeof chipVariants> {
|
|
|
1073
1074
|
|
|
1074
1075
|
declare type BaseColor = keyof typeof baseColors;
|
|
1075
1076
|
|
|
1076
|
-
export declare const BaseCommunityPost: ({ id, author, group, createdAt, title, description, onClick, mediaUrl, event, counters, reactions, inLabel, comment, actions, dropdownItems, noReactionsButton, descriptionExpandable, }: CommunityPostProps) => JSX_2.Element;
|
|
1077
|
+
export declare const BaseCommunityPost: ({ id, author, group, createdAt, title, description, onClick, mediaUrl, event, counters, reactions, inLabel, comment, actions, dropdownItems, noReactionsButton, descriptionExpandable, hideTitle, }: CommunityPostProps) => JSX_2.Element;
|
|
1077
1078
|
|
|
1078
1079
|
/**
|
|
1079
1080
|
* Base data adapter configuration for non-paginated collections
|
|
@@ -1539,6 +1540,20 @@ declare type ButtonSize = (typeof buttonSizes)[number];
|
|
|
1539
1540
|
|
|
1540
1541
|
declare const buttonSizes: readonly ["sm", "md", "lg"];
|
|
1541
1542
|
|
|
1543
|
+
export declare type ButtonToggleColor = (typeof buttonToggleColors)[number];
|
|
1544
|
+
|
|
1545
|
+
/**
|
|
1546
|
+
* The colours a toggle can wear when selected, beyond F0's own selected teal.
|
|
1547
|
+
* Each one is an F0 semantic colour — the six statuses, then the five points of
|
|
1548
|
+
* the mood scale — so a coloured toggle carries the same meaning here as the
|
|
1549
|
+
* same colour does anywhere else in the product.
|
|
1550
|
+
*/
|
|
1551
|
+
export declare const buttonToggleColors: readonly ["accent", "critical", "warning", "promote", "info", "positive", "mood-super-negative", "mood-negative", "mood-neutral", "mood-positive", "mood-super-positive"];
|
|
1552
|
+
|
|
1553
|
+
declare type ButtonToggleGroupSize = (typeof buttonToggleGroupSizes)[number];
|
|
1554
|
+
|
|
1555
|
+
declare const buttonToggleGroupSizes: readonly ["sm", "md", "lg"];
|
|
1556
|
+
|
|
1542
1557
|
export declare type ButtonToggleSize = (typeof buttonToggleSizes)[number];
|
|
1543
1558
|
|
|
1544
1559
|
export declare const buttonToggleSizes: readonly ["sm", "md", "lg"];
|
|
@@ -1961,6 +1976,9 @@ export declare interface CardSelectableMultipleProps<T extends CardSelectableVal
|
|
|
1961
1976
|
isToggle?: boolean;
|
|
1962
1977
|
/** When true, items are grouped in a single bordered container with dividers */
|
|
1963
1978
|
grouped?: boolean;
|
|
1979
|
+
/** Standalone cards only: 12px padding instead of 16px. Grouped rows already
|
|
1980
|
+
* use 12px vertical padding, so they are unaffected. */
|
|
1981
|
+
compact?: boolean;
|
|
1964
1982
|
}
|
|
1965
1983
|
|
|
1966
1984
|
export declare interface CardSelectableSingleProps<T extends CardSelectableValue> {
|
|
@@ -1982,6 +2000,9 @@ export declare interface CardSelectableSingleProps<T extends CardSelectableValue
|
|
|
1982
2000
|
isToggle?: boolean;
|
|
1983
2001
|
/** When true, items are grouped in a single bordered container with dividers */
|
|
1984
2002
|
grouped?: boolean;
|
|
2003
|
+
/** Standalone cards only: 12px padding instead of 16px. Grouped rows already
|
|
2004
|
+
* use 12px vertical padding, so they are unaffected. */
|
|
2005
|
+
compact?: boolean;
|
|
1985
2006
|
}
|
|
1986
2007
|
|
|
1987
2008
|
export declare type CardSelectableValue = string | number;
|
|
@@ -2002,7 +2023,7 @@ declare type CardVisualizationOptions<T, _Filters extends FiltersDefinition, _So
|
|
|
2002
2023
|
/**
|
|
2003
2024
|
* @experimental This is an experimental component use it at your own risk
|
|
2004
2025
|
*/
|
|
2005
|
-
export declare const Carousel: WithDataTestIdReturnType_3<({ children, columns, showArrows, showDots, autoplay, delay, showPeek, doubleColumns, }: CarouselProps) => default_3.JSX.Element>;
|
|
2026
|
+
export declare const Carousel: WithDataTestIdReturnType_3<({ children, columns, showArrows, showDots, arrowsPlacement, arrowLabels, paging, autoplay, delay, showPeek, doubleColumns, }: CarouselProps) => default_3.JSX.Element>;
|
|
2006
2027
|
|
|
2007
2028
|
declare interface CarouselBreakpoints {
|
|
2008
2029
|
default?: ColumnNumber;
|
|
@@ -2013,10 +2034,70 @@ declare interface CarouselBreakpoints {
|
|
|
2013
2034
|
xl?: ColumnNumber;
|
|
2014
2035
|
}
|
|
2015
2036
|
|
|
2037
|
+
/**
|
|
2038
|
+
* A carousel whose slides are ONE PAGE of a longer list.
|
|
2039
|
+
*
|
|
2040
|
+
* A carousel can only reason about the slides it holds, so on its own it says
|
|
2041
|
+
* "there is no next one" the moment it reaches the last one it was given — which
|
|
2042
|
+
* is wrong when the list continues on the server. This is the missing half of
|
|
2043
|
+
* that answer, and it is deliberately the shape `useData` already returns for an
|
|
2044
|
+
* infinite-scroll source (`paginationInfo.hasMore`, `isLoadingMore`, `loadMore`),
|
|
2045
|
+
* so wiring one to the other is passing three fields across.
|
|
2046
|
+
*/
|
|
2047
|
+
declare type CarouselPaging = {
|
|
2048
|
+
/** Whether the source has records past the slides currently mounted. */
|
|
2049
|
+
hasMore: boolean;
|
|
2050
|
+
/** A fetch for the next page is in flight. */
|
|
2051
|
+
isLoading?: boolean;
|
|
2052
|
+
/** Fetch the next page and APPEND it to the slides. */
|
|
2053
|
+
onLoadMore: () => void;
|
|
2054
|
+
/**
|
|
2055
|
+
* How many records the source holds ALTOGETHER, when it says — `useData`'s
|
|
2056
|
+
* `totalItems`. For anything that reports a position out loud ("3 of 11"):
|
|
2057
|
+
* without it the only number available is how many have been loaded, which
|
|
2058
|
+
* moves every time another page arrives.
|
|
2059
|
+
*
|
|
2060
|
+
* The carousel itself ignores it. Its dots describe the slides that exist, and
|
|
2061
|
+
* a dot for a page nobody has fetched would be a control that cannot be
|
|
2062
|
+
* pressed.
|
|
2063
|
+
*/
|
|
2064
|
+
total?: number;
|
|
2065
|
+
};
|
|
2066
|
+
|
|
2016
2067
|
declare interface CarouselProps {
|
|
2017
2068
|
children: default_3.ReactNode;
|
|
2018
2069
|
showArrows?: boolean;
|
|
2019
2070
|
showDots?: boolean;
|
|
2071
|
+
/**
|
|
2072
|
+
* WHERE THE ARROWS GO.
|
|
2073
|
+
*
|
|
2074
|
+
* - `"overlay"` (the default) — pinned to the carousel's sides and revealed on
|
|
2075
|
+
* hover. Right for a full-bleed gallery, where the slides are the page.
|
|
2076
|
+
* - `"bottom"` — a row UNDER the slides, an arrow on each end with the dots
|
|
2077
|
+
* between them, always visible and always the same width. Use it whenever
|
|
2078
|
+
* the carousel sits inside something else — a widget, a card, a panel: side
|
|
2079
|
+
* overlays hang over whatever is beside the container, and a hover-only
|
|
2080
|
+
* control is one a touch user never finds.
|
|
2081
|
+
*
|
|
2082
|
+
* `"bottom"` puts the dots in that row, so `showDots` still decides whether
|
|
2083
|
+
* there are any.
|
|
2084
|
+
*/
|
|
2085
|
+
arrowsPlacement?: "overlay" | "bottom";
|
|
2086
|
+
/** The arrows' accessible names. Defaults to "Previous" / "Next". */
|
|
2087
|
+
arrowLabels?: {
|
|
2088
|
+
previous?: string;
|
|
2089
|
+
next?: string;
|
|
2090
|
+
};
|
|
2091
|
+
/**
|
|
2092
|
+
* The slides are ONE PAGE of a longer list. Next then stays live at the end
|
|
2093
|
+
* and fetches the rest instead of going dead — see {@link CarouselPaging}, and
|
|
2094
|
+
* append the new records to `children` as they arrive.
|
|
2095
|
+
*
|
|
2096
|
+
* `arrowsPlacement: "bottom"` only: the overlay arrows are a hover affordance
|
|
2097
|
+
* over the slides, and a fetch you can't see you triggered is worse than no
|
|
2098
|
+
* fetch at all.
|
|
2099
|
+
*/
|
|
2100
|
+
paging?: CarouselPaging;
|
|
2020
2101
|
autoplay?: boolean;
|
|
2021
2102
|
delay?: number;
|
|
2022
2103
|
columns?: CarouselBreakpoints;
|
|
@@ -2859,7 +2940,7 @@ values: {
|
|
|
2859
2940
|
}) => void) | undefined;
|
|
2860
2941
|
} & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLElement | SVGElement>>>;
|
|
2861
2942
|
|
|
2862
|
-
export declare const CommunityPost: (({ id, author, group, createdAt, title, description, onClick, mediaUrl, event, counters, reactions, inLabel, comment, actions, dropdownItems, noReactionsButton, descriptionExpandable, }: CommunityPostProps) => JSX_2.Element) & {
|
|
2943
|
+
export declare const CommunityPost: (({ id, author, group, createdAt, title, description, onClick, mediaUrl, event, counters, reactions, inLabel, comment, actions, dropdownItems, noReactionsButton, descriptionExpandable, hideTitle, }: CommunityPostProps) => JSX_2.Element) & {
|
|
2863
2944
|
Skeleton: ({ withEvent, withImage, }: CommunityPostSkeletonProps) => JSX_2.Element;
|
|
2864
2945
|
};
|
|
2865
2946
|
|
|
@@ -2898,10 +2979,30 @@ export declare type CommunityPostProps = {
|
|
|
2898
2979
|
};
|
|
2899
2980
|
actions?: CommunityPostAction[];
|
|
2900
2981
|
noVideoPreload?: boolean;
|
|
2901
|
-
|
|
2982
|
+
/**
|
|
2983
|
+
* WHAT CLICKING THE POST DOES — and whether it does anything.
|
|
2984
|
+
*
|
|
2985
|
+
* OMIT IT once the post is the destination. In a feed the card is a way in, so
|
|
2986
|
+
* it takes a pointer cursor, a hover tint and a focus ring. Opened in a dialog
|
|
2987
|
+
* it is already what you came for, and every one of those says there is
|
|
2988
|
+
* somewhere further to go when there isn't: the tint follows the mouse across
|
|
2989
|
+
* a page you are reading, and clicking does nothing.
|
|
2990
|
+
*/
|
|
2991
|
+
onClick?: (id: string) => void;
|
|
2902
2992
|
noReactionsButton?: boolean;
|
|
2903
2993
|
dropdownItems?: DropdownItem[];
|
|
2904
2994
|
descriptionExpandable?: boolean;
|
|
2995
|
+
/**
|
|
2996
|
+
* Keeps the title as the post's ACCESSIBLE NAME but takes it out of the card —
|
|
2997
|
+
* for a container that already shows it, like a dialog carrying the post's
|
|
2998
|
+
* title in its own header. Without this the same words appear twice, an inch
|
|
2999
|
+
* apart.
|
|
3000
|
+
*
|
|
3001
|
+
* The title element stays in the DOM, `sr-only`: it is what the expanded
|
|
3002
|
+
* description points at (`aria-describedby`), so removing it would quietly
|
|
3003
|
+
* break that as well as the post's name.
|
|
3004
|
+
*/
|
|
3005
|
+
hideTitle?: boolean;
|
|
2905
3006
|
};
|
|
2906
3007
|
|
|
2907
3008
|
export declare const CommunityPostSkeleton: ({ withEvent, withImage, }: CommunityPostSkeletonProps) => JSX_2.Element;
|
|
@@ -2911,6 +3012,56 @@ export declare type CommunityPostSkeletonProps = {
|
|
|
2911
3012
|
withImage?: boolean;
|
|
2912
3013
|
};
|
|
2913
3014
|
|
|
3015
|
+
/**
|
|
3016
|
+
* ONE POST as the Home card shows it — the shape a feed row keeps when it is
|
|
3017
|
+
* given a whole tile instead of a line.
|
|
3018
|
+
*
|
|
3019
|
+
* Deliberately NOT `CommunityPostProps`: that is the post as the Communities
|
|
3020
|
+
* page renders it, with its media, its reactions, its comment button and its own
|
|
3021
|
+
* overflow menu. Here the post is a PREVIEW you click through — anything you
|
|
3022
|
+
* can do to it, you do on the other side.
|
|
3023
|
+
*/
|
|
3024
|
+
export declare interface CommunityPostSummary {
|
|
3025
|
+
id: string;
|
|
3026
|
+
title: string;
|
|
3027
|
+
/**
|
|
3028
|
+
* The post's body as the editor stored it (an HTML string), clamped to the
|
|
3029
|
+
* first few lines. Whatever links it contains are NOT clickable here: the
|
|
3030
|
+
* whole tile is one target (see {@link CommunityPostCard}), and a link inside
|
|
3031
|
+
* a link is neither valid nor operable.
|
|
3032
|
+
*/
|
|
3033
|
+
description?: string;
|
|
3034
|
+
/**
|
|
3035
|
+
* The post's cover image, above the title.
|
|
3036
|
+
*
|
|
3037
|
+
* ALWAYS DRAWN AT {@link POST_IMAGE_RATIO} — the tile gives it the full width
|
|
3038
|
+
* of its column and takes its height from that ratio, cropping (`object-cover`)
|
|
3039
|
+
* whatever doesn't fit. A carousel is a ROW: a tile that sized itself to its
|
|
3040
|
+
* own image would put every title on a different line and move them all when
|
|
3041
|
+
* the page turned. So the frame is fixed and the picture fits into it.
|
|
3042
|
+
*/
|
|
3043
|
+
imageUrl?: string;
|
|
3044
|
+
author?: {
|
|
3045
|
+
firstName: string;
|
|
3046
|
+
lastName: string;
|
|
3047
|
+
avatarUrl?: string;
|
|
3048
|
+
};
|
|
3049
|
+
createdAt: Date;
|
|
3050
|
+
/**
|
|
3051
|
+
* The counters under the author, ALREADY IN WORDS — "742 visits", "23
|
|
3052
|
+
* comments". Strings rather than numbers because the plural, the thousands
|
|
3053
|
+
* separator and the noun are all the app's locale, not this component's; the
|
|
3054
|
+
* same reason `CommunityPost` takes them this way.
|
|
3055
|
+
*/
|
|
3056
|
+
counters?: {
|
|
3057
|
+
visits?: string;
|
|
3058
|
+
comments?: string;
|
|
3059
|
+
};
|
|
3060
|
+
/** Where the post lives. A `url` makes the tile a real anchor. */
|
|
3061
|
+
href?: string;
|
|
3062
|
+
onClick?: () => void;
|
|
3063
|
+
}
|
|
3064
|
+
|
|
2914
3065
|
declare interface Company {
|
|
2915
3066
|
id: string;
|
|
2916
3067
|
name: string;
|
|
@@ -4080,6 +4231,8 @@ declare const defaultTranslations: {
|
|
|
4080
4231
|
readonly hideAllColumns: "Hide all";
|
|
4081
4232
|
readonly addColumn: "Add column";
|
|
4082
4233
|
readonly removeColumn: "Remove column";
|
|
4234
|
+
readonly lockColumn: "Lock column: {{label}}";
|
|
4235
|
+
readonly unlockColumn: "Unlock column: {{label}}";
|
|
4083
4236
|
};
|
|
4084
4237
|
};
|
|
4085
4238
|
readonly editableTable: {
|
|
@@ -4285,6 +4438,13 @@ declare const defaultTranslations: {
|
|
|
4285
4438
|
readonly exporting: "Exporting…";
|
|
4286
4439
|
};
|
|
4287
4440
|
readonly dashboardItem: {
|
|
4441
|
+
/**
|
|
4442
|
+
* Deliberately not `ai.ask` ("Ask One" by default here, but hosts
|
|
4443
|
+
* override it — factorial renders it as plain "Ask" for the widget and
|
|
4444
|
+
* insight-card buttons). This menu entry needs the product name spelled
|
|
4445
|
+
* out, so it owns its own key.
|
|
4446
|
+
*/
|
|
4447
|
+
readonly askOne: "Ask One";
|
|
4288
4448
|
readonly chartType: "Chart type";
|
|
4289
4449
|
readonly errorTitle: "Error loading data";
|
|
4290
4450
|
readonly retry: "Retry";
|
|
@@ -4317,6 +4477,7 @@ declare const defaultTranslations: {
|
|
|
4317
4477
|
readonly fileUploadBlockedSubmit: "Your message wasn't sent because one of the attachments failed to upload. Remove it or retry.";
|
|
4318
4478
|
readonly tooManyFilesError: "You can attach up to {{maxFiles}} files at once";
|
|
4319
4479
|
readonly dropFilesHere: "Drop your files here";
|
|
4480
|
+
readonly dropWidgetToDiscuss: "Drop here to discuss with One";
|
|
4320
4481
|
readonly reply: "Reply";
|
|
4321
4482
|
readonly removeQuote: "Remove quote";
|
|
4322
4483
|
readonly clarifyingQuestion: {
|
|
@@ -5073,6 +5234,18 @@ declare type EditableTableColumnDefinition<R extends RecordType, Sortings extend
|
|
|
5073
5234
|
* opens the calendar on that date.
|
|
5074
5235
|
*/
|
|
5075
5236
|
dateConfig?: DateCellConfig | ((item: R) => DateCellConfig);
|
|
5237
|
+
/**
|
|
5238
|
+
* Configuration for `"disabled"` cells.
|
|
5239
|
+
*
|
|
5240
|
+
* By default a disabled cell keeps the same affordances as its editable
|
|
5241
|
+
* counterpart (leading icon, units, select chevron) so the column still
|
|
5242
|
+
* reads as its field type. Set `hideSelectChevron` when the column also
|
|
5243
|
+
* uses `editType: "select"` for other rows but the chevron shouldn't
|
|
5244
|
+
* appear here since the cell isn't interactive.
|
|
5245
|
+
*/
|
|
5246
|
+
disabledConfig?: {
|
|
5247
|
+
hideSelectChevron?: boolean;
|
|
5248
|
+
};
|
|
5076
5249
|
/**
|
|
5077
5250
|
* Called after this cell's value changes. Use to compute derived values
|
|
5078
5251
|
* and update other cells in the same row.
|
|
@@ -5732,6 +5905,37 @@ declare type F0ButtonToggleInternalProps = {
|
|
|
5732
5905
|
* "expanded" - The button will show the icon and the label.
|
|
5733
5906
|
*/
|
|
5734
5907
|
variant?: ButtonToggleVariant;
|
|
5908
|
+
/**
|
|
5909
|
+
* Tooltip shown on hover and on keyboard focus. A string is the description
|
|
5910
|
+
* on its own; the object form adds a bold first line above it — the same
|
|
5911
|
+
* shape `Action` takes.
|
|
5912
|
+
*
|
|
5913
|
+
* A compact toggle is a glyph with no visible text, so the tooltip is what
|
|
5914
|
+
* says out loud what it does. Setting it drops the native `title` (the
|
|
5915
|
+
* browser would otherwise draw its own bubble beside this one) and keeps the
|
|
5916
|
+
* accessible name.
|
|
5917
|
+
*
|
|
5918
|
+
* `instant` opens it on 100ms instead of the default 700ms. Reach for it when
|
|
5919
|
+
* the tooltip is the ONLY place the toggle's name is written — the default
|
|
5920
|
+
* wait is for a label that merely confirms what you can already read, and on
|
|
5921
|
+
* a bare glyph it withholds the whole thing.
|
|
5922
|
+
*/
|
|
5923
|
+
tooltip?: string | {
|
|
5924
|
+
label?: string;
|
|
5925
|
+
description: string;
|
|
5926
|
+
instant?: boolean;
|
|
5927
|
+
};
|
|
5928
|
+
/**
|
|
5929
|
+
* Makes the toggle a member of a COLOURED SET: it wears this colour when
|
|
5930
|
+
* selected — fill, border and glyph — and stays a muted glyph when it isn't,
|
|
5931
|
+
* so one answer out of several is readable at a glance. Without it the toggle
|
|
5932
|
+
* uses F0's selected teal, like any other selected control.
|
|
5933
|
+
*
|
|
5934
|
+
* Only for a set whose members mean different things (a mood scale, a status
|
|
5935
|
+
* picker). A lone toggle, or a group where every item is the same kind of
|
|
5936
|
+
* thing, should stay on the default.
|
|
5937
|
+
*/
|
|
5938
|
+
color?: ButtonToggleColor;
|
|
5735
5939
|
/**
|
|
5736
5940
|
* @private
|
|
5737
5941
|
* Whether to show a border around the button toggle.
|
|
@@ -6479,6 +6683,72 @@ export declare type F0ChatVoiceAttachment = {
|
|
|
6479
6683
|
name?: string;
|
|
6480
6684
|
};
|
|
6481
6685
|
|
|
6686
|
+
/**
|
|
6687
|
+
* F0CommunityPostsCarousel — the Communities widget's content: the latest posts as
|
|
6688
|
+
* TILES you page through, two at a time on a main-column card and one in
|
|
6689
|
+
* anything narrower.
|
|
6690
|
+
*
|
|
6691
|
+
* A WIDE-COLUMN WIDGET. Two tiles side by side is the whole reason this exists
|
|
6692
|
+
* rather than a `list` slot — a post needs a title, four lines of its body and
|
|
6693
|
+
* its author to be worth previewing at all, and that does not fit a 396px rail.
|
|
6694
|
+
* Put it in the main column (`areas: ["main"]` in the catalog).
|
|
6695
|
+
*
|
|
6696
|
+
* THE PAGING IS UNDER THE TILES, not floating over them — `CarouselControls`,
|
|
6697
|
+
* the shared row: an arrow on each end, the dots between, its own `pt-4` above
|
|
6698
|
+
* it. Nothing about that row is this widget's, which is why it lives in
|
|
6699
|
+
* `ui/carousel` beside the overlay arrows rather than here.
|
|
6700
|
+
*
|
|
6701
|
+
* EVERY POST IT HOLDS IS IN THE DOM. Embla lays its slides out in a flex row and
|
|
6702
|
+
* transforms the track, so the slides off-screen are mounted and measured like
|
|
6703
|
+
* the ones you can see — there is no windowing here, and adding it would mean
|
|
6704
|
+
* the carousel could no longer measure its own snaps. That is the right trade
|
|
6705
|
+
* for what this shows: a handful of tiles, each one a title and four lines.
|
|
6706
|
+
*
|
|
6707
|
+
* It is `pagination` that keeps it a handful. A feed of two hundred posts is not
|
|
6708
|
+
* a longer carousel, it is a carousel that holds a PAGE and asks for the next
|
|
6709
|
+
* one when you reach the end — so what is mounted is bounded by how far the
|
|
6710
|
+
* reader actually walked rather than by how much the server has.
|
|
6711
|
+
*/
|
|
6712
|
+
export declare const F0CommunityPostsCarousel: ({ posts, labels, loading, expectedItemsCount, pagination, }: F0CommunityPostsCarouselProps) => JSX_2.Element;
|
|
6713
|
+
|
|
6714
|
+
export declare interface F0CommunityPostsCarouselProps {
|
|
6715
|
+
posts: CommunityPostSummary[];
|
|
6716
|
+
/**
|
|
6717
|
+
* The controls' words — the two arrows' accessible names. There is no visible
|
|
6718
|
+
* text in this component's chrome, so these are what a screen reader reads and
|
|
6719
|
+
* what the tooltips say.
|
|
6720
|
+
*/
|
|
6721
|
+
labels: {
|
|
6722
|
+
previous: string;
|
|
6723
|
+
next: string;
|
|
6724
|
+
};
|
|
6725
|
+
/**
|
|
6726
|
+
* Waiting on the FIRST posts: the same carousel with placeholder tiles in it,
|
|
6727
|
+
* so the widget is the height it will be once they land. How MANY it draws is
|
|
6728
|
+
* `expectedItemsCount`.
|
|
6729
|
+
*
|
|
6730
|
+
* This is the initial load only. A LATER page is `pagination`, and it does not
|
|
6731
|
+
* blank the tiles you are already reading.
|
|
6732
|
+
*/
|
|
6733
|
+
loading?: boolean;
|
|
6734
|
+
/** How many placeholder tiles `loading` draws. Defaults to 2 — one screenful. */
|
|
6735
|
+
expectedItemsCount?: number;
|
|
6736
|
+
/**
|
|
6737
|
+
* THE POSTS ARE A PAGE, not the whole feed. Pass this and the Next arrow stays
|
|
6738
|
+
* live past the last mounted tile: reaching the end asks for the next page, and
|
|
6739
|
+
* the new posts are appended to `posts` by whoever owns them.
|
|
6740
|
+
*
|
|
6741
|
+
* It is `useData`'s infinite-scroll return, field for field — `hasMore` off
|
|
6742
|
+
* `paginationInfo`, `isLoadingMore`, `loadMore` — because that is where these
|
|
6743
|
+
* posts come from in an app. The component itself stays ignorant of data
|
|
6744
|
+
* sources: it takes posts and a way to ask for more.
|
|
6745
|
+
*
|
|
6746
|
+
* Omit it for a feed you already hold in full, which is what the widget's
|
|
6747
|
+
* "latest five" is.
|
|
6748
|
+
*/
|
|
6749
|
+
pagination?: CarouselPaging;
|
|
6750
|
+
}
|
|
6751
|
+
|
|
6482
6752
|
/**
|
|
6483
6753
|
* @experimental This is an experimental component, use it at your own risk.
|
|
6484
6754
|
*/
|
|
@@ -6526,6 +6796,69 @@ export declare type F0EmojiPickerSize = (typeof f0EmojiPickerSizes)[number];
|
|
|
6526
6796
|
|
|
6527
6797
|
export declare const f0EmojiPickerSizes: readonly ["sm", "md", "lg"];
|
|
6528
6798
|
|
|
6799
|
+
/**
|
|
6800
|
+
* @experimental This is an experimental component use it at your own risk
|
|
6801
|
+
*/
|
|
6802
|
+
export declare const F0ENPSButton: WithDataTestIdReturnType_3< {
|
|
6803
|
+
({ value, onChange, labels, icons, size, fullWidth, disabled, required, }: F0ENPSButtonProps_2): JSX_2.Element;
|
|
6804
|
+
displayName: string;
|
|
6805
|
+
}>;
|
|
6806
|
+
|
|
6807
|
+
export declare type F0ENPSButtonProps = {
|
|
6808
|
+
/**
|
|
6809
|
+
* The face that is answered, or `undefined` while the question is unanswered.
|
|
6810
|
+
*/
|
|
6811
|
+
value?: Pulse;
|
|
6812
|
+
/**
|
|
6813
|
+
* Called with the answered face — or `undefined` when the answer is cleared,
|
|
6814
|
+
* which only `required: false` allows. Never called on mount.
|
|
6815
|
+
*/
|
|
6816
|
+
onChange?: (value: Pulse | undefined) => void;
|
|
6817
|
+
/**
|
|
6818
|
+
* What each face means, worst to best. A face carries no visible text, so its
|
|
6819
|
+
* label is both the accessible name and the tooltip: word it as the answer the
|
|
6820
|
+
* person is giving ("Very bad"), never as a number or a position.
|
|
6821
|
+
*
|
|
6822
|
+
* Required, and required in full — the wording belongs to the question, so the
|
|
6823
|
+
* component holds no copy of its own: a mood check answers "Terrible", a
|
|
6824
|
+
* recommendation question answers "Not at all likely". Pass it already
|
|
6825
|
+
* translated.
|
|
6826
|
+
*/
|
|
6827
|
+
labels: Record<Pulse, string>;
|
|
6828
|
+
/**
|
|
6829
|
+
* Override the face drawn for one or more points of the scale. Defaults to the
|
|
6830
|
+
* five `Face*` icons from `lib/mood` — the same ones `F0AvatarPulse` shows, so
|
|
6831
|
+
* an answer looks the same wherever it turns up.
|
|
6832
|
+
*
|
|
6833
|
+
* Swap them only when the question isn't about mood: a thumbs pair, a set of
|
|
6834
|
+
* stars. Keep the replacements a *set* that reads worst-to-best on its own —
|
|
6835
|
+
* five unrelated glyphs stop being a scale.
|
|
6836
|
+
*/
|
|
6837
|
+
icons?: Partial<Record<Pulse, IconType>>;
|
|
6838
|
+
/**
|
|
6839
|
+
* The size of each face.
|
|
6840
|
+
* @default "lg"
|
|
6841
|
+
*/
|
|
6842
|
+
size?: ButtonToggleGroupSize;
|
|
6843
|
+
/**
|
|
6844
|
+
* Whether the five faces stretch to fill the container. A widget's eNPS row
|
|
6845
|
+
* usually should — an equal split reads as one scale rather than five buttons.
|
|
6846
|
+
* @default true
|
|
6847
|
+
*/
|
|
6848
|
+
fullWidth?: boolean;
|
|
6849
|
+
/**
|
|
6850
|
+
* Whether every face is disabled — a submitted answer, or a question that is
|
|
6851
|
+
* closed.
|
|
6852
|
+
* @default false
|
|
6853
|
+
*/
|
|
6854
|
+
disabled?: boolean;
|
|
6855
|
+
/**
|
|
6856
|
+
* Whether an answer, once given, can be taken back by pressing it again.
|
|
6857
|
+
* @default false
|
|
6858
|
+
*/
|
|
6859
|
+
required?: boolean;
|
|
6860
|
+
};
|
|
6861
|
+
|
|
6529
6862
|
export declare type F0FileAction = {
|
|
6530
6863
|
icon?: IconType;
|
|
6531
6864
|
label: string;
|
|
@@ -7350,6 +7683,18 @@ export declare type F0ProgressSeriesSize = (typeof f0ProgressSeriesSizes)[number
|
|
|
7350
7683
|
|
|
7351
7684
|
export declare const f0ProgressSeriesSizes: readonly ["sm", "md", "lg"];
|
|
7352
7685
|
|
|
7686
|
+
/**
|
|
7687
|
+
* Header for a resource detail page: avatar, title, description, status,
|
|
7688
|
+
* metadata and its primary, secondary and overflow actions.
|
|
7689
|
+
*/
|
|
7690
|
+
declare const F0ResourceHeader: ({ avatar, title, description, primaryAction, secondaryActions, otherActions, status, metadata, deactivated, metadataRowGap, showBottomBorder, onClose, }: Props) => JSX_2.Element;
|
|
7691
|
+
export { F0ResourceHeader }
|
|
7692
|
+
export { F0ResourceHeader as ResourceHeader }
|
|
7693
|
+
|
|
7694
|
+
declare type F0ResourceHeaderProps = Props;
|
|
7695
|
+
export { F0ResourceHeaderProps }
|
|
7696
|
+
export { F0ResourceHeaderProps as ResourceHeaderProps }
|
|
7697
|
+
|
|
7353
7698
|
/**
|
|
7354
7699
|
* @experimental This is an experimental component, use it at your own risk
|
|
7355
7700
|
*/
|
|
@@ -8299,6 +8644,18 @@ export declare type GraphVisualizationOptions<R extends RecordType, Filters exte
|
|
|
8299
8644
|
* the default entry view (roots expanded to `defaultExpandDepth`).
|
|
8300
8645
|
*/
|
|
8301
8646
|
focusOnEntry?: string;
|
|
8647
|
+
/**
|
|
8648
|
+
* Id of a node to mark as **selected on entry** — the click-selection ring, so
|
|
8649
|
+
* a deep link lands on the graph looking the way a user's own click leaves it,
|
|
8650
|
+
* not just framed. Seeded on the first render; the selection then follows
|
|
8651
|
+
* normal clicks/keyboard (this is a one-shot entry seed, not a controlled
|
|
8652
|
+
* value). Pair it with `focusOnEntry` (usually the same id) so the node's
|
|
8653
|
+
* branch is expanded and framed — otherwise the ring isn't visible until its
|
|
8654
|
+
* branch is opened. Unlike `revealNodeId` (search) it sets the selection, not
|
|
8655
|
+
* the reveal highlight. Providing it puts the graph's selection in controlled
|
|
8656
|
+
* mode; omitting it leaves selection uncontrolled (the default).
|
|
8657
|
+
*/
|
|
8658
|
+
initialSelectedNodeId?: string;
|
|
8302
8659
|
/**
|
|
8303
8660
|
* Resolves the ancestor path (root → … → matched node) for a node so it can
|
|
8304
8661
|
* be revealed, returning the records in root-first order. Required for
|
|
@@ -8703,7 +9060,7 @@ export declare interface HomeSlotParamsMap {
|
|
|
8703
9060
|
* `alert` and `status` are EXCLUSIVE — `Widget` throws when given both — so the
|
|
8704
9061
|
* type says so rather than leaving it to blow up at runtime.
|
|
8705
9062
|
*/
|
|
8706
|
-
export declare type HomeWidgetChrome = Pick<WidgetProps, "action" | "summaries"> & ({
|
|
9063
|
+
export declare type HomeWidgetChrome = Pick<WidgetProps, "action" | "summaries" | "headerControls"> & ({
|
|
8707
9064
|
alert?: WidgetProps["alert"];
|
|
8708
9065
|
status?: never;
|
|
8709
9066
|
} | {
|
|
@@ -9024,6 +9381,27 @@ export declare type InfiniteScrollPaginatedResponse<TRecord> = BasePaginatedResp
|
|
|
9024
9381
|
hasMore: boolean;
|
|
9025
9382
|
};
|
|
9026
9383
|
|
|
9384
|
+
/**
|
|
9385
|
+
* Structured help copy for a labelled thing — a table column, a dashboard
|
|
9386
|
+
* widget. `link` is for what the description implies but cannot do: opening the
|
|
9387
|
+
* catalog entry the copy came from.
|
|
9388
|
+
*/
|
|
9389
|
+
declare type InfoHintContent = {
|
|
9390
|
+
title: string;
|
|
9391
|
+
description: string;
|
|
9392
|
+
link?: {
|
|
9393
|
+
label: string;
|
|
9394
|
+
onClick: () => void;
|
|
9395
|
+
};
|
|
9396
|
+
/**
|
|
9397
|
+
* Accessible name for the icon trigger. Falls back to `label` on the host
|
|
9398
|
+
* and then to a generic "More information", so the trigger is never named
|
|
9399
|
+
* after the thing it describes alone — a name identical to the heading
|
|
9400
|
+
* beside it says nothing about what the control does.
|
|
9401
|
+
*/
|
|
9402
|
+
label?: string;
|
|
9403
|
+
};
|
|
9404
|
+
|
|
9027
9405
|
/**
|
|
9028
9406
|
* @deprecated Renamed to `F0TextInput` to match the F0 input vocabulary
|
|
9029
9407
|
* (any component where the user types text in a box has the `Input` suffix
|
|
@@ -10049,6 +10427,18 @@ export declare interface NewHomeLayoutProps {
|
|
|
10049
10427
|
stackedPinsAfter?: number;
|
|
10050
10428
|
ctx?: HomeRenderCtx;
|
|
10051
10429
|
className?: string;
|
|
10430
|
+
/** Tooltip copy for the One switch, forwarded to `F0OneSwitch`. */
|
|
10431
|
+
oneSwitchTooltip?: {
|
|
10432
|
+
whenDisabled?: string;
|
|
10433
|
+
whenEnabled?: string;
|
|
10434
|
+
};
|
|
10435
|
+
/** Opens the One switch's tooltip for 3s on mount. */
|
|
10436
|
+
oneSwitchAutoOpen?: boolean;
|
|
10437
|
+
/**
|
|
10438
|
+
* Hides the One AI toggle in the controls row. Use when One is reached
|
|
10439
|
+
* elsewhere (e.g. a sidebar tab) so Home doesn't show a redundant switch.
|
|
10440
|
+
*/
|
|
10441
|
+
hideOneSwitch?: boolean;
|
|
10052
10442
|
}
|
|
10053
10443
|
|
|
10054
10444
|
declare type NextDepth<T> = T extends 1 ? 2 : T extends 2 ? 3 : T extends 3 ? 4 : never;
|
|
@@ -11370,14 +11760,6 @@ export declare const resolveSlotRenderer: (entry: SlotRendererEntry | undefined)
|
|
|
11370
11760
|
/** Resolves a header's params-driven parts against the params in hand. */
|
|
11371
11761
|
export declare const resolveWidgetHeader: (header: HomeWidgetHeader | undefined, params?: WidgetParams) => WidgetProps["header"];
|
|
11372
11762
|
|
|
11373
|
-
/**
|
|
11374
|
-
* Header for a resource detail page: avatar, title, description, status,
|
|
11375
|
-
* metadata and its primary, secondary and overflow actions.
|
|
11376
|
-
*/
|
|
11377
|
-
export declare const ResourceHeader: ({ avatar, title, description, primaryAction, secondaryActions, otherActions, status, metadata, deactivated, metadataRowGap, showBottomBorder, onClose, }: Props) => JSX_2.Element;
|
|
11378
|
-
|
|
11379
|
-
export declare type ResourceHeaderProps = Props;
|
|
11380
|
-
|
|
11381
11763
|
declare type RestrictComponentProps = {
|
|
11382
11764
|
identifier: string;
|
|
11383
11765
|
allowedRoutes?: string[];
|
|
@@ -12127,7 +12509,22 @@ export declare const slotRowBleed: (ctx: HomeRenderCtx) => string;
|
|
|
12127
12509
|
*/
|
|
12128
12510
|
export declare type SlotSkeletonRenderer<P = unknown> = (params: P, ctx: HomeSkeletonCtx) => ReactNode;
|
|
12129
12511
|
|
|
12130
|
-
export declare function SlotWidget({ header, params, fullHeight, action, summaries, alert, status, slots, loading, slotRenderers, actions, flipped, onFlipBack, isDragging, ctx, }: SlotWidgetProps): JSX_2.Element;
|
|
12512
|
+
export declare function SlotWidget({ header, params, fullHeight, action, summaries, headerControls, alert, status, slots, loading, slotRenderers, actions, flipped, onFlipBack, isDragging, ctx, }: SlotWidgetProps): JSX_2.Element;
|
|
12513
|
+
|
|
12514
|
+
/**
|
|
12515
|
+
* A widget's CONTENT: the slot stack, with the dividers between slots and the
|
|
12516
|
+
* skeletons while it loads — everything `SlotWidget` draws, minus the card.
|
|
12517
|
+
*
|
|
12518
|
+
* Public because the frame is not always wanted. A surface that drills into a
|
|
12519
|
+
* widget (an overlay listing the tasks one of its grouped rows summarises) is
|
|
12520
|
+
* already a surface: wrapped in a `Widget` it would be a card inside a card,
|
|
12521
|
+
* with two borders and two paddings. Rendering the slots here keeps the rows
|
|
12522
|
+
* IDENTICAL to the widget's — same slots, same renderers — which composing them
|
|
12523
|
+
* by hand would not.
|
|
12524
|
+
*
|
|
12525
|
+
* Inside a card, prefer `SlotWidget`: it is this plus the frame.
|
|
12526
|
+
*/
|
|
12527
|
+
export declare function SlotWidgetContent({ slots, loading, slotRenderers, ctx, }: Pick<SlotWidgetProps, "slots" | "loading" | "slotRenderers" | "ctx">): JSX_2.Element;
|
|
12131
12528
|
|
|
12132
12529
|
/**
|
|
12133
12530
|
* SlotWidget — one Home widget rendered from data: the f0 `Widget` frame (the
|
|
@@ -12445,19 +12842,16 @@ declare type TableColumnDefinition<R extends RecordType, Sortings extends Sortin
|
|
|
12445
12842
|
|
|
12446
12843
|
declare function TableHead({ children, width, minWidth, sortState, onSortClick, onClick, info, infoIcon, sticky, hidden, highlighted, align, className, colSpan, }: TableHeadProps): JSX_2.Element;
|
|
12447
12844
|
|
|
12448
|
-
|
|
12449
|
-
|
|
12450
|
-
|
|
12451
|
-
|
|
12452
|
-
|
|
12453
|
-
|
|
12454
|
-
|
|
12455
|
-
|
|
12456
|
-
|
|
12457
|
-
|
|
12458
|
-
*/
|
|
12459
|
-
label?: string;
|
|
12460
|
-
};
|
|
12845
|
+
/**
|
|
12846
|
+
* Structured help copy for a column header. The same shape every other
|
|
12847
|
+
* ⓘ affordance takes — see {@link InfoHintContent}, where `label` defaults to
|
|
12848
|
+
* the column label when the header's children are a string.
|
|
12849
|
+
*
|
|
12850
|
+
* A table-specific name for a shape that is no longer table-specific: the
|
|
12851
|
+
* canonical export is `InfoHintContent`, and this stays as an alias so
|
|
12852
|
+
* existing imports keep working.
|
|
12853
|
+
*/
|
|
12854
|
+
declare type TableHeaderInfo = InfoHintContent;
|
|
12461
12855
|
|
|
12462
12856
|
declare interface TableHeadProps {
|
|
12463
12857
|
children: React.ReactNode;
|
|
@@ -12596,6 +12990,23 @@ declare type TableVisualizationOptions<R extends RecordType, _Filters extends Fi
|
|
|
12596
12990
|
* `noRemoving` are never removable.
|
|
12597
12991
|
*/
|
|
12598
12992
|
onRemoveColumn?: (columnId: ColId) => void;
|
|
12993
|
+
/**
|
|
12994
|
+
* The user-managed frozen columns in the column-settings popover. Locked
|
|
12995
|
+
* columns move into a sticky group on the left, stay visible, and cannot be
|
|
12996
|
+
* reordered or removed. Their array order controls their order in that group.
|
|
12997
|
+
* One visible managed column always remains unlocked as the table's
|
|
12998
|
+
* scrollable region; an all-locked input is normalized accordingly.
|
|
12999
|
+
*
|
|
13000
|
+
* Unlocking a column returns it to its saved position. Columns covered by
|
|
13001
|
+
* `frozenColumns` remain permanently locked before this managed group.
|
|
13002
|
+
*/
|
|
13003
|
+
lockedColumnIds?: readonly ColId[];
|
|
13004
|
+
/**
|
|
13005
|
+
* Called with the complete set of user-managed locked column ids whenever a
|
|
13006
|
+
* user locks or unlocks a column. Passing this callback enables the lock
|
|
13007
|
+
* controls in the column-settings popover.
|
|
13008
|
+
*/
|
|
13009
|
+
onLockedColumnIdsChange?: (columnIds: ColId[]) => void;
|
|
12599
13010
|
/** Maps a row to a visual variant: `"striped"`, `"striked"`, or `"none"`. */
|
|
12600
13011
|
referenceRowType?: (item: R) => ReferenceType;
|
|
12601
13012
|
/**
|
|
@@ -13728,8 +14139,14 @@ export declare type WidgetAvatarsListItemProps = {
|
|
|
13728
14139
|
* Selection follows the filter: if the selected row is filtered out, the first
|
|
13729
14140
|
* remaining row takes over, so the preview always shows something the CTA can
|
|
13730
14141
|
* actually add.
|
|
14142
|
+
*
|
|
14143
|
+
* ONE CATALOG, TWO COLUMNS. Pass the `area` the picker was opened for and the
|
|
14144
|
+
* same `widgets` list serves both: entries that declare `areas` are shown only
|
|
14145
|
+
* where they fit, entries that declare none are shown in both, and the preview
|
|
14146
|
+
* takes that column's width. So a Home keeps one list — the widgets it offers —
|
|
14147
|
+
* rather than two that have to be kept in step.
|
|
13731
14148
|
*/
|
|
13732
|
-
export declare function WidgetCatalog({ isOpen, onClose, widgets, onAdd, groups, previewWidth, slotRenderers, title, }: WidgetCatalogProps): JSX_2.Element;
|
|
14149
|
+
export declare function WidgetCatalog({ isOpen, onClose, widgets, onAdd, groups, area, previewWidth, slotRenderers, title, }: WidgetCatalogProps): JSX_2.Element;
|
|
13733
14150
|
|
|
13734
14151
|
/**
|
|
13735
14152
|
* One DOMAIN in the picker: a heading the widgets under it belong to.
|
|
@@ -13784,6 +14201,21 @@ export declare interface WidgetCatalogItem {
|
|
|
13784
14201
|
* nothing recommended there is no section.
|
|
13785
14202
|
*/
|
|
13786
14203
|
recommended?: boolean;
|
|
14204
|
+
/**
|
|
14205
|
+
* WHICH COLUMNS this widget may be added to — the same two sides the layout
|
|
14206
|
+
* hands back from `onClickAddNewWidget`. The picker then shows it only when it
|
|
14207
|
+
* was opened for one of them (see `area`).
|
|
14208
|
+
*
|
|
14209
|
+
* OMIT IT for a widget that belongs in either, which is most of them: a
|
|
14210
|
+
* `list`-shaped card reads the same in a 396px rail and in the main column,
|
|
14211
|
+
* and saying so twice is how the two lists drift apart. Name the sides for the
|
|
14212
|
+
* widgets that genuinely cannot travel — a carousel of post cards needs the
|
|
14213
|
+
* main column's width, a 40px clock tile is built for the rail.
|
|
14214
|
+
*
|
|
14215
|
+
* A widget listed for NEITHER side (`[]`) is offered nowhere, which is a way to
|
|
14216
|
+
* retire an entry without deleting it.
|
|
14217
|
+
*/
|
|
14218
|
+
areas?: WidgetContainerSide[];
|
|
13787
14219
|
}
|
|
13788
14220
|
|
|
13789
14221
|
export declare interface WidgetCatalogProps {
|
|
@@ -13798,9 +14230,22 @@ export declare interface WidgetCatalogProps {
|
|
|
13798
14230
|
* and the list is flat — grouping is an offer, not a requirement.
|
|
13799
14231
|
*/
|
|
13800
14232
|
groups?: WidgetCatalogGroup[];
|
|
14233
|
+
/**
|
|
14234
|
+
* WHICH COLUMN the picker was opened for — pass the side `onClickAddNewWidget`
|
|
14235
|
+
* handed you. It does two things: widgets that declare `areas` are filtered
|
|
14236
|
+
* down to the ones this column can hold, and the preview is capped to that
|
|
14237
|
+
* column's width by default (see {@link AREA_PREVIEW_WIDTH}).
|
|
14238
|
+
*
|
|
14239
|
+
* Omit it and the picker is what it has always been: every widget, previewed
|
|
14240
|
+
* at `previewWidth`. That is right for a Home with ONE place to put a widget;
|
|
14241
|
+
* a layout with two columns should say which one it is filling, or it will
|
|
14242
|
+
* offer the rail's clock for the main column and preview it at the wrong width.
|
|
14243
|
+
*/
|
|
14244
|
+
area?: WidgetContainerSide;
|
|
13801
14245
|
/**
|
|
13802
14246
|
* Content width of the column this was opened from — the preview is capped
|
|
13803
|
-
* to it, so a rail-bound widget previews at rail width.
|
|
14247
|
+
* to it, so a rail-bound widget previews at rail width. Defaults to the
|
|
14248
|
+
* `area`'s own width, and to the rail's when there is no `area`.
|
|
13804
14249
|
*/
|
|
13805
14250
|
previewWidth?: number;
|
|
13806
14251
|
/**
|
|
@@ -13956,6 +14401,23 @@ export declare interface WidgetProps {
|
|
|
13956
14401
|
AIButton?: () => void;
|
|
13957
14402
|
/** An overflow menu at the header's right, beside `link`. */
|
|
13958
14403
|
actions?: DropdownItem[];
|
|
14404
|
+
/**
|
|
14405
|
+
* THE WIDGET'S OWN CONTROLS, in the header's top-right: what the card is
|
|
14406
|
+
* currently showing (a scope switcher), or what you can do from it without
|
|
14407
|
+
* leaving the page ("New post"). They act on the WIDGET.
|
|
14408
|
+
*
|
|
14409
|
+
* They sit to the LEFT of the overflow menu, which keeps its corner — the menu
|
|
14410
|
+
* is where every widget's items live, and a control that moved depending on
|
|
14411
|
+
* whether a card had a menu would be a different control each time.
|
|
14412
|
+
*
|
|
14413
|
+
* Keep it to one or two `sm` controls. This row is the TITLE'S first, and the
|
|
14414
|
+
* title gives up its width to whatever is put beside it: three buttons here
|
|
14415
|
+
* and a narrow card has no name left.
|
|
14416
|
+
*
|
|
14417
|
+
* NOT the way out of the widget — that is `header.link`, drawn as the title
|
|
14418
|
+
* itself — and NOT its call to action, which is `action`, in the footer.
|
|
14419
|
+
*/
|
|
14420
|
+
headerControls?: ReactNode;
|
|
13959
14421
|
}
|
|
13960
14422
|
|
|
13961
14423
|
/**
|
|
@@ -14241,10 +14703,8 @@ declare module "@tiptap/core" {
|
|
|
14241
14703
|
|
|
14242
14704
|
declare module "@tiptap/core" {
|
|
14243
14705
|
interface Commands<ReturnType> {
|
|
14244
|
-
|
|
14245
|
-
|
|
14246
|
-
src: string;
|
|
14247
|
-
}) => ReturnType;
|
|
14706
|
+
transcript: {
|
|
14707
|
+
insertTranscript: (data: TranscriptData) => ReturnType;
|
|
14248
14708
|
};
|
|
14249
14709
|
}
|
|
14250
14710
|
}
|
|
@@ -14252,8 +14712,10 @@ declare module "@tiptap/core" {
|
|
|
14252
14712
|
|
|
14253
14713
|
declare module "@tiptap/core" {
|
|
14254
14714
|
interface Commands<ReturnType> {
|
|
14255
|
-
|
|
14256
|
-
|
|
14715
|
+
videoEmbed: {
|
|
14716
|
+
setVideoEmbed: (options: {
|
|
14717
|
+
src: string;
|
|
14718
|
+
}) => ReturnType;
|
|
14257
14719
|
};
|
|
14258
14720
|
}
|
|
14259
14721
|
}
|