@assure-one/design-system 1.8.0 → 1.10.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/index.js CHANGED
@@ -3017,7 +3017,7 @@ function getInitials(name) {
3017
3017
  }
3018
3018
  var Avatar = React38.forwardRef(
3019
3019
  function Avatar2({ src, alt, name, size = "md", variant = "initials", status, className, ...props }, ref) {
3020
- const initials = name ? getInitials(name) : "?";
3020
+ const initials2 = name ? getInitials(name) : "?";
3021
3021
  const resolvedSize = size ?? "md";
3022
3022
  return /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
3023
3023
  /* @__PURE__ */ jsxs(
@@ -3041,7 +3041,7 @@ var Avatar = React38.forwardRef(
3041
3041
  delayMs: src ? 200 : 0,
3042
3042
  className: "flex size-full items-center justify-center",
3043
3043
  "aria-label": name || "Unknown user",
3044
- children: initials
3044
+ children: initials2
3045
3045
  }
3046
3046
  )
3047
3047
  ]
@@ -12975,6 +12975,434 @@ var DocumentRow = forwardRef(function DocumentRow2({ fileName, meta, icon, actio
12975
12975
  );
12976
12976
  });
12977
12977
  DocumentRow.displayName = "DocumentRow";
12978
+ var TONE_TEXT = {
12979
+ warning: "text-warning-fg",
12980
+ success: "text-success-fg",
12981
+ danger: "text-danger-fg",
12982
+ muted: "text-fg-4"
12983
+ };
12984
+ var TONE_PILL = {
12985
+ warning: "bg-warning-bg text-warning-fg",
12986
+ success: "bg-success-bg text-success-fg",
12987
+ danger: "bg-danger-bg text-danger-fg",
12988
+ muted: "bg-surface-2 text-fg-3"
12989
+ };
12990
+ function initials(name) {
12991
+ return name.split(/\s+/).slice(0, 2).map((p) => p[0]?.toUpperCase() ?? "").join("");
12992
+ }
12993
+ var DocumentRequestCard = forwardRef(
12994
+ function DocumentRequestCard2({ title, category, highPriority, due, comment, fulfilledCount, totalCount, items, assignees = [], onOpen, className, ...props }, ref) {
12995
+ const docWord = totalCount === 1 ? "document" : "documents";
12996
+ return /* @__PURE__ */ jsxs(
12997
+ "div",
12998
+ {
12999
+ ref,
13000
+ role: "button",
13001
+ tabIndex: 0,
13002
+ onClick: onOpen,
13003
+ onKeyDown: (e) => {
13004
+ if (e.key === "Enter" || e.key === " ") {
13005
+ e.preventDefault();
13006
+ onOpen();
13007
+ }
13008
+ },
13009
+ className: cn(
13010
+ "rounded-card border-rule bg-surface cursor-pointer overflow-hidden border shadow-sm",
13011
+ "transition-shadow duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
13012
+ "hover:shadow-md focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
13013
+ className
13014
+ ),
13015
+ ...props,
13016
+ children: [
13017
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 px-5 py-3.5", children: [
13018
+ /* @__PURE__ */ jsxs("span", { className: "bg-surface-2 text-fg-3 inline-flex shrink-0 items-center rounded-md px-2 py-0.5 text-xs font-semibold tabular-nums", children: [
13019
+ fulfilledCount,
13020
+ "/",
13021
+ totalCount
13022
+ ] }),
13023
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
13024
+ /* @__PURE__ */ jsx("span", { className: "text-fg min-w-0 truncate text-sm font-semibold", children: title }),
13025
+ category && /* @__PURE__ */ jsx("span", { className: "bg-surface-2 text-fg-3 inline-flex shrink-0 items-center rounded-md px-2 py-0.5 text-xs font-medium", children: category }),
13026
+ highPriority && /* @__PURE__ */ jsx(AlertTriangleIcon, { size: 14, className: "text-warning-fg shrink-0", "aria-label": "Urgent request" }),
13027
+ due && /* @__PURE__ */ jsx(
13028
+ "span",
13029
+ {
13030
+ className: cn(
13031
+ "inline-flex shrink-0 items-center rounded-md px-2 py-0.5 text-xs font-semibold",
13032
+ TONE_PILL[due.tone]
13033
+ ),
13034
+ children: due.text
13035
+ }
13036
+ )
13037
+ ] }),
13038
+ /* @__PURE__ */ jsxs(
13039
+ "span",
13040
+ {
13041
+ "aria-hidden": true,
13042
+ className: "bg-pro-bg text-pro-fg ml-auto inline-flex shrink-0 items-center gap-1 rounded-lg px-2.5 py-1.5 text-[13px] font-semibold",
13043
+ children: [
13044
+ "Open",
13045
+ /* @__PURE__ */ jsx(ArrowRightIcon, { size: 13 })
13046
+ ]
13047
+ }
13048
+ )
13049
+ ] }),
13050
+ comment && /* @__PURE__ */ jsxs("p", { className: "text-fg-2 px-5 pb-1 text-[13.5px] leading-snug", children: [
13051
+ "\u201C",
13052
+ comment,
13053
+ "\u201D"
13054
+ ] }),
13055
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 px-5 pb-4 pt-3", children: items.map((item) => /* @__PURE__ */ jsxs("div", { className: "bg-surface-2 flex items-center gap-3 rounded-xl px-4 py-3.5", children: [
13056
+ /* @__PURE__ */ jsx(FileTextIcon, { size: 16, className: "text-fg-3 shrink-0" }),
13057
+ /* @__PURE__ */ jsx("span", { className: "text-fg min-w-0 flex-1 truncate text-sm font-semibold", children: item.label }),
13058
+ item.docType && /* @__PURE__ */ jsx("span", { className: "border-rule bg-surface text-fg-3 inline-flex shrink-0 items-center rounded-md border px-2 py-0.5 text-[10.5px] font-semibold uppercase tracking-wide", children: item.docType }),
13059
+ /* @__PURE__ */ jsx("span", { className: cn("shrink-0 text-[13px] font-semibold", TONE_TEXT[item.statusTone]), children: item.statusLabel })
13060
+ ] }, item.id)) }),
13061
+ /* @__PURE__ */ jsxs("div", { className: "border-rule flex items-center gap-2 border-t px-5 py-2.5", children: [
13062
+ /* @__PURE__ */ jsx(FolderClosedIcon, { size: 14, className: "text-fg-4 shrink-0" }),
13063
+ /* @__PURE__ */ jsxs("span", { className: "text-fg-3 text-[12.5px] tabular-nums", children: [
13064
+ totalCount,
13065
+ " ",
13066
+ docWord
13067
+ ] }),
13068
+ assignees.length > 0 && /* @__PURE__ */ jsxs("span", { className: "text-fg-3 ml-auto flex items-center gap-2 text-[12.5px]", children: [
13069
+ /* @__PURE__ */ jsx("span", { className: "flex items-center -space-x-1.5", children: assignees.map((name) => /* @__PURE__ */ jsx(
13070
+ "span",
13071
+ {
13072
+ title: name,
13073
+ className: "border-surface bg-surface-2 text-fg-3 ring-surface grid size-6 place-items-center rounded-full border text-[10px] font-semibold ring-1",
13074
+ children: initials(name)
13075
+ },
13076
+ name
13077
+ )) }),
13078
+ "Assigned"
13079
+ ] })
13080
+ ] })
13081
+ ]
13082
+ }
13083
+ );
13084
+ }
13085
+ );
13086
+ DocumentRequestCard.displayName = "DocumentRequestCard";
13087
+ var ACTIVITY_ICON = {
13088
+ assigned: UsersIcon,
13089
+ unassigned: UsersIcon,
13090
+ added: PaperclipIcon,
13091
+ uploaded: DownloadIcon,
13092
+ priority: AlertTriangleIcon,
13093
+ created: SendIcon,
13094
+ reminded: BellIcon,
13095
+ updated: PencilIcon,
13096
+ commented: MessageCircleIcon,
13097
+ cancelled: XCircleSolidIcon,
13098
+ received: DownloadIcon,
13099
+ approved: CheckCircleSolidIcon,
13100
+ needs_revision: AlertTriangleIcon
13101
+ };
13102
+ var DocumentRequestDetail = forwardRef(
13103
+ function DocumentRequestDetail2(props, ref) {
13104
+ const {
13105
+ title,
13106
+ category,
13107
+ highPriority,
13108
+ statusLabel,
13109
+ statusVariant = "secondary",
13110
+ requester,
13111
+ due,
13112
+ assignees,
13113
+ onToggleAssignee,
13114
+ canEdit,
13115
+ onEdit,
13116
+ onDelete,
13117
+ onClose,
13118
+ isLocked,
13119
+ onToggleLock,
13120
+ reviewStatus,
13121
+ reviewStatusOptions,
13122
+ onSetReviewStatus,
13123
+ tab,
13124
+ defaultTab = "documents",
13125
+ onTabChange,
13126
+ clientUploads,
13127
+ firmDocuments,
13128
+ onUploadFirmDocument,
13129
+ comments,
13130
+ commentDraft,
13131
+ onCommentDraftChange,
13132
+ onSubmitComment,
13133
+ commentDisabled,
13134
+ commentPending,
13135
+ activity,
13136
+ className
13137
+ } = props;
13138
+ const docCount = clientUploads.length + firmDocuments.length;
13139
+ const selectedAssignees = assignees.filter((a) => a.selected);
13140
+ return /* @__PURE__ */ jsxs(DocumentDetailPanel, { ref, className, children: [
13141
+ /* @__PURE__ */ jsxs(
13142
+ DocumentDetailHeader,
13143
+ {
13144
+ onClose,
13145
+ tags: /* @__PURE__ */ jsxs(Fragment, { children: [
13146
+ category && /* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "gap-1", children: [
13147
+ /* @__PURE__ */ jsx(FolderClosedIcon, { className: "size-3" }),
13148
+ category
13149
+ ] }),
13150
+ highPriority && /* @__PURE__ */ jsx(Badge, { variant: "warning", children: "High priority" })
13151
+ ] }),
13152
+ status: statusLabel ? /* @__PURE__ */ jsx(Badge, { variant: statusVariant, children: statusLabel }) : void 0,
13153
+ children: [
13154
+ /* @__PURE__ */ jsx(DocumentDetailTitle, { children: title }),
13155
+ /* @__PURE__ */ jsx(
13156
+ DocumentDetailRequester,
13157
+ {
13158
+ avatar: requester.avatar ?? requester.org,
13159
+ org: requester.org,
13160
+ requestedBy: requester.requestedBy,
13161
+ time: requester.time
13162
+ }
13163
+ ),
13164
+ /* @__PURE__ */ jsxs(DocumentDetailMetaRow, { children: [
13165
+ due ? /* @__PURE__ */ jsxs("span", { className: "rounded-pill border-rule text-fg-3 inline-flex items-center gap-1.5 border px-2.5 py-1 text-xs", children: [
13166
+ /* @__PURE__ */ jsx(CalendarIcon, { className: "size-3.5" }),
13167
+ due.text,
13168
+ due.dateLabel ? ` \xB7 ${due.dateLabel}` : ""
13169
+ ] }) : /* @__PURE__ */ jsx("span", {}),
13170
+ (selectedAssignees.length > 0 || onToggleAssignee) && /* @__PURE__ */ jsx(AssigneePicker, { assignees, onToggle: onToggleAssignee })
13171
+ ] }),
13172
+ canEdit && /* @__PURE__ */ jsxs(DocumentDetailActions, { className: "border-rule border-t pt-3", children: [
13173
+ /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "sm", onClick: onEdit, children: [
13174
+ /* @__PURE__ */ jsx(PencilIcon, {}),
13175
+ "Edit"
13176
+ ] }),
13177
+ onToggleLock && /* @__PURE__ */ jsxs(
13178
+ Button,
13179
+ {
13180
+ variant: "secondary",
13181
+ size: "sm",
13182
+ onClick: onToggleLock,
13183
+ "aria-pressed": isLocked,
13184
+ className: isLocked ? "text-warning-fg" : void 0,
13185
+ children: [
13186
+ isLocked ? /* @__PURE__ */ jsx(LockIcon, {}) : /* @__PURE__ */ jsx(LockOpenIcon, {}),
13187
+ isLocked ? "Unlock" : "Lock"
13188
+ ]
13189
+ }
13190
+ ),
13191
+ onSetReviewStatus && reviewStatusOptions && reviewStatusOptions.length > 0 && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
13192
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "sm", children: [
13193
+ /* @__PURE__ */ jsx(FlagIcon, {}),
13194
+ "Status"
13195
+ ] }) }),
13196
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", className: "w-48", children: [
13197
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: "Set status" }),
13198
+ /* @__PURE__ */ jsxs(
13199
+ DropdownMenuRadioGroup,
13200
+ {
13201
+ value: reviewStatus ?? "",
13202
+ onValueChange: (v) => onSetReviewStatus(v || null),
13203
+ children: [
13204
+ reviewStatusOptions.map((opt) => /* @__PURE__ */ jsx(DropdownMenuRadioItem, { value: opt.value, children: opt.label }, opt.value)),
13205
+ /* @__PURE__ */ jsx(DropdownMenuRadioItem, { value: "", children: "Auto (clear)" })
13206
+ ]
13207
+ }
13208
+ )
13209
+ ] })
13210
+ ] }),
13211
+ /* @__PURE__ */ jsxs(Button, { variant: "secondary", size: "sm", className: "text-danger-fg", onClick: onDelete, children: [
13212
+ /* @__PURE__ */ jsx(TrashIcon, {}),
13213
+ "Delete"
13214
+ ] })
13215
+ ] })
13216
+ ]
13217
+ }
13218
+ ),
13219
+ /* @__PURE__ */ jsxs(
13220
+ Tabs,
13221
+ {
13222
+ value: tab,
13223
+ defaultValue: tab ? void 0 : defaultTab,
13224
+ onValueChange: (v) => onTabChange?.(v),
13225
+ className: "flex min-h-0 flex-1 flex-col",
13226
+ children: [
13227
+ /* @__PURE__ */ jsxs(TabsList, { className: "w-full shrink-0 px-5", children: [
13228
+ /* @__PURE__ */ jsxs(TabsTrigger, { value: "documents", children: [
13229
+ "Documents ",
13230
+ docCount
13231
+ ] }),
13232
+ /* @__PURE__ */ jsxs(TabsTrigger, { value: "comments", children: [
13233
+ "Comments ",
13234
+ comments.length
13235
+ ] }),
13236
+ /* @__PURE__ */ jsxs(TabsTrigger, { value: "activity", children: [
13237
+ "Activity ",
13238
+ activity.length
13239
+ ] })
13240
+ ] }),
13241
+ /* @__PURE__ */ jsx(TabsContent, { value: "documents", className: "min-h-0 flex-1 overflow-y-auto px-5 py-4", children: /* @__PURE__ */ jsxs(DocumentList, { children: [
13242
+ /* @__PURE__ */ jsx(DocumentListSection, { label: "Client uploads", count: clientUploads.length, children: clientUploads.length > 0 ? clientUploads.map((d) => /* @__PURE__ */ jsx(
13243
+ DocumentRow,
13244
+ {
13245
+ fileName: d.fileName,
13246
+ meta: d.meta,
13247
+ className: d.active ? "bg-overlay-hover" : void 0,
13248
+ actions: /* @__PURE__ */ jsx(FileRowActions, { doc: d })
13249
+ },
13250
+ d.id
13251
+ )) : /* @__PURE__ */ jsx("p", { className: "text-fg-4 px-2.5 py-2 text-sm", children: "No client uploads yet." }) }),
13252
+ /* @__PURE__ */ jsx(
13253
+ DocumentListSection,
13254
+ {
13255
+ label: "Firm documents",
13256
+ count: firmDocuments.length,
13257
+ action: onUploadFirmDocument ? /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "sm", onClick: onUploadFirmDocument, children: [
13258
+ /* @__PURE__ */ jsx(UploadIcon, {}),
13259
+ "Upload"
13260
+ ] }) : void 0,
13261
+ children: firmDocuments.length > 0 ? firmDocuments.map((d) => /* @__PURE__ */ jsx(
13262
+ DocumentRow,
13263
+ {
13264
+ fileName: d.fileName,
13265
+ meta: d.meta,
13266
+ className: d.active ? "bg-overlay-hover" : void 0,
13267
+ actions: /* @__PURE__ */ jsx(FileRowActions, { doc: d })
13268
+ },
13269
+ d.id
13270
+ )) : /* @__PURE__ */ jsx("p", { className: "text-fg-4 px-2.5 py-2 text-sm", children: "No firm documents attached." })
13271
+ }
13272
+ )
13273
+ ] }) }),
13274
+ /* @__PURE__ */ jsxs(TabsContent, { value: "comments", className: "flex min-h-0 flex-1 flex-col", children: [
13275
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-5 py-4", children: comments.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: comments.map((c) => /* @__PURE__ */ jsx(CommentRow, { comment: c }, c.id)) }) : /* @__PURE__ */ jsx("p", { className: "text-fg-4 text-sm", children: "No comments yet. Start the conversation below." }) }),
13276
+ /* @__PURE__ */ jsxs("div", { className: "border-rule shrink-0 border-t px-5 py-3", children: [
13277
+ /* @__PURE__ */ jsx(
13278
+ Textarea,
13279
+ {
13280
+ value: commentDraft,
13281
+ onChange: (e) => onCommentDraftChange(e.target.value),
13282
+ onKeyDown: (e) => {
13283
+ if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
13284
+ e.preventDefault();
13285
+ onSubmitComment();
13286
+ }
13287
+ },
13288
+ placeholder: "Add a comment for the client or your team\u2026",
13289
+ rows: 2,
13290
+ disabled: commentDisabled,
13291
+ className: "resize-none"
13292
+ }
13293
+ ),
13294
+ /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center justify-between", children: [
13295
+ /* @__PURE__ */ jsx("span", { className: "text-fg-4 text-[11px]", children: "\u2318\u21B5 to send" }),
13296
+ /* @__PURE__ */ jsxs(
13297
+ Button,
13298
+ {
13299
+ size: "sm",
13300
+ onClick: onSubmitComment,
13301
+ disabled: commentDisabled || commentPending || !commentDraft.trim(),
13302
+ children: [
13303
+ /* @__PURE__ */ jsx(SendIcon, { size: 14 }),
13304
+ "Comment"
13305
+ ]
13306
+ }
13307
+ )
13308
+ ] })
13309
+ ] })
13310
+ ] }),
13311
+ /* @__PURE__ */ jsx(TabsContent, { value: "activity", className: "min-h-0 flex-1 overflow-y-auto px-5 py-4", children: activity.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: activity.map((event) => {
13312
+ const Icon3 = ACTIVITY_ICON[event.kind] ?? SendIcon;
13313
+ return /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-3 py-1", children: [
13314
+ /* @__PURE__ */ jsx("span", { className: "bg-pro-bg text-pro-fg grid size-9 shrink-0 place-items-center rounded-[10px]", children: /* @__PURE__ */ jsx(Icon3, { size: 16 }) }),
13315
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 pt-1", children: [
13316
+ /* @__PURE__ */ jsx("p", { className: "text-fg-2 text-[13px] leading-snug", children: event.text }),
13317
+ /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 text-[12px]", children: event.time })
13318
+ ] })
13319
+ ] }, event.id);
13320
+ }) }) : /* @__PURE__ */ jsx("p", { className: "text-fg-4 text-sm", children: "No activity yet." }) })
13321
+ ]
13322
+ }
13323
+ )
13324
+ ] });
13325
+ }
13326
+ );
13327
+ DocumentRequestDetail.displayName = "DocumentRequestDetail";
13328
+ function AssigneePicker({
13329
+ assignees,
13330
+ onToggle
13331
+ }) {
13332
+ const selected = assignees.filter((a) => a.selected);
13333
+ const stack = /* @__PURE__ */ jsx("span", { className: "flex -space-x-2", children: selected.map((a) => /* @__PURE__ */ jsx(Avatar, { size: "sm", name: a.name, variant: "branded" }, a.id)) });
13334
+ if (!onToggle) {
13335
+ return /* @__PURE__ */ jsxs("span", { className: "rounded-pill border-rule inline-flex items-center gap-2 border py-1 pl-1.5 pr-2.5", children: [
13336
+ stack,
13337
+ /* @__PURE__ */ jsx("span", { className: "text-fg-2 text-sm font-semibold tabular-nums", children: selected.length })
13338
+ ] });
13339
+ }
13340
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
13341
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
13342
+ "button",
13343
+ {
13344
+ type: "button",
13345
+ "aria-label": "Edit assignees",
13346
+ className: "rounded-pill border-rule hover:bg-overlay-hover inline-flex items-center gap-2 border py-1 pl-1.5 pr-2.5 transition-colors focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
13347
+ children: [
13348
+ stack,
13349
+ /* @__PURE__ */ jsx("span", { className: "text-fg-2 text-sm font-semibold tabular-nums", children: selected.length }),
13350
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-fg-4 size-4" })
13351
+ ]
13352
+ }
13353
+ ) }),
13354
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { align: "end", className: "w-56", children: [
13355
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: "Assign to" }),
13356
+ assignees.map((a) => /* @__PURE__ */ jsxs(
13357
+ DropdownMenuCheckboxItem,
13358
+ {
13359
+ checked: a.selected,
13360
+ onCheckedChange: () => onToggle(a.id),
13361
+ onSelect: (e) => e.preventDefault(),
13362
+ className: "gap-2",
13363
+ children: [
13364
+ /* @__PURE__ */ jsx(Avatar, { size: "xs", name: a.name, variant: "branded" }),
13365
+ a.name
13366
+ ]
13367
+ },
13368
+ a.id
13369
+ ))
13370
+ ] })
13371
+ ] });
13372
+ }
13373
+ function CommentRow({ comment }) {
13374
+ return /* @__PURE__ */ jsxs("div", { className: "flex gap-2.5", children: [
13375
+ /* @__PURE__ */ jsx(Avatar, { size: "sm", name: comment.author, variant: "branded" }),
13376
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13377
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
13378
+ /* @__PURE__ */ jsxs("span", { className: "text-fg truncate text-[13px] font-semibold", children: [
13379
+ comment.author,
13380
+ comment.you && " (You)"
13381
+ ] }),
13382
+ /* @__PURE__ */ jsx(Badge, { variant: comment.isFirm ? "secondary" : "info", size: "sm", children: comment.isFirm ? "Firm" : "Client" }),
13383
+ /* @__PURE__ */ jsx("span", { className: "text-fg-4 ml-auto shrink-0 text-[11.5px]", children: comment.time })
13384
+ ] }),
13385
+ /* @__PURE__ */ jsx("p", { className: "text-fg-2 mt-0.5 text-[13px] leading-snug", children: comment.body })
13386
+ ] })
13387
+ ] });
13388
+ }
13389
+ function FileRowActions({ doc }) {
13390
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
13391
+ doc.onPreview && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Preview", onClick: doc.onPreview, children: /* @__PURE__ */ jsx(EyeIcon, {}) }),
13392
+ doc.onDownload && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Download", onClick: doc.onDownload, children: /* @__PURE__ */ jsx(DownloadIcon, {}) }),
13393
+ doc.onDelete && /* @__PURE__ */ jsx(
13394
+ Button,
13395
+ {
13396
+ variant: "ghost",
13397
+ size: "icon-sm",
13398
+ "aria-label": "Delete",
13399
+ className: "hover:text-danger-fg",
13400
+ onClick: doc.onDelete,
13401
+ children: /* @__PURE__ */ jsx(TrashIcon, {})
13402
+ }
13403
+ )
13404
+ ] });
13405
+ }
12978
13406
  var ActivityList = forwardRef(function ActivityList2({ className, children, ...props }, ref) {
12979
13407
  return /* @__PURE__ */ jsx("ul", { ref, className: cn("flex flex-col", className), ...props, children });
12980
13408
  });
