@factorialco/f0-react 6.72.0 → 6.73.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.
@@ -1807,6 +1807,28 @@ declare type CardAvatarVariant = AvatarVariant | {
1807
1807
  date: Date;
1808
1808
  };
1809
1809
 
1810
+ /**
1811
+ * Bookmark (save) toggle rendered as an icon button in the card's options overlay.
1812
+ * Shows an outline bookmark icon when not bookmarked and a filled one when bookmarked,
1813
+ * giving an at-a-glance indication of the saved state.
1814
+ */
1815
+ declare interface CardBookmark {
1816
+ /**
1817
+ * Whether the card is currently bookmarked (saved).
1818
+ * Controls the filled vs. outline icon and keeps the toggle visible while active.
1819
+ */
1820
+ bookmarked: boolean;
1821
+ /**
1822
+ * Called with the next bookmarked state when the user toggles the bookmark.
1823
+ */
1824
+ onBookmarkChange: (bookmarked: boolean) => void;
1825
+ /**
1826
+ * Accessible label for the toggle button (e.g. "Save product").
1827
+ * Falls back to the card `title` when omitted.
1828
+ */
1829
+ label?: string;
1830
+ }
1831
+
1810
1832
  /**
1811
1833
  * Group Cards: Renders
1812
1834
  */
@@ -1851,6 +1873,121 @@ declare type CardImageSize = (typeof cardImageSizes)[number];
1851
1873
 
1852
1874
  declare const cardImageSizes: readonly ["xs", "sm", "md", "lg", "xl"];
1853
1875
 
