@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
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ The single source of truth for visual design across all Assure products.
|
|
|
16
16
|
- [**`docs/integration/css.md`**](./docs/integration/css.md) — how an application loads our CSS: layer order, import sequence, the compatibility preset, removing `@source`, runtime brand theming.
|
|
17
17
|
- [**`docs/testing.md`**](./docs/testing.md) — rendering the real package in your app's Jest tests (`@assure-one/design-system/testing`, experimental).
|
|
18
18
|
- [**`docs/forms.md`**](./docs/forms.md) — building a form: `Field` + design-system controls + a Server Action + zod, reset and `required`, what each control submits, and testing it with `fillField` / `selectOption` / `pickDate`.
|
|
19
|
+
- [**`docs/data-tables.md`**](./docs/data-tables.md) — building a data table: the headless `useDataTable` controller (sorting, pagination, search, selection, column visibility, filters — each controllable), server `manual` mode, and the URL-state recipe.
|
|
19
20
|
- [**`docs/design-system/icons.md`**](./docs/design-system/icons.md) — the icon catalogue and its server-safe entry (`@assure-one/design-system/icons`, experimental): import an icon in a Server Component without a client boundary.
|
|
20
21
|
- [**`docs/adr/010-design-system-provider.md`**](./docs/adr/010-design-system-provider.md) — the optional `DesignSystemProvider` (messages, locale, link adapter) and the `/next` entry; the quick start is [below](#the-provider-and-the-next-entry-experimental).
|
|
21
22
|
- [**`claude-skills/`**](./claude-skills) — drop-in Claude Code skill for consuming projects.
|
|
@@ -52,14 +53,14 @@ Alongside it, the package now also publishes the individual stylesheets the new
|
|
|
52
53
|
CSS mode is built from. They are **experimental**: nothing requires them yet,
|
|
53
54
|
no component reads them, and importing them changes nothing on its own.
|
|
54
55
|
|
|
55
|
-
| Subpath
|
|
56
|
-
|
|
|
57
|
-
| `./css/tokens.css`
|
|
58
|
-
| `./css/legacy-aliases.css` | Read-aliases from today's token names to the namespaced ones (`--color-surface: var(--ds-color-surface)`), for as long as your own CSS reads design-system token names.
|
|
59
|
-
| `./css/tailwind.css`
|
|
60
|
-
| `./css/shadcn.css`
|
|
61
|
-
| `./css/base.css`
|
|
62
|
-
| `./css/components.css`
|
|
56
|
+
| Subpath | What it is |
|
|
57
|
+
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
58
|
+
| `./css/tokens.css` | The `--ds-*` design tokens: `:root`, the colour scheme scope and the brand scopes. Usable without any component. |
|
|
59
|
+
| `./css/legacy-aliases.css` | Read-aliases from today's token names to the namespaced ones (`--color-surface: var(--ds-color-surface)`), for as long as your own CSS reads design-system token names. |
|
|
60
|
+
| `./css/tailwind.css` | A Tailwind `@theme` bridge, so `bg-surface/40`, `hover:text-fg-3` and `rounded-control` compile in _your_ build instead of silently producing nothing. |
|
|
61
|
+
| `./css/shadcn.css` | The app-vocabulary bridge: `background`, `foreground`, `primary`, `muted`, `destructive`, the radius scale and the rest, each reading one `--app-*` input you can override. |
|
|
62
|
+
| `./css/base.css` | Optional document defaults: body background, ink, font and `color-scheme`. Ships no preflight, no element rules and no font import. |
|
|
63
|
+
| `./css/components.css` | The component utilities compiled with Tailwind's `ds` prefix (`ds:flex`, `ds:bg-surface`), inside `@layer ds` and bound to the `--ds-*` tokens. **Unused until the class-vocabulary flip (W1-11):** no component emits a prefixed class yet, so importing it styles nothing. Published so the file, its size and its hygiene can be reviewed before the flip. |
|
|
63
64
|
|
|
64
65
|
Import order is `tokens.css` → `legacy-aliases.css` (optional) → `tailwind.css`
|
|
65
66
|
→ `shadcn.css` (optional) → `base.css` (optional) → `components.css`, after your own
|
|
@@ -88,6 +89,21 @@ canvas, and guarantees WCAG AA for every foreground it emits. The seed shape is
|
|
|
88
89
|
gated by decision D7 and may change while that decision is open — see
|
|
89
90
|
[`docs/integration/css.md`](./docs/integration/css.md#5-runtime-brand-theming).
|
|
90
91
|
|
|
92
|
+
### Brand artwork
|
|
93
|
+
|
|
94
|
+
The Assure wordmarks and marks `Logo` renders ship inside the package, under
|
|
95
|
+
`public/brand/`. They are served by your app, not imported, so copy them once
|
|
96
|
+
into your public folder:
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
cp -R node_modules/@assure-one/design-system/public/brand public/brand
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
An app served from a subpath calls `setAssetBasePath("/my-base")` once before
|
|
103
|
+
first render instead of (or as well as) moving the files. A `Logo` whose
|
|
104
|
+
artwork does not load falls back to the brand glyph + text lockup, so nothing
|
|
105
|
+
is required to get a readable lockup.
|
|
106
|
+
|
|
91
107
|
### The provider and the `/next` entry (experimental)
|
|
92
108
|
|
|
93
109
|
Nothing requires a provider: every component renders English strings, formats
|
|
@@ -119,11 +135,11 @@ export default function RootLayout({ children }) {
|
|
|
119
135
|
|
|
120
136
|
- **`messages`** — any subset of the typed catalogue `DsMessages`, by component
|
|
121
137
|
namespace (`select`, `searchInput`, `combobox`, `field`, `fileUpload`; more
|
|
122
|
-
join as the overlays adopt it). Resolution is always
|
|
123
|
-
provider > English
|
|
138
|
+
join as the overlays adopt it). Resolution is always _component prop >
|
|
139
|
+
provider > English default_, per key. The full English list is
|
|
124
140
|
`src/foundation/messages/en.json`; parameterised messages are functions
|
|
125
141
|
(`combobox.create: (query) => string`).
|
|
126
|
-
- **`locale`** — a BCP 47 tag, default `"en-US"` on the server
|
|
142
|
+
- **`locale`** — a BCP 47 tag, default `"en-US"` on the server _and_ the client.
|
|
127
143
|
Pass the locale your app already knows server-side; the design system never
|
|
128
144
|
reads `navigator.language` during render, so server and client HTML agree.
|
|
129
145
|
- **`linkComponent` / `imageComponent`** — what `LinkButton` and `Logo` render
|
|
@@ -136,6 +152,34 @@ export default function RootLayout({ children }) {
|
|
|
136
152
|
the props. `toasts` mounts the toast region for `useToast()`; leave it off if
|
|
137
153
|
you already render `ToastProvider`.
|
|
138
154
|
|
|
155
|
+
## Lint configs for consumers
|
|
156
|
+
|
|
157
|
+
Two shareable configs ship with the package (**experimental**, W7-18) so a
|
|
158
|
+
product lints for the same things this repository ratchets on itself. Every
|
|
159
|
+
rule is a **warning**: adopt it on the code you have, record the count, and
|
|
160
|
+
ratchet it down.
|
|
161
|
+
|
|
162
|
+
```js
|
|
163
|
+
// eslint.config.mjs
|
|
164
|
+
import ds from "@assure-one/design-system/eslint-config";
|
|
165
|
+
export default [...ds.configs.recommended];
|
|
166
|
+
|
|
167
|
+
// stylelint.config.mjs (stylelint is yours — an optional peer dependency here)
|
|
168
|
+
export { default } from "@assure-one/design-system/stylelint-config";
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
| Rule | Reports |
|
|
172
|
+
| ---------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
173
|
+
| `ds/no-raw-controls` | raw `<button>`, `<input>`, `<select>`, `<textarea>` where a design-system control exists |
|
|
174
|
+
| `ds/no-radix-imports` | a direct `@radix-ui/*` import instead of the primitive that wraps it |
|
|
175
|
+
| `ds/no-deep-imports` | an import past the published entries (`dist/…`, `src/…` — ADR-011) |
|
|
176
|
+
| `ds/no-ds-token-redefinition` | a `--ds-*` token set inline, outside a file under `presets/` |
|
|
177
|
+
| `assure-ds/no-ds-token-redefinition` | the same in CSS (stylelint; `presets/` and `*.preset.css` are exempt) |
|
|
178
|
+
| `assure-ds/no-important-on-ds-selectors` | `!important` on a `ds:`/`data-slot` selector — pass `className`/`classNames` instead |
|
|
179
|
+
|
|
180
|
+
Raise a rule to `"error"` in your own config once you are clean. Adoption per
|
|
181
|
+
app is tracked as W7-19.
|
|
182
|
+
|
|
139
183
|
## Develop
|
|
140
184
|
|
|
141
185
|
```bash
|
|
@@ -153,11 +197,11 @@ See [`CONTRIBUTING.md`](./CONTRIBUTING.md) for the full dev loop, including iter
|
|
|
153
197
|
3-tier token system, authored as DTCG JSON in [`tokens/src`](./tokens/README.md)
|
|
154
198
|
and generated into `src/tokens/` and the `./css/*` entries (ADR-003):
|
|
155
199
|
|
|
156
|
-
| Tier
|
|
157
|
-
|
|
|
158
|
-
| reference
|
|
159
|
-
| system (semantic) | `--ds-color-action-brand-bg: var(--ds-ref-brand-pro-fg)` | the reference tier; **this is the public contract**
|
|
160
|
-
| component
|
|
200
|
+
| Tier | Example (namespaced name → value) | Reads |
|
|
201
|
+
| ----------------- | -------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
202
|
+
| reference | `--ds-ref-brand-pro-fg: #6c42f8` | a literal; the raw ramps, one per brand |
|
|
203
|
+
| system (semantic) | `--ds-color-action-brand-bg: var(--ds-ref-brand-pro-fg)` | the reference tier; **this is the public contract** |
|
|
204
|
+
| component | `--ds-menu-item-hover-bg: var(--ds-color-canvas-sunken)` | the system tier; only where a component must be themable on its own |
|
|
161
205
|
|
|
162
206
|
Components consume **system tokens**, never reference values directly. Themes
|
|
163
207
|
(colour scheme, per-product brand, a runtime brand from `createBrandTheme()`)
|
package/codemods/README.md
CHANGED
|
@@ -107,27 +107,62 @@ the list a human has to pick up — spread props, dynamic expressions, conflicti
|
|
|
107
107
|
|
|
108
108
|
## Codemods
|
|
109
109
|
|
|
110
|
-
| Id | Class | What it does
|
|
111
|
-
| ----- | ----- |
|
|
112
|
-
| CM-
|
|
113
|
-
| CM-
|
|
114
|
-
| CM-
|
|
115
|
-
| CM-
|
|
116
|
-
| CM-
|
|
117
|
-
| CM-
|
|
118
|
-
| CM-
|
|
119
|
-
| CM-
|
|
120
|
-
| CM-
|
|
121
|
-
| CM-
|
|
110
|
+
| Id | Class | What it does |
|
|
111
|
+
| ----- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
112
|
+
| CM-01 | R | Root imports of suite, legacy and product-owned names → `@assure-one/design-system/suite` and `/legacy` (same references, pure path change); `import * as DS` → report |
|
|
113
|
+
| CM-05 | A | Button family `iconLeft` / `iconRight` → `iconStart` / `iconEnd` (pure rename; both names of one slot, spreads → "could not be transformed") |
|
|
114
|
+
| CM-13 | A | `Tooltip delayMs` → `delayDuration` (pure rename, literal or dynamic value; both names, spreads → "could not be transformed") |
|
|
115
|
+
| CM-07 | A | `inputSize` → `size` on `Input`, `Textarea`, `SearchInput` (pure rename, literal or dynamic value; both names, spreads → "could not be transformed") |
|
|
116
|
+
| CM-02 | A | Button explicit default size: `size="md"` on every `Button`, `SubmitButton` and `LinkButton` that passes no `size` (pixel-neutral) |
|
|
117
|
+
| CM-04 | R | Button family legacy `variant` → `variant` + `intent` pair (`primary` → `solid`, `destructive` → `solid` + `danger`, …); `accent`, `dashed`, dynamic → report |
|
|
118
|
+
| CM-06 | R | `tone` → `intent` on StatusDot, IconTile, Spinner, SegmentedProgress, SuiteProgress (`pro` → `brand`, listed for review); product hues → report |
|
|
119
|
+
| CM-19 | R | ProgressBar/ProgressRing: `variant` → `intent`, and the value → colour rule written down as an explicit `intent` where the value is a literal; dynamic values → report |
|
|
120
|
+
| CM-12 | R | Button `type="submit"` where the intent is evident (inside `<form>` in the same file, no `onClick`); everything else untyped → report |
|
|
121
|
+
| CM-10 | R | `DatePicker onChange={e => f(e.target.value)}` → `onValueChange={value => f(value)}` for the recognisable arrow shapes; handlers by reference, other shapes → report |
|
|
122
|
+
| CM-08 | R | `SearchSelect` → `Combobox`: single-mode call sites rewritten (tag, import, `{id,label}` accessors, placeholder → `aria-label`); multi API, extras and unnamed sites → report |
|
|
122
123
|
| CM-09 | R | `SideDrawer` → `Sheet`: drawers with a `SideDrawer.Header` rewritten (root → `Sheet` + `SheetContent side size`, `onClose` → `onOpenChange`, header → `SheetHeader`/`SheetTitle`/`SheetDescription`, Body/Footer → `SheetBody`/`SheetFooter`, import); no header, dynamic width, spreads → report |
|
|
123
|
-
| CM-
|
|
124
|
-
| CM-
|
|
125
|
-
| CM-
|
|
126
|
-
| CM-
|
|
124
|
+
| CM-18 | A | `DataTable*` presentational parts → `Table*` (`DataTableHead` → `TableHeader`, `Body`, `Row`, `Cell`, `DataTableHeader` → `TableHead`) where the mapping is 1:1; uncontrolled sorting, a dynamic `sortable` and spreads → "could not be transformed" |
|
|
125
|
+
| CM-14 | X | hidden-input mirror finder: hidden `<input name>` a consumer added because a design-system control posts nothing |
|
|
126
|
+
| CM-15 | X | DOM-selector finder: consumer code that depends on the internal DOM of design-system components, mapped to registry `C-DOM-*` ids |
|
|
127
|
+
| CM-16 | X | `globals.css` analyser: `@source` into the package, duplicate preflight, colliding `@theme` keys, unlayered globals, legacy `var()` |
|
|
128
|
+
| CM-20 | X | Select sentinel finder: option values standing in for "no value", and the line where each is converted back |
|
|
127
129
|
|
|
128
130
|
The remaining ids of plan §29 land with the waves that ship their replacement
|
|
129
131
|
APIs.
|
|
130
132
|
|
|
133
|
+
### CM-01 — root imports → `/suite` and `/legacy`
|
|
134
|
+
|
|
135
|
+
Class R. W8-02 gave the shared Assure patterns the `/suite` entry and the
|
|
136
|
+
frozen and product-owned modules `/legacy`. Both are re-export barrels over the
|
|
137
|
+
same module instances the root exports, so moving an import is a pure path
|
|
138
|
+
change: no duplicated React context, no behaviour difference. The root keeps
|
|
139
|
+
every name through 1.x (registry `C-ROOT-SUITE`) and drops them in 2.0, so
|
|
140
|
+
running this codemod early costs nothing and running it late is a 2.0 blocker.
|
|
141
|
+
|
|
142
|
+
```tsx
|
|
143
|
+
import { Button, AgreementViewer, TimeLogger } from "@assure-one/design-system";
|
|
144
|
+
// becomes
|
|
145
|
+
import { Button } from "@assure-one/design-system";
|
|
146
|
+
import { AgreementViewer } from "@assure-one/design-system/suite";
|
|
147
|
+
import { TimeLogger } from "@assure-one/design-system/legacy";
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
A declaration whose names all move keeps its shape and only its module
|
|
151
|
+
specifier changes. `import type`, per-specifier `type` prefixes, aliases,
|
|
152
|
+
quote style and a default import are preserved; the default import stays on the
|
|
153
|
+
root.
|
|
154
|
+
|
|
155
|
+
| rule | action | severity | meaning |
|
|
156
|
+
| ------------------ | ------- | -------- | --------------------------------------------------------------------------------- |
|
|
157
|
+
| `moved-to-suite` | applied | low | shared Assure patterns now import from `/suite` |
|
|
158
|
+
| `moved-to-legacy` | applied | low | frozen modules with no known consumer now import from `/legacy` |
|
|
159
|
+
| `product-owned` | applied | medium | the import moved to `/legacy`, but the module is leaving for a product repository |
|
|
160
|
+
| `namespace-import` | review | high | `import * as DS` cannot be split; import the moved members by name first |
|
|
161
|
+
|
|
162
|
+
Which entry owns which name comes from `codemods/lib/entry-map.mjs`, generated
|
|
163
|
+
from `architecture/entry-map.json` by `pnpm entry-map`, so an installed copy of
|
|
164
|
+
the codemod always carries the map of its own design-system version.
|
|
165
|
+
|
|
131
166
|
### CM-05 — Button family `iconLeft` / `iconRight` → `iconStart` / `iconEnd`
|
|
132
167
|
|
|
133
168
|
Class A. W3-07 named the two icon slots of `Button`, `LinkButton` and
|
|
@@ -493,6 +528,45 @@ Not touched: elements already on `Sheet` (idempotency), local components with
|
|
|
493
528
|
the same name, test files. The rewritten children are re-indented one level;
|
|
494
529
|
run the project's formatter afterwards.
|
|
495
530
|
|
|
531
|
+
### CM-18 — `DataTable*` parts → `Table*`
|
|
532
|
+
|
|
533
|
+
Class A. W6-03 made the `DataTable*` table parts aliases of the `Table*` parts
|
|
534
|
+
(contract C-DT-PARTS, removed in 3.0): one styling source, the same props. The
|
|
535
|
+
1:1 parts are a pure rename — tag, closing tag and the named import:
|
|
536
|
+
|
|
537
|
+
| from | to |
|
|
538
|
+
| ----------------- | ------------- |
|
|
539
|
+
| `DataTableHead` | `TableHeader` |
|
|
540
|
+
| `DataTableBody` | `TableBody` |
|
|
541
|
+
| `DataTableRow` | `TableRow` |
|
|
542
|
+
| `DataTableCell` | `TableCell` |
|
|
543
|
+
| `DataTableHeader` | `TableHead` |
|
|
544
|
+
|
|
545
|
+
`DataTableHeader sortable sort={…} onSortChange={…}` loses the `sortable`
|
|
546
|
+
attribute: `TableHead` sorts whenever `sort` is passed (`null` = sortable, not
|
|
547
|
+
sorted). What changes in the DOM is the `data-slot` value (`table-*` instead of
|
|
548
|
+
`data-table-*`) and the dropped `scope="col"` — a `<th>` in a `<thead>` is a
|
|
549
|
+
column header already. Classes and pixels are the same, because since W6-03 the
|
|
550
|
+
`DataTable*` parts render the `Table*` parts.
|
|
551
|
+
|
|
552
|
+
| rule | Contract | What happens |
|
|
553
|
+
| -------------- | ---------- | -------------------------------------------------------------- |
|
|
554
|
+
| `part-renamed` | C-DT-PARTS | tag, closing tag and the named import rewritten (applied, low) |
|
|
555
|
+
|
|
556
|
+
Reported under "could not be transformed": `DataTableHeader sortable` with no
|
|
557
|
+
controlled `sort`, or with `defaultSort` (`uncontrolled-sort` — `TableHead` has
|
|
558
|
+
no uncontrolled sort state; wire `sort` + `onSortChange`, e.g. from
|
|
559
|
+
`useDataTable`); `sortable={expr}` (`dynamic-sortable`); a spread on the header
|
|
560
|
+
(`spread-props`).
|
|
561
|
+
|
|
562
|
+
Not touched: the parts that are not parallel copies of a `Table*` part —
|
|
563
|
+
`DataTable` (the card frame), `DataTableToolbar`, `DataTableSearch`,
|
|
564
|
+
`DataTableSpacer`, `DataTableResultsCount`, `DataTableCellName` / `CellMono` /
|
|
565
|
+
`CellId` / `CellDue`, `DataTableCheckbox`, `DataTablePagination` — an aliased
|
|
566
|
+
import (`DataTableCell as Cell`), a namespace import, local components with the
|
|
567
|
+
same names, and test files. A file that still refers to the old name as a value
|
|
568
|
+
(`typeof DataTableCell`) keeps its import and gains the new name next to it.
|
|
569
|
+
|
|
496
570
|
### CM-15 — DOM-selector finder
|
|
497
571
|
|
|
498
572
|
Report-only. It never modifies a file; the runner throws if it tries. What it
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by scripts/architecture/entry-map.mjs from architecture/entry-map.json
|
|
3
|
+
* — do not edit. `pnpm entry-map` rewrites it; `pnpm entry-map:check` fails
|
|
4
|
+
* when it is stale.
|
|
5
|
+
*
|
|
6
|
+
* The half of the entry map CM-01 needs, published inside the package so a
|
|
7
|
+
* consumer runs the codemod that matches its design-system version (W8-01/02).
|
|
8
|
+
*/
|
|
9
|
+
export const ENTRY_SPECIFIER = {
|
|
10
|
+
suite: "@assure-one/design-system/suite",
|
|
11
|
+
legacy: "@assure-one/design-system/legacy",
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** Public root export → the entry that owns it. Root-owned names are absent. */
|
|
15
|
+
export const ENTRY_BY_SYMBOL = {
|
|
16
|
+
AgreementFirm: "suite",
|
|
17
|
+
AgreementPaneHeading: "suite",
|
|
18
|
+
AgreementPaneHeadingProps: "suite",
|
|
19
|
+
AgreementStatus: "suite",
|
|
20
|
+
AgreementStep: "suite",
|
|
21
|
+
AgreementViewer: "suite",
|
|
22
|
+
AgreementViewerProps: "suite",
|
|
23
|
+
ProposalAddOn: "suite",
|
|
24
|
+
ProposalAddOnProps: "suite",
|
|
25
|
+
ProposalBillingMode: "suite",
|
|
26
|
+
ProposalBillingRow: "suite",
|
|
27
|
+
ProposalBillingTerms: "suite",
|
|
28
|
+
ProposalBillingTermsProps: "suite",
|
|
29
|
+
ProposalConsentGate: "suite",
|
|
30
|
+
ProposalConsentGateProps: "suite",
|
|
31
|
+
ProposalCustomPage: "suite",
|
|
32
|
+
ProposalCustomPageKind: "suite",
|
|
33
|
+
ProposalCustomPageProps: "suite",
|
|
34
|
+
ProposalNote: "suite",
|
|
35
|
+
ProposalNoteProps: "suite",
|
|
36
|
+
ProposalPackageCard: "suite",
|
|
37
|
+
ProposalPackageCardProps: "suite",
|
|
38
|
+
ProposalPackageMode: "suite",
|
|
39
|
+
ProposalPaymentCapture: "suite",
|
|
40
|
+
ProposalPaymentCaptureProps: "suite",
|
|
41
|
+
ProposalPricingSummary: "suite",
|
|
42
|
+
ProposalPricingSummaryProps: "suite",
|
|
43
|
+
ProposalServiceRow: "suite",
|
|
44
|
+
ProposalServiceRowProps: "suite",
|
|
45
|
+
ProposalSignatureBlock: "suite",
|
|
46
|
+
ProposalSignatureBlockProps: "suite",
|
|
47
|
+
ProposalSigner: "suite",
|
|
48
|
+
ProposalSignerList: "suite",
|
|
49
|
+
ProposalSignerListProps: "suite",
|
|
50
|
+
ProposalSignerStatus: "suite",
|
|
51
|
+
Grid: "suite",
|
|
52
|
+
GridColumn: "suite",
|
|
53
|
+
GridInputType: "suite",
|
|
54
|
+
GridProps: "suite",
|
|
55
|
+
GridRow: "suite",
|
|
56
|
+
GridValue: "suite",
|
|
57
|
+
QUESTION_TYPES: "suite",
|
|
58
|
+
QUESTION_TYPE_CONTRACT_VERSION: "suite",
|
|
59
|
+
QuestionAddressValue: "suite",
|
|
60
|
+
QuestionFileValue: "suite",
|
|
61
|
+
QuestionHelp: "suite",
|
|
62
|
+
QuestionLabeledColumn: "suite",
|
|
63
|
+
QuestionLabeledRow: "suite",
|
|
64
|
+
QuestionLabeledValue: "suite",
|
|
65
|
+
QuestionNameValue: "suite",
|
|
66
|
+
QuestionOption: "suite",
|
|
67
|
+
QuestionTableColumn: "suite",
|
|
68
|
+
QuestionTableRow: "suite",
|
|
69
|
+
QuestionType: "suite",
|
|
70
|
+
Questions: "suite",
|
|
71
|
+
QuestionsProps: "suite",
|
|
72
|
+
DocumentDetailActions: "suite",
|
|
73
|
+
DocumentDetailActionsProps: "suite",
|
|
74
|
+
DocumentDetailBody: "suite",
|
|
75
|
+
DocumentDetailBodyProps: "suite",
|
|
76
|
+
DocumentDetailHeader: "suite",
|
|
77
|
+
DocumentDetailHeaderProps: "suite",
|
|
78
|
+
DocumentDetailMetaRow: "suite",
|
|
79
|
+
DocumentDetailMetaRowProps: "suite",
|
|
80
|
+
DocumentDetailPanel: "suite",
|
|
81
|
+
DocumentDetailPanelProps: "suite",
|
|
82
|
+
DocumentDetailRequester: "suite",
|
|
83
|
+
DocumentDetailRequesterProps: "suite",
|
|
84
|
+
DocumentDetailTitle: "suite",
|
|
85
|
+
DocumentDetailTitleProps: "suite",
|
|
86
|
+
DocumentList: "suite",
|
|
87
|
+
DocumentListProps: "suite",
|
|
88
|
+
DocumentListSection: "suite",
|
|
89
|
+
DocumentListSectionProps: "suite",
|
|
90
|
+
DocumentRow: "suite",
|
|
91
|
+
DocumentRowProps: "suite",
|
|
92
|
+
ClientSelect: "suite",
|
|
93
|
+
ClientSelectOption: "suite",
|
|
94
|
+
AssureAuditBrandIcon: "suite",
|
|
95
|
+
AssureBooksBrandIcon: "suite",
|
|
96
|
+
AssureProBrandIcon: "suite",
|
|
97
|
+
AssureTaxBrandIcon: "suite",
|
|
98
|
+
BRAND_PRODUCTS: "suite",
|
|
99
|
+
BrandIconProps: "suite",
|
|
100
|
+
BrandProduct: "suite",
|
|
101
|
+
Logo: "suite",
|
|
102
|
+
SidebarBrandSwitcher: "suite",
|
|
103
|
+
SidebarBrandSwitcherExtra: "suite",
|
|
104
|
+
SidebarBrandSwitcherItem: "suite",
|
|
105
|
+
SidebarBrandSwitcherProps: "suite",
|
|
106
|
+
SidebarBrandSwitcherTile: "suite",
|
|
107
|
+
brandLabel: "suite",
|
|
108
|
+
ComingSoon: "suite",
|
|
109
|
+
ComingSoonProps: "suite",
|
|
110
|
+
TimeLogger: "legacy",
|
|
111
|
+
TimeLoggerActions: "legacy",
|
|
112
|
+
TimeLoggerActionsProps: "legacy",
|
|
113
|
+
TimeLoggerBillable: "legacy",
|
|
114
|
+
TimeLoggerBillableProps: "legacy",
|
|
115
|
+
TimeLoggerContextRow: "legacy",
|
|
116
|
+
TimeLoggerContextRowProps: "legacy",
|
|
117
|
+
TimeLoggerEntry: "legacy",
|
|
118
|
+
TimeLoggerEntryList: "legacy",
|
|
119
|
+
TimeLoggerEntryListProps: "legacy",
|
|
120
|
+
TimeLoggerEntryProps: "legacy",
|
|
121
|
+
TimeLoggerField: "legacy",
|
|
122
|
+
TimeLoggerFieldProps: "legacy",
|
|
123
|
+
TimeLoggerFooter: "legacy",
|
|
124
|
+
TimeLoggerFooterProps: "legacy",
|
|
125
|
+
TimeLoggerHeader: "legacy",
|
|
126
|
+
TimeLoggerHeaderProps: "legacy",
|
|
127
|
+
TimeLoggerNotes: "legacy",
|
|
128
|
+
TimeLoggerNotesProps: "legacy",
|
|
129
|
+
TimeLoggerPhase: "legacy",
|
|
130
|
+
TimeLoggerProps: "legacy",
|
|
131
|
+
TimeLoggerTier: "legacy",
|
|
132
|
+
TimeLoggerTimer: "legacy",
|
|
133
|
+
TimeLoggerTimerProps: "legacy",
|
|
134
|
+
UseStopwatchReturn: "legacy",
|
|
135
|
+
formatClock: "legacy",
|
|
136
|
+
formatCurrency: "legacy",
|
|
137
|
+
formatDuration: "legacy",
|
|
138
|
+
parseDuration: "legacy",
|
|
139
|
+
useStopwatch: "legacy",
|
|
140
|
+
ClientRailGroupHeader: "legacy",
|
|
141
|
+
ClientRailGroupHeaderProps: "legacy",
|
|
142
|
+
ClientRailItem: "legacy",
|
|
143
|
+
ClientRailItemProps: "legacy",
|
|
144
|
+
DocumentFileCard: "legacy",
|
|
145
|
+
DocumentFileCardProps: "legacy",
|
|
146
|
+
DocumentFileLine: "legacy",
|
|
147
|
+
DocumentFileLineProps: "legacy",
|
|
148
|
+
DocumentFileRow: "legacy",
|
|
149
|
+
DocumentFileRowProps: "legacy",
|
|
150
|
+
DocumentRequestActivityKind: "legacy",
|
|
151
|
+
DocumentRequestAssigneeOption: "legacy",
|
|
152
|
+
DocumentRequestCard: "legacy",
|
|
153
|
+
DocumentRequestCardProps: "legacy",
|
|
154
|
+
DocumentRequestDetail: "legacy",
|
|
155
|
+
DocumentRequestDetailActivityEvent: "legacy",
|
|
156
|
+
DocumentRequestDetailComment: "legacy",
|
|
157
|
+
DocumentRequestDetailDoc: "legacy",
|
|
158
|
+
DocumentRequestDetailProps: "legacy",
|
|
159
|
+
DocumentRequestDetailTab: "legacy",
|
|
160
|
+
DocumentRequestItemSummary: "legacy",
|
|
161
|
+
DocumentRequestRequestedItem: "legacy",
|
|
162
|
+
DocumentRequestReviewStatusOption: "legacy",
|
|
163
|
+
DocumentRequestTone: "legacy",
|
|
164
|
+
Blockquote: "legacy",
|
|
165
|
+
Section: "legacy",
|
|
166
|
+
SectionHead: "legacy",
|
|
167
|
+
SectionHeader: "legacy",
|
|
168
|
+
Stat: "legacy",
|
|
169
|
+
PillStatus: "legacy",
|
|
170
|
+
StatusPill: "legacy",
|
|
171
|
+
StatusPillProps: "legacy",
|
|
172
|
+
Assignee: "legacy",
|
|
173
|
+
Dash: "legacy",
|
|
174
|
+
MoneyCell: "legacy",
|
|
175
|
+
StagePill: "legacy",
|
|
176
|
+
TagsCell: "legacy",
|
|
177
|
+
AIReceiptPanel: "legacy",
|
|
178
|
+
AIReceiptPanelProps: "legacy",
|
|
179
|
+
AIReceiptResult: "legacy",
|
|
180
|
+
AiDraftCard: "legacy",
|
|
181
|
+
AiDraftCardProps: "legacy",
|
|
182
|
+
AiDraftState: "legacy",
|
|
183
|
+
AttentionItem: "legacy",
|
|
184
|
+
AttentionItemProps: "legacy",
|
|
185
|
+
AttentionUrgency: "legacy",
|
|
186
|
+
BottomNav: "legacy",
|
|
187
|
+
BottomNavProps: "legacy",
|
|
188
|
+
BottomNavTab: "legacy",
|
|
189
|
+
CategoryDivider: "legacy",
|
|
190
|
+
CategoryDividerProps: "legacy",
|
|
191
|
+
CategoryTag: "legacy",
|
|
192
|
+
CategoryTagProps: "legacy",
|
|
193
|
+
CategoryTone: "legacy",
|
|
194
|
+
ChannelTabItem: "legacy",
|
|
195
|
+
ChannelTabs: "legacy",
|
|
196
|
+
ChannelTabsProps: "legacy",
|
|
197
|
+
ChannelTone: "legacy",
|
|
198
|
+
DashGrid: "legacy",
|
|
199
|
+
DashGridProps: "legacy",
|
|
200
|
+
DashWidget: "legacy",
|
|
201
|
+
DocumentChecklist: "legacy",
|
|
202
|
+
DocumentChecklistFile: "legacy",
|
|
203
|
+
DocumentChecklistItem: "legacy",
|
|
204
|
+
DocumentChecklistProps: "legacy",
|
|
205
|
+
DocumentChecklistStatus: "legacy",
|
|
206
|
+
DocumentItemState: "legacy",
|
|
207
|
+
DocumentRequestField: "legacy",
|
|
208
|
+
DocumentRequestFieldProps: "legacy",
|
|
209
|
+
DocumentRequestUpload: "legacy",
|
|
210
|
+
DocumentRequestUploadFile: "legacy",
|
|
211
|
+
DocumentRequestUploadProps: "legacy",
|
|
212
|
+
DocumentSource: "legacy",
|
|
213
|
+
DocumentSourceFilter: "legacy",
|
|
214
|
+
DocumentSourceFilterProps: "legacy",
|
|
215
|
+
DocumentSourceFilterValue: "legacy",
|
|
216
|
+
DocumentSourceTag: "legacy",
|
|
217
|
+
DocumentSourceTagProps: "legacy",
|
|
218
|
+
DocumentsWorkspaceLayout: "legacy",
|
|
219
|
+
DocumentsWorkspaceLayoutProps: "legacy",
|
|
220
|
+
EmailMessageCard: "legacy",
|
|
221
|
+
EmailMessageCardProps: "legacy",
|
|
222
|
+
EngagementCard: "legacy",
|
|
223
|
+
EngagementCardProps: "legacy",
|
|
224
|
+
EngagementTimeline: "legacy",
|
|
225
|
+
EngagementTimelineProps: "legacy",
|
|
226
|
+
EngagementTimelineStep: "legacy",
|
|
227
|
+
EngagementTimelineStepProps: "legacy",
|
|
228
|
+
IntentBadge: "legacy",
|
|
229
|
+
IntentBadgeProps: "legacy",
|
|
230
|
+
IntentTone: "legacy",
|
|
231
|
+
MissingDocumentItem: "legacy",
|
|
232
|
+
MissingDocumentsPanel: "legacy",
|
|
233
|
+
MissingDocumentsPanelProps: "legacy",
|
|
234
|
+
NewMenu: "legacy",
|
|
235
|
+
NewMenuAction: "legacy",
|
|
236
|
+
NewMenuGroup: "legacy",
|
|
237
|
+
NewMenuProps: "legacy",
|
|
238
|
+
SignatureEditor: "legacy",
|
|
239
|
+
SignatureEditorProps: "legacy",
|
|
240
|
+
SuggestionPills: "legacy",
|
|
241
|
+
SuggestionPillsProps: "legacy",
|
|
242
|
+
TeamMemberSelect: "legacy",
|
|
243
|
+
TimelineState: "legacy",
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/** Product-owned names → the repository they are moving to (reported, never written). */
|
|
247
|
+
export const PRODUCT_TARGET = {
|
|
248
|
+
TimeLogger: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
249
|
+
TimeLoggerActions: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
250
|
+
TimeLoggerActionsProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
251
|
+
TimeLoggerBillable: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
252
|
+
TimeLoggerBillableProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
253
|
+
TimeLoggerContextRow: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
254
|
+
TimeLoggerContextRowProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
255
|
+
TimeLoggerEntry: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
256
|
+
TimeLoggerEntryList: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
257
|
+
TimeLoggerEntryListProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
258
|
+
TimeLoggerEntryProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
259
|
+
TimeLoggerField: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
260
|
+
TimeLoggerFieldProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
261
|
+
TimeLoggerFooter: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
262
|
+
TimeLoggerFooterProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
263
|
+
TimeLoggerHeader: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
264
|
+
TimeLoggerHeaderProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
265
|
+
TimeLoggerNotes: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
266
|
+
TimeLoggerNotesProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
267
|
+
TimeLoggerPhase: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
268
|
+
TimeLoggerProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
269
|
+
TimeLoggerTier: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
270
|
+
TimeLoggerTimer: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
271
|
+
TimeLoggerTimerProps: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
272
|
+
UseStopwatchReturn: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
273
|
+
formatClock: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
274
|
+
formatCurrency: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
275
|
+
formatDuration: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
276
|
+
parseDuration: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
277
|
+
useStopwatch: "assure-pro/frontend/src/components/billing/time-logger/*",
|
|
278
|
+
ClientRailGroupHeader: "assure-pro (documents feature)",
|
|
279
|
+
ClientRailGroupHeaderProps: "assure-pro (documents feature)",
|
|
280
|
+
ClientRailItem: "assure-pro (documents feature)",
|
|
281
|
+
ClientRailItemProps: "assure-pro (documents feature)",
|
|
282
|
+
DocumentFileCard: "assure-pro (documents feature)",
|
|
283
|
+
DocumentFileCardProps: "assure-pro (documents feature)",
|
|
284
|
+
DocumentFileLine: "assure-pro (documents feature)",
|
|
285
|
+
DocumentFileLineProps: "assure-pro (documents feature)",
|
|
286
|
+
DocumentFileRow: "assure-pro (documents feature)",
|
|
287
|
+
DocumentFileRowProps: "assure-pro (documents feature)",
|
|
288
|
+
DocumentRequestActivityKind: "assure-pro (documents feature)",
|
|
289
|
+
DocumentRequestAssigneeOption: "assure-pro (documents feature)",
|
|
290
|
+
DocumentRequestCard: "assure-pro (documents feature)",
|
|
291
|
+
DocumentRequestCardProps: "assure-pro (documents feature)",
|
|
292
|
+
DocumentRequestDetail: "assure-pro (documents feature)",
|
|
293
|
+
DocumentRequestDetailActivityEvent: "assure-pro (documents feature)",
|
|
294
|
+
DocumentRequestDetailComment: "assure-pro (documents feature)",
|
|
295
|
+
DocumentRequestDetailDoc: "assure-pro (documents feature)",
|
|
296
|
+
DocumentRequestDetailProps: "assure-pro (documents feature)",
|
|
297
|
+
DocumentRequestDetailTab: "assure-pro (documents feature)",
|
|
298
|
+
DocumentRequestItemSummary: "assure-pro (documents feature)",
|
|
299
|
+
DocumentRequestRequestedItem: "assure-pro (documents feature)",
|
|
300
|
+
DocumentRequestReviewStatusOption: "assure-pro (documents feature)",
|
|
301
|
+
DocumentRequestTone: "assure-pro (documents feature)",
|
|
302
|
+
Blockquote: "assure-pro (landing pages)",
|
|
303
|
+
Section: "assure-pro (landing pages)",
|
|
304
|
+
SectionHead: "assure-pro (landing pages)",
|
|
305
|
+
SectionHeader: "assure-pro (landing pages)",
|
|
306
|
+
Stat: "assure-pro (landing pages)",
|
|
307
|
+
PillStatus: "assure-pro status map over core `StatusBadge`",
|
|
308
|
+
StatusPill: "assure-pro status map over core `StatusBadge`",
|
|
309
|
+
StatusPillProps: "assure-pro status map over core `StatusBadge`",
|
|
310
|
+
Assignee: "assure-tax `table-cells.tsx`",
|
|
311
|
+
Dash: "assure-tax `table-cells.tsx`",
|
|
312
|
+
MoneyCell: "assure-tax `table-cells.tsx`",
|
|
313
|
+
StagePill: "assure-tax `table-cells.tsx`",
|
|
314
|
+
TagsCell: "assure-tax `table-cells.tsx`",
|
|
315
|
+
};
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* codemods listed here can be run by id; the sequence is the plan's.
|
|
4
4
|
*/
|
|
5
5
|
export const CODEMODS = [
|
|
6
|
+
{ id: "CM-01", module: "../transforms/cm-01-entry-imports.mjs" },
|
|
6
7
|
{ id: "CM-05", module: "../transforms/cm-05-button-icon-slots.mjs" },
|
|
7
8
|
{ id: "CM-13", module: "../transforms/cm-13-tooltip-delay.mjs" },
|
|
8
9
|
{ id: "CM-07", module: "../transforms/cm-07-input-size.mjs" },
|
|
@@ -14,6 +15,7 @@ export const CODEMODS = [
|
|
|
14
15
|
{ id: "CM-10", module: "../transforms/cm-10-date-picker-value-change.mjs" },
|
|
15
16
|
{ id: "CM-08", module: "../transforms/cm-08-search-select-to-combobox.mjs" },
|
|
16
17
|
{ id: "CM-09", module: "../transforms/cm-09-side-drawer-to-sheet.mjs" },
|
|
18
|
+
{ id: "CM-18", module: "../transforms/cm-18-data-table-parts.mjs" },
|
|
17
19
|
{ id: "CM-14", module: "../transforms/cm-14-hidden-mirrors.mjs" },
|
|
18
20
|
{ id: "CM-15", module: "../transforms/cm-15-dom-selectors.mjs" },
|
|
19
21
|
{ id: "CM-16", module: "../transforms/cm-16-globals-css.mjs" },
|