@@ -14611,6 +15039,6 @@ function SignatureEditor({
14611
15039
  }
14612
15040
  SignatureEditor.displayName = "SignatureEditor";
14613
15041
 
14614
- export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestField, DocumentRow, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, attachmentChipVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
15042
+ export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AiDraftCard, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, AreaChart, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, Assignee, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, AtSignIcon, AttachmentChip, AttentionItem, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, BottomNav, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, BulkActionBar, BulkActionBarAction, BulkActionBarSeparator, Button, COUNTRY_CODES, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CategoryDivider, CategoryTag, ChannelTabs, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientRailGroupHeader, ClientRailItem, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content16 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CountryFlag, CountrySelect, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, Dash, DashGrid, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DatePicker, DateRangePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentFileCard, DocumentFileRow, DocumentIcon, DocumentList, DocumentListSection, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRow, DocumentsWorkspaceLayout, DollarSignIcon, DonutChart, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailMessageCard, EmptyState, EngagementCard, EngagementTimeline, EngagementTimelineStep, ExtractIcon, EyeIcon, EyeOffIcon, Eyebrow, FileChip, FileIcon, FileReturnIcon, FileTextIcon, FileTypeBadge, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FolderTree, FolderUpIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, IconTile, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, IntentBadge, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LandmarkIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MasterDetailLayout, MenuIcon, MessageBubble, MessageBubbleAction, MessageBubbleTombstone, MessageCircleIcon, MessageCircleWarningIcon, MessageComposer, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MissingDocumentsPanel, MoneyCell, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NewMenu, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelFooter, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PauseIcon, PdfPreview, PenSignIcon, PenToolIcon, PencilIcon, PhoneCountryInput, PhoneIcon, PhoneInput, PlayIcon, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, RankedBars, ReceiptIcon, ReplyIcon, ResponsiveDialog, RotateCcwIcon, RouteTransition, SERVICE_TONES, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, SegmentedProgress, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectableKpiCard, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, Spinner, SpreadsheetPreview, StackedBarChart, StagePill, StarIcon, StarRating, Stat, StatusDot, StatusIcon, StatusPill, Stepper, StickyActionBar, StopIcon, StrikethroughIcon, SubmitButton, SuggestionPills, SuiteProgress, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TagsCell, TeamIcon, TeamMemberSelect, Textarea, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, YEAR_DISPLAY_PLACEHOLDER, ZoomInIcon, ZoomOutIcon, alertVariants, applyMask, applyYearMask, attachmentChipVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, dateToIso, displayToIso, fileTypeBadgeVariants, fileTypeFromName, filterChipVariants, formatClock, formatCurrency, formatDuration, getFlagEmoji, iconTileVariants, inputVariants, isoToDate, isoToDisplay, isoToYear, labelVariants, parseDuration, parsePhoneForEditing, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, serviceToneLabel, serviceToneStyle, shadows, sidebarLinkBadgeVariants, spacing, spinnerVariants, starRatingVariants, statusDotVariants, suiteProgressFillVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarPeekLock, useSidebarState, useStopwatch, useToast, yearToIso };
14615
15043
  //# sourceMappingURL=index.js.map
14616
15044
  //# sourceMappingURL=index.js.map