@skdx/web-components-blocks 0.37.0 → 0.38.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.
Files changed (2) hide show
  1. package/custom-elements.json +882 -882
  2. package/package.json +3 -3
@@ -363,308 +363,169 @@
363
363
  },
364
364
  {
365
365
  "kind": "javascript-module",
366
- "path": "src/chat-composer/ChatComposer.ts",
366
+ "path": "src/comment/Comment.ts",
367
367
  "declarations": [
368
368
  {
369
369
  "kind": "class",
370
- "description": "Message composer block: an auto-growing Textarea and a send Button inside a\nfield, with consumer-supplied attachment, leading, trailing and footer\nregions and configurable Enter-to-send behaviour.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-chat-composer` on the host, then `__attachments`, `__field`,\n`__leading`, `__textarea`, `__trailing`, `__send` and `__footer`.\n`data-state` on the host reads `pending` while a send is in flight.",
371
- "name": "SkdxChatComposer",
370
+ "description": "One collaboration comment: author, avatar, timestamp, edited indicator,\narbitrary content, attachments and actions such as reply, edit and react.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-comment` on the host, then `__avatar`, `__main`, `__header`,\n`__author`, `__metadata`, `__time`, `__edited`, `__content`, `__attachments`\nand `__actions`.",
371
+ "name": "SkdxComment",
372
372
  "slots": [
373
373
  {
374
- "description": "Controls rendered inside the field before the textarea, such as an attach button.",
375
- "name": "leading"
374
+ "description": "The comment content, the consumer-supplied body text or markup.",
375
+ "name": ""
376
376
  },
377
377
  {
378
- "description": "Controls rendered inside the field after the textarea, such as a model picker.",
379
- "name": "trailing"
378
+ "description": "Decorative avatar rendered beside the author, always `aria-hidden`.",
379
+ "name": "avatar"
380
380
  },
381
381
  {
382
- "description": "Attached files or chips rendered in a row above the field.",
383
- "name": "attachments"
382
+ "description": "Badges or supplementary text rendered beside the author.",
383
+ "name": "metadata"
384
384
  },
385
385
  {
386
- "description": "Usage counters or hints rendered in a row below the field.",
387
- "name": "footer"
386
+ "description": "Files or links attached to the comment, below the content.",
387
+ "name": "attachments"
388
388
  },
389
389
  {
390
- "description": "Glyph rendered inside the send button in place of its text, making it icon-only.",
391
- "name": "send-icon"
390
+ "description": "Controls such as reply, edit and react, below the attachments.",
391
+ "name": "actions"
392
392
  }
393
393
  ],
394
394
  "members": [
395
395
  {
396
396
  "kind": "field",
397
- "name": "value",
398
- "type": {
399
- "text": "string | undefined | undefined"
400
- },
401
- "description": "Current message text, for controlled usage paired with `value-change`.",
402
- "default": "undefined",
403
- "attribute": "value"
404
- },
405
- {
406
- "kind": "field",
407
- "name": "defaultValue",
397
+ "name": "author",
408
398
  "type": {
409
399
  "text": "string"
410
400
  },
411
- "default": "''",
412
- "description": "Initial message text for uncontrolled usage, read only on mount.",
413
- "attribute": "default-value"
401
+ "description": "Name of the person or system that wrote the comment, rendered as visible text.",
402
+ "attribute": "author",
403
+ "required": true
414
404
  },
415
405
  {
416
406
  "kind": "field",
417
- "name": "placeholder",
407
+ "name": "timestamp",
418
408
  "type": {
419
- "text": "string | undefined | undefined"
409
+ "text": "Date | string | undefined | undefined"
420
410
  },
421
- "description": "Hint text shown in the empty textarea, rendered as the native placeholder.",
411
+ "description": "Instant the comment was posted, rendered through a composed Time.",
422
412
  "default": "undefined",
423
- "attribute": "placeholder"
424
- },
425
- {
426
- "kind": "field",
427
- "name": "label",
428
- "type": {
429
- "text": "string"
430
- },
431
- "default": "'Message'",
432
- "description": "Accessible name of the message textarea, read by assistive technology.",
433
- "attribute": "label"
434
- },
435
- {
436
- "kind": "field",
437
- "name": "sendLabel",
438
- "type": {
439
- "text": "string"
440
- },
441
- "default": "'Send'",
442
- "description": "Text of the send button, and its accessible name when the `send-icon` slot is filled.",
443
- "attribute": "send-label"
444
- },
445
- {
446
- "kind": "field",
447
- "name": "submitKey",
448
- "type": {
449
- "text": "SkdxChatComposerSubmitKey"
450
- },
451
- "default": "'enter'",
452
- "description": "Which key sends from the textarea; the other Enter presses insert a newline.",
453
- "attribute": "submit-key"
454
- },
455
- {
456
- "kind": "field",
457
- "name": "maxRows",
458
- "type": {
459
- "text": "number"
460
- },
461
- "default": "8",
462
- "description": "Caps how far the auto-growing textarea grows, in rows, before it scrolls.",
463
- "attribute": "max-rows"
413
+ "attribute": "timestamp"
464
414
  },
465
415
  {
466
416
  "kind": "field",
467
- "name": "maxLength",
417
+ "name": "now",
468
418
  "type": {
469
- "text": "number | undefined | undefined"
419
+ "text": "Date | number | undefined | undefined"
470
420
  },
471
- "description": "Native `maxlength` of the textarea the longest message it accepts.",
472
- "default": "undefined",
473
- "attribute": "max-length"
421
+ "description": "Reference instant `timestamp` renders relative to, forwarded to Time.",
422
+ "default": "undefined"
474
423
  },
475
424
  {
476
425
  "kind": "field",
477
- "name": "disabled",
426
+ "name": "edited",
478
427
  "type": {
479
428
  "text": "boolean"
480
429
  },
481
430
  "default": "false",
482
- "description": "Disables the textarea and the send button, blocking every send path.",
483
- "attribute": "disabled"
431
+ "description": "Marks the comment as edited since it was first posted.",
432
+ "attribute": "edited"
484
433
  },
485
434
  {
486
435
  "kind": "field",
487
- "name": "pending",
436
+ "name": "editedLabel",
488
437
  "type": {
489
- "text": "boolean"
438
+ "text": "string"
490
439
  },
491
- "default": "false",
492
- "description": "Marks a send in flight: the button is busy and inert, the textarea stays editable.",
493
- "attribute": "pending"
494
- }
495
- ],
496
- "events": [
497
- {
498
- "description": "Fires with the new text on every edit, including the clear that follows an uncontrolled send.",
499
- "name": "value-change"
500
- },
501
- {
502
- "description": "Fires with the message text when the send button is activated or the configured submit key is pressed.",
503
- "name": "send"
440
+ "default": "'Edited'",
441
+ "description": "Text of the edited indicator, shown only when `edited` is set.",
442
+ "attribute": "edited-label"
504
443
  }
505
444
  ],
506
445
  "attributes": [
507
446
  {
508
- "name": "value",
509
- "type": {
510
- "text": "string | undefined | undefined"
511
- },
512
- "description": "Current message text, for controlled usage paired with `value-change`.",
513
- "default": "undefined",
514
- "fieldName": "value"
515
- },
516
- {
517
- "name": "default-value",
518
- "type": {
519
- "text": "string"
520
- },
521
- "default": "''",
522
- "description": "Initial message text for uncontrolled usage, read only on mount.",
523
- "fieldName": "defaultValue"
524
- },
525
- {
526
- "name": "placeholder",
527
- "type": {
528
- "text": "string | undefined | undefined"
529
- },
530
- "description": "Hint text shown in the empty textarea, rendered as the native placeholder.",
531
- "default": "undefined",
532
- "fieldName": "placeholder"
533
- },
534
- {
535
- "name": "label",
536
- "type": {
537
- "text": "string"
538
- },
539
- "default": "'Message'",
540
- "description": "Accessible name of the message textarea, read by assistive technology.",
541
- "fieldName": "label"
542
- },
543
- {
544
- "name": "send-label",
447
+ "name": "author",
545
448
  "type": {
546
449
  "text": "string"
547
450
  },
548
- "default": "'Send'",
549
- "description": "Text of the send button, and its accessible name when the `send-icon` slot is filled.",
550
- "fieldName": "sendLabel"
551
- },
552
- {
553
- "name": "submit-key",
554
- "type": {
555
- "text": "SkdxChatComposerSubmitKey"
556
- },
557
- "default": "'enter'",
558
- "description": "Which key sends from the textarea; the other Enter presses insert a newline.",
559
- "fieldName": "submitKey"
560
- },
561
- {
562
- "name": "max-rows",
563
- "type": {
564
- "text": "number"
565
- },
566
- "default": "8",
567
- "description": "Caps how far the auto-growing textarea grows, in rows, before it scrolls.",
568
- "fieldName": "maxRows"
451
+ "description": "Name of the person or system that wrote the comment, rendered as visible text.",
452
+ "fieldName": "author",
453
+ "required": true
569
454
  },
570
455
  {
571
- "name": "max-length",
456
+ "name": "timestamp",
572
457
  "type": {
573
- "text": "number | undefined | undefined"
458
+ "text": "Date | string | undefined | undefined"
574
459
  },
575
- "description": "Native `maxlength` of the textarea the longest message it accepts.",
460
+ "description": "Instant the comment was posted, rendered through a composed Time.",
576
461
  "default": "undefined",
577
- "fieldName": "maxLength"
462
+ "fieldName": "timestamp"
578
463
  },
579
464
  {
580
- "name": "disabled",
465
+ "name": "edited",
581
466
  "type": {
582
467
  "text": "boolean"
583
468
  },
584
469
  "default": "false",
585
- "description": "Disables the textarea and the send button, blocking every send path.",
586
- "fieldName": "disabled"
470
+ "description": "Marks the comment as edited since it was first posted.",
471
+ "fieldName": "edited"
587
472
  },
588
473
  {
589
- "name": "pending",
474
+ "name": "edited-label",
590
475
  "type": {
591
- "text": "boolean"
476
+ "text": "string"
592
477
  },
593
- "default": "false",
594
- "description": "Marks a send in flight: the button is busy and inert, the textarea stays editable.",
595
- "fieldName": "pending"
478
+ "default": "'Edited'",
479
+ "description": "Text of the edited indicator, shown only when `edited` is set.",
480
+ "fieldName": "editedLabel"
596
481
  }
597
482
  ],
598
483
  "superclass": {
599
484
  "name": "LitElement",
600
485
  "package": "lit"
601
486
  },
602
- "tagName": "skdx-chat-composer",
487
+ "tagName": "skdx-comment",
603
488
  "customElement": true
604
489
  }
605
490
  ],
606
491
  "exports": [
607
492
  {
608
493
  "kind": "js",
609
- "name": "SkdxChatComposer",
494
+ "name": "SkdxComment",
610
495
  "declaration": {
611
- "name": "SkdxChatComposer",
612
- "module": "src/chat-composer/ChatComposer.ts"
496
+ "name": "SkdxComment",
497
+ "module": "src/comment/Comment.ts"
613
498
  }
614
499
  },
615
500
  {
616
501
  "kind": "custom-element-definition",
617
- "name": "skdx-chat-composer",
502
+ "name": "skdx-comment",
618
503
  "declaration": {
619
- "name": "SkdxChatComposer",
620
- "module": "src/chat-composer/ChatComposer.ts"
504
+ "name": "SkdxComment",
505
+ "module": "src/comment/Comment.ts"
621
506
  }
622
507
  }
623
508
  ]
624
509
  },
