@assure-one/design-system 1.15.0 → 1.17.1

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
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React38 from 'react';
3
- import { forwardRef, useId, useRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, createContext, useContext } from 'react';
3
+ import { forwardRef, useId, useRef, useState, useEffect, useCallback, useImperativeHandle, useMemo, createContext, Fragment as Fragment$1, useContext } from 'react';
4
4
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
5
5
  import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
@@ -5832,9 +5832,27 @@ var LoadingRows = forwardRef(function LoadingRows2({
5832
5832
  });
5833
5833
  LoadingRows.displayName = "LoadingRows";
5834
5834
  var sizeStyles = {
5835
- sm: { icon: 20, text: "text-sm", gap: "gap-2" },
5836
- md: { icon: 24, text: "text-[17px]", gap: "gap-2.5" },
5837
- lg: { icon: 32, text: "text-xl", gap: "gap-3" }
5835
+ sm: { icon: 20, text: "text-sm", gap: "gap-2", assetHeight: 24 },
5836
+ md: { icon: 24, text: "text-[17px]", gap: "gap-2.5", assetHeight: 30 },
5837
+ lg: { icon: 32, text: "text-xl", gap: "gap-3", assetHeight: 40 }
5838
+ };
5839
+ var productLogoAssets = {
5840
+ Pro: { src: "/brand/assure-pro.svg", width: 384, height: 90 },
5841
+ Audit: { src: "/brand/assure-audit.svg", width: 441, height: 90 },
5842
+ Books: { src: "/brand/assure-books.svg", width: 470, height: 90 },
5843
+ Tax: { src: "/brand/assure-tax.svg", width: 374, height: 90 }
5844
+ };
5845
+ var productMarkAssets = {
5846
+ Pro: { src: "/brand/assure-pro-mark.svg", width: 55, height: 48 },
5847
+ Audit: { src: "/brand/assure-audit-mark.svg", width: 55, height: 48 },
5848
+ Books: { src: "/brand/assure-books-mark.svg", width: 55, height: 48 },
5849
+ Tax: { src: "/brand/assure-tax-mark.svg", width: 55, height: 48 }
5850
+ };
5851
+ var productGlyphs = {
5852
+ Pro: AssureProBrandIcon,
5853
+ Audit: AssureAuditBrandIcon,
5854
+ Books: AssureBooksBrandIcon,
5855
+ Tax: AssureTaxBrandIcon
5838
5856
  };
5839
5857
  function Logo({
5840
5858
  size = "md",
@@ -5848,6 +5866,9 @@ function Logo({
5848
5866
  }) {
5849
5867
  const s = sizeStyles[size];
5850
5868
  const ariaLabel = productName ? `Assure ${productName}` : "Assure";
5869
+ const asset = productName ? productLogoAssets[productName] : void 0;
5870
+ const markAsset = productName ? productMarkAssets[productName] : void 0;
5871
+ const Glyph = productName ? productGlyphs[productName] : void 0;
5851
5872
  return /* @__PURE__ */ jsxs(
5852
5873
  Link,
5853
5874
  {
@@ -5855,17 +5876,40 @@ function Logo({
5855
5876
  className: cn("inline-flex items-center", s.gap, className),
5856
5877
  "aria-label": ariaLabel,
5857
5878
  children: [
5858
- /* @__PURE__ */ jsx(
5879
+ asset && showText ? /* @__PURE__ */ jsx(
5859
5880
  Image2,
5860
5881
  {
5861
- src: "/brand/mark.svg",
5882
+ src: asset.src,
5862
5883
  alt: "",
5863
- width: s.icon,
5864
- height: s.icon,
5884
+ width: asset.width,
5885
+ height: asset.height,
5865
5886
  priority: true,
5866
- className: cn("flex-shrink-0", iconClassName)
5887
+ className: cn("h-auto flex-shrink-0", inverted && "brightness-0 invert", iconClassName),
5888
+ style: { width: Math.round(asset.width / asset.height * s.assetHeight) }
5867
5889
  }
5868
- ),
5890
+ ) : markAsset ? /* @__PURE__ */ jsx(
5891
+ Image2,
5892
+ {
5893
+ src: markAsset.src,
5894
+ alt: "",
5895
+ width: markAsset.width,
5896
+ height: markAsset.height,
5897
+ priority: true,
5898
+ className: cn("h-auto flex-shrink-0", inverted && "brightness-0 invert", iconClassName),
5899
+ style: { width: Math.round(markAsset.width / markAsset.height * s.icon) }
5900
+ }
5901
+ ) : /* @__PURE__ */ jsx(Fragment, { children: Glyph ? /* @__PURE__ */ jsx(Glyph, { size: s.icon, "aria-hidden": "true", className: iconClassName }) : /* @__PURE__ */ jsx(
5902
+ "span",
5903
+ {
5904
+ "aria-hidden": "true",
5905
+ className: cn(
5906
+ "bg-pro-fg grid shrink-0 place-items-center rounded-[5px] text-[10px] font-bold text-white",
5907
+ iconClassName
5908
+ ),
5909
+ style: { width: s.icon, height: s.icon },
5910
+ children: "A"
5911
+ }
5912
+ ) }),
5869
5913
  showText && /* @__PURE__ */ jsxs(
5870
5914
  "span",
5871
5915
  {
@@ -5873,6 +5917,7 @@ function Logo({
5873
5917
  "font-display font-semibold tracking-[-0.025em]",
5874
5918
  s.text,
5875
5919
  inverted ? "text-white" : "text-fg",
5920
+ asset && "sr-only",
5876
5921
  textClassName
5877
5922
  ),
5878
5923
  children: [
@@ -11060,6 +11105,997 @@ var ProposalPaymentCapture = forwardRef(
11060
11105
  }
11061
11106
  );
11062
11107
  ProposalPaymentCapture.displayName = "ProposalPaymentCapture";
11108
+ var statusLabel = {
11109
+ "not-started": "Not started",
11110
+ "in-progress": "In progress",
11111
+ complete: "Complete",
11112
+ "needs-review": "Review"
11113
+ };
11114
+ var statusClassName = {
11115
+ "not-started": "bg-surface-2 text-fg-3 border-rule",
11116
+ "in-progress": "bg-pro-bg text-pro-fg border-pro-line",
11117
+ complete: "bg-success-bg text-success-fg border-success-line",
11118
+ "needs-review": "bg-warning-bg text-warning-fg border-warning-line"
11119
+ };
11120
+ var statusDotClassName = {
11121
+ "not-started": "bg-rule-strong",
11122
+ "in-progress": "bg-warning-fg",
11123
+ complete: "bg-success-fg",
11124
+ "needs-review": "bg-brand-audit"
11125
+ };
11126
+ var QuestionnairePanel = forwardRef(
11127
+ function QuestionnairePanel2({
11128
+ variant = "cards",
11129
+ eyebrow = "Questionnaire",
11130
+ title = "Tax organizer",
11131
+ description,
11132
+ sections = [],
11133
+ groups,
11134
+ activeId,
11135
+ onSelect,
11136
+ className,
11137
+ ...props
11138
+ }, ref) {
11139
+ const navigationGroups = groups ?? (sections.length > 0 ? [
11140
+ {
11141
+ id: "questionnaire",
11142
+ title: eyebrow,
11143
+ icon: /* @__PURE__ */ jsx(ListChecksIcon, { size: 14, "aria-hidden": "true" }),
11144
+ sections,
11145
+ defaultOpen: true
11146
+ }
11147
+ ] : []);
11148
+ const [openGroups, setOpenGroups] = useState(
11149
+ () => new Set(
11150
+ navigationGroups.filter((group) => group.defaultOpen !== false && group.sections.length > 0).map((group) => group.id)
11151
+ )
11152
+ );
11153
+ const selectedCardRef = useRef(null);
11154
+ useEffect(() => {
11155
+ selectedCardRef.current?.scrollIntoView({
11156
+ behavior: "smooth",
11157
+ block: "center",
11158
+ inline: "center"
11159
+ });
11160
+ }, [activeId]);
11161
+ const toggleGroup = (id) => {
11162
+ setOpenGroups((prev) => {
11163
+ const next = new Set(prev);
11164
+ if (next.has(id)) next.delete(id);
11165
+ else next.add(id);
11166
+ return next;
11167
+ });
11168
+ };
11169
+ if (variant === "navigation") {
11170
+ return /* @__PURE__ */ jsx(
11171
+ "aside",
11172
+ {
11173
+ ref,
11174
+ className: cn(
11175
+ "border-rule bg-surface shadow-card flex h-full min-h-[560px] flex-col overflow-hidden rounded-[14px] border",
11176
+ className
11177
+ ),
11178
+ ...props,
11179
+ children: /* @__PURE__ */ jsx("nav", { className: "overflow-y-auto py-1", "aria-label": title, children: navigationGroups.map((group) => {
11180
+ const isOpen = openGroups.has(group.id);
11181
+ const hasSections = group.sections.length > 0;
11182
+ return /* @__PURE__ */ jsxs("div", { className: "border-rule-soft border-b last:border-b-0", children: [
11183
+ /* @__PURE__ */ jsxs(
11184
+ "button",
11185
+ {
11186
+ type: "button",
11187
+ onClick: () => toggleGroup(group.id),
11188
+ "aria-expanded": isOpen,
11189
+ className: cn(
11190
+ "text-pro-fg flex h-8 w-full items-center gap-2 px-4 text-left text-[11px] font-bold tracking-[0.08em] uppercase",
11191
+ "hover:bg-pro-bg/50 transition-colors duration-[var(--duration-fast)]",
11192
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
11193
+ ),
11194
+ children: [
11195
+ /* @__PURE__ */ jsx("span", { className: "text-pro-fg flex size-4 shrink-0 items-center justify-center", children: group.icon ?? /* @__PURE__ */ jsx(ListChecksIcon, { size: 14, "aria-hidden": "true" }) }),
11196
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: group.title }),
11197
+ hasSections && /* @__PURE__ */ jsx(
11198
+ ChevronDownIcon,
11199
+ {
11200
+ size: 13,
11201
+ "aria-hidden": "true",
11202
+ className: cn(
11203
+ "text-pro-fg transition-transform duration-[var(--duration-fast)]",
11204
+ !isOpen && "-rotate-90"
11205
+ )
11206
+ }
11207
+ )
11208
+ ]
11209
+ }
11210
+ ),
11211
+ isOpen && hasSections && /* @__PURE__ */ jsx("div", { className: "pb-1", children: group.sections.map((section) => {
11212
+ const selected = section.id === activeId;
11213
+ const status = section.status ?? "not-started";
11214
+ return /* @__PURE__ */ jsxs(
11215
+ "button",
11216
+ {
11217
+ type: "button",
11218
+ onClick: () => onSelect?.(section.id),
11219
+ "data-active": selected ? "true" : void 0,
11220
+ className: cn(
11221
+ "group flex h-8 w-full items-center gap-3 px-5 text-left",
11222
+ "text-fg-2 transition-colors duration-[var(--duration-fast)]",
11223
+ "hover:bg-bg-2 hover:text-fg",
11224
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
11225
+ selected && "bg-pro-bg text-pro-fg font-semibold"
11226
+ ),
11227
+ children: [
11228
+ /* @__PURE__ */ jsx(
11229
+ "span",
11230
+ {
11231
+ className: cn(
11232
+ "text-fg-3 flex size-4 shrink-0 items-center justify-center",
11233
+ selected && "text-pro-fg"
11234
+ ),
11235
+ children: section.icon
11236
+ }
11237
+ ),
11238
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-[13px]", children: section.title }),
11239
+ /* @__PURE__ */ jsx(
11240
+ "span",
11241
+ {
11242
+ "aria-label": statusLabel[status],
11243
+ className: cn(
11244
+ "size-1.5 shrink-0 rounded-full",
11245
+ statusDotClassName[status]
11246
+ )
11247
+ }
11248
+ )
11249
+ ]
11250
+ },
11251
+ section.id
11252
+ );
11253
+ }) })
11254
+ ] }, group.id);
11255
+ }) })
11256
+ }
11257
+ );
11258
+ }
11259
+ const totalQuestions = sections.reduce((sum, section) => sum + (section.questionCount ?? 0), 0);
11260
+ const completedQuestions = sections.reduce(
11261
+ (sum, section) => sum + (section.completedCount ?? 0),
11262
+ 0
11263
+ );
11264
+ const percent = totalQuestions > 0 ? Math.round(completedQuestions / totalQuestions * 100) : 0;
11265
+ return /* @__PURE__ */ jsxs(
11266
+ "aside",
11267
+ {
11268
+ ref,
11269
+ className: cn(
11270
+ "border-rule bg-surface shadow-card flex h-auto min-h-0 flex-col rounded-[20px] border p-4",
11271
+ "lg:sticky lg:top-6 lg:h-[calc(100vh-48px)] lg:max-h-[760px] lg:min-h-[560px]",
11272
+ className
11273
+ ),
11274
+ ...props,
11275
+ children: [
11276
+ /* @__PURE__ */ jsxs("div", { className: "px-1 pb-4", children: [
11277
+ /* @__PURE__ */ jsx("p", { className: "text-pro-fg text-[11px] font-bold tracking-[0.12em] uppercase", children: eyebrow }),
11278
+ /* @__PURE__ */ jsx("h2", { className: "text-fg mt-1 text-[21px] leading-7 font-bold", children: title }),
11279
+ description && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-2 text-[13px] leading-5", children: description }),
11280
+ totalQuestions > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
11281
+ /* @__PURE__ */ jsxs("div", { className: "mb-2 flex items-center justify-between gap-3", children: [
11282
+ /* @__PURE__ */ jsx("span", { className: "text-fg-3 text-[12px] font-semibold", children: "Progress" }),
11283
+ /* @__PURE__ */ jsxs("span", { className: "text-fg text-[12px] font-bold tabular-nums", children: [
11284
+ percent,
11285
+ "%"
11286
+ ] })
11287
+ ] }),
11288
+ /* @__PURE__ */ jsx("div", { className: "bg-surface-3 h-2 overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(
11289
+ "div",
11290
+ {
11291
+ className: "bg-pro-fg h-full rounded-full transition-[width] duration-[var(--duration-normal)] ease-[var(--ease-out-quart)]",
11292
+ style: { width: `${percent}%` }
11293
+ }
11294
+ ) })
11295
+ ] })
11296
+ ] }),
11297
+ /* @__PURE__ */ jsxs("div", { className: "relative min-h-0 flex-1", children: [
11298
+ /* @__PURE__ */ jsx("div", { className: "from-surface pointer-events-none absolute inset-y-0 left-0 z-10 w-6 bg-gradient-to-r to-transparent lg:hidden" }),
11299
+ /* @__PURE__ */ jsx("div", { className: "from-surface pointer-events-none absolute inset-y-0 right-0 z-10 w-6 bg-gradient-to-l to-transparent lg:hidden" }),
11300
+ /* @__PURE__ */ jsx("div", { className: "from-surface pointer-events-none absolute inset-x-0 top-0 z-10 hidden h-1 bg-gradient-to-b to-transparent lg:block" }),
11301
+ /* @__PURE__ */ jsx("div", { className: "from-surface pointer-events-none absolute inset-x-0 bottom-0 z-10 hidden h-5 bg-gradient-to-t to-transparent lg:block" }),
11302
+ /* @__PURE__ */ jsx(
11303
+ "div",
11304
+ {
11305
+ className: cn(
11306
+ "flex snap-x snap-mandatory gap-3 overflow-x-auto overflow-y-hidden overscroll-x-contain scroll-smooth px-1 pt-2 pb-2",
11307
+ "[scroll-padding-inline:2rem] lg:[scroll-padding-inline:0] lg:[scroll-padding-block:5rem]",
11308
+ "motion-reduce:scroll-auto",
11309
+ "[scrollbar-color:var(--color-pro-fg)_transparent] [scrollbar-width:thin]",
11310
+ "[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2",
11311
+ "[&::-webkit-scrollbar-track]:bg-transparent",
11312
+ "[&::-webkit-scrollbar-thumb]:bg-pro-fg/35 [&::-webkit-scrollbar-thumb]:rounded-full",
11313
+ "hover:[&::-webkit-scrollbar-thumb]:bg-pro-fg/55",
11314
+ "lg:grid lg:max-h-full lg:snap-none lg:gap-2 lg:overflow-x-hidden lg:overflow-y-auto lg:pr-1"
11315
+ ),
11316
+ children: sections.map((section, index) => {
11317
+ const selected = section.id === activeId;
11318
+ const status = section.status ?? "not-started";
11319
+ const itemPercent = section.questionCount && section.questionCount > 0 ? Math.round((section.completedCount ?? 0) / section.questionCount * 100) : 0;
11320
+ return /* @__PURE__ */ jsxs(
11321
+ "button",
11322
+ {
11323
+ ref: selected ? selectedCardRef : void 0,
11324
+ type: "button",
11325
+ onClick: () => onSelect?.(section.id),
11326
+ "data-active": selected ? "true" : void 0,
11327
+ className: cn(
11328
+ "group border-rule bg-surface flex w-full snap-center gap-3 overflow-hidden rounded-[16px] border p-3 text-left will-change-transform",
11329
+ selected ? "max-w-[300px] min-w-[280px] items-start sm:min-w-[300px] lg:max-w-none lg:min-w-0" : "max-w-[240px] min-w-[220px] items-center sm:min-w-[240px] lg:max-w-none lg:min-w-0",
11330
+ "transition-[background-color,border-color,box-shadow,transform,min-width,max-width] duration-[var(--duration-normal)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
11331
+ "hover:border-pro-line hover:bg-pro-bg/40 hover:-translate-y-0.5 lg:hover:translate-x-0.5 lg:hover:translate-y-0",
11332
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
11333
+ selected && "border-pro-line bg-pro-bg shadow-card relative z-10 scale-[1.02]"
11334
+ ),
11335
+ children: [
11336
+ /* @__PURE__ */ jsx(
11337
+ "span",
11338
+ {
11339
+ className: cn(
11340
+ "mt-0.5 grid size-8 shrink-0 place-items-center rounded-full text-[12px] font-bold",
11341
+ status === "complete" ? "bg-success-bg text-success-fg" : selected ? "bg-pro-fg text-fg-on-pro" : "bg-surface-2 text-fg-3",
11342
+ !selected && "mt-0"
11343
+ ),
11344
+ "aria-hidden": "true",
11345
+ children: status === "complete" ? /* @__PURE__ */ jsx(CheckCircleSolidIcon, { size: 18 }) : index + 1
11346
+ }
11347
+ ),
11348
+ /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
11349
+ /* @__PURE__ */ jsxs("span", { className: "flex items-start justify-between gap-3", children: [
11350
+ /* @__PURE__ */ jsx("span", { className: "text-fg line-clamp-1 text-[14px] leading-5 font-bold", children: section.title }),
11351
+ !selected ? section.questionCount != null && /* @__PURE__ */ jsxs("span", { className: "text-fg-4 shrink-0 text-[12px] font-bold tabular-nums", children: [
11352
+ section.completedCount ?? 0,
11353
+ "/",
11354
+ section.questionCount
11355
+ ] }) : /* @__PURE__ */ jsx(
11356
+ "span",
11357
+ {
11358
+ className: cn(
11359
+ "shrink-0 rounded-full border px-2 py-0.5 text-[10.5px] font-bold",
11360
+ statusClassName[status]
11361
+ ),
11362
+ children: statusLabel[status]
11363
+ }
11364
+ )
11365
+ ] }),
11366
+ /* @__PURE__ */ jsx(
11367
+ "span",
11368
+ {
11369
+ className: cn(
11370
+ "grid transition-[grid-template-rows,opacity,transform,margin-top] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
11371
+ selected ? "mt-1 translate-y-0 grid-rows-[1fr] opacity-100" : "mt-0 -translate-y-1 grid-rows-[0fr] opacity-0"
11372
+ ),
11373
+ children: /* @__PURE__ */ jsxs("span", { className: "overflow-hidden", children: [
11374
+ section.description && /* @__PURE__ */ jsx("span", { className: "text-fg-3 mt-1 line-clamp-2 text-[12px] leading-5", children: section.description }),
11375
+ /* @__PURE__ */ jsxs("span", { className: "mt-3 flex items-center gap-2", children: [
11376
+ section.meta && /* @__PURE__ */ jsx("span", { className: "text-fg-4 line-clamp-1 text-[11.5px] font-semibold", children: section.meta }),
11377
+ section.questionCount != null && /* @__PURE__ */ jsxs("span", { className: "text-fg-4 ml-auto shrink-0 text-[11.5px] font-semibold tabular-nums", children: [
11378
+ section.completedCount ?? 0,
11379
+ "/",
11380
+ section.questionCount
11381
+ ] })
11382
+ ] }),
11383
+ section.questionCount != null && /* @__PURE__ */ jsx("span", { className: "bg-surface-3 mt-2 block h-1.5 overflow-hidden rounded-full", children: /* @__PURE__ */ jsx(
11384
+ "span",
11385
+ {
11386
+ className: cn(
11387
+ "block h-full rounded-full transition-[width] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
11388
+ status === "complete" ? "bg-success-fg" : "bg-pro-fg"
11389
+ ),
11390
+ style: { width: `${itemPercent}%` }
11391
+ }
11392
+ ) })
11393
+ ] })
11394
+ }
11395
+ )
11396
+ ] })
11397
+ ]
11398
+ },
11399
+ section.id
11400
+ );
11401
+ })
11402
+ }
11403
+ )
11404
+ ] }),
11405
+ /* @__PURE__ */ jsx("div", { className: "border-rule mt-auto hidden border-t px-1 pt-3 lg:block", children: /* @__PURE__ */ jsxs("div", { className: "text-fg-3 flex items-center gap-2 text-[12px] leading-5", children: [
11406
+ /* @__PURE__ */ jsx(HelpCircleIcon, { size: 15, className: "text-pro-fg", "aria-hidden": "true" }),
11407
+ "Pick a section to load its related questions on the right."
11408
+ ] }) })
11409
+ ]
11410
+ }
11411
+ );
11412
+ }
11413
+ );
11414
+ QuestionnairePanel.displayName = "QuestionnairePanel";
11415
+ var defaultOptions = [
11416
+ { value: "yes", label: "Yes" },
11417
+ { value: "no", label: "No" },
11418
+ { value: "not-sure", label: "Not sure" }
11419
+ ];
11420
+ var Questions = forwardRef(function Questions2({
11421
+ index,
11422
+ title,
11423
+ description,
11424
+ type = "short-text",
11425
+ required = false,
11426
+ chrome = "card",
11427
+ sectionLabel,
11428
+ hideHeader = false,
11429
+ options = defaultOptions,
11430
+ value = "",
11431
+ values = [],
11432
+ placeholder,
11433
+ help,
11434
+ addressValue = {},
11435
+ nameValue = {},
11436
+ showSuffix = true,
11437
+ tableColumns = [],
11438
+ tableRows = [],
11439
+ labeledColumns = [],
11440
+ labeledRows = [],
11441
+ labeledValue = {},
11442
+ files = [],
11443
+ accept,
11444
+ maxSize,
11445
+ multiple,
11446
+ currencySymbol = "$",
11447
+ min = 0,
11448
+ max,
11449
+ step = 1,
11450
+ countLabel,
11451
+ onValueChange,
11452
+ onValuesChange,
11453
+ onAddressChange,
11454
+ onNameChange,
11455
+ onLabeledChange,
11456
+ onTableRowsChange,
11457
+ onFilesSelected,
11458
+ className,
11459
+ ...props
11460
+ }, ref) {
11461
+ const humanIndex = typeof index === "number" ? index + 1 : void 0;
11462
+ const isSectionHeader = type === "section-header";
11463
+ const isPlain = chrome === "plain" || isSectionHeader;
11464
+ const showHeader = isSectionHeader || !hideHeader;
11465
+ const toggleOption = (optionValue, checked) => {
11466
+ const nextValues = checked ? Array.from(/* @__PURE__ */ new Set([...values, optionValue])) : values.filter((item) => item !== optionValue);
11467
+ onValuesChange?.(nextValues);
11468
+ };
11469
+ const updateAddress = (key, nextValue) => {
11470
+ onAddressChange?.({ ...addressValue, [key]: nextValue });
11471
+ };
11472
+ const updateName = (key, nextValue) => {
11473
+ onNameChange?.({ ...nameValue, [key]: nextValue });
11474
+ };
11475
+ const updateCell = (rowKey, colKey, nextValue) => {
11476
+ onLabeledChange?.({
11477
+ ...labeledValue,
11478
+ [rowKey]: { ...labeledValue[rowKey] ?? {}, [colKey]: nextValue }
11479
+ });
11480
+ };
11481
+ const updateRow = (rowIndex, key, nextValue) => {
11482
+ onTableRowsChange?.(
11483
+ tableRows.map((row, index2) => index2 === rowIndex ? { ...row, [key]: nextValue } : row)
11484
+ );
11485
+ };
11486
+ const emptyRow = () => tableColumns.reduce((row, column) => ({ ...row, [column.key]: "" }), {});
11487
+ const addRow = () => {
11488
+ onTableRowsChange?.([...tableRows, emptyRow()]);
11489
+ };
11490
+ const removeRow = (rowIndex) => {
11491
+ onTableRowsChange?.(tableRows.filter((_, index2) => index2 !== rowIndex));
11492
+ };
11493
+ const setRowCount = (nextCount) => {
11494
+ const clamped = Math.max(min, max != null ? Math.min(nextCount, max) : nextCount);
11495
+ if (clamped > tableRows.length) {
11496
+ const added = Array.from({ length: clamped - tableRows.length }, emptyRow);
11497
+ onTableRowsChange?.([...tableRows, ...added]);
11498
+ } else if (clamped < tableRows.length) {
11499
+ onTableRowsChange?.(tableRows.slice(0, clamped));
11500
+ }
11501
+ };
11502
+ return /* @__PURE__ */ jsxs(
11503
+ "section",
11504
+ {
11505
+ ref,
11506
+ className: cn(
11507
+ "font-body",
11508
+ isPlain ? "bg-transparent" : "border-rule bg-surface shadow-card rounded-[18px] border p-5",
11509
+ className
11510
+ ),
11511
+ ...props,
11512
+ children: [
11513
+ showHeader && /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", !isSectionHeader && "mb-4"), children: [
11514
+ humanIndex && !isPlain && /* @__PURE__ */ jsx(
11515
+ "span",
11516
+ {
11517
+ "aria-hidden": "true",
11518
+ className: "bg-pro-bg text-pro-fg grid size-7 shrink-0 place-items-center rounded-full text-xs font-bold",
11519
+ children: humanIndex
11520
+ }
11521
+ ),
11522
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
11523
+ (sectionLabel || isSectionHeader) && /* @__PURE__ */ jsx("p", { className: "text-pro-fg mb-1 text-[11px] font-bold tracking-[0.12em] uppercase", children: sectionLabel }),
11524
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
11525
+ /* @__PURE__ */ jsx(
11526
+ "h3",
11527
+ {
11528
+ className: cn(
11529
+ "text-fg",
11530
+ isSectionHeader ? "text-[22px] leading-7 font-bold" : "text-[14px] leading-5 font-bold"
11531
+ ),
11532
+ children: title
11533
+ }
11534
+ ),
11535
+ help && /* @__PURE__ */ jsx(HelpTip, { title: help.title ?? title, body: help.body }),
11536
+ required && /* @__PURE__ */ jsx("span", { className: "bg-pro-bg text-pro-fg rounded-full px-2 py-0.5 text-[11px] font-bold", children: "Required" })
11537
+ ] }),
11538
+ description && type !== "consent-checkbox" && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-1 text-[13px] leading-5", children: description })
11539
+ ] })
11540
+ ] }),
11541
+ type === "section-header" && null,
11542
+ type === "short-text" && /* @__PURE__ */ jsx(
11543
+ Input,
11544
+ {
11545
+ value,
11546
+ onChange: (event) => onValueChange?.(event.target.value),
11547
+ placeholder: placeholder ?? "Type your answer",
11548
+ "aria-label": title,
11549
+ className: "h-11 rounded-[12px] text-[14px]"
11550
+ }
11551
+ ),
11552
+ type === "email" && /* @__PURE__ */ jsx(
11553
+ Input,
11554
+ {
11555
+ type: "email",
11556
+ value,
11557
+ onChange: (event) => onValueChange?.(event.target.value),
11558
+ placeholder: placeholder ?? "client@example.com",
11559
+ "aria-label": title,
11560
+ className: "h-11 rounded-[12px] text-[14px]"
11561
+ }
11562
+ ),
11563
+ type === "phone" && /* @__PURE__ */ jsx(
11564
+ Input,
11565
+ {
11566
+ type: "tel",
11567
+ value,
11568
+ onChange: (event) => onValueChange?.(event.target.value),
11569
+ placeholder: placeholder ?? "(555) 123-4567",
11570
+ "aria-label": title,
11571
+ className: "h-11 rounded-[12px] text-[14px]"
11572
+ }
11573
+ ),
11574
+ type === "ssn-sin" && /* @__PURE__ */ jsx(
11575
+ Input,
11576
+ {
11577
+ value,
11578
+ onChange: (event) => onValueChange?.(event.target.value),
11579
+ placeholder: placeholder ?? "Enter SSN or SIN",
11580
+ "aria-label": title,
11581
+ inputMode: "numeric",
11582
+ className: "h-11 rounded-[12px] text-[14px]"
11583
+ }
11584
+ ),
11585
+ type === "date" && /* @__PURE__ */ jsx(
11586
+ Input,
11587
+ {
11588
+ type: "date",
11589
+ value,
11590
+ onChange: (event) => onValueChange?.(event.target.value),
11591
+ "aria-label": title,
11592
+ className: "h-11 rounded-[12px] text-[14px]"
11593
+ }
11594
+ ),
11595
+ type === "number" && /* @__PURE__ */ jsx(
11596
+ Input,
11597
+ {
11598
+ type: "number",
11599
+ value,
11600
+ onChange: (event) => onValueChange?.(event.target.value),
11601
+ placeholder: placeholder ?? "0",
11602
+ "aria-label": title,
11603
+ className: "h-11 rounded-[12px] text-[14px]"
11604
+ }
11605
+ ),
11606
+ type === "number-stepper" && /* @__PURE__ */ jsx(
11607
+ NumberStepper,
11608
+ {
11609
+ value: Number(value) || 0,
11610
+ onValueChange: (next) => onValueChange?.(String(next)),
11611
+ min,
11612
+ max,
11613
+ step,
11614
+ ariaLabel: title
11615
+ }
11616
+ ),
11617
+ type === "currency" && /* @__PURE__ */ jsx(
11618
+ Input,
11619
+ {
11620
+ value,
11621
+ onChange: (event) => onValueChange?.(event.target.value),
11622
+ placeholder: placeholder ?? "0.00",
11623
+ "aria-label": title,
11624
+ inputMode: "decimal",
11625
+ prefixIcon: /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold", children: currencySymbol }),
11626
+ className: "h-11 rounded-[12px] text-[14px]"
11627
+ }
11628
+ ),
11629
+ type === "percentage" && /* @__PURE__ */ jsx(
11630
+ Input,
11631
+ {
11632
+ value,
11633
+ onChange: (event) => onValueChange?.(event.target.value),
11634
+ placeholder: placeholder ?? "0",
11635
+ "aria-label": title,
11636
+ inputMode: "decimal",
11637
+ suffixIcon: /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold", children: "%" }),
11638
+ className: "h-11 rounded-[12px] text-[14px]"
11639
+ }
11640
+ ),
11641
+ type === "long-text" && /* @__PURE__ */ jsx(
11642
+ Textarea,
11643
+ {
11644
+ value,
11645
+ onChange: (event) => onValueChange?.(event.target.value),
11646
+ placeholder: placeholder ?? "Write a detailed answer",
11647
+ "aria-label": title,
11648
+ autoResize: true,
11649
+ className: "rounded-[12px] text-[14px]"
11650
+ }
11651
+ ),
11652
+ (type === "single-choice" || type === "yes-no") && /* @__PURE__ */ jsx(
11653
+ "div",
11654
+ {
11655
+ className: cn(
11656
+ "grid gap-3",
11657
+ type === "yes-no" ? "grid-cols-[repeat(auto-fit,minmax(78px,max-content))]" : ""
11658
+ ),
11659
+ role: "radiogroup",
11660
+ "aria-label": title,
11661
+ children: (type === "yes-no" ? [
11662
+ { value: "yes", label: "Yes" },
11663
+ { value: "no", label: "No" }
11664
+ ] : options).map((option) => /* @__PURE__ */ jsx(
11665
+ QuestionOptionButton,
11666
+ {
11667
+ option,
11668
+ selected: value === option.value,
11669
+ compact: type === "yes-no",
11670
+ role: "radio",
11671
+ "aria-checked": value === option.value,
11672
+ onClick: () => onValueChange?.(option.value)
11673
+ },
11674
+ option.value
11675
+ ))
11676
+ }
11677
+ ),
11678
+ type === "dropdown" && /* @__PURE__ */ jsx(
11679
+ Select,
11680
+ {
11681
+ options,
11682
+ value,
11683
+ onValueChange,
11684
+ placeholder: placeholder ?? "Select an option",
11685
+ "aria-label": title
11686
+ }
11687
+ ),
11688
+ (type === "multi-choice" || type === "multi-select") && /* @__PURE__ */ jsx("div", { className: "grid gap-3", role: "group", "aria-label": title, children: options.map((option) => /* @__PURE__ */ jsx(
11689
+ QuestionOptionButton,
11690
+ {
11691
+ option,
11692
+ selected: values.includes(option.value),
11693
+ role: "checkbox",
11694
+ "aria-checked": values.includes(option.value),
11695
+ onClick: () => toggleOption(option.value, !values.includes(option.value))
11696
+ },
11697
+ option.value
11698
+ )) }),
11699
+ type === "address" && /* @__PURE__ */ jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [
11700
+ /* @__PURE__ */ jsx(
11701
+ Input,
11702
+ {
11703
+ value: addressValue.line1 ?? "",
11704
+ onChange: (event) => updateAddress("line1", event.target.value),
11705
+ placeholder: "Street address",
11706
+ "aria-label": `${title} street address`,
11707
+ className: "h-11 rounded-[12px] text-[14px] sm:col-span-2"
11708
+ }
11709
+ ),
11710
+ /* @__PURE__ */ jsx(
11711
+ Input,
11712
+ {
11713
+ value: addressValue.line2 ?? "",
11714
+ onChange: (event) => updateAddress("line2", event.target.value),
11715
+ placeholder: "Apt, suite, unit",
11716
+ "aria-label": `${title} address line 2`,
11717
+ className: "h-11 rounded-[12px] text-[14px] sm:col-span-2"
11718
+ }
11719
+ ),
11720
+ /* @__PURE__ */ jsx(
11721
+ Input,
11722
+ {
11723
+ value: addressValue.city ?? "",
11724
+ onChange: (event) => updateAddress("city", event.target.value),
11725
+ placeholder: "City",
11726
+ "aria-label": `${title} city`,
11727
+ className: "h-11 rounded-[12px] text-[14px]"
11728
+ }
11729
+ ),
11730
+ /* @__PURE__ */ jsx(
11731
+ Input,
11732
+ {
11733
+ value: addressValue.region ?? "",
11734
+ onChange: (event) => updateAddress("region", event.target.value),
11735
+ placeholder: "State / Province",
11736
+ "aria-label": `${title} state or province`,
11737
+ className: "h-11 rounded-[12px] text-[14px]"
11738
+ }
11739
+ ),
11740
+ /* @__PURE__ */ jsx(
11741
+ Input,
11742
+ {
11743
+ value: addressValue.postalCode ?? "",
11744
+ onChange: (event) => updateAddress("postalCode", event.target.value),
11745
+ placeholder: "ZIP / Postal code",
11746
+ "aria-label": `${title} zip or postal code`,
11747
+ className: "h-11 rounded-[12px] text-[14px]"
11748
+ }
11749
+ ),
11750
+ /* @__PURE__ */ jsx(
11751
+ Input,
11752
+ {
11753
+ value: addressValue.country ?? "",
11754
+ onChange: (event) => updateAddress("country", event.target.value),
11755
+ placeholder: "Country",
11756
+ "aria-label": `${title} country`,
11757
+ className: "h-11 rounded-[12px] text-[14px]"
11758
+ }
11759
+ )
11760
+ ] }),
11761
+ type === "name" && /* @__PURE__ */ jsxs("div", { className: "grid gap-3 sm:grid-cols-6", children: [
11762
+ /* @__PURE__ */ jsx(
11763
+ Input,
11764
+ {
11765
+ value: nameValue.first ?? "",
11766
+ onChange: (event) => updateName("first", event.target.value),
11767
+ placeholder: "First name",
11768
+ "aria-label": `${title} first name`,
11769
+ className: "h-11 rounded-[12px] text-[14px] sm:col-span-2"
11770
+ }
11771
+ ),
11772
+ /* @__PURE__ */ jsx(
11773
+ Input,
11774
+ {
11775
+ value: nameValue.middle ?? "",
11776
+ onChange: (event) => updateName("middle", event.target.value),
11777
+ placeholder: "Middle",
11778
+ "aria-label": `${title} middle name`,
11779
+ className: "h-11 rounded-[12px] text-[14px] sm:col-span-1"
11780
+ }
11781
+ ),
11782
+ /* @__PURE__ */ jsx(
11783
+ Input,
11784
+ {
11785
+ value: nameValue.last ?? "",
11786
+ onChange: (event) => updateName("last", event.target.value),
11787
+ placeholder: "Last name",
11788
+ "aria-label": `${title} last name`,
11789
+ className: cn(
11790
+ "h-11 rounded-[12px] text-[14px]",
11791
+ showSuffix ? "sm:col-span-2" : "sm:col-span-3"
11792
+ )
11793
+ }
11794
+ ),
11795
+ showSuffix && /* @__PURE__ */ jsx(
11796
+ Input,
11797
+ {
11798
+ value: nameValue.suffix ?? "",
11799
+ onChange: (event) => updateName("suffix", event.target.value),
11800
+ placeholder: "Suffix",
11801
+ "aria-label": `${title} suffix`,
11802
+ className: "h-11 rounded-[12px] text-[14px] sm:col-span-1"
11803
+ }
11804
+ )
11805
+ ] }),
11806
+ type === "labeled-table" && /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs(
11807
+ "div",
11808
+ {
11809
+ role: "table",
11810
+ "aria-label": title,
11811
+ className: "grid min-w-[560px] gap-2",
11812
+ style: {
11813
+ gridTemplateColumns: `minmax(120px,max-content) ${labeledColumns.map((column) => `minmax(0, ${column.width ?? 1}fr)`).join(" ")}`
11814
+ },
11815
+ children: [
11816
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true" }),
11817
+ labeledColumns.map((column) => /* @__PURE__ */ jsx(
11818
+ "span",
11819
+ {
11820
+ className: "text-fg-3 flex items-end px-1 text-[12px] font-semibold",
11821
+ children: column.title
11822
+ },
11823
+ column.key
11824
+ )),
11825
+ labeledRows.map((row) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
11826
+ /* @__PURE__ */ jsx("span", { className: "text-fg flex items-center text-[13px] font-semibold", children: row.title }),
11827
+ labeledColumns.map((column) => /* @__PURE__ */ jsx(
11828
+ Input,
11829
+ {
11830
+ type: column.inputType === "date" ? "date" : "text",
11831
+ value: labeledValue[row.key]?.[column.key] ?? "",
11832
+ onChange: (event) => updateCell(row.key, column.key, event.target.value),
11833
+ "aria-label": `${title} ${row.title} ${column.title}`,
11834
+ className: "h-11 rounded-[12px] text-[14px]",
11835
+ inputMode: column.inputType === "number" || column.inputType === "currency" ? "decimal" : void 0,
11836
+ prefixIcon: column.inputType === "currency" ? /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold", children: currencySymbol }) : void 0
11837
+ },
11838
+ column.key
11839
+ ))
11840
+ ] }, row.key))
11841
+ ]
11842
+ }
11843
+ ) }),
11844
+ type === "file-upload" && /* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
11845
+ /* @__PURE__ */ jsx(
11846
+ FileUpload,
11847
+ {
11848
+ accept,
11849
+ maxSize,
11850
+ multiple,
11851
+ onFilesSelected
11852
+ }
11853
+ ),
11854
+ files.length > 0 && /* @__PURE__ */ jsx("div", { className: "grid gap-2", children: files.map((file) => /* @__PURE__ */ jsx(
11855
+ FileChip,
11856
+ {
11857
+ name: file.name,
11858
+ meta: file.size ? formatBytes2(file.size) : void 0,
11859
+ kind: file.kind ?? "doc"
11860
+ },
11861
+ `${file.name}-${file.size ?? "unknown"}`
11862
+ )) })
11863
+ ] }),
11864
+ (type === "table" || type === "repeater") && /* @__PURE__ */ jsxs("div", { className: "grid gap-3", children: [
11865
+ countLabel && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
11866
+ /* @__PURE__ */ jsx("span", { className: "text-fg text-[13px] font-semibold", children: countLabel }),
11867
+ /* @__PURE__ */ jsx(
11868
+ NumberStepper,
11869
+ {
11870
+ value: tableRows.length,
11871
+ onValueChange: setRowCount,
11872
+ min,
11873
+ max,
11874
+ step,
11875
+ ariaLabel: countLabel
11876
+ }
11877
+ )
11878
+ ] }),
11879
+ tableRows.map((row, rowIndex) => /* @__PURE__ */ jsxs("div", { className: "border-rule bg-surface-2 rounded-[16px] border p-4", children: [
11880
+ /* @__PURE__ */ jsxs("div", { className: "mb-3 flex items-center justify-between gap-3", children: [
11881
+ /* @__PURE__ */ jsxs("span", { className: "text-fg text-[13px] font-semibold", children: [
11882
+ type === "repeater" ? "Item" : "Row",
11883
+ " ",
11884
+ rowIndex + 1
11885
+ ] }),
11886
+ !countLabel && tableRows.length > 1 && /* @__PURE__ */ jsx(
11887
+ Button,
11888
+ {
11889
+ type: "button",
11890
+ variant: "ghost",
11891
+ size: "icon-sm",
11892
+ onClick: () => removeRow(rowIndex),
11893
+ "aria-label": `Remove row ${rowIndex + 1}`,
11894
+ children: /* @__PURE__ */ jsx(TrashIcon, { size: 14, "aria-hidden": "true" })
11895
+ }
11896
+ )
11897
+ ] }),
11898
+ /* @__PURE__ */ jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: tableColumns.map((column) => /* @__PURE__ */ jsx(
11899
+ Input,
11900
+ {
11901
+ type: column.inputType === "date" ? "date" : "text",
11902
+ value: row[column.key] ?? "",
11903
+ onChange: (event) => updateRow(rowIndex, column.key, event.target.value),
11904
+ placeholder: column.placeholder ?? column.label,
11905
+ "aria-label": `${title} ${column.label} row ${rowIndex + 1}`,
11906
+ className: "h-11 rounded-[12px] text-[14px]",
11907
+ inputMode: column.inputType === "number" || column.inputType === "currency" ? "decimal" : void 0,
11908
+ prefixIcon: column.inputType === "currency" ? /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold", children: currencySymbol }) : void 0
11909
+ },
11910
+ column.key
11911
+ )) })
11912
+ ] }, rowIndex)),
11913
+ !countLabel && /* @__PURE__ */ jsxs(
11914
+ Button,
11915
+ {
11916
+ type: "button",
11917
+ variant: "dashed",
11918
+ size: "sm",
11919
+ onClick: addRow,
11920
+ iconLeft: /* @__PURE__ */ jsx(PlusIcon, { size: 14 }),
11921
+ children: [
11922
+ "Add ",
11923
+ type === "repeater" ? "item" : "row"
11924
+ ]
11925
+ }
11926
+ )
11927
+ ] }),
11928
+ type === "signature" && /* @__PURE__ */ jsxs("div", { className: "border-rule-strong bg-surface-2 rounded-[16px] border border-dashed p-5", children: [
11929
+ /* @__PURE__ */ jsxs("div", { className: "text-fg-2 mb-3 flex items-center gap-2", children: [
11930
+ /* @__PURE__ */ jsx(PenSignIcon, { size: 18, "aria-hidden": "true" }),
11931
+ /* @__PURE__ */ jsx("span", { className: "text-[13px] font-semibold", children: "Signature" })
11932
+ ] }),
11933
+ /* @__PURE__ */ jsx(
11934
+ Input,
11935
+ {
11936
+ value,
11937
+ onChange: (event) => onValueChange?.(event.target.value),
11938
+ placeholder: placeholder ?? "Type full legal name",
11939
+ "aria-label": title,
11940
+ className: "h-11 rounded-[12px] text-[14px]"
11941
+ }
11942
+ )
11943
+ ] }),
11944
+ type === "consent-checkbox" && /* @__PURE__ */ jsx(
11945
+ Checkbox,
11946
+ {
11947
+ label: description ?? title,
11948
+ checked: value === "true",
11949
+ onCheckedChange: (checked) => onValueChange?.(checked === true ? "true" : "false")
11950
+ }
11951
+ )
11952
+ ]
11953
+ }
11954
+ );
11955
+ });
11956
+ Questions.displayName = "Questions";
11957
+ function QuestionOptionButton({
11958
+ option,
11959
+ selected,
11960
+ compact,
11961
+ className,
11962
+ ...props
11963
+ }) {
11964
+ return /* @__PURE__ */ jsxs(
11965
+ "button",
11966
+ {
11967
+ type: "button",
11968
+ disabled: option.disabled,
11969
+ className: cn(
11970
+ "group bg-surface flex w-full items-center gap-3 border text-left",
11971
+ "transition-[border-color,background-color,color,box-shadow,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
11972
+ "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
11973
+ "disabled:bg-bg-disabled disabled:text-fg-disabled disabled:cursor-not-allowed",
11974
+ compact ? "h-10 max-w-max rounded-[10px] px-3" : "min-h-16 rounded-[12px] px-7 py-4",
11975
+ selected ? compact ? "border-pro-fg bg-pro-bg text-pro-fg shadow-xs" : "border-pro-line bg-pro-bg text-pro-fg hover:bg-pro-bg-hover shadow-xs" : "border-rule-strong text-fg hover:border-pro-line hover:bg-pro-bg/40",
11976
+ className
11977
+ ),
11978
+ ...props,
11979
+ children: [
11980
+ /* @__PURE__ */ jsx(
11981
+ "span",
11982
+ {
11983
+ "aria-hidden": "true",
11984
+ className: cn(
11985
+ "grid shrink-0 place-items-center rounded-full border transition-colors duration-[var(--duration-fast)]",
11986
+ compact ? "size-5" : "size-4",
11987
+ selected ? "border-pro-fg bg-pro-fg text-fg-on-pro" : "border-rule-strong bg-surface group-hover:border-pro-line text-transparent"
11988
+ ),
11989
+ children: selected && /* @__PURE__ */ jsx(CheckCircleSolidIcon, { size: compact ? 18 : 14 })
11990
+ }
11991
+ ),
11992
+ /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 items-center gap-1.5", children: [
11993
+ /* @__PURE__ */ jsx("span", { className: cn("truncate font-bold", compact ? "text-[13px]" : "text-[15px]"), children: option.label }),
11994
+ option.helpText && /* @__PURE__ */ jsx(HelpTip, { title: option.label, body: option.helpText })
11995
+ ] }),
11996
+ option.formLabel && !compact && /* @__PURE__ */ jsx(
11997
+ "span",
11998
+ {
11999
+ className: cn(
12000
+ "ml-auto shrink-0 text-right text-[13px] font-semibold",
12001
+ selected ? "text-pro-fg" : "text-fg-3"
12002
+ ),
12003
+ children: option.formLabel
12004
+ }
12005
+ )
12006
+ ]
12007
+ }
12008
+ );
12009
+ }
12010
+ function formatBytes2(bytes) {
12011
+ if (bytes < 1024) return `${bytes} B`;
12012
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
12013
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
12014
+ }
12015
+ function HelpTip({ title, body }) {
12016
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [
12017
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "text-pro-fg inline-flex shrink-0 cursor-help", children: /* @__PURE__ */ jsx(HelpCircleIcon, { size: 14, "aria-hidden": "true" }) }) }),
12018
+ /* @__PURE__ */ jsxs(
12019
+ TooltipContent,
12020
+ {
12021
+ side: "top",
12022
+ align: "center",
12023
+ sideOffset: 12,
12024
+ className: cn(
12025
+ "border-rule bg-surface shadow-pop relative max-w-[352px] rounded-[7px] p-5 text-left",
12026
+ "after:border-rule after:bg-surface after:absolute after:top-full after:left-1/2 after:size-4 after:-translate-x-1/2 after:-translate-y-1/2 after:rotate-45 after:border-r after:border-b after:content-['']"
12027
+ ),
12028
+ children: [
12029
+ /* @__PURE__ */ jsx("div", { className: "text-fg text-[15px] leading-5 font-bold", children: title }),
12030
+ /* @__PURE__ */ jsx("p", { className: "text-fg-2 mt-3 text-[14px] leading-6", children: body })
12031
+ ]
12032
+ }
12033
+ )
12034
+ ] });
12035
+ }
12036
+ function NumberStepper({
12037
+ value,
12038
+ onValueChange,
12039
+ min = 0,
12040
+ max,
12041
+ step = 1,
12042
+ ariaLabel
12043
+ }) {
12044
+ const clamp = (next) => Math.max(min, max != null ? Math.min(next, max) : next);
12045
+ const current = clamp(Number.isFinite(value) ? value : min);
12046
+ const atMin = current <= min;
12047
+ const atMax = max != null && current >= max;
12048
+ return /* @__PURE__ */ jsxs(
12049
+ "div",
12050
+ {
12051
+ className: "inline-flex items-center gap-2",
12052
+ role: "spinbutton",
12053
+ "aria-valuenow": current,
12054
+ "aria-valuemin": min,
12055
+ "aria-valuemax": max,
12056
+ "aria-label": ariaLabel,
12057
+ children: [
12058
+ /* @__PURE__ */ jsx(
12059
+ Button,
12060
+ {
12061
+ type: "button",
12062
+ variant: "secondary",
12063
+ size: "icon-sm",
12064
+ onClick: () => onValueChange(clamp(current - step)),
12065
+ disabled: atMin,
12066
+ "aria-label": "Decrease",
12067
+ children: /* @__PURE__ */ jsx(MinusIcon, { size: 14, "aria-hidden": "true" })
12068
+ }
12069
+ ),
12070
+ /* @__PURE__ */ jsx(
12071
+ Input,
12072
+ {
12073
+ value: String(current),
12074
+ onChange: (event) => {
12075
+ const parsed = Number(event.target.value.replace(/[^0-9-]/g, ""));
12076
+ onValueChange(clamp(Number.isFinite(parsed) ? parsed : min));
12077
+ },
12078
+ inputMode: "numeric",
12079
+ "aria-label": ariaLabel,
12080
+ className: "h-11 w-14 rounded-[12px] text-center text-[14px] tabular-nums"
12081
+ }
12082
+ ),
12083
+ /* @__PURE__ */ jsx(
12084
+ Button,
12085
+ {
12086
+ type: "button",
12087
+ variant: "secondary",
12088
+ size: "icon-sm",
12089
+ onClick: () => onValueChange(clamp(current + step)),
12090
+ disabled: atMax,
12091
+ "aria-label": "Increase",
12092
+ children: /* @__PURE__ */ jsx(PlusIcon, { size: 14, "aria-hidden": "true" })
12093
+ }
12094
+ )
12095
+ ]
12096
+ }
12097
+ );
12098
+ }
11063
12099
  function AiSpark({ size = 16, className }) {
11064
12100
  const id = useId();
11065
12101
  return /* @__PURE__ */ jsxs(
@@ -14452,7 +15488,7 @@ var DocumentRequestDetail = forwardRef(
14452
15488
  title,
14453
15489
  category,
14454
15490
  highPriority,
14455
- statusLabel,
15491
+ statusLabel: statusLabel2,
14456
15492
  statusVariant = "secondary",
14457
15493
  requester,
14458
15494
  due,
@@ -14500,7 +15536,7 @@ var DocumentRequestDetail = forwardRef(
14500
15536
  ] }),
14501
15537
  highPriority && /* @__PURE__ */ jsx(Badge, { variant: "warning", children: "High priority" })
14502
15538
  ] }) : void 0,
14503
- status: statusLabel ? /* @__PURE__ */ jsx(Badge, { variant: statusVariant, children: statusLabel }) : void 0,
15539
+ status: statusLabel2 ? /* @__PURE__ */ jsx(Badge, { variant: statusVariant, children: statusLabel2 }) : void 0,
14504
15540
  children: [
14505
15541
  /* @__PURE__ */ jsx(DocumentDetailTitle, { children: title }),
14506
15542
  /* @__PURE__ */ jsx(
@@ -16569,6 +17605,6 @@ function SignatureEditor({
16569
17605
  }
16570
17606
  SignatureEditor.displayName = "SignatureEditor";
16571
17607
 
16572
- export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, 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, DocumentSourceFilter, DocumentSourceTag, 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, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, 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 };
17608
+ export { AIReceiptPanel, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityEventItem, ActivityItem, ActivityList, AgreementPaneHeading, AgreementViewer, 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, DocumentSourceFilter, DocumentSourceTag, 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, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QuestionnairePanel, Questions, 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 };
16573
17609
  //# sourceMappingURL=index.js.map
16574
17610
  //# sourceMappingURL=index.js.map