@lovett/ui 0.1.0 → 0.2.3

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/index.d.ts CHANGED
@@ -3,8 +3,8 @@ import * as react from 'react';
3
3
  import react__default, { HTMLAttributes, ReactNode, ButtonHTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, CSSProperties, RefObject, ComponentProps, ComponentType, RefAttributes, ReactElement, Ref, FormHTMLAttributes, FormEvent } from 'react';
4
4
  import { Toaster as Toaster$1 } from 'sonner';
5
5
  export { toast } from 'sonner';
6
+ import { CollisionDetection, DndContext, DragEndEvent } from '@dnd-kit/core';
6
7
  import { LucideIcon } from 'lucide-react';
7
- import { DndContext, DragEndEvent } from '@dnd-kit/core';
8
8
  import { ClassValue } from 'clsx';
9
9
 
10
10
  /**
@@ -889,6 +889,49 @@ declare function DragHandle({ dragHandleProps, className, }: {
889
889
  dragHandleProps: HTMLAttributes<HTMLElement>;
890
890
  className?: string;
891
891
  }): react_jsx_runtime.JSX.Element;
892
+ /**
893
+ * Pointer first, `closestCorners` second — dnd-kit's documented shape for a
894
+ * multi-container board (the pointer, then a rect-based fallback; which rect
895
+ * strategy is the choice made at the bottom of this note), and the answer to
896
+ * two defects rather than one.
897
+ *
898
+ * The history is a ladder, and each rung is still true:
899
+ *
900
+ * `closestCenter` measured the dragged card's CENTRE against each droppable
901
+ * and mis-resolved whenever the card was taller than the row it was over,
902
+ * which is the normal case on a board with variable-height cards.
903
+ *
904
+ * `closestCorners` measured the card's four CORNERS instead. Better, and
905
+ * still wrong in the same family: it measures the CARD. A tall card's
906
+ * corners stay nearer its source lane until most of its body has crossed the
907
+ * boundary, so the user has to drag the whole card into the destination
908
+ * rather than point at it. Reported as "I have to literally drag the full
909
+ * entire card over the lane so it catches it".
910
+ *
911
+ * `pointerWithin` measures the POINTER, so a card is caught by the lane the
912
+ * cursor is over regardless of how tall the card is. Card height stops being
913
+ * an input at all, which is why this does not reintroduce the defect
914
+ * `closestCorners` was adopted to fix — it retires the whole measurement.
915
+ *
916
+ * `pointerWithin` returns EVERY droppable containing the pointer, ordered by
917
+ * the pointer's mean distance to that rect's four corners — so the tightest
918
+ * box around the cursor wins. A pointer inside a card yields [card, column]
919
+ * and `over` resolves to the card, which is what gives a cross-column drop its
920
+ * insertion INDEX. A pointer in the column's empty space below the last card
921
+ * yields just the column, and the item appends. Both are wanted.
922
+ *
923
+ * It returns nothing at all when `pointerCoordinates` is null, and dnd-kit
924
+ * derives those from the activator event's `clientX`/`clientY`. A KeyboardEvent
925
+ * has neither, so EVERY keyboard drag takes the fallback — a pointer-only
926
+ * strategy would leave `over` permanently null and break cross-column keyboard
927
+ * movement silently, gates all green. The fallback is therefore `closestCorners`
928
+ * and not `rectIntersection`: keyboard drags keep the exact resolution they
929
+ * have been tested against, and the pointer-outside-every-droppable case (the
930
+ * board's margins and gutters) keeps resolving to the nearest lane rather than
931
+ * to nothing. `rectIntersection` would answer that case by area of overlap —
932
+ * "most of the card", the defect above, back in the gutters.
933
+ */
934
+ declare const pointerFirstCollision: CollisionDetection;
892
935
  /** containerId -> the ids it holds, in order. */
893
936
  type SortableContainers = Readonly<Record<string, readonly string[]>>;