625
510
  {
626
511
  "kind": "javascript-module",
627
- "path": "src/chat-composer/index.ts",
512
+ "path": "src/comment/index.ts",
628
513
  "declarations": [],
629
514
  "exports": [
630
515
  {
631
516
  "kind": "js",
632
- "name": "SkdxChatComposer",
633
- "declaration": {
634
- "name": "SkdxChatComposer",
635
- "module": "./ChatComposer"
636
- }
637
- },
638
- {
639
- "kind": "js",
640
- "name": "SkdxChatComposerSendDetail",
517
+ "name": "SkdxComment",
641
518
  "declaration": {
642
- "name": "SkdxChatComposerSendDetail",
643
- "module": "./ChatComposer"
519
+ "name": "SkdxComment",
520
+ "module": "./Comment"
644
521
  }
645
- },
646
- {
647
- "kind": "js",
648
- "name": "SkdxChatComposerSubmitKey",
649
- "declaration": {
650
- "name": "SkdxChatComposerSubmitKey",
651
- "module": "./ChatComposer"
652
- }
653
- },
654
- {
655
- "kind": "js",
656
- "name": "SkdxChatComposerValueChangeDetail",
657
- "declaration": {
658
- "name": "SkdxChatComposerValueChangeDetail",
659
- "module": "./ChatComposer"
660
- }
661
- }
662
- ]
663
- },
664
- {
665
- "kind": "javascript-module",
666
- "path": "src/chat-message/ChatMessage.ts",
667
- "declarations": [
522
+ }
523
+ ]
524
+ },
525
+ {
526
+ "kind": "javascript-module",
527
+ "path": "src/chat-message/ChatMessage.ts",
528
+ "declarations": [
668
529
  {
669
530
  "kind": "class",
670
531
  "description": "One message in a conversation — assistant, support agent, human or system —\nwith an author, avatar, timestamp, delivery status, content, attachments,\nactions and a footer, composing Time; the block parses nothing.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-chat-message` on the host, then `__avatar`, `__main`,\n`__header`, `__author`, `__time`, `__status`, `__content`, `__attachments`,\n`__footer` and `__actions`. `data-sender` and `data-status` sit on the host\nfor the skin to read.",
@@ -841,167 +702,6 @@
841
702
  }
842
703
  ]
843
704
  },