1876
+ declare interface CardInternalProps {
1877
+ /**
1878
+ * Whether the card has a compact layout
1879
+ */
1880
+ compact?: boolean;
1881
+ /**
1882
+ * The avatar to display in the card
1883
+ */
1884
+ avatar?: CardAvatarVariant;
1885
+ /**
1886
+ * Whether the card has an image
1887
+ */
1888
+ image?: string;
1889
+ /**
1890
+ * How the image should be displayed/fitted within its container
1891
+ * @default "fit-width"
1892
+ */
1893
+ imageFit?: CardImageFit;
1894
+ /**
1895
+ * Size of the image container
1896
+ * @default "sm"
1897
+ */
1898
+ imageSize?: CardImageSize;
1899
+ /**
1900
+ * Constrain the image container to a fixed aspect ratio instead of a fixed height.
1901
+ * When set, `imageSize` is ignored for height.
1902
+ * @example "video"
1903
+ */
1904
+ imageAspectRatio?: CardImageAspectRatio;
1905
+ /**
1906
+ * Whether to show a blurred background image when the image doesn't fill the container
1907
+ * @default true
1908
+ */
1909
+ blurredBackground?: boolean;
1910
+ /**
1911
+ * The title of the card
1912
+ */
1913
+ title?: string;
1914
+ /**
1915
+ * The description of the card
1916
+ */
1917
+ description?: string;
1918
+ /**
1919
+ * Metadata items to display in the card
1920
+ */
1921
+ metadata?: CardMetadata[];
1922
+ /**
1923
+ * The children to display in the card
1924
+ */
1925
+ children?: ReactNode;
1926
+ /**
1927
+ * The link to navigate to when the card is clicked
1928
+ */
1929
+ link?: string;
1930
+ /**
1931
+ * The primary action that displays a primary button in the card footer
1932
+ */
1933
+ primaryAction?: CardPrimaryAction;
1934
+ /**
1935
+ * The secondary actions - either an array of button actions or a single link
1936
+ */
1937
+ secondaryActions?: CardSecondaryAction[] | CardSecondaryLink;
1938
+ /**
1939
+ * Actions to display in the dropdown menu inside the card content
1940
+ */
1941
+ otherActions?: DropdownItem[];
1942
+ /**
1943
+ * Bookmark (save) toggle rendered as an icon button in the card's options overlay.
1944
+ * Shows an outline bookmark when not bookmarked and a filled one when bookmarked.
1945
+ */
1946
+ bookmark?: CardBookmark;
1947
+ /**
1948
+ * Whether the card is selectable
1949
+ */
1950
+ selectable?: boolean;
1951
+ /**
1952
+ * Whether the card is selected
1953
+ */
1954
+ selected?: boolean;
1955
+ /**
1956
+ * The callback to handle the selection of the card
1957
+ */
1958
+ onSelect?: (selected: boolean) => void;
1959
+ /**
1960
+ * The callback to handle the click of the card
1961
+ */
1962
+ onClick?: () => void;
1963
+ /**
1964
+ * Force vertical metadata for compact layout
1965
+ * Private prop
1966
+ */
1967
+ forceVerticalMetadata?: boolean;
1968
+ /**
1969
+ * Whether the card should have a full height
1970
+ */
1971
+ fullHeight?: boolean;
1972
+ /**
1973
+ * Use a softer/lighter border (`border-f1-border-secondary`) instead of the default
1974
+ * `border-f1-border`. Opt-in so existing cards keep their current appearance.
1975
+ * @default false
1976
+ */
1977
+ subtleBorder?: boolean;
1978
+ /**
1979
+ * When true, disables the full-card overlay link so parent components
1980
+ * can manage drag-and-drop while still allowing click navigation via onClick
1981
+ */
1982
+ disableOverlayLink?: boolean;
1983
+ /**
1984
+ * Alert banner displayed above the card with a coloured header strip and matching border.
1985
+ * Supports info, warning, critical, and positive variants with a default icon per variant.
1986
+ * Use `visible` + `onDismiss` for controlled dismiss behaviour.
1987
+ */
1988
+ alert?: CardAlertProps;
1989
+ }
1990
+
1854
1991
  declare type CardMetadata = {
1855
1992
  /** Leading icon. Optional — when omitted the row renders just the value. */
1856
1993
  icon?: IconType;
@@ -4564,6 +4701,7 @@ declare const defaultTranslations: {
4564
4701
  readonly closeSearch: "Close search";
4565
4702
  readonly noResults: "No chats found";
4566
4703
  readonly backToLatest: "Jump to latest";
4704
+ readonly readOnly: "You can't send messages in this conversation";
4567
4705
  readonly online: "Online";
4568
4706
  readonly muted: "Muted";
4569
4707
  readonly mute: "Mute";
@@ -6172,6 +6310,8 @@ export declare interface F0CardHorizontalProps {
6172
6310
  descriptionAsSingleLine?: boolean;
6173
6311
  }
6174
6312
 
6313
+ declare type F0CardProps = Omit<CardInternalProps, (typeof privateProps_8)[number]>;
6314
+
6175
6315
  /**
6176
6316
  * @experimental This is an experimental component use it at your own risk
6177
6317
  */
@@ -6278,21 +6418,25 @@ export declare const F0Chat: (props: F0ChatProps) => ReactNode;
6278
6418
  * `kind` — videos are files with a video MIME type. */
6279
6419
  export declare type F0ChatAttachedKind = "image" | "video" | "document" | "file";
6280
6420
 
6281
- export declare type F0ChatAttachment = F0ChatImageAttachment | F0ChatFileAttachment | F0ChatLocationAttachment | F0ChatVoiceAttachment;
6421
+ export declare type F0ChatAttachment = F0ChatImageAttachment | F0ChatFileAttachment | F0ChatLocationAttachment | F0ChatVoiceAttachment | F0ChatCardAttachment;
6282
6422
 
6283
6423
  /** How files reached the composer. Same story as {@link F0ChatReactionSource}:
6284
6424
  * {@link F0ChatRuntime.uploadFiles} cannot tell these apart. */
6285
6425
  export declare type F0ChatAttachSource = "button" | "drop" | "paste";
6286
6426
 
6287
6427
  /**
6288
- * Per-channel permissions. Everything is optional and defaults to today's
6289
- * behavior, so hosts only express what their transport restricts (frozen /
6290
- * read-only channels, moderation roles…):
6428
+ * Per-channel permissions, one per verb. Everything is optional and defaults to
6429
+ * today's behavior, so hosts only express what their transport restricts
6430
+ * (frozen / read-only channels, moderation roles…):
6291
6431
  * - `canSend` (default true): false hides the composer entirely.
6432
+ * - `canReply` (default: `canSend`): false hides Reply. Replying needs a
6433
+ * composer to reply *into*, so it follows `canSend` unless stated otherwise.
6292
6434
  * - `canReact` (default true): false hides the quick-reaction row, the emoji
6293
6435
  * pickers and disables toggling existing reaction pills.
6294
6436
  * - `canUpload` (default: whether `uploadFiles` exists): false disables the
6295
6437
  * attach button, drag & drop and voice notes even when `uploadFiles` exists.
6438
+ * - `canCopy` (default true): false hides Copy.
6439
+ * - `canViewInfo` (default true): false hides Info (delivery / read receipts).
6296
6440
  * - `canEditMessage` (default: own message within {@link F0ChatRuntime.editWindowMs}):
6297
6441
  * overrides the edit policy per message, INCLUDING the edit window — a host
6298
6442
  * that supplies this and wants a time limit must apply it here. Structural
@@ -6302,15 +6446,55 @@ export declare type F0ChatAttachSource = "button" | "drop" | "paste";
6302
6446
  * - `canDeleteMessage` (default: own message): overrides the delete policy per
6303
6447
  * message (e.g. moderators deleting others' messages). Failed local echoes
6304
6448
  * are always discardable — they don't exist server-side.
6449
+ *
6450
+ * On an `announcement` channel every boolean above defaults to **false**
6451
+ * instead: a noticeboard is one-way by construction. An explicit value always
6452
+ * wins, so a host with a poster passes `{ canSend: true }` and gets exactly
6453
+ * that. See `utils/capabilities.ts`.
6454
+ *
6455
+ * When no action survives, the hover ellipsis is not rendered at all.
6305
6456
  */
6306
6457
  export declare type F0ChatCapabilities = {
6307
6458
  canSend?: boolean;
6459
+ canReply?: boolean;
6308
6460
  canReact?: boolean;
6309
6461
  canUpload?: boolean;
6462
+ canCopy?: boolean;
6463
+ canViewInfo?: boolean;
6310
6464
  canEditMessage?: (message: F0ChatMessage) => boolean;
6311
6465
  canDeleteMessage?: (message: F0ChatMessage) => boolean;
6312
6466
  };
6313
6467
 
6468
+ /**
6469
+ * A rich card inside a message — an {@link F0Card} the host describes as data.
6470
+ *
6471
+ * Deliberately a CURATED subset of `F0CardProps`, not a passthrough: selection,
6472
+ * bookmarking, the overflow menu and the alert banner mean nothing in a
6473
+ * transcript, and `children` isn't serialisable — which is exactly what a
6474
+ * transport-backed card has to be (factorial → a Stream custom attachment
6475
+ * `{ type: "card", … }`). Handlers stay optional so a card can be pure data
6476
+ * (`href`) or host-wired (`onClick`).
6477
+ */
6478
+ export declare type F0ChatCardAttachment = {
6479
+ kind: "card";
6480
+ title: string;
6481
+ description?: string;
6482
+ /** Leading avatar — the full F0Card set (emoji, icon, module, person, date…). */
6483
+ avatar?: F0CardProps["avatar"];
6484
+ /** Cover image above the content. */
6485
+ image?: string;
6486
+ /** Call to action, rendered as a button in the card's divided footer. */
6487
+ action?: {
6488
+ label: string;
6489
+ /** Navigates. Takes precedence over `onClick` when both are set. */
6490
+ href?: string;
6491
+ onClick?: () => void;
6492
+ };
6493
+ /** Makes the whole card activate — the footer action still acts on its own. */
6494
+ href?: string;
6495
+ onClick?: () => void;
6496
+ };
6497
+
6314
6498
  /** The conversation currently shown in the panel (header + behaviour differs by type). */
6315
6499
  export declare type F0ChatChannel = {
6316
6500
  id: string;
@@ -6339,6 +6523,13 @@ export declare type F0ChatChannel = {
6339
6523
  memberCount?: number;
6340
6524
  /** DM only — the counterpart, used for the header identity hover card. */
6341
6525
  user?: F0ChatUser;
6526
+ /**
6527
+ * Sentence shown where the composer would be when the current user can't
6528
+ * send here ("Only Factorial can send messages"). Host-owned because only the
6529
+ * host knows who *can* post — and has to translate it. Falls back to a
6530
+ * generic i18n line.
6531
+ */
6532
+ readOnlyNotice?: string;
6342
6533
  };
6343
6534
 
6344
6535
  /** A status badge shown in the header next to the title (e.g. on vacation, away).
@@ -6348,7 +6539,22 @@ export declare type F0ChatChannelStatus = {
6348
6539
  label: string;
6349
6540
  };
6350
6541
 
6351
- export declare type F0ChatChannelType = "dm" | "group";
6542
+ /**
6543
+ * `announcement` is a one-way channel: a noticeboard (product changelog, company
6544
+ * news) where only the people the host grants permission to can post, and
6545
+ * everyone else reads. It renders like a DM — no avatar gutter, no sender names,
6546
+ * no `@here` — and every capability defaults to off (see
6547
+ * {@link F0ChatCapabilities}), so a read-only channel needs no configuration at
6548
+ * all while a host that has a poster still turns `canSend` back on.
6549
+ */
6550
+ export declare type F0ChatChannelType = "dm" | "group" | "announcement";
6551
+
6552
+ /**
6553
+ * What the composer can produce. Cards are authored by the host (a seeded
6554
+ * announcement, a transport's custom attachment) — there is no affordance to
6555
+ * attach one, so they're excluded from sending, editing and uploading.
6556
+ */
6557
+ export declare type F0ChatComposableAttachment = Exclude<F0ChatAttachment, F0ChatCardAttachment>;
6352
6558
 
6353
6559
  /**
6354
6560
  * Edits applied to an existing message. Text, mentions and attachments are all
@@ -6357,7 +6563,7 @@ export declare type F0ChatChannelType = "dm" | "group";
6357
6563
  */
6358
6564
  export declare type F0ChatEditInput = {
6359
6565
  body: string;
6360
- attachments?: F0ChatAttachment[];
6566
+ attachments?: F0ChatComposableAttachment[];
6361
6567
  /** People mentioned in the edited body (groups only). */
6362
6568
  mentions?: F0ChatMention[];
6363
6569
  /** Whether the edited message mentions the whole group (`@here`). */
@@ -6456,6 +6662,11 @@ export declare type F0ChatEvents = {
6456
6662
  }) => void;
6457
6663
  onLocationOpened?: () => void;
6458
6664
  onLinkPreviewClicked?: () => void;
6665
+ /** A card attachment was activated — `source` tells the footer button apart
6666
+ * from a click on the card body. Carries no title or URL. */
6667
+ onCardActivated?: (p: {
6668
+ source: "card" | "action";
6669
+ }) => void;
6459
6670
  onSearchOpened?: () => void;
6460
6671
  onSearchResultNavigated?: (p: {
6461
6672
  direction: "next" | "prev";
@@ -6505,7 +6716,7 @@ export declare type F0ChatHeaderAction = {
6505
6716
  * as its own icon button next to it. Inline requires `icon` — an inline
6506
6717
  * action without one falls back to the menu. */
6507
6718
  placement?: "menu" | "inline";
6508
- /** Restrict the action to a channel type. Omit for both. */
6719
+ /** Restrict the action to given channel types. Omit for all of them. */
6509
6720
  channelTypes?: F0ChatChannelType[];
6510
6721
  };
6511
6722
 
@@ -6823,7 +7034,7 @@ export declare type F0ChatRuntime = {
6823
7034
  * `channel.stopTyping()`).
6824
7035
  */
6825
7036
  stopTyping?: () => void | Promise<void>;
6826
- uploadFiles?: (files: File[]) => Promise<F0ChatAttachment[]>;
7037
+ uploadFiles?: (files: File[]) => Promise<F0ChatComposableAttachment[]>;
6827
7038
  /**
6828
7039
  * Max files attachable at once. When a selection/drop would exceed it, the
6829
7040
  * composer rejects the whole batch and flashes a transient error in the
@@ -6913,7 +7124,7 @@ export declare const f0ChatSenderColors: readonly ["viridian", "malibu", "yellow
6913
7124
 
6914
7125
  export declare type F0ChatSendInput = {
6915
7126
  body: string;
6916
- attachments?: F0ChatAttachment[];
7127
+ attachments?: F0ChatComposableAttachment[];
6917
7128
  replyToId?: string;
6918
7129
  /** People mentioned in the body (groups only). The host maps these to the
6919
7130
  * transport's mention field (factorial → Stream `mentioned_users`). */
@@ -7098,11 +7309,24 @@ declare type F0DialogHeaderProps = {
7098
7309
  resourceHeader?: F0ResourceHeaderProps;
7099
7310
  controls?: DialogControls;
7100
7311
  headerStatus?: string;
7312
+ /** See {@link F0DialogInternalProps.dismissable} — hides the close button. */
7313
+ dismissable?: boolean;
7101
7314
  } & Partial<Pick<TabsProps, "tabs" | "activeTabId" | "setActiveTabId">>;
7102
7315
 
7103
7316
  declare type F0DialogInternalProps = {
7104
7317
  isOpen: boolean;
7105
7318
  onClose: () => void;
7319
+ /**
7320
+ * Whether the reader can walk away. `false` removes the close button and
7321
+ * stops Escape and a click outside from closing — a forced choice, where the
7322
+ * dialog's own actions are the only way out.
7323
+ *
7324
+ * Use it only when leaving would be worse than being trapped: a decision the
7325
+ * product genuinely cannot proceed without. A dialog nobody can dismiss is a
7326
+ * dead end for anyone who does not understand it.
7327
+ * @default true
7328
+ */
7329
+ dismissable?: boolean;
7106
7330
  asBottomSheetInMobile?: boolean;
7107
7331
  position?: DialogPosition;
7108
7332
  width?: DialogWidth;
@@ -12027,6 +12251,8 @@ declare const privateProps_6: readonly ["compact"];
12027
12251
 
12028
12252
  declare const privateProps_7: readonly ["delay", "onOpen"];
12029
12253
 
12254
+ declare const privateProps_8: readonly ["forceVerticalMetadata", "disableOverlayLink"];
12255
+
12030
12256
  declare type ProductUpdate = {
12031
12257
  title: string;
12032
12258
  href: string;
@@ -1,6 +1,6 @@
1
- import { v as s, t, A as i, a as o, J as r, ar as n, aq as l, as as d, B as S, w as C, y as g, L as m, ay as u, az as c, aI as b, x as h, C as P, ax as T, aJ as p, D as F, z as I, a3 as E, b1 as A, b8 as B, K as y, b0 as D, E as L, b as W, i as v, ag as k, ah as O, G as _, an as f, F as x, j as N, n as H, o as R, k as M, c as V, q as w, r as G, H as z, aM as U, aN as j, aB as q, am as K, aR as Q, at as X, a6 as Z, aL as J, U as Y, ac as $, O as aa, bc as ea, V as sa, P as ta, M as ia, N as oa, au as ra, R as na, a_ as la, b2 as da, S as Sa, a7 as Ca, a8 as ga, _ as ma, $ as ua, a0 as ca, Z as ba, a1 as ha, W as Pa, a2 as Ta, a4 as pa, a5 as Fa, a9 as Ia, aa as Ea, b6 as Aa, b5 as Ba, ap as ya, ao as Da, aw as La, aK as Wa, aH as va, av as ka, ab as Oa, aC as _a, b7 as fa, ba as xa, aA as Na, aF as Ha, aD as Ra, bb as Ma, aG as Va, aE as wa, b9 as Ga, d as za, af as Ua, b4 as ja, b3 as qa, aj as Ka, f as Qa, l as Xa, p as Za, g as Ja, h as Ya, aU as $a, aS as ae, ak as ee, al as se, aQ as te, aT as ie, e as oe, s as re, aY as ne, aP as le, aV as de, ad as Se, a$ as Ce, u as ge, ae as me, ai as ue, aO as ce, T as be, Q as he, I as Pe, Y as Te, X as pe, aZ as Fe, aX as Ie, aW as Ee } from "./experimental-D277_AGp.js";
2
- import { dP as Be, ep as ye, eo as De, eC as Le, dm as We, em as ve, ce as ke, c4 as Oe, cb as _e, eh as fe, bZ as xe, bZ as Ne, bS as He, ei as Re, ch as Me, e0 as Ve, cj as we, eF as Ge, en as ze, ey as Ue, ez as je, d6 as qe, eD as Ke, k as Qe, dQ as Xe, cN as Ze, el as Je, er as Ye, eq as $e, T as as, h as es, bT as ss, eA as ts, eG as is, eB as os, eE as rs, ex as ns, eu as ls, ew as ds, es as Ss, ej as Cs, ek as gs, ed as ms, ev as us, et as cs } from "./F0CanvasPanel-D2x3eIDs.js";
3
- import { ax as hs, ay as Ps, a5 as Ts, a6 as ps, a3 as Fs, ag as Is, C as Es, a7 as As, aJ as Bs, ac as ys, aI as Ds, af as Ls, a4 as Ws, av as vs, aL as ks, aK as Os, an as _s, ah as fs, aq as xs, aO as Ns, a2 as Hs, as as Rs, ap as Ms, ak as Vs, aQ as ws, al as Gs, at as zs, au as Us, a8 as js, aM as qs, aN as Ks, am as Qs, aw as Xs, aF as Zs, O as Js, aH as Ys, a9 as $s, aS as at, ab as et, ad as st, aq as tt, aP as it, ar as ot, ao as rt, aR as nt, aa as lt, W as dt, ae as St, a1 as Ct, $ as gt, a0 as mt, aB as ut, aC as ct, az as bt, aG as ht, aj as Pt, ai as Tt, aD as pt, l as Ft, aA as It, aE as Et, y as At } from "./CoachmarkProvider-vsCLDtM0.js";
1
+ import { v as s, t, A as i, a as o, J as r, ar as n, aq as l, as as d, B as S, w as C, y as g, L as m, ay as u, az as c, aI as b, x as h, C as P, ax as T, aJ as p, D as F, z as I, a3 as E, b1 as A, b8 as B, K as y, b0 as D, E as L, b as W, i as v, ag as k, ah as O, G as _, an as f, F as x, j as N, n as H, o as R, k as M, c as V, q as w, r as G, H as z, aM as U, aN as j, aB as q, am as K, aR as Q, at as X, a6 as Z, aL as J, U as Y, ac as $, O as aa, bc as ea, V as sa, P as ta, M as ia, N as oa, au as ra, R as na, a_ as la, b2 as da, S as Sa, a7 as Ca, a8 as ga, _ as ma, $ as ua, a0 as ca, Z as ba, a1 as ha, W as Pa, a2 as Ta, a4 as pa, a5 as Fa, a9 as Ia, aa as Ea, b6 as Aa, b5 as Ba, ap as ya, ao as Da, aw as La, aK as Wa, aH as va, av as ka, ab as Oa, aC as _a, b7 as fa, ba as xa, aA as Na, aF as Ha, aD as Ra, bb as Ma, aG as Va, aE as wa, b9 as Ga, d as za, af as Ua, b4 as ja, b3 as qa, aj as Ka, f as Qa, l as Xa, p as Za, g as Ja, h as Ya, aU as $a, aS as ae, ak as ee, al as se, aQ as te, aT as ie, e as oe, s as re, aY as ne, aP as le, aV as de, ad as Se, a$ as Ce, u as ge, ae as me, ai as ue, aO as ce, T as be, Q as he, I as Pe, Y as Te, X as pe, aZ as Fe, aX as Ie, aW as Ee } from "./experimental-BpTt8RQd.js";
2
+ import { dP as Be, ep as ye, eo as De, eC as Le, dm as We, em as ve, ce as ke, c4 as Oe, cb as _e, eh as fe, bZ as xe, bZ as Ne, bS as He, ei as Re, ch as Me, e0 as Ve, cj as we, eF as Ge, en as ze, ey as Ue, ez as je, d6 as qe, eD as Ke, k as Qe, dQ as Xe, cN as Ze, el as Je, er as Ye, eq as $e, T as as, h as es, bT as ss, eA as ts, eG as is, eB as os, eE as rs, ex as ns, eu as ls, ew as ds, es as Ss, ej as Cs, ek as gs, ed as ms, ev as us, et as cs } from "./F0CanvasPanel-t6LAI_x8.js";
3
+ import { ax as hs, ay as Ps, a5 as Ts, a6 as ps, a3 as Fs, ag as Is, C as Es, a7 as As, aJ as Bs, ac as ys, aI as Ds, af as Ls, a4 as Ws, av as vs, aL as ks, aK as Os, an as _s, ah as fs, aq as xs, aO as Ns, a2 as Hs, as as Rs, ap as Ms, ak as Vs, aQ as ws, al as Gs, at as zs, au as Us, a8 as js, aM as qs, aN as Ks, am as Qs, aw as Xs, aF as Zs, O as Js, aH as Ys, a9 as $s, aS as at, ab as et, ad as st, aq as tt, aP as it, ar as ot, ao as rt, aR as nt, aa as lt, W as dt, ae as St, a1 as Ct, $ as gt, a0 as mt, aB as ut, aC as ct, az as bt, aG as ht, aj as Pt, ai as Tt, aD as pt, l as Ft, aA as It, aE as Et, y as At } from "./CoachmarkProvider-CbaSfufv.js";
4
4
  export {
5
5
  hs as AUTO_PER_PAGE_MAX,
6
6
  Ps as AUTO_PER_PAGE_MIN_RESERVED_ROWS,
package/dist/f0.d.ts CHANGED
@@ -5455,6 +5455,7 @@ export declare const defaultTranslations: {
5455
5455
  readonly closeSearch: "Close search";
5456
5456
  readonly noResults: "No chats found";
5457
5457
  readonly backToLatest: "Jump to latest";
5458
+ readonly readOnly: "You can't send messages in this conversation";
5458
5459
  readonly online: "Online";
5459
5460
  readonly muted: "Muted";
5460
5461
  readonly mute: "Mute";
package/dist/f0.js CHANGED
@@ -1,18 +1,18 @@
1
- import { h_ as gN, w as ut, e4 as M_, ct as vn, ho as mN, bY as Mn, fn as qV, h$ as ZV, i0 as yN, r as er, c4 as vf, i1 as jV, i2 as Pw, i3 as Lr, i4 as Ka, i5 as KV, u as Ve, bW as sp, i6 as ji, i7 as Zl, i8 as QV, i9 as bN, bV as ml, hl as qy, ia as JV, S as ne, s as L_, ib as eF, ic as tF, id as Rw, cz as rF, ie as nF, ig as iF, ih as _N, ii as aF, t as pf, v as gf, m as it, x as mf, y as Hr, O as oF, Q as sF, z as Jo, A as es, ay as Ia, B as ts, gv as Zy, d4 as St, V as nt, ah as Ll, d5 as ka, di as E_, ij as lF, cm as uF, cn as Ow, n as xN, o as El, bX as Ic, co as cF, eC as Pd, d_ as wN, ik as fF, hn as Bw, d7 as hF, il as zw, dd as dF, im as vF, c1 as SN, e3 as CN, ge as jy, dm as pF, a7 as Ky, a6 as N_, gR as jl, gS as yf, gU as TN, hu as gF, gt as DN, da as AN, gs as mF, io as lp, b4 as I_, h8 as yF, c9 as MN, f$ as bF, av as _F, hV as k_, b7 as LN, c5 as xF, c6 as wF, c7 as SF, d as CF, bC as EN, ai as hs, bI as NN, b3 as IN, ag as P_, bK as kN, X as R_, G as yl, H as bl, K as _l, L as xl, gw as Ei, $ as PN, j as TF, b1 as Rd, at as Nl, J as Ir, el as DF, bT as RN, b5 as Qy, cq as kc, cj as AF, aT as bf, ar as Kl, dH as ON, du as BN, h1 as Br, ip as MF, iq as LF, ir as zN, is as up, it as EF, iu as NF, cE as ti, R as VN, U as FN, ci as IF, iv as kF, cb as GN, e1 as PF, e2 as RF, bQ as Wo, db as Ql, e7 as Jl, e_ as _f, bL as OF, e5 as BF, bs as zF, ak as HN, dg as VF, aj as FF, aX as Vw, bG as Pc, hs as GF, aP as HF, iw as WF, ix as $F, iy as UF, b as WN, eY as O_, ch as YF, a_ as XF, l as $N, a8 as qF, a5 as ZF, iz as jF, iA as KF, iB as QF, hr as JF, cN as e5, c3 as t5, cF as UN, iC as YN, iD as r5, iE as n5, I as i5, iF as a5, iG as o5, iH as s5, iI as l5 } from "./F0CanvasPanel-D2x3eIDs.js";
2
- import { iZ as jhe, C as Khe, D as Qhe, dB as Jhe, c as ede, F as tde, a as rde, iS as nde, f as ide, cx as ade, dC as ode, e9 as sde, cc as lde, cd as ude, cv as cde, ca as fde, cw as hde, dp as dde, eh as vde, g as pde, c8 as gde, bZ as mde, iN as yde, j2 as bde, bS as _de, e as xde, e0 as wde, k as Sde, cy as Cde, iU as Tde, dL as Dde, iV as Ade, iX as Mde, iY as Lde, eF as Ede, i$ as Nde, ey as Ide, ez as kde, P as Pde, eD as Rde, iW as Ode, eA as Bde, i_ as zde, j3 as Vde, iK as Fde, iL as Gde, iM as Hde, iJ as Wde, eB as $de, j1 as Ude, iT as Yde, iQ as Xde, iP as qde, eE as Zde, gq as jde, h9 as Kde, j0 as Qde, dE as Jde, ex as eve, eu as tve, ew as rve, es as nve, iR as ive, hb as ave, h5 as ove, gV as sve, j6 as lve, ed as uve, ev as cve, j5 as fve, dT as hve, et as dve, cf as vve, gp as pve, gW as gve, dW as mve, ht as yve, dD as bve, cg as _ve, iO as xve, h7 as wve, h6 as Sve, j4 as Cve } from "./F0CanvasPanel-D2x3eIDs.js";
1
+ import { h_ as gN, w as ut, e4 as M_, ct as vn, ho as mN, bY as Mn, fn as qV, h$ as ZV, i0 as yN, r as er, c4 as vf, i1 as jV, i2 as Pw, i3 as Lr, i4 as Ka, i5 as KV, u as Ve, bW as sp, i6 as ji, i7 as Zl, i8 as QV, i9 as bN, bV as ml, hl as qy, ia as JV, S as ne, s as L_, ib as eF, ic as tF, id as Rw, cz as rF, ie as nF, ig as iF, ih as _N, ii as aF, t as pf, v as gf, m as it, x as mf, y as Hr, O as oF, Q as sF, z as Jo, A as es, ay as Ia, B as ts, gv as Zy, d4 as St, V as nt, ah as Ll, d5 as ka, di as E_, ij as lF, cm as uF, cn as Ow, n as xN, o as El, bX as Ic, co as cF, eC as Pd, d_ as wN, ik as fF, hn as Bw, d7 as hF, il as zw, dd as dF, im as vF, c1 as SN, e3 as CN, ge as jy, dm as pF, a7 as Ky, a6 as N_, gR as jl, gS as yf, gU as TN, hu as gF, gt as DN, da as AN, gs as mF, io as lp, b4 as I_, h8 as yF, c9 as MN, f$ as bF, av as _F, hV as k_, b7 as LN, c5 as xF, c6 as wF, c7 as SF, d as CF, bC as EN, ai as hs, bI as NN, b3 as IN, ag as P_, bK as kN, X as R_, G as yl, H as bl, K as _l, L as xl, gw as Ei, $ as PN, j as TF, b1 as Rd, at as Nl, J as Ir, el as DF, bT as RN, b5 as Qy, cq as kc, cj as AF, aT as bf, ar as Kl, dH as ON, du as BN, h1 as Br, ip as MF, iq as LF, ir as zN, is as up, it as EF, iu as NF, cE as ti, R as VN, U as FN, ci as IF, iv as kF, cb as GN, e1 as PF, e2 as RF, bQ as Wo, db as Ql, e7 as Jl, e_ as _f, bL as OF, e5 as BF, bs as zF, ak as HN, dg as VF, aj as FF, aX as Vw, bG as Pc, hs as GF, aP as HF, iw as WF, ix as $F, iy as UF, b as WN, eY as O_, ch as YF, a_ as XF, l as $N, a8 as qF, a5 as ZF, iz as jF, iA as KF, iB as QF, hr as JF, cN as e5, c3 as t5, cF as UN, iC as YN, iD as r5, iE as n5, I as i5, iF as a5, iG as o5, iH as s5, iI as l5 } from "./F0CanvasPanel-t6LAI_x8.js";
2
+ import { iZ as jhe, C as Khe, D as Qhe, dB as Jhe, c as ede, F as tde, a as rde, iS as nde, f as ide, cx as ade, dC as ode, e9 as sde, cc as lde, cd as ude, cv as cde, ca as fde, cw as hde, dp as dde, eh as vde, g as pde, c8 as gde, bZ as mde, iN as yde, j2 as bde, bS as _de, e as xde, e0 as wde, k as Sde, cy as Cde, iU as Tde, dL as Dde, iV as Ade, iX as Mde, iY as Lde, eF as Ede, i$ as Nde, ey as Ide, ez as kde, P as Pde, eD as Rde, iW as Ode, eA as Bde, i_ as zde, j3 as Vde, iK as Fde, iL as Gde, iM as Hde, iJ as Wde, eB as $de, j1 as Ude, iT as Yde, iQ as Xde, iP as qde, eE as Zde, gq as jde, h9 as Kde, j0 as Qde, dE as Jde, ex as eve, eu as tve, ew as rve, es as nve, iR as ive, hb as ave, h5 as ove, gV as sve, j6 as lve, ed as uve, ev as cve, j5 as fve, dT as hve, et as dve, cf as vve, gp as pve, gW as gve, dW as mve, ht as yve, dD as bve, cg as _ve, iO as xve, h7 as wve, h6 as Sve, j4 as Cve } from "./F0CanvasPanel-t6LAI_x8.js";
3
3
  import { jsx as x, jsxs as B, Fragment as at } from "react/jsx-runtime";
4
- import { C as u5, W as c5, G as f5, H as h5, I as d5, J as Fw, aT as v5, aU as p5, Z as g5, K as m5, Q as y5, U as b5, Y as _5, r as x5, a2 as XN, aV as w5, aW as S5, aX as C5, aY as T5, aZ as D5, a_ as qN, a$ as A5, n as B_, b0 as Qa, b1 as M5, z as z_, b2 as V_, af as L5, b3 as E5, b4 as As, b5 as ZN, b6 as N5, b7 as I5, b8 as k5, b9 as P5, ba as R5, bb as O5, as as B5, aI as z5, bc as V5, an as F5, E as G5, a as H5, j as cp, R as F_, k as G_, aq as jN, O as H_, bd as KN, be as Gw, bf as W_, a3 as W5, bg as Hw, F as $5, l as QN, aw as JN, bh as U5, bi as Y5, bj as X5, bk as Ms, bl as q5, aJ as Z5, M as j5 } from "./CoachmarkProvider-vsCLDtM0.js";
5
- import { a5 as Dve, a6 as Ave, ag as Mve, a7 as Lve, ac as Eve, bH as Nve, bG as Ive, bz as kve, bn as Pve, bm as Rve, bo as Ove, bp as Bve, br as zve, D as Vve, aL as Fve, aK as Gve, aO as Hve, ap as Wve, ak as $ve, aQ as Uve, al as Yve, a8 as Xve, bI as qve, aM as Zve, aN as jve, am as Kve, a9 as Qve, P as Jve, ab as epe, ad as tpe, aP as rpe, ao as npe, aR as ipe, aa as ape, ae as ope, bK as spe, a1 as lpe, $ as upe, a0 as cpe, by as fpe, bE as hpe, bE as dpe, bF as vpe, bu as ppe, bt as gpe, bJ as mpe, aG as ype, bw as bpe, bx as _pe, aj as xpe, ai as wpe, bL as Spe, bM as Cpe, X as Tpe, m as Dpe, bA as Ape, bB as Mpe, bC as Lpe, bq as Epe, bv as Npe, o as Ipe, bD as kpe, bs as Ppe, bN as Rpe } from "./CoachmarkProvider-vsCLDtM0.js";
4
+ import { C as u5, W as c5, G as f5, H as h5, I as d5, J as Fw, aT as v5, aU as p5, Z as g5, K as m5, Q as y5, U as b5, Y as _5, r as x5, a2 as XN, aV as w5, aW as S5, aX as C5, aY as T5, aZ as D5, a_ as qN, a$ as A5, n as B_, b0 as Qa, b1 as M5, z as z_, b2 as V_, af as L5, b3 as E5, b4 as As, b5 as ZN, b6 as N5, b7 as I5, b8 as k5, b9 as P5, ba as R5, bb as O5, as as B5, aI as z5, bc as V5, an as F5, E as G5, a as H5, j as cp, R as F_, k as G_, aq as jN, O as H_, bd as KN, be as Gw, bf as W_, a3 as W5, bg as Hw, F as $5, l as QN, aw as JN, bh as U5, bi as Y5, bj as X5, bk as Ms, bl as q5, aJ as Z5, M as j5 } from "./CoachmarkProvider-CbaSfufv.js";
5
+ import { a5 as Dve, a6 as Ave, ag as Mve, a7 as Lve, ac as Eve, bH as Nve, bG as Ive, bz as kve, bn as Pve, bm as Rve, bo as Ove, bp as Bve, br as zve, D as Vve, aL as Fve, aK as Gve, aO as Hve, ap as Wve, ak as $ve, aQ as Uve, al as Yve, a8 as Xve, bI as qve, aM as Zve, aN as jve, am as Kve, a9 as Qve, P as Jve, ab as epe, ad as tpe, aP as rpe, ao as npe, aR as ipe, aa as ape, ae as ope, bK as spe, a1 as lpe, $ as upe, a0 as cpe, by as fpe, bE as hpe, bE as dpe, bF as vpe, bu as ppe, bt as gpe, bJ as mpe, aG as ype, bw as bpe, bx as _pe, aj as xpe, ai as wpe, bL as Spe, bM as Cpe, X as Tpe, m as Dpe, bA as Ape, bB as Mpe, bC as Lpe, bq as Epe, bv as Npe, o as Ipe, bD as kpe, bs as Ppe, bN as Rpe } from "./CoachmarkProvider-CbaSfufv.js";
6
6
  import * as Ct from "react";
7
7
  import K5, { forwardRef as Ar, useRef as ae, useImperativeHandle as Q5, Children as Od, createContext as Ha, useContext as Wa, useState as le, useMemo as ye, useEffect as be, useCallback as de, useLayoutEffect as Rc, isValidElement as eI, Fragment as eu, useSyncExternalStore as Il, useId as wl, memo as J5 } from "react";
8
8
  import { createPortal as xf } from "react-dom";
9
9
  import { d as ie, g as wf, h as eG, i as ul, P as Sf, u as tu, j as tG, f as $a } from "./tooltip-DTpaXpXW.js";
10
- import { l as Jy, c as tI, d as Bd, r as e0 } from "./F0VideoPlayer-BRt9sqbD.js";
11
- import { F as Bpe } from "./F0VideoPlayer-BRt9sqbD.js";
12
- import { F as Vpe, p as Fpe } from "./index-CGnhm50h.js";
13
- import { c as Hpe } from "./pdfWorker-DJxTZFgb.js";
14
- import { D as rG, E as zd, G as $_, H as rI, I as nI, J as nG, K as iG, L as aG, M as oG, N as sG, F as lG } from "./F0AiProcessingOverlay-BSwxbiHI.js";
15
- import { A as $pe, C as Upe, t as Ype, s as Xpe, v as qpe, y as Zpe, l as jpe, i as Kpe, q as Qpe, z as Jpe, B as ege, p as tge, r as rge, j as nge, e as ige, g as age, k as oge, T as sge, w as lge, h as uge, a as cge, n as fge, m as hge, o as dge, b as vge, f as pge, x as gge, c as mge, d as yge, u as bge } from "./F0AiProcessingOverlay-BSwxbiHI.js";
10
+ import { l as Jy, c as tI, d as Bd, r as e0 } from "./F0VideoPlayer-B4pmM8Gc.js";
11
+ import { F as Bpe } from "./F0VideoPlayer-B4pmM8Gc.js";
12
+ import { F as Vpe, p as Fpe } from "./index-6wH0JzE5.js";
13
+ import { c as Hpe } from "./pdfWorker-CMz8L07D.js";
14
+ import { D as rG, E as zd, G as $_, H as rI, I as nI, J as nG, K as iG, L as aG, M as oG, N as sG, F as lG } from "./F0AiProcessingOverlay-BdR-OH1y.js";
15
+ import { A as $pe, C as Upe, t as Ype, s as Xpe, v as qpe, y as Zpe, l as jpe, i as Kpe, q as Qpe, z as Jpe, B as ege, p as tge, r as rge, j as nge, e as ige, g as age, k as oge, T as sge, w as lge, h as uge, a as cge, n as fge, m as hge, o as dge, b as vge, f as pge, x as gge, c as mge, d as yge, u as bge } from "./F0AiProcessingOverlay-BdR-OH1y.js";
16
16
  import { g as uG } from "./_commonjsHelpers-ByX85dGu.js";
17
17
  import { utils as Sl, write as iI } from "./xlsx-CzlURDDb.js";
18
18
  import { defaultTranslations as xge } from "./i18n-provider-defaults.js";
@@ -791,6 +791,7 @@ export declare const defaultTranslations: {
791
791
  readonly closeSearch: "Close search";
792
792
  readonly noResults: "No chats found";
793
793
  readonly backToLatest: "Jump to latest";
794
+ readonly readOnly: "You can't send messages in this conversation";
794
795
  readonly online: "Online";
795
796
  readonly muted: "Muted";
796
797
  readonly mute: "Mute";
@@ -791,6 +791,9 @@ const e = {
791
791
  closeSearch: "Close search",
792
792
  noResults: "No chats found",
793
793
  backToLatest: "Jump to latest",
794
+ // Shown where the composer would be on a read-only channel. Hosts that can
795
+ // name the poster override it per channel (`channel.readOnlyNotice`).
796
+ readOnly: "You can't send messages in this conversation",
794
797
  online: "Online",
795
798
  muted: "Muted",
796
799
  mute: "Mute",
@@ -1,7 +1,7 @@
1
- import { S as L, m as ye, u as Z, n as Se, o as Re, i as ke, j as _e, k as Ne, q as Ce, l as Le, w as Fe, r as Ve, s as Te } from "./F0CanvasPanel-D2x3eIDs.js";
1
+ import { S as L, m as ye, u as Z, n as Se, o as Re, i as ke, j as _e, k as Ne, q as Ce, l as Le, w as Fe, r as Ve, s as Te } from "./F0CanvasPanel-t6LAI_x8.js";
2
2
  import { jsx as t, jsxs as y } from "react/jsx-runtime";
3
3
  import { lazy as J, forwardRef as ne, Suspense as He, useState as V, useRef as A, useMemo as te, useCallback as w, useEffect as T } from "react";
4
- import { e as Ee, D as Ue, P as je, c as De } from "./pdfWorker-DJxTZFgb.js";
4
+ import { e as Ee, D as Ue, P as je, c as De } from "./pdfWorker-CMz8L07D.js";
5
5
  import { F as We } from "./Printer-BD-FEi_2.js";
6
6
  import { d as ae } from "./tooltip-DTpaXpXW.js";
7
7
  import './index.css';const Oe = ({
@@ -222,7 +222,7 @@ import './index.css';const Oe = ({
222
222
  }), i;
223
223
  };
224
224
  Ee();
225
- const qe = J(() => import("./SheetViewer-Bt-HwstC.js")), Ge = J(() => import("./DocxViewer-D7lqbzvu.js")), Ze = J(() => import("./TextViewer-B4nJcn7T.js")), oe = 48, se = ne(
225
+ const qe = J(() => import("./SheetViewer-C7dm83fe.js")), Ge = J(() => import("./DocxViewer-CZibRfLX.js")), Ze = J(() => import("./TextViewer-z8sRMqaY.js")), oe = 48, se = ne(
226
226
  (o, a) => {
227
227
  const { kind: e = "pdf", mimeType: i, ...l } = o;
228
228
  if (e === "pdf") return /* @__PURE__ */ t(le, { ref: a, ...l });
@@ -0,0 +1,4 @@
1
+ import { F as r } from "./F0VideoPlayer-B4pmM8Gc.js";
2
+ export {
3
+ r as F0VideoPlayer
4
+ };
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useReducer, forwardRef, useRef, useImperativeHandle, useEffect, useCallback, useMemo, useContext, useLayoutEffect } from "react";
3
3
  import { e as clsx } from "./tooltip-DTpaXpXW.js";
4
- import { W as invariant } from "./F0CanvasPanel-D2x3eIDs.js";
5
- import { d as dequal } from "./CoachmarkProvider-vsCLDtM0.js";
4
+ import { W as invariant } from "./F0CanvasPanel-t6LAI_x8.js";
5
+ import { d as dequal } from "./CoachmarkProvider-CbaSfufv.js";
6
6
  import { a as getAugmentedNamespace, g as getDefaultExportFromCjs } from "./_commonjsHelpers-ByX85dGu.js";
7
7
  import { c as commonjsRequire } from "./_commonjs-dynamic-modules-BpilXLfW.js";
8
8
  import './pdfWorker.css';var pdf$1 = { exports: {} };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factorialco/f0-react",
3
- "version": "6.72.0",
3
+ "version": "6.73.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/factorialco/f0.git",
@@ -1,4 +0,0 @@
1
- import { F as r } from "./F0VideoPlayer-BRt9sqbD.js";
2
- export {
3
- r as F0VideoPlayer
4
- };