@assure-one/design-system 1.37.0 → 1.39.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/README.md +60 -16
- package/codemods/README.md +90 -16
- package/codemods/lib/entry-map.mjs +315 -0
- package/codemods/lib/registry.mjs +2 -0
- package/codemods/transforms/cm-01-entry-imports.mjs +202 -0
- package/codemods/transforms/cm-18-data-table-parts.mjs +234 -0
- package/dist/brand-theme-B6rem2II.d.ts +59 -0
- package/dist/css/components.css +1 -1
- package/dist/css/legacy-aliases.css +8 -0
- package/dist/css/tokens.css +14 -6
- package/dist/design-system-provider-BM_F1C13.d.ts +143 -0
- package/dist/icons/index.d.ts +441 -3
- package/dist/icons/index.js.map +1 -1
- package/dist/index-BAAuIQqP.d.ts +2579 -0
- package/dist/index-DxBjmBBp.d.ts +1038 -0
- package/dist/index.d.ts +1017 -3293
- package/dist/index.js +7598 -5906
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.d.ts +9 -0
- package/dist/legacy/index.js +3 -0
- package/dist/legacy/index.js.map +1 -0
- package/dist/next/index.d.ts +2 -1
- package/dist/reference-BkDbrPIB.d.ts +310 -0
- package/dist/styles.css +1 -1
- package/dist/suite/index.d.ts +4 -0
- package/dist/suite/index.js +3 -0
- package/dist/suite/index.js.map +1 -0
- package/dist/{system-CyAVbHhM.d.ts → system-DfJIVBlJ.d.ts} +1 -310
- package/dist/tokens/index.d.ts +3 -61
- package/dist/tokens/index.js +3 -3
- package/dist/tokens/index.js.map +1 -1
- package/dist/{design-system-provider-C8UlFe52.d.ts → types-k_kjwipx.d.ts} +69 -142
- package/dist/vocab-DornLJbW.d.ts +76 -0
- package/docs/components.md +62 -32
- package/docs/components.registry.json +2415 -465
- package/docs/for-ai-agents.md +2 -0
- package/eslint-config/index.mjs +210 -0
- package/eslint-config/stylelint-rules.mjs +54 -0
- package/eslint-config/stylelint.mjs +73 -0
- package/package.json +21 -3
- package/public/brand/assure-audit-mark.svg +6 -0
- package/public/brand/assure-audit.svg +8 -0
- package/public/brand/assure-books-mark.svg +6 -0
- package/public/brand/assure-books.svg +8 -0
- package/public/brand/assure-pro-mark.svg +6 -0
- package/public/brand/assure-pro.svg +8 -0
- package/public/brand/assure-tax-mark.svg +6 -0
- package/public/brand/assure-tax.svg +8 -0
- package/public/brand/mycpe-teams-mark.svg +36 -0
- package/public/brand/mycpe-teams.svg +66 -0
- package/dist/index-vztxMSfl.d.ts +0 -512
|
@@ -0,0 +1,1038 @@
|
|
|
1
|
+
import * as React$1 from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { l as ComingSoonMessages } from './types-k_kjwipx.js';
|
|
5
|
+
|
|
6
|
+
interface BrandIconProps extends React.SVGAttributes<SVGElement> {
|
|
7
|
+
size?: number;
|
|
8
|
+
}
|
|
9
|
+
declare function AssureProBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
|
|
10
|
+
declare function AssureAuditBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
declare function AssureBooksBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
declare function AssureTaxBrandIcon({ size, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
type ClientSelectOption = {
|
|
15
|
+
id: string;
|
|
16
|
+
label: string;
|
|
17
|
+
email?: string;
|
|
18
|
+
};
|
|
19
|
+
interface ClientSelectProps {
|
|
20
|
+
clients: ClientSelectOption[];
|
|
21
|
+
value: string | null;
|
|
22
|
+
onChange: (clientId: string | null) => void;
|
|
23
|
+
name?: string;
|
|
24
|
+
error?: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
placeholder?: string;
|
|
27
|
+
}
|
|
28
|
+
declare function ClientSelect({ clients, value, onChange, name, error, className, placeholder, }: ClientSelectProps): react_jsx_runtime.JSX.Element;
|
|
29
|
+
declare namespace ClientSelect {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* ComingSoon — placeholder pattern for unreleased modules. Pro-tinted icon
|
|
35
|
+
* halo, dashed Assure border, "In Development" pill.
|
|
36
|
+
*
|
|
37
|
+
* Public API preserved: `icon`, `title`, `description`, `features`. The two
|
|
38
|
+
* strings the component owned itself — the "Coming soon" eyebrow and the
|
|
39
|
+
* "In Development" pill — are injectable through `messages` (prop >
|
|
40
|
+
* `DesignSystemProvider messages.comingSoon` > English, W5-20/W8-08); the
|
|
41
|
+
* defaults are today's text, so nothing changes without an override.
|
|
42
|
+
*/
|
|
43
|
+
interface ComingSoonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
44
|
+
icon: React.ReactNode;
|
|
45
|
+
title: string;
|
|
46
|
+
description: string;
|
|
47
|
+
features: string[];
|
|
48
|
+
/** The eyebrow and pill copy. Defaults to English ("Coming soon" / "In Development"). */
|
|
49
|
+
messages?: Partial<ComingSoonMessages>;
|
|
50
|
+
}
|
|
51
|
+
declare const ComingSoon: React$1.ForwardRefExoticComponent<ComingSoonProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Logo — Assure suite wordmark. Renders the official product artwork when
|
|
55
|
+
* available, and falls back to a brand glyph + text lockup otherwise.
|
|
56
|
+
*
|
|
57
|
+
* The artwork ships in the package (`public/brand/*.svg`, W8-07) but is served
|
|
58
|
+
* by the host: copy it into the app's public folder, or point
|
|
59
|
+
* `setAssetBasePath` at wherever it is served from. Nothing breaks if you do
|
|
60
|
+
* neither — an image that fails to load falls back to the glyph + text lockup.
|
|
61
|
+
*
|
|
62
|
+
* The product suffix is configurable so the same component serves every
|
|
63
|
+
* Assure product. The default preserves the original "Assure Pro" output —
|
|
64
|
+
* existing consumers do not need to change anything.
|
|
65
|
+
*
|
|
66
|
+
* Public API:
|
|
67
|
+
* - `size`, `href`, `showText`, `inverted` (visual)
|
|
68
|
+
* - `productName` (the suffix text; `null` renders just "Assure")
|
|
69
|
+
* - `className`, `iconClassName`, `textClassName` (style overrides)
|
|
70
|
+
*
|
|
71
|
+
* The link and the wordmark image are the provider's `linkComponent` /
|
|
72
|
+
* `imageComponent` when a `DesignSystemProvider` supplies them (W5-21,
|
|
73
|
+
* ADR-010), else `next/link` / `next/image`; the static imports stay until 2.0
|
|
74
|
+
* (C-NEXT-PEER), so a Next.js app without a provider is unchanged.
|
|
75
|
+
*
|
|
76
|
+
* By default the lockup is a link (`href="/"`). Pass `href={null}` to render a
|
|
77
|
+
* non-interactive `<span>` wrapper instead — required when embedding the lockup
|
|
78
|
+
* inside another interactive element (a menu trigger `<button>`, a
|
|
79
|
+
* `DropdownMenuItem`) where a nested `<a>` would be invalid HTML or would race
|
|
80
|
+
* the parent's click handler.
|
|
81
|
+
*/
|
|
82
|
+
declare const sizeStyles: {
|
|
83
|
+
readonly sm: {
|
|
84
|
+
readonly icon: 20;
|
|
85
|
+
readonly text: "ds:text-sm";
|
|
86
|
+
readonly gap: "ds:gap-2";
|
|
87
|
+
readonly assetHeight: 24;
|
|
88
|
+
};
|
|
89
|
+
readonly md: {
|
|
90
|
+
readonly icon: 24;
|
|
91
|
+
readonly text: "ds:text-[17px]";
|
|
92
|
+
readonly gap: "ds:gap-2.5";
|
|
93
|
+
readonly assetHeight: 30;
|
|
94
|
+
};
|
|
95
|
+
readonly lg: {
|
|
96
|
+
readonly icon: 32;
|
|
97
|
+
readonly text: "ds:text-xl";
|
|
98
|
+
readonly gap: "ds:gap-3";
|
|
99
|
+
readonly assetHeight: 40;
|
|
100
|
+
};
|
|
101
|
+
readonly xl: {
|
|
102
|
+
readonly icon: 40;
|
|
103
|
+
readonly text: "ds:text-2xl";
|
|
104
|
+
readonly gap: "ds:gap-3.5";
|
|
105
|
+
readonly assetHeight: 48;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
interface LogoProps {
|
|
109
|
+
size?: keyof typeof sizeStyles;
|
|
110
|
+
/** Link target for the lockup. Pass `null` to render a non-interactive `<span>` wrapper (for embedding inside another interactive element). Defaults to `"/"`. */
|
|
111
|
+
href?: string | null;
|
|
112
|
+
showText?: boolean;
|
|
113
|
+
className?: string;
|
|
114
|
+
iconClassName?: string;
|
|
115
|
+
textClassName?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Product suffix rendered after "Assure" (e.g. "Pro", "Audit"). Pass `null`
|
|
118
|
+
* to render just "Assure". A few products are standalone brands whose
|
|
119
|
+
* wordmark is the complete identity (e.g. "Teams" → myCPE Teams) — those
|
|
120
|
+
* render their own name with no "Assure" prefix. Defaults to "Pro" for
|
|
121
|
+
* backwards compatibility.
|
|
122
|
+
*/
|
|
123
|
+
productName?: string | null;
|
|
124
|
+
/** When true, render on dark/brand surfaces (white "Assure" + lighter suffix). */
|
|
125
|
+
inverted?: boolean;
|
|
126
|
+
}
|
|
127
|
+
declare function Logo({ size, href, showText, className, iconClassName, textClassName, productName, inverted, }: LogoProps): react_jsx_runtime.JSX.Element;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* AgreementViewer — the chrome + navigation shell for a multi-step, branded
|
|
131
|
+
* agreement / proposal (the "Signed Agreement Viewer"). It owns the header,
|
|
132
|
+
* the firm-branded cover rail, the section stepper, the signed / awaiting
|
|
133
|
+
* banner, the prev·dots·next footer, and the step state. Each step's body is
|
|
134
|
+
* consumer-owned `content` — the shell is deliberately content-agnostic so the
|
|
135
|
+
* same frame drives a tax proposal, an engagement letter, or an NDA.
|
|
136
|
+
*
|
|
137
|
+
* Step 0 is the cover: it shows the gradient firm rail. Steps 1+ show the
|
|
138
|
+
* light section rail with the stepper. One root attribute drives both:
|
|
139
|
+
* `data-view="cover" | "inner"`, derived from the current step.
|
|
140
|
+
*
|
|
141
|
+
* Branding: the whole composite themes from a single accent. Omit `accent` to
|
|
142
|
+
* inherit the suite accent; pass any CSS color (`accent="#1f8a5b"`) and the
|
|
143
|
+
* rail gradient, tints, stepper, dots, and CTAs all retrack — every shade is
|
|
144
|
+
* derived in `tokens.css` via color-mix off `--av-accent`.
|
|
145
|
+
*
|
|
146
|
+
* <AgreementViewer
|
|
147
|
+
* title="Comprehensive Individual Tax Services"
|
|
148
|
+
* firm={{ name: "Patel & Associates CPA", initials: "P&A" }}
|
|
149
|
+
* steps={[
|
|
150
|
+
* { id: "welcome", label: "Welcome", content: <Welcome /> },
|
|
151
|
+
* { id: "package", label: "Select a package", content: <Packages /> },
|
|
152
|
+
* …
|
|
153
|
+
* ]}
|
|
154
|
+
* onDownload={downloadPdf}
|
|
155
|
+
* />
|
|
156
|
+
*
|
|
157
|
+
* @since 1.12.0
|
|
158
|
+
*/
|
|
159
|
+
type AgreementStatus = "signed" | "awaiting";
|
|
160
|
+
interface AgreementStep {
|
|
161
|
+
/** Stable key + stepper/dot identity. */
|
|
162
|
+
id: string;
|
|
163
|
+
/** Section label shown in the stepper rail. */
|
|
164
|
+
label: string;
|
|
165
|
+
/** Node glyph in the stepper; defaults to the step number (or a home glyph
|
|
166
|
+
* for the cover step). */
|
|
167
|
+
icon?: ReactNode;
|
|
168
|
+
/** The step body — consumer-owned. */
|
|
169
|
+
content: ReactNode;
|
|
170
|
+
/** Render this step's body full-bleed: the content pane drops its padding so
|
|
171
|
+
* a cover or hero can reach the card edges. Default false.
|
|
172
|
+
* @since 1.38.0 */
|
|
173
|
+
bleed?: boolean;
|
|
174
|
+
}
|
|
175
|
+
interface AgreementFirm {
|
|
176
|
+
/** Firm name shown on both rails. */
|
|
177
|
+
name: string;
|
|
178
|
+
/** Logo monogram (e.g. "P&A"). Falls back to the first letter of `name`. */
|
|
179
|
+
initials?: string;
|
|
180
|
+
/** Short line under the firm name on the cover rail. */
|
|
181
|
+
tagline?: string;
|
|
182
|
+
/** Subtitle under the firm name on the inner rail. Default "Your proposal". */
|
|
183
|
+
subtitle?: string;
|
|
184
|
+
/** Contact rows pinned to the bottom of the cover rail. */
|
|
185
|
+
contact?: {
|
|
186
|
+
phone?: ReactNode;
|
|
187
|
+
email?: ReactNode;
|
|
188
|
+
website?: ReactNode;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
interface AgreementViewerProps {
|
|
192
|
+
/** Header title (the agreement name). */
|
|
193
|
+
title: ReactNode;
|
|
194
|
+
/** Small overline above the title. Default "Signed agreement". */
|
|
195
|
+
overline?: ReactNode;
|
|
196
|
+
/** Steps rendered as panes; index 0 is the cover. */
|
|
197
|
+
steps: AgreementStep[];
|
|
198
|
+
/** Firm branding for the rails. */
|
|
199
|
+
firm: AgreementFirm;
|
|
200
|
+
/** "signed" (read-only, all sections complete) or "awaiting" (in progress).
|
|
201
|
+
* Drives the banner tone + which stepper nodes read as done. Default "signed". */
|
|
202
|
+
status?: AgreementStatus;
|
|
203
|
+
/** Banner body override. Omit for the status-derived default; pass `null` to
|
|
204
|
+
* hide the banner entirely. */
|
|
205
|
+
banner?: ReactNode;
|
|
206
|
+
/** Brand accent override — any CSS color. Defaults to the suite accent. */
|
|
207
|
+
accent?: string;
|
|
208
|
+
/** Show the gradient firm rail on the cover step. Set false for a full-bleed
|
|
209
|
+
* cover (e.g. a centered title page). Default true. */
|
|
210
|
+
coverRail?: boolean;
|
|
211
|
+
/** Controlled current step index. */
|
|
212
|
+
step?: number;
|
|
213
|
+
/** Initial step when uncontrolled. Default 0. */
|
|
214
|
+
defaultStep?: number;
|
|
215
|
+
/** Notified on every step change (controlled or not). */
|
|
216
|
+
onStepChange?: (step: number) => void;
|
|
217
|
+
/** "Download PDF" handler — hides the button when omitted. */
|
|
218
|
+
onDownload?: () => void;
|
|
219
|
+
/** Close handler — hides the close button when omitted. */
|
|
220
|
+
onClose?: () => void;
|
|
221
|
+
/** Extra header actions, placed left of Download / Close. */
|
|
222
|
+
headerActions?: ReactNode;
|
|
223
|
+
/** Disable the footer "Next" control — e.g. this step has unmet requirements.
|
|
224
|
+
* Default false.
|
|
225
|
+
* @since 1.38.0 */
|
|
226
|
+
nextDisabled?: boolean;
|
|
227
|
+
/** Why "Next" is disabled. Kept in a polite live region under the footer and
|
|
228
|
+
* wired to the Next control with `aria-describedby`; the text only appears
|
|
229
|
+
* while `nextDisabled` is true.
|
|
230
|
+
* @since 1.38.0 */
|
|
231
|
+
nextDisabledReason?: ReactNode;
|
|
232
|
+
/** Slot under the footer nav row — a validation summary, a secondary CTA, or
|
|
233
|
+
* a legal note that should sit with the navigation rather than in the step.
|
|
234
|
+
* @since 1.38.0 */
|
|
235
|
+
footer?: ReactNode;
|
|
236
|
+
className?: string;
|
|
237
|
+
}
|
|
238
|
+
declare const AgreementViewer: React$1.ForwardRefExoticComponent<AgreementViewerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
239
|
+
interface AgreementPaneHeadingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
240
|
+
/** Accent overline, e.g. "Step 3 of 6". */
|
|
241
|
+
overline?: ReactNode;
|
|
242
|
+
/** The pane title. */
|
|
243
|
+
title: ReactNode;
|
|
244
|
+
/** Supporting line under the title. */
|
|
245
|
+
subtitle?: ReactNode;
|
|
246
|
+
}
|
|
247
|
+
declare const AgreementPaneHeading: React$1.ForwardRefExoticComponent<AgreementPaneHeadingProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Proposal pricing building-blocks — the client-preview pieces a signing
|
|
251
|
+
* package's "Services & Pricing" config renders into. They compose inside an
|
|
252
|
+
* `AgreementViewer` step (where they inherit the firm `--av-accent`), or
|
|
253
|
+
* standalone inside a `[data-av-scope]` wrapper. Accent classes carry a suite
|
|
254
|
+
* fallback so a bare block still renders un-branded rather than transparent.
|
|
255
|
+
*
|
|
256
|
+
* - `ProposalServiceRow` — one line item (name · price · cadence, optional
|
|
257
|
+
* struck-through original for a discount).
|
|
258
|
+
* - `ProposalPackageCard` — a package the client chooses; `mode` switches the
|
|
259
|
+
* builder's three choice models (pick-one / add-on /
|
|
260
|
+
* always-included).
|
|
261
|
+
* - `ProposalPricingSummary`— the "review total" block: what's included, the
|
|
262
|
+
* billing schedule, discount savings, tax, total.
|
|
263
|
+
*
|
|
264
|
+
* @since 1.12.0
|
|
265
|
+
*/
|
|
266
|
+
interface ProposalServiceRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
267
|
+
/** Service name — the primary line. */
|
|
268
|
+
name: ReactNode;
|
|
269
|
+
/** Optional secondary description shown to the client. */
|
|
270
|
+
description?: ReactNode;
|
|
271
|
+
/** Formatted price, e.g. "$1,300" or "$50/mo". */
|
|
272
|
+
price?: ReactNode;
|
|
273
|
+
/** Pre-discount price, struck through before `price`. */
|
|
274
|
+
originalPrice?: ReactNode;
|
|
275
|
+
/** Leading marker. "check" (accent tick) or "none". Default "check". */
|
|
276
|
+
marker?: "check" | "none";
|
|
277
|
+
}
|
|
278
|
+
declare const ProposalServiceRow: React$1.ForwardRefExoticComponent<ProposalServiceRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
279
|
+
type ProposalPackageMode = "choice" | "addon" | "included";
|
|
280
|
+
interface ProposalPackageCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
281
|
+
/** Package name. */
|
|
282
|
+
name: ReactNode;
|
|
283
|
+
/** Short count line, e.g. "Includes 4 services". */
|
|
284
|
+
summary?: ReactNode;
|
|
285
|
+
/** Formatted package price. */
|
|
286
|
+
price?: ReactNode;
|
|
287
|
+
/** Caption under the price, e.g. "Package total". */
|
|
288
|
+
priceCaption?: ReactNode;
|
|
289
|
+
/** Pre-discount price, struck through. */
|
|
290
|
+
originalPrice?: ReactNode;
|
|
291
|
+
/** Savings line, e.g. "You save $200". */
|
|
292
|
+
savings?: ReactNode;
|
|
293
|
+
/** How the client chooses this package. Default "choice". */
|
|
294
|
+
mode?: ProposalPackageMode;
|
|
295
|
+
/** Selected / added state (drives accent border + control label). */
|
|
296
|
+
selected?: boolean;
|
|
297
|
+
/** Corner badge, e.g. "Most popular". A "Selected"/"Added" badge is implied. */
|
|
298
|
+
badge?: ReactNode;
|
|
299
|
+
/** Label above the service rows. Default "Included services". */
|
|
300
|
+
servicesLabel?: ReactNode;
|
|
301
|
+
/** Service rows (`ProposalServiceRow`) or any content. */
|
|
302
|
+
children?: ReactNode;
|
|
303
|
+
/**
|
|
304
|
+
* Cap the service list's height (any CSS length, e.g. `"14rem"`). Past it the
|
|
305
|
+
* list scrolls rather than growing, so a package with many services keeps its
|
|
306
|
+
* select control in view instead of pushing it below the fold — and cards
|
|
307
|
+
* sitting in a row stay the same height.
|
|
308
|
+
*
|
|
309
|
+
* Omit for the previous behaviour: the list grows to fit.
|
|
310
|
+
*/
|
|
311
|
+
servicesMaxHeight?: string;
|
|
312
|
+
/** Select / toggle handler — makes the card interactive. */
|
|
313
|
+
onSelect?: () => void;
|
|
314
|
+
disabled?: boolean;
|
|
315
|
+
}
|
|
316
|
+
declare const ProposalPackageCard: React$1.ForwardRefExoticComponent<ProposalPackageCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
317
|
+
type ProposalBillingMode = "now" | "auto" | "review" | "manual" | "onetime";
|
|
318
|
+
interface ProposalBillingRow {
|
|
319
|
+
/** e.g. "Due today", "First payment", "Then, monthly", "Each invoice". */
|
|
320
|
+
label: ReactNode;
|
|
321
|
+
/** Formatted amount, e.g. "$2,526". */
|
|
322
|
+
amount?: ReactNode;
|
|
323
|
+
/** Cadence beside the amount, e.g. "/mo". */
|
|
324
|
+
cadence?: ReactNode;
|
|
325
|
+
/** Plain-language explanation of how/when this is charged. */
|
|
326
|
+
detail: ReactNode;
|
|
327
|
+
/** Drives the row icon. Default "now". */
|
|
328
|
+
mode?: ProposalBillingMode;
|
|
329
|
+
}
|
|
330
|
+
interface ProposalBillingTermsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
331
|
+
/** Heading. Default "How billing works". */
|
|
332
|
+
title?: ReactNode;
|
|
333
|
+
/** The billing steps the firm configured. */
|
|
334
|
+
rows: ProposalBillingRow[];
|
|
335
|
+
/** Show the "set by your firm — review only" footer. Default true. */
|
|
336
|
+
locked?: boolean;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* ProposalBillingTerms — a read-only explanation of the payment arrangement the
|
|
340
|
+
* firm configured (auto-pay, charge-after-review, manual invoicing, one-time,
|
|
341
|
+
* or a mix). The client can see exactly what will be charged and when, but
|
|
342
|
+
* can't change it — the `locked` footer makes that explicit.
|
|
343
|
+
*/
|
|
344
|
+
declare const ProposalBillingTerms: React$1.ForwardRefExoticComponent<ProposalBillingTermsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
345
|
+
interface ProposalAddOnProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onToggle" | "name"> {
|
|
346
|
+
/** Add-on name. */
|
|
347
|
+
name: ReactNode;
|
|
348
|
+
/** Short description / cadence note under the name. */
|
|
349
|
+
description?: ReactNode;
|
|
350
|
+
/** Formatted price, e.g. "$150" or "$200". */
|
|
351
|
+
price?: ReactNode;
|
|
352
|
+
/** Cadence / billing note beside the price, e.g. "/mo" or "One-time". */
|
|
353
|
+
cadence?: ReactNode;
|
|
354
|
+
/** Added state. */
|
|
355
|
+
selected?: boolean;
|
|
356
|
+
/** Toggle handler. */
|
|
357
|
+
onToggle?: () => void;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* ProposalAddOn — a compact, checkbox-style toggle for an optional add-on.
|
|
361
|
+
* Lighter than `ProposalPackageCard`: add-ons are secondary extras, so the
|
|
362
|
+
* whole row is one toggle (no separate badge + button), price right-aligned.
|
|
363
|
+
*/
|
|
364
|
+
declare const ProposalAddOn: React$1.ForwardRefExoticComponent<ProposalAddOnProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
365
|
+
interface ProposalPricingSummaryProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
366
|
+
/** "What's included" rows (`ProposalServiceRow`) — rendered in a 2-col grid. */
|
|
367
|
+
children?: ReactNode;
|
|
368
|
+
/** Billing schedule callout. */
|
|
369
|
+
billing?: {
|
|
370
|
+
title?: ReactNode;
|
|
371
|
+
caption?: ReactNode;
|
|
372
|
+
rows?: {
|
|
373
|
+
label: ReactNode;
|
|
374
|
+
value: ReactNode;
|
|
375
|
+
}[];
|
|
376
|
+
};
|
|
377
|
+
/** Discount savings line, e.g. "You save $200 (annual)". */
|
|
378
|
+
savings?: ReactNode;
|
|
379
|
+
/** Tax line value, e.g. "$192.00". `taxLabel` defaults to "Tax". */
|
|
380
|
+
tax?: ReactNode;
|
|
381
|
+
taxLabel?: ReactNode;
|
|
382
|
+
/** Pre-discount total, struck through next to `total`. */
|
|
383
|
+
originalTotal?: ReactNode;
|
|
384
|
+
/** Total due — used for a single-cadence engagement. Omit when `schedule` is set. */
|
|
385
|
+
total?: ReactNode;
|
|
386
|
+
/** Cadence suffix after the total, e.g. "/ year". */
|
|
387
|
+
cadence?: ReactNode;
|
|
388
|
+
/** Total row label. Default "Total due". */
|
|
389
|
+
totalLabel?: ReactNode;
|
|
390
|
+
/** First-payment + recurring breakdown. Use instead of `total` when billing
|
|
391
|
+
* mixes cadences (e.g. a yearly package + a monthly add-on): the amount due
|
|
392
|
+
* at signing reads prominently, with the ongoing charges listed below. */
|
|
393
|
+
schedule?: {
|
|
394
|
+
/** Amount charged at signing — the prominent figure. */
|
|
395
|
+
dueToday: ReactNode;
|
|
396
|
+
/** Label for the due-now figure. Default "Due today". */
|
|
397
|
+
dueTodayLabel?: ReactNode;
|
|
398
|
+
/** Caption under the due-now figure, e.g. "First payment, on acceptance". */
|
|
399
|
+
dueTodayCaption?: ReactNode;
|
|
400
|
+
/** Ongoing recurring charges, e.g. [{ label: "Then", amount: "$2,400", cadence: "/ year" }]. */
|
|
401
|
+
then?: {
|
|
402
|
+
label?: ReactNode;
|
|
403
|
+
amount: ReactNode;
|
|
404
|
+
cadence?: ReactNode;
|
|
405
|
+
}[];
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
declare const ProposalPricingSummary: React$1.ForwardRefExoticComponent<ProposalPricingSummaryProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Proposal content building-blocks — the optional pieces a signing package's
|
|
412
|
+
* "custom pages" and recipient config render into on the client preview.
|
|
413
|
+
*
|
|
414
|
+
* - `ProposalCustomPage` — a titled custom page; `kind` switches the builder's
|
|
415
|
+
* Video / PDF / Text page types. The body (a video
|
|
416
|
+
* poster, a `PdfPreview`, or rich text) is slotted.
|
|
417
|
+
* - `ProposalNote` — a short callout shown alongside the agreement.
|
|
418
|
+
* - `ProposalSignerList` — the recipients/signers with role + status.
|
|
419
|
+
*
|
|
420
|
+
* Accent classes carry a suite fallback, so a bare block renders un-branded
|
|
421
|
+
* outside an `AgreementViewer` / `[data-av-scope]`.
|
|
422
|
+
*
|
|
423
|
+
* @since 1.12.0
|
|
424
|
+
*/
|
|
425
|
+
type ProposalCustomPageKind = "video" | "pdf" | "text";
|
|
426
|
+
interface ProposalCustomPageProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
427
|
+
/** Builder custom-page type. */
|
|
428
|
+
kind: ProposalCustomPageKind;
|
|
429
|
+
/** Page title. */
|
|
430
|
+
title: ReactNode;
|
|
431
|
+
/** Supporting line under the title. */
|
|
432
|
+
caption?: ReactNode;
|
|
433
|
+
/** Overline label; defaults by kind ("Video" / "Document" / "Read"). */
|
|
434
|
+
label?: ReactNode;
|
|
435
|
+
/** Poster image for `kind="video"` — shown with a play overlay when no
|
|
436
|
+
* `children` are supplied. */
|
|
437
|
+
poster?: string;
|
|
438
|
+
/** Play handler — makes the video poster an actual button. */
|
|
439
|
+
onPlay?: () => void;
|
|
440
|
+
/** Body: a `PdfPreview`, rich text, or a custom embed. Replaces the built-in
|
|
441
|
+
* video poster when provided. */
|
|
442
|
+
children?: ReactNode;
|
|
443
|
+
}
|
|
444
|
+
declare const ProposalCustomPage: React$1.ForwardRefExoticComponent<ProposalCustomPageProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
445
|
+
interface ProposalNoteProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
446
|
+
/** Optional bold lead line. */
|
|
447
|
+
title?: ReactNode;
|
|
448
|
+
/** Note body. */
|
|
449
|
+
children: ReactNode;
|
|
450
|
+
/** Visual tone. Default "accent". */
|
|
451
|
+
tone?: "accent" | "info";
|
|
452
|
+
/** Leading icon; defaults to an info glyph. */
|
|
453
|
+
icon?: ReactNode;
|
|
454
|
+
}
|
|
455
|
+
declare const ProposalNote: React$1.ForwardRefExoticComponent<ProposalNoteProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
456
|
+
type ProposalSignerStatus = "signed" | "pending" | "viewed";
|
|
457
|
+
interface ProposalSigner {
|
|
458
|
+
name: string;
|
|
459
|
+
email?: string;
|
|
460
|
+
/** Role, e.g. "Signer", "Approver", "CC". */
|
|
461
|
+
role?: string;
|
|
462
|
+
status?: ProposalSignerStatus;
|
|
463
|
+
/** Status timestamp for the firm tracking view, e.g. "Signed Jun 6, 2:14 PM". */
|
|
464
|
+
at?: ReactNode;
|
|
465
|
+
}
|
|
466
|
+
interface ProposalSignerListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
467
|
+
signers: ProposalSigner[];
|
|
468
|
+
/** Section label. Default "Recipients". */
|
|
469
|
+
title?: ReactNode;
|
|
470
|
+
}
|
|
471
|
+
declare const ProposalSignerList: React$1.ForwardRefExoticComponent<ProposalSignerListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Proposal signing building-blocks — the client-preview pieces for the
|
|
475
|
+
* agreement's final step.
|
|
476
|
+
*
|
|
477
|
+
* - `ProposalSignatureBlock` — the type/draw signature area; `signed` flips it
|
|
478
|
+
* to a read-only signed preview.
|
|
479
|
+
* - `ProposalConsentGate` — the "require explicit approval before signing"
|
|
480
|
+
* checkbox that gates the Sign CTA.
|
|
481
|
+
* - `ProposalPaymentCapture` — the "payment at signing" card/bank capture block.
|
|
482
|
+
*
|
|
483
|
+
* Presentational: persistence, signature canvas, and payment tokenization stay
|
|
484
|
+
* with the consumer. Accent classes carry a suite fallback.
|
|
485
|
+
*
|
|
486
|
+
* @since 1.12.0
|
|
487
|
+
*/
|
|
488
|
+
interface ProposalSignatureBlockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
489
|
+
/** Read-only signed preview — the recorded signer name + initials. */
|
|
490
|
+
signed?: boolean;
|
|
491
|
+
/** Recorded signer name (used in the `signed` read-only preview). */
|
|
492
|
+
name?: string;
|
|
493
|
+
/** Recorded initials; defaults to the name's initials. */
|
|
494
|
+
initials?: string;
|
|
495
|
+
/** Initial typed name when interactive (defaults to blank — the signer types). */
|
|
496
|
+
defaultName?: string;
|
|
497
|
+
/** Reports the typed name + initials as the signer types (interactive). */
|
|
498
|
+
onChange?: (value: {
|
|
499
|
+
name: string;
|
|
500
|
+
initials: string;
|
|
501
|
+
}) => void;
|
|
502
|
+
/** Placeholder shown in the signature face + name field when empty. */
|
|
503
|
+
placeholder?: string;
|
|
504
|
+
/** CSS font-family for the rendered signature face. Default a serif. */
|
|
505
|
+
signatureFont?: string;
|
|
506
|
+
/** Footer slot — typically the Sign CTA or a signed-on note. */
|
|
507
|
+
footer?: ReactNode;
|
|
508
|
+
/** Drop the Type / Draw tab strip — for hosts that own the mode switch
|
|
509
|
+
* themselves, or that only offer one mode. Default false.
|
|
510
|
+
* @since 1.38.0 */
|
|
511
|
+
hideModeTabs?: boolean;
|
|
512
|
+
}
|
|
513
|
+
declare const ProposalSignatureBlock: React$1.ForwardRefExoticComponent<ProposalSignatureBlockProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
514
|
+
interface ProposalConsentGateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
515
|
+
/** Consent label (the explicit-approval statement). */
|
|
516
|
+
children: ReactNode;
|
|
517
|
+
/** Checkbox state. */
|
|
518
|
+
checked?: boolean;
|
|
519
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
520
|
+
/** Already-signed read-only state — shows the signed note instead of the CTA. */
|
|
521
|
+
signed?: boolean;
|
|
522
|
+
/** Note shown when `signed`, e.g. "Signed on June 6, 2026". */
|
|
523
|
+
signedNote?: ReactNode;
|
|
524
|
+
/** Sign CTA handler — renders the button (disabled until `checked`). */
|
|
525
|
+
onSign?: () => void;
|
|
526
|
+
/** Sign CTA label. Default "Sign & approve". */
|
|
527
|
+
signLabel?: ReactNode;
|
|
528
|
+
/** Extra disable condition for the Sign CTA, e.g. a name not yet typed. */
|
|
529
|
+
disabled?: boolean;
|
|
530
|
+
}
|
|
531
|
+
declare const ProposalConsentGate: React$1.ForwardRefExoticComponent<ProposalConsentGateProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
532
|
+
interface ProposalPaymentCaptureProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
533
|
+
/** Heading. Default "Payment at signing". */
|
|
534
|
+
title?: ReactNode;
|
|
535
|
+
/** Amount captured at signing, e.g. "$2,400". */
|
|
536
|
+
amount?: ReactNode;
|
|
537
|
+
/** Caption under the title, e.g. "Billed today on acceptance". */
|
|
538
|
+
caption?: ReactNode;
|
|
539
|
+
/** Method icon hint. Default "card". */
|
|
540
|
+
method?: "card" | "bank";
|
|
541
|
+
/** Saved method last-4 — renders a read-only "•••• 4242" line. */
|
|
542
|
+
capturedLast4?: string;
|
|
543
|
+
/** Custom form fields (replaces the placeholder when provided). */
|
|
544
|
+
children?: ReactNode;
|
|
545
|
+
}
|
|
546
|
+
declare const ProposalPaymentCapture: React$1.ForwardRefExoticComponent<ProposalPaymentCaptureProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* The version of the `QuestionType` contract this build ships (W8-04).
|
|
550
|
+
*
|
|
551
|
+
* `QuestionType` is a cross-service contract: TAX's backend persists these
|
|
552
|
+
* strings and its renderer switches on them, so the union is not free to
|
|
553
|
+
* change with a component refactor. Adding or removing a member means bumping
|
|
554
|
+
* this constant, adding a changelog entry below, and publishing the matching
|
|
555
|
+
* `docs/contracts/question-types.v<version>.json` fixture — the contract test
|
|
556
|
+
* (`__tests__/question-type-contract.test.ts`) fails otherwise.
|
|
557
|
+
*
|
|
558
|
+
* ### Changelog
|
|
559
|
+
* - **1** (1.38.0) — first versioned snapshot of the union that shipped in
|
|
560
|
+
* 1.12.0: the 24 members listed in `QUESTION_TYPES`. No change to the types
|
|
561
|
+
* themselves; this version records them.
|
|
562
|
+
*
|
|
563
|
+
* @experimental The versioning scheme is experimental until D18 (contract
|
|
564
|
+
* ownership) is decided; the members themselves are stable.
|
|
565
|
+
*/
|
|
566
|
+
declare const QUESTION_TYPE_CONTRACT_VERSION = 1;
|
|
567
|
+
/**
|
|
568
|
+
* Every `QuestionType`, in contract order — the runtime mirror of the union,
|
|
569
|
+
* for iterating, validating a payload, or generating a picker.
|
|
570
|
+
*
|
|
571
|
+
* @experimental
|
|
572
|
+
*/
|
|
573
|
+
declare const QUESTION_TYPES: readonly ["short-text", "long-text", "email", "phone", "ssn-sin", "date", "number", "currency", "percentage", "single-choice", "multi-choice", "yes-no", "dropdown", "multi-select", "address", "file-upload", "table", "repeater", "signature", "section-header", "consent-checkbox", "name", "labeled-table", "number-stepper"];
|
|
574
|
+
type QuestionType = "short-text" | "long-text" | "email" | "phone" | "ssn-sin" | "date" | "number" | "currency" | "percentage" | "single-choice" | "multi-choice" | "yes-no" | "dropdown" | "multi-select" | "address" | "file-upload" | "table" | "repeater" | "signature" | "section-header" | "consent-checkbox" | "name" | "labeled-table" | "number-stepper";
|
|
575
|
+
interface QuestionOption {
|
|
576
|
+
value: string;
|
|
577
|
+
label: string;
|
|
578
|
+
formLabel?: string;
|
|
579
|
+
helpText?: string;
|
|
580
|
+
disabled?: boolean;
|
|
581
|
+
}
|
|
582
|
+
interface QuestionAddressValue {
|
|
583
|
+
line1?: string;
|
|
584
|
+
line2?: string;
|
|
585
|
+
city?: string;
|
|
586
|
+
region?: string;
|
|
587
|
+
postalCode?: string;
|
|
588
|
+
country?: string;
|
|
589
|
+
}
|
|
590
|
+
/** Personal-name payload for the `name` variant. */
|
|
591
|
+
interface QuestionNameValue {
|
|
592
|
+
first?: string;
|
|
593
|
+
middle?: string;
|
|
594
|
+
last?: string;
|
|
595
|
+
suffix?: string;
|
|
596
|
+
}
|
|
597
|
+
/** Question-level help/tip rendered as a tooltip beside the title. */
|
|
598
|
+
interface QuestionHelp {
|
|
599
|
+
title?: string;
|
|
600
|
+
body: string;
|
|
601
|
+
}
|
|
602
|
+
interface QuestionTableColumn {
|
|
603
|
+
key: string;
|
|
604
|
+
label: string;
|
|
605
|
+
placeholder?: string;
|
|
606
|
+
inputType?: "text" | "number" | "date" | "currency";
|
|
607
|
+
}
|
|
608
|
+
type QuestionTableRow = Record<string, string>;
|
|
609
|
+
/** Column of the fixed `labeled-table` matrix. `width` is a relative grid weight. */
|
|
610
|
+
interface QuestionLabeledColumn {
|
|
611
|
+
key: string;
|
|
612
|
+
title: string;
|
|
613
|
+
width?: number;
|
|
614
|
+
inputType?: "text" | "number" | "date" | "currency";
|
|
615
|
+
}
|
|
616
|
+
/** Fixed row header (down the left edge) of the `labeled-table` matrix. */
|
|
617
|
+
interface QuestionLabeledRow {
|
|
618
|
+
key: string;
|
|
619
|
+
title: string;
|
|
620
|
+
}
|
|
621
|
+
/** Cell text for the `labeled-table` matrix, keyed rowKey → colKey → value. */
|
|
622
|
+
type QuestionLabeledValue = Record<string, Record<string, string>>;
|
|
623
|
+
interface QuestionFileValue {
|
|
624
|
+
name: string;
|
|
625
|
+
size?: number;
|
|
626
|
+
kind?: "doc" | "sheet" | "image" | "generic";
|
|
627
|
+
}
|
|
628
|
+
interface QuestionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
629
|
+
index?: number;
|
|
630
|
+
title: string;
|
|
631
|
+
description?: string;
|
|
632
|
+
type?: QuestionType;
|
|
633
|
+
required?: boolean;
|
|
634
|
+
chrome?: "card" | "plain";
|
|
635
|
+
sectionLabel?: string;
|
|
636
|
+
hideHeader?: boolean;
|
|
637
|
+
options?: QuestionOption[];
|
|
638
|
+
value?: string;
|
|
639
|
+
values?: string[];
|
|
640
|
+
placeholder?: string;
|
|
641
|
+
help?: QuestionHelp;
|
|
642
|
+
addressValue?: QuestionAddressValue;
|
|
643
|
+
nameValue?: QuestionNameValue;
|
|
644
|
+
showSuffix?: boolean;
|
|
645
|
+
tableColumns?: QuestionTableColumn[];
|
|
646
|
+
tableRows?: QuestionTableRow[];
|
|
647
|
+
labeledColumns?: QuestionLabeledColumn[];
|
|
648
|
+
labeledRows?: QuestionLabeledRow[];
|
|
649
|
+
labeledValue?: QuestionLabeledValue;
|
|
650
|
+
files?: QuestionFileValue[];
|
|
651
|
+
accept?: string;
|
|
652
|
+
maxSize?: number;
|
|
653
|
+
multiple?: boolean;
|
|
654
|
+
currencySymbol?: string;
|
|
655
|
+
/** Lower bound for `number-stepper`, and for a count-driven `repeater`. */
|
|
656
|
+
min?: number;
|
|
657
|
+
/** Upper bound for `number-stepper`, and max item count for a count-driven `repeater`. */
|
|
658
|
+
max?: number;
|
|
659
|
+
step?: number;
|
|
660
|
+
/** When set on a `repeater`, renders a bounded stepper that drives the number of item grids. */
|
|
661
|
+
countLabel?: string;
|
|
662
|
+
/**
|
|
663
|
+
* Noun for each `repeater` entry card header, e.g. `"U.S. presence period"` →
|
|
664
|
+
* "U.S. presence period 1". Defaults to the generic "Item" when unset.
|
|
665
|
+
*/
|
|
666
|
+
itemNoun?: string;
|
|
667
|
+
onValueChange?: (value: string) => void;
|
|
668
|
+
onValuesChange?: (values: string[]) => void;
|
|
669
|
+
onAddressChange?: (value: QuestionAddressValue) => void;
|
|
670
|
+
onNameChange?: (value: QuestionNameValue) => void;
|
|
671
|
+
onLabeledChange?: (value: QuestionLabeledValue) => void;
|
|
672
|
+
onTableRowsChange?: (rows: QuestionTableRow[]) => void;
|
|
673
|
+
onFilesSelected?: (files: File[]) => void;
|
|
674
|
+
/** When set, each uploaded file chip in the `file-upload` type shows a remove
|
|
675
|
+
* button that calls this with the file and its index. */
|
|
676
|
+
onFileRemove?: (file: QuestionFileValue, index: number) => void;
|
|
677
|
+
}
|
|
678
|
+
declare const Questions: React$1.ForwardRefExoticComponent<QuestionsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Grid — a labeled-rows × typed-columns matrix of editable cells.
|
|
682
|
+
*
|
|
683
|
+
* A fixed grid where every row has a header down the left edge and every
|
|
684
|
+
* column declares the input type its cells accept (text / number / currency
|
|
685
|
+
* / date). Each cell is an editable input; the whole matrix is a single
|
|
686
|
+
* controlled value keyed `rowKey → columnKey → string`.
|
|
687
|
+
*
|
|
688
|
+
* ┌───────────────┬──────────┬──────────┬──────────┐
|
|
689
|
+
* │ │ Taxpayer │ Spouse │ Notes │ ← typed columns
|
|
690
|
+
* ├───────────────┼──────────┼──────────┼──────────┤
|
|
691
|
+
* │ Wages (W-2) │ [ $ ___ ]│ [ $ ___ ]│ [ ___ ] │ ← labeled row
|
|
692
|
+
* │ Interest │ [ $ ___ ]│ [ $ ___ ]│ [ ___ ] │
|
|
693
|
+
* └───────────────┴──────────┴──────────┴──────────┘
|
|
694
|
+
*
|
|
695
|
+
* This is the standalone form of the `Questions` `labeled-table` type — that
|
|
696
|
+
* branch renders a `Grid` internally, so the two share one implementation and
|
|
697
|
+
* one value contract.
|
|
698
|
+
*
|
|
699
|
+
* Fully controlled: pass `columns`, `rows`, `value`, and `onChange`. The
|
|
700
|
+
* component never holds cell state itself.
|
|
701
|
+
*/
|
|
702
|
+
/** Input type a column's cells accept. Drives keyboard, input mode, and affix. */
|
|
703
|
+
type GridInputType = "text" | "number" | "currency" | "date";
|
|
704
|
+
interface GridColumn {
|
|
705
|
+
/** Stable key; the second-level key in the value object. */
|
|
706
|
+
key: string;
|
|
707
|
+
/** Header text shown above the column. */
|
|
708
|
+
label: string;
|
|
709
|
+
/** Cell input type. Defaults to `"text"`. */
|
|
710
|
+
inputType?: GridInputType;
|
|
711
|
+
/** Relative grid weight for this column (a `fr` unit). Defaults to `1`. */
|
|
712
|
+
width?: number;
|
|
713
|
+
/** Placeholder for this column's empty cells. */
|
|
714
|
+
placeholder?: string;
|
|
715
|
+
}
|
|
716
|
+
interface GridRow {
|
|
717
|
+
/** Stable key; the first-level key in the value object. */
|
|
718
|
+
key: string;
|
|
719
|
+
/** Row header text shown down the left edge. */
|
|
720
|
+
label: string;
|
|
721
|
+
}
|
|
722
|
+
/** Cell values, keyed `rowKey → columnKey → value`. */
|
|
723
|
+
type GridValue = Record<string, Record<string, string>>;
|
|
724
|
+
interface GridProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
725
|
+
/** Typed columns, left-to-right. */
|
|
726
|
+
columns: GridColumn[];
|
|
727
|
+
/** Labeled rows, top-to-bottom. */
|
|
728
|
+
rows: GridRow[];
|
|
729
|
+
/** Controlled cell values (`rowKey → columnKey → value`). */
|
|
730
|
+
value: GridValue;
|
|
731
|
+
/** Called with the full next value object whenever any cell changes. */
|
|
732
|
+
onChange: (value: GridValue) => void;
|
|
733
|
+
/** Accessible name for the matrix (also prefixes each cell's aria-label). */
|
|
734
|
+
ariaLabel?: string;
|
|
735
|
+
/** Header text for the top-left corner cell (above the row headers). */
|
|
736
|
+
rowHeaderLabel?: string;
|
|
737
|
+
/** Prefix shown inside `currency` cells. Defaults to `"$"`. */
|
|
738
|
+
currencySymbol?: string;
|
|
739
|
+
/** Minimum matrix width in px before it scrolls horizontally. Defaults to `560`. */
|
|
740
|
+
minWidth?: number;
|
|
741
|
+
/** Disable every cell. */
|
|
742
|
+
disabled?: boolean;
|
|
743
|
+
}
|
|
744
|
+
declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
745
|
+
|
|
746
|
+
interface SidebarBrandSwitcherItem {
|
|
747
|
+
/** Stable id used as React key and for `data-item` on each row. */
|
|
748
|
+
id: string;
|
|
749
|
+
/** Primary display name, e.g. "Assure Audit". */
|
|
750
|
+
name: string;
|
|
751
|
+
/** Sub-line under the name, e.g. "Audit fieldwork". */
|
|
752
|
+
tagline?: string;
|
|
753
|
+
/**
|
|
754
|
+
* Short label rendered inside the default tile glyph (first character
|
|
755
|
+
* is used, à la "A" for "Audit"). Ignored when `glyph` is supplied.
|
|
756
|
+
*/
|
|
757
|
+
short?: string;
|
|
758
|
+
/**
|
|
759
|
+
* Accent for the default tile background. A Tailwind class string
|
|
760
|
+
* (e.g. `"bg-[#5b3bc4]"`) — the consumer owns brand color values, the
|
|
761
|
+
* DS just composes them. Ignored when `glyph` is supplied.
|
|
762
|
+
*/
|
|
763
|
+
tone?: string;
|
|
764
|
+
/**
|
|
765
|
+
* Pre-rendered tile glyph. When provided, replaces the default
|
|
766
|
+
* "first letter on `tone` swatch" tile entirely. Use for items that
|
|
767
|
+
* have a real mark instead of a letter.
|
|
768
|
+
*/
|
|
769
|
+
glyph?: React$1.ReactNode;
|
|
770
|
+
/**
|
|
771
|
+
* Full-width identity node rendered in place of the tile + `name`
|
|
772
|
+
* — e.g. a product wordmark lockup (`<Logo href={null} …>`). When present
|
|
773
|
+
* the row omits the tile and the `name` text; `tagline` still renders
|
|
774
|
+
* beneath it. When absent the row falls back to tile + `name`.
|
|
775
|
+
*
|
|
776
|
+
* Framework-neutral like the rest of this composite: pass whatever element
|
|
777
|
+
* your stack renders (a DS `Logo`, a plain `<img>`, an inline SVG). The DS
|
|
778
|
+
* does not bind to it.
|
|
779
|
+
*/
|
|
780
|
+
identity?: React$1.ReactNode;
|
|
781
|
+
/**
|
|
782
|
+
* False marks the item as not-yet-available; rendered disabled with
|
|
783
|
+
* a "Soon" badge by default (override via `unavailableBadge`).
|
|
784
|
+
*/
|
|
785
|
+
available?: boolean;
|
|
786
|
+
/** Pass-through onto the row's `data-item` for analytics / e2e hooks. */
|
|
787
|
+
dataAttr?: string;
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* An external launcher row appended after the "Switch to" list — a non-suite
|
|
791
|
+
* entry with no availability / "Soon" semantics (e.g. a partner product reached
|
|
792
|
+
* by its own autologin URL rather than the suite's switch model). Vendor color
|
|
793
|
+
* lives in the consumer-owned `glyph`, keeping brand hex out of the DS.
|
|
794
|
+
*/
|
|
795
|
+
interface SidebarBrandSwitcherExtra {
|
|
796
|
+
/** Stable id — React key and default `data-item`. */
|
|
797
|
+
id: string;
|
|
798
|
+
/** Left glyph (a consumer-owned mark/tile). Vendor color belongs here. */
|
|
799
|
+
glyph?: React$1.ReactNode;
|
|
800
|
+
/**
|
|
801
|
+
* Full-width identity node rendered in place of the `glyph` + `name` — e.g. a
|
|
802
|
+
* product wordmark lockup (`<Logo href={null} …>`) — mirroring
|
|
803
|
+
* `SidebarBrandSwitcherItem.identity`. Use it so an external launcher row
|
|
804
|
+
* reads at the same size and on the same line as the suite product rows.
|
|
805
|
+
* When present, `tagline` still renders beneath it and `glyph`/`name` are
|
|
806
|
+
* omitted. Consumer-owned and framework-neutral like the rest of this slot.
|
|
807
|
+
*/
|
|
808
|
+
identity?: React$1.ReactNode;
|
|
809
|
+
/** Primary display name, e.g. "myCPE One". */
|
|
810
|
+
name: React$1.ReactNode;
|
|
811
|
+
/** Sub-line under the name. */
|
|
812
|
+
tagline?: React$1.ReactNode;
|
|
813
|
+
/** Invoked when the row is selected. The DS holds no opinion on what it does. */
|
|
814
|
+
onSelect: () => void;
|
|
815
|
+
/** Pass-through onto the row's `data-item` for analytics / e2e hooks. */
|
|
816
|
+
dataAttr?: string;
|
|
817
|
+
}
|
|
818
|
+
interface SidebarBrandSwitcherProps {
|
|
819
|
+
/**
|
|
820
|
+
* Brand glyph rendered at the left edge of the trigger (e.g. an
|
|
821
|
+
* `<img>` of the product mark). Consumer-supplied so the DS does
|
|
822
|
+
* not bind to a framework-specific image element.
|
|
823
|
+
*/
|
|
824
|
+
brand?: React$1.ReactNode;
|
|
825
|
+
/** Wordmark / label rendered next to the brand glyph in the trigger. */
|
|
826
|
+
label: React$1.ReactNode;
|
|
827
|
+
/**
|
|
828
|
+
* The currently-active item. Pinned at the top of the menu and
|
|
829
|
+
* excluded from the "Switch to" list automatically.
|
|
830
|
+
*/
|
|
831
|
+
current: SidebarBrandSwitcherItem;
|
|
832
|
+
/**
|
|
833
|
+
* Full item list including `current`. Order is preserved in the
|
|
834
|
+
* "Switch to" section; the current entry is filtered out.
|
|
835
|
+
*/
|
|
836
|
+
items: SidebarBrandSwitcherItem[];
|
|
837
|
+
/**
|
|
838
|
+
* Called when a non-current, available item is selected. Receives the
|
|
839
|
+
* full item so consumers can route, open a new window, or trigger an
|
|
840
|
+
* SSO handoff — the DS holds no opinion on what "switch" means.
|
|
841
|
+
*/
|
|
842
|
+
onLaunch?: (item: SidebarBrandSwitcherItem) => void | Promise<void>;
|
|
843
|
+
/**
|
|
844
|
+
* External launcher rows appended after the "Switch to" list — non-suite
|
|
845
|
+
* entries with no availability / "Soon" semantics. Each renders a consumer
|
|
846
|
+
* `glyph` + name + tagline and calls its own `onSelect`.
|
|
847
|
+
*/
|
|
848
|
+
extras?: SidebarBrandSwitcherExtra[];
|
|
849
|
+
/**
|
|
850
|
+
* Optional predicate reporting whether an item is mid-launch from an
|
|
851
|
+
* external source (e.g. a suite-focus provider that drives the launch itself).
|
|
852
|
+
* ORed with the row's internal launching state to show the "Opening…" badge
|
|
853
|
+
* and to guard against a double launch. Absent → only internal state applies.
|
|
854
|
+
*/
|
|
855
|
+
isLaunching?: (item: SidebarBrandSwitcherItem) => boolean;
|
|
856
|
+
/** Label above the current row. Defaults to "Currently using". */
|
|
857
|
+
currentSectionLabel?: React$1.ReactNode;
|
|
858
|
+
/** Label above the others list. Defaults to "Switch to". */
|
|
859
|
+
switchSectionLabel?: React$1.ReactNode;
|
|
860
|
+
/** Label at the very top of the menu. Defaults to "Suite". */
|
|
861
|
+
menuLabel?: React$1.ReactNode;
|
|
862
|
+
/** Badge text next to the current item. Defaults to "Current". */
|
|
863
|
+
currentBadge?: React$1.ReactNode;
|
|
864
|
+
/** Badge text on unavailable items. Defaults to "Soon". */
|
|
865
|
+
unavailableBadge?: React$1.ReactNode;
|
|
866
|
+
/** Accessible label on the trigger button. Defaults to "Switch product". */
|
|
867
|
+
triggerLabel?: string;
|
|
868
|
+
/** Extra classes applied to the outer brand-row wrapper. */
|
|
869
|
+
className?: string;
|
|
870
|
+
/** Extra classes applied to the trigger button. */
|
|
871
|
+
triggerClassName?: string;
|
|
872
|
+
/** Extra classes applied to the dropdown content panel. */
|
|
873
|
+
contentClassName?: string;
|
|
874
|
+
/**
|
|
875
|
+
* Extra classes applied to the current row, each "Switch to" product row, and
|
|
876
|
+
* each `extras` launcher row. Lets a consumer reproduce bespoke row
|
|
877
|
+
* padding/height via tailwind-merge without the DS owning that geometry, and
|
|
878
|
+
* keeps launcher rows aligned with the product rows.
|
|
879
|
+
*/
|
|
880
|
+
rowClassName?: string;
|
|
881
|
+
/**
|
|
882
|
+
* Slot rendered to the right of the trigger inside the brand row.
|
|
883
|
+
* Typical use: drop a `<SidebarPinButton/>` here.
|
|
884
|
+
*/
|
|
885
|
+
trailing?: React$1.ReactNode;
|
|
886
|
+
}
|
|
887
|
+
declare const SidebarBrandSwitcher: React$1.ForwardRefExoticComponent<SidebarBrandSwitcherProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
888
|
+
interface SidebarBrandSwitcherTileProps {
|
|
889
|
+
item: SidebarBrandSwitcherItem;
|
|
890
|
+
}
|
|
891
|
+
declare function SidebarBrandSwitcherTile({ item }: SidebarBrandSwitcherTileProps): react_jsx_runtime.JSX.Element;
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* DocumentDetailPanel — the right-hand inspector for a document request
|
|
895
|
+
* (the "FY2025 PBC — Receivables & Fixed Assets" panel). Presentational
|
|
896
|
+
* compound: the app owns data, tab state, and every action handler;
|
|
897
|
+
* compose only the rows a surface needs.
|
|
898
|
+
*
|
|
899
|
+
* <DocumentDetailPanel>
|
|
900
|
+
* <DocumentDetailHeader
|
|
901
|
+
* status={<Badge variant="success">Provided</Badge>}
|
|
902
|
+
* tags={<>…</>}
|
|
903
|
+
* onClose={close}
|
|
904
|
+
* >
|
|
905
|
+
* <DocumentDetailTitle>FY2025 PBC — Receivables & Fixed Assets</DocumentDetailTitle>
|
|
906
|
+
* <DocumentDetailRequester
|
|
907
|
+
* org="Acme Manufacturing LLC" avatar="AM"
|
|
908
|
+
* requestedBy="Maya Auditor" time="5d ago"
|
|
909
|
+
* />
|
|
910
|
+
* <DocumentDetailMetaRow>…due chip…2 assigned…</DocumentDetailMetaRow>
|
|
911
|
+
* <DocumentDetailActions>…Edit / Lock / Status / Delete…</DocumentDetailActions>
|
|
912
|
+
* </DocumentDetailHeader>
|
|
913
|
+
* <DocumentDetailBody>
|
|
914
|
+
* <Tabs>…</Tabs>
|
|
915
|
+
* <DocumentList>
|
|
916
|
+
* <DocumentListSection label="Client uploads" count={2}>
|
|
917
|
+
* <DocumentRow fileName="…" meta="…" actions={<…/>} />
|
|
918
|
+
* </DocumentListSection>
|
|
919
|
+
* </DocumentList>
|
|
920
|
+
* </DocumentDetailBody>
|
|
921
|
+
* </DocumentDetailPanel>
|
|
922
|
+
*
|
|
923
|
+
* Tabs (Documents / Comments / Activity) use the `Tabs` primitive — this
|
|
924
|
+
* composite doesn't reinvent them. Status / priority chips are `Badge`s.
|
|
925
|
+
*/
|
|
926
|
+
type DocumentDetailPanelProps = React.HTMLAttributes<HTMLElement>;
|
|
927
|
+
declare const DocumentDetailPanel: React$1.ForwardRefExoticComponent<DocumentDetailPanelProps & React$1.RefAttributes<HTMLElement>>;
|
|
928
|
+
interface DocumentDetailHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
929
|
+
/** Leading chips — folder, priority, classification (left of the bar). */
|
|
930
|
+
tags?: React.ReactNode;
|
|
931
|
+
/** Status pill, right-aligned (e.g. a "Provided" success Badge). */
|
|
932
|
+
status?: React.ReactNode;
|
|
933
|
+
onClose?: () => void;
|
|
934
|
+
}
|
|
935
|
+
declare const DocumentDetailHeader: React$1.ForwardRefExoticComponent<DocumentDetailHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
936
|
+
type DocumentDetailTitleProps = React.HTMLAttributes<HTMLHeadingElement>;
|
|
937
|
+
declare const DocumentDetailTitle: React$1.ForwardRefExoticComponent<DocumentDetailTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
938
|
+
interface DocumentDetailRequesterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
939
|
+
/** Image src, or initials/name passed through to <Avatar>. */
|
|
940
|
+
avatar: string;
|
|
941
|
+
/** Client / organisation name — the primary line. */
|
|
942
|
+
org: string;
|
|
943
|
+
/** Who requested the document. */
|
|
944
|
+
requestedBy: string;
|
|
945
|
+
/** Relative time, e.g. "5d ago". */
|
|
946
|
+
time: string;
|
|
947
|
+
}
|
|
948
|
+
declare const DocumentDetailRequester: React$1.ForwardRefExoticComponent<DocumentDetailRequesterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
949
|
+
type DocumentDetailMetaRowProps = React.HTMLAttributes<HTMLDivElement>;
|
|
950
|
+
declare const DocumentDetailMetaRow: React$1.ForwardRefExoticComponent<DocumentDetailMetaRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
951
|
+
type DocumentDetailActionsProps = React.HTMLAttributes<HTMLDivElement>;
|
|
952
|
+
declare const DocumentDetailActions: React$1.ForwardRefExoticComponent<DocumentDetailActionsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
953
|
+
type DocumentDetailBodyProps = React.HTMLAttributes<HTMLDivElement>;
|
|
954
|
+
declare const DocumentDetailBody: React$1.ForwardRefExoticComponent<DocumentDetailBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
955
|
+
type DocumentListProps = React.HTMLAttributes<HTMLDivElement>;
|
|
956
|
+
declare const DocumentList: React$1.ForwardRefExoticComponent<DocumentListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
957
|
+
interface DocumentListSectionProps extends React.HTMLAttributes<HTMLElement> {
|
|
958
|
+
/** Section label, e.g. "Client uploads". */
|
|
959
|
+
label: React.ReactNode;
|
|
960
|
+
/** Count shown next to the label. */
|
|
961
|
+
count?: number;
|
|
962
|
+
/** Trailing slot, right-aligned (e.g. an "Upload" button). */
|
|
963
|
+
action?: React.ReactNode;
|
|
964
|
+
}
|
|
965
|
+
declare const DocumentListSection: React$1.ForwardRefExoticComponent<DocumentListSectionProps & React$1.RefAttributes<HTMLElement>>;
|
|
966
|
+
interface DocumentRowProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
967
|
+
/** File name — the row's primary line. */
|
|
968
|
+
fileName: string;
|
|
969
|
+
/** Secondary line, e.g. "320 KB · Jun 11, 2026 · Acme Manufacturing". */
|
|
970
|
+
meta?: React.ReactNode;
|
|
971
|
+
/** Leading file-type icon; defaults to a neutral document glyph. */
|
|
972
|
+
icon?: React.ReactNode;
|
|
973
|
+
/** Render the row in its approved state — a green file-icon chip plus an
|
|
974
|
+
* "Approved" tag after the file name. */
|
|
975
|
+
approved?: boolean;
|
|
976
|
+
/** Render the row in its rejected state — a red file-icon chip plus a
|
|
977
|
+
* "Rejected" tag after the file name. Ignored when `approved` is set. */
|
|
978
|
+
rejected?: boolean;
|
|
979
|
+
/** Trailing action controls (Extract / preview / download / delete). */
|
|
980
|
+
actions?: React.ReactNode;
|
|
981
|
+
}
|
|
982
|
+
declare const DocumentRow: React$1.ForwardRefExoticComponent<DocumentRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
983
|
+
|
|
984
|
+
/**
|
|
985
|
+
* Brand scope — ambient product theming.
|
|
986
|
+
*
|
|
987
|
+
* The `brand` color family (bg-brand, hover:bg-brand-hover, bg-brand-bg,
|
|
988
|
+
* border-brand-line, text-fg-on-brand, plus the accent/focus/primary
|
|
989
|
+
* interaction tokens) follows the nearest `[data-brand]` scope and defaults to
|
|
990
|
+
* Pro. Authors type the STATE only; the product comes from the scope. Set it
|
|
991
|
+
* once high in the tree — ideally on the same root as the `.dark` class
|
|
992
|
+
* (`<html>`/`<body>`) — so Radix-portalled surfaces inherit it through the DOM.
|
|
993
|
+
*
|
|
994
|
+
* <html data-brand="tax"> // whole shell renders teal
|
|
995
|
+
* <div {...brandScope("audit")}> // a subtree renders blue
|
|
996
|
+
*
|
|
997
|
+
* For the rarer case of multiple scopes on one page WITH portalled content
|
|
998
|
+
* (a Dialog/Popover that escapes its scoped subtree to document.body), wrap the
|
|
999
|
+
* region in <BrandScope> / <BrandScopeProvider> and have the portalled
|
|
1000
|
+
* `*Content` re-stamp `data-brand={useBrandScope()}` on its own element.
|
|
1001
|
+
*/
|
|
1002
|
+
type BrandProduct = "pro" | "audit" | "books" | "tax";
|
|
1003
|
+
/**
|
|
1004
|
+
* `data-brand` attribute object to spread on any element (mirrors
|
|
1005
|
+
* `serviceToneStyle`). This is the primary API for opting a subtree into a
|
|
1006
|
+
* product without naming the product in a utility class.
|
|
1007
|
+
*/
|
|
1008
|
+
declare function brandScope(product: BrandProduct): {
|
|
1009
|
+
"data-brand": BrandProduct;
|
|
1010
|
+
};
|
|
1011
|
+
/** Every product, in suite order — for switchers and story matrices. */
|
|
1012
|
+
declare const BRAND_PRODUCTS: BrandProduct[];
|
|
1013
|
+
/** Human label for a product, for switchers and headings. */
|
|
1014
|
+
declare const brandLabel: Record<BrandProduct, string>;
|
|
1015
|
+
/**
|
|
1016
|
+
* Provides the active product to descendants so portalled surfaces can
|
|
1017
|
+
* re-stamp `data-brand` on themselves via {@link useBrandScope}. Purely a
|
|
1018
|
+
* structural carrier — the visual theming still comes from the `[data-brand]`
|
|
1019
|
+
* attribute in the DOM, not from this context.
|
|
1020
|
+
*/
|
|
1021
|
+
declare function BrandScopeProvider({ product, children, }: {
|
|
1022
|
+
product: BrandProduct;
|
|
1023
|
+
children: React.ReactNode;
|
|
1024
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1025
|
+
/** Read the ambient product from the nearest provider (defaults to Pro). */
|
|
1026
|
+
declare function useBrandScope(): BrandProduct;
|
|
1027
|
+
interface BrandScopeProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1028
|
+
/** The product this subtree renders as. */
|
|
1029
|
+
product: BrandProduct;
|
|
1030
|
+
}
|
|
1031
|
+
/**
|
|
1032
|
+
* Convenience wrapper that stamps `data-brand` on a `<div>` AND provides the
|
|
1033
|
+
* product via context, so a portalled descendant can re-stamp itself. Use
|
|
1034
|
+
* `brandScope()` directly when you want the attribute on your own element.
|
|
1035
|
+
*/
|
|
1036
|
+
declare const BrandScope: React$1.ForwardRefExoticComponent<BrandScopeProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1037
|
+
|
|
1038
|
+
export { type ProposalBillingTermsProps as $, type AgreementFirm as A, BRAND_PRODUCTS as B, ClientSelect as C, DocumentDetailActions as D, type DocumentDetailPanelProps as E, DocumentDetailRequester as F, type DocumentDetailRequesterProps as G, DocumentDetailTitle as H, type DocumentDetailTitleProps as I, DocumentList as J, type DocumentListProps as K, DocumentListSection as L, type DocumentListSectionProps as M, DocumentRow as N, type DocumentRowProps as O, Grid as P, type GridColumn as Q, type GridInputType as R, type GridProps as S, type GridRow as T, type GridValue as U, Logo as V, ProposalAddOn as W, type ProposalAddOnProps as X, type ProposalBillingMode as Y, type ProposalBillingRow as Z, ProposalBillingTerms as _, AgreementPaneHeading as a, ProposalConsentGate as a0, type ProposalConsentGateProps as a1, ProposalCustomPage as a2, type ProposalCustomPageKind as a3, type ProposalCustomPageProps as a4, ProposalNote as a5, type ProposalNoteProps as a6, ProposalPackageCard as a7, type ProposalPackageCardProps as a8, type ProposalPackageMode as a9, type QuestionsProps as aA, SidebarBrandSwitcher as aB, type SidebarBrandSwitcherExtra as aC, type SidebarBrandSwitcherItem as aD, type SidebarBrandSwitcherProps as aE, SidebarBrandSwitcherTile as aF, brandLabel as aG, brandScope as aH, useBrandScope as aI, ProposalPaymentCapture as aa, type ProposalPaymentCaptureProps as ab, ProposalPricingSummary as ac, type ProposalPricingSummaryProps as ad, ProposalServiceRow as ae, type ProposalServiceRowProps as af, ProposalSignatureBlock as ag, type ProposalSignatureBlockProps as ah, type ProposalSigner as ai, ProposalSignerList as aj, type ProposalSignerListProps as ak, type ProposalSignerStatus as al, QUESTION_TYPES as am, QUESTION_TYPE_CONTRACT_VERSION as an, type QuestionAddressValue as ao, type QuestionFileValue as ap, type QuestionHelp as aq, type QuestionLabeledColumn as ar, type QuestionLabeledRow as as, type QuestionLabeledValue as at, type QuestionNameValue as au, type QuestionOption as av, type QuestionTableColumn as aw, type QuestionTableRow as ax, type QuestionType as ay, Questions as az, type AgreementPaneHeadingProps as b, type AgreementStatus as c, type AgreementStep as d, AgreementViewer as e, type AgreementViewerProps as f, AssureAuditBrandIcon as g, AssureBooksBrandIcon as h, AssureProBrandIcon as i, AssureTaxBrandIcon as j, type BrandIconProps as k, type BrandProduct as l, BrandScope as m, type BrandScopeProps as n, BrandScopeProvider as o, type ClientSelectOption as p, ComingSoon as q, type ComingSoonProps as r, type DocumentDetailActionsProps as s, DocumentDetailBody as t, type DocumentDetailBodyProps as u, DocumentDetailHeader as v, type DocumentDetailHeaderProps as w, DocumentDetailMetaRow as x, type DocumentDetailMetaRowProps as y, DocumentDetailPanel as z };
|