844
- {
845
- "kind": "javascript-module",
846
- "path": "src/comment/Comment.ts",
847
- "declarations": [
848
- {
849
- "kind": "class",
850
- "description": "One collaboration comment: author, avatar, timestamp, edited indicator,\narbitrary content, attachments and actions such as reply, edit and react.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-comment` on the host, then `__avatar`, `__main`, `__header`,\n`__author`, `__metadata`, `__time`, `__edited`, `__content`, `__attachments`\nand `__actions`.",
851
- "name": "SkdxComment",
852
- "slots": [
853
- {
854
- "description": "The comment content, the consumer-supplied body text or markup.",
855
- "name": ""
856
- },
857
- {
858
- "description": "Decorative avatar rendered beside the author, always `aria-hidden`.",
859
- "name": "avatar"
860
- },
861
- {
862
- "description": "Badges or supplementary text rendered beside the author.",
863
- "name": "metadata"
864
- },
865
- {
866
- "description": "Files or links attached to the comment, below the content.",
867
- "name": "attachments"
868
- },
869
- {
870
- "description": "Controls such as reply, edit and react, below the attachments.",
871
- "name": "actions"
872
- }
873
- ],
874
- "members": [
875
- {
876
- "kind": "field",
877
- "name": "author",
878
- "type": {
879
- "text": "string"
880
- },
881
- "description": "Name of the person or system that wrote the comment, rendered as visible text.",
882
- "attribute": "author",
883
- "required": true
884
- },
885
- {
886
- "kind": "field",
887
- "name": "timestamp",
888
- "type": {
889
- "text": "Date | string | undefined | undefined"
890
- },
891
- "description": "Instant the comment was posted, rendered through a composed Time.",
892
- "default": "undefined",
893
- "attribute": "timestamp"
894
- },
895
- {
896
- "kind": "field",
897
- "name": "now",
898
- "type": {
899
- "text": "Date | number | undefined | undefined"
900
- },
901
- "description": "Reference instant `timestamp` renders relative to, forwarded to Time.",
902
- "default": "undefined"
903
- },
904
- {
905
- "kind": "field",
906
- "name": "edited",
907
- "type": {
908
- "text": "boolean"
909
- },
910
- "default": "false",
911
- "description": "Marks the comment as edited since it was first posted.",
912
- "attribute": "edited"
913
- },
914
- {
915
- "kind": "field",
916
- "name": "editedLabel",
917
- "type": {
918
- "text": "string"
919
- },
920
- "default": "'Edited'",
921
- "description": "Text of the edited indicator, shown only when `edited` is set.",
922
- "attribute": "edited-label"
923
- }
924
- ],
925
- "attributes": [
926
- {
927
- "name": "author",
928
- "type": {
929
- "text": "string"
930
- },
931
- "description": "Name of the person or system that wrote the comment, rendered as visible text.",
932
- "fieldName": "author",
933
- "required": true
934
- },
935
- {
936
- "name": "timestamp",
937
- "type": {
938
- "text": "Date | string | undefined | undefined"
939
- },
940
- "description": "Instant the comment was posted, rendered through a composed Time.",
941
- "default": "undefined",
942
- "fieldName": "timestamp"
943
- },
944
- {
945
- "name": "edited",
946
- "type": {
947
- "text": "boolean"
948
- },
949
- "default": "false",
950
- "description": "Marks the comment as edited since it was first posted.",
951
- "fieldName": "edited"
952
- },
953
- {
954
- "name": "edited-label",
955
- "type": {
956
- "text": "string"
957
- },
958
- "default": "'Edited'",
959
- "description": "Text of the edited indicator, shown only when `edited` is set.",
960
- "fieldName": "editedLabel"
961
- }
962
- ],
963
- "superclass": {
964
- "name": "LitElement",
965
- "package": "lit"
966
- },
967
- "tagName": "skdx-comment",
968
- "customElement": true
969
- }
970
- ],
971
- "exports": [
972
- {
973
- "kind": "js",
974
- "name": "SkdxComment",
975
- "declaration": {
976
- "name": "SkdxComment",
977
- "module": "src/comment/Comment.ts"
978
- }
979
- },
980
- {
981
- "kind": "custom-element-definition",
982
- "name": "skdx-comment",
983
- "declaration": {
984
- "name": "SkdxComment",
985
- "module": "src/comment/Comment.ts"
986
- }
987
- }
988
- ]
989
- },
990
- {
991
- "kind": "javascript-module",
992
- "path": "src/comment/index.ts",
993
- "declarations": [],
994
- "exports": [
995
- {
996
- "kind": "js",
997
- "name": "SkdxComment",
998
- "declaration": {
999
- "name": "SkdxComment",
1000
- "module": "./Comment"
1001
- }
1002
- }
1003
- ]
1004
- },
1005
705
  {
1006
706
  "kind": "javascript-module",
1007
707
  "path": "src/comment-thread/CommentThread.ts",
@@ -2318,23 +2018,323 @@
2318
2018
  "kind": "custom-element-definition",
2319
2019
  "name": "skdx-form-section",
2320
2020
  "declaration": {
2321
- "name": "SkdxFormSection",
2322
- "module": "src/form-section/FormSection.ts"
2021
+ "name": "SkdxFormSection",
2022
+ "module": "src/form-section/FormSection.ts"
2023
+ }
2024
+ }
2025
+ ]
2026
+ },
2027
+ {
2028
+ "kind": "javascript-module",
2029
+ "path": "src/form-section/index.ts",
2030
+ "declarations": [],
2031
+ "exports": [
2032
+ {
2033
+ "kind": "js",
2034
+ "name": "SkdxFormSection",
2035
+ "declaration": {
2036
+ "name": "SkdxFormSection",
2037
+ "module": "./FormSection"
2038
+ }
2039
+ }
2040
+ ]
2041
+ },
2042
+ {
2043
+ "kind": "javascript-module",
2044
+ "path": "src/chat-composer/ChatComposer.ts",
2045
+ "declarations": [
2046
+ {
2047
+ "kind": "class",
2048
+ "description": "Message composer block: an auto-growing Textarea and a send Button inside a\nfield, with consumer-supplied attachment, leading, trailing and footer\nregions and configurable Enter-to-send behaviour.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-chat-composer` on the host, then `__attachments`, `__field`,\n`__leading`, `__textarea`, `__trailing`, `__send` and `__footer`.\n`data-state` on the host reads `pending` while a send is in flight.",
2049
+ "name": "SkdxChatComposer",
2050
+ "slots": [
2051
+ {
2052
+ "description": "Controls rendered inside the field before the textarea, such as an attach button.",
2053
+ "name": "leading"
2054
+ },
2055
+ {
2056
+ "description": "Controls rendered inside the field after the textarea, such as a model picker.",
2057
+ "name": "trailing"
2058
+ },
2059
+ {
2060
+ "description": "Attached files or chips rendered in a row above the field.",
2061
+ "name": "attachments"
2062
+ },
2063
+ {
2064
+ "description": "Usage counters or hints rendered in a row below the field.",
2065
+ "name": "footer"
2066
+ },
2067
+ {
2068
+ "description": "Glyph rendered inside the send button in place of its text, making it icon-only.",
2069
+ "name": "send-icon"
2070
+ }
2071
+ ],
2072
+ "members": [
2073
+ {
2074
+ "kind": "field",
2075
+ "name": "value",
2076
+ "type": {
2077
+ "text": "string | undefined | undefined"
2078
+ },
2079
+ "description": "Current message text, for controlled usage paired with `value-change`.",
2080
+ "default": "undefined",
2081
+ "attribute": "value"
2082
+ },
2083
+ {
2084
+ "kind": "field",
2085
+ "name": "defaultValue",
2086
+ "type": {
2087
+ "text": "string"
2088
+ },
2089
+ "default": "''",
2090
+ "description": "Initial message text for uncontrolled usage, read only on mount.",
2091
+ "attribute": "default-value"
2092
+ },
2093
+ {
2094
+ "kind": "field",
2095
+ "name": "placeholder",
2096
+ "type": {
2097
+ "text": "string | undefined | undefined"
2098
+ },
2099
+ "description": "Hint text shown in the empty textarea, rendered as the native placeholder.",
2100
+ "default": "undefined",
2101
+ "attribute": "placeholder"
2102
+ },
2103
+ {
2104
+ "kind": "field",
2105
+ "name": "label",
2106
+ "type": {
2107
+ "text": "string"
2108
+ },
2109
+ "default": "'Message'",
2110
+ "description": "Accessible name of the message textarea, read by assistive technology.",
2111
+ "attribute": "label"
2112
+ },
2113
+ {
2114
+ "kind": "field",
2115
+ "name": "sendLabel",
2116
+ "type": {
2117
+ "text": "string"
2118
+ },
2119
+ "default": "'Send'",
2120
+ "description": "Text of the send button, and its accessible name when the `send-icon` slot is filled.",
2121
+ "attribute": "send-label"
2122
+ },
2123
+ {
2124
+ "kind": "field",
2125
+ "name": "submitKey",
2126
+ "type": {
2127
+ "text": "SkdxChatComposerSubmitKey"
2128
+ },
2129
+ "default": "'enter'",
2130
+ "description": "Which key sends from the textarea; the other Enter presses insert a newline.",
2131
+ "attribute": "submit-key"
2132
+ },
2133
+ {
2134
+ "kind": "field",
2135
+ "name": "maxRows",
2136
+ "type": {
2137
+ "text": "number"
2138
+ },
2139
+ "default": "8",
2140
+ "description": "Caps how far the auto-growing textarea grows, in rows, before it scrolls.",
2141
+ "attribute": "max-rows"
2142
+ },
2143
+ {
2144
+ "kind": "field",
2145
+ "name": "maxLength",
2146
+ "type": {
2147
+ "text": "number | undefined | undefined"
2148
+ },
2149
+ "description": "Native `maxlength` of the textarea — the longest message it accepts.",
2150
+ "default": "undefined",
2151
+ "attribute": "max-length"
2152
+ },
2153
+ {
2154
+ "kind": "field",
2155
+ "name": "disabled",
2156
+ "type": {
2157
+ "text": "boolean"
2158
+ },
2159
+ "default": "false",
2160
+ "description": "Disables the textarea and the send button, blocking every send path.",
2161
+ "attribute": "disabled"
2162
+ },
2163
+ {
2164
+ "kind": "field",
2165
+ "name": "pending",
2166
+ "type": {
2167
+ "text": "boolean"
2168
+ },
2169
+ "default": "false",
2170
+ "description": "Marks a send in flight: the button is busy and inert, the textarea stays editable.",
2171
+ "attribute": "pending"
2172
+ }
2173
+ ],
2174
+ "events": [
2175
+ {
2176
+ "description": "Fires with the new text on every edit, including the clear that follows an uncontrolled send.",
2177
+ "name": "value-change"
2178
+ },
2179
+ {
2180
+ "description": "Fires with the message text when the send button is activated or the configured submit key is pressed.",
2181
+ "name": "send"
2182
+ }
2183
+ ],
2184
+ "attributes": [
2185
+ {
2186
+ "name": "value",
2187
+ "type": {
2188
+ "text": "string | undefined | undefined"
2189
+ },
2190
+ "description": "Current message text, for controlled usage paired with `value-change`.",
2191
+ "default": "undefined",
2192
+ "fieldName": "value"
2193
+ },
2194
+ {
2195
+ "name": "default-value",
2196
+ "type": {
2197
+ "text": "string"
2198
+ },
2199
+ "default": "''",
2200
+ "description": "Initial message text for uncontrolled usage, read only on mount.",
2201
+ "fieldName": "defaultValue"
2202
+ },
2203
+ {
2204
+ "name": "placeholder",
2205
+ "type": {
2206
+ "text": "string | undefined | undefined"
2207
+ },
2208
+ "description": "Hint text shown in the empty textarea, rendered as the native placeholder.",
2209
+ "default": "undefined",
2210
+ "fieldName": "placeholder"
2211
+ },
2212
+ {
2213
+ "name": "label",
2214
+ "type": {
2215
+ "text": "string"
2216
+ },
2217
+ "default": "'Message'",
2218
+ "description": "Accessible name of the message textarea, read by assistive technology.",
2219
+ "fieldName": "label"
2220
+ },
2221
+ {
2222
+ "name": "send-label",
2223
+ "type": {
2224
+ "text": "string"
2225
+ },
2226
+ "default": "'Send'",
2227
+ "description": "Text of the send button, and its accessible name when the `send-icon` slot is filled.",
2228
+ "fieldName": "sendLabel"
2229
+ },
2230
+ {
2231
+ "name": "submit-key",
2232
+ "type": {
2233
+ "text": "SkdxChatComposerSubmitKey"
2234
+ },
2235
+ "default": "'enter'",
2236
+ "description": "Which key sends from the textarea; the other Enter presses insert a newline.",
2237
+ "fieldName": "submitKey"
2238
+ },
2239
+ {
2240
+ "name": "max-rows",
2241
+ "type": {
2242
+ "text": "number"
2243
+ },
2244
+ "default": "8",
2245
+ "description": "Caps how far the auto-growing textarea grows, in rows, before it scrolls.",
2246
+ "fieldName": "maxRows"
2247
+ },
2248
+ {
2249
+ "name": "max-length",
2250
+ "type": {
2251
+ "text": "number | undefined | undefined"
2252
+ },
2253
+ "description": "Native `maxlength` of the textarea — the longest message it accepts.",
2254
+ "default": "undefined",
2255
+ "fieldName": "maxLength"
2256
+ },
2257
+ {
2258
+ "name": "disabled",
2259
+ "type": {
2260
+ "text": "boolean"
2261
+ },
2262
+ "default": "false",
2263
+ "description": "Disables the textarea and the send button, blocking every send path.",
2264
+ "fieldName": "disabled"
2265
+ },
2266
+ {
2267
+ "name": "pending",
2268
+ "type": {
2269
+ "text": "boolean"
2270
+ },
2271
+ "default": "false",
2272
+ "description": "Marks a send in flight: the button is busy and inert, the textarea stays editable.",
2273
+ "fieldName": "pending"
2274
+ }
2275
+ ],
2276
+ "superclass": {
2277
+ "name": "LitElement",
2278
+ "package": "lit"
2279
+ },
2280
+ "tagName": "skdx-chat-composer",
2281
+ "customElement": true
2282
+ }
2283
+ ],
2284
+ "exports": [
2285
+ {
2286
+ "kind": "js",
2287
+ "name": "SkdxChatComposer",
2288
+ "declaration": {
2289
+ "name": "SkdxChatComposer",
2290
+ "module": "src/chat-composer/ChatComposer.ts"
2291
+ }
2292
+ },
2293
+ {
2294
+ "kind": "custom-element-definition",
2295
+ "name": "skdx-chat-composer",
2296
+ "declaration": {
2297
+ "name": "SkdxChatComposer",
2298
+ "module": "src/chat-composer/ChatComposer.ts"
2299
+ }
2300
+ }
2301
+ ]
2302
+ },
2303
+ {
2304
+ "kind": "javascript-module",
2305
+ "path": "src/chat-composer/index.ts",
2306
+ "declarations": [],
2307
+ "exports": [
2308
+ {
2309
+ "kind": "js",
2310
+ "name": "SkdxChatComposer",
2311
+ "declaration": {
2312
+ "name": "SkdxChatComposer",
2313
+ "module": "./ChatComposer"
2314
+ }
2315
+ },
2316
+ {
2317
+ "kind": "js",
2318
+ "name": "SkdxChatComposerSendDetail",
2319
+ "declaration": {
2320
+ "name": "SkdxChatComposerSendDetail",
2321
+ "module": "./ChatComposer"
2322
+ }
2323
+ },
2324
+ {
2325
+ "kind": "js",
2326
+ "name": "SkdxChatComposerSubmitKey",
2327
+ "declaration": {
2328
+ "name": "SkdxChatComposerSubmitKey",
2329
+ "module": "./ChatComposer"
2323
2330
  }
2324
- }
2325
- ]
2326
- },
2327
- {
2328
- "kind": "javascript-module",
2329
- "path": "src/form-section/index.ts",
2330
- "declarations": [],
2331
- "exports": [
2331
+ },
2332
2332
  {
2333
2333
  "kind": "js",
2334
- "name": "SkdxFormSection",
2334
+ "name": "SkdxChatComposerValueChangeDetail",
2335
2335
  "declaration": {
2336
- "name": "SkdxFormSection",
2337
- "module": "./FormSection"
2336
+ "name": "SkdxChatComposerValueChangeDetail",
2337
+ "module": "./ChatComposer"
2338
2338
  }
2339
2339
  }
2340
2340
  ]
