@contractspec/lib.design-system 3.8.10 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,1197 +1,2 @@
1
1
  // @bun
2
- // src/components/legal/organisms/ContactForm.tsx
3
- import * as React2 from "react";
4
-
5
- // src/components/atoms/Button.tsx
6
- import {
7
- Button as WebButton
8
- } from "@contractspec/lib.ui-kit-web/ui/button";
9
- import { Loader2 } from "lucide-react";
10
- import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
11
- function Button({
12
- children,
13
- loading,
14
- spinnerPlacement = "start",
15
- onPress,
16
- onPressIn,
17
- onPressOut,
18
- onLongPress,
19
- onTouchStart,
20
- onTouchEnd,
21
- onTouchCancel,
22
- onMouseDown,
23
- onMouseUp,
24
- onClick,
25
- className,
26
- disabled,
27
- ...rest
28
- }) {
29
- const isDisabled = Boolean(disabled || loading);
30
- const handleClick = onPress ? () => {
31
- onPress();
32
- } : onClick;
33
- const content = !rest.asChild ? /* @__PURE__ */ jsxDEV(Fragment, {
34
- children: [
35
- loading && spinnerPlacement === "start" ? /* @__PURE__ */ jsxDEV(Loader2, {
36
- className: "h-4 w-4 animate-spin"
37
- }, undefined, false, undefined, this) : null,
38
- children,
39
- loading && spinnerPlacement === "end" ? /* @__PURE__ */ jsxDEV(Loader2, {
40
- className: "h-4 w-4 animate-spin"
41
- }, undefined, false, undefined, this) : null
42
- ]
43
- }, undefined, true, undefined, this) : children;
44
- return /* @__PURE__ */ jsxDEV(WebButton, {
45
- ...rest,
46
- className,
47
- disabled: isDisabled,
48
- "aria-busy": loading ? true : undefined,
49
- "aria-disabled": isDisabled ? true : undefined,
50
- onClick: handleClick,
51
- onMouseDown: onMouseDown || onPressIn,
52
- onMouseUp: onMouseUp || onPressOut,
53
- onTouchStart,
54
- onTouchEnd: onTouchEnd || onPressOut,
55
- onTouchCancel: onTouchCancel || onPressOut,
56
- type: rest?.type ?? "button",
57
- children: content
58
- }, undefined, false, undefined, this);
59
- }
60
-
61
- // src/components/legal/molecules/ContactFields.tsx
62
- import { Label } from "@contractspec/lib.ui-kit-web/ui/label";
63
-
64
- // src/components/atoms/Input.tsx
65
- import {
66
- Input as WebInput
67
- } from "@contractspec/lib.ui-kit-web/ui/input";
68
-
69
- // src/lib/keyboard.ts
70
- function deriveKindFromAutoComplete(ac) {
71
- if (!ac)
72
- return;
73
- switch (ac) {
74
- case "email":
75
- return "email";
76
- case "url":
77
- return "url";
78
- case "username":
79
- return "username";
80
- case "new-password":
81
- return "new-password";
82
- case "current-password":
83
- return "password";
84
- case "one-time-code":
85
- return "otp";
86
- case "tel":
87
- case "tel-country-code":
88
- case "tel-national":
89
- case "tel-area-code":
90
- case "tel-local":
91
- case "tel-local-prefix":
92
- case "tel-local-suffix":
93
- case "tel-extension":
94
- return "tel";
95
- case "postal-code":
96
- case "cc-number":
97
- case "cc-csc":
98
- case "bday-day":
99
- case "bday-month":
100
- case "bday-year":
101
- return "int";
102
- case "cc-exp":
103
- case "cc-exp-month":
104
- case "cc-exp-year":
105
- return "numbers-and-punctuation";
106
- case "bday":
107
- return "date";
108
- default:
109
- return "text";
110
- }
111
- }
112
- function applyAutoCompleteDefaultsWeb(res, ac) {
113
- if (!ac)
114
- return;
115
- const wordsCaps = [
116
- "name",
117
- "given-name",
118
- "additional-name",
119
- "family-name",
120
- "honorific-prefix",
121
- "honorific-suffix",
122
- "nickname",
123
- "organization",
124
- "organization-title",
125
- "cc-name",
126
- "cc-given-name",
127
- "cc-additional-name",
128
- "cc-family-name"
129
- ];
130
- if (wordsCaps.includes(ac)) {
131
- res.autoCapitalize = "words";
132
- }
133
- const noneCaps = [
134
- "username",
135
- "new-password",
136
- "current-password",
137
- "one-time-code",
138
- "email",
139
- "url"
140
- ];
141
- if (noneCaps.includes(ac)) {
142
- res.autoCapitalize = "none";
143
- }
144
- }
145
- function mapKeyboardToWeb(opts) {
146
- const kind = opts?.kind ?? deriveKindFromAutoComplete(opts?.autoComplete) ?? "text";
147
- const res = {};
148
- switch (kind) {
149
- case "password":
150
- res.type = "password";
151
- res.autoCapitalize = "none";
152
- res.autoComplete = opts?.autoComplete ?? "current-password";
153
- if (opts?.autoCorrect != null)
154
- res.autoCorrect = opts.autoCorrect;
155
- break;
156
- case "new-password":
157
- res.type = "password";
158
- res.autoCapitalize = "none";
159
- res.autoComplete = opts?.autoComplete ?? "new-password";
160
- if (opts?.autoCorrect != null)
161
- res.autoCorrect = opts.autoCorrect;
162
- break;
163
- case "username":
164
- res.type = "text";
165
- res.autoCapitalize = "none";
166
- res.autoComplete = opts?.autoComplete ?? "username";
167
- break;
168
- case "email":
169
- res.type = "email";
170
- res.inputMode = "email";
171
- res.autoCapitalize = "none";
172
- res.autoComplete = opts?.autoComplete ?? "email";
173
- break;
174
- case "url":
175
- res.type = "url";
176
- res.inputMode = "url";
177
- res.autoComplete = opts?.autoComplete ?? "url";
178
- break;
179
- case "search":
180
- res.type = "search";
181
- res.inputMode = "search";
182
- res.enterKeyHint = opts?.enterKeyHint ?? "search";
183
- res.autoComplete = opts?.autoComplete ?? "off";
184
- break;
185
- case "phone":
186
- case "tel":
187
- res.type = "tel";
188
- res.inputMode = "tel";
189
- res.autoComplete = opts?.autoComplete ?? "tel";
190
- break;
191
- case "number":
192
- case "int":
193
- res.type = "text";
194
- res.inputMode = "numeric";
195
- res.pattern = "[0-9]*";
196
- break;
197
- case "decimal":
198
- res.type = "text";
199
- res.inputMode = "decimal";
200
- res.step = "any";
201
- break;
202
- case "numbers-and-punctuation":
203
- res.type = "text";
204
- res.inputMode = "text";
205
- res.pattern = "[0-9.,-]*";
206
- break;
207
- case "otp":
208
- res.type = "text";
209
- res.inputMode = "numeric";
210
- res.autoComplete = opts?.autoComplete ?? "one-time-code";
211
- res.autoCapitalize = "none";
212
- break;
213
- case "name":
214
- res.type = "text";
215
- res.autoComplete = opts?.autoComplete ?? "name";
216
- res.autoCapitalize = opts?.autoCapitalize ?? "words";
217
- break;
218
- case "given-name":
219
- res.type = "text";
220
- res.autoComplete = opts?.autoComplete ?? "given-name";
221
- res.autoCapitalize = opts?.autoCapitalize ?? "words";
222
- break;
223
- case "family-name":
224
- res.type = "text";
225
- res.autoComplete = opts?.autoComplete ?? "family-name";
226
- res.autoCapitalize = opts?.autoCapitalize ?? "words";
227
- break;
228
- case "address-line1":
229
- res.type = "text";
230
- res.autoComplete = opts?.autoComplete ?? "address-line1";
231
- break;
232
- case "address-line2":
233
- res.type = "text";
234
- res.autoComplete = opts?.autoComplete ?? "address-line2";
235
- break;
236
- case "postal-code":
237
- res.type = "text";
238
- res.inputMode = "numeric";
239
- res.pattern = "[0-9]*";
240
- res.autoComplete = opts?.autoComplete ?? "postal-code";
241
- break;
242
- case "cc-number":
243
- res.type = "text";
244
- res.inputMode = "numeric";
245
- res.pattern = "[0-9]*";
246
- res.autoComplete = opts?.autoComplete ?? "cc-number";
247
- break;
248
- case "cc-exp":
249
- res.type = "text";
250
- res.inputMode = "numeric";
251
- res.pattern = "[0-9/]*";
252
- res.autoComplete = opts?.autoComplete ?? "cc-exp";
253
- break;
254
- case "cc-csc":
255
- res.type = "text";
256
- res.inputMode = "numeric";
257
- res.pattern = "[0-9]*";
258
- res.autoComplete = opts?.autoComplete ?? "cc-csc";
259
- break;
260
- case "off":
261
- res.type = "text";
262
- res.autoComplete = "off";
263
- break;
264
- case "date":
265
- res.type = "date";
266
- res.inputMode = "date";
267
- res.pattern = "[0-9./-]*";
268
- break;
269
- default:
270
- res.type = "text";
271
- break;
272
- }
273
- if (opts?.autoCapitalize)
274
- res.autoCapitalize = opts.autoCapitalize;
275
- if (opts?.autoComplete)
276
- res.autoComplete = opts.autoComplete;
277
- if (opts?.autoCorrect != null)
278
- res.autoCorrect = opts.autoCorrect;
279
- if (opts?.enterKeyHint)
280
- res.enterKeyHint = opts.enterKeyHint;
281
- applyAutoCompleteDefaultsWeb(res, opts?.autoComplete);
282
- return res;
283
- }
284
-
285
- // src/components/atoms/Input.tsx
286
- import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
287
- function Input({
288
- value,
289
- defaultValue,
290
- onChange,
291
- onSubmit,
292
- onFocus,
293
- onBlur,
294
- placeholder,
295
- disabled,
296
- readOnly,
297
- maxLength,
298
- name,
299
- className,
300
- keyboard,
301
- ...rest
302
- }) {
303
- const webKeyboard = mapKeyboardToWeb(keyboard);
304
- return /* @__PURE__ */ jsxDEV2(WebInput, {
305
- ...rest,
306
- className,
307
- value,
308
- defaultValue,
309
- onChange,
310
- onFocus,
311
- onBlur,
312
- placeholder,
313
- disabled,
314
- readOnly,
315
- maxLength,
316
- name,
317
- ...webKeyboard
318
- }, undefined, false, undefined, this);
319
- }
320
-
321
- // src/components/atoms/Textarea.tsx
322
- import {
323
- Textarea as WebTextarea
324
- } from "@contractspec/lib.ui-kit-web/ui/textarea";
325
- import * as React from "react";
326
- import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
327
- function Textarea({
328
- value,
329
- defaultValue,
330
- onChange,
331
- onSubmit,
332
- onFocus,
333
- onBlur,
334
- placeholder,
335
- disabled,
336
- readOnly,
337
- maxLength,
338
- name,
339
- className,
340
- rows,
341
- keyboard,
342
- ...rest
343
- }) {
344
- const webKeyboard = mapKeyboardToWeb(keyboard);
345
- const handleChange = React.useCallback((e) => onChange?.(e), [onChange]);
346
- return /* @__PURE__ */ jsxDEV3(WebTextarea, {
347
- ...rest,
348
- className,
349
- value,
350
- defaultValue,
351
- onChange: handleChange,
352
- onFocus,
353
- onBlur,
354
- placeholder,
355
- disabled,
356
- readOnly,
357
- maxLength,
358
- name,
359
- rows,
360
- ...webKeyboard
361
- }, undefined, false, undefined, this);
362
- }
363
-
364
- // src/components/legal/molecules/ContactFields.tsx
365
- import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
366
- function ContactFields({
367
- value,
368
- onChange,
369
- disabled
370
- }) {
371
- return /* @__PURE__ */ jsxDEV4("div", {
372
- className: "space-y-4",
373
- children: [
374
- /* @__PURE__ */ jsxDEV4("div", {
375
- className: "space-y-2",
376
- children: [
377
- /* @__PURE__ */ jsxDEV4(Label, {
378
- children: "Nom"
379
- }, undefined, false, undefined, this),
380
- /* @__PURE__ */ jsxDEV4(Input, {
381
- value: value.name,
382
- onChange: (e) => onChange({ ...value, name: e.target.value }),
383
- disabled
384
- }, undefined, false, undefined, this)
385
- ]
386
- }, undefined, true, undefined, this),
387
- /* @__PURE__ */ jsxDEV4("div", {
388
- className: "space-y-2",
389
- children: [
390
- /* @__PURE__ */ jsxDEV4(Label, {
391
- children: "Email"
392
- }, undefined, false, undefined, this),
393
- /* @__PURE__ */ jsxDEV4(Input, {
394
- type: "email",
395
- value: value.email,
396
- onChange: (e) => onChange({ ...value, email: e.target.value }),
397
- disabled
398
- }, undefined, false, undefined, this)
399
- ]
400
- }, undefined, true, undefined, this),
401
- /* @__PURE__ */ jsxDEV4("div", {
402
- className: "space-y-2",
403
- children: [
404
- /* @__PURE__ */ jsxDEV4(Label, {
405
- children: "Objet"
406
- }, undefined, false, undefined, this),
407
- /* @__PURE__ */ jsxDEV4(Input, {
408
- value: value.subject,
409
- onChange: (e) => onChange({
410
- ...value,
411
- subject: e.target.value
412
- }),
413
- disabled
414
- }, undefined, false, undefined, this)
415
- ]
416
- }, undefined, true, undefined, this),
417
- /* @__PURE__ */ jsxDEV4("div", {
418
- className: "space-y-2",
419
- children: [
420
- /* @__PURE__ */ jsxDEV4(Label, {
421
- children: "Message"
422
- }, undefined, false, undefined, this),
423
- /* @__PURE__ */ jsxDEV4(Textarea, {
424
- value: value.message,
425
- onChange: (e) => onChange({
426
- ...value,
427
- message: e.target.value
428
- }),
429
- disabled,
430
- rows: 6
431
- }, undefined, false, undefined, this)
432
- ]
433
- }, undefined, true, undefined, this)
434
- ]
435
- }, undefined, true, undefined, this);
436
- }
437
-
438
- // src/components/legal/organisms/ContactForm.tsx
439
- import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
440
- function ContactForm({
441
- labels = { submit: "Envoyer" },
442
- initialValue = { name: "", email: "", subject: "", message: "" },
443
- disabled,
444
- onSubmit
445
- }) {
446
- const [value, setValue] = React2.useState(initialValue);
447
- const [loading, setLoading] = React2.useState(false);
448
- const handleSubmit = async (e) => {
449
- e.preventDefault();
450
- if (!onSubmit)
451
- return;
452
- setLoading(true);
453
- try {
454
- await onSubmit(value);
455
- } finally {
456
- setLoading(false);
457
- }
458
- };
459
- return /* @__PURE__ */ jsxDEV5("form", {
460
- onSubmit: handleSubmit,
461
- className: "space-y-6",
462
- children: [
463
- /* @__PURE__ */ jsxDEV5(ContactFields, {
464
- value,
465
- onChange: setValue,
466
- disabled: disabled || loading
467
- }, undefined, false, undefined, this),
468
- /* @__PURE__ */ jsxDEV5(Button, {
469
- disabled: disabled || loading,
470
- type: "submit",
471
- children: loading ? "Envoi\u2026" : labels.submit
472
- }, undefined, false, undefined, this)
473
- ]
474
- }, undefined, true, undefined, this);
475
- }
476
- // src/components/legal/organisms/GDPRDataRequest.tsx
477
- import * as React3 from "react";
478
-
479
- // src/components/legal/atoms/LegalHeading.tsx
480
- import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
481
- import { cva } from "class-variance-authority";
482
- import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
483
- var headingVariants = cva("text-foreground tracking-tight", {
484
- variants: {
485
- level: {
486
- h1: "font-semibold text-3xl md:text-4xl",
487
- h2: "font-semibold text-2xl md:text-3xl",
488
- h3: "font-semibold text-xl md:text-2xl",
489
- h4: "font-semibold text-lg md:text-xl"
490
- },
491
- tone: {
492
- default: "",
493
- muted: "text-muted-foreground",
494
- accent: "text-primary"
495
- },
496
- spacing: {
497
- none: "",
498
- sm: "mt-4",
499
- md: "mt-6",
500
- lg: "mt-8"
501
- }
502
- },
503
- defaultVariants: {
504
- level: "h2",
505
- tone: "default",
506
- spacing: "md"
507
- }
508
- });
509
- function LegalHeading({
510
- as,
511
- level,
512
- tone,
513
- spacing,
514
- className,
515
- ...props
516
- }) {
517
- const Comp = as ?? level ?? "h2";
518
- return /* @__PURE__ */ jsxDEV6(Comp, {
519
- className: cn(headingVariants({ level, tone, spacing }), className),
520
- ...props
521
- }, undefined, false, undefined, this);
522
- }
523
-
524
- // src/components/legal/atoms/LegalSection.tsx
525
- import { cn as cn2 } from "@contractspec/lib.ui-kit-web/ui/utils";
526
- import { cva as cva2 } from "class-variance-authority";
527
- import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
528
- var sectionVariants = cva2("space-y-3", {
529
- variants: {
530
- spacing: {
531
- sm: "py-3",
532
- md: "py-4",
533
- lg: "py-6"
534
- },
535
- border: {
536
- none: "",
537
- top: "border-t",
538
- bottom: "border-b",
539
- both: "border-y"
540
- },
541
- tone: {
542
- plain: "",
543
- subtle: "bg-muted/30"
544
- }
545
- },
546
- defaultVariants: {
547
- spacing: "md",
548
- border: "none",
549
- tone: "plain"
550
- }
551
- });
552
- function LegalSection({
553
- spacing,
554
- border,
555
- tone,
556
- className,
557
- ...props
558
- }) {
559
- return /* @__PURE__ */ jsxDEV7("div", {
560
- className: cn2(sectionVariants({ spacing, border, tone }), className),
561
- ...props
562
- }, undefined, false, undefined, this);
563
- }
564
-
565
- // src/components/legal/atoms/LegalText.tsx
566
- import { cn as cn3 } from "@contractspec/lib.ui-kit-web/ui/utils";
567
- import { cva as cva3 } from "class-variance-authority";
568
- import { jsxDEV as jsxDEV8 } from "react/jsx-dev-runtime";
569
- var textVariants = cva3("text-base leading-relaxed", {
570
- variants: {
571
- tone: {
572
- default: "text-foreground",
573
- muted: "text-muted-foreground",
574
- danger: "text-destructive"
575
- },
576
- size: {
577
- base: "text-base",
578
- sm: "text-sm",
579
- lg: "text-lg"
580
- },
581
- spacing: {
582
- none: "",
583
- sm: "mt-2",
584
- md: "mt-3",
585
- lg: "mt-4"
586
- }
587
- },
588
- defaultVariants: {
589
- tone: "default",
590
- size: "base",
591
- spacing: "sm"
592
- }
593
- });
594
- function LegalText({
595
- as = "p",
596
- tone,
597
- size,
598
- spacing,
599
- className,
600
- ...props
601
- }) {
602
- const Comp = as;
603
- return /* @__PURE__ */ jsxDEV8(Comp, {
604
- className: cn3(textVariants({ tone, size, spacing }), className),
605
- ...props
606
- }, undefined, false, undefined, this);
607
- }
608
-
609
- // src/components/legal/organisms/GDPRDataRequest.tsx
610
- import { jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
611
- function GDPRDataRequest({
612
- onExport,
613
- onDelete,
614
- labels = { export: "Demander une copie", delete: "Demander la suppression" }
615
- }) {
616
- const [loading, setLoading] = React3.useState(null);
617
- const handle = async (kind) => {
618
- const fn = kind === "export" ? onExport : onDelete;
619
- if (!fn)
620
- return;
621
- setLoading(kind);
622
- try {
623
- await fn();
624
- } finally {
625
- setLoading(null);
626
- }
627
- };
628
- return /* @__PURE__ */ jsxDEV9(LegalSection, {
629
- border: "top",
630
- className: "space-y-3",
631
- children: [
632
- /* @__PURE__ */ jsxDEV9(LegalHeading, {
633
- as: "h2",
634
- level: "h2",
635
- children: "Demandes de donn\xE9es"
636
- }, undefined, false, undefined, this),
637
- /* @__PURE__ */ jsxDEV9(LegalText, {
638
- children: "Vous pouvez demander une copie de vos donn\xE9es ou solliciter leur suppression. Ces demandes n\xE9cessitent une v\xE9rification d\u2019identit\xE9 et sont trait\xE9es dans les d\xE9lais l\xE9gaux."
639
- }, undefined, false, undefined, this),
640
- /* @__PURE__ */ jsxDEV9("div", {
641
- className: "flex flex-wrap gap-3",
642
- children: [
643
- /* @__PURE__ */ jsxDEV9(Button, {
644
- onPress: () => handle("export"),
645
- disabled: loading !== null,
646
- children: loading === "export" ? "Envoi\u2026" : labels.export
647
- }, undefined, false, undefined, this),
648
- /* @__PURE__ */ jsxDEV9(Button, {
649
- variant: "destructive",
650
- onPress: () => handle("delete"),
651
- disabled: loading !== null,
652
- children: loading === "delete" ? "Envoi\u2026" : labels.delete
653
- }, undefined, false, undefined, this)
654
- ]
655
- }, undefined, true, undefined, this)
656
- ]
657
- }, undefined, true, undefined, this);
658
- }
659
- // src/components/legal/atoms/LegalList.tsx
660
- import { cn as cn4 } from "@contractspec/lib.ui-kit-web/ui/utils";
661
- import { cva as cva4 } from "class-variance-authority";
662
- import { jsxDEV as jsxDEV10 } from "react/jsx-dev-runtime";
663
- var listVariants = cva4("", {
664
- variants: {
665
- type: {
666
- unordered: "list-disc pl-6",
667
- ordered: "list-decimal pl-6",
668
- none: "pl-0"
669
- },
670
- spacing: {
671
- sm: "space-y-1",
672
- md: "space-y-2",
673
- lg: "space-y-3"
674
- }
675
- },
676
- defaultVariants: {
677
- type: "unordered",
678
- spacing: "md"
679
- }
680
- });
681
- function LegalList({
682
- type,
683
- spacing,
684
- className,
685
- children,
686
- ...props
687
- }) {
688
- const Comp = type === "ordered" ? "ol" : "ul";
689
- return /* @__PURE__ */ jsxDEV10(Comp, {
690
- className: cn4(listVariants({ type, spacing }), className),
691
- ...props,
692
- children
693
- }, undefined, false, undefined, this);
694
- }
695
-
696
- // src/components/legal/organisms/GDPRRights.tsx
697
- import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
698
- function GDPRRights({
699
- title = "Vos droits RGPD",
700
- rights = [
701
- "Acc\xE8s \xE0 vos donn\xE9es",
702
- "Rectification",
703
- "Effacement (droit \xE0 l\u2019oubli)",
704
- "Opposition et limitation",
705
- "Portabilit\xE9"
706
- ]
707
- }) {
708
- return /* @__PURE__ */ jsxDEV11(LegalSection, {
709
- border: "top",
710
- children: [
711
- /* @__PURE__ */ jsxDEV11(LegalHeading, {
712
- as: "h2",
713
- level: "h2",
714
- children: title
715
- }, undefined, false, undefined, this),
716
- /* @__PURE__ */ jsxDEV11(LegalList, {
717
- type: "unordered",
718
- children: rights.map((r, i) => /* @__PURE__ */ jsxDEV11("li", {
719
- children: r
720
- }, i, false, undefined, this))
721
- }, undefined, false, undefined, this)
722
- ]
723
- }, undefined, true, undefined, this);
724
- }
725
- // src/components/legal/organisms/LegalPageLayout.tsx
726
- import { cn as cn7 } from "@contractspec/lib.ui-kit-web/ui/utils";
727
-
728
- // src/components/legal/molecules/LegalMeta.tsx
729
- import { cn as cn5 } from "@contractspec/lib.ui-kit-web/ui/utils";
730
- import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
731
- function LegalMeta({
732
- lastUpdated,
733
- version,
734
- className
735
- }) {
736
- const fmtDate = (d) => {
737
- if (!d)
738
- return null;
739
- try {
740
- const date = typeof d === "string" ? new Date(d) : d;
741
- return date.toLocaleDateString();
742
- } catch {
743
- return String(d);
744
- }
745
- };
746
- return /* @__PURE__ */ jsxDEV12("div", {
747
- className: cn5("text-base text-muted-foreground", className),
748
- children: [
749
- version && /* @__PURE__ */ jsxDEV12("span", {
750
- children: [
751
- "Version ",
752
- version
753
- ]
754
- }, undefined, true, undefined, this),
755
- version && lastUpdated && /* @__PURE__ */ jsxDEV12("span", {
756
- className: "mx-2",
757
- children: "\u2022"
758
- }, undefined, false, undefined, this),
759
- lastUpdated && /* @__PURE__ */ jsxDEV12("span", {
760
- children: [
761
- "Derni\xE8re mise \xE0 jour: ",
762
- fmtDate(lastUpdated)
763
- ]
764
- }, undefined, true, undefined, this)
765
- ]
766
- }, undefined, true, undefined, this);
767
- }
768
-
769
- // src/components/legal/molecules/LegalTOC.tsx
770
- import { cn as cn6 } from "@contractspec/lib.ui-kit-web/ui/utils";
771
- import { cva as cva5 } from "class-variance-authority";
772
- import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
773
- var tocVariants = cva5("text-base", {
774
- variants: {
775
- variant: {
776
- sidebar: "space-y-2",
777
- inline: "flex flex-wrap gap-3"
778
- },
779
- size: {
780
- sm: "",
781
- md: "text-base"
782
- }
783
- },
784
- defaultVariants: { variant: "sidebar", size: "md" }
785
- });
786
- function LegalTOC({
787
- items,
788
- activeHref,
789
- onNavigate,
790
- variant,
791
- size,
792
- className,
793
- ...props
794
- }) {
795
- return /* @__PURE__ */ jsxDEV13("nav", {
796
- "aria-label": "Table of contents",
797
- className: cn6(tocVariants({ variant, size }), className),
798
- ...props,
799
- children: variant === "inline" ? items.map((it) => /* @__PURE__ */ jsxDEV13("a", {
800
- href: it.href,
801
- onClick: (_e) => {
802
- onNavigate?.(it.href);
803
- },
804
- className: cn6("rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground", activeHref === it.href && "bg-accent text-accent-foreground"),
805
- children: it.label
806
- }, it.href, false, undefined, this)) : /* @__PURE__ */ jsxDEV13("ul", {
807
- className: "list-none space-y-2 pl-0",
808
- children: items.map((it) => /* @__PURE__ */ jsxDEV13("li", {
809
- children: /* @__PURE__ */ jsxDEV13("a", {
810
- href: it.href,
811
- onClick: () => onNavigate?.(it.href),
812
- className: cn6("block rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground", activeHref === it.href && "bg-accent text-accent-foreground"),
813
- children: it.label
814
- }, undefined, false, undefined, this)
815
- }, it.href, false, undefined, this))
816
- }, undefined, false, undefined, this)
817
- }, undefined, false, undefined, this);
818
- }
819
-
820
- // src/components/legal/organisms/LegalPageLayout.tsx
821
- import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
822
- function LegalPageLayout({
823
- title,
824
- meta,
825
- toc,
826
- children,
827
- className
828
- }) {
829
- return /* @__PURE__ */ jsxDEV14("div", {
830
- className: cn7("mx-auto w-full max-w-6xl px-4 py-8 md:py-12", className),
831
- children: [
832
- /* @__PURE__ */ jsxDEV14("div", {
833
- className: "mb-6 space-y-2",
834
- children: [
835
- /* @__PURE__ */ jsxDEV14(LegalHeading, {
836
- as: "h1",
837
- level: "h1",
838
- spacing: "sm",
839
- children: title
840
- }, undefined, false, undefined, this),
841
- meta && /* @__PURE__ */ jsxDEV14(LegalMeta, {
842
- lastUpdated: meta.lastUpdated,
843
- version: meta.version
844
- }, undefined, false, undefined, this)
845
- ]
846
- }, undefined, true, undefined, this),
847
- toc && toc.length > 0 && /* @__PURE__ */ jsxDEV14("div", {
848
- className: "mb-6 md:hidden",
849
- children: /* @__PURE__ */ jsxDEV14(LegalTOC, {
850
- items: toc,
851
- variant: "inline"
852
- }, undefined, false, undefined, this)
853
- }, undefined, false, undefined, this),
854
- /* @__PURE__ */ jsxDEV14("div", {
855
- className: "grid grid-cols-1 gap-8 md:grid-cols-[220px_minmax(0,1fr)]",
856
- children: [
857
- toc && toc.length > 0 ? /* @__PURE__ */ jsxDEV14("aside", {
858
- className: "sticky top-24 hidden self-start md:block",
859
- children: /* @__PURE__ */ jsxDEV14(LegalTOC, {
860
- items: toc,
861
- variant: "sidebar"
862
- }, undefined, false, undefined, this)
863
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV14("div", {
864
- className: "hidden md:block"
865
- }, undefined, false, undefined, this),
866
- /* @__PURE__ */ jsxDEV14("article", {
867
- className: "prose max-w-none text-foreground",
868
- children
869
- }, undefined, false, undefined, this)
870
- ]
871
- }, undefined, true, undefined, this)
872
- ]
873
- }, undefined, true, undefined, this);
874
- }
875
- // src/platform/withPlatformUI.ts
876
- "use client";
877
- var DEFAULT_BREAKPOINTS = {
878
- sm: 640,
879
- md: 768,
880
- lg: 1024,
881
- xl: 1280
882
- };
883
- function withPlatformUI(options) {
884
- const platform = options.platform ?? "web";
885
- const breakpoints = {
886
- ...DEFAULT_BREAKPOINTS,
887
- ...options.breakpoints
888
- };
889
- return {
890
- platform,
891
- tokens: options.tokens,
892
- breakpoints
893
- };
894
- }
895
- // src/renderers/form-contract.tsx
896
- import { shadcnDriver } from "@contractspec/lib.contracts-runtime-client-react/drivers/shadcn";
897
- import { createFormRenderer } from "@contractspec/lib.contracts-runtime-client-react/form-render";
898
- import { Checkbox as CheckboxUiKit } from "@contractspec/lib.ui-kit-web/ui/checkbox";
899
- import {
900
- FieldDescription,
901
- FieldError,
902
- FieldGroup,
903
- FieldLabel,
904
- Field as FieldWrap
905
- } from "@contractspec/lib.ui-kit-web/ui/field";
906
- import { Label as Label2 } from "@contractspec/lib.ui-kit-web/ui/label";
907
- import {
908
- RadioGroupItem,
909
- RadioGroup as RadioGroupUiKit
910
- } from "@contractspec/lib.ui-kit-web/ui/radio-group";
911
- import {
912
- SelectContent,
913
- SelectGroup,
914
- SelectItem,
915
- SelectTrigger,
916
- Select as SelectUiKit,
917
- SelectValue
918
- } from "@contractspec/lib.ui-kit-web/ui/select";
919
- import { Switch as SwitchUiKit } from "@contractspec/lib.ui-kit-web/ui/switch";
920
- import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
921
- "use client";
922
- var Select = (props) => {
923
- const { options, value, onChange, ...rest } = props;
924
- return /* @__PURE__ */ jsxDEV15(SelectUiKit, {
925
- value: value ?? "",
926
- onValueChange: (v) => onChange?.(v),
927
- ...rest,
928
- children: [
929
- /* @__PURE__ */ jsxDEV15(SelectTrigger, {
930
- className: "w-[180px]",
931
- children: /* @__PURE__ */ jsxDEV15(SelectValue, {
932
- placeholder: props.placeholder
933
- }, undefined, false, undefined, this)
934
- }, undefined, false, undefined, this),
935
- /* @__PURE__ */ jsxDEV15(SelectContent, {
936
- children: /* @__PURE__ */ jsxDEV15(SelectGroup, {
937
- children: options?.map((o, i) => /* @__PURE__ */ jsxDEV15(SelectItem, {
938
- value: o.value,
939
- disabled: o.disabled,
940
- children: o.labelI18n
941
- }, i, false, undefined, this))
942
- }, undefined, false, undefined, this)
943
- }, undefined, false, undefined, this)
944
- ]
945
- }, undefined, true, undefined, this);
946
- };
947
- var Checkbox = (props) => /* @__PURE__ */ jsxDEV15(CheckboxUiKit, {
948
- checked: !!props.checked,
949
- onCheckedChange: (v) => props.onCheckedChange?.(v),
950
- ...props
951
- }, undefined, false, undefined, this);
952
- var RadioGroup = (props) => /* @__PURE__ */ jsxDEV15(RadioGroupUiKit, {
953
- ...props,
954
- children: props.options?.map((o) => /* @__PURE__ */ jsxDEV15("div", {
955
- className: "flex items-center gap-3",
956
- children: [
957
- /* @__PURE__ */ jsxDEV15(RadioGroupItem, {
958
- value: o.value,
959
- id: o.value
960
- }, undefined, false, undefined, this),
961
- /* @__PURE__ */ jsxDEV15(Label2, {
962
- htmlFor: o.value,
963
- children: o.label
964
- }, undefined, false, undefined, this)
965
- ]
966
- }, o.value, true, undefined, this))
967
- }, undefined, false, undefined, this);
968
- var Switch = (props) => /* @__PURE__ */ jsxDEV15(SwitchUiKit, {
969
- checked: !!props.checked,
970
- onCheckedChange: (v) => props.onCheckedChange?.(v),
971
- ...props
972
- }, undefined, false, undefined, this);
973
- var formRenderer = createFormRenderer({
974
- driver: shadcnDriver({
975
- Field: FieldWrap,
976
- FieldLabel,
977
- FieldDescription,
978
- FieldError,
979
- FieldGroup,
980
- FieldSet: (p) => /* @__PURE__ */ jsxDEV15("fieldset", {
981
- ...p
982
- }, undefined, false, undefined, this),
983
- FieldLegend: (p) => /* @__PURE__ */ jsxDEV15("legend", {
984
- ...p
985
- }, undefined, false, undefined, this),
986
- Input,
987
- Textarea,
988
- Select,
989
- Checkbox,
990
- RadioGroup,
991
- Switch,
992
- Button
993
- })
994
- });
995
- // src/theme/tokens.ts
996
- "use client";
997
- var defaultTokens = {
998
- colors: {
999
- background: "#ffffff",
1000
- foreground: "#0a0a0a",
1001
- muted: "#f4f4f5",
1002
- mutedForeground: "#71717a",
1003
- primary: "#0f49a0",
1004
- primaryForeground: "#ffffff",
1005
- accent: "#16a34a",
1006
- accentForeground: "#ffffff",
1007
- destructive: "#ef4444",
1008
- destructiveForeground: "#ffffff",
1009
- border: "#e4e4e7",
1010
- ring: "#2563eb"
1011
- },
1012
- radii: { sm: 4, md: 8, lg: 12, xl: 16, full: 9999 },
1013
- space: { xs: 4, sm: 8, md: 12, lg: 16, xl: 24 },
1014
- typography: { h1: 30, h2: 24, h3: 20, body: 16, small: 14 },
1015
- icons: { sm: 16, md: 20, lg: 24 }
1016
- };
1017
- // src/theme/variants.ts
1018
- import { cva as cva6 } from "class-variance-authority";
1019
- "use client";
1020
- var dsBaseVariants = cva6("", {
1021
- variants: {
1022
- size: {
1023
- sm: "",
1024
- md: "",
1025
- lg: ""
1026
- },
1027
- density: {
1028
- compact: "",
1029
- comfortable: ""
1030
- },
1031
- tone: {
1032
- neutral: "",
1033
- info: "",
1034
- success: "",
1035
- warning: "",
1036
- danger: ""
1037
- },
1038
- emphasis: {
1039
- default: "",
1040
- subtle: "",
1041
- strong: ""
1042
- }
1043
- },
1044
- defaultVariants: {
1045
- size: "md",
1046
- density: "comfortable",
1047
- tone: "neutral",
1048
- emphasis: "default"
1049
- }
1050
- });
1051
- export {
1052
- withPlatformUI,
1053
- useResponsive,
1054
- useReducedMotion,
1055
- usePackageManager,
1056
- useListUrlState,
1057
- useColorScheme,
1058
- mapTokensForPlatform,
1059
- formRenderer,
1060
- dsBaseVariants,
1061
- defaultTokens,
1062
- ZodForm,
1063
- VisualizationRenderer,
1064
- VisualizationGrid,
1065
- VisualizationCard,
1066
- ViewButton,
1067
- ToggleRightButton,
1068
- ToggleLeftButton,
1069
- ToggleButton,
1070
- TimelineView,
1071
- TimeChip,
1072
- Textarea2 as Textarea,
1073
- TestimonialCarousel,
1074
- TermsTemplate,
1075
- Stepper,
1076
- StatusChip,
1077
- StatCardGroup,
1078
- StatCard,
1079
- SkeletonList,
1080
- SkeletonCircle,
1081
- SkeletonBlock,
1082
- ScoreBar,
1083
- SalesTermsTemplate,
1084
- RankBadge,
1085
- PrivacyTemplate,
1086
- PricingSection,
1087
- PricingCarousel,
1088
- PlaceChip,
1089
- PageHeaderResponsive,
1090
- PackageManagerProvider,
1091
- OverviewCard,
1092
- NavUser,
1093
- NavMain,
1094
- NavBrand,
1095
- ModelComparisonView,
1096
- MobileHeader,
1097
- MarketingStepCard,
1098
- MarketingSection,
1099
- MarketingLayout,
1100
- MarketingIconCard,
1101
- MarketingHeaderMobile,
1102
- MarketingHeaderDesktop,
1103
- MarketingHeader,
1104
- MarketingComparisonSection,
1105
- MarketingCardsSection,
1106
- MarketingCardTitle,
1107
- MarketingCardHeader,
1108
- MarketingCardDescription,
1109
- MarketingCardContent,
1110
- MarketingCard,
1111
- MarkdownRenderer,
1112
- LoaderCircular,
1113
- LoaderBlock,
1114
- ListTablePage,
1115
- ListPageTemplate,
1116
- ListPageResponsive,
1117
- ListGridPage,
1118
- ListCardPage,
1119
- Link,
1120
- LegalText2 as LegalText,
1121
- LegalTOC2 as LegalTOC,
1122
- LegalSection2 as LegalSection,
1123
- LegalPageLayout,
1124
- LegalMeta2 as LegalMeta,
1125
- LegalList2 as LegalList,
1126
- LegalHeading2 as LegalHeading,
1127
- LegalCallout,
1128
- LangSwitch,
1129
- KeyValueList,
1130
- InstallCommand,
1131
- Input2 as Input,
1132
- HoverPreviewUser,
1133
- HoverPreviewStats,
1134
- HoverPreviewSimple,
1135
- HoverPreviewMedia,
1136
- HoverPreviewDoc,
1137
- HoverPreview,
1138
- HeroSection,
1139
- HeroResponsive,
1140
- Header,
1141
- GDPRRights,
1142
- GDPRDataRequest,
1143
- FormStepsLayout,
1144
- FormSection,
1145
- FormRow,
1146
- FormOneByOneLayout,
1147
- FormGrid,
1148
- FormDialog,
1149
- FormCardLayout,
1150
- Footer,
1151
- FiltersToolbar,
1152
- FeaturesSection,
1153
- FeatureCarousel,
1154
- FAQSection,
1155
- ErrorState,
1156
- EntityCard,
1157
- EmptyState,
1158
- EmptySearchResult,
1159
- EmptyDataList,
1160
- EditButton,
1161
- DurationChip,
1162
- DimensionScoresCard,
1163
- DesktopHeader,
1164
- DeleteButton,
1165
- DefinitionList,
1166
- DateChip,
1167
- DataViewTable,
1168
- DataViewRenderer,
1169
- DataViewList,
1170
- DataViewDetail,
1171
- DataTable,
1172
- DEFAULT_BREAKPOINTS,
1173
- Cta,
1174
- CopyButton,
1175
- CookiesTemplate,
1176
- ContactTemplate,
1177
- ContactForm,
1178
- ContactFields2 as ContactFields,
1179
- ConsentList,
1180
- ConsentItem,
1181
- ComparisonView,
1182
- CommandTabs,
1183
- CommandSearchTrigger,
1184
- CommandPalette,
1185
- CodeBlock,
1186
- ButtonLink,
1187
- Button2 as Button,
1188
- Breadcrumbs,
1189
- ApprovalQueue,
1190
- AppSidebar,
1191
- AppLayout,
1192
- AppHeader,
1193
- AiLinkButton,
1194
- AgentMonitor,
1195
- ActionForm,
1196
- AcademyLayout
1197
- };
2
+ import*as j from"react";import{Button as Hf}from"@contractspec/lib.ui-kit-web/ui/button";import{Loader2 as p}from"lucide-react";import{jsx as x,jsxs as zf,Fragment as Df}from"react/jsx-runtime";function z({children:f,loading:g,spinnerPlacement:m="start",onPress:R,onPressIn:y,onPressOut:G,onLongPress:$,onTouchStart:q,onTouchEnd:Y,onTouchCancel:H,onMouseDown:W,onMouseUp:B,onClick:U,className:w,disabled:V,...M}){let O=Boolean(V||g),u=R?()=>{R()}:U,hf=!M.asChild?zf(Df,{children:[g&&m==="start"?x(p,{className:"h-4 w-4 animate-spin"}):null,f,g&&m==="end"?x(p,{className:"h-4 w-4 animate-spin"}):null]}):f;return x(Hf,{...M,className:w,disabled:O,"aria-busy":g?!0:void 0,"aria-disabled":O?!0:void 0,onClick:u,onMouseDown:W||y,onMouseUp:B||G,onTouchStart:q,onTouchEnd:Y||G,onTouchCancel:H||G,type:M?.type??"button",children:hf})}import{Label as C}from"@contractspec/lib.ui-kit-web/ui/label";import{Input as Wf}from"@contractspec/lib.ui-kit-web/ui/input";function Pf(f){if(!f)return;switch(f){case"email":return"email";case"url":return"url";case"username":return"username";case"new-password":return"new-password";case"current-password":return"password";case"one-time-code":return"otp";case"tel":case"tel-country-code":case"tel-national":case"tel-area-code":case"tel-local":case"tel-local-prefix":case"tel-local-suffix":case"tel-extension":return"tel";case"postal-code":case"cc-number":case"cc-csc":case"bday-day":case"bday-month":case"bday-year":return"int";case"cc-exp":case"cc-exp-month":case"cc-exp-year":return"numbers-and-punctuation";case"bday":return"date";default:return"text"}}function Sf(f,g){if(!g)return;if(["name","given-name","additional-name","family-name","honorific-prefix","honorific-suffix","nickname","organization","organization-title","cc-name","cc-given-name","cc-additional-name","cc-family-name"].includes(g))f.autoCapitalize="words";if(["username","new-password","current-password","one-time-code","email","url"].includes(g))f.autoCapitalize="none"}function _(f){let g=f?.kind??Pf(f?.autoComplete)??"text",m={};switch(g){case"password":if(m.type="password",m.autoCapitalize="none",m.autoComplete=f?.autoComplete??"current-password",f?.autoCorrect!=null)m.autoCorrect=f.autoCorrect;break;case"new-password":if(m.type="password",m.autoCapitalize="none",m.autoComplete=f?.autoComplete??"new-password",f?.autoCorrect!=null)m.autoCorrect=f.autoCorrect;break;case"username":m.type="text",m.autoCapitalize="none",m.autoComplete=f?.autoComplete??"username";break;case"email":m.type="email",m.inputMode="email",m.autoCapitalize="none",m.autoComplete=f?.autoComplete??"email";break;case"url":m.type="url",m.inputMode="url",m.autoComplete=f?.autoComplete??"url";break;case"search":m.type="search",m.inputMode="search",m.enterKeyHint=f?.enterKeyHint??"search",m.autoComplete=f?.autoComplete??"off";break;case"phone":case"tel":m.type="tel",m.inputMode="tel",m.autoComplete=f?.autoComplete??"tel";break;case"number":case"int":m.type="text",m.inputMode="numeric",m.pattern="[0-9]*";break;case"decimal":m.type="text",m.inputMode="decimal",m.step="any";break;case"numbers-and-punctuation":m.type="text",m.inputMode="text",m.pattern="[0-9.,-]*";break;case"otp":m.type="text",m.inputMode="numeric",m.autoComplete=f?.autoComplete??"one-time-code",m.autoCapitalize="none";break;case"name":m.type="text",m.autoComplete=f?.autoComplete??"name",m.autoCapitalize=f?.autoCapitalize??"words";break;case"given-name":m.type="text",m.autoComplete=f?.autoComplete??"given-name",m.autoCapitalize=f?.autoCapitalize??"words";break;case"family-name":m.type="text",m.autoComplete=f?.autoComplete??"family-name",m.autoCapitalize=f?.autoCapitalize??"words";break;case"address-line1":m.type="text",m.autoComplete=f?.autoComplete??"address-line1";break;case"address-line2":m.type="text",m.autoComplete=f?.autoComplete??"address-line2";break;case"postal-code":m.type="text",m.inputMode="numeric",m.pattern="[0-9]*",m.autoComplete=f?.autoComplete??"postal-code";break;case"cc-number":m.type="text",m.inputMode="numeric",m.pattern="[0-9]*",m.autoComplete=f?.autoComplete??"cc-number";break;case"cc-exp":m.type="text",m.inputMode="numeric",m.pattern="[0-9/]*",m.autoComplete=f?.autoComplete??"cc-exp";break;case"cc-csc":m.type="text",m.inputMode="numeric",m.pattern="[0-9]*",m.autoComplete=f?.autoComplete??"cc-csc";break;case"off":m.type="text",m.autoComplete="off";break;case"date":m.type="date",m.inputMode="date",m.pattern="[0-9./-]*";break;default:m.type="text";break}if(f?.autoCapitalize)m.autoCapitalize=f.autoCapitalize;if(f?.autoComplete)m.autoComplete=f.autoComplete;if(f?.autoCorrect!=null)m.autoCorrect=f.autoCorrect;if(f?.enterKeyHint)m.enterKeyHint=f.enterKeyHint;return Sf(m,f?.autoComplete),m}import{jsx as Kf}from"react/jsx-runtime";function J({value:f,defaultValue:g,onChange:m,onSubmit:R,onFocus:y,onBlur:G,placeholder:$,disabled:q,readOnly:Y,maxLength:H,name:W,className:B,keyboard:U,...w}){let V=_(U);return Kf(Wf,{...w,className:B,value:f,defaultValue:g,onChange:m,onFocus:y,onBlur:G,placeholder:$,disabled:q,readOnly:Y,maxLength:H,name:W,...V})}import{Textarea as Xf}from"@contractspec/lib.ui-kit-web/ui/textarea";import*as ff from"react";import{jsx as Ef}from"react/jsx-runtime";function b({value:f,defaultValue:g,onChange:m,onSubmit:R,onFocus:y,onBlur:G,placeholder:$,disabled:q,readOnly:Y,maxLength:H,name:W,className:B,rows:U,keyboard:w,...V}){let M=_(w),O=ff.useCallback((u)=>m?.(u),[m]);return Ef(Xf,{...V,className:B,value:f,defaultValue:g,onChange:O,onFocus:y,onBlur:G,placeholder:$,disabled:q,readOnly:Y,maxLength:H,name:W,rows:U,...M})}import{jsx as P,jsxs as N}from"react/jsx-runtime";function mf({value:f,onChange:g,disabled:m}){return N("div",{className:"space-y-4",children:[N("div",{className:"space-y-2",children:[P(C,{children:"Nom"}),P(J,{value:f.name,onChange:(R)=>g({...f,name:R.target.value}),disabled:m})]}),N("div",{className:"space-y-2",children:[P(C,{children:"Email"}),P(J,{type:"email",value:f.email,onChange:(R)=>g({...f,email:R.target.value}),disabled:m})]}),N("div",{className:"space-y-2",children:[P(C,{children:"Objet"}),P(J,{value:f.subject,onChange:(R)=>g({...f,subject:R.target.value}),disabled:m})]}),N("div",{className:"space-y-2",children:[P(C,{children:"Message"}),P(b,{value:f.message,onChange:(R)=>g({...f,message:R.target.value}),disabled:m,rows:6})]})]})}import{jsx as gf,jsxs as Bf}from"react/jsx-runtime";function Tg({labels:f={submit:"Envoyer"},initialValue:g={name:"",email:"",subject:"",message:""},disabled:m,onSubmit:R}){let[y,G]=j.useState(g),[$,q]=j.useState(!1);return Bf("form",{onSubmit:async(H)=>{if(H.preventDefault(),!R)return;q(!0);try{await R(y)}finally{q(!1)}},className:"space-y-6",children:[gf(mf,{value:y,onChange:G,disabled:m||$}),gf(z,{disabled:m||$,type:"submit",children:$?"Envoi\u2026":f.submit})]})}import*as Tf from"react";import{cn as Uf}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as wf}from"class-variance-authority";import{jsx as Mf}from"react/jsx-runtime";var Vf=wf("text-foreground tracking-tight",{variants:{level:{h1:"font-semibold text-3xl md:text-4xl",h2:"font-semibold text-2xl md:text-3xl",h3:"font-semibold text-xl md:text-2xl",h4:"font-semibold text-lg md:text-xl"},tone:{default:"",muted:"text-muted-foreground",accent:"text-primary"},spacing:{none:"",sm:"mt-4",md:"mt-6",lg:"mt-8"}},defaultVariants:{level:"h2",tone:"default",spacing:"md"}});function X({as:f,level:g,tone:m,spacing:R,className:y,...G}){return Mf(f??g??"h2",{className:Uf(Vf({level:g,tone:m,spacing:R}),y),...G})}import{cn as Nf}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as kf}from"class-variance-authority";import{jsx as Of}from"react/jsx-runtime";var If=kf("space-y-3",{variants:{spacing:{sm:"py-3",md:"py-4",lg:"py-6"},border:{none:"",top:"border-t",bottom:"border-b",both:"border-y"},tone:{plain:"",subtle:"bg-muted/30"}},defaultVariants:{spacing:"md",border:"none",tone:"plain"}});function L({spacing:f,border:g,tone:m,className:R,...y}){return Of("div",{className:Nf(If({spacing:f,border:g,tone:m}),R),...y})}import{cn as _f}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as bf}from"class-variance-authority";import{jsx as Lf}from"react/jsx-runtime";var Cf=bf("text-base leading-relaxed",{variants:{tone:{default:"text-foreground",muted:"text-muted-foreground",danger:"text-destructive"},size:{base:"text-base",sm:"text-sm",lg:"text-lg"},spacing:{none:"",sm:"mt-2",md:"mt-3",lg:"mt-4"}},defaultVariants:{tone:"default",size:"base",spacing:"sm"}});function Rf({as:f="p",tone:g,size:m,spacing:R,className:y,...G}){return Lf(f,{className:_f(Cf({tone:g,size:m,spacing:R}),y),...G})}import{jsx as d,jsxs as yf}from"react/jsx-runtime";function Ug({onExport:f,onDelete:g,labels:m={export:"Demander une copie",delete:"Demander la suppression"}}){let[R,y]=Tf.useState(null),G=async($)=>{let q=$==="export"?f:g;if(!q)return;y($);try{await q()}finally{y(null)}};return yf(L,{border:"top",className:"space-y-3",children:[d(X,{as:"h2",level:"h2",children:"Demandes de donn\xE9es"}),d(Rf,{children:"Vous pouvez demander une copie de vos donn\xE9es ou solliciter leur suppression. Ces demandes n\xE9cessitent une v\xE9rification d\u2019identit\xE9 et sont trait\xE9es dans les d\xE9lais l\xE9gaux."}),yf("div",{className:"flex flex-wrap gap-3",children:[d(z,{onPress:()=>G("export"),disabled:R!==null,children:R==="export"?"Envoi\u2026":m.export}),d(z,{variant:"destructive",onPress:()=>G("delete"),disabled:R!==null,children:R==="delete"?"Envoi\u2026":m.delete})]})]})}import{cn as df}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as Ff}from"class-variance-authority";import{jsx as cf}from"react/jsx-runtime";var Af=Ff("",{variants:{type:{unordered:"list-disc pl-6",ordered:"list-decimal pl-6",none:"pl-0"},spacing:{sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}},defaultVariants:{type:"unordered",spacing:"md"}});function qf({type:f,spacing:g,className:m,children:R,...y}){return cf(f==="ordered"?"ol":"ul",{className:df(Af({type:f,spacing:g}),m),...y,children:R})}import{jsx as v,jsxs as uf}from"react/jsx-runtime";function Cg({title:f="Vos droits RGPD",rights:g=["Acc\xE8s \xE0 vos donn\xE9es","Rectification","Effacement (droit \xE0 l\u2019oubli)","Opposition et limitation","Portabilit\xE9"]}){return uf(L,{border:"top",children:[v(X,{as:"h2",level:"h2",children:f}),v(qf,{type:"unordered",children:g.map((m,R)=>v("li",{children:m},R))})]})}import{cn as lf}from"@contractspec/lib.ui-kit-web/ui/utils";import{cn as xf}from"@contractspec/lib.ui-kit-web/ui/utils";import{jsx as jf,jsxs as i}from"react/jsx-runtime";function Gf({lastUpdated:f,version:g,className:m}){let R=(y)=>{if(!y)return null;try{return(typeof y==="string"?new Date(y):y).toLocaleDateString()}catch{return String(y)}};return i("div",{className:xf("text-base text-muted-foreground",m),children:[g&&i("span",{children:["Version ",g]}),g&&f&&jf("span",{className:"mx-2",children:"\u2022"}),f&&i("span",{children:["Derni\xE8re mise \xE0 jour: ",R(f)]})]})}import{cn as n}from"@contractspec/lib.ui-kit-web/ui/utils";import{cva as vf}from"class-variance-authority";import{jsx as k}from"react/jsx-runtime";var nf=vf("text-base",{variants:{variant:{sidebar:"space-y-2",inline:"flex flex-wrap gap-3"},size:{sm:"",md:"text-base"}},defaultVariants:{variant:"sidebar",size:"md"}});function l({items:f,activeHref:g,onNavigate:m,variant:R,size:y,className:G,...$}){return k("nav",{"aria-label":"Table of contents",className:n(nf({variant:R,size:y}),G),...$,children:R==="inline"?f.map((q)=>k("a",{href:q.href,onClick:(Y)=>{m?.(q.href)},className:n("rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground",g===q.href&&"bg-accent text-accent-foreground"),children:q.label},q.href)):k("ul",{className:"list-none space-y-2 pl-0",children:f.map((q)=>k("li",{children:k("a",{href:q.href,onClick:()=>m?.(q.href),className:n("block rounded-xs px-2 py-1 hover:bg-accent hover:text-accent-foreground",g===q.href&&"bg-accent text-accent-foreground"),children:q.label})},q.href))})})}import{jsx as S,jsxs as e}from"react/jsx-runtime";function rg({title:f,meta:g,toc:m,children:R,className:y}){return e("div",{className:lf("mx-auto w-full max-w-6xl px-4 py-8 md:py-12",y),children:[e("div",{className:"mb-6 space-y-2",children:[S(X,{as:"h1",level:"h1",spacing:"sm",children:f}),g&&S(Gf,{lastUpdated:g.lastUpdated,version:g.version})]}),m&&m.length>0&&S("div",{className:"mb-6 md:hidden",children:S(l,{items:m,variant:"inline"})}),e("div",{className:"grid grid-cols-1 gap-8 md:grid-cols-[220px_minmax(0,1fr)]",children:[m&&m.length>0?S("aside",{className:"sticky top-24 hidden self-start md:block",children:S(l,{items:m,variant:"sidebar"})}):S("div",{className:"hidden md:block"}),S("article",{className:"prose max-w-none text-foreground",children:R})]})]})}import*as F from"react";import{jsx as ef}from"react/jsx-runtime";var $f=F.createContext(void 0);function ag({children:f,resolver:g}){return ef($f.Provider,{value:g,children:f})}function r(){return F.useContext($f)}function t(f,g){if(!f)return f;return g?.(f)??f}function Jf(f,g){return typeof f==="string"?t(f,g):f}function sg({registry:f,locale:g,fallbackLocale:m,specKeys:R=[]}){return(y)=>{let G=y.match(/^([^:]+)::(.+)$/);if(G?.[1]&&G[2]){let[,$,q]=G;return f.getWithFallback($,q,g,m)?.message.value}for(let $ of R){let q=f.getWithFallback($,y,g,m);if(q)return q.message.value}return}}var rf={sm:640,md:768,lg:1024,xl:1280};function mR(f){let g=f.platform??"web",m={...rf,...f.breakpoints};return{platform:g,tokens:f.tokens,breakpoints:m}}import{shadcnDriver as tf}from"@contractspec/lib.contracts-runtime-client-react/drivers/shadcn";import{createFormRenderer as of}from"@contractspec/lib.contracts-runtime-client-react/form-render";import{Checkbox as af}from"@contractspec/lib.ui-kit-web/ui/checkbox";import{Command as sf,CommandEmpty as pf,CommandGroup as fm,CommandInput as mm,CommandItem as gm,CommandList as Rm}from"@contractspec/lib.ui-kit-web/ui/command";import{DatePicker as ym}from"@contractspec/lib.ui-kit-web/ui/date-picker";import{DateTimePicker as Tm}from"@contractspec/lib.ui-kit-web/ui/datetime-picker";import{FieldDescription as qm,FieldError as Gm,FieldGroup as $m,FieldLabel as Jm,Field as Qm}from"@contractspec/lib.ui-kit-web/ui/field";import{Label as Ym}from"@contractspec/lib.ui-kit-web/ui/label";import{RadioGroupItem as Zm,RadioGroup as hm}from"@contractspec/lib.ui-kit-web/ui/radio-group";import{SelectContent as Hm,SelectGroup as Dm,SelectItem as zm,SelectTrigger as Pm,Select as Sm,SelectValue as Wm}from"@contractspec/lib.ui-kit-web/ui/select";import{Switch as Km}from"@contractspec/lib.ui-kit-web/ui/switch";import{TimePicker as Xm}from"@contractspec/lib.ui-kit-web/ui/time-picker";import{jsx as T,jsxs as D}from"react/jsx-runtime";function Z(f){return typeof f==="string"?f:String(f??"")}var Q={addressLine1:"Address line 1",addressLine2:"Address line 2",city:"City",countryCode:"Country code",extension:"Extension",noResultsFound:"No results found.",phoneNumber:"Phone number",postalCode:"Postal code",region:"Region",search:"Search",selected:"Selected"};function h(){let f=r();return(g)=>t(g,f)}function o(f,g,m){return f(g)??m}function I(){let f=r();return(g)=>Jf(g,f)}var a=(f)=>{let g=h(),{options:m,value:R,onChange:y,placeholder:G,...$}=f;return D(Sm,{value:R==null?"":Z(R),onValueChange:(q)=>y?.(q),...$,children:[T(Pm,{className:"w-full",children:T(Wm,{placeholder:g(G)})}),T(Hm,{children:T(Dm,{children:m?.map((q,Y)=>T(zm,{value:Z(q.value),disabled:q.disabled,children:g(q.labelI18n)},`${Z(q.value)}-${Y}`))})})]})},Em=(f)=>T(af,{checked:Boolean(f.checked),onCheckedChange:(g)=>f.onCheckedChange?.(Boolean(g))}),Bm=(f)=>{let g=h();return T(hm,{value:f.value==null?"":Z(f.value),onValueChange:(m)=>f.onValueChange?.(m),disabled:f.disabled,children:f.options?.map((m)=>{let R=Z(m.value);return D("div",{className:"flex items-center gap-3",children:[T(Zm,{value:R,id:R}),T(Ym,{htmlFor:R,children:g(m.labelI18n)})]},R)})})},Um=(f)=>T(Km,{checked:Boolean(f.checked),onCheckedChange:(g)=>f.onCheckedChange?.(Boolean(g))}),wm=(f)=>{let g=h();return D("div",{className:"space-y-2",children:[D(sf,{shouldFilter:!1,className:"rounded-md border border-input",children:[T(mm,{value:f.query,onValueChange:f.onQueryChange,placeholder:o(g,f.placeholder,Q.search),disabled:f.disabled||f.readOnly}),D(Rm,{children:[T(pf,{children:o(g,Q.noResultsFound,Q.noResultsFound)}),T(fm,{children:f.options.map((m)=>{let R=f.selectedOptions.some((y)=>Z(y.value)===Z(m.value));return D(gm,{value:g(m.labelI18n)??m.labelI18n,onSelect:()=>f.onSelectOption?.(m),disabled:f.disabled||m.disabled||f.readOnly,children:[D("div",{className:"flex flex-col",children:[T("span",{children:g(m.labelI18n)}),m.descriptionI18n?T("span",{className:"text-muted-foreground text-xs",children:g(m.descriptionI18n)}):null]}),R?T("span",{className:"ml-auto text-muted-foreground text-xs",children:o(g,Q.selected,Q.selected)}):null]},Z(m.value))})})]})]}),f.selectedOptions.length?T("div",{className:"flex flex-wrap gap-2",children:f.selectedOptions.map((m)=>T(z,{type:"button",variant:"outline",size:"sm",onClick:()=>f.onRemoveOption?.(m),disabled:!f.multiple||f.readOnly||f.disabled,children:g(m.labelI18n)},`selected-${Z(m.value)}`))}):null]})};function K(f,g,m){return{line1:f?.line1??"",line2:f?.line2,city:f?.city,region:f?.region,postalCode:f?.postalCode,countryCode:f?.countryCode,[g]:m}}var Vm=(f)=>{let g=h();return D("div",{className:"grid gap-3 md:grid-cols-2",children:[T(J,{value:f.value?.line1??"",onChange:(m)=>f.onChange?.(K(f.value,"line1",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.line1??Q.addressLine1),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.line2??"",onChange:(m)=>f.onChange?.(K(f.value,"line2",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.line2??Q.addressLine2),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.city??"",onChange:(m)=>f.onChange?.(K(f.value,"city",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.city??Q.city),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.region??"",onChange:(m)=>f.onChange?.(K(f.value,"region",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.region??Q.region),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.postalCode??"",onChange:(m)=>f.onChange?.(K(f.value,"postalCode",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.postalCode??Q.postalCode),readOnly:f.readOnly,disabled:f.disabled}),f.countryOptions?.length?T(a,{value:f.value?.countryCode??"",onChange:(m)=>f.onChange?.(K(f.value,"countryCode",Z(m))),options:f.countryOptions,disabled:f.disabled||f.readOnly}):T(J,{value:f.value?.countryCode??"",onChange:(m)=>f.onChange?.(K(f.value,"countryCode",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.countryCode??Q.countryCode),readOnly:f.readOnly,disabled:f.disabled})]})};function A(f,g,m){return{countryCode:f?.countryCode??"",nationalNumber:f?.nationalNumber??"",extension:f?.extension,e164:f?.e164,[g]:m}}var Mm=(f)=>{let g=h();return D("div",{className:"grid gap-3 md:grid-cols-3",children:[f.countryOptions?.length?T(a,{value:f.value?.countryCode??"",onChange:(m)=>f.onChange?.(A(f.value,"countryCode",Z(m))),options:f.countryOptions,disabled:f.disabled||f.readOnly}):T(J,{value:f.value?.countryCode??"",onChange:(m)=>f.onChange?.(A(f.value,"countryCode",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.countryCode??Q.countryCode),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.nationalNumber??"",onChange:(m)=>f.onChange?.(A(f.value,"nationalNumber",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.nationalNumber??Q.phoneNumber),readOnly:f.readOnly,disabled:f.disabled}),T(J,{value:f.value?.extension??"",onChange:(m)=>f.onChange?.(A(f.value,"extension",m.currentTarget.value)),placeholder:g(f.parts?.placeholdersI18n?.extension??Q.extension),readOnly:f.readOnly,disabled:f.disabled})]})},Nm=(f)=>{let g=h();return T(ym,{value:f.value??null,onChange:f.onChange??(()=>{return}),disabled:f.disabled,placeholder:g(f.placeholder),minDate:f.minDate,maxDate:f.maxDate})},km=(f)=>{let g=h();return T(Xm,{value:f.value??null,onChange:f.onChange??(()=>{return}),disabled:f.disabled,placeholder:g(f.placeholder),is24Hour:f.is24Hour})},Im=(f)=>{let g=h();return T(Tm,{value:f.value??null,onChange:f.onChange??(()=>{return}),disabled:f.disabled,datePlaceholder:g(f.datePlaceholder),timePlaceholder:g(f.timePlaceholder),minDate:f.minDate,maxDate:f.maxDate,is24Hour:f.is24Hour})},Om=(f)=>{let g=I();return T(Jm,{...f,children:g(f.children)})},_m=(f)=>{let g=I();return T(qm,{...f,children:g(f.children)})},bm=(f)=>{let g=I();return T(Gm,{...f,children:g(f.children)})},Cm=(f)=>{let g=h();return T(J,{...f,placeholder:g(f.placeholder)})},Lm=(f)=>{let g=h();return T(b,{...f,placeholder:g(f.placeholder)})},dm=(f)=>{let g=I();return T(z,{...f,children:g(f.children)})},WR=of({driver:tf({Field:Qm,FieldLabel:Om,FieldDescription:_m,FieldError:bm,FieldGroup:$m,FieldSet:(f)=>T("fieldset",{...f}),FieldLegend:(f)=>{let g=I();return T("legend",{...f,children:g(f.children)})},Input:Cm,Textarea:Lm,Select:a,Checkbox:Em,RadioGroup:Bm,Switch:Um,Autocomplete:wm,AddressField:Vm,PhoneField:Mm,DateField:Nm,TimeField:km,DateTimeField:Im,Button:dm})});var E={colors:{background:"#ffffff",foreground:"#0a0a0a",muted:"#f4f4f5",mutedForeground:"#71717a",primary:"#0f49a0",primaryForeground:"#ffffff",accent:"#16a34a",accentForeground:"#ffffff",destructive:"#ef4444",destructiveForeground:"#ffffff",border:"#e4e4e7",ring:"#2563eb"},radii:{sm:4,md:8,lg:12,xl:16,full:9999},space:{xs:4,sm:8,md:12,lg:16,xl:24},typography:{h1:30,h2:24,h3:20,body:16,small:14},icons:{sm:16,md:20,lg:24}};function s(f,g=E){if(f==="web")return g;let{space:m,radii:R,icons:y}=g;return{colors:g.colors,spacing:m,typography:{h1:g.typography.h1,body:g.typography.body},radii:R,icons:y}}function c(f,g){if(!g)return f;let m={...f},R=m;for(let[y,G]of Object.entries(g))if(G?.value!=null)R[y]=G.value;return m}function Qf(f,g){if(!g)return f;return{...f,colors:c(f.colors,g.colors),radii:c(f.radii,g.radii),space:c(f.space,g.space),typography:c(f.typography,g.typography)}}function Fm(f,g){if(!g?.targets?.length)return!0;return g.targets.includes(f.target)}function Yf(f,g,m=E){let R=Qf(m,f.tokens);for(let y of f.overrides??[])if(Fm(y,g))R=Qf(R,y.tokens);return R}function Zf(f,g,m){let R=f.get(g.key,g.version);if(!R)return E;let y=R.meta.extends?Zf(f,R.meta.extends,m):E;return Yf(R,m,y)}function MR(f,g,m,R){if("tokens"in f){let Y=f,H=g,W=Yf(Y,m);return s(H,W)}let y=f,G=g,$=m,q=Zf(y,G,R);return s($,q)}import{cva as Am}from"class-variance-authority";var IR=Am("",{variants:{size:{sm:"",md:"",lg:""},density:{compact:"",comfortable:""},tone:{neutral:"",info:"",success:"",warning:"",danger:""},emphasis:{default:"",subtle:"",strong:""}},defaultVariants:{size:"md",density:"comfortable",tone:"neutral",emphasis:"default"}});export{mR as withPlatformUI,S2 as useResponsive,z2 as useReducedMotion,a1 as usePackageManager,Y2 as useListUrlState,r as useDesignSystemTranslation,H2 as useColorScheme,t as resolveTranslationString,Jf as resolveTranslationNode,Yf as resolveThemeSpecTokens,Zf as resolveThemeRefTokens,MR as resolvePlatformTheme,Qf as mergeThemeTokens,B2 as mapTokensForPlatform,WR as formRenderer,IR as dsBaseVariants,E as defaultTokens,sg as createTranslationResolver,ly as ZodForm,J2 as VisualizationRenderer,G2 as VisualizationGrid,T2 as VisualizationCard,vR as ViewButton,jR as ToggleRightButton,xR as ToggleLeftButton,uR as ToggleButton,R2 as TimelineView,fy as TimeChip,Ky as Textarea,r1 as TestimonialCarousel,kT as TermsTemplate,Sy as Stepper,r4 as StatusChip,l4 as StatCardGroup,n4 as StatCard,v4 as SkeletonList,x4 as SkeletonCircle,c4 as SkeletonBlock,zy as ScoreBar,MT as SalesTermsTemplate,Hy as RankBadge,wT as PrivacyTemplate,l1 as PricingSection,i1 as PricingCarousel,pR as PlaceChip,j1 as PageHeaderResponsive,o1 as PackageManagerProvider,F4 as OverviewCard,L4 as NavUser,b4 as NavMain,Zy as NavBrand,u1 as ModelComparisonView,S1 as MobileHeader,nT as MarketingStepCard,vT as MarketingSection,A1 as MarketingLayout,xT as MarketingIconCard,d1 as MarketingHeaderMobile,C1 as MarketingHeaderDesktop,_1 as MarketingHeader,cT as MarketingComparisonSection,FT as MarketingCardsSection,LT as MarketingCardTitle,CT as MarketingCardHeader,bT as MarketingCardDescription,_T as MarketingCardContent,OT as MarketingCard,O4 as MarkdownRenderer,Qy as LoaderCircular,k4 as LoaderBlock,I1 as ListTablePage,p1 as ListPageTemplate,N1 as ListPageResponsive,V1 as ListGridPage,U1 as ListCardPage,$y as Link,qT as LegalText,DT as LegalTOC,yT as LegalSection,rg as LegalPageLayout,hT as LegalMeta,gT as LegalList,fT as LegalHeading,sy as LegalCallout,M4 as LangSwitch,oy as KeyValueList,w4 as InstallCommand,qy as Input,B4 as HoverPreviewUser,X4 as HoverPreviewStats,W4 as HoverPreviewSimple,P4 as HoverPreviewMedia,D4 as HoverPreviewDoc,h4 as HoverPreview,E1 as HeroSection,K1 as HeroResponsive,P1 as Header,Cg as GDPRRights,Ug as GDPRDataRequest,iy as FormStepsLayout,uy as FormSection,cy as FormRow,jy as FormOneByOneLayout,Ay as FormGrid,dy as FormDialog,Cy as FormCardLayout,H1 as Footer,Y4 as FiltersToolbar,Z1 as FeaturesSection,Q1 as FeatureCarousel,$1 as FAQSection,yy as ErrorState,J4 as EntityCard,gy as EmptyState,q1 as EmptySearchResult,y1 as EmptyDataList,cR as EditButton,sR as DurationChip,G4 as DimensionScoresCard,z1 as DesktopHeader,ag as DesignSystemTranslationProvider,AR as DeleteButton,ry as DefinitionList,aR as DateChip,Iy as DataViewTable,Ny as DataViewRenderer,Vy as DataViewList,Uy as DataViewDetail,Ey as DataTable,rf as DEFAULT_BREAKPOINTS,tR as Cta,T4 as CopyButton,BT as CookiesTemplate,XT as ContactTemplate,Tg as ContactForm,YT as ContactFields,JT as ConsentList,$T as ConsentItem,m2 as ComparisonView,R4 as CommandTabs,m4 as CommandSearchTrigger,pT as CommandPalette,aT as CodeBlock,eR as ButtonLink,nR as Button,tT as Breadcrumbs,dR as ApprovalQueue,g1 as AppSidebar,f1 as AppLayout,s4 as AppHeader,eT as AiLinkButton,CR as AgentMonitor,_y as ActionForm,o4 as AcademyLayout};