@danxbot/ui 15.28.0 → 15.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +8128 -7967
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +191 -191
- package/dist/types/components/LegalDocument.d.ts +23 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/lib/legal-document.d.ts +82 -0
- package/dist/types/pure.d.ts +1 -0
- package/package.json +1 -1
package/dist/theme.css
CHANGED
|
@@ -45,197 +45,197 @@
|
|
|
45
45
|
@source "./index.js";
|
|
46
46
|
|
|
47
47
|
/* from src/styles/authored.css */
|
|
48
|
-
@theme inline {
|
|
49
|
-
/* --- Surfaces + structure --- */
|
|
50
|
-
--color-canvas: var(--canvas);
|
|
51
|
-
--color-canvas-subtle: var(--canvas-subtle);
|
|
52
|
-
--color-surface: var(--surface);
|
|
53
|
-
--color-surface-sunken: var(--surface-sunken);
|
|
54
|
-
--color-surface-raised: var(--surface-raised);
|
|
55
|
-
--color-surface-overlay: var(--surface-overlay);
|
|
56
|
-
--color-surface-inset: var(--surface-inset);
|
|
57
|
-
--color-surface-hover: var(--surface-hover);
|
|
58
|
-
--color-surface-active: var(--surface-active);
|
|
59
|
-
--color-surface-selected: var(--surface-selected);
|
|
60
|
-
|
|
61
|
-
--color-border-subtle: var(--border-subtle);
|
|
62
|
-
--color-border: var(--border);
|
|
63
|
-
--color-border-strong: var(--border-strong);
|
|
64
|
-
--color-border-interactive: var(--border-interactive);
|
|
65
|
-
|
|
66
|
-
/* --- Content --- */
|
|
67
|
-
--color-primary: var(--text-primary);
|
|
68
|
-
--color-secondary: var(--text-secondary);
|
|
69
|
-
--color-tertiary: var(--text-tertiary);
|
|
70
|
-
--color-disabled: var(--text-disabled);
|
|
71
|
-
--color-inverse: var(--text-inverse);
|
|
72
|
-
|
|
73
|
-
/* --- Accent (celadon) --- */
|
|
74
|
-
--color-accent: var(--accent);
|
|
75
|
-
--color-accent-hover: var(--accent-hover);
|
|
76
|
-
--color-accent-active: var(--accent-active);
|
|
77
|
-
--color-accent-subtle: var(--accent-subtle);
|
|
78
|
-
--color-accent-subtle-hover: var(--accent-subtle-hover);
|
|
79
|
-
--color-accent-border: var(--accent-border);
|
|
80
|
-
--color-accent-text: var(--accent-text);
|
|
81
|
-
--color-accent-contrast: var(--accent-contrast);
|
|
82
|
-
|
|
83
|
-
/* --- Brand (ember) --- */
|
|
84
|
-
--color-brand: var(--brand);
|
|
85
|
-
--color-brand-hover: var(--brand-hover);
|
|
86
|
-
--color-brand-subtle: var(--brand-subtle);
|
|
87
|
-
--color-brand-text: var(--brand-text);
|
|
88
|
-
--color-brand-contrast: var(--brand-contrast);
|
|
89
|
-
|
|
90
|
-
/* --- Status --- */
|
|
91
|
-
--color-success: var(--success);
|
|
92
|
-
--color-success-subtle: var(--success-subtle);
|
|
93
|
-
--color-success-text: var(--success-text);
|
|
94
|
-
--color-success-border: var(--success-border);
|
|
95
|
-
|
|
96
|
-
--color-warning: var(--warning);
|
|
97
|
-
--color-warning-subtle: var(--warning-subtle);
|
|
98
|
-
--color-warning-subtle-hover: var(--warning-subtle-hover);
|
|
99
|
-
--color-warning-text: var(--warning-text);
|
|
100
|
-
--color-warning-border: var(--warning-border);
|
|
101
|
-
|
|
102
|
-
--color-danger: var(--danger);
|
|
103
|
-
--color-danger-hover: var(--danger-hover);
|
|
104
|
-
--color-danger-subtle: var(--danger-subtle);
|
|
105
|
-
--color-danger-text: var(--danger-text);
|
|
106
|
-
--color-danger-border: var(--danger-border);
|
|
107
|
-
--color-danger-contrast: var(--danger-contrast);
|
|
108
|
-
|
|
109
|
-
/* --- Chart palette (DX-3963): eight ordered categorical hues + one sequential --- */
|
|
110
|
-
--color-chart-1: var(--chart-1);
|
|
111
|
-
--color-chart-2: var(--chart-2);
|
|
112
|
-
--color-chart-3: var(--chart-3);
|
|
113
|
-
--color-chart-4: var(--chart-4);
|
|
114
|
-
--color-chart-5: var(--chart-5);
|
|
115
|
-
--color-chart-6: var(--chart-6);
|
|
116
|
-
--color-chart-7: var(--chart-7);
|
|
117
|
-
--color-chart-8: var(--chart-8);
|
|
118
|
-
--color-chart-seq: var(--chart-seq);
|
|
119
|
-
|
|
120
|
-
/* --- Confidence (a 1-5 self-rating, one colour per level) --- */
|
|
121
|
-
--color-confidence-1: var(--confidence-1);
|
|
122
|
-
--color-confidence-2: var(--confidence-2);
|
|
123
|
-
--color-confidence-3: var(--confidence-3);
|
|
124
|
-
--color-confidence-4: var(--confidence-4);
|
|
125
|
-
--color-confidence-5: var(--confidence-5);
|
|
126
|
-
--color-confidence-none: var(--confidence-none);
|
|
127
|
-
|
|
128
|
-
--color-info: var(--info);
|
|
129
|
-
--color-info-subtle: var(--info-subtle);
|
|
130
|
-
--color-info-text: var(--info-text);
|
|
131
|
-
--color-info-border: var(--info-border);
|
|
132
|
-
|
|
133
|
-
/* DX-3662 — the 8th tone: a quieter grey for a CLOSED/inert fact (a
|
|
134
|
-
terminated card, a retired record) — distinct from `--neutral`
|
|
135
|
-
(`text-tertiary`/`bg-tertiary`, the "not yet decided" grey every OTHER
|
|
136
|
-
pending/undetermined state already draws from). Both are on the same
|
|
137
|
-
near-zero-chroma axis on purpose (an inert fact and an undecided one are
|
|
138
|
-
both "no signal", just at different points in a lifecycle) but pinned to
|
|
139
|
-
different `L`s so they stay tellable apart side by side — see
|
|
140
|
-
`muted-quieter-than-neutral.test.ts` for the measured contrast-ranking
|
|
141
|
-
floor this promises (DX-3696 — the file this comment used to cite,
|
|
142
|
-
`token-distance.test.ts`, does not exist in this repo). */
|
|
143
|
-
--color-muted: var(--muted);
|
|
144
|
-
--color-muted-subtle: var(--muted-subtle);
|
|
145
|
-
--color-muted-text: var(--muted-text);
|
|
146
|
-
--color-muted-border: var(--muted-border);
|
|
147
|
-
|
|
148
|
-
/* --- Fields --- */
|
|
149
|
-
--color-field: var(--field-bg);
|
|
150
|
-
--color-field-hover: var(--field-bg-hover);
|
|
151
|
-
--color-field-border: var(--field-border);
|
|
152
|
-
--color-field-border-hover: var(--field-border-hover);
|
|
153
|
-
--color-field-placeholder: var(--field-placeholder);
|
|
154
|
-
|
|
155
|
-
--color-scrim: var(--scrim);
|
|
156
|
-
--color-veil: var(--veil);
|
|
157
|
-
--color-focus-halo: var(--focus-halo);
|
|
158
|
-
--color-control-knob: var(--control-knob);
|
|
159
|
-
--color-control-knob-on: var(--control-knob-on);
|
|
160
|
-
--color-switch-track-off: var(--switch-track-off);
|
|
161
|
-
--color-focus-ring: var(--focus-ring);
|
|
162
|
-
|
|
163
|
-
/* --- Type --- */
|
|
164
|
-
--font-display: var(--font-display);
|
|
165
|
-
--font-sans: var(--font-sans);
|
|
166
|
-
--font-mono: var(--font-mono);
|
|
167
|
-
|
|
168
|
-
--text-2xs: var(--text-2xs);
|
|
169
|
-
--text-xs: var(--text-xs);
|
|
170
|
-
--text-sm: var(--text-sm);
|
|
171
|
-
--text-base: var(--text-base);
|
|
172
|
-
--text-md: var(--text-md);
|
|
173
|
-
--text-lg: var(--text-lg);
|
|
174
|
-
--text-xl: var(--text-xl);
|
|
175
|
-
--text-2xl: var(--text-2xl);
|
|
176
|
-
--text-3xl: var(--text-3xl);
|
|
177
|
-
--text-4xl: var(--text-4xl);
|
|
178
|
-
--text-5xl: var(--text-5xl);
|
|
179
|
-
|
|
180
|
-
/* Remap Tailwind's weight utilities onto the non-integer ramp, so
|
|
181
|
-
`font-medium` / `font-bold` pick up 510 / 680 rather than 500 / 700. */
|
|
182
|
-
--font-weight-normal: var(--weight-normal);
|
|
183
|
-
--font-weight-medium: var(--weight-medium);
|
|
184
|
-
--font-weight-semibold: var(--weight-semibold);
|
|
185
|
-
--font-weight-bold: var(--weight-bold);
|
|
186
|
-
|
|
187
|
-
--leading-tight: var(--leading-tight);
|
|
188
|
-
--leading-snug: var(--leading-snug);
|
|
189
|
-
--leading-normal: var(--leading-normal);
|
|
190
|
-
--leading-relaxed: var(--leading-relaxed);
|
|
191
|
-
|
|
192
|
-
--tracking-tighter: var(--tracking-tighter);
|
|
193
|
-
--tracking-tight: var(--tracking-tight);
|
|
194
|
-
--tracking-normal: var(--tracking-normal);
|
|
195
|
-
--tracking-wide: var(--tracking-wide);
|
|
196
|
-
--tracking-widest: var(--tracking-widest);
|
|
197
|
-
|
|
198
|
-
/* --- Shape --- */
|
|
199
|
-
--radius-xs: var(--radius-xs);
|
|
200
|
-
--radius-sm: var(--radius-sm);
|
|
201
|
-
--radius-md: var(--radius-md);
|
|
202
|
-
--radius-lg: var(--radius-lg);
|
|
203
|
-
--radius-xl: var(--radius-xl);
|
|
204
|
-
--radius-2xl: var(--radius-2xl);
|
|
205
|
-
--radius-3xl: var(--radius-3xl);
|
|
206
|
-
|
|
207
|
-
/* --- Control heights, exposed as sizing utilities (h-control-md etc.) --- */
|
|
208
|
-
/* Tailwind's spacing BASE, retargeted through the size multiplier.
|
|
209
|
-
This one line is what makes every `p-4`, `gap-3`, `size-5` in every
|
|
210
|
-
component respond to the size control — without it the utilities keep
|
|
211
|
-
Tailwind's fixed 0.25rem and only the hand-written control heights move,
|
|
212
|
-
which is why the first version of the control read as "changes padding
|
|
213
|
-
slightly" and nothing else. */
|
|
214
|
-
--spacing: calc(0.25rem * var(--ui-scale));
|
|
215
|
-
|
|
216
|
-
--spacing-control-xs: var(--control-xs);
|
|
217
|
-
--spacing-control-sm: var(--control-sm);
|
|
218
|
-
--spacing-control-md: var(--control-md);
|
|
219
|
-
--spacing-control-lg: var(--control-lg);
|
|
220
|
-
--spacing-control-xl: var(--control-xl);
|
|
221
|
-
|
|
222
|
-
/* --- Elevation --- */
|
|
223
|
-
--shadow-xs: var(--shadow-xs);
|
|
224
|
-
--shadow-sm: var(--shadow-sm);
|
|
225
|
-
--shadow-knob: var(--shadow-knob);
|
|
226
|
-
--shadow-md: var(--shadow-md);
|
|
227
|
-
--shadow-lg: var(--shadow-lg);
|
|
228
|
-
--shadow-xl: var(--shadow-xl);
|
|
229
|
-
--shadow-tooltip: var(--shadow-tooltip);
|
|
230
|
-
--shadow-glow-accent: var(--shadow-glow-accent);
|
|
231
|
-
|
|
232
|
-
/* --- Motion ---
|
|
233
|
-
The curves, durations and `animate-*` utilities are owned by motion.css,
|
|
234
|
-
which declares them directly in Tailwind's own namespaces. All that is
|
|
235
|
-
left here is retargeting the framework's bare `transition` default off
|
|
236
|
-
its Material-1-era `cubic-bezier(0.4, 0, 0.2, 1)` @ 150ms. */
|
|
237
|
-
--default-transition-duration: var(--dur-base);
|
|
238
|
-
--default-transition-timing-function: var(--ease-standard);
|
|
48
|
+
@theme inline {
|
|
49
|
+
/* --- Surfaces + structure --- */
|
|
50
|
+
--color-canvas: var(--canvas);
|
|
51
|
+
--color-canvas-subtle: var(--canvas-subtle);
|
|
52
|
+
--color-surface: var(--surface);
|
|
53
|
+
--color-surface-sunken: var(--surface-sunken);
|
|
54
|
+
--color-surface-raised: var(--surface-raised);
|
|
55
|
+
--color-surface-overlay: var(--surface-overlay);
|
|
56
|
+
--color-surface-inset: var(--surface-inset);
|
|
57
|
+
--color-surface-hover: var(--surface-hover);
|
|
58
|
+
--color-surface-active: var(--surface-active);
|
|
59
|
+
--color-surface-selected: var(--surface-selected);
|
|
60
|
+
|
|
61
|
+
--color-border-subtle: var(--border-subtle);
|
|
62
|
+
--color-border: var(--border);
|
|
63
|
+
--color-border-strong: var(--border-strong);
|
|
64
|
+
--color-border-interactive: var(--border-interactive);
|
|
65
|
+
|
|
66
|
+
/* --- Content --- */
|
|
67
|
+
--color-primary: var(--text-primary);
|
|
68
|
+
--color-secondary: var(--text-secondary);
|
|
69
|
+
--color-tertiary: var(--text-tertiary);
|
|
70
|
+
--color-disabled: var(--text-disabled);
|
|
71
|
+
--color-inverse: var(--text-inverse);
|
|
72
|
+
|
|
73
|
+
/* --- Accent (celadon) --- */
|
|
74
|
+
--color-accent: var(--accent);
|
|
75
|
+
--color-accent-hover: var(--accent-hover);
|
|
76
|
+
--color-accent-active: var(--accent-active);
|
|
77
|
+
--color-accent-subtle: var(--accent-subtle);
|
|
78
|
+
--color-accent-subtle-hover: var(--accent-subtle-hover);
|
|
79
|
+
--color-accent-border: var(--accent-border);
|
|
80
|
+
--color-accent-text: var(--accent-text);
|
|
81
|
+
--color-accent-contrast: var(--accent-contrast);
|
|
82
|
+
|
|
83
|
+
/* --- Brand (ember) --- */
|
|
84
|
+
--color-brand: var(--brand);
|
|
85
|
+
--color-brand-hover: var(--brand-hover);
|
|
86
|
+
--color-brand-subtle: var(--brand-subtle);
|
|
87
|
+
--color-brand-text: var(--brand-text);
|
|
88
|
+
--color-brand-contrast: var(--brand-contrast);
|
|
89
|
+
|
|
90
|
+
/* --- Status --- */
|
|
91
|
+
--color-success: var(--success);
|
|
92
|
+
--color-success-subtle: var(--success-subtle);
|
|
93
|
+
--color-success-text: var(--success-text);
|
|
94
|
+
--color-success-border: var(--success-border);
|
|
95
|
+
|
|
96
|
+
--color-warning: var(--warning);
|
|
97
|
+
--color-warning-subtle: var(--warning-subtle);
|
|
98
|
+
--color-warning-subtle-hover: var(--warning-subtle-hover);
|
|
99
|
+
--color-warning-text: var(--warning-text);
|
|
100
|
+
--color-warning-border: var(--warning-border);
|
|
101
|
+
|
|
102
|
+
--color-danger: var(--danger);
|
|
103
|
+
--color-danger-hover: var(--danger-hover);
|
|
104
|
+
--color-danger-subtle: var(--danger-subtle);
|
|
105
|
+
--color-danger-text: var(--danger-text);
|
|
106
|
+
--color-danger-border: var(--danger-border);
|
|
107
|
+
--color-danger-contrast: var(--danger-contrast);
|
|
108
|
+
|
|
109
|
+
/* --- Chart palette (DX-3963): eight ordered categorical hues + one sequential --- */
|
|
110
|
+
--color-chart-1: var(--chart-1);
|
|
111
|
+
--color-chart-2: var(--chart-2);
|
|
112
|
+
--color-chart-3: var(--chart-3);
|
|
113
|
+
--color-chart-4: var(--chart-4);
|
|
114
|
+
--color-chart-5: var(--chart-5);
|
|
115
|
+
--color-chart-6: var(--chart-6);
|
|
116
|
+
--color-chart-7: var(--chart-7);
|
|
117
|
+
--color-chart-8: var(--chart-8);
|
|
118
|
+
--color-chart-seq: var(--chart-seq);
|
|
119
|
+
|
|
120
|
+
/* --- Confidence (a 1-5 self-rating, one colour per level) --- */
|
|
121
|
+
--color-confidence-1: var(--confidence-1);
|
|
122
|
+
--color-confidence-2: var(--confidence-2);
|
|
123
|
+
--color-confidence-3: var(--confidence-3);
|
|
124
|
+
--color-confidence-4: var(--confidence-4);
|
|
125
|
+
--color-confidence-5: var(--confidence-5);
|
|
126
|
+
--color-confidence-none: var(--confidence-none);
|
|
127
|
+
|
|
128
|
+
--color-info: var(--info);
|
|
129
|
+
--color-info-subtle: var(--info-subtle);
|
|
130
|
+
--color-info-text: var(--info-text);
|
|
131
|
+
--color-info-border: var(--info-border);
|
|
132
|
+
|
|
133
|
+
/* DX-3662 — the 8th tone: a quieter grey for a CLOSED/inert fact (a
|
|
134
|
+
terminated card, a retired record) — distinct from `--neutral`
|
|
135
|
+
(`text-tertiary`/`bg-tertiary`, the "not yet decided" grey every OTHER
|
|
136
|
+
pending/undetermined state already draws from). Both are on the same
|
|
137
|
+
near-zero-chroma axis on purpose (an inert fact and an undecided one are
|
|
138
|
+
both "no signal", just at different points in a lifecycle) but pinned to
|
|
139
|
+
different `L`s so they stay tellable apart side by side — see
|
|
140
|
+
`muted-quieter-than-neutral.test.ts` for the measured contrast-ranking
|
|
141
|
+
floor this promises (DX-3696 — the file this comment used to cite,
|
|
142
|
+
`token-distance.test.ts`, does not exist in this repo). */
|
|
143
|
+
--color-muted: var(--muted);
|
|
144
|
+
--color-muted-subtle: var(--muted-subtle);
|
|
145
|
+
--color-muted-text: var(--muted-text);
|
|
146
|
+
--color-muted-border: var(--muted-border);
|
|
147
|
+
|
|
148
|
+
/* --- Fields --- */
|
|
149
|
+
--color-field: var(--field-bg);
|
|
150
|
+
--color-field-hover: var(--field-bg-hover);
|
|
151
|
+
--color-field-border: var(--field-border);
|
|
152
|
+
--color-field-border-hover: var(--field-border-hover);
|
|
153
|
+
--color-field-placeholder: var(--field-placeholder);
|
|
154
|
+
|
|
155
|
+
--color-scrim: var(--scrim);
|
|
156
|
+
--color-veil: var(--veil);
|
|
157
|
+
--color-focus-halo: var(--focus-halo);
|
|
158
|
+
--color-control-knob: var(--control-knob);
|
|
159
|
+
--color-control-knob-on: var(--control-knob-on);
|
|
160
|
+
--color-switch-track-off: var(--switch-track-off);
|
|
161
|
+
--color-focus-ring: var(--focus-ring);
|
|
162
|
+
|
|
163
|
+
/* --- Type --- */
|
|
164
|
+
--font-display: var(--font-display);
|
|
165
|
+
--font-sans: var(--font-sans);
|
|
166
|
+
--font-mono: var(--font-mono);
|
|
167
|
+
|
|
168
|
+
--text-2xs: var(--text-2xs);
|
|
169
|
+
--text-xs: var(--text-xs);
|
|
170
|
+
--text-sm: var(--text-sm);
|
|
171
|
+
--text-base: var(--text-base);
|
|
172
|
+
--text-md: var(--text-md);
|
|
173
|
+
--text-lg: var(--text-lg);
|
|
174
|
+
--text-xl: var(--text-xl);
|
|
175
|
+
--text-2xl: var(--text-2xl);
|
|
176
|
+
--text-3xl: var(--text-3xl);
|
|
177
|
+
--text-4xl: var(--text-4xl);
|
|
178
|
+
--text-5xl: var(--text-5xl);
|
|
179
|
+
|
|
180
|
+
/* Remap Tailwind's weight utilities onto the non-integer ramp, so
|
|
181
|
+
`font-medium` / `font-bold` pick up 510 / 680 rather than 500 / 700. */
|
|
182
|
+
--font-weight-normal: var(--weight-normal);
|
|
183
|
+
--font-weight-medium: var(--weight-medium);
|
|
184
|
+
--font-weight-semibold: var(--weight-semibold);
|
|
185
|
+
--font-weight-bold: var(--weight-bold);
|
|
186
|
+
|
|
187
|
+
--leading-tight: var(--leading-tight);
|
|
188
|
+
--leading-snug: var(--leading-snug);
|
|
189
|
+
--leading-normal: var(--leading-normal);
|
|
190
|
+
--leading-relaxed: var(--leading-relaxed);
|
|
191
|
+
|
|
192
|
+
--tracking-tighter: var(--tracking-tighter);
|
|
193
|
+
--tracking-tight: var(--tracking-tight);
|
|
194
|
+
--tracking-normal: var(--tracking-normal);
|
|
195
|
+
--tracking-wide: var(--tracking-wide);
|
|
196
|
+
--tracking-widest: var(--tracking-widest);
|
|
197
|
+
|
|
198
|
+
/* --- Shape --- */
|
|
199
|
+
--radius-xs: var(--radius-xs);
|
|
200
|
+
--radius-sm: var(--radius-sm);
|
|
201
|
+
--radius-md: var(--radius-md);
|
|
202
|
+
--radius-lg: var(--radius-lg);
|
|
203
|
+
--radius-xl: var(--radius-xl);
|
|
204
|
+
--radius-2xl: var(--radius-2xl);
|
|
205
|
+
--radius-3xl: var(--radius-3xl);
|
|
206
|
+
|
|
207
|
+
/* --- Control heights, exposed as sizing utilities (h-control-md etc.) --- */
|
|
208
|
+
/* Tailwind's spacing BASE, retargeted through the size multiplier.
|
|
209
|
+
This one line is what makes every `p-4`, `gap-3`, `size-5` in every
|
|
210
|
+
component respond to the size control — without it the utilities keep
|
|
211
|
+
Tailwind's fixed 0.25rem and only the hand-written control heights move,
|
|
212
|
+
which is why the first version of the control read as "changes padding
|
|
213
|
+
slightly" and nothing else. */
|
|
214
|
+
--spacing: calc(0.25rem * var(--ui-scale));
|
|
215
|
+
|
|
216
|
+
--spacing-control-xs: var(--control-xs);
|
|
217
|
+
--spacing-control-sm: var(--control-sm);
|
|
218
|
+
--spacing-control-md: var(--control-md);
|
|
219
|
+
--spacing-control-lg: var(--control-lg);
|
|
220
|
+
--spacing-control-xl: var(--control-xl);
|
|
221
|
+
|
|
222
|
+
/* --- Elevation --- */
|
|
223
|
+
--shadow-xs: var(--shadow-xs);
|
|
224
|
+
--shadow-sm: var(--shadow-sm);
|
|
225
|
+
--shadow-knob: var(--shadow-knob);
|
|
226
|
+
--shadow-md: var(--shadow-md);
|
|
227
|
+
--shadow-lg: var(--shadow-lg);
|
|
228
|
+
--shadow-xl: var(--shadow-xl);
|
|
229
|
+
--shadow-tooltip: var(--shadow-tooltip);
|
|
230
|
+
--shadow-glow-accent: var(--shadow-glow-accent);
|
|
231
|
+
|
|
232
|
+
/* --- Motion ---
|
|
233
|
+
The curves, durations and `animate-*` utilities are owned by motion.css,
|
|
234
|
+
which declares them directly in Tailwind's own namespaces. All that is
|
|
235
|
+
left here is retargeting the framework's bare `transition` default off
|
|
236
|
+
its Material-1-era `cubic-bezier(0.4, 0, 0.2, 1)` @ 150ms. */
|
|
237
|
+
--default-transition-duration: var(--dur-base);
|
|
238
|
+
--default-transition-timing-function: var(--ease-standard);
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
/* from src/styles/tokens.css */
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type MouseEvent } from "react";
|
|
2
|
+
import { type LegalDocumentValue } from "../lib/legal-document";
|
|
3
|
+
export interface LegalDocumentProps {
|
|
4
|
+
document: LegalDocumentValue;
|
|
5
|
+
/**
|
|
6
|
+
* The element the title line is. `h1` when the document is the page's own
|
|
7
|
+
* heading, `p` when something else (an app shell's top bar) already owns the
|
|
8
|
+
* page's one `h1`.
|
|
9
|
+
*/
|
|
10
|
+
titleAs?: "h1" | "p";
|
|
11
|
+
/** Names the contents list, and is the collapsed control's text until a section is current. */
|
|
12
|
+
contentsLabel?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Runs when a contents link is clicked, with the section's anchor id and the
|
|
15
|
+
* click. The links are real `<a href="#section-N">`, which a path-based
|
|
16
|
+
* router leaves to the browser. A router that owns the fragment itself (a
|
|
17
|
+
* hash router) suppresses the browser's jump here, as `SectionNav` documents
|
|
18
|
+
* for its own rows, and scrolls the section into view instead.
|
|
19
|
+
*/
|
|
20
|
+
onNavigate?: (anchor: string, event: MouseEvent<HTMLAnchorElement>) => void;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function LegalDocument({ document: legal, titleAs: Title, contentsLabel, onNavigate, className, }: LegalDocumentProps): import("react").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -42,6 +42,8 @@ export { Menu, MenuItem, MenuGroup, MenuRadioGroup, MenuRadioItem, MenuCheckboxI
|
|
|
42
42
|
export { ThemeMenu, type ThemeMenuProps } from "./components/ThemeMenu";
|
|
43
43
|
export { AppShell, type AppShellProps, type NavItem, type NavSection, } from "./components/AppShell";
|
|
44
44
|
export { SectionNav, type SectionNavProps } from "./components/SectionNav";
|
|
45
|
+
export { LegalDocument, type LegalDocumentProps } from "./components/LegalDocument";
|
|
46
|
+
export { countUnconfirmed, legalSectionAnchor, splitUnconfirmed, type LegalBlock, type LegalDocumentValue, type LegalSection, type LegalTextRun, } from "./lib/legal-document";
|
|
45
47
|
export { FileUpload, type FileUploadProps, type UploadFile } from "./components/FileUpload";
|
|
46
48
|
export { ImageUploadField, type ImageUploadFieldProps, type ImageUploadFieldShape, type ImageUploadFieldSize, } from "./components/ImageUploadField";
|
|
47
49
|
export { DatePicker, type DatePickerProps, type DateRange } from "./components/DatePicker";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A legal document as DATA, plus the four pure decisions the `LegalDocument`
|
|
3
|
+
* component makes about it. DX-4022.
|
|
4
|
+
*
|
|
5
|
+
* No React in this file on purpose: the `LegalDocumentValue` shape is what a
|
|
6
|
+
* server holds and serves, so the `./pure` entry re-exports the types and a
|
|
7
|
+
* back end can type its content module without importing the design system's
|
|
8
|
+
* component graph.
|
|
9
|
+
*
|
|
10
|
+
* The shape mirrors a legal text and adds nothing to it: a title block,
|
|
11
|
+
* numbered sections, and in each section the paragraphs and bullet lists in
|
|
12
|
+
* document order. A paragraph that opens a numbered clause ("4.2 Beta
|
|
13
|
+
* confidentiality. ...") carries that opening as `clause`, split off only so
|
|
14
|
+
* a renderer can set it as a run-in heading and give it an anchor;
|
|
15
|
+
* `${number} ${heading} ${text}` is the paragraph as written. Nothing in the
|
|
16
|
+
* component writes a word of the document, which is what lets a verbatim check
|
|
17
|
+
* compare the page against its source and expect an exact match.
|
|
18
|
+
*/
|
|
19
|
+
export interface LegalDocumentValue {
|
|
20
|
+
/** The document's own title line, e.g. "TERMS OF USE". */
|
|
21
|
+
title: string;
|
|
22
|
+
/** The company line under the title. */
|
|
23
|
+
issuer: string;
|
|
24
|
+
/** As written in the document, so it may still be an unfilled `[DATE]`. */
|
|
25
|
+
effectiveDate: string;
|
|
26
|
+
/** Which version of the text this is, as an acceptance would record it. */
|
|
27
|
+
version: string;
|
|
28
|
+
sections: readonly LegalSection[];
|
|
29
|
+
}
|
|
30
|
+
export interface LegalSection {
|
|
31
|
+
/** "1", "2", ... the number the document gives the section, and what "Section N" cites. */
|
|
32
|
+
number: string;
|
|
33
|
+
title: string;
|
|
34
|
+
blocks: readonly LegalBlock[];
|
|
35
|
+
}
|
|
36
|
+
export type LegalBlock = {
|
|
37
|
+
kind: "paragraph";
|
|
38
|
+
/** A numbered clause's opening words, when the paragraph starts one. */
|
|
39
|
+
clause?: {
|
|
40
|
+
number: string;
|
|
41
|
+
heading: string;
|
|
42
|
+
};
|
|
43
|
+
text: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "list";
|
|
46
|
+
items: readonly string[];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* The fragment a section or clause is linked by: "7" is `section-7`, "7.2" is
|
|
50
|
+
* `section-7-2`.
|
|
51
|
+
*
|
|
52
|
+
* Keyed on the NUMBER, never the title: "Section 7" is how a document cites
|
|
53
|
+
* itself (and how a lawyer cites it in an email), so a link survives a heading
|
|
54
|
+
* being reworded in a later version.
|
|
55
|
+
*/
|
|
56
|
+
export declare function legalSectionAnchor(number: string): string;
|
|
57
|
+
/** One run of a paragraph: plain text, or a value the document left unfilled. */
|
|
58
|
+
export interface LegalTextRun {
|
|
59
|
+
text: string;
|
|
60
|
+
unconfirmed: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Split text into plain runs and square-bracketed placeholder runs.
|
|
64
|
+
*
|
|
65
|
+
* A draft marks every value it has not settled (a date, a notice period, a
|
|
66
|
+
* dollar cap) by writing it in square brackets. Those spans are kept verbatim,
|
|
67
|
+
* brackets included; this only finds them so they can be SHOWN as unconfirmed
|
|
68
|
+
* rather than read as agreed terms. Concatenating the runs' text always gives
|
|
69
|
+
* back the input unchanged.
|
|
70
|
+
*/
|
|
71
|
+
export declare function splitUnconfirmed(text: string): LegalTextRun[];
|
|
72
|
+
/** How many placeholder values a document still carries. */
|
|
73
|
+
export declare function countUnconfirmed(document: LegalDocumentValue): number;
|
|
74
|
+
/**
|
|
75
|
+
* Whether a run of text is written in capitals throughout.
|
|
76
|
+
*
|
|
77
|
+
* Disclaimers and liability limits are set in capitals on purpose (that is what
|
|
78
|
+
* makes them conspicuous in the legal sense), so the renderer keeps every
|
|
79
|
+
* letter as written and makes the block easier to read instead: a rule beside
|
|
80
|
+
* it, looser tracking. A short all-caps fragment is not a paragraph of it.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isAllCaps(text: string): boolean;
|
package/dist/types/pure.d.ts
CHANGED
|
@@ -42,3 +42,4 @@ export { formatBytes, formatTokens, formatCompactNumber } from "./lib/format";
|
|
|
42
42
|
export { formatDate, parseDate, formatDateTime, parseDateTime, type FormatDateTimeOptions, type ParseDateTimeOptions, formatCurrency, parseCurrency, formatNumber, parseNumber, type FormatNumberOptions, formatBoolean, parseBoolean, type FormatBooleanOptions, } from "./lib/values";
|
|
43
43
|
export { confidenceLevel, CONFIDENCE_LEVEL_LABELS, type ConfidenceLevel } from "./lib/confidence";
|
|
44
44
|
export { CHART_SERIES_COUNT, CHART_SERIES_TOKENS, CHART_SEQUENTIAL_TOKEN, CHART_SEQUENTIAL_COLOR, chartSeriesColor, } from "./lib/chart-palette";
|
|
45
|
+
export type { LegalBlock, LegalDocumentValue, LegalSection } from "./lib/legal-document";
|