@@ -3001,273 +3001,39 @@
3001
3001
  "kind": "js",
3002
3002
  "name": "SkdxPageContainer",
3003
3003
  "declaration": {
3004
- "name": "SkdxPageContainer",
3005
- "module": "src/page-container/PageContainer.ts"
3006
- }
3007
- },
3008
- {
3009
- "kind": "custom-element-definition",
3010
- "name": "skdx-page-container",
3011
- "declaration": {
3012
- "name": "SkdxPageContainer",
3013
- "module": "src/page-container/PageContainer.ts"
3014
- }
3015
- }
3016
- ]
3017
- },
3018
- {
3019
- "kind": "javascript-module",
3020
- "path": "src/page-container/index.ts",
3021
- "declarations": [],
3022
- "exports": [
3023
- {
3024
- "kind": "js",
3025
- "name": "SkdxPageContainer",
3026
- "declaration": {
3027
- "name": "SkdxPageContainer",
3028
- "module": "./PageContainer"
3029
- }
3030
- },
3031
- {
3032
- "kind": "js",
3033
- "name": "SkdxPageContainerBreadcrumb",
3034
- "declaration": {
3035
- "name": "SkdxPageContainerBreadcrumb",
3036
- "module": "./PageContainer"
3037
- }
3038
- }
3039
- ]
3040
- },
3041
- {
3042
- "kind": "javascript-module",
3043
- "path": "src/reset-password-page/ResetPasswordPage.ts",
3044
- "declarations": [
3045
- {
3046
- "kind": "class",
3047
- "description": "Reset-password block: a new-password field with its rules, an optional\nconfirmation matched against it, and a submit button, replaced entirely by a\nsuccess alert once the change is accepted.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-reset-password-page` on the host, then `__panel`, `__title`,\n`__error`, `__success`, `__form`, `__field`, `__requirements`, `__submit`\nand `__footer`.",
3048
- "name": "SkdxResetPasswordPage",
3049
- "slots": [
3050
- {
3051
- "description": "Extra fields rendered inside the form, above the submit button.",
3052
- "name": ""
3053
- },
3054
- {
3055
- "description": "Password rules used as the new-password field's description.",
3056
- "name": "requirements"
3057
- },
3058
- {
3059
- "description": "Navigation below the form, such as a link back to the sign-in page.",
3060
- "name": "footer"
3061
- }
3062
- ],
3063
- "members": [
3064
- {
3065
- "kind": "field",
3066
- "name": "title",
3067
- "type": {
3068
- "text": "string"
3069
- },
3070
- "default": "'Choose a new password'",
3071
- "description": "Heading text, rendered into a derived `<h1>` that names the section.",
3072
- "attribute": "title"
3073
- },
3074
- {
3075
- "kind": "field",
3076
- "name": "error",
3077
- "type": {
3078
- "text": "string | undefined"
3079
- },
3080
- "description": "Message rendered into a derived error Alert above the form. The block never clears it.",
3081
- "default": "undefined",
3082
- "attribute": "error"
3083
- },
3084
- {
3085
- "kind": "field",
3086
- "name": "success",
3087
- "type": {
3088
- "text": "string | undefined"
3089
- },
3090
- "description": "Confirmation rendered into a derived success Alert that replaces the form entirely.",
3091
- "default": "undefined",
3092
- "attribute": "success"
3093
- },
3094
- {
3095
- "kind": "field",
3096
- "name": "pending",
3097
- "type": {
3098
- "text": "boolean"
3099
- },
3100
- "default": "false",
3101
- "description": "Marks the request in flight, making the submit button busy while both fields stay editable.",
3102
- "attribute": "pending"
3103
- },
3104
- {
3105
- "kind": "field",
3106
- "name": "passwordLabel",
3107
- "type": {
3108
- "text": "string"
3109
- },
3110
- "default": "'New password'",
3111
- "description": "Label of the field where the new password is typed.",
3112
- "attribute": "password-label"
3113
- },
3114
- {
3115
- "kind": "field",
3116
- "name": "confirmPasswordLabel",
3117
- "type": {
3118
- "text": "string | undefined"
3119
- },
3120
- "description": "Label of the confirmation field; supplying it is what turns password matching on.",
3121
- "default": "undefined",
3122
- "attribute": "confirm-password-label"
3123
- },
3124
- {
3125
- "kind": "field",
3126
- "name": "passwordMismatchMessage",
3127
- "type": {
3128
- "text": "string"
3129
- },
3130
- "default": "'Passwords do not match'",
3131
- "description": "Validation message pushed onto the confirmation field when the two passwords differ.",
3132
- "attribute": "password-mismatch-message"
3133
- },
3134
- {
3135
- "kind": "field",
3136
- "name": "submitLabel",
3137
- "type": {
3138
- "text": "string"
3139
- },
3140
- "default": "'Update password'",
3141
- "description": "Text of the form's submit button.",
3142
- "attribute": "submit-label"
3143
- }
3144
- ],
3145
- "events": [
3146
- {
3147
- "description": "Fires with `{ password }` when the form submits with a valid password that matches the confirmation.",
3148
- "name": "reset-password"
3149
- }
3150
- ],
3151
- "attributes": [
3152
- {
3153
- "name": "title",
3154
- "type": {
3155
- "text": "string"
3156
- },
3157
- "default": "'Choose a new password'",
3158
- "description": "Heading text, rendered into a derived `<h1>` that names the section.",
3159
- "fieldName": "title"
3160
- },
3161
- {
3162
- "name": "error",
3163
- "type": {
3164
- "text": "string | undefined"
3165
- },
3166
- "description": "Message rendered into a derived error Alert above the form. The block never clears it.",
3167
- "default": "undefined",
3168
- "fieldName": "error"
3169
- },
3170
- {
3171
- "name": "success",
3172
- "type": {
3173
- "text": "string | undefined"
3174
- },
3175
- "description": "Confirmation rendered into a derived success Alert that replaces the form entirely.",
3176
- "default": "undefined",
3177
- "fieldName": "success"
3178
- },
3179
- {
3180
- "name": "pending",
3181
- "type": {
3182
- "text": "boolean"
3183
- },
3184
- "default": "false",
3185
- "description": "Marks the request in flight, making the submit button busy while both fields stay editable.",
3186
- "fieldName": "pending"
3187
- },
3188
- {
3189
- "name": "password-label",
3190
- "type": {
3191
- "text": "string"
3192
- },
3193
- "default": "'New password'",
3194
- "description": "Label of the field where the new password is typed.",
3195
- "fieldName": "passwordLabel"
3196
- },
3197
- {
3198
- "name": "confirm-password-label",
3199
- "type": {
3200
- "text": "string | undefined"
3201
- },
3202
- "description": "Label of the confirmation field; supplying it is what turns password matching on.",
3203
- "default": "undefined",
3204
- "fieldName": "confirmPasswordLabel"
3205
- },
3206
- {
3207
- "name": "password-mismatch-message",
3208
- "type": {
3209
- "text": "string"
3210
- },
3211
- "default": "'Passwords do not match'",
3212
- "description": "Validation message pushed onto the confirmation field when the two passwords differ.",
3213
- "fieldName": "passwordMismatchMessage"
3214
- },
3215
- {
3216
- "name": "submit-label",
3217
- "type": {
3218
- "text": "string"
3219
- },
3220
- "default": "'Update password'",
3221
- "description": "Text of the form's submit button.",
3222
- "fieldName": "submitLabel"
3223
- }
3224
- ],
3225
- "superclass": {
3226
- "name": "LitElement",
3227
- "package": "lit"
3228
- },
3229
- "tagName": "skdx-reset-password-page",
3230
- "customElement": true
3231
- }
3232
- ],
3233
- "exports": [
3234
- {
3235
- "kind": "js",
3236
- "name": "SkdxResetPasswordPage",
3237
- "declaration": {
3238
- "name": "SkdxResetPasswordPage",
3239
- "module": "src/reset-password-page/ResetPasswordPage.ts"
3004
+ "name": "SkdxPageContainer",
3005
+ "module": "src/page-container/PageContainer.ts"
3240
3006
  }
3241
3007
  },
3242
3008
  {
3243
3009
  "kind": "custom-element-definition",
3244
- "name": "skdx-reset-password-page",
3010
+ "name": "skdx-page-container",
3245
3011
  "declaration": {
3246
- "name": "SkdxResetPasswordPage",
3247
- "module": "src/reset-password-page/ResetPasswordPage.ts"
3012
+ "name": "SkdxPageContainer",
3013
+ "module": "src/page-container/PageContainer.ts"
3248
3014
  }
3249
3015
  }
3250
3016
  ]
3251
3017
  },