894
937
  interface MultiSortableMove {
@@ -903,11 +946,30 @@ interface MultiSortableListProps {
903
946
  /** Container ids in board order. Also the set treated as drop targets. */
904
947
  containerOrder: readonly string[];
905
948
  /**
906
- * Commit the move. Called synchronously from the drop handler, so a
907
- * `setState` here batches with the primitive's own reset and the board does
908
- * not flash the pre-drag arrangement for a frame.
949
+ * Commit the move. Called from the drop handler with the arrangement the
950
+ * board is already showing, so the consumer's job is to make `containers`
951
+ * agree — it is not being asked to produce a frame.
952
+ *
953
+ * It used to say "called synchronously ... so a `setState` here batches with
954
+ * the primitive's own reset". True, and it described the wrong consumer. A
955
+ * consumer that patches its cache synchronously never saw the ghost; one
956
+ * that patches from a mutation's `onMutate` — a microtask at best, an
957
+ * `await cancelQueries` at worst — is not in that batch, and got a frame of
958
+ * the pre-drag arrangement. See the preview note below for what replaced it.
909
959
  */
910
960
  onMove: (move: MultiSortableMove, next: SortableContainers) => void;
961
+ /**
962
+ * Override the drop-target strategy. Defaults to `pointerFirstCollision`,
963
+ * whose reasoning is in its own docblock.
964
+ *
965
+ * A prop because this component has now changed collision strategy twice
966
+ * (`closestCenter` → `closestCorners` → pointer-first) and both times a
967
+ * consumer had to wait for a release of this package to get the fix. The
968
+ * escape hatch costs one optional prop; a third such wait costs a release.
969
+ * Overriding it is opting out of the reasoning above, including the keyboard
970
+ * fallback — a bare `pointerWithin` here disables keyboard dragging.
971
+ */
972
+ collisionDetection?: CollisionDetection | undefined;
911
973
  /**
912
974
  * What follows the pointer. Without this the card appears to vanish.
913
975
  *
@@ -926,15 +988,28 @@ interface MultiSortableListProps {
926
988
  * and the container the drag is currently resolved INTO.
927
989
  *
928
990
  * The second argument exists because `useDroppable().isOver` cannot answer
929
- * it on a board: `closestCorners` resolves `over` to a sortable ITEM
930
- * whenever a column holds one, so the column's own droppable never wins and
931
- * its `isOver` measured `false` on every column during real pointer AND
991
+ * it on a board: every collision strategy here resolves `over` to a sortable
992
+ * ITEM whenever a column holds one `closestCorners` by distance, and
993
+ * `pointerWithin` because a pointer inside a card is inside its column too
994
+ * and the card's centre is nearer — so the column's own droppable never wins
995
+ * and its `isOver` measured `false` on every column during real pointer AND
932
996
  * keyboard drags. The container has to be derived from the resolved `over`
933
997
  * id — the same `containerOf` the announcements already use.
934
998
  */
935
999
  children: (arrangement: SortableContainers, overContainerId: string | null) => ReactNode;
936
1000
  }
937
- declare function MultiSortableList({ containers, containerOrder, onMove, renderOverlay, labelForItem, labelForContainer, children, }: MultiSortableListProps): react_jsx_runtime.JSX.Element;
1001
+ /**
1002
+ * How long a settled preview outlives the drop before `containers` wins.
1003
+ *
1004
+ * Floor: dnd-kit's drop animation is 250ms, and the preview has to still be
1005
+ * under the overlay when it lands or the overlay animates onto an empty slot.
1006
+ * Ceiling: a rejected move has to read as rejected rather than as accepted,
1007
+ * and half a second is about where a snap-back stops looking like a response.
1008
+ * The healthy path never reaches either — an optimistic patch supersedes this
1009
+ * in a frame or two, and the timer is cleared.
1010
+ */
1011
+ declare const PREVIEW_SETTLE_MS = 500;
1012
+ declare function MultiSortableList({ containers, containerOrder, onMove, collisionDetection, renderOverlay, labelForItem, labelForContainer, children, }: MultiSortableListProps): react_jsx_runtime.JSX.Element;
938
1013
  /**
939
1014
  * One droppable container inside a <MultiSortableList>.
940
1015
  *
@@ -943,11 +1018,12 @@ declare function MultiSortableList({ containers, containerOrder, onMove, renderO
943
1018
  * accent (design brief §4), and only the consumer knows what its border is.
944
1019
  *
945
1020
  * `isOver` here is `useDroppable`'s raw answer and is NOT the board's drag-over
946
- * signal: with `closestCorners`, `over` resolves to a sortable item whenever
947
- * the column holds one, so this reads `false` for the column the card is
948
- * actually over. It is kept because the droppable registration is what makes an
949
- * EMPTY column a drop target at all. The state a consumer should paint comes
950
- * from `MultiSortableList`'s `overContainerId`.
1021
+ * signal: `over` resolves to a sortable item whenever the column holds one, so
1022
+ * this reads `false` for the column the card is actually over. It is kept
1023
+ * because the droppable registration is what makes an EMPTY column a drop
1024
+ * target at all and, under pointer-first collision, what makes the column's
1025
+ * empty space below the last card a target for an append. The state a consumer
1026
+ * should paint comes from `MultiSortableList`'s `overContainerId`.
951
1027
  */
952
1028
  declare function SortableDropZone({ id, items, children, }: {
953
1029
  id: string;
@@ -4994,10 +5070,21 @@ declare const DisplayPopover: typeof DisplayPopoverRoot & {
4994
5070
  * PERSISTENCE IS PER SCOPE. `scope` is whatever partition the host needs —
4995
5071
  * for a lens that is the brand id, because ADR-116 D10 requires brand A's
4996
5072
  * preferences never to surface on brand B. The key is
4997
- * `workspace:<name>:<scope>:display`, matching CLAUDE.md §3's namespacing
5073
+ * `<prefix>:<name>:<scope>:display`, matching CLAUDE.md §3's namespacing
4998
5074
  * rule. Changing `scope` re-reads: the provider does not remount, so an
4999
5075
  * in-flight draft elsewhere in the tree survives a brand switch.
5000
5076
  *
5077
+ * THE PREFIX IS THE PRODUCT, AND ITS DEFAULT IS FROZEN. This package is a
5078
+ * dependency of more than one app on more than one origin, and `workspace` is
5079
+ * only the right first segment for one of them: a host whose own convention is
5080
+ * `lightwork:<area>:<id>:<key>` was getting the one key on its board that read
5081
+ * as somebody else's. So `prefix` is an option — and its default is `workspace`
5082
+ * FOREVER, not because that name is good but because these keys already exist
5083
+ * in operators' browsers. A store holds a preference the operator set; changing
5084
+ * the default segment would not move that preference to a new key, it would
5085
+ * walk past it and open at the defaults. The suite pins the unprefixed key as a
5086
+ * literal for that reason.
5087
+ *
5001
5088
  * READING IS DEFENSIVE. `localStorage` is untrusted input — a hand-edited
5002
5089
  * value, a key left behind by an older build, a private window that throws on
5003
5090
  * access. Every persisted key is checked against the default's TYPE and, when
@@ -5072,7 +5159,33 @@ interface DisplayStore<T extends DisplaySettings> {
5072
5159
  /** Exposed so a host can name the key it is clearing. */
5073
5160
  readonly storageKey: (scope: string) => string;
5074
5161
  }
5075
- declare function createDisplayStore<T extends DisplaySettings>(name: string, defaults: T, allowed?: DisplayAllowed<T>, migrations?: DisplayMigrations<T>): DisplayStore<T>;
5162
+ /**
5163
+ * Everything about the store that is not its settings.
5164
+ *
5165
+ * An OBJECT rather than a fifth positional string, because `allowed` and
5166
+ * `migrations` are both optional and already both objects: a call reading
5167
+ * `createDisplayStore('board', DEFAULTS, undefined, undefined, 'lightwork')`
5168
+ * puts two bare strings at opposite ends of an argument list and names
5169
+ * neither. `{ prefix: 'lightwork' }` says what it is at the call site, and the
5170
+ * next option that earns its place goes beside it rather than becoming a sixth
5171
+ * positional.
5172
+ */
5173
+ interface DisplayStoreOptions {
5174
+ /**
5175
+ * The key's first segment — the PRODUCT, above the store's own `name`.
5176
+ *
5177
+ * Omit it and the key is `workspace:<name>:<scope>:display`, exactly as it
5178
+ * has always been. Pass one and the store moves wholesale onto it, so two
5179
+ * apps sharing this primitive on one origin under the same `name` cannot
5180
+ * read or overwrite each other.
5181
+ *
5182
+ * It is not a migration seam. A store that changes prefix does not carry its
5183
+ * stored settings across; it opens at its defaults on the new key and leaves
5184
+ * the old one behind. Choose it once, when the store is written.
5185
+ */
5186
+ prefix?: string;
5187
+ }
5188
+ declare function createDisplayStore<T extends DisplaySettings>(name: string, defaults: T, allowed?: DisplayAllowed<T>, migrations?: DisplayMigrations<T>, options?: DisplayStoreOptions): DisplayStore<T>;
5076
5189
 
5077
5190
  /**
5078
5191
  * DeltaChip — the period-over-period change chip that sits beside a KPI value.
@@ -7265,6 +7378,16 @@ interface ThreadReactionCount {
7265
7378
  * ADR-147 D17 — optimistic send is a first-class state, not a nicety.
7266
7379
  * A comment silently lost to a bad connection is the worst thing this surface
7267
7380
  * can do to someone, and it is the most likely.
7381
+ *
7382
+ * `pending` AND `failed` ARE VIEWER-LOCAL, and that is an invariant a host has
7383
+ * to hold rather than a thing this type can enforce. Both describe a comment
7384
+ * that has not landed: it exists in one browser, no other viewer can see it,
7385
+ * and no read should ever return either value. A host that puts `failed` on a
7386
+ * row it fetched is describing somebody ELSE's comment as the viewer's own
7387
+ * failed send, and the retry drawn beside it — the one control on this surface
7388
+ * with no capability flag, because it never needed one — becomes the same lie
7389
+ * `canEdit` exists to stop. Absent means `sent`, which is what every read
7390
+ * should leave it as.
7268
7391
  */
7269
7392
  type CommentDeliveryState = 'sent' | 'pending' | 'failed';
7270
7393
  /**
@@ -7366,6 +7489,105 @@ interface ThreadComment {
7366
7489
  readonly editedAt?: number | null | undefined;
7367
7490
  /** Set = tombstone (D4). The row still renders and KEEPS its subtree. */
7368
7491
  readonly deletedAt?: number | null | undefined;
7492
+ /**
7493
+ * TRUE = the tombstone above was made by somebody OTHER than the author
7494
+ * (FU-0031, FU-0032). Meaningless without `deletedAt`, and read nowhere else.
7495
+ *
7496
+ * One boolean rather than a `deletedBy` author, and that is a decision, not
7497
+ * a shortcut: the wire deliberately never carries who removed a comment, so
7498
+ * a field that could hold a name would be a field somebody eventually fills.
7499
+ * A boolean cannot leak an identity it does not have.
7500
+ *
7501
+ * OPTIONAL, and absent means `[deleted]` — the render every host on 0.1.0
7502
+ * already gets. A host with no moderation concept never sets it and never
7503
+ * sees a word change.
7504
+ */
7505
+ readonly moderated?: boolean | undefined;
7506
+ /**
7507
+ * Whether to DRAW the edit control on THIS comment.
7508
+ *
7509
+ * 0.2.0 forwarded `onEdit` and `onDelete` through to the thread and gated
7510
+ * both menu items on nothing but "a callback exists, and this is not a
7511
+ * tombstone". There was no authorship check anywhere in the render, so a
7512
+ * host that wired the two mutations drew them on every live comment,
7513
+ * including the ones the viewer did not write. Every server this was pointed
7514
+ * at refused correctly, which is exactly what makes it the wrong kind of
7515
+ * bug. It is not a hole; it is a LIE. A menu item that exists and can never
7516
+ * work tells somebody they may do a thing they may not, and it is worse than
7517
+ * the absent item, because the absent item at least agrees with the server.
7518
+ *
7519
+ * TWO flags rather than one `viewerIsAuthor`, and the argument for the
7520
+ * second one is already in this interface. `moderated` exists because a
7521
+ * comment can be removed by somebody OTHER than its author (FU-0031,
7522
+ * FU-0032) — so a surface that can produce that tombstone has a delete
7523
+ * predicate that is NOT authorship, while its edit stays author-only. This
7524
+ * module cannot say what any host's predicates ARE, and does not try to; it
7525
+ * only has to be able to spell two that differ, and `moderated` is already
7526
+ * proof that they do. One consumer's arrangement is the existence proof
7527
+ * rather than the rule: a moderated delete on a route of its own behind an
7528
+ * admin rank, and the author-gated edit deliberately left alone, because the
7529
+ * rank that removes somebody's words is not the rank that rewrites them.
7530
+ * A single `viewerIsAuthor` cannot express that pair, and the day it has to,
7531
+ * the fix is a breaking rename rather than a field.
7532
+ *
7533
+ * (Naming a consumer here is a narrower act than the one the TOMBSTONE
7534
+ * docblock in `comment.tsx` rules out. That one would have told every host
7535
+ * how to DERIVE a value — a schema stated as this module's fact. This one
7536
+ * cites an arrangement to show a shape is reachable, and constrains nobody:
7537
+ * a host whose two predicates are identical sets both flags the same way and
7538
+ * never notices the seam has two halves.)
7539
+ *
7540
+ * A per-comment field rather than a predicate in the render context, because
7541
+ * `ThreadLinkPreview.canHide` is already that shape and a second shape for
7542
+ * the same idea is a second thing to learn. It also means nothing between
7543
+ * here and the control needs new plumbing: `<Thread>` and `<ActivityPane>`
7544
+ * forward `comments` verbatim, so the capability arrives with the row it
7545
+ * describes.
7546
+ *
7547
+ * The SHAPE is `canHide`'s; the DEFAULT is its opposite, and that is worth
7548
+ * saying out loud before somebody reasons from the precedent and guesses
7549
+ * backwards. `canHide` is REQUIRED and therefore fails closed — a card whose
7550
+ * host says nothing draws no dismiss control. These two are OPTIONAL and
7551
+ * fail open. The difference is not principle, it is history: link previews
7552
+ * were new when `canHide` landed, so requiring it cost no host anything,
7553
+ * whereas edit and delete already render for everyone and a required field
7554
+ * would be a breaking change that silently removes controls until it is
7555
+ * supplied. "ABSENT MEANS TRUE" below is the whole of that argument.
7556
+ *
7557
+ * Deriving it here from `author.id` against a viewer id was the other
7558
+ * candidate and is rejected twice over: a derived rule recomputed on the
7559
+ * client is a second copy waiting to disagree with the server's, and
7560
+ * `author.id` is nullable by D5 — `ON DELETE SET NULL` would quietly turn
7561
+ * "the author is gone" into "you wrote this".
7562
+ *
7563
+ * ABSENT MEANS TRUE, and that is the uncomfortable half of this. A host on
7564
+ * 0.2.0 that wired `onEdit` and upgrades without touching its data keeps
7565
+ * precisely the render it has today, defect included. The alternative —
7566
+ * absent means false — fixes that host by silently taking the edit control
7567
+ * off the viewer's OWN comments until it maps two new fields: a release in
7568
+ * which nobody can edit anything, nothing errors, no test in the host fails,
7569
+ * and it survives to production for the same reason FU-0019 did. Trading a
7570
+ * known lie for a new silent regression is not a trade, so the default
7571
+ * preserves the render and this docblock is the notice. The seam is one
7572
+ * field wide; a host that means it should set it.
7573
+ *
7574
+ * RENDERING ONLY, and never an authorization decision — the same words
7575
+ * `canHide` is written in, for the same reason. The server re-checks
7576
+ * authorship on every edit and rank on every moderated delete; a client that
7577
+ * flips this to `true` earns a 404, not an edit.
7578
+ */
7579
+ readonly canEdit?: boolean | undefined;
7580
+ /**
7581
+ * Whether to DRAW the delete control on THIS comment. Everything above
7582
+ * applies, including that absent means true and that this decides RENDERING
7583
+ * only — the server remains the gate and refuses on its own authority.
7584
+ *
7585
+ * It is separate from `canEdit` so the two predicates can differ, which on a
7586
+ * surface with moderation they already do: an admin may remove a comment
7587
+ * they may not rewrite, so `canDelete: true` with `canEdit: false` is the
7588
+ * shape that describes them and there is no way to spell it with one flag.
7589
+ */
7590
+ readonly canDelete?: boolean | undefined;
7369
7591
  readonly reactions?: readonly ThreadReactionCount[] | undefined;
7370
7592
  readonly attachments?: readonly ThreadAttachment[] | undefined;
7371
7593
  /**
@@ -7459,6 +7681,75 @@ interface ActivityPaneProps {
7459
7681
  onSubmit?: ((body: string) => void) | undefined;
7460
7682
  /** A reply. Omitted, the thread offers no reply control at all. */
7461
7683
  onReply?: ((body: string, parentId: string) => void) | undefined;
7684
+ /**
7685
+ * Forwarded verbatim to the `<Thread>` the Comments tab already mounts.
7686
+ *
7687
+ * These four are here because the pane used to declare `onSubmit` and
7688
+ * `onReply` and stop. `CommentItem` gates its reaction PICKER on `onReact`
7689
+ * and its overflow MENU ITEMS on `onEdit` / `onDelete`; a menu item whose
7690
+ * callback is absent is not rendered, and the reaction chips still render
7691
+ * DISABLED rather than vanishing. (An earlier draft of this docblock said
7692
+ * the whole bar was "NOT RENDERED". That is the rule from `ThreadProps`'
7693
+ * overflow-menu docblock, and it does not generalise to the engagement row —
7694
+ * `reactions.tsx` renders `disabled={!canReact}`.) So a host composing this
7695
+ * pane shipped an inert
7696
+ * engagement row with no picker to open and a menu holding one line, while
7697
+ * the three routes behind them had no caller in the browser at all. Nothing
7698
+ * errored, which is how it survived a release; Lightwork's FU-0019 found it
7699
+ * by opening the surface rather than by reading the source, and the source
7700
+ * understates it.
7701
+ *
7702
+ * WIRING `onEdit` OR `onDelete` IS HALF THE JOB. The callback says the host
7703
+ * has the mutation; `canEdit` / `canDelete` on each `ThreadComment` say
7704
+ * whether this viewer may use it on THAT comment, and the pane forwards
7705
+ * `comments` verbatim, so they arrive with no plumbing here. Set them, or
7706
+ * every live comment in the feed gets an Edit the server will 404 — which is
7707
+ * what forwarding these two without them shipped as, and the same shape as
7708
+ * the `onHideLinkPreview` note below. Absent means the item is drawn, so
7709
+ * nothing this pane renders today disappears on upgrade; that is a
7710
+ * deliberate default and `ThreadComment` argues it.
7711
+ *
7712
+ * `onRetry` is the same omission with one sharper edge: the failed send it
7713
+ * recovers was posted by THIS pane's own composer, so dropping it left the
7714
+ * pane manufacturing a state and offering nobody a way out of it.
7715
+ *
7716
+ * The signatures are `ThreadProps`', unchanged, because a conduit that
7717
+ * reshapes what passes through it is a second contract to keep in step —
7718
+ * and this one is held by two repos. Absent still means no control, so a
7719
+ * host that passes none renders exactly as it did on 0.1.0.
7720
+ *
7721
+ * STILL NOT FORWARDED, deliberately. This list is EXHAUSTIVE against
7722
+ * `ThreadProps` — check it against that interface before adding one, because
7723
+ * a list whose whole purpose is completeness is worse than no list when it
7724
+ * is short: `onVote`, `onCopyLink`, `onCopyText`, `onSelectAuthor`,
7725
+ * `onSelectMention`, `onOpenAttachment`, `resolveAttachmentUrl`,
7726
+ * `onContinueThread`.
7727
+ *
7728
+ * The line is whether a MUTATION becomes unreachable. `onVote` fails it for
7729
+ * a different reason — the pane never exposes `engagement`, so there is no
7730
+ * vote control to receive it and forwarding it would be a dead prop.
7731
+ * `onCopyText` only reports a clipboard outcome; "Copy text" renders without
7732
+ * it. `onContinueThread` falls back to local state, so the button works
7733
+ * unwired. The rest are reads.
7734
+ *
7735
+ * `onHideLinkPreview` USED to be on this list and should not have been: it is
7736
+ * a write in the same pattern as the other mutations, and `link-preview.tsx`
7737
+ * gates its dismiss control on the callback being present. Since the pane
7738
+ * forwards `comments` verbatim — link previews included — a host got
7739
+ * dismissible-looking rows with no route to the mutation. Same shape as the
7740
+ * defect this whole change fixes, caught in review.
7741
+ */
7742
+ onReact?: ((commentId: string, key: ThreadReactionKey) => void) | undefined;
7743
+ onEdit?: ((commentId: string) => void) | undefined;
7744
+ onDelete?: ((commentId: string) => void) | undefined;
7745
+ onRetry?: ((commentId: string) => void) | undefined;
7746
+ /**
7747
+ * A write, in the same pattern as the mutations above — `link-preview.tsx`
7748
+ * gates its dismiss control on this being present, and the pane forwards
7749
+ * `comments` verbatim, previews included. Without it a host draws rows that
7750
+ * look dismissible and are not. Added in review, not in the original change.
7751
+ */
7752
+ onHideLinkPreview?: ((commentId: string, urlHash: string) => void) | undefined;
7462
7753
  sending?: boolean | undefined;
7463
7754
  composerAvatar?: ReactNode | undefined;
7464
7755
  composerPlaceholder?: string | undefined;
@@ -7472,7 +7763,7 @@ interface ActivityPaneProps {
7472
7763
  emptyStates?: Partial<Record<ActivityTab, ReactNode>> | undefined;
7473
7764
  className?: string | undefined;
7474
7765
  }
7475
- declare function ActivityPane({ tab, defaultTab, onTabChange, comments, activity, draft, onDraftChange, onSubmit, onReply, sending, composerAvatar, composerPlaceholder, composerLabel, composerMaxLength, submitLabel, now, locale, emptyStates, className, }: ActivityPaneProps): react_jsx_runtime.JSX.Element;
7766
+ declare function ActivityPane({ tab, defaultTab, onTabChange, comments, activity, draft, onDraftChange, onSubmit, onReply, onReact, onEdit, onDelete, onRetry, onHideLinkPreview, sending, composerAvatar, composerPlaceholder, composerLabel, composerMaxLength, submitLabel, now, locale, emptyStates, className, }: ActivityPaneProps): react_jsx_runtime.JSX.Element;
7476
7767
 
7477
7768
  /**
7478
7769
  * MonthCalendar — the date editor's month grid, and the date-value helpers.
@@ -8195,6 +8486,14 @@ interface ThreadRenderContext extends RichComposerAttachmentProps {
8195
8486
  */
8196
8487
  readonly onCopyLink?: ((commentId: string) => void) | undefined;
8197
8488
  readonly onCopyText?: ((commentId: string, ok: boolean) => void) | undefined;
8489
+ /**
8490
+ * Edit and delete are gated TWICE, and the second gate is the per-comment
8491
+ * one: the callback here says the host wired the mutation, and `canEdit` /
8492
+ * `canDelete` on the row say whether this viewer may use it on THAT comment
8493
+ * (see `ThreadComment`). Wiring the callback alone draws the item on every
8494
+ * live comment, which is what 0.2.0 did and what the server then refused.
8495
+ * Absent flags keep the item, so nothing a 0.2.0 host draws disappears.
8496
+ */
8198
8497
  readonly onEdit?: ((commentId: string) => void) | undefined;
8199
8498
  readonly onDelete?: ((commentId: string) => void) | undefined;
8200
8499
  /**
@@ -8675,4 +8974,4 @@ declare function sortCommentTree(roots: readonly CommentNode[], sort: ThreadSort
8675
8974
  */
8676
8975
  declare function useNowTick(enabled: boolean): number;
8677
8976
 
8678
- export { ATTACHMENT_ACCEPT, ATTACHMENT_LIMITS, AVATAR_TINTS, AccordionCompound as Accordion, type AccordionProps, type AccordionSectionProps, type ActivityEntry, ActivityPane, type ActivityPaneProps, type ActivityTab, AllocationSparkbar, type AllocationSparkbarProps, type AnchorAlign, type AnchorPlacement, type AnchorRect, type AnchorSide, type AnchorSize, type AnchoredPosition, type AnchoredPositionOptions, type AnyColumnConfig, AppScroll, type ArcGeometry, type ArcSegment, AreaChart, type AreaChartProps, AttachmentButton, type AttachmentButtonProps, AttachmentDropZone, type AttachmentDropZoneProps, AttachmentGif, type AttachmentGifProps, AttachmentImage, type AttachmentImageProps, AttachmentLightbox, type AttachmentLightboxProps, AttachmentPlaceholder, type AttachmentTicketLike, AttachmentTray, type AttachmentTrayProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize, type AvatarTint, BOARD_HUE_KEYS, BOARD_STATUS_KEYS, BRAND_ICONS, Badge, type BadgeProps, type BadgeTone, type BandScale, BarChart, type BarChartDatum, type BarChartEmphasis, type BarChartMode, type BarChartOrientation, type BarChartProps, type BarChartSeries, Board, type BoardCardContext, BoardColumn, type BoardColumnProps, type BoardColumnSpec, type BoardHueKey, type BoardItemLeadContext, type BoardProps, type BoardStatusKey, BrandFacebook, BrandIcon, type BrandIconKey, type BrandIconProps, BrandInstagram, BrandLinkedIn, BrandLogoTile, type BrandLogoTileProps, type BrandLogoTileSize, BrandMessenger, BrandMeta, BrandNextdoor, BrandPinterest, BrandSnapchat, BrandTikTok, BulkActionBar, type BulkActionBarProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type ButtonShape, type ButtonSize, type ButtonVariant, COLUMN_DATA_TYPES, type CalcLayout, type CalcPrefill, CalculatorShell, type CalculatorShellProps, CalculatorShellV2, type CalculatorShellV2Props, Card, ChartFrame, type ChartFrameProps, type ChartFrameState, type ChartFrameView, ChartLegend, type ChartLegendItem, type ChartLegendProps, type ChartSlot, type ChartTableData, type ChartTableRow, ChartTooltip, type ChartTooltipProps, type ChartTooltipRow, Checkbox, type CheckboxProps, ChipNav, type ChipNavItem, ChipToggleGroup, type ChipToggleGroupProps, type ChipToggleItem, Choropleth, type ChoroplethProps, CodeBlock, type CodeBlockProps, CollapsedReplies, type CollapsedRepliesProps, CollapsibleCard, type CollapsibleCardProps, type ColumnAccessor, type ColumnConfig, type ColumnDataNativeMap, type ColumnDataType, type ColumnOption, type ColumnValueMap, Combobox, type ComboboxGroup, type ComboboxMultipleProps, type ComboboxOption, type ComboboxOptionState, type ComboboxProps, type ComboboxSingleProps, type ComboboxSize, CommentActions, type CommentActionsProps, CommentBody, type CommentBodyProps, type CommentDeliveryState, CommentItem, type CommentItemProps, type CommentNode, CommentVote, type CommentVoteProps, CompletionRing, type CompletionRingProps, type ComposerAttachment, type ComposerAttachmentKind, type ComposerAttachmentState, CopyField, type CopyFieldProps, type Crumb, DEFAULT_INDENT_CLAMP_DEPTH, DEFAULT_MAX_DEPTH, DEFAULT_OPERATORS, DEFAULT_REPLIES_VISIBLE, DETAIL_COLLAPSE_VALUES, DETAIL_MODES, DETAIL_MODE_LABELS, DETAIL_PANEL_DEFAULT_SIZE, DONUT_OTHER_KEY, DataGrid, type DataGridColumn, DataGridColumnOptionsMenu, DataGridDragOverlay, type DataGridDrawerPanelProps, DataGridDropIndicator, type DataGridIcon, type DataGridProps, type DataGridRowBase, type DataGridSortState, DataGridToolbar, type DataGridToolbarProps, type DataGridToolbarRenderProps, type DateFilterOperator, type DateParts, DeltaChip, type DeltaChipProps, type DeltaDirection, type DeltaFormat, type DetailCollapse, DetailDivider, type DetailDividerProps, DetailHeader, type DetailHeaderProps, DetailMenu, type DetailMenuAction, type DetailMenuItem, type DetailMenuProps, type DetailMode, type DetailPaneSide, DetailSection, DetailSurface, type DetailSurfaceProps, DeviceFrame, type DeviceFrameProps, type DisplayAllowed, type DisplayController, type DisplayMigrations, DisplayPopover, type DisplayPopoverProps, type DisplayPopoverSectionProps, type DisplayProviderProps, type DisplaySettings, type DisplayStore, type DisplayValue, DonutChart, type DonutChartDatum, type DonutChartProps, type DonutFold, type DonutGapSurface, type DonutSlice, DragHandle, DropdownButton, type DropdownButtonItem, type DropdownButtonProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuSeparator, DropdownMenuTrigger, type DropdownMenuTriggerProps, type EditingCell, type ElementType, type EmojiEntry, EmptyPlaceholder, EmptyState, type EmptyStateProps, type Extent, FIELD_FILTERS, FIELD_FILTER_LABELS, FILTERS_SEARCH_PARAM, FILTER_OPERATOR_DETAILS, FOLDER_COLOR_KEYS, type FieldFilter, FieldList, type FieldListProps, type FieldOption, type FieldPerson, FieldRow, type FieldRowDateProps, type FieldRowPeopleProps, type FieldRowProps, type FieldRowSelectProps, type FieldRowTagsProps, type FieldRowTextProps, FieldValueButton, type FieldValueButtonProps, FileDropZone, FilePreviewGrid, FilePreviewItem, FileThumbnail, FileUploadButton, FilterBar, type FilterBarCountProps, type FilterBarProps, type FilterBarSearchProps, FilterChipBar, type FilterChipBarProps, type FilterDetails, FilterDropdown, type FilterDropdownProps, type FilterFieldIconRenderer, FilterMenu, type FilterMenuProps, type FilterModel, type FilterOperatorArity, type FilterOperatorDetails, type FilterOperatorDetailsShape, type FilterOperatorTarget, type FilterOperators, type FilterOption, type FilterOptionIconRenderer, type FilterTypeOperatorDetails, type FilterValues, type FiltersState, FloatingDrawer, type FloatingDrawerProps, FloatingStatusBar, type FloatingStatusBarProps, type FloatingStatusTone, FolderCard, type FolderCardProps, type FolderColorKey, type FolderTreeNode, FolderTreePicker, type FolderTreePickerProps, FrameStack, type FrameStackProps, GIF_SEARCH_DEBOUNCE_MS, type GaugeBand, GaugeRing, type GaugeRingProps, type GaugeTone, GifPicker, type GifPickerProps, type GifPickerResult, HEADER_HEIGHT, HeroFormCardCompound as HeroFormCard, type HeroFormCardAdvancedProps, type HeroFormCardBannerProps, type HeroFormCardFieldProps, type HeroFormCardProps, type HeroFormCardSectionProps, type HomeCrumb, HomeCrumbLink, IconTile, IdentityLabel, IdentityValue, Input, type InputProps, type InputSize, Kbd, type KbdProps, LINK_PREVIEW_DEFAULT_ASPECT, LISTBOX_CLASS, type LayerHandle, type LayerKind, type LedgerCell, type LedgerProgress, type LedgerSegment, LineChart, type LineChartProps, type LineChartSeries, LineIcon, LinkPreview, type LinkPreviewProps, ListItem, ListboxOption, type ListboxOptionProps, MarkdownCode, type MarkdownEdit, type MarkdownFormat, MarkdownRenderer, type MarkdownRendererProps, type MentionSuggestionItem, type MentionTarget, type MentionTargetType, MenuButton, type MenuButtonEntry, type MenuButtonItem, type MenuButtonProps, type MenuButtonSeparator, MetaCell, type MetaCellProps, index as MetaPreviews, MetricCard, type MetricCardProps, type MetricCardTone, MicrosoftLogo, type MicrosoftLogoProps, Modal, type MultiOptionFilterOperator, MultiSortableList, type MultiSortableListProps, type MultiSortableMove, type Nullable, type NumberFilterOperator, type NumericInput, OTHER_SLOT_COLOR, type OptionBasedColumnDataType, type OptionFilterOperator, OptionRow, type OptionRowProps, OptionTile, OptionTileGroup, type OptionTileGroupProps, type OptionTileProps, type OutsideClickTarget, PASTE_ATTACHMENT_THRESHOLD, PLACEMENT_CONFIGS, POPOVER_SURFACE_STYLE, PageHeaderHost, PageHeaderSlotProvider, PageHero, type PageHeroProps, PageShell, Pagination, type PaginationProps, type PendingFile, PillButton, type PillButtonProps, type PlacementPreview, type Point, Popover, type PopoverContentProps, type PopoverFooterAction, PopoverFooterActions, type PopoverFooterActionsProps, type PopoverProps, type PopoverTriggerProps, type PreviewAdData, type PreviewConfiguration, type PreviewDevice, type PreviewPlacement, type PreviewPlatform, PS as ProfileSection, type ProfileSectionProps, ProgressBar, type ProgressBarProps, ProgressLedger, type ProgressLedgerProps, REACTION_META, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, RankedBars, type RankedBarsItem, type RankedBarsProps, type RankedBarsSort, ReactionBar, type ReactionBarProps, RelativeTime, type RelativeTimeProps, ResizableHandle, type ResizableHandleProps, ResizablePane, type ResizablePaneProps, type RgbTuple, type RichComposerAttachmentProps, RichThreadComposer, type RichThreadComposerProps, type RingDash, SCATTER_SLOT_COUNT, SECTION_SCROLL_OFFSET, SERIES, SERIES_SCATTER, SERIES_SLOT_COUNT, STATUS_GLYPHS, STATUS_LABELS, type ScaleFn, type ScatterSlot, SearchBar, type SearchBarProps, SectionHeading, type SectionHeadingProps, SectionLabel, SegmentedPill, type SegmentedPillItem, type SegmentedPillProps, Select, type SelectOption, type SelectProps, SelectRow, type SelectRowProps, type SelectSize, type SeriesPalette, type SeriesSlot, Shell, type ShellProps, ShellStat, type ShellStatProps, type ShellStatTone, type ShellSubCardProps, type ShellTrayBodyProps, type ShellTrayFooterProps, type ShellTrayHeaderProps, type ShellTrayProps, Slider, type SliderProps, type SortableContainers, SortableDropZone, SortableItem, SortableList, SortableTable, type Column as SortableTableColumn, type SortableTableProps, Sparkline, type SparklineProps, type SparklineVariant, StatCard, type StatCardFooterLink, type StatCardProps, type StatCardSize, StatRow, type StatRowProps, type StatRowStep, StatStrip, type StatStripCell, type StatStripProps, StatsGrid, type StatsGridProps, StatusGlyph, type StatusGlyphProps, StatusRing, type StatusRingProps, StepLoader, type StepLoaderProps, type StepLoaderStep, type SuggestionListProps, type SuggestionOption, THREAD_REACTION_KEYS, type Tab, Tabs, type TabsProps, TagChipInput, type TagChipInputProps, TagRow, TaskCard, type TaskCardAvatar, type TaskCardCount, type TaskCardDate, type TaskCardDragProps, type TaskCardMedia, type TaskCardProps, type TextFilterOperator, TextInput, Textarea, TextareaInput, type TextareaProps, Thread, type ThreadAttachment, type ThreadAttachmentKind, type ThreadAuthor, type ThreadComment, ThreadComposer, type ThreadComposerProps, ThreadConnector, type ThreadConnectorProps, type ThreadEngagement, type ThreadLinkPreview, type ThreadParticipant, type ThreadProps, ThreadRail, type ThreadRailProps, type ThreadReactionCount, type ThreadReactionKey, type ThreadRenderContext, type ThreadSort, ThreadTrunkSegment, type ThreadVote, Toaster, ToggleRow, type ToggleRowProps, TokenBadge, type TokenBadgeProps, Tooltip, type TooltipProps, type TooltipTriggerProps, type UploadResult, type UseAnchoredPositionOptions, type UseAnchoredPositionResult, type UseAttachmentsOptions, type UseAttachmentsResult, type UseEscapeKeyOptions, type UseFileUploadOptions, type UseLayerOptions, type UseOutsideClickOptions, type UseThreadOptions, type UseThreadResult, ValueChip, type ValueChipProps, type VisibleReplies, type WcagBadge, applyMarkdownFormat, arcGeometry, arcSegments, areaPath, asAvatarTint, avatarTintForKey, bandScale, bestTextOn, buildCommentTree, clampPct, clearFilters, cn, computeAnchoredPosition, contrastRatio, copyText, countCommentTree, countDescendants, createDisplayStore, dateFilterFn, dateFilterOperators, defineColumns, detailPaneSide, determineNewOperator, engagementScore, facetedCounts, facetedMinMax, facetedRowsFor, filterRows, foldDonutData, folderColorVar, formatAbsoluteTime, formatAttachmentSize, formatCurrency, formatDateDisplay, formatNumber, formatPercent, formatRatio, formatRelativeTime, getFilter, hasBrandIcon, hexToRgbTuple, hslString, hueClass, hueForKey, indexColumns, initials, isColumnOfType, isOperatorOf, isScatterSlot, isSeriesSlot, ledgerProgress, linePath, linearScale, monthDomain, multiOptionFilterFn, multiOptionFilterOperators, negateOperator, niceTicks, normalizeToMax, numberFilterFn, numberFilterOperators, operatorDetails, operatorValueArity, operatorsForType, optionFilterFn, optionFilterOperators, paletteColor, parseDateValue, parseFilters, parseMentionHref, pastedTextFilename, pruneFilters, relatedOperators, relativeLuminance, removeFilter, rgbCss, rgbString, ringDash, rowMatchesFilter, rowMatchesFilters, scatterColor, serializeFilters, seriesColor, setDateFilter, setFilterOperator, setMultiOptionFilter, setNumberFilter, setOptionFilter, setTextFilter, shouldAttachPaste, slotColor, sortCommentTree, stackFractions, stackTotals, textFilterFn, textFilterOperators, toIsoTimestamp, toggleMultiOptionValue, toggleOptionValue, tooltipPosition, upsertFilter, useAnchoredPosition, useAttachmentUrl, useAttachments, useBreadcrumbHome, useEscapeKey, useFieldRowVisible, useFileUpload, useLayer, useNowTick, useOutsideClick, usePrefersReducedMotion, useThread, wcagBadges, withMinimumArc };
8977
+ export { ATTACHMENT_ACCEPT, ATTACHMENT_LIMITS, AVATAR_TINTS, AccordionCompound as Accordion, type AccordionProps, type AccordionSectionProps, type ActivityEntry, ActivityPane, type ActivityPaneProps, type ActivityTab, AllocationSparkbar, type AllocationSparkbarProps, type AnchorAlign, type AnchorPlacement, type AnchorRect, type AnchorSide, type AnchorSize, type AnchoredPosition, type AnchoredPositionOptions, type AnyColumnConfig, AppScroll, type ArcGeometry, type ArcSegment, AreaChart, type AreaChartProps, AttachmentButton, type AttachmentButtonProps, AttachmentDropZone, type AttachmentDropZoneProps, AttachmentGif, type AttachmentGifProps, AttachmentImage, type AttachmentImageProps, AttachmentLightbox, type AttachmentLightboxProps, AttachmentPlaceholder, type AttachmentTicketLike, AttachmentTray, type AttachmentTrayProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarSize, type AvatarTint, BOARD_HUE_KEYS, BOARD_STATUS_KEYS, BRAND_ICONS, Badge, type BadgeProps, type BadgeTone, type BandScale, BarChart, type BarChartDatum, type BarChartEmphasis, type BarChartMode, type BarChartOrientation, type BarChartProps, type BarChartSeries, Board, type BoardCardContext, BoardColumn, type BoardColumnProps, type BoardColumnSpec, type BoardHueKey, type BoardItemLeadContext, type BoardProps, type BoardStatusKey, BrandFacebook, BrandIcon, type BrandIconKey, type BrandIconProps, BrandInstagram, BrandLinkedIn, BrandLogoTile, type BrandLogoTileProps, type BrandLogoTileSize, BrandMessenger, BrandMeta, BrandNextdoor, BrandPinterest, BrandSnapchat, BrandTikTok, BulkActionBar, type BulkActionBarProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type ButtonShape, type ButtonSize, type ButtonVariant, COLUMN_DATA_TYPES, type CalcLayout, type CalcPrefill, CalculatorShell, type CalculatorShellProps, CalculatorShellV2, type CalculatorShellV2Props, Card, ChartFrame, type ChartFrameProps, type ChartFrameState, type ChartFrameView, ChartLegend, type ChartLegendItem, type ChartLegendProps, type ChartSlot, type ChartTableData, type ChartTableRow, ChartTooltip, type ChartTooltipProps, type ChartTooltipRow, Checkbox, type CheckboxProps, ChipNav, type ChipNavItem, ChipToggleGroup, type ChipToggleGroupProps, type ChipToggleItem, Choropleth, type ChoroplethProps, CodeBlock, type CodeBlockProps, CollapsedReplies, type CollapsedRepliesProps, CollapsibleCard, type CollapsibleCardProps, type ColumnAccessor, type ColumnConfig, type ColumnDataNativeMap, type ColumnDataType, type ColumnOption, type ColumnValueMap, Combobox, type ComboboxGroup, type ComboboxMultipleProps, type ComboboxOption, type ComboboxOptionState, type ComboboxProps, type ComboboxSingleProps, type ComboboxSize, CommentActions, type CommentActionsProps, CommentBody, type CommentBodyProps, type CommentDeliveryState, CommentItem, type CommentItemProps, type CommentNode, CommentVote, type CommentVoteProps, CompletionRing, type CompletionRingProps, type ComposerAttachment, type ComposerAttachmentKind, type ComposerAttachmentState, CopyField, type CopyFieldProps, type Crumb, DEFAULT_INDENT_CLAMP_DEPTH, DEFAULT_MAX_DEPTH, DEFAULT_OPERATORS, DEFAULT_REPLIES_VISIBLE, DETAIL_COLLAPSE_VALUES, DETAIL_MODES, DETAIL_MODE_LABELS, DETAIL_PANEL_DEFAULT_SIZE, DONUT_OTHER_KEY, DataGrid, type DataGridColumn, DataGridColumnOptionsMenu, DataGridDragOverlay, type DataGridDrawerPanelProps, DataGridDropIndicator, type DataGridIcon, type DataGridProps, type DataGridRowBase, type DataGridSortState, DataGridToolbar, type DataGridToolbarProps, type DataGridToolbarRenderProps, type DateFilterOperator, type DateParts, DeltaChip, type DeltaChipProps, type DeltaDirection, type DeltaFormat, type DetailCollapse, DetailDivider, type DetailDividerProps, DetailHeader, type DetailHeaderProps, DetailMenu, type DetailMenuAction, type DetailMenuItem, type DetailMenuProps, type DetailMode, type DetailPaneSide, DetailSection, DetailSurface, type DetailSurfaceProps, DeviceFrame, type DeviceFrameProps, type DisplayAllowed, type DisplayController, type DisplayMigrations, DisplayPopover, type DisplayPopoverProps, type DisplayPopoverSectionProps, type DisplayProviderProps, type DisplaySettings, type DisplayStore, type DisplayStoreOptions, type DisplayValue, DonutChart, type DonutChartDatum, type DonutChartProps, type DonutFold, type DonutGapSurface, type DonutSlice, DragHandle, DropdownButton, type DropdownButtonItem, type DropdownButtonProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, type DropdownMenuProps, DropdownMenuSeparator, DropdownMenuTrigger, type DropdownMenuTriggerProps, type EditingCell, type ElementType, type EmojiEntry, EmptyPlaceholder, EmptyState, type EmptyStateProps, type Extent, FIELD_FILTERS, FIELD_FILTER_LABELS, FILTERS_SEARCH_PARAM, FILTER_OPERATOR_DETAILS, FOLDER_COLOR_KEYS, type FieldFilter, FieldList, type FieldListProps, type FieldOption, type FieldPerson, FieldRow, type FieldRowDateProps, type FieldRowPeopleProps, type FieldRowProps, type FieldRowSelectProps, type FieldRowTagsProps, type FieldRowTextProps, FieldValueButton, type FieldValueButtonProps, FileDropZone, FilePreviewGrid, FilePreviewItem, FileThumbnail, FileUploadButton, FilterBar, type FilterBarCountProps, type FilterBarProps, type FilterBarSearchProps, FilterChipBar, type FilterChipBarProps, type FilterDetails, FilterDropdown, type FilterDropdownProps, type FilterFieldIconRenderer, FilterMenu, type FilterMenuProps, type FilterModel, type FilterOperatorArity, type FilterOperatorDetails, type FilterOperatorDetailsShape, type FilterOperatorTarget, type FilterOperators, type FilterOption, type FilterOptionIconRenderer, type FilterTypeOperatorDetails, type FilterValues, type FiltersState, FloatingDrawer, type FloatingDrawerProps, FloatingStatusBar, type FloatingStatusBarProps, type FloatingStatusTone, FolderCard, type FolderCardProps, type FolderColorKey, type FolderTreeNode, FolderTreePicker, type FolderTreePickerProps, FrameStack, type FrameStackProps, GIF_SEARCH_DEBOUNCE_MS, type GaugeBand, GaugeRing, type GaugeRingProps, type GaugeTone, GifPicker, type GifPickerProps, type GifPickerResult, HEADER_HEIGHT, HeroFormCardCompound as HeroFormCard, type HeroFormCardAdvancedProps, type HeroFormCardBannerProps, type HeroFormCardFieldProps, type HeroFormCardProps, type HeroFormCardSectionProps, type HomeCrumb, HomeCrumbLink, IconTile, IdentityLabel, IdentityValue, Input, type InputProps, type InputSize, Kbd, type KbdProps, LINK_PREVIEW_DEFAULT_ASPECT, LISTBOX_CLASS, type LayerHandle, type LayerKind, type LedgerCell, type LedgerProgress, type LedgerSegment, LineChart, type LineChartProps, type LineChartSeries, LineIcon, LinkPreview, type LinkPreviewProps, ListItem, ListboxOption, type ListboxOptionProps, MarkdownCode, type MarkdownEdit, type MarkdownFormat, MarkdownRenderer, type MarkdownRendererProps, type MentionSuggestionItem, type MentionTarget, type MentionTargetType, MenuButton, type MenuButtonEntry, type MenuButtonItem, type MenuButtonProps, type MenuButtonSeparator, MetaCell, type MetaCellProps, index as MetaPreviews, MetricCard, type MetricCardProps, type MetricCardTone, MicrosoftLogo, type MicrosoftLogoProps, Modal, type MultiOptionFilterOperator, MultiSortableList, type MultiSortableListProps, type MultiSortableMove, type Nullable, type NumberFilterOperator, type NumericInput, OTHER_SLOT_COLOR, type OptionBasedColumnDataType, type OptionFilterOperator, OptionRow, type OptionRowProps, OptionTile, OptionTileGroup, type OptionTileGroupProps, type OptionTileProps, type OutsideClickTarget, PASTE_ATTACHMENT_THRESHOLD, PLACEMENT_CONFIGS, POPOVER_SURFACE_STYLE, PREVIEW_SETTLE_MS, PageHeaderHost, PageHeaderSlotProvider, PageHero, type PageHeroProps, PageShell, Pagination, type PaginationProps, type PendingFile, PillButton, type PillButtonProps, type PlacementPreview, type Point, Popover, type PopoverContentProps, type PopoverFooterAction, PopoverFooterActions, type PopoverFooterActionsProps, type PopoverProps, type PopoverTriggerProps, type PreviewAdData, type PreviewConfiguration, type PreviewDevice, type PreviewPlacement, type PreviewPlatform, PS as ProfileSection, type ProfileSectionProps, ProgressBar, type ProgressBarProps, ProgressLedger, type ProgressLedgerProps, REACTION_META, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, RankedBars, type RankedBarsItem, type RankedBarsProps, type RankedBarsSort, ReactionBar, type ReactionBarProps, RelativeTime, type RelativeTimeProps, ResizableHandle, type ResizableHandleProps, ResizablePane, type ResizablePaneProps, type RgbTuple, type RichComposerAttachmentProps, RichThreadComposer, type RichThreadComposerProps, type RingDash, SCATTER_SLOT_COUNT, SECTION_SCROLL_OFFSET, SERIES, SERIES_SCATTER, SERIES_SLOT_COUNT, STATUS_GLYPHS, STATUS_LABELS, type ScaleFn, type ScatterSlot, SearchBar, type SearchBarProps, SectionHeading, type SectionHeadingProps, SectionLabel, SegmentedPill, type SegmentedPillItem, type SegmentedPillProps, Select, type SelectOption, type SelectProps, SelectRow, type SelectRowProps, type SelectSize, type SeriesPalette, type SeriesSlot, Shell, type ShellProps, ShellStat, type ShellStatProps, type ShellStatTone, type ShellSubCardProps, type ShellTrayBodyProps, type ShellTrayFooterProps, type ShellTrayHeaderProps, type ShellTrayProps, Slider, type SliderProps, type SortableContainers, SortableDropZone, SortableItem, SortableList, SortableTable, type Column as SortableTableColumn, type SortableTableProps, Sparkline, type SparklineProps, type SparklineVariant, StatCard, type StatCardFooterLink, type StatCardProps, type StatCardSize, StatRow, type StatRowProps, type StatRowStep, StatStrip, type StatStripCell, type StatStripProps, StatsGrid, type StatsGridProps, StatusGlyph, type StatusGlyphProps, StatusRing, type StatusRingProps, StepLoader, type StepLoaderProps, type StepLoaderStep, type SuggestionListProps, type SuggestionOption, THREAD_REACTION_KEYS, type Tab, Tabs, type TabsProps, TagChipInput, type TagChipInputProps, TagRow, TaskCard, type TaskCardAvatar, type TaskCardCount, type TaskCardDate, type TaskCardDragProps, type TaskCardMedia, type TaskCardProps, type TextFilterOperator, TextInput, Textarea, TextareaInput, type TextareaProps, Thread, type ThreadAttachment, type ThreadAttachmentKind, type ThreadAuthor, type ThreadComment, ThreadComposer, type ThreadComposerProps, ThreadConnector, type ThreadConnectorProps, type ThreadEngagement, type ThreadLinkPreview, type ThreadParticipant, type ThreadProps, ThreadRail, type ThreadRailProps, type ThreadReactionCount, type ThreadReactionKey, type ThreadRenderContext, type ThreadSort, ThreadTrunkSegment, type ThreadVote, Toaster, ToggleRow, type ToggleRowProps, TokenBadge, type TokenBadgeProps, Tooltip, type TooltipProps, type TooltipTriggerProps, type UploadResult, type UseAnchoredPositionOptions, type UseAnchoredPositionResult, type UseAttachmentsOptions, type UseAttachmentsResult, type UseEscapeKeyOptions, type UseFileUploadOptions, type UseLayerOptions, type UseOutsideClickOptions, type UseThreadOptions, type UseThreadResult, ValueChip, type ValueChipProps, type VisibleReplies, type WcagBadge, applyMarkdownFormat, arcGeometry, arcSegments, areaPath, asAvatarTint, avatarTintForKey, bandScale, bestTextOn, buildCommentTree, clampPct, clearFilters, cn, computeAnchoredPosition, contrastRatio, copyText, countCommentTree, countDescendants, createDisplayStore, dateFilterFn, dateFilterOperators, defineColumns, detailPaneSide, determineNewOperator, engagementScore, facetedCounts, facetedMinMax, facetedRowsFor, filterRows, foldDonutData, folderColorVar, formatAbsoluteTime, formatAttachmentSize, formatCurrency, formatDateDisplay, formatNumber, formatPercent, formatRatio, formatRelativeTime, getFilter, hasBrandIcon, hexToRgbTuple, hslString, hueClass, hueForKey, indexColumns, initials, isColumnOfType, isOperatorOf, isScatterSlot, isSeriesSlot, ledgerProgress, linePath, linearScale, monthDomain, multiOptionFilterFn, multiOptionFilterOperators, negateOperator, niceTicks, normalizeToMax, numberFilterFn, numberFilterOperators, operatorDetails, operatorValueArity, operatorsForType, optionFilterFn, optionFilterOperators, paletteColor, parseDateValue, parseFilters, parseMentionHref, pastedTextFilename, pointerFirstCollision, pruneFilters, relatedOperators, relativeLuminance, removeFilter, rgbCss, rgbString, ringDash, rowMatchesFilter, rowMatchesFilters, scatterColor, serializeFilters, seriesColor, setDateFilter, setFilterOperator, setMultiOptionFilter, setNumberFilter, setOptionFilter, setTextFilter, shouldAttachPaste, slotColor, sortCommentTree, stackFractions, stackTotals, textFilterFn, textFilterOperators, toIsoTimestamp, toggleMultiOptionValue, toggleOptionValue, tooltipPosition, upsertFilter, useAnchoredPosition, useAttachmentUrl, useAttachments, useBreadcrumbHome, useEscapeKey, useFieldRowVisible, useFileUpload, useLayer, useNowTick, useOutsideClick, usePrefersReducedMotion, useThread, wcagBadges, withMinimumArc };