3252
3018
  {
3253
3019
  "kind": "javascript-module",
3254
- "path": "src/reset-password-page/index.ts",
3020
+ "path": "src/page-container/index.ts",
3255
3021
  "declarations": [],
3256
3022
  "exports": [
3257
3023
  {
3258
3024
  "kind": "js",
3259
- "name": "SkdxResetPasswordPage",
3025
+ "name": "SkdxPageContainer",
3260
3026
  "declaration": {
3261
- "name": "SkdxResetPasswordPage",
3262
- "module": "./ResetPasswordPage"
3027
+ "name": "SkdxPageContainer",
3028
+ "module": "./PageContainer"
3263
3029
  }
3264
3030
  },
3265
3031
  {
3266
3032
  "kind": "js",
3267
- "name": "SkdxResetPasswordDetail",
3033
+ "name": "SkdxPageContainerBreadcrumb",
3268
3034
  "declaration": {
3269
- "name": "SkdxResetPasswordDetail",
3270
- "module": "./ResetPasswordPage"
3035
+ "name": "SkdxPageContainerBreadcrumb",
3036
+ "module": "./PageContainer"
3271
3037
  }
3272
3038
  }
3273
3039
  ]
@@ -3514,6 +3280,240 @@
3514
3280
  }
3515
3281
  ]
3516
3282
  },
3283
+ {
3284
+ "kind": "javascript-module",
3285
+ "path": "src/reset-password-page/ResetPasswordPage.ts",
3286
+ "declarations": [
3287
+ {
3288
+ "kind": "class",
3289
+ "description": "Reset-password block: a new-password field with its rules, an optional\nconfirmation matched against it, and a submit button, replaced entirely by a\nsuccess alert once the change is accepted.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-reset-password-page` on the host, then `__panel`, `__title`,\n`__error`, `__success`, `__form`, `__field`, `__requirements`, `__submit`\nand `__footer`.",
3290
+ "name": "SkdxResetPasswordPage",
3291
+ "slots": [
3292
+ {
3293
+ "description": "Extra fields rendered inside the form, above the submit button.",
3294
+ "name": ""
3295
+ },
3296
+ {
3297
+ "description": "Password rules used as the new-password field's description.",
3298
+ "name": "requirements"
3299
+ },
3300
+ {
3301
+ "description": "Navigation below the form, such as a link back to the sign-in page.",
3302
+ "name": "footer"
3303
+ }
3304
+ ],
3305
+ "members": [
3306
+ {
3307
+ "kind": "field",
3308
+ "name": "title",
3309
+ "type": {
3310
+ "text": "string"
3311
+ },
3312
+ "default": "'Choose a new password'",
3313
+ "description": "Heading text, rendered into a derived `<h1>` that names the section.",
3314
+ "attribute": "title"
3315
+ },
3316
+ {
3317
+ "kind": "field",
3318
+ "name": "error",
3319
+ "type": {
3320
+ "text": "string | undefined"
3321
+ },
3322
+ "description": "Message rendered into a derived error Alert above the form. The block never clears it.",
3323
+ "default": "undefined",
3324
+ "attribute": "error"
3325
+ },
3326
+ {
3327
+ "kind": "field",
3328
+ "name": "success",
3329
+ "type": {
3330
+ "text": "string | undefined"
3331
+ },
3332
+ "description": "Confirmation rendered into a derived success Alert that replaces the form entirely.",
3333
+ "default": "undefined",
3334
+ "attribute": "success"
3335
+ },
3336
+ {
3337
+ "kind": "field",
3338
+ "name": "pending",
3339
+ "type": {
3340
+ "text": "boolean"
3341
+ },
3342
+ "default": "false",
3343
+ "description": "Marks the request in flight, making the submit button busy while both fields stay editable.",
3344
+ "attribute": "pending"
3345
+ },
3346
+ {
3347
+ "kind": "field",
3348
+ "name": "passwordLabel",
3349
+ "type": {
3350
+ "text": "string"
3351
+ },
3352
+ "default": "'New password'",
3353
+ "description": "Label of the field where the new password is typed.",
3354
+ "attribute": "password-label"
3355
+ },
3356
+ {
3357
+ "kind": "field",
3358
+ "name": "confirmPasswordLabel",
3359
+ "type": {
3360
+ "text": "string | undefined"
3361
+ },
3362
+ "description": "Label of the confirmation field; supplying it is what turns password matching on.",
3363
+ "default": "undefined",
3364
+ "attribute": "confirm-password-label"
3365
+ },
3366
+ {
3367
+ "kind": "field",
3368
+ "name": "passwordMismatchMessage",
3369
+ "type": {
3370
+ "text": "string"
3371
+ },
3372
+ "default": "'Passwords do not match'",
3373
+ "description": "Validation message pushed onto the confirmation field when the two passwords differ.",
3374
+ "attribute": "password-mismatch-message"
3375
+ },
3376
+ {
3377
+ "kind": "field",
3378
+ "name": "submitLabel",
3379
+ "type": {
3380
+ "text": "string"
3381
+ },
3382
+ "default": "'Update password'",
3383
+ "description": "Text of the form's submit button.",
3384
+ "attribute": "submit-label"
3385
+ }
3386
+ ],
3387
+ "events": [
3388
+ {
3389
+ "description": "Fires with `{ password }` when the form submits with a valid password that matches the confirmation.",
3390
+ "name": "reset-password"
3391
+ }
3392
+ ],
3393
+ "attributes": [
3394
+ {
3395
+ "name": "title",
3396
+ "type": {
3397
+ "text": "string"
3398
+ },
3399
+ "default": "'Choose a new password'",
3400
+ "description": "Heading text, rendered into a derived `<h1>` that names the section.",
3401
+ "fieldName": "title"
3402
+ },
3403
+ {
3404
+ "name": "error",
3405
+ "type": {
3406
+ "text": "string | undefined"
3407
+ },
3408
+ "description": "Message rendered into a derived error Alert above the form. The block never clears it.",
3409
+ "default": "undefined",
3410
+ "fieldName": "error"
3411
+ },
3412
+ {
3413
+ "name": "success",
3414
+ "type": {
3415
+ "text": "string | undefined"
3416
+ },
3417
+ "description": "Confirmation rendered into a derived success Alert that replaces the form entirely.",
3418
+ "default": "undefined",
3419
+ "fieldName": "success"
3420
+ },
3421
+ {
3422
+ "name": "pending",
3423
+ "type": {
3424
+ "text": "boolean"
3425
+ },
3426
+ "default": "false",
3427
+ "description": "Marks the request in flight, making the submit button busy while both fields stay editable.",
3428
+ "fieldName": "pending"
3429
+ },
3430
+ {
3431
+ "name": "password-label",
3432
+ "type": {
3433
+ "text": "string"
3434
+ },
3435
+ "default": "'New password'",
3436
+ "description": "Label of the field where the new password is typed.",
3437
+ "fieldName": "passwordLabel"
3438
+ },
3439
+ {
3440
+ "name": "confirm-password-label",
3441
+ "type": {
3442
+ "text": "string | undefined"
3443
+ },
3444
+ "description": "Label of the confirmation field; supplying it is what turns password matching on.",
3445
+ "default": "undefined",
3446
+ "fieldName": "confirmPasswordLabel"
3447
+ },
3448
+ {
3449
+ "name": "password-mismatch-message",
3450
+ "type": {
3451
+ "text": "string"
3452
+ },
3453
+ "default": "'Passwords do not match'",
3454
+ "description": "Validation message pushed onto the confirmation field when the two passwords differ.",
3455
+ "fieldName": "passwordMismatchMessage"
3456
+ },
3457
+ {
3458
+ "name": "submit-label",
3459
+ "type": {
3460
+ "text": "string"
3461
+ },
3462
+ "default": "'Update password'",
3463
+ "description": "Text of the form's submit button.",
3464
+ "fieldName": "submitLabel"
3465
+ }
3466
+ ],
3467
+ "superclass": {
3468
+ "name": "LitElement",
3469
+ "package": "lit"
3470
+ },
3471
+ "tagName": "skdx-reset-password-page",
3472
+ "customElement": true
3473
+ }
3474
+ ],
3475
+ "exports": [
3476
+ {
3477
+ "kind": "js",
3478
+ "name": "SkdxResetPasswordPage",
3479
+ "declaration": {
3480
+ "name": "SkdxResetPasswordPage",
3481
+ "module": "src/reset-password-page/ResetPasswordPage.ts"
3482
+ }
3483
+ },
3484
+ {
3485
+ "kind": "custom-element-definition",
3486
+ "name": "skdx-reset-password-page",
3487
+ "declaration": {
3488
+ "name": "SkdxResetPasswordPage",
3489
+ "module": "src/reset-password-page/ResetPasswordPage.ts"
3490
+ }
3491
+ }
3492
+ ]
3493
+ },
3494
+ {
3495
+ "kind": "javascript-module",
3496
+ "path": "src/reset-password-page/index.ts",
3497
+ "declarations": [],
3498
+ "exports": [
3499
+ {
3500
+ "kind": "js",
3501
+ "name": "SkdxResetPasswordPage",
3502
+ "declaration": {
3503
+ "name": "SkdxResetPasswordPage",
3504
+ "module": "./ResetPasswordPage"
3505
+ }
3506
+ },
3507
+ {
3508
+ "kind": "js",
3509
+ "name": "SkdxResetPasswordDetail",
3510
+ "declaration": {
3511
+ "name": "SkdxResetPasswordDetail",
3512
+ "module": "./ResetPasswordPage"
3513
+ }
3514
+ }
3515
+ ]
3516
+ },
3517
3517
  {
3518
3518
  "kind": "javascript-module",
3519
3519
  "path": "src/sign-up-page/SignUpPage.ts",
@@ -4229,262 +4229,12 @@
4229
4229
  },
4230
4230
  {
4231
4231
  "kind": "javascript-module",
4232
- "path": "src/usage-card/usage.ts",
4233
- "declarations": [],
4234
- "exports": []
4235
- },
4236
- {
4237
- "kind": "javascript-module",
4238
- "path": "src/user-menu/UserMenu.ts",
4239
- "declarations": [
4240
- {
4241
- "kind": "class",
4242
- "description": "The signed-in user's menu: a derived trigger showing an avatar, name and\ndescription that opens a panel repeating the identity above the\napplication's own entries.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-user-menu` on the host, then `__avatar`, `__identity`,\n`__name`, `__description`, `__content` and `__header`. `data-variant` sits on\nthe host while the derived trigger renders.",
4243
- "name": "SkdxUserMenu",
4244
- "slots": [
4245
- {
4246
- "description": "The application's own menu entries, rendered below the repeated identity header.",
4247
- "name": ""
4248
- },
4249
- {
4250
- "description": "Content that replaces the derived avatar-and-identity trigger entirely.",
4251
- "name": "trigger"
4252
- },
4253
- {
4254
- "description": "An extra indicator rendered after the identity in the trigger.",
4255
- "name": "status"
4256
- }
4257
- ],
4258
- "members": [
4259
- {
4260
- "kind": "field",
4261
- "name": "name",
4262
- "type": {
4263
- "text": "string"
4264
- },
4265
- "description": "The signed-in user's name, rendered in the trigger and repeated in the menu header.",
4266
- "attribute": "name",
4267
- "required": true
4268
- },
4269
- {
4270
- "kind": "field",
4271
- "name": "description",
4272
- "type": {
4273
- "text": "string | undefined | undefined"
4274
- },
4275
- "description": "Secondary text such as an email or role, rendered below the name in the trigger and the header.",
4276
- "default": "undefined",
4277
- "attribute": "description"
4278
- },
4279
- {
4280
- "kind": "field",
4281
- "name": "avatarSrc",
4282
- "type": {
4283
- "text": "string | undefined | undefined"
4284
- },
4285
- "description": "Source of the identity image, passed straight through to the derived Avatar.",
4286
- "default": "undefined",
4287
- "attribute": "avatar-src"
4288
- },
4289
- {
4290
- "kind": "field",
4291
- "name": "variant",
4292
- "type": {
4293
- "text": "'compact' | (string & {}) | undefined | undefined"
4294
- },
4295
- "description": "Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.",
4296
- "default": "undefined",
4297
- "attribute": "variant"
4298
- },
4299
- {
4300
- "kind": "field",
4301
- "name": "open",
4302
- "type": {
4303
- "text": "boolean | undefined | undefined"
4304
- },
4305
- "description": "Whether the menu is open, for controlled usage paired with `open-change`.",
4306
- "default": "undefined",
4307
- "attribute": "open"
4308
- },
4309
- {
4310
- "kind": "field",
4311
- "name": "defaultOpen",
4312
- "type": {
4313
- "text": "boolean"
4314
- },
4315
- "default": "false",
4316
- "description": "Whether the menu starts open, for uncontrolled usage.",
4317
- "attribute": "default-open"
4318
- },
4319
- {
4320
- "kind": "field",
4321
- "name": "side",
4322
- "type": {
4323
- "text": "'top' | 'right' | 'bottom' | 'left'"
4324
- },
4325
- "default": "'bottom'",
4326
- "description": "Which side of the trigger the menu panel opens on.",
4327
- "attribute": "side"
4328
- },
4329
- {
4330
- "kind": "field",
4331
- "name": "align",
4332
- "type": {
4333
- "text": "'start' | 'center' | 'end'"
4334
- },
4335
- "default": "'end'",
4336
- "description": "Alignment of the menu panel relative to the side it opens on.",
4337
- "attribute": "align"
4338
- }
4339
- ],
4340
- "events": [
4341
- {
4342
- "description": "Fires with the new open state whenever the trigger opens or closes the menu.",
4343
- "name": "open-change"
4344
- },
4345
- {
4346
- "description": "Fires with the new open state once the panel's enter or exit animation has settled.",
4347
- "name": "open-change-complete"
4348
- },
4349
- {
4350
- "description": "Fires when Escape is pressed while the menu is open; `preventDefault()` keeps it open.",
4351
- "name": "escape-key-down"
4352
- },
4353
- {
4354
- "description": "Fires on a pointer-down outside the panel while open; `preventDefault()` keeps it open.",
4355
- "name": "pointer-down-outside"
4356
- },
4357
- {
4358
- "description": "Fires when focus moves outside the panel while open; `preventDefault()` keeps it open.",
4359
- "name": "focus-outside"
4360
- },
4361
- {
4362
- "description": "Fires for either kind of outside interaction, just before the specific event.",
4363
- "name": "interact-outside"
4364
- },
4365
- {
4366
- "description": "Fires before focus returns to the trigger on close; `preventDefault()` suppresses that return.",
4367
- "name": "close-auto-focus"
4368
- }
4369
- ],
4370
- "attributes": [
4371
- {
4372
- "name": "name",
4373
- "type": {
4374
- "text": "string"
4375
- },
4376
- "description": "The signed-in user's name, rendered in the trigger and repeated in the menu header.",
4377
- "fieldName": "name",
4378
- "required": true
4379
- },
4380
- {
4381
- "name": "description",
4382
- "type": {
4383
- "text": "string | undefined | undefined"
4384
- },
4385
- "description": "Secondary text such as an email or role, rendered below the name in the trigger and the header.",
4386
- "default": "undefined",
4387
- "fieldName": "description"
4388
- },
4389
- {
4390
- "name": "avatar-src",
4391
- "type": {
4392
- "text": "string | undefined | undefined"
4393
- },
4394
- "description": "Source of the identity image, passed straight through to the derived Avatar.",
4395
- "default": "undefined",
4396
- "fieldName": "avatarSrc"
4397
- },
4398
- {
4399
- "name": "variant",
4400
- "type": {
4401
- "text": "'compact' | (string & {}) | undefined | undefined"
4402
- },
4403
- "description": "Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.",
4404
- "default": "undefined",
4405
- "fieldName": "variant"
4406
- },
4407
- {
4408
- "name": "open",
4409
- "type": {
4410
- "text": "boolean | undefined | undefined"
4411
- },
4412
- "description": "Whether the menu is open, for controlled usage paired with `open-change`.",
4413
- "default": "undefined",
4414
- "fieldName": "open"
4415
- },
4416
- {
4417
- "name": "default-open",
4418
- "type": {
4419
- "text": "boolean"
4420
- },
4421
- "default": "false",
4422
- "description": "Whether the menu starts open, for uncontrolled usage.",
4423
- "fieldName": "defaultOpen"
4424
- },
4425
- {
4426
- "name": "side",
4427
- "type": {
4428
- "text": "'top' | 'right' | 'bottom' | 'left'"
4429
- },
4430
- "default": "'bottom'",
4431
- "description": "Which side of the trigger the menu panel opens on.",
4432
- "fieldName": "side"
4433
- },
4434
- {
4435
- "name": "align",
4436
- "type": {
4437
- "text": "'start' | 'center' | 'end'"
4438
- },
4439
- "default": "'end'",
4440
- "description": "Alignment of the menu panel relative to the side it opens on.",
4441
- "fieldName": "align"
4442
- }
4443
- ],
4444
- "superclass": {
4445
- "name": "LitElement",
4446
- "package": "lit"
4447
- },
4448
- "tagName": "skdx-user-menu",
4449
- "customElement": true
4450
- }
4451
- ],
4452
- "exports": [
4453
- {
4454
- "kind": "js",
4455
- "name": "SkdxUserMenu",
4456
- "declaration": {
4457
- "name": "SkdxUserMenu",
4458
- "module": "src/user-menu/UserMenu.ts"
4459
- }
4460
- },
4461
- {
4462
- "kind": "custom-element-definition",
4463
- "name": "skdx-user-menu",
4464
- "declaration": {
4465
- "name": "SkdxUserMenu",
4466
- "module": "src/user-menu/UserMenu.ts"
4467
- }
4468
- }
4469
- ]
4470
- },
4471
- {
4472
- "kind": "javascript-module",
4473
- "path": "src/user-menu/index.ts",
4474
- "declarations": [],
4475
- "exports": [
4476
- {
4477
- "kind": "js",
4478
- "name": "SkdxUserMenu",
4479
- "declaration": {
4480
- "name": "SkdxUserMenu",
4481
- "module": "./UserMenu"
4482
- }
4483
- }
4484
- ]
4485
- },
4486
- {
4487
- "kind": "javascript-module",
4232
+ "path": "src/usage-card/usage.ts",
4233
+ "declarations": [],
4234
+ "exports": []
4235
+ },
4236
+ {
4237
+ "kind": "javascript-module",
4488
4238
  "path": "src/verification-page/VerificationPage.ts",
4489
4239
  "declarations": [
4490
4240
  {
@@ -4805,6 +4555,256 @@
4805
4555
  }
4806
4556
  ]
4807
4557
  },
4558
+ {
4559
+ "kind": "javascript-module",
4560
+ "path": "src/user-menu/UserMenu.ts",
4561
+ "declarations": [
4562
+ {
4563
+ "kind": "class",
4564
+ "description": "The signed-in user's menu: a derived trigger showing an avatar, name and\ndescription that opens a panel repeating the identity above the\napplication's own entries.\n\nRenders light DOM, so its parts are classes rather than shadow `::part()`\ntargets: `.skdx-user-menu` on the host, then `__avatar`, `__identity`,\n`__name`, `__description`, `__content` and `__header`. `data-variant` sits on\nthe host while the derived trigger renders.",
4565
+ "name": "SkdxUserMenu",
4566
+ "slots": [
4567
+ {
4568
+ "description": "The application's own menu entries, rendered below the repeated identity header.",
4569
+ "name": ""
4570
+ },
4571
+ {
4572
+ "description": "Content that replaces the derived avatar-and-identity trigger entirely.",
4573
+ "name": "trigger"
4574
+ },
4575
+ {
4576
+ "description": "An extra indicator rendered after the identity in the trigger.",
4577
+ "name": "status"
4578
+ }
4579
+ ],
4580
+ "members": [
4581
+ {
4582
+ "kind": "field",
4583
+ "name": "name",
4584
+ "type": {
4585
+ "text": "string"
4586
+ },
4587
+ "description": "The signed-in user's name, rendered in the trigger and repeated in the menu header.",
4588
+ "attribute": "name",
4589
+ "required": true
4590
+ },
4591
+ {
4592
+ "kind": "field",
4593
+ "name": "description",
4594
+ "type": {
4595
+ "text": "string | undefined | undefined"
4596
+ },
4597
+ "description": "Secondary text such as an email or role, rendered below the name in the trigger and the header.",
4598
+ "default": "undefined",
4599
+ "attribute": "description"
4600
+ },
4601
+ {
4602
+ "kind": "field",
4603
+ "name": "avatarSrc",
4604
+ "type": {
4605
+ "text": "string | undefined | undefined"
4606
+ },
4607
+ "description": "Source of the identity image, passed straight through to the derived Avatar.",
4608
+ "default": "undefined",
4609
+ "attribute": "avatar-src"
4610
+ },
4611
+ {
4612
+ "kind": "field",
4613
+ "name": "variant",
4614
+ "type": {
4615
+ "text": "'compact' | (string & {}) | undefined | undefined"
4616
+ },
4617
+ "description": "Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.",
4618
+ "default": "undefined",
4619
+ "attribute": "variant"
4620
+ },
4621
+ {
4622
+ "kind": "field",
4623
+ "name": "open",
4624
+ "type": {
4625
+ "text": "boolean | undefined | undefined"
4626
+ },
4627
+ "description": "Whether the menu is open, for controlled usage paired with `open-change`.",
4628
+ "default": "undefined",
4629
+ "attribute": "open"
4630
+ },
4631
+ {
4632
+ "kind": "field",
4633
+ "name": "defaultOpen",
4634
+ "type": {
4635
+ "text": "boolean"
4636
+ },
4637
+ "default": "false",
4638
+ "description": "Whether the menu starts open, for uncontrolled usage.",
4639
+ "attribute": "default-open"
4640
+ },
4641
+ {
4642
+ "kind": "field",
4643
+ "name": "side",
4644
+ "type": {
4645
+ "text": "'top' | 'right' | 'bottom' | 'left'"
4646
+ },
4647
+ "default": "'bottom'",
4648
+ "description": "Which side of the trigger the menu panel opens on.",
4649
+ "attribute": "side"
4650
+ },
4651
+ {
4652
+ "kind": "field",
4653
+ "name": "align",
4654
+ "type": {
4655
+ "text": "'start' | 'center' | 'end'"
4656
+ },
4657
+ "default": "'end'",
4658
+ "description": "Alignment of the menu panel relative to the side it opens on.",
4659
+ "attribute": "align"
4660
+ }
4661
+ ],
4662
+ "events": [
4663
+ {
4664
+ "description": "Fires with the new open state whenever the trigger opens or closes the menu.",
4665
+ "name": "open-change"
4666
+ },
4667
+ {
4668
+ "description": "Fires with the new open state once the panel's enter or exit animation has settled.",
4669
+ "name": "open-change-complete"
4670
+ },
4671
+ {
4672
+ "description": "Fires when Escape is pressed while the menu is open; `preventDefault()` keeps it open.",
4673
+ "name": "escape-key-down"
4674
+ },
4675
+ {
4676
+ "description": "Fires on a pointer-down outside the panel while open; `preventDefault()` keeps it open.",
4677
+ "name": "pointer-down-outside"
4678
+ },
4679
+ {
4680
+ "description": "Fires when focus moves outside the panel while open; `preventDefault()` keeps it open.",
4681
+ "name": "focus-outside"
4682
+ },
4683
+ {
4684
+ "description": "Fires for either kind of outside interaction, just before the specific event.",
4685
+ "name": "interact-outside"
4686
+ },
4687
+ {
4688
+ "description": "Fires before focus returns to the trigger on close; `preventDefault()` suppresses that return.",
4689
+ "name": "close-auto-focus"
4690
+ }
4691
+ ],
4692
+ "attributes": [
4693
+ {
4694
+ "name": "name",
4695
+ "type": {
4696
+ "text": "string"
4697
+ },
4698
+ "description": "The signed-in user's name, rendered in the trigger and repeated in the menu header.",
4699
+ "fieldName": "name",
4700
+ "required": true
4701
+ },
4702
+ {
4703
+ "name": "description",
4704
+ "type": {
4705
+ "text": "string | undefined | undefined"
4706
+ },
4707
+ "description": "Secondary text such as an email or role, rendered below the name in the trigger and the header.",
4708
+ "default": "undefined",
4709
+ "fieldName": "description"
4710
+ },
4711
+ {
4712
+ "name": "avatar-src",
4713
+ "type": {
4714
+ "text": "string | undefined | undefined"
4715
+ },
4716
+ "description": "Source of the identity image, passed straight through to the derived Avatar.",
4717
+ "default": "undefined",
4718
+ "fieldName": "avatarSrc"
4719
+ },
4720
+ {
4721
+ "name": "variant",
4722
+ "type": {
4723
+ "text": "'compact' | (string & {}) | undefined | undefined"
4724
+ },
4725
+ "description": "Visual rung written to `data-variant`; `'compact'` visually hides the identity text while keeping it as the accessible name.",
4726
+ "default": "undefined",
4727
+ "fieldName": "variant"
4728
+ },
4729
+ {
4730
+ "name": "open",
4731
+ "type": {
4732
+ "text": "boolean | undefined | undefined"
4733
+ },
4734
+ "description": "Whether the menu is open, for controlled usage paired with `open-change`.",
4735
+ "default": "undefined",
4736
+ "fieldName": "open"
4737
+ },
4738
+ {
4739
+ "name": "default-open",
4740
+ "type": {
4741
+ "text": "boolean"
4742
+ },
4743
+ "default": "false",
4744
+ "description": "Whether the menu starts open, for uncontrolled usage.",
4745
+ "fieldName": "defaultOpen"
4746
+ },
4747
+ {
4748
+ "name": "side",
4749
+ "type": {
4750
+ "text": "'top' | 'right' | 'bottom' | 'left'"
4751
+ },
4752
+ "default": "'bottom'",
4753
+ "description": "Which side of the trigger the menu panel opens on.",
4754
+ "fieldName": "side"
4755
+ },
4756
+ {
4757
+ "name": "align",
4758
+ "type": {
4759
+ "text": "'start' | 'center' | 'end'"
4760
+ },
4761
+ "default": "'end'",
4762
+ "description": "Alignment of the menu panel relative to the side it opens on.",
4763
+ "fieldName": "align"
4764
+ }
4765
+ ],
4766
+ "superclass": {
4767
+ "name": "LitElement",
4768
+ "package": "lit"
4769
+ },
4770
+ "tagName": "skdx-user-menu",
4771
+ "customElement": true
4772
+ }
4773
+ ],
4774
+ "exports": [
4775
+ {
4776
+ "kind": "js",
4777
+ "name": "SkdxUserMenu",
4778
+ "declaration": {
4779
+ "name": "SkdxUserMenu",
4780
+ "module": "src/user-menu/UserMenu.ts"
4781
+ }
4782
+ },
4783
+ {
4784
+ "kind": "custom-element-definition",
4785
+ "name": "skdx-user-menu",
4786
+ "declaration": {
4787
+ "name": "SkdxUserMenu",
4788
+ "module": "src/user-menu/UserMenu.ts"
4789
+ }
4790
+ }
4791
+ ]
4792
+ },
4793
+ {
4794
+ "kind": "javascript-module",
4795
+ "path": "src/user-menu/index.ts",
4796
+ "declarations": [],
4797
+ "exports": [
4798
+ {
4799
+ "kind": "js",
4800
+ "name": "SkdxUserMenu",
4801
+ "declaration": {
4802
+ "name": "SkdxUserMenu",
4803
+ "module": "./UserMenu"
4804
+ }
4805
+ }
4806
+ ]
4807
+ },
4808
4808
  {
4809
4809
  "kind": "javascript-module",
4810
4810
  "path": "src/workspace-switcher/WorkspaceSwitcher.ts",